@woosh/meep-engine 3.39.0 → 3.40.0
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/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +17 -4
- package/src/engine/asset/loaders/image/avif/threaded_image_encoder.js +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +4 -0
- package/src/engine/graphics/ecs/water/Water.d.ts +14 -17
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +100 -110
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +36 -38
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.d.ts +6 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.js +10 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts +3 -3
- package/src/engine/graphics/ecs/water/WaterWaves.js +46 -46
- package/src/engine/graphics/texture/sampler/sampler2d_to_avif.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_to_avif.js +8 -5
- package/src/engine/graphics3/WaterSystem.d.ts +21 -74
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +174 -367
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/format/image/avif/api/convert_to_rgba.d.ts +2 -2
- package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -1
- package/src/format/image/avif/api/convert_to_rgba.js +10 -9
- package/src/format/image/avif/api/decode_avif.d.ts +2 -2
- package/src/format/image/avif/api/decode_avif.d.ts.map +1 -1
- package/src/format/image/avif/api/decode_avif.js +1 -1
- package/src/shade/playground/ssr_reprojection/README.md +111 -103
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +68 -68
- package/src/shade/playground/ssr_reprojection/index.html +80 -79
- package/src/shade/playground/ssr_reprojection/main.js +256 -247
- package/src/shade/playground/ssr_variance/capture.js +96 -96
- package/src/shade/playground/ssr_variance/reference.js +78 -78
- package/src/shade/playground/vsm/README.md +96 -0
- package/src/shade/playground/vsm/VSMDebugOverlay.d.ts +49 -0
- package/src/shade/playground/vsm/VSMDebugOverlay.d.ts.map +1 -0
- package/src/shade/playground/vsm/VSMDebugOverlay.js +351 -0
- package/src/shade/playground/vsm/clipmap_panel.d.ts +8 -0
- package/src/shade/playground/vsm/clipmap_panel.d.ts.map +1 -0
- package/src/shade/playground/vsm/clipmap_panel.js +138 -0
- package/src/shade/playground/vsm/index.html +170 -0
- package/src/shade/playground/vsm/main.d.ts +2 -0
- package/src/shade/playground/vsm/main.d.ts.map +1 -0
- package/src/shade/playground/vsm/main.js +389 -0
- package/src/shade/playground/vsm/scenes.d.ts +52 -0
- package/src/shade/playground/vsm/scenes.d.ts.map +1 -0
- package/src/shade/playground/vsm/scenes.js +320 -0
- package/src/shade/playground/vsm/verify_vsm.d.ts +38 -0
- package/src/shade/playground/vsm/verify_vsm.d.ts.map +1 -0
- package/src/shade/playground/vsm/verify_vsm.js +305 -0
- package/src/shade/playground/water_refraction/README.md +57 -9
- package/src/shade/playground/water_refraction/main.js +12 -3
- package/src/shade/playground/water_refraction/world.d.ts +1 -0
- package/src/shade/playground/water_refraction/world.d.ts.map +1 -1
- package/src/shade/playground/water_refraction/world.js +15 -5
- package/src/shade/renderer/Renderer.d.ts +19 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +72 -1
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +8 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +18 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +7 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +11 -0
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts +3 -1
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.js +10 -1
- package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_read_code.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_read_code.js +28 -0
- package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_write_code.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_write_code.js +31 -1
- package/src/shade/renderer/geometry/MeshletGeometry.d.ts +3 -0
- package/src/shade/renderer/geometry/MeshletGeometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/MeshletGeometry.js +1 -0
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +62 -4
- package/src/shade/renderer/light/environment/rgbe/parse_rgbe.d.ts +1 -1
- package/src/shade/renderer/light/environment/rgbe/parse_rgbe.js +2 -2
- package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.d.ts +2 -2
- package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.js +6 -14
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js +5 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/medium/ParticipatingMedium.d.ts +3 -0
- package/src/shade/renderer/medium/ParticipatingMedium.d.ts.map +1 -1
- package/src/shade/renderer/medium/ParticipatingMedium.js +7 -0
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.js +5 -35
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts +12 -4
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.js +36 -8
- package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.d.ts +3 -0
- package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.js +2 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.d.ts +8 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.js +40 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +150 -137
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.d.ts +3 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.js +44 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.d.ts +5 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.js +35 -0
- package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.d.ts +26 -0
- package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.js +42 -0
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +1 -0
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +113 -105
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts +2 -0
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +177 -167
- package/src/shade/renderer/rasterize/DEPTH_STENCIL_STATE_SHADOW.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/DEPTH_STENCIL_STATE_SHADOW.js +10 -0
- package/src/shade/renderer/rasterize/RasterizationJob.d.ts +1 -2
- package/src/shade/renderer/rasterize/RasterizationJob.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/RasterizationJob.js +1 -2
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts +5 -6
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.js +5 -6
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +2 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +1 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +11 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/build_lut_fog_parameters_jendersie_deon.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/build_lut_fog_parameters_jendersie_deon.js +4 -5
- package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.js +1 -5
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.d.ts +30 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.js +54 -0
- package/src/shade/renderer/shader/type/serde/read_gpu_typed_buffer.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/serde/read_gpu_typed_buffer.js +3 -2
- package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.d.ts +19 -0
- package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.js +27 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +1 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +4 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +54 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +502 -10
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts +3 -2
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/Shadowmap.js +3 -2
- package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts +8 -0
- package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.js +34 -3
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +3 -2
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +17 -2
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.js +137 -133
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.d.ts +15 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.js +14 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.d.ts +16 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.js +15 -0
- package/src/shade/renderer/shadow/vsm/PLAN.md +440 -0
- package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +43 -0
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts +42 -0
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.js +153 -0
- package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts +327 -0
- package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSMPageManager.js +1408 -0
- package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.d.ts +14 -0
- package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.js +13 -0
- package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.d.ts +63 -0
- package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.js +70 -0
- package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.d.ts +11 -0
- package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.js +10 -0
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts +54 -0
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.js +75 -0
- package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.d.ts +23 -0
- package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.js +85 -0
- package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.d.ts +16 -0
- package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.js +29 -0
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts +136 -25
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +282 -116
- package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.d.ts +39 -0
- package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.js +289 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.d.ts +18 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.js +65 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.d.ts +17 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.js +75 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts +14 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.js +45 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.d.ts +17 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.js +100 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.d.ts +15 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.js +47 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.d.ts +26 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.js +156 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.d.ts +13 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.js +65 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts +30 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.js +184 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts +23 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.js +109 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.d.ts +56 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.js +211 -0
- package/src/shade/renderer/texture/format/decode_typed_gpu_data.d.ts +1 -1
- package/src/shade/renderer/texture/format/decode_typed_gpu_data.d.ts.map +1 -1
- package/src/shade/renderer/texture/format/decode_typed_gpu_data.js +3 -13
- package/src/shade/renderer/texture/format/infer_format_from_parameters.d.ts.map +1 -1
- package/src/shade/renderer/texture/format/infer_format_from_parameters.js +2 -3
- package/src/shade/renderer/texture/texture_write_to_gpu.d.ts.map +1 -1
- package/src/shade/renderer/texture/texture_write_to_gpu.js +16 -16
- package/src/shade/renderer/texture/virtual/VTPhysicalCache.d.ts +4 -90
- package/src/shade/renderer/texture/virtual/VTPhysicalCache.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/VTPhysicalCache.js +6 -210
- package/src/shade/renderer/texture/virtual/VTPhysicalSlots.d.ts +119 -0
- package/src/shade/renderer/texture/virtual/VTPhysicalSlots.d.ts.map +1 -0
- package/src/shade/renderer/texture/virtual/VTPhysicalSlots.js +245 -0
- package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.d.ts +1 -1
- package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.js +3 -19
- package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.d.ts +13 -0
- package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.d.ts.map +1 -0
- package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.js +34 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +7 -2
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +49 -49
- package/src/shade/renderer/water/chunk_water_transport.js +3 -3
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +11 -25
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +64 -116
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts +1 -20
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.js +10 -42
- package/src/shade/renderer/water/medium/chunk_water_bodies.d.ts +3 -0
- package/src/shade/renderer/water/medium/chunk_water_bodies.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/chunk_water_bodies.js +3 -0
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +1 -5
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +32 -30
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +4 -0
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/shader_water_meshlets.js +69 -0
- package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -1
- package/src/shade/renderer/water/optics/chunk_water_inscatter.js +124 -123
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -1
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +75 -74
- package/src/shade/renderer/water/shader_water.d.ts +1 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +490 -406
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +12 -85
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +128 -408
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +6 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +23 -0
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +9 -0
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_tessellation.js +144 -0
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +3 -5
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/chunk_water_wave.js +40 -48
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +14 -0
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/graph_water_tessellation.js +34 -0
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +4 -0
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_tiles.js +123 -0
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +6 -0
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_wave_batch.js +85 -0
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +6 -0
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_wave_domain.js +83 -0
- package/src/shade/renderer/water/water_height_texture_from_sampler.d.ts.map +1 -1
- package/src/shade/renderer/water/water_height_texture_from_sampler.js +4 -3
- package/src/engine/graphics/ecs/water/WATER_SIZE.d.ts +0 -2
- package/src/engine/graphics/ecs/water/WATER_SIZE.d.ts.map +0 -1
- package/src/engine/graphics/ecs/water/WATER_SIZE.js +0 -1
- package/src/shade/renderer/light/GPUViewLightContext.d.ts +0 -22
- package/src/shade/renderer/light/GPUViewLightContext.d.ts.map +0 -1
- package/src/shade/renderer/light/GPUViewLightContext.js +0 -62
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts +0 -14
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.js +0 -20
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts +0 -27
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +0 -147
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts +0 -7
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.js +0 -10
- package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.d.ts +0 -2
- package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.js +0 -1
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts +0 -3
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.js +0 -8
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts +0 -27
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.js +0 -102
- package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.d.ts +0 -8
- package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.js +0 -34
- package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.d.ts +0 -10
- package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.js +0 -64
- package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts +0 -11
- package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/decode_tile_address.js +0 -26
- package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.d.ts +0 -2
- package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.js +0 -11
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts +0 -20
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.js +0 -184
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts +0 -25
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.js +0 -230
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts +0 -19
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.js +0 -127
- package/src/shade/renderer/texture/encode/ENCODE_NOTES_2026_09_02.md +0 -462
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts +0 -23
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts.map +0 -1
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts +0 -18
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts +0 -12
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.js +0 -27
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts +0 -14
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.js +0 -49
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts +0 -9
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.js +0 -47
- package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts +0 -10
- package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_surface_write.js +0 -51
- package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts +0 -12
- package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_wave_step.js +0 -54
- package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts +0 -13
- package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/water_surface_grid_indices.js +0 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
function t(t,e){const a=t.length;if(a!==e.length)return!1;for(let i=0;i<a;i++)if(t[i]!==e[i])return!1;return!0}function e(t){if("object"!=typeof t)return!1;if(null===t)return!1;const e=t.constructor;return e===Uint8Array||e===Uint8ClampedArray||e===Uint16Array||e===Uint32Array||e===Int8Array||e===Int16Array||e===Int32Array||e===Float16Array||e===Float32Array||e===Float64Array||e===BigUint64Array||e===BigInt64Array}function a(t){let e=t-1;return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e}function i(t,e,a,i,n){let s,r,o;for(o=0;o<n;o++)s=e+o,r=i+o,a[r]=t[s]}function n(t,e,a,i,n){for(let s=0;s<n;s++){const n=e+s,r=i+s,o=a[r];a[r]=t[n],t[n]=o}}const s=new Uint32Array(781250);function r(t,e){return t<e?e:t}function o(t,e){return t<e?t:e}function c(t,e,a,i,n,s){const c=a[i+0],h=a[i+1],d=a[i+2],_=a[i+3],l=a[i+4],f=a[i+5],u=n[s+0],b=n[s+1],g=n[s+2],m=n[s+3],y=n[s+4],p=n[s+5],w=o(c,u),v=o(h,b),A=o(d,g),x=r(_,m),k=r(l,y),z=r(f,p);t[e+0]=w,t[e+1]=v,t[e+2]=A,t[e+3]=x,t[e+4]=k,t[e+5]=z}function h(t,e,a,i,n,s,r,o){t[e]=a,t[e+1]=i,t[e+2]=n,t[e+3]=s,t[e+4]=r,t[e+5]=o}function d(t,e,a,i,n,s){const r=i-t,o=s-a;return(n-e)*(r+o)+o*r}function _(t){return t<0?0:t>1?1:t}function l(t){let e=t;return e=50331903&(e|e<<16),e=50393103&(e|e<<8),e=51130563&(e|e<<4),e=153391689&(e|e<<2),e}function f(t,e,a,i){const n=i[0],s=i[1],r=i[2],o=i[3]-n,c=i[4]-s,h=i[5]-r;return function(t,e,a){const i=1023*_(t),n=1023*_(e),s=1023*_(a);return function(t,e,a){return l(t)|l(e)<<1|l(a)<<2}(Math.round(i),Math.round(n),Math.round(s))}((t-n)*(0!==o?1/o:0),(e-s)*(0!==c?1/c:0),(a-r)*(0!==h?1/h:0))}function u(t,e,a){const i=t[a],n=t[a+1],s=t[a+2];h(t,e,i,n,s,i,n,s)}function b(t,e,a){const i=t[e],n=t[e+1],s=t[e+2];return f(.5*(i+t[e+3]),.5*(n+t[e+4]),.5*(s+t[e+5]),a)}s.pointer=0;const g=s;class m{__data_buffer;__data_float32;__data_uint32;__node_count_binary=0;__node_count_leaf=0;constructor(){this.data=new ArrayBuffer(320)}estimateByteSize(){return this.data.byteLength+248}getTotalBoxCount(){return this.__node_count_binary+this.__node_count_leaf}get binary_node_count(){return this.__node_count_binary}get leaf_node_count(){return this.__node_count_leaf}getLeafBlockAddress(){return 6*this.__node_count_binary}get float32(){return this.__data_float32}get uint32(){return this.__data_uint32}set data(t){this.__data_buffer=t,this.__data_float32=new Float32Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer)}get data(){return this.__data_buffer}getNodeAddress(t){const e=this.__node_count_binary,a=t-e;return a<0?6*t:6*e+7*a}initialize_structure(){const t=4*(6*this.__node_count_binary+7*this.__node_count_leaf);this.__data_buffer.byteLength<t&&(this.data=new ArrayBuffer(t))}setLeafCount(t){this.__node_count_leaf=t;const e=a(t);this.__node_count_binary=t<=1?e:e-1}getLeafAddress(t){return 7*t+6*this.__node_count_binary}setLeafData(t,e,a,i,n,s,r,o){const c=this.getLeafAddress(t);h(this.__data_float32,c,a,i,n,s,r,o),this.__data_uint32[c+6]=e}readBounds(t,e,a){i(this.__data_float32,t,e,a,6)}readLeafPayload(t){const e=this.getLeafBlockAddress()+7*t+6;return this.__data_uint32[e]}compute_total_surface_area(){let t=0;const e=new Float32Array(6);for(let a=0;a<this.getTotalBoxCount();a++){let i;i=a<this.__node_count_binary?6*a:7*(a-this.__node_count_binary)+this.getLeafBlockAddress(),this.readBounds(i,e,0),t+=d(e[0],e[1],e[2],e[3],e[4],e[5])}return t}sort_morton(t){const e=6*this.__node_count_binary;if(this.__node_count_leaf<2)return;const a=g.pointer;let i,n,s=a;g[s++]=0,g[s++]=this.__node_count_leaf-1;const r=this.__data_float32;for(;s>a;){s-=2;const a=g[s+1],o=g[s];i=o,n=a;const c=b(r,7*(o+a>>1)+e,t);for(;i<=n;){for(;b(r,7*i+e,t)<c;)i++;for(;b(r,7*n+e,t)>c;)n--;i<=n&&(i!==n&&this.__swap_leaves(i,n),i++,n--)}o<n&&(g[s++]=o,g[s++]=n),i<a&&(g[s++]=i,g[s++]=a)}}__swap_leaves(t,e){const a=this.getLeafBlockAddress(),i=7*t+a,s=7*e+a;n(this.__data_float32,i,this.__data_float32,s,7)}build(){const t=this.__node_count_binary,e=6*t;let a,n,s,r,o=Math.floor(Math.log(t)/Math.log(2));s=Math.pow(2,o),n=6*(s-1);const h=this.__node_count_leaf,d=this.__data_float32;for(a=0;a<s;a++){const t=a<<1,s=t+1,r=e+7*t;s<h?c(d,n,d,r,d,e+7*s):t<h?i(d,r,d,n,6):u(this.__data_float32,n,n-6),n+=6}for(o--;o>=0;o--)for(s=1<<o,r=s-1,a=0;a<s;a++){const t=6*(1+(r<<1));c(d,6*r,d,t,d,t+6),r++}}}function y(t,e,a){const i=t|e|a;return 3&i?1&i?1:2:4}function p(t,e,a,i,n){let s,r;const o=y(e,i,n);4===o?(s=new Uint32Array(t,e,n>>>2),r=new Uint32Array(a,i,n>>>2)):2===o?(s=new Uint16Array(t,e,n>>>1),r=new Uint16Array(a,i,n>>>1)):(s=new Uint8Array(t,e,n),r=new Uint8Array(a,i,n)),r.set(s)}function w(t){return t+(4-t%4)%4}const v={BigEndian:!1,LittleEndian:!0},A=new Float32Array(1),x=new Int32Array(A.buffer);class k{endianness=v.LittleEndian;position=0;get length(){throw new Error("Deprecated, use 'capacity' instead")}set length(t){throw new Error("Deprecated, use 'capacity' instead")}capacity=1024;data=new ArrayBuffer(1024);dataView=new DataView(this.data);__data_uint8=new Uint8Array(this.data);__growFactor=1.1;get raw_bytes(){return this.__data_uint8}fromArrayBuffer(t){this.data=t,this.dataView=new DataView(t),this.__data_uint8=new Uint8Array(t),this.capacity=t.byteLength,this.position=0}trim(){return this.setCapacity(this.position),this}skip(t){this.position+=t}setCapacity(t){if(t<this.position)throw new Error(`Attempting to set capacity(=${t}) below current position(=${this.position})`);if(this.capacity===t)return;const e=this.__data_uint8,a=new Uint8Array(t),i=Math.min(e.buffer.byteLength,a.buffer.byteLength);i>0&&p(e.buffer,0,a.buffer,0,i),this.data=a.buffer,this.__data_uint8=a,this.dataView=new DataView(this.data),this.capacity=t}ensureCapacity(t){const e=this.capacity;if(e>=t)return;const a=w(Math.ceil(Math.max(t,e*this.__growFactor,e+1024)));this.setCapacity(a)}readFloat16(){return function(t){let e=0;const a=(31744&t)>>10,i=1023&t;let n=1;return t>>15&&(n=-1),e=0!==a?31===a?0!==i?NaN:Infinity*n:n*Math.pow(2,a-15)*(1+i/1024):n*(i/1024*6103515625e-14),e}(this.readUint16())}readFloat32(){const t=this.dataView.getFloat32(this.position,this.endianness);return this.position+=4,t}readFloat64(){const t=this.dataView.getFloat64(this.position,this.endianness);return this.position+=8,t}readInt8(){const t=this.dataView.getInt8(this.position);return this.position+=1,t}readInt16(){const t=this.dataView.getInt16(this.position,this.endianness);return this.position+=2,t}readInt16LE(){const t=this.dataView.getInt16(this.position,v.LittleEndian);return this.position+=2,t}readInt16BE(){const t=this.dataView.getInt16(this.position,v.BigEndian);return this.position+=2,t}readInt32(){const t=this.dataView.getInt32(this.position,this.endianness);return this.position+=4,t}readInt32LE(){const t=this.dataView.getInt32(this.position,v.LittleEndian);return this.position+=4,t}readInt32BE(){const t=this.dataView.getInt32(this.position,v.BigEndian);return this.position+=4,t}readInt64(){const t=this.dataView.getBigInt64(this.position,this.endianness);return this.position+=8,t}readUint8(){const t=this.dataView.getUint8(this.position);return this.position+=1,t}readUint16(){const t=this.dataView.getUint16(this.position,this.endianness);return this.position+=2,t}readUint16LE(){const t=this.dataView.getUint16(this.position,v.LittleEndian);return this.position+=2,t}readUint16BE(){const t=this.dataView.getUint16(this.position,v.BigEndian);return this.position+=2,t}readUint24(){return this.endianness===v.BigEndian?this.readUint24BE():this.readUint24LE()}readUint24LE(){const t=this.dataView.getUint8(this.position),e=this.dataView.getUint8(this.position+1),a=this.dataView.getUint8(this.position+2);return this.position+=3,t|e<<8|a<<16}readUint24BE(){const t=this.dataView.getUint8(this.position),e=this.dataView.getUint8(this.position+1),a=this.dataView.getUint8(this.position+2);return this.position+=3,a|e<<8|t<<16}readUint32(){const t=this.dataView.getUint32(this.position,this.endianness);return this.position+=4,t}readUint32LE(){const t=this.dataView.getUint32(this.position,v.LittleEndian);return this.position+=4,t}readUint32BE(){const t=this.dataView.getUint32(this.position,v.BigEndian);return this.position+=4,t}readUint64(){const t=this.dataView.getBigUint64(this.position,this.endianness);return this.position+=8,t}readUint8Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint8()}readUint16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint16()}readUint32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint32()}readInt8Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt8()}readInt16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt16()}readInt32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt32()}readFloat32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat32()}readFloat64Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat64()}writeFloat32Array(t,e,a){for(let i=0;i<a;i++)this.writeFloat32(t[i+e])}writeFloat64Array(t,e,a){const i=this.position+8*a;this.ensureCapacity(i);const n=this.dataView,s=this.endianness;let r=this.position;for(let i=0;i<a;i++)n.setFloat64(r,t[e+i],s),r+=8;this.position=i}writeFloat16Array(t,e,a){for(let i=0;i<a;i++)this.writeFloat16(t[i+e])}readFloat16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat16()}writeFloat16(t){const e=function(t){let e=t;Number.isFinite(e)&&(e>65504||e<-65504)&&(e=e>0?65504:-65504),A[0]=e;const a=x[0];let i=a>>16&32768,n=a>>12&2047;const s=a>>23&255;return s<103?i:s>142?(i|=31744,255===s&&8388607&a&&(i|=512),i):s<113?(n|=2048,i|=(n>>114-s)+(n>>113-s&1),i):(i|=s-112<<10|n>>1,i+=1&n,i)}(t);this.writeUint16(e)}writeFloat32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setFloat32(this.position,t,this.endianness),this.position=e}writeFloat64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setFloat64(this.position,t,this.endianness),this.position=e}writeInt8(t){const e=this.position+1;this.ensureCapacity(e),this.dataView.setInt8(this.position,t),this.position=e}writeInt16(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,this.endianness),this.position=e}writeInt16BE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,v.BigEndian),this.position=e}writeInt16LE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,v.LittleEndian),this.position=e}writeInt32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,this.endianness),this.position=e}writeInt32BE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,v.BigEndian),this.position=e}writeInt32LE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,v.LittleEndian),this.position=e}writeInt64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setBigInt64(this.position,t,this.endianness),this.position=e}writeInt8Array(t,e,a){this.ensureCapacity(this.position+a);for(let i=0;i<a;i++)this.writeInt8(t[e+i])}writeInt16Array(t,e,a){this.ensureCapacity(this.position+2*a);for(let i=0;i<a;i++)this.writeInt16(t[e+i])}writeInt32Array(t,e,a){this.ensureCapacity(this.position+4*a);for(let i=0;i<a;i++)this.writeInt32(t[e+i])}writeUint8(t){const e=this.position+1;this.ensureCapacity(e),this.dataView.setUint8(this.position,t),this.position=e}writeUint8Array(t,e,a){for(let i=0;i<a;i++)this.writeUint8(t[e+i])}writeUint16(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,this.endianness),this.position=e}writeUint16BE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,v.BigEndian),this.position=e}writeUint16LE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,v.LittleEndian),this.position=e}writeUint16Array(t,e,a){for(let i=0;i<a;i++)this.writeUint16(t[e+i])}writeUint24(t){this.endianness===v.BigEndian?this.writeUint24BE(t):this.writeUint24LE(t)}writeUint24BE(t){const e=this.position+3;this.ensureCapacity(e);const a=255&t,i=t>>8&255,n=t>>16&255;this.dataView.setUint8(this.position,n),this.dataView.setUint8(this.position+1,i),this.dataView.setUint8(this.position+2,a),this.position=e}writeUint24LE(t){const e=this.position+3;this.ensureCapacity(e);const a=255&t,i=t>>8&255,n=t>>16&255;this.dataView.setUint8(this.position,a),this.dataView.setUint8(this.position+1,i),this.dataView.setUint8(this.position+2,n),this.position=e}writeUintVar(t){if((0|t)!==t||t<0)throw new RangeError(`value=[${t}] must be an integer in [0, 2147483647]`);let e=!0,a=t;for(;e||0!==a;){e=!1;let t=127&a;a>>=7,a>0&&(t|=128),this.writeUint8(t)}}readUintVar(){let t=!0,e=0,a=0;for(;t;){let i=this.readUint8();if(t=!!(128&i),e+=(127&i)*2**a,a+=7,t&&a>28)throw new Error("uintVar is too long, more than 5 bytes")}return e}writeUint32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,this.endianness),this.position=e}writeUint32BE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,v.BigEndian),this.position=e}writeUint32LE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,v.LittleEndian),this.position=e}writeUint64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setBigUint64(this.position,t,this.endianness),this.position=e}writeUint32Array(t,e,a){this.ensureCapacity(this.position+4*a);for(let i=0;i<a;i++)this.writeUint32(t[e+i])}writeBytes(t,e,a){const i=e+a,n=this.position,s=n+a;if(this.ensureCapacity(s),0===e&&t.length===a)this.__data_uint8.set(t,n);else if("function"==typeof t.subarray)this.__data_uint8.set(t.subarray(e,i),n);else for(let i=0;i<a;i++)this.__data_uint8[n+i]=t[e+i];this.position=s}readBytes(t,e,a){const n=this.position,s=n+a,r=this.__data_uint8;if(a<0||s>this.capacity)throw new Error(`Attempting to read ${a} bytes at position ${n}, only ${this.capacity-n} available`);a<128?i(r,n,t,e,a):t.set(r.subarray(n,s),e),this.position=s}writeUTF8String(t){if(null===t)return void this.writeUint32(4294967295);if(void 0===t)return void this.writeUint32(4294967294);let e=0;const a=t.length;if(a>=4294967294)throw new Error("String is too long");this.writeUint32(a);let i=this.position;const n=Math.max(32,a+(a>>1)+7);this.ensureCapacity(n+i);let s=this.__data_uint8,r=this.capacity;for(;e<a;){let n=t.charCodeAt(e++);if(n>=55296&&n<=56319){if(e<a){const a=t.charCodeAt(e);56320==(64512&a)&&(++e,n=((1023&n)<<10)+(1023&a)+65536)}n>=55296&&n<=56319&&(n=65533)}if(i+4>r&&(this.position=i,this.ensureCapacity(i+4),r=this.capacity,s=this.__data_uint8),4294967168&n){if(4294965248&n)if(4294901760&n){if(4292870144&n)continue;s[i++]=n>>18&7|240,s[i++]=n>>12&63|128,s[i++]=n>>6&63|128}else s[i++]=n>>12&15|224,s[i++]=n>>6&63|128;else s[i++]=n>>6&31|192;s[i++]=63&n|128}else s[i++]=n}this.position=i}readUTF8String(){const t=this.readUint32();if(4294967295===t)return null;if(4294967294===t)return;const e=this.__data_uint8;let a="",i=this.position,n=0;for(;i<this.capacity&&n<t;){const t=e[i++];let s;128&t?192==(224&t)?s=(31&t)<<6|63&e[i++]:224==(240&t)?s=(31&t)<<12|(63&e[i++])<<6|63&e[i++]:240==(248&t)&&(s=(7&t)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++],s>65535&&(s-=65536,a+=String.fromCharCode(s>>>10&1023|55296),n++,s=56320|1023&s)):s=t,n++,a+=String.fromCharCode(s)}return this.position=i,a}writeASCIIString(t){const e=t.length,a=this.position,i=a+e;this.ensureCapacity(i);for(let i=0;i<e;i++){const e=t.charCodeAt(i);if(e>127)throw new Error(`Character ${String.fromCharCode(e)} can't be represented by a US-ASCII byte.`);this.__data_uint8[a+i]=e}this.position=i}readASCIICharacters(t,e=!1){let a="";for(let i=0;i<t;i++){const t=this.readUint8();if(e&&0===t)break;a+=String.fromCharCode(t)}return a}toString(){return`BinaryBuffer[position=${this.position}, capacity=${this.capacity}, endianness=${this.endianness}]`}toHexString(){const t=this.__data_uint8,e=Math.min(t.length,this.position);let a="";for(let i=0;i<e;i++)a+=t[i].toString(16).padStart(2,"0").toUpperCase();return a}static fromEndianness(t){const e=new k;return e.endianness=t,e}static fromArrayBuffer(t){const e=new k;return e.fromArrayBuffer(t),e}static copyUTF8String(t,e){const a=t.readUTF8String();return e.writeUTF8String(a),a}static copyUintVar(t,e){const a=t.readUintVar();return e.writeUintVar(a),a}static copyUint8(t,e){const a=t.readUint8();return e.writeUint8(a),a}static copyUint16(t,e){const a=t.readUint16();return e.writeUint16(a),a}static copyUint32(t,e){const a=t.readUint32();return e.writeUint32(a),a}static copyFloat32(t,e){const a=t.readFloat32();return e.writeFloat32(a),a}static copyFloat64(t,e){const a=t.readFloat64();return e.writeFloat64(a),a}static copyBytes(t,e,a){const i=new Uint8Array(a);return t.readBytes(i,0,a),e.writeBytes(i,0,a),i}}k.prototype.isBinaryBuffer=!0;let z=v.LittleEndian,j=!1;function U(){if(j)return z;const t=new ArrayBuffer(2),e=new Uint8Array(t),a=new Uint16Array(t);return e[0]=19,z=19==(255&a[0])?v.LittleEndian:v.BigEndian,j=!0,z}const E={Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Int8:"int8",Int16:"int16",Int32:"int32",Int64:"int64",Float16:"float16",Float32:"float32",Float64:"float64"};function F(...t){return function(t,e,a){let i=a;for(let e=0;e<a;e+=1)i=(i<<5)-i+(t[e]>>>0);return i>>>0}(t,0,t.length)}function I(t,e,a){const i=e|a;return 3&i?1&i?function(t,e,a){let i=a,n=0;const s=3&a;for(;n<0+s;n++)i=(i<<5)-i+t[n];for(;n<a;n+=4)i=(i<<5)-i+(t[n]|t[n+1]<<8|t[n+2]<<16|t[n+3]<<24);return i}(new Uint8Array(t,e,a),0,a):function(t,e,a){let i=a,n=0;for(1&a&&(i=(i<<5)-i+t[n++]);n<a;n+=2)i=(i<<5)-i+(t[n]<<16|t[n+1]);return i}(new Uint16Array(t,e,a>>>1),0,a>>>1):function(t,e,a){let i=a;for(let e=0;e<a;++e)i=(i<<5)-i+t[e];return i}(new Uint32Array(t,e,a>>>2),0,a>>>2)}function C(e,a,i,n,s){if(e===i&&a===n)return!0;const r=y(a,n,s);let o,c;return 4===r?(o=new Uint32Array(e,a,s>>>2),c=new Uint32Array(i,n,s>>>2)):2===r?(o=new Uint16Array(e,a,s>>>1),c=new Uint16Array(i,n,s>>>1)):(o=new Uint8Array(e,a,s),c=new Uint8Array(i,n,s)),t(o,c)}function B(t,e=!1){return e&&crossOriginIsolated?new SharedArrayBuffer(t):new ArrayBuffer(t)}class M{next=null;flags=0;generation=-1;constructor(t,e){this.handle=t,this.context=e}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}}M.prototype.isSignalHandler=!0;class S{handlers=new Map;#t=!1;flags=0;generation=0;get silent(){return this.getFlag(1)}set silent(t){this.writeFlag(1,t)}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}contains(t,e){const a=this.handlers.get(t);if(void 0===a)return!1;const i=function(t,e,a){let i=t;for(;;){if(i.handle===e&&i.context===a)return i;if(i=i.next,null===i)return null}}(a,t,e);return null!==i}mute(){this.setFlag(1)}unmute(){this.clearFlag(1)}hasHandlers(){return this.handlers.size>0}addOne(t,e){const a=new M(t,e);a.setFlag(1),this.#e(a)}seal(){return this.#t=!0,this}get isSealed(){return this.#t}add(t,e){const a=new M(t,e);this.#e(a)}#e(t){if(this.#t)throw new Error("Signal is sealed and will never dispatch; attaching a handler to it would leak");t.generation=this.generation;const e=t.handle,a=this.handlers.get(e);void 0===a||(t.next=a),this.handlers.set(e,t)}remove(t,e){const a=this.handlers.get(t);if(void 0===a)return!1;if(a.handle===t&&a.context===e)return null===a.next?this.handlers.delete(t):this.handlers.set(t,a.next),!0;let i=a,n=a.next;for(;null!==n;){if(n.handle===t&&n.context===e)return i.next=n.next,!0;i=n,n=n.next}return!1}removeAll(){this.handlers.clear()}#a(t){const e=this.handlers.get(t.handle);if(void 0===e)return!1;if(e===t)return null===e.next?this.handlers.delete(t.handle):this.handlers.set(t.handle,e.next),!0;let a=e,i=e.next;for(;null!==i;){const e=i.next;if(i===t)return a.next=e,!0;a=i,i=e}return!1}promise(){return new Promise((t,e)=>{this.addOne((...e)=>{t(e)})})}dispatch(...t){if(1&this.flags)return;this.generation++;const e=this.handlers;for(const a of e.values()){let e=a;do{const a=e.next;if(e.generation<this.generation){e.getFlag(1)&&this.#a(e);const a=e.handle;try{a.apply(e.context,t)}catch(t){}}e=a}while(null!==e)}}send0(){if(1&this.flags)return;this.generation++;const t=this.handlers;for(const e of t.values()){let t=e;do{const e=t.next;if(t.generation<this.generation){t.getFlag(1)&&this.#a(t);const e=t.handle;try{e.call(t.context)}catch(t){}}t=e}while(null!==t)}}send1(t){if(1&this.flags)return;this.generation++;const e=this.handlers;for(const a of e.values()){let e=a;do{const a=e.next;if(e.generation<this.generation){e.getFlag(1)&&this.#a(e);const a=e.handle;try{a.call(e.context,t)}catch(t){}}e=a}while(null!==e)}}send2(t,e){if(1&this.flags)return;this.generation++;const a=this.handlers;for(const i of a.values()){let a=i;do{const i=a.next;if(a.generation<this.generation){a.getFlag(1)&&this.#a(a);const i=a.handle;try{i.call(a.context,t,e)}catch(t){}}a=i}while(null!==a)}}send3(t,e,a){if(1&this.flags)return;this.generation++;const i=this.handlers;for(const n of i.values()){let i=n;do{const n=i.next;if(i.generation<this.generation){i.getFlag(1)&&this.#a(i);const n=i.handle;try{n.call(i.context,t,e,a)}catch(t){}}i=n}while(null!==i)}}send4(t,e,a,i){if(1&this.flags)return;this.generation++;const n=this.handlers;for(const s of n.values()){let n=s;do{const s=n.next;if(n.generation<this.generation){n.getFlag(1)&&this.#a(n);const s=n.handle;try{s.call(n.context,t,e,a,i)}catch(t){}}n=s}while(null!==n)}}send5(t,e,a,i,n){if(1&this.flags)return;this.generation++;const s=this.handlers;for(const r of s.values()){let s=r;do{const r=s.next;if(s.generation<this.generation){s.getFlag(1)&&this.#a(s);const r=s.handle;try{r.call(s.context,t,e,a,i,n)}catch(n){}}s=r}while(null!==s)}}send6(t,e,a,i,n,s){if(1&this.flags)return;this.generation++;const r=this.handlers;for(const o of r.values()){let r=o;do{const o=r.next;if(r.generation<this.generation){r.getFlag(1)&&this.#a(r);const o=r.handle;try{o.call(r.context,t,e,a,i,n,s)}catch(n){}}r=o}while(null!==r)}}send8(t,e,a,i,n,s,r,o){if(1&this.flags)return;this.generation++;const c=this.handlers;for(const h of c.values()){let c=h;do{const h=c.next;if(c.generation<this.generation){c.getFlag(1)&&this.#a(c);const h=c.handle;try{h.call(c.context,t,e,a,i,n,s,r,o)}catch(n){}}c=h}while(null!==c)}}merge(t){const e=new S;function a(){e.dispatch(...arguments)}return this.add(a),t.add(a),e}}function N(t){return Math.max(Math.ceil(1.5*t),t+32)}S.prototype.isSignal=!0;class V{length=0;constructor(t,e=!1){this.spec=t,this.data=B(8*t.bytesPerRecord,e),this.capacity=8,this.dataView=new DataView(this.data),this.on={added:new S}}set array_buffer(t){this.data=t,this.dataView=new DataView(t),this.capacity=Math.floor(t.byteLength/this.spec.bytesPerRecord),this.length=0}hash(){const t=this.length,e=t*this.spec.bytesPerRecord,a=this.dataView;let i=t;const n=e>>2,s=r(Math.floor(n/31),1),o=Math.floor(n/s);for(let t=0;t<o;t++){const e=t*s<<2;i=(i<<5)-i+a.getUint32(e)}for(let t=n<<2;t<e;t++)i=(i<<5)-i+a.getUint8(t);return i}setCapacity(t){if(this.capacity===t)return;const e=this.data,a=this.spec.bytesPerRecord,i=t*a;try{const t=this.data.constructor;this.data=new t(i)}catch(t){throw new Error("failed to create a new array buffer of size: "+i)}if(this.data.byteLength!==i)throw new Error("Generated array was truncated unexpectedly from "+i+" to "+this.data.byteLength);const n=new Uint8Array(this.data),s=new Uint8Array(e),r=this.length*a;try{n.set(s.subarray(0,r),0)}catch(t){throw t instanceof RangeError?new Error("Failed to copy contents of original due to to size violation. OldSize: "+r+", NewSize: "+this.data.byteLength):t}this.capacity=t,this.dataView=new DataView(this.data,0)}trim(){this.setCapacity(this.length)}#i(t){this.capacity<t&&this.setCapacity(N(t))}resize(t){const e=N(t);(this.capacity<t||.5*this.capacity>e)&&this.setCapacity(e)}writeCellValue(t,e,a){const i=this.spec,n=t*i.bytesPerRecord;(0,i.cellWriters[e])(this.dataView,n,a)}readCellValue(t,e){const a=this.spec,i=t*a.bytesPerRecord;return(0,a.cellReaders[e])(this.dataView,i)}removeRows(t,e){const a=this.data,i=new Uint8Array(a),n=this.spec.bytesPerRecord,s=t*n,r=s+e*n,o=this.length*n;i.copyWithin(s,r,o),this.length-=e,this.resize(this.length)}insertRows(t,e){const a=this.length+e;this.#i(a);const i=this.data,n=this.spec.bytesPerRecord,s=(t+e)*n,r=a*n,o=t*n;new Uint8Array(i).copyWithin(s,o,r),this.length=a}createEmptyRow(){const t=this.length+1;this.#i(t);const e=this.length;return this.length=t,e}addRow(t){const e=this.createEmptyRow();return this.spec.writeRowMethod(this.dataView,this.spec.bytesPerRecord*e,t),this.on.added.send2(e,t),e}addRows(t,e){throw new Error("deprecated, use .addRow and .writeRow instead")}copyRow(t,e){if(t===e)return;const a=this.spec.bytesPerRecord,i=t*a,n=e*a,s=this.dataView;for(let t=0;t<a;t++){const e=s.getUint8(i+t);s.setUint8(n+t,e)}}readRow(t,e=[]){const a=this.spec;return a.readRowMethod(this.dataView,a.bytesPerRecord*t,e),e}writeRow(t,e){const a=this.spec;a.writeRowMethod(this.dataView,a.bytesPerRecord*t,e)}clearRow(t){const e=this.spec.bytesPerRecord,a=t*e,i=this.dataView;for(let t=0;t<e;t++)i.setUint8(a+t,0)}reverse_rows(){const t=this.spec.bytesPerRecord,e=new Uint8Array(t),a=this.data,n=new Uint8Array(a),s=this.length;if(s<=1)return;const r=s-1,o=r>>>1;for(let a=0;a<=o;a++){const s=a*t;i(n,s,e,0,t);const o=(r-a)*t;n.copyWithin(s,o,o+t),n.set(e,o)}}clear(){this.length=0,this.setCapacity(0)}toRowArray(){const t=[];for(let e=0;e<this.length;e++){const a=this.readRow(e);t.push(a)}return t}printToConsole(){this.toRowArray()}copy(t){if(!this.spec.equals(t.spec))throw new Error("Different table specs");const e=t.length;this.length=e,this.resize(e);const a=t.spec.bytesPerRecord*e;p(t.data,0,this.data,0,a)}equals(t){if(t===this)return!0;if(null==t)return!1;if(!this.spec.equals(t.spec))return!1;const e=this.length;if(e!==t.length)return!1;const a=e*this.spec.bytesPerRecord,i=this.dataView,n=t.dataView;for(let t=0;t<a;t++)if(i.getUint8(t)!==n.getUint8(t))return!1;return!0}}const R={[E.Uint8]:"getUint8",[E.Uint16]:"getUint16",[E.Uint32]:"getUint32",[E.Uint64]:"getBigUint64",[E.Int8]:"getInt8",[E.Int16]:"getInt16",[E.Int32]:"getInt32",[E.Int64]:"getBigInt64",[E.Float16]:"getFloat16",[E.Float32]:"getFloat32",[E.Float64]:"getFloat64"},P={[E.Uint8]:"setUint8",[E.Uint16]:"setUint16",[E.Uint32]:"setUint32",[E.Uint64]:"setBigUint64",[E.Int8]:"setInt8",[E.Int16]:"setInt16",[E.Int32]:"setInt32",[E.Int64]:"setBigInt64",[E.Float16]:"setFloat16",[E.Float32]:"setFloat32",[E.Float64]:"setFloat64"},D={[E.Uint8]:1,[E.Uint16]:2,[E.Uint32]:4,[E.Uint64]:8,[E.Int8]:1,[E.Int16]:2,[E.Int32]:4,[E.Int64]:8,[E.Float16]:2,[E.Float32]:4,[E.Float64]:8};function T(t){const e=t&-t;return 0===e?32:31-Math.clz32(e)}function L(t,e){return t.equals(e)}function q(t){return t.hash()}function O(t){if(t<=256)return Uint8Array;if(t<=65536)return Uint16Array;if(t<=4294967295)return Uint32Array;throw new Error(`Unsupported size ${t}`)}function X(t,e){return(t<<2)+t+1&e}class K{constructor(t,e,a){this.key=t,this.value=e,this.hash=a}}K.prototype.isHashMapEntry=!0;const W=4294967295,J=new Uint32Array(0);class Q{__bins=J;__entries=new Array(0);__entries_bound=0;__entries_start=0;__size=0;__bin_count=0;__entries_allocated_count=0;__bin_count_power_of_two=0;__entries_count_power_of_two=0;__bin_count_mask=0;__load_factor=.75;__version=0;constructor({keyHashFunction:t=q,keyEqualityFunction:e=L,capacity:i=16,loadFactor:n=.75}={}){this.keyHashFunction=t,this.keyEqualityFunction=e,this.__load_factor=n,this.#n(a(i))}get size(){return this.__size}getCurrentLoad(){return this.__size/this.__bin_count}#n(t){if(t<this.__size)throw new Error(`count must be at least equal to must of records in the map (=${this.__size}), instead was ${t}`);this.__entries_count_power_of_two=T(t),this.__bin_count_power_of_two=this.__entries_count_power_of_two+1,this.__bin_count=2**this.__bin_count_power_of_two,this.__bin_count_mask=this.__bin_count-1;const e=this.__entries_allocated_count;this.__entries_allocated_count=2**this.__entries_count_power_of_two;const a=O(this.__entries_allocated_count+2);this.__bins=new a(this.__bin_count);const n=new Array(this.__entries_allocated_count),s=this.__entries;this.__entries=n,i(s,0,n,0,o(e,this.__entries_allocated_count)),this.__size>0&&this.rebuild()}compute_bin_index(t){return(t>>>16^t)>>>0&this.__bin_count_mask}#s(t){const e=this.keyHashFunction(t);return e===W?0:e}#r(t,e,a){return t.hash===e&&(t.key===a||this.keyEqualityFunction(t.key,a))}#o(t,e,a){const i=this.__entries_bound;this.__entries_bound++;const n=this.__entries[i];return void 0!==n?(n.hash=a,n.key=t,n.value=e):this.__entries[i]=new K(t,e,a),i}#c(t){t.key=null,t.value=null,t.hash=W}#h(){this.__entries_bound===this.__entries_allocated_count&&(this.__size>=this.__entries_allocated_count*this.__load_factor?this.#d():this.rebuild())}set(t,e){this.#h();const a=this.#s(t);let i=this.compute_bin_index(a),n=-1;for(;;){const s=this.__bins[i];if(s>1){const i=this.__entries[s-2];if(this.#r(i,a,t))return void(i.value=e)}else{if(0===s){-1!==n&&(i=n);const s=this.#o(t,e,a)+2;this.__bins[i]=s;break}-1===n&&(n=i)}i=X(i,this.__bin_count_mask)}this.__size++,this.__version++}#_(t){const e=this.#s(t);let a=this.compute_bin_index(e);for(;;){const i=this.__bins[a];if(i>1){const a=this.__entries[i-2];if(this.#r(a,e,t))return a}else if(0===i)return null;a=X(a,this.__bin_count_mask)}}get(t){const e=this.#_(t);if(null!==e)return e.value}getOrCompute(t,e,a){const i=this.#_(t);if(null!==i)return i.value;const n=e.call(a,t);return this.set(t,n),n}getOrSet(t,e){const a=this.#_(t);return null!==a?a.value:(this.set(t,e),e)}#l(t){if(this.__entries_start!==t)return;let e=t+1,a=this.__entries_bound;const i=this.__entries;for(;e<a&&i[e].hash===W;)e++;this.__entries_start=e}delete(t){const e=this.#s(t);let a=this.compute_bin_index(e);const i=this.__bins,n=this.__entries;for(;;){const s=i[a];if(s>1){const r=s-2,o=n[r];if(this.#r(o,e,t))return this.#c(o),i[a]=1,this.__size--,this.__version++,this.#l(r),!0}else if(0===s)return!1;a=X(a,this.__bin_count_mask)}}verifyHashes(t,e){let a=!0;const i=this.__bin_count;for(let n=0;n<i;n++){const i=this.__bins[n];if(i<=1)continue;const s=this.__entries[i-2],r=this.#s(s.key);s.hash!==r&&(t.call(e,`Hash stored on the entry(=${s.hash}) is different from the computed key hash(=${r}).`,s.key,s.value),a=!1)}return a}#d(){this.#n(2*this.__entries_allocated_count)}rebuild(){const t=this.__entries_bound,e=this.__entries,a=this.__bins;a.fill(0);let i=0;for(let n=this.__entries_start;n<t;n++){const t=e[n].hash;if(t===W)continue;const s=i;if(i++,s!==n){const t=e[s];e[s]=e[n],e[n]=t}let r=this.compute_bin_index(t);for(;;){if(0===a[r]){a[r]=s+2;break}r=X(r,this.__bin_count_mask)}}this.__entries_start=0,this.__entries_bound=this.__size,this.__version++}#f(){let t=0;for(let e=this.__entries_start;e<this.__entries_bound;e++)this.__entries[e].hash!==W&&t++;return t}forEach(t,e){const a=this.__bin_count,i=this.__entries,n=this.__bins;this.__version;for(let s=0;s<a;s++){const a=n[s];if(a<=1)continue;const r=i[a-2];t.call(e,r.value,r.key,this)}}has(t){return null!==this.#_(t)}clear(){this.__size>0&&this.__version++;const t=this.__bins,e=this.__bin_count;for(let a=0;a<e;a++){const e=t[a];if(0!==e){if(1!==e){const t=e-2;this.#c(this.__entries[t])}t[a]=0}}this.__size=0,this.__entries_start=0,this.__entries_bound=0}*[Symbol.iterator](){const t=this.__bin_count,e=this.__bins,a=this.__entries;this.__version;for(let i=0;i<t;i++){const t=e[i];if(t<=1)continue;const n=a[t-2];yield[n.key,n.value]}}*entries(){for(const t of this)yield t}*values(){for(const[t,e]of this)yield e}*keys(){for(const[t,e]of this)yield t}}function G(){return 1}function Y(){return 0}class H{key=null;value=null;weight=0;next=null;previous=null;unlink(){const t=this.next,e=this.previous;null!==e&&(e.next=t),null!==t&&(t.previous=e),this.next=null,this.previous=null}toString(){return`CacheElement{ hasNext:${null!==this.next}, hasPrevious:${null!==this.previous}, weight:${this.weight}, key:${this.key}, value:${this.value} }`}}class ${#u=Number.POSITIVE_INFINITY;#b=0;__first=null;__last=null;constructor({maxWeight:t=Number.POSITIVE_INFINITY,keyWeigher:e=Y,valueWeigher:a=G,keyHashFunction:i=q,keyEqualityFunction:n=L,capacity:s}={}){this.#u=t,this.keyWeigher=e,this.valueWeigher=a,this.data=new Q({keyHashFunction:i,keyEqualityFunction:n,capacity:s}),this.onEvicted=new S,this.onRemoved=new S,this.onSet=new S}__promote(t){t!==this.__first&&(t===this.__last&&(this.__last=t.previous),t.unlink(),null!==this.__first&&(t.next=this.__first,this.__first.previous=t),this.__first=t)}size(){return this.data.size}setMaxWeight(t){throw new Error("setMaxWeight is deprecated, use .maxWeight property instead")}get weight(){return this.#b}set maxWeight(t){if("number"!=typeof t||t<0)throw new Error(`Weight must be a non-negative number, instead was '${t}'`);const e=this.#u;this.#u=t,e>t&&this.evictUntilWeight(this.#u)}get maxWeight(){return this.#u}recomputeWeight(){let t=0;for(let[e,a]of this.data){const i=this.computeElementWeight(e,a.value);a.weight=i,t+=i}this.#b=t,this.evictUntilWeight(this.#u)}updateElementWeight(t){const e=this.data.get(t);if(void 0===e)return!1;const a=e.weight,i=this.computeElementWeight(t,e.value);if(i===a)return!0;e.weight=i;const n=i-a;return this.#b+=n,this.#b>this.#u&&i<=this.#u&&this.evictUntilWeight(this.#u),!0}computeElementWeight(t,e){return this.keyWeigher(t)+this.valueWeigher(e)}findEvictionVictim(){return this.__last}evictOne(){const t=this.findEvictionVictim();return null!==t&&(this.remove(t.key),this.onEvicted.send2(t.key,t.value),!0)}evictUntilWeight(t){const e=Math.max(t,0);for(;this.#b>e;)this.evictOne()}put(t,e){let a=this.data.get(t);if(void 0===a){const i=this.computeElementWeight(t,e),n=this.#u-i;if(n<0)return;a=new H,a.key=t,a.value=e,a.next=this.__first,null!==this.__first&&(this.__first.previous=a),this.__first=a,null===this.__last&&(this.__last=a),a.weight=i,this.evictUntilWeight(n),this.data.set(t,a),this.#b+=i}else{if(e===a.value);else{this.#b-=a.weight;const i=this.computeElementWeight(t,e);this.#b+=i,a.weight=i,a.value=e}this.__promote(a),this.#b>this.#u&&a.weight<=this.#u&&this.evictUntilWeight(this.#u)}this.onSet.send2(t,e)}contains(t){return this.data.has(t)}get(t){const e=this.data.get(t);return void 0===e?null:(this.__promote(e),e.value)}getOrCompute(t,e,a){const i=this.get(t);if(null!==i)return i;const n=e.call(a,t);return this.set(t,n),n}__removeElement(t){t.value,t===this.__first&&(this.__first=t.next),t===this.__last&&(this.__last=t.previous),t.unlink();const e=t.key;this.data.delete(e),this.#b-=t.weight}remove(t){const e=this.data.get(t);return void 0!==e&&(this.__removeElement(e),this.onRemoved.send2(t,e.value),!0)}silentRemove(t){const e=this.data.get(t);return void 0!==e&&(this.__removeElement(e),!0)}clear(){const t=[];!function(t,e){for(let a=e.next();!a.done;a=e.next())t.push(a.value)}(t,this.data.keys());const e=t.length;for(let a=0;a<e;a++){const e=t[a];this.remove(e)}}drop(){this.data.clear(),this.__first=null,this.__last=null,this.#b=0}validate(t,e){return this.data.verifyHashes((a,i,n)=>{t.call(e,a,i,n.value)})}}function Z(t,e,a){const i=t.length;let n=i;for(let s=0;s<i;s++){const i=t[s];n=(n<<5)-n+e.call(a,i),n|=0}return n}function tt(t,e,a){if(null===t)return 0;if(void 0===t)return 1;let i=e??0,n=a??t.length-i,s=n;const r=i+n;for(let e=i;e<r;e++)s=(s<<5)-s+t.charCodeAt(e);return s>>>0}function et(t){const e=t.length;let a=0;for(let i=0;i<e;i++){let e=t.charCodeAt(i);for(;e>255;)a++,e>>=8;a++}return a}$.prototype.set=$.prototype.put,$.prototype.delete=$.prototype.remove,$.prototype.has=$.prototype.contains;class at{constructor({name:t,body:e,args:a=[]}){this.name=t,this.args=a,this.body=e,this.__hash=.1}updateHash(){this.__hash=F(tt(this.name),tt(this.body),Z(this.args,tt))}computeByteSize(){let t=et(this.body);void 0!==this.name&&(t+=et(this.name));const e=this.args.length;for(let a=0;a<e;a++)t+=et(this.args[a]);return t}equals(e){return this.name===e.name&&this.body===e.body&&t(this.args,e.args)}hash(){return.1===this.__hash&&this.updateHash(),this.__hash}}class it{cache=new $({maxWeight:10383360,keyWeigher:t=>t.computeByteSize(),keyHashFunction:q,keyEqualityFunction:L});compile({code:t,args:e=[],name:a}){const i=new at({body:t,args:e,name:a}),n=this.cache.get(i);if(null===n){const n=new Function(e.join(","),t);return void 0!==a&&Object.defineProperty(n,"name",{value:a}),this.cache.put(i,n),n}return n}}function nt(t,e){for(let a in t)if(t[a]===e)return a}function st(t,e,a=v.BigEndian){const i=P[t],n=a===v.BigEndian?"false":"true";return it.INSTANCE.compile({args:["dataView, byteOffset, value"],code:`dataView.${i}(byteOffset+${e}, value, ${n});`})}function rt(t,e,a=v.BigEndian){const i=R[t],n=a===v.BigEndian?"false":"true";return it.INSTANCE.compile({args:["dataView, byteOffset"],code:`return dataView.${i}(byteOffset+${e}, ${n});`})}it.INSTANCE=new it;class ot{constructor(t,e=v.LittleEndian){const a=t.length;this.types=t,this.endianType=e,this.columnOffsets=new Uint32Array(a);let i=0;for(let e=0;e<a;e++){const a=t[e];this.columnOffsets[e]=i,i+=D[a]}this.bytesPerRecord=i,this.readRowMethod=function(t,e=v.BigEndian){let a=0;const i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s],r=R[n],o=e===v.BigEndian?"false":"true";i.push(`result[${s}] = dataView.${r}(${a} + byteOffset, ${o});`),a+=D[n]}return it.INSTANCE.compile({args:["dataView, byteOffset, result"],code:i.join("\n")})}(t,e),this.writeRowMethod=function(t,e=v.BigEndian){let a=0;const i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s],r=P[n],o=e===v.BigEndian?"false":"true";i.push(`dataView.${r}(${a} + byteOffset, record[${s}], ${o});`),a+=D[n]}return it.INSTANCE.compile({args:["dataView, byteOffset, record"],code:i.join("\n")})}(t,e),this.cellReaders=new Array(a),this.cellWriters=new Array(a);for(let i=0;i<a;i++)this.cellReaders[i]=rt(t[i],this.columnOffsets[i],e),this.cellWriters[i]=st(t[i],this.columnOffsets[i],e)}getColumnCount(){return this.types.length}hash(){let t=this.endianType===v.BigEndian?1:0;return t+=Z(this.types,tt),t}equals(e){return this.endianType===e.endianType&&t(this.types,e.types)}toString(){return`TableSpec{types=[${this.types.join(", ")}], endian=${nt(v,this.endianType)}}`}static get(t,e=v.LittleEndian){const a=t.join(".")+":"+e,i=ct.get(a);if(null!==i)return i;const n=Object.freeze(new ot(t,e));return ct.put(a,n),n}}ot.prototype.isRowFirstTableSpec=!0;const ct=new $({keyHashFunction:tt});function ht(t,e,a){let i=Infinity,n=Infinity,s=Infinity,c=-Infinity,d=-Infinity,_=-Infinity;for(let t=0;t<a;t+=3){const a=e[t],h=e[t+1],l=e[t+2];i=o(a,i),n=o(h,n),s=o(l,s),c=r(a,c),d=r(h,d),_=r(l,_)}h(t,0,i,n,s,c,d,_)}function dt(t,e){return Math.ceil(t/e)*e}class _t{get tag(){return""}get align(){return 0}get size(){return 0}get aligned_size(){return dt(this.size,this.align)}get runtime_sized(){return!1}get requires_declaration(){return!1}toString(){return this.wgsl_declaration}get declaration_chunk(){throw new Error("Not Implemented")}get wgsl_ref(){return this.wgsl_declaration}get wgsl_declaration(){return this.tag}equals(t){return!1}hash(){return 0}}_t.prototype.isWebGPUType=!0;class lt extends _t{#g=0;#m=0;#y="";get tag(){return this.#y}get size(){return this.#g}get align(){return this.#m}from(t,e,a){this.#y=t,this.#g=a,this.#m=e}static from(t,e,a){const i=new lt;return i.from(t,e,a),Object.freeze(i)}get wgsl_declaration(){return this.tag}hash(){return tt(this.tag)}equals(t){return this===t||t instanceof lt&&this.tag===t.tag&&this.#g===t.size&&this.#m===t.align}}lt.prototype.isPrimitive=!0;class ft extends lt{static from(t,e,a){const i=new ft;return i.from(t,e,a),Object.freeze(i)}}ft.prototype.isAtomic=!0;const ut=lt.from("bool",4,4),bt=lt.from("i32",4,4),gt=lt.from("u32",4,4),mt=lt.from("f32",4,4),yt=lt.from("f16",2,2),pt=lt.from("vec2<i32>",8,8),wt=lt.from("vec2<u32>",8,8),vt=lt.from("vec2<f32>",8,8),At=lt.from("vec3<i32>",16,12),xt=lt.from("vec3<u32>",16,12),kt=lt.from("vec3<f32>",16,12),zt=lt.from("vec4<i32>",16,16),jt=lt.from("vec4<u32>",16,16),Ut=lt.from("vec4<f32>",16,16),Et=lt.from("mat2x2<f32>",8,16),Ft=lt.from("mat3x2<f32>",8,24),It=lt.from("mat4x2<f32>",8,32),Ct=lt.from("mat2x3<f32>",16,32),Bt=lt.from("mat3x3<f32>",16,48),Mt=lt.from("mat4x3<f32>",16,64),St=lt.from("mat2x4<f32>",16,32),Nt=lt.from("mat3x4<f32>",16,48),Vt=lt.from("mat4x4<f32>",16,64),Rt=lt.from("vec2<f16>",4,4),Pt=lt.from("vec3<f16>",8,6),Dt=lt.from("vec4<f16>",8,8),Tt=lt.from("mat2x2<f16>",4,8),Lt=lt.from("mat3x2<f16>",4,12),qt=lt.from("mat4x2<f16>",4,16),Ot=lt.from("mat2x3<f16>",8,16),Xt=lt.from("mat3x3<f16>",8,24),Kt=lt.from("mat4x3<f16>",8,32),Wt=lt.from("mat2x4<f16>",8,16),Jt=lt.from("mat3x4<f16>",8,24),Qt=lt.from("mat4x4<f16>",8,32),Gt=ft.from("atomic<u32>",4,4),Yt=ft.from("atomic<i32>",4,4),Ht={i32:bt,u32:gt,f32:mt,f16:yt,"atomic<u32>":Gt,"atomic<i32>":Yt,"vec2<i32>":pt,"vec2<u32>":wt,"vec2<f32>":vt,"vec2<f16>":Rt,"vec3<i32>":At,"vec3<u32>":xt,"vec3<f32>":kt,"vec3<f16>":Pt,"vec4<i32>":zt,"vec4<u32>":jt,"vec4<f32>":Ut,"vec4<f16>":Dt,"mat2x2<f32>":Et,"mat2x2<f16>":Tt,"mat3x2<f32>":Ft,"mat3x2<f16>":Lt,"mat4x2<f32>":It,"mat4x2<f16>":qt,"mat2x3<f32>":Ct,"mat2x3<f16>":Ot,"mat3x3<f32>":Bt,"mat3x3<f16>":Xt,"mat4x3<f32>":Mt,"mat4x3<f16>":Kt,"mat2x4<f32>":St,"mat2x4<f16>":Wt,"mat3x4<f32>":Nt,"mat3x4<f16>":Jt,"mat4x4<f32>":Vt,"mat4x4<f16>":Qt,vec2i:pt,vec3i:At,vec4i:zt,vec2u:wt,vec3u:xt,vec4u:jt,vec2f:vt,vec3f:kt,vec4f:Ut,mat2x2f:Et,mat3x2f:Ft,mat4x2f:It,mat2x3f:Ct,mat3x3f:Bt,mat4x3f:Mt,mat2x4f:St,mat3x4f:Nt,mat4x4f:Vt,vec2h:Rt,vec3h:Pt,vec4h:Dt,mat2x2h:Tt,mat3x2h:Lt,mat4x2h:qt,mat2x3h:Ot,mat3x3h:Xt,mat4x3h:Kt,mat2x4h:Wt,mat3x4h:Jt,mat4x4h:Qt};function $t(t,e){return-1===t.indexOf(e)&&(t.push(e),!0)}function Zt(t,e){const a=t.length;if(a!==e.length)return!1;let i=0;for(;i<a;i++){const a=t[i],n=e[i];if(a!==n){if(null==a||null==n)return!1;if("object"!=typeof a||"function"!=typeof a.equals)return!1;if(!a.equals(n))return!1}}return!0}class te{get isCodeChunk(){return!0}static empty=Object.freeze(te.from(""));#p="";get text(){return this.#p}#w=[];#v=[];addExtension(t){return $t(this.#v,t)}#A=[];addLanguageExtension(t){return $t(this.#A,t)}addDependency(t){if(this.#w.includes(t))return!1;if(t.findDependencyRecursive(this))throw new Error(`Circular dependency detected: ${this} -> ${t}`);return this.#x(t),!0}#x(t){this.#w.push(t)}static from(t,e=[]){const a=new te;a.#p=t;const i=e.length;for(let t=0;t<i;t++){const i=e[t];a.addDependency(i)}return a}allDirectDependenciesIncludedInSet(t){const e=this.#w,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(!t.has(a))return!1}return!0}findDependencyRecursive(t){const e=this.#w,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.equals(t)||a.findDependencyRecursive(t))return!0}return!1}collectDependencies(){const t=new Set,e=this.#w.slice();let a=e.length;for(;a>0;){a--;const i=e[a];if(t.has(i))continue;t.add(i);const n=i.#w,s=n.length;for(let t=0;t<s;t++)e[a++]=n[t]}return Array.from(t)}coalesceDependencies(){const t=new Set,e=this.collectDependencies(),a=[];let i=e.length;for(;i>0;){const n=i;for(let n=i-1;n>=0;n--){const s=e[n];s.allDirectDependenciesIncludedInSet(t)&&(a.push(s),t.add(s),e.splice(n,1),i--)}if(n===i)throw new Error(`${i} dependencies could not be satisfied`)}return a}compile(){const t=this.coalesceDependencies();t.push(this);const e={},a={},i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s];i.push(n.#p);const r=n.#v;for(let t=0;t<r.length;t++)e[r[t]]=!0;const o=n.#A;for(let t=0;t<o.length;t++)a[o[t]]=!0}const s=Object.keys(e).sort(),r=Object.keys(a).sort();return{text:i.join("\n"),extensions:s,language_extensions:r}}toString(){return this.#p}hash(){return tt(this.#p)^this.#w.length}copy(t){this.#p=t.#p,this.#w=t.#w.slice(),this.#v=t.#v.slice(),this.#A=t.#A.slice()}clone(){const t=new te;return t.copy(this),t}equals(t){return this===t||this.#p===t.#p&&Zt(this.#w,t.#w)}}class ee extends _t{count=-1;type=null;get align(){return this.type.align}get size(){const t=this.type,e=dt(t.size,t.align);return this.runtime_sized?e:this.count*e}equals(t){return this===t||t instanceof ee&&this.type.equals(t.type)&&this.count===t.count}hash(){return F(this.type.hash(),this.count)}get runtime_sized(){return this.count<0}static from(t,e=-1){const a=new ee;return a.type=t,a.count=e,a}get requires_declaration(){return this.type.requires_declaration}#k;get declaration_chunk(){return void 0===this.#k&&(this.type.requires_declaration?this.#k=this.type.declaration_chunk:this.#k=te.empty),this.#k}get wgsl_ref(){const t=this.type;return this.runtime_sized?`array< ${t.wgsl_ref} >`:`array< ${t.wgsl_ref}, ${this.count} >`}get wgsl_declaration(){const t=this.type.wgsl_ref;return this.runtime_sized?`array< ${t} >`:`array< ${t}, ${this.count} >`}}ee.prototype.isArray=!0,ee.f32=Object.freeze(ee.from(mt)),ee.u32=Object.freeze(ee.from(gt)),ee.vec4u=Object.freeze(ee.from(jt)),ee.vec4f=Object.freeze(ee.from(Ut));class ae{constructor(t,e){this.text=t,this.indentation=e}toString(){return`Line{ indentation=${this.indentation}, text="${this.text}" }`}}class ie{#z=[];#j=0;get indentation(){return this.#j}indentSpaces=4;get count(){return this.#z.length}containsSubstring(t){const e=this.#z,a=e.length;for(let i=0;i<a;i++)if(-1!==e[i].text.indexOf(t))return!0;return!1}indent(){return this.#j++,this}dedent(){return this.#j=Math.max(0,this.#j-1),this}add(t){const e=new ae(t,this.#j);return this.#z.push(e),this}extend(t){const e=this.#z,a=e.length-1;if(a<0)throw new Error("No lines to append to");e[a].text+=t}addLines(t){const e=t.#z,a=e.length;for(let t=0;t<a;t++){const a=e[t],i=new ae(a.text,a.indentation+this.#j);this.#z.push(i)}}clear(){this.#z=[],this.#j=0}build(){const t=[],e=this.#z,a=e.length,i=function(t,e){if(e<=0)return"";let a=" ";for(let t=1;t<e;t++)a+=" ";return a}(0,this.indentSpaces);for(let n=0;n<a;n++){const a=e[n];let s="";const r=a.indentation;for(let t=0;t<r;t++)s+=i;t.push(s+a.text)}return t.join("\n")}static fromText(t,e="\n"){const a=new ie,i=t.split(e),n=i.length;for(let t=0;t<n;t++){const e=i[t];a.add(e)}return a}toString(){return this.build()}}const ne=/array\s*<\s*(?<type>[^,]+)\s*(?:,\s*(?<count>[0-9]+))?\s*>/;function se(t){const e=t.match(ne);if(null!==e){const t=e.groups,a=t.type;let i;i=void 0===t.count?-1:parseInt(t.count);const n=se(a);return ee.from(n,i)}const a=Ht[t];if(void 0===a)throw new Error(`Unsupported type '${t}'`);return a}function re(t,e,a){let i=t;return i<e&&(i=e),i<a&&(i=a),i}function oe(t){let e=t>>>0;return e-=e>>>1&1431655765,e=(858993459&e)+(e>>>2&858993459),e=e+(e>>>4)&252645135,Math.imul(e,16843009)>>>24}const ce=4096;class he{__length=0;constructor(t=64){var e;this.__capacity=(e=t)+(32-e%32)%32,this.__data_uint32=new Uint32Array(this.__capacity>>5),this.__chunk_population=new Uint16Array(Math.ceil(this.__capacity/ce)),this.__shrinkFactor=.5}preventShrink(){this.setShrinkFactor(0)}setShrinkFactor(t){this.__shrinkFactor=t}setCapacity(t){if(this.__length>t)throw new Error(`Current length(=${this.__length}) is greater than requested size(=${t})`);this.__resize(t)}size(){return this.__length}capacity(){return this.__capacity}__resize(t){const e=Math.ceil(t/32),a=this.__data_uint32,i=new Uint32Array(e);a.length<e?i.set(a):i.set(a.subarray(0,e)),this.__data_uint32=i,this.__capacity=32*e;const n=Math.ceil(e/128),s=this.__chunk_population,r=new Uint16Array(n);s.length<n?r.set(s):r.set(s.subarray(0,n)),this.__chunk_population=r}__rebuildChunkPopulation(){const t=this.__data_uint32,e=this.__chunk_population;e.fill(0);const a=t.length;for(let i=0;i<a;i++){const a=t[i];0!==a&&(e[i>>7]+=oe(a))}}__updateLength(){const t=this.previousSetBit(this.__length)+1;t<this.__length&&this.__setLength(t)}__setLength(t){this.__length=t;const e=this.__capacity;if(t>e){const a=Math.ceil(re(t,e+128,1.3*e));this.__resize(a)}else t<e-128&&t<e*this.__shrinkFactor&&this.__resize(t)}previousSetBit(t){const e=o(t,this.__length-1);if(e<0)return-1;let a=e>>5;const i=31&e,n=this.__data_uint32;let s=31===i?n[a]:n[a]&(1<<i+1)-1;for(;;){if(0!==s)return 32*a+(31-Math.clz32(s>>>0));if(a--,a<0)return-1;s=n[a]}}nextSetBit(t){const e=this.__length;if(t>=e)return-1;const a=this.__data_uint32;let i,n,s=t>>5,r=31&t;if(0!==r){const t=~((1<<r)-1),e=a[s]&t;if(0!==e)return r=T(e),(s<<5)+r;s++}const o=e+31>>5;for(;s<o;s++)if(i=a[s],0!==i)return r=T(i),n=(s<<5)+r,n;return-1}nextClearBit(t){let e,a=t>>5,i=31&t;const n=this.__data_uint32;if(0!==i){e=n[a];const t=(e|(1<<i)-1)>>>0;if(4294967295!==t)return i=T(~t),i+32*a;a++}const s=this.__length,r=s+31>>5,c=this.__chunk_population;for(;a<r;){const t=a>>7;if(c[t]===ce){a=t+1<<7;continue}const s=o(t+1<<7,r);for(;a<s;a++)if(e=n[a],4294967295!==e)return i=T(~e),i+32*a}return Math.max(s,t)}set(t,e){const a=t>>5,i=1<<(31&t);if(e){const e=t+1;e>this.__length&&this.__setLength(e);const n=this.__data_uint32,s=n[a];0===(s&i)&&(n[a]=s|i,this.__chunk_population[t>>12]++)}else if(t<this.__length){const e=this.__data_uint32,n=e[a];0!==(n&i)&&(e[a]=n&~i,this.__chunk_population[t>>12]--),this.__updateLength()}}clear(t){this.set(t,!1)}setRange(t,e){for(let a=t;a<=e;a++)this.set(a,!0)}clearRange(t,e){for(let a=t;a<e;a++)this.set(a,!1)}get(t){if(t>=this.__length)return!1;const e=t>>5,a=31&t;return!!(this.__data_uint32[e]&1<<a)}getAndSet(t){const e=this.get(t);return e||this.set(t,!0),e}getAndClear(t){const e=this.get(t);return e&&this.set(t,!1),e}shift_right(t,e,a){for(let i=a;i>=e;i--){const e=this.get(i);this.set(i+t,e)}}shift_left(t,e,a){for(let i=e;i<=a;i++){const e=this.get(i);this.set(i-t,e)}}shift(t,e,a){t>0?this.shift_right(t,e,a):this.shift_right(-t,e,a)}reset(){const t=this.__length;t<=0||(t<=32?this.__data_uint32[0]=0:this.__data_uint32.fill(0,0,Math.ceil(t/32)),this.__chunk_population.fill(0,0,Math.ceil(t/ce)),this.__length=0)}cardinality(){const t=this.__length;if(0===t)return 0;const e=this.__chunk_population,a=t+4095>>12;let i=0;for(let t=0;t<a;t++)i+=e[t];return i}copy(t){const e=t.__length,a=e>>5,i=this.__length;i!==e&&(i<e?this.__resize(e):this.__data_uint32.fill(0,a),this.__length=e);for(let e=0;e<a;e++)this.__data_uint32[e]=t.__data_uint32[e];const n=a<<5,s=e-n;for(let e=0;e<s;e++){const a=n+e;this.set(a,t.get(a))}this.__rebuildChunkPopulation()}static fixedSize(t){const e=new he(t);return e.preventShrink(),e}}const de=16;function _e(t,e,a,i){let n=dt(i,e);for(;;){n=dt(t.nextClearBit(n),e);const i=n+a;let s=-1;for(let e=n;e<i;e++)if(t.get(e)){s=e;break}if(-1===s)return n;n=dt(s+1,e)}}class le{name="";parameters=[];getParameterInteger(t){const e=this.parameters;return parseInt(e[t])}static from(t,...e){const a=new le;return a.name=t,a.parameters=e,a}equals(e){return this.name===e.name&&t(this.parameters,e.parameters)}hash(){return tt(this.name)^this.parameters.length}generate(){let t=`@${this.name}`;const e=this.parameters,a=e.length;if(a>0){t+="(";for(let i=0;i<a;i++)t+=e[i],i!==a-1&&(t+=", ");t+=")"}return t}}class fe{attributes=[];setAttribute(t,...e){const a=le.from(t,...e);this.attributes.push(a)}getAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.name===t)return a}}get size(){const t=this.getAttribute("size");let e=this.type.size;return void 0!==t&&(e=t.getParameterInteger(0)),e}get align(){const t=this.getAttribute("align");let e=this.type.align;return void 0!==t&&(e=t.getParameterInteger(0)),e}offset=0;type;name;static from(t,e,...a){const i=new fe;return i.name=t,i.type=e,i.attributes=a,i}equals(t){return this.name===t.name&&this.offset===t.offset&&this.type.equals(t.type)&&Zt(this.attributes,t.attributes)}copy(t){return this.name=t.name,this.offset=t.offset,this.type=t.type,this.attributes=t.attributes.slice(),this}clone(){const t=new fe;return t.copy(this),t}hash(){return F(tt(this.name),this.offset,this.type.hash())}generate(){let t="";const e=this.attributes,a=e.length;for(let i=0;i<a;i++)t+=e[i].generate()+" ";return`${t}${this.name} : ${this.type.wgsl_ref}`}}fe.prototype.isWGSLStructField=!0;let ue=0;function be(){return"Struct_"+ue++}class ge extends _t{#y="";get tag(){return this.#y}set tag(t){this.#y=t}fields=[];#U=!1;#g=0;#m=0;get size(){return this.#g}get align(){return this.#m}copy(t){return this.#y=t.#y,this.#g=t.#g,this.#m=t.#m,this.#U=t.#U,this.#k=void 0,this.fields=t.fields.map(t=>t.clone()),this}clone(){const t=new ge;return t.copy(this),t.#y=be(),t}make(t){const e=new ie;e.add(`${this.wgsl_ref}(`),e.indent();const a=this.fields,i=a.length;for(let n=0;n<i;n++){const i=a[n].name,s=t[i];if(void 0===s)throw new Error(`Missing field '${i}'`);e.add(`${s},`)}return e.dedent(),e.add(")"),e.build()}pack(){if(this.fields.length<=1)return this;const t=[],e=[];for(const a of this.fields)a.type.runtime_sized?e.push(a):t.push(a);const a=function(t){const e=t.length,a=new Uint32Array(e);for(let t=0;t<e;t++)a[t]=t;a.sort((e,a)=>{const i=(de-t[e].size%de)%de,n=(de-t[a].size%de)%de;return i!==n?i-n:e-a});let i=0;for(let a=0;a<e;a++){const e=t[a];i+=dt(e.size,e.align)}const n=he.fixedSize(i);let s=0;const r=new Uint32Array(e);for(let i=0;i<e;i++){const e=a[i],o=t[e],c=_e(n,o.align,o.size,s);r[e]=c,n.setRange(c,c+o.size-1),c===s&&(s=n.nextClearBit(s+o.size))}const o=new Uint32Array(e);for(let t=0;t<e;t++)o[t]=t;o.sort((t,e)=>r[t]-r[e]);const c=new Array(e);for(let a=0;a<e;a++)c[a]=t[o[a]];return c}(t);return this.fields=a.concat(e),this.#U&&(this.#g,this.#E(),this.#g),this}equals(t){return t===this||t instanceof ge&&this.#y===t.#y&&Zt(this.fields,t.fields)}hash(){return F(tt(this.name),this.#g,this.#m,this.fields.length)}get requires_declaration(){return!0}get runtime_sized(){const t=this.fields;for(let e=0;e<t.length;e++)if(t[e].type.runtime_sized)return!0;return!1}static from(t,e=be()){const a=new ge;a.#y=e;for(const e in t){const i=t[e];let n;if("string"==typeof i)n=se(i);else{if(!0!==i.isWebGPUType)throw new Error(`Unsupported type declarator '${i}'`);n=i}a.#F(fe.from(e,n))}return a.#E(),a}static fromFields(...t){const e=new ge;e.#y=be();for(const a of t)e.#F(a);return e.#E(),e}has(t){return this.fields.some(e=>e.name===t)}get(t){const e=this.fields.find(e=>e.name===t);if(void 0===e)throw new Error(`Field '${t}' not found`);return e}#F(t){this.fields.push(t)}#E(){const t=this.fields,e=t.length;let a=1,i=0;for(let n=0;n<e;n++){const e=t[n],s=dt(i,e.align);a<e.align&&(a=e.align),e.offset=s,i=e.offset+e.size}this.#m=a,this.#g=dt(i,a),this.#k=void 0,this.#U=!0}get wgsl_ref(){return this.#y}get wgsl_declaration(){const t=new ie;t.add(`struct ${this.#y}{`),t.indent();for(let e=0;e<this.fields.length;e++){const a=this.fields[e];t.add(`${a.generate()},`)}return t.dedent(),t.add("}"),t.build()}#k;get declaration_chunk(){if(void 0===this.#k){const t=te.from(this.wgsl_declaration),e=this.fields,a=e.length;for(let i=0;i<a;i++){const a=e[i].type;a.requires_declaration&&t.addDependency(a.declaration_chunk)}this.#k=t}return this.#k}}function me(t,e){const a=new Float32Array(e);return t.readFloat32Array(a,0,e),a}function ye(t,e){const a=new Uint32Array(e);return t.readInt32Array(a,0,e),a}function pe(t,e){const a=new Uint32Array(e);return t.readUint32Array(a,0,e),a}function we(t,e){if(t.position=dt(t.position,e.align),e instanceof ee)return function(t,e){let a=e.count;const i=[],n=e.type,s=n.aligned_size,r=t.position;if(e.runtime_sized){const e=t.capacity-t.position;a=Math.floor(e/s)}for(let e=0;e<a;e++)t.position=r+e*s,i[e]=we(t,n);return t.position=r+a*s,i}(t,e);if(e instanceof ge)return function(t,e){const a=e.fields,i=t.position,n={};for(let e=0;e<a.length;e++){const s=a[e];t.position=i+s.offset,n[s.name]=we(t,s.type)}return n}(t,e);switch(e){case ut:return 0!==t.readUint32();case gt:case Gt:return t.readUint32();case bt:case Yt:return t.readInt32();case mt:return t.readFloat32();case wt:return pe(t,2);case xt:return pe(t,3);case jt:return pe(t,4);case pt:return ye(t,2);case At:return ye(t,3);case zt:return ye(t,4);case vt:return me(t,2);case kt:return me(t,3);case Ut:return me(t,4);case Vt:return me(t,16);default:throw new Error(`Unsupported type ${e}`)}}function ve(t,e,a){if(a instanceof ee)return function(t,e,a){const i=a.count,n=a.type.aligned_size,s=e.position;for(let r=0;r<i;r++)e.position=s+r*n,ve(t[r],e,a.type);e.position=s+i*n}(t,e,a);if(a instanceof ge)return function(t,e,a){const i=a.fields,n=e.position,s=i.length;for(let a=0;a<s;a++){const s=i[a];e.position=n+s.offset;const r=t[s.name];void 0!==r&&ve(r,e,s.type)}}(t,e,a);switch(a){case ut:return e.writeUint32(t?1:0);case gt:case Gt:return e.writeUint32(t);case bt:case Yt:return e.writeInt32(t);case mt:return e.writeFloat32(t);case pt:return e.writeInt32Array(t,0,2);case At:return e.writeInt32Array(t,0,3);case zt:return e.writeInt32Array(t,0,4);case wt:return e.writeUint32Array(t,0,2);case xt:return e.writeUint32Array(t,0,3);case jt:return e.writeUint32Array(t,0,4);case vt:return e.writeFloat32Array(t,0,2);case kt:return e.writeFloat32Array(t,0,3);case Ut:return e.writeFloat32Array(t,0,4);case Vt:return e.writeFloat32Array(t,0,16);case Bt:return e.writeFloat32Array(t,0,9);case Ft:case Ct:return e.writeFloat32Array(t,0,6);default:throw new Error(`Unsupported type ${a}`)}}ge.prototype.isStruct=!0,(new k).endianness=U();const Ae="index",xe="position",ke="normal",ze="tangent",je="uv0",Ue="uv1",Ee="color",Fe="joints",Ie="weights";var Ce=function(){var t,e=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("object"!=typeof WebAssembly)return{supported:!1};function a(t){if(!t)throw new Error("Assertion failed")}function i(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function n(e,a,n,s,r,o,c,h,d,_){var l=t.exports.sbrk,f=l(16*t.exports.meshopt_buildMeshletsBound(a.length,o,c)),u=l(4*a.length),b=l(a.length),g=l(a.byteLength),m=l(n.byteLength),y=new Uint8Array(t.exports.memory.buffer);y.set(i(a),g),y.set(i(n),m);for(var p=e(f,u,b,g,a.length,m,s,r,o,c,h,d,_),w=(y=new Uint8Array(t.exports.memory.buffer)).subarray(f,f+16*p),v=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),A=0;A<p;++A){var x=v[4*A+0],k=v[4*A+1],z=(s=v[4*A+2],v[4*A+3]);t.exports.meshopt_optimizeMeshlet(u+4*x,b+k,z,s)}var j=v[4*(p-1)+0],U=v[4*(p-1)+1],E=j+v[4*(p-1)+2],F=U+3*v[4*(p-1)+3],I={meshlets:v,vertices:new Uint32Array(y.buffer,u,E).slice(),triangles:new Uint8Array(y.buffer,b,3*F).slice(),meshletCount:p};return l(f-l(0)),I}function s(e){var a=new Float32Array(t.exports.memory.buffer,e,12);return{centerX:a[0],centerY:a[1],centerZ:a[2],radius:a[3],coneApexX:a[4],coneApexY:a[5],coneApexZ:a[6],coneAxisX:a[7],coneAxisY:a[8],coneAxisZ:a[9],coneCutoff:a[10]}}return{ready:WebAssembly.instantiate(function(){for(var t=new Uint8Array(18682),a=0;a<18682;++a){var i="b9H79Tebbbe95x9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gruuuuuuub9Gxuuuuuuuuuuuueu9Gxuuuuuuuuuuu99eu9GPuuuuuuuuuuuuu99b9Gouuuuuub9GluuuubiXCdilvorwDoqooqkbiibeilve9Weiiviebeoweuecj:Pdkr;Zeqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeY9TW79O9V9Wt9F9I919P29K9nW79O2Wt7S2W94bd39TW79O9V9Wt9F9I919P29K9nW79O2Wt79t9W9Ht9P9H2bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7bD39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bkE9TW79O9V9Wt9F9J9V9T9W91tW9t9W9OWVW9c9V919U9K7bxL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbml79IV9RbPDwebcekdHOq:m:ceCdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek;x8JDPue99eux99due99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:qjjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;01jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;01jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;01jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;01jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;01jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;01jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:qjjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;01jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:qjjjbhYamcuaLcK2alcjjjjd0Ecbyd;01jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;01jjbHjjjjbbgCBd:WwamcoBd;8waq:Zhhdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaEahNhhamcuaLcltalcFFFFd0Ecbyd;01jjbHjjjjbbg8PBd:0wamcrBd;8wcba8Pa8AaCaLz:djjjb8AJFFuuh8MJFFuuh8NJFFuuhydnalci6mbJFFuuhya8AhsaLhAJFFuuh8NJFFuuh8MinascwfIdbgEa8Ma8MaE9EEh8MasclfIdbgEa8Na8NaE9EEh8NasIdbgEayayaE9EEhyascKfhsaAcufgAmbkkah:rhEamaocetgscuaocu9kEcbyd;01jjbHjjjjbbgCBd:4wdndnaoal9nmbaihsalhAinaCasydbcetfcFFi87ebasclfhsaAcufgAmbxdkkaCcFeasz:qjjjb8AkaEJbbbZNh8JcuhIdnalci6mbcbhAJFFuuhEa8AhscuhIinascwfIdba8M:tghahNasIdbay:tghahNasclfIdba8N:tghahNMM:rghaEaIcuSahaE9DVgXEhEaAaIaXEhIascKfhsaLaAcefgA9hmbkkamczfcbcjwz:qjjjb8Aamcwf9cb83ibam9cb83iba8JaxNh8RJbbjZak:th8Lcbh8SJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8Ycbh8ZcbhPinJbbbbhEdna8STmbJbbjZa8S:Z:vhEkJbbbbhhdna8Ya8YNa8Wa8WNa8Xa8XNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8VaENh8Ka8UaENh8EaRaENh5aIhLdndndndndna8SaPVTmbamydwg80Tmea8YahNh8Fa8XahNhaa8WahNhgaeamydbcdtfh81cbh3JFFuuhEcvhQcuhLindnaza81a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgXcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaXcdtfydbgXceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaXcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaQ9kmba8AaKcK2fgXIdwa8K:tghahNaXIdba5:tghahNaXIdla8E:tghahNMM:ra8J:va8LNJbbjZMJ9VO:d86JbbjZaXIdCa8FNaXIdxagNaaaXIdzNMMakN:tghahJ9VO:d869DENghaEasaQ6ahaE9DVgXEhEaKaLaXEhLasaQaXEhQkaAclfhAavcufgvmbkka3cefg3a809hmbkkaLcu9hmekama8KUd:ODama8EUd:KDama5Ud:GDamcuBd:qDamcFFF;7rBdjDa8Pcba8AaYamc:GDfamc:qDfamcjDfz:ejjjbamyd:qDhLdndnaxJbbbb9ETmba8SaD6mbaLcuSmeceh3amIdjDa8R9EmixdkaLcu9hmekdna8STmbabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;41jjbH:bjjjbbazc98fhzxbkkcbh3a8Saq9pmbamydwaCaiaLcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna8ZTmbcbhAamczfhXinamczfaAcdtfaXydbgQBdbaXclfhXaAaYaQfRbbTfhAa8Zcufg8ZmbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh8ZinamcjDfasfcFFF;7rBdbasclfgscz9hmbka8Zcdth80dnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhQcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaQaXEhQaAclfhAavcufgvmbkaQcuSmba8AaQcK2fgAIdwa8M:tgEaENaAIdbay:tgEaENaAIdla8N:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaQBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfa80fhQcbhscbhAindnamc:GDfasfydbgXcuSmbaQaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa8Zfg8ZTmbJFFuuhhcuhKamczfhsa8ZhvcuhQina8AasydbgXcK2fgAIdwa8M:tgEaENaAIdbay:tgEaENaAIdla8N:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaQ6mbaAaQ9hmeaEah9DTmekaEhhaAhQaXhKkasclfhsavcufgvmbkaKcuSmbaKhLkdnamaiaLcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YkcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgQhAdnaQTmbdninasydbaLSmeasclfhsaAcufgATmdxbkkasaKaQcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaLcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaLfce86bba8Ya8FMh8Ya8Xa5Mh8Xa8Wa8EMh8Wa8Va8KMh8Va8UahMh8UaRaEMhRamydxh8Sxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtciVBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtciVBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark;yddvue99dninabaecitfgrydlgwcl6mednawciGgDci9hmbabaecitfhbcbhecehqindnaiabydbgDfRbbmbcbhqadaDcK2fgkIdwalIdw:tgxaxNakIdbalIdb:tgxaxNakIdlalIdl:tgxaxNMM:rgxaoIdb9DTmbaoaxUdbavaDBdbarydlhwkabcwfhbaecefgeawcd46mbkaqceGTmdarawciGBdlskdnabcbawcd4gwalaDcdtfIdbarIdb:tgxJbbbb9FEgkaw7aecefgwfgecitfydlabakawfgwcitfydlVci0mbaraDBdlkabawadaialavaoz:ejjjbax:laoIdb9Fmbkkkjlevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbabydbhqdnaxydbgkTmbaoaqcdtfhxakhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkabaqakfBdbabydxhxab9cb83dwababydlaxci2fBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk:zPrHue99eue99eue99eu8Jjjjjbc;W;Gb9Rgx8KjjjjbdndnalmbcbhmxekcbhPaxc:m;Gbfcbc;Kbz:qjjjb8Aaxcualci9UgscltascjjjjiGEcbyd;01jjbHjjjjbbgzBd:m9GaxceBd;S9GaxcuascK2gHcKfalcpFFFe0Ecbyd;01jjbHjjjjbbgOBd:q9GaxcdBd;S9Gdnalci6gAmbarcd4hCascdthXaOhQazhLinavaiaPcx2fgrydbaC2cdtfhKavarcwfydbaC2cdtfhYavarclfydbaC2cdtfh8AcbhraLhEinaQarfgmaKarfg3Idbg5a8Aarfg8EIdbg8Fa5a8F9DEg5UdbamaYarfgaIdbg8Fa5a8Fa59DEg8FUdbamcxfgma3Idbg5a8EIdbgha5ah9EEg5UdbamaaIdbgha5aha59EEg5UdbaEa8Fa5MJbbbZNUdbaEaXfhEarclfgrcx9hmbkaQcKfhQaLclfhLaPcefgPas9hmbkkaOaHfgr9cb83dbarczf9cb83dbarcwf9cb83dbaxcuascx2gralc:bjjjl0Ecbyd;01jjbHjjjjbbgCBdN9GaxciBd;S9GascdthgazarfhvaChHazhLcbhPinaxcbcj;Gbz:qjjjbhEaPas2cdthadnaAmbaLhrash3inaEarydbgmc8F91cjjjj94Vam7gmcQ4cx2fg8Ea8EydwcefBdwaEamcd4cFrGcx2fg8Ea8EydbcefBdbaEamcx4cFrGcx2fgmamydlcefBdlarclfhra3cufg3mbkkazaafh8AaCaafhXcbhmcbh3cbh8EcbhainaEamfgrydbhQara3BdbarcwfgKydbhYaKaaBdbarclfgrydbhKara8EBdbaQa3fh3aYaafhaaKa8Efh8Eamcxfgmcj;Gb9hmbkdnaAmbcbhravhminamarBdbamclfhmasarcefgr9hmbkaAmbavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cd4cFrGcx2fg8Ea8Eydbg8EcefBdbaXa8Ecdtfa3BdbarclfhramcufgmmbkaHhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cx4cFrGcx2fg8Ea8Eydlg8EcefBdlava8Ecdtfa3BdbarclfhramcufgmmbkavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91cjjjj94Va8E7cQ4cx2fg8Ea8Eydwg8EcefBdwaXa8Ecdtfa3BdbarclfhramcufgmmbkkaHagfhHaLagfhLaPcefgPci9hmbkaEaocetgrcuaocu9kEcbyd;01jjbHjjjjbbgKBd:y9GaEclBd;S9Gdndnaoal9nmbaihralhminaKarydbcetfcFFi87ebarclfhramcufgmmbxdkkaKcFearz:qjjjb8AkcbhmaEascbyd;01jjbHjjjjbbg8ABd:C9GaOaCaCascdtfaCascitfa8AascbazaKaiawaDaqakz:hjjjbcbh8Ednalci6gambcbh8Ea8Ahrash3ina8EarRbbfh8Earcefhra3cufg3mbkkaEcwf9cb83ibaE9cb83ibalawc9:fgrfcufar9UhrasaDfcufaD9Uh3dnaambara3ara30EhYcbhra8Ehacbhmincbh3dnarTmba8AarfRbbceSh3kamaEaiaCydbcx2fgQydbaQclfydbaQcwfydbaKabaeadamawaqa3a3ce7a8EaY9nVaaamfaY6VGz:fjjjbfhmaCclfhCaaa8AarfRbb9Rhaasarcefgr9hmbkaEydxTmbabamcltfgraE8Pib83dbarcwfaEcwf8Pib83dbamcefhmkczhrinarc98SmeaEc:m;Gbfarfydbcbyd;41jjbH:bjjjbbarc98fhrxbkkaxc;W;Gbf8Kjjjjbamk;LXDXue99lue99iul9:eur99lu8Jjjjjbc;qb9RgP8Kjjjjbdndnaoc8Y9imbalaeavawaDaqaxz1jjjbxekaxhsaxhzdnavax0gHmbdnavTmbcbhOaehzavhAinawaDazydbcx2fgCcwfydbcetfgX8VebhQawaCclfydbcetfgL8VebhKawaCydbcetfgC8VebhYaXce87ebaLce87ebaCce87ebaOaKcs4aYcs4faQcs4ffhOazclfhzaAcufgAmbkaehzavhAinawaDazydbcx2fgCcwfydbcetfcFFi87ebawaCclfydbcetfcFFi87ebawaCydbcetfcFFi87ebazclfhzaAcufgAmbkcehzaqhsaOaq0mekalce86bbalcefcbavcufz:qjjjb8AxekaPaiBdxaPadBdwaPaeBdlavakaqci9UgCakaCak6EaHEgK9Rh8AaxaK9RhEaKcufh3aKceth5aKcdtgCc98fh8EavcitgOaC9Rarfc98fh8FascufhaavcufhharaOfhgJbbjZas:Y:vh8JaravcdtgYfc94fh8KcbazceakaxSEg8Lcdtg8M9Rh8NJFFuuhycuh8PcbhIcbh8RinaPclfa8RcdtfydbhQaPc8WfcKfcb8Pd:y1jjbg8S83ibaPc8Wfczfcb8Pd:q1jjbgR83ibaPc8Wfcwfcb8Pd11jjbg8U83ibaPcb8Pdj1jjbg8V83i8WaPczfcKfa8S83ibaPczfczfaR83ibaPczfcwfa8U83ibaPa8V83izaQaYfh8WcbhXinabaQaXcdtgLfydbcK2fhAcbhzinaPc8WfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaPIdnaPId8W:tg8ZaPId9iaPIdU:tg80Nh81aba8WaXcu7cdtfydbcK2fhAcbhzaPId80hBaPId9eh83inaPczfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaraLfgza83aB:tg8Xa80Na8Za8XNa81MMUdbazaYfaPId8KaPIdC:tg8XaPIdyaPIdK:tg8YNaPIdaaPIdz:tg8Za8XNa8Za8YNMMUdbaXcefgXav9hmbkcbhUdnaHmbcbhAaQhzaghCavhXinawaDazydbcx2fgOcwfydbcetfgL8Vebh8WawaOclfydbcetfg858VebhUawaOydbcetfgO8Vebh86aLce87eba85ce87ebaOce87ebaCaAaUcs4a86cs4fa8Wcs4ffgABdbazclfhzaCclfhCaXcufgXmbkavhCinawaDaQydbcx2fgzcwfydbcetfcFFi87ebawazclfydbcetfcFFi87ebawazydbcetfcFFi87ebaQclfhQaCcufgCmbkaghUkdndndndndndndndndndna5av0mba5ax0meavaK6mda3a8A9pmDcehLa8AhXaUTmlxrka3ah9pmwa5ax9nmdxlkdnavavaK9UgzaK29RazaE20mba3a8A9pmwaUTh87ceh85a8AhLxvka3ah6mixrka3ah9pmokcbhLahhXaUmikJFFuuh8XcbhQa3hzindnazcefgCaK6mbaLavaC9RgOaK6GmbarazcdtfIdbg8YaC:YNa8Kavaz9RcdtfIdbg8ZaO:YNMg80a8X9Embdndna8JaOaaf:YNg81:lJbbb9p9DTmba81:OhAxekcjjjj94hAka8ZasaA2aO9R:YNh8Zdndna8Jazasf:YNg81:lJbbb9p9DTmba81:OhOxekcjjjj94hOkamasaO2aC9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgOEh8XaCaQaOEhQkaza8LfgzaX6mbxlkkaUTh87cbh85ahhLkJFFuuh8XcbhQa8AhCa8FhAa8EhOaKhzindnazazaK9UgXaK29RaXaE20mbdna85TmbaCaCaK9UgXaK29RaXaE20mekaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9EmbazhXaCh8Wdna87mbaUaOfydbgXh8Wkdndna8Ja8Waaf:YNg81:lJbbb9p9DTmba81:Oh86xekcjjjj94h86ka8Zasa862a8W9R:YNh8Zdndna8JaXaaf:YNg81:lJbbb9p9DTmba81:Oh8Wxekcjjjj94h8Wkamasa8W2aX9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgXEh8XazaQaXEhQkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaL6mbxdkkJFFuuh8XcbhQa8AhCa8FhAa8EhOaKhzindnazaK6mbaLaCaK6GmbaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9Embdndna8JaUaOfydbg8Waaf:YNg81:lJbbb9p9DTmba81:Oh85xekcjjjj94h85kamasa852a8W9R:Yg81a8YNa8Za81NMNa80Mg8Ya8Xa8Ya8X9Dg8WEh8XazaQa8WEhQkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaX6mbkkaQTmba8Xay9DTmba8XhyaQhIa8Rh8Pka8Rcefg8Rci9hmbkdna8Pcb9ombalaeavawaDaqaxz1jjjbxekaravcdtg8WfhLdnaITmbaPclfa8PcdtfydbhzaIhCinaLazydbfcb86bbazclfhzaCcufgCmbkkdnavaI9nmbaPclfa8PcdtfydbaIcdtfhzavaI9RhCinaLazydbfce86bbazclfhzaCcufgCmbkkcbhYindnaYa8PSmbcbhzaraPclfaYcdtfydbgKa8Wz:pjjjbhCavhXaIhOinaKaOazaLaCydbgQfRbbgAEcdtfaQBdbaCclfhCaOaAfhOazaA9RcefhzaXcufgXmbkkaYcefgYci9hmbkabaeadaialaIaocefgCarawaDaqakaxamz:hjjjbabaeaIcdtgzfadazfaiazfalaIfavaI9RaCarawaDaqakaxamz:hjjjbkaPc;qbf8Kjjjjbk1iePudnadTmbavci9UgrcufhwcbhDindndndnadaD9RaoaDaofad0EgqTmbcbhkaeaDcdtfgxhmaqhPinaialamydbcx2fgscwfydbcetfgz8VebhHaiasclfydbcetfgO8VebhAaiasydbcetfgs8VebhCazce87ebaOce87ebasce87ebakaAcs4aCcs4faHcs4ffhkamclfhmaPcufgPmbkaqhsinaialaxydbcx2fgmcwfydbcetfcFFi87ebaiamclfydbcetfcFFi87ebaiamydbcetfcFFi87ebaxclfhxascufgsmbkakav0mekabaDfgxce86bbaxcefcbaqcufz:qjjjb8AxekabaDfgxce86bbaxcefcbawz:qjjjb8AarhqkaqaDfgDad6mbkkk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz:kjjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz:kjjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:qjjjb8Aarc;Gbfcbavz:qjjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqc:G1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:jjjjbarcj8Wf8Kjjjjbk:Reeeu8Jjjjjbca9Rgo8Kjjjjbab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbdnadTmbaocbBd3ao9cb83iwao9cb83ibaoaeadaialaoc3falEavcbalEcrz:kjjjbabao8Pib83dbabao8Piw83dwkaocaf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:qjjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:tjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:qjjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:pjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;81jjbgeabcifc98GfgbBd;81jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;81jjbgeabcrfc94GfgbBd;81jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;81jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;81jjbfgdBd;81jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk:nedbcjwktFFuuFFuuFFuubbbbFFuFFFuFFFuFbbbbbbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;0wkxebbbdbbbjNbb".charCodeAt(a);t[a]=i>96?i-97:i>64?i-39:i+4}var n=0;for(a=0;a<18682;++a)t[n++]=t[a]<60?e[t[a]]:64*(t[a]-60)+t[++a];return t.buffer.slice(0,n)}(),{}).then(function(e){(t=e.instance).exports.__wasm_call_ctors()}),supported:!0,buildMeshlets:function(e,i,s,r,o,c){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&o<=512),c=c||0;var h=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsFlex,h,i,i.length/s,4*s,r,o,o,c,0)},buildMeshletsFlex:function(e,i,s,r,o,c,h,d){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&c<=512),a(o<=c),h=h||0,d=d||0;var _=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsFlex,_,i,i.length/s,4*s,r,o,c,h,d)},buildMeshletsSpatial:function(e,i,s,r,o,c,h){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&c<=512),a(o<=c),h=h||0;var d=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsSpatial,d,i,i.length/s,4*s,r,o,c,h)},extractMeshlet:function(t,e){return a(e>=0&&e<t.meshletCount),function(t,e){var a=t.meshlets[4*e+0],i=t.meshlets[4*e+1],n=t.meshlets[4*e+2],s=t.meshlets[4*e+3];return{vertices:t.vertices.subarray(a,a+n),triangles:t.triangles.subarray(i,i+3*s)}}(t,e)},computeClusterBounds:function(e,n,r){return a(e.length%3==0),a(e.length/3<=512),a(n instanceof Float32Array),a(n.length%r==0),a(r>=3),function(e,a,n,r){var o=t.exports.sbrk,c=o(48),h=o(e.byteLength),d=o(a.byteLength),_=new Uint8Array(t.exports.memory.buffer);_.set(i(e),h),_.set(i(a),d),t.exports.meshopt_computeClusterBounds(c,h,e.length,d,n,r);var l=s(c);return o(c-o(0)),l}(4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e),n,n.length/r,4*r)},computeMeshletBounds:function(e,n,r){return a(0!=e.meshletCount),a(n instanceof Float32Array),a(n.length%r==0),a(r>=3),function(e,a,n,r){var o=t.exports.sbrk,c=[],h=o(a.byteLength),d=o(e.vertices.byteLength),_=o(e.triangles.byteLength),l=o(48),f=new Uint8Array(t.exports.memory.buffer);f.set(i(a),h),f.set(i(e.vertices),d),f.set(i(e.triangles),_);for(var u=0;u<e.meshletCount;++u){var b=e.meshlets[4*u+0],g=e.meshlets[4*u+0+1],m=e.meshlets[4*u+0+3];t.exports.meshopt_computeMeshletBounds(l,d+4*b,_+g,m,h,n,r),c.push(s(l))}return o(h-o(0)),c}(e,n,n.length/r,4*r)},computeSphereBounds:function(e,n,r,o){return a(e instanceof Float32Array),a(e.length%n==0),a(n>=3),a(!r||r instanceof Float32Array),a(!r||r.length%o==0),a(!r||o>=1),a(!r||e.length/n==r.length/o),o=o||0,function(e,a,n,r,o){var c=t.exports.sbrk,h=c(48),d=c(e.byteLength),_=r?c(r.byteLength):0,l=new Uint8Array(t.exports.memory.buffer);l.set(i(e),d),r&&l.set(i(r),_),t.exports.meshopt_computeSphereBounds(h,d,a,n,_,r?o:0);var f=s(h);return c(h-c(0)),f}(e,e.length/n,4*n,r,4*o)}}}();const Be=128;function Me(t,e,a,i){const n=e,s=t,r=new Uint8Array(Be);let o=128;for(let t=0;t<a;++t){let e=-1,i=-1;for(let s=t;s<a;++s){const t=n[3*s+0],a=n[3*s+1],c=n[3*s+2],h=(o-r[t]<3?1:0)+(o-r[a]<3?1:0)+(o-r[c]<3?1:0);if(h>i&&(e=s,i=h,i>=2))break}const s=n[3*e+0],c=n[3*e+1],h=n[3*e+2],d=3*t,_=d+3*(e-t);n.set(n.subarray(d,_),d+3),n[3*t+0]=s,n[3*t+1]=c,n[3*t+2]=h,o++,r[s]=o,r[c]=o,r[h]=o}const c=new Uint32Array(Be),h=new Int16Array(Be);for(let t=0;t<i;t++)h[t]=-1;let d=0;for(let t=0;t<3*a;++t){const e=n[t];h[e]<0&&(h[e]=d,c[d]=s[e],d++),n[t]=h[e]}if(d>i)throw new Error(`Vertex offset ${d} exceeds vertex count ${i}`);for(let t=0;t<d;t++)s[t]=c[t]}Ce.ready?.then(()=>{});const Se=65535;function Ne(t){return t>=0?1:-1}function Ve(t,e,a,i,n){const s=1/(Math.abs(a)+Math.abs(i)+Math.abs(n));let r=a*s,o=n*s;if(i<0){const t=Math.abs(r);r=(1-Math.abs(o))*Ne(r),o=(1-t)*Ne(o)}t[e]=r,t[e+1]=o}function Re(t,e,a,i){const n=new Float32Array(2);for(let s=0;s<a;s++){const a=3*s,r=i[a],o=i[a+1];Ve(n,0,r,i[a+2],o);const c=.5*n[0]+.5,h=.5*n[1]+.5,d=65535&Math.floor(c*Se)|(65535&Math.floor(h*Se))<<16;t[e+s]=d>>>0}}function Pe(t,e,a,i){const n=new Float32Array(2);for(let s=0;s<a;s++){const a=4*s,r=i[a],o=i[a+1],c=i[a+2],h=i[a+3];Ve(n,0,r,c,o);const d=.5*n[0]+.5,_=.5*n[1]+.5,l=(32767&Math.floor(32767*d))<<1|(65535&Math.floor(_*Se))<<16|(h>=0?1:0);t[e+s]=l>>>0}}const De={[Ee]:4294967295,[je]:[0,0],[Ue]:0,[ke]:0,[ze]:0,[Fe]:[0,0],[Ie]:0};{const t=new Uint32Array(1);Re(t,0,1,[0,0,1]),De[ke]=t[0]}{const t=new Uint32Array(1);Pe(t,0,1,[0,0,1,1]),De[ze]=t[0]}const Te={[xe]:3,[ke]:1,[ze]:1,[Ee]:1,[je]:2,[Ue]:1,[Fe]:2,[Ie]:1},Le=Object.freeze([xe,ke,ze,Ee,je,Ue,Fe,Ie]),qe={[ke]:1,[ze]:2,[Ee]:4,[je]:8,[Ue]:16,[Fe]:32,[Ie]:64},Oe=ge.from({bounds_box:ee.from(mt,6),address:gt,primitive_count:gt,vertex_count:gt,flags:gt}).pack();function Xe(t,e,a,i){const n=a*i,s=new Uint32Array(t,4*e,n);for(let t=i;t<n;t+=i)for(let e=0;e<i;e++)if(s[t+e]!==s[e])return!1;return!0}function Ke(t){return dt(3*t,4)>>>2}function We(t){const e=Math.round(255*t);return e<0?0:e>255?255:e}function Je(t,e,a){return t<e?e:t>a?a:t}function Qe(t,e,a,i){const n=a.data,s=a.spec.itemSize;for(let a=0;a<i;a++){const i=e.readUint32();for(let e=0;e<s;e++)t[a*s+e]=n[i*s+e]}}function Ge(t,e,a,i,n){const s=e.data;switch(i){case xe:for(let e=0;e<n;e++){const e=t.readUint32();for(let t=0;t<3;t++){const i=s[3*e+t];a.writeFloat32(i)}}break;case ke:{const i=new Float32Array(3*n);Qe(i,t,e,n);const s=new Uint32Array(n);Re(s,0,n,i),a.writeUint32Array(s,0,n)}break;case ze:{const i=new Float32Array(4*n);Qe(i,t,e,n);const s=new Uint32Array(n);Pe(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Ee:{const i=new Float32Array(3*n);Qe(i,t,e,n);const s=new Uint32Array(n);!function(t,e,a,i){for(let e=0;e<a;e++){let a=3*e,n=We(i[a]),s=We(i[a+1]),r=We(i[a+2]);t[0+e]=n|s<<8|r<<16}}(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Ue:{const i=new Float32Array(2*n);Qe(i,t,e,n);const s=new Uint32Array(n);!function(t,e,a,i){for(let e=0;e<a;e++){let a=2*e,n=Math.round(65535*Je(i[a],0,1)),s=Math.round(65535*Je(i[a+1],0,1));t[0+e]=65535&n|(65535&s)<<16}}(s,0,n,i),a.writeUint32Array(s,0,n)}break;case je:{const i=new Float32Array(2*n);Qe(i,t,e,n),a.writeFloat32Array(i,0,2*n)}break;case Fe:{const i=new Uint16Array(4*n);Qe(i,t,e,n);for(let t=0;t<n;t++){const e=4*t,n=65535&i[e+0],s=65535&i[e+1],r=65535&i[e+2],o=65535&i[e+3];a.writeUint32(n|s<<16),a.writeUint32(r|o<<16)}}break;case Ie:{const i=new Float32Array(4*n);Qe(i,t,e,n);for(let t=0;t<n;t++){const e=4*t;let n=Math.max(0,Math.min(255,Math.round(255*i[e+0]))),s=Math.max(0,Math.min(255,Math.round(255*i[e+1]))),r=Math.max(0,Math.min(255,Math.round(255*i[e+2]))),o=Math.max(0,Math.min(255,Math.round(255*i[e+3])));const c=255-(n+s+r+o);if(0!==c){let t=0,e=n;s>e&&(e=s,t=1),r>e&&(e=r,t=2),o>e&&(e=o,t=3);const a=Math.max(0,Math.min(255,e+c));0===t?n=a:1===t?s=a:2===t?r=a:o=a}a.writeUint32(255&n|(255&s)<<8|(255&r)<<16|(255&o)<<24)}}break;default:throw new Error(`Unrecognized attribute attribute '${i}'`)}}const Ye={};function He(t,e,a){const i=qe[t];return(void 0!==i&&0!==(e&i)?1:a)*Te[t]}function $e(t,e,a){const i=Ye[t];if("number"!=typeof i)throw new Error(`Unrecognized ordered attribute '${t}'`);let n=0;for(let t=0;t<i;t++)n+=He(Le[t],e,a);return n}Le.forEach((t,e)=>{Ye[t]=e}),Object.freeze(Ye);const Ze={};globalThis.meshlet_debug=Ze;const ta=new ArrayBuffer(0);class ea{#I=ta;#C=new DataView(ta);get data_buffer(){return this.#I}set data_buffer(t){this.#I=t,this.#C=new DataView(this.#I)}#B=ta;#M=new DataView(ta);get metadata_buffer(){return this.#B}set metadata_buffer(t){this.#B=t,this.#M=new DataView(this.#B)}#S=0;get count(){return this.#S}set count(t){this.#S=t}hash(){const t=this.#B;return F(this.#S,I(t,0,t.byteLength))}equals(t){return this.#S===t.#S&&C(this.#B,0,t.#B,0,t.#B.byteLength)&&C(this.#I,0,t.#I,0,t.#I.byteLength)}compress(){const t=U(),e=k.fromArrayBuffer(this.#B);e.endianness=t;const a=this.#I,i=k.fromArrayBuffer(a);i.endianness=t;const n=k.fromEndianness(t);for(let t=0;t<this.#S;t++){e.position=Oe.size*t;const s=we(e,Oe),r=n.position,o=Ke(s.primitive_count);i.position=s.address<<2,k.copyBytes(i,n,4*o);const c=i.position>>>2,h=s.vertex_count,d=s.flags;let _=d;for(const t of Le){const e=qe[t],s=void 0!==e,r=c+$e(t,d,h);i.position=r<<2;const o=Te[t];if(s&&0===(d&e)&&Xe(a,r,h,o))_|=e,k.copyBytes(i,n,4*o);else{const t=0!==(d&e)?1:h;k.copyBytes(i,n,t*o*4)}}s.flags=_,s.address=r>>>2,e.position=Oe.size*t,ve(s,e,Oe)}n.trim();const s=n.data;return this.#I=s,a.byteLength-s.byteLength}optimize(){}read_header(t){const e=k.fromArrayBuffer(this.#B);return e.endianness=U(),e.position=Oe.size*t,we(e,Oe)}read_meshlet(t){const e=this.read_header(t),a=3*e.primitive_count,i=new Uint32Array(a),n=k.fromArrayBuffer(this.#I);n.endianness=U();const s=e.address<<2;n.position=s,n.readUint8Array(i,0,a);const r=new Float32Array(3*e.vertex_count),o=4*Ke(e.primitive_count);return n.position=s+o+4*$e(xe,e.flags,e.vertex_count),n.readFloat32Array(r,0,3*e.vertex_count),{header:e,attribute_index:i,attribute_position:r}}#N(t){const e=new V(ot.get([E.Uint32,E.Uint32,E.Uint32,E.Uint32])),a=U(),i=new k;i.endianness=a,t.ensureIndex(),function(t,e,a,i,n,s,r=64,o=64){const c=Ce.buildMeshlets(a,s,3,r,o,0);t.setCapacity(t.length+c.meshletCount);for(let a=0;a<c.meshletCount;a++){const i=c.meshlets[4*a],n=c.meshlets[4*a+1],s=c.meshlets[4*a+2],r=c.meshlets[4*a+3],o=e.position>>>2,h=o+s;t.writeRow(t.length,[o,h,s,r]),t.length++,Me(c.vertices.subarray(i,i+s),c.triangles.subarray(n,n+3*r),r,s),e.writeUint32Array(c.vertices,i,s),e.writeUint32Array(c.triangles,n,3*r)}}(e,i,t.index.data,t.getIndexCount(),t.getVertexCount(),t.getAttribute(xe).data,Be,128);const n=e.length,s=k.fromEndianness(a),r=k.fromEndianness(a);t.ensureNormals(),t.ensureTangents();const o=t.bounding_box;for(let a=0;a<n;a++){const[n,c,h,d]=e.readRow(a),_={bounds_box:o,address:r.position>>>2,vertex_count:h,primitive_count:d,flags:0};i.position=4*c;const l=3*d;{let t=0,e=0;for(let a=0;a<l;a++)t|=i.readUint32()<<8*e,e++,e>=4&&(r.writeUint32(t),t=0,e=0);e>0&&r.writeUint32(t)}const f=Ke(d);r.position=4*(_.address+f);const u=r.position;for(const e of Le){const a=$e(e,_.flags,h);if(r.position=u+4*a,void 0===t.getAttribute(e)){const t=De[e];if(void 0===t)throw new Error(`No default for attribute '${e}'`);switch(_.flags|=qe[e],e){case ke:case ze:case Ee:r.writeUint32(t);break;case je:r.writeFloat32Array(t,0,t.length);break;case Ue:r.writeUint32(t);break;case Fe:r.writeUint32Array(t,0,t.length);break;case Ie:r.writeUint32(t);break;default:throw new Error(`Unsupported attribute default ${e}`)}continue}i.position=4*n;const s=r.position;Ge(i,t.getAttribute(e),r,e,h);const o=r.position-s;Ze[e]=(Ze[e]||0)+o}ve(_,s,Oe)}this.#S=n,s.trim(),this.metadata_buffer=s.data,r.trim(),this.data_buffer=r.data,this.build_bounds()}build_bounds(){const t=k.fromArrayBuffer(this.#B);t.endianness=U();const e=new Float32Array(384),a=k.fromArrayBuffer(this.#I);a.endianness=U();for(let i=0;i<this.#S;i++){t.position=i*Oe.size;const n=we(t,Oe),s=n.vertex_count,r=dt(3*n.primitive_count,4),o=$e(xe,n.flags,s);a.position=r+4*(n.address+o),a.readFloat32Array(e,0,3*s),ht(n.bounds_box,e,3*s),t.position=i*Oe.size,ve(n,t,Oe)}}build(t){this.#N(t),this.optimize()}}ea.prototype.isMeshletBatch=!0;let aa=0;class ia{id=aa++;name="";bounding_box=new Float32Array(6);bounding_sphere=new Float32Array(4);primitive_count=0;getIndexCount(){return 3*this.primitive_count}meshlets=new ea;bvh=new ArrayBuffer;hash(){return this.meshlets.hash()}equals(t){return this.meshlets.equals(t.meshlets)}}ia.prototype.isMeshletGeometry=!0;class na{klass=null;version=0;initialize(...t){}finalize(){}announce(t,e){}serialize(t,e){}deserialize(t,e){}}na.prototype.isBinaryClassSerializationAdapter=!0;const sa=4294967295;function ra(t,e,a,i,n,s){const r=i-t,o=s-a;return 2*((n-e)*(r+o)+o*r)}const oa=sa,ca=10,ha=Math.floor(107374182.375);class da{__data_buffer=new ArrayBuffer(5120);get data_buffer(){return this.__data_buffer}set data_buffer(t){this.__data_buffer=t,this.__data_float32=new Float32Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__capacity=Math.floor(t.byteLength/40)}__data_float32=new Float32Array(this.__data_buffer);get data_float32(){return this.__data_float32}__data_uint32=new Uint32Array(this.__data_buffer);__capacity=128;__size=0;__free=[];__free_pointer=0;__root=oa;get root(){return this.__root}set root(t){this.__root=t}get size(){return this.__size}get node_capacity(){return this.__capacity}set node_capacity(t){if(this.__size>t)throw new Error(`Can't shrink capacity to ${t}, because it's below occupancy(${this.__size}).`);this.__set_capacity(t)}__grow_capacity(){if(this.__capacity>=ha)throw new Error("Can not grow capacity, already at maximum platform limit");let t=Math.ceil(r(1.2*this.__capacity,this.__capacity+64));t>ha&&(t=ha),this.__set_capacity(t)}__set_capacity(t){if(this.__capacity===t)return;const e=this.__data_uint32,a=new ArrayBuffer(40*t);this.__data_buffer=a,this.__data_float32=new Float32Array(a),this.__data_uint32=new Uint32Array(a),this.__size>0&&p(e.buffer,e.byteOffset,a,0,Math.min(40*this.__size,a.byteLength)),this.__capacity=t}trim(){this.__capacity>this.__size&&this.__set_capacity(this.__size)}allocate_linear(t){this.node_capacity=t,this.__size=t}allocate_node(){let t;const e=this.__free_pointer;if(e>0){const a=e-1;t=this.__free[a],this.__free_pointer=a}else t=this.__size,t>=this.__capacity&&this.__grow_capacity(),this.__size++;const a=ca*t,i=this.__data_float32;i[a]=Number.POSITIVE_INFINITY,i[a+1]=Number.POSITIVE_INFINITY,i[a+2]=Number.POSITIVE_INFINITY,i[a+3]=Number.NEGATIVE_INFINITY,i[a+4]=Number.NEGATIVE_INFINITY,i[a+5]=Number.NEGATIVE_INFINITY;const n=this.__data_uint32;return n[a+6]=oa,n[a+7]=oa,n[a+8]=oa,n[a+9]=0,t}release_node(t){this.__free[this.__free_pointer++]=t}node_is_leaf(t){return this.__data_uint32[ca*t+7]===oa}node_get_user_data(t){return this.__data_uint32[ca*t+8]}node_set_user_data(t,e){this.__data_uint32[ca*t+8]=e}node_get_child1(t){return this.__data_uint32[ca*t+7]}node_set_child1(t,e){this.__data_uint32[ca*t+7]=e}node_get_child2(t){return this.__data_uint32[ca*t+8]}node_set_child2(t,e){this.__data_uint32[ca*t+8]=e}node_get_parent(t){return this.__data_uint32[ca*t+6]}node_set_parent(t,e){this.__data_uint32[ca*t+6]=e}node_get_height(t){return this.__data_uint32[ca*t+9]}node_set_height(t,e){this.__data_uint32[ca*t+9]=e}node_get_aabb(t,e){const a=ca*t,i=this.__data_float32;e[0]=i[a],e[1]=i[a+1],e[2]=i[a+2],e[3]=i[a+3],e[4]=i[a+4],e[5]=i[a+5]}node_set_aabb(t,e){const a=ca*t,i=this.__data_float32;i[a]=e[0],i[a+1]=e[1],i[a+2]=e[2],i[a+3]=e[3],i[a+4]=e[4],i[a+5]=e[5]}node_move_aabb(t,e){this.node_set_aabb(t,e);const a=this.__data_uint32[ca*t+6];a!==oa&&this.bubble_up_refit(a)}node_set_aabb_primitive(t,e,a,i,n,s,r){const o=ca*t,c=this.__data_float32;c[o]=e,c[o+1]=a,c[o+2]=i,c[o+3]=n,c[o+4]=s,c[o+5]=r}node_get_surface_area(t){const e=ca*t,a=this.__data_float32;return ra(a[e],a[e+1],a[e+2],a[e+3],a[e+4],a[e+5])}node_get_combined_surface_area(t,e){const a=ca*t,i=ca*e,n=this.__data_float32;return ra(o(n[a],n[i]),o(n[a+1],n[i+1]),o(n[a+2],n[i+2]),r(n[a+3],n[i+3]),r(n[a+4],n[i+4]),r(n[a+5],n[i+5]))}node_set_combined_aabb(t,e,a){const i=ca*e,n=ca*a,s=ca*t,r=this.__data_float32;c(r,s,r,i,r,n)}insert_leaf(t){let e=this.__data_uint32;if(this.__root===oa)return this.__root=t,void(e[t*ca+6]=oa);let a=this.__root;for(;!1===this.node_is_leaf(a);){const i=a*ca,n=e[i+7],s=e[i+8],r=this.node_get_surface_area(a),o=this.node_get_combined_surface_area(a,t),c=2*o,h=2*(o-r);let d,_;if(this.node_is_leaf(n))d=this.node_get_combined_surface_area(t,n)+h;else{const e=this.node_get_surface_area(n);d=this.node_get_combined_surface_area(t,n)-e+h}if(this.node_is_leaf(s))_=this.node_get_combined_surface_area(t,s)+h;else{const e=this.node_get_surface_area(s);_=this.node_get_combined_surface_area(t,s)-e+h}if(c<d&&c<_)break;a=d<_?n:s}const i=a,n=e[i*ca+6],s=this.allocate_node();e=this.__data_uint32,e[s*ca+6]=n,this.node_set_combined_aabb(s,t,i),e[s*ca+9]=e[i*ca+9]+1,n!==oa?e[n*ca+7]===i?e[n*ca+7]=s:e[n*ca+8]=s:this.__root=s,e[s*ca+7]=i,e[s*ca+8]=t,e[i*ca+6]=s,e[t*ca+6]=s,this.bubble_up_update(s)}bubble_up_refit(t){let e=t;const a=this.__data_uint32;do{const t=e*ca,i=a[t+7],n=a[t+8];this.node_set_combined_aabb(e,i,n),e=a[t+6]}while(e!==oa)}bubble_up_update(t){let e=t;const a=this.__data_uint32;for(;e!==oa;){e=this.balance_rotate(e);const t=e*ca,i=a[t+7],n=a[t+8];a[t+9]=1+r(a[i*ca+9],a[n*ca+9]),this.node_set_combined_aabb(e,i,n),e=a[t+6]}}remove_leaf(t){if(t===this.__root)return void(this.__root=oa);const e=this.__data_uint32,a=e[t*ca+6],i=e[a*ca+6];let n;const s=e[a*ca+7];n=s===t?e[a*ca+8]:s,i!==oa?(e[i*ca+7]===a?e[i*ca+7]=n:e[i*ca+8]=n,e[n*ca+6]=i,this.release_node(a),this.bubble_up_update(i)):(this.__root=n,e[n*ca+6]=oa,this.release_node(a))}balance_height(t){const e=this.__data_uint32;if(this.node_is_leaf(t)||e[t*ca+9]<2)return t;const a=e[t*ca+7],i=e[t*ca+8],n=e[i*ca+9]-e[a*ca+9];if(n>1){const n=e[i*ca+7],s=e[i*ca+8];e[i*ca+7]=t;const o=e[t*ca+6];return e[i*ca+6]=o,e[t*ca+6]=i,o!==oa?e[o*ca+7]===t?e[o*ca+7]=i:e[o*ca+8]=i:this.__root=i,e[n*ca+9]>e[s*ca+9]?(e[i*ca+8]=n,e[t*ca+8]=s,e[s*ca+6]=t,this.node_set_combined_aabb(t,a,s),this.node_set_combined_aabb(i,t,n),e[t*ca+9]=1+r(e[a*ca+9],e[s*ca+9]),e[i*ca+9]=1+r(e[t*ca+9],e[n*ca+9])):(e[i*ca+8]=s,e[t*ca+8]=n,e[n*ca+6]=t,this.node_set_combined_aabb(t,a,n),this.node_set_combined_aabb(i,t,s),e[t*ca+9]=1+r(e[a*ca+9],e[n*ca+9]),e[i*ca+9]=1+r(e[t*ca+9],e[s*ca+9])),i}if(n<-1){const n=e[a*ca+7],s=e[a*ca+8];e[a*ca+7]=t;const o=e[t*ca+6];return e[a*ca+6]=o,e[t*ca+6]=a,o!==oa?e[o*ca+7]===t?e[o*ca+7]=a:e[o*ca+8]=a:this.__root=a,e[n*ca+9]>e[s*ca+9]?(e[a*ca+8]=n,e[t*ca+7]=s,e[s*ca+6]=t,this.node_set_combined_aabb(t,i,s),this.node_set_combined_aabb(a,t,n),e[t*ca+9]=1+r(e[i*ca+9],e[s*ca+9]),e[a*ca+9]=1+r(e[t*ca+9],e[n*ca+9])):(e[a*ca+8]=s,e[t*ca+7]=n,e[n*ca+6]=t,this.node_set_combined_aabb(t,i,n),this.node_set_combined_aabb(a,t,s),e[t*ca+9]=1+r(e[i*ca+9],e[n*ca+9]),e[a*ca+9]=1+r(e[t*ca+9],e[s*ca+9])),a}return t}balance_rotate(t){const e=this.__data_uint32,a=t*ca;if(this.node_is_leaf(t)||e[a+9]<2)return t;const i=e[a+7],n=e[a+8],s=this.node_is_leaf(i),o=this.node_is_leaf(n);let c=0,h=0,d=oa,_=oa,l=oa,f=oa;if(!s){const t=this.node_get_surface_area(i);d=e[i*ca+7],_=e[i*ca+8];const a=t-this.node_get_combined_surface_area(n,_);a>c&&(c=a,h=1);const s=t-this.node_get_combined_surface_area(d,n);s>c&&(c=s,h=2)}if(!o){const t=this.node_get_surface_area(n);l=e[n*ca+7],f=e[n*ca+8];const a=t-this.node_get_combined_surface_area(i,f);a>c&&(c=a,h=3);const s=t-this.node_get_combined_surface_area(l,i);s>c&&(c=s,h=4)}if(0===h)return this.balance_height(t);switch(h){case 1:e[a+8]=d,e[i*ca+7]=n,e[d*ca+6]=t,e[n*ca+6]=i,this.node_set_combined_aabb(i,n,_),e[i*ca+9]=1+r(e[n*ca+9],e[_*ca+9]);break;case 2:e[a+8]=_,e[i*ca+8]=n,e[_*ca+6]=t,e[n*ca+6]=i,this.node_set_combined_aabb(i,d,n),e[i*ca+9]=1+r(e[d*ca+9],e[n*ca+9]);break;case 3:e[a+7]=l,e[n*ca+7]=i,e[l*ca+6]=t,e[i*ca+6]=n,this.node_set_combined_aabb(n,i,f),e[n*ca+9]=1+r(e[i*ca+9],e[f*ca+9]);break;case 4:e[a+7]=f,e[n*ca+8]=i,e[f*ca+6]=t,e[i*ca+6]=n,this.node_set_combined_aabb(n,l,i),e[n*ca+9]=1+r(e[l*ca+9],e[i*ca+9])}return e[a+9]=1+r(e[e[a+7]*ca+9],e[e[a+8]*ca+9]),t}node_assign_children(t,e,a){this.node_set_combined_aabb(t,e,a),this.node_assign_children_only(t,e,a)}node_assign_children_only(t,e,a){this.node_set_parent(e,t),this.node_set_parent(a,t),this.node_set_child1(t,e),this.node_set_child2(t,a),this.node_set_height(t,1+Math.max(this.node_get_height(e),this.node_get_height(a)))}release_all(){this.__root=oa,this.__size=0,this.__free_pointer=0}traverse(t,e){let a=0;const i=[],n=this.__root;n!==oa&&(i[a++]=n);const s=this.__data_uint32;for(;a>0;){a--;const n=i[a];t.call(e,n,this);const r=n*ca,o=s[r+7],c=s[r+8];o!==oa&&(i[a++]=c,i[a++]=o)}}collect_nodes_all(t,e){let a=e;return this.traverse(e=>{t[a++]=e}),a-e}__move_node_links(t,e){const a=this.__data_uint32,i=t*ca,n=a[i+7],s=a[i+8];n!==oa&&(a[n*ca+6]=e,a[s*ca+6]=e);const r=a[i+6];r!==oa&&(a[r*ca+7]===t?a[r*ca+7]=e:a[r*ca+8]=e)}swap_nodes(t,e){const a=this.__data_uint32,n=t*ca,s=e*ca;return a[n+6]!==e&&a[s+6]!==t&&(this.__move_node_links(t,e),this.__move_node_links(e,t),i(a,n,this.__free,this.__free_pointer,ca),i(a,s,a,n,ca),i(this.__free,this.__free_pointer,a,s,ca),this.__root===t?this.__root=e:this.__root===e&&(this.__root=t),!0)}}da.prototype.isBVH=!0;const _a=new ArrayBuffer(9280),la=new Float32Array(_a,0,1536),fa=new Float32Array(_a,6144,256),ua=new Float32Array(_a,7168,256),ba=new Uint32Array(_a,8192,256),ga=new Uint32Array(_a,9216,16);function ma(t,e,a){if(1===oe(a))return e[T(a)];let i=ba[a],n=a&~i;const s=t.allocate_node(),r=ma(t,e,i),o=ma(t,e,n);return t.node_assign_children(s,r,o),s}function ya(t,e,a){if(e===oa)return;if(t.node_is_leaf(e))return;const i=t.node_get_child1(e),n=t.node_get_child2(e);let s=0;if(i!==oa&&(ga[s++]=i),n!==oa&&(ga[s++]=n),0!==s){for(;s<a;){let e=-1,a=0;for(let i=0;i<s;i++){const n=ga[i];if(t.node_is_leaf(n))continue;const s=t.node_get_surface_area(n);s>a&&(a=s,e=i)}if(-1===e)break;const i=ga[e],n=t.node_get_child1(i),r=t.node_get_child2(i);ga[e]=n,ga[s++]=r,t.release_node(i)}s<=2||function(t,e,a,i){const n=t.data_float32,s=(1<<i)-1;for(let t=1;t<=s;t++){let e,i,s,r,o,c;const h=!(t&t-1);if(h){const h=a[T(t)]*ca;e=n[h],i=n[h+1],s=n[h+2],r=n[h+3],o=n[h+4],c=n[h+5]}else{const a=t&-t,n=6*a,h=6*(t^a);e=Math.min(la[n],la[h]),i=Math.min(la[n+1],la[h+1]),s=Math.min(la[n+2],la[h+2]),r=Math.max(la[n+3],la[h+3]),o=Math.max(la[n+4],la[h+4]),c=Math.max(la[n+5],la[h+5])}const d=6*t;la[d]=e,la[d+1]=i,la[d+2]=s,la[d+3]=r,la[d+4]=o,la[d+5]=c;const _=r-e,l=o-i,f=c-s,u=2*(_*l+l*f+f*_);fa[t]=u,h&&(ua[t]=1*u)}for(let t=2;t<=i;t++)for(let e=1;e<=s;e++){if(oe(e)!==t)continue;let a=Infinity,i=0;const n=e-1&e;let s=-n&e;do{const t=ua[s]+ua[e^s];t<a&&(a=t,i=s),s=s-n&e}while(0!==s);const r=1.2*fa[e]+a;ua[e]=r,ba[e]=i}!function(t,e,a,i){let n=ba[i],s=i&~n;t.node_assign_children(e,ma(t,a,n),ma(t,a,s))}(t,e,a,(1<<i)-1)}(t,e,ga,s)}}function pa(t,e=t.root,a=7){if(e===oa)return;if(t.node_is_leaf(e))return;let i=e,n=0,s=t.node_get_child1(i);if(s===oa&&(s=t.node_get_child2(i)),s===oa)return;const r=Math.ceil(Math.log2(a));for(;;){if(2===n){const e=t.node_get_child1(s),i=t.node_get_child2(s);t.node_set_height(s,1+Math.max(t.node_get_height(e),t.node_get_height(i))),t.node_get_height(s)>=r&&ya(t,s,a)}if(t.node_is_leaf(s)){const e=i;n=t.node_get_child1(e)===s?1:2,i=s,s=e}else if(2===n){i=s;const a=t.node_get_parent(s);if(n=t.node_get_child1(a)===s?1:2,s===e)break;s=a}else if(1===n){const e=t.node_get_child2(s);i=s,e===oa?(n=2,s=t.node_get_parent(s)):(n=0,s=e)}else if(0===n){const e=t.node_get_child1(s),a=t.node_get_child2(s);if(e!==oa)n=0,i=s,s=e;else if(a!==oa)n=0,i=s,s=a;else{const e=t.node_get_child1(i);t.release_node(s),e===s?(t.node_set_child1(i,oa),i=oa,n=1):(t.node_set_child2(i,oa),i=oa,n=2),s=i}}}ya(t,e,a)}function wa(t,e,a){let i=t;return i>e&&(i=e),i>a&&(i=a),i}function va(t,e,a,i,n,s){const r=3*i,o=3*n,c=3*s,h=a[r],d=a[r+1],_=a[r+2],l=a[o],f=a[o+1],u=a[o+2],b=a[c],g=a[c+1],m=a[c+2];t[e]=wa(h,l,b),t[e+1]=wa(d,f,g),t[e+2]=wa(_,u,m),t[e+3]=re(h,l,b),t[e+4]=re(d,f,g),t[e+5]=re(_,u,m)}function Aa(t,e,a){const n=new da;!function({bvh:t,meshlets:e,bounding_box:a,primitive_count:i,optimization:n=1}){const s=e.count,o=i,c=o+r(0,o-1);if(t.release_all(),0===o)return void(t.root=oa);t.allocate_linear(c);const h=new Uint32Array(s),d=r(0,s-1);{const i=c-d,n=new Uint32Array(i);let r=0;const o=new Uint32Array(128);for(let t=0;t<i;t++){const e=c-1-t;n[t]=e}const _=new Uint32Array(s);for(let t=0;t<s;t++){const i=e.read_header(t).bounds_box,n=.5*(i[0]+i[3]),s=.5*(i[1]+i[4]),r=.5*(i[2]+i[5]);_[t]=f(n,s,r,a)}const l=new Uint32Array(s);for(let t=0;t<s;t++)l[t]=t;l.sort((t,e)=>_[t]-_[e]);const u=new Float32Array(6);for(let a=0;a<s;a++){const i=l[a],s=e.read_meshlet(i),c=s.header,d=s.attribute_index,_=s.attribute_position,f=c.primitive_count;for(let e=0;e<f;e++){const a=3*e;va(u,0,_,d[a+0],d[a+1],d[a+2]);const s=(16777215&i)<<8|255&e,c=n[r++];t.node_set_aabb(c,u),t.node_set_user_data(c,s),t.node_set_child1(c,oa),o[e]=c}let b=f;for(;b>1;){let e=0,a=0;for(;a+1<b;){const i=o[a++],s=o[a++],c=n[r++];t.node_assign_children(c,s,i),o[e++]=c}for(;a<b;)o[e++]=o[a++];b=e}h[a]=o[0]}}{let e=s,a=0;const i=d,n=new Uint32Array(i);for(let t=0;t<i;t++){const e=i-1-t;n[t]=e}for(;e>1;){let i=0,s=0;for(;s+1<e;){const e=h[s++],r=h[s++],o=n[a++];t.node_assign_children(o,r,e),h[i++]=o}for(;s<e;)h[i++]=h[s++];e=i}const r=h[0];t.node_set_parent(r,oa),t.root=r}for(let e=0;e<n;e++)pa(t);t.trim()}({bvh:n,meshlets:t,bounding_box:a,primitive_count:e});const s=new ArrayBuffer(32*n.node_capacity);return function(t,e,a,n,s){const r=new Uint32Array(a,0),o=new Uint32Array(t,0);for(let t=0;t<s;t++){const e=10*t,a=8*t;i(r,e,o,a,6),o[a+6]=r[e+7],o[a+7]=r[e+8]}}(s,0,n.data_buffer,0,n.node_capacity),s}const xa=new class extends na{version=0;klass=ia;serialize_bvh=!0;serialize(t,e){t.writeUint32(e.primitive_count),t.writeFloat32Array(e.bounding_box,0,6),t.writeFloat32Array(e.bounding_sphere,0,4),t.writeUTF8String(e.name);const a=e.meshlets;t.writeUint32(a.count),t.writeUint32(a.metadata_buffer.byteLength),t.writeBytes(new Uint8Array(a.metadata_buffer),0,a.metadata_buffer.byteLength),t.writeUint32(a.data_buffer.byteLength),t.writeBytes(new Uint8Array(a.data_buffer),0,a.data_buffer.byteLength),this.serialize_bvh?(t.writeUint32(e.bvh.byteLength),t.writeBytes(new Uint8Array(e.bvh),0,e.bvh.byteLength)):t.writeUint32(0)}deserialize(t,e){e.primitive_count=t.readUint32(),t.readFloat32Array(e.bounding_box,0,6),t.readFloat32Array(e.bounding_sphere,0,4),e.name=t.readUTF8String(),e.meshlets.count=t.readUint32();const a=t.readUint32(),i=new Uint8Array(a);t.readBytes(i,0,a),e.meshlets.metadata_buffer=i.buffer;const n=t.readUint32(),s=new Uint8Array(n);t.readBytes(s,0,n),e.meshlets.data_buffer=s.buffer;const r=t.readUint32();if(0===r&&e.primitive_count>0)e.bvh=Aa(e.meshlets,e.primitive_count,e.bounding_box);else{const a=new Uint8Array(r);t.readBytes(a,0,r),e.bvh=a.buffer}}};function ka(t,e,a,i,n,s,r,o){const c=3*o;let h,d,_;void 0!==r?(h=r[c],d=r[c+1],_=r[c+2]):(h=c,d=c+1,_=c+2);const l=h*n+i,f=d*n+i,u=_*n+i;let b=a[l],g=a[l+1],m=a[l+2],y=a[f],p=a[f+1],w=a[f+2],v=a[u],A=a[u+1],x=a[u+2];t[e]=b,t[e+1]=g,t[e+2]=m,t[e+3]=y,t[e+4]=p,t[e+5]=w,t[e+6]=v,t[e+7]=A,t[e+8]=x}function za(t,e,a,i,n,s){const r=t.getLeafAddress(e);va(t.__data_float32,r,a,i,n,s),t.__data_uint32[r+6]=e}const ja=new Float64Array(9),Ua=[E.Uint64,E.Int64];function Ea(t){return 1===t?"":", true"}function Fa(t,e){return 0===t?"p":"p + "+t*e}function Ia(t,e){return 0===e?t:t+" + "+e}function Ca(t){return 1===t?"component":"component * "+t}class Ba{type=E.Float32;offset=0;components=0;stride=0;data_view=null;read=null;write=null;read_component=null;write_component=null;#V=null;#R=null;#P=null;#D=null;constructor(t,e,a){if(-1!==Ua.indexOf(t))throw new Error("type '"+t+"' is not supported by BinaryDataLayer: its DataView accessors are BigInt-valued, and no result contract for that exists yet");this.type=t,this.offset=e,this.components=a}get byte_size(){return D[this.type]*this.components}bind(t,e){e===this.stride&&null!==this.#V||(this.stride=e,this.#V=function(t,e,a,i){const n=R[t],s=D[t],r=Ea(s),o=["const p = id * "+i+" + "+e+";"];for(let t=0;t<a;t++)o.push("result["+Ia("result_offset",t)+"] = data_view."+n+"("+Fa(t,s)+r+");");return it.INSTANCE.compile({args:["data_view"],code:"return function (result, result_offset, id) {\n"+o.join("\n")+"\n};"})}(this.type,this.offset,this.components,e),this.#R=function(t,e,a,i){const n=P[t],s=D[t],r=Ea(s),o=["const p = id * "+i+" + "+e+";"];for(let t=0;t<a;t++)o.push("data_view."+n+"("+Fa(t,s)+", value["+Ia("value_offset",t)+"]"+r+");");return it.INSTANCE.compile({args:["data_view"],code:"return function (id, value, value_offset) {\n"+o.join("\n")+"\n};"})}(this.type,this.offset,this.components,e),this.#P=function(t,e,a){const i=R[t],n=D[t],s="id * "+a+" + "+e+" + "+Ca(n);return it.INSTANCE.compile({args:["data_view"],code:"return function (id, component) {\nreturn data_view."+i+"("+s+Ea(n)+");\n};"})}(this.type,this.offset,e),this.#D=function(t,e,a){const i=P[t],n=D[t],s="id * "+a+" + "+e+" + "+Ca(n);return it.INSTANCE.compile({args:["data_view"],code:"return function (id, component, value) {\ndata_view."+i+"("+s+", value"+Ea(n)+");\n};"})}(this.type,this.offset,e)),this.data_view=t,this.read=this.#V(t),this.write=this.#R(t),this.read_component=this.#P(t),this.write_component=this.#D(t)}}Ba.prototype.isBinaryDataLayer=!0;class Ma{#T;#L=[];#q=0;#O=0;#X=new ArrayBuffer(0);#K=new Uint8Array(this.#X);#C=new DataView(this.#X);constructor(t){this.#T=t}get record_size(){return this.#q}get layers(){return this.#L}get capacity(){return this.#O}get byteSize(){return this.#O*this.#q}get data_view(){return this.#C}add_layer(t,e){const a=this.#q,i=new Ba(t,this.#q,e);return this.#L.push(i),this.#q+=i.byte_size,this.#W(this.#O,a),i}ensure_capacity(t){t<=this.#O||this.#W(t,this.#q)}sync_capacity(){this.ensure_capacity(this.#T.capacity)}trim(){const t=this.#T.size;t>=this.#O||this.#W(t,this.#q)}swap(t,e){if(t===e)return;const a=this.#q;n(this.#K,t*a,this.#K,e*a,a)}copy_record(t,e,a){const i=this.#q,n=a*i;this.#K.set(e.#K.subarray(n,n+i),t*i)}record_equal(t,e){if(t===e)return!0;const a=this.#q,i=t*a,n=e*a,s=this.#K;for(let t=0;t<a;t++)if(s[i+t]!==s[n+t])return!1;return!0}copy(t){if(this!==t){this.#L=[],this.#q=0,this.#O=0,this.#X=new ArrayBuffer(0),this.#K=new Uint8Array(this.#X),this.#C=new DataView(this.#X);for(const e of t.layers)this.add_layer(e.type,e.components);this.ensure_capacity(t.capacity),this.#K.set(t.#K.subarray(0,t.capacity*t.record_size))}}#W(t,e){const a=this.#q,i=this.#K,n=this.#O;this.#X=new ArrayBuffer(t*a),this.#K=new Uint8Array(this.#X),this.#C=new DataView(this.#X),this.#O=t;const s=Math.min(t,n);if(s>0&&e>0)if(e===a)this.#K.set(i.subarray(0,s*a));else for(let t=0;t<s;t++)this.#K.set(i.subarray(t*e,t*e+e),t*a);for(const t of this.#L)t.bind(this.#C,a)}}Ma.prototype.isBinaryDataBlock=!0;class Sa{__free=[];__free_pointer=0;__size=0;constructor(t,e=128,a=!1){this.__item_size=t,this.__data_buffer=B(w(e*t),a),this.__data_uint8=new Uint8Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__data_float32=new Float32Array(this.__data_buffer),this.data_view=new DataView(this.__data_buffer),this.__capacity=e,this.__occupancy=new he(this.__capacity),this.__occupancy.preventShrink()}fromArrayBuffer(t,e=0){const a=Math.floor(t.byteLength/this.__item_size);this.__data_buffer=t,this.__data_uint8=new Uint8Array(t),this.__data_uint32=new Uint32Array(t),this.__data_float32=new Float32Array(t),this.data_view=new DataView(t),this.__capacity=a,this.__free_pointer=0,this.__size=e,this.__occupancy=new he(a),this.__occupancy.preventShrink(),e>0&&this.__occupancy.setRange(0,e-1)}get arrayBuffer(){return this.__data_buffer}get item_size(){return this.__item_size}get size(){return this.__size}count(){return this.__size-this.__free_pointer}get byteSize(){return this.__capacity*this.__item_size}get capacity(){return this.__capacity}get data_uint32(){return this.__data_uint32}get data_float32(){return this.__data_float32}trim(){this.__set_capacity(this.__size)}element_address(t){return this.__item_size*t}element_word(t){return Math.floor(this.element_address(t)/4)}is_allocated(t){return!(t>=this.__size)&&this.__occupancy.get(t)}__set_capacity(t){if(this.__capacity===t)return;const e=this.__data_uint8,a=w(t*this.__item_size),n=new(0,this.__data_buffer.constructor)(a);this.__data_buffer=n,this.__data_uint8=new Uint8Array(n),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__data_float32=new Float32Array(this.__data_buffer),this.data_view=new DataView(n),function(t,e){const a=e.length;a>=t.length?e.set(t,0):t.constructor===e.constructor?p(t.buffer,t.byteOffset,e.buffer,e.byteOffset,Math.min(t.byteLength,e.byteLength)):i(t,0,e,0,a)}(e,this.__data_uint8),this.__capacity=t}__grow_capacity(t){const e=Math.ceil(re(t,1.2*this.__capacity,this.__capacity+32));this.__set_capacity(e)}ensure_capacity(t){this.__capacity<t&&this.__grow_capacity(t)}allocate(){if(this.__free_pointer>0){this.__free_pointer--;const t=this.__free[this.__free_pointer];return this.__occupancy.set(t,!0),t}let t=this.__size;return this.__size++,this.__size>=this.__capacity&&this.__grow_capacity(this.__size),this.__occupancy.set(t,!0),t}allocate_continuous(t){const e=this.__size;return this.__size+=t,this.__size>=this.__capacity&&this.__grow_capacity(this.__size),t>0&&this.__occupancy.setRange(e,e+t-1),e}swap(t,e){if(t===e)return;const a=this.__item_size;n(this.__data_uint8,t*a,this.__data_uint8,e*a,a)}release(t){t===this.__size-1?(this.__size--,this.__occupancy.set(t,!1)):t>=this.__size||(this.__free[this.__free_pointer++]=t,this.__occupancy.set(t,!1))}clear_free_set(){this.__free_pointer=0,this.__size>0&&this.__occupancy.setRange(0,this.__size-1)}truncate(t){this.__size=t,this.__free_pointer=0,this.__occupancy.reset(),t>0&&this.__occupancy.setRange(0,t-1)}clear(){this.__size=0,this.__free_pointer=0,this.__occupancy.reset()}copy(t){this.__size=t.size,this.__item_size=t.item_size;const e=t.size*this.item_size,a=this.__data_buffer,i=t.__data_buffer;a.byteLength<e?this.fromArrayBuffer(i.slice(0),this.__size):p(i,0,a,0,e),this.__free_pointer=t.__free_pointer,this.__free=t.__free.slice(),this.__rebuild_occupancy_from_free()}__rebuild_occupancy_from_free(){this.__occupancy=new he(Math.max(this.__capacity,this.__size)),this.__occupancy.preventShrink(),this.__size>0&&this.__occupancy.setRange(0,this.__size-1);const t=this.__free,e=this.__free_pointer;for(let a=0;a<e;a++)this.__occupancy.set(t[a],!1)}*[Symbol.iterator](){for(let t=0;t<this.__size;t++)!1!==this.is_allocated(t)&&(yield t)}}Sa.prototype.isBinaryElementPool=!0;const Na=4294967295;function Va(t,e,a){if(null===a)return null;const i=null===t?new Ma(e):t;return i.copy(a),i.sync_capacity(),i}class Ra{__vertex_pool=new Sa(28);__edge_pool=new Sa(28);__loop_pool=new Sa(28);__face_pool=new Sa(16);__vertex_data_block=null;__edge_data_block=null;__loop_data_block=null;__face_data_block=null;get byteSize(){let t=this.__loop_pool.byteSize+this.__vertex_pool.byteSize+this.__edge_pool.byteSize+this.__face_pool.byteSize;return null!==this.__vertex_data_block&&(t+=this.__vertex_data_block.byteSize),null!==this.__edge_data_block&&(t+=this.__edge_data_block.byteSize),null!==this.__loop_data_block&&(t+=this.__loop_data_block.byteSize),null!==this.__face_data_block&&(t+=this.__face_data_block.byteSize),t}trim(){this.__loop_pool.trim(),this.__vertex_pool.trim(),this.__edge_pool.trim(),this.__face_pool.trim(),null!==this.__vertex_data_block&&this.__vertex_data_block.trim(),null!==this.__edge_data_block&&this.__edge_data_block.trim(),null!==this.__loop_data_block&&this.__loop_data_block.trim(),null!==this.__face_data_block&&this.__face_data_block.trim()}get vertices(){return this.__vertex_pool}get edges(){return this.__edge_pool}get loops(){return this.__loop_pool}get faces(){return this.__face_pool}get vertex_data(){return this.__vertex_data_block}get edge_data(){return this.__edge_data_block}get loop_data(){return this.__loop_data_block}get face_data(){return this.__face_data_block}vertex_data_add_layer(t,e){null===this.__vertex_data_block&&(this.__vertex_data_block=new Ma(this.__vertex_pool));const a=this.__vertex_data_block.add_layer(t,e);return this.__vertex_data_block.sync_capacity(),a}edge_data_add_layer(t,e){null===this.__edge_data_block&&(this.__edge_data_block=new Ma(this.__edge_pool));const a=this.__edge_data_block.add_layer(t,e);return this.__edge_data_block.sync_capacity(),a}loop_data_add_layer(t,e){null===this.__loop_data_block&&(this.__loop_data_block=new Ma(this.__loop_pool));const a=this.__loop_data_block.add_layer(t,e);return this.__loop_data_block.sync_capacity(),a}face_data_add_layer(t,e){null===this.__face_data_block&&(this.__face_data_block=new Ma(this.__face_pool));const a=this.__face_data_block.add_layer(t,e);return this.__face_data_block.sync_capacity(),a}delete_vertex_data(){return null!==this.__vertex_data_block&&(this.__vertex_data_block=null,!0)}delete_edge_data(){return null!==this.__edge_data_block&&(this.__edge_data_block=null,!0)}delete_loop_data(){return null!==this.__loop_data_block&&(this.__loop_data_block=null,!0)}delete_face_data(){return null!==this.__face_data_block&&(this.__face_data_block=null,!0)}clear(){this.__vertex_pool.clear(),this.__edge_pool.clear(),this.__loop_pool.clear(),this.__face_pool.clear()}vertex_read_coordinate(t,e,a){const i=this.__vertex_pool,n=i.element_address(a)>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}vertex_write_coordinate(t,e,a){const i=this.__vertex_pool,n=i.element_address(t)>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}vertex_read_normal(t,e,a){const i=this.__vertex_pool,n=i.element_address(a)+12>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}vertex_write_normal(t,e,a){const i=this.__vertex_pool,n=i.element_address(t)+12>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}vertex_read_edge(t){const e=this.__vertex_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}vertex_write_edge(t,e){const a=this.__vertex_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}edge_read_vertex1(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a)}edge_write_vertex1(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}edge_read_vertex2(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+4)}edge_write_vertex2(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+4,e)}edge_read_loop(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+8)}edge_write_loop(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+8,e)}edge_read_v1_disk_next(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+12)}edge_write_v1_disk_next(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+12,e)}edge_read_v1_disk_prev(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+16)}edge_write_v1_disk_prev(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+16,e)}edge_read_v2_disk_next(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+20)}edge_write_v2_disk_next(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+20,e)}edge_read_v2_disk_prev(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}edge_write_v2_disk_prev(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}vertex_create(){const t=this.__vertex_pool.allocate();return this.__vertex_data_block?.sync_capacity(),t}vertices_create_continuous(t){const e=this.__vertex_pool.allocate_continuous(t);return this.__vertex_data_block?.sync_capacity(),e}vertex_destroy(t){this.__vertex_pool.release(t)}edge_create(){const t=this.__edge_pool.allocate();return this.__edge_data_block?.sync_capacity(),t}edge_destroy(t){this.__edge_pool.release(t)}face_create(){const t=this.__face_pool.allocate();return this.__face_data_block?.sync_capacity(),t}faces_create_continuous(t){const e=this.__face_pool.allocate_continuous(t);return this.__face_data_block?.sync_capacity(),e}face_destroy(t){this.__face_pool.release(t)}loop_create(){const t=this.__loop_pool.allocate();return this.__loop_data_block?.sync_capacity(),this.loop_initialize(t),t}loop_destroy(t){this.__loop_pool.release(t)}loop_initialize(t){this.loop_write_radial_next(t,t),this.loop_write_radial_prev(t,t),this.loop_write_next(t,t),this.loop_write_prev(t,t)}loop_read_vertex(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a)}loop_write_vertex(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}loop_read_edge(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+4)}loop_write_edge(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+4,e)}loop_read_face(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+8)}loop_write_face(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+8,e)}loop_read_radial_next(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+12)}loop_write_radial_next(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+12,e)}loop_read_radial_prev(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+16)}loop_write_radial_prev(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+16,e)}loop_read_next(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+20)}loop_write_next(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+20,e)}loop_read_prev(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}loop_write_prev(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}face_read_loop(t){const e=this.__face_pool,a=e.element_address(t);return e.data_view.getUint32(a)}face_write_loop(t,e){const a=this.__face_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}face_read_normal(t,e,a){const i=this.__face_pool,n=i.element_address(a)+4>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}face_write_normal(t,e,a){const i=this.__face_pool,n=i.element_address(t)+4>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}copy(t){this!==t&&(this.__vertex_pool.copy(t.vertices),this.__edge_pool.copy(t.edges),this.__loop_pool.copy(t.loops),this.__face_pool.copy(t.faces),this.__vertex_data_block=Va(this.__vertex_data_block,this.__vertex_pool,t.vertex_data),this.__edge_data_block=Va(this.__edge_data_block,this.__edge_pool,t.edge_data),this.__loop_data_block=Va(this.__loop_data_block,this.__loop_pool,t.loop_data),this.__face_data_block=Va(this.__face_data_block,this.__face_pool,t.face_data))}clone(){const t=new Ra;return t.copy(this),t}}function Pa(t,e,a){t.loop_write_edge(e,a);const i=t.edge_read_loop(a);if(i===Na)t.edge_write_loop(a,e),t.loop_write_radial_next(e,e),t.loop_write_radial_prev(e,e);else{const a=t.loop_read_radial_prev(i);t.loop_write_radial_next(a,e),t.loop_write_radial_prev(e,a),t.loop_write_radial_next(e,i),t.loop_write_radial_prev(i,e)}}function Da(t,e,a,i){let n;return t.edge_read_vertex1(e)===i?(n=t.edge_read_v1_disk_next(e),t.edge_write_v1_disk_next(e,a)):(n=t.edge_read_v2_disk_next(e),t.edge_write_v2_disk_next(e,a)),n}function Ta(t,e,a,i){let n;return t.edge_read_vertex1(e)===i?(n=t.edge_read_v1_disk_prev(e),t.edge_write_v1_disk_prev(e,a)):(n=t.edge_read_v2_disk_prev(e),t.edge_write_v2_disk_prev(e,a)),n}function La(t,e,a,i){const n=Da(t,e,a,i);Da(t,a,n,i),Ta(t,n,a,i),Ta(t,a,e,i)}function qa(t,e,a){const i=function(t,e,a){const i=t.vertex_read_edge(e);if(i===Na)return Na;let n=i;do{const i=t.edge_read_vertex1(n),s=t.edge_read_vertex2(n);if(i===e&&s===a||i===a&&s===e)return n;if(i===e)n=t.edge_read_v1_disk_next(n);else{if(s!==e)throw new Error("Invalid edge, not connected to first vertex");n=t.edge_read_v2_disk_next(n)}}while(n!==i);return Na}(t,e,a);return i!==Na?i:function(t,e,a){const i=t.edge_create();t.edge_write_vertex1(i,e),t.edge_write_vertex2(i,a),t.edge_write_loop(i,Na);const n=t.vertex_read_edge(e);if(n!==Na?La(t,n,i,e):(t.vertex_write_edge(e,i),t.edge_write_v1_disk_next(i,i),t.edge_write_v1_disk_prev(i,i)),e===a)return i;const s=t.vertex_read_edge(a);return s!==Na?La(t,s,i,a):(t.vertex_write_edge(a,i),t.edge_write_v2_disk_next(i,i),t.edge_write_v2_disk_prev(i,i)),i}(t,e,a)}function Oa(t,e,a,i){t.clear();const n=a.length/3;t.vertices_create_continuous(n);for(let e=0;e<n;e++){const i=3*e,n=e;t.vertex_write_coordinate(n,a,i),t.vertex_write_edge(n,Na)}const s=e.length/3;t.faces_create_continuous(s),t.loops.ensure_capacity(3*s),t.edges.ensure_capacity(1.6*s);for(let a=0;a<s;a++){const i=3*a,n=e[i],s=e[i+1],r=e[i+2],o=a,c=qa(t,n,s),h=qa(t,s,r),d=qa(t,r,n),_=t.loop_create(),l=t.loop_create(),f=t.loop_create();t.loop_write_vertex(_,n),t.loop_write_face(_,o),t.loop_write_vertex(l,s),t.loop_write_face(l,o),t.loop_write_vertex(f,r),t.loop_write_face(f,o),Pa(t,_,c),Pa(t,l,h),Pa(t,f,d),t.loop_write_next(_,l),t.loop_write_prev(_,f),t.loop_write_next(l,f),t.loop_write_prev(l,_),t.loop_write_next(f,_),t.loop_write_prev(f,l),t.face_write_loop(o,_)}}function Xa(t,e){const a=t.edge_read_loop(e);return a!==Na&&t.loop_read_radial_next(a)===a}function Ka(t,e,a){const i=t.edge_read_vertex1(e),n=t.edge_read_vertex2(e);return i===a?n:i}Ra.prototype.isBinaryTopology=!0;const Wa=[],Ja=[],Qa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(let t=0,e=64;t<e;++t)Wa[t]=Qa[t],Ja[Qa.charCodeAt(t)]=t;function Ga(t){return Wa[t>>18&63]+Wa[t>>12&63]+Wa[t>>6&63]+Wa[63&t]}function Ya(t,e,a){const i=[];for(let n=e;n<a;n+=3){const e=(t[n]<<16&16711680)+(t[n+1]<<8&65280)+(255&t[n+2]);i.push(Ga(e))}return i.join("")}Ja["-".charCodeAt(0)]=62,Ja["_".charCodeAt(0)]=63;const Ha=16383;class $a{static encode(t){return function(t){const e=t.length,a=e%3,i=[],n=e-a;for(let e=0;e<n;e+=Ha){const a=Ya(t,e,e+Ha>n?n:e+Ha);i.push(a)}if(1===a){const a=t[e-1];i.push(Wa[a>>2]+Wa[a<<4&63]+"==")}else if(2===a){const a=(t[e-2]<<8)+t[e-1];i.push(Wa[a>>10]+Wa[a>>4&63]+Wa[a<<2&63]+"=")}return i.join("")}(new Uint8Array(t))}static decode(t){return function(t){let e;const a=function(t){const e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");let a=t.indexOf("=");return-1===a&&(a=e),[a,a===e?0:4-a%4]}(t),i=a[0],n=a[1],s=new Uint8Array(function(t,e){return 3*(t+e)/4-e}(i,n));let r=0;const o=n>0?i-4:i;let c=0;for(;c<o;c+=4){const a=t.charCodeAt(c),i=t.charCodeAt(c+1),n=t.charCodeAt(c+2),o=t.charCodeAt(c+3);e=Ja[a]<<18|Ja[i]<<12|Ja[n]<<6|Ja[o],s[r++]=e>>16&255,s[r++]=e>>8&255,s[r++]=255&e}if(2===n){const a=t.charCodeAt(c),i=t.charCodeAt(c+1);e=Ja[a]<<2|Ja[i]>>4,s[r++]=255&e}if(1===n){const a=t.charCodeAt(c),i=t.charCodeAt(c+1),n=t.charCodeAt(c+2);e=Ja[a]<<10|Ja[i]<<4|Ja[n]>>2,s[r++]=e>>8&255,s[r++]=255&e}return s}(t).buffer}}const Za={[E.Uint8]:Uint8Array,[E.Uint16]:Uint16Array,[E.Uint32]:Uint32Array,[E.Uint64]:BigUint64Array,[E.Int8]:Int8Array,[E.Int16]:Int16Array,[E.Int32]:Int32Array,[E.Int64]:BigInt64Array,[E.Float16]:Float16Array,[E.Float32]:Float32Array,[E.Float64]:Float64Array};function ti(t){const e=Object.getPrototypeOf(t).constructor;switch(e){case Uint8Array:case Uint8ClampedArray:return E.Uint8;case Uint16Array:return E.Uint16;case Uint32Array:return E.Uint32;case Int8Array:return E.Int8;case Int16Array:return E.Int16;case Int32Array:return E.Int32;case Float16Array:return E.Float16;case Float32Array:return E.Float32;case Array:case Float64Array:return E.Float64;default:throw new Error(`unsupported constructor type ${e.name}`)}}function ei(e,a){if(e===a)return!0;const i=e.length;if(i!==a.length)return!1;const n=e.constructor;if(n!==a.constructor)return!1;if(0===i)return!0;if(i<128)return t(e,a);const s=e.byteLength;if(s!==a.byteLength)return!1;const r=e.buffer,o=a.buffer,c=e.byteOffset,h=a.byteOffset;if(r===o&&c===h)return!0;let d=e,_=a;const l=n.BYTES_PER_ELEMENT,f=y(c,h,s),u="undefined"!=typeof Float16Array&&n===Float16Array||n===Float32Array||n===Float64Array;return!u&&l<4&&4===f?(d=new Uint32Array(r,c,s>>>2),_=new Uint32Array(o,h,s>>>2)):!u&&l<2&&2===f&&(d=new Uint16Array(r,c,s>>>1),_=new Uint16Array(o,h,s>>>1)),t(d,_)}function ai(t,e,a){return(e-t)*a+t}function ii(t,e,a,i,n){return.5*(i-e+(2*e-5*a+4*i-n+(3*(a-i)+n-e)*t)*t)*t+a}function ni(t){const e=0|t;return sa-((t-e)*sa>>>0)^e}const si=new Float64Array(2),ri=new Float64Array(1),oi=new Float64Array(2),ci=new Float64Array(1),hi=new Float64Array(18),di=new Float64Array(9);class _i{version=0;constructor(t=[],e=1,a=0,i=0){if(!Number.isInteger(e)||e<0)throw new Error(`itemSize must be a non-negative integer, instead was ${e}`);if(!Number.isInteger(a)||a<0)throw new Error(`width must be a non-negative integer, instead was ${a}`);if(!Number.isInteger(i)||a<0)throw new Error(`height must be a non-negative integer, instead was ${i}`);if(void 0===t)throw new Error("data was undefined");if(t.length<a*i*e)throw new Error(`Buffer underflow, data.length(=${t.length}) is too small. Expected at least ${a*i*e}`);this.width=a,this.height=i,this.itemSize=e,this.data=t}sampleCatmullRomUV(t,e,a){const i=this.itemSize;for(let n=0;n<i;n++)a[n]=this.sampleChannelCatmullRomUV(t,e,n)}sampleChannelCatmullRomUV(t,e,a){const i=t*this.width-.5,n=e*this.height-.5;return this.sampleChannelCatmullRom(i,n,a)}sampleChannelCatmullRom(t,e,a){const i=oi;return i[0]=t,i[1]=e,this.sampleChannelCatmullRomArray(ci,0,i,0,a),ci[0]}sampleChannelCatmullRomArray(t,e,a,i,n){const s=a[i],r=a[i+1],o=Math.floor(s),c=Math.floor(r),h=s-o,d=r-c,_=h*(h*(1-.5*h)-.5),l=d*(d*(1-.5*d)-.5),f=h*(.5+h*(2-1.5*h)),u=d*(.5+d*(2-1.5*d)),b=h*h*(.5*h-.5),g=d*d*(.5*d-.5),m=1+h*h*(1.5*h-2.5)+f,y=1+d*d*(1.5*d-2.5)+u,p=o-1,w=c-1,v=o+2,A=c+2,x=o+f/m,k=c+u/y,z=hi,j=di;z[0]=p,z[1]=w,z[2]=x,z[3]=w,z[4]=v,z[5]=w,z[6]=p,z[7]=k,z[8]=x,z[9]=k,z[10]=v,z[11]=k,z[12]=p,z[13]=A,z[14]=x,z[15]=A,z[16]=v,z[17]=A;for(let t=0;t<9;t++)this.sampleChannelBilinearArray(j,t,z,2*t,n);let U=0;U+=j[0]*_*l,U+=j[1]*m*l,U+=j[2]*b*l,U+=j[3]*_*y,U+=j[4]*m*y,U+=j[5]*b*y,U+=j[6]*_*g,U+=j[7]*m*g,U+=j[8]*b*g,t[e]=U}sampleBicubicUV(t,e,a){const i=this.itemSize;for(let n=0;n<i;n++)a[n]=this.sampleChannelBicubicUV(t,e,n)}sampleBicubic(t,e,a,i){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBicubic(t,e,s)}sampleChannelBicubicUV(t,e,a){const i=t*this.width,n=e*this.height;return this.sampleChannelBicubic(i-.5,n-.5,a)}sampleChannelBicubic(t,e,a){const i=this.itemSize,n=this.width,s=this.height,c=this.data,h=n*i,d=n-1,_=s-1,l=Je(t,0,d),f=Je(e,0,_),u=0|l,b=0|f,g=l-u,m=f-b,y=r(0,u-1),p=r(0,b-1),w=o(d,u+1),v=o(_,b+1),A=o(d,w+1),x=p*h+a,k=b*h+a,z=v*h+a,j=o(_,v+1)*h+a,U=y*i,E=u*i,F=w*i,I=A*i,C=c[x+U],B=c[x+E],M=c[x+F],S=c[x+I],N=c[k+U],V=c[k+E],R=c[k+F],P=c[k+I],D=c[z+U],T=c[z+E],L=c[z+F],q=c[z+I],O=c[j+U],X=c[j+E],K=c[j+F],W=c[j+I],J=ii(g,C,B,M,S),Q=ii(g,N,V,R,P),G=ii(g,D,T,L,q),Y=ii(g,O,X,K,W);return ii(m,J,Q,G,Y)}sampleBilinearUV(t,e,a,i=0){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBilinearUV(t,e,s)}sampleBilinear(t,e,a,i=0){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBilinear(t,e,s)}sampleChannelBilinearUV(t,e,a){const i=t*this.width-.5,n=e*this.height-.5;return this.sampleChannelBilinear(i,n,a)}sampleChannelBilinear(t,e,a){const i=si;return i[0]=t,i[1]=e,this.sampleChannelBilinearArray(ri,0,i,0,a),ri[0]}sampleChannelBilinearArray(t,e,a,i,n){const s=a[i],r=a[i+1],o=this.itemSize,c=this.width,h=c*o,d=this.height-1,_=Je(s,0,c-1),l=Je(r,0,d),f=_>>>0,u=l>>>0,b=u*h,g=f*o+n,m=b+g;let y,p;y=_===f?f:f+1,p=l===u?u:u+1;const w=this.data,v=w[m];if(f===y&&u===p)return void(t[e]=v);const A=_-f,x=l-u,k=y*o+n,z=p*h,j=z+g,U=z+k,E=w[b+k],F=w[j],I=w[U],C=ai(v,E,A),B=ai(F,I,A);t[e]=ai(C,B,x)}sampleNearestUV(t,e,a){const i=this.width,n=this.height,s=Math.round(t*i-.5),r=Math.round(e*n-.5);this.read(Je(s,0,i-1),Je(r,0,n-1),a)}readChannel(t,e,a){const i=(e*this.width+t)*this.itemSize+a;return this.data[i]}read(t,e,a){const i=this.width,n=this.itemSize,s=(e*i+t)*n;for(let t=0;t<n;t++)a[t]=this.data[s+t]}write(t,e,a){const i=this.width,n=this.itemSize,s=(e*i+t)*n;for(let t=0;t<n;t++)this.data[s+t]=a[t];this.version++}point2index(t,e){return t+e*this.width}index2point(t,e){const a=this.width,i=t%a,n=t/a|0;e.set(i,n)}copy(t,e,a,i,n,s,r){const o=Math.min(s,t.width-e,this.width-i),c=Math.min(r,t.height-a,this.height-n),h=this.itemSize,d=t.itemSize,_=Math.min(h,d),l=h*this.width,f=d*t.width,u=t.data,b=this.data;let g,m,y;for(m=0;m<c;m++){const t=(m+n)*l,s=(m+a)*f;for(g=0;g<o;g++){const a=t+(g+i)*h,n=s+(g+e)*d;for(y=0;y<_;y++)b[a+y]=u[n+y]}}this.version++}zeroFill(t,e,a,i){const n=Je(t,0,this.width),s=Je(e,0,this.height),r=Je(t+a,0,this.width),o=Je(e+i,0,this.height),c=this.data,h=this.itemSize,d=h*this.width,_=n*h,l=r*h;let f;for(f=s;f<o;f++){const t=f*d;c.fill(0,t+_,t+l)}this.version++}channelFill(t,e){const a=this.itemSize,i=this.data,n=i.length;for(let s=t;s<n;s+=a)i[s]=e;this.version++}fill(t,e,a,i,n){const s=this.width,r=this.height,o=Je(t,0,s),c=Je(e,0,r),h=Je(t+a,0,s),d=Je(e+i,0,r),_=this.data,l=this.itemSize,f=l*s;let u,b,g;for(u=c;u<d;u++){const t=u*f;for(b=o;b<h;b++){const e=t+b*l;for(g=0;g<l;g++)_[e+g]=n[g]}}this.version++}writeChannel(t,e,a,i){const n=(e*this.width+t)*this.itemSize+a;this.data[n]=i,this.version++}traverseCircle(t,e,a,i){let n,s;const r=0|t,o=0|e,c=a*a,h=Math.ceil(a);for(s=-h;s<=h;s++){const t=s*s;for(n=-h;n<=h;n++)n*n+t<=c&&i(r+n,o+s,this)}}resize(t,e,a=!0){const i=this.width,n=this.height;if(i===t&&n===e)return;const s=this.itemSize,r=t*e*s,c=this.data,h=new(function(t){if(t instanceof Int8Array)return Int8Array;if(t instanceof Int16Array)return Int16Array;if(t instanceof Int32Array)return Int32Array;if(t instanceof Uint8Array)return Uint8Array;if(t instanceof Uint8ClampedArray)return Uint8ClampedArray;if(t instanceof Uint16Array)return Uint16Array;if(t instanceof Uint32Array)return Uint32Array;if(t instanceof Float16Array)return Float16Array;if(t instanceof Float32Array)return Float32Array;if(t instanceof Float64Array)return Float64Array;if(Array.isArray(t))return Array;throw new TypeError("Unsupported array type")}(c))(r);if(a)if(t===i)h.set(c.subarray(0,Math.min(c.length,r)));else{const a=o(e,n),r=o(t,i);for(let e=0;e<a;e++)for(let a=0;a<r;a++){const n=(e*t+a)*s,r=(e*i+a)*s;for(let t=0;t<s;t++)h[n+t]=c[r+t]}}this.width=t,this.height=e,this.data=h,this.version++}computeByteSize(){let t;const e=this.data;return t=Array.isArray(e)?8*e.length:e.byteLength,t+280}equals(t){return null!=t&&(this===t||this.width===t.width&&this.height===t.height&&this.itemSize===t.itemSize&&ei(this.data,t.data))}hash(){const t=this.itemSize,a=this.width,i=this.height,n=this.data;let s=((65535&a)<<16|65535&i)^t;const r=a*i*t;if(e(n))s^=I(n.buffer,n.byteOffset,n.byteLength);else for(let t=0;t<r;++t)s=(s<<5)-s+ni(n[t]);return s}clone(){let t;return t=Array.isArray(this.data)?this.data.slice():new(0,this.data.constructor)(this.data),new _i(t,this.itemSize,this.width,this.height)}toJSON(){const t=this.data,a=$a.encode(e(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t.buffer);return{height:this.height,width:this.width,itemSize:this.itemSize,type:ti(this.data),data:a}}fromJSON({height:t,width:e,itemSize:a,type:i,data:n}){const s=function(t){const e=Za[t];if(void 0===e)throw new Error(`Unsupported data type '${t}'`);return e}(i);if("string"==typeof n){const t=$a.decode(n);this.data=new s(t)}else{if(!Array.isArray(n))throw new Error("Unsupported data format");this.data=new s(n)}this.height=t,this.width=e,this.itemSize=a}static uint8clamped(t,e,a){const i=new Uint8ClampedArray(e*a*t);return new _i(i,t,e,a)}static uint8(t,e,a){const i=new Uint8Array(e*a*t);return new _i(i,t,e,a)}static uint16(t,e,a){const i=new Uint16Array(e*a*t);return new _i(i,t,e,a)}static uint32(t,e,a){const i=new Uint32Array(e*a*t);return new _i(i,t,e,a)}static int8(t,e,a){const i=new Int8Array(e*a*t);return new _i(i,t,e,a)}static int16(t,e,a){const i=new Int16Array(e*a*t);return new _i(i,t,e,a)}static int32(t,e,a){const i=new Int32Array(e*a*t);return new _i(i,t,e,a)}static float16(t,e,a){const i=new Float16Array(e*a*t);return new _i(i,t,e,a)}static float32(t,e,a){const i=new Float32Array(e*a*t);return new _i(i,t,e,a)}static float64(t,e,a){const i=new Float64Array(e*a*t);return new _i(i,t,e,a)}}function li(t,e,a,i){const n=a[i],s=a[i+1],r=a[i+2];t[e]+=n,t[e+1]+=s,t[e+2]+=r}function fi(t,e,a,i,n,s){const r=3*a,o=3*i,c=3*n,h=s[o],d=s[o+1],_=s[o+2],l=s[c]-h,f=s[c+1]-d,u=s[c+2]-_,b=s[r]-h,g=s[r+1]-d,m=s[r+2]-_;t[e]=f*m-u*g,t[e+1]=u*b-l*m,t[e+2]=l*g-f*b}function ui(t,e,a){return t*t+e*e+a*a}function bi(t,e,a,i){const n=a[i],s=a[i+1],r=a[i+2],o=ui(n,s,r),c=0!==o?1/Math.sqrt(o):1;t[e]=n*c,t[e+1]=s*c,t[e+2]=r*c}_i.prototype.isSampler2D=!0,_i.typeName="Sampler2D";const gi=new Float64Array(3);function mi(t,e,a){const i=a.length;for(let n=0;n<i;n+=3){const i=a[n],s=a[n+1],r=a[n+2];fi(gi,0,i,s,r,t),li(e,3*i,gi,0),li(e,3*s,gi,0),li(e,3*r,gi,0)}!function(t,e=0,a=t.length-e){const i=e+a;for(let a=e;a<i;a+=3)bi(t,a,t,a)}(e)}const yi={build:function(t,e,a,i,n,s){const r=a.x*s,o=a.y*s,c=r-1,h=o-1;let d=0,_=0;const l=r*o,f=new Float32Array(3*l),u=new Float32Array(3*l),b=new Float32Array(2*l);let g,m;const y=a.y/n.y/h,p=a.x/n.x/c,w=e.y/n.y,v=e.x/n.x,A=n.x*i.x,x=n.y*i.y;let k,z,j;for(g=0;g<o;g++){const e=g*y+w;for(j=e*x,m=0;m<r;m++){const a=m*p+v;k=a*A,z=t.sampleChannelBicubicUV(a,e,0),f[d]=k,f[d+1]=z,f[d+2]=j,b[_]=a,b[_+1]=e,d+=3,_+=2}}d=0;const U=new(O(f.length/3))(c*h*6);for(g=0;g<h;g++)for(m=0;m<c;m++){const t=m+r*g,e=m+r*(g+1),a=m+1+r*(g+1),i=m+1+r*g;U[d]=t,U[d+1]=e,U[d+2]=i,U[d+3]=e,U[d+4]=a,U[d+5]=i,d+=6}return mi(f,u,U),{indices:U,vertices:f,normals:u,uvs:b}}};class pi{name="";type=E.Float32;itemSize=1;normalized=!1;static from(t,e,a=!1,i=""){const n=new pi;return n.fromJSON({name:i,type:t,itemSize:e,normalized:a}),n}static fromJSON(t){const e=new pi;return e.fromJSON(t),e}fromJSON({name:t="",type:e,itemSize:a,normalized:i=!1}){this.name=t,this.type=e,this.itemSize=a,this.normalized=i}toJSON(){return{name:this.name,type:this.type,itemSize:this.itemSize,normalized:this.normalized}}toString(){let t="";return""!==this.name&&(t+=`${this.name}:`),t+=`${this.itemSize}x${nt(E,this.type)??this.type}`,this.normalized&&(t+="-norm"),t}hash(){return tt(this.name)}equals(t){return this.type===t.type&&this.itemSize===t.itemSize&&this.normalized===t.normalized&&this.name===t.name}copy(t){this.type=t.type,this.name=t.name,this.itemSize=t.itemSize,this.normalized=t.normalized}clone(){const t=new pi;return t.copy(this),t}getByteSize(){return this.itemSize*D[this.type]}static byName(t,e){return t.name.localeCompare(e.name)}}pi.prototype.isAttributeSpec=!0;class wi{spec=new pi;data;count=0;#J=0;get version(){return this.#J}set needsUpdate(t){t&&this.#J++}get name(){return this.spec.name}get itemSize(){return this.spec.itemSize}equals(t){return this.spec.equals(t.spec)&&this.count===t.count&&ei(this.data,t.data)}hash(){return F(this.spec.hash(),this.count,function(t,e,a,i=31){const n=o(a,1024);return function(t,e,a,i,n){let s=a;for(let e=0;e<a;e+=i)s=(s<<5)-s+n.call(void 0,t[e]);return s>>>0}(t,0,n,Math.max(1,Math.ceil(n/i)),ni)}(this.data,0,this.data.length))}copy(t){this.spec.copy(t.spec),this.count=t.count;const e=t.data.constructor;this.data=new e(t.data)}clone(){const t=new wi;return t.copy(this),t}static from(t,e=1,a=""){const i=ti(t),n=new wi;return n.spec.type=i,n.spec.name=a,n.spec.itemSize=e,n.count=t.length/e,n.data=t,n}get memory_usage_bytes(){let t=0;return void 0!==this.data&&null!==this.data&&(t=this.data.byteLength),t}}function vi(t){return t*t}function Ai(t,e,a){let i=0;for(let n=0;n<a;n++)i+=t[n]*e[n];return i}wi.prototype.isAttribute=!0;class xi{constructor(t,e){const a=Za[e];if(void 0===a)throw new Error(`Unsupported type '${e}'`);this.size=t,this.type=e,this.data=new a(t*t)}get n(){return this.size}get length(){return this.size*this.size}get val(){return this.data}fill(t){this.data.fill(t)}subtract(t){this.subtractMatrices(this,t)}subtractMatrices(t,e){const a=this.size,i=a*a,n=t.data,s=e.data,r=this.data;for(let t=0;t<i;t++)r[t]=n[t]-s[t]}negate(){const t=this.data,e=t.length;for(let a=0;a<e;a++)t[a]=-t[a]}clear(){this.data.fill(0)}eye(){const t=this.size;for(let e=0;e<t;e++)this.data[e*(t+1)]=1}copy(t){this.data.set(t.data)}clone(){const t=new xi(this.size,this.type);return t.copy(this),t}transpose(){const t=this.size;for(let e=0;e<t;e++)for(let a=e+1;a<t;a++){const t=this.getCellValue(a,e),i=this.getCellValue(e,a);this.setCellValue(a,e,i),this.setCellValue(e,a,t)}}fromArray(t){this.data.set(t)}toArray(t=new Array(this.length),e=0){return i(this.data,0,t,e,this.length),t}setCellValue(t,e,a){this.data[this.size*e+t]=a}getCellValue(t,e){return this.data[this.size*e+t]}readDiagonal(t){const e=this.size,a=this.data;for(let i=0;i<e;i++)t[i]=a[i*(e+1)]}}function ki(t,e,a,i,n){let s=0;for(let r=0;r<n;r++)s+=t[e+r]*a[i+r];return s}function zi(t,e,a,i,n,s){for(let r=0;r<s;++r)t[e+r]+=a*i[n+r]}function ji(t,e,a){if(0===e)a[0]=1,a[1]=0;else if(Math.abs(e)>Math.abs(t)){const i=t/e,n=1/Math.sqrt(1+i*i);a[0]=n*i,a[1]=n}else{const i=e/t,n=1/Math.sqrt(1+i*i);a[0]=n,a[1]=n*i}}function Ui(t,e,a,i,n,s){for(let r=0;r<s;++r){const s=t[e+r],o=t[a+r];t[e+r]=i*s+n*o,t[a+r]=i*o-n*s}}class Ei{constructor(t,e,a){this.S=e,this.membership=he.fixedSize(e.size()),this.dim=t,this.members=new Int32Array(t+1),this.Q=new xi(t,E.Float64),this.Q.eye(),this.R=new xi(t,E.Float64),this.u=new Float64Array(t),this.w=new Float64Array(t),this.r=0,this.cs=new Float64Array(2),this.membership.set(a,!0),this.members[this.r]=a}dimension(){return this.dim}size(){return this.r+1}isMember(t){return this.membership.get(t)}anyMember(){return this.members[this.r]}globalIndex(t){return this.members[t]}ind(t,e){return t*this.dim+e}origin(){return this.members[this.r]}appendColumn(){const t=this.dim,e=this.u,a=this.Q.data,i=this.R.data,n=this.cs,s=this.r*t;for(let n=0;n<t;++n)i[s+n]=ki(a,n*t,e,0,t);for(let e=t-1;e>this.r;--e){ji(i[s+e-1],i[s+e],n);const r=n[0],o=n[1];i[s+e-1]=r*i[s+e-1]+o*i[s+e],Ui(a,(e-1)*t,e*t,r,o,t)}}add(t){let e=this.origin();const a=this.dim,i=this.u,n=this.S;for(let s=0;s<a;++s)i[s]=n.coord(t,s)-n.coord(e,s);this.appendColumn(),this.membership.set(t,!0),this.members[this.r+1]=this.members[this.r],this.members[this.r]=t,++this.r}shortestVectorToSpan(t,e){const a=this.origin(),i=this.dim,n=this.S;for(let s=0;s<i;++s)e[s]=n.coord(a,s)-t[s];const s=this.Q.data,r=this.r;for(let t=0;t<r;++t){const a=t*i;zi(e,0,-ki(e,0,s,a,i),s,a,i)}return ki(e,0,e,0,i)}representationError(){const t=this.size(),e=new Float64Array(t),a=this.dim,i=new Float64Array(a);let n=0;for(let s=0;s<t;++s){for(let t=0;t<a;++t)i[t]=this.S.coord(this.globalIndex(s),t);this.findAffineCoefficients(i,e);let r=Math.abs(e[s]-1);r>n&&(n=r);for(let t=0;t<s;++t)r=Math.abs(e[t]),r>n&&(n=r);for(let a=s+1;a<t;++a)r=Math.abs(e[a]),r>n&&(n=r)}return n}findAffineCoefficients(t,e){let a=this.origin();const i=this.dim,n=this.u;for(let e=0;e<i;++e)n[e]=t[e]-this.S.coord(a,e);const s=this.w,r=this.Q.data;for(let t=0;t<i;++t)s[t]=ki(r,t*i,n,0,i);let o=1;const c=this.R.data,h=this.r;for(let t=h-1;t>=0;--t){const a=t*i;for(let a=t+1;a<h;++a)s[t]-=e[a]*c[a*i+t];const n=s[t]/c[a+t];e[t]=n,o-=n}e[h]=o}hessenberg_clear(t){let e=t;const a=this.R.data,i=this.Q.data,n=this.dim,s=this.cs,r=this.r;for(;e<r;++e){const t=e*n;ji(a[t+e],a[t+e+1],s);const o=s[0],c=s[1];a[t+e]=o*a[t+e]+c*a[t+e+1];for(let t=e+1;t<r;++t){const i=t*n,s=a[i+e],r=a[i+e+1];a[i+e]=o*s+c*r,a[i+e+1]=o*r-c*s}Ui(i,t,t+n,o,c,n)}}special_rank_1_update(){const t=this.dim,e=this.w,a=this.u,i=this.Q.data,n=this.R.data,s=this.cs,r=this.r;for(let n=0;n<t;++n)e[n]=ki(i,n*t,a,0,t);for(let a=t-1;a>0;--a){ji(e[a-1],e[a],s);const o=s[0],c=s[1];e[a-1]=o*e[a-1]+c*e[a];const h=(a-1)*t;n[h+a]=-c*n[h+a-1],n[h+a-1]*=o;for(let e=a;e<r;++e){const i=e*t,s=n[i+a-1],r=n[i+a];n[i+a-1]=o*s+c*r,n[i+a]=o*r-c*s}Ui(i,h,h+t,o,c,t)}const o=e[0];for(let e=0;e<r;++e)n[e*t]+=o;this.hessenberg_clear(0)}remove(t){if(this.membership.clear(this.globalIndex(t)),t===this.r){let t=this.origin(),e=this.globalIndex(this.r-1);const a=this.dim,i=this.S,n=this.u;for(let s=0;s<a;++s)n[s]=i.coord(t,s)-i.coord(e,s);--this.r,this.special_rank_1_update()}else{const e=this.R.data,a=this.dim,i=this.members,n=t*a,s=(t+1)*a,r=this.r*a;e.copyWithin(n,s,r);for(let e=t+1;e<this.r;++e)i[e-1]=i[e];i[this.r-1]=i[this.r],--this.r,this.hessenberg_clear(t)}}}class Fi{iteration=0;distToAff=0;distToAffSquare=0;__squaredRadius=0;__radius=0;stopper=0;constructor(t){this.S=t,this.__size=this.S.size();const e=this.S.dimension();this.dim=e;const a=new ArrayBuffer(8*(4*e+1));this.__center=new Float64Array(a,0,e),this.centerToAff=new Float64Array(a,8*e,e),this.centerToPoint=new Float64Array(a,16*e,e),this.lambdas=new Float64Array(a,24*e,e+1),this.__support=this.initBall(),this.compute()}isEmpty(){return 0===this.__size}radius(){return this.__radius}center(){return this.__center}get support(){return this.__support}size(){return this.__size}initBall(){let t,e;const a=this.dim,i=this.__center,n=this.S;for(t=0;t<a;++t)i[t]=n.coord(0,t);this.__squaredRadius=0;let s=0;const r=n.size();for(e=1;e<r;++e){let r=0;for(t=0;t<a;++t)r+=vi(n.coord(e,t)-i[t]);r>=this.__squaredRadius&&(this.__squaredRadius=r,s=e)}return this.__radius=Math.sqrt(this.__squaredRadius),new Ei(this.dim,n,s)}computeDistToAff(){this.distToAffSquare=this.__support.shortestVectorToSpan(this.__center,this.centerToAff),this.distToAff=Math.sqrt(this.distToAffSquare)}updateRadius(){const t=this.__support.anyMember();this.__squaredRadius=0;const e=this.dim,a=this.__center,i=this.S;for(let n=0;n<e;++n)this.__squaredRadius+=vi(i.coord(t,n)-a[n]);this.__radius=Math.sqrt(this.__squaredRadius)}compute(){const t=this.__center,e=this.__support,a=this.dim,i=this.centerToAff;for(this.iteration=0;this.iteration<1e4;this.iteration++){for(this.computeDistToAff();this.distToAff<=1e-14*this.__radius||e.size()===a+1;){if(!this.successfulDrop())return;this.computeDistToAff()}const n=this.findStopFraction();if(this.stopper>=0){for(let e=0;e<a;++e)t[e]+=n*i[e];this.updateRadius(),e.add(this.stopper)}else{for(let e=0;e<a;++e)t[e]+=i[e];if(this.updateRadius(),!this.successfulDrop())return}}}successfulDrop(){const t=this.lambdas,e=this.__support;e.findAffineCoefficients(this.__center,t);let a=0,i=1;const n=e.size();for(let e=0;e<n;++e){const n=t[e];n<i&&(i=n,a=e)}return i<=0&&(e.remove(a),!0)}findStopFraction(){let t,e,a=1;this.stopper=-1;const i=this.dim,n=this.__center,s=this.S,r=this.__support,o=this.centerToPoint,c=this.centerToAff,h=this.distToAffSquare,d=this.__squaredRadius,_=this.__size,l=1e-14*this.__radius*this.distToAff;for(e=0;e<_;++e){if(r.isMember(e))continue;for(t=0;t<i;++t)o[t]=s.coord(e,t)-n[t];const _=Ai(c,o,i);if(h-_<l)continue;const f=(d-Ai(o,o,i))/2/(h-_);f>0&&f<a&&(a=f,this.stopper=e)}return a}toString(){let t="Miniball [";if(this.isEmpty())t+="isEmpty=true";else{t+="center=(";for(let e=0;e<this.dim;++e)t+=this.__center[e],e<this.dim-1&&(t+=", ");t+=`), radius=${this.__radius}, squaredRadius=${this.__squaredRadius}`}return t+="]",t}}class Ii{constructor(t,e,a){this.__data=a,this.__size=t,this.__dimensions=e}size(){return this.__size}dimension(){return this.__dimensions}coord(t,e){return this.__data[t*this.__dimensions+e]}}function Ci(t,e,a){return Math.sqrt(t*t+e*e+a*a)}function Bi(t,e,a,i,n,s){const r=3*a,o=3*i,c=3*n;return function(t,e,a,i,n,s,r,o,c,h,d){const _=c-s,l=h-r,f=d-o,u=a-s,b=i-r,g=n-o,m=l*g-f*b,y=f*u-_*g,p=_*b-l*u,w=ui(m,y,p);if(0===w)return t[e]=0,t[e+1]=1,t[e+2]=0,!1;const v=1/Math.sqrt(w),A=m*v,x=y*v,k=p*v;return t[e]=A,t[e+1]=x,t[e+2]=k,!0}(t,e,s[r],s[r+1],s[r+2],s[o],s[o+1],s[o+2],s[c],s[c+1],s[c+2])}const Mi=new Float64Array(3);function Si(t,e,a,i,n,s,r,o,c){return(e*s-a*n)*r+(a*i-t*s)*o+(t*n-e*i)*c<0?-1:1}function Ni(t,e,a,i,n){let s,r,o,c,h,d;if(a<0){const i=1/(1-a),n=t*e*i;s=1-t*t*i,r=-n,o=t,c=n,h=e*e*i-1,d=-e}else{const i=1/(1+a),n=-t*e*i;s=1-t*t*i,r=n,o=-t,c=n,h=1-e*e*i,d=-e}const _=Si(t,e,a,s,r,o,c,h,d),l=4*i;n[l]=s,n[l+1]=r,n[l+2]=o,n[l+3]=_}const Vi=function(t,e,a,i,n){t[e]+=a,t[e+1]+=i,t[e+2]+=n};function Ri(t,e,a,i,n,s){return t*i+e*n+a*s}let Pi=0;class Di{#Q=Pi++;get id(){return this.#Q}name="";attributes=[];index=null;bounding_box=new Float32Array(6);bounding_sphere=new Float32Array(4);flags=1;#J=0;get version(){return this.#J}set needsUpdate(t){t&&this.#J++}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}equals(t){return this===t||this.name===t.name&&((e=this.index)===(a=t.index)||void 0!==e&&void 0!==a&&null!==e&&null!==a&&typeof e==typeof a&&e.equals(a))&&Zt(this.attributes,t.attributes);var e,a}hash(){return F(tt(this.name),null==(t=this.index)?0:t.hash(),Z(this.attributes,q));var t}getAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.spec.name===t)return a}}hasAttribute(t){return void 0!==this.getAttribute(t)}setAttribute(t){this.hasAttribute(t.spec.name)&&this.removeAttribute(t.spec.name),this.addAttribute(t)}addAttribute(t){this.attributes.push(t)}removeAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.spec.name===t)return e.splice(i,1),a}}getVertexCount(){const t=this.attributes;return 0===t.length?0:t[0].count}getIndexCount(){const t=this.index;return null!=t?t.count:this.getVertexCount()}getPrimitiveCount(){return this.getIndexCount()/3}ensureIndex(){null===this.index&&this.buildIndex()}buildIndex(){const t=this.getVertexCount(),e=new Uint32Array(t);for(let a=0;a<t;a++)e[a]=a;this.index=wi.from(e,1,Ae)}ensureBounds(){this.getFlag(1)&&this.computeBoundingShapes()}computeBoundingSphereFromBox(){const t=this.bounding_box,e=t[0],a=t[3],i=t[1],n=t[4],s=t[2],r=t[5];this.bounding_sphere[0]=.5*(e+a),this.bounding_sphere[1]=.5*(i+n),this.bounding_sphere[2]=.5*(s+r),this.bounding_sphere[3]=.5*function(t,e,a,i,n,s){return Ci(i-t,n-e,s-a)}(e,i,s,a,n,r)}computeBoundingSphere(){const t=this.getAttribute(xe),e=new Ii(t.count,3,t.data),a=new Fi(e),i=a.center();this.bounding_sphere[0]=i[0],this.bounding_sphere[1]=i[1],this.bounding_sphere[2]=i[2],this.bounding_sphere[3]=a.radius()}computeBoundingShapes(){this.computeBoundingBox(),this.computeBoundingSphereFromBox(),this.clearFlag(1)}computeBoundingBox(){const t=this.getAttribute(xe);ht(this.bounding_box,t.data,t.count*t.spec.itemSize),this.clearFlag(1)}ensureNormals(){void 0===this.getAttribute(ke)&&this.computeNormals()}computeNormals(){const t=this.getVertexCount(),e=this.getAttribute(xe);let a=this.getAttribute(ke);void 0===a?(a=wi.from(new Float32Array(3*t),3,ke),this.addAttribute(a)):a.data.fill(0,0,3*t);const n=this.index;null===n?function(t,e,a){for(let n=0;n<a;n+=3){const a=n,s=n+1,r=n+2;Bi(Mi,0,a,s,r,t),i(Mi,0,e,3*a,3),i(Mi,0,e,3*s,3),i(Mi,0,e,3*r,3)}}(e.data,a.data,t):mi(e.data,a.data,n.data)}#G(){if(!this.hasAttribute(ze)){const t=this.getVertexCount();this.addAttribute(wi.from(new Float32Array(4*t),4,ze))}return this.getAttribute(ze)}#Y(){const t=this.index,e=this.getAttribute(xe),a=this.getAttribute(ke),i=this.getAttribute(je);if(null===t||void 0===e||void 0===a||void 0===i)throw new Error(" .computeTangents() failed. Missing required attributes (index, position, normal or uv)");const n=e.data,s=i.data,r=a.data,o=this.#G().data,c=e.count;!function(t,e,a,i,n,s,r){const o=new Float32Array(3*a),c=new Float32Array(3*a);for(let a=0;a<t;a+=3){const t=e[a],s=e[a+1],r=e[a+2],h=t<<1,d=i[h],_=i[h+1],l=s<<1,f=r<<1,u=i[l]-d,b=i[l+1]-_,g=i[f]-d,m=i[f+1]-_,y=u*m-g*b;if(0===y)continue;const p=1/y,w=h+t,v=n[w],A=n[w+1],x=n[w+2],k=l+s,z=f+r,j=n[k]-v,U=n[k+1]-A,E=n[k+2]-x,F=n[z]-v,I=n[z+1]-A,C=n[z+2]-x,B=(j*m-F*b)*p,M=(U*m-I*b)*p,S=(E*m-C*b)*p,N=(F*u-j*g)*p,V=(I*u-U*g)*p,R=(C*u-E*g)*p;Vi(o,w,B,M,S),Vi(o,k,B,M,S),Vi(o,z,B,M,S),Vi(c,w,N,V,R),Vi(c,k,N,V,R),Vi(c,z,N,V,R)}for(let t=0;t<a;t++){const e=3*t,a=s[e],i=s[e+1],n=s[e+2],h=o[e],d=o[e+1],_=o[e+2];if(0===h&&0===d&&0===_){Ni(a,i,n,t,r);continue}const l=c[e],f=c[e+1],u=c[e+2],b=Ri(a,i,n,h,d,_);let g=h-a*b,m=d-i*b,y=_-n*b;const p=Ci(g,m,y);if(!(p>1e-6*Ci(h,d,_))){Ni(a,i,n,t,r);continue}const w=1/p;g*=w,m*=w,y*=w;const v=Si(a,i,n,g,m,y,l,f,u),A=t<<2;r[A]=g,r[A+1]=m,r[A+2]=y,r[A+3]=v}}(t.count,t.data,c,s,n,r,o)}#H(){const t=this.getAttribute(ke),e=this.#G().data,a=t.data,i=this.getVertexCount();for(let t=0;t<i;t++){const i=3*t;Ni(a[i],a[i+1],a[i+2],t,e)}}ensureTangents(){void 0===this.getAttribute(ze)&&this.computeTangents()}computeTangents(){this.ensureNormals(),this.hasAttribute(je)&&this.hasAttribute(xe)&&this.hasAttribute(ke)?this.#Y():this.#H()}copy(t){this.name=t.name,this.index=function(t){if(void 0!==t)return null===t?null:"object"!=typeof t?t:t.clone()}(t.index),this.attributes=t.attributes.map(t=>t.clone()),this.flags=t.flags,this.bounding_sphere.set(t.bounding_sphere),this.bounding_box.set(t.bounding_box)}clone(){const t=new Di;return t.copy(this),t}update(){this.ensureBounds()}get memory_usage_bytes(){let t=0;null!==this.index&&(t+=this.index.memory_usage_bytes);for(const e of this.attributes)t+=e.memory_usage_bytes;return t}}Di.prototype.isGeometry=!0,self.Lib={build_bvh(t,e){const a=new m;return function(t,e,a){!function(t,e,a,i,n,s,r){t.setLeafCount(e),t.initialize_structure();for(let i=0;i<e;i++)ka(ja,0,a,0,3,0,r,i),za(t,i,ja,0,1,2);t.build()}(t,a.length/3,e,0,0,0,a)}(a,t,e),a},Sampler2D:_i,BufferedGeometryArraysBuilder:yi,tensionOptimizeUV:function(t,e,a,i=3){const n=new Ra;null==a?function(t,e){const a=e.length/9,i=new Uint32Array(3*a);for(let t=0;t<i.length;t++)i[t]=t;Oa(t,i,e)}(n,t):Oa(n,a,t);const s=t.length/3;for(let a=0;a<i;a++)t:for(let a=0;a<s;a++){const i=n.vertex_read_edge(a);if(i===Na)continue;const s=3*a,r=t[s],o=t[s+1],c=t[s+2];let h=0,d=0,_=0,l=i;do{if(Xa(n,l))continue t;const i=Ka(n,l,a),s=3*i,f=r-t[s],u=o-t[s+1],b=c-t[s+2],g=f*f+u*u+b*b;if(0!==g){const t=1/g,a=2*i;h+=e[a]*t,d+=e[a+1]*t,_+=t}l=n.edge_read_vertex1(l)===a?n.edge_read_v1_disk_next(l):n.edge_read_v2_disk_next(l)}while(l!==i);if(0===_)continue;const f=h/_,u=d/_,b=2*a;e[b]=f,e[b+1]=u}},sampler2d_channel_compute_min:function(t,e=0){const a=t.itemSize,i=t.data,n=i.length;if(0===n)return;let s=i[e],r=e;for(let t=e+a;t<n;t+=a){const e=i[t];s>e&&(s=e,r=t)}const o=t.width,c=r/a|0;return{index:r,value:s,x:c%o,y:c/o|0}},sampler2d_channel_compute_max:function(t,e=0){const a=t.itemSize,i=t.data,n=i.length;if(0===n)return;let s=i[e],r=e;for(let t=e+a;t<n;t+=a){const e=i[t];s<e&&(s=e,r=t)}const o=t.width,c=r/a|0;return{index:r,value:s,x:c%o,y:c/o|0}},tile_geometry_to_meshlets:function(t,e=""){const a=new Di;return a.name=e,a.addAttribute(wi.from(t.vertices,3,xe)),a.addAttribute(wi.from(t.normals,3,ke)),a.addAttribute(wi.from(t.uvs,2,je)),a.index=wi.from(t.indices,1,Ae),function(t,e=new ia){return t.ensureBounds(),t.computeBoundingSphereFromBox(),e.name=t.name,e.primitive_count=t.getPrimitiveCount(),e.bounding_box.set(t.bounding_box),e.bounding_sphere.set(t.bounding_sphere),e.meshlets.build(t),e.meshlets.compress(),e.bvh=Aa(e.meshlets,e.primitive_count,t.bounding_box),e}(a)},meshlet_geometry_to_bytes:function(t){const e=new k;return xa.serialize(e,t),e.trim(),e.data}};
|
|
1
|
+
function t(t,e){const a=t.length;if(a!==e.length)return!1;for(let i=0;i<a;i++)if(t[i]!==e[i])return!1;return!0}function e(t){if("object"!=typeof t)return!1;if(null===t)return!1;const e=t.constructor;return e===Uint8Array||e===Uint8ClampedArray||e===Uint16Array||e===Uint32Array||e===Int8Array||e===Int16Array||e===Int32Array||e===Float16Array||e===Float32Array||e===Float64Array||e===BigUint64Array||e===BigInt64Array}function a(t){let e=t-1;return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e}function i(t,e,a,i,n){let s,r,o;for(o=0;o<n;o++)s=e+o,r=i+o,a[r]=t[s]}function n(t,e,a,i,n){for(let s=0;s<n;s++){const n=e+s,r=i+s,o=a[r];a[r]=t[n],t[n]=o}}const s=new Uint32Array(781250);function r(t,e){return t<e?e:t}function o(t,e){return t<e?t:e}function c(t,e,a,i,n,s){const c=a[i+0],h=a[i+1],d=a[i+2],_=a[i+3],l=a[i+4],f=a[i+5],u=n[s+0],b=n[s+1],g=n[s+2],m=n[s+3],y=n[s+4],p=n[s+5],w=o(c,u),v=o(h,b),A=o(d,g),x=r(_,m),k=r(l,y),z=r(f,p);t[e+0]=w,t[e+1]=v,t[e+2]=A,t[e+3]=x,t[e+4]=k,t[e+5]=z}function h(t,e,a,i,n,s,r,o){t[e]=a,t[e+1]=i,t[e+2]=n,t[e+3]=s,t[e+4]=r,t[e+5]=o}function d(t,e,a,i,n,s){const r=i-t,o=s-a;return(n-e)*(r+o)+o*r}function _(t){return t<0?0:t>1?1:t}function l(t){let e=t;return e=50331903&(e|e<<16),e=50393103&(e|e<<8),e=51130563&(e|e<<4),e=153391689&(e|e<<2),e}function f(t,e,a,i){const n=i[0],s=i[1],r=i[2],o=i[3]-n,c=i[4]-s,h=i[5]-r;return function(t,e,a){const i=1023*_(t),n=1023*_(e),s=1023*_(a);return function(t,e,a){return l(t)|l(e)<<1|l(a)<<2}(Math.round(i),Math.round(n),Math.round(s))}((t-n)*(0!==o?1/o:0),(e-s)*(0!==c?1/c:0),(a-r)*(0!==h?1/h:0))}function u(t,e,a){const i=t[a],n=t[a+1],s=t[a+2];h(t,e,i,n,s,i,n,s)}function b(t,e,a){const i=t[e],n=t[e+1],s=t[e+2];return f(.5*(i+t[e+3]),.5*(n+t[e+4]),.5*(s+t[e+5]),a)}s.pointer=0;const g=s;class m{__data_buffer;__data_float32;__data_uint32;__node_count_binary=0;__node_count_leaf=0;constructor(){this.data=new ArrayBuffer(320)}estimateByteSize(){return this.data.byteLength+248}getTotalBoxCount(){return this.__node_count_binary+this.__node_count_leaf}get binary_node_count(){return this.__node_count_binary}get leaf_node_count(){return this.__node_count_leaf}getLeafBlockAddress(){return 6*this.__node_count_binary}get float32(){return this.__data_float32}get uint32(){return this.__data_uint32}set data(t){this.__data_buffer=t,this.__data_float32=new Float32Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer)}get data(){return this.__data_buffer}getNodeAddress(t){const e=this.__node_count_binary,a=t-e;return a<0?6*t:6*e+7*a}initialize_structure(){const t=4*(6*this.__node_count_binary+7*this.__node_count_leaf);this.__data_buffer.byteLength<t&&(this.data=new ArrayBuffer(t))}setLeafCount(t){this.__node_count_leaf=t;const e=a(t);this.__node_count_binary=t<=1?e:e-1}getLeafAddress(t){return 7*t+6*this.__node_count_binary}setLeafData(t,e,a,i,n,s,r,o){const c=this.getLeafAddress(t);h(this.__data_float32,c,a,i,n,s,r,o),this.__data_uint32[c+6]=e}readBounds(t,e,a){i(this.__data_float32,t,e,a,6)}readLeafPayload(t){const e=this.getLeafBlockAddress()+7*t+6;return this.__data_uint32[e]}compute_total_surface_area(){let t=0;const e=new Float32Array(6);for(let a=0;a<this.getTotalBoxCount();a++){let i;i=a<this.__node_count_binary?6*a:7*(a-this.__node_count_binary)+this.getLeafBlockAddress(),this.readBounds(i,e,0),t+=d(e[0],e[1],e[2],e[3],e[4],e[5])}return t}sort_morton(t){const e=6*this.__node_count_binary;if(this.__node_count_leaf<2)return;const a=g.pointer;let i,n,s=a;g[s++]=0,g[s++]=this.__node_count_leaf-1;const r=this.__data_float32;for(;s>a;){s-=2;const a=g[s+1],o=g[s];i=o,n=a;const c=b(r,7*(o+a>>1)+e,t);for(;i<=n;){for(;b(r,7*i+e,t)<c;)i++;for(;b(r,7*n+e,t)>c;)n--;i<=n&&(i!==n&&this.__swap_leaves(i,n),i++,n--)}o<n&&(g[s++]=o,g[s++]=n),i<a&&(g[s++]=i,g[s++]=a)}}__swap_leaves(t,e){const a=this.getLeafBlockAddress(),i=7*t+a,s=7*e+a;n(this.__data_float32,i,this.__data_float32,s,7)}build(){const t=this.__node_count_binary,e=6*t;let a,n,s,r,o=Math.floor(Math.log(t)/Math.log(2));s=Math.pow(2,o),n=6*(s-1);const h=this.__node_count_leaf,d=this.__data_float32;for(a=0;a<s;a++){const t=a<<1,s=t+1,r=e+7*t;s<h?c(d,n,d,r,d,e+7*s):t<h?i(d,r,d,n,6):u(this.__data_float32,n,n-6),n+=6}for(o--;o>=0;o--)for(s=1<<o,r=s-1,a=0;a<s;a++){const t=6*(1+(r<<1));c(d,6*r,d,t,d,t+6),r++}}}function y(t,e,a){const i=t|e|a;return 3&i?1&i?1:2:4}function p(t,e,a,i,n){let s,r;const o=y(e,i,n);4===o?(s=new Uint32Array(t,e,n>>>2),r=new Uint32Array(a,i,n>>>2)):2===o?(s=new Uint16Array(t,e,n>>>1),r=new Uint16Array(a,i,n>>>1)):(s=new Uint8Array(t,e,n),r=new Uint8Array(a,i,n)),r.set(s)}function w(t){return t+(4-t%4)%4}const v={BigEndian:!1,LittleEndian:!0},A=new Float32Array(1),x=new Int32Array(A.buffer);class k{endianness=v.LittleEndian;position=0;get length(){throw new Error("Deprecated, use 'capacity' instead")}set length(t){throw new Error("Deprecated, use 'capacity' instead")}capacity=1024;data=new ArrayBuffer(1024);dataView=new DataView(this.data);__data_uint8=new Uint8Array(this.data);__growFactor=1.1;get raw_bytes(){return this.__data_uint8}fromArrayBuffer(t){this.data=t,this.dataView=new DataView(t),this.__data_uint8=new Uint8Array(t),this.capacity=t.byteLength,this.position=0}trim(){return this.setCapacity(this.position),this}skip(t){this.position+=t}setCapacity(t){if(t<this.position)throw new Error(`Attempting to set capacity(=${t}) below current position(=${this.position})`);if(this.capacity===t)return;const e=this.__data_uint8,a=new Uint8Array(t),i=Math.min(e.buffer.byteLength,a.buffer.byteLength);i>0&&p(e.buffer,0,a.buffer,0,i),this.data=a.buffer,this.__data_uint8=a,this.dataView=new DataView(this.data),this.capacity=t}ensureCapacity(t){const e=this.capacity;if(e>=t)return;const a=w(Math.ceil(Math.max(t,e*this.__growFactor,e+1024)));this.setCapacity(a)}readFloat16(){return function(t){let e=0;const a=(31744&t)>>10,i=1023&t;let n=1;return t>>15&&(n=-1),e=0!==a?31===a?0!==i?NaN:Infinity*n:n*Math.pow(2,a-15)*(1+i/1024):n*(i/1024*6103515625e-14),e}(this.readUint16())}readFloat32(){const t=this.dataView.getFloat32(this.position,this.endianness);return this.position+=4,t}readFloat64(){const t=this.dataView.getFloat64(this.position,this.endianness);return this.position+=8,t}readInt8(){const t=this.dataView.getInt8(this.position);return this.position+=1,t}readInt16(){const t=this.dataView.getInt16(this.position,this.endianness);return this.position+=2,t}readInt16LE(){const t=this.dataView.getInt16(this.position,v.LittleEndian);return this.position+=2,t}readInt16BE(){const t=this.dataView.getInt16(this.position,v.BigEndian);return this.position+=2,t}readInt32(){const t=this.dataView.getInt32(this.position,this.endianness);return this.position+=4,t}readInt32LE(){const t=this.dataView.getInt32(this.position,v.LittleEndian);return this.position+=4,t}readInt32BE(){const t=this.dataView.getInt32(this.position,v.BigEndian);return this.position+=4,t}readInt64(){const t=this.dataView.getBigInt64(this.position,this.endianness);return this.position+=8,t}readUint8(){const t=this.dataView.getUint8(this.position);return this.position+=1,t}readUint16(){const t=this.dataView.getUint16(this.position,this.endianness);return this.position+=2,t}readUint16LE(){const t=this.dataView.getUint16(this.position,v.LittleEndian);return this.position+=2,t}readUint16BE(){const t=this.dataView.getUint16(this.position,v.BigEndian);return this.position+=2,t}readUint24(){return this.endianness===v.BigEndian?this.readUint24BE():this.readUint24LE()}readUint24LE(){const t=this.dataView.getUint8(this.position),e=this.dataView.getUint8(this.position+1),a=this.dataView.getUint8(this.position+2);return this.position+=3,t|e<<8|a<<16}readUint24BE(){const t=this.dataView.getUint8(this.position),e=this.dataView.getUint8(this.position+1),a=this.dataView.getUint8(this.position+2);return this.position+=3,a|e<<8|t<<16}readUint32(){const t=this.dataView.getUint32(this.position,this.endianness);return this.position+=4,t}readUint32LE(){const t=this.dataView.getUint32(this.position,v.LittleEndian);return this.position+=4,t}readUint32BE(){const t=this.dataView.getUint32(this.position,v.BigEndian);return this.position+=4,t}readUint64(){const t=this.dataView.getBigUint64(this.position,this.endianness);return this.position+=8,t}readUint8Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint8()}readUint16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint16()}readUint32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint32()}readInt8Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt8()}readInt16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt16()}readInt32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt32()}readFloat32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat32()}readFloat64Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat64()}writeFloat32Array(t,e,a){for(let i=0;i<a;i++)this.writeFloat32(t[i+e])}writeFloat64Array(t,e,a){const i=this.position+8*a;this.ensureCapacity(i);const n=this.dataView,s=this.endianness;let r=this.position;for(let i=0;i<a;i++)n.setFloat64(r,t[e+i],s),r+=8;this.position=i}writeFloat16Array(t,e,a){for(let i=0;i<a;i++)this.writeFloat16(t[i+e])}readFloat16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat16()}writeFloat16(t){const e=function(t){let e=t;Number.isFinite(e)&&(e>65504||e<-65504)&&(e=e>0?65504:-65504),A[0]=e;const a=x[0];let i=a>>16&32768,n=a>>12&2047;const s=a>>23&255;return s<103?i:s>142?(i|=31744,255===s&&8388607&a&&(i|=512),i):s<113?(n|=2048,i|=(n>>114-s)+(n>>113-s&1),i):(i|=s-112<<10|n>>1,i+=1&n,i)}(t);this.writeUint16(e)}writeFloat32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setFloat32(this.position,t,this.endianness),this.position=e}writeFloat64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setFloat64(this.position,t,this.endianness),this.position=e}writeInt8(t){const e=this.position+1;this.ensureCapacity(e),this.dataView.setInt8(this.position,t),this.position=e}writeInt16(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,this.endianness),this.position=e}writeInt16BE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,v.BigEndian),this.position=e}writeInt16LE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,v.LittleEndian),this.position=e}writeInt32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,this.endianness),this.position=e}writeInt32BE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,v.BigEndian),this.position=e}writeInt32LE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,v.LittleEndian),this.position=e}writeInt64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setBigInt64(this.position,t,this.endianness),this.position=e}writeInt8Array(t,e,a){this.ensureCapacity(this.position+a);for(let i=0;i<a;i++)this.writeInt8(t[e+i])}writeInt16Array(t,e,a){this.ensureCapacity(this.position+2*a);for(let i=0;i<a;i++)this.writeInt16(t[e+i])}writeInt32Array(t,e,a){this.ensureCapacity(this.position+4*a);for(let i=0;i<a;i++)this.writeInt32(t[e+i])}writeUint8(t){const e=this.position+1;this.ensureCapacity(e),this.dataView.setUint8(this.position,t),this.position=e}writeUint8Array(t,e,a){for(let i=0;i<a;i++)this.writeUint8(t[e+i])}writeUint16(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,this.endianness),this.position=e}writeUint16BE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,v.BigEndian),this.position=e}writeUint16LE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,v.LittleEndian),this.position=e}writeUint16Array(t,e,a){for(let i=0;i<a;i++)this.writeUint16(t[e+i])}writeUint24(t){this.endianness===v.BigEndian?this.writeUint24BE(t):this.writeUint24LE(t)}writeUint24BE(t){const e=this.position+3;this.ensureCapacity(e);const a=255&t,i=t>>8&255,n=t>>16&255;this.dataView.setUint8(this.position,n),this.dataView.setUint8(this.position+1,i),this.dataView.setUint8(this.position+2,a),this.position=e}writeUint24LE(t){const e=this.position+3;this.ensureCapacity(e);const a=255&t,i=t>>8&255,n=t>>16&255;this.dataView.setUint8(this.position,a),this.dataView.setUint8(this.position+1,i),this.dataView.setUint8(this.position+2,n),this.position=e}writeUintVar(t){if((0|t)!==t||t<0)throw new RangeError(`value=[${t}] must be an integer in [0, 2147483647]`);let e=!0,a=t;for(;e||0!==a;){e=!1;let t=127&a;a>>=7,a>0&&(t|=128),this.writeUint8(t)}}readUintVar(){let t=!0,e=0,a=0;for(;t;){let i=this.readUint8();if(t=!!(128&i),e+=(127&i)*2**a,a+=7,t&&a>28)throw new Error("uintVar is too long, more than 5 bytes")}return e}writeUint32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,this.endianness),this.position=e}writeUint32BE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,v.BigEndian),this.position=e}writeUint32LE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,v.LittleEndian),this.position=e}writeUint64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setBigUint64(this.position,t,this.endianness),this.position=e}writeUint32Array(t,e,a){this.ensureCapacity(this.position+4*a);for(let i=0;i<a;i++)this.writeUint32(t[e+i])}writeBytes(t,e,a){const i=e+a,n=this.position,s=n+a;if(this.ensureCapacity(s),0===e&&t.length===a)this.__data_uint8.set(t,n);else if("function"==typeof t.subarray)this.__data_uint8.set(t.subarray(e,i),n);else for(let i=0;i<a;i++)this.__data_uint8[n+i]=t[e+i];this.position=s}readBytes(t,e,a){const n=this.position,s=n+a,r=this.__data_uint8;if(a<0||s>this.capacity)throw new Error(`Attempting to read ${a} bytes at position ${n}, only ${this.capacity-n} available`);a<128?i(r,n,t,e,a):t.set(r.subarray(n,s),e),this.position=s}writeUTF8String(t){if(null===t)return void this.writeUint32(4294967295);if(void 0===t)return void this.writeUint32(4294967294);let e=0;const a=t.length;if(a>=4294967294)throw new Error("String is too long");this.writeUint32(a);let i=this.position;const n=Math.max(32,a+(a>>1)+7);this.ensureCapacity(n+i);let s=this.__data_uint8,r=this.capacity;for(;e<a;){let n=t.charCodeAt(e++);if(n>=55296&&n<=56319){if(e<a){const a=t.charCodeAt(e);56320==(64512&a)&&(++e,n=((1023&n)<<10)+(1023&a)+65536)}n>=55296&&n<=56319&&(n=65533)}if(i+4>r&&(this.position=i,this.ensureCapacity(i+4),r=this.capacity,s=this.__data_uint8),4294967168&n){if(4294965248&n)if(4294901760&n){if(4292870144&n)continue;s[i++]=n>>18&7|240,s[i++]=n>>12&63|128,s[i++]=n>>6&63|128}else s[i++]=n>>12&15|224,s[i++]=n>>6&63|128;else s[i++]=n>>6&31|192;s[i++]=63&n|128}else s[i++]=n}this.position=i}readUTF8String(){const t=this.readUint32();if(4294967295===t)return null;if(4294967294===t)return;const e=this.__data_uint8;let a="",i=this.position,n=0;for(;i<this.capacity&&n<t;){const t=e[i++];let s;128&t?192==(224&t)?s=(31&t)<<6|63&e[i++]:224==(240&t)?s=(31&t)<<12|(63&e[i++])<<6|63&e[i++]:240==(248&t)&&(s=(7&t)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++],s>65535&&(s-=65536,a+=String.fromCharCode(s>>>10&1023|55296),n++,s=56320|1023&s)):s=t,n++,a+=String.fromCharCode(s)}return this.position=i,a}writeASCIIString(t){const e=t.length,a=this.position,i=a+e;this.ensureCapacity(i);for(let i=0;i<e;i++){const e=t.charCodeAt(i);if(e>127)throw new Error(`Character ${String.fromCharCode(e)} can't be represented by a US-ASCII byte.`);this.__data_uint8[a+i]=e}this.position=i}readASCIICharacters(t,e=!1){let a="";for(let i=0;i<t;i++){const t=this.readUint8();if(e&&0===t)break;a+=String.fromCharCode(t)}return a}toString(){return`BinaryBuffer[position=${this.position}, capacity=${this.capacity}, endianness=${this.endianness}]`}toHexString(){const t=this.__data_uint8,e=Math.min(t.length,this.position);let a="";for(let i=0;i<e;i++)a+=t[i].toString(16).padStart(2,"0").toUpperCase();return a}static fromEndianness(t){const e=new k;return e.endianness=t,e}static fromArrayBuffer(t){const e=new k;return e.fromArrayBuffer(t),e}static copyUTF8String(t,e){const a=t.readUTF8String();return e.writeUTF8String(a),a}static copyUintVar(t,e){const a=t.readUintVar();return e.writeUintVar(a),a}static copyUint8(t,e){const a=t.readUint8();return e.writeUint8(a),a}static copyUint16(t,e){const a=t.readUint16();return e.writeUint16(a),a}static copyUint32(t,e){const a=t.readUint32();return e.writeUint32(a),a}static copyFloat32(t,e){const a=t.readFloat32();return e.writeFloat32(a),a}static copyFloat64(t,e){const a=t.readFloat64();return e.writeFloat64(a),a}static copyBytes(t,e,a){const i=new Uint8Array(a);return t.readBytes(i,0,a),e.writeBytes(i,0,a),i}}k.prototype.isBinaryBuffer=!0;let z=v.LittleEndian,j=!1;function U(){if(j)return z;const t=new ArrayBuffer(2),e=new Uint8Array(t),a=new Uint16Array(t);return e[0]=19,z=19==(255&a[0])?v.LittleEndian:v.BigEndian,j=!0,z}const E={Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Int8:"int8",Int16:"int16",Int32:"int32",Int64:"int64",Float16:"float16",Float32:"float32",Float64:"float64"};function F(...t){return function(t,e,a){let i=a;for(let e=0;e<a;e+=1)i=(i<<5)-i+(t[e]>>>0);return i>>>0}(t,0,t.length)}function I(t,e,a){const i=e|a;return 3&i?1&i?function(t,e,a){let i=a,n=0;const s=3&a;for(;n<0+s;n++)i=(i<<5)-i+t[n];for(;n<a;n+=4)i=(i<<5)-i+(t[n]|t[n+1]<<8|t[n+2]<<16|t[n+3]<<24);return i}(new Uint8Array(t,e,a),0,a):function(t,e,a){let i=a,n=0;for(1&a&&(i=(i<<5)-i+t[n++]);n<a;n+=2)i=(i<<5)-i+(t[n]<<16|t[n+1]);return i}(new Uint16Array(t,e,a>>>1),0,a>>>1):function(t,e,a){let i=a;for(let e=0;e<a;++e)i=(i<<5)-i+t[e];return i}(new Uint32Array(t,e,a>>>2),0,a>>>2)}function C(e,a,i,n,s){if(e===i&&a===n)return!0;const r=y(a,n,s);let o,c;return 4===r?(o=new Uint32Array(e,a,s>>>2),c=new Uint32Array(i,n,s>>>2)):2===r?(o=new Uint16Array(e,a,s>>>1),c=new Uint16Array(i,n,s>>>1)):(o=new Uint8Array(e,a,s),c=new Uint8Array(i,n,s)),t(o,c)}function B(t,e=!1){return e&&crossOriginIsolated?new SharedArrayBuffer(t):new ArrayBuffer(t)}class M{next=null;flags=0;generation=-1;constructor(t,e){this.handle=t,this.context=e}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}}M.prototype.isSignalHandler=!0;class S{handlers=new Map;#t=!1;flags=0;generation=0;get silent(){return this.getFlag(1)}set silent(t){this.writeFlag(1,t)}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}contains(t,e){const a=this.handlers.get(t);if(void 0===a)return!1;const i=function(t,e,a){let i=t;for(;;){if(i.handle===e&&i.context===a)return i;if(i=i.next,null===i)return null}}(a,t,e);return null!==i}mute(){this.setFlag(1)}unmute(){this.clearFlag(1)}hasHandlers(){return this.handlers.size>0}addOne(t,e){const a=new M(t,e);a.setFlag(1),this.#e(a)}seal(){return this.#t=!0,this}get isSealed(){return this.#t}add(t,e){const a=new M(t,e);this.#e(a)}#e(t){if(this.#t)throw new Error("Signal is sealed and will never dispatch; attaching a handler to it would leak");t.generation=this.generation;const e=t.handle,a=this.handlers.get(e);void 0===a||(t.next=a),this.handlers.set(e,t)}remove(t,e){const a=this.handlers.get(t);if(void 0===a)return!1;if(a.handle===t&&a.context===e)return null===a.next?this.handlers.delete(t):this.handlers.set(t,a.next),!0;let i=a,n=a.next;for(;null!==n;){if(n.handle===t&&n.context===e)return i.next=n.next,!0;i=n,n=n.next}return!1}removeAll(){this.handlers.clear()}#a(t){const e=this.handlers.get(t.handle);if(void 0===e)return!1;if(e===t)return null===e.next?this.handlers.delete(t.handle):this.handlers.set(t.handle,e.next),!0;let a=e,i=e.next;for(;null!==i;){const e=i.next;if(i===t)return a.next=e,!0;a=i,i=e}return!1}promise(){return new Promise((t,e)=>{this.addOne((...e)=>{t(e)})})}dispatch(...t){if(1&this.flags)return;this.generation++;const e=this.handlers;for(const a of e.values()){let e=a;do{const a=e.next;if(e.generation<this.generation){e.getFlag(1)&&this.#a(e);const a=e.handle;try{a.apply(e.context,t)}catch(t){}}e=a}while(null!==e)}}send0(){if(1&this.flags)return;this.generation++;const t=this.handlers;for(const e of t.values()){let t=e;do{const e=t.next;if(t.generation<this.generation){t.getFlag(1)&&this.#a(t);const e=t.handle;try{e.call(t.context)}catch(t){}}t=e}while(null!==t)}}send1(t){if(1&this.flags)return;this.generation++;const e=this.handlers;for(const a of e.values()){let e=a;do{const a=e.next;if(e.generation<this.generation){e.getFlag(1)&&this.#a(e);const a=e.handle;try{a.call(e.context,t)}catch(t){}}e=a}while(null!==e)}}send2(t,e){if(1&this.flags)return;this.generation++;const a=this.handlers;for(const i of a.values()){let a=i;do{const i=a.next;if(a.generation<this.generation){a.getFlag(1)&&this.#a(a);const i=a.handle;try{i.call(a.context,t,e)}catch(t){}}a=i}while(null!==a)}}send3(t,e,a){if(1&this.flags)return;this.generation++;const i=this.handlers;for(const n of i.values()){let i=n;do{const n=i.next;if(i.generation<this.generation){i.getFlag(1)&&this.#a(i);const n=i.handle;try{n.call(i.context,t,e,a)}catch(t){}}i=n}while(null!==i)}}send4(t,e,a,i){if(1&this.flags)return;this.generation++;const n=this.handlers;for(const s of n.values()){let n=s;do{const s=n.next;if(n.generation<this.generation){n.getFlag(1)&&this.#a(n);const s=n.handle;try{s.call(n.context,t,e,a,i)}catch(t){}}n=s}while(null!==n)}}send5(t,e,a,i,n){if(1&this.flags)return;this.generation++;const s=this.handlers;for(const r of s.values()){let s=r;do{const r=s.next;if(s.generation<this.generation){s.getFlag(1)&&this.#a(s);const r=s.handle;try{r.call(s.context,t,e,a,i,n)}catch(n){}}s=r}while(null!==s)}}send6(t,e,a,i,n,s){if(1&this.flags)return;this.generation++;const r=this.handlers;for(const o of r.values()){let r=o;do{const o=r.next;if(r.generation<this.generation){r.getFlag(1)&&this.#a(r);const o=r.handle;try{o.call(r.context,t,e,a,i,n,s)}catch(n){}}r=o}while(null!==r)}}send8(t,e,a,i,n,s,r,o){if(1&this.flags)return;this.generation++;const c=this.handlers;for(const h of c.values()){let c=h;do{const h=c.next;if(c.generation<this.generation){c.getFlag(1)&&this.#a(c);const h=c.handle;try{h.call(c.context,t,e,a,i,n,s,r,o)}catch(n){}}c=h}while(null!==c)}}merge(t){const e=new S;function a(){e.dispatch(...arguments)}return this.add(a),t.add(a),e}}function N(t){return Math.max(Math.ceil(1.5*t),t+32)}S.prototype.isSignal=!0;class V{length=0;constructor(t,e=!1){this.spec=t,this.data=B(8*t.bytesPerRecord,e),this.capacity=8,this.dataView=new DataView(this.data),this.on={added:new S}}set array_buffer(t){this.data=t,this.dataView=new DataView(t),this.capacity=Math.floor(t.byteLength/this.spec.bytesPerRecord),this.length=0}hash(){const t=this.length,e=t*this.spec.bytesPerRecord,a=this.dataView;let i=t;const n=e>>2,s=r(Math.floor(n/31),1),o=Math.floor(n/s);for(let t=0;t<o;t++){const e=t*s<<2;i=(i<<5)-i+a.getUint32(e)}for(let t=n<<2;t<e;t++)i=(i<<5)-i+a.getUint8(t);return i}setCapacity(t){if(this.capacity===t)return;const e=this.data,a=this.spec.bytesPerRecord,i=t*a;try{const t=this.data.constructor;this.data=new t(i)}catch(t){throw new Error("failed to create a new array buffer of size: "+i)}if(this.data.byteLength!==i)throw new Error("Generated array was truncated unexpectedly from "+i+" to "+this.data.byteLength);const n=new Uint8Array(this.data),s=new Uint8Array(e),r=this.length*a;try{n.set(s.subarray(0,r),0)}catch(t){throw t instanceof RangeError?new Error("Failed to copy contents of original due to to size violation. OldSize: "+r+", NewSize: "+this.data.byteLength):t}this.capacity=t,this.dataView=new DataView(this.data,0)}trim(){this.setCapacity(this.length)}#i(t){this.capacity<t&&this.setCapacity(N(t))}resize(t){const e=N(t);(this.capacity<t||.5*this.capacity>e)&&this.setCapacity(e)}writeCellValue(t,e,a){const i=this.spec,n=t*i.bytesPerRecord;(0,i.cellWriters[e])(this.dataView,n,a)}readCellValue(t,e){const a=this.spec,i=t*a.bytesPerRecord;return(0,a.cellReaders[e])(this.dataView,i)}removeRows(t,e){const a=this.data,i=new Uint8Array(a),n=this.spec.bytesPerRecord,s=t*n,r=s+e*n,o=this.length*n;i.copyWithin(s,r,o),this.length-=e,this.resize(this.length)}insertRows(t,e){const a=this.length+e;this.#i(a);const i=this.data,n=this.spec.bytesPerRecord,s=(t+e)*n,r=a*n,o=t*n;new Uint8Array(i).copyWithin(s,o,r),this.length=a}createEmptyRow(){const t=this.length+1;this.#i(t);const e=this.length;return this.length=t,e}addRow(t){const e=this.createEmptyRow();return this.spec.writeRowMethod(this.dataView,this.spec.bytesPerRecord*e,t),this.on.added.send2(e,t),e}addRows(t,e){throw new Error("deprecated, use .addRow and .writeRow instead")}copyRow(t,e){if(t===e)return;const a=this.spec.bytesPerRecord,i=t*a,n=e*a,s=this.dataView;for(let t=0;t<a;t++){const e=s.getUint8(i+t);s.setUint8(n+t,e)}}readRow(t,e=[]){const a=this.spec;return a.readRowMethod(this.dataView,a.bytesPerRecord*t,e),e}writeRow(t,e){const a=this.spec;a.writeRowMethod(this.dataView,a.bytesPerRecord*t,e)}clearRow(t){const e=this.spec.bytesPerRecord,a=t*e,i=this.dataView;for(let t=0;t<e;t++)i.setUint8(a+t,0)}reverse_rows(){const t=this.spec.bytesPerRecord,e=new Uint8Array(t),a=this.data,n=new Uint8Array(a),s=this.length;if(s<=1)return;const r=s-1,o=r>>>1;for(let a=0;a<=o;a++){const s=a*t;i(n,s,e,0,t);const o=(r-a)*t;n.copyWithin(s,o,o+t),n.set(e,o)}}clear(){this.length=0,this.setCapacity(0)}toRowArray(){const t=[];for(let e=0;e<this.length;e++){const a=this.readRow(e);t.push(a)}return t}printToConsole(){this.toRowArray()}copy(t){if(!this.spec.equals(t.spec))throw new Error("Different table specs");const e=t.length;this.length=e,this.resize(e);const a=t.spec.bytesPerRecord*e;p(t.data,0,this.data,0,a)}equals(t){if(t===this)return!0;if(null==t)return!1;if(!this.spec.equals(t.spec))return!1;const e=this.length;if(e!==t.length)return!1;const a=e*this.spec.bytesPerRecord,i=this.dataView,n=t.dataView;for(let t=0;t<a;t++)if(i.getUint8(t)!==n.getUint8(t))return!1;return!0}}const R={[E.Uint8]:"getUint8",[E.Uint16]:"getUint16",[E.Uint32]:"getUint32",[E.Uint64]:"getBigUint64",[E.Int8]:"getInt8",[E.Int16]:"getInt16",[E.Int32]:"getInt32",[E.Int64]:"getBigInt64",[E.Float16]:"getFloat16",[E.Float32]:"getFloat32",[E.Float64]:"getFloat64"},P={[E.Uint8]:"setUint8",[E.Uint16]:"setUint16",[E.Uint32]:"setUint32",[E.Uint64]:"setBigUint64",[E.Int8]:"setInt8",[E.Int16]:"setInt16",[E.Int32]:"setInt32",[E.Int64]:"setBigInt64",[E.Float16]:"setFloat16",[E.Float32]:"setFloat32",[E.Float64]:"setFloat64"},D={[E.Uint8]:1,[E.Uint16]:2,[E.Uint32]:4,[E.Uint64]:8,[E.Int8]:1,[E.Int16]:2,[E.Int32]:4,[E.Int64]:8,[E.Float16]:2,[E.Float32]:4,[E.Float64]:8};function T(t){const e=t&-t;return 0===e?32:31-Math.clz32(e)}function L(t,e){return t.equals(e)}function q(t){return t.hash()}function O(t){if(t<=256)return Uint8Array;if(t<=65536)return Uint16Array;if(t<=4294967295)return Uint32Array;throw new Error(`Unsupported size ${t}`)}function X(t,e){return(t<<2)+t+1&e}class K{constructor(t,e,a){this.key=t,this.value=e,this.hash=a}}K.prototype.isHashMapEntry=!0;const W=4294967295,J=new Uint32Array(0);class Q{__bins=J;__entries=new Array(0);__entries_bound=0;__entries_start=0;__size=0;__bin_count=0;__entries_allocated_count=0;__bin_count_power_of_two=0;__entries_count_power_of_two=0;__bin_count_mask=0;__load_factor=.75;__version=0;constructor({keyHashFunction:t=q,keyEqualityFunction:e=L,capacity:i=16,loadFactor:n=.75}={}){this.keyHashFunction=t,this.keyEqualityFunction=e,this.__load_factor=n,this.#n(a(i))}get size(){return this.__size}getCurrentLoad(){return this.__size/this.__bin_count}#n(t){if(t<this.__size)throw new Error(`count must be at least equal to must of records in the map (=${this.__size}), instead was ${t}`);this.__entries_count_power_of_two=T(t),this.__bin_count_power_of_two=this.__entries_count_power_of_two+1,this.__bin_count=2**this.__bin_count_power_of_two,this.__bin_count_mask=this.__bin_count-1;const e=this.__entries_allocated_count;this.__entries_allocated_count=2**this.__entries_count_power_of_two;const a=O(this.__entries_allocated_count+2);this.__bins=new a(this.__bin_count);const n=new Array(this.__entries_allocated_count),s=this.__entries;this.__entries=n,i(s,0,n,0,o(e,this.__entries_allocated_count)),this.__size>0&&this.rebuild()}compute_bin_index(t){return(t>>>16^t)>>>0&this.__bin_count_mask}#s(t){const e=this.keyHashFunction(t);return e===W?0:e}#r(t,e,a){return t.hash===e&&(t.key===a||this.keyEqualityFunction(t.key,a))}#o(t,e,a){const i=this.__entries_bound;this.__entries_bound++;const n=this.__entries[i];return void 0!==n?(n.hash=a,n.key=t,n.value=e):this.__entries[i]=new K(t,e,a),i}#c(t){t.key=null,t.value=null,t.hash=W}#h(){this.__entries_bound===this.__entries_allocated_count&&(this.__size>=this.__entries_allocated_count*this.__load_factor?this.#d():this.rebuild())}set(t,e){this.#h();const a=this.#s(t);let i=this.compute_bin_index(a),n=-1;for(;;){const s=this.__bins[i];if(s>1){const i=this.__entries[s-2];if(this.#r(i,a,t))return void(i.value=e)}else{if(0===s){-1!==n&&(i=n);const s=this.#o(t,e,a)+2;this.__bins[i]=s;break}-1===n&&(n=i)}i=X(i,this.__bin_count_mask)}this.__size++,this.__version++}#_(t){const e=this.#s(t);let a=this.compute_bin_index(e);for(;;){const i=this.__bins[a];if(i>1){const a=this.__entries[i-2];if(this.#r(a,e,t))return a}else if(0===i)return null;a=X(a,this.__bin_count_mask)}}get(t){const e=this.#_(t);if(null!==e)return e.value}getOrCompute(t,e,a){const i=this.#_(t);if(null!==i)return i.value;const n=e.call(a,t);return this.set(t,n),n}getOrSet(t,e){const a=this.#_(t);return null!==a?a.value:(this.set(t,e),e)}#l(t){if(this.__entries_start!==t)return;let e=t+1,a=this.__entries_bound;const i=this.__entries;for(;e<a&&i[e].hash===W;)e++;this.__entries_start=e}delete(t){const e=this.#s(t);let a=this.compute_bin_index(e);const i=this.__bins,n=this.__entries;for(;;){const s=i[a];if(s>1){const r=s-2,o=n[r];if(this.#r(o,e,t))return this.#c(o),i[a]=1,this.__size--,this.__version++,this.#l(r),!0}else if(0===s)return!1;a=X(a,this.__bin_count_mask)}}verifyHashes(t,e){let a=!0;const i=this.__bin_count;for(let n=0;n<i;n++){const i=this.__bins[n];if(i<=1)continue;const s=this.__entries[i-2],r=this.#s(s.key);s.hash!==r&&(t.call(e,`Hash stored on the entry(=${s.hash}) is different from the computed key hash(=${r}).`,s.key,s.value),a=!1)}return a}#d(){this.#n(2*this.__entries_allocated_count)}rebuild(){const t=this.__entries_bound,e=this.__entries,a=this.__bins;a.fill(0);let i=0;for(let n=this.__entries_start;n<t;n++){const t=e[n].hash;if(t===W)continue;const s=i;if(i++,s!==n){const t=e[s];e[s]=e[n],e[n]=t}let r=this.compute_bin_index(t);for(;;){if(0===a[r]){a[r]=s+2;break}r=X(r,this.__bin_count_mask)}}this.__entries_start=0,this.__entries_bound=this.__size,this.__version++}#f(){let t=0;for(let e=this.__entries_start;e<this.__entries_bound;e++)this.__entries[e].hash!==W&&t++;return t}forEach(t,e){const a=this.__bin_count,i=this.__entries,n=this.__bins;this.__version;for(let s=0;s<a;s++){const a=n[s];if(a<=1)continue;const r=i[a-2];t.call(e,r.value,r.key,this)}}has(t){return null!==this.#_(t)}clear(){this.__size>0&&this.__version++;const t=this.__bins,e=this.__bin_count;for(let a=0;a<e;a++){const e=t[a];if(0!==e){if(1!==e){const t=e-2;this.#c(this.__entries[t])}t[a]=0}}this.__size=0,this.__entries_start=0,this.__entries_bound=0}*[Symbol.iterator](){const t=this.__bin_count,e=this.__bins,a=this.__entries;this.__version;for(let i=0;i<t;i++){const t=e[i];if(t<=1)continue;const n=a[t-2];yield[n.key,n.value]}}*entries(){for(const t of this)yield t}*values(){for(const[t,e]of this)yield e}*keys(){for(const[t,e]of this)yield t}}function G(){return 1}function Y(){return 0}class H{key=null;value=null;weight=0;next=null;previous=null;unlink(){const t=this.next,e=this.previous;null!==e&&(e.next=t),null!==t&&(t.previous=e),this.next=null,this.previous=null}toString(){return`CacheElement{ hasNext:${null!==this.next}, hasPrevious:${null!==this.previous}, weight:${this.weight}, key:${this.key}, value:${this.value} }`}}class ${#u=Number.POSITIVE_INFINITY;#b=0;__first=null;__last=null;constructor({maxWeight:t=Number.POSITIVE_INFINITY,keyWeigher:e=Y,valueWeigher:a=G,keyHashFunction:i=q,keyEqualityFunction:n=L,capacity:s}={}){this.#u=t,this.keyWeigher=e,this.valueWeigher=a,this.data=new Q({keyHashFunction:i,keyEqualityFunction:n,capacity:s}),this.onEvicted=new S,this.onRemoved=new S,this.onSet=new S}__promote(t){t!==this.__first&&(t===this.__last&&(this.__last=t.previous),t.unlink(),null!==this.__first&&(t.next=this.__first,this.__first.previous=t),this.__first=t)}size(){return this.data.size}setMaxWeight(t){throw new Error("setMaxWeight is deprecated, use .maxWeight property instead")}get weight(){return this.#b}set maxWeight(t){if("number"!=typeof t||t<0)throw new Error(`Weight must be a non-negative number, instead was '${t}'`);const e=this.#u;this.#u=t,e>t&&this.evictUntilWeight(this.#u)}get maxWeight(){return this.#u}recomputeWeight(){let t=0;for(let[e,a]of this.data){const i=this.computeElementWeight(e,a.value);a.weight=i,t+=i}this.#b=t,this.evictUntilWeight(this.#u)}updateElementWeight(t){const e=this.data.get(t);if(void 0===e)return!1;const a=e.weight,i=this.computeElementWeight(t,e.value);if(i===a)return!0;e.weight=i;const n=i-a;return this.#b+=n,this.#b>this.#u&&i<=this.#u&&this.evictUntilWeight(this.#u),!0}computeElementWeight(t,e){return this.keyWeigher(t)+this.valueWeigher(e)}findEvictionVictim(){return this.__last}evictOne(){const t=this.findEvictionVictim();return null!==t&&(this.remove(t.key),this.onEvicted.send2(t.key,t.value),!0)}evictUntilWeight(t){const e=Math.max(t,0);for(;this.#b>e;)this.evictOne()}put(t,e){let a=this.data.get(t);if(void 0===a){const i=this.computeElementWeight(t,e),n=this.#u-i;if(n<0)return;a=new H,a.key=t,a.value=e,a.next=this.__first,null!==this.__first&&(this.__first.previous=a),this.__first=a,null===this.__last&&(this.__last=a),a.weight=i,this.evictUntilWeight(n),this.data.set(t,a),this.#b+=i}else{if(e===a.value);else{this.#b-=a.weight;const i=this.computeElementWeight(t,e);this.#b+=i,a.weight=i,a.value=e}this.__promote(a),this.#b>this.#u&&a.weight<=this.#u&&this.evictUntilWeight(this.#u)}this.onSet.send2(t,e)}contains(t){return this.data.has(t)}get(t){const e=this.data.get(t);return void 0===e?null:(this.__promote(e),e.value)}getOrCompute(t,e,a){const i=this.get(t);if(null!==i)return i;const n=e.call(a,t);return this.set(t,n),n}__removeElement(t){t.value,t===this.__first&&(this.__first=t.next),t===this.__last&&(this.__last=t.previous),t.unlink();const e=t.key;this.data.delete(e),this.#b-=t.weight}remove(t){const e=this.data.get(t);return void 0!==e&&(this.__removeElement(e),this.onRemoved.send2(t,e.value),!0)}silentRemove(t){const e=this.data.get(t);return void 0!==e&&(this.__removeElement(e),!0)}clear(){const t=[];!function(t,e){for(let a=e.next();!a.done;a=e.next())t.push(a.value)}(t,this.data.keys());const e=t.length;for(let a=0;a<e;a++){const e=t[a];this.remove(e)}}drop(){this.data.clear(),this.__first=null,this.__last=null,this.#b=0}validate(t,e){return this.data.verifyHashes((a,i,n)=>{t.call(e,a,i,n.value)})}}function Z(t,e,a){const i=t.length;let n=i;for(let s=0;s<i;s++){const i=t[s];n=(n<<5)-n+e.call(a,i),n|=0}return n}function tt(t,e,a){if(null===t)return 0;if(void 0===t)return 1;let i=e??0,n=a??t.length-i,s=n;const r=i+n;for(let e=i;e<r;e++)s=(s<<5)-s+t.charCodeAt(e);return s>>>0}function et(t){const e=t.length;let a=0;for(let i=0;i<e;i++){let e=t.charCodeAt(i);for(;e>255;)a++,e>>=8;a++}return a}$.prototype.set=$.prototype.put,$.prototype.delete=$.prototype.remove,$.prototype.has=$.prototype.contains;class at{constructor({name:t,body:e,args:a=[]}){this.name=t,this.args=a,this.body=e,this.__hash=.1}updateHash(){this.__hash=F(tt(this.name),tt(this.body),Z(this.args,tt))}computeByteSize(){let t=et(this.body);void 0!==this.name&&(t+=et(this.name));const e=this.args.length;for(let a=0;a<e;a++)t+=et(this.args[a]);return t}equals(e){return this.name===e.name&&this.body===e.body&&t(this.args,e.args)}hash(){return.1===this.__hash&&this.updateHash(),this.__hash}}class it{cache=new $({maxWeight:10383360,keyWeigher:t=>t.computeByteSize(),keyHashFunction:q,keyEqualityFunction:L});compile({code:t,args:e=[],name:a}){const i=new at({body:t,args:e,name:a}),n=this.cache.get(i);if(null===n){const n=new Function(e.join(","),t);return void 0!==a&&Object.defineProperty(n,"name",{value:a}),this.cache.put(i,n),n}return n}}function nt(t,e){for(let a in t)if(t[a]===e)return a}function st(t,e,a=v.BigEndian){const i=P[t],n=a===v.BigEndian?"false":"true";return it.INSTANCE.compile({args:["dataView, byteOffset, value"],code:`dataView.${i}(byteOffset+${e}, value, ${n});`})}function rt(t,e,a=v.BigEndian){const i=R[t],n=a===v.BigEndian?"false":"true";return it.INSTANCE.compile({args:["dataView, byteOffset"],code:`return dataView.${i}(byteOffset+${e}, ${n});`})}it.INSTANCE=new it;class ot{constructor(t,e=v.LittleEndian){const a=t.length;this.types=t,this.endianType=e,this.columnOffsets=new Uint32Array(a);let i=0;for(let e=0;e<a;e++){const a=t[e];this.columnOffsets[e]=i,i+=D[a]}this.bytesPerRecord=i,this.readRowMethod=function(t,e=v.BigEndian){let a=0;const i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s],r=R[n],o=e===v.BigEndian?"false":"true";i.push(`result[${s}] = dataView.${r}(${a} + byteOffset, ${o});`),a+=D[n]}return it.INSTANCE.compile({args:["dataView, byteOffset, result"],code:i.join("\n")})}(t,e),this.writeRowMethod=function(t,e=v.BigEndian){let a=0;const i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s],r=P[n],o=e===v.BigEndian?"false":"true";i.push(`dataView.${r}(${a} + byteOffset, record[${s}], ${o});`),a+=D[n]}return it.INSTANCE.compile({args:["dataView, byteOffset, record"],code:i.join("\n")})}(t,e),this.cellReaders=new Array(a),this.cellWriters=new Array(a);for(let i=0;i<a;i++)this.cellReaders[i]=rt(t[i],this.columnOffsets[i],e),this.cellWriters[i]=st(t[i],this.columnOffsets[i],e)}getColumnCount(){return this.types.length}hash(){let t=this.endianType===v.BigEndian?1:0;return t+=Z(this.types,tt),t}equals(e){return this.endianType===e.endianType&&t(this.types,e.types)}toString(){return`TableSpec{types=[${this.types.join(", ")}], endian=${nt(v,this.endianType)}}`}static get(t,e=v.LittleEndian){const a=t.join(".")+":"+e,i=ct.get(a);if(null!==i)return i;const n=Object.freeze(new ot(t,e));return ct.put(a,n),n}}ot.prototype.isRowFirstTableSpec=!0;const ct=new $({keyHashFunction:tt});function ht(t,e,a){let i=Infinity,n=Infinity,s=Infinity,c=-Infinity,d=-Infinity,_=-Infinity;for(let t=0;t<a;t+=3){const a=e[t],h=e[t+1],l=e[t+2];i=o(a,i),n=o(h,n),s=o(l,s),c=r(a,c),d=r(h,d),_=r(l,_)}h(t,0,i,n,s,c,d,_)}function dt(t,e){return Math.ceil(t/e)*e}class _t{get tag(){return""}get align(){return 0}get size(){return 0}get aligned_size(){return dt(this.size,this.align)}get runtime_sized(){return!1}get requires_declaration(){return!1}toString(){return this.wgsl_declaration}get declaration_chunk(){throw new Error("Not Implemented")}get wgsl_ref(){return this.wgsl_declaration}get wgsl_declaration(){return this.tag}equals(t){return!1}hash(){return 0}}_t.prototype.isWebGPUType=!0;class lt extends _t{#g=0;#m=0;#y="";get tag(){return this.#y}get size(){return this.#g}get align(){return this.#m}from(t,e,a){this.#y=t,this.#g=a,this.#m=e}static from(t,e,a){const i=new lt;return i.from(t,e,a),Object.freeze(i)}get wgsl_declaration(){return this.tag}hash(){return tt(this.tag)}equals(t){return this===t||t instanceof lt&&this.tag===t.tag&&this.#g===t.size&&this.#m===t.align}}lt.prototype.isPrimitive=!0;class ft extends lt{static from(t,e,a){const i=new ft;return i.from(t,e,a),Object.freeze(i)}}ft.prototype.isAtomic=!0;const ut=lt.from("bool",4,4),bt=lt.from("i32",4,4),gt=lt.from("u32",4,4),mt=lt.from("f32",4,4),yt=lt.from("f16",2,2),pt=lt.from("vec2<i32>",8,8),wt=lt.from("vec2<u32>",8,8),vt=lt.from("vec2<f32>",8,8),At=lt.from("vec3<i32>",16,12),xt=lt.from("vec3<u32>",16,12),kt=lt.from("vec3<f32>",16,12),zt=lt.from("vec4<i32>",16,16),jt=lt.from("vec4<u32>",16,16),Ut=lt.from("vec4<f32>",16,16),Et=lt.from("mat2x2<f32>",8,16),Ft=lt.from("mat3x2<f32>",8,24),It=lt.from("mat4x2<f32>",8,32),Ct=lt.from("mat2x3<f32>",16,32),Bt=lt.from("mat3x3<f32>",16,48),Mt=lt.from("mat4x3<f32>",16,64),St=lt.from("mat2x4<f32>",16,32),Nt=lt.from("mat3x4<f32>",16,48),Vt=lt.from("mat4x4<f32>",16,64),Rt=lt.from("vec2<f16>",4,4),Pt=lt.from("vec3<f16>",8,6),Dt=lt.from("vec4<f16>",8,8),Tt=lt.from("mat2x2<f16>",4,8),Lt=lt.from("mat3x2<f16>",4,12),qt=lt.from("mat4x2<f16>",4,16),Ot=lt.from("mat2x3<f16>",8,16),Xt=lt.from("mat3x3<f16>",8,24),Kt=lt.from("mat4x3<f16>",8,32),Wt=lt.from("mat2x4<f16>",8,16),Jt=lt.from("mat3x4<f16>",8,24),Qt=lt.from("mat4x4<f16>",8,32),Gt=ft.from("atomic<u32>",4,4),Yt=ft.from("atomic<i32>",4,4),Ht={i32:bt,u32:gt,f32:mt,f16:yt,"atomic<u32>":Gt,"atomic<i32>":Yt,"vec2<i32>":pt,"vec2<u32>":wt,"vec2<f32>":vt,"vec2<f16>":Rt,"vec3<i32>":At,"vec3<u32>":xt,"vec3<f32>":kt,"vec3<f16>":Pt,"vec4<i32>":zt,"vec4<u32>":jt,"vec4<f32>":Ut,"vec4<f16>":Dt,"mat2x2<f32>":Et,"mat2x2<f16>":Tt,"mat3x2<f32>":Ft,"mat3x2<f16>":Lt,"mat4x2<f32>":It,"mat4x2<f16>":qt,"mat2x3<f32>":Ct,"mat2x3<f16>":Ot,"mat3x3<f32>":Bt,"mat3x3<f16>":Xt,"mat4x3<f32>":Mt,"mat4x3<f16>":Kt,"mat2x4<f32>":St,"mat2x4<f16>":Wt,"mat3x4<f32>":Nt,"mat3x4<f16>":Jt,"mat4x4<f32>":Vt,"mat4x4<f16>":Qt,vec2i:pt,vec3i:At,vec4i:zt,vec2u:wt,vec3u:xt,vec4u:jt,vec2f:vt,vec3f:kt,vec4f:Ut,mat2x2f:Et,mat3x2f:Ft,mat4x2f:It,mat2x3f:Ct,mat3x3f:Bt,mat4x3f:Mt,mat2x4f:St,mat3x4f:Nt,mat4x4f:Vt,vec2h:Rt,vec3h:Pt,vec4h:Dt,mat2x2h:Tt,mat3x2h:Lt,mat4x2h:qt,mat2x3h:Ot,mat3x3h:Xt,mat4x3h:Kt,mat2x4h:Wt,mat3x4h:Jt,mat4x4h:Qt};function $t(t,e){return-1===t.indexOf(e)&&(t.push(e),!0)}function Zt(t,e){const a=t.length;if(a!==e.length)return!1;let i=0;for(;i<a;i++){const a=t[i],n=e[i];if(a!==n){if(null==a||null==n)return!1;if("object"!=typeof a||"function"!=typeof a.equals)return!1;if(!a.equals(n))return!1}}return!0}class te{get isCodeChunk(){return!0}static empty=Object.freeze(te.from(""));#p="";get text(){return this.#p}#w=[];#v=[];addExtension(t){return $t(this.#v,t)}#A=[];addLanguageExtension(t){return $t(this.#A,t)}addDependency(t){if(this.#w.includes(t))return!1;if(t.findDependencyRecursive(this))throw new Error(`Circular dependency detected: ${this} -> ${t}`);return this.#x(t),!0}#x(t){this.#w.push(t)}static from(t,e=[]){const a=new te;a.#p=t;const i=e.length;for(let t=0;t<i;t++){const i=e[t];a.addDependency(i)}return a}allDirectDependenciesIncludedInSet(t){const e=this.#w,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(!t.has(a))return!1}return!0}findDependencyRecursive(t){const e=this.#w,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.equals(t)||a.findDependencyRecursive(t))return!0}return!1}collectDependencies(){const t=new Set,e=this.#w.slice();let a=e.length;for(;a>0;){a--;const i=e[a];if(t.has(i))continue;t.add(i);const n=i.#w,s=n.length;for(let t=0;t<s;t++)e[a++]=n[t]}return Array.from(t)}coalesceDependencies(){const t=new Set,e=this.collectDependencies(),a=[];let i=e.length;for(;i>0;){const n=i;for(let n=i-1;n>=0;n--){const s=e[n];s.allDirectDependenciesIncludedInSet(t)&&(a.push(s),t.add(s),e.splice(n,1),i--)}if(n===i)throw new Error(`${i} dependencies could not be satisfied`)}return a}compile(){const t=this.coalesceDependencies();t.push(this);const e={},a={},i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s];i.push(n.#p);const r=n.#v;for(let t=0;t<r.length;t++)e[r[t]]=!0;const o=n.#A;for(let t=0;t<o.length;t++)a[o[t]]=!0}const s=Object.keys(e).sort(),r=Object.keys(a).sort();return{text:i.join("\n"),extensions:s,language_extensions:r}}toString(){return this.#p}hash(){return tt(this.#p)^this.#w.length}copy(t){this.#p=t.#p,this.#w=t.#w.slice(),this.#v=t.#v.slice(),this.#A=t.#A.slice()}clone(){const t=new te;return t.copy(this),t}equals(t){return this===t||this.#p===t.#p&&Zt(this.#w,t.#w)}}class ee extends _t{count=-1;type=null;get align(){return this.type.align}get size(){const t=this.type,e=dt(t.size,t.align);return this.runtime_sized?e:this.count*e}equals(t){return this===t||t instanceof ee&&this.type.equals(t.type)&&this.count===t.count}hash(){return F(this.type.hash(),this.count)}get runtime_sized(){return this.count<0}static from(t,e=-1){const a=new ee;return a.type=t,a.count=e,a}get requires_declaration(){return this.type.requires_declaration}#k;get declaration_chunk(){return void 0===this.#k&&(this.type.requires_declaration?this.#k=this.type.declaration_chunk:this.#k=te.empty),this.#k}get wgsl_ref(){const t=this.type;return this.runtime_sized?`array< ${t.wgsl_ref} >`:`array< ${t.wgsl_ref}, ${this.count} >`}get wgsl_declaration(){const t=this.type.wgsl_ref;return this.runtime_sized?`array< ${t} >`:`array< ${t}, ${this.count} >`}}ee.prototype.isArray=!0,ee.f32=Object.freeze(ee.from(mt)),ee.u32=Object.freeze(ee.from(gt)),ee.vec4u=Object.freeze(ee.from(jt)),ee.vec4f=Object.freeze(ee.from(Ut));class ae{constructor(t,e){this.text=t,this.indentation=e}toString(){return`Line{ indentation=${this.indentation}, text="${this.text}" }`}}class ie{#z=[];#j=0;get indentation(){return this.#j}indentSpaces=4;get count(){return this.#z.length}containsSubstring(t){const e=this.#z,a=e.length;for(let i=0;i<a;i++)if(-1!==e[i].text.indexOf(t))return!0;return!1}indent(){return this.#j++,this}dedent(){return this.#j=Math.max(0,this.#j-1),this}add(t){const e=new ae(t,this.#j);return this.#z.push(e),this}extend(t){const e=this.#z,a=e.length-1;if(a<0)throw new Error("No lines to append to");e[a].text+=t}addLines(t){const e=t.#z,a=e.length;for(let t=0;t<a;t++){const a=e[t],i=new ae(a.text,a.indentation+this.#j);this.#z.push(i)}}clear(){this.#z=[],this.#j=0}build(){const t=[],e=this.#z,a=e.length,i=function(t,e){if(e<=0)return"";let a=" ";for(let t=1;t<e;t++)a+=" ";return a}(0,this.indentSpaces);for(let n=0;n<a;n++){const a=e[n];let s="";const r=a.indentation;for(let t=0;t<r;t++)s+=i;t.push(s+a.text)}return t.join("\n")}static fromText(t,e="\n"){const a=new ie,i=t.split(e),n=i.length;for(let t=0;t<n;t++){const e=i[t];a.add(e)}return a}toString(){return this.build()}}const ne=/array\s*<\s*(?<type>[^,]+)\s*(?:,\s*(?<count>[0-9]+))?\s*>/;function se(t){const e=t.match(ne);if(null!==e){const t=e.groups,a=t.type;let i;i=void 0===t.count?-1:parseInt(t.count);const n=se(a);return ee.from(n,i)}const a=Ht[t];if(void 0===a)throw new Error(`Unsupported type '${t}'`);return a}function re(t,e,a){let i=t;return i<e&&(i=e),i<a&&(i=a),i}function oe(t){let e=t>>>0;return e-=e>>>1&1431655765,e=(858993459&e)+(e>>>2&858993459),e=e+(e>>>4)&252645135,Math.imul(e,16843009)>>>24}const ce=4096;class he{__length=0;constructor(t=64){var e;this.__capacity=(e=t)+(32-e%32)%32,this.__data_uint32=new Uint32Array(this.__capacity>>5),this.__chunk_population=new Uint16Array(Math.ceil(this.__capacity/ce)),this.__shrinkFactor=.5}preventShrink(){this.setShrinkFactor(0)}setShrinkFactor(t){this.__shrinkFactor=t}setCapacity(t){if(this.__length>t)throw new Error(`Current length(=${this.__length}) is greater than requested size(=${t})`);this.__resize(t)}size(){return this.__length}capacity(){return this.__capacity}__resize(t){const e=Math.ceil(t/32),a=this.__data_uint32,i=new Uint32Array(e);a.length<e?i.set(a):i.set(a.subarray(0,e)),this.__data_uint32=i,this.__capacity=32*e;const n=Math.ceil(e/128),s=this.__chunk_population,r=new Uint16Array(n);s.length<n?r.set(s):r.set(s.subarray(0,n)),this.__chunk_population=r}__rebuildChunkPopulation(){const t=this.__data_uint32,e=this.__chunk_population;e.fill(0);const a=t.length;for(let i=0;i<a;i++){const a=t[i];0!==a&&(e[i>>7]+=oe(a))}}__updateLength(){const t=this.previousSetBit(this.__length)+1;t<this.__length&&this.__setLength(t)}__setLength(t){this.__length=t;const e=this.__capacity;if(t>e){const a=Math.ceil(re(t,e+128,1.3*e));this.__resize(a)}else t<e-128&&t<e*this.__shrinkFactor&&this.__resize(t)}previousSetBit(t){const e=o(t,this.__length-1);if(e<0)return-1;let a=e>>5;const i=31&e,n=this.__data_uint32;let s=31===i?n[a]:n[a]&(1<<i+1)-1;for(;;){if(0!==s)return 32*a+(31-Math.clz32(s>>>0));if(a--,a<0)return-1;s=n[a]}}nextSetBit(t){const e=this.__length;if(t>=e)return-1;const a=this.__data_uint32;let i,n,s=t>>5,r=31&t;if(0!==r){const t=~((1<<r)-1),e=a[s]&t;if(0!==e)return r=T(e),(s<<5)+r;s++}const o=e+31>>5;for(;s<o;s++)if(i=a[s],0!==i)return r=T(i),n=(s<<5)+r,n;return-1}nextClearBit(t){let e,a=t>>5,i=31&t;const n=this.__data_uint32;if(0!==i){e=n[a];const t=(e|(1<<i)-1)>>>0;if(4294967295!==t)return i=T(~t),i+32*a;a++}const s=this.__length,r=s+31>>5,c=this.__chunk_population;for(;a<r;){const t=a>>7;if(c[t]===ce){a=t+1<<7;continue}const s=o(t+1<<7,r);for(;a<s;a++)if(e=n[a],4294967295!==e)return i=T(~e),i+32*a}return Math.max(s,t)}set(t,e){const a=t>>5,i=1<<(31&t);if(e){const e=t+1;e>this.__length&&this.__setLength(e);const n=this.__data_uint32,s=n[a];0===(s&i)&&(n[a]=s|i,this.__chunk_population[t>>12]++)}else if(t<this.__length){const e=this.__data_uint32,n=e[a];0!==(n&i)&&(e[a]=n&~i,this.__chunk_population[t>>12]--),this.__updateLength()}}clear(t){this.set(t,!1)}setRange(t,e){for(let a=t;a<=e;a++)this.set(a,!0)}clearRange(t,e){for(let a=t;a<e;a++)this.set(a,!1)}get(t){if(t>=this.__length)return!1;const e=t>>5,a=31&t;return!!(this.__data_uint32[e]&1<<a)}getAndSet(t){const e=this.get(t);return e||this.set(t,!0),e}getAndClear(t){const e=this.get(t);return e&&this.set(t,!1),e}shift_right(t,e,a){for(let i=a;i>=e;i--){const e=this.get(i);this.set(i+t,e)}}shift_left(t,e,a){for(let i=e;i<=a;i++){const e=this.get(i);this.set(i-t,e)}}shift(t,e,a){t>0?this.shift_right(t,e,a):this.shift_right(-t,e,a)}reset(){const t=this.__length;t<=0||(t<=32?this.__data_uint32[0]=0:this.__data_uint32.fill(0,0,Math.ceil(t/32)),this.__chunk_population.fill(0,0,Math.ceil(t/ce)),this.__length=0)}cardinality(){const t=this.__length;if(0===t)return 0;const e=this.__chunk_population,a=t+4095>>12;let i=0;for(let t=0;t<a;t++)i+=e[t];return i}copy(t){const e=t.__length,a=e>>5,i=this.__length;i!==e&&(i<e?this.__resize(e):this.__data_uint32.fill(0,a),this.__length=e);for(let e=0;e<a;e++)this.__data_uint32[e]=t.__data_uint32[e];const n=a<<5,s=e-n;for(let e=0;e<s;e++){const a=n+e;this.set(a,t.get(a))}this.__rebuildChunkPopulation()}static fixedSize(t){const e=new he(t);return e.preventShrink(),e}}const de=16;function _e(t,e,a,i){let n=dt(i,e);for(;;){n=dt(t.nextClearBit(n),e);const i=n+a;let s=-1;for(let e=n;e<i;e++)if(t.get(e)){s=e;break}if(-1===s)return n;n=dt(s+1,e)}}class le{name="";parameters=[];getParameterInteger(t){const e=this.parameters;return parseInt(e[t])}static from(t,...e){const a=new le;return a.name=t,a.parameters=e,a}equals(e){return this.name===e.name&&t(this.parameters,e.parameters)}hash(){return tt(this.name)^this.parameters.length}generate(){let t=`@${this.name}`;const e=this.parameters,a=e.length;if(a>0){t+="(";for(let i=0;i<a;i++)t+=e[i],i!==a-1&&(t+=", ");t+=")"}return t}}class fe{attributes=[];setAttribute(t,...e){const a=le.from(t,...e);this.attributes.push(a)}getAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.name===t)return a}}get size(){const t=this.getAttribute("size");let e=this.type.size;return void 0!==t&&(e=t.getParameterInteger(0)),e}get align(){const t=this.getAttribute("align");let e=this.type.align;return void 0!==t&&(e=t.getParameterInteger(0)),e}offset=0;type;name;static from(t,e,...a){const i=new fe;return i.name=t,i.type=e,i.attributes=a,i}equals(t){return this.name===t.name&&this.offset===t.offset&&this.type.equals(t.type)&&Zt(this.attributes,t.attributes)}copy(t){return this.name=t.name,this.offset=t.offset,this.type=t.type,this.attributes=t.attributes.slice(),this}clone(){const t=new fe;return t.copy(this),t}hash(){return F(tt(this.name),this.offset,this.type.hash())}generate(){let t="";const e=this.attributes,a=e.length;for(let i=0;i<a;i++)t+=e[i].generate()+" ";return`${t}${this.name} : ${this.type.wgsl_ref}`}}fe.prototype.isWGSLStructField=!0;let ue=0;function be(){return"Struct_"+ue++}class ge extends _t{#y="";get tag(){return this.#y}set tag(t){this.#y=t}fields=[];#U=!1;#g=0;#m=0;get size(){return this.#g}get align(){return this.#m}copy(t){return this.#y=t.#y,this.#g=t.#g,this.#m=t.#m,this.#U=t.#U,this.#k=void 0,this.fields=t.fields.map(t=>t.clone()),this}clone(){const t=new ge;return t.copy(this),t.#y=be(),t}make(t){const e=new ie;e.add(`${this.wgsl_ref}(`),e.indent();const a=this.fields,i=a.length;for(let n=0;n<i;n++){const i=a[n].name,s=t[i];if(void 0===s)throw new Error(`Missing field '${i}'`);e.add(`${s},`)}return e.dedent(),e.add(")"),e.build()}pack(){if(this.fields.length<=1)return this;const t=[],e=[];for(const a of this.fields)a.type.runtime_sized?e.push(a):t.push(a);const a=function(t){const e=t.length,a=new Uint32Array(e);for(let t=0;t<e;t++)a[t]=t;a.sort((e,a)=>{const i=(de-t[e].size%de)%de,n=(de-t[a].size%de)%de;return i!==n?i-n:e-a});let i=0;for(let a=0;a<e;a++){const e=t[a];i+=dt(e.size,e.align)}const n=he.fixedSize(i);let s=0;const r=new Uint32Array(e);for(let i=0;i<e;i++){const e=a[i],o=t[e],c=_e(n,o.align,o.size,s);r[e]=c,n.setRange(c,c+o.size-1),c===s&&(s=n.nextClearBit(s+o.size))}const o=new Uint32Array(e);for(let t=0;t<e;t++)o[t]=t;o.sort((t,e)=>r[t]-r[e]);const c=new Array(e);for(let a=0;a<e;a++)c[a]=t[o[a]];return c}(t);return this.fields=a.concat(e),this.#U&&(this.#g,this.#E(),this.#g),this}equals(t){return t===this||t instanceof ge&&this.#y===t.#y&&Zt(this.fields,t.fields)}hash(){return F(tt(this.name),this.#g,this.#m,this.fields.length)}get requires_declaration(){return!0}get runtime_sized(){const t=this.fields;for(let e=0;e<t.length;e++)if(t[e].type.runtime_sized)return!0;return!1}static from(t,e=be()){const a=new ge;a.#y=e;for(const e in t){const i=t[e];let n;if("string"==typeof i)n=se(i);else{if(!0!==i.isWebGPUType)throw new Error(`Unsupported type declarator '${i}'`);n=i}a.#F(fe.from(e,n))}return a.#E(),a}static fromFields(...t){const e=new ge;e.#y=be();for(const a of t)e.#F(a);return e.#E(),e}has(t){return this.fields.some(e=>e.name===t)}get(t){const e=this.fields.find(e=>e.name===t);if(void 0===e)throw new Error(`Field '${t}' not found`);return e}#F(t){this.fields.push(t)}#E(){const t=this.fields,e=t.length;let a=1,i=0;for(let n=0;n<e;n++){const e=t[n],s=dt(i,e.align);a<e.align&&(a=e.align),e.offset=s,i=e.offset+e.size}this.#m=a,this.#g=dt(i,a),this.#k=void 0,this.#U=!0}get wgsl_ref(){return this.#y}get wgsl_declaration(){const t=new ie;t.add(`struct ${this.#y}{`),t.indent();for(let e=0;e<this.fields.length;e++){const a=this.fields[e];t.add(`${a.generate()},`)}return t.dedent(),t.add("}"),t.build()}#k;get declaration_chunk(){if(void 0===this.#k){const t=te.from(this.wgsl_declaration),e=this.fields,a=e.length;for(let i=0;i<a;i++){const a=e[i].type;a.requires_declaration&&t.addDependency(a.declaration_chunk)}this.#k=t}return this.#k}}function me(t,e){const a=new Float32Array(e);return t.readFloat32Array(a,0,e),a}function ye(t,e){const a=new Int32Array(e);return t.readInt32Array(a,0,e),a}function pe(t,e){const a=new Uint32Array(e);return t.readUint32Array(a,0,e),a}function we(t,e){if(t.position=dt(t.position,e.align),e instanceof ee)return function(t,e){let a=e.count;const i=[],n=e.type,s=n.aligned_size,r=t.position;if(e.runtime_sized){const e=t.capacity-t.position;a=Math.floor(e/s)}for(let e=0;e<a;e++)t.position=r+e*s,i[e]=we(t,n);return t.position=r+a*s,i}(t,e);if(e instanceof ge)return function(t,e){const a=e.fields,i=t.position,n={};for(let e=0;e<a.length;e++){const s=a[e];t.position=i+s.offset,n[s.name]=we(t,s.type)}return n}(t,e);switch(e){case ut:return 0!==t.readUint32();case gt:case Gt:return t.readUint32();case bt:case Yt:return t.readInt32();case mt:return t.readFloat32();case wt:return pe(t,2);case xt:return pe(t,3);case jt:return pe(t,4);case pt:return ye(t,2);case At:return ye(t,3);case zt:return ye(t,4);case vt:return me(t,2);case kt:return me(t,3);case Ut:return me(t,4);case Vt:return me(t,16);default:throw new Error(`Unsupported type ${e}`)}}function ve(t,e,a){if(a instanceof ee)return function(t,e,a){const i=a.count,n=a.type.aligned_size,s=e.position;for(let r=0;r<i;r++)e.position=s+r*n,ve(t[r],e,a.type);e.position=s+i*n}(t,e,a);if(a instanceof ge)return function(t,e,a){const i=a.fields,n=e.position,s=i.length;for(let a=0;a<s;a++){const s=i[a];e.position=n+s.offset;const r=t[s.name];void 0!==r&&ve(r,e,s.type)}}(t,e,a);switch(a){case ut:return e.writeUint32(t?1:0);case gt:case Gt:return e.writeUint32(t);case bt:case Yt:return e.writeInt32(t);case mt:return e.writeFloat32(t);case pt:return e.writeInt32Array(t,0,2);case At:return e.writeInt32Array(t,0,3);case zt:return e.writeInt32Array(t,0,4);case wt:return e.writeUint32Array(t,0,2);case xt:return e.writeUint32Array(t,0,3);case jt:return e.writeUint32Array(t,0,4);case vt:return e.writeFloat32Array(t,0,2);case kt:return e.writeFloat32Array(t,0,3);case Ut:return e.writeFloat32Array(t,0,4);case Vt:return e.writeFloat32Array(t,0,16);case Bt:return e.writeFloat32Array(t,0,9);case Ft:case Ct:return e.writeFloat32Array(t,0,6);default:throw new Error(`Unsupported type ${a}`)}}ge.prototype.isStruct=!0,(new k).endianness=U();const Ae="index",xe="position",ke="normal",ze="tangent",je="uv0",Ue="uv1",Ee="color",Fe="joints",Ie="weights";var Ce=function(){var t,e=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("object"!=typeof WebAssembly)return{supported:!1};function a(t){if(!t)throw new Error("Assertion failed")}function i(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function n(e,a,n,s,r,o,c,h,d,_){var l=t.exports.sbrk,f=l(16*t.exports.meshopt_buildMeshletsBound(a.length,o,c)),u=l(4*a.length),b=l(a.length),g=l(a.byteLength),m=l(n.byteLength),y=new Uint8Array(t.exports.memory.buffer);y.set(i(a),g),y.set(i(n),m);for(var p=e(f,u,b,g,a.length,m,s,r,o,c,h,d,_),w=(y=new Uint8Array(t.exports.memory.buffer)).subarray(f,f+16*p),v=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),A=0;A<p;++A){var x=v[4*A+0],k=v[4*A+1],z=(s=v[4*A+2],v[4*A+3]);t.exports.meshopt_optimizeMeshlet(u+4*x,b+k,z,s)}var j=v[4*(p-1)+0],U=v[4*(p-1)+1],E=j+v[4*(p-1)+2],F=U+3*v[4*(p-1)+3],I={meshlets:v,vertices:new Uint32Array(y.buffer,u,E).slice(),triangles:new Uint8Array(y.buffer,b,3*F).slice(),meshletCount:p};return l(f-l(0)),I}function s(e){var a=new Float32Array(t.exports.memory.buffer,e,12);return{centerX:a[0],centerY:a[1],centerZ:a[2],radius:a[3],coneApexX:a[4],coneApexY:a[5],coneApexZ:a[6],coneAxisX:a[7],coneAxisY:a[8],coneAxisZ:a[9],coneCutoff:a[10]}}return{ready:WebAssembly.instantiate(function(){for(var t=new Uint8Array(18682),a=0;a<18682;++a){var i="b9H79Tebbbe95x9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gruuuuuuub9Gxuuuuuuuuuuuueu9Gxuuuuuuuuuuu99eu9GPuuuuuuuuuuuuu99b9Gouuuuuub9GluuuubiXCdilvorwDoqooqkbiibeilve9Weiiviebeoweuecj:Pdkr;Zeqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeY9TW79O9V9Wt9F9I919P29K9nW79O2Wt7S2W94bd39TW79O9V9Wt9F9I919P29K9nW79O2Wt79t9W9Ht9P9H2bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7bD39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bkE9TW79O9V9Wt9F9J9V9T9W91tW9t9W9OWVW9c9V919U9K7bxL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbml79IV9RbPDwebcekdHOq:m:ceCdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek;x8JDPue99eux99due99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:qjjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;01jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;01jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;01jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;01jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;01jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;01jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:qjjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;01jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:qjjjbhYamcuaLcK2alcjjjjd0Ecbyd;01jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;01jjbHjjjjbbgCBd:WwamcoBd;8waq:Zhhdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaEahNhhamcuaLcltalcFFFFd0Ecbyd;01jjbHjjjjbbg8PBd:0wamcrBd;8wcba8Pa8AaCaLz:djjjb8AJFFuuh8MJFFuuh8NJFFuuhydnalci6mbJFFuuhya8AhsaLhAJFFuuh8NJFFuuh8MinascwfIdbgEa8Ma8MaE9EEh8MasclfIdbgEa8Na8NaE9EEh8NasIdbgEayayaE9EEhyascKfhsaAcufgAmbkkah:rhEamaocetgscuaocu9kEcbyd;01jjbHjjjjbbgCBd:4wdndnaoal9nmbaihsalhAinaCasydbcetfcFFi87ebasclfhsaAcufgAmbxdkkaCcFeasz:qjjjb8AkaEJbbbZNh8JcuhIdnalci6mbcbhAJFFuuhEa8AhscuhIinascwfIdba8M:tghahNasIdbay:tghahNasclfIdba8N:tghahNMM:rghaEaIcuSahaE9DVgXEhEaAaIaXEhIascKfhsaLaAcefgA9hmbkkamczfcbcjwz:qjjjb8Aamcwf9cb83ibam9cb83iba8JaxNh8RJbbjZak:th8Lcbh8SJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8Ycbh8ZcbhPinJbbbbhEdna8STmbJbbjZa8S:Z:vhEkJbbbbhhdna8Ya8YNa8Wa8WNa8Xa8XNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8VaENh8Ka8UaENh8EaRaENh5aIhLdndndndndna8SaPVTmbamydwg80Tmea8YahNh8Fa8XahNhaa8WahNhgaeamydbcdtfh81cbh3JFFuuhEcvhQcuhLindnaza81a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgXcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaXcdtfydbgXceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaXcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaQ9kmba8AaKcK2fgXIdwa8K:tghahNaXIdba5:tghahNaXIdla8E:tghahNMM:ra8J:va8LNJbbjZMJ9VO:d86JbbjZaXIdCa8FNaXIdxagNaaaXIdzNMMakN:tghahJ9VO:d869DENghaEasaQ6ahaE9DVgXEhEaKaLaXEhLasaQaXEhQkaAclfhAavcufgvmbkka3cefg3a809hmbkkaLcu9hmekama8KUd:ODama8EUd:KDama5Ud:GDamcuBd:qDamcFFF;7rBdjDa8Pcba8AaYamc:GDfamc:qDfamcjDfz:ejjjbamyd:qDhLdndnaxJbbbb9ETmba8SaD6mbaLcuSmeceh3amIdjDa8R9EmixdkaLcu9hmekdna8STmbabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;41jjbH:bjjjbbazc98fhzxbkkcbh3a8Saq9pmbamydwaCaiaLcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna8ZTmbcbhAamczfhXinamczfaAcdtfaXydbgQBdbaXclfhXaAaYaQfRbbTfhAa8Zcufg8ZmbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh8ZinamcjDfasfcFFF;7rBdbasclfgscz9hmbka8Zcdth80dnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhQcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaQaXEhQaAclfhAavcufgvmbkaQcuSmba8AaQcK2fgAIdwa8M:tgEaENaAIdbay:tgEaENaAIdla8N:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaQBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfa80fhQcbhscbhAindnamc:GDfasfydbgXcuSmbaQaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa8Zfg8ZTmbJFFuuhhcuhKamczfhsa8ZhvcuhQina8AasydbgXcK2fgAIdwa8M:tgEaENaAIdbay:tgEaENaAIdla8N:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaQ6mbaAaQ9hmeaEah9DTmekaEhhaAhQaXhKkasclfhsavcufgvmbkaKcuSmbaKhLkdnamaiaLcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YkcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgQhAdnaQTmbdninasydbaLSmeasclfhsaAcufgATmdxbkkasaKaQcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaLcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaLfce86bba8Ya8FMh8Ya8Xa5Mh8Xa8Wa8EMh8Wa8Va8KMh8Va8UahMh8UaRaEMhRamydxh8Sxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtciVBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtciVBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark;yddvue99dninabaecitfgrydlgwcl6mednawciGgDci9hmbabaecitfhbcbhecehqindnaiabydbgDfRbbmbcbhqadaDcK2fgkIdwalIdw:tgxaxNakIdbalIdb:tgxaxNakIdlalIdl:tgxaxNMM:rgxaoIdb9DTmbaoaxUdbavaDBdbarydlhwkabcwfhbaecefgeawcd46mbkaqceGTmdarawciGBdlskdnabcbawcd4gwalaDcdtfIdbarIdb:tgxJbbbb9FEgkaw7aecefgwfgecitfydlabakawfgwcitfydlVci0mbaraDBdlkabawadaialavaoz:ejjjbax:laoIdb9Fmbkkkjlevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbabydbhqdnaxydbgkTmbaoaqcdtfhxakhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkabaqakfBdbabydxhxab9cb83dwababydlaxci2fBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk:zPrHue99eue99eue99eu8Jjjjjbc;W;Gb9Rgx8KjjjjbdndnalmbcbhmxekcbhPaxc:m;Gbfcbc;Kbz:qjjjb8Aaxcualci9UgscltascjjjjiGEcbyd;01jjbHjjjjbbgzBd:m9GaxceBd;S9GaxcuascK2gHcKfalcpFFFe0Ecbyd;01jjbHjjjjbbgOBd:q9GaxcdBd;S9Gdnalci6gAmbarcd4hCascdthXaOhQazhLinavaiaPcx2fgrydbaC2cdtfhKavarcwfydbaC2cdtfhYavarclfydbaC2cdtfh8AcbhraLhEinaQarfgmaKarfg3Idbg5a8Aarfg8EIdbg8Fa5a8F9DEg5UdbamaYarfgaIdbg8Fa5a8Fa59DEg8FUdbamcxfgma3Idbg5a8EIdbgha5ah9EEg5UdbamaaIdbgha5aha59EEg5UdbaEa8Fa5MJbbbZNUdbaEaXfhEarclfgrcx9hmbkaQcKfhQaLclfhLaPcefgPas9hmbkkaOaHfgr9cb83dbarczf9cb83dbarcwf9cb83dbaxcuascx2gralc:bjjjl0Ecbyd;01jjbHjjjjbbgCBdN9GaxciBd;S9GascdthgazarfhvaChHazhLcbhPinaxcbcj;Gbz:qjjjbhEaPas2cdthadnaAmbaLhrash3inaEarydbgmc8F91cjjjj94Vam7gmcQ4cx2fg8Ea8EydwcefBdwaEamcd4cFrGcx2fg8Ea8EydbcefBdbaEamcx4cFrGcx2fgmamydlcefBdlarclfhra3cufg3mbkkazaafh8AaCaafhXcbhmcbh3cbh8EcbhainaEamfgrydbhQara3BdbarcwfgKydbhYaKaaBdbarclfgrydbhKara8EBdbaQa3fh3aYaafhaaKa8Efh8Eamcxfgmcj;Gb9hmbkdnaAmbcbhravhminamarBdbamclfhmasarcefgr9hmbkaAmbavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cd4cFrGcx2fg8Ea8Eydbg8EcefBdbaXa8Ecdtfa3BdbarclfhramcufgmmbkaHhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cx4cFrGcx2fg8Ea8Eydlg8EcefBdlava8Ecdtfa3BdbarclfhramcufgmmbkavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91cjjjj94Va8E7cQ4cx2fg8Ea8Eydwg8EcefBdwaXa8Ecdtfa3BdbarclfhramcufgmmbkkaHagfhHaLagfhLaPcefgPci9hmbkaEaocetgrcuaocu9kEcbyd;01jjbHjjjjbbgKBd:y9GaEclBd;S9Gdndnaoal9nmbaihralhminaKarydbcetfcFFi87ebarclfhramcufgmmbxdkkaKcFearz:qjjjb8AkcbhmaEascbyd;01jjbHjjjjbbg8ABd:C9GaOaCaCascdtfaCascitfa8AascbazaKaiawaDaqakz:hjjjbcbh8Ednalci6gambcbh8Ea8Ahrash3ina8EarRbbfh8Earcefhra3cufg3mbkkaEcwf9cb83ibaE9cb83ibalawc9:fgrfcufar9UhrasaDfcufaD9Uh3dnaambara3ara30EhYcbhra8Ehacbhmincbh3dnarTmba8AarfRbbceSh3kamaEaiaCydbcx2fgQydbaQclfydbaQcwfydbaKabaeadamawaqa3a3ce7a8EaY9nVaaamfaY6VGz:fjjjbfhmaCclfhCaaa8AarfRbb9Rhaasarcefgr9hmbkaEydxTmbabamcltfgraE8Pib83dbarcwfaEcwf8Pib83dbamcefhmkczhrinarc98SmeaEc:m;Gbfarfydbcbyd;41jjbH:bjjjbbarc98fhrxbkkaxc;W;Gbf8Kjjjjbamk;LXDXue99lue99iul9:eur99lu8Jjjjjbc;qb9RgP8Kjjjjbdndnaoc8Y9imbalaeavawaDaqaxz1jjjbxekaxhsaxhzdnavax0gHmbdnavTmbcbhOaehzavhAinawaDazydbcx2fgCcwfydbcetfgX8VebhQawaCclfydbcetfgL8VebhKawaCydbcetfgC8VebhYaXce87ebaLce87ebaCce87ebaOaKcs4aYcs4faQcs4ffhOazclfhzaAcufgAmbkaehzavhAinawaDazydbcx2fgCcwfydbcetfcFFi87ebawaCclfydbcetfcFFi87ebawaCydbcetfcFFi87ebazclfhzaAcufgAmbkcehzaqhsaOaq0mekalce86bbalcefcbavcufz:qjjjb8AxekaPaiBdxaPadBdwaPaeBdlavakaqci9UgCakaCak6EaHEgK9Rh8AaxaK9RhEaKcufh3aKceth5aKcdtgCc98fh8EavcitgOaC9Rarfc98fh8FascufhaavcufhharaOfhgJbbjZas:Y:vh8JaravcdtgYfc94fh8KcbazceakaxSEg8Lcdtg8M9Rh8NJFFuuhycuh8PcbhIcbh8RinaPclfa8RcdtfydbhQaPc8WfcKfcb8Pd:y1jjbg8S83ibaPc8Wfczfcb8Pd:q1jjbgR83ibaPc8Wfcwfcb8Pd11jjbg8U83ibaPcb8Pdj1jjbg8V83i8WaPczfcKfa8S83ibaPczfczfaR83ibaPczfcwfa8U83ibaPa8V83izaQaYfh8WcbhXinabaQaXcdtgLfydbcK2fhAcbhzinaPc8WfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaPIdnaPId8W:tg8ZaPId9iaPIdU:tg80Nh81aba8WaXcu7cdtfydbcK2fhAcbhzaPId80hBaPId9eh83inaPczfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaraLfgza83aB:tg8Xa80Na8Za8XNa81MMUdbazaYfaPId8KaPIdC:tg8XaPIdyaPIdK:tg8YNaPIdaaPIdz:tg8Za8XNa8Za8YNMMUdbaXcefgXav9hmbkcbhUdnaHmbcbhAaQhzaghCavhXinawaDazydbcx2fgOcwfydbcetfgL8Vebh8WawaOclfydbcetfg858VebhUawaOydbcetfgO8Vebh86aLce87eba85ce87ebaOce87ebaCaAaUcs4a86cs4fa8Wcs4ffgABdbazclfhzaCclfhCaXcufgXmbkavhCinawaDaQydbcx2fgzcwfydbcetfcFFi87ebawazclfydbcetfcFFi87ebawazydbcetfcFFi87ebaQclfhQaCcufgCmbkaghUkdndndndndndndndndndna5av0mba5ax0meavaK6mda3a8A9pmDcehLa8AhXaUTmlxrka3ah9pmwa5ax9nmdxlkdnavavaK9UgzaK29RazaE20mba3a8A9pmwaUTh87ceh85a8AhLxvka3ah6mixrka3ah9pmokcbhLahhXaUmikJFFuuh8XcbhQa3hzindnazcefgCaK6mbaLavaC9RgOaK6GmbarazcdtfIdbg8YaC:YNa8Kavaz9RcdtfIdbg8ZaO:YNMg80a8X9Embdndna8JaOaaf:YNg81:lJbbb9p9DTmba81:OhAxekcjjjj94hAka8ZasaA2aO9R:YNh8Zdndna8Jazasf:YNg81:lJbbb9p9DTmba81:OhOxekcjjjj94hOkamasaO2aC9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgOEh8XaCaQaOEhQkaza8LfgzaX6mbxlkkaUTh87cbh85ahhLkJFFuuh8XcbhQa8AhCa8FhAa8EhOaKhzindnazazaK9UgXaK29RaXaE20mbdna85TmbaCaCaK9UgXaK29RaXaE20mekaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9EmbazhXaCh8Wdna87mbaUaOfydbgXh8Wkdndna8Ja8Waaf:YNg81:lJbbb9p9DTmba81:Oh86xekcjjjj94h86ka8Zasa862a8W9R:YNh8Zdndna8JaXaaf:YNg81:lJbbb9p9DTmba81:Oh8Wxekcjjjj94h8Wkamasa8W2aX9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgXEh8XazaQaXEhQkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaL6mbxdkkJFFuuh8XcbhQa8AhCa8FhAa8EhOaKhzindnazaK6mbaLaCaK6GmbaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9Embdndna8JaUaOfydbg8Waaf:YNg81:lJbbb9p9DTmba81:Oh85xekcjjjj94h85kamasa852a8W9R:Yg81a8YNa8Za81NMNa80Mg8Ya8Xa8Ya8X9Dg8WEh8XazaQa8WEhQkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaX6mbkkaQTmba8Xay9DTmba8XhyaQhIa8Rh8Pka8Rcefg8Rci9hmbkdna8Pcb9ombalaeavawaDaqaxz1jjjbxekaravcdtg8WfhLdnaITmbaPclfa8PcdtfydbhzaIhCinaLazydbfcb86bbazclfhzaCcufgCmbkkdnavaI9nmbaPclfa8PcdtfydbaIcdtfhzavaI9RhCinaLazydbfce86bbazclfhzaCcufgCmbkkcbhYindnaYa8PSmbcbhzaraPclfaYcdtfydbgKa8Wz:pjjjbhCavhXaIhOinaKaOazaLaCydbgQfRbbgAEcdtfaQBdbaCclfhCaOaAfhOazaA9RcefhzaXcufgXmbkkaYcefgYci9hmbkabaeadaialaIaocefgCarawaDaqakaxamz:hjjjbabaeaIcdtgzfadazfaiazfalaIfavaI9RaCarawaDaqakaxamz:hjjjbkaPc;qbf8Kjjjjbk1iePudnadTmbavci9UgrcufhwcbhDindndndnadaD9RaoaDaofad0EgqTmbcbhkaeaDcdtfgxhmaqhPinaialamydbcx2fgscwfydbcetfgz8VebhHaiasclfydbcetfgO8VebhAaiasydbcetfgs8VebhCazce87ebaOce87ebasce87ebakaAcs4aCcs4faHcs4ffhkamclfhmaPcufgPmbkaqhsinaialaxydbcx2fgmcwfydbcetfcFFi87ebaiamclfydbcetfcFFi87ebaiamydbcetfcFFi87ebaxclfhxascufgsmbkakav0mekabaDfgxce86bbaxcefcbaqcufz:qjjjb8AxekabaDfgxce86bbaxcefcbawz:qjjjb8AarhqkaqaDfgDad6mbkkk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz:kjjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz:kjjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:qjjjb8Aarc;Gbfcbavz:qjjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqc:G1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:jjjjbarcj8Wf8Kjjjjbk:Reeeu8Jjjjjbca9Rgo8Kjjjjbab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbdnadTmbaocbBd3ao9cb83iwao9cb83ibaoaeadaialaoc3falEavcbalEcrz:kjjjbabao8Pib83dbabao8Piw83dwkaocaf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:qjjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:tjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:qjjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:pjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;81jjbgeabcifc98GfgbBd;81jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;81jjbgeabcrfc94GfgbBd;81jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;81jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;81jjbfgdBd;81jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk:nedbcjwktFFuuFFuuFFuubbbbFFuFFFuFFFuFbbbbbbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;0wkxebbbdbbbjNbb".charCodeAt(a);t[a]=i>96?i-97:i>64?i-39:i+4}var n=0;for(a=0;a<18682;++a)t[n++]=t[a]<60?e[t[a]]:64*(t[a]-60)+t[++a];return t.buffer.slice(0,n)}(),{}).then(function(e){(t=e.instance).exports.__wasm_call_ctors()}),supported:!0,buildMeshlets:function(e,i,s,r,o,c){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&o<=512),c=c||0;var h=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsFlex,h,i,i.length/s,4*s,r,o,o,c,0)},buildMeshletsFlex:function(e,i,s,r,o,c,h,d){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&c<=512),a(o<=c),h=h||0,d=d||0;var _=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsFlex,_,i,i.length/s,4*s,r,o,c,h,d)},buildMeshletsSpatial:function(e,i,s,r,o,c,h){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&c<=512),a(o<=c),h=h||0;var d=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsSpatial,d,i,i.length/s,4*s,r,o,c,h)},extractMeshlet:function(t,e){return a(e>=0&&e<t.meshletCount),function(t,e){var a=t.meshlets[4*e+0],i=t.meshlets[4*e+1],n=t.meshlets[4*e+2],s=t.meshlets[4*e+3];return{vertices:t.vertices.subarray(a,a+n),triangles:t.triangles.subarray(i,i+3*s)}}(t,e)},computeClusterBounds:function(e,n,r){return a(e.length%3==0),a(e.length/3<=512),a(n instanceof Float32Array),a(n.length%r==0),a(r>=3),function(e,a,n,r){var o=t.exports.sbrk,c=o(48),h=o(e.byteLength),d=o(a.byteLength),_=new Uint8Array(t.exports.memory.buffer);_.set(i(e),h),_.set(i(a),d),t.exports.meshopt_computeClusterBounds(c,h,e.length,d,n,r);var l=s(c);return o(c-o(0)),l}(4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e),n,n.length/r,4*r)},computeMeshletBounds:function(e,n,r){return a(0!=e.meshletCount),a(n instanceof Float32Array),a(n.length%r==0),a(r>=3),function(e,a,n,r){var o=t.exports.sbrk,c=[],h=o(a.byteLength),d=o(e.vertices.byteLength),_=o(e.triangles.byteLength),l=o(48),f=new Uint8Array(t.exports.memory.buffer);f.set(i(a),h),f.set(i(e.vertices),d),f.set(i(e.triangles),_);for(var u=0;u<e.meshletCount;++u){var b=e.meshlets[4*u+0],g=e.meshlets[4*u+0+1],m=e.meshlets[4*u+0+3];t.exports.meshopt_computeMeshletBounds(l,d+4*b,_+g,m,h,n,r),c.push(s(l))}return o(h-o(0)),c}(e,n,n.length/r,4*r)},computeSphereBounds:function(e,n,r,o){return a(e instanceof Float32Array),a(e.length%n==0),a(n>=3),a(!r||r instanceof Float32Array),a(!r||r.length%o==0),a(!r||o>=1),a(!r||e.length/n==r.length/o),o=o||0,function(e,a,n,r,o){var c=t.exports.sbrk,h=c(48),d=c(e.byteLength),_=r?c(r.byteLength):0,l=new Uint8Array(t.exports.memory.buffer);l.set(i(e),d),r&&l.set(i(r),_),t.exports.meshopt_computeSphereBounds(h,d,a,n,_,r?o:0);var f=s(h);return c(h-c(0)),f}(e,e.length/n,4*n,r,4*o)}}}();const Be=128;function Me(t,e,a,i){const n=e,s=t,r=new Uint8Array(Be);let o=128;for(let t=0;t<a;++t){let e=-1,i=-1;for(let s=t;s<a;++s){const t=n[3*s+0],a=n[3*s+1],c=n[3*s+2],h=(o-r[t]<3?1:0)+(o-r[a]<3?1:0)+(o-r[c]<3?1:0);if(h>i&&(e=s,i=h,i>=2))break}const s=n[3*e+0],c=n[3*e+1],h=n[3*e+2],d=3*t,_=d+3*(e-t);n.set(n.subarray(d,_),d+3),n[3*t+0]=s,n[3*t+1]=c,n[3*t+2]=h,o++,r[s]=o,r[c]=o,r[h]=o}const c=new Uint32Array(Be),h=new Int16Array(Be);for(let t=0;t<i;t++)h[t]=-1;let d=0;for(let t=0;t<3*a;++t){const e=n[t];h[e]<0&&(h[e]=d,c[d]=s[e],d++),n[t]=h[e]}if(d>i)throw new Error(`Vertex offset ${d} exceeds vertex count ${i}`);for(let t=0;t<d;t++)s[t]=c[t]}Ce.ready?.then(()=>{});const Se=65535;function Ne(t){return t>=0?1:-1}function Ve(t,e,a,i,n){const s=1/(Math.abs(a)+Math.abs(i)+Math.abs(n));let r=a*s,o=n*s;if(i<0){const t=Math.abs(r);r=(1-Math.abs(o))*Ne(r),o=(1-t)*Ne(o)}t[e]=r,t[e+1]=o}function Re(t,e,a,i){const n=new Float32Array(2);for(let s=0;s<a;s++){const a=3*s,r=i[a],o=i[a+1];Ve(n,0,r,i[a+2],o);const c=.5*n[0]+.5,h=.5*n[1]+.5,d=65535&Math.floor(c*Se)|(65535&Math.floor(h*Se))<<16;t[e+s]=d>>>0}}function Pe(t,e,a,i){const n=new Float32Array(2);for(let s=0;s<a;s++){const a=4*s,r=i[a],o=i[a+1],c=i[a+2],h=i[a+3];Ve(n,0,r,c,o);const d=.5*n[0]+.5,_=.5*n[1]+.5,l=(32767&Math.floor(32767*d))<<1|(65535&Math.floor(_*Se))<<16|(h>=0?1:0);t[e+s]=l>>>0}}const De={[Ee]:4294967295,[je]:[0,0],[Ue]:0,[ke]:0,[ze]:0,[Fe]:[0,0],[Ie]:0};{const t=new Uint32Array(1);Re(t,0,1,[0,0,1]),De[ke]=t[0]}{const t=new Uint32Array(1);Pe(t,0,1,[0,0,1,1]),De[ze]=t[0]}const Te={[xe]:3,[ke]:1,[ze]:1,[Ee]:1,[je]:2,[Ue]:1,[Fe]:2,[Ie]:1},Le=Object.freeze([xe,ke,ze,Ee,je,Ue,Fe,Ie]),qe={[ke]:1,[ze]:2,[Ee]:4,[je]:8,[Ue]:16,[Fe]:32,[Ie]:64},Oe=ge.from({bounds_box:ee.from(mt,6),address:gt,primitive_count:gt,vertex_count:gt,flags:gt}).pack();function Xe(t,e,a,i){const n=a*i,s=new Uint32Array(t,4*e,n);for(let t=i;t<n;t+=i)for(let e=0;e<i;e++)if(s[t+e]!==s[e])return!1;return!0}function Ke(t){return dt(3*t,4)>>>2}function We(t){const e=Math.round(255*t);return e<0?0:e>255?255:e}function Je(t,e,a){return t<e?e:t>a?a:t}function Qe(t,e,a,i){const n=a.data,s=a.spec.itemSize;for(let a=0;a<i;a++){const i=e.readUint32();for(let e=0;e<s;e++)t[a*s+e]=n[i*s+e]}}function Ge(t,e,a,i,n){const s=e.data;switch(i){case xe:for(let e=0;e<n;e++){const e=t.readUint32();for(let t=0;t<3;t++){const i=s[3*e+t];a.writeFloat32(i)}}break;case ke:{const i=new Float32Array(3*n);Qe(i,t,e,n);const s=new Uint32Array(n);Re(s,0,n,i),a.writeUint32Array(s,0,n)}break;case ze:{const i=new Float32Array(4*n);Qe(i,t,e,n);const s=new Uint32Array(n);Pe(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Ee:{const i=new Float32Array(3*n);Qe(i,t,e,n);const s=new Uint32Array(n);!function(t,e,a,i){for(let e=0;e<a;e++){let a=3*e,n=We(i[a]),s=We(i[a+1]),r=We(i[a+2]);t[0+e]=n|s<<8|r<<16}}(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Ue:{const i=new Float32Array(2*n);Qe(i,t,e,n);const s=new Uint32Array(n);!function(t,e,a,i){for(let e=0;e<a;e++){let a=2*e,n=Math.round(65535*Je(i[a],0,1)),s=Math.round(65535*Je(i[a+1],0,1));t[0+e]=65535&n|(65535&s)<<16}}(s,0,n,i),a.writeUint32Array(s,0,n)}break;case je:{const i=new Float32Array(2*n);Qe(i,t,e,n),a.writeFloat32Array(i,0,2*n)}break;case Fe:{const i=new Uint16Array(4*n);Qe(i,t,e,n);for(let t=0;t<n;t++){const e=4*t,n=65535&i[e+0],s=65535&i[e+1],r=65535&i[e+2],o=65535&i[e+3];a.writeUint32(n|s<<16),a.writeUint32(r|o<<16)}}break;case Ie:{const i=new Float32Array(4*n);Qe(i,t,e,n);for(let t=0;t<n;t++){const e=4*t;let n=Math.max(0,Math.min(255,Math.round(255*i[e+0]))),s=Math.max(0,Math.min(255,Math.round(255*i[e+1]))),r=Math.max(0,Math.min(255,Math.round(255*i[e+2]))),o=Math.max(0,Math.min(255,Math.round(255*i[e+3])));const c=255-(n+s+r+o);if(0!==c){let t=0,e=n;s>e&&(e=s,t=1),r>e&&(e=r,t=2),o>e&&(e=o,t=3);const a=Math.max(0,Math.min(255,e+c));0===t?n=a:1===t?s=a:2===t?r=a:o=a}a.writeUint32(255&n|(255&s)<<8|(255&r)<<16|(255&o)<<24)}}break;default:throw new Error(`Unrecognized attribute attribute '${i}'`)}}const Ye={};function He(t,e,a){const i=qe[t];return(void 0!==i&&0!==(e&i)?1:a)*Te[t]}function $e(t,e,a){const i=Ye[t];if("number"!=typeof i)throw new Error(`Unrecognized ordered attribute '${t}'`);let n=0;for(let t=0;t<i;t++)n+=He(Le[t],e,a);return n}Le.forEach((t,e)=>{Ye[t]=e}),Object.freeze(Ye);const Ze={};globalThis.meshlet_debug=Ze;const ta=new ArrayBuffer(0);class ea{#I=ta;#C=new DataView(ta);get data_buffer(){return this.#I}set data_buffer(t){this.#I=t,this.#C=new DataView(this.#I)}#B=ta;#M=new DataView(ta);get metadata_buffer(){return this.#B}set metadata_buffer(t){this.#B=t,this.#M=new DataView(this.#B)}#S=0;get count(){return this.#S}set count(t){this.#S=t}hash(){const t=this.#B;return F(this.#S,I(t,0,t.byteLength))}equals(t){return this.#S===t.#S&&C(this.#B,0,t.#B,0,t.#B.byteLength)&&C(this.#I,0,t.#I,0,t.#I.byteLength)}compress(){const t=U(),e=k.fromArrayBuffer(this.#B);e.endianness=t;const a=this.#I,i=k.fromArrayBuffer(a);i.endianness=t;const n=k.fromEndianness(t);for(let t=0;t<this.#S;t++){e.position=Oe.size*t;const s=we(e,Oe),r=n.position,o=Ke(s.primitive_count);i.position=s.address<<2,k.copyBytes(i,n,4*o);const c=i.position>>>2,h=s.vertex_count,d=s.flags;let _=d;for(const t of Le){const e=qe[t],s=void 0!==e,r=c+$e(t,d,h);i.position=r<<2;const o=Te[t];if(s&&0===(d&e)&&Xe(a,r,h,o))_|=e,k.copyBytes(i,n,4*o);else{const t=0!==(d&e)?1:h;k.copyBytes(i,n,t*o*4)}}s.flags=_,s.address=r>>>2,e.position=Oe.size*t,ve(s,e,Oe)}n.trim();const s=n.data;return this.#I=s,a.byteLength-s.byteLength}optimize(){}read_header(t){const e=k.fromArrayBuffer(this.#B);return e.endianness=U(),e.position=Oe.size*t,we(e,Oe)}read_meshlet(t){const e=this.read_header(t),a=3*e.primitive_count,i=new Uint32Array(a),n=k.fromArrayBuffer(this.#I);n.endianness=U();const s=e.address<<2;n.position=s,n.readUint8Array(i,0,a);const r=new Float32Array(3*e.vertex_count),o=4*Ke(e.primitive_count);return n.position=s+o+4*$e(xe,e.flags,e.vertex_count),n.readFloat32Array(r,0,3*e.vertex_count),{header:e,attribute_index:i,attribute_position:r}}#N(t){const e=new V(ot.get([E.Uint32,E.Uint32,E.Uint32,E.Uint32])),a=U(),i=new k;i.endianness=a,t.ensureIndex(),function(t,e,a,i,n,s,r=64,o=64){const c=Ce.buildMeshlets(a,s,3,r,o,0);t.setCapacity(t.length+c.meshletCount);for(let a=0;a<c.meshletCount;a++){const i=c.meshlets[4*a],n=c.meshlets[4*a+1],s=c.meshlets[4*a+2],r=c.meshlets[4*a+3],o=e.position>>>2,h=o+s;t.writeRow(t.length,[o,h,s,r]),t.length++,Me(c.vertices.subarray(i,i+s),c.triangles.subarray(n,n+3*r),r,s),e.writeUint32Array(c.vertices,i,s),e.writeUint32Array(c.triangles,n,3*r)}}(e,i,t.index.data,t.getIndexCount(),t.getVertexCount(),t.getAttribute(xe).data,Be,128);const n=e.length,s=k.fromEndianness(a),r=k.fromEndianness(a);t.ensureNormals(),t.ensureTangents();const o=t.bounding_box;for(let a=0;a<n;a++){const[n,c,h,d]=e.readRow(a),_={bounds_box:o,address:r.position>>>2,vertex_count:h,primitive_count:d,flags:0};i.position=4*c;const l=3*d;{let t=0,e=0;for(let a=0;a<l;a++)t|=i.readUint32()<<8*e,e++,e>=4&&(r.writeUint32(t),t=0,e=0);e>0&&r.writeUint32(t)}const f=Ke(d);r.position=4*(_.address+f);const u=r.position;for(const e of Le){const a=$e(e,_.flags,h);if(r.position=u+4*a,void 0===t.getAttribute(e)){const t=De[e];if(void 0===t)throw new Error(`No default for attribute '${e}'`);switch(_.flags|=qe[e],e){case ke:case ze:case Ee:r.writeUint32(t);break;case je:r.writeFloat32Array(t,0,t.length);break;case Ue:r.writeUint32(t);break;case Fe:r.writeUint32Array(t,0,t.length);break;case Ie:r.writeUint32(t);break;default:throw new Error(`Unsupported attribute default ${e}`)}continue}i.position=4*n;const s=r.position;Ge(i,t.getAttribute(e),r,e,h);const o=r.position-s;Ze[e]=(Ze[e]||0)+o}ve(_,s,Oe)}this.#S=n,s.trim(),this.metadata_buffer=s.data,r.trim(),this.data_buffer=r.data,this.build_bounds()}build_bounds(){const t=k.fromArrayBuffer(this.#B);t.endianness=U();const e=new Float32Array(384),a=k.fromArrayBuffer(this.#I);a.endianness=U();for(let i=0;i<this.#S;i++){t.position=i*Oe.size;const n=we(t,Oe),s=n.vertex_count,r=dt(3*n.primitive_count,4),o=$e(xe,n.flags,s);a.position=r+4*(n.address+o),a.readFloat32Array(e,0,3*s),ht(n.bounds_box,e,3*s),t.position=i*Oe.size,ve(n,t,Oe)}}build(t){this.#N(t),this.optimize()}}ea.prototype.isMeshletBatch=!0;let aa=0;class ia{id=aa++;name="";bounding_box=new Float32Array(6);bounding_sphere=new Float32Array(4);primitive_count=0;getIndexCount(){return 3*this.primitive_count}meshlets=new ea;bvh=new ArrayBuffer;hash(){return this.meshlets.hash()}equals(t){return this.meshlets.equals(t.meshlets)}}ia.prototype.isMeshletGeometry=!0,ia.typeName="MeshletGeometry";class na{klass=null;version=0;initialize(...t){}finalize(){}announce(t,e){}serialize(t,e){}deserialize(t,e){}}na.prototype.isBinaryClassSerializationAdapter=!0;const sa=4294967295;function ra(t,e,a,i,n,s){const r=i-t,o=s-a;return 2*((n-e)*(r+o)+o*r)}const oa=sa,ca=10,ha=Math.floor(107374182.375);class da{__data_buffer=new ArrayBuffer(5120);get data_buffer(){return this.__data_buffer}set data_buffer(t){this.__data_buffer=t,this.__data_float32=new Float32Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__capacity=Math.floor(t.byteLength/40)}__data_float32=new Float32Array(this.__data_buffer);get data_float32(){return this.__data_float32}__data_uint32=new Uint32Array(this.__data_buffer);__capacity=128;__size=0;__free=[];__free_pointer=0;__root=oa;get root(){return this.__root}set root(t){this.__root=t}get size(){return this.__size}get node_capacity(){return this.__capacity}set node_capacity(t){if(this.__size>t)throw new Error(`Can't shrink capacity to ${t}, because it's below occupancy(${this.__size}).`);this.__set_capacity(t)}__grow_capacity(){if(this.__capacity>=ha)throw new Error("Can not grow capacity, already at maximum platform limit");let t=Math.ceil(r(1.2*this.__capacity,this.__capacity+64));t>ha&&(t=ha),this.__set_capacity(t)}__set_capacity(t){if(this.__capacity===t)return;const e=this.__data_uint32,a=new ArrayBuffer(40*t);this.__data_buffer=a,this.__data_float32=new Float32Array(a),this.__data_uint32=new Uint32Array(a),this.__size>0&&p(e.buffer,e.byteOffset,a,0,Math.min(40*this.__size,a.byteLength)),this.__capacity=t}trim(){this.__capacity>this.__size&&this.__set_capacity(this.__size)}allocate_linear(t){this.node_capacity=t,this.__size=t}allocate_node(){let t;const e=this.__free_pointer;if(e>0){const a=e-1;t=this.__free[a],this.__free_pointer=a}else t=this.__size,t>=this.__capacity&&this.__grow_capacity(),this.__size++;const a=ca*t,i=this.__data_float32;i[a]=Number.POSITIVE_INFINITY,i[a+1]=Number.POSITIVE_INFINITY,i[a+2]=Number.POSITIVE_INFINITY,i[a+3]=Number.NEGATIVE_INFINITY,i[a+4]=Number.NEGATIVE_INFINITY,i[a+5]=Number.NEGATIVE_INFINITY;const n=this.__data_uint32;return n[a+6]=oa,n[a+7]=oa,n[a+8]=oa,n[a+9]=0,t}release_node(t){this.__free[this.__free_pointer++]=t}node_is_leaf(t){return this.__data_uint32[ca*t+7]===oa}node_get_user_data(t){return this.__data_uint32[ca*t+8]}node_set_user_data(t,e){this.__data_uint32[ca*t+8]=e}node_get_child1(t){return this.__data_uint32[ca*t+7]}node_set_child1(t,e){this.__data_uint32[ca*t+7]=e}node_get_child2(t){return this.__data_uint32[ca*t+8]}node_set_child2(t,e){this.__data_uint32[ca*t+8]=e}node_get_parent(t){return this.__data_uint32[ca*t+6]}node_set_parent(t,e){this.__data_uint32[ca*t+6]=e}node_get_height(t){return this.__data_uint32[ca*t+9]}node_set_height(t,e){this.__data_uint32[ca*t+9]=e}node_get_aabb(t,e){const a=ca*t,i=this.__data_float32;e[0]=i[a],e[1]=i[a+1],e[2]=i[a+2],e[3]=i[a+3],e[4]=i[a+4],e[5]=i[a+5]}node_set_aabb(t,e){const a=ca*t,i=this.__data_float32;i[a]=e[0],i[a+1]=e[1],i[a+2]=e[2],i[a+3]=e[3],i[a+4]=e[4],i[a+5]=e[5]}node_move_aabb(t,e){this.node_set_aabb(t,e);const a=this.__data_uint32[ca*t+6];a!==oa&&this.bubble_up_refit(a)}node_set_aabb_primitive(t,e,a,i,n,s,r){const o=ca*t,c=this.__data_float32;c[o]=e,c[o+1]=a,c[o+2]=i,c[o+3]=n,c[o+4]=s,c[o+5]=r}node_get_surface_area(t){const e=ca*t,a=this.__data_float32;return ra(a[e],a[e+1],a[e+2],a[e+3],a[e+4],a[e+5])}node_get_combined_surface_area(t,e){const a=ca*t,i=ca*e,n=this.__data_float32;return ra(o(n[a],n[i]),o(n[a+1],n[i+1]),o(n[a+2],n[i+2]),r(n[a+3],n[i+3]),r(n[a+4],n[i+4]),r(n[a+5],n[i+5]))}node_set_combined_aabb(t,e,a){const i=ca*e,n=ca*a,s=ca*t,r=this.__data_float32;c(r,s,r,i,r,n)}insert_leaf(t){let e=this.__data_uint32;if(this.__root===oa)return this.__root=t,void(e[t*ca+6]=oa);let a=this.__root;for(;!1===this.node_is_leaf(a);){const i=a*ca,n=e[i+7],s=e[i+8],r=this.node_get_surface_area(a),o=this.node_get_combined_surface_area(a,t),c=2*o,h=2*(o-r);let d,_;if(this.node_is_leaf(n))d=this.node_get_combined_surface_area(t,n)+h;else{const e=this.node_get_surface_area(n);d=this.node_get_combined_surface_area(t,n)-e+h}if(this.node_is_leaf(s))_=this.node_get_combined_surface_area(t,s)+h;else{const e=this.node_get_surface_area(s);_=this.node_get_combined_surface_area(t,s)-e+h}if(c<d&&c<_)break;a=d<_?n:s}const i=a,n=e[i*ca+6],s=this.allocate_node();e=this.__data_uint32,e[s*ca+6]=n,this.node_set_combined_aabb(s,t,i),e[s*ca+9]=e[i*ca+9]+1,n!==oa?e[n*ca+7]===i?e[n*ca+7]=s:e[n*ca+8]=s:this.__root=s,e[s*ca+7]=i,e[s*ca+8]=t,e[i*ca+6]=s,e[t*ca+6]=s,this.bubble_up_update(s)}bubble_up_refit(t){let e=t;const a=this.__data_uint32;do{const t=e*ca,i=a[t+7],n=a[t+8];this.node_set_combined_aabb(e,i,n),e=a[t+6]}while(e!==oa)}bubble_up_update(t){let e=t;const a=this.__data_uint32;for(;e!==oa;){e=this.balance_rotate(e);const t=e*ca,i=a[t+7],n=a[t+8];a[t+9]=1+r(a[i*ca+9],a[n*ca+9]),this.node_set_combined_aabb(e,i,n),e=a[t+6]}}remove_leaf(t){if(t===this.__root)return void(this.__root=oa);const e=this.__data_uint32,a=e[t*ca+6],i=e[a*ca+6];let n;const s=e[a*ca+7];n=s===t?e[a*ca+8]:s,i!==oa?(e[i*ca+7]===a?e[i*ca+7]=n:e[i*ca+8]=n,e[n*ca+6]=i,this.release_node(a),this.bubble_up_update(i)):(this.__root=n,e[n*ca+6]=oa,this.release_node(a))}balance_height(t){const e=this.__data_uint32;if(this.node_is_leaf(t)||e[t*ca+9]<2)return t;const a=e[t*ca+7],i=e[t*ca+8],n=e[i*ca+9]-e[a*ca+9];if(n>1){const n=e[i*ca+7],s=e[i*ca+8];e[i*ca+7]=t;const o=e[t*ca+6];return e[i*ca+6]=o,e[t*ca+6]=i,o!==oa?e[o*ca+7]===t?e[o*ca+7]=i:e[o*ca+8]=i:this.__root=i,e[n*ca+9]>e[s*ca+9]?(e[i*ca+8]=n,e[t*ca+8]=s,e[s*ca+6]=t,this.node_set_combined_aabb(t,a,s),this.node_set_combined_aabb(i,t,n),e[t*ca+9]=1+r(e[a*ca+9],e[s*ca+9]),e[i*ca+9]=1+r(e[t*ca+9],e[n*ca+9])):(e[i*ca+8]=s,e[t*ca+8]=n,e[n*ca+6]=t,this.node_set_combined_aabb(t,a,n),this.node_set_combined_aabb(i,t,s),e[t*ca+9]=1+r(e[a*ca+9],e[n*ca+9]),e[i*ca+9]=1+r(e[t*ca+9],e[s*ca+9])),i}if(n<-1){const n=e[a*ca+7],s=e[a*ca+8];e[a*ca+7]=t;const o=e[t*ca+6];return e[a*ca+6]=o,e[t*ca+6]=a,o!==oa?e[o*ca+7]===t?e[o*ca+7]=a:e[o*ca+8]=a:this.__root=a,e[n*ca+9]>e[s*ca+9]?(e[a*ca+8]=n,e[t*ca+7]=s,e[s*ca+6]=t,this.node_set_combined_aabb(t,i,s),this.node_set_combined_aabb(a,t,n),e[t*ca+9]=1+r(e[i*ca+9],e[s*ca+9]),e[a*ca+9]=1+r(e[t*ca+9],e[n*ca+9])):(e[a*ca+8]=s,e[t*ca+7]=n,e[n*ca+6]=t,this.node_set_combined_aabb(t,i,n),this.node_set_combined_aabb(a,t,s),e[t*ca+9]=1+r(e[i*ca+9],e[n*ca+9]),e[a*ca+9]=1+r(e[t*ca+9],e[s*ca+9])),a}return t}balance_rotate(t){const e=this.__data_uint32,a=t*ca;if(this.node_is_leaf(t)||e[a+9]<2)return t;const i=e[a+7],n=e[a+8],s=this.node_is_leaf(i),o=this.node_is_leaf(n);let c=0,h=0,d=oa,_=oa,l=oa,f=oa;if(!s){const t=this.node_get_surface_area(i);d=e[i*ca+7],_=e[i*ca+8];const a=t-this.node_get_combined_surface_area(n,_);a>c&&(c=a,h=1);const s=t-this.node_get_combined_surface_area(d,n);s>c&&(c=s,h=2)}if(!o){const t=this.node_get_surface_area(n);l=e[n*ca+7],f=e[n*ca+8];const a=t-this.node_get_combined_surface_area(i,f);a>c&&(c=a,h=3);const s=t-this.node_get_combined_surface_area(l,i);s>c&&(c=s,h=4)}if(0===h)return this.balance_height(t);switch(h){case 1:e[a+8]=d,e[i*ca+7]=n,e[d*ca+6]=t,e[n*ca+6]=i,this.node_set_combined_aabb(i,n,_),e[i*ca+9]=1+r(e[n*ca+9],e[_*ca+9]);break;case 2:e[a+8]=_,e[i*ca+8]=n,e[_*ca+6]=t,e[n*ca+6]=i,this.node_set_combined_aabb(i,d,n),e[i*ca+9]=1+r(e[d*ca+9],e[n*ca+9]);break;case 3:e[a+7]=l,e[n*ca+7]=i,e[l*ca+6]=t,e[i*ca+6]=n,this.node_set_combined_aabb(n,i,f),e[n*ca+9]=1+r(e[i*ca+9],e[f*ca+9]);break;case 4:e[a+7]=f,e[n*ca+8]=i,e[f*ca+6]=t,e[i*ca+6]=n,this.node_set_combined_aabb(n,l,i),e[n*ca+9]=1+r(e[l*ca+9],e[i*ca+9])}return e[a+9]=1+r(e[e[a+7]*ca+9],e[e[a+8]*ca+9]),t}node_assign_children(t,e,a){this.node_set_combined_aabb(t,e,a),this.node_assign_children_only(t,e,a)}node_assign_children_only(t,e,a){this.node_set_parent(e,t),this.node_set_parent(a,t),this.node_set_child1(t,e),this.node_set_child2(t,a),this.node_set_height(t,1+Math.max(this.node_get_height(e),this.node_get_height(a)))}release_all(){this.__root=oa,this.__size=0,this.__free_pointer=0}traverse(t,e){let a=0;const i=[],n=this.__root;n!==oa&&(i[a++]=n);const s=this.__data_uint32;for(;a>0;){a--;const n=i[a];t.call(e,n,this);const r=n*ca,o=s[r+7],c=s[r+8];o!==oa&&(i[a++]=c,i[a++]=o)}}collect_nodes_all(t,e){let a=e;return this.traverse(e=>{t[a++]=e}),a-e}__move_node_links(t,e){const a=this.__data_uint32,i=t*ca,n=a[i+7],s=a[i+8];n!==oa&&(a[n*ca+6]=e,a[s*ca+6]=e);const r=a[i+6];r!==oa&&(a[r*ca+7]===t?a[r*ca+7]=e:a[r*ca+8]=e)}swap_nodes(t,e){const a=this.__data_uint32,n=t*ca,s=e*ca;return a[n+6]!==e&&a[s+6]!==t&&(this.__move_node_links(t,e),this.__move_node_links(e,t),i(a,n,this.__free,this.__free_pointer,ca),i(a,s,a,n,ca),i(this.__free,this.__free_pointer,a,s,ca),this.__root===t?this.__root=e:this.__root===e&&(this.__root=t),!0)}}da.prototype.isBVH=!0;const _a=new ArrayBuffer(9280),la=new Float32Array(_a,0,1536),fa=new Float32Array(_a,6144,256),ua=new Float32Array(_a,7168,256),ba=new Uint32Array(_a,8192,256),ga=new Uint32Array(_a,9216,16);function ma(t,e,a){if(1===oe(a))return e[T(a)];let i=ba[a],n=a&~i;const s=t.allocate_node(),r=ma(t,e,i),o=ma(t,e,n);return t.node_assign_children(s,r,o),s}function ya(t,e,a){if(e===oa)return;if(t.node_is_leaf(e))return;const i=t.node_get_child1(e),n=t.node_get_child2(e);let s=0;if(i!==oa&&(ga[s++]=i),n!==oa&&(ga[s++]=n),0!==s){for(;s<a;){let e=-1,a=0;for(let i=0;i<s;i++){const n=ga[i];if(t.node_is_leaf(n))continue;const s=t.node_get_surface_area(n);s>a&&(a=s,e=i)}if(-1===e)break;const i=ga[e],n=t.node_get_child1(i),r=t.node_get_child2(i);ga[e]=n,ga[s++]=r,t.release_node(i)}s<=2||function(t,e,a,i){const n=t.data_float32,s=(1<<i)-1;for(let t=1;t<=s;t++){let e,i,s,r,o,c;const h=!(t&t-1);if(h){const h=a[T(t)]*ca;e=n[h],i=n[h+1],s=n[h+2],r=n[h+3],o=n[h+4],c=n[h+5]}else{const a=t&-t,n=6*a,h=6*(t^a);e=Math.min(la[n],la[h]),i=Math.min(la[n+1],la[h+1]),s=Math.min(la[n+2],la[h+2]),r=Math.max(la[n+3],la[h+3]),o=Math.max(la[n+4],la[h+4]),c=Math.max(la[n+5],la[h+5])}const d=6*t;la[d]=e,la[d+1]=i,la[d+2]=s,la[d+3]=r,la[d+4]=o,la[d+5]=c;const _=r-e,l=o-i,f=c-s,u=2*(_*l+l*f+f*_);fa[t]=u,h&&(ua[t]=1*u)}for(let t=2;t<=i;t++)for(let e=1;e<=s;e++){if(oe(e)!==t)continue;let a=Infinity,i=0;const n=e-1&e;let s=-n&e;do{const t=ua[s]+ua[e^s];t<a&&(a=t,i=s),s=s-n&e}while(0!==s);const r=1.2*fa[e]+a;ua[e]=r,ba[e]=i}!function(t,e,a,i){let n=ba[i],s=i&~n;t.node_assign_children(e,ma(t,a,n),ma(t,a,s))}(t,e,a,(1<<i)-1)}(t,e,ga,s)}}function pa(t,e=t.root,a=7){if(e===oa)return;if(t.node_is_leaf(e))return;let i=e,n=0,s=t.node_get_child1(i);if(s===oa&&(s=t.node_get_child2(i)),s===oa)return;const r=Math.ceil(Math.log2(a));for(;;){if(2===n){const e=t.node_get_child1(s),i=t.node_get_child2(s);t.node_set_height(s,1+Math.max(t.node_get_height(e),t.node_get_height(i))),t.node_get_height(s)>=r&&ya(t,s,a)}if(t.node_is_leaf(s)){const e=i;n=t.node_get_child1(e)===s?1:2,i=s,s=e}else if(2===n){i=s;const a=t.node_get_parent(s);if(n=t.node_get_child1(a)===s?1:2,s===e)break;s=a}else if(1===n){const e=t.node_get_child2(s);i=s,e===oa?(n=2,s=t.node_get_parent(s)):(n=0,s=e)}else if(0===n){const e=t.node_get_child1(s),a=t.node_get_child2(s);if(e!==oa)n=0,i=s,s=e;else if(a!==oa)n=0,i=s,s=a;else{const e=t.node_get_child1(i);t.release_node(s),e===s?(t.node_set_child1(i,oa),i=oa,n=1):(t.node_set_child2(i,oa),i=oa,n=2),s=i}}}ya(t,e,a)}function wa(t,e,a){let i=t;return i>e&&(i=e),i>a&&(i=a),i}function va(t,e,a,i,n,s){const r=3*i,o=3*n,c=3*s,h=a[r],d=a[r+1],_=a[r+2],l=a[o],f=a[o+1],u=a[o+2],b=a[c],g=a[c+1],m=a[c+2];t[e]=wa(h,l,b),t[e+1]=wa(d,f,g),t[e+2]=wa(_,u,m),t[e+3]=re(h,l,b),t[e+4]=re(d,f,g),t[e+5]=re(_,u,m)}function Aa(t,e,a){const n=new da;!function({bvh:t,meshlets:e,bounding_box:a,primitive_count:i,optimization:n=1}){const s=e.count,o=i,c=o+r(0,o-1);if(t.release_all(),0===o)return void(t.root=oa);t.allocate_linear(c);const h=new Uint32Array(s),d=r(0,s-1);{const i=c-d,n=new Uint32Array(i);let r=0;const o=new Uint32Array(128);for(let t=0;t<i;t++){const e=c-1-t;n[t]=e}const _=new Uint32Array(s);for(let t=0;t<s;t++){const i=e.read_header(t).bounds_box,n=.5*(i[0]+i[3]),s=.5*(i[1]+i[4]),r=.5*(i[2]+i[5]);_[t]=f(n,s,r,a)}const l=new Uint32Array(s);for(let t=0;t<s;t++)l[t]=t;l.sort((t,e)=>_[t]-_[e]);const u=new Float32Array(6);for(let a=0;a<s;a++){const i=l[a],s=e.read_meshlet(i),c=s.header,d=s.attribute_index,_=s.attribute_position,f=c.primitive_count;for(let e=0;e<f;e++){const a=3*e;va(u,0,_,d[a+0],d[a+1],d[a+2]);const s=(16777215&i)<<8|255&e,c=n[r++];t.node_set_aabb(c,u),t.node_set_user_data(c,s),t.node_set_child1(c,oa),o[e]=c}let b=f;for(;b>1;){let e=0,a=0;for(;a+1<b;){const i=o[a++],s=o[a++],c=n[r++];t.node_assign_children(c,s,i),o[e++]=c}for(;a<b;)o[e++]=o[a++];b=e}h[a]=o[0]}}{let e=s,a=0;const i=d,n=new Uint32Array(i);for(let t=0;t<i;t++){const e=i-1-t;n[t]=e}for(;e>1;){let i=0,s=0;for(;s+1<e;){const e=h[s++],r=h[s++],o=n[a++];t.node_assign_children(o,r,e),h[i++]=o}for(;s<e;)h[i++]=h[s++];e=i}const r=h[0];t.node_set_parent(r,oa),t.root=r}for(let e=0;e<n;e++)pa(t);t.trim()}({bvh:n,meshlets:t,bounding_box:a,primitive_count:e});const s=new ArrayBuffer(32*n.node_capacity);return function(t,e,a,n,s){const r=new Uint32Array(a,0),o=new Uint32Array(t,0);for(let t=0;t<s;t++){const e=10*t,a=8*t;i(r,e,o,a,6),o[a+6]=r[e+7],o[a+7]=r[e+8]}}(s,0,n.data_buffer,0,n.node_capacity),s}const xa=new class extends na{version=0;klass=ia;serialize_bvh=!0;serialize(t,e){t.writeUint32(e.primitive_count),t.writeFloat32Array(e.bounding_box,0,6),t.writeFloat32Array(e.bounding_sphere,0,4),t.writeUTF8String(e.name);const a=e.meshlets;t.writeUint32(a.count),t.writeUint32(a.metadata_buffer.byteLength),t.writeBytes(new Uint8Array(a.metadata_buffer),0,a.metadata_buffer.byteLength),t.writeUint32(a.data_buffer.byteLength),t.writeBytes(new Uint8Array(a.data_buffer),0,a.data_buffer.byteLength),this.serialize_bvh?(t.writeUint32(e.bvh.byteLength),t.writeBytes(new Uint8Array(e.bvh),0,e.bvh.byteLength)):t.writeUint32(0)}deserialize(t,e){e.primitive_count=t.readUint32(),t.readFloat32Array(e.bounding_box,0,6),t.readFloat32Array(e.bounding_sphere,0,4),e.name=t.readUTF8String(),e.meshlets.count=t.readUint32();const a=t.readUint32(),i=new Uint8Array(a);t.readBytes(i,0,a),e.meshlets.metadata_buffer=i.buffer;const n=t.readUint32(),s=new Uint8Array(n);t.readBytes(s,0,n),e.meshlets.data_buffer=s.buffer;const r=t.readUint32();if(0===r&&e.primitive_count>0)e.bvh=Aa(e.meshlets,e.primitive_count,e.bounding_box);else{const a=new Uint8Array(r);t.readBytes(a,0,r),e.bvh=a.buffer}}};function ka(t,e,a,i,n,s,r,o){const c=3*o;let h,d,_;void 0!==r?(h=r[c],d=r[c+1],_=r[c+2]):(h=c,d=c+1,_=c+2);const l=h*n+i,f=d*n+i,u=_*n+i;let b=a[l],g=a[l+1],m=a[l+2],y=a[f],p=a[f+1],w=a[f+2],v=a[u],A=a[u+1],x=a[u+2];t[e]=b,t[e+1]=g,t[e+2]=m,t[e+3]=y,t[e+4]=p,t[e+5]=w,t[e+6]=v,t[e+7]=A,t[e+8]=x}function za(t,e,a,i,n,s){const r=t.getLeafAddress(e);va(t.__data_float32,r,a,i,n,s),t.__data_uint32[r+6]=e}const ja=new Float64Array(9),Ua=[E.Uint64,E.Int64];function Ea(t){return 1===t?"":", true"}function Fa(t,e){return 0===t?"p":"p + "+t*e}function Ia(t,e){return 0===e?t:t+" + "+e}function Ca(t){return 1===t?"component":"component * "+t}class Ba{type=E.Float32;offset=0;components=0;stride=0;data_view=null;read=null;write=null;read_component=null;write_component=null;#V=null;#R=null;#P=null;#D=null;constructor(t,e,a){if(-1!==Ua.indexOf(t))throw new Error("type '"+t+"' is not supported by BinaryDataLayer: its DataView accessors are BigInt-valued, and no result contract for that exists yet");this.type=t,this.offset=e,this.components=a}get byte_size(){return D[this.type]*this.components}bind(t,e){e===this.stride&&null!==this.#V||(this.stride=e,this.#V=function(t,e,a,i){const n=R[t],s=D[t],r=Ea(s),o=["const p = id * "+i+" + "+e+";"];for(let t=0;t<a;t++)o.push("result["+Ia("result_offset",t)+"] = data_view."+n+"("+Fa(t,s)+r+");");return it.INSTANCE.compile({args:["data_view"],code:"return function (result, result_offset, id) {\n"+o.join("\n")+"\n};"})}(this.type,this.offset,this.components,e),this.#R=function(t,e,a,i){const n=P[t],s=D[t],r=Ea(s),o=["const p = id * "+i+" + "+e+";"];for(let t=0;t<a;t++)o.push("data_view."+n+"("+Fa(t,s)+", value["+Ia("value_offset",t)+"]"+r+");");return it.INSTANCE.compile({args:["data_view"],code:"return function (id, value, value_offset) {\n"+o.join("\n")+"\n};"})}(this.type,this.offset,this.components,e),this.#P=function(t,e,a){const i=R[t],n=D[t],s="id * "+a+" + "+e+" + "+Ca(n);return it.INSTANCE.compile({args:["data_view"],code:"return function (id, component) {\nreturn data_view."+i+"("+s+Ea(n)+");\n};"})}(this.type,this.offset,e),this.#D=function(t,e,a){const i=P[t],n=D[t],s="id * "+a+" + "+e+" + "+Ca(n);return it.INSTANCE.compile({args:["data_view"],code:"return function (id, component, value) {\ndata_view."+i+"("+s+", value"+Ea(n)+");\n};"})}(this.type,this.offset,e)),this.data_view=t,this.read=this.#V(t),this.write=this.#R(t),this.read_component=this.#P(t),this.write_component=this.#D(t)}}Ba.prototype.isBinaryDataLayer=!0;class Ma{#T;#L=[];#q=0;#O=0;#X=new ArrayBuffer(0);#K=new Uint8Array(this.#X);#C=new DataView(this.#X);constructor(t){this.#T=t}get record_size(){return this.#q}get layers(){return this.#L}get capacity(){return this.#O}get byteSize(){return this.#O*this.#q}get data_view(){return this.#C}add_layer(t,e){const a=this.#q,i=new Ba(t,this.#q,e);return this.#L.push(i),this.#q+=i.byte_size,this.#W(this.#O,a),i}ensure_capacity(t){t<=this.#O||this.#W(t,this.#q)}sync_capacity(){this.ensure_capacity(this.#T.capacity)}trim(){const t=this.#T.size;t>=this.#O||this.#W(t,this.#q)}swap(t,e){if(t===e)return;const a=this.#q;n(this.#K,t*a,this.#K,e*a,a)}copy_record(t,e,a){const i=this.#q,n=a*i;this.#K.set(e.#K.subarray(n,n+i),t*i)}record_equal(t,e){if(t===e)return!0;const a=this.#q,i=t*a,n=e*a,s=this.#K;for(let t=0;t<a;t++)if(s[i+t]!==s[n+t])return!1;return!0}copy(t){if(this!==t){this.#L=[],this.#q=0,this.#O=0,this.#X=new ArrayBuffer(0),this.#K=new Uint8Array(this.#X),this.#C=new DataView(this.#X);for(const e of t.layers)this.add_layer(e.type,e.components);this.ensure_capacity(t.capacity),this.#K.set(t.#K.subarray(0,t.capacity*t.record_size))}}#W(t,e){const a=this.#q,i=this.#K,n=this.#O;this.#X=new ArrayBuffer(t*a),this.#K=new Uint8Array(this.#X),this.#C=new DataView(this.#X),this.#O=t;const s=Math.min(t,n);if(s>0&&e>0)if(e===a)this.#K.set(i.subarray(0,s*a));else for(let t=0;t<s;t++)this.#K.set(i.subarray(t*e,t*e+e),t*a);for(const t of this.#L)t.bind(this.#C,a)}}Ma.prototype.isBinaryDataBlock=!0;class Sa{__free=[];__free_pointer=0;__size=0;constructor(t,e=128,a=!1){this.__item_size=t,this.__data_buffer=B(w(e*t),a),this.__data_uint8=new Uint8Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__data_float32=new Float32Array(this.__data_buffer),this.data_view=new DataView(this.__data_buffer),this.__capacity=e,this.__occupancy=new he(this.__capacity),this.__occupancy.preventShrink()}fromArrayBuffer(t,e=0){const a=Math.floor(t.byteLength/this.__item_size);this.__data_buffer=t,this.__data_uint8=new Uint8Array(t),this.__data_uint32=new Uint32Array(t),this.__data_float32=new Float32Array(t),this.data_view=new DataView(t),this.__capacity=a,this.__free_pointer=0,this.__size=e,this.__occupancy=new he(a),this.__occupancy.preventShrink(),e>0&&this.__occupancy.setRange(0,e-1)}get arrayBuffer(){return this.__data_buffer}get item_size(){return this.__item_size}get size(){return this.__size}count(){return this.__size-this.__free_pointer}get byteSize(){return this.__capacity*this.__item_size}get capacity(){return this.__capacity}get data_uint32(){return this.__data_uint32}get data_float32(){return this.__data_float32}trim(){this.__set_capacity(this.__size)}element_address(t){return this.__item_size*t}element_word(t){return Math.floor(this.element_address(t)/4)}is_allocated(t){return!(t>=this.__size)&&this.__occupancy.get(t)}__set_capacity(t){if(this.__capacity===t)return;const e=this.__data_uint8,a=w(t*this.__item_size),n=new(0,this.__data_buffer.constructor)(a);this.__data_buffer=n,this.__data_uint8=new Uint8Array(n),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__data_float32=new Float32Array(this.__data_buffer),this.data_view=new DataView(n),function(t,e){const a=e.length;a>=t.length?e.set(t,0):t.constructor===e.constructor?p(t.buffer,t.byteOffset,e.buffer,e.byteOffset,Math.min(t.byteLength,e.byteLength)):i(t,0,e,0,a)}(e,this.__data_uint8),this.__capacity=t}__grow_capacity(t){const e=Math.ceil(re(t,1.2*this.__capacity,this.__capacity+32));this.__set_capacity(e)}ensure_capacity(t){this.__capacity<t&&this.__grow_capacity(t)}allocate(){if(this.__free_pointer>0){this.__free_pointer--;const t=this.__free[this.__free_pointer];return this.__occupancy.set(t,!0),t}let t=this.__size;return this.__size++,this.__size>=this.__capacity&&this.__grow_capacity(this.__size),this.__occupancy.set(t,!0),t}allocate_continuous(t){const e=this.__size;return this.__size+=t,this.__size>=this.__capacity&&this.__grow_capacity(this.__size),t>0&&this.__occupancy.setRange(e,e+t-1),e}swap(t,e){if(t===e)return;const a=this.__item_size;n(this.__data_uint8,t*a,this.__data_uint8,e*a,a)}release(t){t===this.__size-1?(this.__size--,this.__occupancy.set(t,!1)):t>=this.__size||(this.__free[this.__free_pointer++]=t,this.__occupancy.set(t,!1))}clear_free_set(){this.__free_pointer=0,this.__size>0&&this.__occupancy.setRange(0,this.__size-1)}truncate(t){this.__size=t,this.__free_pointer=0,this.__occupancy.reset(),t>0&&this.__occupancy.setRange(0,t-1)}clear(){this.__size=0,this.__free_pointer=0,this.__occupancy.reset()}copy(t){this.__size=t.size,this.__item_size=t.item_size;const e=t.size*this.item_size,a=this.__data_buffer,i=t.__data_buffer;a.byteLength<e?this.fromArrayBuffer(i.slice(0),this.__size):p(i,0,a,0,e),this.__free_pointer=t.__free_pointer,this.__free=t.__free.slice(),this.__rebuild_occupancy_from_free()}__rebuild_occupancy_from_free(){this.__occupancy=new he(Math.max(this.__capacity,this.__size)),this.__occupancy.preventShrink(),this.__size>0&&this.__occupancy.setRange(0,this.__size-1);const t=this.__free,e=this.__free_pointer;for(let a=0;a<e;a++)this.__occupancy.set(t[a],!1)}*[Symbol.iterator](){for(let t=0;t<this.__size;t++)!1!==this.is_allocated(t)&&(yield t)}}Sa.prototype.isBinaryElementPool=!0;const Na=4294967295;function Va(t,e,a){if(null===a)return null;const i=null===t?new Ma(e):t;return i.copy(a),i.sync_capacity(),i}class Ra{__vertex_pool=new Sa(28);__edge_pool=new Sa(28);__loop_pool=new Sa(28);__face_pool=new Sa(16);__vertex_data_block=null;__edge_data_block=null;__loop_data_block=null;__face_data_block=null;get byteSize(){let t=this.__loop_pool.byteSize+this.__vertex_pool.byteSize+this.__edge_pool.byteSize+this.__face_pool.byteSize;return null!==this.__vertex_data_block&&(t+=this.__vertex_data_block.byteSize),null!==this.__edge_data_block&&(t+=this.__edge_data_block.byteSize),null!==this.__loop_data_block&&(t+=this.__loop_data_block.byteSize),null!==this.__face_data_block&&(t+=this.__face_data_block.byteSize),t}trim(){this.__loop_pool.trim(),this.__vertex_pool.trim(),this.__edge_pool.trim(),this.__face_pool.trim(),null!==this.__vertex_data_block&&this.__vertex_data_block.trim(),null!==this.__edge_data_block&&this.__edge_data_block.trim(),null!==this.__loop_data_block&&this.__loop_data_block.trim(),null!==this.__face_data_block&&this.__face_data_block.trim()}get vertices(){return this.__vertex_pool}get edges(){return this.__edge_pool}get loops(){return this.__loop_pool}get faces(){return this.__face_pool}get vertex_data(){return this.__vertex_data_block}get edge_data(){return this.__edge_data_block}get loop_data(){return this.__loop_data_block}get face_data(){return this.__face_data_block}vertex_data_add_layer(t,e){null===this.__vertex_data_block&&(this.__vertex_data_block=new Ma(this.__vertex_pool));const a=this.__vertex_data_block.add_layer(t,e);return this.__vertex_data_block.sync_capacity(),a}edge_data_add_layer(t,e){null===this.__edge_data_block&&(this.__edge_data_block=new Ma(this.__edge_pool));const a=this.__edge_data_block.add_layer(t,e);return this.__edge_data_block.sync_capacity(),a}loop_data_add_layer(t,e){null===this.__loop_data_block&&(this.__loop_data_block=new Ma(this.__loop_pool));const a=this.__loop_data_block.add_layer(t,e);return this.__loop_data_block.sync_capacity(),a}face_data_add_layer(t,e){null===this.__face_data_block&&(this.__face_data_block=new Ma(this.__face_pool));const a=this.__face_data_block.add_layer(t,e);return this.__face_data_block.sync_capacity(),a}delete_vertex_data(){return null!==this.__vertex_data_block&&(this.__vertex_data_block=null,!0)}delete_edge_data(){return null!==this.__edge_data_block&&(this.__edge_data_block=null,!0)}delete_loop_data(){return null!==this.__loop_data_block&&(this.__loop_data_block=null,!0)}delete_face_data(){return null!==this.__face_data_block&&(this.__face_data_block=null,!0)}clear(){this.__vertex_pool.clear(),this.__edge_pool.clear(),this.__loop_pool.clear(),this.__face_pool.clear()}vertex_read_coordinate(t,e,a){const i=this.__vertex_pool,n=i.element_address(a)>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}vertex_write_coordinate(t,e,a){const i=this.__vertex_pool,n=i.element_address(t)>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}vertex_read_normal(t,e,a){const i=this.__vertex_pool,n=i.element_address(a)+12>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}vertex_write_normal(t,e,a){const i=this.__vertex_pool,n=i.element_address(t)+12>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}vertex_read_edge(t){const e=this.__vertex_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}vertex_write_edge(t,e){const a=this.__vertex_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}edge_read_vertex1(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a)}edge_write_vertex1(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}edge_read_vertex2(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+4)}edge_write_vertex2(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+4,e)}edge_read_loop(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+8)}edge_write_loop(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+8,e)}edge_read_v1_disk_next(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+12)}edge_write_v1_disk_next(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+12,e)}edge_read_v1_disk_prev(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+16)}edge_write_v1_disk_prev(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+16,e)}edge_read_v2_disk_next(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+20)}edge_write_v2_disk_next(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+20,e)}edge_read_v2_disk_prev(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}edge_write_v2_disk_prev(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}vertex_create(){const t=this.__vertex_pool.allocate();return this.__vertex_data_block?.sync_capacity(),t}vertices_create_continuous(t){const e=this.__vertex_pool.allocate_continuous(t);return this.__vertex_data_block?.sync_capacity(),e}vertex_destroy(t){this.__vertex_pool.release(t)}edge_create(){const t=this.__edge_pool.allocate();return this.__edge_data_block?.sync_capacity(),t}edge_destroy(t){this.__edge_pool.release(t)}face_create(){const t=this.__face_pool.allocate();return this.__face_data_block?.sync_capacity(),t}faces_create_continuous(t){const e=this.__face_pool.allocate_continuous(t);return this.__face_data_block?.sync_capacity(),e}face_destroy(t){this.__face_pool.release(t)}loop_create(){const t=this.__loop_pool.allocate();return this.__loop_data_block?.sync_capacity(),this.loop_initialize(t),t}loop_destroy(t){this.__loop_pool.release(t)}loop_initialize(t){this.loop_write_radial_next(t,t),this.loop_write_radial_prev(t,t),this.loop_write_next(t,t),this.loop_write_prev(t,t)}loop_read_vertex(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a)}loop_write_vertex(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}loop_read_edge(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+4)}loop_write_edge(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+4,e)}loop_read_face(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+8)}loop_write_face(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+8,e)}loop_read_radial_next(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+12)}loop_write_radial_next(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+12,e)}loop_read_radial_prev(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+16)}loop_write_radial_prev(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+16,e)}loop_read_next(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+20)}loop_write_next(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+20,e)}loop_read_prev(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}loop_write_prev(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}face_read_loop(t){const e=this.__face_pool,a=e.element_address(t);return e.data_view.getUint32(a)}face_write_loop(t,e){const a=this.__face_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}face_read_normal(t,e,a){const i=this.__face_pool,n=i.element_address(a)+4>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}face_write_normal(t,e,a){const i=this.__face_pool,n=i.element_address(t)+4>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}copy(t){this!==t&&(this.__vertex_pool.copy(t.vertices),this.__edge_pool.copy(t.edges),this.__loop_pool.copy(t.loops),this.__face_pool.copy(t.faces),this.__vertex_data_block=Va(this.__vertex_data_block,this.__vertex_pool,t.vertex_data),this.__edge_data_block=Va(this.__edge_data_block,this.__edge_pool,t.edge_data),this.__loop_data_block=Va(this.__loop_data_block,this.__loop_pool,t.loop_data),this.__face_data_block=Va(this.__face_data_block,this.__face_pool,t.face_data))}clone(){const t=new Ra;return t.copy(this),t}}function Pa(t,e,a){t.loop_write_edge(e,a);const i=t.edge_read_loop(a);if(i===Na)t.edge_write_loop(a,e),t.loop_write_radial_next(e,e),t.loop_write_radial_prev(e,e);else{const a=t.loop_read_radial_prev(i);t.loop_write_radial_next(a,e),t.loop_write_radial_prev(e,a),t.loop_write_radial_next(e,i),t.loop_write_radial_prev(i,e)}}function Da(t,e,a,i){let n;return t.edge_read_vertex1(e)===i?(n=t.edge_read_v1_disk_next(e),t.edge_write_v1_disk_next(e,a)):(n=t.edge_read_v2_disk_next(e),t.edge_write_v2_disk_next(e,a)),n}function Ta(t,e,a,i){let n;return t.edge_read_vertex1(e)===i?(n=t.edge_read_v1_disk_prev(e),t.edge_write_v1_disk_prev(e,a)):(n=t.edge_read_v2_disk_prev(e),t.edge_write_v2_disk_prev(e,a)),n}function La(t,e,a,i){const n=Da(t,e,a,i);Da(t,a,n,i),Ta(t,n,a,i),Ta(t,a,e,i)}function qa(t,e,a){const i=function(t,e,a){const i=t.vertex_read_edge(e);if(i===Na)return Na;let n=i;do{const i=t.edge_read_vertex1(n),s=t.edge_read_vertex2(n);if(i===e&&s===a||i===a&&s===e)return n;if(i===e)n=t.edge_read_v1_disk_next(n);else{if(s!==e)throw new Error("Invalid edge, not connected to first vertex");n=t.edge_read_v2_disk_next(n)}}while(n!==i);return Na}(t,e,a);return i!==Na?i:function(t,e,a){const i=t.edge_create();t.edge_write_vertex1(i,e),t.edge_write_vertex2(i,a),t.edge_write_loop(i,Na);const n=t.vertex_read_edge(e);if(n!==Na?La(t,n,i,e):(t.vertex_write_edge(e,i),t.edge_write_v1_disk_next(i,i),t.edge_write_v1_disk_prev(i,i)),e===a)return i;const s=t.vertex_read_edge(a);return s!==Na?La(t,s,i,a):(t.vertex_write_edge(a,i),t.edge_write_v2_disk_next(i,i),t.edge_write_v2_disk_prev(i,i)),i}(t,e,a)}function Oa(t,e,a,i){t.clear();const n=a.length/3;t.vertices_create_continuous(n);for(let e=0;e<n;e++){const i=3*e,n=e;t.vertex_write_coordinate(n,a,i),t.vertex_write_edge(n,Na)}const s=e.length/3;t.faces_create_continuous(s),t.loops.ensure_capacity(3*s),t.edges.ensure_capacity(1.6*s);for(let a=0;a<s;a++){const i=3*a,n=e[i],s=e[i+1],r=e[i+2],o=a,c=qa(t,n,s),h=qa(t,s,r),d=qa(t,r,n),_=t.loop_create(),l=t.loop_create(),f=t.loop_create();t.loop_write_vertex(_,n),t.loop_write_face(_,o),t.loop_write_vertex(l,s),t.loop_write_face(l,o),t.loop_write_vertex(f,r),t.loop_write_face(f,o),Pa(t,_,c),Pa(t,l,h),Pa(t,f,d),t.loop_write_next(_,l),t.loop_write_prev(_,f),t.loop_write_next(l,f),t.loop_write_prev(l,_),t.loop_write_next(f,_),t.loop_write_prev(f,l),t.face_write_loop(o,_)}}function Xa(t,e){const a=t.edge_read_loop(e);return a!==Na&&t.loop_read_radial_next(a)===a}function Ka(t,e,a){const i=t.edge_read_vertex1(e),n=t.edge_read_vertex2(e);return i===a?n:i}Ra.prototype.isBinaryTopology=!0;const Wa=[],Ja=[],Qa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(let t=0,e=64;t<e;++t)Wa[t]=Qa[t],Ja[Qa.charCodeAt(t)]=t;function Ga(t){return Wa[t>>18&63]+Wa[t>>12&63]+Wa[t>>6&63]+Wa[63&t]}function Ya(t,e,a){const i=[];for(let n=e;n<a;n+=3){const e=(t[n]<<16&16711680)+(t[n+1]<<8&65280)+(255&t[n+2]);i.push(Ga(e))}return i.join("")}Ja["-".charCodeAt(0)]=62,Ja["_".charCodeAt(0)]=63;const Ha=16383;class $a{static encode(t){return function(t){const e=t.length,a=e%3,i=[],n=e-a;for(let e=0;e<n;e+=Ha){const a=Ya(t,e,e+Ha>n?n:e+Ha);i.push(a)}if(1===a){const a=t[e-1];i.push(Wa[a>>2]+Wa[a<<4&63]+"==")}else if(2===a){const a=(t[e-2]<<8)+t[e-1];i.push(Wa[a>>10]+Wa[a>>4&63]+Wa[a<<2&63]+"=")}return i.join("")}(new Uint8Array(t))}static decode(t){return function(t){let e;const a=function(t){const e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");let a=t.indexOf("=");return-1===a&&(a=e),[a,a===e?0:4-a%4]}(t),i=a[0],n=a[1],s=new Uint8Array(function(t,e){return 3*(t+e)/4-e}(i,n));let r=0;const o=n>0?i-4:i;let c=0;for(;c<o;c+=4){const a=t.charCodeAt(c),i=t.charCodeAt(c+1),n=t.charCodeAt(c+2),o=t.charCodeAt(c+3);e=Ja[a]<<18|Ja[i]<<12|Ja[n]<<6|Ja[o],s[r++]=e>>16&255,s[r++]=e>>8&255,s[r++]=255&e}if(2===n){const a=t.charCodeAt(c),i=t.charCodeAt(c+1);e=Ja[a]<<2|Ja[i]>>4,s[r++]=255&e}if(1===n){const a=t.charCodeAt(c),i=t.charCodeAt(c+1),n=t.charCodeAt(c+2);e=Ja[a]<<10|Ja[i]<<4|Ja[n]>>2,s[r++]=e>>8&255,s[r++]=255&e}return s}(t).buffer}}const Za={[E.Uint8]:Uint8Array,[E.Uint16]:Uint16Array,[E.Uint32]:Uint32Array,[E.Uint64]:BigUint64Array,[E.Int8]:Int8Array,[E.Int16]:Int16Array,[E.Int32]:Int32Array,[E.Int64]:BigInt64Array,[E.Float16]:Float16Array,[E.Float32]:Float32Array,[E.Float64]:Float64Array};function ti(t){const e=Object.getPrototypeOf(t).constructor;switch(e){case Uint8Array:case Uint8ClampedArray:return E.Uint8;case Uint16Array:return E.Uint16;case Uint32Array:return E.Uint32;case Int8Array:return E.Int8;case Int16Array:return E.Int16;case Int32Array:return E.Int32;case Float16Array:return E.Float16;case Float32Array:return E.Float32;case Array:case Float64Array:return E.Float64;default:throw new Error(`unsupported constructor type ${e.name}`)}}function ei(e,a){if(e===a)return!0;const i=e.length;if(i!==a.length)return!1;const n=e.constructor;if(n!==a.constructor)return!1;if(0===i)return!0;if(i<128)return t(e,a);const s=e.byteLength;if(s!==a.byteLength)return!1;const r=e.buffer,o=a.buffer,c=e.byteOffset,h=a.byteOffset;if(r===o&&c===h)return!0;let d=e,_=a;const l=n.BYTES_PER_ELEMENT,f=y(c,h,s),u="undefined"!=typeof Float16Array&&n===Float16Array||n===Float32Array||n===Float64Array;return!u&&l<4&&4===f?(d=new Uint32Array(r,c,s>>>2),_=new Uint32Array(o,h,s>>>2)):!u&&l<2&&2===f&&(d=new Uint16Array(r,c,s>>>1),_=new Uint16Array(o,h,s>>>1)),t(d,_)}function ai(t,e,a){return(e-t)*a+t}function ii(t,e,a,i,n){return.5*(i-e+(2*e-5*a+4*i-n+(3*(a-i)+n-e)*t)*t)*t+a}function ni(t){const e=0|t;return sa-((t-e)*sa>>>0)^e}const si=new Float64Array(2),ri=new Float64Array(1),oi=new Float64Array(2),ci=new Float64Array(1),hi=new Float64Array(18),di=new Float64Array(9);class _i{version=0;constructor(t=[],e=1,a=0,i=0){if(!Number.isInteger(e)||e<0)throw new Error(`itemSize must be a non-negative integer, instead was ${e}`);if(!Number.isInteger(a)||a<0)throw new Error(`width must be a non-negative integer, instead was ${a}`);if(!Number.isInteger(i)||a<0)throw new Error(`height must be a non-negative integer, instead was ${i}`);if(void 0===t)throw new Error("data was undefined");if(t.length<a*i*e)throw new Error(`Buffer underflow, data.length(=${t.length}) is too small. Expected at least ${a*i*e}`);this.width=a,this.height=i,this.itemSize=e,this.data=t}sampleCatmullRomUV(t,e,a){const i=this.itemSize;for(let n=0;n<i;n++)a[n]=this.sampleChannelCatmullRomUV(t,e,n)}sampleChannelCatmullRomUV(t,e,a){const i=t*this.width-.5,n=e*this.height-.5;return this.sampleChannelCatmullRom(i,n,a)}sampleChannelCatmullRom(t,e,a){const i=oi;return i[0]=t,i[1]=e,this.sampleChannelCatmullRomArray(ci,0,i,0,a),ci[0]}sampleChannelCatmullRomArray(t,e,a,i,n){const s=a[i],r=a[i+1],o=Math.floor(s),c=Math.floor(r),h=s-o,d=r-c,_=h*(h*(1-.5*h)-.5),l=d*(d*(1-.5*d)-.5),f=h*(.5+h*(2-1.5*h)),u=d*(.5+d*(2-1.5*d)),b=h*h*(.5*h-.5),g=d*d*(.5*d-.5),m=1+h*h*(1.5*h-2.5)+f,y=1+d*d*(1.5*d-2.5)+u,p=o-1,w=c-1,v=o+2,A=c+2,x=o+f/m,k=c+u/y,z=hi,j=di;z[0]=p,z[1]=w,z[2]=x,z[3]=w,z[4]=v,z[5]=w,z[6]=p,z[7]=k,z[8]=x,z[9]=k,z[10]=v,z[11]=k,z[12]=p,z[13]=A,z[14]=x,z[15]=A,z[16]=v,z[17]=A;for(let t=0;t<9;t++)this.sampleChannelBilinearArray(j,t,z,2*t,n);let U=0;U+=j[0]*_*l,U+=j[1]*m*l,U+=j[2]*b*l,U+=j[3]*_*y,U+=j[4]*m*y,U+=j[5]*b*y,U+=j[6]*_*g,U+=j[7]*m*g,U+=j[8]*b*g,t[e]=U}sampleBicubicUV(t,e,a){const i=this.itemSize;for(let n=0;n<i;n++)a[n]=this.sampleChannelBicubicUV(t,e,n)}sampleBicubic(t,e,a,i){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBicubic(t,e,s)}sampleChannelBicubicUV(t,e,a){const i=t*this.width,n=e*this.height;return this.sampleChannelBicubic(i-.5,n-.5,a)}sampleChannelBicubic(t,e,a){const i=this.itemSize,n=this.width,s=this.height,c=this.data,h=n*i,d=n-1,_=s-1,l=Je(t,0,d),f=Je(e,0,_),u=0|l,b=0|f,g=l-u,m=f-b,y=r(0,u-1),p=r(0,b-1),w=o(d,u+1),v=o(_,b+1),A=o(d,w+1),x=p*h+a,k=b*h+a,z=v*h+a,j=o(_,v+1)*h+a,U=y*i,E=u*i,F=w*i,I=A*i,C=c[x+U],B=c[x+E],M=c[x+F],S=c[x+I],N=c[k+U],V=c[k+E],R=c[k+F],P=c[k+I],D=c[z+U],T=c[z+E],L=c[z+F],q=c[z+I],O=c[j+U],X=c[j+E],K=c[j+F],W=c[j+I],J=ii(g,C,B,M,S),Q=ii(g,N,V,R,P),G=ii(g,D,T,L,q),Y=ii(g,O,X,K,W);return ii(m,J,Q,G,Y)}sampleBilinearUV(t,e,a,i=0){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBilinearUV(t,e,s)}sampleBilinear(t,e,a,i=0){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBilinear(t,e,s)}sampleChannelBilinearUV(t,e,a){const i=t*this.width-.5,n=e*this.height-.5;return this.sampleChannelBilinear(i,n,a)}sampleChannelBilinear(t,e,a){const i=si;return i[0]=t,i[1]=e,this.sampleChannelBilinearArray(ri,0,i,0,a),ri[0]}sampleChannelBilinearArray(t,e,a,i,n){const s=a[i],r=a[i+1],o=this.itemSize,c=this.width,h=c*o,d=this.height-1,_=Je(s,0,c-1),l=Je(r,0,d),f=_>>>0,u=l>>>0,b=u*h,g=f*o+n,m=b+g;let y,p;y=_===f?f:f+1,p=l===u?u:u+1;const w=this.data,v=w[m];if(f===y&&u===p)return void(t[e]=v);const A=_-f,x=l-u,k=y*o+n,z=p*h,j=z+g,U=z+k,E=w[b+k],F=w[j],I=w[U],C=ai(v,E,A),B=ai(F,I,A);t[e]=ai(C,B,x)}sampleNearestUV(t,e,a){const i=this.width,n=this.height,s=Math.round(t*i-.5),r=Math.round(e*n-.5);this.read(Je(s,0,i-1),Je(r,0,n-1),a)}readChannel(t,e,a){const i=(e*this.width+t)*this.itemSize+a;return this.data[i]}read(t,e,a){const i=this.width,n=this.itemSize,s=(e*i+t)*n;for(let t=0;t<n;t++)a[t]=this.data[s+t]}write(t,e,a){const i=this.width,n=this.itemSize,s=(e*i+t)*n;for(let t=0;t<n;t++)this.data[s+t]=a[t];this.version++}point2index(t,e){return t+e*this.width}index2point(t,e){const a=this.width,i=t%a,n=t/a|0;e.set(i,n)}copy(t,e,a,i,n,s,r){const o=Math.min(s,t.width-e,this.width-i),c=Math.min(r,t.height-a,this.height-n),h=this.itemSize,d=t.itemSize,_=Math.min(h,d),l=h*this.width,f=d*t.width,u=t.data,b=this.data;let g,m,y;for(m=0;m<c;m++){const t=(m+n)*l,s=(m+a)*f;for(g=0;g<o;g++){const a=t+(g+i)*h,n=s+(g+e)*d;for(y=0;y<_;y++)b[a+y]=u[n+y]}}this.version++}zeroFill(t,e,a,i){const n=Je(t,0,this.width),s=Je(e,0,this.height),r=Je(t+a,0,this.width),o=Je(e+i,0,this.height),c=this.data,h=this.itemSize,d=h*this.width,_=n*h,l=r*h;let f;for(f=s;f<o;f++){const t=f*d;c.fill(0,t+_,t+l)}this.version++}channelFill(t,e){const a=this.itemSize,i=this.data,n=i.length;for(let s=t;s<n;s+=a)i[s]=e;this.version++}fill(t,e,a,i,n){const s=this.width,r=this.height,o=Je(t,0,s),c=Je(e,0,r),h=Je(t+a,0,s),d=Je(e+i,0,r),_=this.data,l=this.itemSize,f=l*s;let u,b,g;for(u=c;u<d;u++){const t=u*f;for(b=o;b<h;b++){const e=t+b*l;for(g=0;g<l;g++)_[e+g]=n[g]}}this.version++}writeChannel(t,e,a,i){const n=(e*this.width+t)*this.itemSize+a;this.data[n]=i,this.version++}traverseCircle(t,e,a,i){let n,s;const r=0|t,o=0|e,c=a*a,h=Math.ceil(a);for(s=-h;s<=h;s++){const t=s*s;for(n=-h;n<=h;n++)n*n+t<=c&&i(r+n,o+s,this)}}resize(t,e,a=!0){const i=this.width,n=this.height;if(i===t&&n===e)return;const s=this.itemSize,r=t*e*s,c=this.data,h=new(function(t){if(t instanceof Int8Array)return Int8Array;if(t instanceof Int16Array)return Int16Array;if(t instanceof Int32Array)return Int32Array;if(t instanceof Uint8Array)return Uint8Array;if(t instanceof Uint8ClampedArray)return Uint8ClampedArray;if(t instanceof Uint16Array)return Uint16Array;if(t instanceof Uint32Array)return Uint32Array;if(t instanceof Float16Array)return Float16Array;if(t instanceof Float32Array)return Float32Array;if(t instanceof Float64Array)return Float64Array;if(Array.isArray(t))return Array;throw new TypeError("Unsupported array type")}(c))(r);if(a)if(t===i)h.set(c.subarray(0,Math.min(c.length,r)));else{const a=o(e,n),r=o(t,i);for(let e=0;e<a;e++)for(let a=0;a<r;a++){const n=(e*t+a)*s,r=(e*i+a)*s;for(let t=0;t<s;t++)h[n+t]=c[r+t]}}this.width=t,this.height=e,this.data=h,this.version++}computeByteSize(){let t;const e=this.data;return t=Array.isArray(e)?8*e.length:e.byteLength,t+280}equals(t){return null!=t&&(this===t||this.width===t.width&&this.height===t.height&&this.itemSize===t.itemSize&&ei(this.data,t.data))}hash(){const t=this.itemSize,a=this.width,i=this.height,n=this.data;let s=((65535&a)<<16|65535&i)^t;const r=a*i*t;if(e(n))s^=I(n.buffer,n.byteOffset,n.byteLength);else for(let t=0;t<r;++t)s=(s<<5)-s+ni(n[t]);return s}clone(){let t;return t=Array.isArray(this.data)?this.data.slice():new(0,this.data.constructor)(this.data),new _i(t,this.itemSize,this.width,this.height)}toJSON(){const t=this.data,a=$a.encode(e(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t.buffer);return{height:this.height,width:this.width,itemSize:this.itemSize,type:ti(this.data),data:a}}fromJSON({height:t,width:e,itemSize:a,type:i,data:n}){const s=function(t){const e=Za[t];if(void 0===e)throw new Error(`Unsupported data type '${t}'`);return e}(i);if("string"==typeof n){const t=$a.decode(n);this.data=new s(t)}else{if(!Array.isArray(n))throw new Error("Unsupported data format");this.data=new s(n)}this.height=t,this.width=e,this.itemSize=a}static uint8clamped(t,e,a){const i=new Uint8ClampedArray(e*a*t);return new _i(i,t,e,a)}static uint8(t,e,a){const i=new Uint8Array(e*a*t);return new _i(i,t,e,a)}static uint16(t,e,a){const i=new Uint16Array(e*a*t);return new _i(i,t,e,a)}static uint32(t,e,a){const i=new Uint32Array(e*a*t);return new _i(i,t,e,a)}static int8(t,e,a){const i=new Int8Array(e*a*t);return new _i(i,t,e,a)}static int16(t,e,a){const i=new Int16Array(e*a*t);return new _i(i,t,e,a)}static int32(t,e,a){const i=new Int32Array(e*a*t);return new _i(i,t,e,a)}static float16(t,e,a){const i=new Float16Array(e*a*t);return new _i(i,t,e,a)}static float32(t,e,a){const i=new Float32Array(e*a*t);return new _i(i,t,e,a)}static float64(t,e,a){const i=new Float64Array(e*a*t);return new _i(i,t,e,a)}}function li(t,e,a,i){const n=a[i],s=a[i+1],r=a[i+2];t[e]+=n,t[e+1]+=s,t[e+2]+=r}function fi(t,e,a,i,n,s){const r=3*a,o=3*i,c=3*n,h=s[o],d=s[o+1],_=s[o+2],l=s[c]-h,f=s[c+1]-d,u=s[c+2]-_,b=s[r]-h,g=s[r+1]-d,m=s[r+2]-_;t[e]=f*m-u*g,t[e+1]=u*b-l*m,t[e+2]=l*g-f*b}function ui(t,e,a){return t*t+e*e+a*a}function bi(t,e,a,i){const n=a[i],s=a[i+1],r=a[i+2],o=ui(n,s,r),c=0!==o?1/Math.sqrt(o):1;t[e]=n*c,t[e+1]=s*c,t[e+2]=r*c}_i.prototype.isSampler2D=!0,_i.typeName="Sampler2D";const gi=new Float64Array(3);function mi(t,e,a){const i=a.length;for(let n=0;n<i;n+=3){const i=a[n],s=a[n+1],r=a[n+2];fi(gi,0,i,s,r,t),li(e,3*i,gi,0),li(e,3*s,gi,0),li(e,3*r,gi,0)}!function(t,e=0,a=t.length-e){const i=e+a;for(let a=e;a<i;a+=3)bi(t,a,t,a)}(e)}const yi={build:function(t,e,a,i,n,s){const r=a.x*s,o=a.y*s,c=r-1,h=o-1;let d=0,_=0;const l=r*o,f=new Float32Array(3*l),u=new Float32Array(3*l),b=new Float32Array(2*l);let g,m;const y=a.y/n.y/h,p=a.x/n.x/c,w=e.y/n.y,v=e.x/n.x,A=n.x*i.x,x=n.y*i.y;let k,z,j;for(g=0;g<o;g++){const e=g*y+w;for(j=e*x,m=0;m<r;m++){const a=m*p+v;k=a*A,z=t.sampleChannelBicubicUV(a,e,0),f[d]=k,f[d+1]=z,f[d+2]=j,b[_]=a,b[_+1]=e,d+=3,_+=2}}d=0;const U=new(O(f.length/3))(c*h*6);for(g=0;g<h;g++)for(m=0;m<c;m++){const t=m+r*g,e=m+r*(g+1),a=m+1+r*(g+1),i=m+1+r*g;U[d]=t,U[d+1]=e,U[d+2]=i,U[d+3]=e,U[d+4]=a,U[d+5]=i,d+=6}return mi(f,u,U),{indices:U,vertices:f,normals:u,uvs:b}}};class pi{name="";type=E.Float32;itemSize=1;normalized=!1;static from(t,e,a=!1,i=""){const n=new pi;return n.fromJSON({name:i,type:t,itemSize:e,normalized:a}),n}static fromJSON(t){const e=new pi;return e.fromJSON(t),e}fromJSON({name:t="",type:e,itemSize:a,normalized:i=!1}){this.name=t,this.type=e,this.itemSize=a,this.normalized=i}toJSON(){return{name:this.name,type:this.type,itemSize:this.itemSize,normalized:this.normalized}}toString(){let t="";return""!==this.name&&(t+=`${this.name}:`),t+=`${this.itemSize}x${nt(E,this.type)??this.type}`,this.normalized&&(t+="-norm"),t}hash(){return tt(this.name)}equals(t){return this.type===t.type&&this.itemSize===t.itemSize&&this.normalized===t.normalized&&this.name===t.name}copy(t){this.type=t.type,this.name=t.name,this.itemSize=t.itemSize,this.normalized=t.normalized}clone(){const t=new pi;return t.copy(this),t}getByteSize(){return this.itemSize*D[this.type]}static byName(t,e){return t.name.localeCompare(e.name)}}pi.prototype.isAttributeSpec=!0;class wi{spec=new pi;data;count=0;#J=0;get version(){return this.#J}set needsUpdate(t){t&&this.#J++}get name(){return this.spec.name}get itemSize(){return this.spec.itemSize}equals(t){return this.spec.equals(t.spec)&&this.count===t.count&&ei(this.data,t.data)}hash(){return F(this.spec.hash(),this.count,function(t,e,a,i=31){const n=o(a,1024);return function(t,e,a,i,n){let s=a;for(let e=0;e<a;e+=i)s=(s<<5)-s+n.call(void 0,t[e]);return s>>>0}(t,0,n,Math.max(1,Math.ceil(n/i)),ni)}(this.data,0,this.data.length))}copy(t){this.spec.copy(t.spec),this.count=t.count;const e=t.data.constructor;this.data=new e(t.data)}clone(){const t=new wi;return t.copy(this),t}static from(t,e=1,a=""){const i=ti(t),n=new wi;return n.spec.type=i,n.spec.name=a,n.spec.itemSize=e,n.count=t.length/e,n.data=t,n}get memory_usage_bytes(){let t=0;return void 0!==this.data&&null!==this.data&&(t=this.data.byteLength),t}}function vi(t){return t*t}function Ai(t,e,a){let i=0;for(let n=0;n<a;n++)i+=t[n]*e[n];return i}wi.prototype.isAttribute=!0;class xi{constructor(t,e){const a=Za[e];if(void 0===a)throw new Error(`Unsupported type '${e}'`);this.size=t,this.type=e,this.data=new a(t*t)}get n(){return this.size}get length(){return this.size*this.size}get val(){return this.data}fill(t){this.data.fill(t)}subtract(t){this.subtractMatrices(this,t)}subtractMatrices(t,e){const a=this.size,i=a*a,n=t.data,s=e.data,r=this.data;for(let t=0;t<i;t++)r[t]=n[t]-s[t]}negate(){const t=this.data,e=t.length;for(let a=0;a<e;a++)t[a]=-t[a]}clear(){this.data.fill(0)}eye(){const t=this.size;for(let e=0;e<t;e++)this.data[e*(t+1)]=1}copy(t){this.data.set(t.data)}clone(){const t=new xi(this.size,this.type);return t.copy(this),t}transpose(){const t=this.size;for(let e=0;e<t;e++)for(let a=e+1;a<t;a++){const t=this.getCellValue(a,e),i=this.getCellValue(e,a);this.setCellValue(a,e,i),this.setCellValue(e,a,t)}}fromArray(t){this.data.set(t)}toArray(t=new Array(this.length),e=0){return i(this.data,0,t,e,this.length),t}setCellValue(t,e,a){this.data[this.size*e+t]=a}getCellValue(t,e){return this.data[this.size*e+t]}readDiagonal(t){const e=this.size,a=this.data;for(let i=0;i<e;i++)t[i]=a[i*(e+1)]}}function ki(t,e,a,i,n){let s=0;for(let r=0;r<n;r++)s+=t[e+r]*a[i+r];return s}function zi(t,e,a,i,n,s){for(let r=0;r<s;++r)t[e+r]+=a*i[n+r]}function ji(t,e,a){if(0===e)a[0]=1,a[1]=0;else if(Math.abs(e)>Math.abs(t)){const i=t/e,n=1/Math.sqrt(1+i*i);a[0]=n*i,a[1]=n}else{const i=e/t,n=1/Math.sqrt(1+i*i);a[0]=n,a[1]=n*i}}function Ui(t,e,a,i,n,s){for(let r=0;r<s;++r){const s=t[e+r],o=t[a+r];t[e+r]=i*s+n*o,t[a+r]=i*o-n*s}}class Ei{constructor(t,e,a){this.S=e,this.membership=he.fixedSize(e.size()),this.dim=t,this.members=new Int32Array(t+1),this.Q=new xi(t,E.Float64),this.Q.eye(),this.R=new xi(t,E.Float64),this.u=new Float64Array(t),this.w=new Float64Array(t),this.r=0,this.cs=new Float64Array(2),this.membership.set(a,!0),this.members[this.r]=a}dimension(){return this.dim}size(){return this.r+1}isMember(t){return this.membership.get(t)}anyMember(){return this.members[this.r]}globalIndex(t){return this.members[t]}ind(t,e){return t*this.dim+e}origin(){return this.members[this.r]}appendColumn(){const t=this.dim,e=this.u,a=this.Q.data,i=this.R.data,n=this.cs,s=this.r*t;for(let n=0;n<t;++n)i[s+n]=ki(a,n*t,e,0,t);for(let e=t-1;e>this.r;--e){ji(i[s+e-1],i[s+e],n);const r=n[0],o=n[1];i[s+e-1]=r*i[s+e-1]+o*i[s+e],Ui(a,(e-1)*t,e*t,r,o,t)}}add(t){let e=this.origin();const a=this.dim,i=this.u,n=this.S;for(let s=0;s<a;++s)i[s]=n.coord(t,s)-n.coord(e,s);this.appendColumn(),this.membership.set(t,!0),this.members[this.r+1]=this.members[this.r],this.members[this.r]=t,++this.r}shortestVectorToSpan(t,e){const a=this.origin(),i=this.dim,n=this.S;for(let s=0;s<i;++s)e[s]=n.coord(a,s)-t[s];const s=this.Q.data,r=this.r;for(let t=0;t<r;++t){const a=t*i;zi(e,0,-ki(e,0,s,a,i),s,a,i)}return ki(e,0,e,0,i)}representationError(){const t=this.size(),e=new Float64Array(t),a=this.dim,i=new Float64Array(a);let n=0;for(let s=0;s<t;++s){for(let t=0;t<a;++t)i[t]=this.S.coord(this.globalIndex(s),t);this.findAffineCoefficients(i,e);let r=Math.abs(e[s]-1);r>n&&(n=r);for(let t=0;t<s;++t)r=Math.abs(e[t]),r>n&&(n=r);for(let a=s+1;a<t;++a)r=Math.abs(e[a]),r>n&&(n=r)}return n}findAffineCoefficients(t,e){let a=this.origin();const i=this.dim,n=this.u;for(let e=0;e<i;++e)n[e]=t[e]-this.S.coord(a,e);const s=this.w,r=this.Q.data;for(let t=0;t<i;++t)s[t]=ki(r,t*i,n,0,i);let o=1;const c=this.R.data,h=this.r;for(let t=h-1;t>=0;--t){const a=t*i;for(let a=t+1;a<h;++a)s[t]-=e[a]*c[a*i+t];const n=s[t]/c[a+t];e[t]=n,o-=n}e[h]=o}hessenberg_clear(t){let e=t;const a=this.R.data,i=this.Q.data,n=this.dim,s=this.cs,r=this.r;for(;e<r;++e){const t=e*n;ji(a[t+e],a[t+e+1],s);const o=s[0],c=s[1];a[t+e]=o*a[t+e]+c*a[t+e+1];for(let t=e+1;t<r;++t){const i=t*n,s=a[i+e],r=a[i+e+1];a[i+e]=o*s+c*r,a[i+e+1]=o*r-c*s}Ui(i,t,t+n,o,c,n)}}special_rank_1_update(){const t=this.dim,e=this.w,a=this.u,i=this.Q.data,n=this.R.data,s=this.cs,r=this.r;for(let n=0;n<t;++n)e[n]=ki(i,n*t,a,0,t);for(let a=t-1;a>0;--a){ji(e[a-1],e[a],s);const o=s[0],c=s[1];e[a-1]=o*e[a-1]+c*e[a];const h=(a-1)*t;n[h+a]=-c*n[h+a-1],n[h+a-1]*=o;for(let e=a;e<r;++e){const i=e*t,s=n[i+a-1],r=n[i+a];n[i+a-1]=o*s+c*r,n[i+a]=o*r-c*s}Ui(i,h,h+t,o,c,t)}const o=e[0];for(let e=0;e<r;++e)n[e*t]+=o;this.hessenberg_clear(0)}remove(t){if(this.membership.clear(this.globalIndex(t)),t===this.r){let t=this.origin(),e=this.globalIndex(this.r-1);const a=this.dim,i=this.S,n=this.u;for(let s=0;s<a;++s)n[s]=i.coord(t,s)-i.coord(e,s);--this.r,this.special_rank_1_update()}else{const e=this.R.data,a=this.dim,i=this.members,n=t*a,s=(t+1)*a,r=this.r*a;e.copyWithin(n,s,r);for(let e=t+1;e<this.r;++e)i[e-1]=i[e];i[this.r-1]=i[this.r],--this.r,this.hessenberg_clear(t)}}}class Fi{iteration=0;distToAff=0;distToAffSquare=0;__squaredRadius=0;__radius=0;stopper=0;constructor(t){this.S=t,this.__size=this.S.size();const e=this.S.dimension();this.dim=e;const a=new ArrayBuffer(8*(4*e+1));this.__center=new Float64Array(a,0,e),this.centerToAff=new Float64Array(a,8*e,e),this.centerToPoint=new Float64Array(a,16*e,e),this.lambdas=new Float64Array(a,24*e,e+1),this.__support=this.initBall(),this.compute()}isEmpty(){return 0===this.__size}radius(){return this.__radius}center(){return this.__center}get support(){return this.__support}size(){return this.__size}initBall(){let t,e;const a=this.dim,i=this.__center,n=this.S;for(t=0;t<a;++t)i[t]=n.coord(0,t);this.__squaredRadius=0;let s=0;const r=n.size();for(e=1;e<r;++e){let r=0;for(t=0;t<a;++t)r+=vi(n.coord(e,t)-i[t]);r>=this.__squaredRadius&&(this.__squaredRadius=r,s=e)}return this.__radius=Math.sqrt(this.__squaredRadius),new Ei(this.dim,n,s)}computeDistToAff(){this.distToAffSquare=this.__support.shortestVectorToSpan(this.__center,this.centerToAff),this.distToAff=Math.sqrt(this.distToAffSquare)}updateRadius(){const t=this.__support.anyMember();this.__squaredRadius=0;const e=this.dim,a=this.__center,i=this.S;for(let n=0;n<e;++n)this.__squaredRadius+=vi(i.coord(t,n)-a[n]);this.__radius=Math.sqrt(this.__squaredRadius)}compute(){const t=this.__center,e=this.__support,a=this.dim,i=this.centerToAff;for(this.iteration=0;this.iteration<1e4;this.iteration++){for(this.computeDistToAff();this.distToAff<=1e-14*this.__radius||e.size()===a+1;){if(!this.successfulDrop())return;this.computeDistToAff()}const n=this.findStopFraction();if(this.stopper>=0){for(let e=0;e<a;++e)t[e]+=n*i[e];this.updateRadius(),e.add(this.stopper)}else{for(let e=0;e<a;++e)t[e]+=i[e];if(this.updateRadius(),!this.successfulDrop())return}}}successfulDrop(){const t=this.lambdas,e=this.__support;e.findAffineCoefficients(this.__center,t);let a=0,i=1;const n=e.size();for(let e=0;e<n;++e){const n=t[e];n<i&&(i=n,a=e)}return i<=0&&(e.remove(a),!0)}findStopFraction(){let t,e,a=1;this.stopper=-1;const i=this.dim,n=this.__center,s=this.S,r=this.__support,o=this.centerToPoint,c=this.centerToAff,h=this.distToAffSquare,d=this.__squaredRadius,_=this.__size,l=1e-14*this.__radius*this.distToAff;for(e=0;e<_;++e){if(r.isMember(e))continue;for(t=0;t<i;++t)o[t]=s.coord(e,t)-n[t];const _=Ai(c,o,i);if(h-_<l)continue;const f=(d-Ai(o,o,i))/2/(h-_);f>0&&f<a&&(a=f,this.stopper=e)}return a}toString(){let t="Miniball [";if(this.isEmpty())t+="isEmpty=true";else{t+="center=(";for(let e=0;e<this.dim;++e)t+=this.__center[e],e<this.dim-1&&(t+=", ");t+=`), radius=${this.__radius}, squaredRadius=${this.__squaredRadius}`}return t+="]",t}}class Ii{constructor(t,e,a){this.__data=a,this.__size=t,this.__dimensions=e}size(){return this.__size}dimension(){return this.__dimensions}coord(t,e){return this.__data[t*this.__dimensions+e]}}function Ci(t,e,a){return Math.sqrt(t*t+e*e+a*a)}function Bi(t,e,a,i,n,s){const r=3*a,o=3*i,c=3*n;return function(t,e,a,i,n,s,r,o,c,h,d){const _=c-s,l=h-r,f=d-o,u=a-s,b=i-r,g=n-o,m=l*g-f*b,y=f*u-_*g,p=_*b-l*u,w=ui(m,y,p);if(0===w)return t[e]=0,t[e+1]=1,t[e+2]=0,!1;const v=1/Math.sqrt(w),A=m*v,x=y*v,k=p*v;return t[e]=A,t[e+1]=x,t[e+2]=k,!0}(t,e,s[r],s[r+1],s[r+2],s[o],s[o+1],s[o+2],s[c],s[c+1],s[c+2])}const Mi=new Float64Array(3);function Si(t,e,a,i,n,s,r,o,c){return(e*s-a*n)*r+(a*i-t*s)*o+(t*n-e*i)*c<0?-1:1}function Ni(t,e,a,i,n){let s,r,o,c,h,d;if(a<0){const i=1/(1-a),n=t*e*i;s=1-t*t*i,r=-n,o=t,c=n,h=e*e*i-1,d=-e}else{const i=1/(1+a),n=-t*e*i;s=1-t*t*i,r=n,o=-t,c=n,h=1-e*e*i,d=-e}const _=Si(t,e,a,s,r,o,c,h,d),l=4*i;n[l]=s,n[l+1]=r,n[l+2]=o,n[l+3]=_}const Vi=function(t,e,a,i,n){t[e]+=a,t[e+1]+=i,t[e+2]+=n};function Ri(t,e,a,i,n,s){return t*i+e*n+a*s}let Pi=0;class Di{#Q=Pi++;get id(){return this.#Q}name="";attributes=[];index=null;bounding_box=new Float32Array(6);bounding_sphere=new Float32Array(4);flags=1;#J=0;get version(){return this.#J}set needsUpdate(t){t&&this.#J++}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}equals(t){return this===t||this.name===t.name&&((e=this.index)===(a=t.index)||void 0!==e&&void 0!==a&&null!==e&&null!==a&&typeof e==typeof a&&e.equals(a))&&Zt(this.attributes,t.attributes);var e,a}hash(){return F(tt(this.name),null==(t=this.index)?0:t.hash(),Z(this.attributes,q));var t}getAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.spec.name===t)return a}}hasAttribute(t){return void 0!==this.getAttribute(t)}setAttribute(t){this.hasAttribute(t.spec.name)&&this.removeAttribute(t.spec.name),this.addAttribute(t)}addAttribute(t){this.attributes.push(t)}removeAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.spec.name===t)return e.splice(i,1),a}}getVertexCount(){const t=this.attributes;return 0===t.length?0:t[0].count}getIndexCount(){const t=this.index;return null!=t?t.count:this.getVertexCount()}getPrimitiveCount(){return this.getIndexCount()/3}ensureIndex(){null===this.index&&this.buildIndex()}buildIndex(){const t=this.getVertexCount(),e=new Uint32Array(t);for(let a=0;a<t;a++)e[a]=a;this.index=wi.from(e,1,Ae)}ensureBounds(){this.getFlag(1)&&this.computeBoundingShapes()}computeBoundingSphereFromBox(){const t=this.bounding_box,e=t[0],a=t[3],i=t[1],n=t[4],s=t[2],r=t[5];this.bounding_sphere[0]=.5*(e+a),this.bounding_sphere[1]=.5*(i+n),this.bounding_sphere[2]=.5*(s+r),this.bounding_sphere[3]=.5*function(t,e,a,i,n,s){return Ci(i-t,n-e,s-a)}(e,i,s,a,n,r)}computeBoundingSphere(){const t=this.getAttribute(xe),e=new Ii(t.count,3,t.data),a=new Fi(e),i=a.center();this.bounding_sphere[0]=i[0],this.bounding_sphere[1]=i[1],this.bounding_sphere[2]=i[2],this.bounding_sphere[3]=a.radius()}computeBoundingShapes(){this.computeBoundingBox(),this.computeBoundingSphereFromBox(),this.clearFlag(1)}computeBoundingBox(){const t=this.getAttribute(xe);ht(this.bounding_box,t.data,t.count*t.spec.itemSize),this.clearFlag(1)}ensureNormals(){void 0===this.getAttribute(ke)&&this.computeNormals()}computeNormals(){const t=this.getVertexCount(),e=this.getAttribute(xe);let a=this.getAttribute(ke);void 0===a?(a=wi.from(new Float32Array(3*t),3,ke),this.addAttribute(a)):a.data.fill(0,0,3*t);const n=this.index;null===n?function(t,e,a){for(let n=0;n<a;n+=3){const a=n,s=n+1,r=n+2;Bi(Mi,0,a,s,r,t),i(Mi,0,e,3*a,3),i(Mi,0,e,3*s,3),i(Mi,0,e,3*r,3)}}(e.data,a.data,t):mi(e.data,a.data,n.data)}#G(){if(!this.hasAttribute(ze)){const t=this.getVertexCount();this.addAttribute(wi.from(new Float32Array(4*t),4,ze))}return this.getAttribute(ze)}#Y(){const t=this.index,e=this.getAttribute(xe),a=this.getAttribute(ke),i=this.getAttribute(je);if(null===t||void 0===e||void 0===a||void 0===i)throw new Error(" .computeTangents() failed. Missing required attributes (index, position, normal or uv)");const n=e.data,s=i.data,r=a.data,o=this.#G().data,c=e.count;!function(t,e,a,i,n,s,r){const o=new Float32Array(3*a),c=new Float32Array(3*a);for(let a=0;a<t;a+=3){const t=e[a],s=e[a+1],r=e[a+2],h=t<<1,d=i[h],_=i[h+1],l=s<<1,f=r<<1,u=i[l]-d,b=i[l+1]-_,g=i[f]-d,m=i[f+1]-_,y=u*m-g*b;if(0===y)continue;const p=1/y,w=h+t,v=n[w],A=n[w+1],x=n[w+2],k=l+s,z=f+r,j=n[k]-v,U=n[k+1]-A,E=n[k+2]-x,F=n[z]-v,I=n[z+1]-A,C=n[z+2]-x,B=(j*m-F*b)*p,M=(U*m-I*b)*p,S=(E*m-C*b)*p,N=(F*u-j*g)*p,V=(I*u-U*g)*p,R=(C*u-E*g)*p;Vi(o,w,B,M,S),Vi(o,k,B,M,S),Vi(o,z,B,M,S),Vi(c,w,N,V,R),Vi(c,k,N,V,R),Vi(c,z,N,V,R)}for(let t=0;t<a;t++){const e=3*t,a=s[e],i=s[e+1],n=s[e+2],h=o[e],d=o[e+1],_=o[e+2];if(0===h&&0===d&&0===_){Ni(a,i,n,t,r);continue}const l=c[e],f=c[e+1],u=c[e+2],b=Ri(a,i,n,h,d,_);let g=h-a*b,m=d-i*b,y=_-n*b;const p=Ci(g,m,y);if(!(p>1e-6*Ci(h,d,_))){Ni(a,i,n,t,r);continue}const w=1/p;g*=w,m*=w,y*=w;const v=Si(a,i,n,g,m,y,l,f,u),A=t<<2;r[A]=g,r[A+1]=m,r[A+2]=y,r[A+3]=v}}(t.count,t.data,c,s,n,r,o)}#H(){const t=this.getAttribute(ke),e=this.#G().data,a=t.data,i=this.getVertexCount();for(let t=0;t<i;t++){const i=3*t;Ni(a[i],a[i+1],a[i+2],t,e)}}ensureTangents(){void 0===this.getAttribute(ze)&&this.computeTangents()}computeTangents(){this.ensureNormals(),this.hasAttribute(je)&&this.hasAttribute(xe)&&this.hasAttribute(ke)?this.#Y():this.#H()}copy(t){this.name=t.name,this.index=function(t){if(void 0!==t)return null===t?null:"object"!=typeof t?t:t.clone()}(t.index),this.attributes=t.attributes.map(t=>t.clone()),this.flags=t.flags,this.bounding_sphere.set(t.bounding_sphere),this.bounding_box.set(t.bounding_box)}clone(){const t=new Di;return t.copy(this),t}update(){this.ensureBounds()}get memory_usage_bytes(){let t=0;null!==this.index&&(t+=this.index.memory_usage_bytes);for(const e of this.attributes)t+=e.memory_usage_bytes;return t}}Di.prototype.isGeometry=!0,self.Lib={build_bvh(t,e){const a=new m;return function(t,e,a){!function(t,e,a,i,n,s,r){t.setLeafCount(e),t.initialize_structure();for(let i=0;i<e;i++)ka(ja,0,a,0,3,0,r,i),za(t,i,ja,0,1,2);t.build()}(t,a.length/3,e,0,0,0,a)}(a,t,e),a},Sampler2D:_i,BufferedGeometryArraysBuilder:yi,tensionOptimizeUV:function(t,e,a,i=3){const n=new Ra;null==a?function(t,e){const a=e.length/9,i=new Uint32Array(3*a);for(let t=0;t<i.length;t++)i[t]=t;Oa(t,i,e)}(n,t):Oa(n,a,t);const s=t.length/3;for(let a=0;a<i;a++)t:for(let a=0;a<s;a++){const i=n.vertex_read_edge(a);if(i===Na)continue;const s=3*a,r=t[s],o=t[s+1],c=t[s+2];let h=0,d=0,_=0,l=i;do{if(Xa(n,l))continue t;const i=Ka(n,l,a),s=3*i,f=r-t[s],u=o-t[s+1],b=c-t[s+2],g=f*f+u*u+b*b;if(0!==g){const t=1/g,a=2*i;h+=e[a]*t,d+=e[a+1]*t,_+=t}l=n.edge_read_vertex1(l)===a?n.edge_read_v1_disk_next(l):n.edge_read_v2_disk_next(l)}while(l!==i);if(0===_)continue;const f=h/_,u=d/_,b=2*a;e[b]=f,e[b+1]=u}},sampler2d_channel_compute_min:function(t,e=0){const a=t.itemSize,i=t.data,n=i.length;if(0===n)return;let s=i[e],r=e;for(let t=e+a;t<n;t+=a){const e=i[t];s>e&&(s=e,r=t)}const o=t.width,c=r/a|0;return{index:r,value:s,x:c%o,y:c/o|0}},sampler2d_channel_compute_max:function(t,e=0){const a=t.itemSize,i=t.data,n=i.length;if(0===n)return;let s=i[e],r=e;for(let t=e+a;t<n;t+=a){const e=i[t];s<e&&(s=e,r=t)}const o=t.width,c=r/a|0;return{index:r,value:s,x:c%o,y:c/o|0}},tile_geometry_to_meshlets:function(t,e=""){const a=new Di;return a.name=e,a.addAttribute(wi.from(t.vertices,3,xe)),a.addAttribute(wi.from(t.normals,3,ke)),a.addAttribute(wi.from(t.uvs,2,je)),a.index=wi.from(t.indices,1,Ae),function(t,e=new ia){return t.ensureBounds(),t.computeBoundingSphereFromBox(),e.name=t.name,e.primitive_count=t.getPrimitiveCount(),e.bounding_box.set(t.bounding_box),e.bounding_sphere.set(t.bounding_sphere),e.meshlets.build(t),e.meshlets.compress(),e.bvh=Aa(e.meshlets,e.primitive_count,t.bounding_box),e}(a)},meshlet_geometry_to_bytes:function(t){const e=new k;return xa.serialize(e,t),e.trim(),e.data}};
|