@carbonenginejs/runtime-trinity 0.6.0 → 0.8.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/README.md +35 -243
- package/dist/controllers/CjsControllerExpressionProgram.js +157 -0
- package/dist/controllers/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/controllers/ITr2ControllerAction.js +57 -0
- package/dist/controllers/ITr2ControllerAction.js.map +1 -1
- package/dist/controllers/Tr2ActionAnimateCurveSet.js +10 -0
- package/dist/controllers/Tr2ActionAnimateCurveSet.js.map +1 -1
- package/dist/controllers/Tr2ActionAnimateValue.js +26 -0
- package/dist/controllers/Tr2ActionAnimateValue.js.map +1 -1
- package/dist/controllers/Tr2ActionBindRTPC.js +11 -0
- package/dist/controllers/Tr2ActionBindRTPC.js.map +1 -1
- package/dist/controllers/Tr2ActionCallback.js +5 -0
- package/dist/controllers/Tr2ActionCallback.js.map +1 -1
- package/dist/controllers/Tr2ActionChildEffect.js +63 -0
- package/dist/controllers/Tr2ActionChildEffect.js.map +1 -1
- package/dist/controllers/Tr2ActionOverlay.js +68 -0
- package/dist/controllers/Tr2ActionOverlay.js.map +1 -1
- package/dist/controllers/Tr2ActionPlayCurveSet.js +16 -0
- package/dist/controllers/Tr2ActionPlayCurveSet.js.map +1 -1
- package/dist/controllers/Tr2ActionPlayMeshAnimation.js +29 -0
- package/dist/controllers/Tr2ActionPlayMeshAnimation.js.map +1 -1
- package/dist/controllers/Tr2ActionPlaySound.js +11 -0
- package/dist/controllers/Tr2ActionPlaySound.js.map +1 -1
- package/dist/controllers/Tr2ActionPython.js +11 -0
- package/dist/controllers/Tr2ActionPython.js.map +1 -1
- package/dist/controllers/Tr2ActionResetClipSphereCenter.js +17 -0
- package/dist/controllers/Tr2ActionResetClipSphereCenter.js.map +1 -1
- package/dist/controllers/Tr2ActionSetAttenuationScaling.js +5 -0
- package/dist/controllers/Tr2ActionSetAttenuationScaling.js.map +1 -1
- package/dist/controllers/Tr2ActionSetAudioEmitterPrefix.js +5 -0
- package/dist/controllers/Tr2ActionSetAudioEmitterPrefix.js.map +1 -1
- package/dist/controllers/Tr2ActionSetAudioSwitch.js +5 -0
- package/dist/controllers/Tr2ActionSetAudioSwitch.js.map +1 -1
- package/dist/controllers/Tr2ActionSetExternalControllerVariable.js +23 -0
- package/dist/controllers/Tr2ActionSetExternalControllerVariable.js.map +1 -1
- package/dist/controllers/Tr2ActionSetShaderOption.js +5 -0
- package/dist/controllers/Tr2ActionSetShaderOption.js.map +1 -1
- package/dist/controllers/Tr2ActionSetValue.js +35 -0
- package/dist/controllers/Tr2ActionSetValue.js.map +1 -1
- package/dist/controllers/Tr2ActionSpawnParticles.js +10 -0
- package/dist/controllers/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/controllers/Tr2BindingPoint.js +67 -0
- package/dist/controllers/Tr2BindingPoint.js.map +1 -1
- package/dist/controllers/Tr2Controller.js +37 -0
- package/dist/controllers/Tr2Controller.js.map +1 -1
- package/dist/controllers/Tr2ControllerEventHandler.js +10 -0
- package/dist/controllers/Tr2ControllerEventHandler.js.map +1 -1
- package/dist/controllers/Tr2ControllerExpression.js +17 -0
- package/dist/controllers/Tr2ControllerExpression.js.map +1 -1
- package/dist/controllers/Tr2ControllerFloatVariable.js +6 -0
- package/dist/controllers/Tr2ControllerFloatVariable.js.map +1 -1
- package/dist/controllers/Tr2ControllerReference.js +11 -0
- package/dist/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/controllers/Tr2StateMachine.js +17 -0
- package/dist/controllers/Tr2StateMachine.js.map +1 -1
- package/dist/controllers/Tr2StateMachineState.js +47 -0
- package/dist/controllers/Tr2StateMachineState.js.map +1 -1
- package/dist/controllers/Tr2StateMachineTransition.js +29 -0
- package/dist/controllers/Tr2StateMachineTransition.js.map +1 -1
- package/dist/controllers/Tr2SyncToAnimation.js +5 -0
- package/dist/controllers/Tr2SyncToAnimation.js.map +1 -1
- package/dist/controllers/Tr2TimelineController.js +61 -0
- package/dist/controllers/Tr2TimelineController.js.map +1 -1
- package/dist/controllers/contracts.js +24 -1
- package/dist/controllers/contracts.js.map +1 -1
- package/dist/controllers/index.js +1 -1
- package/dist/curves/CjsGrannyCurves.js +150 -0
- package/dist/curves/CjsGrannyCurves.js.map +1 -1
- package/dist/curves/Tr2BoneMatrixCurve.js +23 -0
- package/dist/curves/Tr2BoneMatrixCurve.js.map +1 -1
- package/dist/curves/Tr2CameraFollowCurveKey.js +6 -0
- package/dist/curves/Tr2CameraFollowCurveKey.js.map +1 -1
- package/dist/curves/Tr2CurveColor.js +6 -0
- package/dist/curves/Tr2CurveColor.js.map +1 -1
- package/dist/curves/Tr2CurveColorMixer.js +6 -0
- package/dist/curves/Tr2CurveColorMixer.js.map +1 -1
- package/dist/curves/Tr2CurveCombiner.js +5 -0
- package/dist/curves/Tr2CurveCombiner.js.map +1 -1
- package/dist/curves/Tr2CurveConstant.js +16 -0
- package/dist/curves/Tr2CurveConstant.js.map +1 -1
- package/dist/curves/Tr2CurveEulerRotation.js +5 -0
- package/dist/curves/Tr2CurveEulerRotation.js.map +1 -1
- package/dist/curves/Tr2CurveEulerRotationExpression.js +66 -0
- package/dist/curves/Tr2CurveEulerRotationExpression.js.map +1 -1
- package/dist/curves/Tr2CurveQuaternion.js +5 -0
- package/dist/curves/Tr2CurveQuaternion.js.map +1 -1
- package/dist/curves/Tr2CurveQuaternionKey.js +5 -0
- package/dist/curves/Tr2CurveQuaternionKey.js.map +1 -1
- package/dist/curves/Tr2CurveRandomAxisRotation.js +28 -0
- package/dist/curves/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/curves/Tr2CurveScalar.js +35 -0
- package/dist/curves/Tr2CurveScalar.js.map +1 -1
- package/dist/curves/Tr2CurveScalarExpression.js +11 -0
- package/dist/curves/Tr2CurveScalarExpression.js.map +1 -1
- package/dist/curves/Tr2CurveScalarKey.js +6 -0
- package/dist/curves/Tr2CurveScalarKey.js.map +1 -1
- package/dist/curves/Tr2CurveSetRange.js +5 -0
- package/dist/curves/Tr2CurveSetRange.js.map +1 -1
- package/dist/curves/Tr2CurveVector2.js +5 -0
- package/dist/curves/Tr2CurveVector2.js.map +1 -1
- package/dist/curves/Tr2CurveVector3.js +5 -0
- package/dist/curves/Tr2CurveVector3.js.map +1 -1
- package/dist/curves/Tr2CurveVector3Expression.js +71 -0
- package/dist/curves/Tr2CurveVector3Expression.js.map +1 -1
- package/dist/curves/Tr2CurveVector3Lerp.js +6 -0
- package/dist/curves/Tr2CurveVector3Lerp.js.map +1 -1
- package/dist/curves/Tr2DistanceTracker.js +6 -0
- package/dist/curves/Tr2DistanceTracker.js.map +1 -1
- package/dist/curves/Tr2FollowCurve.js +6 -0
- package/dist/curves/Tr2FollowCurve.js.map +1 -1
- package/dist/curves/Tr2GrannyEventTrack.js +5 -0
- package/dist/curves/Tr2GrannyEventTrack.js.map +1 -1
- package/dist/curves/Tr2GrannyTrack.js +6 -0
- package/dist/curves/Tr2GrannyTrack.js.map +1 -1
- package/dist/curves/Tr2GrannyTransformTrack.js +6 -0
- package/dist/curves/Tr2GrannyTransformTrack.js.map +1 -1
- package/dist/curves/Tr2GrannyVectorTrack.js +5 -0
- package/dist/curves/Tr2GrannyVectorTrack.js.map +1 -1
- package/dist/curves/Tr2MatrixKey.js +5 -0
- package/dist/curves/Tr2MatrixKey.js.map +1 -1
- package/dist/curves/Tr2ObjectFollowCurveKey.js +6 -0
- package/dist/curves/Tr2ObjectFollowCurveKey.js.map +1 -1
- package/dist/curves/Tr2QuaternionLerpCurve.js +6 -0
- package/dist/curves/Tr2QuaternionLerpCurve.js.map +1 -1
- package/dist/curves/Tr2RotationAdapter.js +6 -0
- package/dist/curves/Tr2RotationAdapter.js.map +1 -1
- package/dist/curves/Tr2ScalarExprKey.js +18 -0
- package/dist/curves/Tr2ScalarExprKey.js.map +1 -1
- package/dist/curves/Tr2ScalarExprKeyCurve.js +23 -0
- package/dist/curves/Tr2ScalarExprKeyCurve.js.map +1 -1
- package/dist/curves/Tr2ScalarFader.js +11 -0
- package/dist/curves/Tr2ScalarFader.js.map +1 -1
- package/dist/curves/Tr2TranslationAdapter.js +6 -0
- package/dist/curves/Tr2TranslationAdapter.js.map +1 -1
- package/dist/curves/TriColorSequencer.js +6 -0
- package/dist/curves/TriColorSequencer.js.map +1 -1
- package/dist/curves/TriCurveSet.js +23 -0
- package/dist/curves/TriCurveSet.js.map +1 -1
- package/dist/curves/TriEventCurve.js +23 -0
- package/dist/curves/TriEventCurve.js.map +1 -1
- package/dist/curves/TriEventKey.js +5 -0
- package/dist/curves/TriEventKey.js.map +1 -1
- package/dist/curves/TriPerlinCurve.js +30 -0
- package/dist/curves/TriPerlinCurve.js.map +1 -1
- package/dist/curves/TriVectorSequencer.js +6 -0
- package/dist/curves/TriVectorSequencer.js.map +1 -1
- package/dist/eve/AudioGameObject.js +89 -1
- package/dist/eve/AudioGameObject.js.map +1 -1
- package/dist/eve/BackAndForthData.js +7 -0
- package/dist/eve/BackAndForthData.js.map +1 -1
- package/dist/eve/CjsDistributionRandom.js +6 -0
- package/dist/eve/CjsDistributionRandom.js.map +1 -1
- package/dist/eve/CjsEveThrottleableState.js +11 -0
- package/dist/eve/CjsEveThrottleableState.js.map +1 -1
- package/dist/eve/EveChildUpdateParams.js +7 -0
- package/dist/eve/EveChildUpdateParams.js.map +1 -1
- package/dist/eve/EveComponentTypes.js.map +1 -1
- package/dist/eve/EveCustomMask.js +58 -27
- package/dist/eve/EveCustomMask.js.map +1 -1
- package/dist/eve/EveDistanceField.js +84 -0
- package/dist/eve/EveDistanceField.js.map +1 -1
- package/dist/eve/EveEntity.js +138 -0
- package/dist/eve/EveEntity.js.map +1 -0
- package/dist/eve/EveImpactOverlay.js +61 -0
- package/dist/eve/EveImpactOverlay.js.map +1 -1
- package/dist/eve/EveLODHelper.js +17 -13
- package/dist/eve/EveLODHelper.js.map +1 -1
- package/dist/eve/EveLineData.js +2 -0
- package/dist/eve/EveLineData.js.map +1 -1
- package/dist/eve/EveThrottleable.js +11 -0
- package/dist/eve/EveThrottleable.js.map +1 -1
- package/dist/eve/FollowASplineData.js +7 -0
- package/dist/eve/FollowASplineData.js.map +1 -1
- package/dist/eve/FormationData.js +6 -0
- package/dist/eve/FormationData.js.map +1 -1
- package/dist/eve/InertiaData.js +7 -0
- package/dist/eve/InertiaData.js.map +1 -1
- package/dist/eve/PlacementDataWithIdentifier.js +7 -0
- package/dist/eve/PlacementDataWithIdentifier.js.map +1 -1
- package/dist/eve/PlayFXData.js +7 -0
- package/dist/eve/PlayFXData.js.map +1 -1
- package/dist/eve/SeekTargetData.js +7 -0
- package/dist/eve/SeekTargetData.js.map +1 -1
- package/dist/eve/{EveSpaceObjectAttachmentUtils.js → attachment/EveSpaceObjectAttachmentUtils.js} +11 -11
- package/dist/eve/attachment/EveSpaceObjectAttachmentUtils.js.map +1 -0
- package/dist/eve/attachment/banner/EveBannerItem.js +70 -0
- package/dist/eve/attachment/banner/EveBannerItem.js.map +1 -0
- package/dist/eve/{EveBannerLight.js → attachment/banner/EveBannerLight.js} +13 -2
- package/dist/eve/attachment/banner/EveBannerLight.js.map +1 -0
- package/dist/eve/attachment/banner/EveBannerSet.js +537 -0
- package/dist/eve/attachment/banner/EveBannerSet.js.map +1 -0
- package/dist/eve/{EveBoosterSet2.js → attachment/booster/EveBoosterSet2.js} +204 -35
- package/dist/eve/attachment/booster/EveBoosterSet2.js.map +1 -0
- package/dist/eve/{EveBoosterSet2Renderable.js → attachment/booster/EveBoosterSet2Renderable.js} +205 -12
- package/dist/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -0
- package/dist/eve/{EveTrailsSet.js → attachment/booster/EveTrailsSet.js} +49 -1
- package/dist/eve/attachment/booster/EveTrailsSet.js.map +1 -0
- package/dist/eve/attachment/decal/EveSpaceObjectDecal.js +512 -0
- package/dist/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -0
- package/dist/eve/{EveHazeSet.js → attachment/haze/EveHazeSet.js} +65 -6
- package/dist/eve/attachment/haze/EveHazeSet.js.map +1 -0
- package/dist/eve/attachment/haze/EveHazeSetItem.js +64 -0
- package/dist/eve/attachment/haze/EveHazeSetItem.js.map +1 -0
- package/dist/eve/{EveHazeSetLight.js → attachment/haze/EveHazeSetLight.js} +13 -2
- package/dist/eve/attachment/haze/EveHazeSetLight.js.map +1 -0
- package/dist/eve/attachment/itemSetBounds.js +131 -0
- package/dist/eve/attachment/itemSetBounds.js.map +1 -0
- package/dist/eve/{EvePlaneLight.js → attachment/plane/EvePlaneLight.js} +14 -2
- package/dist/eve/attachment/plane/EvePlaneLight.js.map +1 -0
- package/dist/eve/{EvePlaneSet.js → attachment/plane/EvePlaneSet.js} +119 -7
- package/dist/eve/attachment/plane/EvePlaneSet.js.map +1 -0
- package/dist/eve/attachment/plane/EvePlaneSetItem.js +72 -0
- package/dist/eve/attachment/plane/EvePlaneSetItem.js.map +1 -0
- package/dist/eve/{EveSpotlightLight.js → attachment/spotlight/EveSpotlightLight.js} +13 -2
- package/dist/eve/attachment/spotlight/EveSpotlightLight.js.map +1 -0
- package/dist/eve/{EveSpotlightSet.js → attachment/spotlight/EveSpotlightSet.js} +86 -6
- package/dist/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -0
- package/dist/eve/attachment/spotlight/EveSpotlightSetItem.js +61 -0
- package/dist/eve/attachment/spotlight/EveSpotlightSetItem.js.map +1 -0
- package/dist/eve/{EveSpriteLight.js → attachment/sprite/EveSpriteLight.js} +14 -2
- package/dist/eve/attachment/sprite/EveSpriteLight.js.map +1 -0
- package/dist/eve/{EveSpriteLineSet.js → attachment/sprite/EveSpriteLineSet.js} +69 -7
- package/dist/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -0
- package/dist/eve/{EveSpriteLineSetItem.js → attachment/sprite/EveSpriteLineSetItem.js} +29 -4
- package/dist/eve/attachment/sprite/EveSpriteLineSetItem.js.map +1 -0
- package/dist/eve/{EveSpriteSet.js → attachment/sprite/EveSpriteSet.js} +87 -8
- package/dist/eve/attachment/sprite/EveSpriteSet.js.map +1 -0
- package/dist/{generated/eve/attachment/sprites → eve/attachment/sprite}/EveSpriteSetItem.js +23 -26
- package/dist/eve/attachment/sprite/EveSpriteSetItem.js.map +1 -0
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js +184 -2
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretSet.js +236 -7
- package/dist/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretTarget.js +112 -0
- package/dist/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/eve/camera/EveCamera.js +644 -0
- package/dist/eve/camera/EveCamera.js.map +1 -0
- package/dist/eve/child/EveChildAudio.js +63 -0
- package/dist/eve/child/EveChildAudio.js.map +1 -1
- package/dist/eve/child/EveChildBehaviorSystem.js +412 -0
- package/dist/eve/child/EveChildBehaviorSystem.js.map +1 -0
- package/dist/{generated/eve → eve}/child/EveChildBulletStorm.js +41 -3
- package/dist/eve/child/EveChildBulletStorm.js.map +1 -0
- package/dist/eve/child/EveChildContainer.js +175 -16
- package/dist/eve/child/EveChildContainer.js.map +1 -1
- package/dist/eve/child/EveChildEffectPropagator.js +1 -1
- package/dist/eve/child/EveChildEffectPropagator.js.map +1 -1
- package/dist/eve/child/EveChildFogVolume.js +72 -0
- package/dist/eve/child/EveChildFogVolume.js.map +1 -1
- package/dist/eve/child/EveChildInheritProperties.js +17 -0
- package/dist/eve/child/EveChildInheritProperties.js.map +1 -1
- package/dist/eve/child/EveChildInstancedMeshes.js +211 -1
- package/dist/eve/child/EveChildInstancedMeshes.js.map +1 -1
- package/dist/eve/child/EveChildLightingOverride.js +74 -0
- package/dist/eve/child/EveChildLightingOverride.js.map +1 -1
- package/dist/{generated/eve → eve}/child/EveChildLink.js +17 -16
- package/dist/eve/child/EveChildLink.js.map +1 -0
- package/dist/eve/child/EveChildMesh.js +351 -105
- package/dist/eve/child/EveChildMesh.js.map +1 -1
- package/dist/eve/child/EveChildSpherePin.js +108 -0
- package/dist/eve/child/EveChildSpherePin.js.map +1 -0
- package/dist/eve/child/EveChildTransform.js +44 -1
- package/dist/eve/child/EveChildTransform.js.map +1 -1
- package/dist/eve/child/IEveSpaceObjectChild.js +5 -0
- package/dist/eve/child/IEveSpaceObjectChild.js.map +1 -1
- package/dist/eve/child/behaviors/CollisionAvoidance.js +112 -0
- package/dist/eve/child/behaviors/CollisionAvoidance.js.map +1 -0
- package/dist/eve/child/behaviors/InclusionVolume.js +131 -0
- package/dist/eve/child/behaviors/InclusionVolume.js.map +1 -0
- package/dist/eve/child/behaviors/Wander.js +99 -0
- package/dist/eve/child/behaviors/Wander.js.map +1 -0
- package/dist/{generated/eve → eve}/child/behaviors/enums.js +1 -1
- package/dist/eve/child/behaviors/enums.js.map +1 -0
- package/dist/eve/child/behaviors/lifecycle/ProcessLifetime.js +540 -0
- package/dist/eve/child/behaviors/lifecycle/ProcessLifetime.js.map +1 -0
- package/dist/eve/{ProcessLifetimeData.js → child/behaviors/lifecycle/ProcessLifetimeData.js} +8 -2
- package/dist/eve/child/behaviors/lifecycle/ProcessLifetimeData.js.map +1 -0
- package/dist/eve/child/behaviors/{SplineTunnel.js → tunnels/SplineTunnel.js} +9 -7
- package/dist/eve/child/behaviors/tunnels/SplineTunnel.js.map +1 -0
- package/dist/eve/child/behaviors/tunnels/SplineTunnelGroup.js +211 -0
- package/dist/eve/child/behaviors/tunnels/SplineTunnelGroup.js.map +1 -0
- package/dist/eve/child/behaviors/{SplineTunnelPoint.js → tunnels/SplineTunnelPoint.js} +3 -3
- package/dist/eve/child/behaviors/tunnels/SplineTunnelPoint.js.map +1 -0
- package/dist/eve/child/lineSetPaths/EveBezierCurve.js +65 -0
- package/dist/eve/child/lineSetPaths/EveBezierCurve.js.map +1 -1
- package/dist/eve/child/lineSetPaths/EveCircle.js +63 -0
- package/dist/eve/child/lineSetPaths/EveCircle.js.map +1 -1
- package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierAttachToBone.js +24 -16
- package/dist/eve/child/modifiers/EveChildModifierAttachToBone.js.map +1 -0
- package/dist/eve/child/modifiers/EveChildModifierBillboard2D.js +5 -0
- package/dist/eve/child/modifiers/EveChildModifierBillboard2D.js.map +1 -1
- package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierBillboard3D.js +22 -19
- package/dist/eve/child/modifiers/EveChildModifierBillboard3D.js.map +1 -0
- package/dist/eve/child/modifiers/EveChildModifierBooster.js +6 -0
- package/dist/eve/child/modifiers/EveChildModifierBooster.js.map +1 -1
- package/dist/eve/child/modifiers/EveChildModifierCameraOrientedRotationConstrained.js +5 -0
- package/dist/eve/child/modifiers/EveChildModifierCameraOrientedRotationConstrained.js.map +1 -1
- package/dist/eve/child/modifiers/EveChildModifierHalo.js +5 -0
- package/dist/eve/child/modifiers/EveChildModifierHalo.js.map +1 -1
- package/dist/eve/child/modifiers/EveChildModifierHaloInverted.js +6 -0
- package/dist/eve/child/modifiers/EveChildModifierHaloInverted.js.map +1 -1
- package/dist/eve/child/modifiers/EveChildModifierSRT.js +5 -0
- package/dist/eve/child/modifiers/EveChildModifierSRT.js.map +1 -1
- package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierStretch.js +31 -17
- package/dist/eve/child/modifiers/EveChildModifierStretch.js.map +1 -0
- package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierTranslateWithCamera.js +16 -14
- package/dist/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/EveChildProceduralContainer.js +11 -4
- package/dist/eve/child/procedural/EveChildProceduralContainer.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodAttributeMap.js +12 -12
- package/dist/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js +6 -6
- package/dist/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodCycling.js +12 -12
- package/dist/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodCyclingParameter.js +8 -8
- package/dist/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodRandom.js +17 -17
- package/dist/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodRandomParameter.js +7 -7
- package/dist/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodThresholdParameter.js +7 -7
- package/dist/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodThresholds.js +17 -17
- package/dist/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/EveBaseDistributionMethod.js +132 -3
- package/dist/eve/distribution/EveBaseDistributionMethod.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js +12 -1
- package/dist/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js +9 -1
- package/dist/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js +12 -1
- package/dist/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +1 -0
- package/dist/eve/distribution/attributeModifiers/enums.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorLocators.js +16 -3
- package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js +31 -3
- package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorVolume.js +34 -3
- package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js +14 -2
- package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js +13 -2
- package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js +13 -2
- package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js +13 -2
- package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerBurst.js +19 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerControllerTrigger.js +25 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerInterval.js +17 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerPlane.js +20 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerSnake.js +20 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerSphere.js +20 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +1 -0
- package/dist/{generated/eve/effect → eve/effect/lensflare}/EveLensflare.js +44 -2
- package/dist/eve/effect/lensflare/EveLensflare.js.map +1 -0
- package/dist/eve/effect/multiEffect/EveMultiEffect.js +302 -0
- package/dist/eve/effect/multiEffect/EveMultiEffect.js.map +1 -0
- package/dist/eve/effect/multiEffect/EveMultiEffectParameter.js +92 -0
- package/dist/eve/effect/multiEffect/EveMultiEffectParameter.js.map +1 -0
- package/dist/eve/index.js +117 -47
- package/dist/eve/index.js.map +1 -1
- package/dist/eve/lights/CjsLightData.js +7 -0
- package/dist/eve/lights/CjsLightData.js.map +1 -1
- package/dist/eve/lights/Tr2Light.js +41 -0
- package/dist/eve/lights/Tr2Light.js.map +1 -1
- package/dist/eve/lights/Tr2PointLight.js +5 -0
- package/dist/eve/lights/Tr2PointLight.js.map +1 -1
- package/dist/eve/lights/Tr2SpotLight.js +5 -0
- package/dist/eve/lights/Tr2SpotLight.js.map +1 -1
- package/dist/eve/lights/Tr2TexturedPointLight.js +10 -0
- package/dist/eve/lights/Tr2TexturedPointLight.js.map +1 -1
- package/dist/eve/lights/lightConversion.js +29 -27
- package/dist/eve/lights/lightConversion.js.map +1 -1
- package/dist/eve/{EveLocator2.js → locator/EveLocator2.js} +20 -1
- package/dist/eve/locator/EveLocator2.js.map +1 -0
- package/dist/eve/{EveLocatorSets.js → locator/EveLocatorSets.js} +43 -1
- package/dist/eve/locator/EveLocatorSets.js.map +1 -0
- package/dist/eve/{Locator.js → locator/Locator.js} +6 -1
- package/dist/eve/locator/Locator.js.map +1 -0
- package/dist/eve/{LocatorData.js → locator/LocatorData.js} +3 -1
- package/dist/eve/locator/LocatorData.js.map +1 -0
- package/dist/eve/overlays/EveMeshOverlayEffect.js +208 -0
- package/dist/eve/overlays/EveMeshOverlayEffect.js.map +1 -0
- package/dist/eve/{EveParticleDirectForce.js → particles/force/EveParticleDirectForce.js} +5 -5
- package/dist/eve/particles/force/EveParticleDirectForce.js.map +1 -0
- package/dist/eve/{EveParticleDragForce.js → particles/force/EveParticleDragForce.js} +5 -5
- package/dist/eve/particles/force/EveParticleDragForce.js.map +1 -0
- package/dist/eve/{EveParticleSpring.js → particles/force/EveParticleSpring.js} +6 -6
- package/dist/eve/particles/force/EveParticleSpring.js.map +1 -0
- package/dist/{generated/eve/scene → eve/particles/static}/EveSceneStaticParticles.js +70 -36
- package/dist/eve/particles/static/EveSceneStaticParticles.js.map +1 -0
- package/dist/eve/perObjectData/childPerObjectRecords.js +90 -0
- package/dist/eve/perObjectData/childPerObjectRecords.js.map +1 -0
- package/dist/eve/renderable/stretch/CjsStretchRuntime.js +76 -0
- package/dist/eve/renderable/stretch/CjsStretchRuntime.js.map +1 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js +85 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
- package/dist/eve/renderable/stretch/EveLocalPositionCurve.js +91 -0
- package/dist/eve/renderable/stretch/EveLocalPositionCurve.js.map +1 -1
- package/dist/eve/renderable/stretch/EveRemotePositionCurve.js +36 -0
- package/dist/eve/renderable/stretch/EveRemotePositionCurve.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch.js +158 -9
- package/dist/eve/renderable/stretch/EveStretch.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch2.js +121 -12
- package/dist/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch3.js +261 -8
- package/dist/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/eve/scene/EveSpaceScene.js +342 -6
- package/dist/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/{generated/eve/scene → eve/scene/components}/EveComponentCollection.js +24 -1
- package/dist/eve/scene/components/EveComponentCollection.js.map +1 -0
- package/dist/{generated/eve/scene → eve/scene/components}/EveComponentRegistry.js +74 -2
- package/dist/eve/scene/components/EveComponentRegistry.js.map +1 -0
- package/dist/eve/scene/picking/EvePickingContext.js +61 -0
- package/dist/eve/scene/picking/EvePickingContext.js.map +1 -0
- package/dist/eve/scene/shadows/TriShadowFrustum.js +70 -0
- package/dist/eve/scene/shadows/TriShadowFrustum.js.map +1 -0
- package/dist/eve/scene/shadows/TriShadowOrthoFrustum.js +129 -0
- package/dist/eve/scene/shadows/TriShadowOrthoFrustum.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js +19 -19
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js +19 -19
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js +12 -12
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js +12 -12
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js +30 -30
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js +9 -9
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js +23 -23
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +1 -0
- package/dist/eve/smartLights/attributeModifiers/enums.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterBindingBase.js +26 -1
- package/dist/eve/socket/EveSocketParameterBindingBase.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterBool.js +17 -1
- package/dist/eve/socket/EveSocketParameterBool.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterColor.js +21 -5
- package/dist/eve/socket/EveSocketParameterColor.js.map +1 -0
- package/dist/eve/socket/EveSocketParameterFilePath.js +5 -5
- package/dist/eve/socket/EveSocketParameterFilePath.js.map +1 -1
- package/dist/{generated/eve → eve}/socket/EveSocketParameterFloat.js +17 -1
- package/dist/eve/socket/EveSocketParameterFloat.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterInt.js +17 -1
- package/dist/eve/socket/EveSocketParameterInt.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterString.js +42 -2
- package/dist/eve/socket/EveSocketParameterString.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterVector2.js +17 -1
- package/dist/eve/socket/EveSocketParameterVector2.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterVector3.js +17 -1
- package/dist/eve/socket/EveSocketParameterVector3.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterVector4.js +17 -1
- package/dist/eve/socket/EveSocketParameterVector4.js.map +1 -0
- package/dist/eve/spaceObject/EveEffectRoot2.js +58 -31
- package/dist/eve/spaceObject/EveEffectRoot2.js.map +1 -1
- package/dist/eve/spaceObject/EveMissile.js +49 -1
- package/dist/eve/spaceObject/EveMissile.js.map +1 -1
- package/dist/eve/spaceObject/EveMissileWarhead.js +100 -1
- package/dist/eve/spaceObject/EveMissileWarhead.js.map +1 -1
- package/dist/eve/spaceObject/EveMobile.js +104 -0
- package/dist/eve/spaceObject/EveMobile.js.map +1 -1
- package/dist/eve/spaceObject/EveRootTransform.js +17 -0
- package/dist/eve/spaceObject/EveRootTransform.js.map +1 -1
- package/dist/{generated/eve → eve}/spaceObject/EveShip2.js +32 -12
- package/dist/eve/spaceObject/EveShip2.js.map +1 -0
- package/dist/eve/spaceObject/EveSpaceObject2.js +726 -199
- package/dist/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/eve/spaceObject/EveTransform.js +143 -5
- package/dist/eve/spaceObject/EveTransform.js.map +1 -1
- package/dist/eve/spaceObject/IEveSpaceObject2ParentData.js +70 -0
- package/dist/eve/spaceObject/IEveSpaceObject2ParentData.js.map +1 -0
- package/dist/eve/spaceObject/createEveSpaceObjectMainPerObjectValues.js +19 -16
- package/dist/eve/spaceObject/createEveSpaceObjectMainPerObjectValues.js.map +1 -1
- package/dist/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js +92 -0
- package/dist/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js.map +1 -0
- package/dist/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js +158 -0
- package/dist/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js.map +1 -0
- package/dist/{generated/eve/spaceObject → eve/spaceObject/planet}/EvePlanet.js +2 -2
- package/dist/eve/spaceObject/planet/EvePlanet.js.map +1 -0
- package/dist/{generated/eve → eve}/spaceObject/swarm/EveSwarmRenderable.js +102 -64
- package/dist/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -0
- package/dist/eve/ui/EveEllipseDefinition.js +15 -0
- package/dist/eve/ui/EveEllipseDefinition.js.map +1 -1
- package/dist/eve/ui/EveEllipseSet.js +42 -0
- package/dist/eve/ui/EveEllipseSet.js.map +1 -1
- package/dist/{generated/eve → eve}/ui/EveSpherePin.js +76 -11
- package/dist/eve/ui/EveSpherePin.js.map +1 -0
- package/dist/eve/ui/EveSprite2dBracket.js +5 -0
- package/dist/eve/ui/EveSprite2dBracket.js.map +1 -1
- package/dist/eve/ui/EveUiObject.js +11 -0
- package/dist/eve/ui/EveUiObject.js.map +1 -1
- package/dist/{generated/eve/ui → eve/ui/lines}/EveLineSet.js +67 -6
- package/dist/eve/ui/lines/EveLineSet.js.map +1 -0
- package/dist/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js +78 -0
- package/dist/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js.map +1 -0
- package/dist/{generated/eve/ui → eve/ui/tacticalOverlay}/EveTacticalTrails.js +22 -2
- package/dist/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -0
- package/dist/eve/virtualCamera/EveVirtualCamera.js +152 -0
- package/dist/eve/virtualCamera/EveVirtualCamera.js.map +1 -1
- package/dist/eve/virtualCamera/EveVirtualCameraSystem.js +65 -0
- package/dist/eve/virtualCamera/EveVirtualCameraSystem.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js +17 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js +19 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js +17 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js +29 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js +15 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js +38 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js +17 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js +18 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js +20 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js +20 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveRight.js +11 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveRight.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveUp.js +14 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveUp.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js +16 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js +20 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js +36 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js.map +1 -1
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionBase.js +36 -0
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionBase.js.map +1 -1
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionCut.js +11 -0
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionCut.js.map +1 -1
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js +37 -0
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js.map +1 -1
- package/dist/eve/volume/EveBoxVolume.js +59 -0
- package/dist/eve/volume/EveBoxVolume.js.map +1 -1
- package/dist/eve/volume/EveEllipsoidVolume.js +54 -0
- package/dist/eve/volume/EveEllipsoidVolume.js.map +1 -1
- package/dist/eve/volume/EveSphereVolume.js +34 -0
- package/dist/eve/volume/EveSphereVolume.js.map +1 -1
- package/dist/generated/eve/child/EveChildCloud2.js +138 -138
- package/dist/generated/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/generated/eve/child/EveChildParticleSystem.js +10 -4
- package/dist/generated/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/generated/eve/child/EveChildSocket.js +1 -1
- package/dist/generated/eve/child/EveChildSocket.js.map +1 -1
- package/dist/generated/eve/child/behaviors/BackAndForth.js +14 -17
- package/dist/generated/eve/child/behaviors/BackAndForth.js.map +1 -1
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js +2 -2
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js.map +1 -1
- package/dist/generated/eve/child/behaviors/EveKDdroneManagementTree.js +26 -29
- package/dist/generated/eve/child/behaviors/EveKDdroneManagementTree.js.map +1 -1
- package/dist/generated/eve/child/behaviors/FollowASpline.js +13 -17
- package/dist/generated/eve/child/behaviors/FollowASpline.js.map +1 -1
- package/dist/generated/eve/child/behaviors/PlayFX.js +14 -14
- package/dist/generated/eve/child/behaviors/PlayFX.js.map +1 -1
- package/dist/generated/eve/child/behaviors/SeekTarget.js +1 -1
- package/dist/generated/eve/child/behaviors/SeekTarget.js.map +1 -1
- package/dist/generated/eve/child/behaviors/index.js +0 -6
- package/dist/generated/eve/child/behaviors/index.js.map +1 -1
- package/dist/generated/eve/child/index.js +0 -23
- package/dist/generated/eve/child/index.js.map +1 -1
- package/dist/generated/eve/effect/index.js +0 -3
- package/dist/generated/eve/effect/index.js.map +1 -1
- package/dist/generated/eve/index.js +0 -88
- package/dist/generated/eve/index.js.map +1 -1
- package/dist/generated/eve/scene/index.js +0 -6
- package/dist/generated/eve/scene/index.js.map +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightColorShareGroup.js +20 -20
- package/dist/generated/eve/smartLights/EveSmartLightColorShareGroup.js.map +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
- package/dist/generated/eve/smartLights/index.js +0 -8
- package/dist/generated/eve/smartLights/index.js.map +1 -1
- package/dist/generated/eve/spaceObject/index.js +0 -4
- package/dist/generated/eve/spaceObject/index.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js +11 -11
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/index.js +0 -1
- package/dist/generated/eve/spaceObject/swarm/index.js.map +1 -1
- package/dist/generated/eve/ui/index.js +0 -4
- package/dist/generated/eve/ui/index.js.map +1 -1
- package/dist/generated/index.js +0 -93
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/trinityCore/index.js +0 -5
- package/dist/generated/trinityCore/index.js.map +1 -1
- package/dist/index.js +130 -155
- package/dist/index.js.map +1 -1
- package/dist/particle/Tr2GpuSharedEmitter.js +39 -0
- package/dist/particle/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/particle/Tr2GpuUniqueEmitter.js +5 -0
- package/dist/particle/Tr2GpuUniqueEmitter.js.map +1 -1
- package/dist/particle/Tr2ParticleAttractorForce.js +10 -0
- package/dist/particle/Tr2ParticleAttractorForce.js.map +1 -1
- package/dist/particle/Tr2ParticleDirectForce.js +7 -0
- package/dist/particle/Tr2ParticleDirectForce.js.map +1 -1
- package/dist/particle/Tr2ParticleDragForce.js +7 -0
- package/dist/particle/Tr2ParticleDragForce.js.map +1 -1
- package/dist/particle/Tr2ParticleElementDeclaration.js +5 -0
- package/dist/particle/Tr2ParticleElementDeclaration.js.map +1 -1
- package/dist/particle/Tr2ParticleFluidDragForce.js +10 -0
- package/dist/particle/Tr2ParticleFluidDragForce.js.map +1 -1
- package/dist/particle/Tr2ParticleSpring.js +10 -0
- package/dist/particle/Tr2ParticleSpring.js.map +1 -1
- package/dist/particle/Tr2ParticleVortexForce.js +10 -0
- package/dist/particle/Tr2ParticleVortexForce.js.map +1 -1
- package/dist/particle/particleElementBinding.js +12 -0
- package/dist/particle/particleElementBinding.js.map +1 -1
- package/dist/postProcess/Tr2PPBloomEffect.js +6 -0
- package/dist/postProcess/Tr2PPBloomEffect.js.map +1 -1
- package/dist/postProcess/Tr2PPDepthOfFieldEffect.js +16 -0
- package/dist/postProcess/Tr2PPDepthOfFieldEffect.js.map +1 -1
- package/dist/postProcess/Tr2PPGenericEffect.js +7 -0
- package/dist/postProcess/Tr2PPGenericEffect.js.map +1 -1
- package/dist/postProcess/Tr2PPTaaEffect.js +10 -0
- package/dist/postProcess/Tr2PPTaaEffect.js.map +1 -1
- package/dist/postProcess/Tr2PPTonemappingEffect.js +5 -0
- package/dist/postProcess/Tr2PPTonemappingEffect.js.map +1 -1
- package/dist/postProcess/Tr2PostProcess.js +5 -0
- package/dist/postProcess/Tr2PostProcess.js.map +1 -1
- package/dist/postProcess/Tr2PostProcess2.js +147 -0
- package/dist/postProcess/Tr2PostProcess2.js.map +1 -1
- package/dist/postProcess/Tr2PostProcessAttributes.js +89 -0
- package/dist/postProcess/Tr2PostProcessAttributes.js.map +1 -1
- package/dist/renderJob/Tr2RenderJobs.js +34 -0
- package/dist/renderJob/Tr2RenderJobs.js.map +1 -1
- package/dist/renderJob/TriRenderJob.js +59 -0
- package/dist/renderJob/TriRenderJob.js.map +1 -1
- package/dist/renderJob/TriRenderStep.js +20 -0
- package/dist/renderJob/TriRenderStep.js.map +1 -1
- package/dist/renderJob/TriStepClear.js +18 -0
- package/dist/renderJob/TriStepClear.js.map +1 -1
- package/dist/renderJob/TriStepCopyRenderTarget.js +51 -0
- package/dist/renderJob/TriStepCopyRenderTarget.js.map +1 -1
- package/dist/renderJob/TriStepEnableWireframeMode.js +9 -0
- package/dist/renderJob/TriStepEnableWireframeMode.js.map +1 -1
- package/dist/renderJob/TriStepGenerateMipMaps.js +9 -0
- package/dist/renderJob/TriStepGenerateMipMaps.js.map +1 -1
- package/dist/renderJob/TriStepPopDepthStencil.js +6 -0
- package/dist/renderJob/TriStepPopDepthStencil.js.map +1 -1
- package/dist/renderJob/TriStepPopProjection.js +6 -0
- package/dist/renderJob/TriStepPopProjection.js.map +1 -1
- package/dist/renderJob/TriStepPopRenderTarget.js +12 -0
- package/dist/renderJob/TriStepPopRenderTarget.js.map +1 -1
- package/dist/renderJob/TriStepPopViewTransform.js +6 -0
- package/dist/renderJob/TriStepPopViewTransform.js.map +1 -1
- package/dist/renderJob/TriStepPopViewport.js +6 -0
- package/dist/renderJob/TriStepPopViewport.js.map +1 -1
- package/dist/renderJob/TriStepPresentSwapChain.js +12 -0
- package/dist/renderJob/TriStepPresentSwapChain.js.map +1 -1
- package/dist/renderJob/TriStepPushDepthStencil.js +17 -0
- package/dist/renderJob/TriStepPushDepthStencil.js.map +1 -1
- package/dist/renderJob/TriStepPushProjection.js +6 -0
- package/dist/renderJob/TriStepPushProjection.js.map +1 -1
- package/dist/renderJob/TriStepPushRenderTarget.js +9 -0
- package/dist/renderJob/TriStepPushRenderTarget.js.map +1 -1
- package/dist/renderJob/TriStepPushViewTransform.js +6 -0
- package/dist/renderJob/TriStepPushViewTransform.js.map +1 -1
- package/dist/renderJob/TriStepPushViewport.js +6 -0
- package/dist/renderJob/TriStepPushViewport.js.map +1 -1
- package/dist/renderJob/TriStepRemoteSync.js +17 -0
- package/dist/renderJob/TriStepRemoteSync.js.map +1 -1
- package/dist/renderJob/TriStepResolve.js +13 -0
- package/dist/renderJob/TriStepResolve.js.map +1 -1
- package/dist/renderJob/TriStepRunJob.js +12 -0
- package/dist/renderJob/TriStepRunJob.js.map +1 -1
- package/dist/renderJob/TriStepSetDepthStencil.js +12 -0
- package/dist/renderJob/TriStepSetDepthStencil.js.map +1 -1
- package/dist/renderJob/TriStepSetProjection.js +14 -0
- package/dist/renderJob/TriStepSetProjection.js.map +1 -1
- package/dist/renderJob/TriStepSetRenderState.js +20 -0
- package/dist/renderJob/TriStepSetRenderState.js.map +1 -1
- package/dist/renderJob/TriStepSetRenderTarget.js +12 -0
- package/dist/renderJob/TriStepSetRenderTarget.js.map +1 -1
- package/dist/renderJob/TriStepSetStdRndStates.js +18 -0
- package/dist/renderJob/TriStepSetStdRndStates.js.map +1 -1
- package/dist/renderJob/TriStepSetView.js +29 -2
- package/dist/renderJob/TriStepSetView.js.map +1 -1
- package/dist/renderJob/TriStepSetViewport.js +17 -0
- package/dist/renderJob/TriStepSetViewport.js.map +1 -1
- package/dist/renderJob/TriStepSetVisualizationMode.js +19 -0
- package/dist/renderJob/TriStepSetVisualizationMode.js.map +1 -1
- package/dist/shader/Tr2Effect.js +217 -2
- package/dist/shader/Tr2Effect.js.map +1 -1
- package/dist/shader/Tr2Material.js +41 -0
- package/dist/shader/Tr2Material.js.map +1 -1
- package/dist/shader/index.js +1 -11
- package/dist/shader/index.js.map +1 -1
- package/dist/shader/material/Tr2EffectLibraryParameters.js +7 -0
- package/dist/shader/material/Tr2EffectLibraryParameters.js.map +1 -1
- package/dist/shader/material/Tr2EffectPassParameters.js +23 -0
- package/dist/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/shader/material/Tr2MaterialStageInput.js +15 -0
- package/dist/shader/material/Tr2MaterialStageInput.js.map +1 -1
- package/dist/shader/parameter/CjsParameter.js +94 -0
- package/dist/shader/parameter/CjsParameter.js.map +1 -1
- package/dist/shader/parameter/CjsVectorParameter.js +20 -0
- package/dist/shader/parameter/CjsVectorParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2FloatParameter.js +53 -0
- package/dist/shader/parameter/Tr2FloatParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2GeometryBufferParameter.js +39 -0
- package/dist/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2Matrix4Parameter.js +54 -0
- package/dist/shader/parameter/Tr2Matrix4Parameter.js.map +1 -1
- package/dist/shader/parameter/Tr2RuntimeTextureParameter.js +54 -0
- package/dist/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2TextureAnimationParameter.js +35 -0
- package/dist/shader/parameter/Tr2TextureAnimationParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2Vector2Parameter.js +86 -0
- package/dist/shader/parameter/Tr2Vector2Parameter.js.map +1 -1
- package/dist/shader/parameter/Tr2Vector3Parameter.js +95 -0
- package/dist/shader/parameter/Tr2Vector3Parameter.js.map +1 -1
- package/dist/shader/parameter/Tr2Vector4Parameter.js +105 -0
- package/dist/shader/parameter/Tr2Vector4Parameter.js.map +1 -1
- package/dist/shader/parameter/TriFloatArrayParameter.js +26 -0
- package/dist/shader/parameter/TriFloatArrayParameter.js.map +1 -1
- package/dist/shader/parameter/TriTextureParameter.js +84 -0
- package/dist/shader/parameter/TriTextureParameter.js.map +1 -1
- package/dist/shader/parameter/TriTransformParameter.js +2 -0
- package/dist/shader/parameter/TriTransformParameter.js.map +1 -1
- package/dist/shader/parameter/TriVariableParameter.js +38 -0
- package/dist/shader/parameter/TriVariableParameter.js.map +1 -1
- package/dist/shader/parameter/TriVector4.js +2 -0
- package/dist/shader/parameter/TriVector4.js.map +1 -1
- package/dist/shader/reflection/Tr2ShaderOption.js +6 -1
- package/dist/shader/reflection/Tr2ShaderOption.js.map +1 -1
- package/dist/shader/support/CjsVariableStore.js +140 -0
- package/dist/shader/support/CjsVariableStore.js.map +1 -1
- package/dist/shader/support/Tr2ShaderBuffer.js +15 -0
- package/dist/shader/support/Tr2ShaderBuffer.js.map +1 -1
- package/dist/trinityCore/CjsBatchManager.js +62 -2
- package/dist/trinityCore/CjsBatchManager.js.map +1 -1
- package/dist/trinityCore/GrannyBoneOffset.js +51 -0
- package/dist/trinityCore/GrannyBoneOffset.js.map +1 -1
- package/dist/trinityCore/ITriRenderBatchAccumulator.js +65 -3
- package/dist/trinityCore/ITriRenderBatchAccumulator.js.map +1 -1
- package/dist/trinityCore/Tr2DirectInstanceData.js +19 -0
- package/dist/trinityCore/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinityCore/Tr2ExpressionTermInfo.js +21 -0
- package/dist/trinityCore/Tr2ExpressionTermInfo.js.map +1 -1
- package/dist/trinityCore/Tr2GpuBuffer.js +5 -0
- package/dist/trinityCore/Tr2GpuBuffer.js.map +1 -1
- package/dist/{generated/trinityCore → trinityCore}/Tr2GrannyAnimation.js +137 -8
- package/dist/trinityCore/Tr2GrannyAnimation.js.map +1 -0
- package/dist/trinityCore/Tr2InstancedMesh.js +52 -0
- package/dist/trinityCore/Tr2InstancedMesh.js.map +1 -1
- package/dist/trinityCore/Tr2MaterialParameterStore.js +5 -0
- package/dist/trinityCore/Tr2MaterialParameterStore.js.map +1 -1
- package/dist/trinityCore/Tr2Mesh.js +37 -0
- package/dist/trinityCore/Tr2Mesh.js.map +1 -1
- package/dist/trinityCore/Tr2MeshArea.js +78 -0
- package/dist/trinityCore/Tr2MeshArea.js.map +1 -1
- package/dist/trinityCore/Tr2MeshBase.js +98 -2
- package/dist/trinityCore/Tr2MeshBase.js.map +1 -1
- package/dist/trinityCore/Tr2PerObjectData.js +10 -0
- package/dist/trinityCore/Tr2PerObjectData.js.map +1 -1
- package/dist/trinityCore/Tr2PickType.js +33 -0
- package/dist/trinityCore/Tr2PickType.js.map +1 -0
- package/dist/trinityCore/Tr2RenderBatch.js +137 -0
- package/dist/trinityCore/Tr2RenderBatch.js.map +1 -1
- package/dist/trinityCore/Tr2RenderContext.js +271 -0
- package/dist/trinityCore/Tr2RenderContext.js.map +1 -1
- package/dist/trinityCore/Tr2RuntimeInstanceData.js +179 -0
- package/dist/trinityCore/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinityCore/Tr2ShLightingManager.js +397 -0
- package/dist/trinityCore/Tr2ShLightingManager.js.map +1 -0
- package/dist/trinityCore/Tr2VariableStore.js +26 -0
- package/dist/trinityCore/Tr2VariableStore.js.map +1 -1
- package/dist/trinityCore/Tr2VisibilityResults.js +5 -0
- package/dist/trinityCore/Tr2VisibilityResults.js.map +1 -1
- package/dist/trinityCore/TriDevice.js +5 -0
- package/dist/trinityCore/TriDevice.js.map +1 -1
- package/dist/trinityCore/TriFrustum.js +21 -14
- package/dist/trinityCore/TriFrustum.js.map +1 -1
- package/dist/trinityCore/TriObserverLocal.js +43 -0
- package/dist/trinityCore/TriObserverLocal.js.map +1 -1
- package/dist/trinityCore/TriProjection.js +86 -32
- package/dist/trinityCore/TriProjection.js.map +1 -1
- package/dist/trinityCore/TriRect.js +12 -0
- package/dist/trinityCore/TriRect.js.map +1 -1
- package/dist/trinityCore/TriRenderBatchAccumulator.js +46 -0
- package/dist/trinityCore/TriRenderBatchAccumulator.js.map +1 -1
- package/dist/trinityCore/TriRenderBatchMap.js +39 -2
- package/dist/trinityCore/TriRenderBatchMap.js.map +1 -1
- package/dist/trinityCore/TriSettings.js +38 -0
- package/dist/trinityCore/TriSettings.js.map +1 -1
- package/dist/trinityCore/TriVariable.js +30 -0
- package/dist/trinityCore/TriVariable.js.map +1 -1
- package/dist/trinityCore/TriView.js +16 -1
- package/dist/trinityCore/TriView.js.map +1 -1
- package/dist/trinityCore/TriViewport.js +12 -0
- package/dist/trinityCore/TriViewport.js.map +1 -1
- package/dist/trinityCore/{Tr2BindingVector3.js → binding/Tr2BindingVector3.js} +1 -1
- package/dist/trinityCore/binding/Tr2BindingVector3.js.map +1 -0
- package/dist/trinityCore/binding/Tr2DynamicBinding.js +266 -0
- package/dist/trinityCore/binding/Tr2DynamicBinding.js.map +1 -0
- package/dist/trinityCore/binding/Tr2ExternalParameter.js +392 -0
- package/dist/trinityCore/binding/Tr2ExternalParameter.js.map +1 -0
- package/dist/trinityCore/{Tr2PyValueBinding.js → binding/Tr2PyValueBinding.js} +30 -6
- package/dist/trinityCore/binding/Tr2PyValueBinding.js.map +1 -0
- package/dist/trinityCore/binding/TriValueBinding.js +648 -0
- package/dist/trinityCore/binding/TriValueBinding.js.map +1 -0
- package/dist/trinityCore/index.js +11 -4
- package/dist/trinityCore/index.js.map +1 -1
- package/dist/trinityCore/pickRay.js +84 -0
- package/dist/trinityCore/pickRay.js.map +1 -0
- package/dist/trinityCore/rawData/CjsPerFrameLayouts.js +517 -0
- package/dist/trinityCore/rawData/CjsPerFrameLayouts.js.map +1 -0
- package/dist/trinityCore/rawData/CjsPerObjectLayouts.js +790 -0
- package/dist/trinityCore/rawData/CjsPerObjectLayouts.js.map +1 -0
- package/dist/trinityCore/rawData/RawData.js +323 -39
- package/dist/trinityCore/rawData/RawData.js.map +1 -1
- package/dist/trinityCore/rawData/TriPoolAllocator.js +357 -0
- package/dist/trinityCore/rawData/TriPoolAllocator.js.map +1 -0
- package/dist/trinityCore/rawData/constantLayout.js +175 -0
- package/dist/trinityCore/rawData/constantLayout.js.map +1 -0
- package/dist/utilities/Range.js +53 -0
- package/dist/utilities/Range.js.map +1 -1
- package/docs/README.md +88 -0
- package/docs/architecture.md +162 -0
- package/docs/concepts/eve-runtime-behavior.md +86 -0
- package/docs/concepts/generated-class-lifecycle.md +116 -0
- package/docs/reference/api.md +76 -0
- package/docs/reference/classes/eve-runtime.md +106 -0
- package/docs/reference/classes/trinity-core.md +26 -0
- package/docs/reference/implementation-status.md +104 -0
- package/docs/reference/main-semantic-extraction.md +104 -0
- package/package.json +34 -24
- package/dist/eve/DecalVSPerObjectData.js +0 -34
- package/dist/eve/DecalVSPerObjectData.js.map +0 -1
- package/dist/eve/EveBannerItem.js +0 -43
- package/dist/eve/EveBannerItem.js.map +0 -1
- package/dist/eve/EveBannerLight.js.map +0 -1
- package/dist/eve/EveBannerSet.js +0 -190
- package/dist/eve/EveBannerSet.js.map +0 -1
- package/dist/eve/EveBasicPerObjectData.js +0 -31
- package/dist/eve/EveBasicPerObjectData.js.map +0 -1
- package/dist/eve/EveBoosterSet2.js.map +0 -1
- package/dist/eve/EveBoosterSet2Renderable.js.map +0 -1
- package/dist/eve/EveChildSpherePinPerObjectData.js +0 -37
- package/dist/eve/EveChildSpherePinPerObjectData.js.map +0 -1
- package/dist/eve/EveHazeSet.js.map +0 -1
- package/dist/eve/EveHazeSetLight.js.map +0 -1
- package/dist/eve/EveLocator2.js.map +0 -1
- package/dist/eve/EveLocatorSets.js.map +0 -1
- package/dist/eve/EveParticleDirectForce.js.map +0 -1
- package/dist/eve/EveParticleDragForce.js.map +0 -1
- package/dist/eve/EveParticleSpring.js.map +0 -1
- package/dist/eve/EvePerObjectPSData.js +0 -29
- package/dist/eve/EvePerObjectPSData.js.map +0 -1
- package/dist/eve/EvePerObjectVSData.js +0 -29
- package/dist/eve/EvePerObjectVSData.js.map +0 -1
- package/dist/eve/EvePlaneLight.js.map +0 -1
- package/dist/eve/EvePlaneSet.js.map +0 -1
- package/dist/eve/EvePlaneSetItem.js +0 -45
- package/dist/eve/EvePlaneSetItem.js.map +0 -1
- package/dist/eve/EveSpaceObjectAttachmentUtils.js.map +0 -1
- package/dist/eve/EveSpaceObjectDecal.js +0 -150
- package/dist/eve/EveSpaceObjectDecal.js.map +0 -1
- package/dist/eve/EveSpaceObjectPSData.js +0 -73
- package/dist/eve/EveSpaceObjectPSData.js.map +0 -1
- package/dist/eve/EveSpaceObjectVSData.js +0 -79
- package/dist/eve/EveSpaceObjectVSData.js.map +0 -1
- package/dist/eve/EveSpacePerObjectData.js +0 -97
- package/dist/eve/EveSpacePerObjectData.js.map +0 -1
- package/dist/eve/EveSpherePinPerObjectData.js +0 -37
- package/dist/eve/EveSpherePinPerObjectData.js.map +0 -1
- package/dist/eve/EveSpotlightLight.js.map +0 -1
- package/dist/eve/EveSpotlightSet.js.map +0 -1
- package/dist/eve/EveSpriteLight.js.map +0 -1
- package/dist/eve/EveSpriteLineSet.js.map +0 -1
- package/dist/eve/EveSpriteLineSetItem.js.map +0 -1
- package/dist/eve/EveSpriteSet.js.map +0 -1
- package/dist/eve/EveTrailsSet.js.map +0 -1
- package/dist/eve/Locator.js.map +0 -1
- package/dist/eve/LocatorData.js.map +0 -1
- package/dist/eve/ProcessLifetimeData.js.map +0 -1
- package/dist/eve/attachment/turrets/EveTurretSetPSData.js +0 -47
- package/dist/eve/attachment/turrets/EveTurretSetPSData.js.map +0 -1
- package/dist/eve/attachment/turrets/EveTurretSetVSData.js +0 -62
- package/dist/eve/attachment/turrets/EveTurretSetVSData.js.map +0 -1
- package/dist/eve/child/behaviors/SplineTunnel.js.map +0 -1
- package/dist/eve/child/behaviors/SplineTunnelPoint.js.map +0 -1
- package/dist/eve/perObjectData/DecalPSPerObjectData.js +0 -56
- package/dist/eve/perObjectData/DecalPSPerObjectData.js.map +0 -1
- package/dist/eve/perObjectData/EveMissileWarheadPerObjectData.js +0 -31
- package/dist/eve/perObjectData/EveMissileWarheadPerObjectData.js.map +0 -1
- package/dist/eve/perObjectData/EveTurretSetPerObjectData.js +0 -36
- package/dist/eve/perObjectData/EveTurretSetPerObjectData.js.map +0 -1
- package/dist/eve/perObjectData/MergeMorphsConstantBuffer.js +0 -64
- package/dist/eve/perObjectData/MergeMorphsConstantBuffer.js.map +0 -1
- package/dist/generated/eve/EveCamera.js +0 -264
- package/dist/generated/eve/EveCamera.js.map +0 -1
- package/dist/generated/eve/EveEntity.js +0 -81
- package/dist/generated/eve/EveEntity.js.map +0 -1
- package/dist/generated/eve/attachment/decal/index.js +0 -2
- package/dist/generated/eve/attachment/decal/index.js.map +0 -1
- package/dist/generated/eve/attachment/haze/EveHazeSetItem.js +0 -52
- package/dist/generated/eve/attachment/haze/EveHazeSetItem.js.map +0 -1
- package/dist/generated/eve/attachment/haze/index.js +0 -2
- package/dist/generated/eve/attachment/haze/index.js.map +0 -1
- package/dist/generated/eve/attachment/index.js +0 -5
- package/dist/generated/eve/attachment/index.js.map +0 -1
- package/dist/generated/eve/attachment/spotlights/EveSpotlightSetItem.js +0 -55
- package/dist/generated/eve/attachment/spotlights/EveSpotlightSetItem.js.map +0 -1
- package/dist/generated/eve/attachment/spotlights/index.js +0 -2
- package/dist/generated/eve/attachment/spotlights/index.js.map +0 -1
- package/dist/generated/eve/attachment/sprites/EveSpriteSetItem.js.map +0 -1
- package/dist/generated/eve/attachment/sprites/index.js +0 -2
- package/dist/generated/eve/attachment/sprites/index.js.map +0 -1
- package/dist/generated/eve/attachment/turrets/enums.js +0 -32
- package/dist/generated/eve/attachment/turrets/enums.js.map +0 -1
- package/dist/generated/eve/attachment/turrets/index.js +0 -2
- package/dist/generated/eve/attachment/turrets/index.js.map +0 -1
- package/dist/generated/eve/child/EveChildBehaviorSystem.js +0 -357
- package/dist/generated/eve/child/EveChildBehaviorSystem.js.map +0 -1
- package/dist/generated/eve/child/EveChildBulletStorm.js.map +0 -1
- package/dist/generated/eve/child/EveChildLink.js.map +0 -1
- package/dist/generated/eve/child/EveChildSpherePin.js +0 -54
- package/dist/generated/eve/child/EveChildSpherePin.js.map +0 -1
- package/dist/generated/eve/child/behaviors/CollisionAvoidance.js +0 -85
- package/dist/generated/eve/child/behaviors/CollisionAvoidance.js.map +0 -1
- package/dist/generated/eve/child/behaviors/InclusionVolume.js +0 -104
- package/dist/generated/eve/child/behaviors/InclusionVolume.js.map +0 -1
- package/dist/generated/eve/child/behaviors/ProcessLifetime.js +0 -458
- package/dist/generated/eve/child/behaviors/ProcessLifetime.js.map +0 -1
- package/dist/generated/eve/child/behaviors/SplineTunnelGroup.js +0 -161
- package/dist/generated/eve/child/behaviors/SplineTunnelGroup.js.map +0 -1
- package/dist/generated/eve/child/behaviors/Wander.js +0 -92
- package/dist/generated/eve/child/behaviors/Wander.js.map +0 -1
- package/dist/generated/eve/child/behaviors/enums.js.map +0 -1
- package/dist/generated/eve/child/modifiers/EveChildModifierAttachToBone.js.map +0 -1
- package/dist/generated/eve/child/modifiers/EveChildModifierBillboard3D.js.map +0 -1
- package/dist/generated/eve/child/modifiers/EveChildModifierStretch.js.map +0 -1
- package/dist/generated/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +0 -1
- package/dist/generated/eve/child/modifiers/index.js +0 -5
- package/dist/generated/eve/child/modifiers/index.js.map +0 -1
- package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js.map +0 -1
- package/dist/generated/eve/child/procedural/index.js +0 -10
- package/dist/generated/eve/child/procedural/index.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/index.js +0 -9
- package/dist/generated/eve/child/procedural/selection/index.js.map +0 -1
- package/dist/generated/eve/distribution/EveBaseDistributionMethod.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/enums.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/index.js +0 -5
- package/dist/generated/eve/distribution/attributeModifiers/index.js.map +0 -1
- package/dist/generated/eve/distribution/index.js +0 -19
- package/dist/generated/eve/distribution/index.js.map +0 -1
- package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +0 -1
- package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +0 -1
- package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +0 -1
- package/dist/generated/eve/distribution/placement/index.js +0 -4
- package/dist/generated/eve/distribution/placement/index.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/index.js +0 -5
- package/dist/generated/eve/distribution/spawnModifiers/index.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/index.js +0 -7
- package/dist/generated/eve/distribution/spawners/index.js.map +0 -1
- package/dist/generated/eve/effect/EveLensflare.js.map +0 -1
- package/dist/generated/eve/effect/EveMultiEffect.js +0 -84
- package/dist/generated/eve/effect/EveMultiEffect.js.map +0 -1
- package/dist/generated/eve/effect/EveMultiEffectParameter.js +0 -45
- package/dist/generated/eve/effect/EveMultiEffectParameter.js.map +0 -1
- package/dist/generated/eve/fxAttributes/EveCameraFxAttributes.js +0 -47
- package/dist/generated/eve/fxAttributes/EveCameraFxAttributes.js.map +0 -1
- package/dist/generated/eve/fxAttributes/EveSpaceObjectFxAttributes.js +0 -63
- package/dist/generated/eve/fxAttributes/EveSpaceObjectFxAttributes.js.map +0 -1
- package/dist/generated/eve/fxAttributes/index.js +0 -3
- package/dist/generated/eve/fxAttributes/index.js.map +0 -1
- package/dist/generated/eve/overlays/EveMeshOverlayEffect.js +0 -58
- package/dist/generated/eve/overlays/EveMeshOverlayEffect.js.map +0 -1
- package/dist/generated/eve/overlays/index.js +0 -2
- package/dist/generated/eve/overlays/index.js.map +0 -1
- package/dist/generated/eve/perObjectData/EveBoosterSetPerObjectData.js +0 -66
- package/dist/generated/eve/perObjectData/EveBoosterSetPerObjectData.js.map +0 -1
- package/dist/generated/eve/perObjectData/EveChildBulletStormPerObjectData.js +0 -39
- package/dist/generated/eve/perObjectData/EveChildBulletStormPerObjectData.js.map +0 -1
- package/dist/generated/eve/perObjectData/EveDecalPerObjectData.js +0 -34
- package/dist/generated/eve/perObjectData/EveDecalPerObjectData.js.map +0 -1
- package/dist/generated/eve/perObjectData/EveSceneStaticParticlesPerObjectData.js +0 -32
- package/dist/generated/eve/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +0 -1
- package/dist/generated/eve/perObjectData/index.js +0 -5
- package/dist/generated/eve/perObjectData/index.js.map +0 -1
- package/dist/generated/eve/scene/EveComponentCollection.js.map +0 -1
- package/dist/generated/eve/scene/EveComponentRegistry.js.map +0 -1
- package/dist/generated/eve/scene/EvePickingContext.js +0 -43
- package/dist/generated/eve/scene/EvePickingContext.js.map +0 -1
- package/dist/generated/eve/scene/EveSceneStaticParticles.js.map +0 -1
- package/dist/generated/eve/scene/TriShadowFrustum.js +0 -83
- package/dist/generated/eve/scene/TriShadowFrustum.js.map +0 -1
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js +0 -140
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/enums.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/index.js +0 -9
- package/dist/generated/eve/smartLights/attributeModifiers/index.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterBindingBase.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterBool.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterColor.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterFloat.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterInt.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterString.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterVector2.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterVector3.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterVector4.js.map +0 -1
- package/dist/generated/eve/socket/index.js +0 -10
- package/dist/generated/eve/socket/index.js.map +0 -1
- package/dist/generated/eve/spaceObject/EvePlanet.js.map +0 -1
- package/dist/generated/eve/spaceObject/EveShip2.js.map +0 -1
- package/dist/generated/eve/spaceObject/IEveSpaceObject2.js +0 -46
- package/dist/generated/eve/spaceObject/IEveSpaceObject2.js.map +0 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js.map +0 -1
- package/dist/generated/eve/ui/EveLineSet.js.map +0 -1
- package/dist/generated/eve/ui/EveSpherePin.js.map +0 -1
- package/dist/generated/eve/ui/EveTacticalOverlayTrackObject.js +0 -44
- package/dist/generated/eve/ui/EveTacticalOverlayTrackObject.js.map +0 -1
- package/dist/generated/eve/ui/EveTacticalTrails.js.map +0 -1
- package/dist/generated/trinityCore/Tr2DynamicBinding.js +0 -58
- package/dist/generated/trinityCore/Tr2DynamicBinding.js.map +0 -1
- package/dist/generated/trinityCore/Tr2ExternalParameter.js +0 -164
- package/dist/generated/trinityCore/Tr2ExternalParameter.js.map +0 -1
- package/dist/generated/trinityCore/Tr2GrannyAnimation.js.map +0 -1
- package/dist/generated/trinityCore/Tr2ShLightingManager.js +0 -48
- package/dist/generated/trinityCore/Tr2ShLightingManager.js.map +0 -1
- package/dist/generated/trinityCore/TriValueBinding.js +0 -249
- package/dist/generated/trinityCore/TriValueBinding.js.map +0 -1
- package/dist/shader/Tr2Shader.js +0 -150
- package/dist/shader/Tr2Shader.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectConstant.js +0 -61
- package/dist/shader/reflection/Tr2EffectConstant.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectDefine.js +0 -34
- package/dist/shader/reflection/Tr2EffectDefine.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectDescription.js +0 -34
- package/dist/shader/reflection/Tr2EffectDescription.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectLibrary.js +0 -61
- package/dist/shader/reflection/Tr2EffectLibrary.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectParameterAnnotation.js +0 -54
- package/dist/shader/reflection/Tr2EffectParameterAnnotation.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectResource.js +0 -63
- package/dist/shader/reflection/Tr2EffectResource.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectStageInput.js +0 -58
- package/dist/shader/reflection/Tr2EffectStageInput.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectTechnique.js +0 -40
- package/dist/shader/reflection/Tr2EffectTechnique.js.map +0 -1
- package/dist/shader/reflection/Tr2Pass.js +0 -46
- package/dist/shader/reflection/Tr2Pass.js.map +0 -1
- package/dist/shader/sampler/Tr2SamplerSetup.js +0 -34
- package/dist/shader/sampler/Tr2SamplerSetup.js.map +0 -1
- package/dist/trinityCore/Tr2BindingVector3.js.map +0 -1
- package/dist/trinityCore/Tr2PyValueBinding.js.map +0 -1
- package/dist/trinityCore/rawData/RawDataStore.js +0 -232
- package/dist/trinityCore/rawData/RawDataStore.js.map +0 -1
- /package/dist/{generated/eve → eve}/distribution/attributeModifiers/enums.js +0 -0
- /package/dist/{generated/eve → eve}/smartLights/attributeModifiers/enums.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveSpaceObject2.js","sources":["../../../../src/eve/spaceObject/EveSpaceObject2.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2.cpp\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2_Blue.cpp\r\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { EveEntity } from \"../../generated/eve/EveEntity.js\";\r\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\r\nimport { EveChildInheritProperties } from \"../child/EveChildInheritProperties.js\";\r\nimport { box3 } from \"@carbonenginejs/runtime-utils/box3\";\r\nimport { mat4 } from \"@carbonenginejs/runtime-utils/mat4\";\r\nimport { quat } from \"@carbonenginejs/runtime-utils/quat\";\r\nimport { sph3 } from \"@carbonenginejs/runtime-utils/sph3\";\r\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/runtime-utils/vec4\";\r\nimport { ReflectionMode } from \"../../generated/eve/enums.js\";\r\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\r\nimport { ImpactConfiguration } from \"../../generated/include/enums.js\";\r\nimport { EveLODHelper, Tr2Lod } from \"../EveLODHelper.js\";\r\nimport { TriBatchType } from \"@carbonenginejs/runtime-utils/graphics\";\r\nimport { Tr2PerObjectData } from \"../../trinityCore/Tr2PerObjectData.js\";\r\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock } from \"../../trinityCore/Tr2RenderBatch.js\";\r\n\r\n// Static scratch for the sorted-transparent area pass (allocation rules: hot\r\n// per-frame path, copy-into, never allocate per call).\r\nconst TRANSPARENT_AABB_MIN = vec3.create();\r\nconst TRANSPARENT_AABB_MAX = vec3.create();\r\nconst TRANSPARENT_CENTER = vec3.create();\r\n\r\n// Carbon EveMeshOverlayEffect::OverlayType (EveMeshOverlayEffect.h:35-41).\r\nconst OVERLAY_TYPE_OPAQUEONLY = 0;\r\nconst OVERLAY_TYPE_ALL = 1;\r\n\r\n@type.define({ className: \"EveSpaceObject2\", family: \"eve/spaceObject\" })\r\nexport class EveSpaceObject2 extends EveEntity\r\n{\r\n\r\n /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */\r\n @io.notify\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"ReflectionMode\")\r\n reflectionMode = 3;\r\n\r\n /** m_effectChildren (PIEveSpaceObjectChildVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectChild\")\r\n effectChildren = [];\r\n\r\n /** m_children (PIEveTransformVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveTransform\")\r\n children = [];\r\n\r\n /** m_name (std::string) [READWRITE, NOTIFY, PERSIST] */\r\n @io.notify\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_mute (bool) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.boolean\r\n mute = false;\r\n\r\n /** m_inheritProperties (EveChildInheritPropertiesPtr) [READWRITE] */\r\n @io.readwrite\r\n @type.objectRef(\"EveChildInheritProperties\")\r\n inheritProperties = null;\r\n\r\n /** m_customMasks (PEveCustomMaskVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveCustomMask\")\r\n customMasks = [];\r\n\r\n /** m_overlayEffects (PEveMeshOverlayEffectVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveMeshOverlayEffect\")\r\n overlayEffects = [];\r\n\r\n /** m_positionDelta (Tr2BindingVector3Ptr) [READ] */\r\n @io.read\r\n @type.objectRef(\"Tr2BindingVector3\")\r\n positionDelta = null;\r\n\r\n /** m_lodLevel (Tr2Lod - enum Tr2Lod) [READ] */\r\n @io.read\r\n @type.int32\r\n @schema.enum(\"Tr2Lod\")\r\n lodLevel = -1;\r\n\r\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"TriCurveSet\")\r\n curveSets = [];\r\n\r\n /** m_isPickable (bool) [READWRITE] */\r\n @io.readwrite\r\n @type.boolean\r\n isPickable = true;\r\n\r\n /** m_estimatedPixelDiameter (float) [READ] */\r\n @io.read\r\n @type.float32\r\n estimatedPixelDiameter = 0;\r\n\r\n /** m_estimatedPixelDiameterWithChildren (float) [READ] */\r\n @io.read\r\n @type.float32\r\n estimatedPixelDiameterWithChildren = 0;\r\n\r\n /** m_generatedShapeEllipsoidCenter (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n generatedShapeEllipsoidCenter = vec3.create();\r\n\r\n /** m_generatedShapeEllipsoidRadius (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n generatedShapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\r\n\r\n /** m_animationUpdater (Tr2GrannyAnimationPtr) [READ] */\r\n @io.read\r\n @type.objectRef(\"Tr2GrannyAnimation\")\r\n animationUpdater = null;\r\n\r\n /** m_dna (std::string) [READ, PERSIST] */\r\n @io.persist\r\n @type.string\r\n dna = \"\";\r\n\r\n /** m_castShadow (bool) [READWRITE, NOTIFY, PERSIST] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n castShadow = false;\r\n\r\n /** m_isAnimated (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n isAnimated = false;\r\n\r\n /** m_dynamicBoundingSphereEnabled (bool) [READ, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n dynamicBoundingSphereEnabled = false;\r\n\r\n /** m_attachments (PIEveSpaceObjectAttachmentVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectAttachment\")\r\n attachments = [];\r\n\r\n /** m_decals (PEveSpaceObjectDecalVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveSpaceObjectDecal\")\r\n decals = [];\r\n\r\n /** m_lights (PTr2LightVector) [READ, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.list(\"Tr2Light\")\r\n lights = [];\r\n\r\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"Tr2ExternalParameter\")\r\n externalParameters = [];\r\n\r\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"ITr2Controller\")\r\n controllers = [];\r\n\r\n /** m_locators (PEveLocator2Vector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveLocator2\")\r\n locators = [];\r\n\r\n /** m_mesh (Tr2MeshBasePtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"Tr2MeshBase\")\r\n mesh = null;\r\n\r\n /** m_impactOverlay (EveImpactOverlayPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"EveImpactOverlay\")\r\n impactOverlay = null;\r\n\r\n /** m_clipSphereCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n clipSphereCenter = vec3.create();\r\n\r\n /** m_clipSphereFactor2 (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n clipSphereFactor2 = 0;\r\n\r\n /** m_clipSphereFactor (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n clipSphereFactor = 0;\r\n\r\n /** m_observers (PTriObserverLocalVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"TriObserverLocal\")\r\n observers = [];\r\n\r\n /** m_worldPosition (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n worldPosition = vec3.create();\r\n\r\n /** m_ballRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriQuaternionFunction\")\r\n rotationCurve = null;\r\n\r\n /** m_worldRotation (Quaternion) [READ] */\r\n @io.read\r\n @type.quat\r\n worldRotation = quat.create();\r\n\r\n /** m_modelScale (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n modelScale = 1;\r\n\r\n /** m_locatorSets (PEveLocatorSetsVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveLocatorSets\")\r\n locatorSets = [];\r\n\r\n /** m_activationStrength (float) [READWRITE] */\r\n @io.readwrite\r\n @type.float32\r\n activationStrength = 1;\r\n\r\n /** m_albedoColor (Color) [READWRITE] */\r\n @io.readwrite\r\n @type.color\r\n albedoColor = vec4.createLinear();\r\n\r\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_update (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n update = true;\r\n\r\n /** m_secondaryLightingSphereRadius (float) [READ] */\r\n @io.read\r\n @type.float32\r\n secondaryLightingSphereRadius = 0;\r\n\r\n /** m_boundingSphereCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n boundingSphereCenter = vec3.create();\r\n\r\n /** m_dirtLevel (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n dirtLevel = 0;\r\n\r\n /** m_psData.customData (Vector4) [READWRITE] - script/SOF-driven custom shader data. */\r\n @io.readwrite\r\n @type.vec4\r\n customShaderData = vec4.create();\r\n\r\n /** m_lastDamageLocatorHit (int) [READ] */\r\n @io.read\r\n @type.int32\r\n lastDamageLocatorHit = -1;\r\n\r\n /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n boundingSphereRadius = -1;\r\n\r\n /** m_boundingSphereWorldCenter (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n modelWorldPosition = vec3.create();\r\n\r\n /** m_modelTranslation (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriVectorFunction\")\r\n modelTranslationCurve = null;\r\n\r\n /** m_modelRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriQuaternionFunction\")\r\n modelRotationCurve = null;\r\n\r\n /** m_shapeEllipsoidCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n shapeEllipsoidCenter = vec3.create();\r\n\r\n /** m_shapeEllipsoidRadius (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n shapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\r\n\r\n /** m_ballPosition (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriVectorFunction\")\r\n translationCurve = null;\r\n\r\n @io.read\r\n @type.mat4\r\n worldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.mat4\r\n inverseWorldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.mat4\r\n lastWorldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.vec3\r\n worldVelocity = vec3.create();\r\n\r\n @io.readwrite\r\n @type.objectRef(\"ITr2AudGeometry\")\r\n audioGeometry = null;\r\n\r\n @type.boolean\r\n isVisible = false;\r\n\r\n #controllerVariables = new Map([\r\n [\"DirtLevel\", 0],\r\n [\"ActivationStrength\", 1],\r\n [\"ShieldDamage\", 1],\r\n [\"ArmorDamage\", 1],\r\n [\"HullDamage\", 1],\r\n [\"ClipSphereFactor\", 0],\r\n [\"ClipSphereFactor2\", 0]\r\n ]);\r\n\r\n #lastUpdateTransformTime = null;\r\n\r\n // Carbon m_lastCurveUpdateTime: stamped by the sync-side LOD gate; the async\r\n // side updates curve sets only when it matches the frame time.\r\n #lastCurveUpdateTime = 0;\r\n\r\n // Carbon m_dynamicBoundingSphere: disabled while w is -1; a future animation\r\n // updater port publishes skinned bounds here.\r\n #dynamicBoundingSphere = sph3.set(sph3.create(), 0, 0, 0, -1);\r\n\r\n // Carbon keeps the realized world sphere separate from the authored local\r\n // sphere. It is refreshed by UpdateWorldBounds after transform changes.\r\n #boundingSphereWorldRadius = -1;\r\n\r\n // Carbon visibility and mesh LOD state are runtime-only renderer results.\r\n #isInFrustum = false;\r\n\r\n #isMeshVisible = false;\r\n\r\n #lodLevelWithChildren = Tr2Lod.TR2_LOD_UNSPECIFIED;\r\n\r\n #meshScreenSize = 0;\r\n\r\n #overlayMeshAreaBlocks = [ [], [] ];\r\n\r\n #shadowMeshOpaqueAreas = [];\r\n\r\n #cachedAreaBlocksBuilt = false;\r\n\r\n // Carbon m_localAabbMin/Max: cached so GetLocalBoundingBox can answer before\r\n // LOD selection assigns a mesh (at worst it lags one frame).\r\n #localAabbMin = vec3.create();\r\n\r\n #localAabbMax = vec3.create();\r\n\r\n // Carbon m_allowLodSelection: cleared by FreezeHighDetailMesh.\r\n #allowLodSelection = true;\r\n\r\n // Carbon m_impostorMode: the impostor system that raises it is unported.\r\n #impostorMode = false;\r\n\r\n get meshLod()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n set meshLod(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n Initialize()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n if (!controller?.IsLinked?.())\r\n {\r\n controller?.Link?.(this);\r\n }\r\n }\r\n // Authored inherit properties propagate as part of the lifecycle so a\r\n // field-populated graph (values import, document hydration) matches the\r\n // SetInheritProperties authoring path.\r\n if (this.inheritProperties)\r\n {\r\n this.#PropagateInheritProperties();\r\n }\r\n // Carbon derives the impact overlay's damage locator count from the\r\n // \"damage\" locator set at build time; deriving it here keeps it out of\r\n // the authored values while reproducing the same live state.\r\n if (this.impactOverlay)\r\n {\r\n let damageLocatorCount = 0;\r\n for (const set of this.locatorSets)\r\n {\r\n if (set?.HasName?.(\"damage\")) damageLocatorCount += set.locators.length;\r\n }\r\n this.impactOverlay.SetDamageLocatorCount(damageLocatorCount);\r\n }\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetMesh()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetMesh(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddController(controller)\r\n {\r\n this.controllers.push(controller);\r\n if (!controller?.IsLinked?.())\r\n {\r\n controller?.Link?.(this);\r\n }\r\n EveSpaceObject2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\r\n return controller;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddObserver(observer)\r\n {\r\n this.observers.push(observer);\r\n return observer;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetInheritProperties(colorSet)\r\n {\r\n if (!this.inheritProperties)\r\n {\r\n this.inheritProperties = new EveChildInheritProperties();\r\n }\r\n this.inheritProperties.SetProperties(colorSet);\r\n this.#PropagateInheritProperties();\r\n }\r\n\r\n #PropagateInheritProperties()\r\n {\r\n const properties = this.inheritProperties.GetProperties();\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetInheritProperties?.(properties);\r\n }\r\n for (const light of this.lights)\r\n {\r\n light?.SetInheritProperties?.(properties);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetEffectChildByName(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const child of this.effectChildren)\r\n {\r\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target)\r\n {\r\n return child;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddToEffectChildrenList(child)\r\n {\r\n if (this.inheritProperties)\r\n {\r\n child?.SetInheritProperties?.(this.inheritProperties.GetProperties());\r\n }\r\n this.effectChildren.push(child);\r\n EveSpaceObject2.#ApplyControllerVariables(child, this.#controllerVariables, \"SetControllerVariable\");\r\n return child;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddLight(light)\r\n {\r\n if (this.inheritProperties)\r\n {\r\n light?.SetInheritProperties?.(this.inheritProperties.GetProperties());\r\n }\r\n this.lights.push(light);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ClearLights()\r\n {\r\n this.lights.length = 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n RemoveFromEffectChildrenList(child)\r\n {\r\n const index = this.effectChildren.indexOf(child);\r\n if (index === -1)\r\n {\r\n return false;\r\n }\r\n this.effectChildren.splice(index, 1);\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetModelRotationCurve(curve)\r\n {\r\n this.modelRotationCurve = curve ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetModelRotationCurve()\r\n {\r\n return this.modelRotationCurve;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetModelTranslationCurve(curve)\r\n {\r\n this.modelTranslationCurve = curve ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetModelTranslationCurve()\r\n {\r\n return this.modelTranslationCurve;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateWorldTransform(time)\r\n {\r\n const nextTime = Number(time) || 0;\r\n if (this.#lastUpdateTransformTime === nextTime)\r\n {\r\n return false;\r\n }\r\n this.#lastUpdateTransformTime = nextTime;\r\n mat4.copy(this.lastWorldTransform, this.worldTransform);\r\n\r\n EveSpaceObject2.#UpdateCurve(this.translationCurve, nextTime, this.worldPosition, EveSpaceObject2.#zero);\r\n if (this.translationCurve?.GetValueDotAt)\r\n {\r\n this.translationCurve.GetValueDotAt(nextTime, this.worldVelocity);\r\n }\r\n else\r\n {\r\n vec3.set(this.worldVelocity, 0, 0, 0);\r\n }\r\n\r\n EveSpaceObject2.#UpdateCurve(this.rotationCurve, nextTime, this.worldRotation, EveSpaceObject2.#identityRotation);\r\n const rotation = quat.clone(this.worldRotation);\r\n if (this.modelRotationCurve)\r\n {\r\n const modelRotation = quat.create();\r\n EveSpaceObject2.#UpdateCurve(this.modelRotationCurve, nextTime, modelRotation, EveSpaceObject2.#identityRotation);\r\n // Carbon (row-vector): rotation = modelRotation * m_worldRotation - model first.\r\n quat.multiply(rotation, rotation, modelRotation);\r\n }\r\n\r\n mat4.fromQuat(this.worldTransform, rotation);\r\n if (this.modelScale !== 1)\r\n {\r\n // Carbon (row-vector): m_worldTransform * scaleMatrix - scale LAST\r\n // (cpp:2711-2716). gl mat4.scale builds W*S = scale FIRST; equivalent\r\n // ONLY because modelScale is strictly uniform (a uniform scale commutes\r\n // with the pure rotation here). If modelScale ever becomes a vec3 this\r\n // must become mat4.multiply(w, S, w) per the swap rule.\r\n mat4.scale(this.worldTransform, this.worldTransform, [this.modelScale, this.modelScale, this.modelScale]);\r\n }\r\n\r\n if (this.modelTranslationCurve)\r\n {\r\n const modelTranslation = vec3.create();\r\n EveSpaceObject2.#UpdateCurve(this.modelTranslationCurve, nextTime, modelTranslation, EveSpaceObject2.#zero);\r\n vec3.transformMat4(modelTranslation, modelTranslation, this.worldTransform);\r\n this.worldTransform[12] = this.worldPosition[0] + modelTranslation[0];\r\n this.worldTransform[13] = this.worldPosition[1] + modelTranslation[1];\r\n this.worldTransform[14] = this.worldPosition[2] + modelTranslation[2];\r\n }\r\n else\r\n {\r\n this.worldTransform[12] = this.worldPosition[0];\r\n this.worldTransform[13] = this.worldPosition[1];\r\n this.worldTransform[14] = this.worldPosition[2];\r\n }\r\n\r\n if (!mat4.invert(this.inverseWorldTransform, this.worldTransform))\r\n {\r\n mat4.identity(this.inverseWorldTransform);\r\n }\r\n this.UpdateWorldBounds();\r\n return true;\r\n }\r\n\r\n /**\r\n * Refreshes Carbon's realized world-space sphere from the dynamic skinned\r\n * sphere when available, otherwise from the authored local sphere.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The browser runtime refreshes the cache with world-transform updates instead of Carbon's renderer-side PrepareShaderData pass.\")\r\n UpdateWorldBounds()\r\n {\r\n const updater = this.animationUpdater;\r\n if (this.dynamicBoundingSphereEnabled && updater?.IsInitialized?.())\r\n {\r\n updater.GetDynamicBounds?.(this.#dynamicBoundingSphere, this.#localAabbMin, this.#localAabbMax);\r\n if (this.#dynamicBoundingSphere[3] > 0)\r\n {\r\n vec3.transformMat4(this.modelWorldPosition, this.#dynamicBoundingSphere, this.worldTransform);\r\n this.#boundingSphereWorldRadius = this.modelScale * this.#dynamicBoundingSphere[3];\r\n return true;\r\n }\r\n }\r\n if (this.boundingSphereRadius > 0)\r\n {\r\n vec3.transformMat4(this.modelWorldPosition, this.boundingSphereCenter, this.worldTransform);\r\n this.#boundingSphereWorldRadius = this.modelScale * this.boundingSphereRadius;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateSyncronous(updateContext = null)\r\n {\r\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n this.UpdateWorldTransform(time);\r\n if (!this.update)\r\n {\r\n return false;\r\n }\r\n\r\n const observerTransform = this.GetObserverTransform();\r\n for (const observer of this.observers)\r\n {\r\n observer?.Update?.(observerTransform);\r\n }\r\n\r\n // LOD-gated curve/overlay stamp (Carbon EveSpaceObject2::UpdateSyncronous:\r\n // ShouldUpdate(m_lodLevelWithChildren, time - m_lastCurveUpdateTime) -\r\n // adapted to lodLevel, m_lodLevelWithChildren is unported). Overlay effects\r\n // receive the context time as BOTH clocks, as Carbon does; the async pass\r\n // updates curve sets only on frames stamped here.\r\n if (EveLODHelper.ShouldUpdate(this.lodLevel, time - this.#lastCurveUpdateTime))\r\n {\r\n this.#lastCurveUpdateTime = time;\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.Update?.(time, time);\r\n }\r\n }\r\n\r\n if (this.effectChildren.length)\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\r\n params.activationStrength = this.activationStrength;\r\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\r\n for (const child of this.effectChildren)\r\n {\r\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\r\n child?.UpdateSyncronous?.(updateContext, params);\r\n }\r\n }\r\n\r\n this.impactOverlay?.UpdateSyncronous?.(updateContext, this);\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext = null)\r\n {\r\n if (!this.update)\r\n {\r\n return 0;\r\n }\r\n\r\n const threshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetHighDetailThreshold\", \"highDetailThreshold\");\r\n const frequency = this.isVisible && threshold > 0\r\n ? Math.min(1, this.estimatedPixelDiameter / threshold)\r\n : 0;\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Update?.(frequency);\r\n }\r\n\r\n // Object-level curve sets update only on frames the sync-side LOD gate\r\n // stamped, receiving the context time as BOTH realTime and simTime\r\n // (Carbon EveSpaceObject2::UpdateAsyncronous: if (m_lastCurveUpdateTime ==\r\n // time) (*it)->Update(time, time)).\r\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n if (this.#lastCurveUpdateTime === time)\r\n {\r\n for (const curveSet of this.curveSets)\r\n {\r\n curveSet?.Update?.(time, time);\r\n }\r\n }\r\n\r\n for (const child of this.children)\r\n {\r\n child?.Update?.(updateContext);\r\n }\r\n\r\n if (this.effectChildren.length)\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\r\n params.activationStrength = this.activationStrength;\r\n params.controllerUpdateFrequency = frequency;\r\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\r\n for (const child of this.effectChildren)\r\n {\r\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\r\n child?.UpdateAsyncronous?.(updateContext, params);\r\n }\r\n }\r\n\r\n this.impactOverlay?.UpdateAsyncronous?.(updateContext, this);\r\n return frequency;\r\n }\r\n\r\n /**\r\n * Updates Carbon's visibility, pixel-size, and mesh-LOD state, then forwards\r\n * visibility to the explicitly owned visual branches.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Native impostor, raytracing, and audio-emitter realization remain engine-owned; graph visibility and LOD state are preserved.\")\r\n UpdateVisibility(updateContext = null, _parentTransform = EveSpaceObject2.#identityTransform)\r\n {\r\n this.isVisible = false;\r\n this.#isMeshVisible = false;\r\n this.#isInFrustum = false;\r\n if (!this.display)\r\n {\r\n return false;\r\n }\r\n\r\n this.UpdateWorldBounds();\r\n this.lodLevel = Tr2Lod.TR2_LOD_LOW;\r\n this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\r\n this.#impostorMode = false;\r\n\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\r\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\r\n const visibilityThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetVisibilityThreshold\", \"visibilityThreshold\");\r\n const lodFactor = EveSpaceObject2.#GetContextValue(updateContext, \"GetLodFactor\", \"lodFactor\") || 1;\r\n\r\n if (this.boundingSphereRadius > 0 && this.#boundingSphereWorldRadius > 0)\r\n {\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n if (frustum?.IsSphereVisible?.(EveSpaceObject2.#worldSphere) !== false)\r\n {\r\n this.EstimatePixelDiameter(frustum);\r\n this.#isMeshVisible = true;\r\n }\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n if (attachment?.UpdateVisibility?.(updateContext, this.worldTransform, null, 0))\r\n {\r\n this.#isMeshVisible = true;\r\n this.isVisible = true;\r\n }\r\n }\r\n\r\n if (this.DisplayChildren())\r\n {\r\n for (const child of this.children)\r\n {\r\n child?.UpdateVisibility?.(updateContext, this.worldTransform);\r\n }\r\n }\r\n\r\n if (this.GetBoundingSphere(EveSpaceObject2.#worldSphere, 1))\r\n {\r\n this.#isInFrustum = frustum?.IsSphereVisible?.(EveSpaceObject2.#worldSphere) !== false;\r\n this.estimatedPixelDiameterWithChildren = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\r\n if (this.#isInFrustum && this.estimatedPixelDiameterWithChildren >= visibilityThreshold)\r\n {\r\n this.isVisible = true;\r\n }\r\n }\r\n\r\n if (this.isVisible)\r\n {\r\n if (this.estimatedPixelDiameter > mediumThreshold) this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedPixelDiameter > lowThreshold) this.lodLevel = Tr2Lod.TR2_LOD_MEDIUM;\r\n\r\n if (this.estimatedPixelDiameterWithChildren > mediumThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedPixelDiameterWithChildren > lowThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_MEDIUM;\r\n else this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\r\n }\r\n\r\n for (const observer of this.observers)\r\n {\r\n const target = observer?.GetObserver?.() ?? observer?.observer;\r\n target?.SetVisibility?.(this.isVisible);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.UpdateVisibility?.(updateContext, this.worldTransform, this.#lodLevelWithChildren);\r\n }\r\n\r\n if (this.mesh && this.#boundingSphereWorldRadius > 0)\r\n {\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n this.#meshScreenSize = EveSpaceObject2.#GetEstimatedPixelSize(frustum, EveSpaceObject2.#worldSphere) * lodFactor;\r\n if (!this.#allowLodSelection) this.#meshScreenSize = Infinity;\r\n this.mesh.UseWithScreenSize?.(this.#meshScreenSize, this.#boundingSphereWorldRadius);\r\n }\r\n return this.isVisible;\r\n }\r\n\r\n /** Collects the hull and explicitly owned Carbon child/decal renderables. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Impostor submission and decal mesh caches are engine-owned; Trinity returns the backend-neutral renderable graph.\")\r\n GetRenderables(out = [])\r\n {\r\n if (!this.display || !this.isVisible) return out;\r\n if (this.#allowLodSelection && this.#isMeshVisible)\r\n {\r\n this.mesh?.GetBoundingBox?.(this.#localAabbMin, this.#localAabbMax);\r\n }\r\n if (this.mesh && this.#isMeshVisible && this.mesh.IsLoading?.() !== true)\r\n {\r\n out.push(this);\r\n }\r\n if (this.DisplayChildren())\r\n {\r\n for (const child of this.children) child?.GetRenderables?.(out);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n if (this.DisplayChildren() || child?.IsAlwaysOn?.()) child?.GetRenderables?.(out);\r\n }\r\n if (this.mesh && this.#isMeshVisible)\r\n {\r\n const geometryResource = this.mesh.GetGeometryResource?.();\r\n if (geometryResource)\r\n {\r\n for (const decal of this.decals)\r\n {\r\n decal?.GetRenderables?.(out, null, geometryResource, this.#meshScreenSize);\r\n }\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n /** Carbon ITr2Renderable contract (EveSpaceObject2.cpp:1097-1140): activated\r\n * attachments recurse, the impact overlay contributes, the hull mesh delegates\r\n * per batch type, and TRANSPARENT routes through the distance-sorted area\r\n * path. GetBatchesFromOverlayVector (precomputed overlay area blocks) is\r\n * deferred with the overlay realization work. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Overlay area-block batches are deferred; the view position arrives via the appended render-context argument instead of Carbon's renderer global.\")\r\n GetBatches(batches, batchType, perObjectData, reason, renderContext = null)\r\n {\r\n if (!this.mesh) return false;\r\n if (this.mesh.display === false) return false;\r\n\r\n // Returns whether any batch was committed (JS addition; Carbon returns\r\n // void). The O(1) accumulator count makes the delta check free.\r\n const committedBefore = batches.GetBatchCount?.() ?? 0;\r\n\r\n if (this.activationStrength !== 0)\r\n {\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.GetBatches?.(batches, batchType, perObjectData, reason);\r\n }\r\n }\r\n\r\n this.impactOverlay?.GetBatches?.(batches, batchType, perObjectData, this.#meshScreenSize);\r\n\r\n const areas = this.mesh.GetAreas?.(batchType);\r\n if (areas)\r\n {\r\n if (batchType !== TriBatchType.TRIBATCHTYPE_TRANSPARENT)\r\n {\r\n this.mesh.GetBatches(batches, areas, perObjectData);\r\n }\r\n else\r\n {\r\n this.#GetSortedTransparentBatches(areas, batches, perObjectData, renderContext);\r\n }\r\n }\r\n\r\n // add overlay effect batches (Carbon calls this for every batch type)\r\n this.GetBatchesFromOverlayVector(batches, perObjectData, batchType, this.mesh);\r\n\r\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\r\n }\r\n\r\n // Carbon GetSortedBatchesFromMeshAreaVector (EveSpaceObject2.cpp:57-121):\r\n // object-space area bounding-box centers -> world space -> squared distance to\r\n // the view position, sorted back-to-front (descending), committed in that\r\n // order into the order-preserving TRANSPARENT accumulator. Bounding boxes come\r\n // from the geometry resource when it exposes them; a failed lookup keeps\r\n // Carbon's origin-center fallback.\r\n #GetSortedTransparentBatches(areas, batches, perObjectData, renderContext)\r\n {\r\n const geometry = this.mesh.GetGeometryResource?.() ?? null;\r\n const viewPosition = renderContext?.GetViewPosition?.();\r\n const meshIndex = this.mesh.meshIndex ?? 0;\r\n\r\n const sorted = [];\r\n for (const area of areas)\r\n {\r\n if (!area || area.GetDisplay?.() === false) continue;\r\n\r\n vec3.set(TRANSPARENT_CENTER, 0, 0, 0);\r\n if (geometry?.GetAreaBoundingBox?.(meshIndex, area.GetIndex(), TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX))\r\n {\r\n vec3.add(TRANSPARENT_CENTER, TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX);\r\n vec3.scale(TRANSPARENT_CENTER, TRANSPARENT_CENTER, 0.5);\r\n }\r\n vec3.transformMat4(TRANSPARENT_CENTER, TRANSPARENT_CENTER, this.worldTransform);\r\n\r\n const dx = (viewPosition?.[0] ?? 0) - TRANSPARENT_CENTER[0];\r\n const dy = (viewPosition?.[1] ?? 0) - TRANSPARENT_CENTER[1];\r\n const dz = (viewPosition?.[2] ?? 0) - TRANSPARENT_CENTER[2];\r\n sorted.push({ area, distance: dx * dx + dy * dy + dz * dz });\r\n }\r\n\r\n sorted.sort((a, b) => b.distance - a.distance);\r\n\r\n for (const entry of sorted)\r\n {\r\n const area = entry.area;\r\n if (!area.GetMaterialInterface?.()) continue;\r\n const batch = this.mesh.CreateGeometryBatch(geometry, area, perObjectData);\r\n if (batch) batches.Commit(batch);\r\n }\r\n }\r\n\r\n /** Rebuilds the cached overlay/shadow area-block lists from the current mesh\r\n * (Carbon RebuildCachedData, EveSpaceObject2.cpp:2077-2097, triggered there by\r\n * the geometry-resource load callback). TYPE_ALL = shadow-casting OPAQUE +\r\n * TRANSPARENT + DECAL areas; TYPE_OPAQUEONLY = shadow-casting OPAQUE; the\r\n * shadow list groups OPAQUE areas by shared material. All coalesced. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon rebuilds from the geometry-resource notify callback; the GPU-free port rebuilds lazily on first batch use from the mesh areas alone.\")\r\n RebuildCachedData()\r\n {\r\n this.ReleaseCachedData();\r\n if (!this.mesh) return;\r\n\r\n const all = this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL];\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_TRANSPARENT);\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_DECAL);\r\n this.mesh.CollectAreaBlocks(\r\n this.#overlayMeshAreaBlocks[OVERLAY_TYPE_OPAQUEONLY], TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n for (const blocks of this.#overlayMeshAreaBlocks)\r\n {\r\n TriRenderBatchAreaBlock.Optimize(blocks);\r\n }\r\n\r\n this.mesh.CollectAreaBlocksWithSharedMaterials(\r\n this.#shadowMeshOpaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n for (const collector of this.#shadowMeshOpaqueAreas)\r\n {\r\n collector.Optimize();\r\n }\r\n this.#cachedAreaBlocksBuilt = true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ReleaseCachedData()\r\n {\r\n for (const blocks of this.#overlayMeshAreaBlocks)\r\n {\r\n blocks.length = 0;\r\n }\r\n this.#shadowMeshOpaqueAreas.length = 0;\r\n this.#cachedAreaBlocksBuilt = false;\r\n }\r\n\r\n #EnsureCachedAreaBlocks()\r\n {\r\n if (!this.#cachedAreaBlocksBuilt && this.mesh) this.RebuildCachedData();\r\n }\r\n\r\n /** Carbon GetShadowBatches (EveSpaceObject2.cpp:1143-1184): one batch per\r\n * cached shared-material OPAQUE area block, using the area's own material.\r\n * Carbon bakes realized-LOD draw args; the GPU-free port defers them to the\r\n * engine via the geometry source descriptor, so shadowPixelSize travels unused\r\n * until engine LOD selection consumes it. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Realized-LOD draw args are engine-resolved from the geometry source descriptor; primitive-count gating happens at realization.\")\r\n GetShadowBatches(batches, perObjectData, _shadowPixelSize)\r\n {\r\n if (!this.mesh || this.mesh.display === false) return false;\r\n this.#EnsureCachedAreaBlocks();\r\n\r\n const geometry = this.mesh.GetGeometryResource?.() ?? null;\r\n const meshIndex = this.mesh.meshIndex ?? 0;\r\n\r\n let committed = false;\r\n for (const collector of this.#shadowMeshOpaqueAreas)\r\n {\r\n const material = collector.shaderMaterial;\r\n if (!material) continue;\r\n for (const block of collector.areaBlockVector)\r\n {\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(material);\r\n if (!batch.IsValid()) continue;\r\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n committed = batches.Commit(batch) || committed;\r\n }\r\n }\r\n return committed;\r\n }\r\n\r\n /** Carbon GetBatchesFromOverlayVector (EveSpaceObject2.cpp:1199-1285): the\r\n * impact overlay's armor-damage shader draws over the TYPE_ALL blocks at\r\n * maximum priority; each displayed overlay effect draws its per-batch-type\r\n * effects over its overlay-type blocks (OPAQUE -> TYPE_OPAQUEONLY, everything\r\n * else -> TYPE_ALL). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Generated EveMeshOverlayEffect has no method surface yet, so the per-batch-type effect selection reads its fields here until the class is promoted; realized-LOD draw args defer to the engine.\")\r\n GetBatchesFromOverlayVector(batches, perObjectData, batchType, mesh)\r\n {\r\n const impactEffect = this.impactOverlay?.GetArmorDamageShader?.(batchType) ?? null;\r\n if (!impactEffect && !this.overlayEffects.length) return false;\r\n if (!mesh) return false;\r\n this.#EnsureCachedAreaBlocks();\r\n\r\n const committedBefore = batches.GetBatchCount?.() ?? 0;\r\n\r\n const geometry = mesh.GetGeometryResource?.() ?? null;\r\n const meshIndex = mesh.meshIndex ?? 0;\r\n\r\n if (impactEffect)\r\n {\r\n for (const block of this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL])\r\n {\r\n this.#CommitBlockBatch(batches, impactEffect, geometry, meshIndex, block, perObjectData, 0xFFFFFFFF);\r\n }\r\n }\r\n\r\n for (const overlay of this.overlayEffects)\r\n {\r\n const effects = this.#OverlayEffectsFor(overlay, batchType);\r\n if (!effects) continue;\r\n\r\n const overlayType = batchType === TriBatchType.TRIBATCHTYPE_OPAQUE\r\n ? OVERLAY_TYPE_OPAQUEONLY\r\n : OVERLAY_TYPE_ALL;\r\n const blocks = this.#overlayMeshAreaBlocks[overlayType];\r\n for (const effect of effects)\r\n {\r\n for (const block of blocks)\r\n {\r\n this.#CommitBlockBatch(batches, effect, geometry, meshIndex, block, perObjectData, 0);\r\n }\r\n }\r\n }\r\n\r\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\r\n }\r\n\r\n #CommitBlockBatch(batches, material, geometry, meshIndex, block, perObjectData, priority)\r\n {\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(material);\r\n if (!batch.IsValid()) return;\r\n if (priority !== 0) batch.SetPriority(priority);\r\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n batches.Commit(batch);\r\n }\r\n\r\n // EveMeshOverlayEffect::GetEffects (display-gated, per batch type). Prefers a\r\n // promoted method surface; falls back to the generated class's fields.\r\n #OverlayEffectsFor(overlay, batchType)\r\n {\r\n if (!overlay) return null;\r\n if (typeof overlay.GetEffects === \"function\") return overlay.GetEffects(batchType) ?? null;\r\n if (overlay.display === false) return null;\r\n\r\n switch (batchType)\r\n {\r\n case TriBatchType.TRIBATCHTYPE_OPAQUE: return overlay.opaqueEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_DECAL: return overlay.decalEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_TRANSPARENT: return overlay.transparentEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_ADDITIVE: return overlay.additiveEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_DISTORTION: return overlay.distortionEffects ?? null;\r\n default: return null;\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The overlay HasTransparentArea predicate reads the generated class's transparentEffects field until the class is promoted.\")\r\n HasTransparentBatches()\r\n {\r\n if (!this.mesh) return false;\r\n if ((this.mesh.GetAreas?.(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;\r\n\r\n for (const overlay of this.overlayEffects)\r\n {\r\n if (overlay?.HasTransparentArea?.() ?? ((overlay?.transparentEffects?.length ?? 0) > 0)) return true;\r\n }\r\n return false;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\r\n GetSortValue(renderContext = null)\r\n {\r\n const viewPosition = renderContext?.GetViewPosition?.();\r\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\r\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\r\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\r\n return Math.hypot(x, y, z);\r\n }\r\n\r\n /** Carbon allocates Tr2PerObjectDataWithPersistentBuffers<EveSpaceObject2>,\r\n * which calls back into the object at upload time; the GPU-free record carries\r\n * the same live object reference for the engine serializer (the space-object\r\n * Main profile) to pull current values at realization. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Persistent VS/PS device buffers are engine-owned; the record carries the object reference the engine serializer consumes.\")\r\n GetPerObjectData(accumulator = null)\r\n {\r\n const data = typeof accumulator?.Allocate === \"function\"\r\n ? accumulator.Allocate(Tr2PerObjectData)\r\n : new Tr2PerObjectData();\r\n data.object = this;\r\n return data;\r\n }\r\n\r\n /** Carbon forwards the shadow pass to the same per-object record. */\r\n @carbon.method\r\n @impl.implemented\r\n GetShadowPerObjectData(accumulator = null)\r\n {\r\n return this.GetPerObjectData(accumulator);\r\n }\r\n\r\n /** Carbon EveSpaceObject2::GetLights (cpp:3536-3555): display gate only\r\n * (no lights-empty early-out, unlike EveChildMesh), then per light\r\n * AddLight(manager, worldTransform, 1, bones, boneCount) FOLLOWED by\r\n * SetBrightnessMultiplier(m_activationStrength) - the order is contract:\r\n * the submission uses the multiplier stamped on the PREVIOUS pass (first\r\n * pass uses the Tr2Light default 1) - one frame of activation-strength\r\n * lag, preserved verbatim. cpp:3554's dead `DisplayChildren()` local is\r\n * not ported. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The granny bone list (Tr2GrannyAnimationUtils::GetBoneList, cpp:3545-3547) awaits the JS animation seam - (null, 0) is passed, the established EveChildMesh convention.\")\r\n GetLights(lightManager)\r\n {\r\n if (!this.display)\r\n {\r\n return;\r\n }\r\n for (const light of this.lights)\r\n {\r\n light?.AddLight?.(lightManager, this.worldTransform, 1, null, 0);\r\n light?.SetBrightnessMultiplier?.(this.activationStrength);\r\n }\r\n }\r\n\r\n /** Carbon EveSpaceObject2::IsCastingShadow (cpp:1940-1990) culls against the\r\n * camera/shadow frustums; awaits the TriFrustum port (visibility pass).\r\n * Presence satisfies the \"ShadowCaster\" duck contract. */\r\n @carbon.method\r\n @impl.notImplemented\r\n IsCastingShadow(..._args)\r\n {\r\n throw new Error(\"EveSpaceObject2.IsCastingShadow is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Carbon EveSpaceObject2::RegisterComponents (cpp:3568-3609): registers its\r\n * own components and its children with the scene registration container \"so\r\n * we don't have to traverse the tree every frame\". RegisterAudioGeometry\r\n * (cpp:3572-3575) is audio-engine-owned and unported. Gate m_display. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display)\r\n {\r\n if (this.lights.length)\r\n {\r\n registry.RegisterComponent(EveComponentType.LightOwner, this);\r\n }\r\n\r\n if (ShouldReflect(this.reflectionMode))\r\n {\r\n registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);\r\n }\r\n\r\n if (this.castShadow)\r\n {\r\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\r\n }\r\n\r\n for (const child of this.effectChildren)\r\n {\r\n child?.Register?.(registry);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.Register?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveSpaceObject2::UnRegisterComponents (cpp:3615-3638): forwards\r\n * the un-registration to the children only - EveEntity::UnRegister already\r\n * called UnRegisterAllComponents(this) first (EveEntity.cpp:90) - and does\r\n * not re-check display. UnregisterAudioGeometry (cpp:3617) is\r\n * audio-engine-owned and unported. */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n for (const child of this.effectChildren)\r\n {\r\n child?.UnRegister?.(registry);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.UnRegister?.(registry);\r\n }\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n DisplayChildren()\r\n {\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetObserverTransform()\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform()\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldPosition()\r\n {\r\n return this.worldPosition;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldRotation()\r\n {\r\n return this.worldRotation;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n FindSoundEmitter(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const observer of this.observers)\r\n {\r\n if (observer?.name === target)\r\n {\r\n return typeof observer.GetObserver === \"function\"\r\n ? observer.GetObserver()\r\n : observer.observer ?? null;\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n const emitter = child?.FindSoundEmitter?.(target);\r\n if (emitter)\r\n {\r\n return emitter;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetMute(mute)\r\n {\r\n this.mute = !!mute;\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetMute?.(this.mute);\r\n }\r\n for (const observer of this.observers)\r\n {\r\n observer?.SetMute?.(this.mute);\r\n }\r\n }\r\n\r\n /**\r\n * Plays an animation with explicit loop, start, and speed settings\r\n * (Carbon PlayAnimationEx, MAP_METHOD_AND_WRAP_OPTIONAL_ARGS).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n PlayAnimationEx(animName, loopCount, start, speed, clearWhenDone = true)\r\n {\r\n this.#PlayAnimation(animName, true, loopCount, start, speed, clearWhenDone);\r\n }\r\n\r\n /**\r\n * Calculates the skinned bounding box under a transform (CMF path: the\r\n * local box corners transformed with perspective divide). The granny path\r\n * is unported. Returns an inverted-empty { min, max } box when dynamic\r\n * bounds are disabled, as Carbon's BoundingBoxInitialize does.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CalculateSkinnedBoundingBoxFromTransform(transform)\r\n {\r\n const min = vec3.fromValues(Infinity, Infinity, Infinity);\r\n const max = vec3.fromValues(-Infinity, -Infinity, -Infinity);\r\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.())\r\n {\r\n const { min: localMin, max: localMax } = this.GetLocalBoundingBox();\r\n const corner = vec3.create();\r\n for (let index = 0; index < 8; index++)\r\n {\r\n vec3.set(\r\n corner,\r\n index & 1 ? localMax[0] : localMin[0],\r\n index & 2 ? localMax[1] : localMin[1],\r\n index & 4 ? localMax[2] : localMin[2]\r\n );\r\n vec3.transformMat4(corner, corner, transform);\r\n vec3.min(min, min, corner);\r\n vec3.max(max, max, corner);\r\n }\r\n }\r\n return { min, max };\r\n }\r\n\r\n /**\r\n * Calculates the skinned bounding sphere (CMF path: the current bounding\r\n * sphere; granny path unported). Returns (0,0,0,-1) when dynamic bounds\r\n * are disabled.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CalculateSkinnedBoundingSphere(out = vec4.create())\r\n {\r\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.())\r\n {\r\n const center = this.GetBoundingSphereCenter();\r\n return vec4.set(out, center[0], center[1], center[2], this.GetBoundingSphereRadius());\r\n }\r\n return vec4.set(out, 0, 0, 0, -1);\r\n }\r\n\r\n /**\r\n * Clears all impact and damage effects on the impact overlay.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearImpactDamage()\r\n {\r\n this.impactOverlay?.Clear?.();\r\n }\r\n\r\n /**\r\n * Clears all animations on the animation updater.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearAnimations()\r\n {\r\n this.animationUpdater?.ClearAnimations?.();\r\n }\r\n\r\n /**\r\n * Creates an impact facing a position on the closest facing damage locator.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CreateImpactFromPosition(position, direction, lifeTime, size)\r\n {\r\n const closestDamageLocator = this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\r\n return this.CreateImpact(closestDamageLocator, direction, lifeTime, size);\r\n }\r\n\r\n /**\r\n * Creates an impact effect on a damage locator through the impact overlay.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CreateImpact(damageLocatorIndex, direction, lifeTime, size)\r\n {\r\n if (this.impactOverlay)\r\n {\r\n return this.impactOverlay.CreateImpact?.(damageLocatorIndex, direction, lifeTime, size, 1, this.lodLevel, this) ?? -1;\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Ends the current animation on the animation updater.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n EndAnimation()\r\n {\r\n this.animationUpdater?.EndAnimation?.();\r\n }\r\n\r\n /**\r\n * Freezes LOD selection at the current mesh and marks decal geometry\r\n * frozen.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n FreezeHighDetailMesh()\r\n {\r\n this.#allowLodSelection = false;\r\n for (const decal of this.decals)\r\n {\r\n decal?.SetHighDetailDecalState?.(true);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the number of damage locators on this object.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocatorCount()\r\n {\r\n return this.GetLocatorCount(EveSpaceObject2.#damageLocatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the number of locators in a named locator set.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorCount(locatorSetName)\r\n {\r\n return this.#GetLocatorsForSet(locatorSetName)?.length ?? 0;\r\n }\r\n\r\n /**\r\n * Gets the first locator list whose set has the requested Carbon name.\r\n * The returned list remains owned by the locator set.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorsForSet(locatorSetName)\r\n {\r\n return this.#GetLocatorsForSet(locatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the closest locator in a set to a world position, ignoring locator\r\n * facing. Returns -1 when the set is missing or empty.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetCloseLocatorIndex(position, locatorSetName)\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (!locators)\r\n {\r\n return -1;\r\n }\r\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\r\n const locatorPosition = vec3.create();\r\n const locatorDirection = vec3.create();\r\n let closestLength = Infinity;\r\n let closestIndex = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index]);\r\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\r\n if (distance < closestLength)\r\n {\r\n closestIndex = index;\r\n closestLength = distance;\r\n }\r\n }\r\n return closestIndex;\r\n }\r\n\r\n /**\r\n * Carbon's script surface maps GetGoodLocatorIndex to GetCloseLocatorIndex\r\n * (EveSpaceObject2_Blue.cpp); the internal randomized fit heuristic is not\r\n * script-exposed.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetGoodLocatorIndex(position, locatorSetName)\r\n {\r\n return this.GetCloseLocatorIndex(position, locatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the local direction of an indexed damage locator, (0,0,0) for\r\n * indices out of range (Carbon script GetDamageLocatorDirection maps to\r\n * GetDamageLocatorDirectionLocal).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDamageLocatorDirection(index, inWorldSpaceOrOut = vec3.create(), out = vec3.create())\r\n {\r\n const targetableCall = typeof inWorldSpaceOrOut === \"boolean\";\r\n const inWorldSpace = targetableCall && inWorldSpaceOrOut;\r\n if (!targetableCall) out = inWorldSpaceOrOut;\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n vec3.set(out, 0, targetableCall ? 1 : 0, 0);\r\n return targetableCall ? false : out;\r\n }\r\n const position = vec3.create();\r\n this.#GetLocatorInObjectSpace(position, out, locators[index]);\r\n if (inWorldSpace) EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\r\n return targetableCall ? true : out;\r\n }\r\n\r\n /** Internal ITriTargetable locator query, using the org-standard out-last convention. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS keeps output parameters last and returns a validity flag for targetable callers.\")\r\n GetDamageLocatorPosition(index, inWorldSpace, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n if (inWorldSpace) vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\r\n else vec3.set(out, 0, 0, 0);\r\n return false;\r\n }\r\n this.#GetLocatorInObjectSpace(out, EveSpaceObject2.#locatorDirection, locators[index]);\r\n if (inWorldSpace) vec3.transformMat4(out, out, this.worldTransform);\r\n return true;\r\n }\r\n\r\n /** Gets the closest facing damage locator for ITriTargetable consumers. */\r\n @carbon.method\r\n @impl.implemented\r\n GetClosestDamageLocatorIndex(position)\r\n {\r\n return this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\r\n }\r\n\r\n /** Ports Carbon's randomized distance/direction fit for impact variation. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"TriRand is represented by Math.random; all locator scoring remains source-faithful.\")\r\n GetGoodDamageLocatorIndex(position)\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators) return 0;\r\n\r\n const objectPosition = vec3.transformMat4(EveSpaceObject2.#objectPosition, position, this.inverseWorldTransform);\r\n let minDistance = Infinity;\r\n let maxDistance = Number.MIN_VALUE;\r\n let bestDirectionFit = 0;\r\n\r\n for (const locator of locators)\r\n {\r\n this.#GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locator);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\r\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\r\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\r\n minDistance = Math.min(minDistance, distance);\r\n maxDistance = Math.max(maxDistance, distance);\r\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\r\n bestDirectionFit = Math.max(bestDirectionFit, EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset));\r\n }\r\n\r\n const desiredFit = Math.random() * (0.25 - (1 - bestDirectionFit)) + 0.75;\r\n let bestFit = 1;\r\n let bestLocator = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locators[index]);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\r\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\r\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\r\n const range = maxDistance - minDistance;\r\n let scale = range > 0 ? 1 - (distance - minDistance) / range : 1;\r\n let value = 2 * scale - 1;\r\n value = value < 0 ? 1 - Math.sqrt(Math.abs(value)) : Math.sqrt(Math.abs(value)) + 1;\r\n value *= 0.5;\r\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\r\n value *= EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset);\r\n const fit = Math.abs(value - desiredFit);\r\n if (fit < bestFit)\r\n {\r\n bestFit = fit;\r\n bestLocator = index;\r\n }\r\n }\r\n return bestLocator < 0 ? this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName) : bestLocator;\r\n }\r\n\r\n /** Gets the model-scaled target radius. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRadius()\r\n {\r\n return this.GetBoundingSphereRadius();\r\n }\r\n\r\n /** Computes a miss point just outside the model silhouette. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMissPosition(hit, source, out = vec3.create())\r\n {\r\n if (this.boundingSphereRadius > 0)\r\n {\r\n vec3.copy(out, this.modelWorldPosition);\r\n if (hit && source)\r\n {\r\n vec3.subtract(EveSpaceObject2.#missOffset, hit, out);\r\n vec3.subtract(EveSpaceObject2.#missDirection, hit, source);\r\n const directionLength = vec3.length(EveSpaceObject2.#missDirection);\r\n if (directionLength) vec3.scale(EveSpaceObject2.#missDirection, EveSpaceObject2.#missDirection, 1 / directionLength);\r\n vec3.scaleAndAdd(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, EveSpaceObject2.#missDirection, -vec3.dot(EveSpaceObject2.#missDirection, EveSpaceObject2.#missOffset));\r\n const offsetLength = vec3.length(EveSpaceObject2.#missOffset);\r\n if (offsetLength) vec3.scale(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, 1 / offsetLength);\r\n vec3.scaleAndAdd(out, out, EveSpaceObject2.#missOffset, this.GetBoundingSphereRadius() * 1.125);\r\n }\r\n }\r\n else\r\n {\r\n this.GetDamageLocatorPosition(-1, true, out);\r\n }\r\n return out;\r\n }\r\n\r\n /** Gets the current target impact material. */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactConfiguration()\r\n {\r\n return this.impactOverlay?.GetImpactConfiguration?.() ?? ImpactConfiguration.IMPACT_INVALID;\r\n }\r\n\r\n /** Reports whether impacts currently use the authored shield ellipsoid. */\r\n @carbon.method\r\n @impl.implemented\r\n HasImpactConfigurationShield()\r\n {\r\n return !!this.impactOverlay?.HasShieldEllipsoid?.()\r\n && this.GetImpactConfiguration() === ImpactConfiguration.IMPACT_SHIELD;\r\n }\r\n\r\n /** Resolves a shield-ray or damage-locator collision point. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses an out-last signature; the ellipsoid intersection is otherwise source-faithful CPU math.\")\r\n GetImpactPosition(locator, posPrev, posNow, epsilon, out = vec3.create())\r\n {\r\n if (!this.HasImpactConfigurationShield())\r\n {\r\n this.GetDamageLocatorPosition(locator, true, out);\r\n return vec3.squaredDistance(posNow, out) < Number(epsilon);\r\n }\r\n\r\n vec3.transformMat4(EveSpaceObject2.#rayOrigin, posPrev, this.inverseWorldTransform);\r\n vec3.transformMat4(EveSpaceObject2.#rayEnd, posNow, this.inverseWorldTransform);\r\n vec3.subtract(EveSpaceObject2.#rayDirection, EveSpaceObject2.#rayEnd, EveSpaceObject2.#rayOrigin);\r\n this.#GetShapeEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii);\r\n const t = EveSpaceObject2.#IntersectEllipsoidRay(out, EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayOrigin, EveSpaceObject2.#rayDirection);\r\n if (t !== null && t >= -1 && t <= 1)\r\n {\r\n vec3.transformMat4(out, out, this.worldTransform);\r\n return true;\r\n }\r\n if (EveSpaceObject2.#IsPointInsideEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayEnd))\r\n {\r\n vec3.copy(out, posNow);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Updates an existing impact overlay entry. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateImpact(out, direction, impactIndex)\r\n {\r\n return this.impactOverlay?.UpdateImpact?.(out, direction, impactIndex) ?? false;\r\n }\r\n\r\n /**\r\n * Gets the local position of an indexed damage locator, (0,0,0) for\r\n * indices out of range.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocator(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n return out;\r\n }\r\n\r\n /**\r\n * Gets the world-space position of an indexed damage locator, (0,0,0) for\r\n * indices out of range (returned untransformed, as Carbon does).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetTransformedDamageLocator(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n return vec3.transformMat4(out, out, this.worldTransform);\r\n }\r\n\r\n /**\r\n * Checks whether this object is in impostor mode. The impostor system that\r\n * raises the flag is unported, so this reports the default until then.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n IsImpostor()\r\n {\r\n return this.#impostorMode;\r\n }\r\n\r\n /**\r\n * Gets a locator position from a named set. Out-of-range or missing-set\r\n * queries return the world translation in world space and (0,0,0) in\r\n * object space, as Carbon does.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorPositionFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (index < 0 || !locators || index >= locators.length)\r\n {\r\n if (inWorldSpace)\r\n {\r\n return vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\r\n }\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n if (inWorldSpace)\r\n {\r\n vec3.transformMat4(out, out, this.worldTransform);\r\n }\r\n return out;\r\n }\r\n\r\n /**\r\n * Gets a locator direction from a named set. Out-of-range or missing-set\r\n * queries return (0,1,0), as Carbon does.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorRotationFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (index < 0 || !locators || index >= locators.length)\r\n {\r\n return vec3.set(out, 0, 1, 0);\r\n }\r\n const position = vec3.create();\r\n this.#GetLocatorInObjectSpace(position, out, locators[index]);\r\n if (inWorldSpace)\r\n {\r\n EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\r\n }\r\n return out;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n HandleControllerEvent(name)\r\n {\r\n const eventName = String(name ?? \"\");\r\n for (const controller of this.controllers)\r\n {\r\n controller?.HandleEvent?.(eventName);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.HandleControllerEvent?.(eventName);\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.HandleControllerEvent?.(eventName);\r\n }\r\n }\r\n\r\n /**\r\n * Plays an animation once, replacing the current one\r\n * (Carbon script PlayAnimation maps to PlayAnimationOnce).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n PlayAnimation(animName)\r\n {\r\n this.#PlayAnimation(animName, true, 1, 0, 1, true);\r\n }\r\n\r\n /**\r\n * Chains an animation once after the current one (Carbon ChainAnimation).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChainAnimation(animName)\r\n {\r\n this.#PlayAnimation(animName, false, 1, 0, 1, true);\r\n }\r\n\r\n /**\r\n * Chains an animation with explicit loop, start, and speed settings\r\n * (Carbon ChainAnimationEx).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChainAnimationEx(animName, loopCount, start, speed)\r\n {\r\n this.#PlayAnimation(animName, false, loopCount, start, speed, true);\r\n }\r\n\r\n // Carbon EveSpaceObject2::PlayAnimation: every playback wrapper funnels\r\n // into the animation updater, which owns playback state; a missing updater\r\n // is a Carbon-faithful no-op.\r\n #PlayAnimation(animName, replace, loopCount, delay, speed, clearWhenDone)\r\n {\r\n this.animationUpdater?.PlayAnimation?.(String(animName ?? \"\"), replace, loopCount, delay, speed, clearWhenDone);\r\n }\r\n\r\n /**\r\n * Recalculates the authored bounding sphere from the mesh geometry\r\n * resource. Fails when no mesh or ready geometry resource is attached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n RebuildBoundingSphereInformation()\r\n {\r\n const mesh = this.mesh;\r\n if (!mesh)\r\n {\r\n return false;\r\n }\r\n const geometryRes = mesh.GetGeometryResource?.();\r\n if (!geometryRes || !geometryRes.IsGood?.())\r\n {\r\n return false;\r\n }\r\n geometryRes.RecalculateBoundingSphere?.();\r\n const sphere = vec4.create();\r\n geometryRes.GetBoundingSphere?.(mesh.GetMeshIndex?.() ?? 0, sphere);\r\n vec3.set(this.boundingSphereCenter, sphere[0], sphere[1], sphere[2]);\r\n this.boundingSphereRadius = sphere[3];\r\n return true;\r\n }\r\n\r\n /** Sets Carbon's authored local bounding sphere from a sph3-compatible value. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's CcpMath::Sphere is represented by core-math sph3; object-shaped center/radius input is accepted at adapter boundaries.\")\r\n SetBoundingSphereInformation(sphere)\r\n {\r\n if (sphere?.center)\r\n {\r\n vec3.copy(this.boundingSphereCenter, sphere.center);\r\n this.boundingSphereRadius = Number(sphere.radius);\r\n }\r\n else\r\n {\r\n this.boundingSphereRadius = sph3.extract(sphere, this.boundingSphereCenter);\r\n }\r\n this.UpdateWorldBounds();\r\n return this;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetControllerVariables()\r\n {\r\n return Object.fromEntries(this.#controllerVariables);\r\n }\r\n\r\n /** Gets Carbon's most recently selected geometry LOD. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Geometry resources without multi-LOD support expose their sole browser LOD as index zero.\")\r\n GetLastUsedMeshLod()\r\n {\r\n const geometryResource = this.mesh?.GetGeometryResource?.();\r\n if (!geometryResource) return -1;\r\n if (!this.#allowLodSelection) return 0;\r\n return geometryResource.GetLodIndexForScreenSize?.(this.mesh?.GetMeshIndex?.() ?? 0, this.#meshScreenSize) ?? 0;\r\n }\r\n\r\n /**\r\n * Gets a named locator's transform (Carbon script GetLocatorTransform maps\r\n * to GetEveLocatorTransform): the identity for unknown names, the animated\r\n * bone world transform when the animation updater resolves the name, else\r\n * the authored locator transform.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLocatorTransform(name, out = mat4.create())\r\n {\r\n const target = String(name ?? \"\");\r\n let locator = null;\r\n for (const candidate of this.locators)\r\n {\r\n if (candidate?.GetName?.() === target)\r\n {\r\n locator = candidate;\r\n break;\r\n }\r\n }\r\n if (!locator)\r\n {\r\n return mat4.identity(out);\r\n }\r\n if (this.animationUpdater?.GetBoneWorldTransform?.(target, out))\r\n {\r\n return out;\r\n }\r\n return mat4.copy(out, locator.GetTransform());\r\n }\r\n\r\n /**\r\n * Gets the local axis-aligned bounding box: dynamic skinned bounds when\r\n * enabled, else the mesh box, else the cached box (at worst it lags one\r\n * frame). With out arguments it fills them and returns true; without, it\r\n * returns { min, max }.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLocalBoundingBox(minBounds, maxBounds)\r\n {\r\n const min = vec3.create();\r\n const max = vec3.create();\r\n const updater = this.animationUpdater;\r\n if (this.dynamicBoundingSphereEnabled && updater?.IsInitialized?.())\r\n {\r\n const sphere = vec4.create();\r\n updater.GetDynamicBounds?.(sphere, min, max);\r\n vec3.copy(this.#localAabbMin, min);\r\n vec3.copy(this.#localAabbMax, max);\r\n }\r\n else if (this.mesh?.GetBoundingBox?.(min, max))\r\n {\r\n vec3.copy(this.#localAabbMin, min);\r\n vec3.copy(this.#localAabbMax, max);\r\n }\r\n else\r\n {\r\n vec3.copy(min, this.#localAabbMin);\r\n vec3.copy(max, this.#localAabbMax);\r\n }\r\n if (minBounds && maxBounds)\r\n {\r\n vec3.copy(minBounds, min);\r\n vec3.copy(maxBounds, max);\r\n return true;\r\n }\r\n return { min, max };\r\n }\r\n\r\n /** Gets Carbon's cached local box transformed into a world-axis-aligned box. */\r\n @carbon.method\r\n @impl.adapted\r\n GetWorldBoundingBox(minBounds, maxBounds)\r\n {\r\n box3.fromBounds(EveSpaceObject2.#localBox, this.#localAabbMin, this.#localAabbMax);\r\n EveSpaceObject2.#TransformBox(EveSpaceObject2.#worldBox, EveSpaceObject2.#localBox, this.worldTransform);\r\n const min = minBounds ?? vec3.create();\r\n const max = maxBounds ?? vec3.create();\r\n vec3.set(min, EveSpaceObject2.#worldBox[0], EveSpaceObject2.#worldBox[1], EveSpaceObject2.#worldBox[2]);\r\n vec3.set(max, EveSpaceObject2.#worldBox[3], EveSpaceObject2.#worldBox[4], EveSpaceObject2.#worldBox[5]);\r\n return minBounds && maxBounds ? true : { min, max };\r\n }\r\n\r\n /** Reports whether the attached mesh has a ready geometry resource. */\r\n @carbon.method\r\n @impl.implemented\r\n IsBoundingBoxReady()\r\n {\r\n const geometryResource = this.mesh?.GetGeometryResource?.();\r\n return !!geometryResource?.IsGood?.();\r\n }\r\n\r\n /**\r\n * Gets Carbon's realized world sphere, optionally accumulated with transform\r\n * and effect children when query is EVE_BOUNDS_WITH_CHILDREN.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBoundingSphere(out = sph3.create(), query = 0)\r\n {\r\n if (!this.UpdateWorldBounds()) return false;\r\n EveSpaceObject2.#SetSphere(out, this.modelWorldPosition, this.#boundingSphereWorldRadius);\r\n if (!query || !this.DisplayChildren()) return true;\r\n for (const child of this.children)\r\n {\r\n if (child?.GetBoundingSphere?.(EveSpaceObject2.#childSphere, query))\r\n {\r\n sph3.union(out, out, EveSpaceObject2.#childSphere);\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n if (child?.GetBoundingSphere?.(EveSpaceObject2.#childSphere, query))\r\n {\r\n sph3.union(out, out, EveSpaceObject2.#childSphere);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Updates Carbon's geometry-derived on-screen pixel diameter. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"TriFrustum is supplied structurally by the active engine; both exact and estimated browser frustum methods are supported.\")\r\n EstimatePixelDiameter(frustum)\r\n {\r\n if (this.mesh?.GetBoundingBox?.(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax))\r\n {\r\n vec3.copy(this.#localAabbMin, EveSpaceObject2.#boundsMin);\r\n vec3.copy(this.#localAabbMax, EveSpaceObject2.#boundsMax);\r\n }\r\n sph3.fromBounds(EveSpaceObject2.#localSphere, this.#localAabbMin, this.#localAabbMax);\r\n sph3.transformMat4(EveSpaceObject2.#worldSphere, EveSpaceObject2.#localSphere, this.worldTransform);\r\n this.estimatedPixelDiameter = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\r\n return this.estimatedPixelDiameter;\r\n }\r\n\r\n /** Reports the result of the latest Carbon visibility update. */\r\n @carbon.method\r\n @impl.implemented\r\n IsInFrustum()\r\n {\r\n return this.#isInFrustum;\r\n }\r\n\r\n /**\r\n * Gets the bounding sphere center, preferring the dynamic skinned sphere\r\n * when one is published.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereCenter(out = vec3.create())\r\n {\r\n if (this.#dynamicBoundingSphere[3] !== -1)\r\n {\r\n return vec3.set(out, this.#dynamicBoundingSphere[0], this.#dynamicBoundingSphere[1], this.#dynamicBoundingSphere[2]);\r\n }\r\n return vec3.copy(out, this.boundingSphereCenter);\r\n }\r\n\r\n /**\r\n * Gets the model-scaled bounding sphere radius, preferring the dynamic\r\n * skinned sphere when one is published.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereRadius()\r\n {\r\n if (this.#dynamicBoundingSphere[3] !== -1)\r\n {\r\n return this.modelScale * this.#dynamicBoundingSphere[3];\r\n }\r\n return this.modelScale * this.boundingSphereRadius;\r\n }\r\n\r\n /**\r\n * Gets the number of mesh-bound bones. Carbon dereferences the animation\r\n * updater unchecked; CarbonEngineJS reports 0 when none is attached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBoneCount()\r\n {\r\n const updater = this.animationUpdater;\r\n if (!updater)\r\n {\r\n return 0;\r\n }\r\n if (updater.IsUsingCMF?.())\r\n {\r\n if (!updater.HasMeshBinding?.())\r\n {\r\n return 0;\r\n }\r\n return updater.GetSkeletonBoneIndices?.().length ?? 0;\r\n }\r\n return updater.GetMeshBindingBoneCount?.() ?? 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetImpactDamageState(shield, armor, hull, doCreateArmorImpacts = true)\r\n {\r\n this.impactOverlay?.SetDamageState?.(shield, armor, hull, doCreateArmorImpacts);\r\n this.SetControllerVariable(\"ShieldDamage\", shield);\r\n this.SetControllerVariable(\"ArmorDamage\", armor);\r\n this.SetControllerVariable(\"HullDamage\", hull);\r\n }\r\n\r\n /**\r\n * Toggles a named impact-overlay animation (boosters, hardeners, ...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetImpactAnimation(name, enable, duration)\r\n {\r\n this.impactOverlay?.ToggleEffect?.(name, enable, duration);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetControllerVariable(name, value)\r\n {\r\n const key = String(name ?? \"\");\r\n const next = Number(value);\r\n this.#controllerVariables.set(key, next);\r\n for (const controller of this.controllers)\r\n {\r\n controller?.SetVariable?.(key, next);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetControllerVariable?.(key, next);\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.SetControllerVariable?.(key, next);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetProceduralContainerVariable(name, value)\r\n {\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetProceduralContainerVariable?.(name, value);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Start?.();\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.StartControllers?.();\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.StartControllers?.();\r\n }\r\n }\r\n\r\n /**\r\n * Applies bone and model transforms to locators and returns\r\n * [position, rotation, boneIndex] tuples, as the Carbon script surface\r\n * does (TransformLocators maps to PyTransformLocators). Accepts either\r\n * locator records ({ position, direction, boneIndex }, Carbon's\r\n * LocatorStructureList shape) or the same [position, rotation, boneIndex]\r\n * tuple shape it returns.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n TransformLocators(locators = [])\r\n {\r\n const result = [];\r\n for (const locator of locators ?? [])\r\n {\r\n const record = Array.isArray(locator)\r\n ? { position: locator[0], rotation: locator[1], boneIndex: locator[2] }\r\n : { position: locator?.position, rotation: locator?.direction ?? locator?.rotation, boneIndex: locator?.boneIndex };\r\n const position = vec3.clone(record.position ?? EveSpaceObject2.#zero);\r\n const rotation = quat.clone(record.rotation ?? EveSpaceObject2.#identityRotation);\r\n const boneIndex = Number(record.boneIndex ?? 0);\r\n this.#TransformLocator(position, rotation, boneIndex);\r\n if (this.modelTranslationCurve || this.modelRotationCurve)\r\n {\r\n this.#ApplyModelTransform(position, rotation);\r\n }\r\n result.push([position, rotation, boneIndex]);\r\n }\r\n return result;\r\n }\r\n\r\n // Carbon Blue TransformLocator: bone-attached records pick up the mesh\r\n // bone matrix; without bone data the authored values pass through.\r\n #TransformLocator(position, rotation, boneIndex)\r\n {\r\n const updater = this.animationUpdater;\r\n if (boneIndex <= 0 || !updater?.IsInitialized?.())\r\n {\r\n return;\r\n }\r\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, boneIndex);\r\n if (!bone)\r\n {\r\n return;\r\n }\r\n vec3.transformMat4(position, position, bone);\r\n const boneRotation = mat4.getRotation(quat.create(), bone);\r\n quat.multiply(rotation, boneRotation, rotation);\r\n }\r\n\r\n // Carbon Blue ApplyModelTransform samples both curves at the Be::Time()\r\n // origin (pure GetValueAt, no playback advance): translation adds, model\r\n // rotation rotates the position and pre-multiplies.\r\n #ApplyModelTransform(position, rotation)\r\n {\r\n if (this.modelTranslationCurve)\r\n {\r\n const translation = vec3.create();\r\n this.modelTranslationCurve.GetValueAt?.(0, translation);\r\n vec3.add(position, position, translation);\r\n }\r\n if (this.modelRotationCurve)\r\n {\r\n const modelRotation = quat.create();\r\n this.modelRotationCurve.GetValueAt?.(0, modelRotation);\r\n vec3.transformQuat(position, position, modelRotation);\r\n quat.multiply(rotation, modelRotation, rotation);\r\n }\r\n }\r\n\r\n // Carbon GetLocatorsForSet: first set matching the name wins.\r\n #GetLocatorsForSet(locatorSetName)\r\n {\r\n const target = String(locatorSetName ?? \"\");\r\n for (const set of this.locatorSets)\r\n {\r\n if (set?.HasName?.(target))\r\n {\r\n return set.GetLocators();\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // Carbon GetLocatorInObjectSpace: the direction is +Y rotated by the\r\n // authored quaternion; bone-attached locators additionally apply the mesh\r\n // bone matrix. Carbon leaves the outputs untouched (caller-uninitialized)\r\n // when bone data is missing; CarbonEngineJS keeps the unskinned values.\r\n #GetLocatorInObjectSpace(outPosition, outDirection, locator)\r\n {\r\n vec3.transformQuat(outDirection, EveSpaceObject2.#unitY, locator.direction);\r\n vec3.copy(outPosition, locator.position);\r\n const updater = this.animationUpdater;\r\n if (locator.boneIndex > 0 && updater?.IsInitialized?.())\r\n {\r\n const boneCount = Number(updater.GetMeshBoneCount?.() ?? 0);\r\n if (locator.boneIndex < boneCount)\r\n {\r\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, locator.boneIndex);\r\n if (bone)\r\n {\r\n vec3.transformMat4(outPosition, locator.position, bone);\r\n EveSpaceObject2.#TransformNormal(outDirection, outDirection, bone);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Carbon GetClosestLocatorIndex: facing-gated closest search; 0 when the\r\n // set is missing, -1 when no locator faces the position.\r\n #GetClosestLocatorIndex(position, locatorSetName)\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (!locators)\r\n {\r\n return 0;\r\n }\r\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\r\n const locatorPosition = vec3.create();\r\n const locatorDirection = vec3.create();\r\n let closestLength = Infinity;\r\n let closestIndex = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index]);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(locatorDirection, posInObjectSpace))\r\n {\r\n continue;\r\n }\r\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\r\n if (distance < closestLength)\r\n {\r\n closestIndex = index;\r\n closestLength = distance;\r\n }\r\n }\r\n return closestIndex;\r\n }\r\n\r\n static #IsLocatorFacingPosition(locatorDirection, posInObjectSpace)\r\n {\r\n const moved = vec3.subtract(vec3.create(), posInObjectSpace, locatorDirection);\r\n return vec3.squaredLength(moved) < vec3.squaredLength(posInObjectSpace);\r\n }\r\n\r\n static #TransformNormal(out, direction, matrix)\r\n {\r\n const x = direction[0];\r\n const y = direction[1];\r\n const z = direction[2];\r\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z;\r\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z;\r\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z;\r\n return out;\r\n }\r\n\r\n #GetShapeEllipsoid(outCenter, outRadii)\r\n {\r\n if (this.shapeEllipsoidRadius[0] > 0)\r\n {\r\n vec3.copy(outCenter, this.shapeEllipsoidCenter);\r\n vec3.copy(outRadii, this.shapeEllipsoidRadius);\r\n }\r\n else\r\n {\r\n const bounds = this.GetLocalBoundingBox(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax);\r\n if (bounds === false)\r\n {\r\n vec3.set(EveSpaceObject2.#boundsMin, -1, -1, -1);\r\n vec3.set(EveSpaceObject2.#boundsMax, 1, 1, 1);\r\n }\r\n vec3.subtract(outRadii, EveSpaceObject2.#boundsMax, EveSpaceObject2.#boundsMin);\r\n vec3.scale(outRadii, outRadii, Math.sqrt(3) * 0.5);\r\n vec3.lerp(outCenter, EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax, 0.5);\r\n }\r\n vec3.copy(this.generatedShapeEllipsoidCenter, outCenter);\r\n vec3.copy(this.generatedShapeEllipsoidRadius, outRadii);\r\n }\r\n\r\n static #GetDirectionFit(v0, v1)\r\n {\r\n const direction = -vec3.dot(v0, v1);\r\n return direction < 0\r\n ? (1 - Math.sqrt(Math.abs(direction))) * 0.5\r\n : (Math.sqrt(Math.abs(direction)) + 1) * 0.5;\r\n }\r\n\r\n static #IntersectEllipsoidRay(out, center, radii, origin, direction)\r\n {\r\n const vx = direction[0] / radii[0];\r\n const vy = direction[1] / radii[1];\r\n const vz = direction[2] / radii[2];\r\n const sx = (origin[0] - center[0]) / radii[0];\r\n const sy = (origin[1] - center[1]) / radii[1];\r\n const sz = (origin[2] - center[2]) / radii[2];\r\n const vv = vx * vx + vy * vy + vz * vz;\r\n if (!(vv > 0)) return null;\r\n const vs = vx * sx + vy * sy + vz * sz;\r\n const ss = sx * sx + sy * sy + sz * sz;\r\n let discriminant = (vs / vv) ** 2 - ss / vv + 1 / vv;\r\n if (discriminant < 0) return null;\r\n discriminant = Math.sqrt(discriminant);\r\n let t = -discriminant - vs / vv;\r\n if (t < 0) t = discriminant - vs / vv;\r\n vec3.scaleAndAdd(out, origin, direction, t);\r\n return t;\r\n }\r\n\r\n static #IsPointInsideEllipsoid(center, radii, point)\r\n {\r\n const x = (point[0] - center[0]) / radii[0];\r\n const y = (point[1] - center[1]) / radii[1];\r\n const z = (point[2] - center[2]) / radii[2];\r\n return x * x + y * y + z * z <= 1;\r\n }\r\n\r\n // Mesh bone matrices come from the animation updater; only mat4-shaped\r\n // entries are usable.\r\n static #GetBoneMatrix(updater, boneIndex)\r\n {\r\n const bones = updater.GetMeshBoneMatrixList?.();\r\n const bone = bones?.[boneIndex];\r\n return bone && bone.length >= 16 ? bone : null;\r\n }\r\n\r\n static #ApplyControllerVariables(target, variables, methodName)\r\n {\r\n const setter = target?.[methodName];\r\n if (typeof setter !== \"function\")\r\n {\r\n return;\r\n }\r\n for (const [name, value] of variables)\r\n {\r\n setter.call(target, name, value);\r\n }\r\n }\r\n\r\n static #UpdateCurve(curve, time, out, fallback)\r\n {\r\n if (!curve)\r\n {\r\n for (let index = 0; index < out.length; index++)\r\n {\r\n out[index] = fallback[index];\r\n }\r\n return out;\r\n }\r\n\r\n let result;\r\n if (typeof curve.Update === \"function\")\r\n {\r\n result = curve.Update(time, out);\r\n }\r\n else if (typeof curve.GetValueAt === \"function\")\r\n {\r\n result = curve.GetValueAt(time, out);\r\n }\r\n if ((Array.isArray(result) || ArrayBuffer.isView(result)) && result !== out)\r\n {\r\n for (let index = 0; index < out.length; index++)\r\n {\r\n out[index] = result[index];\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n static #GetContextValue(context, methodName, ...propertyNames)\r\n {\r\n const method = context?.[methodName];\r\n if (typeof method === \"function\")\r\n {\r\n return Number(method.call(context)) || 0;\r\n }\r\n for (const propertyName of propertyNames)\r\n {\r\n if (context?.[propertyName] !== undefined && context?.[propertyName] !== null)\r\n {\r\n return Number(context[propertyName]) || 0;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n static #GetPixelSize(frustum, sphere)\r\n {\r\n const method = frustum?.GetPixelSizeAccross;\r\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\r\n }\r\n\r\n static #GetEstimatedPixelSize(frustum, sphere)\r\n {\r\n const method = frustum?.GetPixelSizeAccrossEst ?? frustum?.GetPixelSizeAccross;\r\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\r\n }\r\n\r\n static #SetSphere(out, center, radius)\r\n {\r\n return sph3.set(out, center[0], center[1], center[2], radius);\r\n }\r\n\r\n // Avoid box3.transformMat4's legacy all-components-sum empty sentinel: a\r\n // valid symmetric box such as [-1,-1,-1,1,1,1] has that same sum.\r\n static #TransformBox(out, bounds, transform)\r\n {\r\n out[0] = out[1] = out[2] = Infinity;\r\n out[3] = out[4] = out[5] = -Infinity;\r\n for (let index = 0; index < 8; index++)\r\n {\r\n vec3.set(\r\n EveSpaceObject2.#boxCorner,\r\n index & 1 ? bounds[3] : bounds[0],\r\n index & 2 ? bounds[4] : bounds[1],\r\n index & 4 ? bounds[5] : bounds[2]\r\n );\r\n vec3.transformMat4(EveSpaceObject2.#boxCorner, EveSpaceObject2.#boxCorner, transform);\r\n out[0] = Math.min(out[0], EveSpaceObject2.#boxCorner[0]);\r\n out[1] = Math.min(out[1], EveSpaceObject2.#boxCorner[1]);\r\n out[2] = Math.min(out[2], EveSpaceObject2.#boxCorner[2]);\r\n out[3] = Math.max(out[3], EveSpaceObject2.#boxCorner[0]);\r\n out[4] = Math.max(out[4], EveSpaceObject2.#boxCorner[1]);\r\n out[5] = Math.max(out[5], EveSpaceObject2.#boxCorner[2]);\r\n }\r\n return out;\r\n }\r\n\r\n static #zero = Object.freeze([0, 0, 0]);\r\n\r\n static #unitY = Object.freeze([0, 1, 0]);\r\n\r\n static #locatorDirection = vec3.create();\r\n static #locatorPosition = vec3.create();\r\n static #locatorOffset = vec3.create();\r\n static #objectPosition = vec3.create();\r\n static #missOffset = vec3.create();\r\n static #missDirection = vec3.create();\r\n static #rayOrigin = vec3.create();\r\n static #rayEnd = vec3.create();\r\n static #rayDirection = vec3.create();\r\n static #ellipsoidCenter = vec3.create();\r\n static #ellipsoidRadii = vec3.create();\r\n static #boundsMin = vec3.create();\r\n static #boundsMax = vec3.create();\r\n static #childSphere = sph3.create();\r\n static #localSphere = sph3.create();\r\n static #worldSphere = sph3.create();\r\n static #localBox = box3.create();\r\n static #worldBox = box3.create();\r\n static #boxCorner = vec3.create();\r\n\r\n static #identityRotation = Object.freeze([0, 0, 0, 1]);\r\n\r\n static #identityTransform = mat4.create();\r\n\r\n static #damageLocatorSetName = \"damage\";\r\n\r\n static ReflectionMode = ReflectionMode;\r\n\r\n static Tr2Lod = Tr2Lod;\r\n\r\n static ImpactConfiguration = ImpactConfiguration;\r\n\r\n}\r\n"],"names":["TRANSPARENT_AABB_MIN","vec3","create","TRANSPARENT_AABB_MAX","TRANSPARENT_CENTER","OVERLAY_TYPE_OPAQUEONLY","OVERLAY_TYPE_ALL","_EveSpaceObject","_identity","EveSpaceObject2","EveEntity","e","_init_reflectionMode","_init_extra_reflectionMode","_init_effectChildren","_init_extra_effectChildren","_init_children","_init_extra_children","_init_name","_init_extra_name","_init_mute","_init_extra_mute","_init_inheritProperties","_init_extra_inheritProperties","_init_customMasks","_init_extra_customMasks","_init_overlayEffects","_init_extra_overlayEffects","_init_positionDelta","_init_extra_positionDelta","_init_lodLevel","_init_extra_lodLevel","_init_curveSets","_init_extra_curveSets","_init_isPickable","_init_extra_isPickable","_init_estimatedPixelDiameter","_init_extra_estimatedPixelDiameter","_init_estimatedPixelDiameterWithChildren","_init_extra_estimatedPixelDiameterWithChildren","_init_generatedShapeEllipsoidCenter","_init_extra_generatedShapeEllipsoidCenter","_init_generatedShapeEllipsoidRadius","_init_extra_generatedShapeEllipsoidRadius","_init_animationUpdater","_init_extra_animationUpdater","_init_dna","_init_extra_dna","_init_castShadow","_init_extra_castShadow","_init_isAnimated","_init_extra_isAnimated","_init_dynamicBoundingSphereEnabled","_init_extra_dynamicBoundingSphereEnabled","_init_attachments","_init_extra_attachments","_init_decals","_init_extra_decals","_init_lights","_init_extra_lights","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_init_locators","_init_extra_locators","_init_mesh","_init_extra_mesh","_init_impactOverlay","_init_extra_impactOverlay","_init_clipSphereCenter","_init_extra_clipSphereCenter","_init_clipSphereFactor","_init_extra_clipSphereFactor","_init_clipSphereFactor2","_init_extra_clipSphereFactor2","_init_observers","_init_extra_observers","_init_worldPosition","_init_extra_worldPosition","_init_rotationCurve","_init_extra_rotationCurve","_init_worldRotation","_init_extra_worldRotation","_init_modelScale","_init_extra_modelScale","_init_locatorSets","_init_extra_locatorSets","_init_activationStrength","_init_extra_activationStrength","_init_albedoColor","_init_extra_albedoColor","_init_display","_init_extra_display","_init_update","_init_extra_update","_init_secondaryLightingSphereRadius","_init_extra_secondaryLightingSphereRadius","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_dirtLevel","_init_extra_dirtLevel","_init_customShaderData","_init_extra_customShaderData","_init_lastDamageLocatorHit","_init_extra_lastDamageLocatorHit","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_modelWorldPosition","_init_extra_modelWorldPosition","_init_modelTranslationCurve","_init_extra_modelTranslationCurve","_init_modelRotationCurve","_init_extra_modelRotationCurve","_init_shapeEllipsoidCenter","_init_extra_shapeEllipsoidCenter","_init_shapeEllipsoidRadius","_init_extra_shapeEllipsoidRadius","_init_translationCurve","_init_extra_translationCurve","_init_worldTransform","_init_extra_worldTransform","_init_inverseWorldTransform","_init_extra_inverseWorldTransform","_init_lastWorldTransform","_init_extra_lastWorldTransform","_init_worldVelocity","_init_extra_worldVelocity","_init_audioGeometry","_init_extra_audioGeometry","_init_isVisible","_init_extra_isVisible","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","schema","enum","list","string","readwrite","boolean","objectRef","read","float32","quat","color","vec4","mat4","carbon","method","impl","adapted","implemented","reason","notImplemented","reflectionMode","effectChildren","children","name","mute","inheritProperties","customMasks","overlayEffects","positionDelta","lodLevel","curveSets","isPickable","estimatedPixelDiameter","estimatedPixelDiameterWithChildren","generatedShapeEllipsoidCenter","generatedShapeEllipsoidRadius","fromValues","animationUpdater","dna","castShadow","isAnimated","dynamicBoundingSphereEnabled","attachments","decals","lights","externalParameters","controllers","locators","mesh","impactOverlay","clipSphereCenter","clipSphereFactor2","clipSphereFactor","observers","worldPosition","rotationCurve","worldRotation","modelScale","locatorSets","activationStrength","albedoColor","createLinear","display","update","secondaryLightingSphereRadius","boundingSphereCenter","dirtLevel","customShaderData","lastDamageLocatorHit","boundingSphereRadius","modelWorldPosition","modelTranslationCurve","modelRotationCurve","shapeEllipsoidCenter","shapeEllipsoidRadius","translationCurve","worldTransform","inverseWorldTransform","lastWorldTransform","worldVelocity","audioGeometry","isVisible","Map","sph3","set","Tr2Lod","TR2_LOD_UNSPECIFIED","meshLod","Initialize","controller","IsLinked","Link","damageLocatorCount","HasName","length","SetDamageLocatorCount","GetMesh","SetMesh","AddController","push","AddObserver","observer","SetInheritProperties","colorSet","EveChildInheritProperties","SetProperties","#PropagateInheritProperties","properties","GetProperties","child","light","GetEffectChildByName","target","String","GetName","AddToEffectChildrenList","AddLight","ClearLights","RemoveFromEffectChildrenList","index","indexOf","splice","SetModelRotationCurve","curve","GetModelRotationCurve","SetModelTranslationCurve","GetModelTranslationCurve","UpdateWorldTransform","time","nextTime","Number","copy","GetValueDotAt","rotation","clone","modelRotation","multiply","fromQuat","scale","modelTranslation","transformMat4","invert","identity","UpdateWorldBounds","updater","IsInitialized","GetDynamicBounds","UpdateSyncronous","updateContext","observerTransform","GetObserverTransform","Update","EveLODHelper","ShouldUpdate","overlay","params","EveChildUpdateParams","spaceObjectParent","ownerMaxSpeed","maxSpeed","localToWorldTransform","GetLocalToWorldTransform","DisplayChildren","IsAlwaysOn","UpdateAsyncronous","threshold","frequency","Math","min","curveSet","controllerUpdateFrequency","UpdateVisibility","_parentTransform","TR2_LOD_LOW","frustum","GetFrustum","lowThreshold","mediumThreshold","visibilityThreshold","lodFactor","IsSphereVisible","EstimatePixelDiameter","attachment","GetBoundingSphere","TR2_LOD_HIGH","TR2_LOD_MEDIUM","GetObserver","SetVisibility","Infinity","UseWithScreenSize","GetRenderables","out","GetBoundingBox","IsLoading","geometryResource","GetGeometryResource","decal","GetBatches","batches","batchType","perObjectData","renderContext","committedBefore","GetBatchCount","areas","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","GetBatchesFromOverlayVector","#GetSortedTransparentBatches","geometry","viewPosition","GetViewPosition","meshIndex","sorted","area","GetDisplay","GetAreaBoundingBox","GetIndex","add","dx","dy","dz","distance","sort","a","b","entry","GetMaterialInterface","batch","CreateGeometryBatch","Commit","RebuildCachedData","ReleaseCachedData","all","CollectAreaBlocks","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","blocks","TriRenderBatchAreaBlock","Optimize","CollectAreaBlocksWithSharedMaterials","collector","#EnsureCachedAreaBlocks","GetShadowBatches","_shadowPixelSize","committed","material","shaderMaterial","block","areaBlockVector","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","startIndex","count","SetPerObjectData","impactEffect","GetArmorDamageShader","effects","overlayType","effect","#CommitBlockBatch","priority","SetPriority","#OverlayEffectsFor","GetEffects","opaqueEffects","decalEffects","transparentEffects","TRIBATCHTYPE_ADDITIVE","additiveEffects","TRIBATCHTYPE_DISTORTION","distortionEffects","HasTransparentBatches","HasTransparentArea","GetSortValue","x","y","z","hypot","GetPerObjectData","accumulator","data","Allocate","Tr2PerObjectData","object","GetShadowPerObjectData","GetLights","lightManager","SetBrightnessMultiplier","IsCastingShadow","_args","Error","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","LightOwner","ShouldReflect","ReflectionRenderable","ShadowCaster","Register","UnRegisterComponents","UnRegister","GetWorldPosition","GetWorldRotation","FindSoundEmitter","emitter","SetMute","PlayAnimationEx","animName","loopCount","start","speed","clearWhenDone","CalculateSkinnedBoundingBoxFromTransform","transform","max","IsUsingCMF","localMin","localMax","GetLocalBoundingBox","corner","CalculateSkinnedBoundingSphere","center","GetBoundingSphereCenter","GetBoundingSphereRadius","ClearImpactDamage","Clear","ClearAnimations","CreateImpactFromPosition","position","direction","lifeTime","size","closestDamageLocator","CreateImpact","damageLocatorIndex","EndAnimation","FreezeHighDetailMesh","SetHighDetailDecalState","GetDamageLocatorCount","GetLocatorCount","locatorSetName","GetLocatorsForSet","GetCloseLocatorIndex","posInObjectSpace","locatorPosition","locatorDirection","closestLength","closestIndex","squaredDistance","GetGoodLocatorIndex","GetDamageLocatorDirection","inWorldSpaceOrOut","targetableCall","inWorldSpace","GetDamageLocatorPosition","GetClosestDamageLocatorIndex","GetGoodDamageLocatorIndex","objectPosition","minDistance","maxDistance","MIN_VALUE","bestDirectionFit","locator","subtract","desiredFit","random","bestFit","bestLocator","range","value","sqrt","abs","fit","GetRadius","GetMissPosition","hit","source","directionLength","scaleAndAdd","dot","offsetLength","GetImpactConfiguration","ImpactConfiguration","IMPACT_INVALID","HasImpactConfigurationShield","HasShieldEllipsoid","IMPACT_SHIELD","GetImpactPosition","posPrev","posNow","epsilon","t","UpdateImpact","impactIndex","GetDamageLocator","GetTransformedDamageLocator","IsImpostor","GetLocatorPositionFromSet","GetLocatorRotationFromSet","HandleControllerEvent","eventName","HandleEvent","PlayAnimation","ChainAnimation","ChainAnimationEx","#PlayAnimation","replace","delay","RebuildBoundingSphereInformation","geometryRes","IsGood","RecalculateBoundingSphere","sphere","GetMeshIndex","SetBoundingSphereInformation","radius","extract","GetControllerVariables","Object","fromEntries","GetLastUsedMeshLod","GetLodIndexForScreenSize","GetLocatorTransform","candidate","GetBoneWorldTransform","GetTransform","minBounds","maxBounds","GetWorldBoundingBox","box3","fromBounds","IsBoundingBoxReady","query","union","IsInFrustum","GetBoneCount","HasMeshBinding","GetSkeletonBoneIndices","GetMeshBindingBoneCount","SetImpactDamageState","shield","armor","hull","doCreateArmorImpacts","SetDamageState","SetControllerVariable","SetImpactAnimation","enable","duration","ToggleEffect","key","next","SetVariable","SetProceduralContainerVariable","StartControllers","Start","TransformLocators","result","record","Array","isArray","boneIndex","#TransformLocator","bone","boneRotation","getRotation","#ApplyModelTransform","translation","GetValueAt","transformQuat","#GetLocatorsForSet","GetLocators","#GetLocatorInObjectSpace","outPosition","outDirection","boneCount","GetMeshBoneCount","#GetClosestLocatorIndex","#GetShapeEllipsoid","outCenter","outRadii","bounds","lerp","#IsLocatorFacingPosition","moved","squaredLength","#TransformNormal","matrix","#GetDirectionFit","v0","v1","#IntersectEllipsoidRay","radii","origin","vx","vy","vz","sx","sy","sz","vv","vs","ss","discriminant","#IsPointInsideEllipsoid","point","#GetBoneMatrix","bones","GetMeshBoneMatrixList","#ApplyControllerVariables","variables","methodName","setter","call","#UpdateCurve","fallback","ArrayBuffer","isView","#GetContextValue","context","propertyNames","propertyName","undefined","#GetPixelSize","GetPixelSizeAccross","#GetEstimatedPixelSize","GetPixelSizeAccrossEst","#SetSphere","#TransformBox","freeze","ReflectionMode","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveSpaceObject2.js","sources":["../../../../src/eve/spaceObject/EveSpaceObject2.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2.h\n// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2.cpp\n// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2_Blue.cpp\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { EveEntity } from \"../EveEntity.js\";\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\nimport { EveChildInheritProperties } from \"../child/EveChildInheritProperties.js\";\nimport { box3 } from \"@carbonenginejs/runtime-utils/box3\";\nimport { mat4 } from \"@carbonenginejs/runtime-utils/mat4\";\nimport { quat } from \"@carbonenginejs/runtime-utils/quat\";\nimport { sph3 } from \"@carbonenginejs/runtime-utils/sph3\";\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\nimport { vec4 } from \"@carbonenginejs/runtime-utils/vec4\";\nimport { ReflectionMode } from \"../../generated/eve/enums.js\";\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\nimport { ImpactConfiguration } from \"../../generated/include/enums.js\";\nimport { EveLODHelper, Tr2Lod } from \"../EveLODHelper.js\";\nimport { TriBatchType } from \"@carbonenginejs/runtime-utils/graphics\";\nimport { MatrixCopyFrom3x4 } from \"../lights/lightConversion.js\";\nimport { getBoneList } from \"../../trinityCore/Tr2GrannyAnimation.js\";\nimport { Tr2PerObjectData } from \"../../trinityCore/Tr2PerObjectData.js\";\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock } from \"../../trinityCore/Tr2RenderBatch.js\";\nimport { RawData } from \"../../trinityCore/rawData/RawData.js\";\nimport { TR2_PICK_TYPE_DEFAULT, Tr2PickType } from \"../../trinityCore/Tr2PickType.js\";\nimport { IEveSpaceObject2ParentData } from \"./IEveSpaceObject2ParentData.js\";\nimport { EveCustomMask } from \"../EveCustomMask.js\";\n\n// Static scratch for the sorted-transparent area pass (allocation rules: hot\n// per-frame path, copy-into, never allocate per call).\nconst TRANSPARENT_AABB_MIN = vec3.create();\nconst TRANSPARENT_AABB_MAX = vec3.create();\nconst TRANSPARENT_CENTER = vec3.create();\n\n// Carbon EveMeshOverlayEffect::OverlayType (EveMeshOverlayEffect.h:35-41).\nconst OVERLAY_TYPE_OPAQUEONLY = 0;\nconst OVERLAY_TYPE_ALL = 1;\n\n/**\n * The hull of an EVE space object - its mesh, locators, locator sets, decals,\n * attachments, lights, effect children, overlay effects, impact overlay and\n * controllers - together with the curve-driven world transform, visibility, LOD\n * and batch submission that drive them each frame.\n */\n@type.define({ className: \"EveSpaceObject2\", family: \"eve/spaceObject\" })\nexport class EveSpaceObject2 extends EveEntity\n{\n\n /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */\n @io.notify\n @io.persist\n @type.int32\n @schema.enum(\"ReflectionMode\")\n reflectionMode = 3;\n\n /** m_effectChildren (PIEveSpaceObjectChildVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObjectChild\")\n effectChildren = [];\n\n /** m_children (PIEveTransformVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveTransform\")\n children = [];\n\n /** m_name (std::string) [READWRITE, NOTIFY, PERSIST] */\n @io.notify\n @io.persist\n @type.string\n name = \"\";\n\n /** m_mute (bool) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.boolean\n mute = false;\n\n /** m_inheritProperties (EveChildInheritPropertiesPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"EveChildInheritProperties\")\n inheritProperties = null;\n\n /** m_customMasks (PEveCustomMaskVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveCustomMask\")\n customMasks = [];\n\n /** m_overlayEffects (PEveMeshOverlayEffectVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveMeshOverlayEffect\")\n overlayEffects = [];\n\n /** m_positionDelta (Tr2BindingVector3Ptr) [READ] */\n @io.read\n @type.objectRef(\"Tr2BindingVector3\")\n positionDelta = null;\n\n /** m_lodLevel (Tr2Lod - enum Tr2Lod) [READ] */\n @io.read\n @type.int32\n @schema.enum(\"Tr2Lod\")\n lodLevel = -1;\n\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"TriCurveSet\")\n curveSets = [];\n\n /** m_isPickable (bool) [READWRITE] */\n @io.readwrite\n @type.boolean\n isPickable = true;\n\n /** m_estimatedPixelDiameter (float) [READ] */\n @io.read\n @type.float32\n estimatedPixelDiameter = 0;\n\n /** m_estimatedPixelDiameterWithChildren (float) [READ] */\n @io.read\n @type.float32\n estimatedPixelDiameterWithChildren = 0;\n\n /** m_generatedShapeEllipsoidCenter (Vector3) [READ] */\n @io.read\n @type.vec3\n generatedShapeEllipsoidCenter = vec3.create();\n\n /** m_generatedShapeEllipsoidRadius (Vector3) [READ] */\n @io.read\n @type.vec3\n generatedShapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\n\n /** m_animationUpdater (Tr2GrannyAnimationPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2GrannyAnimation\")\n animationUpdater = null;\n\n /** m_dna (std::string) [READ, PERSIST] */\n @io.persist\n @type.string\n dna = \"\";\n\n /** m_castShadow (bool) [READWRITE, NOTIFY, PERSIST] */\n @io.notify\n @io.persist\n @type.boolean\n castShadow = false;\n\n /** m_isAnimated (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n isAnimated = false;\n\n /** m_dynamicBoundingSphereEnabled (bool) [READ, PERSIST] */\n @io.persist\n @type.boolean\n dynamicBoundingSphereEnabled = false;\n\n /** m_attachments (PIEveSpaceObjectAttachmentVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObjectAttachment\")\n attachments = [];\n\n /** m_decals (PEveSpaceObjectDecalVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveSpaceObjectDecal\")\n decals = [];\n\n /** m_lights (PTr2LightVector) [READ, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.list(\"Tr2Light\")\n lights = [];\n\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"Tr2ExternalParameter\")\n externalParameters = [];\n\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"ITr2Controller\")\n controllers = [];\n\n /** m_locators (PEveLocator2Vector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveLocator2\")\n locators = [];\n\n /** m_mesh (Tr2MeshBasePtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"Tr2MeshBase\")\n mesh = null;\n\n /** m_impactOverlay (EveImpactOverlayPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"EveImpactOverlay\")\n impactOverlay = null;\n\n /** m_clipSphereCenter (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n clipSphereCenter = vec3.create();\n\n /** m_clipSphereFactor2 (float) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.float32\n clipSphereFactor2 = 0;\n\n /** m_clipSphereFactor (float) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.float32\n clipSphereFactor = 0;\n\n /** m_observers (PTriObserverLocalVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"TriObserverLocal\")\n observers = [];\n\n /** m_worldPosition (Vector3) [READ] */\n @io.read\n @type.vec3\n worldPosition = vec3.create();\n\n /** m_ballRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"ITriQuaternionFunction\")\n rotationCurve = null;\n\n /** m_worldRotation (Quaternion) [READ] */\n @io.read\n @type.quat\n worldRotation = quat.create();\n\n /** m_modelScale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n modelScale = 1;\n\n /** m_locatorSets (PEveLocatorSetsVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveLocatorSets\")\n locatorSets = [];\n\n /** m_activationStrength (float) [READWRITE] */\n @io.readwrite\n @type.float32\n activationStrength = 1;\n\n /** m_albedoColor (Color) [READWRITE] */\n @io.readwrite\n @type.color\n albedoColor = vec4.createLinear();\n\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.boolean\n display = true;\n\n /** m_update (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n update = true;\n\n /** m_secondaryLightingSphereRadius (float) [READ] */\n @io.read\n @type.float32\n secondaryLightingSphereRadius = 0;\n\n /** m_boundingSphereCenter (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n boundingSphereCenter = vec3.create();\n\n /** m_dirtLevel (float) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.float32\n dirtLevel = 0;\n\n /** m_psData.customData (Vector4) [READWRITE] - script/SOF-driven custom shader data. */\n @io.readwrite\n @type.vec4\n customShaderData = vec4.create();\n\n /**\n * m_spaceObjectShipData (Vector4) [READ] - the packed shader ship data:\n * .y activation strength, .z dirt level, .w bounding-sphere radius\n * (PrepareShaderData, cpp:734-744). .x is authored elsewhere and left alone.\n */\n @io.read\n @type.vec4\n spaceObjectShipData = vec4.create();\n\n /** m_lastDamageLocatorHit (int) [READ] */\n @io.read\n @type.int32\n lastDamageLocatorHit = -1;\n\n /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n boundingSphereRadius = -1;\n\n /** m_boundingSphereWorldCenter (Vector3) [READ] */\n @io.read\n @type.vec3\n modelWorldPosition = vec3.create();\n\n /** m_modelTranslation (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"ITriVectorFunction\")\n modelTranslationCurve = null;\n\n /** m_modelRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"ITriQuaternionFunction\")\n modelRotationCurve = null;\n\n /** m_shapeEllipsoidCenter (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n shapeEllipsoidCenter = vec3.create();\n\n /** m_shapeEllipsoidRadius (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n shapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\n\n /** m_ballPosition (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"ITriVectorFunction\")\n translationCurve = null;\n\n @io.read\n @type.mat4\n worldTransform = mat4.create();\n\n @io.read\n @type.mat4\n inverseWorldTransform = mat4.create();\n\n @io.read\n @type.mat4\n lastWorldTransform = mat4.create();\n\n @io.read\n @type.vec3\n worldVelocity = vec3.create();\n\n @io.readwrite\n @type.objectRef(\"ITr2AudGeometry\")\n audioGeometry = null;\n\n @type.boolean\n isVisible = false;\n\n #controllerVariables = new Map([\n [\"DirtLevel\", 0],\n [\"ActivationStrength\", 1],\n [\"ShieldDamage\", 1],\n [\"ArmorDamage\", 1],\n [\"HullDamage\", 1],\n [\"ClipSphereFactor\", 0],\n [\"ClipSphereFactor2\", 0]\n ]);\n\n #lastUpdateTransformTime = null;\n\n // Carbon m_lastCurveUpdateTime: stamped by the sync-side LOD gate; the async\n // side updates curve sets only when it matches the frame time.\n #lastCurveUpdateTime = 0;\n\n // Carbon m_dynamicBoundingSphere: disabled while w is -1; a future animation\n // updater port publishes skinned bounds here.\n #dynamicBoundingSphere = sph3.set(sph3.create(), 0, 0, 0, -1);\n\n // Carbon keeps the realized world sphere separate from the authored local\n // sphere. It is refreshed by UpdateWorldBounds after transform changes.\n #boundingSphereWorldRadius = -1;\n\n // Carbon visibility and mesh LOD state are runtime-only renderer results.\n #isInFrustum = false;\n\n #isMeshVisible = false;\n\n #lodLevelWithChildren = Tr2Lod.TR2_LOD_UNSPECIFIED;\n\n #meshScreenSize = 0;\n\n #overlayMeshAreaBlocks = [ [], [] ];\n\n #shadowMeshOpaqueAreas = [];\n\n #cachedAreaBlocksBuilt = false;\n\n // Carbon m_localAabbMin/Max: cached so GetLocalBoundingBox can answer before\n // LOD selection assigns a mesh (at worst it lags one frame).\n #localAabbMin = vec3.create();\n\n #localAabbMax = vec3.create();\n\n // Carbon m_allowLodSelection: cleared by FreezeHighDetailMesh.\n #allowLodSelection = true;\n\n // Carbon m_impostorMode: the impostor system that raises it is unported.\n #impostorMode = false;\n\n /** EVE_SPACEOBJECT_CUSTOWMASK_MAX (EveSpaceObject2.h:49) - custom-mask slots. */\n static CUSTOM_MASK_MAX = EveCustomMask.CUSTOM_MASK_COUNT;\n\n /**\n * Carbon g_secondaryLightingRadiusCutoffFactor (cpp:52), a registered engine\n * setting defaulting to 0.3. It scales this hull's bounding radius into the\n * cutoff below which a secondary light source is too small to matter.\n */\n static SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR = 0.3;\n\n /** Scratch for the per-frame shader-data fill; never allocate in it. */\n static #clipSphereCenterScratch = vec3.create();\n\n static #shapeCenterScratch = vec3.create();\n\n static #shapeRadiusScratch = vec3.create();\n\n // Carbon m_vsData / m_psData: the PERSISTENT per-object records. They are\n // owner-held members across frames rather than pool leases, because the\n // object fills them during update and reads them back afterwards\n // (cpp:3747 takes the world translation out of the STORED transposed matrix).\n // Carbon's paired m_perObjectDataVs/m_perObjectDataPs GPU buffers are the\n // engine's business; Invalidate on these records carries the same signal.\n #vsData = RawData.create(\"EveSpaceObjectVSData\");\n\n #psData = RawData.create(\"EveSpaceObjectPSData\");\n\n /** Alias for the mesh property; reads and writes go straight to mesh. */\n get meshLod()\n {\n return this.mesh;\n }\n\n /** Alias for the mesh property; reads and writes go straight to mesh. */\n set meshLod(mesh)\n {\n this.mesh = mesh ?? null;\n }\n\n /**\n * Links the authored controllers, pushes authored inherit properties down to\n * the effect children and lights, and derives the impact overlay's damage\n * locator count from the \"damage\" locator set - which Carbon does at build\n * time - so a field-populated graph reaches the same live state as the\n * authoring path.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n for (const controller of this.controllers)\n {\n if (!controller?.IsLinked?.())\n {\n controller?.Link?.(this);\n }\n }\n // Authored inherit properties propagate as part of the lifecycle so a\n // field-populated graph (values import, document hydration) matches the\n // SetInheritProperties authoring path.\n if (this.inheritProperties)\n {\n this.#PropagateInheritProperties();\n }\n // Carbon derives the impact overlay's damage locator count from the\n // \"damage\" locator set at build time; deriving it here keeps it out of\n // the authored values while reproducing the same live state.\n if (this.impactOverlay)\n {\n let damageLocatorCount = 0;\n for (const set of this.locatorSets)\n {\n if (set?.HasName?.(\"damage\")) damageLocatorCount += set.locators.length;\n }\n this.impactOverlay.SetDamageLocatorCount(damageLocatorCount);\n }\n return true;\n }\n\n /** Returns the hull mesh, or null when none is attached. */\n @carbon.method\n @impl.implemented\n GetMesh()\n {\n return this.mesh;\n }\n\n /**\n * Replaces the hull mesh; the cached area blocks are only rebuilt on the next\n * batch call.\n */\n @carbon.method\n @impl.adapted\n SetMesh(mesh)\n {\n this.mesh = mesh ?? null;\n }\n\n /**\n * Appends a controller, links it to this object when it is not already linked,\n * and replays the current controller variables onto it.\n */\n @carbon.method\n @impl.adapted\n AddController(controller)\n {\n this.controllers.push(controller);\n if (!controller?.IsLinked?.())\n {\n controller?.Link?.(this);\n }\n EveSpaceObject2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\n return controller;\n }\n\n /**\n * Appends a placement observer, which is repositioned from the observer\n * transform on every synchronous update; the observer is returned for\n * chaining.\n */\n @carbon.method\n @impl.implemented\n AddObserver(observer)\n {\n this.observers.push(observer);\n return observer;\n }\n\n /**\n * Sets the colour set that effect children and lights inherit, creating the\n * inherit-properties holder on first use, and pushes it to the existing\n * children and lights.\n */\n @carbon.method\n @impl.implemented\n SetInheritProperties(colorSet)\n {\n if (!this.inheritProperties)\n {\n this.inheritProperties = new EveChildInheritProperties();\n }\n this.inheritProperties.SetProperties(colorSet);\n this.#PropagateInheritProperties();\n }\n\n /** Pushes the current inherited properties to every effect child and light. */\n #PropagateInheritProperties()\n {\n const properties = this.inheritProperties.GetProperties();\n for (const child of this.effectChildren)\n {\n child?.SetInheritProperties?.(properties);\n }\n for (const light of this.lights)\n {\n light?.SetInheritProperties?.(properties);\n }\n }\n\n /**\n * Returns the first effect child with the given name, or null when none\n * matches.\n */\n @carbon.method\n @impl.implemented\n GetEffectChildByName(name)\n {\n const target = String(name ?? \"\");\n for (const child of this.effectChildren)\n {\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target)\n {\n return child;\n }\n }\n return null;\n }\n\n /**\n * Appends an effect child, first giving it the hull's inherited properties and\n * then replaying the current controller variables onto it, so a late addition\n * starts in the same state as the rest.\n */\n @carbon.method\n @impl.adapted\n AddToEffectChildrenList(child)\n {\n if (this.inheritProperties)\n {\n child?.SetInheritProperties?.(this.inheritProperties.GetProperties());\n }\n this.effectChildren.push(child);\n EveSpaceObject2.#ApplyControllerVariables(child, this.#controllerVariables, \"SetControllerVariable\");\n return child;\n }\n\n /** Appends a light, first giving it the hull's inherited properties. */\n @carbon.method\n @impl.implemented\n AddLight(light)\n {\n if (this.inheritProperties)\n {\n light?.SetInheritProperties?.(this.inheritProperties.GetProperties());\n }\n this.lights.push(light);\n }\n\n /**\n * Drops every light from the hull; component registration is not revisited\n * here.\n */\n @carbon.method\n @impl.implemented\n ClearLights()\n {\n this.lights.length = 0;\n }\n\n /**\n * Removes an effect child, returning false when it is not attached to this\n * hull.\n */\n @carbon.method\n @impl.implemented\n RemoveFromEffectChildrenList(child)\n {\n const index = this.effectChildren.indexOf(child);\n if (index === -1)\n {\n return false;\n }\n this.effectChildren.splice(index, 1);\n return true;\n }\n\n /**\n * Sets the curve that rotates the model within the hull's ball rotation, or\n * clears it when passed nothing.\n */\n @carbon.method\n @impl.implemented\n SetModelRotationCurve(curve)\n {\n this.modelRotationCurve = curve ?? null;\n }\n\n /** Returns the model rotation curve, or null when none is set. */\n @carbon.method\n @impl.implemented\n GetModelRotationCurve()\n {\n return this.modelRotationCurve;\n }\n\n /**\n * Sets the curve that offsets the model within the hull's ball position, or\n * clears it when passed nothing.\n */\n @carbon.method\n @impl.implemented\n SetModelTranslationCurve(curve)\n {\n this.modelTranslationCurve = curve ?? null;\n }\n\n /** Returns the model translation curve, or null when none is set. */\n @carbon.method\n @impl.implemented\n GetModelTranslationCurve()\n {\n return this.modelTranslationCurve;\n }\n\n /**\n * Rebuilds the hull world transform for a frame from the ball position and rotation curves plus the optional model translation and rotation curves, applies modelScale as a uniform scale, then refreshes the inverse transform and the world bounds; the previous world transform is kept for motion vectors and the world velocity comes from the position curve's derivative.\n * @param {number} time Frame time; repeating the previous call's time is a no-op.\n * @returns {boolean} False when the transform had already been built for this time.\n */\n @carbon.method\n @impl.adapted\n UpdateWorldTransform(time)\n {\n const nextTime = Number(time) || 0;\n if (this.#lastUpdateTransformTime === nextTime)\n {\n return false;\n }\n this.#lastUpdateTransformTime = nextTime;\n mat4.copy(this.lastWorldTransform, this.worldTransform);\n // Carbon cpp:2675-2676: the OUTGOING transform becomes worldTransformLast,\n // stored transposed in both records, before the new one is built.\n this.#vsData.SetAndTranspose(\"worldTransformLast\", this.lastWorldTransform);\n this.#psData.SetAndTranspose(\"worldTransformLast\", this.lastWorldTransform);\n\n EveSpaceObject2.#UpdateCurve(this.translationCurve, nextTime, this.worldPosition, EveSpaceObject2.#zero);\n if (this.translationCurve?.GetValueDotAt)\n {\n this.translationCurve.GetValueDotAt(nextTime, this.worldVelocity);\n }\n else\n {\n vec3.set(this.worldVelocity, 0, 0, 0);\n }\n\n EveSpaceObject2.#UpdateCurve(this.rotationCurve, nextTime, this.worldRotation, EveSpaceObject2.#identityRotation);\n const rotation = quat.clone(this.worldRotation);\n if (this.modelRotationCurve)\n {\n const modelRotation = quat.create();\n EveSpaceObject2.#UpdateCurve(this.modelRotationCurve, nextTime, modelRotation, EveSpaceObject2.#identityRotation);\n // Carbon (row-vector): rotation = modelRotation * m_worldRotation - model first.\n quat.multiply(rotation, rotation, modelRotation);\n }\n\n mat4.fromQuat(this.worldTransform, rotation);\n if (this.modelScale !== 1)\n {\n // Carbon (row-vector): m_worldTransform * scaleMatrix - scale LAST\n // (cpp:2711-2716). gl mat4.scale builds W*S = scale FIRST; equivalent\n // ONLY because modelScale is strictly uniform (a uniform scale commutes\n // with the pure rotation here). If modelScale ever becomes a vec3 this\n // must become mat4.multiply(w, S, w) per the swap rule.\n mat4.scale(this.worldTransform, this.worldTransform, [this.modelScale, this.modelScale, this.modelScale]);\n }\n\n if (this.modelTranslationCurve)\n {\n const modelTranslation = vec3.create();\n EveSpaceObject2.#UpdateCurve(this.modelTranslationCurve, nextTime, modelTranslation, EveSpaceObject2.#zero);\n vec3.transformMat4(modelTranslation, modelTranslation, this.worldTransform);\n this.worldTransform[12] = this.worldPosition[0] + modelTranslation[0];\n this.worldTransform[13] = this.worldPosition[1] + modelTranslation[1];\n this.worldTransform[14] = this.worldPosition[2] + modelTranslation[2];\n }\n else\n {\n this.worldTransform[12] = this.worldPosition[0];\n this.worldTransform[13] = this.worldPosition[1];\n this.worldTransform[14] = this.worldPosition[2];\n }\n\n if (!mat4.invert(this.inverseWorldTransform, this.worldTransform))\n {\n mat4.identity(this.inverseWorldTransform);\n }\n this.UpdateWorldBounds();\n return true;\n }\n\n /**\n * Refreshes Carbon's realized world-space sphere from the dynamic skinned\n * sphere when available, otherwise from the authored local sphere.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The browser runtime refreshes the cache with world-transform updates instead of Carbon's renderer-side PrepareShaderData pass.\")\n UpdateWorldBounds()\n {\n const updater = this.animationUpdater;\n if (this.dynamicBoundingSphereEnabled && updater?.IsInitialized?.())\n {\n updater.GetDynamicBounds?.(this.#dynamicBoundingSphere, this.#localAabbMin, this.#localAabbMax);\n if (this.#dynamicBoundingSphere[3] > 0)\n {\n vec3.transformMat4(this.modelWorldPosition, this.#dynamicBoundingSphere, this.worldTransform);\n this.#boundingSphereWorldRadius = this.modelScale * this.#dynamicBoundingSphere[3];\n return true;\n }\n }\n if (this.boundingSphereRadius > 0)\n {\n vec3.transformMat4(this.modelWorldPosition, this.boundingSphereCenter, this.worldTransform);\n this.#boundingSphereWorldRadius = this.modelScale * this.boundingSphereRadius;\n return true;\n }\n return false;\n }\n\n /**\n * Carbon EveSpaceObject2::PrepareShaderData (cpp:734-763): refreshes the\n * world bounds, packs the ship data, and derives the clip-sphere dissolve\n * values into the persistent per-object records.\n */\n @carbon.method\n @impl.implemented\n PrepareShaderData(updateContext = null)\n {\n this.UpdateWorldBounds();\n\n // An impact overlay may damp the activation strength; otherwise full on.\n this.spaceObjectShipData[1] = this.impactOverlay\n ? (this.impactOverlay.GetActivationStrength?.(updateContext) ?? 1)\n : 1;\n this.spaceObjectShipData[3] = this.GetBoundingSphereRadius();\n this.spaceObjectShipData[2] = this.dirtLevel;\n\n // clipSphereFactor runs 0 (fully visible) to 1 (invisible); the shader gets\n // a signed squared radius rather than the factor itself.\n let normalizedBoundingRadius = this.GetBoundingSphereRadius() / (this.modelScale === 0 ? 1 : this.modelScale);\n const clipOffset = vec3.length(this.clipSphereCenter);\n normalizedBoundingRadius += clipOffset;\n const insideSpherePercentage = Math.min(1, clipOffset / normalizedBoundingRadius);\n const dissolveRadius = this.clipSphereFactor * normalizedBoundingRadius * (1 + insideSpherePercentage);\n\n const center = this.GetBoundingSphereCenter();\n const clipSphereCenter = EveSpaceObject2.#clipSphereCenterScratch;\n vec3.add(clipSphereCenter, this.clipSphereCenter, center);\n const clipRadiusSq = Math.sign(dissolveRadius) * dissolveRadius * dissolveRadius;\n\n this.#psData.Set(\"clipSphereCenter\", clipSphereCenter);\n this.#psData.Set(\"clipRadiusSq\", [clipRadiusSq]);\n this.#vsData.Set(\"clipData\", [clipSphereCenter[0], clipSphereCenter[1], clipSphereCenter[2], clipRadiusSq]);\n\n const dissolveRadius2 = this.clipSphereFactor2 * normalizedBoundingRadius * (1 + insideSpherePercentage);\n this.#psData.Set(\"clipRadius2Sq\", [Math.sign(dissolveRadius2) * dissolveRadius2 * dissolveRadius2]);\n this.#psData.Set(\"clipSphereFactor\", [this.clipSphereFactor]);\n this.#psData.Set(\"clipSphereFactor2\", [this.clipSphereFactor2]);\n }\n\n /**\n * Carbon EveSpaceObject2::UpdateShLighting (cpp:1411-1421): asks the scene's\n * SH lighting manager for this hull's secondary-lighting coefficients, faded\n * in across the low-detail threshold so a hull entering that range does not\n * pop. The coefficients are cleared first, which is also what leaves the\n * unwritten tail zero on the L1 path.\n * @param {Object} manager - Tr2ShLightingManager\n * @param {Object} [updateContext] - frame context, for the detail thresholds\n */\n @carbon.method\n @impl.implemented\n UpdateShLighting(manager, updateContext = null)\n {\n const coefficients = this.#psData.Get(\"shLightingCoefficients\");\n\n coefficients.fill(0);\n\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\n\n if (!(this.estimatedPixelDiameterWithChildren > lowThreshold) || typeof manager?.GetLighting !== \"function\")\n {\n return false;\n }\n\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\n const intensityFadeRadius = (mediumThreshold - lowThreshold) * 0.25;\n const intensity = Math.min(Math.max((this.estimatedPixelDiameterWithChildren - lowThreshold) / intensityFadeRadius, 0), 1);\n\n manager.GetLighting(\n this.worldPosition,\n intensity,\n this.boundingSphereRadius * EveSpaceObject2.SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR,\n coefficients\n );\n\n return true;\n }\n\n /**\n * Carbon EveSpaceObject2::ClearShLighting (cpp:1423-1426): drops this hull's\n * secondary-lighting contribution back to nothing.\n */\n @carbon.method\n @impl.implemented\n ClearShLighting()\n {\n this.#psData.Get(\"shLightingCoefficients\").fill(0);\n\n return true;\n }\n\n /**\n * Carbon EveSpaceObject2::GetParentData (cpp:1872-1885): the values an\n * attachment needs from its hull. `shLighting` is a LIVE view into the PS\n * record, exactly as Carbon hands out a raw pointer into m_psData - an\n * attachment reading it sees the hull's current coefficients.\n * @param {Object} [out] - caller-owned record, refreshed in place\n */\n @carbon.method\n @impl.implemented\n GetParentData(out = new IEveSpaceObject2ParentData())\n {\n mat4.copy(out.transform, this.worldTransform);\n // Carbon memsets the record and never assigns killCount on this path.\n out.killCount = 0;\n vec4.copy(out.shipData, this.spaceObjectShipData);\n vec3.copy(out.clipSphereCenter, this.#psData.Get(\"clipSphereCenter\"));\n out.clipRadiusSq = this.#psData.Get(\"clipRadiusSq\")[0];\n out.clipRadius2Sq = this.#psData.Get(\"clipRadius2Sq\")[0];\n out.clipFactor = this.#psData.Get(\"clipSphereFactor\")[0];\n out.clipFactor2 = this.#psData.Get(\"clipSphereFactor2\")[0];\n out.shLighting = this.#psData.Get(\"shLightingCoefficients\");\n vec4.copy(out.customData, this.#psData.Get(\"customData\"));\n\n return out;\n }\n\n /**\n * Carbon EveSpaceObject2::GetPerObjectStructs (cpp:1485-1490): hands a copy\n * of both records to a caller, with the VS record's customData taken from the\n * PS record as Carbon does.\n * @returns {{vs: RawData, ps: RawData}} independent copies, not live records\n */\n @carbon.method\n @impl.implemented\n GetPerObjectStructs(vsData = RawData.create(\"EveSpaceObjectVSData\"), psData = RawData.create(\"EveSpaceObjectPSData\"))\n {\n vsData.CopyFrom(this.#vsData);\n psData.CopyFrom(this.#psData);\n vsData.Set(\"customData\", this.#psData.Get(\"customData\"));\n return { vs: vsData, ps: psData };\n }\n\n /**\n * Refreshes the world transform, then - when the update flag is on - places the observers, stamps the LOD-gated curve clock while advancing the overlay effects, runs the effect children's synchronous pass with the current placement, and updates the impact overlay; the overlay effects receive the context time as both clocks, as Carbon does.\n * @returns {boolean} False when the update flag is off; the world transform is refreshed either way.\n */\n @carbon.method\n @impl.adapted\n UpdateSyncronous(updateContext = null)\n {\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\n this.UpdateWorldTransform(time);\n if (!this.update)\n {\n return false;\n }\n\n const observerTransform = this.GetObserverTransform();\n for (const observer of this.observers)\n {\n observer?.Update?.(observerTransform);\n }\n\n // LOD-gated curve/overlay stamp (Carbon EveSpaceObject2::UpdateSyncronous:\n // ShouldUpdate(m_lodLevelWithChildren, time - m_lastCurveUpdateTime) -\n // adapted to lodLevel, m_lodLevelWithChildren is unported). Overlay effects\n // receive the context time as BOTH clocks, as Carbon does; the async pass\n // updates curve sets only on frames stamped here.\n if (EveLODHelper.ShouldUpdate(this.lodLevel, time - this.#lastCurveUpdateTime))\n {\n this.#lastCurveUpdateTime = time;\n for (const overlay of this.overlayEffects)\n {\n overlay?.Update?.(time, time);\n }\n }\n\n if (this.effectChildren.length)\n {\n const params = new EveChildUpdateParams();\n params.spaceObjectParent = this;\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\n params.activationStrength = this.activationStrength;\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\n for (const child of this.effectChildren)\n {\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\n child?.UpdateSyncronous?.(updateContext, params);\n }\n }\n\n this.impactOverlay?.UpdateSyncronous?.(updateContext, this);\n return true;\n }\n\n /**\n * Runs the controllers at a frequency derived from the hull's estimated pixel diameter against the context's high-detail threshold, advances the object curve sets only on frames the synchronous LOD gate stamped, then updates the transform children, the effect children and the impact overlay.\n * @returns {number} The controller update frequency in 0..1, which is also handed to the effect children; 0 when the hull is not visible or the update flag is off.\n */\n @carbon.method\n @impl.adapted\n UpdateAsyncronous(updateContext = null)\n {\n if (!this.update)\n {\n return 0;\n }\n\n const threshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetHighDetailThreshold\", \"highDetailThreshold\");\n const frequency = this.isVisible && threshold > 0\n ? Math.min(1, this.estimatedPixelDiameter / threshold)\n : 0;\n for (const controller of this.controllers)\n {\n controller?.Update?.(frequency);\n }\n\n // Carbon cpp:626-663: the persistent buffers are invalidated once per\n // frame, then the shader data is prepared and copied into both records.\n this.#vsData.Invalidate();\n this.#psData.Invalidate();\n\n const previousActivationStrength = this.spaceObjectShipData[1];\n this.PrepareShaderData(updateContext);\n if (previousActivationStrength !== this.spaceObjectShipData[1])\n {\n this.SetControllerVariable?.(\"ActivationStrength\", this.spaceObjectShipData[1]);\n }\n\n this.#psData.Set(\"shipData\", this.spaceObjectShipData);\n this.#vsData.Set(\"shipData\", this.spaceObjectShipData);\n // m_psData.customData is script/SOF-driven; the model field is its author.\n this.#psData.Set(\"customData\", this.customShaderData);\n // Both records carry the same two matrices; each is written from the\n // LOGICAL transform, which produces the bytes Carbon's `m_psData.x =\n // m_vsData.x` copy of the already-transposed value produces.\n this.#vsData.SetAndTranspose(\"worldTransform\", this.worldTransform);\n this.#vsData.SetAndTranspose(\"invWorldTransform\", this.inverseWorldTransform);\n this.#psData.SetAndTranspose(\"worldTransform\", this.worldTransform);\n this.#psData.SetAndTranspose(\"invWorldTransform\", this.inverseWorldTransform);\n\n const shapeCenter = EveSpaceObject2.#shapeCenterScratch;\n const shapeRadius = EveSpaceObject2.#shapeRadiusScratch;\n this.GetShapeEllipsoid(shapeCenter, shapeRadius);\n this.#vsData.Set(\"ellpsoidRadii\", [ shapeRadius[0], shapeRadius[1], shapeRadius[2], 0 ]);\n this.#vsData.Set(\"ellpsoidCenter\", [ shapeCenter[0], shapeCenter[1], shapeCenter[2], 0 ]);\n\n if (this.impactOverlay)\n {\n this.#psData.Set(\"impactDataOffset\", [ this.impactOverlay.GetDataTextureOffset?.() ?? 0 ]);\n }\n\n for (let slot = 0; slot < EveSpaceObject2.CUSTOM_MASK_MAX; slot++)\n {\n if (this.customMasks.length > slot)\n {\n this.customMasks[slot]?.FillPerObjectData?.(slot, this.#vsData, this.#psData);\n }\n else\n {\n EveCustomMask.ZeroPerObjectData(slot, this.#vsData, this.#psData);\n }\n }\n\n // Object-level curve sets update only on frames the sync-side LOD gate\n // stamped, receiving the context time as BOTH realTime and simTime\n // (Carbon EveSpaceObject2::UpdateAsyncronous: if (m_lastCurveUpdateTime ==\n // time) (*it)->Update(time, time)).\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\n if (this.#lastCurveUpdateTime === time)\n {\n for (const curveSet of this.curveSets)\n {\n curveSet?.Update?.(time, time);\n }\n }\n\n for (const child of this.children)\n {\n child?.Update?.(updateContext);\n }\n\n if (this.effectChildren.length)\n {\n const params = new EveChildUpdateParams();\n params.spaceObjectParent = this;\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\n params.activationStrength = this.activationStrength;\n params.controllerUpdateFrequency = frequency;\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\n for (const child of this.effectChildren)\n {\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\n child?.UpdateAsyncronous?.(updateContext, params);\n }\n }\n\n this.impactOverlay?.UpdateAsyncronous?.(updateContext, this);\n return frequency;\n }\n\n /**\n * Updates Carbon's visibility, pixel-size, and mesh-LOD state, then forwards\n * visibility to the explicitly owned visual branches.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Native impostor, raytracing, and audio-emitter realization remain engine-owned; graph visibility and LOD state are preserved.\")\n UpdateVisibility(updateContext = null, _parentTransform = EveSpaceObject2.#identityTransform)\n {\n this.isVisible = false;\n this.#isMeshVisible = false;\n this.#isInFrustum = false;\n if (!this.display)\n {\n return false;\n }\n\n this.UpdateWorldBounds();\n this.lodLevel = Tr2Lod.TR2_LOD_LOW;\n this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\n this.#impostorMode = false;\n\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\n const visibilityThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetVisibilityThreshold\", \"visibilityThreshold\");\n const lodFactor = EveSpaceObject2.#GetContextValue(updateContext, \"GetLodFactor\", \"lodFactor\") || 1;\n\n if (this.boundingSphereRadius > 0 && this.#boundingSphereWorldRadius > 0)\n {\n EveSpaceObject2.#SetSphere(\n EveSpaceObject2.#worldSphere,\n this.modelWorldPosition,\n this.#boundingSphereWorldRadius\n );\n if (frustum?.IsSphereVisible?.(EveSpaceObject2.#worldSphere) !== false)\n {\n this.EstimatePixelDiameter(frustum);\n this.#isMeshVisible = true;\n }\n }\n\n // Bones so a bone-parented attachment's bounds follow its bone, which is\n // what drives the per-bone AABB union (Carbon BoundingBox.cpp:815-833).\n const { bones, boneCount } = getBoneList(this.animationUpdater);\n\n for (const attachment of this.attachments)\n {\n if (attachment?.UpdateVisibility?.(updateContext, this.worldTransform, bones, boneCount))\n {\n this.#isMeshVisible = true;\n this.isVisible = true;\n }\n }\n\n if (this.DisplayChildren())\n {\n for (const child of this.children)\n {\n child?.UpdateVisibility?.(updateContext, this.worldTransform);\n }\n }\n\n if (this.GetBoundingSphere(EveSpaceObject2.#worldSphere, 1))\n {\n this.#isInFrustum = frustum?.IsSphereVisible?.(EveSpaceObject2.#worldSphere) !== false;\n this.estimatedPixelDiameterWithChildren = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\n if (this.#isInFrustum && this.estimatedPixelDiameterWithChildren >= visibilityThreshold)\n {\n this.isVisible = true;\n }\n }\n\n if (this.isVisible)\n {\n if (this.estimatedPixelDiameter > mediumThreshold) this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\n else if (this.estimatedPixelDiameter > lowThreshold) this.lodLevel = Tr2Lod.TR2_LOD_MEDIUM;\n\n if (this.estimatedPixelDiameterWithChildren > mediumThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_HIGH;\n else if (this.estimatedPixelDiameterWithChildren > lowThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_MEDIUM;\n else this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\n }\n\n for (const observer of this.observers)\n {\n const target = observer?.GetObserver?.() ?? observer?.observer;\n target?.SetVisibility?.(this.isVisible);\n }\n for (const child of this.effectChildren)\n {\n child?.UpdateVisibility?.(updateContext, this.worldTransform, this.#lodLevelWithChildren);\n }\n\n if (this.mesh && this.#boundingSphereWorldRadius > 0)\n {\n EveSpaceObject2.#SetSphere(\n EveSpaceObject2.#worldSphere,\n this.modelWorldPosition,\n this.#boundingSphereWorldRadius\n );\n this.#meshScreenSize = EveSpaceObject2.#GetEstimatedPixelSize(frustum, EveSpaceObject2.#worldSphere) * lodFactor;\n if (!this.#allowLodSelection) this.#meshScreenSize = Infinity;\n this.mesh.UseWithScreenSize?.(this.#meshScreenSize, this.#boundingSphereWorldRadius);\n }\n return this.isVisible;\n }\n\n /** Collects the hull and explicitly owned Carbon child/decal renderables. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Impostor submission and decal mesh caches are engine-owned; Trinity returns the backend-neutral renderable graph.\")\n GetRenderables(out = [])\n {\n if (!this.display || !this.isVisible) return out;\n if (this.#allowLodSelection && this.#isMeshVisible)\n {\n this.mesh?.GetBoundingBox?.(this.#localAabbMin, this.#localAabbMax);\n }\n if (this.mesh && this.#isMeshVisible && this.mesh.IsLoading?.() !== true)\n {\n out.push(this);\n }\n if (this.DisplayChildren())\n {\n for (const child of this.children) child?.GetRenderables?.(out);\n }\n for (const child of this.effectChildren)\n {\n if (this.DisplayChildren() || child?.IsAlwaysOn?.()) child?.GetRenderables?.(out);\n }\n if (this.mesh && this.#isMeshVisible)\n {\n const geometryResource = this.mesh.GetGeometryResource?.();\n if (geometryResource)\n {\n for (const decal of this.decals)\n {\n decal?.GetRenderables?.(out, null, geometryResource, this.#meshScreenSize);\n }\n }\n }\n return out;\n }\n\n /** Carbon ITr2Renderable contract (EveSpaceObject2.cpp:1097-1140): activated\n * attachments recurse, the impact overlay contributes, the hull mesh delegates\n * per batch type, and TRANSPARENT routes through the distance-sorted area\n * path. GetBatchesFromOverlayVector (precomputed overlay area blocks) is\n * deferred with the overlay realization work. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Overlay area-block batches are deferred; the view position arrives via the appended render-context argument instead of Carbon's renderer global.\")\n GetBatches(batches, batchType, perObjectData, reason, renderContext = null)\n {\n if (!this.mesh) return false;\n if (this.mesh.display === false) return false;\n\n // Returns whether any batch was committed (JS addition; Carbon returns\n // void). The O(1) accumulator count makes the delta check free.\n const committedBefore = batches.GetBatchCount?.() ?? 0;\n\n if (this.activationStrength !== 0)\n {\n for (const attachment of this.attachments)\n {\n attachment?.GetBatches?.(batches, batchType, perObjectData, reason);\n }\n }\n\n this.impactOverlay?.GetBatches?.(batches, batchType, perObjectData, this.#meshScreenSize);\n\n const areas = this.mesh.GetAreas?.(batchType);\n if (areas)\n {\n if (batchType !== TriBatchType.TRIBATCHTYPE_TRANSPARENT)\n {\n this.mesh.GetBatches(batches, areas, perObjectData);\n }\n else\n {\n this.#GetSortedTransparentBatches(areas, batches, perObjectData, renderContext);\n }\n }\n\n // add overlay effect batches (Carbon calls this for every batch type)\n this.GetBatchesFromOverlayVector(batches, perObjectData, batchType, this.mesh);\n\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\n }\n\n // Carbon GetSortedBatchesFromMeshAreaVector (EveSpaceObject2.cpp:57-121):\n // object-space area bounding-box centers -> world space -> squared distance to\n // the view position, sorted back-to-front (descending), committed in that\n // order into the order-preserving TRANSPARENT accumulator. Bounding boxes come\n // from the geometry resource when it exposes them; a failed lookup keeps\n // Carbon's origin-center fallback.\n\n /**\n * Commits the mesh's transparent areas back-to-front, ordering them by the\n * squared distance from the view position to each area's world-space\n * bounding-box center and falling back to the object origin when the geometry\n * resource cannot supply a box.\n */\n #GetSortedTransparentBatches(areas, batches, perObjectData, renderContext)\n {\n const geometry = this.mesh.GetGeometryResource?.() ?? null;\n const viewPosition = renderContext?.GetViewPosition?.();\n const meshIndex = this.mesh.meshIndex ?? 0;\n\n const sorted = [];\n for (const area of areas)\n {\n if (!area || area.GetDisplay?.() === false) continue;\n\n vec3.set(TRANSPARENT_CENTER, 0, 0, 0);\n if (geometry?.GetAreaBoundingBox?.(meshIndex, area.GetIndex(), TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX))\n {\n vec3.add(TRANSPARENT_CENTER, TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX);\n vec3.scale(TRANSPARENT_CENTER, TRANSPARENT_CENTER, 0.5);\n }\n vec3.transformMat4(TRANSPARENT_CENTER, TRANSPARENT_CENTER, this.worldTransform);\n\n const dx = (viewPosition?.[0] ?? 0) - TRANSPARENT_CENTER[0];\n const dy = (viewPosition?.[1] ?? 0) - TRANSPARENT_CENTER[1];\n const dz = (viewPosition?.[2] ?? 0) - TRANSPARENT_CENTER[2];\n sorted.push({ area, distance: dx * dx + dy * dy + dz * dz });\n }\n\n sorted.sort((a, b) => b.distance - a.distance);\n\n for (const entry of sorted)\n {\n const area = entry.area;\n if (!area.GetMaterialInterface?.()) continue;\n const batch = this.mesh.CreateGeometryBatch(geometry, area, perObjectData);\n if (batch) batches.Commit(batch);\n }\n }\n\n /** Rebuilds the cached overlay/shadow area-block lists from the current mesh\n * (Carbon RebuildCachedData, EveSpaceObject2.cpp:2077-2097, triggered there by\n * the geometry-resource load callback). TYPE_ALL = shadow-casting OPAQUE +\n * TRANSPARENT + DECAL areas; TYPE_OPAQUEONLY = shadow-casting OPAQUE; the\n * shadow list groups OPAQUE areas by shared material. All coalesced. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon rebuilds from the geometry-resource notify callback; the GPU-free port rebuilds lazily on first batch use from the mesh areas alone.\")\n RebuildCachedData()\n {\n this.ReleaseCachedData();\n if (!this.mesh) return;\n\n const all = this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL];\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_OPAQUE);\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_TRANSPARENT);\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_DECAL);\n this.mesh.CollectAreaBlocks(\n this.#overlayMeshAreaBlocks[OVERLAY_TYPE_OPAQUEONLY], TriBatchType.TRIBATCHTYPE_OPAQUE);\n for (const blocks of this.#overlayMeshAreaBlocks)\n {\n TriRenderBatchAreaBlock.Optimize(blocks);\n }\n\n this.mesh.CollectAreaBlocksWithSharedMaterials(\n this.#shadowMeshOpaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE);\n for (const collector of this.#shadowMeshOpaqueAreas)\n {\n collector.Optimize();\n }\n this.#cachedAreaBlocksBuilt = true;\n }\n\n /**\n * Drops the cached overlay and shadow area-block lists so the next batch call\n * rebuilds them from the current mesh.\n */\n @carbon.method\n @impl.implemented\n ReleaseCachedData()\n {\n for (const blocks of this.#overlayMeshAreaBlocks)\n {\n blocks.length = 0;\n }\n this.#shadowMeshOpaqueAreas.length = 0;\n this.#cachedAreaBlocksBuilt = false;\n }\n\n /**\n * Rebuilds the cached area blocks on first use when a mesh is attached; Carbon\n * instead rebuilds them from the geometry-resource load callback.\n */\n #EnsureCachedAreaBlocks()\n {\n if (!this.#cachedAreaBlocksBuilt && this.mesh) this.RebuildCachedData();\n }\n\n /**\n * Carbon EveSpaceObject2::GetPickingBatches (cpp:3645-3675): collects the\n * geometry a pick pass should test, by mask. It is ordinary batch collection\n * - the pick itself is an engine pass that renders these and reads IDs back.\n *\n * The OPAQUE bit deliberately pulls in the transparent and additive OVERLAY\n * effects too, so a cloaking hull stays pickable.\n *\n * @param {Object} batches - the picking accumulator\n * @param {Number} pickTypes - a Tr2PickType mask\n * @param {Object} perObjectData - this hull's per-object record\n */\n @carbon.method\n @impl.implemented\n GetPickingBatches(batches, pickTypes = TR2_PICK_TYPE_DEFAULT, perObjectData = null)\n {\n if (pickTypes & Tr2PickType.PICK_TYPE_PICKING)\n {\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_PICKING, perObjectData);\n }\n\n if (pickTypes & Tr2PickType.PICK_TYPE_OPAQUE)\n {\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_OPAQUE, perObjectData);\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_DECAL, perObjectData);\n this.GetBatchesFromOverlayVector(batches, perObjectData, TriBatchType.TRIBATCHTYPE_TRANSPARENT, this.mesh);\n this.GetBatchesFromOverlayVector(batches, perObjectData, TriBatchType.TRIBATCHTYPE_ADDITIVE, this.mesh);\n }\n\n if (pickTypes & Tr2PickType.PICK_TYPE_TRANSPARENT)\n {\n // Carbon takes the mesh's OWN areas here rather than going through\n // GetBatches, and returns early when the mesh is absent or hidden - so a\n // hidden mesh suppresses the transparent pass only, not the ones above.\n if (!this.mesh || this.mesh.display === false)\n {\n return true;\n }\n\n for (const batchType of [ TriBatchType.TRIBATCHTYPE_TRANSPARENT, TriBatchType.TRIBATCHTYPE_ADDITIVE ])\n {\n const areas = this.mesh.GetAreas?.(batchType);\n\n if (areas)\n {\n this.mesh.GetBatches?.(batches, areas, perObjectData);\n }\n }\n }\n\n return true;\n }\n\n /**\n * Carbon EveSpaceObject2::GetID (cpp:3640-3643): a picked area resolves to\n * the hull itself, so the area index is deliberately ignored.\n * @param {Number} [_areaID] - the picked area, unused by this class\n * @returns {EveSpaceObject2} this\n */\n @carbon.method\n @impl.implemented\n GetID(_areaID = 0)\n {\n return this;\n }\n\n /** Carbon GetShadowBatches (EveSpaceObject2.cpp:1143-1184): one batch per\n * cached shared-material OPAQUE area block, using the area's own material.\n * Carbon bakes realized-LOD draw args; the GPU-free port defers them to the\n * engine via the geometry source descriptor, so shadowPixelSize travels unused\n * until engine LOD selection consumes it. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Realized-LOD draw args are engine-resolved from the geometry source descriptor; primitive-count gating happens at realization.\")\n GetShadowBatches(batches, perObjectData, _shadowPixelSize)\n {\n if (!this.mesh || this.mesh.display === false) return false;\n this.#EnsureCachedAreaBlocks();\n\n const geometry = this.mesh.GetGeometryResource?.() ?? null;\n const meshIndex = this.mesh.meshIndex ?? 0;\n\n let committed = false;\n for (const collector of this.#shadowMeshOpaqueAreas)\n {\n const material = collector.shaderMaterial;\n if (!material) continue;\n for (const block of collector.areaBlockVector)\n {\n const batch = new Tr2RenderBatch();\n batch.SetMaterial(material);\n if (!batch.IsValid()) continue;\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\n batch.SetPerObjectData(perObjectData ?? null);\n committed = batches.Commit(batch) || committed;\n }\n }\n return committed;\n }\n\n /** Carbon GetBatchesFromOverlayVector (EveSpaceObject2.cpp:1199-1285): the\n * impact overlay's armor-damage shader draws over the TYPE_ALL blocks at\n * maximum priority; each displayed overlay effect draws its per-batch-type\n * effects over its overlay-type blocks (OPAQUE -> TYPE_OPAQUEONLY, everything\n * else -> TYPE_ALL). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Overlay selection is fully represented in the CPU graph; realized-LOD draw arguments remain engine-owned.\")\n GetBatchesFromOverlayVector(batches, perObjectData, batchType, mesh)\n {\n const impactEffect = this.impactOverlay?.GetArmorDamageShader?.(batchType) ?? null;\n if (!impactEffect && !this.overlayEffects.length) return false;\n if (!mesh) return false;\n this.#EnsureCachedAreaBlocks();\n\n const committedBefore = batches.GetBatchCount?.() ?? 0;\n\n const geometry = mesh.GetGeometryResource?.() ?? null;\n const meshIndex = mesh.meshIndex ?? 0;\n\n if (impactEffect)\n {\n for (const block of this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL])\n {\n this.#CommitBlockBatch(batches, impactEffect, geometry, meshIndex, block, perObjectData, 0xFFFFFFFF);\n }\n }\n\n for (const overlay of this.overlayEffects)\n {\n const effects = this.#OverlayEffectsFor(overlay, batchType);\n if (!effects) continue;\n\n const overlayType = overlay.GetType(batchType);\n const blocks = this.#overlayMeshAreaBlocks[overlayType];\n for (const effect of effects)\n {\n for (const block of blocks)\n {\n this.#CommitBlockBatch(batches, effect, geometry, meshIndex, block, perObjectData, 0);\n }\n }\n }\n\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\n }\n\n /**\n * Builds and commits one render batch drawing a single cached area block with\n * the given material and optional priority, skipping the block when the\n * material yields no valid batch.\n */\n #CommitBlockBatch(batches, material, geometry, meshIndex, block, perObjectData, priority)\n {\n const batch = new Tr2RenderBatch();\n batch.SetMaterial(material);\n if (!batch.IsValid()) return;\n if (priority !== 0) batch.SetPriority(priority);\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\n batch.SetPerObjectData(perObjectData ?? null);\n batches.Commit(batch);\n }\n\n // EveMeshOverlayEffect::GetEffects (display-gated, per batch type).\n\n /**\n * Returns an overlay effect's display-gated effect list for a batch type, or\n * null when it contributes none.\n */\n #OverlayEffectsFor(overlay, batchType)\n {\n return overlay?.GetEffects?.(batchType) ?? null;\n }\n\n /**\n * Reports whether the hull mesh has transparent areas or any overlay effect\n * does, which tells the renderer to route this object through the sorted\n * transparent pass.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Portable mesh area access replaces Carbon's native mesh-area vectors.\")\n HasTransparentBatches()\n {\n if (!this.mesh) return false;\n if ((this.mesh.GetAreas?.(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;\n\n for (const overlay of this.overlayEffects)\n {\n if (overlay?.HasTransparentArea?.()) return true;\n }\n return false;\n }\n\n /**\n * Returns the distance from the render context's view position to the hull\n * world translation, used to order transparent renderables back-to-front.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\n GetSortValue(renderContext = null)\n {\n const viewPosition = renderContext?.GetViewPosition?.();\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\n return Math.hypot(x, y, z);\n }\n\n /** Carbon allocates Tr2PerObjectDataWithPersistentBuffers<EveSpaceObject2>,\n * which calls back into the object at upload time; the GPU-free record carries\n * the same live object reference for the engine serializer (the space-object\n * Main profile) to pull current values at realization. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Persistent VS/PS device buffers are engine-owned; the record carries the object reference the engine serializer consumes.\")\n GetPerObjectData(_accumulator = null)\n {\n // Carbon cpp:1437-1445: the bone ring is uploaded and its OFFSETS stamped\n // into the record, then a pooled handle referencing the two persistent\n // buffers is returned. The offsets are GPU addresses with no CPU\n // derivation, so they stay at their zero default here; the bone count is\n // CPU-known and is written.\n const boneCount = this.animationUpdater?.IsInitialized?.()\n ? (this.animationUpdater.GetMeshBoneCount?.() ?? 0)\n : null;\n if (boneCount !== null)\n {\n this.#vsData.SetIndex(\"boneOffsets\", 2, [ boneCount ]);\n }\n this.#vsData.Set(\"customData\", this.#psData.Get(\"customData\"));\n\n return { vs: this.#vsData, ps: this.#psData };\n }\n\n /** Carbon forwards the shadow pass to the same per-object record. */\n @carbon.method\n @impl.implemented\n GetShadowPerObjectData(accumulator = null)\n {\n return this.GetPerObjectData(accumulator);\n }\n\n /** Carbon EveSpaceObject2::GetLights (cpp:3536-3555): display gate only\n * (no lights-empty early-out, unlike EveChildMesh), then per light\n * AddLight(manager, worldTransform, 1, bones, boneCount) FOLLOWED by\n * SetBrightnessMultiplier(m_activationStrength) - the order is contract:\n * the submission uses the multiplier stamped on the PREVIOUS pass (first\n * pass uses the Tr2Light default 1) - one frame of activation-strength\n * lag, preserved verbatim. cpp:3554's dead `DisplayChildren()` local is\n * not ported. */\n @carbon.method\n @impl.implemented\n GetLights(lightManager)\n {\n if (!this.display)\n {\n return;\n }\n\n // cpp:3545-3547 - Tr2GrannyAnimationUtils::GetBoneList, so a bone-parented\n // light is placed by its bone rather than by the object transform alone.\n const { bones, boneCount } = getBoneList(this.animationUpdater);\n\n for (const light of this.lights)\n {\n light?.AddLight?.(lightManager, this.worldTransform, 1, bones, boneCount);\n light?.SetBrightnessMultiplier?.(this.activationStrength);\n }\n }\n\n /** Carbon EveSpaceObject2::IsCastingShadow (cpp:1940-1990) culls against the\n * camera/shadow frustums; awaits the TriFrustum port (visibility pass).\n * Presence satisfies the \"ShadowCaster\" duck contract. */\n @carbon.method\n @impl.notImplemented\n IsCastingShadow(..._args)\n {\n throw new Error(\"EveSpaceObject2.IsCastingShadow is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon EveSpaceObject2::RegisterComponents (cpp:3568-3609): registers its\n * own components and its children with the scene registration container \"so\n * we don't have to traverse the tree every frame\". RegisterAudioGeometry\n * (cpp:3572-3575) is audio-engine-owned and unported. Gate m_display. */\n @carbon.method\n @impl.implemented\n RegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry && this.display)\n {\n if (this.lights.length)\n {\n registry.RegisterComponent(EveComponentType.LightOwner, this);\n }\n\n if (ShouldReflect(this.reflectionMode))\n {\n registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);\n }\n\n if (this.castShadow)\n {\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\n }\n\n for (const child of this.effectChildren)\n {\n child?.Register?.(registry);\n }\n\n for (const attachment of this.attachments)\n {\n attachment?.Register?.(registry);\n }\n }\n }\n\n /** Carbon EveSpaceObject2::UnRegisterComponents (cpp:3615-3638): forwards\n * the un-registration to the children only - EveEntity::UnRegister already\n * called UnRegisterAllComponents(this) first (EveEntity.cpp:90) - and does\n * not re-check display. UnregisterAudioGeometry (cpp:3617) is\n * audio-engine-owned and unported. */\n @carbon.method\n @impl.implemented\n UnRegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry)\n {\n for (const child of this.effectChildren)\n {\n child?.UnRegister?.(registry);\n }\n\n for (const attachment of this.attachments)\n {\n attachment?.UnRegister?.(registry);\n }\n }\n }\n\n /**\n * Reports whether children and effect children should be shown; always true on\n * the base hull, subclasses gate it on activation state.\n */\n @carbon.method\n @impl.implemented\n DisplayChildren()\n {\n return true;\n }\n\n /**\n * Returns the transform placement observers are attached to - the live hull\n * world transform.\n */\n @carbon.method\n @impl.implemented\n GetObserverTransform()\n {\n return this.worldTransform;\n }\n\n /**\n * Returns the transform effect children are placed against - the live hull\n * world transform, not a copy.\n */\n @carbon.method\n @impl.implemented\n GetLocalToWorldTransform()\n {\n return this.worldTransform;\n }\n\n /** Carbon's non-updating model-center query. */\n @carbon.method\n @impl.implemented\n GetModelCenterWorldPosition(out)\n {\n vec3.transformMat4(out, this.boundingSphereCenter, this.worldTransform);\n }\n\n /**\n * Returns the live curve-sampled ball position; the array is the object's own\n * field and is rewritten by the next transform update.\n */\n @carbon.method\n @impl.implemented\n GetWorldPosition()\n {\n return this.worldPosition;\n }\n\n /**\n * Returns the live curve-sampled ball rotation, which excludes the model\n * rotation curve; the quaternion is the object's own field and is rewritten by\n * the next transform update.\n */\n @carbon.method\n @impl.implemented\n GetWorldRotation()\n {\n return this.worldRotation;\n }\n\n /**\n * Finds a sound emitter by observer name on this hull and then recursively in\n * the effect children, returning null when no emitter carries the name.\n */\n @carbon.method\n @impl.implemented\n FindSoundEmitter(name)\n {\n const target = String(name ?? \"\");\n for (const observer of this.observers)\n {\n if (observer?.name === target)\n {\n return typeof observer.GetObserver === \"function\"\n ? observer.GetObserver()\n : observer.observer ?? null;\n }\n }\n for (const child of this.effectChildren)\n {\n const emitter = child?.FindSoundEmitter?.(target);\n if (emitter)\n {\n return emitter;\n }\n }\n return null;\n }\n\n /**\n * Sets the mute flag and pushes it to every effect child and placement\n * observer.\n */\n @carbon.method\n @impl.adapted\n SetMute(mute)\n {\n this.mute = !!mute;\n for (const child of this.effectChildren)\n {\n child?.SetMute?.(this.mute);\n }\n for (const observer of this.observers)\n {\n observer?.SetMute?.(this.mute);\n }\n }\n\n /**\n * Plays an animation with explicit loop, start, and speed settings\n * (Carbon PlayAnimationEx, MAP_METHOD_AND_WRAP_OPTIONAL_ARGS).\n */\n @carbon.method\n @impl.adapted\n PlayAnimationEx(animName, loopCount, start, speed, clearWhenDone = true)\n {\n this.#PlayAnimation(animName, true, loopCount, start, speed, clearWhenDone);\n }\n\n /**\n * Calculates the skinned bounding box under a transform (CMF path: the\n * local box corners transformed with perspective divide). The granny path\n * is unported. Returns an inverted-empty { min, max } box when dynamic\n * bounds are disabled, as Carbon's BoundingBoxInitialize does.\n */\n @carbon.method\n @impl.adapted\n CalculateSkinnedBoundingBoxFromTransform(transform)\n {\n const min = vec3.fromValues(Infinity, Infinity, Infinity);\n const max = vec3.fromValues(-Infinity, -Infinity, -Infinity);\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.())\n {\n const { min: localMin, max: localMax } = this.GetLocalBoundingBox();\n const corner = vec3.create();\n for (let index = 0; index < 8; index++)\n {\n vec3.set(\n corner,\n index & 1 ? localMax[0] : localMin[0],\n index & 2 ? localMax[1] : localMin[1],\n index & 4 ? localMax[2] : localMin[2]\n );\n vec3.transformMat4(corner, corner, transform);\n vec3.min(min, min, corner);\n vec3.max(max, max, corner);\n }\n }\n return { min, max };\n }\n\n /**\n * Calculates the skinned bounding sphere (CMF path: the current bounding\n * sphere; granny path unported). Returns (0,0,0,-1) when dynamic bounds\n * are disabled.\n */\n @carbon.method\n @impl.adapted\n CalculateSkinnedBoundingSphere(out = vec4.create())\n {\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.())\n {\n const center = this.GetBoundingSphereCenter();\n return vec4.set(out, center[0], center[1], center[2], this.GetBoundingSphereRadius());\n }\n return vec4.set(out, 0, 0, 0, -1);\n }\n\n /**\n * Clears all impact and damage effects on the impact overlay.\n */\n @carbon.method\n @impl.implemented\n ClearImpactDamage()\n {\n this.impactOverlay?.Clear?.();\n }\n\n /**\n * Clears all animations on the animation updater.\n */\n @carbon.method\n @impl.implemented\n ClearAnimations()\n {\n this.animationUpdater?.ClearAnimations?.();\n }\n\n /**\n * Creates an impact facing a position on the closest facing damage locator.\n */\n @carbon.method\n @impl.implemented\n CreateImpactFromPosition(position, direction, lifeTime, size)\n {\n const closestDamageLocator = this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\n return this.CreateImpact(closestDamageLocator, direction, lifeTime, size);\n }\n\n /**\n * Creates an impact effect on a damage locator through the impact overlay.\n */\n @carbon.method\n @impl.adapted\n CreateImpact(damageLocatorIndex, direction, lifeTime, size)\n {\n if (this.impactOverlay)\n {\n return this.impactOverlay.CreateImpact?.(damageLocatorIndex, direction, lifeTime, size, 1, this.lodLevel, this) ?? -1;\n }\n return -1;\n }\n\n /**\n * Ends the current animation on the animation updater.\n */\n @carbon.method\n @impl.implemented\n EndAnimation()\n {\n this.animationUpdater?.EndAnimation?.();\n }\n\n /**\n * Freezes LOD selection at the current mesh and marks decal geometry\n * frozen.\n */\n @carbon.method\n @impl.implemented\n FreezeHighDetailMesh()\n {\n this.#allowLodSelection = false;\n for (const decal of this.decals)\n {\n decal?.SetHighDetailDecalState?.(true);\n }\n }\n\n /**\n * Gets the number of damage locators on this object.\n */\n @carbon.method\n @impl.implemented\n GetDamageLocatorCount()\n {\n return this.GetLocatorCount(EveSpaceObject2.#damageLocatorSetName);\n }\n\n /**\n * Gets the number of locators in a named locator set.\n */\n @carbon.method\n @impl.implemented\n GetLocatorCount(locatorSetName)\n {\n return this.#GetLocatorsForSet(locatorSetName)?.length ?? 0;\n }\n\n /**\n * Gets the first locator list whose set has the requested Carbon name.\n * The returned list remains owned by the locator set.\n */\n @carbon.method\n @impl.implemented\n GetLocatorsForSet(locatorSetName)\n {\n return this.#GetLocatorsForSet(locatorSetName);\n }\n\n /**\n * Gets the closest locator in a set to a world position, ignoring locator\n * facing. Returns -1 when the set is missing or empty.\n */\n @carbon.method\n @impl.implemented\n GetCloseLocatorIndex(position, locatorSetName)\n {\n const locators = this.#GetLocatorsForSet(locatorSetName);\n if (!locators)\n {\n return -1;\n }\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\n const locatorPosition = vec3.create();\n const locatorDirection = vec3.create();\n let closestLength = Infinity;\n let closestIndex = -1;\n for (let index = 0; index < locators.length; index++)\n {\n this.#GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index]);\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\n if (distance < closestLength)\n {\n closestIndex = index;\n closestLength = distance;\n }\n }\n return closestIndex;\n }\n\n /**\n * Carbon's script surface maps GetGoodLocatorIndex to GetCloseLocatorIndex\n * (EveSpaceObject2_Blue.cpp); the internal randomized fit heuristic is not\n * script-exposed.\n */\n @carbon.method\n @impl.adapted\n GetGoodLocatorIndex(position, locatorSetName)\n {\n return this.GetCloseLocatorIndex(position, locatorSetName);\n }\n\n /**\n * Gets the local direction of an indexed damage locator, (0,0,0) for\n * indices out of range (Carbon script GetDamageLocatorDirection maps to\n * GetDamageLocatorDirectionLocal).\n */\n @carbon.method\n @impl.adapted\n GetDamageLocatorDirection(index, inWorldSpaceOrOut = vec3.create(), out = vec3.create())\n {\n const targetableCall = typeof inWorldSpaceOrOut === \"boolean\";\n const inWorldSpace = targetableCall && inWorldSpaceOrOut;\n if (!targetableCall) out = inWorldSpaceOrOut;\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n vec3.set(out, 0, targetableCall ? 1 : 0, 0);\n return targetableCall ? false : out;\n }\n const position = vec3.create();\n this.#GetLocatorInObjectSpace(position, out, locators[index]);\n if (inWorldSpace) EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\n return targetableCall ? true : out;\n }\n\n /** Internal ITriTargetable locator query, using the org-standard out-last convention. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS keeps output parameters last and returns a validity flag for targetable callers.\")\n GetDamageLocatorPosition(index, inWorldSpace, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n if (inWorldSpace) vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n else vec3.set(out, 0, 0, 0);\n return false;\n }\n this.#GetLocatorInObjectSpace(out, EveSpaceObject2.#locatorDirection, locators[index]);\n if (inWorldSpace) vec3.transformMat4(out, out, this.worldTransform);\n return true;\n }\n\n /** Gets the closest facing damage locator for ITriTargetable consumers. */\n @carbon.method\n @impl.implemented\n GetClosestDamageLocatorIndex(position)\n {\n return this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\n }\n\n /** Ports Carbon's randomized distance/direction fit for impact variation. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"TriRand is represented by Math.random; all locator scoring remains source-faithful.\")\n GetGoodDamageLocatorIndex(position)\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators) return 0;\n\n const objectPosition = vec3.transformMat4(EveSpaceObject2.#objectPosition, position, this.inverseWorldTransform);\n let minDistance = Infinity;\n let maxDistance = Number.MIN_VALUE;\n let bestDirectionFit = 0;\n\n for (const locator of locators)\n {\n this.#GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locator);\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\n minDistance = Math.min(minDistance, distance);\n maxDistance = Math.max(maxDistance, distance);\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\n bestDirectionFit = Math.max(bestDirectionFit, EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset));\n }\n\n const desiredFit = Math.random() * (0.25 - (1 - bestDirectionFit)) + 0.75;\n let bestFit = 1;\n let bestLocator = -1;\n for (let index = 0; index < locators.length; index++)\n {\n this.#GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locators[index]);\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\n const range = maxDistance - minDistance;\n let scale = range > 0 ? 1 - (distance - minDistance) / range : 1;\n let value = 2 * scale - 1;\n value = value < 0 ? 1 - Math.sqrt(Math.abs(value)) : Math.sqrt(Math.abs(value)) + 1;\n value *= 0.5;\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\n value *= EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset);\n const fit = Math.abs(value - desiredFit);\n if (fit < bestFit)\n {\n bestFit = fit;\n bestLocator = index;\n }\n }\n return bestLocator < 0 ? this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName) : bestLocator;\n }\n\n /** Gets the model-scaled target radius. */\n @carbon.method\n @impl.implemented\n GetRadius()\n {\n return this.GetBoundingSphereRadius();\n }\n\n /** Computes a miss point just outside the model silhouette. */\n @carbon.method\n @impl.implemented\n GetMissPosition(hit, source, out = vec3.create())\n {\n if (this.boundingSphereRadius > 0)\n {\n vec3.copy(out, this.modelWorldPosition);\n if (hit && source)\n {\n vec3.subtract(EveSpaceObject2.#missOffset, hit, out);\n vec3.subtract(EveSpaceObject2.#missDirection, hit, source);\n const directionLength = vec3.length(EveSpaceObject2.#missDirection);\n if (directionLength) vec3.scale(EveSpaceObject2.#missDirection, EveSpaceObject2.#missDirection, 1 / directionLength);\n vec3.scaleAndAdd(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, EveSpaceObject2.#missDirection, -vec3.dot(EveSpaceObject2.#missDirection, EveSpaceObject2.#missOffset));\n const offsetLength = vec3.length(EveSpaceObject2.#missOffset);\n if (offsetLength) vec3.scale(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, 1 / offsetLength);\n vec3.scaleAndAdd(out, out, EveSpaceObject2.#missOffset, this.GetBoundingSphereRadius() * 1.125);\n }\n }\n else\n {\n this.GetDamageLocatorPosition(-1, true, out);\n }\n return out;\n }\n\n /** Gets the current target impact material. */\n @carbon.method\n @impl.implemented\n GetImpactConfiguration()\n {\n return this.impactOverlay?.GetImpactConfiguration?.() ?? ImpactConfiguration.IMPACT_INVALID;\n }\n\n /** Reports whether impacts currently use the authored shield ellipsoid. */\n @carbon.method\n @impl.implemented\n HasImpactConfigurationShield()\n {\n return !!this.impactOverlay?.HasShieldEllipsoid?.()\n && this.GetImpactConfiguration() === ImpactConfiguration.IMPACT_SHIELD;\n }\n\n /** Resolves a shield-ray or damage-locator collision point. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS uses an out-last signature; the ellipsoid intersection is otherwise source-faithful CPU math.\")\n GetImpactPosition(locator, posPrev, posNow, epsilon, out = vec3.create())\n {\n if (!this.HasImpactConfigurationShield())\n {\n this.GetDamageLocatorPosition(locator, true, out);\n return vec3.squaredDistance(posNow, out) < Number(epsilon);\n }\n\n vec3.transformMat4(EveSpaceObject2.#rayOrigin, posPrev, this.inverseWorldTransform);\n vec3.transformMat4(EveSpaceObject2.#rayEnd, posNow, this.inverseWorldTransform);\n vec3.subtract(EveSpaceObject2.#rayDirection, EveSpaceObject2.#rayEnd, EveSpaceObject2.#rayOrigin);\n this.GetShapeEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii);\n const t = EveSpaceObject2.#IntersectEllipsoidRay(out, EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayOrigin, EveSpaceObject2.#rayDirection);\n if (t !== null && t >= -1 && t <= 1)\n {\n vec3.transformMat4(out, out, this.worldTransform);\n return true;\n }\n if (EveSpaceObject2.#IsPointInsideEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayEnd))\n {\n vec3.copy(out, posNow);\n return true;\n }\n return false;\n }\n\n /** Updates an existing impact overlay entry. */\n @carbon.method\n @impl.implemented\n UpdateImpact(out, direction, impactIndex)\n {\n return this.impactOverlay?.UpdateImpact?.(out, direction, impactIndex) ?? false;\n }\n\n /**\n * Gets the local position of an indexed damage locator, (0,0,0) for\n * indices out of range.\n */\n @carbon.method\n @impl.implemented\n GetDamageLocator(index, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n return vec3.set(out, 0, 0, 0);\n }\n const direction = vec3.create();\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\n return out;\n }\n\n /**\n * Gets the world-space position of an indexed damage locator, (0,0,0) for\n * indices out of range (returned untransformed, as Carbon does).\n */\n @carbon.method\n @impl.implemented\n GetTransformedDamageLocator(index, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n return vec3.set(out, 0, 0, 0);\n }\n const direction = vec3.create();\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\n return vec3.transformMat4(out, out, this.worldTransform);\n }\n\n /**\n * Checks whether this object is in impostor mode. The impostor system that\n * raises the flag is unported, so this reports the default until then.\n */\n @carbon.method\n @impl.adapted\n IsImpostor()\n {\n return this.#impostorMode;\n }\n\n /**\n * Gets a locator position from a named set. Out-of-range or missing-set\n * queries return the world translation in world space and (0,0,0) in\n * object space, as Carbon does.\n */\n @carbon.method\n @impl.implemented\n GetLocatorPositionFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(locatorSetName);\n if (index < 0 || !locators || index >= locators.length)\n {\n if (inWorldSpace)\n {\n return vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n }\n return vec3.set(out, 0, 0, 0);\n }\n const direction = vec3.create();\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\n if (inWorldSpace)\n {\n vec3.transformMat4(out, out, this.worldTransform);\n }\n return out;\n }\n\n /**\n * Gets a locator direction from a named set. Out-of-range or missing-set\n * queries return (0,1,0), as Carbon does.\n */\n @carbon.method\n @impl.implemented\n GetLocatorRotationFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(locatorSetName);\n if (index < 0 || !locators || index >= locators.length)\n {\n return vec3.set(out, 0, 1, 0);\n }\n const position = vec3.create();\n this.#GetLocatorInObjectSpace(position, out, locators[index]);\n if (inWorldSpace)\n {\n EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\n }\n return out;\n }\n\n /**\n * Raises a named controller event on this hull's controllers and forwards it\n * to the effect children and overlay effects.\n */\n @carbon.method\n @impl.implemented\n HandleControllerEvent(name)\n {\n const eventName = String(name ?? \"\");\n for (const controller of this.controllers)\n {\n controller?.HandleEvent?.(eventName);\n }\n for (const child of this.effectChildren)\n {\n child?.HandleControllerEvent?.(eventName);\n }\n for (const overlay of this.overlayEffects)\n {\n overlay?.HandleControllerEvent?.(eventName);\n }\n }\n\n /**\n * Plays an animation once, replacing the current one\n * (Carbon script PlayAnimation maps to PlayAnimationOnce).\n */\n @carbon.method\n @impl.adapted\n PlayAnimation(animName)\n {\n this.#PlayAnimation(animName, true, 1, 0, 1, true);\n }\n\n /**\n * Chains an animation once after the current one (Carbon ChainAnimation).\n */\n @carbon.method\n @impl.implemented\n ChainAnimation(animName)\n {\n this.#PlayAnimation(animName, false, 1, 0, 1, true);\n }\n\n /**\n * Chains an animation with explicit loop, start, and speed settings\n * (Carbon ChainAnimationEx).\n */\n @carbon.method\n @impl.implemented\n ChainAnimationEx(animName, loopCount, start, speed)\n {\n this.#PlayAnimation(animName, false, loopCount, start, speed, true);\n }\n\n // Carbon EveSpaceObject2::PlayAnimation: every playback wrapper funnels\n // into the animation updater, which owns playback state; a missing updater\n // is a Carbon-faithful no-op.\n\n /**\n * Forwards a playback request to the animation updater, which owns all\n * animation state; a hull without an updater does nothing, as in Carbon.\n */\n #PlayAnimation(animName, replace, loopCount, delay, speed, clearWhenDone)\n {\n this.animationUpdater?.PlayAnimation?.(String(animName ?? \"\"), replace, loopCount, delay, speed, clearWhenDone);\n }\n\n /**\n * Recalculates the authored bounding sphere from the mesh geometry\n * resource. Fails when no mesh or ready geometry resource is attached.\n */\n @carbon.method\n @impl.adapted\n RebuildBoundingSphereInformation()\n {\n const mesh = this.mesh;\n if (!mesh)\n {\n return false;\n }\n const geometryRes = mesh.GetGeometryResource?.();\n if (!geometryRes || !geometryRes.IsGood?.())\n {\n return false;\n }\n geometryRes.RecalculateBoundingSphere?.();\n const sphere = vec4.create();\n geometryRes.GetBoundingSphere?.(mesh.GetMeshIndex?.() ?? 0, sphere);\n vec3.set(this.boundingSphereCenter, sphere[0], sphere[1], sphere[2]);\n this.boundingSphereRadius = sphere[3];\n return true;\n }\n\n /** Sets Carbon's authored local bounding sphere from a sph3-compatible value. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's CcpMath::Sphere is represented by core-math sph3; object-shaped center/radius input is accepted at adapter boundaries.\")\n SetBoundingSphereInformation(sphere)\n {\n if (sphere?.center)\n {\n vec3.copy(this.boundingSphereCenter, sphere.center);\n this.boundingSphereRadius = Number(sphere.radius);\n }\n else\n {\n this.boundingSphereRadius = sph3.extract(sphere, this.boundingSphereCenter);\n }\n this.UpdateWorldBounds();\n return this;\n }\n\n /**\n * Returns a plain-object snapshot of the controller variables currently\n * stamped on this hull.\n */\n @carbon.method\n @impl.implemented\n GetControllerVariables()\n {\n return Object.fromEntries(this.#controllerVariables);\n }\n\n /** Gets Carbon's most recently selected geometry LOD. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Geometry resources without multi-LOD support expose their sole browser LOD as index zero.\")\n GetLastUsedMeshLod()\n {\n const geometryResource = this.mesh?.GetGeometryResource?.();\n if (!geometryResource) return -1;\n if (!this.#allowLodSelection) return 0;\n return geometryResource.GetLodIndexForScreenSize?.(this.mesh?.GetMeshIndex?.() ?? 0, this.#meshScreenSize) ?? 0;\n }\n\n /**\n * Gets a named locator's transform (Carbon script GetLocatorTransform maps\n * to GetEveLocatorTransform): the identity for unknown names, the animated\n * bone world transform when the animation updater resolves the name, else\n * the authored locator transform.\n */\n @carbon.method\n @impl.adapted\n GetLocatorTransform(name, out = mat4.create())\n {\n const target = String(name ?? \"\");\n let locator = null;\n for (const candidate of this.locators)\n {\n if (candidate?.GetName?.() === target)\n {\n locator = candidate;\n break;\n }\n }\n if (!locator)\n {\n return mat4.identity(out);\n }\n if (this.animationUpdater?.GetBoneWorldTransform?.(target, out))\n {\n return out;\n }\n return mat4.copy(out, locator.GetTransform());\n }\n\n /**\n * Gets the local axis-aligned bounding box: dynamic skinned bounds when\n * enabled, else the mesh box, else the cached box (at worst it lags one\n * frame). With out arguments it fills them and returns true; without, it\n * returns { min, max }.\n */\n @carbon.method\n @impl.adapted\n GetLocalBoundingBox(minBounds, maxBounds)\n {\n const min = vec3.create();\n const max = vec3.create();\n const updater = this.animationUpdater;\n if (this.dynamicBoundingSphereEnabled && updater?.IsInitialized?.())\n {\n const sphere = vec4.create();\n updater.GetDynamicBounds?.(sphere, min, max);\n vec3.copy(this.#localAabbMin, min);\n vec3.copy(this.#localAabbMax, max);\n }\n else if (this.mesh?.GetBoundingBox?.(min, max))\n {\n vec3.copy(this.#localAabbMin, min);\n vec3.copy(this.#localAabbMax, max);\n }\n else\n {\n vec3.copy(min, this.#localAabbMin);\n vec3.copy(max, this.#localAabbMax);\n }\n if (minBounds && maxBounds)\n {\n vec3.copy(minBounds, min);\n vec3.copy(maxBounds, max);\n return true;\n }\n return { min, max };\n }\n\n /** Gets Carbon's cached local box transformed into a world-axis-aligned box. */\n @carbon.method\n @impl.adapted\n GetWorldBoundingBox(minBounds, maxBounds)\n {\n box3.fromBounds(EveSpaceObject2.#localBox, this.#localAabbMin, this.#localAabbMax);\n box3.transformMat4(EveSpaceObject2.#worldBox, EveSpaceObject2.#localBox, this.worldTransform);\n const min = minBounds ?? vec3.create();\n const max = maxBounds ?? vec3.create();\n vec3.set(min, EveSpaceObject2.#worldBox[0], EveSpaceObject2.#worldBox[1], EveSpaceObject2.#worldBox[2]);\n vec3.set(max, EveSpaceObject2.#worldBox[3], EveSpaceObject2.#worldBox[4], EveSpaceObject2.#worldBox[5]);\n return minBounds && maxBounds ? true : { min, max };\n }\n\n /** Reports whether the attached mesh has a ready geometry resource. */\n @carbon.method\n @impl.implemented\n IsBoundingBoxReady()\n {\n const geometryResource = this.mesh?.GetGeometryResource?.();\n return !!geometryResource?.IsGood?.();\n }\n\n /**\n * Gets Carbon's realized world sphere, optionally accumulated with transform\n * and effect children when query is EVE_BOUNDS_WITH_CHILDREN.\n */\n @carbon.method\n @impl.adapted\n GetBoundingSphere(out = sph3.create(), query = 0)\n {\n if (!this.UpdateWorldBounds()) return false;\n EveSpaceObject2.#SetSphere(out, this.modelWorldPosition, this.#boundingSphereWorldRadius);\n if (!query || !this.DisplayChildren()) return true;\n for (const child of this.children)\n {\n if (child?.GetBoundingSphere?.(EveSpaceObject2.#childSphere, query))\n {\n sph3.union(out, out, EveSpaceObject2.#childSphere);\n }\n }\n for (const child of this.effectChildren)\n {\n if (child?.GetBoundingSphere?.(EveSpaceObject2.#childSphere, query))\n {\n sph3.union(out, out, EveSpaceObject2.#childSphere);\n }\n }\n return true;\n }\n\n /** Updates Carbon's geometry-derived on-screen pixel diameter. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"TriFrustum is supplied structurally by the active engine; both exact and estimated browser frustum methods are supported.\")\n EstimatePixelDiameter(frustum)\n {\n if (this.mesh?.GetBoundingBox?.(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax))\n {\n vec3.copy(this.#localAabbMin, EveSpaceObject2.#boundsMin);\n vec3.copy(this.#localAabbMax, EveSpaceObject2.#boundsMax);\n }\n sph3.fromBounds(EveSpaceObject2.#localSphere, this.#localAabbMin, this.#localAabbMax);\n sph3.transformMat4(EveSpaceObject2.#worldSphere, EveSpaceObject2.#localSphere, this.worldTransform);\n this.estimatedPixelDiameter = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\n return this.estimatedPixelDiameter;\n }\n\n /** Reports the result of the latest Carbon visibility update. */\n @carbon.method\n @impl.implemented\n IsInFrustum()\n {\n return this.#isInFrustum;\n }\n\n /**\n * Gets the bounding sphere center, preferring the dynamic skinned sphere\n * when one is published.\n */\n @carbon.method\n @impl.implemented\n GetBoundingSphereCenter(out = vec3.create())\n {\n if (this.#dynamicBoundingSphere[3] !== -1)\n {\n return vec3.set(out, this.#dynamicBoundingSphere[0], this.#dynamicBoundingSphere[1], this.#dynamicBoundingSphere[2]);\n }\n return vec3.copy(out, this.boundingSphereCenter);\n }\n\n /**\n * Gets the model-scaled bounding sphere radius, preferring the dynamic\n * skinned sphere when one is published.\n */\n @carbon.method\n @impl.implemented\n GetBoundingSphereRadius()\n {\n if (this.#dynamicBoundingSphere[3] !== -1)\n {\n return this.modelScale * this.#dynamicBoundingSphere[3];\n }\n return this.modelScale * this.boundingSphereRadius;\n }\n\n /**\n * Gets the number of mesh-bound bones. Carbon dereferences the animation\n * updater unchecked; CarbonEngineJS reports 0 when none is attached.\n */\n @carbon.method\n @impl.adapted\n GetBoneCount()\n {\n const updater = this.animationUpdater;\n if (!updater)\n {\n return 0;\n }\n if (updater.IsUsingCMF?.())\n {\n if (!updater.HasMeshBinding?.())\n {\n return 0;\n }\n return updater.GetSkeletonBoneIndices?.().length ?? 0;\n }\n return updater.GetMeshBindingBoneCount?.() ?? 0;\n }\n\n /**\n * Pushes shield, armor and hull damage levels to the impact overlay and\n * mirrors them into the ShieldDamage, ArmorDamage and HullDamage controller\n * variables so bound effects follow.\n */\n @carbon.method\n @impl.adapted\n SetImpactDamageState(shield, armor, hull, doCreateArmorImpacts = true)\n {\n this.impactOverlay?.SetDamageState?.(shield, armor, hull, doCreateArmorImpacts);\n this.SetControllerVariable(\"ShieldDamage\", shield);\n this.SetControllerVariable(\"ArmorDamage\", armor);\n this.SetControllerVariable(\"HullDamage\", hull);\n }\n\n /**\n * Toggles a named impact-overlay animation (boosters, hardeners, ...).\n */\n @carbon.method\n @impl.implemented\n SetImpactAnimation(name, enable, duration)\n {\n this.impactOverlay?.ToggleEffect?.(name, enable, duration);\n }\n\n /**\n * Stores a controller variable on the hull and pushes it to the controllers,\n * effect children and overlay effects; the stored value is replayed onto\n * controllers and children added later.\n */\n @carbon.method\n @impl.implemented\n SetControllerVariable(name, value)\n {\n const key = String(name ?? \"\");\n const next = Number(value);\n this.#controllerVariables.set(key, next);\n for (const controller of this.controllers)\n {\n controller?.SetVariable?.(key, next);\n }\n for (const child of this.effectChildren)\n {\n child?.SetControllerVariable?.(key, next);\n }\n for (const overlay of this.overlayEffects)\n {\n overlay?.SetControllerVariable?.(key, next);\n }\n }\n\n /**\n * Forwards a procedural-container variable to every effect child; the hull\n * itself keeps no copy.\n */\n @carbon.method\n @impl.implemented\n SetProceduralContainerVariable(name, value)\n {\n for (const child of this.effectChildren)\n {\n child?.SetProceduralContainerVariable?.(name, value);\n }\n }\n\n /**\n * Starts this hull's controllers and those of its effect children and overlay\n * effects.\n */\n @carbon.method\n @impl.implemented\n StartControllers()\n {\n for (const controller of this.controllers)\n {\n controller?.Start?.();\n }\n for (const child of this.effectChildren)\n {\n child?.StartControllers?.();\n }\n for (const overlay of this.overlayEffects)\n {\n overlay?.StartControllers?.();\n }\n }\n\n /**\n * Applies bone and model transforms to locators and returns\n * [position, rotation, boneIndex] tuples, as the Carbon script surface\n * does (TransformLocators maps to PyTransformLocators). Accepts either\n * locator records ({ position, direction, boneIndex }, Carbon's\n * LocatorStructureList shape) or the same [position, rotation, boneIndex]\n * tuple shape it returns.\n */\n @carbon.method\n @impl.adapted\n TransformLocators(locators = [])\n {\n const result = [];\n for (const locator of locators ?? [])\n {\n const record = Array.isArray(locator)\n ? { position: locator[0], rotation: locator[1], boneIndex: locator[2] }\n : { position: locator?.position, rotation: locator?.direction ?? locator?.rotation, boneIndex: locator?.boneIndex };\n const position = vec3.clone(record.position ?? EveSpaceObject2.#zero);\n const rotation = quat.clone(record.rotation ?? EveSpaceObject2.#identityRotation);\n const boneIndex = Number(record.boneIndex ?? 0);\n this.#TransformLocator(position, rotation, boneIndex);\n if (this.modelTranslationCurve || this.modelRotationCurve)\n {\n this.#ApplyModelTransform(position, rotation);\n }\n result.push([position, rotation, boneIndex]);\n }\n return result;\n }\n\n // Carbon Blue TransformLocator: bone-attached records pick up the mesh\n // bone matrix; without bone data the authored values pass through.\n\n /**\n * Applies the mesh bone matrix to a locator position and rotation for\n * bone-attached locators; the authored values pass through unchanged when\n * there is no usable bone data.\n */\n #TransformLocator(position, rotation, boneIndex)\n {\n const updater = this.animationUpdater;\n if (boneIndex <= 0 || !updater?.IsInitialized?.())\n {\n return;\n }\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, boneIndex);\n if (!bone)\n {\n return;\n }\n vec3.transformMat4(position, position, bone);\n const boneRotation = mat4.getRotation(quat.create(), bone);\n quat.multiply(rotation, boneRotation, rotation);\n }\n\n // Carbon Blue ApplyModelTransform samples both curves at the Be::Time()\n // origin (pure GetValueAt, no playback advance): translation adds, model\n // rotation rotates the position and pre-multiplies.\n\n /**\n * Applies the model translation and rotation curves sampled at time 0 to a\n * locator position and rotation, matching Carbon's Blue locator surface, which\n * reads the curves without advancing playback.\n */\n #ApplyModelTransform(position, rotation)\n {\n if (this.modelTranslationCurve)\n {\n const translation = vec3.create();\n this.modelTranslationCurve.GetValueAt?.(0, translation);\n vec3.add(position, position, translation);\n }\n if (this.modelRotationCurve)\n {\n const modelRotation = quat.create();\n this.modelRotationCurve.GetValueAt?.(0, modelRotation);\n vec3.transformQuat(position, position, modelRotation);\n quat.multiply(rotation, modelRotation, rotation);\n }\n }\n\n // Carbon GetLocatorsForSet: first set matching the name wins.\n\n /**\n * Returns the locator list of the first locator set carrying the name, or null\n * when no set matches; the list stays owned by the locator set.\n */\n #GetLocatorsForSet(locatorSetName)\n {\n const target = String(locatorSetName ?? \"\");\n for (const set of this.locatorSets)\n {\n if (set?.HasName?.(target))\n {\n return set.GetLocators();\n }\n }\n return null;\n }\n\n // Carbon GetLocatorInObjectSpace: the direction is +Y rotated by the\n // authored quaternion; bone-attached locators additionally apply the mesh\n // bone matrix. Carbon leaves the outputs untouched (caller-uninitialized)\n // when bone data is missing; CarbonEngineJS keeps the unskinned values.\n\n /**\n * Writes a locator's object-space position and its direction, which is +Y\n * rotated by the authored quaternion, applying the mesh bone matrix for\n * bone-attached locators; where Carbon leaves the outputs untouched when bone\n * data is missing, this keeps the unskinned values.\n */\n #GetLocatorInObjectSpace(outPosition, outDirection, locator)\n {\n vec3.transformQuat(outDirection, EveSpaceObject2.#unitY, locator.direction);\n vec3.copy(outPosition, locator.position);\n const updater = this.animationUpdater;\n if (locator.boneIndex > 0 && updater?.IsInitialized?.())\n {\n const boneCount = Number(updater.GetMeshBoneCount?.() ?? 0);\n if (locator.boneIndex < boneCount)\n {\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, locator.boneIndex);\n if (bone)\n {\n vec3.transformMat4(outPosition, locator.position, bone);\n EveSpaceObject2.#TransformNormal(outDirection, outDirection, bone);\n }\n }\n }\n }\n\n // Carbon GetClosestLocatorIndex: facing-gated closest search; 0 when the\n // set is missing, -1 when no locator faces the position.\n\n /**\n * Returns the index of the nearest locator in a named set that faces the given\n * world position - 0 when the set is missing, -1 when no locator faces the\n * position.\n */\n #GetClosestLocatorIndex(position, locatorSetName)\n {\n const locators = this.#GetLocatorsForSet(locatorSetName);\n if (!locators)\n {\n return 0;\n }\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\n const locatorPosition = vec3.create();\n const locatorDirection = vec3.create();\n let closestLength = Infinity;\n let closestIndex = -1;\n for (let index = 0; index < locators.length; index++)\n {\n this.#GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index]);\n if (!EveSpaceObject2.#IsLocatorFacingPosition(locatorDirection, posInObjectSpace))\n {\n continue;\n }\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\n if (distance < closestLength)\n {\n closestIndex = index;\n closestLength = distance;\n }\n }\n return closestIndex;\n }\n\n /**\n * Reports whether a locator faces a position, by testing that stepping the\n * object-space position back along the locator direction shortens it.\n */\n static #IsLocatorFacingPosition(locatorDirection, posInObjectSpace)\n {\n const moved = vec3.subtract(vec3.create(), posInObjectSpace, locatorDirection);\n return vec3.squaredLength(moved) < vec3.squaredLength(posInObjectSpace);\n }\n\n /** Rotates a direction by a matrix's rotation basis, ignoring its translation. */\n static #TransformNormal(out, direction, matrix)\n {\n const x = direction[0];\n const y = direction[1];\n const z = direction[2];\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z;\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z;\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z;\n return out;\n }\n\n /** Carbon's authored-or-derived local shape ellipsoid query. */\n @carbon.method\n @impl.implemented\n GetShapeEllipsoid(outCenter, outRadii)\n {\n if (this.shapeEllipsoidRadius[0] > 0)\n {\n vec3.copy(outCenter, this.shapeEllipsoidCenter);\n vec3.copy(outRadii, this.shapeEllipsoidRadius);\n }\n else\n {\n const bounds = this.GetLocalBoundingBox(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax);\n if (bounds === false)\n {\n vec3.set(EveSpaceObject2.#boundsMin, -1, -1, -1);\n vec3.set(EveSpaceObject2.#boundsMax, 1, 1, 1);\n }\n vec3.subtract(outRadii, EveSpaceObject2.#boundsMax, EveSpaceObject2.#boundsMin);\n vec3.scale(outRadii, outRadii, Math.sqrt(3) * 0.5);\n vec3.lerp(outCenter, EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax, 0.5);\n }\n vec3.copy(this.generatedShapeEllipsoidCenter, outCenter);\n vec3.copy(this.generatedShapeEllipsoidRadius, outRadii);\n }\n\n /**\n * Maps the negated dot product of a locator direction and an offset direction\n * onto Carbon's square-root fit score, the ranking used to pick a varied\n * damage locator.\n */\n static #GetDirectionFit(v0, v1)\n {\n const direction = -vec3.dot(v0, v1);\n return direction < 0\n ? (1 - Math.sqrt(Math.abs(direction))) * 0.5\n : (Math.sqrt(Math.abs(direction)) + 1) * 0.5;\n }\n\n /**\n * Intersects a ray with an axis-aligned ellipsoid in the ellipsoid's own space and writes the hit point into out.\n * @returns {number|null} The ray parameter at the hit, or null when the ray is degenerate or misses.\n */\n static #IntersectEllipsoidRay(out, center, radii, origin, direction)\n {\n const vx = direction[0] / radii[0];\n const vy = direction[1] / radii[1];\n const vz = direction[2] / radii[2];\n const sx = (origin[0] - center[0]) / radii[0];\n const sy = (origin[1] - center[1]) / radii[1];\n const sz = (origin[2] - center[2]) / radii[2];\n const vv = vx * vx + vy * vy + vz * vz;\n if (!(vv > 0)) return null;\n const vs = vx * sx + vy * sy + vz * sz;\n const ss = sx * sx + sy * sy + sz * sz;\n let discriminant = (vs / vv) ** 2 - ss / vv + 1 / vv;\n if (discriminant < 0) return null;\n discriminant = Math.sqrt(discriminant);\n let t = -discriminant - vs / vv;\n if (t < 0) t = discriminant - vs / vv;\n vec3.scaleAndAdd(out, origin, direction, t);\n return t;\n }\n\n /** Reports whether a point lies inside an axis-aligned ellipsoid. */\n static #IsPointInsideEllipsoid(center, radii, point)\n {\n const x = (point[0] - center[0]) / radii[0];\n const y = (point[1] - center[1]) / radii[1];\n const z = (point[2] - center[2]) / radii[2];\n return x * x + y * y + z * z <= 1;\n }\n\n // Mesh bone matrices come from the animation updater; only mat4-shaped\n // entries are usable.\n\n /**\n * Unpacks one bone from the updater's palette into a mat4, or null when the\n * index is out of range.\n *\n * The palette is Carbon's storage - one contiguous Float4x3 buffer, stride\n * 12 - so a bone is expanded rather than borrowed. Carbon does the same at\n * every read site with TriMatrixCopyFrom3x4.\n */\n static #GetBoneMatrix(updater, boneIndex)\n {\n const bones = updater.GetMeshBoneMatrixList?.();\n\n if (!bones || boneIndex < 0 || (boneIndex + 1) * 12 > bones.length)\n {\n return null;\n }\n\n return MatrixCopyFrom3x4(mat4.create(), bones, boneIndex);\n }\n\n /**\n * Replays every stored controller variable onto a newly added controller or\n * effect child through the named setter, so late additions start with the same\n * state.\n */\n static #ApplyControllerVariables(target, variables, methodName)\n {\n const setter = target?.[methodName];\n if (typeof setter !== \"function\")\n {\n return;\n }\n for (const [name, value] of variables)\n {\n setter.call(target, name, value);\n }\n }\n\n /**\n * Samples a curve into out through whichever of Update or GetValueAt it\n * exposes, writing the fallback when there is no curve and copying back curves\n * that return a new array instead of filling out.\n */\n static #UpdateCurve(curve, time, out, fallback)\n {\n if (!curve)\n {\n for (let index = 0; index < out.length; index++)\n {\n out[index] = fallback[index];\n }\n return out;\n }\n\n let result;\n if (typeof curve.Update === \"function\")\n {\n result = curve.Update(time, out);\n }\n else if (typeof curve.GetValueAt === \"function\")\n {\n result = curve.GetValueAt(time, out);\n }\n if ((Array.isArray(result) || ArrayBuffer.isView(result)) && result !== out)\n {\n for (let index = 0; index < out.length; index++)\n {\n out[index] = result[index];\n }\n }\n return out;\n }\n\n /**\n * Reads a numeric value from the update context, preferring a getter method\n * and falling back to the named properties, and yields 0 when nothing supplies\n * it.\n */\n static #GetContextValue(context, methodName, ...propertyNames)\n {\n const method = context?.[methodName];\n if (typeof method === \"function\")\n {\n return Number(method.call(context)) || 0;\n }\n for (const propertyName of propertyNames)\n {\n if (context?.[propertyName] !== undefined && context?.[propertyName] !== null)\n {\n return Number(context[propertyName]) || 0;\n }\n }\n return 0;\n }\n\n /**\n * Returns a world sphere's on-screen diameter in pixels from the frustum's\n * exact query, or 0 when the frustum does not expose it.\n */\n static #GetPixelSize(frustum, sphere)\n {\n const method = frustum?.GetPixelSizeAccross;\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\n }\n\n /**\n * Returns a world sphere's on-screen diameter in pixels, preferring the\n * frustum's cheaper estimated query and falling back to the exact one, or 0\n * when the frustum exposes neither.\n */\n static #GetEstimatedPixelSize(frustum, sphere)\n {\n const method = frustum?.GetPixelSizeAccrossEst ?? frustum?.GetPixelSizeAccross;\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\n }\n\n /** Writes a center and radius into a caller-owned sph3. */\n static #SetSphere(out, center, radius)\n {\n return sph3.set(out, center[0], center[1], center[2], radius);\n }\n\n static #zero = Object.freeze([0, 0, 0]);\n\n static #unitY = Object.freeze([0, 1, 0]);\n\n static #locatorDirection = vec3.create();\n static #locatorPosition = vec3.create();\n static #locatorOffset = vec3.create();\n static #objectPosition = vec3.create();\n static #missOffset = vec3.create();\n static #missDirection = vec3.create();\n static #rayOrigin = vec3.create();\n static #rayEnd = vec3.create();\n static #rayDirection = vec3.create();\n static #ellipsoidCenter = vec3.create();\n static #ellipsoidRadii = vec3.create();\n static #boundsMin = vec3.create();\n static #boundsMax = vec3.create();\n static #childSphere = sph3.create();\n static #localSphere = sph3.create();\n static #worldSphere = sph3.create();\n static #localBox = box3.create();\n static #worldBox = box3.create();\n\n static #identityRotation = Object.freeze([0, 0, 0, 1]);\n\n static #identityTransform = mat4.create();\n\n static #damageLocatorSetName = \"damage\";\n\n static ReflectionMode = ReflectionMode;\n\n static Tr2Lod = Tr2Lod;\n\n static ImpactConfiguration = ImpactConfiguration;\n\n}\n"],"names":["TRANSPARENT_AABB_MIN","vec3","create","TRANSPARENT_AABB_MAX","TRANSPARENT_CENTER","OVERLAY_TYPE_OPAQUEONLY","OVERLAY_TYPE_ALL","_EveSpaceObject","_identity","EveSpaceObject2","EveEntity","e","_init_reflectionMode","_init_extra_reflectionMode","_init_effectChildren","_init_extra_effectChildren","_init_children","_init_extra_children","_init_name","_init_extra_name","_init_mute","_init_extra_mute","_init_inheritProperties","_init_extra_inheritProperties","_init_customMasks","_init_extra_customMasks","_init_overlayEffects","_init_extra_overlayEffects","_init_positionDelta","_init_extra_positionDelta","_init_lodLevel","_init_extra_lodLevel","_init_curveSets","_init_extra_curveSets","_init_isPickable","_init_extra_isPickable","_init_estimatedPixelDiameter","_init_extra_estimatedPixelDiameter","_init_estimatedPixelDiameterWithChildren","_init_extra_estimatedPixelDiameterWithChildren","_init_generatedShapeEllipsoidCenter","_init_extra_generatedShapeEllipsoidCenter","_init_generatedShapeEllipsoidRadius","_init_extra_generatedShapeEllipsoidRadius","_init_animationUpdater","_init_extra_animationUpdater","_init_dna","_init_extra_dna","_init_castShadow","_init_extra_castShadow","_init_isAnimated","_init_extra_isAnimated","_init_dynamicBoundingSphereEnabled","_init_extra_dynamicBoundingSphereEnabled","_init_attachments","_init_extra_attachments","_init_decals","_init_extra_decals","_init_lights","_init_extra_lights","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_init_locators","_init_extra_locators","_init_mesh","_init_extra_mesh","_init_impactOverlay","_init_extra_impactOverlay","_init_clipSphereCenter","_init_extra_clipSphereCenter","_init_clipSphereFactor","_init_extra_clipSphereFactor","_init_clipSphereFactor2","_init_extra_clipSphereFactor2","_init_observers","_init_extra_observers","_init_worldPosition","_init_extra_worldPosition","_init_rotationCurve","_init_extra_rotationCurve","_init_worldRotation","_init_extra_worldRotation","_init_modelScale","_init_extra_modelScale","_init_locatorSets","_init_extra_locatorSets","_init_activationStrength","_init_extra_activationStrength","_init_albedoColor","_init_extra_albedoColor","_init_display","_init_extra_display","_init_update","_init_extra_update","_init_secondaryLightingSphereRadius","_init_extra_secondaryLightingSphereRadius","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_dirtLevel","_init_extra_dirtLevel","_init_customShaderData","_init_extra_customShaderData","_init_spaceObjectShipData","_init_extra_spaceObjectShipData","_init_lastDamageLocatorHit","_init_extra_lastDamageLocatorHit","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_modelWorldPosition","_init_extra_modelWorldPosition","_init_modelTranslationCurve","_init_extra_modelTranslationCurve","_init_modelRotationCurve","_init_extra_modelRotationCurve","_init_shapeEllipsoidCenter","_init_extra_shapeEllipsoidCenter","_init_shapeEllipsoidRadius","_init_extra_shapeEllipsoidRadius","_init_translationCurve","_init_extra_translationCurve","_init_worldTransform","_init_extra_worldTransform","_init_inverseWorldTransform","_init_extra_inverseWorldTransform","_init_lastWorldTransform","_init_extra_lastWorldTransform","_init_worldVelocity","_init_extra_worldVelocity","_init_audioGeometry","_init_extra_audioGeometry","_init_isVisible","_init_extra_isVisible","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","schema","enum","list","string","readwrite","boolean","objectRef","read","float32","quat","color","vec4","mat4","carbon","method","impl","adapted","implemented","reason","notImplemented","reflectionMode","effectChildren","children","name","mute","inheritProperties","customMasks","overlayEffects","positionDelta","lodLevel","curveSets","isPickable","estimatedPixelDiameter","estimatedPixelDiameterWithChildren","generatedShapeEllipsoidCenter","generatedShapeEllipsoidRadius","fromValues","animationUpdater","dna","castShadow","isAnimated","dynamicBoundingSphereEnabled","attachments","decals","lights","externalParameters","controllers","locators","mesh","impactOverlay","clipSphereCenter","clipSphereFactor2","clipSphereFactor","observers","worldPosition","rotationCurve","worldRotation","modelScale","locatorSets","activationStrength","albedoColor","createLinear","display","update","secondaryLightingSphereRadius","boundingSphereCenter","dirtLevel","customShaderData","spaceObjectShipData","lastDamageLocatorHit","boundingSphereRadius","modelWorldPosition","modelTranslationCurve","modelRotationCurve","shapeEllipsoidCenter","shapeEllipsoidRadius","translationCurve","worldTransform","inverseWorldTransform","lastWorldTransform","worldVelocity","audioGeometry","isVisible","Map","sph3","set","Tr2Lod","TR2_LOD_UNSPECIFIED","RawData","meshLod","Initialize","controller","IsLinked","Link","damageLocatorCount","HasName","length","SetDamageLocatorCount","GetMesh","SetMesh","AddController","push","AddObserver","observer","SetInheritProperties","colorSet","EveChildInheritProperties","SetProperties","#PropagateInheritProperties","properties","GetProperties","child","light","GetEffectChildByName","target","String","GetName","AddToEffectChildrenList","AddLight","ClearLights","RemoveFromEffectChildrenList","index","indexOf","splice","SetModelRotationCurve","curve","GetModelRotationCurve","SetModelTranslationCurve","GetModelTranslationCurve","UpdateWorldTransform","time","nextTime","Number","copy","SetAndTranspose","GetValueDotAt","rotation","clone","modelRotation","multiply","fromQuat","scale","modelTranslation","transformMat4","invert","identity","UpdateWorldBounds","updater","IsInitialized","GetDynamicBounds","PrepareShaderData","updateContext","GetActivationStrength","GetBoundingSphereRadius","normalizedBoundingRadius","clipOffset","insideSpherePercentage","Math","min","dissolveRadius","center","GetBoundingSphereCenter","add","clipRadiusSq","sign","Set","dissolveRadius2","UpdateShLighting","manager","coefficients","Get","fill","lowThreshold","GetLighting","mediumThreshold","intensityFadeRadius","intensity","max","SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR","ClearShLighting","GetParentData","out","IEveSpaceObject2ParentData","transform","killCount","shipData","clipRadius2Sq","clipFactor","clipFactor2","shLighting","customData","GetPerObjectStructs","vsData","psData","CopyFrom","vs","ps","UpdateSyncronous","observerTransform","GetObserverTransform","Update","EveLODHelper","ShouldUpdate","overlay","params","EveChildUpdateParams","spaceObjectParent","ownerMaxSpeed","maxSpeed","localToWorldTransform","GetLocalToWorldTransform","DisplayChildren","IsAlwaysOn","UpdateAsyncronous","threshold","frequency","Invalidate","previousActivationStrength","SetControllerVariable","shapeCenter","shapeRadius","GetShapeEllipsoid","GetDataTextureOffset","slot","CUSTOM_MASK_MAX","FillPerObjectData","EveCustomMask","ZeroPerObjectData","curveSet","controllerUpdateFrequency","UpdateVisibility","_parentTransform","TR2_LOD_LOW","frustum","GetFrustum","visibilityThreshold","lodFactor","IsSphereVisible","EstimatePixelDiameter","bones","boneCount","getBoneList","attachment","GetBoundingSphere","TR2_LOD_HIGH","TR2_LOD_MEDIUM","GetObserver","SetVisibility","Infinity","UseWithScreenSize","GetRenderables","GetBoundingBox","IsLoading","geometryResource","GetGeometryResource","decal","GetBatches","batches","batchType","perObjectData","renderContext","committedBefore","GetBatchCount","areas","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","GetBatchesFromOverlayVector","#GetSortedTransparentBatches","geometry","viewPosition","GetViewPosition","meshIndex","sorted","area","GetDisplay","GetAreaBoundingBox","GetIndex","dx","dy","dz","distance","sort","a","b","entry","GetMaterialInterface","batch","CreateGeometryBatch","Commit","RebuildCachedData","ReleaseCachedData","all","CollectAreaBlocks","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","blocks","TriRenderBatchAreaBlock","Optimize","CollectAreaBlocksWithSharedMaterials","collector","#EnsureCachedAreaBlocks","GetPickingBatches","pickTypes","TR2_PICK_TYPE_DEFAULT","Tr2PickType","PICK_TYPE_PICKING","TRIBATCHTYPE_PICKING","PICK_TYPE_OPAQUE","TRIBATCHTYPE_ADDITIVE","PICK_TYPE_TRANSPARENT","GetID","_areaID","GetShadowBatches","_shadowPixelSize","committed","material","shaderMaterial","block","areaBlockVector","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","startIndex","count","SetPerObjectData","impactEffect","GetArmorDamageShader","effects","overlayType","GetType","effect","#CommitBlockBatch","priority","SetPriority","#OverlayEffectsFor","GetEffects","HasTransparentBatches","HasTransparentArea","GetSortValue","x","y","z","hypot","GetPerObjectData","_accumulator","GetMeshBoneCount","SetIndex","GetShadowPerObjectData","accumulator","GetLights","lightManager","SetBrightnessMultiplier","IsCastingShadow","_args","Error","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","LightOwner","ShouldReflect","ReflectionRenderable","ShadowCaster","Register","UnRegisterComponents","UnRegister","GetModelCenterWorldPosition","GetWorldPosition","GetWorldRotation","FindSoundEmitter","emitter","SetMute","PlayAnimationEx","animName","loopCount","start","speed","clearWhenDone","CalculateSkinnedBoundingBoxFromTransform","IsUsingCMF","localMin","localMax","GetLocalBoundingBox","corner","CalculateSkinnedBoundingSphere","ClearImpactDamage","Clear","ClearAnimations","CreateImpactFromPosition","position","direction","lifeTime","size","closestDamageLocator","CreateImpact","damageLocatorIndex","EndAnimation","FreezeHighDetailMesh","SetHighDetailDecalState","GetDamageLocatorCount","GetLocatorCount","locatorSetName","GetLocatorsForSet","GetCloseLocatorIndex","posInObjectSpace","locatorPosition","locatorDirection","closestLength","closestIndex","squaredDistance","GetGoodLocatorIndex","GetDamageLocatorDirection","inWorldSpaceOrOut","targetableCall","inWorldSpace","GetDamageLocatorPosition","GetClosestDamageLocatorIndex","GetGoodDamageLocatorIndex","objectPosition","minDistance","maxDistance","MIN_VALUE","bestDirectionFit","locator","subtract","desiredFit","random","bestFit","bestLocator","range","value","sqrt","abs","fit","GetRadius","GetMissPosition","hit","source","directionLength","scaleAndAdd","dot","offsetLength","GetImpactConfiguration","ImpactConfiguration","IMPACT_INVALID","HasImpactConfigurationShield","HasShieldEllipsoid","IMPACT_SHIELD","GetImpactPosition","posPrev","posNow","epsilon","t","UpdateImpact","impactIndex","GetDamageLocator","GetTransformedDamageLocator","IsImpostor","GetLocatorPositionFromSet","GetLocatorRotationFromSet","HandleControllerEvent","eventName","HandleEvent","PlayAnimation","ChainAnimation","ChainAnimationEx","#PlayAnimation","replace","delay","RebuildBoundingSphereInformation","geometryRes","IsGood","RecalculateBoundingSphere","sphere","GetMeshIndex","SetBoundingSphereInformation","radius","extract","GetControllerVariables","Object","fromEntries","GetLastUsedMeshLod","GetLodIndexForScreenSize","GetLocatorTransform","candidate","GetBoneWorldTransform","GetTransform","minBounds","maxBounds","GetWorldBoundingBox","box3","fromBounds","IsBoundingBoxReady","query","union","IsInFrustum","GetBoneCount","HasMeshBinding","GetSkeletonBoneIndices","GetMeshBindingBoneCount","SetImpactDamageState","shield","armor","hull","doCreateArmorImpacts","SetDamageState","SetImpactAnimation","enable","duration","ToggleEffect","key","next","SetVariable","SetProceduralContainerVariable","StartControllers","Start","TransformLocators","result","record","Array","isArray","boneIndex","#TransformLocator","bone","boneRotation","getRotation","#ApplyModelTransform","translation","GetValueAt","transformQuat","#GetLocatorsForSet","GetLocators","#GetLocatorInObjectSpace","outPosition","outDirection","#GetClosestLocatorIndex","outCenter","outRadii","bounds","lerp","CUSTOM_MASK_COUNT","#IsLocatorFacingPosition","moved","squaredLength","#TransformNormal","matrix","#GetDirectionFit","v0","v1","#IntersectEllipsoidRay","radii","origin","vx","vy","vz","sx","sy","sz","vv","ss","discriminant","#IsPointInsideEllipsoid","point","#GetBoneMatrix","GetMeshBoneMatrixList","MatrixCopyFrom3x4","#ApplyControllerVariables","variables","methodName","setter","call","#UpdateCurve","fallback","ArrayBuffer","isView","#GetContextValue","context","propertyNames","propertyName","undefined","#GetPixelSize","GetPixelSizeAccross","#GetEstimatedPixelSize","GetPixelSizeAccrossEst","#SetSphere","freeze","ReflectionMode","constructor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA;AACA;AACA,MAAMA,oBAAoB,GAAGC,IAAI,CAACC,MAAM,EAAE;AAC1C,MAAMC,oBAAoB,GAAGF,IAAI,CAACC,MAAM,EAAE;AAC1C,MAAME,kBAAkB,GAAGH,IAAI,CAACC,MAAM,EAAE;;AAExC;AACA,MAAMG,uBAAuB,GAAG,CAAC;AACjC,MAAMC,gBAAgB,GAAG,CAAC;;AAE1B;AACA;AACA;AACA;AACA;AACA;AALA,IAAAC;AAAA,IAAA,cAAAC,SAAA,CAAA;AAAA,EAAA,QAMA,MAAAC,eAAA,SACqCC,UAAS,CAC9C;AAAA,IAAA;AAAA,MAAA,CAAA;QAAAC,CAAA,EAAA,CAAAC,oBAAA,EAAAC,0BAAA,EAAAC,oBAAA,EAAAC,0BAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,uBAAA,EAAAC,6BAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,oBAAA,EAAAC,0BAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,4BAAA,EAAAC,kCAAA,EAAAC,wCAAA,EAAAC,8CAAA,EAAAC,mCAAA,EAAAC,yCAAA,EAAAC,mCAAA,EAAAC,yCAAA,EAAAC,sBAAA,EAAAC,4BAAA,EAAAC,SAAA,EAAAC,eAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,kCAAA,EAAAC,wCAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,sBAAA,EAAAC,4BAAA,EAAAC,sBAAA,EAAAC,4BAAA,EAAAC,uBAAA,EAAAC,6BAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,mCAAA,EAAAC,yCAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,4BAAA,EAAAC,yBAAA,EAAAC,+BAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,2BAAA,EAAAC,iCAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,sBAAA,EAAAC,4BAAA,EAAAC,oBAAA,EAAAC,0BAAA,EAAAC,2BAAA,EAAAC,iCAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,UAAA,CAAA;QAAAC,CAAA,EAAA,CAAAhI,eAAA,EAAAiI,UAAA;AAAA,OAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,QAAAA,SAAS,EAAE,iBAAiB;AAAEC,QAAAA,MAAM,EAAE;AAAkB,OAAC,CAAC,CAAA,EAAA,CAAA,CAAA,CAKtEC,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACO,KAAK,EAAA,MAAA,EACVC,MAAM,CAACC,IAAI,CAAC,gBAAgB,CAAC,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAI7BL,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,sBAAsB,CAAC,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAIjCN,EAAE,EAAFA,EAAE,CAACE,OAAO,UACVN,IAAI,CAACU,IAAI,CAAC,eAAe,CAAC,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAI1BN,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACW,MAAM,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAIXP,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACQ,SAAS,EACZZ,IAAI,EAAJA,IAAI,CAACa,OAAO,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAIZT,EAAE,EAAFA,EAAE,CAACQ,SAAS,EAAA,MAAA,EACZZ,IAAI,CAACc,SAAS,CAAC,2BAA2B,CAAC,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAI3CV,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,eAAe,CAAC,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAI1BN,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,sBAAsB,CAAC,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAIjCN,EAAE,EAAFA,EAAE,CAACW,IAAI,EAAA,MAAA,EACPf,IAAI,CAACc,SAAS,CAAC,mBAAmB,CAAC,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAInCV,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACO,KAAK,EAAA,MAAA,EACVC,MAAM,CAACC,IAAI,CAAC,QAAQ,CAAC,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAIrBL,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,aAAa,CAAC,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAIxBN,EAAE,EAAFA,EAAE,CAACQ,SAAS,EACZZ,IAAI,EAAJA,IAAI,CAACa,OAAO,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAIZT,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,oCAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACzI,IAAI,CAAA,EAAA,EAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,CAIT6I,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACzI,IAAI,2CAIT6I,EAAE,EAAFA,EAAE,CAACW,IAAI,EAAA,MAAA,EACPf,IAAI,CAACc,SAAS,CAAC,oBAAoB,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAIpCV,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACW,MAAM,CAAA,EAAA,EAAA,EAAA,KAAA,CAAA,EAAA,CAAA,CAIXP,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACa,OAAO,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAIZT,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACa,OAAO,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAIZT,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACa,OAAO,0CAIZT,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,2BAA2B,CAAC,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAItCN,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,qBAAqB,CAAC,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAIhCN,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,UAAU,CAAC,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAIrBN,EAAE,EAAFA,EAAE,CAACE,OAAO,UACVN,IAAI,CAACU,IAAI,CAAC,sBAAsB,CAAC,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAIjCN,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,gBAAgB,CAAC,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAI3BN,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,aAAa,CAAC,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAIxBN,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACc,SAAS,CAAC,aAAa,CAAC,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAI7BV,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACc,SAAS,CAAC,kBAAkB,CAAC,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAIlCV,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACzI,IAAI,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAIT6I,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACQ,SAAS,EACZZ,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACQ,SAAS,EACZZ,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,kBAAkB,CAAC,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAI7BN,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACzI,IAAI,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAIT6I,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACc,SAAS,CAAC,wBAAwB,CAAC,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAIxCV,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACiB,IAAI,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAITb,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,gBAAgB,CAAC,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAI3BN,EAAE,EAAFA,EAAE,CAACQ,SAAS,EACZZ,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACQ,SAAS,EACZZ,IAAI,EAAJA,IAAI,CAACkB,KAAK,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAIVd,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACa,OAAO,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAIZT,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACa,OAAO,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAIZT,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACzI,IAAI,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAIT6I,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACQ,SAAS,EACZZ,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACQ,SAAS,EACZZ,IAAI,EAAJA,IAAI,CAACmB,IAAI,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAQTf,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACmB,IAAI,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAITf,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACO,KAAK,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAIVH,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACgB,OAAO,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAIZZ,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACzI,IAAI,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAIT6I,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACc,SAAS,CAAC,oBAAoB,CAAC,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAIpCV,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACc,SAAS,CAAC,wBAAwB,CAAC,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAIxCV,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACzI,IAAI,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAIT6I,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACzI,IAAI,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAIT6I,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACc,SAAS,CAAC,oBAAoB,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAGpCV,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACoB,IAAI,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAGThB,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACoB,IAAI,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAGThB,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACoB,IAAI,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAGThB,EAAE,EAAFA,EAAE,CAACW,IAAI,EACPf,IAAI,EAAJA,IAAI,CAACzI,IAAI,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAGT6I,EAAE,EAAFA,EAAE,CAACQ,SAAS,EAAA,MAAA,EACZZ,IAAI,CAACc,SAAS,CAAC,iBAAiB,CAAC,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAGjCd,IAAI,EAAJA,IAAI,CAACa,OAAO,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAoGZQ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAiCZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,qBAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAUZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAiBZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAYhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CA6BhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAmBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAaZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAchBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAgBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAOhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAOhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAWhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CA0EZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,gIAAgI,CAAC,+BA4B7IL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CA4ChBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAgChBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAehBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAwBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAahBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAoDZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,+BAyGZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,+HAA+H,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAsG5IL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,mHAAmH,CAAC,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAuChIL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,kJAAkJ,CAAC,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CA6F/JL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,6IAA6I,CAAC,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CA8B1JL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAgChBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CA8ChBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAWhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,gIAAgI,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAgC7IL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,2GAA2G,CAAC,CAAA,EAAA,EAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,CAwExHL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,uEAAuE,CAAC,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAiBpFL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,wHAAwH,CAAC,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAcrIL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,2HAA2H,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAqBxIL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAchBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAsBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACI,cAAc,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAUnBN,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,gCAsChBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAsBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAOhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAWhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CA4BhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAkBZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAYZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,0CAAA,CAAA,EAAA,CAAA,CA8BZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,CAcZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAShBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAShBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAaZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,0BAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAahBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAShBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CA+BhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAWZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,uCAmBZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,iGAAiG,CAAC,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAgB9GL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAOhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,qFAAqF,CAAC,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAkDlGL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAOhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CA0BhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAOhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAQhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,8GAA8G,CAAC,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CA4B3HL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAiBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,yCAiBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAWZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAyBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAqBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAsBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CASZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAuBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,kCAAA,CAAA,EAAA,CAAA,CAsBZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,iIAAiI,CAAC,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAoB9IL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAOhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,2FAA2F,CAAC,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAexGL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CA8BZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,iCAiCZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAaZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAWhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAwBZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACG,MAAM,CAAC,2HAA2H,CAAC,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAexIL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAUhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAchBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAchBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAwBZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAYZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAWhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAwBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,CAahBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAyBhBJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,OAAO,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAuLZH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,WAAW,yCAp1FkBzJ,UAAS,CAAA;AAAA;AAG5C;AAKA4J,IAAAA,cAAc,IAAAhC,UAAA,CAAA,IAAA,CAAA,EAAA1H,oBAAA,OAAG,CAAC,CAAA;;AAElB;AAGA2J,IAAAA,cAAc,IAAA1J,0BAAA,CAAA,IAAA,CAAA,EAAAC,oBAAA,OAAG,EAAE,CAAA;;AAEnB;AAGA0J,IAAAA,QAAQ,IAAAzJ,0BAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,OAAG,EAAE,CAAA;;AAEb;AAIAyJ,IAAAA,IAAI,IAAAxJ,oBAAA,CAAA,IAAA,CAAA,EAAAC,UAAA,OAAG,EAAE,CAAA;;AAET;AAIAwJ,IAAAA,IAAI,IAAAvJ,gBAAA,CAAA,IAAA,CAAA,EAAAC,UAAA,OAAG,KAAK,CAAA;;AAEZ;AAGAuJ,IAAAA,iBAAiB,IAAAtJ,gBAAA,CAAA,IAAA,CAAA,EAAAC,uBAAA,OAAG,IAAI,CAAA;;AAExB;AAGAsJ,IAAAA,WAAW,IAAArJ,6BAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,EAAE,CAAA;;AAEhB;AAGAqJ,IAAAA,cAAc,IAAApJ,uBAAA,CAAA,IAAA,CAAA,EAAAC,oBAAA,OAAG,EAAE,CAAA;;AAEnB;AAGAoJ,IAAAA,aAAa,IAAAnJ,0BAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,IAAI,CAAA;;AAEpB;AAIAmJ,IAAAA,QAAQ,IAAAlJ,yBAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,CAAA,IAAA,EAAG,EAAE,CAAA;;AAEb;AAGAkJ,IAAAA,SAAS,IAAAjJ,oBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,EAAE,CAAA;;AAEd;AAGAiJ,IAAAA,UAAU,IAAAhJ,qBAAA,CAAA,IAAA,CAAA,EAAAC,gBAAA,OAAG,IAAI,CAAA;;AAEjB;AAGAgJ,IAAAA,sBAAsB,IAAA/I,sBAAA,CAAA,IAAA,CAAA,EAAAC,4BAAA,OAAG,CAAC,CAAA;;AAE1B;AAGA+I,IAAAA,kCAAkC,IAAA9I,kCAAA,CAAA,IAAA,CAAA,EAAAC,wCAAA,OAAG,CAAC,CAAA;;AAEtC;IAGA8I,6BAA6B,IAAA7I,8CAAA,CAAA,IAAA,CAAA,EAAAC,mCAAA,OAAGvC,IAAI,CAACC,MAAM,EAAE,CAAA;;AAE7C;AAGAmL,IAAAA,6BAA6B,IAAA5I,yCAAA,CAAA,IAAA,CAAA,EAAAC,mCAAA,CAAA,IAAA,EAAGzC,IAAI,CAACqL,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;;AAE3D;AAGAC,IAAAA,gBAAgB,IAAA5I,yCAAA,CAAA,IAAA,CAAA,EAAAC,sBAAA,OAAG,IAAI,CAAA;;AAEvB;AAGA4I,IAAAA,GAAG,IAAA3I,4BAAA,CAAA,IAAA,CAAA,EAAAC,SAAA,OAAG,EAAE,CAAA;;AAER;AAIA2I,IAAAA,UAAU,IAAA1I,eAAA,CAAA,IAAA,CAAA,EAAAC,gBAAA,OAAG,KAAK,CAAA;;AAElB;AAGA0I,IAAAA,UAAU,IAAAzI,sBAAA,CAAA,IAAA,CAAA,EAAAC,gBAAA,OAAG,KAAK,CAAA;;AAElB;AAGAyI,IAAAA,4BAA4B,IAAAxI,sBAAA,CAAA,IAAA,CAAA,EAAAC,kCAAA,OAAG,KAAK,CAAA;;AAEpC;AAGAwI,IAAAA,WAAW,IAAAvI,wCAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,EAAE,CAAA;;AAEhB;AAGAuI,IAAAA,MAAM,IAAAtI,uBAAA,CAAA,IAAA,CAAA,EAAAC,YAAA,OAAG,EAAE,CAAA;;AAEX;AAIAsI,IAAAA,MAAM,IAAArI,kBAAA,CAAA,IAAA,CAAA,EAAAC,YAAA,OAAG,EAAE,CAAA;;AAEX;AAGAqI,IAAAA,kBAAkB,IAAApI,kBAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG,EAAE,CAAA;;AAEvB;AAGAoI,IAAAA,WAAW,IAAAnI,8BAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,EAAE,CAAA;;AAEhB;AAGAmI,IAAAA,QAAQ,IAAAlI,uBAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,OAAG,EAAE,CAAA;;AAEb;AAGAkI,IAAAA,IAAI,IAAAjI,oBAAA,CAAA,IAAA,CAAA,EAAAC,UAAA,OAAG,IAAI,CAAA;;AAEX;AAGAiI,IAAAA,aAAa,IAAAhI,gBAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,IAAI,CAAA;;AAEpB;IAGAgI,gBAAgB,IAAA/H,yBAAA,CAAA,IAAA,CAAA,EAAAC,sBAAA,OAAGrE,IAAI,CAACC,MAAM,EAAE,CAAA;;AAEhC;AAIAmM,IAAAA,iBAAiB,IAAA9H,4BAAA,CAAA,IAAA,CAAA,EAAAC,sBAAA,OAAG,CAAC,CAAA;;AAErB;AAIA8H,IAAAA,gBAAgB,IAAA7H,4BAAA,CAAA,IAAA,CAAA,EAAAC,uBAAA,OAAG,CAAC,CAAA;;AAEpB;AAGA6H,IAAAA,SAAS,IAAA5H,6BAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,EAAE,CAAA;;AAEd;IAGA4H,aAAa,IAAA3H,qBAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG7E,IAAI,CAACC,MAAM,EAAE,CAAA;;AAE7B;AAGAuM,IAAAA,aAAa,IAAA1H,yBAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,IAAI,CAAA;;AAEpB;IAGA0H,aAAa,IAAAzH,yBAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAGyE,IAAI,CAACzJ,MAAM,EAAE,CAAA;;AAE7B;AAGAyM,IAAAA,UAAU,IAAAxH,yBAAA,CAAA,IAAA,CAAA,EAAAC,gBAAA,OAAG,CAAC,CAAA;;AAEd;AAGAwH,IAAAA,WAAW,IAAAvH,sBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,EAAE,CAAA;;AAEhB;AAGAuH,IAAAA,kBAAkB,IAAAtH,uBAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG,CAAC,CAAA;;AAEtB;IAGAsH,WAAW,IAAArH,8BAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAGmE,IAAI,CAACkD,YAAY,EAAE,CAAA;;AAEjC;AAIAC,IAAAA,OAAO,IAAArH,uBAAA,CAAA,IAAA,CAAA,EAAAC,aAAA,OAAG,IAAI,CAAA;;AAEd;AAGAqH,IAAAA,MAAM,IAAApH,mBAAA,CAAA,IAAA,CAAA,EAAAC,YAAA,OAAG,IAAI,CAAA;;AAEb;AAGAoH,IAAAA,6BAA6B,IAAAnH,kBAAA,CAAA,IAAA,CAAA,EAAAC,mCAAA,OAAG,CAAC,CAAA;;AAEjC;IAGAmH,oBAAoB,IAAAlH,yCAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,OAAGjG,IAAI,CAACC,MAAM,EAAE,CAAA;;AAEpC;AAIAkN,IAAAA,SAAS,IAAAjH,gCAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,CAAC,CAAA;;AAEb;IAGAiH,gBAAgB,IAAAhH,qBAAA,CAAA,IAAA,CAAA,EAAAC,sBAAA,OAAGuD,IAAI,CAAC3J,MAAM,EAAE,CAAA;;AAEhC;AACF;AACA;AACA;AACA;IAGEoN,mBAAmB,IAAA/G,4BAAA,CAAA,IAAA,CAAA,EAAAC,yBAAA,OAAGqD,IAAI,CAAC3J,MAAM,EAAE,CAAA;;AAEnC;AAGAqN,IAAAA,oBAAoB,IAAA9G,+BAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,CAAA,IAAA,EAAG,EAAE,CAAA;;AAEzB;AAGA8G,IAAAA,oBAAoB,IAAA7G,gCAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,CAAA,IAAA,EAAG,EAAE,CAAA;;AAEzB;IAGA6G,kBAAkB,IAAA5G,gCAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG7G,IAAI,CAACC,MAAM,EAAE,CAAA;;AAElC;AAGAwN,IAAAA,qBAAqB,IAAA3G,8BAAA,CAAA,IAAA,CAAA,EAAAC,2BAAA,OAAG,IAAI,CAAA;;AAE5B;AAGA2G,IAAAA,kBAAkB,IAAA1G,iCAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG,IAAI,CAAA;;AAEzB;IAGA0G,oBAAoB,IAAAzG,8BAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,OAAGnH,IAAI,CAACC,MAAM,EAAE,CAAA;;AAEpC;AAGA2N,IAAAA,oBAAoB,IAAAxG,gCAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,CAAA,IAAA,EAAGrH,IAAI,CAACqL,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;;AAElD;AAGAwC,IAAAA,gBAAgB,IAAAvG,gCAAA,CAAA,IAAA,CAAA,EAAAC,sBAAA,OAAG,IAAI,CAAA;IAIvBuG,cAAc,IAAAtG,4BAAA,CAAA,IAAA,CAAA,EAAAC,oBAAA,OAAGoC,IAAI,CAAC5J,MAAM,EAAE,CAAA;IAI9B8N,qBAAqB,IAAArG,0BAAA,CAAA,IAAA,CAAA,EAAAC,2BAAA,OAAGkC,IAAI,CAAC5J,MAAM,EAAE,CAAA;IAIrC+N,kBAAkB,IAAApG,iCAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAGgC,IAAI,CAAC5J,MAAM,EAAE,CAAA;IAIlCgO,aAAa,IAAAnG,8BAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG/H,IAAI,CAACC,MAAM,EAAE,CAAA;AAI7BiO,IAAAA,aAAa,IAAAlG,yBAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,IAAI,CAAA;AAGpBkG,IAAAA,SAAS,IAAAjG,yBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,KAAK,CAAA;IAEjB,oBAAoB,IAAAC,qBAAA,CAAA,IAAA,CAAA,EAAG,IAAIgG,GAAG,CAAC,CAC7B,CAAC,WAAW,EAAE,CAAC,CAAC,EAChB,CAAC,oBAAoB,EAAE,CAAC,CAAC,EACzB,CAAC,cAAc,EAAE,CAAC,CAAC,EACnB,CAAC,aAAa,EAAE,CAAC,CAAC,EAClB,CAAC,YAAY,EAAE,CAAC,CAAC,EACjB,CAAC,kBAAkB,EAAE,CAAC,CAAC,EACvB,CAAC,mBAAmB,EAAE,CAAC,CAAC,CACzB,CAAC;IAEF,wBAAwB,GAAG,IAAI;;AAE/B;AACA;IACA,oBAAoB,GAAG,CAAC;;AAExB;AACA;IACA,sBAAsB,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACpO,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;;AAE7D;AACA;IACA,0BAA0B,GAAG,EAAE;;AAE/B;IACA,YAAY,GAAG,KAAK;IAEpB,cAAc,GAAG,KAAK;AAEtB,IAAA,qBAAqB,GAAGsO,MAAM,CAACC,mBAAmB;IAElD,eAAe,GAAG,CAAC;AAEnB,IAAA,sBAAsB,GAAG,CAAE,EAAE,EAAE,EAAE,CAAE;IAEnC,sBAAsB,GAAG,EAAE;IAE3B,sBAAsB,GAAG,KAAK;;AAE9B;AACA;AACA,IAAA,aAAa,GAAGxO,IAAI,CAACC,MAAM,EAAE;AAE7B,IAAA,aAAa,GAAGD,IAAI,CAACC,MAAM,EAAE;;AAE7B;IACA,kBAAkB,GAAG,IAAI;;AAEzB;IACA,aAAa,GAAG,KAAK;;AAErB;;AAGA;AACF;AACA;AACA;AACA;;AAGE;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,OAAO,GAAGwO,OAAO,CAACxO,MAAM,CAAC,sBAAsB,CAAC;AAEhD,IAAA,OAAO,GAAGwO,OAAO,CAACxO,MAAM,CAAC,sBAAsB,CAAC;;AAEhD;IACA,IAAIyO,OAAOA,GACX;MACE,OAAO,IAAI,CAACzC,IAAI;AAClB,IAAA;;AAEA;IACA,IAAIyC,OAAOA,CAACzC,IAAI,EAChB;AACE,MAAA,IAAI,CAACA,IAAI,GAAGA,IAAI,IAAI,IAAI;AAC1B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AAGE0C,IAAAA,UAAUA,GACV;AACE,MAAA,KAAK,MAAMC,UAAU,IAAI,IAAI,CAAC7C,WAAW,EACzC;AACE,QAAA,IAAI,CAAC6C,UAAU,EAAEC,QAAQ,IAAI,EAC7B;AACED,UAAAA,UAAU,EAAEE,IAAI,GAAG,IAAI,CAAC;AAC1B,QAAA;AACF,MAAA;AACA;AACA;AACA;MACA,IAAI,IAAI,CAACpE,iBAAiB,EAC1B;AACE,QAAA,IAAI,CAAC,2BAA2B,EAAE;AACpC,MAAA;AACA;AACA;AACA;MACA,IAAI,IAAI,CAACwB,aAAa,EACtB;QACE,IAAI6C,kBAAkB,GAAG,CAAC;AAC1B,QAAA,KAAK,MAAMT,GAAG,IAAI,IAAI,CAAC3B,WAAW,EAClC;AACE,UAAA,IAAI2B,GAAG,EAAEU,OAAO,GAAG,QAAQ,CAAC,EAAED,kBAAkB,IAAIT,GAAG,CAACtC,QAAQ,CAACiD,MAAM;AACzE,QAAA;AACA,QAAA,IAAI,CAAC/C,aAAa,CAACgD,qBAAqB,CAACH,kBAAkB,CAAC;AAC9D,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAGAI,IAAAA,OAAOA,GACP;MACE,OAAO,IAAI,CAAClD,IAAI;AAClB,IAAA;;AAEA;AACF;AACA;AACA;IAGEmD,OAAOA,CAACnD,IAAI,EACZ;AACE,MAAA,IAAI,CAACA,IAAI,GAAGA,IAAI,IAAI,IAAI;AAC1B,IAAA;;AAEA;AACF;AACA;AACA;IAGEoD,aAAaA,CAACT,UAAU,EACxB;AACE,MAAA,IAAI,CAAC7C,WAAW,CAACuD,IAAI,CAACV,UAAU,CAAC;AACjC,MAAA,IAAI,CAACA,UAAU,EAAEC,QAAQ,IAAI,EAC7B;AACED,QAAAA,UAAU,EAAEE,IAAI,GAAG,IAAI,CAAC;AAC1B,MAAA;AACAtO,MAAAA,eAAe,CAAC,yBAAyB,CAACoO,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC;AAC/F,MAAA,OAAOA,UAAU;AACnB,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAGEW,WAAWA,CAACC,QAAQ,EACpB;AACE,MAAA,IAAI,CAAClD,SAAS,CAACgD,IAAI,CAACE,QAAQ,CAAC;AAC7B,MAAA,OAAOA,QAAQ;AACjB,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAGEC,oBAAoBA,CAACC,QAAQ,EAC7B;AACE,MAAA,IAAI,CAAC,IAAI,CAAChF,iBAAiB,EAC3B;AACE,QAAA,IAAI,CAACA,iBAAiB,GAAG,IAAIiF,qBAAyB,EAAE;AAC1D,MAAA;AACA,MAAA,IAAI,CAACjF,iBAAiB,CAACkF,aAAa,CAACF,QAAQ,CAAC;AAC9C,MAAA,IAAI,CAAC,2BAA2B,EAAE;AACpC,IAAA;;AAEA;IACA,2BAA2BG,GAC3B;MACE,MAAMC,UAAU,GAAG,IAAI,CAACpF,iBAAiB,CAACqF,aAAa,EAAE;AACzD,MAAA,KAAK,MAAMC,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE0F,QAAAA,KAAK,EAAEP,oBAAoB,GAAGK,UAAU,CAAC;AAC3C,MAAA;AACA,MAAA,KAAK,MAAMG,KAAK,IAAI,IAAI,CAACpE,MAAM,EAC/B;AACEoE,QAAAA,KAAK,EAAER,oBAAoB,GAAGK,UAAU,CAAC;AAC3C,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;IAGEI,oBAAoBA,CAAC1F,IAAI,EACzB;AACE,MAAA,MAAM2F,MAAM,GAAGC,MAAM,CAAC5F,IAAI,IAAI,EAAE,CAAC;AACjC,MAAA,KAAK,MAAMwF,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE,QAAA,IAAI,CAAC0F,KAAK,EAAEK,OAAO,IAAI,IAAIL,KAAK,EAAExF,IAAI,IAAI,EAAE,MAAM2F,MAAM,EACxD;AACE,UAAA,OAAOH,KAAK;AACd,QAAA;AACF,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAGEM,uBAAuBA,CAACN,KAAK,EAC7B;MACE,IAAI,IAAI,CAACtF,iBAAiB,EAC1B;QACEsF,KAAK,EAAEP,oBAAoB,GAAG,IAAI,CAAC/E,iBAAiB,CAACqF,aAAa,EAAE,CAAC;AACvE,MAAA;AACA,MAAA,IAAI,CAACzF,cAAc,CAACgF,IAAI,CAACU,KAAK,CAAC;AAC/BxP,MAAAA,eAAe,CAAC,yBAAyB,CAACwP,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;AACpG,MAAA,OAAOA,KAAK;AACd,IAAA;;AAEA;IAGAO,QAAQA,CAACN,KAAK,EACd;MACE,IAAI,IAAI,CAACvF,iBAAiB,EAC1B;QACEuF,KAAK,EAAER,oBAAoB,GAAG,IAAI,CAAC/E,iBAAiB,CAACqF,aAAa,EAAE,CAAC;AACvE,MAAA;AACA,MAAA,IAAI,CAAClE,MAAM,CAACyD,IAAI,CAACW,KAAK,CAAC;AACzB,IAAA;;AAEA;AACF;AACA;AACA;AAGEO,IAAAA,WAAWA,GACX;AACE,MAAA,IAAI,CAAC3E,MAAM,CAACoD,MAAM,GAAG,CAAC;AACxB,IAAA;;AAEA;AACF;AACA;AACA;IAGEwB,4BAA4BA,CAACT,KAAK,EAClC;MACE,MAAMU,KAAK,GAAG,IAAI,CAACpG,cAAc,CAACqG,OAAO,CAACX,KAAK,CAAC;AAChD,MAAA,IAAIU,KAAK,KAAK,EAAE,EAChB;AACE,QAAA,OAAO,KAAK;AACd,MAAA;MACA,IAAI,CAACpG,cAAc,CAACsG,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;AACpC,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;IAGEG,qBAAqBA,CAACC,KAAK,EAC3B;AACE,MAAA,IAAI,CAACpD,kBAAkB,GAAGoD,KAAK,IAAI,IAAI;AACzC,IAAA;;AAEA;AAGAC,IAAAA,qBAAqBA,GACrB;MACE,OAAO,IAAI,CAACrD,kBAAkB;AAChC,IAAA;;AAEA;AACF;AACA;AACA;IAGEsD,wBAAwBA,CAACF,KAAK,EAC9B;AACE,MAAA,IAAI,CAACrD,qBAAqB,GAAGqD,KAAK,IAAI,IAAI;AAC5C,IAAA;;AAEA;AAGAG,IAAAA,wBAAwBA,GACxB;MACE,OAAO,IAAI,CAACxD,qBAAqB;AACnC,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAGEyD,oBAAoBA,CAACC,IAAI,EACzB;AACE,MAAA,MAAMC,QAAQ,GAAGC,MAAM,CAACF,IAAI,CAAC,IAAI,CAAC;AAClC,MAAA,IAAI,IAAI,CAAC,wBAAwB,KAAKC,QAAQ,EAC9C;AACE,QAAA,OAAO,KAAK;AACd,MAAA;AACA,MAAA,IAAI,CAAC,wBAAwB,GAAGA,QAAQ;MACxCvH,IAAI,CAACyH,IAAI,CAAC,IAAI,CAACtD,kBAAkB,EAAE,IAAI,CAACF,cAAc,CAAC;AACvD;AACA;MACA,IAAI,CAAC,OAAO,CAACyD,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAACvD,kBAAkB,CAAC;MAC3E,IAAI,CAAC,OAAO,CAACuD,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAACvD,kBAAkB,CAAC;AAE3ExN,MAAAA,eAAe,CAAC,YAAY,CAAC,IAAI,CAACqN,gBAAgB,EAAEuD,QAAQ,EAAE,IAAI,CAAC7E,aAAa,EAAE/L,eAAe,CAAC,KAAK,CAAC;AACxG,MAAA,IAAI,IAAI,CAACqN,gBAAgB,EAAE2D,aAAa,EACxC;QACE,IAAI,CAAC3D,gBAAgB,CAAC2D,aAAa,CAACJ,QAAQ,EAAE,IAAI,CAACnD,aAAa,CAAC;AACnE,MAAA,CAAC,MAED;AACEjO,QAAAA,IAAI,CAACsO,GAAG,CAAC,IAAI,CAACL,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,MAAA;AAEAzN,MAAAA,eAAe,CAAC,YAAY,CAAC,IAAI,CAACgM,aAAa,EAAE4E,QAAQ,EAAE,IAAI,CAAC3E,aAAa,EAAEjM,eAAe,CAAC,iBAAiB,CAAC;MACjH,MAAMiR,QAAQ,GAAG/H,IAAI,CAACgI,KAAK,CAAC,IAAI,CAACjF,aAAa,CAAC;MAC/C,IAAI,IAAI,CAACiB,kBAAkB,EAC3B;AACE,QAAA,MAAMiE,aAAa,GAAGjI,IAAI,CAACzJ,MAAM,EAAE;AACnCO,QAAAA,eAAe,CAAC,YAAY,CAAC,IAAI,CAACkN,kBAAkB,EAAE0D,QAAQ,EAAEO,aAAa,EAAEnR,eAAe,CAAC,iBAAiB,CAAC;AACjH;QACAkJ,IAAI,CAACkI,QAAQ,CAACH,QAAQ,EAAEA,QAAQ,EAAEE,aAAa,CAAC;AAClD,MAAA;MAEA9H,IAAI,CAACgI,QAAQ,CAAC,IAAI,CAAC/D,cAAc,EAAE2D,QAAQ,CAAC;AAC5C,MAAA,IAAI,IAAI,CAAC/E,UAAU,KAAK,CAAC,EACzB;AACE;AACA;AACA;AACA;AACA;QACA7C,IAAI,CAACiI,KAAK,CAAC,IAAI,CAAChE,cAAc,EAAE,IAAI,CAACA,cAAc,EAAE,CAAC,IAAI,CAACpB,UAAU,EAAE,IAAI,CAACA,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,CAAC;AAC3G,MAAA;MAEA,IAAI,IAAI,CAACe,qBAAqB,EAC9B;AACE,QAAA,MAAMsE,gBAAgB,GAAG/R,IAAI,CAACC,MAAM,EAAE;AACtCO,QAAAA,eAAe,CAAC,YAAY,CAAC,IAAI,CAACiN,qBAAqB,EAAE2D,QAAQ,EAAEW,gBAAgB,EAAEvR,eAAe,CAAC,KAAK,CAAC;QAC3GR,IAAI,CAACgS,aAAa,CAACD,gBAAgB,EAAEA,gBAAgB,EAAE,IAAI,CAACjE,cAAc,CAAC;AAC3E,QAAA,IAAI,CAACA,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAACvB,aAAa,CAAC,CAAC,CAAC,GAAGwF,gBAAgB,CAAC,CAAC,CAAC;AACrE,QAAA,IAAI,CAACjE,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAACvB,aAAa,CAAC,CAAC,CAAC,GAAGwF,gBAAgB,CAAC,CAAC,CAAC;AACrE,QAAA,IAAI,CAACjE,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAACvB,aAAa,CAAC,CAAC,CAAC,GAAGwF,gBAAgB,CAAC,CAAC,CAAC;AACvE,MAAA,CAAC,MAED;QACE,IAAI,CAACjE,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAACvB,aAAa,CAAC,CAAC,CAAC;QAC/C,IAAI,CAACuB,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAACvB,aAAa,CAAC,CAAC,CAAC;QAC/C,IAAI,CAACuB,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAACvB,aAAa,CAAC,CAAC,CAAC;AACjD,MAAA;AAEA,MAAA,IAAI,CAAC1C,IAAI,CAACoI,MAAM,CAAC,IAAI,CAAClE,qBAAqB,EAAE,IAAI,CAACD,cAAc,CAAC,EACjE;AACEjE,QAAAA,IAAI,CAACqI,QAAQ,CAAC,IAAI,CAACnE,qBAAqB,CAAC;AAC3C,MAAA;MACA,IAAI,CAACoE,iBAAiB,EAAE;AACxB,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AAIEA,IAAAA,iBAAiBA,GACjB;AACE,MAAA,MAAMC,OAAO,GAAG,IAAI,CAAC9G,gBAAgB;MACrC,IAAI,IAAI,CAACI,4BAA4B,IAAI0G,OAAO,EAAEC,aAAa,IAAI,EACnE;AACED,QAAAA,OAAO,CAACE,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;QAC/F,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,EACtC;AACEtS,UAAAA,IAAI,CAACgS,aAAa,CAAC,IAAI,CAACxE,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAACM,cAAc,CAAC;AAC7F,UAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAACpB,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAClF,UAAA,OAAO,IAAI;AACb,QAAA;AACF,MAAA;AACA,MAAA,IAAI,IAAI,CAACa,oBAAoB,GAAG,CAAC,EACjC;AACEvN,QAAAA,IAAI,CAACgS,aAAa,CAAC,IAAI,CAACxE,kBAAkB,EAAE,IAAI,CAACN,oBAAoB,EAAE,IAAI,CAACY,cAAc,CAAC;QAC3F,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAACpB,UAAU,GAAG,IAAI,CAACa,oBAAoB;AAC7E,QAAA,OAAO,IAAI;AACb,MAAA;AACA,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGEgF,IAAAA,iBAAiBA,CAACC,aAAa,GAAG,IAAI,EACtC;MACE,IAAI,CAACL,iBAAiB,EAAE;;AAExB;MACA,IAAI,CAAC9E,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAACnB,aAAa,GAC3C,IAAI,CAACA,aAAa,CAACuG,qBAAqB,GAAGD,aAAa,CAAC,IAAI,CAAC,GAC/D,CAAC;MACL,IAAI,CAACnF,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAACqF,uBAAuB,EAAE;MAC5D,IAAI,CAACrF,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAACF,SAAS;;AAE5C;AACA;AACA,MAAA,IAAIwF,wBAAwB,GAAG,IAAI,CAACD,uBAAuB,EAAE,IAAI,IAAI,CAAChG,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAACA,UAAU,CAAC;MAC7G,MAAMkG,UAAU,GAAG5S,IAAI,CAACiP,MAAM,CAAC,IAAI,CAAC9C,gBAAgB,CAAC;AACrDwG,MAAAA,wBAAwB,IAAIC,UAAU;MACtC,MAAMC,sBAAsB,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,UAAU,GAAGD,wBAAwB,CAAC;MACjF,MAAMK,cAAc,GAAG,IAAI,CAAC3G,gBAAgB,GAAGsG,wBAAwB,IAAI,CAAC,GAAGE,sBAAsB,CAAC;AAEtG,MAAA,MAAMI,MAAM,GAAG,IAAI,CAACC,uBAAuB,EAAE;AAC7C,MAAA,MAAM/G,gBAAgB,GAAG3L,eAAe,CAAC,wBAAwB;MACjER,IAAI,CAACmT,GAAG,CAAChH,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,EAAE8G,MAAM,CAAC;MACzD,MAAMG,YAAY,GAAGN,IAAI,CAACO,IAAI,CAACL,cAAc,CAAC,GAAGA,cAAc,GAAGA,cAAc;MAEhF,IAAI,CAAC,OAAO,CAACM,GAAG,CAAC,kBAAkB,EAAEnH,gBAAgB,CAAC;MACtD,IAAI,CAAC,OAAO,CAACmH,GAAG,CAAC,cAAc,EAAE,CAACF,YAAY,CAAC,CAAC;MAChD,IAAI,CAAC,OAAO,CAACE,GAAG,CAAC,UAAU,EAAE,CAACnH,gBAAgB,CAAC,CAAC,CAAC,EAAEA,gBAAgB,CAAC,CAAC,CAAC,EAAEA,gBAAgB,CAAC,CAAC,CAAC,EAAEiH,YAAY,CAAC,CAAC;MAE3G,MAAMG,eAAe,GAAG,IAAI,CAACnH,iBAAiB,GAAGuG,wBAAwB,IAAI,CAAC,GAAGE,sBAAsB,CAAC;MACxG,IAAI,CAAC,OAAO,CAACS,GAAG,CAAC,eAAe,EAAE,CAACR,IAAI,CAACO,IAAI,CAACE,eAAe,CAAC,GAAGA,eAAe,GAAGA,eAAe,CAAC,CAAC;AACnG,MAAA,IAAI,CAAC,OAAO,CAACD,GAAG,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAACjH,gBAAgB,CAAC,CAAC;AAC7D,MAAA,IAAI,CAAC,OAAO,CAACiH,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAClH,iBAAiB,CAAC,CAAC;AACjE,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGEoH,IAAAA,gBAAgBA,CAACC,OAAO,EAAEjB,aAAa,GAAG,IAAI,EAC9C;MACE,MAAMkB,YAAY,GAAG,IAAI,CAAC,OAAO,CAACC,GAAG,CAAC,wBAAwB,CAAC;AAE/DD,MAAAA,YAAY,CAACE,IAAI,CAAC,CAAC,CAAC;AAEpB,MAAA,MAAMC,YAAY,GAAGrT,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,uBAAuB,EAAE,oBAAoB,CAAC;AAEnH,MAAA,IAAI,EAAE,IAAI,CAACtH,kCAAkC,GAAG2I,YAAY,CAAC,IAAI,OAAOJ,OAAO,EAAEK,WAAW,KAAK,UAAU,EAC3G;AACE,QAAA,OAAO,KAAK;AACd,MAAA;AAEA,MAAA,MAAMC,eAAe,GAAGvT,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,0BAA0B,EAAE,uBAAuB,CAAC;AAC5H,MAAA,MAAMwB,mBAAmB,GAAG,CAACD,eAAe,GAAGF,YAAY,IAAI,IAAI;MACnE,MAAMI,SAAS,GAAGnB,IAAI,CAACC,GAAG,CAACD,IAAI,CAACoB,GAAG,CAAC,CAAC,IAAI,CAAChJ,kCAAkC,GAAG2I,YAAY,IAAIG,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAE1HP,MAAAA,OAAO,CAACK,WAAW,CACjB,IAAI,CAACvH,aAAa,EAClB0H,SAAS,EACT,IAAI,CAAC1G,oBAAoB,GAAG/M,eAAe,CAAC2T,uCAAuC,EACnFT,YACF,CAAC;AAED,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AAGEU,IAAAA,eAAeA,GACf;AACE,MAAA,IAAI,CAAC,OAAO,CAACT,GAAG,CAAC,wBAAwB,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;AAElD,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AAGES,IAAAA,aAAaA,CAACC,GAAG,GAAG,IAAIC,qBAA0B,EAAE,EACpD;MACE1K,IAAI,CAACyH,IAAI,CAACgD,GAAG,CAACE,SAAS,EAAE,IAAI,CAAC1G,cAAc,CAAC;AAC7C;MACAwG,GAAG,CAACG,SAAS,GAAG,CAAC;MACjB7K,IAAI,CAAC0H,IAAI,CAACgD,GAAG,CAACI,QAAQ,EAAE,IAAI,CAACrH,mBAAmB,CAAC;AACjDrN,MAAAA,IAAI,CAACsR,IAAI,CAACgD,GAAG,CAACnI,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAACwH,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACrEW,MAAAA,GAAG,CAAClB,YAAY,GAAG,IAAI,CAAC,OAAO,CAACO,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACtDW,MAAAA,GAAG,CAACK,aAAa,GAAG,IAAI,CAAC,OAAO,CAAChB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACxDW,MAAAA,GAAG,CAACM,UAAU,GAAG,IAAI,CAAC,OAAO,CAACjB,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxDW,MAAAA,GAAG,CAACO,WAAW,GAAG,IAAI,CAAC,OAAO,CAAClB,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;MAC1DW,GAAG,CAACQ,UAAU,GAAG,IAAI,CAAC,OAAO,CAACnB,GAAG,CAAC,wBAAwB,CAAC;AAC3D/J,MAAAA,IAAI,CAAC0H,IAAI,CAACgD,GAAG,CAACS,UAAU,EAAE,IAAI,CAAC,OAAO,CAACpB,GAAG,CAAC,YAAY,CAAC,CAAC;AAEzD,MAAA,OAAOW,GAAG;AACZ,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AAGEU,IAAAA,mBAAmBA,CAACC,MAAM,GAAGxG,OAAO,CAACxO,MAAM,CAAC,sBAAsB,CAAC,EAAEiV,MAAM,GAAGzG,OAAO,CAACxO,MAAM,CAAC,sBAAsB,CAAC,EACpH;AACEgV,MAAAA,MAAM,CAACE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7BD,MAAAA,MAAM,CAACC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7BF,MAAAA,MAAM,CAAC3B,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAACK,GAAG,CAAC,YAAY,CAAC,CAAC;MACxD,OAAO;AAAEyB,QAAAA,EAAE,EAAEH,MAAM;AAAEI,QAAAA,EAAE,EAAEH;OAAQ;AACnC,IAAA;;AAEA;AACF;AACA;AACA;AAGEI,IAAAA,gBAAgBA,CAAC9C,aAAa,GAAG,IAAI,EACrC;AACE,MAAA,MAAMrB,IAAI,GAAG3Q,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AAC9F,MAAA,IAAI,CAACtB,oBAAoB,CAACC,IAAI,CAAC;AAC/B,MAAA,IAAI,CAAC,IAAI,CAACnE,MAAM,EAChB;AACE,QAAA,OAAO,KAAK;AACd,MAAA;AAEA,MAAA,MAAMuI,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,EAAE;AACrD,MAAA,KAAK,MAAMhG,QAAQ,IAAI,IAAI,CAAClD,SAAS,EACrC;AACEkD,QAAAA,QAAQ,EAAEiG,MAAM,GAAGF,iBAAiB,CAAC;AACvC,MAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAA,IAAIG,YAAY,CAACC,YAAY,CAAC,IAAI,CAAC7K,QAAQ,EAAEqG,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAC9E;AACE,QAAA,IAAI,CAAC,oBAAoB,GAAGA,IAAI;AAChC,QAAA,KAAK,MAAMyE,OAAO,IAAI,IAAI,CAAChL,cAAc,EACzC;AACEgL,UAAAA,OAAO,EAAEH,MAAM,GAAGtE,IAAI,EAAEA,IAAI,CAAC;AAC/B,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,IAAI,CAAC7G,cAAc,CAAC2E,MAAM,EAC9B;AACE,QAAA,MAAM4G,MAAM,GAAG,IAAIC,qBAAoB,EAAE;QACzCD,MAAM,CAACE,iBAAiB,GAAG,IAAI;QAC/BF,MAAM,CAACG,aAAa,GAAG3E,MAAM,CAAC,IAAI,CAAC4E,QAAQ,CAAC,IAAI,CAAC;AACjDJ,QAAAA,MAAM,CAACjJ,kBAAkB,GAAG,IAAI,CAACA,kBAAkB;AACnD/C,QAAAA,IAAI,CAACyH,IAAI,CAACuE,MAAM,CAACK,qBAAqB,EAAE,IAAI,CAACC,wBAAwB,EAAE,CAAC;AACxE,QAAA,KAAK,MAAMnG,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;UACEuL,MAAM,CAAC1H,SAAS,GAAG,IAAI,CAACpB,OAAO,KAAK,IAAI,CAACqJ,eAAe,EAAE,IAAI,CAAC,CAACpG,KAAK,EAAEqG,UAAU,IAAI,CAAC;AACtFrG,UAAAA,KAAK,EAAEsF,gBAAgB,GAAG9C,aAAa,EAAEqD,MAAM,CAAC;AAClD,QAAA;AACF,MAAA;MAEA,IAAI,CAAC3J,aAAa,EAAEoJ,gBAAgB,GAAG9C,aAAa,EAAE,IAAI,CAAC;AAC3D,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AAGE8D,IAAAA,iBAAiBA,CAAC9D,aAAa,GAAG,IAAI,EACtC;AACE,MAAA,IAAI,CAAC,IAAI,CAACxF,MAAM,EAChB;AACE,QAAA,OAAO,CAAC;AACV,MAAA;AAEA,MAAA,MAAMuJ,SAAS,GAAG/V,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;MAClH,MAAMgE,SAAS,GAAG,IAAI,CAACrI,SAAS,IAAIoI,SAAS,GAAG,CAAC,GAC7CzD,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC9H,sBAAsB,GAAGsL,SAAS,CAAC,GACpD,CAAC;AACL,MAAA,KAAK,MAAM3H,UAAU,IAAI,IAAI,CAAC7C,WAAW,EACzC;AACE6C,QAAAA,UAAU,EAAE6G,MAAM,GAAGe,SAAS,CAAC;AACjC,MAAA;;AAEA;AACA;AACA,MAAA,IAAI,CAAC,OAAO,CAACC,UAAU,EAAE;AACzB,MAAA,IAAI,CAAC,OAAO,CAACA,UAAU,EAAE;AAEzB,MAAA,MAAMC,0BAA0B,GAAG,IAAI,CAACrJ,mBAAmB,CAAC,CAAC,CAAC;AAC9D,MAAA,IAAI,CAACkF,iBAAiB,CAACC,aAAa,CAAC;MACrC,IAAIkE,0BAA0B,KAAK,IAAI,CAACrJ,mBAAmB,CAAC,CAAC,CAAC,EAC9D;QACE,IAAI,CAACsJ,qBAAqB,GAAG,oBAAoB,EAAE,IAAI,CAACtJ,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACjF,MAAA;MAEA,IAAI,CAAC,OAAO,CAACiG,GAAG,CAAC,UAAU,EAAE,IAAI,CAACjG,mBAAmB,CAAC;MACtD,IAAI,CAAC,OAAO,CAACiG,GAAG,CAAC,UAAU,EAAE,IAAI,CAACjG,mBAAmB,CAAC;AACtD;MACA,IAAI,CAAC,OAAO,CAACiG,GAAG,CAAC,YAAY,EAAE,IAAI,CAAClG,gBAAgB,CAAC;AACrD;AACA;AACA;MACA,IAAI,CAAC,OAAO,CAACmE,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAACzD,cAAc,CAAC;MACnE,IAAI,CAAC,OAAO,CAACyD,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAACxD,qBAAqB,CAAC;MAC7E,IAAI,CAAC,OAAO,CAACwD,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAACzD,cAAc,CAAC;MACnE,IAAI,CAAC,OAAO,CAACyD,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAACxD,qBAAqB,CAAC;AAE7E,MAAA,MAAM6I,WAAW,GAAGpW,eAAe,CAAC,mBAAmB;AACvD,MAAA,MAAMqW,WAAW,GAAGrW,eAAe,CAAC,mBAAmB;AACvD,MAAA,IAAI,CAACsW,iBAAiB,CAACF,WAAW,EAAEC,WAAW,CAAC;MAChD,IAAI,CAAC,OAAO,CAACvD,GAAG,CAAC,eAAe,EAAE,CAAEuD,WAAW,CAAC,CAAC,CAAC,EAAEA,WAAW,CAAC,CAAC,CAAC,EAAEA,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC;MACxF,IAAI,CAAC,OAAO,CAACvD,GAAG,CAAC,gBAAgB,EAAE,CAAEsD,WAAW,CAAC,CAAC,CAAC,EAAEA,WAAW,CAAC,CAAC,CAAC,EAAEA,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC;MAEzF,IAAI,IAAI,CAAC1K,aAAa,EACtB;AACE,QAAA,IAAI,CAAC,OAAO,CAACoH,GAAG,CAAC,kBAAkB,EAAE,CAAE,IAAI,CAACpH,aAAa,CAAC6K,oBAAoB,IAAI,IAAI,CAAC,CAAE,CAAC;AAC5F,MAAA;AAEA,MAAA,KAAK,IAAIC,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAGxW,eAAe,CAACyW,eAAe,EAAED,IAAI,EAAE,EACjE;AACE,QAAA,IAAI,IAAI,CAACrM,WAAW,CAACsE,MAAM,GAAG+H,IAAI,EAClC;AACE,UAAA,IAAI,CAACrM,WAAW,CAACqM,IAAI,CAAC,EAAEE,iBAAiB,GAAGF,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;AAC/E,QAAA,CAAC,MAED;AACEG,UAAAA,cAAa,CAACC,iBAAiB,CAACJ,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;AACnE,QAAA;AACF,MAAA;;AAEA;AACA;AACA;AACA;AACA,MAAA,MAAM7F,IAAI,GAAG3Q,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AAC9F,MAAA,IAAI,IAAI,CAAC,oBAAoB,KAAKrB,IAAI,EACtC;AACE,QAAA,KAAK,MAAMkG,QAAQ,IAAI,IAAI,CAACtM,SAAS,EACrC;AACEsM,UAAAA,QAAQ,EAAE5B,MAAM,GAAGtE,IAAI,EAAEA,IAAI,CAAC;AAChC,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,MAAMnB,KAAK,IAAI,IAAI,CAACzF,QAAQ,EACjC;AACEyF,QAAAA,KAAK,EAAEyF,MAAM,GAAGjD,aAAa,CAAC;AAChC,MAAA;AAEA,MAAA,IAAI,IAAI,CAAClI,cAAc,CAAC2E,MAAM,EAC9B;AACE,QAAA,MAAM4G,MAAM,GAAG,IAAIC,qBAAoB,EAAE;QACzCD,MAAM,CAACE,iBAAiB,GAAG,IAAI;QAC/BF,MAAM,CAACG,aAAa,GAAG3E,MAAM,CAAC,IAAI,CAAC4E,QAAQ,CAAC,IAAI,CAAC;AACjDJ,QAAAA,MAAM,CAACjJ,kBAAkB,GAAG,IAAI,CAACA,kBAAkB;QACnDiJ,MAAM,CAACyB,yBAAyB,GAAGd,SAAS;AAC5C3M,QAAAA,IAAI,CAACyH,IAAI,CAACuE,MAAM,CAACK,qBAAqB,EAAE,IAAI,CAACC,wBAAwB,EAAE,CAAC;AACxE,QAAA,KAAK,MAAMnG,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;UACEuL,MAAM,CAAC1H,SAAS,GAAG,IAAI,CAACpB,OAAO,KAAK,IAAI,CAACqJ,eAAe,EAAE,IAAI,CAAC,CAACpG,KAAK,EAAEqG,UAAU,IAAI,CAAC;AACtFrG,UAAAA,KAAK,EAAEsG,iBAAiB,GAAG9D,aAAa,EAAEqD,MAAM,CAAC;AACnD,QAAA;AACF,MAAA;MAEA,IAAI,CAAC3J,aAAa,EAAEoK,iBAAiB,GAAG9D,aAAa,EAAE,IAAI,CAAC;AAC5D,MAAA,OAAOgE,SAAS;AAClB,IAAA;;AAEA;AACF;AACA;AACA;IAIEe,gBAAgBA,CAAC/E,aAAa,GAAG,IAAI,EAAEgF,gBAAgB,GAAGhX,eAAe,CAAC,kBAAkB,EAC5F;MACE,IAAI,CAAC2N,SAAS,GAAG,KAAK;AACtB,MAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,MAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,MAAA,IAAI,CAAC,IAAI,CAACpB,OAAO,EACjB;AACE,QAAA,OAAO,KAAK;AACd,MAAA;MAEA,IAAI,CAACoF,iBAAiB,EAAE;AACxB,MAAA,IAAI,CAACrH,QAAQ,GAAGyD,MAAM,CAACkJ,WAAW;AAClC,MAAA,IAAI,CAAC,qBAAqB,GAAGlJ,MAAM,CAACkJ,WAAW;AAC/C,MAAA,IAAI,CAAC,aAAa,GAAG,KAAK;MAE1B,MAAMC,OAAO,GAAGlF,aAAa,EAAEmF,UAAU,IAAI,IAAInF,aAAa,EAAEkF,OAAO;AACvE,MAAA,MAAM7D,YAAY,GAAGrT,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,uBAAuB,EAAE,oBAAoB,CAAC;AACnH,MAAA,MAAMuB,eAAe,GAAGvT,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,0BAA0B,EAAE,uBAAuB,CAAC;AAC5H,MAAA,MAAMoF,mBAAmB,GAAGpX,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;AAC5H,MAAA,MAAMqF,SAAS,GAAGrX,eAAe,CAAC,gBAAgB,CAACgS,aAAa,EAAE,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC;AAEnG,MAAA,IAAI,IAAI,CAACjF,oBAAoB,GAAG,CAAC,IAAI,IAAI,CAAC,0BAA0B,GAAG,CAAC,EACxE;AACE/M,QAAAA,eAAe,CAAC,UAAU,CACxBA,eAAe,CAAC,YAAY,EAC5B,IAAI,CAACgN,kBAAkB,EACvB,IAAI,CAAC,0BACP,CAAC;QACD,IAAIkK,OAAO,EAAEI,eAAe,GAAGtX,eAAe,CAAC,YAAY,CAAC,KAAK,KAAK,EACtE;AACE,UAAA,IAAI,CAACuX,qBAAqB,CAACL,OAAO,CAAC;AACnC,UAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC5B,QAAA;AACF,MAAA;;AAEA;AACA;MACA,MAAM;QAAEM,KAAK;AAAEC,QAAAA;AAAU,OAAC,GAAGC,WAAW,CAAC,IAAI,CAAC5M,gBAAgB,CAAC;AAE/D,MAAA,KAAK,MAAM6M,UAAU,IAAI,IAAI,CAACxM,WAAW,EACzC;AACE,QAAA,IAAIwM,UAAU,EAAEZ,gBAAgB,GAAG/E,aAAa,EAAE,IAAI,CAAC1E,cAAc,EAAEkK,KAAK,EAAEC,SAAS,CAAC,EACxF;AACE,UAAA,IAAI,CAAC,cAAc,GAAG,IAAI;UAC1B,IAAI,CAAC9J,SAAS,GAAG,IAAI;AACvB,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,IAAI,CAACiI,eAAe,EAAE,EAC1B;AACE,QAAA,KAAK,MAAMpG,KAAK,IAAI,IAAI,CAACzF,QAAQ,EACjC;UACEyF,KAAK,EAAEuH,gBAAgB,GAAG/E,aAAa,EAAE,IAAI,CAAC1E,cAAc,CAAC;AAC/D,QAAA;AACF,MAAA;MAEA,IAAI,IAAI,CAACsK,iBAAiB,CAAC5X,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC,EAC3D;AACE,QAAA,IAAI,CAAC,YAAY,GAAGkX,OAAO,EAAEI,eAAe,GAAGtX,eAAe,CAAC,YAAY,CAAC,KAAK,KAAK;AACtF,QAAA,IAAI,CAAC0K,kCAAkC,GAAG1K,eAAe,CAAC,aAAa,CAACkX,OAAO,EAAElX,eAAe,CAAC,YAAY,CAAC;QAC9G,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC0K,kCAAkC,IAAI0M,mBAAmB,EACvF;UACE,IAAI,CAACzJ,SAAS,GAAG,IAAI;AACvB,QAAA;AACF,MAAA;MAEA,IAAI,IAAI,CAACA,SAAS,EAClB;AACE,QAAA,IAAI,IAAI,CAAClD,sBAAsB,GAAG8I,eAAe,EAAE,IAAI,CAACjJ,QAAQ,GAAGyD,MAAM,CAAC8J,YAAY,CAAC,KAClF,IAAI,IAAI,CAACpN,sBAAsB,GAAG4I,YAAY,EAAE,IAAI,CAAC/I,QAAQ,GAAGyD,MAAM,CAAC+J,cAAc;AAE1F,QAAA,IAAI,IAAI,CAACpN,kCAAkC,GAAG6I,eAAe,EAAE,IAAI,CAAC,qBAAqB,GAAGxF,MAAM,CAAC8J,YAAY,CAAC,KAC3G,IAAI,IAAI,CAACnN,kCAAkC,GAAG2I,YAAY,EAAE,IAAI,CAAC,qBAAqB,GAAGtF,MAAM,CAAC+J,cAAc,CAAC,KAC/G,IAAI,CAAC,qBAAqB,GAAG/J,MAAM,CAACkJ,WAAW;AACtD,MAAA;AAEA,MAAA,KAAK,MAAMjI,QAAQ,IAAI,IAAI,CAAClD,SAAS,EACrC;QACE,MAAM6D,MAAM,GAAGX,QAAQ,EAAE+I,WAAW,IAAI,IAAI/I,QAAQ,EAAEA,QAAQ;AAC9DW,QAAAA,MAAM,EAAEqI,aAAa,GAAG,IAAI,CAACrK,SAAS,CAAC;AACzC,MAAA;AACA,MAAA,KAAK,MAAM6B,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE0F,QAAAA,KAAK,EAAEuH,gBAAgB,GAAG/E,aAAa,EAAE,IAAI,CAAC1E,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC;AAC3F,MAAA;MAEA,IAAI,IAAI,CAAC7B,IAAI,IAAI,IAAI,CAAC,0BAA0B,GAAG,CAAC,EACpD;AACEzL,QAAAA,eAAe,CAAC,UAAU,CACxBA,eAAe,CAAC,YAAY,EAC5B,IAAI,CAACgN,kBAAkB,EACvB,IAAI,CAAC,0BACP,CAAC;AACD,QAAA,IAAI,CAAC,eAAe,GAAGhN,eAAe,CAAC,sBAAsB,CAACkX,OAAO,EAAElX,eAAe,CAAC,YAAY,CAAC,GAAGqX,SAAS;QAChH,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,GAAGY,QAAQ;AAC7D,QAAA,IAAI,CAACxM,IAAI,CAACyM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,0BAA0B,CAAC;AACtF,MAAA;MACA,OAAO,IAAI,CAACvK,SAAS;AACvB,IAAA;;AAEA;AAIAwK,IAAAA,cAAcA,CAACrE,GAAG,GAAG,EAAE,EACvB;MACE,IAAI,CAAC,IAAI,CAACvH,OAAO,IAAI,CAAC,IAAI,CAACoB,SAAS,EAAE,OAAOmG,GAAG;MAChD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,EAClD;AACE,QAAA,IAAI,CAACrI,IAAI,EAAE2M,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;AACrE,MAAA;AACA,MAAA,IAAI,IAAI,CAAC3M,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAACA,IAAI,CAAC4M,SAAS,IAAI,KAAK,IAAI,EACxE;AACEvE,QAAAA,GAAG,CAAChF,IAAI,CAAC,IAAI,CAAC;AAChB,MAAA;AACA,MAAA,IAAI,IAAI,CAAC8G,eAAe,EAAE,EAC1B;AACE,QAAA,KAAK,MAAMpG,KAAK,IAAI,IAAI,CAACzF,QAAQ,EAAEyF,KAAK,EAAE2I,cAAc,GAAGrE,GAAG,CAAC;AACjE,MAAA;AACA,MAAA,KAAK,MAAMtE,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE,QAAA,IAAI,IAAI,CAAC8L,eAAe,EAAE,IAAIpG,KAAK,EAAEqG,UAAU,IAAI,EAAErG,KAAK,EAAE2I,cAAc,GAAGrE,GAAG,CAAC;AACnF,MAAA;MACA,IAAI,IAAI,CAACrI,IAAI,IAAI,IAAI,CAAC,cAAc,EACpC;QACE,MAAM6M,gBAAgB,GAAG,IAAI,CAAC7M,IAAI,CAAC8M,mBAAmB,IAAI;AAC1D,QAAA,IAAID,gBAAgB,EACpB;AACE,UAAA,KAAK,MAAME,KAAK,IAAI,IAAI,CAACpN,MAAM,EAC/B;AACEoN,YAAAA,KAAK,EAAEL,cAAc,GAAGrE,GAAG,EAAE,IAAI,EAAEwE,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC;AAC5E,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA,OAAOxE,GAAG;AACZ,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAIE2E,IAAAA,UAAUA,CAACC,OAAO,EAAEC,SAAS,EAAEC,aAAa,EAAEjP,MAAM,EAAEkP,aAAa,GAAG,IAAI,EAC1E;AACE,MAAA,IAAI,CAAC,IAAI,CAACpN,IAAI,EAAE,OAAO,KAAK;MAC5B,IAAI,IAAI,CAACA,IAAI,CAACc,OAAO,KAAK,KAAK,EAAE,OAAO,KAAK;;AAE7C;AACA;MACA,MAAMuM,eAAe,GAAGJ,OAAO,CAACK,aAAa,IAAI,IAAI,CAAC;AAEtD,MAAA,IAAI,IAAI,CAAC3M,kBAAkB,KAAK,CAAC,EACjC;AACE,QAAA,KAAK,MAAMuL,UAAU,IAAI,IAAI,CAACxM,WAAW,EACzC;UACEwM,UAAU,EAAEc,UAAU,GAAGC,OAAO,EAAEC,SAAS,EAAEC,aAAa,EAAEjP,MAAM,CAAC;AACrE,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAC+B,aAAa,EAAE+M,UAAU,GAAGC,OAAO,EAAEC,SAAS,EAAEC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC;MAEzF,MAAMI,KAAK,GAAG,IAAI,CAACvN,IAAI,CAACwN,QAAQ,GAAGN,SAAS,CAAC;AAC7C,MAAA,IAAIK,KAAK,EACT;AACE,QAAA,IAAIL,SAAS,KAAKO,YAAY,CAACC,wBAAwB,EACvD;UACE,IAAI,CAAC1N,IAAI,CAACgN,UAAU,CAACC,OAAO,EAAEM,KAAK,EAAEJ,aAAa,CAAC;AACrD,QAAA,CAAC,MAED;UACE,IAAI,CAAC,4BAA4B,CAACI,KAAK,EAAEN,OAAO,EAAEE,aAAa,EAAEC,aAAa,CAAC;AACjF,QAAA;AACF,MAAA;;AAEA;AACA,MAAA,IAAI,CAACO,2BAA2B,CAACV,OAAO,EAAEE,aAAa,EAAED,SAAS,EAAE,IAAI,CAAClN,IAAI,CAAC;MAE9E,OAAO,CAACiN,OAAO,CAACK,aAAa,IAAI,IAAI,CAAC,IAAID,eAAe;AAC3D,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;IACE,4BAA4BO,CAACL,KAAK,EAAEN,OAAO,EAAEE,aAAa,EAAEC,aAAa,EACzE;MACE,MAAMS,QAAQ,GAAG,IAAI,CAAC7N,IAAI,CAAC8M,mBAAmB,IAAI,IAAI,IAAI;AAC1D,MAAA,MAAMgB,YAAY,GAAGV,aAAa,EAAEW,eAAe,IAAI;MACvD,MAAMC,SAAS,GAAG,IAAI,CAAChO,IAAI,CAACgO,SAAS,IAAI,CAAC;MAE1C,MAAMC,MAAM,GAAG,EAAE;AACjB,MAAA,KAAK,MAAMC,IAAI,IAAIX,KAAK,EACxB;QACE,IAAI,CAACW,IAAI,IAAIA,IAAI,CAACC,UAAU,IAAI,KAAK,KAAK,EAAE;QAE5Cpa,IAAI,CAACsO,GAAG,CAACnO,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrC,QAAA,IAAI2Z,QAAQ,EAAEO,kBAAkB,GAAGJ,SAAS,EAAEE,IAAI,CAACG,QAAQ,EAAE,EAAEva,oBAAoB,EAAEG,oBAAoB,CAAC,EAC1G;UACEF,IAAI,CAACmT,GAAG,CAAChT,kBAAkB,EAAEJ,oBAAoB,EAAEG,oBAAoB,CAAC;UACxEF,IAAI,CAAC8R,KAAK,CAAC3R,kBAAkB,EAAEA,kBAAkB,EAAE,GAAG,CAAC;AACzD,QAAA;QACAH,IAAI,CAACgS,aAAa,CAAC7R,kBAAkB,EAAEA,kBAAkB,EAAE,IAAI,CAAC2N,cAAc,CAAC;AAE/E,QAAA,MAAMyM,EAAE,GAAG,CAACR,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI5Z,kBAAkB,CAAC,CAAC,CAAC;AAC3D,QAAA,MAAMqa,EAAE,GAAG,CAACT,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI5Z,kBAAkB,CAAC,CAAC,CAAC;AAC3D,QAAA,MAAMsa,EAAE,GAAG,CAACV,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI5Z,kBAAkB,CAAC,CAAC,CAAC;QAC3D+Z,MAAM,CAAC5K,IAAI,CAAC;UAAE6K,IAAI;UAAEO,QAAQ,EAAEH,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA;AAAG,SAAC,CAAC;AAC9D,MAAA;AAEAP,MAAAA,MAAM,CAACS,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAACH,QAAQ,GAAGE,CAAC,CAACF,QAAQ,CAAC;AAE9C,MAAA,KAAK,MAAMI,KAAK,IAAIZ,MAAM,EAC1B;AACE,QAAA,MAAMC,IAAI,GAAGW,KAAK,CAACX,IAAI;AACvB,QAAA,IAAI,CAACA,IAAI,CAACY,oBAAoB,IAAI,EAAE;AACpC,QAAA,MAAMC,KAAK,GAAG,IAAI,CAAC/O,IAAI,CAACgP,mBAAmB,CAACnB,QAAQ,EAAEK,IAAI,EAAEf,aAAa,CAAC;AAC1E,QAAA,IAAI4B,KAAK,EAAE9B,OAAO,CAACgC,MAAM,CAACF,KAAK,CAAC;AAClC,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAIEG,IAAAA,iBAAiBA,GACjB;MACE,IAAI,CAACC,iBAAiB,EAAE;AACxB,MAAA,IAAI,CAAC,IAAI,CAACnP,IAAI,EAAE;MAEhB,MAAMoP,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAChb,gBAAgB,CAAC;MACzD,IAAI,CAAC4L,IAAI,CAACqP,iBAAiB,CAACD,GAAG,EAAE3B,YAAY,CAAC6B,mBAAmB,CAAC;MAClE,IAAI,CAACtP,IAAI,CAACqP,iBAAiB,CAACD,GAAG,EAAE3B,YAAY,CAACC,wBAAwB,CAAC;MACvE,IAAI,CAAC1N,IAAI,CAACqP,iBAAiB,CAACD,GAAG,EAAE3B,YAAY,CAAC8B,kBAAkB,CAAC;AACjE,MAAA,IAAI,CAACvP,IAAI,CAACqP,iBAAiB,CACzB,IAAI,CAAC,sBAAsB,CAAClb,uBAAuB,CAAC,EAAEsZ,YAAY,CAAC6B,mBAAmB,CAAC;AACzF,MAAA,KAAK,MAAME,MAAM,IAAI,IAAI,CAAC,sBAAsB,EAChD;AACEC,QAAAA,uBAAuB,CAACC,QAAQ,CAACF,MAAM,CAAC;AAC1C,MAAA;AAEA,MAAA,IAAI,CAACxP,IAAI,CAAC2P,oCAAoC,CAC5C,IAAI,CAAC,sBAAsB,EAAElC,YAAY,CAAC6B,mBAAmB,CAAC;AAChE,MAAA,KAAK,MAAMM,SAAS,IAAI,IAAI,CAAC,sBAAsB,EACnD;QACEA,SAAS,CAACF,QAAQ,EAAE;AACtB,MAAA;AACA,MAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;AACpC,IAAA;;AAEA;AACF;AACA;AACA;AAGEP,IAAAA,iBAAiBA,GACjB;AACE,MAAA,KAAK,MAAMK,MAAM,IAAI,IAAI,CAAC,sBAAsB,EAChD;QACEA,MAAM,CAACxM,MAAM,GAAG,CAAC;AACnB,MAAA;AACA,MAAA,IAAI,CAAC,sBAAsB,CAACA,MAAM,GAAG,CAAC;AACtC,MAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;AACrC,IAAA;;AAEA;AACF;AACA;AACA;IACE,uBAAuB6M,GACvB;AACE,MAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC7P,IAAI,EAAE,IAAI,CAACkP,iBAAiB,EAAE;AACzE,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAGEY,iBAAiBA,CAAC7C,OAAO,EAAE8C,SAAS,GAAGC,qBAAqB,EAAE7C,aAAa,GAAG,IAAI,EAClF;AACE,MAAA,IAAI4C,SAAS,GAAGE,WAAW,CAACC,iBAAiB,EAC7C;QACE,IAAI,CAAClD,UAAU,CAACC,OAAO,EAAEQ,YAAY,CAAC0C,oBAAoB,EAAEhD,aAAa,CAAC;AAC5E,MAAA;AAEA,MAAA,IAAI4C,SAAS,GAAGE,WAAW,CAACG,gBAAgB,EAC5C;QACE,IAAI,CAACpD,UAAU,CAACC,OAAO,EAAEQ,YAAY,CAAC6B,mBAAmB,EAAEnC,aAAa,CAAC;QACzE,IAAI,CAACH,UAAU,CAACC,OAAO,EAAEQ,YAAY,CAAC8B,kBAAkB,EAAEpC,aAAa,CAAC;AACxE,QAAA,IAAI,CAACQ,2BAA2B,CAACV,OAAO,EAAEE,aAAa,EAAEM,YAAY,CAACC,wBAAwB,EAAE,IAAI,CAAC1N,IAAI,CAAC;AAC1G,QAAA,IAAI,CAAC2N,2BAA2B,CAACV,OAAO,EAAEE,aAAa,EAAEM,YAAY,CAAC4C,qBAAqB,EAAE,IAAI,CAACrQ,IAAI,CAAC;AACzG,MAAA;AAEA,MAAA,IAAI+P,SAAS,GAAGE,WAAW,CAACK,qBAAqB,EACjD;AACE;AACA;AACA;AACA,QAAA,IAAI,CAAC,IAAI,CAACtQ,IAAI,IAAI,IAAI,CAACA,IAAI,CAACc,OAAO,KAAK,KAAK,EAC7C;AACE,UAAA,OAAO,IAAI;AACb,QAAA;AAEA,QAAA,KAAK,MAAMoM,SAAS,IAAI,CAAEO,YAAY,CAACC,wBAAwB,EAAED,YAAY,CAAC4C,qBAAqB,CAAE,EACrG;UACE,MAAM9C,KAAK,GAAG,IAAI,CAACvN,IAAI,CAACwN,QAAQ,GAAGN,SAAS,CAAC;AAE7C,UAAA,IAAIK,KAAK,EACT;YACE,IAAI,CAACvN,IAAI,CAACgN,UAAU,GAAGC,OAAO,EAAEM,KAAK,EAAEJ,aAAa,CAAC;AACvD,UAAA;AACF,QAAA;AACF,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AAGEoD,IAAAA,KAAKA,CAACC,OAAO,GAAG,CAAC,EACjB;AACE,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAIEC,IAAAA,gBAAgBA,CAACxD,OAAO,EAAEE,aAAa,EAAEuD,gBAAgB,EACzD;AACE,MAAA,IAAI,CAAC,IAAI,CAAC1Q,IAAI,IAAI,IAAI,CAACA,IAAI,CAACc,OAAO,KAAK,KAAK,EAAE,OAAO,KAAK;AAC3D,MAAA,IAAI,CAAC,uBAAuB,EAAE;MAE9B,MAAM+M,QAAQ,GAAG,IAAI,CAAC7N,IAAI,CAAC8M,mBAAmB,IAAI,IAAI,IAAI;MAC1D,MAAMkB,SAAS,GAAG,IAAI,CAAChO,IAAI,CAACgO,SAAS,IAAI,CAAC;MAE1C,IAAI2C,SAAS,GAAG,KAAK;AACrB,MAAA,KAAK,MAAMf,SAAS,IAAI,IAAI,CAAC,sBAAsB,EACnD;AACE,QAAA,MAAMgB,QAAQ,GAAGhB,SAAS,CAACiB,cAAc;QACzC,IAAI,CAACD,QAAQ,EAAE;AACf,QAAA,KAAK,MAAME,KAAK,IAAIlB,SAAS,CAACmB,eAAe,EAC7C;AACE,UAAA,MAAMhC,KAAK,GAAG,IAAIiC,cAAc,EAAE;AAClCjC,UAAAA,KAAK,CAACkC,WAAW,CAACL,QAAQ,CAAC;AAC3B,UAAA,IAAI,CAAC7B,KAAK,CAACmC,OAAO,EAAE,EAAE;AACtBnC,UAAAA,KAAK,CAACoC,iBAAiB,CAACtD,QAAQ,EAAEG,SAAS,EAAE8C,KAAK,CAACM,UAAU,EAAEN,KAAK,CAACO,KAAK,EAAE,KAAK,CAAC;AAClFtC,UAAAA,KAAK,CAACuC,gBAAgB,CAACnE,aAAa,IAAI,IAAI,CAAC;UAC7CwD,SAAS,GAAG1D,OAAO,CAACgC,MAAM,CAACF,KAAK,CAAC,IAAI4B,SAAS;AAChD,QAAA;AACF,MAAA;AACA,MAAA,OAAOA,SAAS;AAClB,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAIEhD,2BAA2BA,CAACV,OAAO,EAAEE,aAAa,EAAED,SAAS,EAAElN,IAAI,EACnE;MACE,MAAMuR,YAAY,GAAG,IAAI,CAACtR,aAAa,EAAEuR,oBAAoB,GAAGtE,SAAS,CAAC,IAAI,IAAI;MAClF,IAAI,CAACqE,YAAY,IAAI,CAAC,IAAI,CAAC5S,cAAc,CAACqE,MAAM,EAAE,OAAO,KAAK;AAC9D,MAAA,IAAI,CAAChD,IAAI,EAAE,OAAO,KAAK;AACvB,MAAA,IAAI,CAAC,uBAAuB,EAAE;MAE9B,MAAMqN,eAAe,GAAGJ,OAAO,CAACK,aAAa,IAAI,IAAI,CAAC;MAEtD,MAAMO,QAAQ,GAAG7N,IAAI,CAAC8M,mBAAmB,IAAI,IAAI,IAAI;AACrD,MAAA,MAAMkB,SAAS,GAAGhO,IAAI,CAACgO,SAAS,IAAI,CAAC;AAErC,MAAA,IAAIuD,YAAY,EAChB;QACE,KAAK,MAAMT,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC1c,gBAAgB,CAAC,EACjE;AACE,UAAA,IAAI,CAAC,iBAAiB,CAAC6Y,OAAO,EAAEsE,YAAY,EAAE1D,QAAQ,EAAEG,SAAS,EAAE8C,KAAK,EAAE3D,aAAa,EAAE,UAAU,CAAC;AACtG,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,MAAMxD,OAAO,IAAI,IAAI,CAAChL,cAAc,EACzC;QACE,MAAM8S,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC9H,OAAO,EAAEuD,SAAS,CAAC;QAC3D,IAAI,CAACuE,OAAO,EAAE;AAEd,QAAA,MAAMC,WAAW,GAAG/H,OAAO,CAACgI,OAAO,CAACzE,SAAS,CAAC;QAC9C,MAAMsC,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAACkC,WAAW,CAAC;AACvD,QAAA,KAAK,MAAME,MAAM,IAAIH,OAAO,EAC5B;AACE,UAAA,KAAK,MAAMX,KAAK,IAAItB,MAAM,EAC1B;AACE,YAAA,IAAI,CAAC,iBAAiB,CAACvC,OAAO,EAAE2E,MAAM,EAAE/D,QAAQ,EAAEG,SAAS,EAAE8C,KAAK,EAAE3D,aAAa,EAAE,CAAC,CAAC;AACvF,UAAA;AACF,QAAA;AACF,MAAA;MAEA,OAAO,CAACF,OAAO,CAACK,aAAa,IAAI,IAAI,CAAC,IAAID,eAAe;AAC3D,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACE,IAAA,iBAAiBwE,CAAC5E,OAAO,EAAE2D,QAAQ,EAAE/C,QAAQ,EAAEG,SAAS,EAAE8C,KAAK,EAAE3D,aAAa,EAAE2E,QAAQ,EACxF;AACE,MAAA,MAAM/C,KAAK,GAAG,IAAIiC,cAAc,EAAE;AAClCjC,MAAAA,KAAK,CAACkC,WAAW,CAACL,QAAQ,CAAC;AAC3B,MAAA,IAAI,CAAC7B,KAAK,CAACmC,OAAO,EAAE,EAAE;MACtB,IAAIY,QAAQ,KAAK,CAAC,EAAE/C,KAAK,CAACgD,WAAW,CAACD,QAAQ,CAAC;AAC/C/C,MAAAA,KAAK,CAACoC,iBAAiB,CAACtD,QAAQ,EAAEG,SAAS,EAAE8C,KAAK,CAACM,UAAU,EAAEN,KAAK,CAACO,KAAK,EAAE,KAAK,CAAC;AAClFtC,MAAAA,KAAK,CAACuC,gBAAgB,CAACnE,aAAa,IAAI,IAAI,CAAC;AAC7CF,MAAAA,OAAO,CAACgC,MAAM,CAACF,KAAK,CAAC;AACvB,IAAA;;AAEA;;AAEA;AACF;AACA;AACA;AACE,IAAA,kBAAkBiD,CAACrI,OAAO,EAAEuD,SAAS,EACrC;AACE,MAAA,OAAOvD,OAAO,EAAEsI,UAAU,GAAG/E,SAAS,CAAC,IAAI,IAAI;AACjD,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAIEgF,IAAAA,qBAAqBA,GACrB;AACE,MAAA,IAAI,CAAC,IAAI,CAAClS,IAAI,EAAE,OAAO,KAAK;AAC5B,MAAA,IAAI,CAAC,IAAI,CAACA,IAAI,CAACwN,QAAQ,GAAGC,YAAY,CAACC,wBAAwB,CAAC,EAAE1K,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAE/F,MAAA,KAAK,MAAM2G,OAAO,IAAI,IAAI,CAAChL,cAAc,EACzC;AACE,QAAA,IAAIgL,OAAO,EAAEwI,kBAAkB,IAAI,EAAE,OAAO,IAAI;AAClD,MAAA;AACA,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;AACF;AACA;AACA;AAIEC,IAAAA,YAAYA,CAAChF,aAAa,GAAG,IAAI,EACjC;AACE,MAAA,MAAMU,YAAY,GAAGV,aAAa,EAAEW,eAAe,IAAI;AACvD,MAAA,MAAMsE,CAAC,GAAG,CAACvE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAACjM,cAAc,CAAC,EAAE,CAAC;AAC5D,MAAA,MAAMyQ,CAAC,GAAG,CAACxE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAACjM,cAAc,CAAC,EAAE,CAAC;AAC5D,MAAA,MAAM0Q,CAAC,GAAG,CAACzE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAACjM,cAAc,CAAC,EAAE,CAAC;MAC5D,OAAOgF,IAAI,CAAC2L,KAAK,CAACH,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AAC5B,IAAA;;AAEA;AACF;AACA;AACA;AAIEE,IAAAA,gBAAgBA,CAACC,YAAY,GAAG,IAAI,EACpC;AACE;AACA;AACA;AACA;AACA;MACA,MAAM1G,SAAS,GAAG,IAAI,CAAC3M,gBAAgB,EAAE+G,aAAa,IAAI,GACrD,IAAI,CAAC/G,gBAAgB,CAACsT,gBAAgB,IAAI,IAAI,CAAC,GAChD,IAAI;MACR,IAAI3G,SAAS,KAAK,IAAI,EACtB;AACE,QAAA,IAAI,CAAC,OAAO,CAAC4G,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,CAAE5G,SAAS,CAAE,CAAC;AACxD,MAAA;AACA,MAAA,IAAI,CAAC,OAAO,CAAC3E,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAACK,GAAG,CAAC,YAAY,CAAC,CAAC;MAE9D,OAAO;AAAEyB,QAAAA,EAAE,EAAE,IAAI,CAAC,OAAO;QAAEC,EAAE,EAAE,IAAI,CAAC;OAAS;AAC/C,IAAA;;AAEA;AAGAyJ,IAAAA,sBAAsBA,CAACC,WAAW,GAAG,IAAI,EACzC;AACE,MAAA,OAAO,IAAI,CAACL,gBAAgB,CAACK,WAAW,CAAC;AAC3C,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAGEC,SAASA,CAACC,YAAY,EACtB;AACE,MAAA,IAAI,CAAC,IAAI,CAAClS,OAAO,EACjB;AACE,QAAA;AACF,MAAA;;AAEA;AACA;MACA,MAAM;QAAEiL,KAAK;AAAEC,QAAAA;AAAU,OAAC,GAAGC,WAAW,CAAC,IAAI,CAAC5M,gBAAgB,CAAC;AAE/D,MAAA,KAAK,MAAM2E,KAAK,IAAI,IAAI,CAACpE,MAAM,EAC/B;AACEoE,QAAAA,KAAK,EAAEM,QAAQ,GAAG0O,YAAY,EAAE,IAAI,CAACnR,cAAc,EAAE,CAAC,EAAEkK,KAAK,EAAEC,SAAS,CAAC;AACzEhI,QAAAA,KAAK,EAAEiP,uBAAuB,GAAG,IAAI,CAACtS,kBAAkB,CAAC;AAC3D,MAAA;AACF,IAAA;;AAEA;AACF;AACA;IAGEuS,eAAeA,CAAC,GAAGC,KAAK,EACxB;AACE,MAAA,MAAM,IAAIC,KAAK,CAAC,uEAAuE,CAAC;AAC1F,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,kBAAkBA,GAClB;AACE,MAAA,MAAMC,QAAQ,GAAG,IAAI,CAACC,oBAAoB,EAAE;AAC5C,MAAA,IAAID,QAAQ,IAAI,IAAI,CAACxS,OAAO,EAC5B;AACE,QAAA,IAAI,IAAI,CAAClB,MAAM,CAACoD,MAAM,EACtB;UACEsQ,QAAQ,CAACE,iBAAiB,CAACC,gBAAgB,CAACC,UAAU,EAAE,IAAI,CAAC;AAC/D,QAAA;AAEA,QAAA,IAAIC,aAAa,CAAC,IAAI,CAACvV,cAAc,CAAC,EACtC;UACEkV,QAAQ,CAACE,iBAAiB,CAACC,gBAAgB,CAACG,oBAAoB,EAAE,IAAI,CAAC;AACzE,QAAA;QAEA,IAAI,IAAI,CAACrU,UAAU,EACnB;UACE+T,QAAQ,CAACE,iBAAiB,CAACC,gBAAgB,CAACI,YAAY,EAAE,IAAI,CAAC;AACjE,QAAA;AAEA,QAAA,KAAK,MAAM9P,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE0F,UAAAA,KAAK,EAAE+P,QAAQ,GAAGR,QAAQ,CAAC;AAC7B,QAAA;AAEA,QAAA,KAAK,MAAMpH,UAAU,IAAI,IAAI,CAACxM,WAAW,EACzC;AACEwM,UAAAA,UAAU,EAAE4H,QAAQ,GAAGR,QAAQ,CAAC;AAClC,QAAA;AACF,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGES,IAAAA,oBAAoBA,GACpB;AACE,MAAA,MAAMT,QAAQ,GAAG,IAAI,CAACC,oBAAoB,EAAE;AAC5C,MAAA,IAAID,QAAQ,EACZ;AACE,QAAA,KAAK,MAAMvP,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE0F,UAAAA,KAAK,EAAEiQ,UAAU,GAAGV,QAAQ,CAAC;AAC/B,QAAA;AAEA,QAAA,KAAK,MAAMpH,UAAU,IAAI,IAAI,CAACxM,WAAW,EACzC;AACEwM,UAAAA,UAAU,EAAE8H,UAAU,GAAGV,QAAQ,CAAC;AACpC,QAAA;AACF,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AAGEnJ,IAAAA,eAAeA,GACf;AACE,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AAGEZ,IAAAA,oBAAoBA,GACpB;MACE,OAAO,IAAI,CAAC1H,cAAc;AAC5B,IAAA;;AAEA;AACF;AACA;AACA;AAGEqI,IAAAA,wBAAwBA,GACxB;MACE,OAAO,IAAI,CAACrI,cAAc;AAC5B,IAAA;;AAEA;IAGAoS,2BAA2BA,CAAC5L,GAAG,EAC/B;AACEtU,MAAAA,IAAI,CAACgS,aAAa,CAACsC,GAAG,EAAE,IAAI,CAACpH,oBAAoB,EAAE,IAAI,CAACY,cAAc,CAAC;AACzE,IAAA;;AAEA;AACF;AACA;AACA;AAGEqS,IAAAA,gBAAgBA,GAChB;MACE,OAAO,IAAI,CAAC5T,aAAa;AAC3B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGE6T,IAAAA,gBAAgBA,GAChB;MACE,OAAO,IAAI,CAAC3T,aAAa;AAC3B,IAAA;;AAEA;AACF;AACA;AACA;IAGE4T,gBAAgBA,CAAC7V,IAAI,EACrB;AACE,MAAA,MAAM2F,MAAM,GAAGC,MAAM,CAAC5F,IAAI,IAAI,EAAE,CAAC;AACjC,MAAA,KAAK,MAAMgF,QAAQ,IAAI,IAAI,CAAClD,SAAS,EACrC;AACE,QAAA,IAAIkD,QAAQ,EAAEhF,IAAI,KAAK2F,MAAM,EAC7B;AACE,UAAA,OAAO,OAAOX,QAAQ,CAAC+I,WAAW,KAAK,UAAU,GAC7C/I,QAAQ,CAAC+I,WAAW,EAAE,GACtB/I,QAAQ,CAACA,QAAQ,IAAI,IAAI;AAC/B,QAAA;AACF,MAAA;AACA,MAAA,KAAK,MAAMQ,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE,QAAA,MAAMgW,OAAO,GAAGtQ,KAAK,EAAEqQ,gBAAgB,GAAGlQ,MAAM,CAAC;AACjD,QAAA,IAAImQ,OAAO,EACX;AACE,UAAA,OAAOA,OAAO;AAChB,QAAA;AACF,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;IAGEC,OAAOA,CAAC9V,IAAI,EACZ;AACE,MAAA,IAAI,CAACA,IAAI,GAAG,CAAC,CAACA,IAAI;AAClB,MAAA,KAAK,MAAMuF,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE0F,QAAAA,KAAK,EAAEuQ,OAAO,GAAG,IAAI,CAAC9V,IAAI,CAAC;AAC7B,MAAA;AACA,MAAA,KAAK,MAAM+E,QAAQ,IAAI,IAAI,CAAClD,SAAS,EACrC;AACEkD,QAAAA,QAAQ,EAAE+Q,OAAO,GAAG,IAAI,CAAC9V,IAAI,CAAC;AAChC,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AAGE+V,IAAAA,eAAeA,CAACC,QAAQ,EAAEC,SAAS,EAAEC,KAAK,EAAEC,KAAK,EAAEC,aAAa,GAAG,IAAI,EACvE;AACE,MAAA,IAAI,CAAC,cAAc,CAACJ,QAAQ,EAAE,IAAI,EAAEC,SAAS,EAAEC,KAAK,EAAEC,KAAK,EAAEC,aAAa,CAAC;AAC7E,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;IAGEC,wCAAwCA,CAACtM,SAAS,EAClD;MACE,MAAMzB,GAAG,GAAG/S,IAAI,CAACqL,UAAU,CAACoN,QAAQ,EAAEA,QAAQ,EAAEA,QAAQ,CAAC;AACzD,MAAA,MAAMvE,GAAG,GAAGlU,IAAI,CAACqL,UAAU,CAAC,CAACoN,QAAQ,EAAE,CAACA,QAAQ,EAAE,CAACA,QAAQ,CAAC;AAC5D,MAAA,IAAI,IAAI,CAAC/M,4BAA4B,IAAI,IAAI,CAACO,IAAI,EAAE8M,mBAAmB,IAAI,EAAEgI,UAAU,IAAI,EAC3F;QACE,MAAM;AAAEhO,UAAAA,GAAG,EAAEiO,QAAQ;AAAE9M,UAAAA,GAAG,EAAE+M;AAAS,SAAC,GAAG,IAAI,CAACC,mBAAmB,EAAE;AACnE,QAAA,MAAMC,MAAM,GAAGnhB,IAAI,CAACC,MAAM,EAAE;QAC5B,KAAK,IAAIyQ,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,CAAC,EAAEA,KAAK,EAAE,EACtC;UACE1Q,IAAI,CAACsO,GAAG,CACN6S,MAAM,EACNzQ,KAAK,GAAG,CAAC,GAAGuQ,QAAQ,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAC,CAAC,CAAC,EACrCtQ,KAAK,GAAG,CAAC,GAAGuQ,QAAQ,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAC,CAAC,CAAC,EACrCtQ,KAAK,GAAG,CAAC,GAAGuQ,QAAQ,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAC,CAAC,CACtC,CAAC;UACDhhB,IAAI,CAACgS,aAAa,CAACmP,MAAM,EAAEA,MAAM,EAAE3M,SAAS,CAAC;UAC7CxU,IAAI,CAAC+S,GAAG,CAACA,GAAG,EAAEA,GAAG,EAAEoO,MAAM,CAAC;UAC1BnhB,IAAI,CAACkU,GAAG,CAACA,GAAG,EAAEA,GAAG,EAAEiN,MAAM,CAAC;AAC5B,QAAA;AACF,MAAA;MACA,OAAO;QAAEpO,GAAG;AAAEmB,QAAAA;OAAK;AACrB,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAGEkN,8BAA8BA,CAAC9M,GAAG,GAAG1K,IAAI,CAAC3J,MAAM,EAAE,EAClD;AACE,MAAA,IAAI,IAAI,CAACyL,4BAA4B,IAAI,IAAI,CAACO,IAAI,EAAE8M,mBAAmB,IAAI,EAAEgI,UAAU,IAAI,EAC3F;AACE,QAAA,MAAM9N,MAAM,GAAG,IAAI,CAACC,uBAAuB,EAAE;QAC7C,OAAOtJ,IAAI,CAAC0E,GAAG,CAACgG,GAAG,EAAErB,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAACP,uBAAuB,EAAE,CAAC;AACvF,MAAA;AACA,MAAA,OAAO9I,IAAI,CAAC0E,GAAG,CAACgG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACnC,IAAA;;AAEA;AACF;AACA;AAGE+M,IAAAA,iBAAiBA,GACjB;AACE,MAAA,IAAI,CAACnV,aAAa,EAAEoV,KAAK,IAAI;AAC/B,IAAA;;AAEA;AACF;AACA;AAGEC,IAAAA,eAAeA,GACf;AACE,MAAA,IAAI,CAACjW,gBAAgB,EAAEiW,eAAe,IAAI;AAC5C,IAAA;;AAEA;AACF;AACA;IAGEC,wBAAwBA,CAACC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,IAAI,EAC5D;AACE,MAAA,MAAMC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAACJ,QAAQ,EAAEjhB,eAAe,CAAC,qBAAqB,CAAC;MAC1G,OAAO,IAAI,CAACshB,YAAY,CAACD,oBAAoB,EAAEH,SAAS,EAAEC,QAAQ,EAAEC,IAAI,CAAC;AAC3E,IAAA;;AAEA;AACF;AACA;IAGEE,YAAYA,CAACC,kBAAkB,EAAEL,SAAS,EAAEC,QAAQ,EAAEC,IAAI,EAC1D;MACE,IAAI,IAAI,CAAC1V,aAAa,EACtB;QACE,OAAO,IAAI,CAACA,aAAa,CAAC4V,YAAY,GAAGC,kBAAkB,EAAEL,SAAS,EAAEC,QAAQ,EAAEC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC9W,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;AACvH,MAAA;AACA,MAAA,OAAO,EAAE;AACX,IAAA;;AAEA;AACF;AACA;AAGEkX,IAAAA,YAAYA,GACZ;AACE,MAAA,IAAI,CAAC1W,gBAAgB,EAAE0W,YAAY,IAAI;AACzC,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,oBAAoBA,GACpB;AACE,MAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAC/B,MAAA,KAAK,MAAMjJ,KAAK,IAAI,IAAI,CAACpN,MAAM,EAC/B;AACEoN,QAAAA,KAAK,EAAEkJ,uBAAuB,GAAG,IAAI,CAAC;AACxC,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AAGEC,IAAAA,qBAAqBA,GACrB;MACE,OAAO,IAAI,CAACC,eAAe,CAAC5hB,eAAe,CAAC,qBAAqB,CAAC;AACpE,IAAA;;AAEA;AACF;AACA;IAGE4hB,eAAeA,CAACC,cAAc,EAC9B;MACE,OAAO,IAAI,CAAC,kBAAkB,CAACA,cAAc,CAAC,EAAEpT,MAAM,IAAI,CAAC;AAC7D,IAAA;;AAEA;AACF;AACA;AACA;IAGEqT,iBAAiBA,CAACD,cAAc,EAChC;AACE,MAAA,OAAO,IAAI,CAAC,kBAAkB,CAACA,cAAc,CAAC;AAChD,IAAA;;AAEA;AACF;AACA;AACA;AAGEE,IAAAA,oBAAoBA,CAACd,QAAQ,EAAEY,cAAc,EAC7C;MACE,MAAMrW,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACqW,cAAc,CAAC;MACxD,IAAI,CAACrW,QAAQ,EACb;AACE,QAAA,OAAO,EAAE;AACX,MAAA;AACA,MAAA,MAAMwW,gBAAgB,GAAGxiB,IAAI,CAACgS,aAAa,CAAChS,IAAI,CAACC,MAAM,EAAE,EAAEwhB,QAAQ,EAAE,IAAI,CAAC1T,qBAAqB,CAAC;AAChG,MAAA,MAAM0U,eAAe,GAAGziB,IAAI,CAACC,MAAM,EAAE;AACrC,MAAA,MAAMyiB,gBAAgB,GAAG1iB,IAAI,CAACC,MAAM,EAAE;MACtC,IAAI0iB,aAAa,GAAGlK,QAAQ;MAC5B,IAAImK,YAAY,GAAG,EAAE;AACrB,MAAA,KAAK,IAAIlS,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG1E,QAAQ,CAACiD,MAAM,EAAEyB,KAAK,EAAE,EACpD;AACE,QAAA,IAAI,CAAC,wBAAwB,CAAC+R,eAAe,EAAEC,gBAAgB,EAAE1W,QAAQ,CAAC0E,KAAK,CAAC,CAAC;QACjF,MAAMgK,QAAQ,GAAG1a,IAAI,CAAC6iB,eAAe,CAACJ,eAAe,EAAED,gBAAgB,CAAC;QACxE,IAAI9H,QAAQ,GAAGiI,aAAa,EAC5B;AACEC,UAAAA,YAAY,GAAGlS,KAAK;AACpBiS,UAAAA,aAAa,GAAGjI,QAAQ;AAC1B,QAAA;AACF,MAAA;AACA,MAAA,OAAOkI,YAAY;AACrB,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGEE,IAAAA,mBAAmBA,CAACrB,QAAQ,EAAEY,cAAc,EAC5C;AACE,MAAA,OAAO,IAAI,CAACE,oBAAoB,CAACd,QAAQ,EAAEY,cAAc,CAAC;AAC5D,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGEU,IAAAA,yBAAyBA,CAACrS,KAAK,EAAEsS,iBAAiB,GAAGhjB,IAAI,CAACC,MAAM,EAAE,EAAEqU,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EACvF;AACE,MAAA,MAAMgjB,cAAc,GAAG,OAAOD,iBAAiB,KAAK,SAAS;AAC7D,MAAA,MAAME,YAAY,GAAGD,cAAc,IAAID,iBAAiB;AACxD,MAAA,IAAI,CAACC,cAAc,EAAE3O,GAAG,GAAG0O,iBAAiB;MAC5C,MAAMhX,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACxL,eAAe,CAAC,qBAAqB,CAAC;AAC/E,MAAA,IAAI,CAACwL,QAAQ,IAAI,EAAE0E,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAG1E,QAAQ,CAACiD,MAAM,CAAC,EACzD;AACEjP,QAAAA,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,CAAC,EAAE2O,cAAc,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,QAAA,OAAOA,cAAc,GAAG,KAAK,GAAG3O,GAAG;AACrC,MAAA;AACA,MAAA,MAAMmN,QAAQ,GAAGzhB,IAAI,CAACC,MAAM,EAAE;AAC9B,MAAA,IAAI,CAAC,wBAAwB,CAACwhB,QAAQ,EAAEnN,GAAG,EAAEtI,QAAQ,CAAC0E,KAAK,CAAC,CAAC;AAC7D,MAAA,IAAIwS,YAAY,EAAE1iB,eAAe,CAAC,gBAAgB,CAAC8T,GAAG,EAAEA,GAAG,EAAE,IAAI,CAACxG,cAAc,CAAC;AACjF,MAAA,OAAOmV,cAAc,GAAG,IAAI,GAAG3O,GAAG;AACpC,IAAA;;AAEA;AAIA6O,IAAAA,wBAAwBA,CAACzS,KAAK,EAAEwS,YAAY,EAAE5O,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EACjE;MACE,MAAM+L,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACxL,eAAe,CAAC,qBAAqB,CAAC;AAC/E,MAAA,IAAI,CAACwL,QAAQ,IAAI,EAAE0E,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAG1E,QAAQ,CAACiD,MAAM,CAAC,EACzD;AACE,QAAA,IAAIiU,YAAY,EAAEljB,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,IAAI,CAACxG,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,CAACA,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,CAACA,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,KACtG9N,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAA,OAAO,KAAK;AACd,MAAA;AACA,MAAA,IAAI,CAAC,wBAAwB,CAACA,GAAG,EAAE9T,eAAe,CAAC,iBAAiB,EAAEwL,QAAQ,CAAC0E,KAAK,CAAC,CAAC;AACtF,MAAA,IAAIwS,YAAY,EAAEljB,IAAI,CAACgS,aAAa,CAACsC,GAAG,EAAEA,GAAG,EAAE,IAAI,CAACxG,cAAc,CAAC;AACnE,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;IAGAsV,4BAA4BA,CAAC3B,QAAQ,EACrC;MACE,OAAO,IAAI,CAAC,uBAAuB,CAACA,QAAQ,EAAEjhB,eAAe,CAAC,qBAAqB,CAAC;AACtF,IAAA;;AAEA;IAIA6iB,yBAAyBA,CAAC5B,QAAQ,EAClC;MACE,MAAMzV,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACxL,eAAe,CAAC,qBAAqB,CAAC;AAC/E,MAAA,IAAI,CAACwL,QAAQ,EAAE,OAAO,CAAC;AAEvB,MAAA,MAAMsX,cAAc,GAAGtjB,IAAI,CAACgS,aAAa,CAACxR,eAAe,CAAC,eAAe,EAAEihB,QAAQ,EAAE,IAAI,CAAC1T,qBAAqB,CAAC;MAChH,IAAIwV,WAAW,GAAG9K,QAAQ;AAC1B,MAAA,IAAI+K,WAAW,GAAGnS,MAAM,CAACoS,SAAS;MAClC,IAAIC,gBAAgB,GAAG,CAAC;AAExB,MAAA,KAAK,MAAMC,OAAO,IAAI3X,QAAQ,EAC9B;AACE,QAAA,IAAI,CAAC,wBAAwB,CAACxL,eAAe,CAAC,gBAAgB,EAAEA,eAAe,CAAC,iBAAiB,EAAEmjB,OAAO,CAAC;AAC3G,QAAA,IAAI,CAACnjB,eAAe,CAAC,wBAAwB,CAACA,eAAe,CAAC,iBAAiB,EAAE8iB,cAAc,CAAC,EAAE;AAClGtjB,QAAAA,IAAI,CAAC4jB,QAAQ,CAACpjB,eAAe,CAAC,cAAc,EAAEA,eAAe,CAAC,gBAAgB,EAAE8iB,cAAc,CAAC;QAC/F,MAAM5I,QAAQ,GAAG1a,IAAI,CAACiP,MAAM,CAACzO,eAAe,CAAC,cAAc,CAAC;QAC5D+iB,WAAW,GAAGzQ,IAAI,CAACC,GAAG,CAACwQ,WAAW,EAAE7I,QAAQ,CAAC;QAC7C8I,WAAW,GAAG1Q,IAAI,CAACoB,GAAG,CAACsP,WAAW,EAAE9I,QAAQ,CAAC;AAC7C,QAAA,IAAIA,QAAQ,EAAE1a,IAAI,CAAC8R,KAAK,CAACtR,eAAe,CAAC,cAAc,EAAEA,eAAe,CAAC,cAAc,EAAE,CAAC,GAAGka,QAAQ,CAAC;QACtGgJ,gBAAgB,GAAG5Q,IAAI,CAACoB,GAAG,CAACwP,gBAAgB,EAAEljB,eAAe,CAAC,gBAAgB,CAACA,eAAe,CAAC,iBAAiB,EAAEA,eAAe,CAAC,cAAc,CAAC,CAAC;AACpJ,MAAA;AAEA,MAAA,MAAMqjB,UAAU,GAAG/Q,IAAI,CAACgR,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,GAAGJ,gBAAgB,CAAC,CAAC,GAAG,IAAI;MACzE,IAAIK,OAAO,GAAG,CAAC;MACf,IAAIC,WAAW,GAAG,EAAE;AACpB,MAAA,KAAK,IAAItT,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG1E,QAAQ,CAACiD,MAAM,EAAEyB,KAAK,EAAE,EACpD;AACE,QAAA,IAAI,CAAC,wBAAwB,CAAClQ,eAAe,CAAC,gBAAgB,EAAEA,eAAe,CAAC,iBAAiB,EAAEwL,QAAQ,CAAC0E,KAAK,CAAC,CAAC;AACnH,QAAA,IAAI,CAAClQ,eAAe,CAAC,wBAAwB,CAACA,eAAe,CAAC,iBAAiB,EAAE8iB,cAAc,CAAC,EAAE;AAClGtjB,QAAAA,IAAI,CAAC4jB,QAAQ,CAACpjB,eAAe,CAAC,cAAc,EAAEA,eAAe,CAAC,gBAAgB,EAAE8iB,cAAc,CAAC;QAC/F,MAAM5I,QAAQ,GAAG1a,IAAI,CAACiP,MAAM,CAACzO,eAAe,CAAC,cAAc,CAAC;AAC5D,QAAA,MAAMyjB,KAAK,GAAGT,WAAW,GAAGD,WAAW;AACvC,QAAA,IAAIzR,KAAK,GAAGmS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAACvJ,QAAQ,GAAG6I,WAAW,IAAIU,KAAK,GAAG,CAAC;AAChE,QAAA,IAAIC,KAAK,GAAG,CAAC,GAAGpS,KAAK,GAAG,CAAC;AACzBoS,QAAAA,KAAK,GAAGA,KAAK,GAAG,CAAC,GAAG,CAAC,GAAGpR,IAAI,CAACqR,IAAI,CAACrR,IAAI,CAACsR,GAAG,CAACF,KAAK,CAAC,CAAC,GAAGpR,IAAI,CAACqR,IAAI,CAACrR,IAAI,CAACsR,GAAG,CAACF,KAAK,CAAC,CAAC,GAAG,CAAC;AACnFA,QAAAA,KAAK,IAAI,GAAG;AACZ,QAAA,IAAIxJ,QAAQ,EAAE1a,IAAI,CAAC8R,KAAK,CAACtR,eAAe,CAAC,cAAc,EAAEA,eAAe,CAAC,cAAc,EAAE,CAAC,GAAGka,QAAQ,CAAC;AACtGwJ,QAAAA,KAAK,IAAI1jB,eAAe,CAAC,gBAAgB,CAACA,eAAe,CAAC,iBAAiB,EAAEA,eAAe,CAAC,cAAc,CAAC;QAC5G,MAAM6jB,GAAG,GAAGvR,IAAI,CAACsR,GAAG,CAACF,KAAK,GAAGL,UAAU,CAAC;QACxC,IAAIQ,GAAG,GAAGN,OAAO,EACjB;AACEA,UAAAA,OAAO,GAAGM,GAAG;AACbL,UAAAA,WAAW,GAAGtT,KAAK;AACrB,QAAA;AACF,MAAA;AACA,MAAA,OAAOsT,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAACvC,QAAQ,EAAEjhB,eAAe,CAAC,qBAAqB,CAAC,GAAGwjB,WAAW;AACtH,IAAA;;AAEA;AAGAM,IAAAA,SAASA,GACT;AACE,MAAA,OAAO,IAAI,CAAC5R,uBAAuB,EAAE;AACvC,IAAA;;AAEA;AAGA6R,IAAAA,eAAeA,CAACC,GAAG,EAAEC,MAAM,EAAEnQ,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EAChD;AACE,MAAA,IAAI,IAAI,CAACsN,oBAAoB,GAAG,CAAC,EACjC;QACEvN,IAAI,CAACsR,IAAI,CAACgD,GAAG,EAAE,IAAI,CAAC9G,kBAAkB,CAAC;QACvC,IAAIgX,GAAG,IAAIC,MAAM,EACjB;UACEzkB,IAAI,CAAC4jB,QAAQ,CAACpjB,eAAe,CAAC,WAAW,EAAEgkB,GAAG,EAAElQ,GAAG,CAAC;UACpDtU,IAAI,CAAC4jB,QAAQ,CAACpjB,eAAe,CAAC,cAAc,EAAEgkB,GAAG,EAAEC,MAAM,CAAC;UAC1D,MAAMC,eAAe,GAAG1kB,IAAI,CAACiP,MAAM,CAACzO,eAAe,CAAC,cAAc,CAAC;AACnE,UAAA,IAAIkkB,eAAe,EAAE1kB,IAAI,CAAC8R,KAAK,CAACtR,eAAe,CAAC,cAAc,EAAEA,eAAe,CAAC,cAAc,EAAE,CAAC,GAAGkkB,eAAe,CAAC;AACpH1kB,UAAAA,IAAI,CAAC2kB,WAAW,CAACnkB,eAAe,CAAC,WAAW,EAAEA,eAAe,CAAC,WAAW,EAAEA,eAAe,CAAC,cAAc,EAAE,CAACR,IAAI,CAAC4kB,GAAG,CAACpkB,eAAe,CAAC,cAAc,EAAEA,eAAe,CAAC,WAAW,CAAC,CAAC;UAClL,MAAMqkB,YAAY,GAAG7kB,IAAI,CAACiP,MAAM,CAACzO,eAAe,CAAC,WAAW,CAAC;AAC7D,UAAA,IAAIqkB,YAAY,EAAE7kB,IAAI,CAAC8R,KAAK,CAACtR,eAAe,CAAC,WAAW,EAAEA,eAAe,CAAC,WAAW,EAAE,CAAC,GAAGqkB,YAAY,CAAC;AACxG7kB,UAAAA,IAAI,CAAC2kB,WAAW,CAACrQ,GAAG,EAAEA,GAAG,EAAE9T,eAAe,CAAC,WAAW,EAAE,IAAI,CAACkS,uBAAuB,EAAE,GAAG,KAAK,CAAC;AACjG,QAAA;AACF,MAAA,CAAC,MAED;QACE,IAAI,CAACyQ,wBAAwB,CAAC,EAAE,EAAE,IAAI,EAAE7O,GAAG,CAAC;AAC9C,MAAA;AACA,MAAA,OAAOA,GAAG;AACZ,IAAA;;AAEA;AAGAwQ,IAAAA,sBAAsBA,GACtB;MACE,OAAO,IAAI,CAAC5Y,aAAa,EAAE4Y,sBAAsB,IAAI,IAAIC,mBAAmB,CAACC,cAAc;AAC7F,IAAA;;AAEA;AAGAC,IAAAA,4BAA4BA,GAC5B;AACE,MAAA,OAAO,CAAC,CAAC,IAAI,CAAC/Y,aAAa,EAAEgZ,kBAAkB,IAAI,IAC9C,IAAI,CAACJ,sBAAsB,EAAE,KAAKC,mBAAmB,CAACI,aAAa;AAC1E,IAAA;;AAEA;AAIAC,IAAAA,iBAAiBA,CAACzB,OAAO,EAAE0B,OAAO,EAAEC,MAAM,EAAEC,OAAO,EAAEjR,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EACxE;AACE,MAAA,IAAI,CAAC,IAAI,CAACglB,4BAA4B,EAAE,EACxC;QACE,IAAI,CAAC9B,wBAAwB,CAACQ,OAAO,EAAE,IAAI,EAAErP,GAAG,CAAC;AACjD,QAAA,OAAOtU,IAAI,CAAC6iB,eAAe,CAACyC,MAAM,EAAEhR,GAAG,CAAC,GAAGjD,MAAM,CAACkU,OAAO,CAAC;AAC5D,MAAA;AAEAvlB,MAAAA,IAAI,CAACgS,aAAa,CAACxR,eAAe,CAAC,UAAU,EAAE6kB,OAAO,EAAE,IAAI,CAACtX,qBAAqB,CAAC;AACnF/N,MAAAA,IAAI,CAACgS,aAAa,CAACxR,eAAe,CAAC,OAAO,EAAE8kB,MAAM,EAAE,IAAI,CAACvX,qBAAqB,CAAC;AAC/E/N,MAAAA,IAAI,CAAC4jB,QAAQ,CAACpjB,eAAe,CAAC,aAAa,EAAEA,eAAe,CAAC,OAAO,EAAEA,eAAe,CAAC,UAAU,CAAC;AACjG,MAAA,IAAI,CAACsW,iBAAiB,CAACtW,eAAe,CAAC,gBAAgB,EAAEA,eAAe,CAAC,eAAe,CAAC;AACzF,MAAA,MAAMglB,CAAC,GAAGhlB,eAAe,CAAC,sBAAsB,CAAC8T,GAAG,EAAE9T,eAAe,CAAC,gBAAgB,EAAEA,eAAe,CAAC,eAAe,EAAEA,eAAe,CAAC,UAAU,EAAEA,eAAe,CAAC,aAAa,CAAC;AACnL,MAAA,IAAIglB,CAAC,KAAK,IAAI,IAAIA,CAAC,IAAI,EAAE,IAAIA,CAAC,IAAI,CAAC,EACnC;QACExlB,IAAI,CAACgS,aAAa,CAACsC,GAAG,EAAEA,GAAG,EAAE,IAAI,CAACxG,cAAc,CAAC;AACjD,QAAA,OAAO,IAAI;AACb,MAAA;MACA,IAAItN,eAAe,CAAC,uBAAuB,CAACA,eAAe,CAAC,gBAAgB,EAAEA,eAAe,CAAC,eAAe,EAAEA,eAAe,CAAC,OAAO,CAAC,EACvI;AACER,QAAAA,IAAI,CAACsR,IAAI,CAACgD,GAAG,EAAEgR,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI;AACb,MAAA;AACA,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;AAGAG,IAAAA,YAAYA,CAACnR,GAAG,EAAEoN,SAAS,EAAEgE,WAAW,EACxC;AACE,MAAA,OAAO,IAAI,CAACxZ,aAAa,EAAEuZ,YAAY,GAAGnR,GAAG,EAAEoN,SAAS,EAAEgE,WAAW,CAAC,IAAI,KAAK;AACjF,IAAA;;AAEA;AACF;AACA;AACA;IAGEC,gBAAgBA,CAACjV,KAAK,EAAE4D,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EAC3C;MACE,MAAM+L,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACxL,eAAe,CAAC,qBAAqB,CAAC;AAC/E,MAAA,IAAI,CAACwL,QAAQ,IAAI,EAAE0E,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAG1E,QAAQ,CAACiD,MAAM,CAAC,EACzD;QACE,OAAOjP,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAA;AACA,MAAA,MAAMoN,SAAS,GAAG1hB,IAAI,CAACC,MAAM,EAAE;AAC/B,MAAA,IAAI,CAAC,wBAAwB,CAACqU,GAAG,EAAEoN,SAAS,EAAE1V,QAAQ,CAAC0E,KAAK,CAAC,CAAC;AAC9D,MAAA,OAAO4D,GAAG;AACZ,IAAA;;AAEA;AACF;AACA;AACA;IAGEsR,2BAA2BA,CAAClV,KAAK,EAAE4D,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EACtD;MACE,MAAM+L,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACxL,eAAe,CAAC,qBAAqB,CAAC;AAC/E,MAAA,IAAI,CAACwL,QAAQ,IAAI,EAAE0E,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAG1E,QAAQ,CAACiD,MAAM,CAAC,EACzD;QACE,OAAOjP,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAA;AACA,MAAA,MAAMoN,SAAS,GAAG1hB,IAAI,CAACC,MAAM,EAAE;AAC/B,MAAA,IAAI,CAAC,wBAAwB,CAACqU,GAAG,EAAEoN,SAAS,EAAE1V,QAAQ,CAAC0E,KAAK,CAAC,CAAC;MAC9D,OAAO1Q,IAAI,CAACgS,aAAa,CAACsC,GAAG,EAAEA,GAAG,EAAE,IAAI,CAACxG,cAAc,CAAC;AAC1D,IAAA;;AAEA;AACF;AACA;AACA;AAGE+X,IAAAA,UAAUA,GACV;MACE,OAAO,IAAI,CAAC,aAAa;AAC3B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGEC,IAAAA,yBAAyBA,CAACpV,KAAK,EAAEwS,YAAY,EAAEb,cAAc,EAAE/N,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EAClF;MACE,MAAM+L,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACqW,cAAc,CAAC;AACxD,MAAA,IAAI3R,KAAK,GAAG,CAAC,IAAI,CAAC1E,QAAQ,IAAI0E,KAAK,IAAI1E,QAAQ,CAACiD,MAAM,EACtD;AACE,QAAA,IAAIiU,YAAY,EAChB;UACE,OAAOljB,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,IAAI,CAACxG,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,CAACA,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,CAACA,cAAc,CAAC,EAAE,CAAC,CAAC;AACjG,QAAA;QACA,OAAO9N,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAA;AACA,MAAA,MAAMoN,SAAS,GAAG1hB,IAAI,CAACC,MAAM,EAAE;AAC/B,MAAA,IAAI,CAAC,wBAAwB,CAACqU,GAAG,EAAEoN,SAAS,EAAE1V,QAAQ,CAAC0E,KAAK,CAAC,CAAC;AAC9D,MAAA,IAAIwS,YAAY,EAChB;QACEljB,IAAI,CAACgS,aAAa,CAACsC,GAAG,EAAEA,GAAG,EAAE,IAAI,CAACxG,cAAc,CAAC;AACnD,MAAA;AACA,MAAA,OAAOwG,GAAG;AACZ,IAAA;;AAEA;AACF;AACA;AACA;AAGEyR,IAAAA,yBAAyBA,CAACrV,KAAK,EAAEwS,YAAY,EAAEb,cAAc,EAAE/N,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EAClF;MACE,MAAM+L,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACqW,cAAc,CAAC;AACxD,MAAA,IAAI3R,KAAK,GAAG,CAAC,IAAI,CAAC1E,QAAQ,IAAI0E,KAAK,IAAI1E,QAAQ,CAACiD,MAAM,EACtD;QACE,OAAOjP,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAA;AACA,MAAA,MAAMmN,QAAQ,GAAGzhB,IAAI,CAACC,MAAM,EAAE;AAC9B,MAAA,IAAI,CAAC,wBAAwB,CAACwhB,QAAQ,EAAEnN,GAAG,EAAEtI,QAAQ,CAAC0E,KAAK,CAAC,CAAC;AAC7D,MAAA,IAAIwS,YAAY,EAChB;QACE1iB,eAAe,CAAC,gBAAgB,CAAC8T,GAAG,EAAEA,GAAG,EAAE,IAAI,CAACxG,cAAc,CAAC;AACjE,MAAA;AACA,MAAA,OAAOwG,GAAG;AACZ,IAAA;;AAEA;AACF;AACA;AACA;IAGE0R,qBAAqBA,CAACxb,IAAI,EAC1B;AACE,MAAA,MAAMyb,SAAS,GAAG7V,MAAM,CAAC5F,IAAI,IAAI,EAAE,CAAC;AACpC,MAAA,KAAK,MAAMoE,UAAU,IAAI,IAAI,CAAC7C,WAAW,EACzC;AACE6C,QAAAA,UAAU,EAAEsX,WAAW,GAAGD,SAAS,CAAC;AACtC,MAAA;AACA,MAAA,KAAK,MAAMjW,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE0F,QAAAA,KAAK,EAAEgW,qBAAqB,GAAGC,SAAS,CAAC;AAC3C,MAAA;AACA,MAAA,KAAK,MAAMrQ,OAAO,IAAI,IAAI,CAAChL,cAAc,EACzC;AACEgL,QAAAA,OAAO,EAAEoQ,qBAAqB,GAAGC,SAAS,CAAC;AAC7C,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;IAGEE,aAAaA,CAAC1F,QAAQ,EACtB;AACE,MAAA,IAAI,CAAC,cAAc,CAACA,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACpD,IAAA;;AAEA;AACF;AACA;IAGE2F,cAAcA,CAAC3F,QAAQ,EACvB;AACE,MAAA,IAAI,CAAC,cAAc,CAACA,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACrD,IAAA;;AAEA;AACF;AACA;AACA;IAGE4F,gBAAgBA,CAAC5F,QAAQ,EAAEC,SAAS,EAAEC,KAAK,EAAEC,KAAK,EAClD;AACE,MAAA,IAAI,CAAC,cAAc,CAACH,QAAQ,EAAE,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAEC,KAAK,EAAE,IAAI,CAAC;AACrE,IAAA;;AAEA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACE,IAAA,cAAc0F,CAAC7F,QAAQ,EAAE8F,OAAO,EAAE7F,SAAS,EAAE8F,KAAK,EAAE5F,KAAK,EAAEC,aAAa,EACxE;MACE,IAAI,CAACvV,gBAAgB,EAAE6a,aAAa,GAAG/V,MAAM,CAACqQ,QAAQ,IAAI,EAAE,CAAC,EAAE8F,OAAO,EAAE7F,SAAS,EAAE8F,KAAK,EAAE5F,KAAK,EAAEC,aAAa,CAAC;AACjH,IAAA;;AAEA;AACF;AACA;AACA;AAGE4F,IAAAA,gCAAgCA,GAChC;AACE,MAAA,MAAMxa,IAAI,GAAG,IAAI,CAACA,IAAI;MACtB,IAAI,CAACA,IAAI,EACT;AACE,QAAA,OAAO,KAAK;AACd,MAAA;AACA,MAAA,MAAMya,WAAW,GAAGza,IAAI,CAAC8M,mBAAmB,IAAI;MAChD,IAAI,CAAC2N,WAAW,IAAI,CAACA,WAAW,CAACC,MAAM,IAAI,EAC3C;AACE,QAAA,OAAO,KAAK;AACd,MAAA;MACAD,WAAW,CAACE,yBAAyB,IAAI;AACzC,MAAA,MAAMC,MAAM,GAAGjd,IAAI,CAAC3J,MAAM,EAAE;AAC5BymB,MAAAA,WAAW,CAACtO,iBAAiB,GAAGnM,IAAI,CAAC6a,YAAY,IAAI,IAAI,CAAC,EAAED,MAAM,CAAC;MACnE7mB,IAAI,CAACsO,GAAG,CAAC,IAAI,CAACpB,oBAAoB,EAAE2Z,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,MAAA,IAAI,CAACtZ,oBAAoB,GAAGsZ,MAAM,CAAC,CAAC,CAAC;AACrC,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;IAIAE,4BAA4BA,CAACF,MAAM,EACnC;MACE,IAAIA,MAAM,EAAE5T,MAAM,EAClB;QACEjT,IAAI,CAACsR,IAAI,CAAC,IAAI,CAACpE,oBAAoB,EAAE2Z,MAAM,CAAC5T,MAAM,CAAC;QACnD,IAAI,CAAC1F,oBAAoB,GAAG8D,MAAM,CAACwV,MAAM,CAACG,MAAM,CAAC;AACnD,MAAA,CAAC,MAED;AACE,QAAA,IAAI,CAACzZ,oBAAoB,GAAGc,IAAI,CAAC4Y,OAAO,CAACJ,MAAM,EAAE,IAAI,CAAC3Z,oBAAoB,CAAC;AAC7E,MAAA;MACA,IAAI,CAACiF,iBAAiB,EAAE;AACxB,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;AAGE+U,IAAAA,sBAAsBA,GACtB;MACE,OAAOC,MAAM,CAACC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC;AACtD,IAAA;;AAEA;AAIAC,IAAAA,kBAAkBA,GAClB;MACE,MAAMvO,gBAAgB,GAAG,IAAI,CAAC7M,IAAI,EAAE8M,mBAAmB,IAAI;AAC3D,MAAA,IAAI,CAACD,gBAAgB,EAAE,OAAO,EAAE;AAChC,MAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC;MACtC,OAAOA,gBAAgB,CAACwO,wBAAwB,GAAG,IAAI,CAACrb,IAAI,EAAE6a,YAAY,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACjH,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;IAGES,mBAAmBA,CAAC/c,IAAI,EAAE8J,GAAG,GAAGzK,IAAI,CAAC5J,MAAM,EAAE,EAC7C;AACE,MAAA,MAAMkQ,MAAM,GAAGC,MAAM,CAAC5F,IAAI,IAAI,EAAE,CAAC;MACjC,IAAImZ,OAAO,GAAG,IAAI;AAClB,MAAA,KAAK,MAAM6D,SAAS,IAAI,IAAI,CAACxb,QAAQ,EACrC;AACE,QAAA,IAAIwb,SAAS,EAAEnX,OAAO,IAAI,KAAKF,MAAM,EACrC;AACEwT,UAAAA,OAAO,GAAG6D,SAAS;AACnB,UAAA;AACF,QAAA;AACF,MAAA;MACA,IAAI,CAAC7D,OAAO,EACZ;AACE,QAAA,OAAO9Z,IAAI,CAACqI,QAAQ,CAACoC,GAAG,CAAC;AAC3B,MAAA;MACA,IAAI,IAAI,CAAChJ,gBAAgB,EAAEmc,qBAAqB,GAAGtX,MAAM,EAAEmE,GAAG,CAAC,EAC/D;AACE,QAAA,OAAOA,GAAG;AACZ,MAAA;MACA,OAAOzK,IAAI,CAACyH,IAAI,CAACgD,GAAG,EAAEqP,OAAO,CAAC+D,YAAY,EAAE,CAAC;AAC/C,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AAGExG,IAAAA,mBAAmBA,CAACyG,SAAS,EAAEC,SAAS,EACxC;AACE,MAAA,MAAM7U,GAAG,GAAG/S,IAAI,CAACC,MAAM,EAAE;AACzB,MAAA,MAAMiU,GAAG,GAAGlU,IAAI,CAACC,MAAM,EAAE;AACzB,MAAA,MAAMmS,OAAO,GAAG,IAAI,CAAC9G,gBAAgB;MACrC,IAAI,IAAI,CAACI,4BAA4B,IAAI0G,OAAO,EAAEC,aAAa,IAAI,EACnE;AACE,QAAA,MAAMwU,MAAM,GAAGjd,IAAI,CAAC3J,MAAM,EAAE;QAC5BmS,OAAO,CAACE,gBAAgB,GAAGuU,MAAM,EAAE9T,GAAG,EAAEmB,GAAG,CAAC;QAC5ClU,IAAI,CAACsR,IAAI,CAAC,IAAI,CAAC,aAAa,EAAEyB,GAAG,CAAC;QAClC/S,IAAI,CAACsR,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE4C,GAAG,CAAC;AACpC,MAAA,CAAC,MACI,IAAI,IAAI,CAACjI,IAAI,EAAE2M,cAAc,GAAG7F,GAAG,EAAEmB,GAAG,CAAC,EAC9C;QACElU,IAAI,CAACsR,IAAI,CAAC,IAAI,CAAC,aAAa,EAAEyB,GAAG,CAAC;QAClC/S,IAAI,CAACsR,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE4C,GAAG,CAAC;AACpC,MAAA,CAAC,MAED;QACElU,IAAI,CAACsR,IAAI,CAACyB,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC;QAClC/S,IAAI,CAACsR,IAAI,CAAC4C,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC;AACpC,MAAA;MACA,IAAIyT,SAAS,IAAIC,SAAS,EAC1B;AACE5nB,QAAAA,IAAI,CAACsR,IAAI,CAACqW,SAAS,EAAE5U,GAAG,CAAC;AACzB/S,QAAAA,IAAI,CAACsR,IAAI,CAACsW,SAAS,EAAE1T,GAAG,CAAC;AACzB,QAAA,OAAO,IAAI;AACb,MAAA;MACA,OAAO;QAAEnB,GAAG;AAAEmB,QAAAA;OAAK;AACrB,IAAA;;AAEA;AAGA2T,IAAAA,mBAAmBA,CAACF,SAAS,EAAEC,SAAS,EACxC;AACEE,MAAAA,IAAI,CAACC,UAAU,CAACvnB,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;AAClFsnB,MAAAA,IAAI,CAAC9V,aAAa,CAACxR,eAAe,CAAC,SAAS,EAAEA,eAAe,CAAC,SAAS,EAAE,IAAI,CAACsN,cAAc,CAAC;MAC7F,MAAMiF,GAAG,GAAG4U,SAAS,IAAI3nB,IAAI,CAACC,MAAM,EAAE;MACtC,MAAMiU,GAAG,GAAG0T,SAAS,IAAI5nB,IAAI,CAACC,MAAM,EAAE;AACtCD,MAAAA,IAAI,CAACsO,GAAG,CAACyE,GAAG,EAAEvS,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAEA,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAEA,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvGR,MAAAA,IAAI,CAACsO,GAAG,CAAC4F,GAAG,EAAE1T,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAEA,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAEA,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvG,MAAA,OAAOmnB,SAAS,IAAIC,SAAS,GAAG,IAAI,GAAG;QAAE7U,GAAG;AAAEmB,QAAAA;OAAK;AACrD,IAAA;;AAEA;AAGA8T,IAAAA,kBAAkBA,GAClB;MACE,MAAMlP,gBAAgB,GAAG,IAAI,CAAC7M,IAAI,EAAE8M,mBAAmB,IAAI;AAC3D,MAAA,OAAO,CAAC,CAACD,gBAAgB,EAAE6N,MAAM,IAAI;AACvC,IAAA;;AAEA;AACF;AACA;AACA;AAGEvO,IAAAA,iBAAiBA,CAAC9D,GAAG,GAAGjG,IAAI,CAACpO,MAAM,EAAE,EAAEgoB,KAAK,GAAG,CAAC,EAChD;MACE,IAAI,CAAC,IAAI,CAAC9V,iBAAiB,EAAE,EAAE,OAAO,KAAK;AAC3C3R,MAAAA,eAAe,CAAC,UAAU,CAAC8T,GAAG,EAAE,IAAI,CAAC9G,kBAAkB,EAAE,IAAI,CAAC,0BAA0B,CAAC;MACzF,IAAI,CAACya,KAAK,IAAI,CAAC,IAAI,CAAC7R,eAAe,EAAE,EAAE,OAAO,IAAI;AAClD,MAAA,KAAK,MAAMpG,KAAK,IAAI,IAAI,CAACzF,QAAQ,EACjC;QACE,IAAIyF,KAAK,EAAEoI,iBAAiB,GAAG5X,eAAe,CAAC,YAAY,EAAEynB,KAAK,CAAC,EACnE;UACE5Z,IAAI,CAAC6Z,KAAK,CAAC5T,GAAG,EAAEA,GAAG,EAAE9T,eAAe,CAAC,YAAY,CAAC;AACpD,QAAA;AACF,MAAA;AACA,MAAA,KAAK,MAAMwP,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;QACE,IAAI0F,KAAK,EAAEoI,iBAAiB,GAAG5X,eAAe,CAAC,YAAY,EAAEynB,KAAK,CAAC,EACnE;UACE5Z,IAAI,CAAC6Z,KAAK,CAAC5T,GAAG,EAAEA,GAAG,EAAE9T,eAAe,CAAC,YAAY,CAAC;AACpD,QAAA;AACF,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;IAIAuX,qBAAqBA,CAACL,OAAO,EAC7B;AACE,MAAA,IAAI,IAAI,CAACzL,IAAI,EAAE2M,cAAc,GAAGpY,eAAe,CAAC,UAAU,EAAEA,eAAe,CAAC,UAAU,CAAC,EACvF;AACER,QAAAA,IAAI,CAACsR,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE9Q,eAAe,CAAC,UAAU,CAAC;AACzDR,QAAAA,IAAI,CAACsR,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE9Q,eAAe,CAAC,UAAU,CAAC;AAC3D,MAAA;AACA6N,MAAAA,IAAI,CAAC0Z,UAAU,CAACvnB,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;AACrF6N,MAAAA,IAAI,CAAC2D,aAAa,CAACxR,eAAe,CAAC,YAAY,EAAEA,eAAe,CAAC,YAAY,EAAE,IAAI,CAACsN,cAAc,CAAC;AACnG,MAAA,IAAI,CAAC7C,sBAAsB,GAAGzK,eAAe,CAAC,aAAa,CAACkX,OAAO,EAAElX,eAAe,CAAC,YAAY,CAAC;MAClG,OAAO,IAAI,CAACyK,sBAAsB;AACpC,IAAA;;AAEA;AAGAkd,IAAAA,WAAWA,GACX;MACE,OAAO,IAAI,CAAC,YAAY;AAC1B,IAAA;;AAEA;AACF;AACA;AACA;IAGEjV,uBAAuBA,CAACoB,GAAG,GAAGtU,IAAI,CAACC,MAAM,EAAE,EAC3C;MACE,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,EAAE,EACzC;AACE,QAAA,OAAOD,IAAI,CAACsO,GAAG,CAACgG,GAAG,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACtH,MAAA;MACA,OAAOtU,IAAI,CAACsR,IAAI,CAACgD,GAAG,EAAE,IAAI,CAACpH,oBAAoB,CAAC;AAClD,IAAA;;AAEA;AACF;AACA;AACA;AAGEwF,IAAAA,uBAAuBA,GACvB;MACE,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,EAAE,EACzC;QACE,OAAO,IAAI,CAAChG,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACzD,MAAA;AACA,MAAA,OAAO,IAAI,CAACA,UAAU,GAAG,IAAI,CAACa,oBAAoB;AACpD,IAAA;;AAEA;AACF;AACA;AACA;AAGE6a,IAAAA,YAAYA,GACZ;AACE,MAAA,MAAMhW,OAAO,GAAG,IAAI,CAAC9G,gBAAgB;MACrC,IAAI,CAAC8G,OAAO,EACZ;AACE,QAAA,OAAO,CAAC;AACV,MAAA;AACA,MAAA,IAAIA,OAAO,CAAC2O,UAAU,IAAI,EAC1B;AACE,QAAA,IAAI,CAAC3O,OAAO,CAACiW,cAAc,IAAI,EAC/B;AACE,UAAA,OAAO,CAAC;AACV,QAAA;QACA,OAAOjW,OAAO,CAACkW,sBAAsB,IAAI,CAACrZ,MAAM,IAAI,CAAC;AACvD,MAAA;AACA,MAAA,OAAOmD,OAAO,CAACmW,uBAAuB,IAAI,IAAI,CAAC;AACjD,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAGEC,oBAAoBA,CAACC,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,oBAAoB,GAAG,IAAI,EACrE;AACE,MAAA,IAAI,CAAC1c,aAAa,EAAE2c,cAAc,GAAGJ,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,oBAAoB,CAAC;AAC/E,MAAA,IAAI,CAACjS,qBAAqB,CAAC,cAAc,EAAE8R,MAAM,CAAC;AAClD,MAAA,IAAI,CAAC9R,qBAAqB,CAAC,aAAa,EAAE+R,KAAK,CAAC;AAChD,MAAA,IAAI,CAAC/R,qBAAqB,CAAC,YAAY,EAAEgS,IAAI,CAAC;AAChD,IAAA;;AAEA;AACF;AACA;AAGEG,IAAAA,kBAAkBA,CAACte,IAAI,EAAEue,MAAM,EAAEC,QAAQ,EACzC;MACE,IAAI,CAAC9c,aAAa,EAAE+c,YAAY,GAAGze,IAAI,EAAEue,MAAM,EAAEC,QAAQ,CAAC;AAC5D,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGErS,IAAAA,qBAAqBA,CAACnM,IAAI,EAAE0Z,KAAK,EACjC;AACE,MAAA,MAAMgF,GAAG,GAAG9Y,MAAM,CAAC5F,IAAI,IAAI,EAAE,CAAC;AAC9B,MAAA,MAAM2e,IAAI,GAAG9X,MAAM,CAAC6S,KAAK,CAAC;MAC1B,IAAI,CAAC,oBAAoB,CAAC5V,GAAG,CAAC4a,GAAG,EAAEC,IAAI,CAAC;AACxC,MAAA,KAAK,MAAMva,UAAU,IAAI,IAAI,CAAC7C,WAAW,EACzC;AACE6C,QAAAA,UAAU,EAAEwa,WAAW,GAAGF,GAAG,EAAEC,IAAI,CAAC;AACtC,MAAA;AACA,MAAA,KAAK,MAAMnZ,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE0F,QAAAA,KAAK,EAAE2G,qBAAqB,GAAGuS,GAAG,EAAEC,IAAI,CAAC;AAC3C,MAAA;AACA,MAAA,KAAK,MAAMvT,OAAO,IAAI,IAAI,CAAChL,cAAc,EACzC;AACEgL,QAAAA,OAAO,EAAEe,qBAAqB,GAAGuS,GAAG,EAAEC,IAAI,CAAC;AAC7C,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AAGEE,IAAAA,8BAA8BA,CAAC7e,IAAI,EAAE0Z,KAAK,EAC1C;AACE,MAAA,KAAK,MAAMlU,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;AACE0F,QAAAA,KAAK,EAAEqZ,8BAA8B,GAAG7e,IAAI,EAAE0Z,KAAK,CAAC;AACtD,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AAGEoF,IAAAA,gBAAgBA,GAChB;AACE,MAAA,KAAK,MAAM1a,UAAU,IAAI,IAAI,CAAC7C,WAAW,EACzC;QACE6C,UAAU,EAAE2a,KAAK,IAAI;AACvB,MAAA;AACA,MAAA,KAAK,MAAMvZ,KAAK,IAAI,IAAI,CAAC1F,cAAc,EACvC;QACE0F,KAAK,EAAEsZ,gBAAgB,IAAI;AAC7B,MAAA;AACA,MAAA,KAAK,MAAM1T,OAAO,IAAI,IAAI,CAAChL,cAAc,EACzC;QACEgL,OAAO,EAAE0T,gBAAgB,IAAI;AAC/B,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAGEE,IAAAA,iBAAiBA,CAACxd,QAAQ,GAAG,EAAE,EAC/B;MACE,MAAMyd,MAAM,GAAG,EAAE;AACjB,MAAA,KAAK,MAAM9F,OAAO,IAAI3X,QAAQ,IAAI,EAAE,EACpC;QACE,MAAM0d,MAAM,GAAGC,KAAK,CAACC,OAAO,CAACjG,OAAO,CAAC,GACjC;AAAElC,UAAAA,QAAQ,EAAEkC,OAAO,CAAC,CAAC,CAAC;AAAElS,UAAAA,QAAQ,EAAEkS,OAAO,CAAC,CAAC,CAAC;UAAEkG,SAAS,EAAElG,OAAO,CAAC,CAAC;AAAE,SAAC,GACrE;UAAElC,QAAQ,EAAEkC,OAAO,EAAElC,QAAQ;AAAEhQ,UAAAA,QAAQ,EAAEkS,OAAO,EAAEjC,SAAS,IAAIiC,OAAO,EAAElS,QAAQ;UAAEoY,SAAS,EAAElG,OAAO,EAAEkG;SAAW;AACrH,QAAA,MAAMpI,QAAQ,GAAGzhB,IAAI,CAAC0R,KAAK,CAACgY,MAAM,CAACjI,QAAQ,IAAIjhB,eAAe,CAAC,KAAK,CAAC;AACrE,QAAA,MAAMiR,QAAQ,GAAG/H,IAAI,CAACgI,KAAK,CAACgY,MAAM,CAACjY,QAAQ,IAAIjR,eAAe,CAAC,iBAAiB,CAAC;QACjF,MAAMqpB,SAAS,GAAGxY,MAAM,CAACqY,MAAM,CAACG,SAAS,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,CAACpI,QAAQ,EAAEhQ,QAAQ,EAAEoY,SAAS,CAAC;AACrD,QAAA,IAAI,IAAI,CAACpc,qBAAqB,IAAI,IAAI,CAACC,kBAAkB,EACzD;AACE,UAAA,IAAI,CAAC,oBAAoB,CAAC+T,QAAQ,EAAEhQ,QAAQ,CAAC;AAC/C,QAAA;QACAgY,MAAM,CAACna,IAAI,CAAC,CAACmS,QAAQ,EAAEhQ,QAAQ,EAAEoY,SAAS,CAAC,CAAC;AAC9C,MAAA;AACA,MAAA,OAAOJ,MAAM;AACf,IAAA;;AAEA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACE,IAAA,iBAAiBK,CAACrI,QAAQ,EAAEhQ,QAAQ,EAAEoY,SAAS,EAC/C;AACE,MAAA,MAAMzX,OAAO,GAAG,IAAI,CAAC9G,gBAAgB;MACrC,IAAIue,SAAS,IAAI,CAAC,IAAI,CAACzX,OAAO,EAAEC,aAAa,IAAI,EACjD;AACE,QAAA;AACF,MAAA;MACA,MAAM0X,IAAI,GAAGvpB,eAAe,CAAC,cAAc,CAAC4R,OAAO,EAAEyX,SAAS,CAAC;MAC/D,IAAI,CAACE,IAAI,EACT;AACE,QAAA;AACF,MAAA;MACA/pB,IAAI,CAACgS,aAAa,CAACyP,QAAQ,EAAEA,QAAQ,EAAEsI,IAAI,CAAC;AAC5C,MAAA,MAAMC,YAAY,GAAGngB,IAAI,CAACogB,WAAW,CAACvgB,IAAI,CAACzJ,MAAM,EAAE,EAAE8pB,IAAI,CAAC;MAC1DrgB,IAAI,CAACkI,QAAQ,CAACH,QAAQ,EAAEuY,YAAY,EAAEvY,QAAQ,CAAC;AACjD,IAAA;;AAEA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACE,IAAA,oBAAoByY,CAACzI,QAAQ,EAAEhQ,QAAQ,EACvC;MACE,IAAI,IAAI,CAAChE,qBAAqB,EAC9B;AACE,QAAA,MAAM0c,WAAW,GAAGnqB,IAAI,CAACC,MAAM,EAAE;QACjC,IAAI,CAACwN,qBAAqB,CAAC2c,UAAU,GAAG,CAAC,EAAED,WAAW,CAAC;QACvDnqB,IAAI,CAACmT,GAAG,CAACsO,QAAQ,EAAEA,QAAQ,EAAE0I,WAAW,CAAC;AAC3C,MAAA;MACA,IAAI,IAAI,CAACzc,kBAAkB,EAC3B;AACE,QAAA,MAAMiE,aAAa,GAAGjI,IAAI,CAACzJ,MAAM,EAAE;QACnC,IAAI,CAACyN,kBAAkB,CAAC0c,UAAU,GAAG,CAAC,EAAEzY,aAAa,CAAC;QACtD3R,IAAI,CAACqqB,aAAa,CAAC5I,QAAQ,EAAEA,QAAQ,EAAE9P,aAAa,CAAC;QACrDjI,IAAI,CAACkI,QAAQ,CAACH,QAAQ,EAAEE,aAAa,EAAEF,QAAQ,CAAC;AAClD,MAAA;AACF,IAAA;;AAEA;;AAEA;AACF;AACA;AACA;IACE,kBAAkB6Y,CAACjI,cAAc,EACjC;AACE,MAAA,MAAMlS,MAAM,GAAGC,MAAM,CAACiS,cAAc,IAAI,EAAE,CAAC;AAC3C,MAAA,KAAK,MAAM/T,GAAG,IAAI,IAAI,CAAC3B,WAAW,EAClC;AACE,QAAA,IAAI2B,GAAG,EAAEU,OAAO,GAAGmB,MAAM,CAAC,EAC1B;AACE,UAAA,OAAO7B,GAAG,CAACic,WAAW,EAAE;AAC1B,QAAA;AACF,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE,IAAA,wBAAwBC,CAACC,WAAW,EAAEC,YAAY,EAAE/G,OAAO,EAC3D;AACE3jB,MAAAA,IAAI,CAACqqB,aAAa,CAACK,YAAY,EAAElqB,eAAe,CAAC,MAAM,EAAEmjB,OAAO,CAACjC,SAAS,CAAC;MAC3E1hB,IAAI,CAACsR,IAAI,CAACmZ,WAAW,EAAE9G,OAAO,CAAClC,QAAQ,CAAC;AACxC,MAAA,MAAMrP,OAAO,GAAG,IAAI,CAAC9G,gBAAgB;MACrC,IAAIqY,OAAO,CAACkG,SAAS,GAAG,CAAC,IAAIzX,OAAO,EAAEC,aAAa,IAAI,EACvD;QACE,MAAM4F,SAAS,GAAG5G,MAAM,CAACe,OAAO,CAACwM,gBAAgB,IAAI,IAAI,CAAC,CAAC;AAC3D,QAAA,IAAI+E,OAAO,CAACkG,SAAS,GAAG5R,SAAS,EACjC;AACE,UAAA,MAAM8R,IAAI,GAAGvpB,eAAe,CAAC,cAAc,CAAC4R,OAAO,EAAEuR,OAAO,CAACkG,SAAS,CAAC;AACvE,UAAA,IAAIE,IAAI,EACR;YACE/pB,IAAI,CAACgS,aAAa,CAACyY,WAAW,EAAE9G,OAAO,CAAClC,QAAQ,EAAEsI,IAAI,CAAC;YACvDvpB,eAAe,CAAC,gBAAgB,CAACkqB,YAAY,EAAEA,YAAY,EAAEX,IAAI,CAAC;AACpE,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;;AAEA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACE,IAAA,uBAAuBY,CAAClJ,QAAQ,EAAEY,cAAc,EAChD;MACE,MAAMrW,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAACqW,cAAc,CAAC;MACxD,IAAI,CAACrW,QAAQ,EACb;AACE,QAAA,OAAO,CAAC;AACV,MAAA;AACA,MAAA,MAAMwW,gBAAgB,GAAGxiB,IAAI,CAACgS,aAAa,CAAChS,IAAI,CAACC,MAAM,EAAE,EAAEwhB,QAAQ,EAAE,IAAI,CAAC1T,qBAAqB,CAAC;AAChG,MAAA,MAAM0U,eAAe,GAAGziB,IAAI,CAACC,MAAM,EAAE;AACrC,MAAA,MAAMyiB,gBAAgB,GAAG1iB,IAAI,CAACC,MAAM,EAAE;MACtC,IAAI0iB,aAAa,GAAGlK,QAAQ;MAC5B,IAAImK,YAAY,GAAG,EAAE;AACrB,MAAA,KAAK,IAAIlS,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG1E,QAAQ,CAACiD,MAAM,EAAEyB,KAAK,EAAE,EACpD;AACE,QAAA,IAAI,CAAC,wBAAwB,CAAC+R,eAAe,EAAEC,gBAAgB,EAAE1W,QAAQ,CAAC0E,KAAK,CAAC,CAAC;QACjF,IAAI,CAAClQ,eAAe,CAAC,wBAAwB,CAACkiB,gBAAgB,EAAEF,gBAAgB,CAAC,EACjF;AACE,UAAA;AACF,QAAA;QACA,MAAM9H,QAAQ,GAAG1a,IAAI,CAAC6iB,eAAe,CAACJ,eAAe,EAAED,gBAAgB,CAAC;QACxE,IAAI9H,QAAQ,GAAGiI,aAAa,EAC5B;AACEC,UAAAA,YAAY,GAAGlS,KAAK;AACpBiS,UAAAA,aAAa,GAAGjI,QAAQ;AAC1B,QAAA;AACF,MAAA;AACA,MAAA,OAAOkI,YAAY;AACrB,IAAA;;AAEA;AACF;AACA;AACA;;AAOE;;AAYA;AAGA9L,IAAAA,iBAAiBA,CAAC8T,SAAS,EAAEC,QAAQ,EACrC;MACE,IAAI,IAAI,CAACjd,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EACpC;QACE5N,IAAI,CAACsR,IAAI,CAACsZ,SAAS,EAAE,IAAI,CAACjd,oBAAoB,CAAC;QAC/C3N,IAAI,CAACsR,IAAI,CAACuZ,QAAQ,EAAE,IAAI,CAACjd,oBAAoB,CAAC;AAChD,MAAA,CAAC,MAED;AACE,QAAA,MAAMkd,MAAM,GAAG,IAAI,CAAC5J,mBAAmB,CAAC1gB,eAAe,CAAC,UAAU,EAAEA,eAAe,CAAC,UAAU,CAAC;QAC/F,IAAIsqB,MAAM,KAAK,KAAK,EACpB;AACE9qB,UAAAA,IAAI,CAACsO,GAAG,CAAC9N,eAAe,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAChDR,UAAAA,IAAI,CAACsO,GAAG,CAAC9N,eAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C,QAAA;AACAR,QAAAA,IAAI,CAAC4jB,QAAQ,CAACiH,QAAQ,EAAErqB,eAAe,CAAC,UAAU,EAAEA,eAAe,CAAC,UAAU,CAAC;AAC/ER,QAAAA,IAAI,CAAC8R,KAAK,CAAC+Y,QAAQ,EAAEA,QAAQ,EAAE/X,IAAI,CAACqR,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAClDnkB,QAAAA,IAAI,CAAC+qB,IAAI,CAACH,SAAS,EAAEpqB,eAAe,CAAC,UAAU,EAAEA,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC;AACnF,MAAA;MACAR,IAAI,CAACsR,IAAI,CAAC,IAAI,CAACnG,6BAA6B,EAAEyf,SAAS,CAAC;MACxD5qB,IAAI,CAACsR,IAAI,CAAC,IAAI,CAAClG,6BAA6B,EAAEyf,QAAQ,CAAC;AACzD,IAAA;;AAEA;AACF;AACA;AACA;AACA;;AASE;AACF;AACA;AACA;;AAsBE;;AASA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAaE;AACF;AACA;AACA;AACA;;AAcE;AACF;AACA;AACA;AACA;;AA+BE;AACF;AACA;AACA;AACA;;AAkBE;AACF;AACA;AACA;;AAOE;AACF;AACA;AACA;AACA;;AAOE;GAyCD;EA3sFQ5T,eAAe,GAAGE,cAAa,CAAC6T,iBAAiB;AAOjD7W,EAAAA,uCAAuC,GAAG,GAAG;AAG7C,EAAA,wBAAwB,GAAGnU,IAAI,CAACC,MAAM,EAAE;AAExC,EAAA,mBAAmB,GAAGD,IAAI,CAACC,MAAM,EAAE;AAEnC,EAAA,mBAAmB,GAAGD,IAAI,CAACC,MAAM,EAAE;AAk8EnC,EAAA,wBAAwBgrB,CAACvI,gBAAgB,EAAEF,gBAAgB,EAClE;AACE,IAAA,MAAM0I,KAAK,GAAGlrB,IAAI,CAAC4jB,QAAQ,CAAC5jB,IAAI,CAACC,MAAM,EAAE,EAAEuiB,gBAAgB,EAAEE,gBAAgB,CAAC;AAC9E,IAAA,OAAO1iB,IAAI,CAACmrB,aAAa,CAACD,KAAK,CAAC,GAAGlrB,IAAI,CAACmrB,aAAa,CAAC3I,gBAAgB,CAAC;AACzE,EAAA;AAGO,EAAA,gBAAgB4I,CAAC9W,GAAG,EAAEoN,SAAS,EAAE2J,MAAM,EAC9C;AACE,IAAA,MAAM/M,CAAC,GAAGoD,SAAS,CAAC,CAAC,CAAC;AACtB,IAAA,MAAMnD,CAAC,GAAGmD,SAAS,CAAC,CAAC,CAAC;AACtB,IAAA,MAAMlD,CAAC,GAAGkD,SAAS,CAAC,CAAC,CAAC;IACtBpN,GAAG,CAAC,CAAC,CAAC,GAAG+W,MAAM,CAAC,CAAC,CAAC,GAAG/M,CAAC,GAAG+M,MAAM,CAAC,CAAC,CAAC,GAAG9M,CAAC,GAAG8M,MAAM,CAAC,CAAC,CAAC,GAAG7M,CAAC;IACtDlK,GAAG,CAAC,CAAC,CAAC,GAAG+W,MAAM,CAAC,CAAC,CAAC,GAAG/M,CAAC,GAAG+M,MAAM,CAAC,CAAC,CAAC,GAAG9M,CAAC,GAAG8M,MAAM,CAAC,CAAC,CAAC,GAAG7M,CAAC;IACtDlK,GAAG,CAAC,CAAC,CAAC,GAAG+W,MAAM,CAAC,CAAC,CAAC,GAAG/M,CAAC,GAAG+M,MAAM,CAAC,CAAC,CAAC,GAAG9M,CAAC,GAAG8M,MAAM,CAAC,EAAE,CAAC,GAAG7M,CAAC;AACvD,IAAA,OAAOlK,GAAG;AACZ,EAAA;AAiCO,EAAA,gBAAgBgX,CAACC,EAAE,EAAEC,EAAE,EAC9B;IACE,MAAM9J,SAAS,GAAG,CAAC1hB,IAAI,CAAC4kB,GAAG,CAAC2G,EAAE,EAAEC,EAAE,CAAC;AACnC,IAAA,OAAO9J,SAAS,GAAG,CAAC,GAChB,CAAC,CAAC,GAAG5O,IAAI,CAACqR,IAAI,CAACrR,IAAI,CAACsR,GAAG,CAAC1C,SAAS,CAAC,CAAC,IAAI,GAAG,GAC1C,CAAC5O,IAAI,CAACqR,IAAI,CAACrR,IAAI,CAACsR,GAAG,CAAC1C,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG;AAChD,EAAA;EAMO,sBAAsB+J,CAACnX,GAAG,EAAErB,MAAM,EAAEyY,KAAK,EAAEC,MAAM,EAAEjK,SAAS,EACnE;IACE,MAAMkK,EAAE,GAAGlK,SAAS,CAAC,CAAC,CAAC,GAAGgK,KAAK,CAAC,CAAC,CAAC;IAClC,MAAMG,EAAE,GAAGnK,SAAS,CAAC,CAAC,CAAC,GAAGgK,KAAK,CAAC,CAAC,CAAC;IAClC,MAAMI,EAAE,GAAGpK,SAAS,CAAC,CAAC,CAAC,GAAGgK,KAAK,CAAC,CAAC,CAAC;AAClC,IAAA,MAAMK,EAAE,GAAG,CAACJ,MAAM,CAAC,CAAC,CAAC,GAAG1Y,MAAM,CAAC,CAAC,CAAC,IAAIyY,KAAK,CAAC,CAAC,CAAC;AAC7C,IAAA,MAAMM,EAAE,GAAG,CAACL,MAAM,CAAC,CAAC,CAAC,GAAG1Y,MAAM,CAAC,CAAC,CAAC,IAAIyY,KAAK,CAAC,CAAC,CAAC;AAC7C,IAAA,MAAMO,EAAE,GAAG,CAACN,MAAM,CAAC,CAAC,CAAC,GAAG1Y,MAAM,CAAC,CAAC,CAAC,IAAIyY,KAAK,CAAC,CAAC,CAAC;AAC7C,IAAA,MAAMQ,EAAE,GAAGN,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE;AACtC,IAAA,IAAI,EAAEI,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI;AAC1B,IAAA,MAAM9W,EAAE,GAAGwW,EAAE,GAAGG,EAAE,GAAGF,EAAE,GAAGG,EAAE,GAAGF,EAAE,GAAGG,EAAE;AACtC,IAAA,MAAME,EAAE,GAAGJ,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE;AACtC,IAAA,IAAIG,YAAY,GAAG,CAAChX,EAAE,GAAG8W,EAAE,KAAK,CAAC,GAAGC,EAAE,GAAGD,EAAE,GAAG,CAAC,GAAGA,EAAE;AACpD,IAAA,IAAIE,YAAY,GAAG,CAAC,EAAE,OAAO,IAAI;AACjCA,IAAAA,YAAY,GAAGtZ,IAAI,CAACqR,IAAI,CAACiI,YAAY,CAAC;AACtC,IAAA,IAAI5G,CAAC,GAAG,CAAC4G,YAAY,GAAGhX,EAAE,GAAG8W,EAAE;IAC/B,IAAI1G,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4G,YAAY,GAAGhX,EAAE,GAAG8W,EAAE;IACrClsB,IAAI,CAAC2kB,WAAW,CAACrQ,GAAG,EAAEqX,MAAM,EAAEjK,SAAS,EAAE8D,CAAC,CAAC;AAC3C,IAAA,OAAOA,CAAC;AACV,EAAA;AAGO,EAAA,uBAAuB6G,CAACpZ,MAAM,EAAEyY,KAAK,EAAEY,KAAK,EACnD;AACE,IAAA,MAAMhO,CAAC,GAAG,CAACgO,KAAK,CAAC,CAAC,CAAC,GAAGrZ,MAAM,CAAC,CAAC,CAAC,IAAIyY,KAAK,CAAC,CAAC,CAAC;AAC3C,IAAA,MAAMnN,CAAC,GAAG,CAAC+N,KAAK,CAAC,CAAC,CAAC,GAAGrZ,MAAM,CAAC,CAAC,CAAC,IAAIyY,KAAK,CAAC,CAAC,CAAC;AAC3C,IAAA,MAAMlN,CAAC,GAAG,CAAC8N,KAAK,CAAC,CAAC,CAAC,GAAGrZ,MAAM,CAAC,CAAC,CAAC,IAAIyY,KAAK,CAAC,CAAC,CAAC;AAC3C,IAAA,OAAOpN,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,IAAI,CAAC;AACnC,EAAA;AAaO,EAAA,cAAc+N,CAACna,OAAO,EAAEyX,SAAS,EACxC;AACE,IAAA,MAAM7R,KAAK,GAAG5F,OAAO,CAACoa,qBAAqB,IAAI;AAE/C,IAAA,IAAI,CAACxU,KAAK,IAAI6R,SAAS,GAAG,CAAC,IAAI,CAACA,SAAS,GAAG,CAAC,IAAI,EAAE,GAAG7R,KAAK,CAAC/I,MAAM,EAClE;AACE,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,OAAOwd,iBAAiB,CAAC5iB,IAAI,CAAC5J,MAAM,EAAE,EAAE+X,KAAK,EAAE6R,SAAS,CAAC;AAC3D,EAAA;AAOO,EAAA,yBAAyB6C,CAACvc,MAAM,EAAEwc,SAAS,EAAEC,UAAU,EAC9D;AACE,IAAA,MAAMC,MAAM,GAAG1c,MAAM,GAAGyc,UAAU,CAAC;AACnC,IAAA,IAAI,OAAOC,MAAM,KAAK,UAAU,EAChC;AACE,MAAA;AACF,IAAA;IACA,KAAK,MAAM,CAACriB,IAAI,EAAE0Z,KAAK,CAAC,IAAIyI,SAAS,EACrC;MACEE,MAAM,CAACC,IAAI,CAAC3c,MAAM,EAAE3F,IAAI,EAAE0Z,KAAK,CAAC;AAClC,IAAA;AACF,EAAA;EAOO,YAAY6I,CAACjc,KAAK,EAAEK,IAAI,EAAEmD,GAAG,EAAE0Y,QAAQ,EAC9C;IACE,IAAI,CAAClc,KAAK,EACV;AACE,MAAA,KAAK,IAAIJ,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG4D,GAAG,CAACrF,MAAM,EAAEyB,KAAK,EAAE,EAC/C;AACE4D,QAAAA,GAAG,CAAC5D,KAAK,CAAC,GAAGsc,QAAQ,CAACtc,KAAK,CAAC;AAC9B,MAAA;AACA,MAAA,OAAO4D,GAAG;AACZ,IAAA;AAEA,IAAA,IAAImV,MAAM;AACV,IAAA,IAAI,OAAO3Y,KAAK,CAAC2E,MAAM,KAAK,UAAU,EACtC;MACEgU,MAAM,GAAG3Y,KAAK,CAAC2E,MAAM,CAACtE,IAAI,EAAEmD,GAAG,CAAC;IAClC,CAAC,MACI,IAAI,OAAOxD,KAAK,CAACsZ,UAAU,KAAK,UAAU,EAC/C;MACEX,MAAM,GAAG3Y,KAAK,CAACsZ,UAAU,CAACjZ,IAAI,EAAEmD,GAAG,CAAC;AACtC,IAAA;AACA,IAAA,IAAI,CAACqV,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,IAAIwD,WAAW,CAACC,MAAM,CAACzD,MAAM,CAAC,KAAKA,MAAM,KAAKnV,GAAG,EAC3E;AACE,MAAA,KAAK,IAAI5D,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG4D,GAAG,CAACrF,MAAM,EAAEyB,KAAK,EAAE,EAC/C;AACE4D,QAAAA,GAAG,CAAC5D,KAAK,CAAC,GAAG+Y,MAAM,CAAC/Y,KAAK,CAAC;AAC5B,MAAA;AACF,IAAA;AACA,IAAA,OAAO4D,GAAG;AACZ,EAAA;EAOO,gBAAgB6Y,CAACC,OAAO,EAAER,UAAU,EAAE,GAAGS,aAAa,EAC7D;AACE,IAAA,MAAMtjB,MAAM,GAAGqjB,OAAO,GAAGR,UAAU,CAAC;AACpC,IAAA,IAAI,OAAO7iB,MAAM,KAAK,UAAU,EAChC;MACE,OAAOsH,MAAM,CAACtH,MAAM,CAAC+iB,IAAI,CAACM,OAAO,CAAC,CAAC,IAAI,CAAC;AAC1C,IAAA;AACA,IAAA,KAAK,MAAME,YAAY,IAAID,aAAa,EACxC;AACE,MAAA,IAAID,OAAO,GAAGE,YAAY,CAAC,KAAKC,SAAS,IAAIH,OAAO,GAAGE,YAAY,CAAC,KAAK,IAAI,EAC7E;QACE,OAAOjc,MAAM,CAAC+b,OAAO,CAACE,YAAY,CAAC,CAAC,IAAI,CAAC;AAC3C,MAAA;AACF,IAAA;AACA,IAAA,OAAO,CAAC;AACV,EAAA;AAMO,EAAA,aAAaE,CAAC9V,OAAO,EAAEmP,MAAM,EACpC;AACE,IAAA,MAAM9c,MAAM,GAAG2N,OAAO,EAAE+V,mBAAmB;AAC3C,IAAA,OAAOpc,MAAM,CAAC,OAAOtH,MAAM,KAAK,UAAU,GAAGA,MAAM,CAAC+iB,IAAI,CAACpV,OAAO,EAAEmP,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACrF,EAAA;AAOO,EAAA,sBAAsB6G,CAAChW,OAAO,EAAEmP,MAAM,EAC7C;IACE,MAAM9c,MAAM,GAAG2N,OAAO,EAAEiW,sBAAsB,IAAIjW,OAAO,EAAE+V,mBAAmB;AAC9E,IAAA,OAAOpc,MAAM,CAAC,OAAOtH,MAAM,KAAK,UAAU,GAAGA,MAAM,CAAC+iB,IAAI,CAACpV,OAAO,EAAEmP,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACrF,EAAA;AAGO,EAAA,UAAU+G,CAACtZ,GAAG,EAAErB,MAAM,EAAE+T,MAAM,EACrC;IACE,OAAO3Y,IAAI,CAACC,GAAG,CAACgG,GAAG,EAAErB,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAE+T,MAAM,CAAC;AAC/D,EAAA;AAEO,EAAA,KAAK,GAAGG,MAAM,CAAC0G,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhC,EAAA,MAAM,GAAG1G,MAAM,CAAC0G,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjC,EAAA,iBAAiB,GAAG7tB,IAAI,CAACC,MAAM,EAAE;AACjC,EAAA,gBAAgB,GAAGD,IAAI,CAACC,MAAM,EAAE;AAChC,EAAA,cAAc,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC9B,EAAA,eAAe,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC/B,EAAA,WAAW,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC3B,EAAA,cAAc,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC9B,EAAA,UAAU,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC1B,EAAA,OAAO,GAAGD,IAAI,CAACC,MAAM,EAAE;AACvB,EAAA,aAAa,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC7B,EAAA,gBAAgB,GAAGD,IAAI,CAACC,MAAM,EAAE;AAChC,EAAA,eAAe,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC/B,EAAA,UAAU,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC1B,EAAA,UAAU,GAAGD,IAAI,CAACC,MAAM,EAAE;AAC1B,EAAA,YAAY,GAAGoO,IAAI,CAACpO,MAAM,EAAE;AAC5B,EAAA,YAAY,GAAGoO,IAAI,CAACpO,MAAM,EAAE;AAC5B,EAAA,YAAY,GAAGoO,IAAI,CAACpO,MAAM,EAAE;AAC5B,EAAA,SAAS,GAAG6nB,IAAI,CAAC7nB,MAAM,EAAE;AACzB,EAAA,SAAS,GAAG6nB,IAAI,CAAC7nB,MAAM,EAAE;AAEzB,EAAA,iBAAiB,GAAGknB,MAAM,CAAC0G,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/C,EAAA,kBAAkB,GAAGhkB,IAAI,CAAC5J,MAAM,EAAE;EAElC,qBAAqB,GAAG,QAAQ;AAEhC6tB,EAAAA,cAAc,GAAGA,cAAc;AAE/Bvf,EAAAA,MAAM,GAAGA,MAAM;AAEfwW,EAAAA,mBAAmB,GAAGA,mBAAmB;EAACgJ,WAAAA,GAAA;IAAA,KAAA,CAAAztB,eAAA,GAAAiI,UAAA,EAAA;AAAA,EAAA;AAAA,CAAA,EAAA;;;;"}
|