@volter/cyclotron 0.5.212 → 0.5.213
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUNDLED_NOTICES +375 -2995
- package/README.md +9 -5
- package/dist/.vite/manifest.json +529 -1764
- package/dist/assets/AudioViewer-B5pkIGXS.js +1 -0
- package/dist/assets/ImageViewer-BPVLEEQ2.js +1 -0
- package/dist/assets/JsonAssetDocument-DuVW9del.js +2 -0
- package/dist/assets/ProjectAuthoringBootstrap-CZJz4Svb.js +2 -0
- package/dist/assets/SourceAssetViewer-LwHBW53R.js +1 -0
- package/dist/assets/VideoViewer-Bfjjp4zH.js +1 -0
- package/dist/assets/{client-Dj2xr2fw.js → client-BLXKEWrR.js} +1 -1
- package/dist/assets/{index-Bc73pJIv.js → index-BKjLHm6K.js} +131 -131
- package/dist/assets/index-CJcVFJ-l.css +1 -0
- package/dist/assets/product-CaIfLQVS.js +1 -0
- package/dist/assets/story-capture-C3xmgE62.js +1 -0
- package/dist/assets/volter-sdk-DT0xmh2J.js +1407 -0
- package/dist/assets/volter-sdk-activation-events-B-WERmWU.js +1 -0
- package/dist/assets/volter-sdk-active-project-DvEsy8Q6.js +1 -0
- package/dist/assets/volter-sdk-adapter-editor-config-CQ5V6W-o.js +1 -0
- package/dist/assets/volter-sdk-animation-animation-clock-Cy7j_2qF.js +1 -0
- package/dist/assets/volter-sdk-animation-stage-transport-DoUDq6Gb.js +1 -0
- package/dist/assets/volter-sdk-api-base-Dr1bx5e0.js +1 -0
- package/dist/assets/volter-sdk-api-project-open-D4nPvIPU.js +1 -0
- package/dist/assets/volter-sdk-api-project-source-DoO7WBwQ.js +1 -0
- package/dist/assets/volter-sdk-api-settings-BEHgO5wf.js +1 -0
- package/dist/assets/volter-sdk-asset-capabilities-CGkNwaAe.js +1 -0
- package/dist/assets/volter-sdk-asset-document-write-policy-CzWM1HhK.js +1 -0
- package/dist/assets/volter-sdk-asset-editor-context-BkSK1vL1.js +1 -0
- package/dist/assets/volter-sdk-asset-thumbnails-zSmJgI_x.js +1 -0
- package/dist/assets/volter-sdk-asset-viewers-B-ICvlkR.js +1 -0
- package/dist/assets/volter-sdk-asset-workflow-project-content-C6Ow0R-F.js +1 -0
- package/dist/assets/volter-sdk-authoring-active-adapter-CKuWwxgH.js +1 -0
- package/dist/assets/volter-sdk-authoring-boundary-authoring-adapter-DTwFKBkS.js +1 -0
- package/dist/assets/volter-sdk-authoring-composite-authoring-adapter-iRSbSHpV.js +1 -0
- package/dist/assets/volter-sdk-authoring-consumer-actions-DK9-B-wg.js +1 -0
- package/dist/assets/volter-sdk-authoring-design-time-mount-registry-BQnWcBVe.js +1 -0
- package/dist/assets/volter-sdk-authoring-design-time-roots-BKSmkD7_.js +1 -0
- package/dist/assets/volter-sdk-authoring-layered-pick-C-YvuxEG.js +1 -0
- package/dist/assets/volter-sdk-authoring-no-authoring-adapter-Cv9DD6G0.js +1 -0
- package/dist/assets/volter-sdk-authoring-panel-authoring-BLOrFs8L.js +1 -0
- package/dist/assets/volter-sdk-authoring-react-design-canvas-style-Dr9i31o5.js +1 -0
- package/dist/assets/{volter-sdk-authoring-react-story-board-aeiEUlbU.js → volter-sdk-authoring-react-story-board-BlCQQM-8.js} +1 -1
- package/dist/assets/volter-sdk-authoring-seam-evidence-CjetY_ZG.js +1 -0
- package/dist/assets/volter-sdk-authoring-selection-scope-BxmbC71H.js +1 -0
- package/dist/assets/volter-sdk-authoring-shell-document-ops-DDb8oGx9.js +1 -0
- package/dist/assets/volter-sdk-authoring-stage-root-B50LLhnJ.js +1 -0
- package/dist/assets/volter-sdk-authoring-story-board-chrome-fit-BVV9fbcw.js +1 -0
- package/dist/assets/{volter-sdk-authoring-viewport-tool-context-DzsD6JQH.js → volter-sdk-authoring-viewport-tool-context-cQafPSkT.js} +1 -1
- package/dist/assets/volter-sdk-authoring-viewport-tool-owner-BppqL4f_.js +1 -0
- package/dist/assets/volter-sdk-authoring-world-session-state-BlpdiKod.js +1 -0
- package/dist/assets/volter-sdk-bitmap-label-BbtGPWgP.js +1 -0
- package/dist/assets/{volter-sdk-breakpoint-state-BPnDN_XU.js → volter-sdk-breakpoint-state-DCFuSvgm.js} +1 -1
- package/dist/assets/volter-sdk-bytes-codec-CrNeVT4e.js +1 -0
- package/dist/assets/volter-sdk-cancellation-reason-ByOH3mlF.js +1 -0
- package/dist/assets/volter-sdk-canvas-frames-BU8Rqr4J.js +1 -0
- package/dist/assets/volter-sdk-capture-size-D4cNT2XC.js +1 -0
- package/dist/assets/volter-sdk-chrome-registry-qHUiDauw.js +1 -0
- package/dist/assets/volter-sdk-command-result-text-2wzEhQ5t.js +1 -0
- package/dist/assets/volter-sdk-commands-C4RgHEOa.js +1 -0
- package/dist/assets/volter-sdk-component-board-registry-6gFZBkTP.js +1 -0
- package/dist/assets/volter-sdk-components-AssetEditorShell-CQVLedvW.js +1 -0
- package/dist/assets/volter-sdk-components-InspectorCanvasPreview-CN5ROhNT.js +1 -0
- package/dist/assets/volter-sdk-components-SurfaceStateOverlay-Cc9Ov1Ol.js +1 -0
- package/dist/assets/{volter-sdk-components-AssetEditorShell-BJL1am3b.js → volter-sdk-components-Toolbar-ZoV9Yq_A.js} +1 -1
- package/dist/assets/volter-sdk-components-TransientHint-BML2V3uu.js +1 -0
- package/dist/assets/volter-sdk-components-inspector-preview-section-BhDjhUyz.js +1 -0
- package/dist/assets/volter-sdk-components-use-after-paint-BVSO4qjV.js +1 -0
- package/dist/assets/volter-sdk-components-workspace-history-CThvGfsY.js +1 -0
- package/dist/assets/volter-sdk-content-entry-source-registry-CJLVq3tC.js +1 -0
- package/dist/assets/volter-sdk-contribution-surfaces-CeEDmriM.js +1 -0
- package/dist/assets/volter-sdk-contributions-x6j41XZp.js +1 -0
- package/dist/assets/volter-sdk-coverage-design-time-surfaces-D-tNGazo.js +1 -0
- package/dist/assets/volter-sdk-creation-site-registry-64gyrZPD.js +1 -0
- package/dist/assets/volter-sdk-css-numeric-style-CXeWqAoG.js +1 -0
- package/dist/assets/volter-sdk-declared-tools-BAzHxyUW.js +1 -0
- package/dist/assets/{volter-sdk-document-areas-x47hqeuC.js → volter-sdk-document-areas-4DXjy0el.js} +1 -1
- package/dist/assets/volter-sdk-document-layer-B4VYMPZ9.js +1 -0
- package/dist/assets/volter-sdk-document-open-registry-BLDMaEoN.js +1 -0
- package/dist/assets/volter-sdk-document-play-extension-Dv3fyS6K.js +1 -0
- package/dist/assets/volter-sdk-document-probe-drBhAyza.js +1 -0
- package/dist/assets/volter-sdk-document-stage-sessions-CtI9anAf.js +1 -0
- package/dist/assets/volter-sdk-document-viewports-BO0N7VyN.js +1 -0
- package/dist/assets/volter-sdk-editor-commands-BJ9Otxzu.js +1 -0
- package/dist/assets/volter-sdk-editor-console-BaGgfWmH.js +1 -0
- package/dist/assets/volter-sdk-editor-document-probe-D0ZhaXHx.js +1 -0
- package/dist/assets/volter-sdk-editor-mode-B07FDozS.js +1 -0
- package/dist/assets/volter-sdk-editor-runtime-D00Du7hG.js +1 -0
- package/dist/assets/volter-sdk-editor-server-response-C6kOPAsW.js +1 -0
- package/dist/assets/volter-sdk-editor-session-attribution-CggpIFb4.js +1 -0
- package/dist/assets/volter-sdk-editor-view-DEMsxlaT.js +1 -0
- package/dist/assets/volter-sdk-environment-images-OQtFG1kA.js +1 -0
- package/dist/assets/volter-sdk-extension-script-DanTHcyo.js +1 -0
- package/dist/assets/volter-sdk-eyedropper-session-BfVXtjzc.js +1 -0
- package/dist/assets/volter-sdk-files-file-provider-CXL6oCMd.js +1 -0
- package/dist/assets/volter-sdk-files-project-files-SBAE37py.js +1 -0
- package/dist/assets/volter-sdk-framed-document-capture-7TnE8pn1.js +1 -0
- package/dist/assets/volter-sdk-framed-document-driver-C0K3-SRt.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-component-marks-BmJEMvvO.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-kind-icon-CrwdpecY.js +1 -0
- package/dist/assets/{volter-sdk-hierarchy-node-rows-CNCdvWZM.js → volter-sdk-hierarchy-node-rows-FcK7_ULi.js} +1 -1
- package/dist/assets/{volter-sdk-hierarchy-projection-BXet4MmW.js → volter-sdk-hierarchy-projection-CKzUOZUa.js} +1 -1
- package/dist/assets/volter-sdk-hierarchy-row-media-Czg40Ddi.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-row-model-BGzmcywF.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-rows-VAI0psTR.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-walk-CaVqG7v2.js +1 -0
- package/dist/assets/volter-sdk-history-history-delegate-DH_xBvdh.js +1 -0
- package/dist/assets/volter-sdk-history-history-service-D0n0Gl5Z.js +1 -0
- package/dist/assets/volter-sdk-history-persistence-coordinator-CcywAFdm.js +1 -0
- package/dist/assets/volter-sdk-history-resource-registry-DMTlnwGv.js +1 -0
- package/dist/assets/volter-sdk-history-snapshot-store-BVh1DtBp.js +1 -0
- package/dist/assets/volter-sdk-history-source-history-backend-ulJ-65tX.js +1 -0
- package/dist/assets/volter-sdk-hmr-registration-group-DvMQVKyO.js +1 -0
- package/dist/assets/volter-sdk-hmr-stable-react-context-BMVr5YVk.js +1 -0
- package/dist/assets/volter-sdk-host-D765Py2w.js +1 -0
- package/dist/assets/{volter-sdk-hotkeys-D8xO5kx0.js → volter-sdk-hotkeys-TesTKdAZ.js} +1 -1
- package/dist/assets/{volter-sdk-index-CTFkHN4C.js → volter-sdk-index-BABXozHr.js} +1 -1
- package/dist/assets/volter-sdk-inference-diagnostics-CsDbQ0M5.js +1 -0
- package/dist/assets/volter-sdk-inspection-document-subject-BMRD77Va.js +1 -0
- package/dist/assets/volter-sdk-inspection-group-icons-Wpz-YhkE.js +1 -0
- package/dist/assets/volter-sdk-inspection-model-BVOyStdc.js +1 -0
- package/dist/assets/volter-sdk-inspection-node-media-B8AL8_3F.js +1 -0
- package/dist/assets/volter-sdk-inspection-null-subject-d5bQZCbS.js +1 -0
- package/dist/assets/volter-sdk-inspector-property-grouping-BqrZkwo4.js +1 -0
- package/dist/assets/volter-sdk-inspector-section-registry-C6U15zvC.js +1 -0
- package/dist/assets/volter-sdk-js-heap-CcOnY0kf.js +1 -0
- package/dist/assets/{volter-sdk-keymap-presets-Vq8J3DoG.js → volter-sdk-keymap-presets-CSM-jVcZ.js} +1 -1
- package/dist/assets/volter-sdk-layout-arrangements-DHA3uifx.js +1 -0
- package/dist/assets/volter-sdk-layouts-4v9ECCn9.js +1 -0
- package/dist/assets/volter-sdk-light-explorer-model-CPuZjpiR.js +1 -0
- package/dist/assets/volter-sdk-live-seam-evidence-B_RyDaOp.js +1 -0
- package/dist/assets/volter-sdk-live-session-registry-C6gHroaH.js +1 -0
- package/dist/assets/{volter-sdk-manifest-project-DIThdJ0z.js → volter-sdk-manifest-project-CVVUDDuL.js} +1 -1
- package/dist/assets/volter-sdk-mount-css-scope-DaJoEo3v.js +1 -0
- package/dist/assets/volter-sdk-mount-failure-report-Cm92oiGJ.js +1 -0
- package/dist/assets/volter-sdk-native-selection-style-Bp4IBnA4.js +1 -0
- package/dist/assets/volter-sdk-photograph-notice-C6_gZGpW.js +1 -0
- package/dist/assets/volter-sdk-play-camera-flight-SwlYhOxW.js +1 -0
- package/dist/assets/volter-sdk-product-command-G8kKVJ-i.js +1 -0
- package/dist/assets/volter-sdk-progress-4GGmPvZn.js +1 -0
- package/dist/assets/volter-sdk-project-module-changes-DIrDIHeD.js +1 -0
- package/dist/assets/volter-sdk-project-module-url-BuAUWpus.js +1 -0
- package/dist/assets/volter-sdk-project-output-roots-BON7FOwQ.js +1 -0
- package/dist/assets/{volter-sdk-project-tab-census-Cos8L4lu.js → volter-sdk-project-tab-census-CO06UOh-.js} +1 -1
- package/dist/assets/volter-sdk-renderer-resource-counts-2kLiD8_S.js +1 -0
- package/dist/assets/volter-sdk-scoped-project-css-DA63CYkM.js +1 -0
- package/dist/assets/volter-sdk-selection-CSUq7EiY.js +1 -0
- package/dist/assets/volter-sdk-served-url-B_MypeId.js +1 -0
- package/dist/assets/volter-sdk-settings-settings-provider-CJuWxTB5.js +1 -0
- package/dist/assets/volter-sdk-settings-store-CEFKDj0h.js +1 -0
- package/dist/assets/volter-sdk-shell-store-Cl4sX9p4.js +1 -0
- package/dist/assets/volter-sdk-shell-store-door-DGjybg0J.js +1 -0
- package/dist/assets/volter-sdk-source-conflict-CV8Gk053.js +1 -0
- package/dist/assets/volter-sdk-stage-context-Cb0SaYhi.js +1 -0
- package/dist/assets/volter-sdk-stage-invalidation-VlBciYA0.js +1 -0
- package/dist/assets/volter-sdk-stage-store-registry-BpIy_QKq.js +1 -0
- package/dist/assets/{volter-sdk-startup-failure-CtJyTS-2.js → volter-sdk-startup-failure-C_8H4xuP.js} +1 -1
- package/dist/assets/{volter-sdk-stories-StoryPreviewMount-DjhZUmf-.js → volter-sdk-stories-StoryPreviewMount-BUX42gIR.js} +1 -1
- package/dist/assets/volter-sdk-stories-compose-project-stories-CkSd4Si5.js +1 -0
- package/dist/assets/volter-sdk-stories-scope-Dndn7MD8.js +1 -0
- package/dist/assets/volter-sdk-stories-story-declared-medium-Byi4XWeJ.js +1 -0
- package/dist/assets/volter-sdk-stories-story-dom-runtime-BS1VPvJ6.js +1 -0
- package/dist/assets/volter-sdk-stories-story-grouping-CpNh4cUf.js +1 -0
- package/dist/assets/{volter-sdk-story-document-openers-Df7Tcu2n.js → volter-sdk-story-document-openers-Ba5jQqay.js} +1 -1
- package/dist/assets/volter-sdk-surface-state-BhQ45ars.js +1 -0
- package/dist/assets/volter-sdk-tab-census-D0r0s37y.js +1 -0
- package/dist/assets/volter-sdk-tool-contribution-convention-JCXL6f2w.js +1 -0
- package/dist/assets/volter-sdk-transform-mode-request-Cwk_Kyty.js +1 -0
- package/dist/assets/volter-sdk-transient-hint-BOfFzAV8.js +1 -0
- package/dist/assets/{volter-sdk-types-BOfYN_tN.js → volter-sdk-types-CkT8l5N_.js} +1 -1
- package/dist/assets/volter-sdk-ui-source-file-region-resolver-Cfza3eEl.js +1 -0
- package/dist/assets/{volter-sdk-ui-source-inspect-gofMOHNR.js → volter-sdk-ui-source-inspect-CEjmAN75.js} +1 -1
- package/dist/assets/{volter-sdk-ui-source-source-write-backend-BgVis1yZ.js → volter-sdk-ui-source-source-write-backend-0njgRdI6.js} +1 -1
- package/dist/assets/volter-sdk-ui-source-tier-source-write-backend-CpsxorYU.js +1 -0
- package/dist/assets/volter-sdk-viewport-activation-timings-B3hRTu3A.js +1 -0
- package/dist/assets/volter-sdk-viewport-editor-controls-DDBd-VqO.js +1 -0
- package/dist/assets/volter-sdk-viewport-presentation-DRhiAH1h.js +1 -0
- package/dist/assets/volter-sdk-volter-contributions-nlGXjgJZ.js +1 -0
- package/dist/assets/volter-sdk-wait-until-CMvYQmO8.js +1 -0
- package/dist/assets/volter-sdk-widgets-design-system-BJOyO8sO.js +1 -0
- package/dist/assets/volter-sdk-widgets-editor-appearance-eVtkxsIm.js +1 -0
- package/dist/assets/volter-sdk-widgets-editor-material-BoQP_5SK.js +1 -0
- package/dist/assets/volter-sdk-widgets-icon-set-registry-CP0D74kc.js +1 -0
- package/dist/assets/volter-sdk-widgets-index-De34FpYu.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-_GjMjIGb.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-B7vN7BEd.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-E2J8cpyT.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-D6TERGKs.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-CXR8n-CA.js +1 -0
- package/dist/assets/{volter-sdk-widgets-inspector-widgets-FilterEditor-DKkdim3n.js → volter-sdk-widgets-inspector-widgets-FilterEditor-CDvfWY4Q.js} +1 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BgpW8FW8.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-DOOBkXjY.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-1NXWR_gB.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-Cd2-HwFn.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-C4HuSjFu.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-DUU2CCtc.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-index-D5kwrOUQ.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-CkFN2SUn.js +1 -0
- package/dist/assets/volter-sdk-widgets-interactive-edit-scope-DynpKMMZ.js +1 -0
- package/dist/assets/{volter-sdk-widgets-palette-colors-Byzw9YHf.js → volter-sdk-widgets-palette-colors-DhL1I42R.js} +1 -1
- package/dist/assets/volter-sdk-widgets-patterns-Dialog-EUtcZi0Y.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Fields-Bl_eaBej.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-List--NE_1N5-.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-StateSurface-BHXpv7qi.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Surfaces-BdKa5HGV.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Tabs-sFV7f1UP.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CIr5Cs49.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Tree-C2YHfddf.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-DCclspnW.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Button-B0YxR4ea.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-ColorInput-B1_SLTuc.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CpHzPdt8.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Dw4knhya.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-FormControls-BAbRanmE.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-Cj7jKNd4.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-JsonInput-C0DCI5bE.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Layout-gT4Z6mtt.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Menu-9EESAp9m.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Dk-5zqJ8.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Panel-BQWJF-Pb.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-DXvmafCK.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Text-yBrdWK2w.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-CRhefpUL.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Tooltip-D5Kcb-ZC.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DiG6PEIe.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DhnSxXVK.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-editor-icons-e65mgyAk.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-BVL0mN8g.js +1 -0
- package/dist/assets/volter-sdk-widgets-theme-C-_RU9Ov.js +1 -0
- package/dist/assets/volter-sdk-widgets-z-index-CrJJXeKL.js +1 -0
- package/dist/assets/volter-sdk-worker-call-metrics-BTfmngck.js +1 -0
- package/dist/assets/{volter-sdk-workspace-core-utilities-BaAh2Ei8.js → volter-sdk-workspace-core-utilities-DtHGK9PF.js} +1 -1
- package/dist/assets/volter-sdk-workspace-document-ids-COULA7c6.js +1 -0
- package/dist/assets/volter-sdk-workspace-document-registry-6m5csVP7.js +1 -0
- package/dist/assets/volter-sdk-workspace-document-restore-M8ifJMou.js +1 -0
- package/dist/assets/{volter-sdk-workspace-host-commands-72RdJeW4.js → volter-sdk-workspace-host-commands-8Qzej--P.js} +1 -1
- package/dist/assets/volter-sdk-workspace-static-panels-Ckk7qUuS.js +1 -0
- package/dist/assets/volter-sdk-workspace-status-registry-BdU0dZAt.js +1 -0
- package/dist/assets/volter-sdk-workspace-utility-registry-BHxymD2l.js +1 -0
- package/dist/assets/volter-sdk-world-canvas-viewport-state-CHO8s9gE.js +1 -0
- package/dist/assets/volter-sdk-world-pan-state-C-9xgzAh.js +1 -0
- package/dist/assets/volter-sdk-write-pipe-CJHg7J4i.js +1 -0
- package/dist/assets/{volter-shared-fontawesome-B-OhfZs4.js → volter-shared-fontawesome-BEv9WEZj.js} +1 -1
- package/dist/assets/{volter-shared-jsx-dev-runtime-akPt_-OI.js → volter-shared-jsx-dev-runtime-domcKDU3.js} +1 -1
- package/dist/assets/{volter-shared-jsx-runtime-CKQtDN6l.js → volter-shared-jsx-runtime-Cu7pVW-1.js} +1 -1
- package/dist/assets/{volter-shared-react-STQK0zHl.js → volter-shared-react-BLHga76C.js} +1 -1
- package/dist/assets/volter-shared-react-dom-client-vi6WsWu2.js +1 -0
- package/dist/assets/{volter-shared-react-dom-2aA0eyQg.js → volter-shared-react-dom-kzJVGsQd.js} +1 -1
- package/dist/assets/volter-shared-three-BWbOWtM5.js +4220 -0
- package/dist/volter-shared-modules.json +225 -225
- package/dist/volter-shared-react.json +6 -6
- package/dist/volter-shared-three.json +1 -1
- package/dist-node/cli.js +182 -127
- package/dist-node/create.js +18 -21
- package/package.json +16 -16
- package/src/index.ts +1 -2
- package/src/product-id.d.ts +4 -0
- package/starter/AGENTS.md +132 -157
- package/starter/game/levels/MainLevel.tsx +24 -0
- package/starter/game/prefabs/ground/Ground.tsx +24 -0
- package/starter/game/{levels → prefabs/ground}/ground.blend +0 -0
- package/starter/game/prefabs/ground/ground.glb +0 -0
- package/starter/game/prefabs/ground/ground.py +106 -0
- package/dist/assets/AudioViewer-EMpvKC-X.js +0 -1
- package/dist/assets/BVHLoader-CpdLvOHd.js +0 -1
- package/dist/assets/ColladaLoader-D1GMlAA9.js +0 -3
- package/dist/assets/EntityModelDocument-rYF-p8Fo.js +0 -1
- package/dist/assets/EnvironmentAssetDocument-DfykWLLS.js +0 -1
- package/dist/assets/FBXLoader-DKZ0UD3F.js +0 -1
- package/dist/assets/ImageViewer-B0OqXrVU.js +0 -1
- package/dist/assets/InspectorObjectPreview-CwCqdv76.js +0 -1
- package/dist/assets/JsonAssetDocument-PzzxK-v9.js +0 -2
- package/dist/assets/LiveModuleDocument-Bq9J5nMx.js +0 -1
- package/dist/assets/LutAssetDocument-CyzgDCYJ.js +0 -1
- package/dist/assets/MTLLoader-BOaPmAvY.js +0 -2
- package/dist/assets/ModelAssetDocument-8he5iZqV.js +0 -1
- package/dist/assets/OBJLoader-BLg7dmPe.js +0 -5
- package/dist/assets/Object3DDocumentToolbar-CLfEn5i-.js +0 -1
- package/dist/assets/Object3DDocumentToolbar-WK1RY6Gg.css +0 -1
- package/dist/assets/OrbitControls-DxYDYiEc.js +0 -1
- package/dist/assets/PLYLoader-bAg6lYzP.js +0 -2
- package/dist/assets/ProjectAuthoringBootstrap-FVTj-Ag9.js +0 -2
- package/dist/assets/QuarksAssetDocument-DBJQXZ9u.js +0 -2
- package/dist/assets/RectAreaLightUniformsLib-CQLblkbI.js +0 -1
- package/dist/assets/STLLoader-C8jImL_t.js +0 -1
- package/dist/assets/ShaderAssetDocument-C3QolcYl.js +0 -12
- package/dist/assets/SourceAssetViewer-xB9kAyPa.js +0 -1
- package/dist/assets/StageHost-BZBLHaPe.css +0 -1
- package/dist/assets/StageHost-xYvmzMBo.js +0 -1231
- package/dist/assets/TDSLoader-DLNvOc6c.js +0 -1
- package/dist/assets/ToolObject3DPreview-4XgGyXTu.js +0 -2
- package/dist/assets/VideoViewer-BruuQyu3.js +0 -1
- package/dist/assets/ViewportShadingMenu-amXbnRtl.js +0 -1
- package/dist/assets/animation-mixers.service-Ce1JMqA2.js +0 -1
- package/dist/assets/animation-timeline.utility-CzsUvu3v.js +0 -1
- package/dist/assets/asset-preview-CtqauM13.js +0 -4
- package/dist/assets/basis_transcoder-VXdx5NbI.wasm +0 -0
- package/dist/assets/basis_transcoder-o4Hde_L7.js +0 -19
- package/dist/assets/blender-base64-Cxqc4R5f.js +0 -1
- package/dist/assets/blender-display-shaders-BPmHILFy.lut +0 -0
- package/dist/assets/blender-emscripten-engine-Bl_j9xEY.js +0 -26
- package/dist/assets/blender-motion-worker-CtT2cV3V.js +0 -1
- package/dist/assets/blender-node-editor.document-lj1qK5Vu.js +0 -1
- package/dist/assets/blender-outliner-model-BqLWEXta.js +0 -7359
- package/dist/assets/blender-properties-model-DD-2sMKx.js +0 -1
- package/dist/assets/blender-properties-tab-BmudfsC3.js +0 -3
- package/dist/assets/blender-runtime.document-IVSATTnk.js +0 -13
- package/dist/assets/blender-screenshot.service-BRgdtDQC.js +0 -1
- package/dist/assets/blender-timeline.document-8jLaNF31.js +0 -1
- package/dist/assets/blender-uv-editor.document-BVcA7mi2.js +0 -1
- package/dist/assets/blender-version.status-B43F7DzT.js +0 -2
- package/dist/assets/blender-wali-engine-xLHhm0KZ.js +0 -2
- package/dist/assets/blender.environment-CG-pC7sk.js +0 -1
- package/dist/assets/blender.keymap-pRN8nlCs.js +0 -1
- package/dist/assets/blender.page-BYbkmFDE.js +0 -3
- package/dist/assets/blender.status-CcKJxsZ1.js +0 -1
- package/dist/assets/blender.style-DuFonR-j.js +0 -1
- package/dist/assets/chat.page-DzuAKPGP.js +0 -1
- package/dist/assets/city-EkhAOo5s.exr +0 -0
- package/dist/assets/courtyard-DqlebbpC.exr +0 -0
- package/dist/assets/draco_decoder-C32yEggz.wasm +0 -0
- package/dist/assets/draco_decoder-Z1_iN-Ht.wasm +0 -0
- package/dist/assets/draco_decoder-fzg4nYZr.js +0 -34
- package/dist/assets/draco_wasm_wrapper-DxJM36Ib.js +0 -117
- package/dist/assets/draco_wasm_wrapper-fZCQGLGb.js +0 -116
- package/dist/assets/editor-presentation-activity-CqJH4G9t.js +0 -1
- package/dist/assets/forest-P_CQY3b_.exr +0 -0
- package/dist/assets/index-C4uuH2ZE.css +0 -1
- package/dist/assets/index-DlAJXb_f.js +0 -952
- package/dist/assets/interior-Bo_lba15.exr +0 -0
- package/dist/assets/linear-resolve-B-MA5O31.js +0 -400
- package/dist/assets/live-mixers-B-bwLZ7c.js +0 -1
- package/dist/assets/maya.style-C3zx8RC5.js +0 -1
- package/dist/assets/model-inspection-_SFE7cp7.js +0 -1
- package/dist/assets/model.layout-CX-vaeBh.js +0 -1
- package/dist/assets/models.finder-DcOx-jsM.js +0 -1
- package/dist/assets/mtoon0-BNRZGBf8.blend +0 -0
- package/dist/assets/mtoon1-EgrxQlCc.blend +0 -0
- package/dist/assets/mtoon1_outline-xuubMJ8J.blend +0 -0
- package/dist/assets/mtoon_auto_setup-BF1c8USg.blend +0 -0
- package/dist/assets/night-CvV4Gybt.exr +0 -0
- package/dist/assets/object3d-document-session-registry-DvgzaByQ.js +0 -2
- package/dist/assets/output-pass-Bw2FZb8e.js +0 -85
- package/dist/assets/play-mode-BGq1Hn-c.js +0 -1
- package/dist/assets/play.page-DB2UjY0o.js +0 -1
- package/dist/assets/product-OBHh_Udv.js +0 -1
- package/dist/assets/properties-bone-constraints.inspector-NWLfoFX1.js +0 -1
- package/dist/assets/properties-bone.inspector-DybmNdBB.js +0 -1
- package/dist/assets/properties-collection.inspector-Cg7Jq6yG.js +0 -1
- package/dist/assets/properties-constraints.inspector-DY--pvLo.js +0 -1
- package/dist/assets/properties-data.inspector-CP1lurLb.js +0 -1
- package/dist/assets/properties-material.inspector-K8Qx5wr9.js +0 -1
- package/dist/assets/properties-modifiers.inspector-DOfP-8mX.js +0 -1
- package/dist/assets/properties-object.inspector-sqx6qMyu.js +0 -1
- package/dist/assets/properties-output.inspector-CUYUEC6S.js +0 -1
- package/dist/assets/properties-particles.inspector-oAWorORY.js +0 -1
- package/dist/assets/properties-physics.inspector-CQIHdcOy.js +0 -1
- package/dist/assets/properties-render.inspector-XTzdYo4u.js +0 -1
- package/dist/assets/properties-scene.inspector-BytOBuw9.js +0 -1
- package/dist/assets/properties-texture.inspector-2WNelhHG.js +0 -1
- package/dist/assets/properties-view-layer.inspector-DVSdqosc.js +0 -1
- package/dist/assets/properties-world.inspector-CHHm7g3j.js +0 -1
- package/dist/assets/regions-BlV6hTFd.js +0 -1
- package/dist/assets/sculpt.layout-BkvEflSA.js +0 -1
- package/dist/assets/session-addons-KcG0o7Xc.js +0 -76898
- package/dist/assets/shading.layout-V9LTFaVk.js +0 -1
- package/dist/assets/sky-precompute-worker-CPGW9t_C.js +0 -1
- package/dist/assets/spark.module-Cc-ZVx5e.js +0 -12120
- package/dist/assets/stage-keyboard-Rgvt63qI.js +0 -1
- package/dist/assets/stage-overlay-set-juTRuk99.js +0 -1
- package/dist/assets/stage-presence-markers-XsGUs3S-.js +0 -1
- package/dist/assets/stage-transform-tools-BE7m4omf.js +0 -1
- package/dist/assets/standard-viewport-dressing-asIXnD-w.js +0 -24
- package/dist/assets/std-scene-level-DeiReu6Z.js +0 -13
- package/dist/assets/std-scene.document-DyWMJhxA.js +0 -1
- package/dist/assets/story-capture-Y8_YS5DC.js +0 -1
- package/dist/assets/studio-CysTBGIb.exr +0 -0
- package/dist/assets/substance.style-CoQdG-kF.js +0 -1
- package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
- package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
- package/dist/assets/texture.layout-DASpHVht.js +0 -1
- package/dist/assets/three.module-JoAAxMWl.js +0 -4220
- package/dist/assets/three.page-Dy2q5JEV.js +0 -2
- package/dist/assets/transparent_z_write-xIRcVb2w.blend +0 -0
- package/dist/assets/transport-strip-cKO8FHd1.js +0 -1
- package/dist/assets/uv-editing.layout-CF_54oSA.js +0 -1
- package/dist/assets/volter-sdk-D8o6TU4A.js +0 -1407
- package/dist/assets/volter-sdk-activation-events-DVerKSly.js +0 -1
- package/dist/assets/volter-sdk-active-project-f6toeBI4.js +0 -1
- package/dist/assets/volter-sdk-adapter-editor-config-DpARQ4TT.js +0 -1
- package/dist/assets/volter-sdk-animation-animation-clock-BGyYYQu-.js +0 -1
- package/dist/assets/volter-sdk-animation-stage-transport-DWmyow46.js +0 -1
- package/dist/assets/volter-sdk-api-base-jDs2XVgE.js +0 -1
- package/dist/assets/volter-sdk-api-project-open-BAXokZLA.js +0 -1
- package/dist/assets/volter-sdk-api-project-source-D6FB4SmO.js +0 -1
- package/dist/assets/volter-sdk-api-settings-DqgndoPA.js +0 -1
- package/dist/assets/volter-sdk-asset-capabilities-B5mXIYBM.js +0 -1
- package/dist/assets/volter-sdk-asset-document-write-policy-B5aaFAwu.js +0 -1
- package/dist/assets/volter-sdk-asset-editor-context-BjtZQVgF.js +0 -1
- package/dist/assets/volter-sdk-asset-thumbnails-CROlpqPM.js +0 -1
- package/dist/assets/volter-sdk-asset-viewers-BejvElAX.js +0 -1
- package/dist/assets/volter-sdk-asset-workflow-project-content-D8h-TsJc.js +0 -1
- package/dist/assets/volter-sdk-authoring-active-adapter-DhKlZbyW.js +0 -1
- package/dist/assets/volter-sdk-authoring-boundary-authoring-adapter-xlppcGid.js +0 -1
- package/dist/assets/volter-sdk-authoring-composite-authoring-adapter-BfalSuB8.js +0 -1
- package/dist/assets/volter-sdk-authoring-consumer-actions-Hl6xkGAq.js +0 -1
- package/dist/assets/volter-sdk-authoring-design-time-mount-registry-2ZssbtYd.js +0 -1
- package/dist/assets/volter-sdk-authoring-design-time-roots-BNNZdEog.js +0 -1
- package/dist/assets/volter-sdk-authoring-layered-pick-AsUoH85M.js +0 -1
- package/dist/assets/volter-sdk-authoring-no-authoring-adapter-BX6sVPQX.js +0 -1
- package/dist/assets/volter-sdk-authoring-panel-authoring-BRs7fYSJ.js +0 -1
- package/dist/assets/volter-sdk-authoring-react-design-canvas-style-CdjO9_22.js +0 -1
- package/dist/assets/volter-sdk-authoring-seam-evidence-D58d2whR.js +0 -1
- package/dist/assets/volter-sdk-authoring-selection-scope-tqpilIPR.js +0 -1
- package/dist/assets/volter-sdk-authoring-shell-document-ops-ryosWWqt.js +0 -1
- package/dist/assets/volter-sdk-authoring-stage-root-yn7zP1QC.js +0 -1
- package/dist/assets/volter-sdk-authoring-story-board-chrome-fit-DgAAtVo8.js +0 -1
- package/dist/assets/volter-sdk-authoring-viewport-tool-owner-zIgbNhiQ.js +0 -1
- package/dist/assets/volter-sdk-authoring-world-session-state-DriMgIzp.js +0 -1
- package/dist/assets/volter-sdk-bitmap-label-Cwzw278F.js +0 -1
- package/dist/assets/volter-sdk-bytes-codec-CF2kvi68.js +0 -1
- package/dist/assets/volter-sdk-cancellation-reason-BQvS02ja.js +0 -1
- package/dist/assets/volter-sdk-canvas-frames-BkjDC0or.js +0 -1
- package/dist/assets/volter-sdk-capture-size-B3uOMPdw.js +0 -1
- package/dist/assets/volter-sdk-chrome-registry-Be1q89aJ.js +0 -1
- package/dist/assets/volter-sdk-command-result-text-DdPWoVLu.js +0 -1
- package/dist/assets/volter-sdk-commands-DI54EGoY.js +0 -1
- package/dist/assets/volter-sdk-component-board-registry-DtTf1V5m.js +0 -1
- package/dist/assets/volter-sdk-components-InspectorCanvasPreview-DpOxql_B.js +0 -1
- package/dist/assets/volter-sdk-components-SurfaceStateOverlay-BQ9KTVV1.js +0 -1
- package/dist/assets/volter-sdk-components-Toolbar-C6bwDRIc.js +0 -1
- package/dist/assets/volter-sdk-components-TransientHint-D3wtJ4fg.js +0 -1
- package/dist/assets/volter-sdk-components-inspector-preview-section-D1DnmKLE.js +0 -1
- package/dist/assets/volter-sdk-components-use-after-paint-ZgZgfmSR.js +0 -1
- package/dist/assets/volter-sdk-components-workspace-history-IZTWOoYh.js +0 -1
- package/dist/assets/volter-sdk-content-entry-source-registry-DV4a0g9R.js +0 -1
- package/dist/assets/volter-sdk-contribution-surfaces-BAzaKN1S.js +0 -1
- package/dist/assets/volter-sdk-contributions-D2D_badr.js +0 -1
- package/dist/assets/volter-sdk-coverage-design-time-surfaces-WtyoVY81.js +0 -1
- package/dist/assets/volter-sdk-creation-site-registry-DEJua1VB.js +0 -1
- package/dist/assets/volter-sdk-css-numeric-style-D1aEQUuP.js +0 -1
- package/dist/assets/volter-sdk-declared-tools-bEg2ZQju.js +0 -1
- package/dist/assets/volter-sdk-document-open-registry-BUdLp-BZ.js +0 -1
- package/dist/assets/volter-sdk-document-play-extension-BdtD2FcX.js +0 -1
- package/dist/assets/volter-sdk-document-probe-CvSMoXNj.js +0 -1
- package/dist/assets/volter-sdk-document-stage-sessions-BHE1T4gT.js +0 -1
- package/dist/assets/volter-sdk-document-viewports-BJqFXfe4.js +0 -1
- package/dist/assets/volter-sdk-editor-commands-CsYQVabs.js +0 -1
- package/dist/assets/volter-sdk-editor-console-lUTMRzeI.js +0 -1
- package/dist/assets/volter-sdk-editor-document-probe-BHRNXR9L.js +0 -1
- package/dist/assets/volter-sdk-editor-mode-BgYsrjin.js +0 -1
- package/dist/assets/volter-sdk-editor-runtime-CTy0Dw7-.js +0 -1
- package/dist/assets/volter-sdk-editor-server-response-oN9Horql.js +0 -1
- package/dist/assets/volter-sdk-editor-session-attribution-Ddoo0-e6.js +0 -1
- package/dist/assets/volter-sdk-editor-view-DEdcNl3N.js +0 -1
- package/dist/assets/volter-sdk-environment-images-Cbyno2vh.js +0 -1
- package/dist/assets/volter-sdk-extension-script-eemVEaFY.js +0 -1
- package/dist/assets/volter-sdk-eyedropper-session-BL5ceME-.js +0 -1
- package/dist/assets/volter-sdk-files-file-provider-D1vbGyMw.js +0 -1
- package/dist/assets/volter-sdk-files-project-files-CP9k503M.js +0 -1
- package/dist/assets/volter-sdk-framed-document-capture-DmqG4gUx.js +0 -1
- package/dist/assets/volter-sdk-framed-document-driver-B1ZAcb9l.js +0 -1
- package/dist/assets/volter-sdk-hierarchy-component-marks-DjtdLv04.js +0 -1
- package/dist/assets/volter-sdk-hierarchy-kind-icon-Dwlq9_xw.js +0 -1
- package/dist/assets/volter-sdk-hierarchy-row-media-CnFXPw4O.js +0 -1
- package/dist/assets/volter-sdk-hierarchy-row-model-TWxtUUdN.js +0 -1
- package/dist/assets/volter-sdk-hierarchy-rows-3Hl6K3Br.js +0 -1
- package/dist/assets/volter-sdk-hierarchy-walk-DvIomDWH.js +0 -1
- package/dist/assets/volter-sdk-history-history-delegate-RfZBUw9Y.js +0 -1
- package/dist/assets/volter-sdk-history-history-service-BWYajIYW.js +0 -1
- package/dist/assets/volter-sdk-history-persistence-coordinator-CmebAufQ.js +0 -1
- package/dist/assets/volter-sdk-history-resource-registry-CgjY-ErS.js +0 -1
- package/dist/assets/volter-sdk-history-snapshot-store-6Cq4Qau6.js +0 -1
- package/dist/assets/volter-sdk-history-source-history-backend-CilZiNDq.js +0 -1
- package/dist/assets/volter-sdk-hmr-registration-group-idNaexWq.js +0 -1
- package/dist/assets/volter-sdk-hmr-stable-react-context-DhY9rjD6.js +0 -1
- package/dist/assets/volter-sdk-host-BcQCyyIe.js +0 -1
- package/dist/assets/volter-sdk-inference-diagnostics-c4Aju1Jg.js +0 -1
- package/dist/assets/volter-sdk-inspection-document-subject-i64BmR5X.js +0 -1
- package/dist/assets/volter-sdk-inspection-group-icons-CWwhjZWt.js +0 -1
- package/dist/assets/volter-sdk-inspection-model-BgZVa_7l.js +0 -1
- package/dist/assets/volter-sdk-inspection-node-media-DNYb7ZDG.js +0 -1
- package/dist/assets/volter-sdk-inspection-null-subject-hK6kZbB7.js +0 -1
- package/dist/assets/volter-sdk-inspector-property-grouping-B-4_nVMm.js +0 -1
- package/dist/assets/volter-sdk-inspector-section-registry-DIYAa_rQ.js +0 -1
- package/dist/assets/volter-sdk-js-heap-DDws540T.js +0 -1
- package/dist/assets/volter-sdk-layout-arrangements-DdjnA7ET.js +0 -1
- package/dist/assets/volter-sdk-layouts-DcV6NQNu.js +0 -1
- package/dist/assets/volter-sdk-light-explorer-model-BoB1GjBo.js +0 -1
- package/dist/assets/volter-sdk-live-seam-evidence-BOvNn-o8.js +0 -1
- package/dist/assets/volter-sdk-live-session-registry--ftGWuRg.js +0 -1
- package/dist/assets/volter-sdk-mount-css-scope-BTi-3JA9.js +0 -1
- package/dist/assets/volter-sdk-mount-failure-report-BeR90-6n.js +0 -1
- package/dist/assets/volter-sdk-native-selection-style-70aZpb0m.js +0 -1
- package/dist/assets/volter-sdk-photograph-notice-BwuWgyiq.js +0 -1
- package/dist/assets/volter-sdk-play-camera-flight-CaSiTxDt.js +0 -1
- package/dist/assets/volter-sdk-product-command-Cf1utO0M.js +0 -1
- package/dist/assets/volter-sdk-project-module-changes-CIKyvjy2.js +0 -1
- package/dist/assets/volter-sdk-project-module-url-XzZmS9zs.js +0 -1
- package/dist/assets/volter-sdk-project-output-roots-B4bC82T9.js +0 -1
- package/dist/assets/volter-sdk-renderer-resource-counts-S3R39qoy.js +0 -1
- package/dist/assets/volter-sdk-scoped-project-css-Ch7LkU2q.js +0 -1
- package/dist/assets/volter-sdk-selection-C2gFhPip.js +0 -1
- package/dist/assets/volter-sdk-served-url-DxzhEpXR.js +0 -1
- package/dist/assets/volter-sdk-serving-engine-BclAA7ZZ.js +0 -1
- package/dist/assets/volter-sdk-settings-settings-provider-DGc5Xf46.js +0 -1
- package/dist/assets/volter-sdk-settings-store-Bmx-a8f0.js +0 -1
- package/dist/assets/volter-sdk-shell-store-door-CQlHDF_i.js +0 -1
- package/dist/assets/volter-sdk-shell-store-e-X3-CSz.js +0 -1
- package/dist/assets/volter-sdk-source-conflict-DEn0Z5Vq.js +0 -1
- package/dist/assets/volter-sdk-stage-context-CwBngGWz.js +0 -1
- package/dist/assets/volter-sdk-stage-invalidation-Bt1Gs-b2.js +0 -1
- package/dist/assets/volter-sdk-stage-store-registry-DtSMhopZ.js +0 -1
- package/dist/assets/volter-sdk-stories-compose-project-stories-DfgTy2Bp.js +0 -1
- package/dist/assets/volter-sdk-stories-scope-4lTT6I0H.js +0 -1
- package/dist/assets/volter-sdk-stories-story-declared-medium-BFcKINTP.js +0 -1
- package/dist/assets/volter-sdk-stories-story-dom-runtime-wAz1MhyJ.js +0 -1
- package/dist/assets/volter-sdk-stories-story-grouping-bVoaiX0-.js +0 -1
- package/dist/assets/volter-sdk-surface-keyboard-5u3olsPL.js +0 -1
- package/dist/assets/volter-sdk-surface-state-F5vfsPyq.js +0 -1
- package/dist/assets/volter-sdk-tab-census-B95O0nem.js +0 -1
- package/dist/assets/volter-sdk-tool-contribution-convention-k_AVbxWl.js +0 -1
- package/dist/assets/volter-sdk-transform-mode-request-CKhq0gIu.js +0 -1
- package/dist/assets/volter-sdk-transient-hint-DQMQ2_Y5.js +0 -1
- package/dist/assets/volter-sdk-ui-source-file-region-resolver-2Gw755Lw.js +0 -1
- package/dist/assets/volter-sdk-ui-source-tier-source-write-backend-BsEnWjJv.js +0 -1
- package/dist/assets/volter-sdk-viewport-activation-timings--7x_AkVR.js +0 -1
- package/dist/assets/volter-sdk-viewport-editor-controls-CFuNGxo6.js +0 -1
- package/dist/assets/volter-sdk-viewport-presentation-CoiYwzFE.js +0 -1
- package/dist/assets/volter-sdk-volter-contributions-DjgbZdIJ.js +0 -1
- package/dist/assets/volter-sdk-wait-until-DRdtM37d.js +0 -1
- package/dist/assets/volter-sdk-widgets-design-system-CPmOMXke.js +0 -1
- package/dist/assets/volter-sdk-widgets-editor-appearance-B4Q93899.js +0 -1
- package/dist/assets/volter-sdk-widgets-editor-material-C6dqUruc.js +0 -1
- package/dist/assets/volter-sdk-widgets-icon-set-registry-BOtjeU-M.js +0 -1
- package/dist/assets/volter-sdk-widgets-index-C2FSk2KK.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-ClaWmFsj.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-DIoRDT6D.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-BcsoJNaT.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-p_xfUT04.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-RbGdt95N.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-DxdmydaC.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-DZ0Z3l2P.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-Byy_M7hB.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-C9aPdbrZ.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-BJStispK.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-C_5eRE_F.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-index-BA3S0eIV.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-DHHUQexs.js +0 -1
- package/dist/assets/volter-sdk-widgets-interactive-edit-scope-CjuUPrEv.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Dialog-CQggdCbk.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Fields-D38At0E9.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-List-ewRDByTO.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-StateSurface-C8YqnN-5.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Surfaces-BjFrm6Mc.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Tabs-JZq1ce4h.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Toolbar-Bf61fc1T.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Tree-CwuVbaxj.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-Ch2ujeLH.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Button-d2WNMADR.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-ColorInput-DP0WkwNs.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-D1g1A89b.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-DAjALCvl.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-FormControls-KBDCYHsT.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-D2qUt6_z.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-JsonInput-DLs3kN1L.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Layout-DshSsm_4.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Menu-Ch-3iDys.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-NumberInput-pdAN4aF3.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Panel-BNFSUDwP.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-5Hv-rso1.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Text-CtWC8t_L.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-h0iinIvj.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Tooltip-Cllx19nM.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-CurGarFa.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-0YxAdd5O.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-editor-icons-ExQE8_SP.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-DGmxyx4E.js +0 -1
- package/dist/assets/volter-sdk-widgets-theme-DOfZnIVM.js +0 -1
- package/dist/assets/volter-sdk-widgets-z-index-BpB2pf-w.js +0 -1
- package/dist/assets/volter-sdk-worker-call-metrics-Cdo-WjAp.js +0 -1
- package/dist/assets/volter-sdk-workspace-document-ids-CWVlaP7n.js +0 -1
- package/dist/assets/volter-sdk-workspace-document-registry-DoKaj8Fe.js +0 -1
- package/dist/assets/volter-sdk-workspace-document-restore-BOPAH61D.js +0 -1
- package/dist/assets/volter-sdk-workspace-static-panels-DZr1Q4n1.js +0 -1
- package/dist/assets/volter-sdk-workspace-status-registry-pIvpW3QR.js +0 -1
- package/dist/assets/volter-sdk-workspace-utility-registry-BRzyLcLs.js +0 -1
- package/dist/assets/volter-sdk-world-canvas-viewport-state-DeMws4Bu.js +0 -1
- package/dist/assets/volter-sdk-world-pan-state-Dpul1S4k.js +0 -1
- package/dist/assets/volter-sdk-write-pipe-vbjHAGKf.js +0 -1
- package/dist/assets/volter-shared-react-dom-client-B6uCXsbq.js +0 -1
- package/dist/assets/volter-shared-three-DSLGcAKx.js +0 -1
- package/dist/assets/worker-DeeaIXW_.js +0 -10
- package/src/contributions.d.ts +0 -9
- package/starter/game/client/index.tsx +0 -52
- package/starter/game/levels/GroundEnvironment.tsx +0 -15
- package/starter/game/levels/GroundLevel.tsx +0 -35
- package/starter/game/levels/ground.canvas.ts +0 -11
- package/starter/game/levels/ground.glb +0 -0
- package/starter/game/levels/ground.py +0 -142
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./three.module-JoAAxMWl.js";import{Loader as M,LoaderUtils as f,FileLoader as A,Group as p,MeshPhongMaterial as u,DoubleSide as m,AdditiveBlending as x,BufferGeometry as b,Mesh as C,Float32BufferAttribute as c,Matrix4 as g,TextureLoader as T,Color as _}from"./volter-shared-three-core-DEsIwtOu.js";class ge extends M{constructor(t){super(t),this.debug=!1,this.group=null,this.materials=[],this.meshes=[]}load(t,s,e,i){const r=this,n=this.path===""?f.extractUrlBase(t):this.path,a=new A(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(t,function(o){try{s(r.parse(o,n))}catch(d){i?i(d):console.error(d),r.manager.itemError(t)}},e,i)}parse(t,s){this.group=new p,this.materials=[],this.meshes=[],this.readFile(t,s);for(let e=0;e<this.meshes.length;e++)this.group.add(this.meshes[e]);return this.group}readFile(t,s){const e=new DataView(t),i=new h(e,0,this.debugMessage);if(i.id===E||i.id===w||i.id===F){let r=i.readChunk();for(;r;){if(r.id===I){const n=r.readDWord();this.debugMessage("3DS file version: "+n)}else r.id===P?this.readMeshData(r,s):this.debugMessage("Unknown main chunk: "+r.hexId);r=i.readChunk()}}this.debugMessage("Parsed "+this.meshes.length+" meshes")}readMeshData(t,s){let e=t.readChunk();for(;e;){if(e.id===N){const i=+e.readDWord();this.debugMessage("Mesh Version: "+i)}else if(e.id===U){const i=e.readFloat();this.debugMessage("Master scale: "+i),this.group.scale.set(i,i,i)}else e.id===ie?(this.debugMessage("Named Object"),this.readNamedObject(e)):e.id===B?(this.debugMessage("Material"),this.readMaterialEntry(e,s)):this.debugMessage("Unknown MDATA chunk: "+e.hexId);e=t.readChunk()}}readNamedObject(t){const s=t.readString();let e=t.readChunk();for(;e;){if(e.id===ae){const i=this.readMesh(e);i.name=s,this.meshes.push(i)}else this.debugMessage("Unknown named object chunk: "+e.hexId);e=t.readChunk()}}readMaterialEntry(t,s){let e=t.readChunk();const i=new u;for(;e;){if(e.id===W)i.name=e.readString(),this.debugMessage(" Name: "+i.name);else if(e.id===j)this.debugMessage(" Wireframe"),i.wireframe=!0;else if(e.id===z){const r=e.readByte();i.wireframeLinewidth=r,this.debugMessage(" Wireframe Thickness: "+r)}else if(e.id===Y)i.side=m,this.debugMessage(" DoubleSided");else if(e.id===X)this.debugMessage(" Additive Blending"),i.blending=x;else if(e.id===v)this.debugMessage(" Diffuse Color"),i.color=this.readColor(e);else if(e.id===G)this.debugMessage(" Specular Color"),i.specular=this.readColor(e);else if(e.id===L)this.debugMessage(" Ambient color"),i.color=this.readColor(e);else if(e.id===V){const r=this.readPercentage(e);i.shininess=r*100,this.debugMessage(" Shininess : "+r)}else if(e.id===H){const r=this.readPercentage(e);i.opacity=1-r,this.debugMessage(" Transparency : "+r),i.transparent=i.opacity<1}else e.id===q?(this.debugMessage(" ColorMap"),i.map=this.readMap(e,s)):e.id===Z?(this.debugMessage(" BumpMap"),i.bumpMap=this.readMap(e,s)):e.id===J?(this.debugMessage(" OpacityMap"),i.alphaMap=this.readMap(e,s)):e.id===K?(this.debugMessage(" SpecularMap"),i.specularMap=this.readMap(e,s)):this.debugMessage(" Unknown material chunk: "+e.hexId);e=t.readChunk()}this.materials[i.name]=i}readMesh(t){let s=t.readChunk();const e=new b,i=new u,r=new C(e,i);for(r.name="mesh";s;){if(s.id===re){const n=s.readWord();this.debugMessage(" Vertex: "+n);const a=[];for(let o=0;o<n;o++)a.push(s.readFloat()),a.push(s.readFloat()),a.push(s.readFloat());e.setAttribute("position",new c(a,3))}else if(s.id===ne)this.readFaceArray(s,r);else if(s.id===de){const n=s.readWord();this.debugMessage(" UV: "+n);const a=[];for(let o=0;o<n;o++)a.push(s.readFloat()),a.push(s.readFloat());e.setAttribute("uv",new c(a,2))}else if(s.id===he){this.debugMessage(" Transformation Matrix (TODO)");const n=[];for(let d=0;d<12;d++)n[d]=s.readFloat();const a=new g;a.elements[0]=n[0],a.elements[1]=n[6],a.elements[2]=n[3],a.elements[3]=n[9],a.elements[4]=n[2],a.elements[5]=n[8],a.elements[6]=n[5],a.elements[7]=n[11],a.elements[8]=n[1],a.elements[9]=n[7],a.elements[10]=n[4],a.elements[11]=n[10],a.elements[12]=0,a.elements[13]=0,a.elements[14]=0,a.elements[15]=1,a.transpose();const o=new g;o.copy(a).invert(),e.applyMatrix4(o),a.decompose(r.position,r.quaternion,r.scale)}else this.debugMessage(" Unknown mesh chunk: "+s.hexId);s=t.readChunk()}return e.computeVertexNormals(),r}readFaceArray(t,s){const e=t.readWord();this.debugMessage(" Faces: "+e);const i=[];for(let a=0;a<e;++a)i.push(t.readWord(),t.readWord(),t.readWord()),t.readWord();s.geometry.setIndex(i);let r=0,n=0;for(;!t.endOfChunk;){const a=t.readChunk();if(a.id===oe){this.debugMessage(" Material Group");const o=this.readMaterialGroup(a),d=o.index.length*3;s.geometry.addGroup(n,d,r),n+=d,r++;const l=this.materials[o.name];Array.isArray(s.material)===!1&&(s.material=[]),l!==void 0&&s.material.push(l)}else this.debugMessage(" Unknown face array chunk: "+a.hexId)}s.material.length===1&&(s.material=s.material[0])}readMap(t,s){let e=t.readChunk(),i={};const r=new T(this.manager);for(r.setPath(this.resourcePath||s).setCrossOrigin(this.crossOrigin);e;){if(e.id===Q){const n=e.readString();i=r.load(n),this.debugMessage(" File: "+s+n)}else e.id===se?(i.offset.x=e.readFloat(),this.debugMessage(" OffsetX: "+i.offset.x)):e.id===te?(i.offset.y=e.readFloat(),this.debugMessage(" OffsetY: "+i.offset.y)):e.id===$?(i.repeat.x=e.readFloat(),this.debugMessage(" RepeatX: "+i.repeat.x)):e.id===ee?(i.repeat.y=e.readFloat(),this.debugMessage(" RepeatY: "+i.repeat.y)):this.debugMessage(" Unknown map chunk: "+e.hexId);e=t.readChunk()}return i}readMaterialGroup(t){const s=t.readString(),e=t.readWord();this.debugMessage(" Name: "+s),this.debugMessage(" Faces: "+e);const i=[];for(let r=0;r<e;++r)i.push(t.readWord());return{name:s,index:i}}readColor(t){const s=t.readChunk(),e=new _;if(s.id===y||s.id===O){const i=s.readByte(),r=s.readByte(),n=s.readByte();e.setRGB(i/255,r/255,n/255),this.debugMessage(" Color: "+e.r+", "+e.g+", "+e.b)}else if(s.id===S||s.id===k){const i=s.readFloat(),r=s.readFloat(),n=s.readFloat();e.setRGB(i,r,n),this.debugMessage(" Color: "+e.r+", "+e.g+", "+e.b)}else this.debugMessage(" Unknown color chunk: "+s.hexId);return e}readPercentage(t){const s=t.readChunk();switch(s.id){case D:return s.readShort()/100;case R:return s.readFloat();default:return this.debugMessage(" Unknown percentage chunk: "+s.hexId),0}}debugMessage(t){this.debug&&console.log(t)}}class h{constructor(t,s,e){this.data=t,this.offset=s,this.position=s,this.debugMessage=e,this.debugMessage instanceof Function&&(this.debugMessage=function(){}),this.id=this.readWord(),this.size=this.readDWord(),this.end=this.offset+this.size,this.end>t.byteLength&&this.debugMessage("Bad chunk size for chunk at "+s)}readChunk(){if(this.endOfChunk)return null;try{const t=new h(this.data,this.position,this.debugMessage);return this.position+=t.size,t}catch{return this.debugMessage("Unable to read chunk at "+this.position),null}}get hexId(){return this.id.toString(16)}get endOfChunk(){return this.position>=this.end}readByte(){const t=this.data.getUint8(this.position,!0);return this.position+=1,t}readFloat(){try{const t=this.data.getFloat32(this.position,!0);return this.position+=4,t}catch(t){return this.debugMessage(t+" "+this.position+" "+this.data.byteLength),0}}readInt(){const t=this.data.getInt32(this.position,!0);return this.position+=4,t}readShort(){const t=this.data.getInt16(this.position,!0);return this.position+=2,t}readDWord(){const t=this.data.getUint32(this.position,!0);return this.position+=4,t}readWord(){const t=this.data.getUint16(this.position,!0);return this.position+=2,t}readString(){let t="",s=this.readByte();for(;s;)t+=String.fromCharCode(s),s=this.readByte();return t}}const F=19789,E=15786,w=49725,I=2,S=16,y=17,O=18,k=19,D=48,R=49,P=15677,N=15678,U=256,B=45055,W=40960,L=40976,v=40992,G=41008,V=41024,H=41040,Y=41089,X=41091,j=41093,z=41095,q=41472,J=41488,Z=41520,K=41476,Q=41728,$=41812,ee=41814,se=41816,te=41818,ie=16384,ae=16640,re=16656,ne=16672,oe=16688,de=16704,he=16736;export{ge as TDSLoader};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/spark.module-Cc-ZVx5e.js","assets/three.module-JoAAxMWl.js","assets/volter-shared-three-core-DEsIwtOu.js","assets/output-pass-Bw2FZb8e.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as M,ks as X,j as g,t as O,e as Y}from"./volter-sdk-D8o6TU4A.js";import{W as Z}from"./three.module-JoAAxMWl.js";import{O as ee}from"./OrbitControls-DxYDYiEc.js";import{N as te,h as re,n as ne,O as ie}from"./asset-preview-CtqauM13.js";import{s as se,i as H}from"./editor-presentation-activity-CqJH4G9t.js";import{k as oe}from"./three.page-Dy2q5JEV.js";import{Scene as ae,PerspectiveCamera as le,Timer as ce,SRGBColorSpace as de,ACESFilmicToneMapping as me,HemisphereLight as pe,DirectionalLight as ue,GridHelper as fe,SkeletonHelper as he,Vector3 as we,AnimationMixer as ge}from"./volter-shared-three-core-DEsIwtOu.js";import"./output-pass-Bw2FZb8e.js";import"./object3d-document-session-registry-DvgzaByQ.js";const A={webglContext:0,animationFrame:0,resizeObserver:0,objectUrl:0},$={...A};function L(r){A[r]++,$[r]=Math.max($[r],A[r]);let s=!1;return()=>{s||(s=!0,A[r]=Math.max(0,A[r]-1))}}function ve(r){const s=r.animations[0];if(!s)return null;const a=new ge(r),p=a.clipAction(s).play();return p.paused=!0,a.update(0),a}let be=0;function xe({displayName:r="Object3D preview",active:s=!0,sourceFactory:a,showSkeleton:p=!1,background:C,cameraDirection:v,showGrid:E=!0,useDefaultLighting:P=!0,exposure:S=1,setupPreview:b}){const j=M.useRef(null),[u,k]=M.useState(null),[T,F]=M.useState(!0);return M.useEffect(()=>{if(!s)return;const o=j.current;if(!o)return;const W=new AbortController,U=X({id:`preview-card:${++be}`,label:`${r} (preview card)`,contentClock:()=>0}),t=new Z({antialias:!0,alpha:!0}),B=L("webglContext"),J=L("animationFrame"),K=L("resizeObserver"),l=new ae,f=new le(35,1,.01,1e3),h=new ee(f,t.domElement),D=new ce;let q=null,R=null,d,c=null,x=null;const _=[];let m=0,w=!1;if(k(null),F(!0),t.outputColorSpace=de,t.toneMapping=me,t.toneMappingExposure=S,t.shadowMap.enabled=!0,t.setClearColor(C??2106410,1),t.setPixelRatio(Math.min(window.devicePixelRatio,2)),t.domElement.style.width="100%",t.domElement.style.height="100%",t.domElement.style.display="block",o.appendChild(t.domElement),h.enableDamping=!0,h.dampingFactor=.1,P){l.add(new pe(16777215,3489874,1.8));const e=new ue(16777215,2.2);e.position.set(3,5,4),l.add(e)}if(E){const e=new fe(10,20,5333103,3423044);l.add(e),_.push(e)}const G=(e,i)=>{if(!x)return;const n=v?new we(...v):void 0,y=ie(x,Math.max(e,1)/Math.max(i,1),n);f.copy(y,!1),h.target.copy(x.center),h.update()},N=async e=>{if(w)return;l.add(e);let i=!1;if(e.traverse(n=>{re(n,"gaussianSplat")&&(i=!0)}),i){const{SparkRenderer:n}=await Y(async()=>{const{SparkRenderer:y}=await import("./spark.module-Cc-ZVx5e.js");return{SparkRenderer:y}},__vite__mapDeps([0,1,2,3]));if(w)return;c=new n({renderer:t,enableLod:!1})}if(x=ne(e,"perspective"),G(o.clientWidth,o.clientHeight),q=ve(e),p){const n=new he(e);n.name="__compact_preview_skeleton",l.add(n),_.push(n)}d=b?.({scene:l,camera:f,renderer:t,model:e}),d?.resize?.(Math.max(o.clientWidth,1),Math.max(o.clientHeight,1),t.getPixelRatio()),F(!1)};(async()=>{try{R=te(a),await N(R.root)}catch(e){!W.signal.aborted&&!w&&(k(e instanceof Error?e.message:String(e)),F(!1))}})();const I=()=>{const e=Math.max(o.clientWidth,1),i=Math.max(o.clientHeight,1);t.setSize(e,i,!1),x&&!d?G(e,i):(f.aspect=e/i,f.updateProjectionMatrix()),d?.resize?.(e,i,t.getPixelRatio())},V=new ResizeObserver(I);V.observe(o),I();const z=()=>{if(m=0,w||!H())return;D.update();const e=Math.min(D.getDelta(),.1);h.update(),c&&l.add(c);try{d?.render?d.render(e):t.render(l,f)}finally{c?.removeFromParent()}m=requestAnimationFrame(z)},Q=se(()=>{H()?!w&&m===0&&(D.update(),z()):(cancelAnimationFrame(m),m=0)});return H()&&(m=requestAnimationFrame(z)),()=>{w=!0,Q(),U(),W.abort(new Error("Compact Object3D preview closed.")),cancelAnimationFrame(m),V.disconnect(),q?.stopAllAction(),d?.dispose(),h.dispose(),c&&(c.removeFromParent(),oe(c),c=null),t.dispose(),t.forceContextLoss();for(const e of _){const i=e;i.geometry?.dispose();const n=i.material;if(Array.isArray(n))for(const y of n)y.dispose();else n?.dispose()}R&&R.dispose(),o.contains(t.domElement)&&o.removeChild(t.domElement),K(),J(),B()}},[s,C,v,S,b,E,p,a,P]),g.jsxs("div",{ref:j,"data-testid":"object3d-compact-preview",role:"region","aria-label":`Interactive 3D preview: ${r}`,"aria-busy":T,style:{width:"100%",height:"100%",minHeight:220,overflow:"hidden",position:"relative",background:O.surface.inset},children:[T&&!u?g.jsx("span",{style:{position:"absolute",padding:10,color:O.content.muted},children:"Loading…"}):null,s?null:g.jsx("span",{style:{position:"absolute",padding:10,color:O.content.muted},children:"Preview suspended while inactive."}),u?g.jsx("div",{role:"alert",style:{position:"absolute",padding:10,color:O.semantic.danger},children:u}):null]})}function Fe({build:r,displayName:s="Object3D preview",height:a=360,background:p,showSkeleton:C=!1,cameraDirection:v,showGrid:E,useDefaultLighting:P,exposure:S,setupPreview:b,active:j=!0}){const u=b!==void 0;return g.jsx("div",{style:{width:"100%",height:a,minHeight:240},children:g.jsx(xe,{sourceFactory:r,displayName:s,active:j,showSkeleton:C,background:p,cameraDirection:v,showGrid:E??!u,useDefaultLighting:P??!u,exposure:S,setupPreview:b})})}export{Fe as ToolObject3DPreview};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,j as t,am as c,b3 as f}from"./volter-sdk-D8o6TU4A.js";function u({assetPath:r}){const[x,a]=o.useState(!1),[d,h]=o.useState(null),i=r;o.useEffect(()=>{a(!1)},[i]);const n=r.split("/").pop()??r,l=o.useCallback(e=>{if(e){if(e.error){a(!0);return}e.videoWidth<=0||h(s=>s&&s.w===e.videoWidth&&s.h===e.videoHeight?s:{w:e.videoWidth,h:e.videoHeight})}},[]);return t.jsxs("div",{"data-testid":"video-asset-document",style:{height:"100%",minHeight:240,display:"flex",flexDirection:"column",minWidth:0},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"6px 8px"},children:[t.jsx(c,{tone:"dim",variant:"label",children:n}),d&&t.jsxs(c,{tone:"muted",variant:"code",children:[d.w," × ",d.h]})]}),t.jsx("div",{className:"volter-asset-transparency-well",style:{flex:1,minHeight:0,display:"flex",alignItems:"center",justifyContent:"center",padding:12},children:x?t.jsxs("div",{style:{color:f[2],fontSize:12,textAlign:"center"},children:[n," could not be played from ",i,". The file may be missing, or its codec may not be one this browser decodes."]}):t.jsx("video",{src:i,controls:!0,playsInline:!0,preload:"metadata",ref:l,onError:()=>a(!0),onLoadedMetadata:e=>l(e.currentTarget),style:{maxWidth:"100%",maxHeight:"100%",display:"block"}},i)})]})}export{u as VideoViewer};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as x,j as e,ge as S,gf as g,cf as c,f6 as w,gm as b,an as y,fD as j,jR as C,hj as f,cF as v,cQ as M,cR as z,hr as N,t as V}from"./volter-sdk-D8o6TU4A.js";function L(){return e.jsxs("svg",{viewBox:"0 0 16 16",className:"volter-viewport-overlays-glyph","aria-hidden":"true",focusable:"false",children:[e.jsx("path",{d:"M5.24 4.51 A5.3 5.3 0 1 1 11.89 11.16 A5.85 5.85 0 0 0 5.24 4.51 Z",fill:"currentColor"}),e.jsx("circle",{cx:"6.1",cy:"10.3",r:"4.4",fill:"none",stroke:"currentColor",strokeWidth:"1.1"})]})}function A({label:r="Overlays",choices:p,master:l,glyph:t,word:h}){const[a,n]=x.useState(!1),i=x.useRef(null),u=p.some(o=>o.enabled),d=l?.enabled??u,m=t??e.jsx(c,{icon:d?M:z,size:"md"});x.useEffect(()=>{if(!a)return;const o=k=>{i.current&&!i.current.contains(k.target)&&n(!1)};return document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[a]);const s=a?e.jsxs(S,{className:"volter-helpers-menu",onDismiss:()=>n(!1),children:[l?e.jsxs(e.Fragment,{children:[e.jsxs(g,{role:"menuitemcheckbox","aria-checked":l.enabled,onSelect:l.onToggle,children:[e.jsx("span",{className:"volter-menu-check",children:l.enabled&&e.jsx(c,{icon:w,size:"xs"})}),"Show ",r]}),e.jsx(b,{})]}):null,p.map(o=>e.jsxs(g,{role:"menuitemcheckbox","aria-checked":o.enabled,disabled:o.disabled,onSelect:o.onToggle,children:[e.jsx("span",{className:"volter-menu-check",children:o.enabled&&e.jsx(c,{icon:w,size:"xs"})}),o.label]},o.id))]}):null;return h!==void 0?e.jsxs("div",{ref:i,className:"volter-viewport-popover-anchor",children:[e.jsxs(y,{variant:"ghost",size:"comfortable","aria-label":`Choose ${r.toLowerCase()}`,"aria-expanded":a,onClick:()=>n(!a),children:[h,e.jsx(c,{icon:j,size:"xs"})]}),s]}):e.jsxs("div",{ref:i,className:"volter-viewport-popover-anchor",children:[l?e.jsxs(C,{children:[e.jsx(f,{text:`${r}: ${d?"On":"Off"}`,children:e.jsx(v,{"aria-label":`Toggle ${r.toLowerCase()}`,"aria-pressed":d,size:"comfortable",onClick:l.onToggle,children:m})}),e.jsx(v,{"aria-label":`Choose ${r.toLowerCase()}`,"aria-expanded":a,size:"comfortable",onClick:()=>n(!a),children:e.jsx(c,{icon:j,size:"xs"})})]}):e.jsx(f,{text:`${r}: ${d?"On":"Off"}`,children:e.jsx(v,{"aria-label":`Choose ${r.toLowerCase()}`,"aria-expanded":a,"aria-pressed":d,size:"comfortable",onClick:()=>n(!a),children:m})}),s]})}const O=[{mode:"solid",label:"Material",description:"Authored materials and lighting"},{mode:"clay",label:"Solid",description:"Neutral flat-shaded geometry"},{mode:"unlit",label:"Unlit",description:"Base color without scene lighting"},{mode:"wireframe",label:"Wireframe",description:"Renderable triangle edges"},{mode:"matcap",label:"Matcap",description:"Neutral clay sphere — form without color"},{mode:"normals",label:"Normals",description:"Surface-normal direction colors"},{mode:"overdraw",label:"Overdraw",description:"Additive overlap visualization"}],$={preview:"Material Preview",rendered:"Rendered",uv:"UV","vertex-colors":"Vertex Colors"},T=[{mode:"wireframe",glyph:"wireframe",label:"Wireframe"},{mode:"clay",glyph:"sphere",label:"Solid"},{mode:"solid",glyph:"preview",label:"Material"}];function B(r){return[{mode:"wireframe",glyph:"wireframe",label:"Wireframe"},{mode:"solid",glyph:"sphere",label:"Solid"},...r.has("preview")?[{mode:"preview",glyph:"preview",label:"Material Preview"}]:[],...r.has("rendered")?[{mode:"rendered",glyph:"rendered",label:"Rendered"}]:[]]}function E({glyph:r}){return e.jsxs("svg",{viewBox:"0 0 16 16",className:"volter-viewport-shading-glyph","aria-hidden":"true",focusable:"false",children:[r==="sphere"||r==="rendered"?e.jsx("circle",{cx:"8",cy:"8",r:"7.3",fill:"currentColor"}):e.jsx("circle",{cx:"8",cy:"8",r:"7.3",fill:"none",stroke:"currentColor",strokeWidth:"1.05"}),r==="wireframe"?e.jsxs("g",{stroke:"currentColor",strokeWidth:"1.05",children:[e.jsx("line",{x1:"1.7",y1:"5.4",x2:"14.3",y2:"5.4"}),e.jsx("line",{x1:"1.7",y1:"10.6",x2:"14.3",y2:"10.6"}),e.jsx("line",{x1:"5.4",y1:"1.7",x2:"5.4",y2:"14.3"})]}):null,r==="rendered"?e.jsx("circle",{cx:"5.6",cy:"5.6",r:"2.3",fill:"var(--volter-surface-overlay, #ffffff)",fillOpacity:"0.7"}):null,r==="preview"?e.jsx("path",{d:"M7.73 1.23 L7.73 10.43 L1.22 8.04 A6.78 6.78 0 0 1 7.73 1.23 Z",fill:"currentColor"}):null]})}function R({mode:r,onChange:p,choices:l,disabled:t=!1,segments:h,children:a}){const[n,i]=x.useState(!1),u=x.useRef(null),d=l.find(s=>s.mode===r)??l[0];if(!d)return null;const m=n&&!t?e.jsxs(N,{id:"volter-viewport-shading-menu",anchorRef:u,"aria-label":"Viewport shading modes",onDismiss:()=>i(!1),style:{minWidth:230},children:[l.map(s=>e.jsxs(g,{role:"menuitemradio","aria-checked":s.mode===r,onSelect:()=>{p(s.mode),i(!1)},style:{display:"grid",gridTemplateColumns:"14px 1fr",gap:7},children:[e.jsx("span",{style:{opacity:s.mode===r?1:0},children:e.jsx(c,{icon:w,size:"xs"})}),e.jsxs("span",{children:[e.jsx("span",{style:{display:"block"},children:s.label}),e.jsx("span",{style:{display:"block",color:V.content.dim,fontSize:10},children:s.description})]})]},s.mode)),a?e.jsxs(e.Fragment,{children:[e.jsx(b,{}),e.jsx("div",{className:"volter-viewport-shading-options",children:a})]}):null]}):null;return h?e.jsxs("div",{className:"volter-viewport-popover-anchor",children:[e.jsxs("span",{className:"volter-viewport-shading-segments",role:"group","aria-label":"Viewport shading",children:[h.map(s=>e.jsx(f,{text:`Viewport shading: ${s.label}`,children:e.jsx(v,{size:"compact",shape:"segment",variant:"secondary","aria-pressed":s.mode===r,"aria-label":`Viewport shading: ${s.label}`,disabled:t,onClick:()=>p(s.mode),children:e.jsx(E,{glyph:s.glyph})})},s.mode)),e.jsx(f,{text:"Shading options",children:e.jsx(v,{ref:u,size:"compact",shape:"segment",variant:"secondary","aria-label":"Shading options","aria-haspopup":"menu","aria-expanded":n,"aria-controls":n?"volter-viewport-shading-menu":void 0,disabled:t,onClick:()=>i(s=>!s),children:e.jsx(c,{icon:j,size:"xs"})})})]}),m]}):e.jsxs("div",{style:{position:"relative"},children:[e.jsx(f,{text:`Viewport shading: ${d.label}`,children:e.jsxs(y,{ref:u,type:"button",size:"compact",variant:"secondary","aria-label":`Viewport shading: ${d.label}`,"aria-haspopup":"menu","aria-expanded":n,"aria-controls":n?"volter-viewport-shading-menu":void 0,disabled:t,onClick:()=>i(s=>!s),style:{display:"inline-flex",alignItems:"center",gap:5,minWidth:66},children:[e.jsx("span",{children:d.label}),e.jsx(c,{icon:j,size:"xs"})]})}),m]})}function D({mode:r,onChange:p,disabled:l=!1,words:t}){const h=x.useMemo(()=>{const a=O.map(i=>({...i,label:t?.[i.mode]??i.label}));if(a.some(i=>i.mode===r))return a;const n=t?.[r]??$[r]??r;return[...a,{mode:r,label:n,description:"The mode this view is drawn in"}]},[t,r]);return e.jsx(R,{mode:r,onChange:p,choices:h,disabled:l})}export{R as V,T as a,A as b,L as c,D as d,B as p,O as v};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{gU as i}from"./volter-sdk-D8o6TU4A.js";import{l as o}from"./live-mixers-B-bwLZ7c.js";const a="workspace.service";function p(){return i().session.reportFacet(()=>({liveMixers:o().map(s=>({site:s.key,clips:[...s.clips.keys()],animates:[...s.roots].map(e=>e.name||"(unnamed)")}))}))}export{a as point,p as start};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{gU as c,r as a,j as r,am as l}from"./volter-sdk-D8o6TU4A.js";import{T as u}from"./transport-strip-cKO8FHd1.js";const m="workspace.utility";function v(){const{documents:n,transport:s}=c(),e=a.useSyncExternalStore(n.subscribe,n.activeId,n.activeId),t=a.useSyncExternalStore(s.subscribe,a.useCallback(()=>e?s.for(e):null,[e,s])),o=a.useSyncExternalStore(a.useCallback(i=>t?t.subscribe(i):()=>{},[t]),a.useCallback(()=>t?.snapshot()??null,[t]));return!t||!o||o.activeSubject===null?r.jsx(l,{as:"p",variant:"caption","data-testid":"animation-timeline-empty","data-document":e??"","data-transport":t?"yes":"no",style:{padding:"var(--volter-space-2) var(--volter-space-3)"},children:t?"Nothing in the active document plays an animation.":"The active document has no stage to animate."}):r.jsx(u,{transport:t})}export{v as default,m as point};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/spark.module-Cc-ZVx5e.js","assets/three.module-JoAAxMWl.js","assets/volter-shared-three-core-DEsIwtOu.js","assets/output-pass-Bw2FZb8e.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{e as lt,jy as iA,jz as dt}from"./volter-sdk-D8o6TU4A.js";import{c as Va,m as RA}from"./output-pass-Bw2FZb8e.js";import{W as yA}from"./three.module-JoAAxMWl.js";import{Loader as me,LoaderUtils as X,FileLoader as sA,SRGBColorSpace as M,LinearSRGBColorSpace as q,BufferGeometry as we,BufferAttribute as uA,InterleavedBuffer as ht,Color as K,ColorManagement as vA,InterleavedBufferAttribute as bt,TrianglesDrawMode as za,TriangleFanDrawMode as ce,TriangleStripDrawMode as Et,MeshPhysicalMaterial as J,Vector2 as ft,SpotLight as Xa,PointLight as Za,DirectionalLight as UA,Matrix4 as oA,InstancedMesh as Bt,Vector3 as D,Quaternion as Ct,InstancedBufferAttribute as ve,Object3D as De,TextureLoader as $a,ImageBitmapLoader as An,LinearMipmapLinearFilter as JA,NearestMipmapLinearFilter as en,LinearMipmapNearestFilter as tn,NearestMipmapNearestFilter as pt,LinearFilter as rA,NearestFilter as qA,RepeatWrapping as ge,MirroredRepeatWrapping as an,ClampToEdgeWrapping as nn,PointsMaterial as sn,Material as VA,LineBasicMaterial as on,MeshStandardMaterial as ut,DoubleSide as rn,MeshBasicMaterial as BA,PropertyBinding as cn,SkinnedMesh as Qt,Mesh as jA,LineSegments as mt,Line as wt,LineLoop as Dt,Points as Ft,Group as QA,PerspectiveCamera as Rt,MathUtils as gA,OrthographicCamera as yt,Skeleton as gn,AnimationClip as In,Bone as kt,InterpolateDiscrete as ln,InterpolateLinear as St,Texture as Ie,VectorKeyframeTrack as qe,NumberKeyframeTrack as He,QuaternionKeyframeTrack as Pe,FrontSide as dn,Interpolant as hn,Box3 as Fe,Sphere as bn,CompressedCubeTexture as En,CompressedArrayTexture as fn,CompressedTexture as xt,NoColorSpace as Je,RGBA_PVRTC_2BPPV1_Format as je,RGBA_PVRTC_4BPPV1_Format as le,RGBA_BPTC_Format as de,RED_GREEN_RGTC2_Format as Bn,SIGNED_RED_GREEN_RGTC2_Format as Cn,RED_RGTC1_Format as pn,SIGNED_RED_RGTC1_Format as un,RGBA_S3TC_DXT5_Format as he,RGB_S3TC_DXT1_Format as Oe,RGBA_S3TC_DXT1_Format as be,RGBA_ASTC_6x6_Format as zA,RGBA_ASTC_4x4_Format as _A,SIGNED_RG11_EAC_Format as Qn,RG11_EAC_Format as mn,SIGNED_R11_EAC_Format as wn,R11_EAC_Format as Dn,RGB_ETC2_Format as Gt,RGBA_ETC2_EAC_Format as Tt,RGBFormat as Ee,RedFormat as CA,RGFormat as pA,RGBAFormat as eA,UnsignedByteType as y,HalfFloatType as tA,UnsignedInt101111Type as Lt,UnsignedInt5999Type as Mt,UnsignedShortType as Nt,FloatType as mA,DataTexture as Fn,Data3DTexture as Rn,RGB_PVRTC_4BPPV1_Format as yn,RGB_ETC1_Format as kn,RGB_BPTC_UNSIGNED_Format as Sn,LoadingManager as xn,BoxGeometry as Gn,Sprite as Tn,LOD as Ln,ACESFilmicToneMapping as kA,AnimationMixer as Mn,Scene as Nn,HemisphereLight as Un}from"./volter-shared-three-core-DEsIwtOu.js";const Re={editorHelperType:"editorHelperType",skeletonVisible:"skeletonVisible",skeletonEnabled:"skeletonEnabled",engineInternal:"engineInternal",editorHelper:"editorHelper"};function Ke(n,A){return n?n.userData[Re[A]]:void 0}function Hi(n,A,e){n.userData[Re[A]]=e}const ye={...Re,entityId:"entityId",forward:"forward",tags:"tags",attributes:"attributes",pivot:"pivot",_camera:"_camera",gaussianSplat:"gaussianSplat",__ingest:"__ingest",authoringRoot:"authoringRoot",authoringInstance:"authoringInstance",authoringLabel:"authoringLabel",authoringComponent:"authoringComponent",authoringHierarchyId:"authoringHierarchyId",authoringHierarchyParentId:"authoringHierarchyParentId",authoringHierarchyOrder:"authoringHierarchyOrder",editorIcon:"editorIcon",envObject:"envObject",constraints:"constraints",authoringSubject:"authoringSubject",reflectionProbe:"reflectionProbe",triggerVolume:"triggerVolume",vcDirIdx:"vcDirIdx"};function Pi(n,A){return n?n.userData[ye[A]]:void 0}function Ye(n,A,e){n.userData[ye[A]]=e}function SA(n,A){return n?n.userData[ye[A]]!==void 0:!1}var _n=(function(){var n="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq:VZkdbk:XYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbh5dnawTmbaxa8Acd4fRbbh5kcbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk: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:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb",A="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:W9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:JBl8Aud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fhOaPaDfhAasaeaH9RaHasfae6EgCcsfgocl4cifcd4hXavcj;cbfaoc9WGgQcetfhLavcj;cbfaQci2fhKavcj;cbfaQfhYcbh8Aaoc;ab6hEincbh3dnawTmbaPa8Acd4fRbbh3kcbh5avcj;cbfh8Eindndndndna3a5cet4ciGgoc9:fPdebdkaxaA9RaQ6mwdnaQTmbavcj;cbfa5aQ2faAaQ;8qbbkaAaCfhAxdkaQTmeavcj;cbfa5aQ2fcbaQ;8kbxekaxaA9RaX6moaoclVcbawEhraAaXfhocbhidnaEmbaxao9Rc;Gb6mbcbhlina8EalfhidndndndndndnaAalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiczfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaicafaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaQ0meaihlaxao9Rc;Fb0mbkkdnaiaQ9pmbaici4hlinaxao9RcK6mwa8EaifhqdndndndndndnaAaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaoclffagRb:q:W:cjbfhoxikaqaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaocwffagRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbahaocdffagRb:q:W:cjbfhokalcdfhlaiczfgiaQ6mbkkaohAaoTmoka8EaQfh8Ea5cefg5cl9hmbkdndndndnawTmbaza8Acd4fRbbglciGPlbedwbkaQTmdavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep9Ta8Fpxeeeeeeeeeeeeeeeegap9op9Hp9rg8Fa8Jp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ugap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp9Ugap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp9Ugap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9AbbbaladfhlaoczfgoaQ6mbxikkaQTmeavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep:nea8Fpxebebebebebebebebgap9op:bep9rg8Fa8Jp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oegap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp:oegap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp:oegap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9AbbbaladfhlaoczfgoaQ6mbxdkkaQTmbcbhocbalcl4gl9Rc8FGhiavcjdfa8Afhrava8Afpbdbhainaravcj;cbfaofpblbg8JaYaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaLaofpblbg8MaKaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Faap9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8LaypmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9AbbbaradfhraoczfgoaQ6mbkka8Aclfg8Aad6mbkdnaCad2goTmbaOavcjdfao;8qbbkdnammbavavcjdfaCcufad2fad;8qbbkaCaHfhHc9:hoaAhPaAmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb",e=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]),t=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 a=WebAssembly.validate(e)?r(A):r(n),s,i=WebAssembly.instantiate(a,{}).then(function(C){s=C.instance,s.exports.__wasm_call_ctors()});function r(C){for(var f=new Uint8Array(C.length),p=0;p<C.length;++p){var h=C.charCodeAt(p);f[p]=h>96?h-97:h>64?h-39:h+4}for(var B=0,p=0;p<C.length;++p)f[B++]=f[p]<60?t[f[p]]:(f[p]-60)*64+f[++p];return f.buffer.slice(0,B)}function o(C,f,p,h,B,Q,m){var w=C.exports.sbrk,R=h+3&-4,k=w(R*B),T=w(Q.length),Y=new Uint8Array(C.exports.memory.buffer);Y.set(Q,T);var j=f(k,h,B,T,Q.length);if(j==0&&m&&m(k,R,B),p.set(Y.subarray(k,k+h*B)),w(k-w(0)),j!=0)throw new Error("Malformed buffer data: "+j)}var c={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},g={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},I=[],l=0;function d(C){var f={object:new Worker(C),pending:0,requests:{}};return f.object.onmessage=function(p){var h=p.data;f.pending-=h.count,f.requests[h.id][h.action](h.value),delete f.requests[h.id]},f}function E(C){for(var f="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+u.name+";"+o.toString()+u.toString(),p=new Blob([f],{type:"text/javascript"}),h=URL.createObjectURL(p),B=I.length;B<C;++B)I[B]=d(h);for(var B=C;B<I.length;++B)I[B].object.postMessage({});I.length=C,URL.revokeObjectURL(h)}function b(C,f,p,h,B){for(var Q=I[0],m=1;m<I.length;++m)I[m].pending<Q.pending&&(Q=I[m]);return new Promise(function(w,R){var k=new Uint8Array(p),T=++l;Q.pending+=C,Q.requests[T]={resolve:w,reject:R},Q.object.postMessage({id:T,count:C,size:f,source:k,mode:h,filter:B},[k.buffer])})}function u(C){var f=C.data;self.ready.then(function(p){if(!f.id)return self.close();try{var h=new Uint8Array(f.count*f.size);o(p,p.exports[f.mode],h,f.count,f.size,f.source,p.exports[f.filter]),self.postMessage({id:f.id,count:f.count,action:"resolve",value:h},[h.buffer])}catch(B){self.postMessage({id:f.id,count:f.count,action:"reject",value:B})}})}return{ready:i,supported:!0,useWorkers:function(C){E(C)},decodeVertexBuffer:function(C,f,p,h,B){o(s,s.exports.meshopt_decodeVertexBuffer,C,f,p,h,s.exports[c[B]])},decodeIndexBuffer:function(C,f,p,h){o(s,s.exports.meshopt_decodeIndexBuffer,C,f,p,h)},decodeIndexSequence:function(C,f,p,h){o(s,s.exports.meshopt_decodeIndexSequence,C,f,p,h)},decodeGltfBuffer:function(C,f,p,h,B,Q){o(s,s.exports[g[B]],C,f,p,h,s.exports[c[Q]])},decodeGltfBufferAsync:function(C,f,p,h,B){return I.length>0?b(C,f,p,g[h],c[B]):i.then(function(){var Q=new Uint8Array(C*f);return o(s,s.exports[g[h]],Q,C,f,p,s.exports[c[B]]),Q})}}})();const XA=new WeakMap,vn=new URL("/assets/draco_decoder-C32yEggz.wasm",import.meta.url).toString(),qn=new URL("/assets/draco_wasm_wrapper-DxJM36Ib.js",import.meta.url).toString(),Hn=new URL("/assets/draco_decoder-fzg4nYZr.js",import.meta.url).toString();new URL("/assets/draco_wasm_wrapper-fZCQGLGb.js",import.meta.url).toString(),new URL("/assets/draco_decoder-Z1_iN-Ht.wasm",import.meta.url).toString();class Pn extends me{constructor(A){super(A),this.decoderPaths={js:qn,wasm:vn,dep_js:Hn},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(A){const{decoderPaths:e}=this;return typeof A=="object"?(e.js=A.js,e.wasm=A.wasm,e.dep_js=null):(e.js=X.resolveURL("draco_wasm_wrapper.js",A),e.wasm=X.resolveURL("draco_decoder.wasm",A),e.dep_js=X.resolveURL("draco_decoder.js",A)),this}setDecoderConfig(A){return console.warn("THREE.DRACOLoader: setDecoderConfig to has been deprecated and will be removed in r194."),this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,t,a){const s=new sA(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(A,i=>{this.parse(i,e,a)},t,a)}parse(A,e,t=()=>{}){this.decodeDracoFile(A,e,null,null,M,t).catch(t)}decodeDracoFile(A,e,t,a,s=q,i=()=>{}){const r={attributeIDs:t||this.defaultAttributeIDs,attributeTypes:a||this.defaultAttributeTypes,useUniqueIDs:!!t,vertexColorSpace:s};return this.decodeGeometry(A,r).then(e).catch(i)}decodeGeometry(A,e){const t=JSON.stringify(e);if(XA.has(A)){const o=XA.get(A);if(o.key===t)return o.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let a;const s=this.workerNextTaskID++,i=A.byteLength,r=this._getWorker(s,i).then(o=>(a=o,new Promise((c,g)=>{a._callbacks[s]={resolve:c,reject:g},a.postMessage({type:"decode",id:s,taskConfig:e,buffer:A},[A])}))).then(o=>this._createGeometry(o.geometry));return r.catch(()=>!0).then(()=>{a&&s&&this._releaseTask(a,s)}),XA.set(A,{key:t,promise:r}),r}_createGeometry(A){const e=new we;A.index&&e.setIndex(new uA(A.index.array,1));for(let t=0;t<A.attributes.length;t++){const{name:a,array:s,itemSize:i,stride:r,vertexColorSpace:o}=A.attributes[t];let c;if(i===r)c=new uA(s,i);else{const g=new ht(s,r);c=new bt(g,i,0)}a==="color"&&(this._assignVertexColorSpace(c,o),c.normalized=!(s instanceof Float32Array)),e.setAttribute(a,c)}return e}_assignVertexColorSpace(A,e){if(e!==M)return;const t=new K;for(let a=0,s=A.count;a<s;a++)t.fromBufferAttribute(A,a),vA.colorSpaceToWorking(t,M),A.setXYZ(a,t.r,t.g,t.b)}_loadLibrary(A,e){const t=new sA(this.manager);return t.setResponseType(e),t.setWithCredentials(this.withCredentials),new Promise((a,s)=>{t.load(A,a,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[],{decoderPaths:t}=this;if(A){if(t.dep_js===null)throw new Error("THREE.DRACOLoader: WebAssembly is required when using a custom decoder paths.");e.push(this._loadLibrary(t.dep_js,"text"))}else e.push(this._loadLibrary(t.js,"text")),e.push(this._loadLibrary(t.wasm,"arraybuffer"));return this.decoderPending=Promise.all(e).then(a=>{const s=a[0];A||(this.decoderConfig.wasmBinary=a[1]);const i=Jn.toString(),r=["/* draco decoder */",s,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
|
|
3
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([r]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const a=new Worker(this.workerSourceURL);a._callbacks={},a._taskCosts={},a._taskLoad=0,a.postMessage({type:"init",decoderConfig:this.decoderConfig}),a.onmessage=function(s){const i=s.data;switch(i.type){case"decode":a._callbacks[i.id].resolve(i);break;case"error":a._callbacks[i.id].reject(i);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+i.type+'"')}},this.workerPool.push(a)}else this.workerPool.sort(function(a,s){return a._taskLoad>s._taskLoad?-1:1});const t=this.workerPool[this.workerPool.length-1];return t._taskCosts[A]=e,t._taskLoad+=e,t})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function Jn(){let n,A;onmessage=function(i){const r=i.data;switch(r.type){case"init":n=r.decoderConfig,A=new Promise(function(g){n.onModuleLoaded=function(I){g({draco:I})},DracoDecoderModule(n)});break;case"decode":const o=r.buffer,c=r.taskConfig;A.then(g=>{const I=g.draco,l=new I.Decoder;try{const d=e(I,l,new Int8Array(o),c),E=d.attributes.map(b=>b.array.buffer);d.index&&E.push(d.index.array.buffer),self.postMessage({type:"decode",id:r.id,geometry:d},E)}catch(d){console.error(d),self.postMessage({type:"error",id:r.id,error:d.message})}finally{I.destroy(l)}});break}};function e(i,r,o,c){const g=c.attributeIDs,I=c.attributeTypes;let l,d;const E=r.GetEncodedGeometryType(o);if(E===i.TRIANGULAR_MESH)l=new i.Mesh,d=r.DecodeArrayToMesh(o,o.byteLength,l);else if(E===i.POINT_CLOUD)l=new i.PointCloud,d=r.DecodeArrayToPointCloud(o,o.byteLength,l);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!d.ok()||l.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+d.error_msg());const b={index:null,attributes:[]};for(const u in g){const C=self[I[u]];let f,p;if(c.useUniqueIDs)p=g[u],f=r.GetAttributeByUniqueId(l,p);else{if(p=r.GetAttributeId(l,i[g[u]]),p===-1)continue;f=r.GetAttribute(l,p)}const h=a(i,r,l,u,C,f);u==="color"&&(h.vertexColorSpace=c.vertexColorSpace),b.attributes.push(h)}return E===i.TRIANGULAR_MESH&&(b.index=t(i,r,l)),i.destroy(l),b}function t(i,r,o){const g=o.num_faces()*3,I=g*4,l=i._malloc(I);r.GetTrianglesUInt32Array(o,I,l);const d=new Uint32Array(i.HEAPF32.buffer,l,g).slice();return i._free(l),{array:d,itemSize:1}}function a(i,r,o,c,g,I){const l=o.num_points(),d=I.num_components(),E=s(i,g),b=d*g.BYTES_PER_ELEMENT,u=Math.ceil(b/4)*4,C=u/g.BYTES_PER_ELEMENT,f=l*b,p=l*u,h=i._malloc(f);r.GetAttributeDataArrayForAllPoints(o,I,E,f,h);const B=new g(i.HEAPF32.buffer,h,f/g.BYTES_PER_ELEMENT);let Q;if(b===u)Q=B.slice();else{Q=new g(p/g.BYTES_PER_ELEMENT);let m=0;for(let w=0,R=B.length;w<R;w++){for(let k=0;k<d;k++)Q[m+k]=B[w*d+k];m+=C}}return i._free(h),{name:c,count:l,itemSize:d,array:Q,stride:C}}function s(i,r){switch(r){case Float32Array:return i.DT_FLOAT32;case Int8Array:return i.DT_INT8;case Int16Array:return i.DT_INT16;case Int32Array:return i.DT_INT32;case Uint8Array:return i.DT_UINT8;case Uint16Array:return i.DT_UINT16;case Uint32Array:return i.DT_UINT32}}}function We(n,A){if(A===za)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(A===ce||A===Et){let e=n.getIndex();if(e===null){const s=[],i=n.getAttribute("position");if(i!==void 0){for(let r=0;r<i.count;r++)s.push(r);n.setIndex(s),e=n.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const t=e.count-2,a=[];if(A===ce)for(let s=1;s<=t;s++)a.push(e.getX(0)),a.push(e.getX(s)),a.push(e.getX(s+1));else for(let s=0;s<t;s++)s%2===0?(a.push(e.getX(s)),a.push(e.getX(s+1)),a.push(e.getX(s+2))):(a.push(e.getX(s+2)),a.push(e.getX(s+1)),a.push(e.getX(s)));return a.length/3!==t&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles."),n.setIndex(a),n.clearGroups(),n}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),n}function jn(n){const A=new Map,e=new Map,t=n.clone();return Ut(n,t,function(a,s){A.set(s,a),e.set(a,s)}),t.traverse(function(a){if(!a.isSkinnedMesh)return;const s=a,i=A.get(a),r=i.skeleton.bones;s.skeleton=i.skeleton.clone(),s.bindMatrix.copy(i.bindMatrix),s.skeleton.bones=r.map(function(o){return e.get(o)}),s.bind(s.skeleton,s.bindMatrix)}),t}function Ut(n,A,e){e(n,A);for(let t=0;t<n.children.length;t++)Ut(n.children[t],A.children[t],e)}class On extends me{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new zn(e)}),this.register(function(e){return new Xn(e)}),this.register(function(e){return new is(e)}),this.register(function(e){return new os(e)}),this.register(function(e){return new rs(e)}),this.register(function(e){return new $n(e)}),this.register(function(e){return new As(e)}),this.register(function(e){return new es(e)}),this.register(function(e){return new ts(e)}),this.register(function(e){return new Vn(e)}),this.register(function(e){return new as(e)}),this.register(function(e){return new Zn(e)}),this.register(function(e){return new ss(e)}),this.register(function(e){return new ns(e)}),this.register(function(e){return new Yn(e)}),this.register(function(e){return new Ve(e,F.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new Ve(e,F.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new cs(e)})}load(A,e,t,a){const s=this;let i;if(this.resourcePath!=="")i=this.resourcePath;else if(this.path!==""){const c=X.extractUrlBase(A);i=X.resolveURL(c,this.path)}else i=X.extractUrlBase(A);this.manager.itemStart(A);const r=function(c){a?a(c):console.error(c),s.manager.itemError(A),s.manager.itemEnd(A)},o=new sA(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(A,function(c){try{s.parse(c,i,function(g){e(g),s.manager.itemEnd(A)},r)}catch(g){r(g)}},t,r)}setDRACOLoader(A){return this.dracoLoader=A,this}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,t,a){let s;const i={},r={},o=new TextDecoder;if(typeof A=="string")s=JSON.parse(A);else if(A instanceof ArrayBuffer)if(o.decode(new Uint8Array(A,0,4))===_t){try{i[F.KHR_BINARY_GLTF]=new gs(A)}catch(I){a&&a(I);return}s=JSON.parse(i[F.KHR_BINARY_GLTF].content)}else s=JSON.parse(o.decode(A));else s=A;if(s.asset===void 0||s.asset.version[0]<2){a&&a(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new ms(s,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let g=0;g<this.pluginCallbacks.length;g++){const I=this.pluginCallbacks[g](c);I.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),r[I.name]=I,i[I.name]=!0}if(s.extensionsUsed)for(let g=0;g<s.extensionsUsed.length;++g){const I=s.extensionsUsed[g],l=s.extensionsRequired||[];switch(I){case F.KHR_MATERIALS_UNLIT:i[I]=new Wn;break;case F.KHR_DRACO_MESH_COMPRESSION:i[I]=new Is(s,this.dracoLoader);break;case F.KHR_TEXTURE_TRANSFORM:i[I]=new ls;break;case F.KHR_MESH_QUANTIZATION:i[I]=new ds;break;default:l.indexOf(I)>=0&&r[I]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+I+'".')}}c.setExtensions(i),c.setPlugins(r),c.parse(t,a)}parseAsync(A,e){const t=this;return new Promise(function(a,s){t.parse(A,e,a,s)})}}function Kn(){let n={};return{get:function(A){return n[A]},add:function(A,e){n[A]=e},remove:function(A){delete n[A]},removeAll:function(){n={}}}}function x(n,A,e){const t=n.json.materials[A];return t.extensions&&t.extensions[e]?t.extensions[e]:null}const F={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",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Yn{constructor(A){this.parser=A,this.name=F.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let t=0,a=e.length;t<a;t++){const s=e[t];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(A){const e=this.parser,t="light:"+A;let a=e.cache.get(t);if(a)return a;const s=e.json,o=((s.extensions&&s.extensions[this.name]||{}).lights||[])[A];let c;const g=new K(16777215);o.color!==void 0&&g.setRGB(o.color[0],o.color[1],o.color[2],q);const I=o.range!==void 0?o.range:0;switch(o.type){case"directional":c=new UA(g),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new Za(g),c.distance=I;break;case"spot":c=new Xa(g),c.distance=I,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,c.angle=o.spot.outerConeAngle,c.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return c.position.set(0,0,0),H(c,o),o.intensity!==void 0&&(c.intensity=o.intensity),c.name=e.createUniqueName(o.name||"light_"+A),a=Promise.resolve(c),e.cache.add(t,a),a}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,t=this.parser,s=t.json.nodes[A],r=(s.extensions&&s.extensions[this.name]||{}).light;return r===void 0?null:this._loadLight(r).then(function(o){return t._getNodeRef(e.cache,r,o)})}}class Wn{constructor(){this.name=F.KHR_MATERIALS_UNLIT}getMaterialType(){return BA}extendParams(A,e,t){const a=[];A.color=new K(1,1,1),A.opacity=1;const s=e.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){const i=s.baseColorFactor;A.color.setRGB(i[0],i[1],i[2],q),A.opacity=i[3]}s.baseColorTexture!==void 0&&a.push(t.assignTexture(A,"map",s.baseColorTexture,M))}return Promise.all(a)}}class Vn{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);return t===null||t.emissiveStrength!==void 0&&(e.emissiveIntensity=t.emissiveStrength),Promise.resolve()}}class zn{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);if(t===null)return Promise.resolve();const a=[];if(t.clearcoatFactor!==void 0&&(e.clearcoat=t.clearcoatFactor),t.clearcoatTexture!==void 0&&a.push(this.parser.assignTexture(e,"clearcoatMap",t.clearcoatTexture)),t.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=t.clearcoatRoughnessFactor),t.clearcoatRoughnessTexture!==void 0&&a.push(this.parser.assignTexture(e,"clearcoatRoughnessMap",t.clearcoatRoughnessTexture)),t.clearcoatNormalTexture!==void 0&&(a.push(this.parser.assignTexture(e,"clearcoatNormalMap",t.clearcoatNormalTexture)),t.clearcoatNormalTexture.scale!==void 0)){const s=t.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new ft(s,s)}return Promise.all(a)}}class Xn{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_DISPERSION}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);return t===null||(e.dispersion=t.dispersion!==void 0?t.dispersion:0),Promise.resolve()}}class Zn{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);if(t===null)return Promise.resolve();const a=[];return t.iridescenceFactor!==void 0&&(e.iridescence=t.iridescenceFactor),t.iridescenceTexture!==void 0&&a.push(this.parser.assignTexture(e,"iridescenceMap",t.iridescenceTexture)),t.iridescenceIor!==void 0&&(e.iridescenceIOR=t.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),t.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=t.iridescenceThicknessMinimum),t.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=t.iridescenceThicknessMaximum),t.iridescenceThicknessTexture!==void 0&&a.push(this.parser.assignTexture(e,"iridescenceThicknessMap",t.iridescenceThicknessTexture)),Promise.all(a)}}class $n{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_SHEEN}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);if(t===null)return Promise.resolve();const a=[];if(e.sheenColor=new K(0,0,0),e.sheenRoughness=0,e.sheen=1,t.sheenColorFactor!==void 0){const s=t.sheenColorFactor;e.sheenColor.setRGB(s[0],s[1],s[2],q)}return t.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=t.sheenRoughnessFactor),t.sheenColorTexture!==void 0&&a.push(this.parser.assignTexture(e,"sheenColorMap",t.sheenColorTexture,M)),t.sheenRoughnessTexture!==void 0&&a.push(this.parser.assignTexture(e,"sheenRoughnessMap",t.sheenRoughnessTexture)),Promise.all(a)}}class As{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);if(t===null)return Promise.resolve();const a=[];return t.transmissionFactor!==void 0&&(e.transmission=t.transmissionFactor),t.transmissionTexture!==void 0&&a.push(this.parser.assignTexture(e,"transmissionMap",t.transmissionTexture)),Promise.all(a)}}class es{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_VOLUME}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);if(t===null)return Promise.resolve();const a=[];e.thickness=t.thicknessFactor!==void 0?t.thicknessFactor:0,t.thicknessTexture!==void 0&&a.push(this.parser.assignTexture(e,"thicknessMap",t.thicknessTexture)),e.attenuationDistance=t.attenuationDistance||1/0;const s=t.attenuationColor||[1,1,1];return e.attenuationColor=new K().setRGB(s[0],s[1],s[2],q),Promise.all(a)}}class ts{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_IOR}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);return t===null||(e.ior=t.ior!==void 0?t.ior:1.5,e.ior===0&&(e.ior=1e3)),Promise.resolve()}}class as{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_SPECULAR}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);if(t===null)return Promise.resolve();const a=[];e.specularIntensity=t.specularFactor!==void 0?t.specularFactor:1,t.specularTexture!==void 0&&a.push(this.parser.assignTexture(e,"specularIntensityMap",t.specularTexture));const s=t.specularColorFactor||[1,1,1];return e.specularColor=new K().setRGB(s[0],s[1],s[2],q),t.specularColorTexture!==void 0&&a.push(this.parser.assignTexture(e,"specularColorMap",t.specularColorTexture,M)),Promise.all(a)}}class ns{constructor(A){this.parser=A,this.name=F.EXT_MATERIALS_BUMP}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);if(t===null)return Promise.resolve();const a=[];return e.bumpScale=t.bumpFactor!==void 0?t.bumpFactor:1,t.bumpTexture!==void 0&&a.push(this.parser.assignTexture(e,"bumpMap",t.bumpTexture)),Promise.all(a)}}class ss{constructor(A){this.parser=A,this.name=F.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){return x(this.parser,A,this.name)!==null?J:null}extendMaterialParams(A,e){const t=x(this.parser,A,this.name);if(t===null)return Promise.resolve();const a=[];return t.anisotropyStrength!==void 0&&(e.anisotropy=t.anisotropyStrength),t.anisotropyRotation!==void 0&&(e.anisotropyRotation=t.anisotropyRotation),t.anisotropyTexture!==void 0&&a.push(this.parser.assignTexture(e,"anisotropyMap",t.anisotropyTexture)),Promise.all(a)}}class is{constructor(A){this.parser=A,this.name=F.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,t=e.json,a=t.textures[A];if(!a.extensions||!a.extensions[this.name])return null;const s=a.extensions[this.name],i=e.options.ktx2Loader;if(!i){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,s.source,i)}}class os{constructor(A){this.parser=A,this.name=F.EXT_TEXTURE_WEBP}loadTexture(A){const e=this.name,t=this.parser,a=t.json,s=a.textures[A];if(!s.extensions||!s.extensions[e])return null;const i=s.extensions[e],r=a.images[i.source];let o=t.textureLoader;if(r.uri){const c=t.options.manager.getHandler(r.uri);c!==null&&(o=c)}return t.loadTextureImage(A,i.source,o)}}class rs{constructor(A){this.parser=A,this.name=F.EXT_TEXTURE_AVIF}loadTexture(A){const e=this.name,t=this.parser,a=t.json,s=a.textures[A];if(!s.extensions||!s.extensions[e])return null;const i=s.extensions[e],r=a.images[i.source];let o=t.textureLoader;if(r.uri){const c=t.options.manager.getHandler(r.uri);c!==null&&(o=c)}return t.loadTextureImage(A,i.source,o)}}class Ve{constructor(A,e){this.name=e,this.parser=A}loadBufferView(A){const e=this.parser.json,t=e.bufferViews[A];if(t.extensions&&t.extensions[this.name]){const a=t.extensions[this.name],s=this.parser.getDependency("buffer",a.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(r){const o=a.byteOffset||0,c=a.byteLength||0,g=a.count,I=a.byteStride,l=new Uint8Array(r,o,c);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(g,I,l,a.mode,a.filter).then(function(d){return d.buffer}):i.ready.then(function(){const d=new ArrayBuffer(g*I);return i.decodeGltfBuffer(new Uint8Array(d),g,I,l,a.mode,a.filter),d})})}else return null}}class cs{constructor(A){this.name=F.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,t=e.nodes[A];if(!t.extensions||!t.extensions[this.name]||t.mesh===void 0)return null;const a=e.meshes[t.mesh];for(const c of a.primitives)if(c.mode!==N.TRIANGLES&&c.mode!==N.TRIANGLE_STRIP&&c.mode!==N.TRIANGLE_FAN&&c.mode!==void 0)return null;const i=t.extensions[this.name].attributes,r=[],o={};for(const c in i)r.push(this.parser.getDependency("accessor",i[c]).then(g=>(o[c]=g,o[c])));return r.length<1?null:(r.push(this.parser.createNodeMesh(A)),Promise.all(r).then(c=>{const g=c.pop(),I=g.isGroup?g.children:[g],l=c[0].count,d=[];for(const E of I){const b=new oA,u=new D,C=new Ct,f=new D(1,1,1),p=new Bt(E.geometry,E.material,l);for(let B=0;B<l;B++)o.TRANSLATION&&u.fromBufferAttribute(o.TRANSLATION,B),o.ROTATION&&C.fromBufferAttribute(o.ROTATION,B),o.SCALE&&f.fromBufferAttribute(o.SCALE,B),p.setMatrixAt(B,b.compose(u,C,f));let h=null;for(const B in o)if(B==="_COLOR_0"){const Q=o[B];p.instanceColor=new ve(Q.array,Q.itemSize,Q.normalized)}else if(B!=="TRANSLATION"&&B!=="ROTATION"&&B!=="SCALE"){if(h===null){const m=p.geometry;h=new we,h.name=m.name;for(const w in m.attributes)h.setAttribute(w,m.attributes[w]);for(const w in m.morphAttributes)h.morphAttributes[w]=m.morphAttributes[w];m.index!==null&&h.setIndex(m.index),h.morphTargetsRelative=m.morphTargetsRelative;for(const w of m.groups)h.addGroup(w.start,w.count,w.materialIndex);m.boundingBox!==null&&(h.boundingBox=m.boundingBox.clone()),m.boundingSphere!==null&&(h.boundingSphere=m.boundingSphere.clone()),h.drawRange.start=m.drawRange.start,h.drawRange.count=m.drawRange.count,h.userData=Object.assign({},m.userData),p.geometry=h}const Q=o[B];h.setAttribute(B,new ve(Q.array,Q.itemSize,Q.normalized))}De.prototype.copy.call(p,E),this.parser.assignFinalMaterial(p),d.push(p)}return g.isGroup?(g.clear(),g.add(...d),g):d[0]}))}}const _t="glTF",EA=12,ze={JSON:1313821514,BIN:5130562};class gs{constructor(A){this.name=F.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,EA),t=new TextDecoder;if(this.header={magic:t.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==_t)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const a=this.header.length-EA,s=new DataView(A,EA);let i=0;for(;i<a;){const r=s.getUint32(i,!0);i+=4;const o=s.getUint32(i,!0);if(i+=4,o===ze.JSON){const c=new Uint8Array(A,EA+i,r);this.content=t.decode(c)}else if(o===ze.BIN){const c=EA+i;this.body=A.slice(c,c+r)}i+=r}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Is{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=F.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const t=this.json,a=this.dracoLoader,s=A.extensions[this.name].bufferView,i=A.extensions[this.name].attributes,r={},o={},c={};for(const g in i){const I=fe[g]||g.toLowerCase();r[I]=i[g]}for(const g in A.attributes){const I=fe[g]||g.toLowerCase();if(i[g]!==void 0){const l=t.accessors[A.attributes[g]],d=cA[l.componentType];c[I]=d.name,o[I]=l.normalized===!0}}return e.getDependency("bufferView",s).then(function(g){return new Promise(function(I,l){a.decodeDracoFile(g,function(d){for(const E in d.attributes){const b=d.attributes[E],u=o[E];u!==void 0&&(b.normalized=u)}I(d)},r,c,q,l)})})}}class ls{constructor(){this.name=F.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){if((e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0)return A;if(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),e.rotation!==void 0){const t=Math.cos(A.rotation),a=Math.sin(A.rotation);A.matrix.set(A.repeat.x*t,A.repeat.y*a,A.offset.x,-A.repeat.x*a,A.repeat.y*t,A.offset.y,0,0,1),A.matrixAutoUpdate=!1}return A.needsUpdate=!0,A}}class ds{constructor(){this.name=F.KHR_MESH_QUANTIZATION}}class vt extends hn{constructor(A,e,t,a){super(A,e,t,a)}copySampleValue_(A){const e=this.resultBuffer,t=this.sampleValues,a=this.valueSize,s=A*a*3+a;for(let i=0;i!==a;i++)e[i]=t[s+i];return e}interpolate_(A,e,t,a){const s=this.resultBuffer,i=this.sampleValues,r=this.valueSize,o=r*2,c=r*3,g=a-e,I=(t-e)/g,l=I*I,d=l*I,E=A*c,b=E-c,u=-2*d+3*l,C=d-l,f=1-u,p=C-l+I;for(let h=0;h!==r;h++){const B=i[b+h+r],Q=i[b+h+o]*g,m=i[E+h+r],w=i[E+h]*g;s[h]=f*B+p*Q+u*m+C*w}return s}}const hs=new Ct;class bs extends vt{interpolate_(A,e,t,a){const s=super.interpolate_(A,e,t,a);return hs.fromArray(s).normalize().toArray(s),s}}const N={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},cA={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Xe={9728:qA,9729:rA,9984:pt,9985:tn,9986:en,9987:JA},Ze={33071:nn,33648:an,10497:ge},ZA={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},fe={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Es={CUBICSPLINE:void 0,LINEAR:St,STEP:ln},$A={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function fs(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new ut({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:dn})),n.DefaultMaterial}function $(n,A,e){for(const t in e.extensions)n[t]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[t]=e.extensions[t])}function H(n,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(n.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function Bs(n,A,e){let t=!1,a=!1,s=!1;for(let c=0,g=A.length;c<g;c++){const I=A[c];if(I.POSITION!==void 0&&(t=!0),I.NORMAL!==void 0&&(a=!0),I.COLOR_0!==void 0&&(s=!0),t&&a&&s)break}if(!t&&!a&&!s)return Promise.resolve(n);const i=[],r=[],o=[];for(let c=0,g=A.length;c<g;c++){const I=A[c];if(t){const l=I.POSITION!==void 0?e.getDependency("accessor",I.POSITION):n.attributes.position;i.push(l)}if(a){const l=I.NORMAL!==void 0?e.getDependency("accessor",I.NORMAL):n.attributes.normal;r.push(l)}if(s){const l=I.COLOR_0!==void 0?e.getDependency("accessor",I.COLOR_0):n.attributes.color;o.push(l)}}return Promise.all([Promise.all(i),Promise.all(r),Promise.all(o)]).then(function(c){const g=c[0],I=c[1],l=c[2];return t&&(n.morphAttributes.position=g),a&&(n.morphAttributes.normal=I),s&&(n.morphAttributes.color=l),n.morphTargetsRelative=!0,n})}function Cs(n,A){if(n.updateMorphTargets(),A.weights!==void 0)for(let e=0,t=A.weights.length;e<t;e++)n.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(n.morphTargetInfluences.length===e.length){n.morphTargetDictionary={};for(let t=0,a=e.length;t<a;t++)n.morphTargetDictionary[e[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function ps(n){let A;const e=n.extensions&&n.extensions[F.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+Ae(e.attributes):A=n.indices+":"+Ae(n.attributes)+":"+n.mode,n.targets!==void 0)for(let t=0,a=n.targets.length;t<a;t++)A+=":"+Ae(n.targets[t]);return A}function Ae(n){let A="";const e=Object.keys(n).sort();for(let t=0,a=e.length;t<a;t++)A+=e[t]+":"+n[e[t]]+";";return A}function Be(n){switch(n){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function us(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":n.search(/\.ktx2($|\?)/i)>0||n.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const Qs=new oA;class ms{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new Kn,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 t=!1,a=-1,s=!1,i=-1;if(typeof navigator<"u"&&typeof navigator.userAgent<"u"){const r=navigator.userAgent;t=/^((?!chrome|android).)*safari/i.test(r)===!0;const o=r.match(/Version\/(\d+)/);a=t&&o?parseInt(o[1],10):-1,s=r.indexOf("Firefox")>-1,i=s?r.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||t&&a<17||s&&i<98?this.textureLoader=new $a(this.options.manager):this.textureLoader=new An(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new sA(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const t=this,a=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(i){return i._markDefs&&i._markDefs()}),Promise.all(this._invokeAll(function(i){return i.beforeRoot&&i.beforeRoot()})).then(function(){return Promise.all([t.getDependencies("scene"),t.getDependencies("animation"),t.getDependencies("camera")])}).then(function(i){const r={scene:i[0][a.scene||0],scenes:i[0],animations:i[1],cameras:i[2],asset:a.asset,parser:t,userData:{}};return $(s,r,a),H(r,a),Promise.all(t._invokeAll(function(o){return o.afterRoot&&o.afterRoot(r)})).then(function(){for(const o of r.scenes)o.updateMatrixWorld();A(r)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],t=this.json.meshes||[];for(let a=0,s=e.length;a<s;a++){const i=e[a].joints;for(let r=0,o=i.length;r<o;r++)A[i[r]].isBone=!0}for(let a=0,s=A.length;a<s;a++){const i=A[a];i.mesh!==void 0&&(this._addNodeRef(this.meshCache,i.mesh),i.skin!==void 0&&(t[i.mesh].isSkinnedMesh=!0)),i.camera!==void 0&&this._addNodeRef(this.cameraCache,i.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,t){if(A.refs[e]<=1)return t;const a=t.clone(),s=(i,r)=>{const o=this.associations.get(i);o!=null&&this.associations.set(r,o);for(const[c,g]of i.children.entries())s(g,r.children[c])};return s(t,a),a.name+="_instance_"+A.uses[e]++,a}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let t=0;t<e.length;t++){const a=A(e[t]);if(a)return a}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const t=[];for(let a=0;a<e.length;a++){const s=A(e[a]);s&&t.push(s)}return t}getDependency(A,e){const t=A+":"+e;let a=this.cache.get(t);if(!a){switch(A){case"scene":a=this.loadScene(e);break;case"node":a=this._invokeOne(function(s){return s.loadNode&&s.loadNode(e)});break;case"mesh":a=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(e)});break;case"accessor":a=this.loadAccessor(e);break;case"bufferView":a=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(e)});break;case"buffer":a=this.loadBuffer(e);break;case"material":a=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(e)});break;case"texture":a=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(e)});break;case"skin":a=this.loadSkin(e);break;case"animation":a=this._invokeOne(function(s){return s.loadAnimation&&s.loadAnimation(e)});break;case"camera":a=this.loadCamera(e);break;default:if(a=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(A,e)}),!a)throw new Error("Unknown type: "+A);break}this.cache.add(t,a)}return a}getDependencies(A){let e=this.cache.get(A);if(!e){const t=this,a=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(a.map(function(s,i){return t.getDependency(A,i)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],t=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[F.KHR_BINARY_GLTF].body);const a=this.options;return new Promise(function(s,i){t.load(X.resolveURL(e.uri,a.path),s,void 0,function(){i(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(t){const a=e.byteLength||0,s=e.byteOffset||0;return t.slice(s,s+a)})}loadAccessor(A){const e=this,t=this.json,a=this.json.accessors[A];if(a.bufferView===void 0&&a.sparse===void 0){const i=ZA[a.type],r=cA[a.componentType],o=a.normalized===!0,c=new r(a.count*i);return Promise.resolve(new uA(c,i,o))}const s=[];return a.bufferView!==void 0?s.push(this.getDependency("bufferView",a.bufferView)):s.push(null),a.sparse!==void 0&&(s.push(this.getDependency("bufferView",a.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",a.sparse.values.bufferView))),Promise.all(s).then(function(i){const r=i[0],o=ZA[a.type],c=cA[a.componentType],g=c.BYTES_PER_ELEMENT,I=g*o,l=a.byteOffset||0,d=a.bufferView!==void 0?t.bufferViews[a.bufferView].byteStride:void 0,E=a.normalized===!0;let b,u;if(d&&d!==I){const C=Math.floor(l/d),f="InterleavedBuffer:"+a.bufferView+":"+a.componentType+":"+C+":"+a.count;let p=e.cache.get(f);p||(b=new c(r,C*d,a.count*d/g),p=new ht(b,d/g),e.cache.add(f,p)),u=new bt(p,o,l%d/g,E)}else r===null?b=new c(a.count*o):b=new c(r,l,a.count*o),u=new uA(b,o,E);if(a.sparse!==void 0){const C=ZA.SCALAR,f=cA[a.sparse.indices.componentType],p=a.sparse.indices.byteOffset||0,h=a.sparse.values.byteOffset||0,B=new f(i[1],p,a.sparse.count*C),Q=new c(i[2],h,a.sparse.count*o);r!==null&&(u=new uA(u.array.slice(),u.itemSize,u.normalized)),u.normalized=!1;for(let m=0,w=B.length;m<w;m++){const R=B[m];if(u.setX(R,Q[m*o]),o>=2&&u.setY(R,Q[m*o+1]),o>=3&&u.setZ(R,Q[m*o+2]),o>=4&&u.setW(R,Q[m*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}u.normalized=E}return u})}loadTexture(A){const e=this.json,t=this.options,s=e.textures[A].source,i=e.images[s];let r=this.textureLoader;if(i.uri){const o=t.manager.getHandler(i.uri);o!==null&&(r=o)}return this.loadTextureImage(A,s,r)}loadTextureImage(A,e,t){const a=this,s=this.json,i=s.textures[A],r=s.images[e],o=(r.uri||r.bufferView)+":"+i.sampler;if(this.textureCache[o])return this.textureCache[o];const c=this.loadImageSource(e,t).then(function(g){g.flipY=!1,g.name=i.name||r.name||"",g.name===""&&typeof r.uri=="string"&&r.uri.startsWith("data:image/")===!1&&(g.name=r.uri);const l=(s.samplers||{})[i.sampler]||{};return g.magFilter=Xe[l.magFilter]||rA,g.minFilter=Xe[l.minFilter]||JA,g.wrapS=Ze[l.wrapS]||ge,g.wrapT=Ze[l.wrapT]||ge,g.generateMipmaps=!g.isCompressedTexture&&g.minFilter!==qA&&g.minFilter!==rA,a.associations.set(g,{textures:A}),g}).catch(function(){return null});return this.textureCache[o]=c,c}loadImageSource(A,e){const t=this,a=this.json,s=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(I=>I.clone());const i=a.images[A],r=self.URL||self.webkitURL;let o=i.uri||"",c=!1;if(i.bufferView!==void 0)o=t.getDependency("bufferView",i.bufferView).then(function(I){c=!0;const l=new Blob([I],{type:i.mimeType});return o=r.createObjectURL(l),o});else if(i.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const g=Promise.resolve(o).then(function(I){return new Promise(function(l,d){let E=l;e.isImageBitmapLoader===!0&&(E=function(b){const u=new Ie(b);u.needsUpdate=!0,l(u)}),e.load(X.resolveURL(I,s.path),E,void 0,d)})}).then(function(I){return c===!0&&r.revokeObjectURL(o),H(I,i),I.userData.mimeType=i.mimeType||us(i.uri),I}).catch(function(I){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),I});return this.sourceCache[A]=g,g}assignTexture(A,e,t,a){const s=this;return this.getDependency("texture",t.index).then(function(i){if(!i)return null;if(t.texCoord!==void 0&&t.texCoord>0&&(i=i.clone(),i.channel=t.texCoord),s.extensions[F.KHR_TEXTURE_TRANSFORM]){const r=t.extensions!==void 0?t.extensions[F.KHR_TEXTURE_TRANSFORM]:void 0;if(r){const o=s.associations.get(i);i=s.extensions[F.KHR_TEXTURE_TRANSFORM].extendTexture(i,r),s.associations.set(i,o)}}return a!==void 0&&(i.colorSpace=a),A[e]=i,i})}assignFinalMaterial(A){const e=A.geometry;let t=A.material;const a=e.attributes.tangent===void 0,s=e.attributes.color!==void 0,i=e.attributes.normal===void 0;if(A.isPoints){const r="PointsMaterial:"+t.uuid;let o=this.cache.get(r);o||(o=new sn,VA.prototype.copy.call(o,t),o.color.copy(t.color),o.map=t.map,o.sizeAttenuation=!1,this.cache.add(r,o)),t=o}else if(A.isLine){const r="LineBasicMaterial:"+t.uuid;let o=this.cache.get(r);o||(o=new on,VA.prototype.copy.call(o,t),o.color.copy(t.color),o.map=t.map,this.cache.add(r,o)),t=o}if(a||s||i){let r="ClonedMaterial:"+t.uuid+":";a&&(r+="derivative-tangents:"),s&&(r+="vertex-colors:"),i&&(r+="flat-shading:");let o=this.cache.get(r);o||(o=t.clone(),s&&(o.vertexColors=!0),i&&(o.flatShading=!0),a&&(o.normalScale&&(o.normalScale.y*=-1),o.clearcoatNormalScale&&(o.clearcoatNormalScale.y*=-1)),this.cache.add(r,o),this.associations.set(o,this.associations.get(t))),t=o}A.material=t}getMaterialType(){return ut}loadMaterial(A){const e=this,t=this.json,a=this.extensions,s=t.materials[A];let i;const r={},o=s.extensions||{},c=[];if(o[F.KHR_MATERIALS_UNLIT]){const I=a[F.KHR_MATERIALS_UNLIT];i=I.getMaterialType(),c.push(I.extendParams(r,s,e))}else{const I=s.pbrMetallicRoughness||{};if(r.color=new K(1,1,1),r.opacity=1,Array.isArray(I.baseColorFactor)){const l=I.baseColorFactor;r.color.setRGB(l[0],l[1],l[2],q),r.opacity=l[3]}I.baseColorTexture!==void 0&&c.push(e.assignTexture(r,"map",I.baseColorTexture,M)),r.metalness=I.metallicFactor!==void 0?I.metallicFactor:1,r.roughness=I.roughnessFactor!==void 0?I.roughnessFactor:1,I.metallicRoughnessTexture!==void 0&&(c.push(e.assignTexture(r,"metalnessMap",I.metallicRoughnessTexture)),c.push(e.assignTexture(r,"roughnessMap",I.metallicRoughnessTexture))),i=this._invokeOne(function(l){return l.getMaterialType&&l.getMaterialType(A)}),c.push(Promise.all(this._invokeAll(function(l){return l.extendMaterialParams&&l.extendMaterialParams(A,r)})))}s.doubleSided===!0&&(r.side=rn);const g=s.alphaMode||$A.OPAQUE;if(g===$A.BLEND?(r.transparent=!0,r.depthWrite=!1):(r.transparent=!1,g===$A.MASK&&(r.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&i!==BA&&(c.push(e.assignTexture(r,"normalMap",s.normalTexture)),r.normalScale=new ft(1,1),s.normalTexture.scale!==void 0)){const I=s.normalTexture.scale;r.normalScale.set(I,I)}if(s.occlusionTexture!==void 0&&i!==BA&&(c.push(e.assignTexture(r,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(r.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&i!==BA){const I=s.emissiveFactor;r.emissive=new K().setRGB(I[0],I[1],I[2],q)}return s.emissiveTexture!==void 0&&i!==BA&&c.push(e.assignTexture(r,"emissiveMap",s.emissiveTexture,M)),Promise.all(c).then(function(){const I=new i(r);return s.name&&(I.name=s.name),H(I,s),e.associations.set(I,{materials:A}),s.extensions&&$(a,I,s),I})}createUniqueName(A){const e=cn.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,t=this.extensions,a=this.primitiveCache;function s(r){return t[F.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(r,e).then(function(o){return $e(o,r,e)})}const i=[];for(let r=0,o=A.length;r<o;r++){const c=A[r],g=ps(c),I=a[g];if(I)i.push(I.promise);else{let l;c.extensions&&c.extensions[F.KHR_DRACO_MESH_COMPRESSION]?l=s(c):l=$e(new we,c,e),c.mode===N.TRIANGLE_STRIP?l=l.then(d=>We(d,Et)):c.mode===N.TRIANGLE_FAN&&(l=l.then(d=>We(d,ce))),a[g]={primitive:c,promise:l},i.push(l)}}return Promise.all(i)}loadMesh(A){const e=this,t=this.json,a=this.extensions,s=t.meshes[A],i=s.primitives,r=[];for(let o=0,c=i.length;o<c;o++){const g=i[o].material===void 0?fs(this.cache):this.getDependency("material",i[o].material);r.push(g)}return r.push(e.loadGeometries(i)),Promise.all(r).then(async function(o){const c=o.slice(0,o.length-1),g=o[o.length-1],I=[];for(let d=0,E=g.length;d<E;d++){const b=g[d],u=i[d];let C;const f=c[d];if(u.mode===N.TRIANGLES||u.mode===N.TRIANGLE_STRIP||u.mode===N.TRIANGLE_FAN||u.mode===void 0){const p=s.isSkinnedMesh===!0,h=b.hasAttribute("skinIndex")&&b.hasAttribute("skinWeight");p&&h===!1&&console.warn("THREE.GLTFLoader: Missing skinIndex or skinWeight attributes. Skinning disabled."),C=p&&h?new Qt(b,f):new jA(b,f),C.isSkinnedMesh===!0&&C.normalizeSkinWeights()}else if(u.mode===N.LINES)C=new mt(b,f);else if(u.mode===N.LINE_STRIP)C=new wt(b,f);else if(u.mode===N.LINE_LOOP)C=new Dt(b,f);else if(u.mode===N.POINTS)C=new Ft(b,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+u.mode);Object.keys(C.geometry.morphAttributes).length>0&&Cs(C,s),C.name=e.createUniqueName(s.name||"mesh_"+A),H(C,s),u.extensions&&$(a,C,u),e.assignFinalMaterial(C),I.push(C)}for(let d=0,E=I.length;d<E;d++)e.associations.set(I[d],{meshes:A,primitives:d});if(I.length===1)return s.extensions&&$(a,I[0],s),I[0];const l=new QA;s.extensions&&$(a,l,s),e.associations.set(l,{meshes:A});for(let d=0,E=I.length;d<E;d++)l.add(I[d]);return l})}loadCamera(A){let e;const t=this.json.cameras[A],a=t[t.type];if(!a){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return t.type==="perspective"?e=new Rt(gA.radToDeg(a.yfov),a.aspectRatio||1,a.znear||1,a.zfar||2e6):t.type==="orthographic"&&(e=new yt(-a.xmag,a.xmag,a.ymag,-a.ymag,a.znear,a.zfar)),t.name&&(e.name=this.createUniqueName(t.name)),H(e,t),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],t=[];for(let a=0,s=e.joints.length;a<s;a++)t.push(this._loadNodeShallow(e.joints[a]));return e.inverseBindMatrices!==void 0?t.push(this.getDependency("accessor",e.inverseBindMatrices)):t.push(null),Promise.all(t).then(function(a){const s=a.pop(),i=a,r=[],o=[];for(let c=0,g=i.length;c<g;c++){const I=i[c];if(I){r.push(I);const l=new oA;s!==null&&l.fromArray(s.array,c*16),o.push(l)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[c])}return new gn(r,o)})}loadAnimation(A){const e=this.json,t=this,a=e.animations[A],s=a.name?a.name:"animation_"+A,i=[],r=[],o=[],c=[],g=[];for(let I=0,l=a.channels.length;I<l;I++){const d=a.channels[I],E=a.samplers[d.sampler],b=d.target,u=b.node,C=a.parameters!==void 0?a.parameters[E.input]:E.input,f=a.parameters!==void 0?a.parameters[E.output]:E.output;b.node!==void 0&&(i.push(this.getDependency("node",u)),r.push(this.getDependency("accessor",C)),o.push(this.getDependency("accessor",f)),c.push(E),g.push(b))}return Promise.all([Promise.all(i),Promise.all(r),Promise.all(o),Promise.all(c),Promise.all(g)]).then(function(I){const l=I[0],d=I[1],E=I[2],b=I[3],u=I[4],C=[];for(let p=0,h=l.length;p<h;p++){const B=l[p],Q=d[p],m=E[p],w=b[p],R=u[p];if(B===void 0)continue;B.updateMatrix&&B.updateMatrix();const k=t._createAnimationTracks(B,Q,m,w,R);if(k)for(let T=0;T<k.length;T++)C.push(k[T])}const f=new In(s,void 0,C);return H(f,a),f})}createNodeMesh(A){const e=this.json,t=this,a=e.nodes[A];return a.mesh===void 0?null:t.getDependency("mesh",a.mesh).then(function(s){const i=t._getNodeRef(t.meshCache,a.mesh,s);return a.weights!==void 0&&i.traverse(function(r){if(r.isMesh)for(let o=0,c=a.weights.length;o<c;o++)r.morphTargetInfluences[o]=a.weights[o]}),i})}loadNode(A){const e=this.json,t=this,a=e.nodes[A],s=t._loadNodeShallow(A),i=[],r=a.children||[];for(let c=0,g=r.length;c<g;c++)i.push(t.getDependency("node",r[c]));const o=a.skin===void 0?Promise.resolve(null):t.getDependency("skin",a.skin);return Promise.all([s,Promise.all(i),o]).then(function(c){const g=c[0],I=c[1],l=c[2];l!==null&&g.traverse(function(d){d.isSkinnedMesh&&d.bind(l,Qs)});for(let d=0,E=I.length;d<E;d++)g.add(I[d]);if(g.userData.pivot!==void 0&&I.length>0){const d=g.userData.pivot,E=I[0];g.pivot=new D().fromArray(d),g.position.x-=d[0],g.position.y-=d[1],g.position.z-=d[2],E.position.set(0,0,0),delete g.userData.pivot}return g})}_loadNodeShallow(A){const e=this.json,t=this.extensions,a=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const s=e.nodes[A],i=s.name?a.createUniqueName(s.name):"",r=[],o=a._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(A)});return o&&r.push(o),s.camera!==void 0&&r.push(a.getDependency("camera",s.camera).then(function(c){return a._getNodeRef(a.cameraCache,s.camera,c)})),a._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(A)}).forEach(function(c){r.push(c)}),this.nodeCache[A]=Promise.all(r).then(function(c){let g;if(s.isBone===!0?g=new kt:c.length>1?g=new QA:c.length===1?g=c[0]:g=new De,g!==c[0])for(let I=0,l=c.length;I<l;I++)g.add(c[I]);if(s.name&&(g.userData.name=s.name,g.name=i),H(g,s),s.extensions&&$(t,g,s),s.matrix!==void 0){const I=new oA;I.fromArray(s.matrix),g.applyMatrix4(I)}else s.translation!==void 0&&g.position.fromArray(s.translation),s.rotation!==void 0&&g.quaternion.fromArray(s.rotation),s.scale!==void 0&&g.scale.fromArray(s.scale);if(!a.associations.has(g))a.associations.set(g,{});else if(s.mesh!==void 0&&a.meshCache.refs[s.mesh]>1){const I=a.associations.get(g);a.associations.set(g,{...I})}return a.associations.get(g).nodes=A,g}),this.nodeCache[A]}loadScene(A){const e=this.extensions,t=this.json.scenes[A],a=this,s=new QA;t.name&&(s.name=a.createUniqueName(t.name)),H(s,t),t.extensions&&$(e,s,t);const i=t.nodes||[],r=[];for(let o=0,c=i.length;o<c;o++)r.push(a.getDependency("node",i[o]));return Promise.all(r).then(function(o){for(let g=0,I=o.length;g<I;g++){const l=o[g];l.parent!==null?s.add(jn(l)):s.add(l)}const c=g=>{const I=new Map;for(const[l,d]of a.associations)(l instanceof VA||l instanceof Ie)&&I.set(l,d);return g.traverse(l=>{const d=a.associations.get(l);d!=null&&I.set(l,d)}),I};return a.associations=c(s),s})}_createAnimationTracks(A,e,t,a,s){const i=[],r=A.name?A.name:A.uuid,o=[];function c(d){d.morphTargetInfluences&&o.push(d.name?d.name:d.uuid)}z[s.path]===z.weights?(c(A),A.isGroup&&A.children.forEach(c)):o.push(r);let g;switch(z[s.path]){case z.weights:g=He;break;case z.rotation:g=Pe;break;case z.translation:case z.scale:g=qe;break;default:switch(t.itemSize){case 1:g=He;break;case 2:case 3:default:g=qe;break}break}const I=a.interpolation!==void 0?Es[a.interpolation]:St,l=this._getArrayFromAccessor(t);for(let d=0,E=o.length;d<E;d++){const b=new g(o[d]+"."+z[s.path],e.array,l,I);a.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(b),i.push(b)}return i}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const t=Be(e.constructor),a=new Float32Array(e.length);for(let s=0,i=e.length;s<i;s++)a[s]=e[s]*t;e=a}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(t){const a=this instanceof Pe?bs:vt;return new a(this.times,this.values,this.getValueSize()/3,t)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function ws(n,A,e){const t=A.attributes,a=new Fe;if(t.POSITION!==void 0){const r=e.json.accessors[t.POSITION],o=r.min,c=r.max;if(o!==void 0&&c!==void 0){if(a.set(new D(o[0],o[1],o[2]),new D(c[0],c[1],c[2])),r.normalized){const g=Be(cA[r.componentType]);a.min.multiplyScalar(g),a.max.multiplyScalar(g)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const s=A.targets;if(s!==void 0){const r=new D,o=new D;for(let c=0,g=s.length;c<g;c++){const I=s[c];if(I.POSITION!==void 0){const l=e.json.accessors[I.POSITION],d=l.min,E=l.max;if(d!==void 0&&E!==void 0){if(o.setX(Math.max(Math.abs(d[0]),Math.abs(E[0]))),o.setY(Math.max(Math.abs(d[1]),Math.abs(E[1]))),o.setZ(Math.max(Math.abs(d[2]),Math.abs(E[2]))),l.normalized){const b=Be(cA[l.componentType]);o.multiplyScalar(b)}r.max(o)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}a.expandByVector(r)}n.boundingBox=a;const i=new bn;a.getCenter(i.center),i.radius=a.min.distanceTo(a.max)/2,n.boundingSphere=i}function $e(n,A,e){const t=A.attributes,a=[];function s(i,r){return e.getDependency("accessor",i).then(function(o){n.setAttribute(r,o)})}for(const i in t){const r=fe[i]||i.toLowerCase();r in n.attributes||a.push(s(t[i],r))}if(A.indices!==void 0&&!n.index){const i=e.getDependency("accessor",A.indices).then(function(r){n.setIndex(r)});a.push(i)}return vA.workingColorSpace!==q&&"COLOR_0"in t&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${vA.workingColorSpace}" not supported.`),H(n,A),ws(n,A,e),Promise.all(a).then(function(){return A.targets!==void 0?Bs(n,A.targets,e):n})}class Ds{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const t=this.workersResolve[A];if(t&&t(e),this.queue.length){const{resolve:a,msg:s,transfer:i}=this.queue.shift();this.workersResolve[A]=a,this.workers[A].postMessage(s,i)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(t=>{const a=this._getIdleWorker();a!==-1?(this._initWorker(a),this.workerStatus|=1<<a,this.workersResolve[a]=t,this.workers[a].postMessage(A,e)):this.queue.push({resolve:t,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Fs=0,At=2,Rs=1,et=2,ys=0,ks=1,Ss=10,xs=0,qt=9,Ht=15,Pt=16,Jt=22,jt=37,Ot=43,Kt=76,Yt=83,ke=91,Wt=97,Vt=100,zt=103,Xt=109,Zt=122,$t=123,Aa=131,ea=132,ta=133,aa=134,na=137,sa=138,ia=139,oa=140,ra=141,ca=142,ga=145,Ia=146,la=148,da=152,ha=153,ba=154,Ea=155,fa=156,Ba=157,Ca=158,pa=165,ua=166,Qa=1000054e3,ma=1000054001,wa=1000054004,Da=1000054005,Se=1000066e3,Fa=1000066004;class fA{constructor(A,e,t,a){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(A.buffer,A.byteOffset+e,t),this._littleEndian=a,this._offset=0}_nextUint8(){const A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){const A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){const A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){const A=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){const A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint8Array(A){const e=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,A);return this._offset+=A,e}_skip(A){return this._offset+=A,this}_scan(A,e=0){const t=this._offset;let a=0;for(;this._dataView.getUint8(this._offset)!==e&&a<A;)a++,this._offset++;return a<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+t,a)}}const L=[171,75,84,88,32,50,48,187,13,10,26,10];function tt(n){return new TextDecoder().decode(n)}function Gs(n){const A=new Uint8Array(n.buffer,n.byteOffset,L.length);if(A[0]!==L[0]||A[1]!==L[1]||A[2]!==L[2]||A[3]!==L[3]||A[4]!==L[4]||A[5]!==L[5]||A[6]!==L[6]||A[7]!==L[7]||A[8]!==L[8]||A[9]!==L[9]||A[10]!==L[10]||A[11]!==L[11])throw new Error("Missing KTX 2.0 identifier.");const e={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null},t=17*Uint32Array.BYTES_PER_ELEMENT,a=new fA(n,L.length,t,!0);e.vkFormat=a._nextUint32(),e.typeSize=a._nextUint32(),e.pixelWidth=a._nextUint32(),e.pixelHeight=a._nextUint32(),e.pixelDepth=a._nextUint32(),e.layerCount=a._nextUint32(),e.faceCount=a._nextUint32(),e.levelCount=a._nextUint32(),e.supercompressionScheme=a._nextUint32();const s=a._nextUint32(),i=a._nextUint32(),r=a._nextUint32(),o=a._nextUint32(),c=a._nextUint64(),g=a._nextUint64(),I=3*Math.max(e.levelCount,1)*8,l=new fA(n,L.length+t,I,!0);for(let S=0,G=Math.max(e.levelCount,1);S<G;S++)e.levels.push({levelData:new Uint8Array(n.buffer,n.byteOffset+l._nextUint64(),l._nextUint64()),uncompressedByteLength:l._nextUint64()});const d=new fA(n,s,i,!0);d._skip(4);const E=d._nextUint16(),b=d._nextUint16(),u=d._nextUint16(),C=d._nextUint16(),f={vendorId:E,descriptorType:b,versionNumber:u,colorModel:d._nextUint8(),colorPrimaries:d._nextUint8(),transferFunction:d._nextUint8(),flags:d._nextUint8(),texelBlockDimension:[d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8()],bytesPlane:[d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8()],samples:[]},p=(C/4-6)/4;for(let S=0;S<p;S++){const G={bitOffset:d._nextUint16(),bitLength:d._nextUint8(),channelType:d._nextUint8(),samplePosition:[d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};64&G.channelType?(G.sampleLower=d._nextInt32(),G.sampleUpper=d._nextInt32()):(G.sampleLower=d._nextUint32(),G.sampleUpper=d._nextUint32()),f.samples[S]=G}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(f);const h=new fA(n,r,o,!0);for(;h._offset<o;){const S=h._nextUint32(),G=h._scan(S),_=tt(G);if(e.keyValue[_]=h._nextUint8Array(S-G.byteLength-1),_.match(/^ktx/i)){const MA=tt(e.keyValue[_]);e.keyValue[_]=MA.substring(0,MA.lastIndexOf("\0"))}h._skip(S%4?4-S%4:0)}if(g<=0)return e;const B=new fA(n,c,g,!0),Q=B._nextUint16(),m=B._nextUint16(),w=B._nextUint32(),R=B._nextUint32(),k=B._nextUint32(),T=B._nextUint32(),Y=[];for(let S=0,G=Math.max(e.levelCount,1);S<G;S++)Y.push({imageFlags:B._nextUint32(),rgbSliceByteOffset:B._nextUint32(),rgbSliceByteLength:B._nextUint32(),alphaSliceByteOffset:B._nextUint32(),alphaSliceByteLength:B._nextUint32()});const j=c+B._offset,W=j+w,dA=W+R,V=dA+k,TA=new Uint8Array(n.buffer,n.byteOffset+j,w),hA=new Uint8Array(n.buffer,n.byteOffset+W,R),bA=new Uint8Array(n.buffer,n.byteOffset+dA,k),LA=new Uint8Array(n.buffer,n.byteOffset+V,T);return e.globalData={endpointCount:Q,selectorCount:m,imageDescs:Y,endpointsData:TA,selectorsData:hA,tablesData:bA,extendedData:LA},e}let ee,O,Ce;const te={env:{emscripten_notify_memory_growth:function(n){Ce=new Uint8Array(O.exports.memory.buffer)}}};class Ts{init(){return ee||(ee=typeof fetch<"u"?fetch("data:application/wasm;base64,"+at).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,te)).then(this._init):WebAssembly.instantiate(Buffer.from(at,"base64"),te).then(this._init),ee)}_init(A){O=A.instance,te.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!O)throw new Error("ZSTDDecoder: Await .init() before decoding.");const t=A.byteLength,a=O.exports.malloc(t);Ce.set(A,a),e=e||Number(O.exports.ZSTD_findDecompressedSize(a,t));const s=O.exports.malloc(e),i=O.exports.ZSTD_decompress(s,e,a,t),r=Ce.slice(s,s+i);return O.exports.free(a),O.exports.free(s),r}}const at="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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/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ",Ls="display-p3",Ms="display-p3-linear";({...vA.spaces[M]});const Ns=new URL("/assets/basis_transcoder-VXdx5NbI.wasm",import.meta.url).toString(),Us=new URL("/assets/basis_transcoder-o4Hde_L7.js",import.meta.url).toString(),ae=new WeakMap;let ne=0,se;class U extends me{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Ds,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(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}async detectSupportAsync(A){return console.warn('KTX2Loader: "detectSupportAsync()" has been deprecated. Use "detectSupport()" and "await renderer.init();" when creating the renderer.'),await A.init(),this.detectSupport(A)}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-s3tc"),bptcSupported:A.hasFeature("texture-compression-bc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:(this.workerConfig={astcSupported:A.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:A.extensions.has("WEBGL_compressed_texture_astc")&&A.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:A.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:A.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:A.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:A.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:A.extensions.has("WEBGL_compressed_texture_pvrtc")||A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},typeof navigator<"u"&&typeof navigator.platform<"u"&&typeof navigator.userAgent<"u"&&navigator.platform.indexOf("Linux")>=0&&navigator.userAgent.indexOf("Android")<0&&this.workerConfig.astcSupported&&this.workerConfig.etc2Supported&&this.workerConfig.bptcSupported&&this.workerConfig.dxtSupported&&(this.workerConfig.astcSupported=!1,this.workerConfig.etc1Supported=!1,this.workerConfig.etc2Supported=!1)),this}init(){if(!this.transcoderPending){const A=new sA(this.manager);A.setWithCredentials(this.withCredentials);const e=new sA(this.manager);e.setWithCredentials(this.withCredentials),e.setResponseType("arraybuffer");let t,a;this.transcoderPath===""?(t=A.loadAsync(Us),a=e.loadAsync(Ns)):(A.setPath(this.transcoderPath),t=A.loadAsync("basis_transcoder.js"),e.setPath(this.transcoderPath),a=e.loadAsync("basis_transcoder.wasm")),this.transcoderPending=Promise.all([t,a]).then(([s,i])=>{const r=U.BasisWorker.toString(),o=["/* constants */","let _EngineFormat = "+JSON.stringify(U.EngineFormat),"let _EngineType = "+JSON.stringify(U.EngineType),"let _TranscoderFormat = "+JSON.stringify(U.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(U.BasisFormat),"/* basis_transcoder.js */",s,"/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
|
|
4
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([o])),this.transcoderBinary=i,this.workerPool.setWorkerCreator(()=>{const c=new Worker(this.workerSourceURL),g=this.transcoderBinary.slice(0);return c.postMessage({type:"init",config:this.workerConfig,transcoderBinary:g},[g]),c})}),ne>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),ne++}return this.transcoderPending}load(A,e,t,a){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const s=new sA(this.manager);s.setPath(this.path),s.setCrossOrigin(this.crossOrigin),s.setWithCredentials(this.withCredentials),s.setRequestHeader(this.requestHeader),s.setResponseType("arraybuffer"),s.load(A,i=>{this.parse(i,e,a)},t,a)}parse(A,e,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(ae.has(A))return ae.get(A).promise.then(e).catch(t);this._createTexture(A).then(a=>e?e(a):null).catch(t)}_createTextureFrom(A,e){const{type:t,error:a,data:{faces:s,width:i,height:r,format:o,type:c,dfdFlags:g}}=A;if(t==="error")return Promise.reject(a);let I;if(e.faceCount===6)I=new En(s,o,c);else{const l=s[0].mipmaps;I=e.layerCount>1?new fn(l,i,r,e.layerCount,o,c):new xt(l,i,r,o,c)}return I.minFilter=s[0].mipmaps.length===1?rA:JA,I.magFilter=rA,I.generateMipmaps=!1,I.needsUpdate=!0,I.colorSpace=Ra(e),I.premultiplyAlpha=!!(g&Rs),I}async _createTexture(A,e={}){const t=Gs(new Uint8Array(A)),a=t.vkFormat===Se&&t.dataFormatDescriptor[0].colorModel===167;if(!(t.vkFormat===xs||a&&!this.workerConfig.astcHDRSupported))return qs(t);const i=e,r=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:i},[A])).then(o=>this._createTextureFrom(o.data,t));return ae.set(A,{promise:r}),r}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),ne--}}U.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2};U.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};U.EngineFormat={RGBAFormat:eA,RGBA_ASTC_4x4_Format:_A,RGB_BPTC_UNSIGNED_Format:Sn,RGBA_BPTC_Format:de,RGBA_ETC2_EAC_Format:Tt,RGBA_PVRTC_4BPPV1_Format:le,RGBA_S3TC_DXT5_Format:he,RGB_ETC1_Format:kn,RGB_ETC2_Format:Gt,RGB_PVRTC_4BPPV1_Format:yn,RGBA_S3TC_DXT1_Format:be};U.EngineType={UnsignedByteType:y,HalfFloatType:tA,FloatType:mA};U.BasisWorker=function(){let n,A,e;const t=_EngineFormat,a=_EngineType,s=_TranscoderFormat,i=_BasisFormat;self.addEventListener("message",function(E){const b=E.data;switch(b.type){case"init":n=b.config,r(b.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:u,buffers:C,width:f,height:p,hasAlpha:h,format:B,type:Q,dfdFlags:m}=o(b.buffer);self.postMessage({type:"transcode",id:b.id,data:{faces:u,width:f,height:p,hasAlpha:h,format:B,type:Q,dfdFlags:m}},C)}catch(u){console.error(u),self.postMessage({type:"error",id:b.id,error:u.message})}});break}});function r(E){A=new Promise(b=>{e={wasmBinary:E,onRuntimeInitialized:b},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function o(E){const b=new e.KTX2File(new Uint8Array(E));function u(){b.close(),b.delete()}if(!b.isValid())throw u(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let C;if(b.isUASTC())C=i.UASTC;else if(b.isETC1S())C=i.ETC1S;else if(b.isHDR())C=i.UASTC_HDR;else throw new Error("THREE.KTX2Loader: Unknown Basis encoding");const f=b.getWidth(),p=b.getHeight(),h=b.getLayers()||1,B=b.getLevels(),Q=b.getFaces(),m=b.getHasAlpha(),w=b.getDFDFlags(),{transcoderFormat:R,engineFormat:k,engineType:T}=I(C,f,p,m);if(!f||!p||!B)throw u(),new Error("THREE.KTX2Loader: Invalid texture");if(!b.startTranscoding())throw u(),new Error("THREE.KTX2Loader: .startTranscoding failed");const Y=[],j=[];for(let W=0;W<Q;W++){const dA=[];for(let V=0;V<B;V++){const TA=[];let hA,bA;for(let S=0;S<h;S++){const G=b.getImageLevelInfo(V,S,W);W===0&&V===0&&S===0&&(G.origWidth%4!==0||G.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),B>1?(hA=G.origWidth,bA=G.origHeight):(hA=G.width,bA=G.height);let _=new Uint8Array(b.getImageTranscodedSizeInBytes(V,S,0,R));const MA=b.transcodeImage(_,V,S,W,R,0,-1,-1);if(T===a.HalfFloatType&&(_=new Uint16Array(_.buffer,_.byteOffset,_.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!MA)throw u(),new Error("THREE.KTX2Loader: .transcodeImage failed.");TA.push(_)}const LA=d(TA);dA.push({data:LA,width:hA,height:bA}),j.push(LA.buffer)}Y.push({mipmaps:dA,width:f,height:p,format:k,type:T})}return u(),{faces:Y,buffers:j,width:f,height:p,hasAlpha:m,dfdFlags:w,format:k,type:T}}const c=[{if:"astcSupported",basisFormat:[i.UASTC],transcoderFormat:[s.ASTC_4x4,s.ASTC_4x4],engineFormat:[t.RGBA_ASTC_4x4_Format,t.RGBA_ASTC_4x4_Format],engineType:[a.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[s.BC7_M5,s.BC7_M5],engineFormat:[t.RGBA_BPTC_Format,t.RGBA_BPTC_Format],engineType:[a.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[s.BC1,s.BC3],engineFormat:[t.RGBA_S3TC_DXT1_Format,t.RGBA_S3TC_DXT5_Format],engineType:[a.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[s.ETC1,s.ETC2],engineFormat:[t.RGB_ETC2_Format,t.RGBA_ETC2_EAC_Format],engineType:[a.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[s.ETC1],engineFormat:[t.RGB_ETC1_Format],engineType:[a.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[s.PVRTC1_4_RGB,s.PVRTC1_4_RGBA],engineFormat:[t.RGB_PVRTC_4BPPV1_Format,t.RGBA_PVRTC_4BPPV1_Format],engineType:[a.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[i.UASTC_HDR],transcoderFormat:[s.BC6H],engineFormat:[t.RGB_BPTC_UNSIGNED_Format],engineType:[a.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[s.RGBA32,s.RGBA32],engineFormat:[t.RGBAFormat,t.RGBAFormat],engineType:[a.UnsignedByteType,a.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[i.UASTC_HDR],transcoderFormat:[s.RGBA_HALF],engineFormat:[t.RGBAFormat],engineType:[a.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],g={[i.ETC1S]:c.filter(E=>E.basisFormat.includes(i.ETC1S)).sort((E,b)=>E.priorityETC1S-b.priorityETC1S),[i.UASTC]:c.filter(E=>E.basisFormat.includes(i.UASTC)).sort((E,b)=>E.priorityUASTC-b.priorityUASTC),[i.UASTC_HDR]:c.filter(E=>E.basisFormat.includes(i.UASTC_HDR)).sort((E,b)=>E.priorityHDR-b.priorityHDR)};function I(E,b,u,C){const f=g[E];for(let p=0;p<f.length;p++){const h=f[p];if(h.if&&!n[h.if]||!h.basisFormat.includes(E)||C&&h.transcoderFormat.length<2||h.needsPowerOfTwo&&!(l(b)&&l(u)))continue;const B=h.transcoderFormat[C?1:0],Q=h.engineFormat[C?1:0],m=h.engineType[0];return{transcoderFormat:B,engineFormat:Q,engineType:m}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}function l(E){return E<=2?!0:(E&E-1)===0&&E!==0}function d(E){if(E.length===1)return E[0];let b=0;for(let f=0;f<E.length;f++){const p=E[f];b+=p.byteLength}const u=new Uint8Array(b);let C=0;for(let f=0;f<E.length;f++){const p=E[f];u.set(p,C),C+=p.byteLength}return u}};const _s=new Set([eA,Ee,pA,CA]),vs=new Set([ke]),ie={[Xt]:eA,[zt]:pA,[Vt]:CA,[Wt]:eA,[Yt]:pA,[Kt]:CA,[ke]:eA,[Ot]:eA,[jt]:eA,[Jt]:pA,[Pt]:pA,[Ht]:CA,[qt]:CA,[$t]:Ee,[Zt]:Ee,[da]:Tt,[la]:Gt,[ha]:Dn,[ba]:wn,[Ea]:mn,[fa]:Qn,[Se]:_A,[Ca]:_A,[Ba]:_A,[Fa]:zA,[ua]:zA,[pa]:zA,[aa]:be,[ta]:be,[ea]:Oe,[Aa]:Oe,[sa]:he,[na]:he,[oa]:un,[ia]:pn,[ca]:Cn,[ra]:Bn,[Ia]:de,[ga]:de,[Da]:le,[ma]:le,[wa]:je,[Qa]:je},AA={[Xt]:mA,[zt]:mA,[Vt]:mA,[Wt]:tA,[Yt]:tA,[Kt]:tA,[ke]:Nt,[Ot]:y,[jt]:y,[Jt]:y,[Pt]:y,[Ht]:y,[qt]:y,[$t]:Mt,[Zt]:Lt,[da]:y,[la]:y,[ha]:y,[ba]:y,[Ea]:y,[fa]:y,[Se]:tA,[Ca]:y,[Ba]:y,[Fa]:tA,[ua]:y,[pa]:y,[aa]:y,[ta]:y,[ea]:y,[Aa]:y,[sa]:y,[na]:y,[oa]:y,[ia]:y,[ca]:y,[ra]:y,[Ia]:y,[ga]:y,[Da]:y,[ma]:y,[wa]:y,[Qa]:y};async function qs(n){const{vkFormat:A}=n;if(ie[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat: "+A);AA[A]===void 0&&console.warn('THREE.KTX2Loader: Missing ".type" for vkFormat: '+A);let e;n.supercompressionScheme===At&&(se||(se=new Promise(async i=>{const r=new Ts;await r.init(),i(r)})),e=await se);const t=[];for(let i=0;i<n.levels.length;i++){const r=Math.max(1,n.pixelWidth>>i),o=Math.max(1,n.pixelHeight>>i),c=n.pixelDepth?Math.max(1,n.pixelDepth>>i):0,g=n.levels[i];let I;if(n.supercompressionScheme===Fs)I=g.levelData;else if(n.supercompressionScheme===At)I=e.decode(g.levelData,g.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let l;AA[A]===mA?l=new Float32Array(I.buffer,I.byteOffset,I.byteLength/Float32Array.BYTES_PER_ELEMENT):AA[A]===tA||AA[A]===Nt?l=new Uint16Array(I.buffer,I.byteOffset,I.byteLength/Uint16Array.BYTES_PER_ELEMENT):AA[A]===Mt||AA[A]===Lt?l=new Uint32Array(I.buffer,I.byteOffset,I.byteLength/Uint32Array.BYTES_PER_ELEMENT):l=I,t.push({data:l,width:r,height:o,depth:c})}const a=n.levelCount===0||t.length>1;let s;if(_s.has(ie[A]))s=n.pixelDepth===0?new Fn(t[0].data,n.pixelWidth,n.pixelHeight):new Rn(t[0].data,n.pixelWidth,n.pixelHeight,n.pixelDepth),s.minFilter=a?pt:qA,s.magFilter=qA,s.generateMipmaps=n.levelCount===0,s.normalized=vs.has(A);else{if(n.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");s=new xt(t,n.pixelWidth,n.pixelHeight),s.minFilter=a?JA:rA,s.magFilter=rA}return s.mipmaps=t,s.type=AA[A],s.format=ie[A],s.colorSpace=Ra(n),s.needsUpdate=!0,Promise.resolve(s)}function Ra(n){const A=n.dataFormatDescriptor[0];return A.colorPrimaries===ks?A.transferFunction===et?M:q:A.colorPrimaries===Ss?A.transferFunction===et?Ls:Ms:A.colorPrimaries===ys?Je:(console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),Je)}let Hs="/";function ya(n){return n.startsWith("/")||n.startsWith("http")||n.startsWith("data:")||n.startsWith("blob:")?n:Hs+n}const OA=new xn;OA.setURLModifier(ya);const ka=new Pn(OA);ka.setDecoderPath("/jsm/libs/draco/gltf/");const Sa=new U(OA);Sa.setTranscoderPath("/jsm/libs/basis/");const xA=new On(OA);xA.setDRACOLoader(ka);xA.setKTX2Loader(Sa);xA.setMeshoptDecoder(_n);function Ps(n){return ya(n)}const NA=new Map;async function Js(n,A){let e=NA.get(n);!e&&A&&(e=Promise.resolve(A),NA.set(n,e)),e||(e=fetch(Ps(n)).then(async t=>{if(!t.ok)throw new Error(`Failed to load Gaussian splat: ${n} (${t.status} ${t.statusText})`);return new Uint8Array(await t.arrayBuffer())}),NA.set(n,e));try{const[{SplatMesh:t},a]=await Promise.all([lt(()=>import("./spark.module-Cc-ZVx5e.js"),__vite__mapDeps([0,1,2,3])),e]),s=new t({fileBytes:a,fileName:n,raycastable:!0});await s.initialized,Ye(s,"gaussianSplat",{src:n,numSplats:s.numSplats});const i=s.getBoundingBox();if(!i.isEmpty()){const r=i.getSize(new D).multiplyScalar(1.5),o=i.getCenter(new D),c=new jA(new Gn(r.x,r.y,r.z));c.name="__volter_splat_bounds",c.position.copy(o),c.visible=!1,c.raycast=()=>{},Ye(c,"engineInternal",!0),s.add(c)}return s}catch(t){throw NA.delete(n),t}}const js=.45,Os=.25,HA=new WeakMap;function KA(n,A){let e=HA.get(A);e||(e=Va(A),HA.set(A,e)),n.environment=e.texture,n.environmentIntensity=js}function YA(n){const A=HA.get(n);A&&(HA.delete(n),A.dispose())}const Ji=["front","side"],xa=1,ji=.55,Oi=xa/2,oe=128,Ks=[24,26,31],Ys=[235,137,52],Ws=[56,189,248],Vs=[236,240,238];function Ki(n,A){if(n.length<A*4)throw new Error(`Silhouette mask expected ${A*4} RGBA bytes but received ${n.length}.`);const e=new Uint8Array(A);for(let t=0;t<A;t++){const a=t*4,s=n[a]>=oe||n[a+1]>=oe||n[a+2]>=oe;e[t]=s?1:0}return e}function Yi(n,A){if(n.length!==A.length)throw new Error(`Mask IoU requires equal-size masks (${n.length} vs ${A.length}).`);let e=0,t=0,a=0;for(let i=0;i<n.length;i++){const r=n[i]!==0,o=A[i]!==0;r&&t++,o&&a++,r&&o&&e++}const s=t+a-e;return{intersection:e,union:s,aCount:t,bCount:a,iou:s===0?0:e/s}}function Wi(n,A){if(n.length!==A.length)throw new Error(`Overlay requires equal-size masks (${n.length} vs ${A.length}).`);const e=new Uint8ClampedArray(n.length*4);for(let t=0;t<n.length;t++){const a=n[t]!==0,s=A[t]!==0,i=a&&s?Vs:a?Ys:s?Ws:Ks,r=t*4;e[r]=i[0],e[r+1]=i[1],e[r+2]=i[2],e[r+3]=255}return e}function zs(n){if(!Array.isArray(n)||n.length!==3)return null;const[A,e,t]=n;return typeof A!="number"||typeof e!="number"||typeof t!="number"||!Number.isFinite(A)||!Number.isFinite(e)||!Number.isFinite(t)||Math.hypot(A,t)<1e-6?null:[A,e,t]}function Ga(n){const[A,,e]=n;if(!Number.isFinite(A)||!Number.isFinite(e)||Math.hypot(A,e)<1e-6)throw new Error(`Cannot derive a facing from forward vector [${n.join(", ")}].`);return Math.atan2(A,e)}function Vi(n,A){const e=A[1]-n[1];if(!Number.isFinite(e)||e<=0)throw new Error(`Compare normalization needs positive model height, got ${e}.`);const t=xa/e,a=(n[0]+A[0])/2,s=(n[2]+A[2])/2;return{scale:t,position:[-a*t,-n[1]*t,-s*t]}}const xe=31,zi=30;function Ta(n){return(n.layers.mask&1<<xe)!==0||!!Ke(n,"editorHelper")||!!Ke(n,"engineInternal")}function Xi(n){let A=n;for(;A;){if(Ta(A))return!0;A=A.parent}return!1}const pe=1.2,La=.001;function ue(n){const A=new D(Math.sin(n),0,Math.cos(n)),t=new D(0,1,0).clone().cross(A).normalize(),a=A.clone().cross(t).normalize();return{direction:A,right:t,up:a}}function Ma(){return{minRight:Number.POSITIVE_INFINITY,maxRight:Number.NEGATIVE_INFINITY,minUp:Number.POSITIVE_INFINITY,maxUp:Number.NEGATIVE_INFINITY,minDepth:Number.POSITIVE_INFINITY,maxDepth:Number.NEGATIVE_INFINITY}}function Ge(n){return n.maxRight<n.minRight}function Xs(n){n.minRight=Number.POSITIVE_INFINITY,n.maxRight=Number.NEGATIVE_INFINITY,n.minUp=Number.POSITIVE_INFINITY,n.maxUp=Number.NEGATIVE_INFINITY,n.minDepth=Number.POSITIVE_INFINITY,n.maxDepth=Number.NEGATIVE_INFINITY}function Na(n,A,e){const t=A.dot(e.right),a=A.dot(e.up),s=A.dot(e.direction);t<n.minRight&&(n.minRight=t),t>n.maxRight&&(n.maxRight=t),a<n.minUp&&(n.minUp=a),a>n.maxUp&&(n.maxUp=a),s<n.minDepth&&(n.minDepth=s),s>n.maxDepth&&(n.maxDepth=s)}function Zs(n,A){if(Ge(n))throw new Error("Asset preview cannot frame an empty projected span.");return new D().addScaledVector(A.right,(n.minRight+n.maxRight)/2).addScaledVector(A.up,(n.minUp+n.maxUp)/2).addScaledVector(A.direction,(n.minDepth+n.maxDepth)/2)}function Ua(n,A,e){const t=Math.max(A,n/e,La)*pe;return{halfHeight:t,halfWidth:t*e}}function $s(n,A){if(Ge(n))throw new Error("Asset preview cannot frame an empty projected span.");return Ua((n.maxRight-n.minRight)/2,(n.maxUp-n.minUp)/2,A)}function Ai(n){if(n.length===0)throw new Error("Asset preview cannot union an empty set of frames.");let A=0,e=0;for(const t of n)A=Math.max(A,t.halfWidth),e=Math.max(e,t.halfHeight);return{halfWidth:A,halfHeight:e}}function ei(n,A,e,t,a,s){const i=Math.max(t*a,La);let r=i,o=i;const c=new D;for(const g of n)c.copy(g).sub(A),r=Math.max(r,Math.abs(c.dot(e.right))+i),o=Math.max(o,Math.abs(c.dot(e.up))+i);return r=Math.max(r,o*s),o=Math.max(o,r/s),{halfWidth:r,halfHeight:o}}function ti(n){if(n.length===0)throw new Error("Asset preview cannot centre a bone-zoom crop on zero anchors.");const A=new D;for(const e of n)A.add(e);return A.multiplyScalar(1/n.length)}function ai(n,A){const e=n.position.dot(A.right),t=n.position.dot(A.up),a=n.position.dot(A.direction),s=n.zoom||1;return{minRight:e+n.left/s,maxRight:e+n.right/s,minUp:t+n.bottom/s,maxUp:t+n.top/s,minDepth:a-n.far,maxDepth:a-n.near}}function ni(n,A){return Ge(n)?!1:n.maxRight>=A.minRight&&n.minRight<=A.maxRight&&n.maxUp>=A.minUp&&n.minUp<=A.maxUp&&n.maxDepth>=A.minDepth&&n.minDepth<=A.maxDepth}function Te(n,A,e,t,a){const s=new yt(-e.halfWidth,e.halfWidth,e.halfHeight,-e.halfHeight,.01,a);return s.position.copy(n).addScaledVector(A.direction,t),s.up.copy(A.up),s.lookAt(n),s.updateProjectionMatrix(),s.updateMatrixWorld(!0),s}const wA=["front","right","top","perspective"],nt=24;function _a(n){const A=n;return typeof A=="object"&&A!==null&&typeof A.bone=="string"&&A.bone.length>0&&(A.axis==="x"||A.axis==="y"||A.axis==="z")&&typeof A.radians=="number"&&Number.isFinite(A.radians)}function va(n){const A=n;return typeof A=="object"&&A!==null&&typeof A.morph=="string"&&A.morph.length>0&&typeof A.influence=="number"&&Number.isFinite(A.influence)}function qa(n){const A=n;return typeof A=="object"&&A!==null&&typeof A.bone=="string"&&A.bone.length>0&&(A.axis==="x"||A.axis==="y"||A.axis==="z")&&typeof A.meters=="number"&&Number.isFinite(A.meters)}function si(n){return _a(n)||va(n)||qa(n)}function ii(n,A){const e=n;if(typeof e!="object"||e===null||typeof e.label!="string"||!/^[a-z0-9][a-z0-9-]*$/i.test(e.label)||e.pose!==void 0&&(typeof e.pose!="string"||!A.has(e.pose)))return!1;if(e.view==="turntable")return typeof e.yaw=="number"&&Number.isFinite(e.yaw);if(e.view==="bone-zoom"){const t=e;return t.yaw!==void 0&&(typeof t.yaw!="number"||!Number.isFinite(t.yaw))?!1:Array.isArray(t.bones)&&t.bones.length>0&&t.bones.every(a=>typeof a=="string"&&a.length>0)&&typeof t.spanFraction=="number"&&Number.isFinite(t.spanFraction)&&t.spanFraction>0&&t.spanFraction<=2}return!1}function Zi(n){const A=o=>{throw new Error(`Asset preview shot-set definition is invalid: ${o}`)},e=n;(typeof e!="object"||e===null)&&A("expected an object.");const t=e;(typeof t.name!="string"||!/^[a-z0-9][a-z0-9-]*$/i.test(t.name))&&A("`name` must be a short alphanumeric/dash identifier."),t.requiredBones!==void 0&&(!Array.isArray(t.requiredBones)||t.requiredBones.some(o=>typeof o!="string"||o.length===0))&&A("`requiredBones` must be an array of non-empty bone names."),t.rigRequirementHint!==void 0&&typeof t.rigRequirementHint!="string"&&A("`rigRequirementHint` must be a string.");const a=t.poses??{};(typeof a!="object"||a===null||Array.isArray(a))&&A("`poses` must be an object of named pose-step lists.");for(const[o,c]of Object.entries(a))(!Array.isArray(c)||!c.every(si))&&A(`pose ${JSON.stringify(o)} must be an array of {bone, axis, radians}, {bone, axis, meters}, and/or {morph, influence}.`);const s=new Set(Object.keys(a));(!Array.isArray(t.shots)||t.shots.length===0||t.shots.length>nt)&&A(`\`shots\` must list 1-${nt} shots.`);const i=t.shots,r=new Set;for(const o of i){ii(o,s)||A('every shot needs a label plus either {view:"turntable", yaw} or {view:"bone-zoom", bones, spanFraction, yaw?}, with every `yaw` a finite number of radians and `pose` naming a declared pose.');const{label:c}=o;r.has(c)&&A(`duplicate shot label ${JSON.stringify(c)}.`),r.add(c)}return t}const oi=512,st=64,it=1024,IA=2106410,ri=25e3,nA=64*1024*1024;function P(n){const A=n??oi;if(!Number.isInteger(A)||A<st||A>it)throw new Error(`Asset preview dimensions must be integers from ${st} to ${it}.`);return A}function v(n){const A=n.toDataURL("image/png");return A.slice(A.indexOf(",")+1)}function $i(n){const A=new Set;n.traverse(t=>A.add(t));let e=n;return n.traverse(t=>{const a=t;if(!(!a.isSkinnedMesh||!a.skeleton))for(const s of a.skeleton.bones){if(!s||A.has(s))continue;const i=new Set;for(let o=e;o;o=o.parent)i.add(o);let r=null;for(let o=s;o;o=o.parent)if(i.has(o)){r=o;break}r&&r!==e&&(e=r,e.traverse(o=>A.add(o)))}}),e}function DA(n){const A=new Set;n.traverse(s=>{A.add(s)});const e=gi(n,A),t=Ii(n,e),a=ci(n);return t.matrix.copy(a),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1,t.matrixWorld.copy(a),t.matrixWorldAutoUpdate=n.matrixWorldAutoUpdate,t.visible=!0,t}function ci(n){const A=[];let e=n;for(;e;)A.push(e),e=e.parent;const t=A.findIndex(r=>!r.matrixWorldAutoUpdate),a=t>=0?A[t].matrixWorld.clone():new oA,s=new oA,i=t>=0?t-1:A.length-1;for(let r=i;r>=0;r--){const o=A[r];o.matrixAutoUpdate?s.compose(o.position,o.quaternion,o.scale):s.copy(o.matrix),a.multiply(s)}return a}function gi(n,A){const e=new Map,t=new Map;let a=null;const s=()=>{if(a)return a;const i=new Map;for(const r of A){const o=r;if(!o.isBone||o.name==="")continue;const c=i.get(o.name);c?c.push(o):i.set(o.name,[o])}return a=i,i};if(n.traverse(i=>{const r=i;if(!r.isSkinnedMesh)return;const o=r.name||r.uuid;for(const c of r.skeleton.bones){if(c&&A.has(c)||c&&e.has(c))continue;const g=c?s().get(c.name)??[]:[];if(g.length===1){e.set(c,g[0]);continue}const I=c?.name||"(unnamed bone)";t.set(`${o} -> ${I}`,{mesh:o,bone:I,sameNamed:g.length})}}),t.size>0){const i=[...t.values()].map(({mesh:r,bone:o,sameNamed:c})=>c>1?`${r} -> ${o} (${c} bones inside the selection share that name — which one is meant is ambiguous)`:`${r} -> ${o} (no bone of that name inside the selection)`).join("; ");throw new Error(`Asset preview selection references bones outside its hierarchy that it cannot bind to: ${i}. Select the complete skeleton root — the node that owns both the skinned mesh and its bones.`)}return e}function Ii(n,A){const e=new Map,t=[],a=i=>{const r=li(i);e.set(i,r),di(i,r),i.isSkinnedMesh&&t.push([i,r]);const o=i;if(o.isLOD){const c=r,g=o.levels.filter(d=>d.object.visible),I=g.length===1?g[0]:o.levels[0];c.autoUpdate=!1;const l=new Set(o.levels.map(d=>d.object));for(const d of o.levels){if(re(d.object))continue;const E=a(d.object);E.visible=o.autoUpdate?d===I:d.object.visible,c.addLevel(E,d.distance,d.hysteresis)}for(const d of i.children)!l.has(d)&&!re(d)&&r.add(a(d))}else for(const c of i.children)re(c)||r.add(a(c));return r},s=a(n);for(const[i,r]of t){const o=i.skeleton.clone();o.bones=i.skeleton.bones.map(c=>{const g=e.get(A.get(c)??c);if(!g?.isBone)throw new Error(`Asset preview could not map skeleton bone: ${c.name||c.uuid}`);return g}),r.skeleton=o,r.bindMode=i.bindMode,r.bindMatrix.copy(i.bindMatrix),r.bindMatrixInverse.copy(i.bindMatrixInverse)}return s}function li(n){const A=n;if(A.isSkinnedMesh)return new Qt(A.geometry,A.material);const e=n;if(e.isInstancedMesh){const r=new Bt(e.geometry,e.material,e.count);return r.instanceMatrix.copy(e.instanceMatrix),r.instanceColor=e.instanceColor?e.instanceColor.clone():null,r.morphTexture=e.morphTexture,r}const t=n;if(t.isMesh)return new jA(t.geometry,t.material);const a=n;if(n.isLineSegments)return new mt(a.geometry,a.material);if(n.isLineLoop)return new Dt(a.geometry,a.material);if(a.isLine)return new wt(a.geometry,a.material);const s=n;if(s.isPoints)return new Ft(s.geometry,s.material);const i=n;return i.isSprite?new Tn(i.material):n.isLOD?new Ln:n.isBone?new kt:n.isGroup?new QA:new De}function di(n,A){A.name=n.name,A.up.copy(n.up),A.position.copy(n.position),A.quaternion.copy(n.quaternion),A.scale.copy(n.scale),A.matrix.copy(n.matrix),A.matrixWorld.copy(n.matrixWorld),A.matrixAutoUpdate=n.matrixAutoUpdate,A.matrixWorldAutoUpdate=n.matrixWorldAutoUpdate,A.visible=n.visible,A.castShadow=n.castShadow,A.receiveShadow=n.receiveShadow,A.frustumCulled=!1,A.renderOrder=n.renderOrder,A.layers.set(0),A.animations=[...n.animations];const e=n,t=A;e.morphTargetInfluences&&(e.morphTargetDictionary&&(t.morphTargetDictionary={...e.morphTargetDictionary}),t.morphTargetInfluences=[...e.morphTargetInfluences]);const a=n;a.isSprite&&A.center.copy(a.center)}function re(n){const A=1<<xe;return!!(n.userData.editorHelper||n.userData.editorIcon||(n.layers.mask&A)!==0)}function GA(n){const A=new Set;n.traverse(e=>{const t=e;t.isSkinnedMesh&&A.add(t.skeleton);const a=e;if(a.isInstancedMesh){const s=a.morphTexture;a.morphTexture=null,a.dispose(),a.morphTexture=s}});for(const e of A)e.dispose()}function Ao(n){const A=n();let e;try{e=DA(A.root),e.animations=[...A.animations??A.root.animations]}catch(a){try{A.dispose()}catch(s){throw new AggregateError([a,s],"Object3D preview snapshot creation and source cleanup both failed.")}throw a}let t=!1;return{root:e,dispose(){if(t)return;t=!0;const a=[];try{GA(e)}catch(s){a.push(s)}try{A.dispose()}catch(s){a.push(s)}if(a.length===1)throw a[0];if(a.length>1)throw new AggregateError(a,"Object3D preview snapshot cleanup failed.")}}}function Z(n,A){Le(n);const e=hi(n,A);if(e.isEmpty())throw new Error("Asset preview source has no renderable bounds.");const t=e.getCenter(new D),a=e.getSize(new D);return{center:t,size:a,radius:Math.max(a.length()/2,.001)}}function Le(n){n.parent?.updateWorldMatrix(!0,!1),n.updateMatrixWorld(!0)}function hi(n,A){const e=new Fe;return Me(n,WA(A),A==="perspective",t=>e.expandByPoint(t)),e}function bi(n,A){const e=A.map(()=>Ma());return Le(n),Me(n,A[0],!1,t=>{for(let a=0;a<A.length;a++)Na(e[a],t,A[a])}),e}function Ei(n,A){const e=A.map(()=>0);let t=0;Le(n);const a=A.map(()=>Ma());let s=-1;const i=()=>{if(!(s<0)){t++;for(let r=0;r<A.length;r++)ni(a[r],A[r].window)&&e[r]++,Xs(a[r])}};return Me(n,A[0].basis,!1,(r,o)=>{o!==s&&(i(),s=o);for(let c=0;c<A.length;c++)Na(a[c],r,A[c].basis)}),i(),{framed:e,total:t}}function Me(n,A,e,t){const a=new Fe,s=new D,i=new D,r=new oA;let o=0;const c=g=>{if(!g.visible)return;if(SA(g,"gaussianSplat")){a.copy(g.getBoundingBox()).applyMatrix4(g.matrixWorld);const E=o++;for(const b of[a.min.x,a.max.x])for(const u of[a.min.y,a.max.y])for(const C of[a.min.z,a.max.z])t(s.set(b,u,C),E)}const I=g;if(I.isLOD&&I.levels.length>0){const E=new Set(I.levels.map(b=>b.object));for(const b of I.levels)c(b.object);for(const b of g.children)E.has(b)||c(b);return}const l=g;if(l.isSprite&&l.material.visible){if(e&&!l.material.sizeAttenuation)throw new Error("Asset preview cannot deterministically frame a perspective Sprite with sizeAttenuation disabled.");const E=new D().setFromMatrixPosition(l.matrixWorld),b=new D().setFromMatrixScale(l.matrixWorld),u=Math.cos(l.material.rotation),C=Math.sin(l.material.rotation),f=o++;for(const p of[-l.center.x,1-l.center.x])for(const h of[-l.center.y,1-l.center.y]){const B=p*Math.abs(b.x),Q=h*Math.abs(b.y),m=u*B-C*Q,w=C*B+u*Q;t(E.clone().addScaledVector(A.right,m).addScaledVector(A.up,w),f)}}const d=l.isSprite?void 0:g.geometry;if(d){const E=d.getAttribute("position");if(E){const b=fi(g,d,E.count),u=Bi(g,b.length),C=Math.ceil(b.length/u),f=g;if(f.isInstancedMesh){const p=new jA(f.geometry,f.material);for(let h=0;h<f.count;h++)f.getMatrixAt(h,r),f.morphTexture&&f.getMorphAt(h,p),b.forEach((B,Q)=>{p.getVertexPosition(B,i),i.applyMatrix4(r).applyMatrix4(f.matrixWorld),t(i,o+Math.floor(Q/u))}),o+=C}else{const p=g;b.forEach((h,B)=>{p.isMesh?p.getVertexPosition(h,i):pi(g,d,h,i),i.applyMatrix4(g.matrixWorld),t(i,o+Math.floor(B/u))}),o+=C}}}for(const E of g.children)c(E)};c(n)}function fi(n,A,e){const t=n.material;if(!t)return[];const a=A.index?.count??e,s=Math.max(0,A.drawRange.start),i=Math.min(a,Number.isFinite(A.drawRange.count)?s+A.drawRange.count:a),r=[];if(Array.isArray(t))for(const c of A.groups){const g=c.materialIndex??0;if(!t[g]?.visible)continue;const I=Math.max(s,c.start),l=Math.min(i,c.start+c.count);l>I&&r.push([I,l])}else t.visible&&i>s&&r.push([s,i]);const o=[];for(const[c,g]of r){const I=Ci(n,g-c);for(let l=c;l<c+I;l++)o.push(A.index?A.index.getX(l):l)}return o}function Bi(n,A){return n.isMesh?3:n.isLineSegments?2:n.isLine?Math.max(A,1):1}function Ci(n,A){return n.isMesh?A-A%3:n.isLineSegments?A-A%2:n.isLine?A>=2?A:0:A}function pi(n,A,e,t){const a=A.getAttribute("position");t.fromBufferAttribute(a,e);const s=A.morphAttributes.position,i=n.morphTargetInfluences;if(!s||!i)return t;const r=t.clone(),o=new D,c=new D;for(let g=0;g<s.length;g++){const I=i[g]??0;I!==0&&(c.fromBufferAttribute(s[g],e),A.morphTargetsRelative||c.sub(r),o.addScaledVector(c,I))}return t.add(o)}function ui(n,A,e){const{center:t,size:a,radius:s}=A;let i=a.x,r=a.y;const o=WA(n),{direction:c,up:g}=o;n==="right"?i=a.z:n==="top"&&(r=a.z);const I=Ua(i/2,r/2,e);return Te(t,{direction:c,right:o.right,up:g},I,s*3+1,s*10+10)}function PA(n,A,e,t){const a=new Rt(35,A,.01,n.radius*20+20),s=gA.degToRad(a.fov/2),i=Math.atan(Math.tan(s)*A),r=WA("perspective"),o=e?.clone().normalize()??r.direction,c=Math.abs(o.y)>.999?new D(0,0,1):new D(0,1,0),g=e?c.clone().cross(o).normalize():r.right,I=e?o.clone().cross(g).normalize():r.up,l=n.size.clone().multiplyScalar(.5);let d=0;for(const E of[-1,1])for(const b of[-1,1])for(const u of[-1,1]){const C=new D(E*l.x,b*l.y,u*l.z),f=C.dot(o);d=Math.max(d,f+Math.abs(C.dot(g))*pe/Math.tan(i),f+Math.abs(C.dot(I))*pe/Math.tan(s))}return a.position.copy(n.center).addScaledVector(o,Math.max(t??d,.01)),a.lookAt(n.center),a.updateProjectionMatrix(),a.updateMatrixWorld(!0),a}function WA(n){const A=n==="front"?new D(0,0,1):n==="right"?new D(1,0,0):n==="top"?new D(0,1,0):new D(1,.72,1).normalize(),t=(n==="top"?new D(0,0,-1):new D(0,1,0)).clone().cross(A).normalize(),a=A.clone().cross(t).normalize();return{direction:A,right:t,up:a}}function Ne(n,A,e){return n==="perspective"?PA(A,e):ui(n,A,e)}function ot(n,A,e){return PA(n,A,e)}function Ha(n,A,e,t){const a=e.map(ue),s=bi(n,a),i=Ai(s.map(o=>$s(o,t))),r=new Map;return e.forEach((o,c)=>{r.set(o,Te(Zs(s[c],a[c]),a[c],i,A.radius*3+1,A.radius*10+10))}),r}function Qi(n,A,e){const t=P(e.width),a=P(e.height),s=e.background??"neutral",i=DA(n);let r=null;try{const o=Z(i,"perspective"),c=FA(i,o),g=RA(new yA({antialias:!0,alpha:!0,preserveDrawingBuffer:!0}));r=g,g.setPixelRatio(1),g.outputColorSpace=M,g.toneMapping=kA,g.toneMappingExposure=1,g.setClearColor(IA,s==="transparent"?0:1),g.setSize(t,a,!1),KA(c,g);const I=Math.atan2(A[0],A[2]),l=t/a,d=Q=>new D(Math.sin(Q),.72,Math.cos(Q)).normalize(),E=[I,I+Math.PI,I-Math.PI/2,I+Math.PI/2],b=Ha(i,o,E,l),u=[{label:"front",camera:b.get(E[0])},{label:"back",camera:b.get(E[1])},{label:"left",camera:b.get(E[2])},{label:"right",camera:b.get(E[3])},{label:"quarter-left",camera:ot(o,l,d(I-Math.PI/4))},{label:"quarter-right",camera:ot(o,l,d(I+Math.PI/4))}],C=[],f=2,p=3,h=document.createElement("canvas");h.width=t*f,h.height=a*p;const B=h.getContext("2d");if(!B)throw new Error("Unable to create the source-review contact sheet.");return u.forEach(({label:Q,camera:m},w)=>{g.render(c,m),C.push({label:Q,base64:v(g.domElement),mimeType:"image/png"});const R=w%f*t,k=Math.floor(w/f)*a;B.drawImage(g.domElement,R,k,t,a);const T=Q==="quarter-left"?"3/4-L":Q==="quarter-right"?"3/4-R":Q.toUpperCase();iA(B,T,R,k,t,a)}),{width:t,height:a,shots:C,contactSheet:{width:t*f,height:a*p,base64:v(h),mimeType:"image/png"}}}finally{r&&YA(r),r?.dispose(),r?.forceContextLoss(),GA(i)}}function mi(n,A,e,t,a){const s=ti(n),i=ei(n,s,A,e,t,a),r=e*3+1;return Te(s,A,i,r,r+e*4+1)}function rt(n,A){const e=new Map;n.traverse(i=>{const r=i;r.isBone&&i.name&&e.set(i.name,r)});const t=A.requiredBones??[],a=t.filter(i=>!e.has(i)),s=A.rigRequirementHint?` (${A.rigRequirementHint})`:"";if(t.length>0&&e.size===0)throw new Error(`Asset preview shot set '${A.name}' requires a rigged model${s}, but this model has no skeleton at all. Required joints: ${t.join(", ")}.`);if(a.length>0)throw new Error(`Asset preview shot set '${A.name}' requires joints this model's skeleton does not have${s}. Missing joint(s): ${a.join(", ")}.`);return e}function wi(n,A,e){const t=e.filter(va);for(const a of e)if(_a(a)){const s=A.get(a.bone);if(!s)continue;a.axis==="x"?s.rotateX(a.radians):a.axis==="y"?s.rotateY(a.radians):s.rotateZ(a.radians)}else if(qa(a)){const s=A.get(a.bone);if(!s)continue;a.axis==="x"?s.translateX(a.meters):a.axis==="y"?s.translateY(a.meters):s.translateZ(a.meters)}t.length!==0&&n.traverse(a=>{const s=a,i=s.morphTargetDictionary,r=s.morphTargetInfluences;if(!(!i||!r))for(const{morph:o,influence:c}of t){const g=i[o];g!==void 0&&(r[g]=c)}})}function Pa(n){let A=null;return n.traverse(e=>{A||(A=zs(e.userData.forward))}),A??[0,0,1]}function Qe(n,A){const e=new QA;return e.rotation.y=Ga(A),e.add(n),e.updateMatrixWorld(!0),e}function FA(n,A){const e=new Nn;e.add(n),e.add(new Un(16777215,3489874,1.8*Os));const t=new UA(16777215,2.2);t.position.copy(A.center).addScaledVector(new D(1,1.5,1),A.radius*3),e.add(t);const a=new UA(12572671,.8);a.position.copy(A.center).addScaledVector(new D(-1,.5,-.7),A.radius*2),e.add(a);const s=new UA(16773596,.45);return s.position.copy(A.center).addScaledVector(new D(.3,-1,.4),A.radius*2),e.add(s),e}let aA=null;function ct(){const n=aA;aA=null,n&&(YA(n),n.dispose(),n.forceContextLoss())}function Di(){if(aA?.getContext().isContextLost()&&ct(),!aA){const n=RA(new yA({antialias:!0,alpha:!0,preserveDrawingBuffer:!0}));aA=n,n.domElement.addEventListener("webglcontextlost",()=>{aA===n&&ct()})}return aA}function Ja(n,A){let e=!1;if(n.traverse(r=>{SA(r,"gaussianSplat")&&(e=!0)}),e)throw new Error("Gaussian-splat capture requires the async project-asset capture path so Spark can sort each view.");const t=P(A.width),a=P(A.height),s=A.background??"neutral",i=DA(n);try{const r=Pa(n);A.pose&&Ri(i,A.pose);const o=Qe(i,r),c=Ue(r),g=Z(o,"perspective"),I=FA(o,g),l=Di();if(l.setPixelRatio(1),l.outputColorSpace=M,l.toneMapping=kA,l.toneMappingExposure=1,l.setClearColor(IA,s==="transparent"?0:1),KA(I,l),A.camera)return yi(l,I,PA(g,t/a,gt(A.camera),A.camera.distance),t,a,A.camera,c);const d=new Map;for(const b of wA)d.set(b,Ne(b,Z(o,b),t/a));const E=PA(g,t/a,gt({azimuthDegrees:30,elevationDegrees:-60}));return Oa(l,I,d,t,a,c,E)}finally{GA(i)}}function Fi(n,A,e){const t=ja(A,e.yawDegrees);if(!t)return n;const a=document.createElement("canvas");a.width=n.width,a.height=n.height;const s=a.getContext("2d");if(!s)return n;s.drawImage(n,0,0);const i=dt(t.text,n.width,n.height),r=t.edge==="left"?0:n.width-i.width;return iA(s,t.text,r,n.height-i.height,n.width,n.height),a}function Ue(n){const A=Ga(n);return{forward:[n[0],n[1],n[2]],yawDegrees:Math.round(gA.radToDeg(A))}}function Ri(n,A){if(!Number.isFinite(A.timeSeconds)||A.timeSeconds<0)throw new Error(`Asset preview pose time must be a finite number of seconds >= 0, got ${A.timeSeconds}.`);const e=n.animations,t=e.find(s=>s.name===A.clip);if(!t){const s=e.map(i=>`'${i.name}'`).join(", ");throw new Error(`Asset preview pose clip '${A.clip}' not found on the subject. `+(s?`Its clips are: ${s}.`:"The subject carries no animation clips at all — clips live on the model root (GLB animations, or a builder module’s `root.animations`)."))}const a=new Mn(n);a.clipAction(t).play(),a.update(A.timeSeconds),n.updateMatrixWorld(!0)}function gt(n){const A=gA.degToRad(n.azimuthDegrees),e=gA.degToRad(n.elevationDegrees);return new D(Math.sin(A)*Math.cos(e),Math.sin(e),Math.cos(A)*Math.cos(e)).normalize()}function yi(n,A,e,t,a,s,i){n.setSize(t,a,!1),n.render(A,e);const r={view:"perspective",base64:v(n.domElement),mimeType:"image/png"},o=document.createElement("canvas");o.width=t,o.height=a;const c=o.getContext("2d");if(!c)throw new Error("Unable to create the asset preview contact sheet.");c.drawImage(n.domElement,0,0,t,a);const g=`AZ ${Math.round(s.azimuthDegrees)} EL ${Math.round(s.elevationDegrees)}`+(s.distance===void 0?"":` D ${Math.round(s.distance)}`);return iA(c,g,0,0,t,a),{width:t,height:a,orientation:i,views:[r],contactSheet:{width:t,height:a,base64:v(o),mimeType:"image/png"}}}function ja(n,A){if(n==="perspective")return null;const e=gA.degToRad(A),t=WA(n).right.applyAxisAngle(new D(0,1,0),-e),a=[["X",new D(1,0,0)],["Y",new D(0,1,0)],["Z",new D(0,0,1)]];for(const[s,i]of a){const r=t.dot(i);if(r>.99)return{text:`+${s}>`,edge:"right"};if(r<-.99)return{text:`<+${s}`,edge:"left"}}return{text:`YAW ${A}`,edge:"left"}}function Oa(n,A,e,t,a,s,i){const r=[],o=i?[...wA,"below"]:[...wA],c=i?3:2,g=t*c,I=a*2,l=document.createElement("canvas");l.width=g,l.height=I;const d=l.getContext("2d");if(!d)throw new Error("Unable to create the asset preview contact sheet.");n.getClearAlpha()>0&&(d.fillStyle=`#${new K(IA).getHexString()}`,d.fillRect(0,0,g,I)),n.setSize(t,a,!1),o.forEach((b,u)=>{const C=b==="below"?i:e.get(b);n.render(A,C),r.push({view:b,base64:v(b==="below"?n.domElement:Fi(n.domElement,b,s)),mimeType:"image/png"});const f=u%c,p=Math.floor(u/c),h=f*t,B=p*a;d.drawImage(n.domElement,h,B,t,a);const Q=b==="perspective"?"3/4":b.toUpperCase();if(iA(d,Q,h,B,t,a),b==="below")return;const m=ja(b,s.yawDegrees);if(m){const w=dt(m.text,t,a),R=m.edge==="left"?h:h+t-w.width;iA(d,m.text,R,B+a-w.height,t,a)}});const E={width:g,height:I,base64:v(l),mimeType:"image/png"};return{width:t,height:a,orientation:s,views:r,contactSheet:E}}function eo(n,A,e){let t=!1;if(n.traverse(c=>{SA(c,"gaussianSplat")&&(t=!0)}),t)throw new Error("Gaussian-splat capture requires the async project-asset capture path so Spark can sort each view.");const a=P(e.width),s=P(e.height),i=e.background??"neutral",r=[];let o=null;try{A.traverse(I=>{I.visible&&Ta(I)&&(I.visible=!1,r.push(I))});const c=new Map;for(const I of wA){const l=Ne(I,Z(n,I),a/s);l.layers.enableAll(),l.layers.disable(xe),c.set(I,l)}const g=RA(new yA({antialias:!0,alpha:!0,preserveDrawingBuffer:!0}));return o=g,g.setPixelRatio(1),g.outputColorSpace=M,g.toneMapping=kA,g.toneMappingExposure=1,g.setClearColor(IA,i==="transparent"?0:1),Oa(g,A,c,a,s,Ue([0,0,1]))}finally{for(const c of r)c.visible=!0;o?.dispose(),o?.forceContextLoss()}}function ki(n,A,e){const t=n.pose===void 0?"":` under pose '${n.pose}'`,a=n.view==="bone-zoom"?`bone-zoom on ${n.bones.join(", ")} at yaw ${(n.yaw??0).toFixed(3)}`:`turntable at yaw ${n.yaw.toFixed(3)}`,s=n.view==="bone-zoom"?"Zoom anchors are read from the REST skeleton for every shot, so a pose that MOVES the anchor leaves the crop behind where the joint used to be: re-aim the shot (another joint or yaw), widen its spanFraction, or drop it.":"Check the shot yaw and the pose it renders under.";return{label:n.label,reason:"empty-frame",...n.view==="bone-zoom"?{bones:[...n.bones]}:{},...n.pose===void 0?{}:{pose:n.pose},message:`Asset preview shot set '${A}' shot ${JSON.stringify(n.label)} (${a}${t}) framed NONE of the subject's ${e} rendered faces: the image is background only and proves nothing about the asset. ${s}`}}function Si(n,A,e){const t=[],a=()=>{for(const s of t)GA(s);t.length=0};try{const s=DA(n);t.push(s);const i=rt(s,A),r=Pa(n),o=Qe(s,r),c=Z(o,"perspective"),g=FA(o,c),I={subject:o,scene:g,framing:c},l=new Map;for(const h of A.shots){if(h.pose===void 0||l.has(h.pose))continue;const B=A.poses[h.pose],Q=DA(n);t.push(Q);const m=rt(Q,A);wi(Q,m,B),Q.updateMatrixWorld(!0);const w=Qe(Q,r),R=Z(w,"perspective");l.set(h.pose,{subject:w,scene:FA(w,R),framing:R})}const d=h=>h===void 0?I:l.get(h),E=h=>new D().setFromMatrixPosition(i.get(h).matrixWorld),b=new Map;for(const h of new Set(A.shots.filter(B=>B.view==="turntable").map(B=>B.pose))){const B=d(h),Q=[...new Set(A.shots.filter(m=>m.view==="turntable"&&m.pose===h).map(m=>m.yaw))];b.set(h,Ha(B.subject,B.framing,Q,e))}const u=A.shots.map(h=>{const B=d(h.pose);if(h.view==="turntable")return{label:h.label,camera:b.get(h.pose).get(h.yaw),scene:B.scene,stage:B,basis:ue(h.yaw)};const Q=h.bones.find(w=>!i.has(w));if(Q!==void 0)throw new Error(`Asset preview shot set '${A.name}' shot ${JSON.stringify(h.label)} zooms on a joint this model's skeleton does not have: ${Q}. List it in the definition's requiredBones or fix the rig.`);const m=ue(h.yaw??0);return{label:h.label,camera:mi(h.bones.map(E),m,c.radius,h.spanFraction,e),scene:B.scene,stage:B,basis:m}}),C=[],f=new Map,p=new Map;u.forEach(({stage:h},B)=>{const Q=p.get(h);Q?Q.push(B):p.set(h,[B])});for(const[h,B]of p){const{framed:Q,total:m}=Ei(h.subject,B.map(w=>{const R=u[w];return{basis:R.basis,window:ai(R.camera,R.basis)}}));B.forEach((w,R)=>{if(Q[R]!==0)return;const k=ki(A.shots[w],A.name,m);f.set(w,k),C.push(k)})}return{shots:u.map(({label:h,camera:B,scene:Q},m)=>{const w=f.get(m);return{label:h,camera:B,scene:Q,...w?{warning:w}:{}}}),warnings:C,dispose:a}}catch(s){throw a(),s}}function Ka(n,A,e){const t=P(e.width),a=P(e.height),s=e.background??"neutral",i=Si(n,A,t/a);let r=null;try{const o=RA(new yA({antialias:!0,alpha:!0,preserveDrawingBuffer:!0}));r=o,o.setPixelRatio(1),o.outputColorSpace=M,o.toneMapping=kA,o.toneMappingExposure=1,o.setClearColor(IA,s==="transparent"?0:1),o.setSize(t,a,!1);for(const C of new Set(i.shots.map(f=>f.scene)))KA(C,o);const c=[],g=2,I=Math.ceil(i.shots.length/g),l=t*g,d=a*I,E=document.createElement("canvas");E.width=l,E.height=d;const b=E.getContext("2d");if(!b)throw new Error("Unable to create the asset preview contact sheet.");i.shots.forEach(({label:C,camera:f,scene:p,warning:h},B)=>{o.render(p,f),c.push({label:C,base64:v(o.domElement),mimeType:"image/png"});const Q=B%g,m=Math.floor(B/g),w=Q*t,R=m*a;b.drawImage(o.domElement,w,R,t,a),iA(b,h?`${C.toUpperCase()} - EMPTY`:C.toUpperCase(),w,R,t,a,h?"warning":"normal")});const u={width:l,height:d,base64:v(E),mimeType:"image/png"};return{width:t,height:a,shots:c,warnings:i.warnings,contactSheet:u}}finally{r&&YA(r),r?.dispose(),r?.forceContextLoss(),i.dispose()}}function xi(n){const A=n.replace(/^\/?public(\/|$)/,"/");if(!A.startsWith("/")||A.startsWith("//")||A.includes("\\")||A.includes("?")||A.includes("#"))throw new Error("Model asset paths must be the served web path (project-root absolute, with public/ stripped): e.g. /models/generated/hero.glb");let e;try{e=decodeURIComponent(A)}catch{throw new Error("Asset Editor model path contains invalid URL encoding.")}if(e.split("/").some(s=>s==="."||s===".."))throw new Error("Asset Editor model paths cannot traverse outside the project root.");const t=globalThis.location.origin,a=new URL(A,t);if(a.origin!==t||!a.pathname.toLowerCase().match(/\.(?:glb|gltf|spz)$/))throw new Error("Asset Editor loads bounded, same-origin project .glb, .gltf, or .spz files only.");return a}async function Ya(n,A,e=nA){const t=await fetch(n,{signal:A});if(!t.ok)throw new Error(`Unable to load project model (${t.status} ${t.statusText}).`);const a=Number(t.headers.get("content-length"));if(Number.isFinite(a)&&a>e)throw new Error(`Asset Editor project models must be ${nA/1024/1024} MiB or less.`);if(!t.body){const g=await t.arrayBuffer();if(g.byteLength>e)throw new Error(`Asset Editor project models must be ${nA/1024/1024} MiB or less.`);return g}const s=t.body.getReader(),i=[];let r=0;try{for(;;){const{done:g,value:I}=await s.read();if(g)break;if(r+=I.byteLength,r>e)throw await s.cancel(),new Error(`Asset Editor project models must be ${nA/1024/1024} MiB or less.`);i.push(I)}}finally{s.releaseLock()}const o=new Uint8Array(r);let c=0;for(const g of i)o.set(g,c),c+=g.byteLength;return o.buffer}function It(n,A,e){return new Promise((t,a)=>{let s=!1;const i=o=>s?!1:(s=!0,e.removeEventListener("abort",r),o(),!0),r=()=>i(()=>a(e.reason));if(e.addEventListener("abort",r,{once:!0}),e.aborted){r();return}xA.parse(n,new URL(".",A).href,o=>{o.scene.animations=[...o.animations],i(()=>t(o.scene))||lA(o.scene)},o=>i(()=>a(o)))})}function Gi(n,A){if(n.includes("\\")||n.includes("?")||n.includes("#"))throw new Error("Asset Editor .gltf dependencies must be plain same-origin project paths.");const e=new URL(n,A);if(e.origin!==A.origin)throw new Error("Asset Editor .gltf dependencies must stay on the project origin.");return e}function Ti(n,A){if(typeof n.mimeType=="string")return n.mimeType;const e=A.pathname.split(".").pop().toLowerCase();return e==="png"?"image/png":e==="jpg"||e==="jpeg"?"image/jpeg":e==="webp"?"image/webp":"application/octet-stream"}async function Li(n,A,e){let t;try{t=JSON.parse(new TextDecoder().decode(n))}catch{throw new Error("Asset Editor could not parse the project .gltf JSON document.")}const a=[...Array.isArray(t.buffers)?t.buffers:[],...Array.isArray(t.images)?t.images:[]];let s=n.byteLength;for(const i of a){if(typeof i.uri!="string"||i.uri.startsWith("data:"))continue;const r=Gi(i.uri,A),o=await Ya(r,e,nA-s);s+=o.byteLength;const c=new Uint8Array(o);let g="";for(let I=0;I<c.length;I+=32768)g+=String.fromCharCode(...c.subarray(I,I+32768));i.uri=`data:${Ti(i,r)};base64,${btoa(g)}`}return JSON.stringify(t)}function Wa(n,A){let e;try{const t=atob(n);e=new Uint8Array(t.length);for(let a=0;a<t.length;a++)e[a]=t.charCodeAt(a)}catch{throw new Error(`${A} is not valid base64.`)}if(e.byteLength===0||e.byteLength>nA)throw new Error(`${A} must be non-empty and at most ${nA/1024/1024} MiB.`);return new Promise((t,a)=>{xA.parse(e.buffer,"",s=>{s.scene.animations=[...s.animations],t(s.scene)},s=>a(s instanceof Error?s:new Error(String(s))))})}async function to(n,A){const e=await Wa(n,"Asset preview GLB bytes");try{return Ja(e,A)}finally{lA(e)}}async function ao(n,A,e){const t=await Wa(n,"Asset preview GLB bytes");try{return Ka(t,A,e)}finally{lA(t)}}async function Mi(n,A){const e=xi(n),t=new AbortController,a=()=>t.abort(A?.reason);A?.aborted?a():A?.addEventListener("abort",a,{once:!0});const s=globalThis.setTimeout(()=>t.abort(new Error("Asset Editor project model load timed out after 25 seconds.")),ri);try{const i=await Ya(e,t.signal);if(t.signal.throwIfAborted(),e.pathname.toLowerCase().endsWith(".spz"))return{root:await Js(n,new Uint8Array(i)),sourceBytes:null};if(e.pathname.toLowerCase().endsWith(".glb")){const o=new Uint8Array(i.slice(0));return{root:await It(i,e,t.signal),sourceBytes:o}}const r=await Li(i,e,t.signal);return{root:await It(r,e,t.signal),sourceBytes:null}}finally{globalThis.clearTimeout(s),A?.removeEventListener("abort",a)}}async function _e(n){return(await Mi(n)).root}function lA(n){SA(n,"gaussianSplat")&&n.dispose(),GA(n),n.traverse(A=>{const e=A;e.isInstancedMesh&&e.morphTexture?.dispose();const t=A;if(t.geometry?.dispose(),!t.material)return;const a=Array.isArray(t.material)?t.material:[t.material];for(const s of a){for(const i of Object.values(s))i instanceof Ie&&i.dispose();s.dispose()}})}async function no(n,A){const e=await _e(n);try{return SA(e,"gaussianSplat")?await Ni(e,A):Ja(e,A)}finally{lA(e)}}async function so(n,A,e){const t=await _e(n);try{return Qi(t,A,e)}finally{lA(t)}}async function Ni(n,A){const e=P(A.width),t=P(A.height),a=A.background??"neutral",s=Z(n,"perspective"),i=FA(n,s),r=RA(new yA({antialias:!1,alpha:!0,preserveDrawingBuffer:!0}));let o=null;try{const c=await lt(()=>import("./spark.module-Cc-ZVx5e.js"),__vite__mapDeps([0,1,2,3]));o=new c.SparkRenderer({renderer:r,autoUpdate:!1,enableLod:!1}),i.add(o),r.setPixelRatio(1),r.outputColorSpace=M,r.toneMapping=kA,r.toneMappingExposure=1,r.setClearColor(IA,a==="transparent"?0:1),r.setSize(e,t,!1),KA(i,r);const g=[],I=document.createElement("canvas");I.width=e*2,I.height=t*2;const l=I.getContext("2d");if(!l)throw new Error("Unable to create the asset preview contact sheet.");for(const[d,E]of wA.entries()){const b=Ne(E,Z(n,E),e/t);await o.update({scene:i,camera:b}),r.render(i,b),g.push({view:E,base64:v(r.domElement),mimeType:"image/png"});const u=d%2*e,C=Math.floor(d/2)*t;l.drawImage(r.domElement,u,C,e,t),iA(l,E==="perspective"?"3/4":E.toUpperCase(),u,C,e,t)}return{width:e,height:t,orientation:Ue([0,0,1]),views:g,contactSheet:{width:e*2,height:t*2,base64:v(I),mimeType:"image/png"}}}finally{o?.removeFromParent(),n.removeFromParent(),o?.dispose(),YA(r),r.dispose(),r.forceContextLoss()}}async function io(n,A,e){const t=await _e(n);try{return Ka(t,A,e)}finally{lA(t)}}export{Ji as A,so as B,ji as C,Qi as D,eo as E,to as F,no as G,Ja as H,xe as I,Xi as J,zi as K,Hi as L,Ta as M,Ao as N,ot as O,Mi as P,$i as Q,Ps as R,Os as S,KA as a,xA as b,_e as c,lA as d,P as e,Ki as f,Pi as g,SA as h,v as i,DA as j,Ga as k,Js as l,Yi as m,Z as n,Wi as o,Wa as p,Vi as q,Pa as r,Ye as s,GA as t,Oi as u,Zi as v,zs as w,ao as x,io as y,Ka as z};
|
|
Binary file
|