@carbonenginejs/runtime 0.1.0-alpha.6 → 0.1.0-alpha.7
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.
Potentially problematic release.
This version of @carbonenginejs/runtime might be problematic. Click here for more details.
- package/dist/global/consts/effectPaths.js +4 -1
- package/dist/global/consts/effectPaths.js.map +1 -1
- package/dist/global/consts/index.js +1 -1
- package/dist/global/index.js +1 -1
- package/dist/index.js +3 -3
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +19 -2
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonTypedViews.js +121 -65
- package/dist/resource/formats/hlsl/core/carbonTypedViews.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +10 -7
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgpu/core/effectBackendBodySet.js +3 -1
- package/dist/resource/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/packageEffect.js +5 -0
- package/dist/resource/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/emitWgsl.js +20 -0
- package/dist/resource/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/emulatedAddressing.js +93 -4
- package/dist/resource/formats/webgpu/core/wgsl/emulatedAddressing.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +74 -64
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js +16 -7
- package/dist/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/wgslTypedViews.js +69 -27
- package/dist/resource/formats/webgpu/core/wgsl/wgslTypedViews.js.map +1 -1
- package/dist/resource/geometry/registerGeometryResources.js +10 -1
- package/dist/resource/geometry/registerGeometryResources.js.map +1 -1
- package/dist/sof/EveSOFDNA.js +4 -2
- package/dist/sof/EveSOFDNA.js.map +1 -1
- package/dist/sof/EveSOFDataMgr.js +83 -69
- package/dist/sof/EveSOFDataMgr.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +6 -1
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +7 -2
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +43 -0
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/device/Tr2GpuStructuredBuffer.js +134 -0
- package/dist/trinity/core/device/Tr2GpuStructuredBuffer.js.map +1 -0
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +410 -124
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/eve/effect/lensflare/EveLensflare.js +303 -312
- package/dist/trinity/eve/effect/lensflare/EveLensflare.js.map +1 -1
- package/dist/trinity/eve/effect/lensflare/EveOccluder.js +117 -0
- package/dist/trinity/eve/effect/lensflare/EveOccluder.js.map +1 -0
- package/dist/trinity/eve/index.js +1 -0
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +286 -6
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +212 -32
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/generated/eve/effect/index.js +0 -1
- package/dist/trinity/generated/eve/effect/index.js.map +1 -1
- package/dist/trinity/generated/eve/index.js +0 -1
- package/dist/trinity/generated/eve/index.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -2
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +2 -2
- package/dist/trinity/postProcess/Tr2PostProcessRenderer.js +4 -1
- package/dist/trinity/postProcess/Tr2PostProcessRenderer.js.map +1 -1
- package/dist/trinity/postProcess/Tr2SSAO.js +282 -21
- package/dist/trinity/postProcess/Tr2SSAO.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js +71 -53
- package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +81 -18
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +46 -4
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +32 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +27 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +29 -4
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js +32 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +57 -5
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js +111 -5
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -1
- package/docs/trinity/reference/classes/generated.md +20 -20
- package/docs/trinity/reference/classes/post-process.md +1 -1
- package/package.json +1 -1
- package/dist/trinity/generated/eve/effect/EveOccluder.js +0 -38
- package/dist/trinity/generated/eve/effect/EveOccluder.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js +0 -48
- package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveSOFDNA.js","sources":["../../../src/sof/EveSOFDNA.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOFDNA.h\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOFDNA.cpp\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOFDNA_Blue.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { carbon, impl, type } from \"#schema\";\r\nimport { ReflectionMode, TriBatchType } from \"#consts/graphics\";\r\nimport { EveSOFDataMgr } from \"./EveSOFDataMgr.js\";\r\nimport { EveSOFDataHull } from \"./hull/EveSOFDataHull.js\";\r\nimport { EveSOFDataArea } from \"./shared/EveSOFDataArea.js\";\r\nimport { EveSOFUtilsParameterName } from \"./shared/EveSOFUtilsParameterName.js\";\r\n\r\n\r\nconst COMMAND_NAMES = Object.freeze([\r\n \"invalid\",\r\n \"material\",\r\n \"mesh\",\r\n \"respathinsert\",\r\n \"variant\",\r\n \"class\",\r\n \"pattern\",\r\n \"layout\"\r\n]);\r\n\r\nconst BUILD_CLASSES = Object.freeze([\r\n \"ship\",\r\n \"mobile\",\r\n \"stationary\",\r\n \"swarm\",\r\n \"extension\"\r\n]);\r\n\r\n/** Resolves a SOF DNA string against an EveSOFDataMgr. */\r\n@type.define({ className: \"EveSOFDNA\", family: \"eve\" })\r\nexport class EveSOFDNA extends CjsModel\r\n{\r\n\r\n static DnaCommand = Object.freeze({\r\n CMD_INVALID: 0,\r\n CMD_MATERIAL: 1,\r\n CMD_MESH: 2,\r\n CMD_RESPATHINSERT: 3,\r\n CMD_VARIANT: 4,\r\n CMD_CLASS: 5,\r\n CMD_PATTERN: 6,\r\n CMD_LAYOUT: 7,\r\n CMD_MAX: 8\r\n });\r\n\r\n @type.string\r\n dna = \"\";\r\n\r\n @type.objectRef(\"EveSOFDataMgr\")\r\n dataMgr = null;\r\n\r\n @type.list(\"EveSOFDataMgr::HullData\")\r\n hullDatas = [];\r\n\r\n @type.objectRef(\"EveSOFDataMgr::FactionData\")\r\n factionData = null;\r\n\r\n @type.objectRef(\"EveSOFDataMgr::RaceData\")\r\n raceData = null;\r\n\r\n @type.objectRef(\"EveSOFDataMgr::GenericData\")\r\n genericData = null;\r\n\r\n @type.objectRef(\"EveSOFDataMgr::PatternData\")\r\n patternData = null;\r\n\r\n @type.list(\"EveSOFDataMgr::LayoutData\")\r\n layoutData = [];\r\n\r\n @type.list(\"EveSOFDataMgr::HullData\")\r\n customHullData = [];\r\n\r\n @type.list(\"std::string\")\r\n hullNames = [];\r\n\r\n @type.string\r\n factionName = \"\";\r\n\r\n @type.string\r\n raceName = \"\";\r\n\r\n @type.rawStruct(\"CcpMath::Sphere\")\r\n parentBoundingSphere = null;\r\n\r\n @type.rawStruct(\"CcpMath::AxisAlignedEllipsoid\")\r\n parentHullShapeEllipsoid = null;\r\n\r\n @type.boolean\r\n isSkinned = false;\r\n\r\n #commands = new Map();\r\n\r\n #parseError = null;\r\n\r\n /**\r\n * Resolves either a complete DNA string or Carbon's layout descriptor form.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Setup(dnaOrLayout, dataOrDescriptor, parent = null, dataMgr = null)\r\n {\r\n if (dataOrDescriptor instanceof EveSOFDataMgr && dataMgr === null)\r\n {\r\n this.#setupFromString(String(dnaOrLayout ?? \"\"), dataOrDescriptor);\r\n return;\r\n }\r\n this.#setupFromDescriptor(String(dnaOrLayout ?? \"\"), dataOrDescriptor, parent, dataMgr);\r\n }\r\n\r\n /** Returns whether the three required catalog selections resolved. */\r\n @carbon.method\r\n @impl.implemented\r\n IsValid()\r\n {\r\n return this.hullDatas.length > 0 && this.factionData !== null && this.raceData !== null;\r\n }\r\n\r\n /** Returns the stable parse failure used by non-rendering adapters. */\r\n GetParseError()\r\n {\r\n return this.#parseError;\r\n }\r\n\r\n /** Performs Carbon's slow command validation with unsafe C++ cases guarded. */\r\n @carbon.method\r\n @impl.implemented\r\n ValidateContent()\r\n {\r\n if (!this.IsValid() || this.#parseError) return false;\r\n\r\n for (const [name, args] of this.#commands)\r\n {\r\n switch (name)\r\n {\r\n case \"material\":\r\n if (args.length !== this.genericData.materialPrefixes.length) return false;\r\n if (args.some(value => value !== \"none\" && !this.dataMgr.HasMaterialData(value))) return false;\r\n break;\r\n // `mesh` carries one material per material prefix, exactly like\r\n // `material`, and it is the spelling live EVE skins are authored with.\r\n // The Carbon snapshot at\r\n // trinity/trinity/Eve/SpaceObjectFactory/EveSOFDNA.cpp validates\r\n // CMD_MESH as a single argument alongside CMD_RESPATHINSERT; that is a\r\n // deliberate deviation, because real authored DNA fails it. See\r\n // ccpwgl's legacy reader indexing `commands.mesh[materialIndex]`\r\n // against `generic.materialPrefixes` for independent confirmation.\r\n case \"mesh\":\r\n case \"material\":\r\n if (args.length !== this.genericData.materialPrefixes.length) return false;\r\n if (args.some(value => value !== \"none\" && !this.dataMgr.HasMaterialData(value))) return false;\r\n break;\r\n case \"respathinsert\":\r\n if (args.length !== 1) return false;\r\n break;\r\n case \"variant\":\r\n if (args.length !== 1 || !this.genericData.variants.has(args[0])) return false;\r\n break;\r\n case \"class\":\r\n if (args.length !== 1 || !BUILD_CLASSES.includes(args[0])) return false;\r\n break;\r\n case \"pattern\":\r\n if (args.length !== 3 || !this.dataMgr.HasPatternData(args[0])) return false;\r\n if (args[1] !== \"none\" && !this.dataMgr.HasMaterialData(args[1])) return false;\r\n if (args[2] !== \"none\" && !this.dataMgr.HasMaterialData(args[2])) return false;\r\n break;\r\n case \"layout\":\r\n if (args.length === 0 || args.some(value => !this.dataMgr.HasLayoutData(value))) return false;\r\n break;\r\n default:\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Returns the normalized DNA text stored for the resolved selection. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDnaString()\r\n {\r\n return this.dna;\r\n }\r\n\r\n /** Returns the number of hull records composing this selection. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMultiHullCount()\r\n {\r\n return this.hullDatas.length;\r\n }\r\n\r\n /** Returns the resolver's live hull-name array in composition order. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullNames()\r\n {\r\n return this.hullNames;\r\n }\r\n\r\n /**\r\n * Returns the explicit DNA build-class index when valid, otherwise the first\r\n * hull's default.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBuildClass()\r\n {\r\n const args = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_CLASS);\r\n if (args?.length)\r\n {\r\n const index = BUILD_CLASSES.indexOf(args[0]);\r\n if (index !== -1) return index;\r\n }\r\n return this.hullDatas[0]?.buildClass ?? 0;\r\n }\r\n\r\n /**\r\n * Returns the first hull's geometry path, rewritten to Carbon's combined path\r\n * convention for a multi-hull selection.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullGeometryResPath()\r\n {\r\n if (this.hullDatas.length === 0) return \"\";\r\n if (this.hullDatas.length === 1) return this.hullDatas[0].geometryResFilePath ?? \"\";\r\n\r\n let result = this.hullDatas[0].geometryResFilePath ?? \"\";\r\n const variantNumber = this.hullNames.map(name => name.slice(-1)).join(\"\");\r\n const nameParts = this.hullNames[0].split(\"_\");\r\n const variant = nameParts[nameParts.length - 1];\r\n if (variant)\r\n {\r\n result = result.replace(`${variant}.gr2`, `${variantNumber}.gr2`);\r\n result = result.replace(`${variant}/`, \"all/\");\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live mesh-area list for a supported batch\r\n * type, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullMeshAreas(batchType, hullIndex = 0)\r\n {\r\n const hull = this.hullDatas[hullIndex];\r\n if (!hull) return null;\r\n switch (batchType)\r\n {\r\n case TriBatchType.TRIBATCHTYPE_OPAQUE: return hull.opaqueAreas;\r\n case TriBatchType.TRIBATCHTYPE_DECAL: return hull.decalAreas;\r\n case TriBatchType.TRIBATCHTYPE_TRANSPARENT: return hull.transparentAreas;\r\n case TriBatchType.TRIBATCHTYPE_ADDITIVE: return hull.additiveAreas;\r\n case TriBatchType.TRIBATCHTYPE_DISTORTION: return hull.distortionAreas;\r\n default: return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live decal-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullDecalSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.hullDecalSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live light-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullLightSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.hullLightSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live sprite-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullSpriteSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.spriteSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live spotlight-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullSpotlightSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.spotlightSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the faction's catalog-owned spotlight colors for the numeric group,\r\n * treating -1 or a missing group as absent.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionSpotlightSetData(groupIndex)\r\n {\r\n if (Number(groupIndex) === -1) return null;\r\n return this.factionData?.spotlightSetsColors?.get(Number(groupIndex)) ?? null;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live plane-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullPlaneSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.planeSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the faction's catalog-owned plane-set colors for the numeric group,\r\n * treating -1 or a missing group as absent.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionPlaneSetData(groupIndex)\r\n {\r\n if (Number(groupIndex) === -1) return null;\r\n return this.factionData?.planeSetsColors?.get(Number(groupIndex)) ?? null;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live sprite-line-set list, or an empty\r\n * list when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullSpriteLineSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.spriteLineSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live haze-set list, or an empty list when\r\n * that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullHazeSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.hazeSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live banner list, or an empty list when\r\n * that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBanners(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.banners ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live banner-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBannerSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.bannerSets ?? [];\r\n }\r\n\r\n /** Returns legacy hull children from Carbon's first-hull-only path. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullChildren()\r\n {\r\n return this.hullDatas[0]?.children ?? [];\r\n }\r\n\r\n /** Returns SOF6 child sets from Carbon's first-hull-only path. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullChildSets()\r\n {\r\n return this.hullDatas[0]?.childSets ?? [];\r\n }\r\n\r\n /** Returns instanced attachments from Carbon's first-hull-only path. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullInstancedMeshes()\r\n {\r\n return this.hullDatas[0]?.instancedMeshes ?? [];\r\n }\r\n\r\n /** Returns legacy animation declarations from Carbon's first hull. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullAnimations()\r\n {\r\n return this.hullDatas[0]?.animations ?? [];\r\n }\r\n\r\n /**\r\n * Returns the first hull record's live sound-emitter declarations, or an empty\r\n * list.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullSoundEmitters()\r\n {\r\n return this.hullDatas[0]?.soundEmitters ?? [];\r\n }\r\n\r\n /**\r\n * Returns the first hull record's live controller declarations, or an empty\r\n * list.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullControllers()\r\n {\r\n return this.hullDatas[0]?.controllers ?? [];\r\n }\r\n\r\n /** Returns the first hull's non-empty model-rotation curve path, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetModelRotationCurvePath()\r\n {\r\n return this.hullDatas[0]?.modelRotationCurvePath || null;\r\n }\r\n\r\n /** Returns the first hull's non-empty model-translation curve path, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetModelTranslationCurvePath()\r\n {\r\n return this.hullDatas[0]?.modelTranslationCurvePath || null;\r\n }\r\n\r\n /** Gets the faction visibility override for one legacy child group. */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionChildData(groupIndex)\r\n {\r\n const index = Number(groupIndex);\r\n if (index === -1) return null;\r\n return this.factionData?.factionChildren?.get(index) ?? null;\r\n }\r\n\r\n /** Returns the resolved generic catalog's banner-shader data, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericBannerShaderData()\r\n {\r\n return this.genericData?.bannerShader ?? null;\r\n }\r\n\r\n /** Returns Carbon's decal minimum screen size for one HullDecalSetItem Usage. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDecalMinScreenSize(usage)\r\n {\r\n return this.genericData?.decalMinScreenSize?.[Number(usage)];\r\n }\r\n\r\n /**\r\n * Returns the greatest opaque area index for the selected hull, using zero for\r\n * non-opaque batches or an empty area list.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHighestMeshAreaIndex(batchType, hullIndex = 0)\r\n {\r\n if (batchType !== TriBatchType.TRIBATCHTYPE_OPAQUE) return 0;\r\n let highest = 0;\r\n for (const area of this.GetHullMeshAreas(batchType, hullIndex) ?? [])\r\n {\r\n highest = Math.max(highest, area.index);\r\n }\r\n return highest;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live turret-locator list, or an empty\r\n * list.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullTurretLocators(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.locatorTurrets ?? [];\r\n }\r\n\r\n /** Returns a new sorted snapshot of the selected hull's locator-set names. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullLocatorSetNames(hullIndex = 0)\r\n {\r\n const locatorSets = this.hullDatas[hullIndex]?.locatorSets;\r\n return locatorSets instanceof Map ? [...locatorSets.keys()].sort() : [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live locator list for a named set, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullLocators(setName, hullIndex = 0)\r\n {\r\n const locatorSets = this.hullDatas[hullIndex]?.locatorSets;\r\n return locatorSets instanceof Map ? locatorSets.get(String(setName)) ?? null : null;\r\n }\r\n\r\n /**\r\n * Returns the live locator list used to place a named layout set on the\r\n * selected hull, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPlacementLocators(hullIndex, locatorSetName)\r\n {\r\n return this.GetHullLocators(locatorSetName, hullIndex);\r\n }\r\n\r\n /** Returns the number of layout catalog records selected by the DNA. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLayoutCount()\r\n {\r\n return this.layoutData.length;\r\n }\r\n\r\n /** Returns the catalog-owned selected layout at the numeric index, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLayoutData(index)\r\n {\r\n return this.layoutData[Number(index)] ?? null;\r\n }\r\n\r\n /**\r\n * Returns the total number of locators in the named set across every selected\r\n * hull.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorCount(setName)\r\n {\r\n let count = 0;\r\n for (let hullIndex = 0; hullIndex < this.hullDatas.length; hullIndex++)\r\n {\r\n count += this.GetHullLocators(setName, hullIndex)?.length ?? 0;\r\n }\r\n return count;\r\n }\r\n\r\n /**\r\n * Returns the first next-subsystem locator position for the selected hull, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullNextSubsystemOffset(hullIndex = 0)\r\n {\r\n return this.GetHullLocators(\"next_subsystem\", hullIndex)?.[0]?.position ?? null;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live audio position only when it is the\r\n * final hull in the composition.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullAudioPosition(hullIndex = 0)\r\n {\r\n if (hullIndex + 1 !== this.hullDatas.length) return null;\r\n return this.hullDatas[hullIndex]?.audioPosition ?? null;\r\n }\r\n\r\n /**\r\n * Returns the generic catalog's base resource path for area shaders, or an\r\n * empty string.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetAreaShaderLocationResPath()\r\n {\r\n return this.genericData?.areaShaderLocation ?? \"\";\r\n }\r\n\r\n /**\r\n * Returns the generic catalog's base resource path for decal shaders, or an\r\n * empty string.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDecalShaderLocationResPath()\r\n {\r\n return this.genericData?.decalShaderLocation ?? \"\";\r\n }\r\n\r\n /** Carbon returns constant decal shader 0. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDecalShader()\r\n {\r\n return 0;\r\n }\r\n\r\n /** Reports whether the first selected hull explicitly enables decal sets. */\r\n @carbon.method\r\n @impl.implemented\r\n IsHullUsingDecalSets()\r\n {\r\n return this.hullDatas[0]?.isUsingDecalSets === true;\r\n }\r\n\r\n /**\r\n * Returns the generic animated or static shader prefix requested by the\r\n * caller.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetShaderPrefix(isAnimated)\r\n {\r\n return isAnimated ? this.genericData?.shaderPrefixAnimated ?? \"\" : this.genericData?.shaderPrefix ?? \"\";\r\n }\r\n\r\n /**\r\n * Builds an area-shader resource path from the generic base path, the current\r\n * hull animation prefix, and the supplied suffix.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetCompleteShaderPath(path)\n {\n // Carbon's StringInsertStubAfter inserts after the LAST slash, including\n // shader suffixes that contain subdirectories (quad/quadv5.fx).\n const shaderPath = `/${path}`,\n index = shaderPath.lastIndexOf(\"/\") + 1;\n return `${this.GetAreaShaderLocationResPath()}${shaderPath.slice(0, index)}${this.GetShaderPrefix(this.IsHullAnimated())}${shaderPath.slice(index)}`;\n }\n\r\n /**\r\n * Returns the generic catalog's area-shader definition with the requested\r\n * name, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericAreaShaderData(shaderName)\r\n {\r\n return this.genericData?.areaShaderData?.get(String(shaderName)) ?? null;\r\n }\r\n\r\n /**\r\n * Returns the generic catalog's decal-shader definition with the requested\r\n * name, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericDecalShaderData(shaderName)\r\n {\r\n return this.genericData?.decalShaderData?.get(String(shaderName)) ?? null;\r\n }\r\n\r\n /** Returns a hull-local texture path for a projected opaque mesh index. */\r\n @carbon.method\r\n @impl.adapted\r\n GetHullTextureWithMeshIndex(textureName, meshIndex, hullIndex = 0, resourceExists = null, cache = null)\r\n {\r\n const hull = this.hullDatas[hullIndex];\r\n const areaIndex = hull?.meshIndexToOpaqueAreaLookup?.get(Number(meshIndex));\r\n if (areaIndex === undefined) return null;\r\n const texture = hull.opaqueAreas?.[areaIndex]?.textures?.get(String(textureName));\r\n if (!texture) return null;\r\n return this.ModifyTextureResPath(texture.resFilePath, resourceExists, cache);\r\n }\r\n\r\n /** Returns the resolved generic catalog's damage settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericDamageData()\r\n {\r\n return this.genericData?.damage ?? null;\r\n }\r\n\r\n /** Returns the resolved generic catalog's hull-damage settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericHullDamageData()\r\n {\r\n return this.genericData?.hullDamage ?? null;\r\n }\r\n\r\n /** Returns the resolved generic catalog's swarm behavior properties, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericSwarmProperties()\r\n {\r\n return this.genericData?.swarmBehavior ?? null;\r\n }\r\n\r\n /** Returns the resolved race catalog's damage settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRaceDamageData()\r\n {\r\n return this.raceData?.damage ?? null;\r\n }\r\n\r\n /** Returns the resolved race catalog's booster settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRaceBoosterData()\r\n {\r\n return this.raceData?.boosters ?? null;\r\n }\r\n\r\n /** Returns the selected hull record's live booster settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBoosterData(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.boosters ?? null;\r\n }\r\n\r\n /**\r\n * Returns the combined number of authored booster items across all selected\r\n * hulls.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBoosterCount()\r\n {\r\n return this.hullDatas.reduce(\r\n (count, hull) => count + (Array.isArray(hull?.boosters?.items) ? hull.boosters.items.length : 0),\r\n 0\r\n );\r\n }\r\n\r\n /**\r\n * Returns the first hull's numeric impact-effect type, defaulting to no impact\r\n * effect.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactEffectType()\r\n {\r\n return Number(this.hullDatas[0]?.impactEffectType ?? EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE);\r\n }\r\n\r\n /**\r\n * Returns the generic shield-shader path selected by the hull's impact-effect\r\n * type, or null when no supported shield effect applies.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactShieldShader()\r\n {\r\n const damage = this.GetGenericDamageData();\r\n if (!damage) return null;\r\n switch (this.GetImpactEffectType())\r\n {\r\n case EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID: return damage.shieldShaderEllipsoid ?? \"\";\r\n case EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_HULL: return damage.shieldShaderHull ?? \"\";\r\n default: return null;\r\n }\r\n }\r\n\r\n /** Applies Carbon's optional faction/DNA texture path insertion. */\r\n @carbon.method\r\n @impl.implemented\r\n ModifyTextureResPath(resourcePath, resourceExists = null, cache = null)\r\n {\r\n let insert = this.factionData?.resPathInsert || null;\r\n const args = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_RESPATHINSERT);\r\n if (args?.length === 1) insert = args[0] === \"none\" ? null : args[0];\r\n if (!insert || typeof resourceExists !== \"function\") return resourcePath;\r\n\r\n const slash = resourcePath.lastIndexOf(\"/\");\r\n if (slash === -1) return resourcePath;\r\n let candidate = `${resourcePath.slice(0, slash + 1)}${insert}/${resourcePath.slice(slash + 1)}`;\r\n const underscore = candidate.lastIndexOf(\"_\");\r\n if (underscore === -1) return resourcePath;\r\n candidate = `${candidate.slice(0, underscore)}_${insert}${candidate.slice(underscore)}`;\r\n\r\n if (cache?.has(candidate)) return cache.get(candidate) ? candidate : resourcePath;\r\n const exists = resourceExists(candidate) === true;\r\n if (cache) cache.set(candidate, exists);\r\n return exists ? candidate : resourcePath;\r\n }\r\n\r\n /** Returns the resolved faction's catalog-owned color array, or an empty list. */\r\n @carbon.method\r\n @impl.implemented\r\n GetColorSet()\r\n {\r\n return this.factionData?.colorData?.colors ?? [];\r\n }\r\n\r\n /**\r\n * Returns the resolved faction's catalog-owned logo at the numeric index, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLogo(index)\r\n {\r\n return this.factionData?.logoSetData?.logos?.[Number(index)] ?? null;\r\n }\r\n\r\n /**\r\n * Reports whether the indexed faction logo exists and declares at least one\r\n * texture.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n HasLogoSet(index)\r\n {\r\n return (this.GetLogo(index)?.textures?.size ?? 0) > 0;\r\n }\r\n\r\n /**\r\n * Reports whether the faction visibility set contains the supplied value after\r\n * unsigned 32-bit normalization.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsInVisibilityData(hash)\r\n {\r\n return this.factionData?.visibilityData?.has(Number(hash) >>> 0) === true;\r\n }\r\n\r\n /** Resolves one mesh parameter using Carbon's ordered material fallbacks. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMeshAreaParameter(areaType, parameterName, hullParameters = null, blockedMaterials = 0)\r\n {\r\n let info;\r\n let value;\r\n const materialArgs = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_MATERIAL);\r\n if (materialArgs)\r\n {\r\n info = new EveSOFUtilsParameterName(this.genericData.materialPrefixes, parameterName);\r\n const materialIndex = info.GetMaterialIdx();\r\n if (materialIndex !== -1 && materialIndex < materialArgs.length && materialIndex < 32)\r\n {\r\n const blocked = (blockedMaterials >>> 0) & (1 << materialIndex);\r\n if (!blocked)\r\n {\r\n value = findMaterialParameter(this.dataMgr, materialArgs[materialIndex], info.GetShortName());\r\n if (value) return value;\r\n }\r\n }\r\n }\r\n\r\n const patternArgs = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_PATTERN);\r\n if (patternArgs)\r\n {\r\n info = new EveSOFUtilsParameterName(this.genericData.patternMaterialPrefixes, parameterName);\r\n const materialIndex = info.GetMaterialIdx();\r\n if (materialIndex !== -1 && 1 + materialIndex < patternArgs.length)\r\n {\r\n value = findMaterialParameter(this.dataMgr, patternArgs[1 + materialIndex], info.GetShortName());\r\n if (value) return value;\r\n }\r\n }\r\n\r\n info = new EveSOFUtilsParameterName(this.genericData.patternMaterialPrefixes, parameterName);\r\n if (info.GetMaterialIdx() === 0)\r\n {\r\n value = findMaterialParameter(\r\n this.dataMgr,\r\n this.factionData.defaultPatternLayer1MaterialName,\r\n info.GetShortName()\r\n );\r\n if (value) return value;\r\n }\r\n else if (info.GetMaterialIdx() === 1 && this.UsingSof6())\r\n {\r\n value = findMaterialParameter(\r\n this.dataMgr,\r\n this.factionData.defaultPatternLayer2MaterialName,\r\n info.GetShortName()\r\n );\r\n if (value) return value;\r\n }\r\n\r\n info = new EveSOFUtilsParameterName(this.genericData.materialPrefixes, parameterName);\r\n if (areaType === EveSOFDataArea.AreaType.TYPE_WRECK)\r\n {\r\n value = findAreaMaterialParameter(this.dataMgr, this.GetColorSet(), this.genericData.genericWreckMaterialData, areaType, info);\r\n if (value) return value;\r\n }\r\n if (areaType === EveSOFDataArea.AreaType.TYPE_PRIMARY || areaType === EveSOFDataArea.AreaType.TYPE_REACTOR)\r\n {\r\n value = findAreaMaterialParameter(this.dataMgr, this.GetColorSet(), this.raceData.areaMaterials, areaType, info);\r\n if (value) return value;\r\n }\r\n value = findAreaMaterialParameter(this.dataMgr, this.GetColorSet(), this.factionData.areaMaterials, areaType, info);\r\n if (value) return value;\r\n\r\n return hullParameters?.get(String(parameterName)) ?? null;\r\n }\r\n\r\n /** Resolves a turret shader parameter after applying the faction's material-usage remap. */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionTurretParameters(parameterName)\r\n {\r\n const info = new EveSOFUtilsParameterName(\r\n this.genericData?.materialPrefixes ?? [],\r\n parameterName\r\n );\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialIndex = info.GetMaterialIdx();\r\n const usageIndex = Number(\r\n this.factionData?.materialUsageList?.[materialIndex] ?? materialIndex\r\n );\r\n info.ChangeMaterialIdx(this.genericData, usageIndex);\r\n }\r\n return this.GetMeshAreaParameter(\r\n Number(this.genericData?.turretAreaType ?? EveSOFDataArea.AreaType.TYPE_PRIMARY),\r\n info.GetFullName()\r\n );\r\n }\r\n\r\n /**\r\n * Returns the active pattern's layer count, selecting explicit, SOF6\r\n * faction-default, or legacy hull-default data as appropriate.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPatternLayerCount()\r\n {\r\n if (this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_PATTERN) && !this.patternData) return 0;\r\n if (this.patternData)\r\n {\r\n return this.GetHullPatternApplicationData()?.layerAndProjection.length ?? 0;\r\n }\r\n if (this.UsingSof6())\r\n {\r\n return this.GetFactionalPatternApplicationData()?.layerAndProjection.length ?? 0;\r\n }\r\n return this.hullDatas[0]?.defaultPattern?.enabled === true ? 1 : 0;\r\n }\r\n\r\n /**\r\n * Returns the faction-default pattern's catalog-owned application for the\r\n * first hull, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionalPatternApplicationData()\r\n {\r\n const pattern = this.dataMgr.GetPatternData(this.factionData?.defaultPatternName ?? \"\");\r\n return pattern?.applicationData?.get(this.hullNames[0]) ?? null;\r\n }\r\n\r\n /**\r\n * Returns the selected pattern's SOF6 or legacy catalog application for the\r\n * first hull, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullPatternApplicationData()\r\n {\r\n if (!this.patternData) return null;\r\n const applications = this.patternData.sof6\r\n ? this.patternData.applicationData\r\n : this.patternData.oldApplicationData;\r\n return applications?.get(this.hullNames[0]) ?? null;\r\n }\r\n\r\n /**\r\n * Resolves explicit or SOF6 faction pattern applications and otherwise\r\n * synthesizes a fresh legacy default wrapper.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetPatternApplicationData()\r\n {\r\n if (!this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_PATTERN))\r\n {\r\n if (this.UsingSof6()) return this.GetFactionalPatternApplicationData();\r\n const layer = this.factionData?.defaultPatternInfo;\r\n const projection = this.hullDatas[0]?.defaultPattern;\r\n return layer && projection ? { layerAndProjection: [{ layer, projection }] } : null;\r\n }\r\n return this.GetHullPatternApplicationData();\r\n }\r\n\r\n /**\r\n * Returns the catalog-owned projection for a valid active pattern layer, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPatternProjectionData(application, layer)\r\n {\r\n if (!application || !Number.isInteger(layer) || layer < 0) return null;\r\n if (!this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_PATTERN) && !this.UsingSof6() && layer > 0) return null;\r\n return application.layerAndProjection?.[layer]?.projection ?? null;\r\n }\r\n\r\n /**\r\n * Returns the catalog-owned settings for a valid active pattern layer, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPatternLayerData(application, layer)\r\n {\r\n if (!application || !Number.isInteger(layer) || layer < 0) return null;\r\n if (!this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_PATTERN) && !this.UsingSof6() && layer > 0) return null;\r\n return application.layerAndProjection?.[layer]?.layer ?? null;\r\n }\r\n\r\n /**\r\n * Returns a shallow copy of the pattern layer's material-target array, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetMaterialTargets(layerData)\r\n {\r\n return layerData?.materialTargets?.slice() ?? null;\r\n }\r\n\r\n /**\r\n * Reports whether the pattern layer explicitly enables the numeric hull-area\r\n * type.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsPatternLayerApplicableToArea(layerData, areaType)\r\n {\r\n return layerData?.applicableAreas?.get(Number(areaType)) === true;\r\n }\r\n\r\n /**\r\n * Returns the first hull category's configured reflection mode, falling back\r\n * to Carbon's built-in category rules.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetReflectionMode()\r\n {\r\n const category = this.hullDatas[0]?.category ?? \"\";\r\n const categories = this.genericData?.categoryData;\r\n if (categories?.size)\r\n {\r\n return categories.get(category) ?? ReflectionMode.REFLECT_NEVER;\r\n }\r\n if (category === \"hangar\" || category === \"hangar4k\") return ReflectionMode.REFLECT_LOW_MEDIUM_HIGH;\r\n if (category.includes(\"station\") || category.includes(\"structure\") || category === \"jumpgate\")\r\n {\r\n return ReflectionMode.REFLECT_MEDIUM_AND_HIGH;\r\n }\r\n return ReflectionMode.REFLECT_NEVER;\r\n }\r\n\r\n /**\r\n * Returns a newly allocated sphere enclosing every selected hull after\r\n * applying chained next-subsystem offsets, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBoundingSphere()\r\n {\r\n let result = null;\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < this.hullDatas.length; hullIndex++)\r\n {\r\n const source = this.hullDatas[hullIndex]?.boundingSphere;\r\n if (source?.length >= 4)\r\n {\r\n result = includeSphere(result, [\r\n Number(source[0] ?? 0) + hullOffset[0],\r\n Number(source[1] ?? 0) + hullOffset[1],\r\n Number(source[2] ?? 0) + hullOffset[2],\r\n Number(source[3] ?? -1)\r\n ]);\r\n }\r\n const next = this.GetHullNextSubsystemOffset(hullIndex);\r\n if (next)\r\n {\r\n hullOffset[0] += Number(next[0] ?? 0);\r\n hullOffset[1] += Number(next[1] ?? 0);\r\n hullOffset[2] += Number(next[2] ?? 0);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a fresh descriptor referencing the first resolved hull's live\r\n * ellipsoid vectors, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullShapeEllipsoid()\r\n {\r\n const hull = this.hullDatas[0];\r\n if (!hull) return null;\r\n return {\r\n center: hull.shapeEllipsoidCenter ?? null,\r\n radius: hull.shapeEllipsoidRadius ?? null\r\n };\r\n }\r\n\r\n /**\r\n * Returns a defensive copy of the resolver-owned parent bounding sphere, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetParentBoundingSphere()\r\n {\r\n return EveSOFDNA.#CopySphere(this.parentBoundingSphere);\r\n }\r\n\r\n /** Returns the resolver-owned parent hull-shape ellipsoid descriptor, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetParentHullShapeEllipsoid()\r\n {\r\n return this.parentHullShapeEllipsoid;\r\n }\r\n\r\n /**\r\n * Replaces the parent bounding sphere with a defensive copy of the supplied\r\n * coordinates.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetParentBoundingSphere(boundingSphere)\r\n {\r\n this.parentBoundingSphere = EveSOFDNA.#CopySphere(boundingSphere);\r\n }\r\n\r\n /**\r\n * Replaces the parent hull-shape ellipsoid with a deep copy of the supplied\r\n * center and radius vectors.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetParentShapeEllipsoidInfo(ellipsoid)\r\n {\r\n this.parentHullShapeEllipsoid = EveSOFDNA.#CopyEllipsoid(ellipsoid);\r\n }\r\n\r\n /**\r\n * Creates a detached coordinate array from a sphere-like value, preserving\r\n * null.\r\n */\r\n static #CopySphere(sphere)\r\n {\r\n return sphere ? Array.from(sphere) : null;\r\n }\r\n\r\n /**\r\n * Creates a detached ellipsoid descriptor with copied center and radius\r\n * arrays, preserving null components.\r\n */\r\n static #CopyEllipsoid(ellipsoid)\r\n {\r\n if (!ellipsoid) return null;\r\n return {\r\n center: ellipsoid.center ? Array.from(ellipsoid.center) : null,\r\n radius: ellipsoid.radius ? Array.from(ellipsoid.radius) : null\r\n };\r\n }\r\n\r\n /**\r\n * Reports the resolver's current skinned-animation flag, which layouts may\r\n * disable independently of catalog data.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsHullAnimated()\r\n {\r\n return this.isSkinned;\r\n }\r\n\r\n /**\r\n * Disables skinned animation for this resolved DNA without modifying the\r\n * source hull record.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n DisableAnimation()\r\n {\r\n this.isSkinned = false;\r\n }\r\n\r\n /**\r\n * Reports whether multi-hull composition or the first hull's flag requires\r\n * dynamic bounds.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n DynamicBoundingSphereEnabled()\r\n {\r\n return this.hullDatas.length > 1 || this.hullDatas[0]?.enableDynamicBoundingSphere === true;\r\n }\r\n\r\n /** Reports whether the first selected hull is authored to cast shadows. */\r\n @carbon.method\r\n @impl.implemented\r\n CastShadow()\r\n {\r\n return this.hullDatas[0]?.castShadow === true;\r\n }\r\n\r\n /**\r\n * Reports whether the parsed command map contains the supplied command name or\r\n * valid numeric command.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n HasDnaCommand(command)\r\n {\r\n const name = commandName(command);\r\n return name !== null && this.#commands.has(name);\r\n }\r\n\r\n /**\r\n * Returns a defensive copy of the supplied DNA command's parsed arguments, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDnaCommandArgs(command)\r\n {\r\n const name = commandName(command);\r\n if (name === null || !this.#commands.has(name)) return null;\r\n return this.#commands.get(name).slice();\r\n }\r\n\r\n /** Reports whether the first selected hull uses the SOF6 data model. */\r\n @carbon.method\r\n @impl.implemented\r\n UsingSof6()\r\n {\r\n return this.hullDatas.length > 0 && this.hullDatas[0].sof6 === true;\r\n }\r\n\r\n /** Returns the faction catalog name resolved for this DNA. */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionName()\r\n {\r\n return this.factionName;\r\n }\r\n\r\n /** Returns the race catalog name resolved for this DNA. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRaceName()\r\n {\r\n return this.raceName;\r\n }\r\n\r\n /**\r\n * Resets and repopulates this resolver from a lower-cased DNA string,\r\n * recording parse failures instead of throwing.\r\n */\r\n #setupFromString(dnaString, dataMgr)\r\n {\r\n // A DNA string is lowercased before anything reads it. Every catalog name\r\n // it can contain — hull, faction, race, command, material, pattern, layout\r\n // — is canonically lowercase, so case carries no meaning and folding it\r\n // costs nothing.\r\n //\r\n // Carbon compares command names exactly\r\n // (`cit->first.compare( s_dnaCommands[i] )`) and looks catalog names up as\r\n // given. Authored EVE skins do not respect that: designs in the live feed\r\n // carry `MATERIAL?...`, and porting the exact comparison faithfully\r\n // rejected them with \"Invalid SOF DNA content\". Deliberate deviation.\r\n const dna = dnaString.toLowerCase();\r\n\r\n this.#reset(dna, dataMgr);\r\n const parts = splitCarbon(dna, \":\");\r\n if (parts.length < 3)\r\n {\r\n this.#parseError = \"not-enough-parts\";\r\n return;\r\n }\r\n\r\n for (let index = 3; index < parts.length; index++)\r\n {\r\n const command = splitCarbon(parts[index], \"?\");\r\n if (command.length !== 2)\r\n {\r\n this.#parseError = \"malformed-command\";\r\n return;\r\n }\r\n this.#commands.set(command[0], splitCarbon(command[1], \";\"));\r\n }\r\n\r\n // `mesh` and `material` are the same command: one material per material\r\n // prefix. `mesh` is the spelling live EVE skins are authored with, and\r\n // ccpwgl's legacy reader indexes `commands.mesh[materialIndex]` against\r\n // `generic.materialPrefixes` for the same reason.\r\n //\r\n // The Carbon snapshot does neither. Its parser splits every payload on\r\n // `;`, so it sees four arguments; its ValidateContent then rejects any\r\n // CMD_MESH that is not exactly one; and CMD_MESH is read nowhere in the\r\n // tree. Faithfully porting that gave us a validator that rejects real\r\n // authored DNA and a builder that would have dropped the materials even if\r\n // it had passed. Normalizing here means every downstream reader keeps\r\n // asking for CMD_MATERIAL and simply works.\r\n if (this.#commands.has(\"mesh\") && !this.#commands.has(\"material\"))\r\n {\r\n this.#commands.set(\"material\", this.#commands.get(\"mesh\"));\r\n }\r\n\r\n this.hullNames = splitCarbon(parts[0], \";\");\r\n if (this.hullNames.length === 0)\r\n {\r\n this.#parseError = \"missing-hull\";\r\n return;\r\n }\r\n this.factionName = parts[1];\r\n this.raceName = parts[2];\r\n\r\n for (const name of this.hullNames)\r\n {\r\n const hull = dataMgr.GetHullData(name);\r\n if (!hull)\r\n {\r\n this.#parseError = \"unknown-hull\";\r\n return;\r\n }\r\n this.hullDatas.push(hull);\r\n }\r\n\r\n this.factionData = dataMgr.GetFactionData(this.factionName);\r\n if (!this.factionData)\r\n {\r\n this.#parseError = \"unknown-faction\";\r\n return;\r\n }\r\n this.raceData = dataMgr.GetRaceData(this.raceName);\r\n if (!this.raceData)\r\n {\r\n this.#parseError = \"unknown-race\";\r\n return;\r\n }\r\n\r\n const pattern = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_PATTERN);\r\n if (pattern?.length) this.patternData = dataMgr.GetPatternData(pattern[0]);\r\n const layouts = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_LAYOUT);\r\n if (layouts) this.layoutData = dataMgr.GetLayoutData(layouts);\r\n this.genericData = dataMgr.GetGenericData();\r\n\r\n if (this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_VARIANT)) this.#setupCustomData();\r\n this.parentBoundingSphere = this.GetHullBoundingSphere();\r\n this.parentHullShapeEllipsoid = EveSOFDNA.#CopyEllipsoid(this.GetHullShapeEllipsoid());\r\n this.isSkinned = this.hullDatas[0]?.isSkinned === true;\r\n }\r\n\r\n /**\r\n * Resets and repopulates this nested resolver from a layout descriptor while\r\n * inheriting the parent's command and bounds context.\r\n */\r\n #setupFromDescriptor(layoutName, descriptor, parent, dataMgr)\r\n {\r\n this.#reset(\"\", dataMgr);\r\n if (!descriptor || !parent || !dataMgr)\r\n {\r\n this.#parseError = \"invalid-descriptor-context\";\r\n return;\r\n }\r\n\r\n this.hullNames = splitCarbon(String(descriptor.hull ?? \"\"), \";\");\r\n for (const name of this.hullNames)\r\n {\r\n const hull = dataMgr.GetHullData(name);\r\n if (!hull)\r\n {\r\n this.#parseError = \"unknown-hull\";\r\n return;\r\n }\r\n this.hullDatas.push(hull);\r\n }\r\n if (this.hullDatas.length === 0)\r\n {\r\n this.#parseError = \"missing-hull\";\r\n return;\r\n }\r\n\r\n this.factionName = descriptor.faction || parent.factionName;\r\n this.raceName = descriptor.race || parent.raceName;\r\n this.factionData = dataMgr.GetFactionData(this.factionName);\r\n this.raceData = dataMgr.GetRaceData(this.raceName);\r\n if (!this.factionData || !this.raceData)\r\n {\r\n this.#parseError = \"unknown-faction-or-race\";\r\n return;\r\n }\r\n\r\n const materialArgs = parent.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_MATERIAL) ?? [\"none\", \"none\", \"none\", \"none\"];\r\n for (let index = 0; index < 4; index++)\r\n {\r\n const value = descriptor[`material${index + 1}`];\r\n if (value) materialArgs[index] = value;\r\n }\r\n if (materialArgs.some(value => value !== \"none\")) this.#commands.set(\"material\", materialArgs);\r\n\r\n this.#inheritCommand(parent, EveSOFDNA.DnaCommand.CMD_RESPATHINSERT);\r\n this.#inheritCommand(parent, EveSOFDNA.DnaCommand.CMD_VARIANT);\r\n if (descriptor.layout) this.#commands.set(\"layout\", [descriptor.layout]);\r\n if (descriptor.pattern)\r\n {\r\n const inherited = parent.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_PATTERN) ?? [descriptor.pattern, \"none\", \"none\"];\r\n inherited[0] = descriptor.pattern;\r\n while (inherited.length < 3) inherited.push(\"none\");\r\n this.#commands.set(\"pattern\", inherited.slice(0, 3));\r\n }\r\n\r\n const pattern = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_PATTERN);\r\n if (pattern) this.patternData = dataMgr.GetPatternData(pattern[0]);\r\n const layouts = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_LAYOUT);\r\n if (layouts) this.layoutData = dataMgr.GetLayoutData(layouts);\r\n this.genericData = dataMgr.GetGenericData();\r\n if (this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_VARIANT)) this.#setupCustomData();\r\n\r\n this.dna = `${descriptor.hull}:${this.factionName}:${this.raceName}`;\r\n for (const name of [...this.#commands.keys()].sort())\r\n {\r\n this.dna += `:${name}?${this.#commands.get(name).join(\";\")}`;\r\n }\r\n this.parentBoundingSphere = parent.GetParentBoundingSphere();\r\n this.parentHullShapeEllipsoid = EveSOFDNA.#CopyEllipsoid(parent.GetParentHullShapeEllipsoid());\r\n this.isSkinned = this.hullDatas[0]?.isSkinned === true;\r\n void layoutName;\r\n }\r\n\r\n /**\r\n * Copies one parsed command and its argument snapshot from the parent resolver\r\n * when present.\r\n */\r\n #inheritCommand(parent, command)\r\n {\r\n const args = parent.GetDnaCommandArgs(command);\r\n if (args) this.#commands.set(commandName(command), args);\r\n }\r\n\r\n /**\r\n * Replaces the resolved hull references with resolver-owned variant hull\r\n * snapshots when a variant command is active.\r\n */\r\n #setupCustomData()\r\n {\r\n const args = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_VARIANT);\r\n if (!args?.length) return;\r\n const variant = this.genericData?.variants?.get(args[0]) ?? null;\r\n\r\n this.customHullData = this.hullDatas.map(hull => createCustomHullData(hull, variant));\r\n this.hullDatas = this.customHullData;\r\n }\r\n\r\n /**\r\n * Clears all prior resolution state, binds the supplied DNA text and data\r\n * manager, and removes any parse error.\r\n */\r\n #reset(dna, dataMgr)\r\n {\r\n this.dna = dna;\r\n this.dataMgr = dataMgr;\r\n this.hullDatas = [];\r\n this.factionData = null;\r\n this.raceData = null;\r\n this.genericData = null;\r\n this.patternData = null;\r\n this.layoutData = [];\r\n this.customHullData = [];\r\n this.hullNames = [];\r\n this.factionName = \"\";\r\n this.raceName = \"\";\r\n this.parentBoundingSphere = null;\r\n this.parentHullShapeEllipsoid = null;\r\n this.isSkinned = false;\r\n this.#commands.clear();\r\n this.#parseError = null;\r\n }\r\n\r\n}\r\n\r\nfunction createCustomHullData(source, variant)\r\n{\r\n const shapeCenter = copyArrayValue(\r\n source?.shapeEllipsoid?.center ?? source?.shapeEllipsoidCenter,\r\n [0, 0, 0]\r\n );\r\n const shapeRadius = copyArrayValue(\r\n source?.shapeEllipsoid?.radius ?? source?.shapeEllipsoidRadius,\r\n [-1, -1, -1]\r\n );\r\n const result = {\r\n buildClass: Number(source?.buildClass ?? 0),\r\n geometryResFilePath: String(source?.geometryResFilePath ?? \"\"),\r\n boundingSphere: copyArrayValue(source?.boundingSphere, [0, 0, 0, 0]),\r\n shapeEllipsoidCenter: shapeCenter.slice(),\r\n shapeEllipsoidRadius: shapeRadius.slice(),\r\n shapeEllipsoid: {\r\n center: shapeCenter,\r\n radius: shapeRadius\r\n },\r\n isSkinned: source?.isSkinned === true,\r\n isUsingDecalSets: false,\r\n enableDynamicBoundingSphere: source?.enableDynamicBoundingSphere === true,\r\n castShadow: source?.castShadow === true,\r\n sof6: false,\r\n audioPosition: copyArrayValue(source?.audioPosition, [0, 0, 0]),\r\n spriteSets: [],\r\n spotlightSets: [],\r\n planeSets: [],\r\n spriteLineSets: [],\r\n hazeSets: [],\r\n banners: [],\r\n bannerSets: [],\r\n hullDecalSets: [],\r\n hullLightSets: [],\r\n childSets: [],\r\n defaultPattern: {\r\n enabled: false,\r\n position: [0, 0, 0],\r\n scaling: [0, 0, 0],\r\n rotation: [0, 0, 0, 1],\r\n isMirrored: false\r\n },\r\n impactEffectType: EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE,\r\n opaqueAreas: [],\r\n decalAreas: [],\r\n transparentAreas: [],\r\n additiveAreas: [],\r\n distortionAreas: [],\r\n boosters: {\r\n alwaysOn: false,\r\n hasTrails: false,\r\n items: []\r\n },\r\n locatorTurrets: [],\r\n locatorSets: new Map(),\r\n children: [],\r\n instancedMeshes: [],\r\n animations: [],\r\n soundEmitters: [],\r\n controllers: [],\r\n modelRotationCurvePath: \"\",\r\n modelTranslationCurvePath: \"\",\r\n meshIndexToOpaqueAreaLookup: new Map(),\r\n category: \"\"\r\n };\r\n\r\n if (variant?.hullAreaData)\r\n {\r\n const target = variant.isTransparent ? result.transparentAreas : result.opaqueAreas;\r\n for (const sourceArea of source?.opaqueAreas ?? [])\r\n {\r\n target.push(cloneVariantHullArea(variant.hullAreaData, sourceArea));\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction cloneVariantHullArea(value, sourceArea)\r\n{\r\n const textures = new Map();\r\n if (value?.textures instanceof Map)\r\n {\r\n for (const [name, texture] of value.textures)\r\n {\r\n textures.set(name, { resFilePath: String(texture?.resFilePath ?? \"\") });\r\n }\r\n }\r\n\r\n const parameters = new Map();\r\n if (value?.parameters instanceof Map)\r\n {\r\n for (const [name, parameter] of value.parameters)\r\n {\r\n parameters.set(name, copyArrayValue(parameter, [0, 0, 0, 0]));\r\n }\r\n }\r\n\r\n return {\r\n index: Number(sourceArea?.index ?? 0),\r\n count: Number(sourceArea?.count ?? 1),\r\n blockedMaterials: Number(value?.blockedMaterials ?? 0),\r\n shader: String(value?.shader ?? \"\"),\r\n areaType: Number(value?.areaType ?? 0),\r\n textures,\r\n parameters\r\n };\r\n}\r\n\r\nfunction copyArrayValue(value, fallback)\r\n{\r\n return value && typeof value.length === \"number\" ? Array.from(value) : fallback.slice();\r\n}\r\n\r\nfunction commandName(command)\r\n{\r\n if (typeof command === \"string\") return command;\r\n if (!Number.isInteger(command) || command <= EveSOFDNA.DnaCommand.CMD_INVALID || command >= EveSOFDNA.DnaCommand.CMD_MAX)\r\n {\r\n return null;\r\n }\r\n\r\n return COMMAND_NAMES[command] ?? null;\r\n}\r\n\r\nfunction splitCarbon(value, separator)\r\n{\r\n if (value === \"\") return [];\r\n const result = String(value).split(separator);\r\n if (result[result.length - 1] === \"\") result.pop();\r\n return result;\r\n}\r\n\r\nfunction includeSphere(current, next)\r\n{\r\n if (!next || next[3] < 0) return current;\r\n if (!current || current[3] < 0) return next.slice();\r\n const dx = next[0] - current[0];\r\n const dy = next[1] - current[1];\r\n const dz = next[2] - current[2];\r\n const distance = Math.hypot(dx, dy, dz);\r\n if (current[3] >= distance + next[3]) return current;\r\n if (next[3] >= distance + current[3]) return next.slice();\r\n const radius = (distance + current[3] + next[3]) * 0.5;\r\n if (distance === 0) return [current[0], current[1], current[2], radius];\r\n const factor = (radius - current[3]) / distance;\r\n return [\r\n current[0] + dx * factor,\r\n current[1] + dy * factor,\r\n current[2] + dz * factor,\r\n radius\r\n ];\r\n}\r\n\r\nfunction findMaterialParameter(dataMgr, materialName, parameterName)\r\n{\r\n return dataMgr.GetMaterialData(materialName)?.parameters?.get(parameterName) ?? null;\r\n}\r\n\r\nfunction findAreaMaterialParameter(dataMgr, colors, areaMaterials, areaType, info)\r\n{\r\n if (!areaMaterials) return null;\r\n let value = null;\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialName = areaMaterials.materialNames.get(\r\n `${areaType}:${info.GetMaterialIdx()}`\r\n );\r\n if (materialName) value = findMaterialParameter(dataMgr, materialName, info.GetShortName());\r\n }\r\n else\r\n {\r\n const colorType = areaMaterials.glowColor.get(`${areaType}:${info.GetFullName()}`);\r\n if (colorType !== undefined) value = colors[colorType] ?? null;\r\n }\r\n if (value) return value;\r\n return areaType === EveSOFDataArea.AreaType.TYPE_PRIMARY\r\n ? null\r\n : findAreaMaterialParameter(dataMgr, colors, areaMaterials, EveSOFDataArea.AreaType.TYPE_PRIMARY, info);\r\n}\r\n"],"names":["COMMAND_NAMES","Object","freeze","BUILD_CLASSES","_EveSOFDNA","_identity","EveSOFDNA","CjsModel","e","_init_dna","_init_extra_dna","_init_dataMgr","_init_extra_dataMgr","_init_hullDatas","_init_extra_hullDatas","_init_factionData","_init_extra_factionData","_init_raceData","_init_extra_raceData","_init_genericData","_init_extra_genericData","_init_patternData","_init_extra_patternData","_init_layoutData","_init_extra_layoutData","_init_customHullData","_init_extra_customHullData","_init_hullNames","_init_extra_hullNames","_init_factionName","_init_extra_factionName","_init_raceName","_init_extra_raceName","_init_parentBoundingSphere","_init_extra_parentBoundingSphere","_init_parentHullShapeEllipsoid","_init_extra_parentHullShapeEllipsoid","_init_isSkinned","_init_extra_isSkinned","_initProto","c","_initClass","_applyDecs","type","define","className","family","string","objectRef","list","rawStruct","boolean","carbon","method","impl","implemented","adapted","dna","dataMgr","hullDatas","factionData","raceData","genericData","patternData","layoutData","customHullData","hullNames","factionName","raceName","parentBoundingSphere","parentHullShapeEllipsoid","isSkinned","Map","Setup","dnaOrLayout","dataOrDescriptor","parent","EveSOFDataMgr","String","IsValid","length","GetParseError","ValidateContent","name","args","materialPrefixes","some","value","HasMaterialData","variants","has","includes","HasPatternData","HasLayoutData","GetDnaString","GetMultiHullCount","GetHullNames","GetBuildClass","GetDnaCommandArgs","DnaCommand","CMD_CLASS","index","indexOf","buildClass","GetHullGeometryResPath","geometryResFilePath","result","variantNumber","map","slice","join","nameParts","split","variant","replace","GetHullMeshAreas","batchType","hullIndex","hull","TriBatchType","TRIBATCHTYPE_OPAQUE","opaqueAreas","TRIBATCHTYPE_DECAL","decalAreas","TRIBATCHTYPE_TRANSPARENT","transparentAreas","TRIBATCHTYPE_ADDITIVE","additiveAreas","TRIBATCHTYPE_DISTORTION","distortionAreas","GetHullDecalSets","hullDecalSets","GetHullLightSets","hullLightSets","GetHullSpriteSets","spriteSets","GetHullSpotlightSets","spotlightSets","GetFactionSpotlightSetData","groupIndex","Number","spotlightSetsColors","get","GetHullPlaneSets","planeSets","GetFactionPlaneSetData","planeSetsColors","GetHullSpriteLineSets","spriteLineSets","GetHullHazeSets","hazeSets","GetHullBanners","banners","GetHullBannerSets","bannerSets","GetHullChildren","children","GetHullChildSets","childSets","GetHullInstancedMeshes","instancedMeshes","GetHullAnimations","animations","GetHullSoundEmitters","soundEmitters","GetHullControllers","controllers","GetModelRotationCurvePath","modelRotationCurvePath","GetModelTranslationCurvePath","modelTranslationCurvePath","GetFactionChildData","factionChildren","GetGenericBannerShaderData","bannerShader","GetDecalMinScreenSize","usage","decalMinScreenSize","GetHighestMeshAreaIndex","highest","area","Math","max","GetHullTurretLocators","locatorTurrets","GetHullLocatorSetNames","locatorSets","keys","sort","GetHullLocators","setName","GetPlacementLocators","locatorSetName","GetLayoutCount","GetLayoutData","GetLocatorCount","count","GetHullNextSubsystemOffset","position","GetHullAudioPosition","audioPosition","GetAreaShaderLocationResPath","areaShaderLocation","GetDecalShaderLocationResPath","decalShaderLocation","GetDecalShader","IsHullUsingDecalSets","isUsingDecalSets","GetShaderPrefix","isAnimated","shaderPrefixAnimated","shaderPrefix","GetCompleteShaderPath","path","shaderPath","lastIndexOf","IsHullAnimated","GetGenericAreaShaderData","shaderName","areaShaderData","GetGenericDecalShaderData","decalShaderData","GetHullTextureWithMeshIndex","textureName","meshIndex","resourceExists","cache","areaIndex","meshIndexToOpaqueAreaLookup","undefined","texture","textures","ModifyTextureResPath","resFilePath","GetGenericDamageData","damage","GetGenericHullDamageData","hullDamage","GetGenericSwarmProperties","swarmBehavior","GetRaceDamageData","GetRaceBoosterData","boosters","GetHullBoosterData","GetHullBoosterCount","reduce","Array","isArray","items","GetImpactEffectType","impactEffectType","EveSOFDataHull","ImpactEffectType","IMPACTEFFECT_NONE","GetImpactShieldShader","IMPACTEFFECT_ELLIPSOID","shieldShaderEllipsoid","IMPACTEFFECT_HULL","shieldShaderHull","resourcePath","insert","resPathInsert","CMD_RESPATHINSERT","slash","candidate","underscore","exists","set","GetColorSet","colorData","colors","GetLogo","logoSetData","logos","HasLogoSet","size","IsInVisibilityData","hash","visibilityData","GetMeshAreaParameter","areaType","parameterName","hullParameters","blockedMaterials","info","materialArgs","CMD_MATERIAL","EveSOFUtilsParameterName","materialIndex","GetMaterialIdx","blocked","findMaterialParameter","GetShortName","patternArgs","CMD_PATTERN","patternMaterialPrefixes","defaultPatternLayer1MaterialName","UsingSof6","defaultPatternLayer2MaterialName","EveSOFDataArea","AreaType","TYPE_WRECK","findAreaMaterialParameter","genericWreckMaterialData","TYPE_PRIMARY","TYPE_REACTOR","areaMaterials","GetFactionTurretParameters","IsMaterialIdxValid","usageIndex","materialUsageList","ChangeMaterialIdx","turretAreaType","GetFullName","GetPatternLayerCount","HasDnaCommand","GetHullPatternApplicationData","layerAndProjection","GetFactionalPatternApplicationData","defaultPattern","enabled","pattern","GetPatternData","defaultPatternName","applicationData","applications","sof6","oldApplicationData","GetPatternApplicationData","layer","defaultPatternInfo","projection","GetPatternProjectionData","application","isInteger","GetPatternLayerData","GetMaterialTargets","layerData","materialTargets","IsPatternLayerApplicableToArea","applicableAreas","GetReflectionMode","category","categories","categoryData","ReflectionMode","REFLECT_NEVER","REFLECT_LOW_MEDIUM_HIGH","REFLECT_MEDIUM_AND_HIGH","GetHullBoundingSphere","hullOffset","source","boundingSphere","includeSphere","next","GetHullShapeEllipsoid","center","shapeEllipsoidCenter","radius","shapeEllipsoidRadius","GetParentBoundingSphere","GetParentHullShapeEllipsoid","SetParentBoundingSphere","SetParentShapeEllipsoidInfo","ellipsoid","DisableAnimation","DynamicBoundingSphereEnabled","enableDynamicBoundingSphere","CastShadow","castShadow","command","commandName","GetFactionName","GetRaceName","#setupFromString","dnaString","toLowerCase","parts","splitCarbon","GetHullData","push","GetFactionData","GetRaceData","layouts","CMD_LAYOUT","GetGenericData","CMD_VARIANT","#setupFromDescriptor","layoutName","descriptor","faction","race","layout","inherited","#inheritCommand","#setupCustomData","createCustomHullData","#reset","clear","CMD_INVALID","CMD_MESH","CMD_MAX","#CopySphere","sphere","from","#CopyEllipsoid","constructor","shapeCenter","copyArrayValue","shapeEllipsoid","shapeRadius","scaling","rotation","isMirrored","alwaysOn","hasTrails","hullAreaData","target","isTransparent","sourceArea","cloneVariantHullArea","parameters","parameter","shader","fallback","separator","pop","current","dx","dy","dz","distance","hypot","factor","materialName","GetMaterialData","materialNames","colorType","glowColor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveSOFDNA.js","sources":["../../../src/sof/EveSOFDNA.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOFDNA.h\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOFDNA.cpp\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOFDNA_Blue.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { carbon, impl, type } from \"#schema\";\r\nimport { ReflectionMode, TriBatchType } from \"#consts/graphics\";\r\nimport { EveSOFDataMgr } from \"./EveSOFDataMgr.js\";\r\nimport { EveSOFDataHull } from \"./hull/EveSOFDataHull.js\";\r\nimport { EveSOFDataArea } from \"./shared/EveSOFDataArea.js\";\r\nimport { EveSOFUtilsParameterName } from \"./shared/EveSOFUtilsParameterName.js\";\r\n\r\n\r\nconst COMMAND_NAMES = Object.freeze([\r\n \"invalid\",\r\n \"material\",\r\n \"mesh\",\r\n \"respathinsert\",\r\n \"variant\",\r\n \"class\",\r\n \"pattern\",\r\n \"layout\"\r\n]);\r\n\r\nconst BUILD_CLASSES = Object.freeze([\r\n \"ship\",\r\n \"mobile\",\r\n \"stationary\",\r\n \"swarm\",\r\n \"extension\"\r\n]);\r\n\r\n/** Resolves a SOF DNA string against an EveSOFDataMgr. */\r\n@type.define({ className: \"EveSOFDNA\", family: \"eve\" })\r\nexport class EveSOFDNA extends CjsModel\r\n{\r\n\r\n static DnaCommand = Object.freeze({\r\n CMD_INVALID: 0,\r\n CMD_MATERIAL: 1,\r\n CMD_MESH: 2,\r\n CMD_RESPATHINSERT: 3,\r\n CMD_VARIANT: 4,\r\n CMD_CLASS: 5,\r\n CMD_PATTERN: 6,\r\n CMD_LAYOUT: 7,\r\n CMD_MAX: 8\r\n });\r\n\r\n @type.string\r\n dna = \"\";\r\n\r\n @type.objectRef(\"EveSOFDataMgr\")\r\n dataMgr = null;\r\n\r\n @type.list(\"EveSOFDataMgr::HullData\")\r\n hullDatas = [];\r\n\r\n @type.objectRef(\"EveSOFDataMgr::FactionData\")\r\n factionData = null;\r\n\r\n @type.objectRef(\"EveSOFDataMgr::RaceData\")\r\n raceData = null;\r\n\r\n @type.objectRef(\"EveSOFDataMgr::GenericData\")\r\n genericData = null;\r\n\r\n @type.objectRef(\"EveSOFDataMgr::PatternData\")\r\n patternData = null;\r\n\r\n @type.list(\"EveSOFDataMgr::LayoutData\")\r\n layoutData = [];\r\n\r\n @type.list(\"EveSOFDataMgr::HullData\")\r\n customHullData = [];\r\n\r\n @type.list(\"std::string\")\r\n hullNames = [];\r\n\r\n @type.string\r\n factionName = \"\";\r\n\r\n @type.string\r\n raceName = \"\";\r\n\r\n @type.rawStruct(\"CcpMath::Sphere\")\r\n parentBoundingSphere = null;\r\n\r\n @type.rawStruct(\"CcpMath::AxisAlignedEllipsoid\")\r\n parentHullShapeEllipsoid = null;\r\n\r\n @type.boolean\r\n isSkinned = false;\r\n\r\n #commands = new Map();\r\n\r\n #parseError = null;\r\n\r\n /**\r\n * Resolves either a complete DNA string or Carbon's layout descriptor form.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Setup(dnaOrLayout, dataOrDescriptor, parent = null, dataMgr = null)\r\n {\r\n if (dataOrDescriptor instanceof EveSOFDataMgr && dataMgr === null)\r\n {\r\n this.#setupFromString(String(dnaOrLayout ?? \"\"), dataOrDescriptor);\r\n return;\r\n }\r\n this.#setupFromDescriptor(String(dnaOrLayout ?? \"\"), dataOrDescriptor, parent, dataMgr);\r\n }\r\n\r\n /** Returns whether the three required catalog selections resolved. */\r\n @carbon.method\r\n @impl.implemented\r\n IsValid()\r\n {\r\n return this.hullDatas.length > 0 && this.factionData !== null && this.raceData !== null;\r\n }\r\n\r\n /** Returns the stable parse failure used by non-rendering adapters. */\r\n GetParseError()\r\n {\r\n return this.#parseError;\r\n }\r\n\r\n /** Performs Carbon's slow command validation with unsafe C++ cases guarded. */\r\n @carbon.method\r\n @impl.implemented\r\n ValidateContent()\r\n {\r\n if (!this.IsValid() || this.#parseError) return false;\r\n\r\n for (const [name, args] of this.#commands)\r\n {\r\n switch (name)\r\n {\r\n case \"material\":\r\n if (args.length !== this.genericData.materialPrefixes.length) return false;\r\n if (args.some(value => value !== \"none\" && !this.dataMgr.HasMaterialData(value))) return false;\r\n break;\r\n // `mesh` carries one material per material prefix, exactly like\r\n // `material`, and it is the spelling live EVE skins are authored with.\r\n // The Carbon snapshot at\r\n // trinity/trinity/Eve/SpaceObjectFactory/EveSOFDNA.cpp validates\r\n // CMD_MESH as a single argument alongside CMD_RESPATHINSERT; that is a\r\n // deliberate deviation, because real authored DNA fails it. See\r\n // ccpwgl's legacy reader indexing `commands.mesh[materialIndex]`\r\n // against `generic.materialPrefixes` for independent confirmation.\r\n case \"mesh\":\r\n case \"material\":\r\n if (args.length !== this.genericData.materialPrefixes.length) return false;\r\n if (args.some(value => value !== \"none\" && !this.dataMgr.HasMaterialData(value))) return false;\r\n break;\r\n case \"respathinsert\":\r\n if (args.length !== 1) return false;\r\n break;\r\n case \"variant\":\r\n if (args.length !== 1 || !this.genericData.variants.has(args[0])) return false;\r\n break;\r\n case \"class\":\r\n if (args.length !== 1 || !BUILD_CLASSES.includes(args[0])) return false;\r\n break;\r\n case \"pattern\":\r\n if (args.length !== 3 || !this.dataMgr.HasPatternData(args[0])) return false;\r\n if (args[1] !== \"none\" && !this.dataMgr.HasMaterialData(args[1])) return false;\r\n if (args[2] !== \"none\" && !this.dataMgr.HasMaterialData(args[2])) return false;\r\n break;\r\n case \"layout\":\r\n if (args.length === 0 || args.some(value => !this.dataMgr.HasLayoutData(value))) return false;\r\n break;\r\n default:\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Returns the normalized DNA text stored for the resolved selection. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDnaString()\r\n {\r\n return this.dna;\r\n }\r\n\r\n /** Returns the number of hull records composing this selection. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMultiHullCount()\r\n {\r\n return this.hullDatas.length;\r\n }\r\n\r\n /** Returns the resolver's live hull-name array in composition order. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullNames()\r\n {\r\n return this.hullNames;\r\n }\r\n\r\n /**\r\n * Returns the explicit DNA build-class index when valid, otherwise the first\r\n * hull's default.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBuildClass()\r\n {\r\n const args = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_CLASS);\r\n if (args?.length)\r\n {\r\n const index = BUILD_CLASSES.indexOf(args[0]);\r\n if (index !== -1) return index;\r\n }\r\n return this.hullDatas[0]?.buildClass ?? 0;\r\n }\r\n\r\n /**\r\n * Returns the first hull's geometry path, rewritten to Carbon's combined path\r\n * convention for a multi-hull selection.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullGeometryResPath()\r\n {\r\n if (this.hullDatas.length === 0) return \"\";\r\n if (this.hullDatas.length === 1) return this.hullDatas[0].geometryResFilePath ?? \"\";\r\n\r\n let result = this.hullDatas[0].geometryResFilePath ?? \"\";\r\n const variantNumber = this.hullNames.map(name => name.slice(-1)).join(\"\");\r\n const nameParts = this.hullNames[0].split(\"_\");\r\n const variant = nameParts[nameParts.length - 1];\r\n if (variant)\r\n {\r\n result = result.replace(`${variant}.gr2`, `${variantNumber}.gr2`);\r\n result = result.replace(`${variant}/`, \"all/\");\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live mesh-area list for a supported batch\r\n * type, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullMeshAreas(batchType, hullIndex = 0)\r\n {\r\n const hull = this.hullDatas[hullIndex];\r\n if (!hull) return null;\r\n switch (batchType)\r\n {\r\n case TriBatchType.TRIBATCHTYPE_OPAQUE: return hull.opaqueAreas;\r\n case TriBatchType.TRIBATCHTYPE_DECAL: return hull.decalAreas;\r\n case TriBatchType.TRIBATCHTYPE_TRANSPARENT: return hull.transparentAreas;\r\n case TriBatchType.TRIBATCHTYPE_ADDITIVE: return hull.additiveAreas;\r\n case TriBatchType.TRIBATCHTYPE_DISTORTION: return hull.distortionAreas;\r\n default: return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live decal-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullDecalSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.hullDecalSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live light-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullLightSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.hullLightSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live sprite-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullSpriteSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.spriteSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live spotlight-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullSpotlightSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.spotlightSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the faction's catalog-owned spotlight colors for the numeric group,\r\n * treating -1 or a missing group as absent.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionSpotlightSetData(groupIndex)\r\n {\r\n if (Number(groupIndex) === -1) return null;\r\n return this.factionData?.spotlightSetsColors?.get(Number(groupIndex)) ?? null;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live plane-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullPlaneSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.planeSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the faction's catalog-owned plane-set colors for the numeric group,\r\n * treating -1 or a missing group as absent.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionPlaneSetData(groupIndex)\r\n {\r\n if (Number(groupIndex) === -1) return null;\r\n return this.factionData?.planeSetsColors?.get(Number(groupIndex)) ?? null;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live sprite-line-set list, or an empty\r\n * list when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullSpriteLineSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.spriteLineSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live haze-set list, or an empty list when\r\n * that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullHazeSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.hazeSets ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live banner list, or an empty list when\r\n * that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBanners(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.banners ?? [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live banner-set list, or an empty list\r\n * when that hull is unavailable.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBannerSets(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.bannerSets ?? [];\r\n }\r\n\r\n /** Returns legacy hull children from Carbon's first-hull-only path. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullChildren()\r\n {\r\n return this.hullDatas[0]?.children ?? [];\r\n }\r\n\r\n /** Returns SOF6 child sets from Carbon's first-hull-only path. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullChildSets()\r\n {\r\n return this.hullDatas[0]?.childSets ?? [];\r\n }\r\n\r\n /** Returns instanced attachments from Carbon's first-hull-only path. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullInstancedMeshes()\r\n {\r\n return this.hullDatas[0]?.instancedMeshes ?? [];\r\n }\r\n\r\n /** Returns legacy animation declarations from Carbon's first hull. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullAnimations()\r\n {\r\n return this.hullDatas[0]?.animations ?? [];\r\n }\r\n\r\n /**\r\n * Returns the first hull record's live sound-emitter declarations, or an empty\r\n * list.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullSoundEmitters()\r\n {\r\n return this.hullDatas[0]?.soundEmitters ?? [];\r\n }\r\n\r\n /**\r\n * Returns the first hull record's live controller declarations, or an empty\r\n * list.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullControllers()\r\n {\r\n return this.hullDatas[0]?.controllers ?? [];\r\n }\r\n\r\n /** Returns the first hull's non-empty model-rotation curve path, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetModelRotationCurvePath()\r\n {\r\n return this.hullDatas[0]?.modelRotationCurvePath || null;\r\n }\r\n\r\n /** Returns the first hull's non-empty model-translation curve path, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetModelTranslationCurvePath()\r\n {\r\n return this.hullDatas[0]?.modelTranslationCurvePath || null;\r\n }\r\n\r\n /** Gets the faction visibility override for one legacy child group. */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionChildData(groupIndex)\r\n {\r\n const index = Number(groupIndex);\r\n if (index === -1) return null;\r\n return this.factionData?.factionChildren?.get(index) ?? null;\r\n }\r\n\r\n /** Returns the resolved generic catalog's banner-shader data, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericBannerShaderData()\r\n {\r\n return this.genericData?.bannerShader ?? null;\r\n }\r\n\r\n /** Returns Carbon's decal minimum screen size for one HullDecalSetItem Usage. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDecalMinScreenSize(usage)\r\n {\r\n return this.genericData?.decalMinScreenSize?.[Number(usage)];\r\n }\r\n\r\n /**\r\n * Returns the greatest opaque area index for the selected hull, using zero for\r\n * non-opaque batches or an empty area list.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHighestMeshAreaIndex(batchType, hullIndex = 0)\r\n {\r\n if (batchType !== TriBatchType.TRIBATCHTYPE_OPAQUE) return 0;\r\n let highest = 0;\r\n for (const area of this.GetHullMeshAreas(batchType, hullIndex) ?? [])\r\n {\r\n highest = Math.max(highest, area.index);\r\n }\r\n return highest;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live turret-locator list, or an empty\r\n * list.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullTurretLocators(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.locatorTurrets ?? [];\r\n }\r\n\r\n /** Returns a new sorted snapshot of the selected hull's locator-set names. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullLocatorSetNames(hullIndex = 0)\r\n {\r\n const locatorSets = this.hullDatas[hullIndex]?.locatorSets;\r\n return locatorSets instanceof Map ? [...locatorSets.keys()].sort() : [];\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live locator list for a named set, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullLocators(setName, hullIndex = 0)\r\n {\r\n const locatorSets = this.hullDatas[hullIndex]?.locatorSets;\r\n return locatorSets instanceof Map ? locatorSets.get(String(setName)) ?? null : null;\r\n }\r\n\r\n /**\r\n * Returns the live locator list used to place a named layout set on the\r\n * selected hull, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPlacementLocators(hullIndex, locatorSetName)\r\n {\r\n return this.GetHullLocators(locatorSetName, hullIndex);\r\n }\r\n\r\n /** Returns the number of layout catalog records selected by the DNA. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLayoutCount()\r\n {\r\n return this.layoutData.length;\r\n }\r\n\r\n /** Returns the catalog-owned selected layout at the numeric index, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLayoutData(index)\r\n {\r\n return this.layoutData[Number(index)] ?? null;\r\n }\r\n\r\n /**\r\n * Returns the total number of locators in the named set across every selected\r\n * hull.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorCount(setName)\r\n {\r\n let count = 0;\r\n for (let hullIndex = 0; hullIndex < this.hullDatas.length; hullIndex++)\r\n {\r\n count += this.GetHullLocators(setName, hullIndex)?.length ?? 0;\r\n }\r\n return count;\r\n }\r\n\r\n /**\r\n * Returns the first next-subsystem locator position for the selected hull, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullNextSubsystemOffset(hullIndex = 0)\r\n {\r\n return this.GetHullLocators(\"next_subsystem\", hullIndex)?.[0]?.position ?? null;\r\n }\r\n\r\n /**\r\n * Returns the selected hull record's live audio position only when it is the\r\n * final hull in the composition.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullAudioPosition(hullIndex = 0)\r\n {\r\n if (hullIndex + 1 !== this.hullDatas.length) return null;\r\n return this.hullDatas[hullIndex]?.audioPosition ?? null;\r\n }\r\n\r\n /**\r\n * Returns the generic catalog's base resource path for area shaders, or an\r\n * empty string.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetAreaShaderLocationResPath()\r\n {\r\n return this.genericData?.areaShaderLocation ?? \"\";\r\n }\r\n\r\n /**\r\n * Returns the generic catalog's base resource path for decal shaders, or an\r\n * empty string.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDecalShaderLocationResPath()\r\n {\r\n return this.genericData?.decalShaderLocation ?? \"\";\r\n }\r\n\r\n /** Carbon returns constant decal shader 0. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDecalShader()\r\n {\r\n return 0;\r\n }\r\n\r\n /** Reports whether the first selected hull explicitly enables decal sets. */\r\n @carbon.method\r\n @impl.implemented\r\n IsHullUsingDecalSets()\r\n {\r\n return this.hullDatas[0]?.isUsingDecalSets === true;\r\n }\r\n\r\n /**\r\n * Returns the generic animated or static shader prefix requested by the\r\n * caller.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetShaderPrefix(isAnimated)\r\n {\r\n return isAnimated ? this.genericData?.shaderPrefixAnimated ?? \"\" : this.genericData?.shaderPrefix ?? \"\";\r\n }\r\n\r\n /**\r\n * Builds an area-shader resource path from the generic base path, the current\r\n * hull animation prefix, and the supplied suffix.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetCompleteShaderPath(path)\r\n {\r\n // Carbon's StringInsertStubAfter inserts after the LAST slash, including\r\n // shader suffixes that contain subdirectories (quad/quadv5.fx).\r\n const shaderPath = `/${path}`,\r\n index = shaderPath.lastIndexOf(\"/\") + 1;\r\n return `${this.GetAreaShaderLocationResPath()}${shaderPath.slice(0, index)}${this.GetShaderPrefix(this.IsHullAnimated())}${shaderPath.slice(index)}`;\r\n }\r\n\r\n /**\r\n * Returns the generic catalog's area-shader definition with the requested\r\n * name, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericAreaShaderData(shaderName)\r\n {\r\n return this.genericData?.areaShaderData?.get(String(shaderName)) ?? null;\r\n }\r\n\r\n /**\r\n * Returns the generic catalog's decal-shader definition with the requested\r\n * name, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericDecalShaderData(shaderName)\r\n {\r\n return this.genericData?.decalShaderData?.get(String(shaderName)) ?? null;\r\n }\r\n\r\n /** Returns a hull-local texture path for a projected opaque mesh index. */\r\n @carbon.method\r\n @impl.adapted\r\n GetHullTextureWithMeshIndex(textureName, meshIndex, hullIndex = 0, resourceExists = null, cache = null)\r\n {\r\n const hull = this.hullDatas[hullIndex];\r\n const areaIndex = hull?.meshIndexToOpaqueAreaLookup?.get(Number(meshIndex));\r\n if (areaIndex === undefined) return null;\r\n const texture = hull.opaqueAreas?.[areaIndex]?.textures?.get(String(textureName));\r\n if (!texture) return null;\r\n return this.ModifyTextureResPath(texture.resFilePath, resourceExists, cache);\r\n }\r\n\r\n /** Returns the resolved generic catalog's damage settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericDamageData()\r\n {\r\n return this.genericData?.damage ?? null;\r\n }\r\n\r\n /** Returns the resolved generic catalog's hull-damage settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericHullDamageData()\r\n {\r\n return this.genericData?.hullDamage ?? null;\r\n }\r\n\r\n /** Returns the resolved generic catalog's swarm behavior properties, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetGenericSwarmProperties()\r\n {\r\n return this.genericData?.swarmBehavior ?? null;\r\n }\r\n\r\n /** Returns the resolved race catalog's damage settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRaceDamageData()\r\n {\r\n return this.raceData?.damage ?? null;\r\n }\r\n\r\n /** Returns the resolved race catalog's booster settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRaceBoosterData()\r\n {\r\n return this.raceData?.boosters ?? null;\r\n }\r\n\r\n /** Returns the selected hull record's live booster settings, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBoosterData(hullIndex = 0)\r\n {\r\n return this.hullDatas[hullIndex]?.boosters ?? null;\r\n }\r\n\r\n /**\r\n * Returns the combined number of authored booster items across all selected\r\n * hulls.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBoosterCount()\r\n {\r\n return this.hullDatas.reduce(\r\n (count, hull) => count + (Array.isArray(hull?.boosters?.items) ? hull.boosters.items.length : 0),\r\n 0\r\n );\r\n }\r\n\r\n /**\r\n * Returns the first hull's numeric impact-effect type, defaulting to no impact\r\n * effect.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactEffectType()\r\n {\r\n return Number(this.hullDatas[0]?.impactEffectType ?? EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE);\r\n }\r\n\r\n /**\r\n * Returns the generic shield-shader path selected by the hull's impact-effect\r\n * type, or null when no supported shield effect applies.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactShieldShader()\r\n {\r\n const damage = this.GetGenericDamageData();\r\n if (!damage) return null;\r\n switch (this.GetImpactEffectType())\r\n {\r\n case EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID: return damage.shieldShaderEllipsoid ?? \"\";\r\n case EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_HULL: return damage.shieldShaderHull ?? \"\";\r\n default: return null;\r\n }\r\n }\r\n\r\n /** Applies Carbon's optional faction/DNA texture path insertion. */\r\n @carbon.method\r\n @impl.implemented\r\n ModifyTextureResPath(resourcePath, resourceExists = null, cache = null)\r\n {\r\n let insert = this.factionData?.resPathInsert || null;\r\n const args = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_RESPATHINSERT);\r\n if (args?.length === 1) insert = args[0] === \"none\" ? null : args[0];\r\n if (!insert || typeof resourceExists !== \"function\") return resourcePath;\r\n\r\n const slash = resourcePath.lastIndexOf(\"/\");\r\n if (slash === -1) return resourcePath;\r\n let candidate = `${resourcePath.slice(0, slash + 1)}${insert}/${resourcePath.slice(slash + 1)}`;\r\n const underscore = candidate.lastIndexOf(\"_\");\r\n if (underscore === -1) return resourcePath;\r\n candidate = `${candidate.slice(0, underscore)}_${insert}${candidate.slice(underscore)}`;\r\n\r\n if (cache?.has(candidate)) return cache.get(candidate) ? candidate : resourcePath;\r\n const exists = resourceExists(candidate) === true;\r\n if (cache) cache.set(candidate, exists);\r\n return exists ? candidate : resourcePath;\r\n }\r\n\r\n /** Returns the resolved faction's catalog-owned color array, or an empty list. */\r\n @carbon.method\r\n @impl.implemented\r\n GetColorSet()\r\n {\r\n return this.factionData?.colorData?.colors ?? [];\r\n }\r\n\r\n /**\r\n * Returns the resolved faction's catalog-owned logo at the numeric index, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLogo(index)\r\n {\r\n return this.factionData?.logoSetData?.logos?.[Number(index)] ?? null;\r\n }\r\n\r\n /**\r\n * Reports whether the indexed faction logo exists and declares at least one\r\n * texture.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n HasLogoSet(index)\r\n {\r\n return (this.GetLogo(index)?.textures?.size ?? 0) > 0;\r\n }\r\n\r\n /**\r\n * Reports whether the faction visibility set contains the supplied value after\r\n * unsigned 32-bit normalization.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsInVisibilityData(hash)\r\n {\r\n return this.factionData?.visibilityData?.has(Number(hash) >>> 0) === true;\r\n }\r\n\r\n /** Resolves one mesh parameter using Carbon's ordered material fallbacks. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMeshAreaParameter(areaType, parameterName, hullParameters = null, blockedMaterials = 0)\r\n {\r\n let info;\r\n let value;\r\n const materialArgs = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_MATERIAL);\r\n if (materialArgs)\r\n {\r\n info = new EveSOFUtilsParameterName(this.genericData.materialPrefixes, parameterName);\r\n const materialIndex = info.GetMaterialIdx();\r\n if (materialIndex !== -1 && materialIndex < materialArgs.length && materialIndex < 32)\r\n {\r\n const blocked = (blockedMaterials >>> 0) & (1 << materialIndex);\r\n if (!blocked)\r\n {\r\n value = findMaterialParameter(this.dataMgr, materialArgs[materialIndex], info.GetShortName());\r\n if (value) return value;\r\n }\r\n }\r\n }\r\n\r\n const patternArgs = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_PATTERN);\r\n if (patternArgs)\r\n {\r\n info = new EveSOFUtilsParameterName(this.genericData.patternMaterialPrefixes, parameterName);\r\n const materialIndex = info.GetMaterialIdx();\r\n if (materialIndex !== -1 && 1 + materialIndex < patternArgs.length)\r\n {\r\n value = findMaterialParameter(this.dataMgr, patternArgs[1 + materialIndex], info.GetShortName());\r\n if (value) return value;\r\n }\r\n }\r\n\r\n info = new EveSOFUtilsParameterName(this.genericData.patternMaterialPrefixes, parameterName);\r\n if (info.GetMaterialIdx() === 0)\r\n {\r\n value = findMaterialParameter(\r\n this.dataMgr,\r\n this.factionData.defaultPatternLayer1MaterialName,\r\n info.GetShortName()\r\n );\r\n if (value) return value;\r\n }\r\n else if (info.GetMaterialIdx() === 1 && this.UsingSof6())\r\n {\r\n value = findMaterialParameter(\r\n this.dataMgr,\r\n this.factionData.defaultPatternLayer2MaterialName,\r\n info.GetShortName()\r\n );\r\n if (value) return value;\r\n }\r\n\r\n info = new EveSOFUtilsParameterName(this.genericData.materialPrefixes, parameterName);\r\n if (areaType === EveSOFDataArea.AreaType.TYPE_WRECK)\r\n {\r\n value = findAreaMaterialParameter(this.dataMgr, this.GetColorSet(), this.genericData.genericWreckMaterialData, areaType, info);\r\n if (value) return value;\r\n }\r\n if (areaType === EveSOFDataArea.AreaType.TYPE_PRIMARY || areaType === EveSOFDataArea.AreaType.TYPE_REACTOR)\r\n {\r\n value = findAreaMaterialParameter(this.dataMgr, this.GetColorSet(), this.raceData.areaMaterials, areaType, info);\r\n if (value) return value;\r\n }\r\n value = findAreaMaterialParameter(this.dataMgr, this.GetColorSet(), this.factionData.areaMaterials, areaType, info);\r\n if (value) return value;\r\n\r\n return hullParameters?.get(String(parameterName)) ?? null;\r\n }\r\n\r\n /** Resolves a turret shader parameter after applying the faction's material-usage remap. */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionTurretParameters(parameterName)\r\n {\r\n const info = new EveSOFUtilsParameterName(\r\n this.genericData?.materialPrefixes ?? [],\r\n parameterName\r\n );\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialIndex = info.GetMaterialIdx();\r\n const usageIndex = Number(\r\n this.factionData?.materialUsageList?.[materialIndex] ?? materialIndex\r\n );\r\n info.ChangeMaterialIdx(this.genericData, usageIndex);\r\n }\r\n return this.GetMeshAreaParameter(\r\n Number(this.genericData?.turretAreaType ?? EveSOFDataArea.AreaType.TYPE_PRIMARY),\r\n info.GetFullName()\r\n );\r\n }\r\n\r\n /**\r\n * Returns the active pattern's layer count, selecting explicit, SOF6\r\n * faction-default, or legacy hull-default data as appropriate.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPatternLayerCount()\r\n {\r\n if (this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_PATTERN) && !this.patternData) return 0;\r\n if (this.patternData)\r\n {\r\n return this.GetHullPatternApplicationData()?.layerAndProjection.length ?? 0;\r\n }\r\n if (this.UsingSof6())\r\n {\r\n return this.GetFactionalPatternApplicationData()?.layerAndProjection.length ?? 0;\r\n }\r\n return this.hullDatas[0]?.defaultPattern?.enabled === true ? 1 : 0;\r\n }\r\n\r\n /**\r\n * Returns the faction-default pattern's catalog-owned application for the\r\n * first hull, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionalPatternApplicationData()\r\n {\r\n const pattern = this.dataMgr.GetPatternData(this.factionData?.defaultPatternName ?? \"\");\r\n return pattern?.applicationData?.get(this.hullNames[0]) ?? null;\r\n }\r\n\r\n /**\r\n * Returns the selected pattern's SOF6 or legacy catalog application for the\r\n * first hull, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullPatternApplicationData()\r\n {\r\n if (!this.patternData) return null;\r\n const applications = this.patternData.sof6\r\n ? this.patternData.applicationData\r\n : this.patternData.oldApplicationData;\r\n return applications?.get(this.hullNames[0]) ?? null;\r\n }\r\n\r\n /**\r\n * Resolves explicit or SOF6 faction pattern applications and otherwise\r\n * synthesizes a fresh legacy default wrapper.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetPatternApplicationData()\r\n {\r\n if (!this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_PATTERN))\r\n {\r\n if (this.UsingSof6()) return this.GetFactionalPatternApplicationData();\r\n const layer = this.factionData?.defaultPatternInfo;\r\n const projection = this.hullDatas[0]?.defaultPattern;\r\n return layer && projection ? { layerAndProjection: [{ layer, projection }] } : null;\r\n }\r\n return this.GetHullPatternApplicationData();\r\n }\r\n\r\n /**\r\n * Returns the catalog-owned projection for a valid active pattern layer, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPatternProjectionData(application, layer)\r\n {\r\n if (!application || !Number.isInteger(layer) || layer < 0) return null;\r\n if (!this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_PATTERN) && !this.UsingSof6() && layer > 0) return null;\r\n return application.layerAndProjection?.[layer]?.projection ?? null;\r\n }\r\n\r\n /**\r\n * Returns the catalog-owned settings for a valid active pattern layer, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPatternLayerData(application, layer)\r\n {\r\n if (!application || !Number.isInteger(layer) || layer < 0) return null;\r\n if (!this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_PATTERN) && !this.UsingSof6() && layer > 0) return null;\r\n return application.layerAndProjection?.[layer]?.layer ?? null;\r\n }\r\n\r\n /**\r\n * Returns a shallow copy of the pattern layer's material-target array, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetMaterialTargets(layerData)\r\n {\r\n return layerData?.materialTargets?.slice() ?? null;\r\n }\r\n\r\n /**\r\n * Reports whether the pattern layer explicitly enables the numeric hull-area\r\n * type.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsPatternLayerApplicableToArea(layerData, areaType)\r\n {\r\n return layerData?.applicableAreas?.get(Number(areaType)) === true;\r\n }\r\n\r\n /**\r\n * Returns the first hull category's configured reflection mode, falling back\r\n * to Carbon's built-in category rules.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetReflectionMode()\r\n {\r\n const category = this.hullDatas[0]?.category ?? \"\";\r\n const categories = this.genericData?.categoryData;\r\n if (categories?.size)\r\n {\r\n return categories.get(category) ?? ReflectionMode.REFLECT_NEVER;\r\n }\r\n if (category === \"hangar\" || category === \"hangar4k\") return ReflectionMode.REFLECT_LOW_MEDIUM_HIGH;\r\n if (category.includes(\"station\") || category.includes(\"structure\") || category === \"jumpgate\")\r\n {\r\n return ReflectionMode.REFLECT_MEDIUM_AND_HIGH;\r\n }\r\n return ReflectionMode.REFLECT_NEVER;\r\n }\r\n\r\n /**\r\n * Returns a newly allocated sphere enclosing every selected hull after\r\n * applying chained next-subsystem offsets, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullBoundingSphere()\r\n {\r\n let result = null;\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < this.hullDatas.length; hullIndex++)\r\n {\r\n const source = this.hullDatas[hullIndex]?.boundingSphere;\r\n if (source?.length >= 4)\r\n {\r\n result = includeSphere(result, [\r\n Number(source[0] ?? 0) + hullOffset[0],\r\n Number(source[1] ?? 0) + hullOffset[1],\r\n Number(source[2] ?? 0) + hullOffset[2],\r\n Number(source[3] ?? -1)\r\n ]);\r\n }\r\n const next = this.GetHullNextSubsystemOffset(hullIndex);\r\n if (next)\r\n {\r\n hullOffset[0] += Number(next[0] ?? 0);\r\n hullOffset[1] += Number(next[1] ?? 0);\r\n hullOffset[2] += Number(next[2] ?? 0);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a fresh descriptor referencing the first resolved hull's live\r\n * ellipsoid vectors, or null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHullShapeEllipsoid()\r\n {\r\n const hull = this.hullDatas[0];\r\n if (!hull) return null;\r\n return {\r\n center: hull.shapeEllipsoidCenter ?? null,\r\n radius: hull.shapeEllipsoidRadius ?? null\r\n };\r\n }\r\n\r\n /**\r\n * Returns a defensive copy of the resolver-owned parent bounding sphere, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetParentBoundingSphere()\r\n {\r\n return EveSOFDNA.#CopySphere(this.parentBoundingSphere);\r\n }\r\n\r\n /** Returns the resolver-owned parent hull-shape ellipsoid descriptor, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetParentHullShapeEllipsoid()\r\n {\r\n return this.parentHullShapeEllipsoid;\r\n }\r\n\r\n /**\r\n * Replaces the parent bounding sphere with a defensive copy of the supplied\r\n * coordinates.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetParentBoundingSphere(boundingSphere)\r\n {\r\n this.parentBoundingSphere = EveSOFDNA.#CopySphere(boundingSphere);\r\n }\r\n\r\n /**\r\n * Replaces the parent hull-shape ellipsoid with a deep copy of the supplied\r\n * center and radius vectors.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetParentShapeEllipsoidInfo(ellipsoid)\r\n {\r\n this.parentHullShapeEllipsoid = EveSOFDNA.#CopyEllipsoid(ellipsoid);\r\n }\r\n\r\n /**\r\n * Creates a detached coordinate array from a sphere-like value, preserving\r\n * null.\r\n */\r\n static #CopySphere(sphere)\r\n {\r\n return sphere ? Array.from(sphere) : null;\r\n }\r\n\r\n /**\r\n * Creates a detached ellipsoid descriptor with copied center and radius\r\n * arrays, preserving null components.\r\n */\r\n static #CopyEllipsoid(ellipsoid)\r\n {\r\n if (!ellipsoid) return null;\r\n return {\r\n center: ellipsoid.center ? Array.from(ellipsoid.center) : null,\r\n radius: ellipsoid.radius ? Array.from(ellipsoid.radius) : null\r\n };\r\n }\r\n\r\n /**\r\n * Reports the resolver's current skinned-animation flag, which layouts may\r\n * disable independently of catalog data.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsHullAnimated()\r\n {\r\n return this.isSkinned;\r\n }\r\n\r\n /**\r\n * Disables skinned animation for this resolved DNA without modifying the\r\n * source hull record.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n DisableAnimation()\r\n {\r\n this.isSkinned = false;\r\n }\r\n\r\n /**\r\n * Reports whether multi-hull composition or the first hull's flag requires\r\n * dynamic bounds.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n DynamicBoundingSphereEnabled()\r\n {\r\n return this.hullDatas.length > 1 || this.hullDatas[0]?.enableDynamicBoundingSphere === true;\r\n }\r\n\r\n /** Reports whether the first selected hull is authored to cast shadows. */\r\n @carbon.method\r\n @impl.implemented\r\n CastShadow()\r\n {\r\n // EveSOFDataHull defaults m_castShadow to true (EveSOFData.cpp:347), and a\r\n // .black record omits a field at its default: absent means true.\r\n return this.hullDatas[0]?.castShadow !== false;\r\n }\r\n\r\n /**\r\n * Reports whether the parsed command map contains the supplied command name or\r\n * valid numeric command.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n HasDnaCommand(command)\r\n {\r\n const name = commandName(command);\r\n return name !== null && this.#commands.has(name);\r\n }\r\n\r\n /**\r\n * Returns a defensive copy of the supplied DNA command's parsed arguments, or\r\n * null.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDnaCommandArgs(command)\r\n {\r\n const name = commandName(command);\r\n if (name === null || !this.#commands.has(name)) return null;\r\n return this.#commands.get(name).slice();\r\n }\r\n\r\n /** Reports whether the first selected hull uses the SOF6 data model. */\r\n @carbon.method\r\n @impl.implemented\r\n UsingSof6()\r\n {\r\n return this.hullDatas.length > 0 && this.hullDatas[0].sof6 === true;\r\n }\r\n\r\n /** Returns the faction catalog name resolved for this DNA. */\r\n @carbon.method\r\n @impl.implemented\r\n GetFactionName()\r\n {\r\n return this.factionName;\r\n }\r\n\r\n /** Returns the race catalog name resolved for this DNA. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRaceName()\r\n {\r\n return this.raceName;\r\n }\r\n\r\n /**\r\n * Resets and repopulates this resolver from a lower-cased DNA string,\r\n * recording parse failures instead of throwing.\r\n */\r\n #setupFromString(dnaString, dataMgr)\r\n {\r\n // A DNA string is lowercased before anything reads it. Every catalog name\r\n // it can contain — hull, faction, race, command, material, pattern, layout\r\n // — is canonically lowercase, so case carries no meaning and folding it\r\n // costs nothing.\r\n //\r\n // Carbon compares command names exactly\r\n // (`cit->first.compare( s_dnaCommands[i] )`) and looks catalog names up as\r\n // given. Authored EVE skins do not respect that: designs in the live feed\r\n // carry `MATERIAL?...`, and porting the exact comparison faithfully\r\n // rejected them with \"Invalid SOF DNA content\". Deliberate deviation.\r\n const dna = dnaString.toLowerCase();\r\n\r\n this.#reset(dna, dataMgr);\r\n const parts = splitCarbon(dna, \":\");\r\n if (parts.length < 3)\r\n {\r\n this.#parseError = \"not-enough-parts\";\r\n return;\r\n }\r\n\r\n for (let index = 3; index < parts.length; index++)\r\n {\r\n const command = splitCarbon(parts[index], \"?\");\r\n if (command.length !== 2)\r\n {\r\n this.#parseError = \"malformed-command\";\r\n return;\r\n }\r\n this.#commands.set(command[0], splitCarbon(command[1], \";\"));\r\n }\r\n\r\n // `mesh` and `material` are the same command: one material per material\r\n // prefix. `mesh` is the spelling live EVE skins are authored with, and\r\n // ccpwgl's legacy reader indexes `commands.mesh[materialIndex]` against\r\n // `generic.materialPrefixes` for the same reason.\r\n //\r\n // The Carbon snapshot does neither. Its parser splits every payload on\r\n // `;`, so it sees four arguments; its ValidateContent then rejects any\r\n // CMD_MESH that is not exactly one; and CMD_MESH is read nowhere in the\r\n // tree. Faithfully porting that gave us a validator that rejects real\r\n // authored DNA and a builder that would have dropped the materials even if\r\n // it had passed. Normalizing here means every downstream reader keeps\r\n // asking for CMD_MATERIAL and simply works.\r\n if (this.#commands.has(\"mesh\") && !this.#commands.has(\"material\"))\r\n {\r\n this.#commands.set(\"material\", this.#commands.get(\"mesh\"));\r\n }\r\n\r\n this.hullNames = splitCarbon(parts[0], \";\");\r\n if (this.hullNames.length === 0)\r\n {\r\n this.#parseError = \"missing-hull\";\r\n return;\r\n }\r\n this.factionName = parts[1];\r\n this.raceName = parts[2];\r\n\r\n for (const name of this.hullNames)\r\n {\r\n const hull = dataMgr.GetHullData(name);\r\n if (!hull)\r\n {\r\n this.#parseError = \"unknown-hull\";\r\n return;\r\n }\r\n this.hullDatas.push(hull);\r\n }\r\n\r\n this.factionData = dataMgr.GetFactionData(this.factionName);\r\n if (!this.factionData)\r\n {\r\n this.#parseError = \"unknown-faction\";\r\n return;\r\n }\r\n this.raceData = dataMgr.GetRaceData(this.raceName);\r\n if (!this.raceData)\r\n {\r\n this.#parseError = \"unknown-race\";\r\n return;\r\n }\r\n\r\n const pattern = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_PATTERN);\r\n if (pattern?.length) this.patternData = dataMgr.GetPatternData(pattern[0]);\r\n const layouts = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_LAYOUT);\r\n if (layouts) this.layoutData = dataMgr.GetLayoutData(layouts);\r\n this.genericData = dataMgr.GetGenericData();\r\n\r\n if (this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_VARIANT)) this.#setupCustomData();\r\n this.parentBoundingSphere = this.GetHullBoundingSphere();\r\n this.parentHullShapeEllipsoid = EveSOFDNA.#CopyEllipsoid(this.GetHullShapeEllipsoid());\r\n this.isSkinned = this.hullDatas[0]?.isSkinned === true;\r\n }\r\n\r\n /**\r\n * Resets and repopulates this nested resolver from a layout descriptor while\r\n * inheriting the parent's command and bounds context.\r\n */\r\n #setupFromDescriptor(layoutName, descriptor, parent, dataMgr)\r\n {\r\n this.#reset(\"\", dataMgr);\r\n if (!descriptor || !parent || !dataMgr)\r\n {\r\n this.#parseError = \"invalid-descriptor-context\";\r\n return;\r\n }\r\n\r\n this.hullNames = splitCarbon(String(descriptor.hull ?? \"\"), \";\");\r\n for (const name of this.hullNames)\r\n {\r\n const hull = dataMgr.GetHullData(name);\r\n if (!hull)\r\n {\r\n this.#parseError = \"unknown-hull\";\r\n return;\r\n }\r\n this.hullDatas.push(hull);\r\n }\r\n if (this.hullDatas.length === 0)\r\n {\r\n this.#parseError = \"missing-hull\";\r\n return;\r\n }\r\n\r\n this.factionName = descriptor.faction || parent.factionName;\r\n this.raceName = descriptor.race || parent.raceName;\r\n this.factionData = dataMgr.GetFactionData(this.factionName);\r\n this.raceData = dataMgr.GetRaceData(this.raceName);\r\n if (!this.factionData || !this.raceData)\r\n {\r\n this.#parseError = \"unknown-faction-or-race\";\r\n return;\r\n }\r\n\r\n const materialArgs = parent.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_MATERIAL) ?? [\"none\", \"none\", \"none\", \"none\"];\r\n for (let index = 0; index < 4; index++)\r\n {\r\n const value = descriptor[`material${index + 1}`];\r\n if (value) materialArgs[index] = value;\r\n }\r\n if (materialArgs.some(value => value !== \"none\")) this.#commands.set(\"material\", materialArgs);\r\n\r\n this.#inheritCommand(parent, EveSOFDNA.DnaCommand.CMD_RESPATHINSERT);\r\n this.#inheritCommand(parent, EveSOFDNA.DnaCommand.CMD_VARIANT);\r\n if (descriptor.layout) this.#commands.set(\"layout\", [descriptor.layout]);\r\n if (descriptor.pattern)\r\n {\r\n const inherited = parent.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_PATTERN) ?? [descriptor.pattern, \"none\", \"none\"];\r\n inherited[0] = descriptor.pattern;\r\n while (inherited.length < 3) inherited.push(\"none\");\r\n this.#commands.set(\"pattern\", inherited.slice(0, 3));\r\n }\r\n\r\n const pattern = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_PATTERN);\r\n if (pattern) this.patternData = dataMgr.GetPatternData(pattern[0]);\r\n const layouts = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_LAYOUT);\r\n if (layouts) this.layoutData = dataMgr.GetLayoutData(layouts);\r\n this.genericData = dataMgr.GetGenericData();\r\n if (this.HasDnaCommand(EveSOFDNA.DnaCommand.CMD_VARIANT)) this.#setupCustomData();\r\n\r\n this.dna = `${descriptor.hull}:${this.factionName}:${this.raceName}`;\r\n for (const name of [...this.#commands.keys()].sort())\r\n {\r\n this.dna += `:${name}?${this.#commands.get(name).join(\";\")}`;\r\n }\r\n this.parentBoundingSphere = parent.GetParentBoundingSphere();\r\n this.parentHullShapeEllipsoid = EveSOFDNA.#CopyEllipsoid(parent.GetParentHullShapeEllipsoid());\r\n this.isSkinned = this.hullDatas[0]?.isSkinned === true;\r\n void layoutName;\r\n }\r\n\r\n /**\r\n * Copies one parsed command and its argument snapshot from the parent resolver\r\n * when present.\r\n */\r\n #inheritCommand(parent, command)\r\n {\r\n const args = parent.GetDnaCommandArgs(command);\r\n if (args) this.#commands.set(commandName(command), args);\r\n }\r\n\r\n /**\r\n * Replaces the resolved hull references with resolver-owned variant hull\r\n * snapshots when a variant command is active.\r\n */\r\n #setupCustomData()\r\n {\r\n const args = this.GetDnaCommandArgs(EveSOFDNA.DnaCommand.CMD_VARIANT);\r\n if (!args?.length) return;\r\n const variant = this.genericData?.variants?.get(args[0]) ?? null;\r\n\r\n this.customHullData = this.hullDatas.map(hull => createCustomHullData(hull, variant));\r\n this.hullDatas = this.customHullData;\r\n }\r\n\r\n /**\r\n * Clears all prior resolution state, binds the supplied DNA text and data\r\n * manager, and removes any parse error.\r\n */\r\n #reset(dna, dataMgr)\r\n {\r\n this.dna = dna;\r\n this.dataMgr = dataMgr;\r\n this.hullDatas = [];\r\n this.factionData = null;\r\n this.raceData = null;\r\n this.genericData = null;\r\n this.patternData = null;\r\n this.layoutData = [];\r\n this.customHullData = [];\r\n this.hullNames = [];\r\n this.factionName = \"\";\r\n this.raceName = \"\";\r\n this.parentBoundingSphere = null;\r\n this.parentHullShapeEllipsoid = null;\r\n this.isSkinned = false;\r\n this.#commands.clear();\r\n this.#parseError = null;\r\n }\r\n\r\n}\r\n\r\nfunction createCustomHullData(source, variant)\r\n{\r\n const shapeCenter = copyArrayValue(\r\n source?.shapeEllipsoid?.center ?? source?.shapeEllipsoidCenter,\r\n [0, 0, 0]\r\n );\r\n const shapeRadius = copyArrayValue(\r\n source?.shapeEllipsoid?.radius ?? source?.shapeEllipsoidRadius,\r\n [-1, -1, -1]\r\n );\r\n const result = {\r\n buildClass: Number(source?.buildClass ?? 0),\r\n geometryResFilePath: String(source?.geometryResFilePath ?? \"\"),\r\n boundingSphere: copyArrayValue(source?.boundingSphere, [0, 0, 0, 0]),\r\n shapeEllipsoidCenter: shapeCenter.slice(),\r\n shapeEllipsoidRadius: shapeRadius.slice(),\r\n shapeEllipsoid: {\r\n center: shapeCenter,\r\n radius: shapeRadius\r\n },\r\n isSkinned: source?.isSkinned === true,\r\n isUsingDecalSets: false,\r\n enableDynamicBoundingSphere: source?.enableDynamicBoundingSphere === true,\r\n castShadow: source?.castShadow !== false,\r\n sof6: false,\r\n audioPosition: copyArrayValue(source?.audioPosition, [0, 0, 0]),\r\n spriteSets: [],\r\n spotlightSets: [],\r\n planeSets: [],\r\n spriteLineSets: [],\r\n hazeSets: [],\r\n banners: [],\r\n bannerSets: [],\r\n hullDecalSets: [],\r\n hullLightSets: [],\r\n childSets: [],\r\n defaultPattern: {\r\n enabled: false,\r\n position: [0, 0, 0],\r\n scaling: [0, 0, 0],\r\n rotation: [0, 0, 0, 1],\r\n isMirrored: false\r\n },\r\n impactEffectType: EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE,\r\n opaqueAreas: [],\r\n decalAreas: [],\r\n transparentAreas: [],\r\n additiveAreas: [],\r\n distortionAreas: [],\r\n boosters: {\r\n alwaysOn: false,\r\n hasTrails: false,\r\n items: []\r\n },\r\n locatorTurrets: [],\r\n locatorSets: new Map(),\r\n children: [],\r\n instancedMeshes: [],\r\n animations: [],\r\n soundEmitters: [],\r\n controllers: [],\r\n modelRotationCurvePath: \"\",\r\n modelTranslationCurvePath: \"\",\r\n meshIndexToOpaqueAreaLookup: new Map(),\r\n category: \"\"\r\n };\r\n\r\n if (variant?.hullAreaData)\r\n {\r\n const target = variant.isTransparent ? result.transparentAreas : result.opaqueAreas;\r\n for (const sourceArea of source?.opaqueAreas ?? [])\r\n {\r\n target.push(cloneVariantHullArea(variant.hullAreaData, sourceArea));\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction cloneVariantHullArea(value, sourceArea)\r\n{\r\n const textures = new Map();\r\n if (value?.textures instanceof Map)\r\n {\r\n for (const [name, texture] of value.textures)\r\n {\r\n textures.set(name, { resFilePath: String(texture?.resFilePath ?? \"\") });\r\n }\r\n }\r\n\r\n const parameters = new Map();\r\n if (value?.parameters instanceof Map)\r\n {\r\n for (const [name, parameter] of value.parameters)\r\n {\r\n parameters.set(name, copyArrayValue(parameter, [0, 0, 0, 0]));\r\n }\r\n }\r\n\r\n return {\r\n index: Number(sourceArea?.index ?? 0),\r\n count: Number(sourceArea?.count ?? 1),\r\n blockedMaterials: Number(value?.blockedMaterials ?? 0),\r\n shader: String(value?.shader ?? \"\"),\r\n areaType: Number(value?.areaType ?? 0),\r\n textures,\r\n parameters\r\n };\r\n}\r\n\r\nfunction copyArrayValue(value, fallback)\r\n{\r\n return value && typeof value.length === \"number\" ? Array.from(value) : fallback.slice();\r\n}\r\n\r\nfunction commandName(command)\r\n{\r\n if (typeof command === \"string\") return command;\r\n if (!Number.isInteger(command) || command <= EveSOFDNA.DnaCommand.CMD_INVALID || command >= EveSOFDNA.DnaCommand.CMD_MAX)\r\n {\r\n return null;\r\n }\r\n\r\n return COMMAND_NAMES[command] ?? null;\r\n}\r\n\r\nfunction splitCarbon(value, separator)\r\n{\r\n if (value === \"\") return [];\r\n const result = String(value).split(separator);\r\n if (result[result.length - 1] === \"\") result.pop();\r\n return result;\r\n}\r\n\r\nfunction includeSphere(current, next)\r\n{\r\n if (!next || next[3] < 0) return current;\r\n if (!current || current[3] < 0) return next.slice();\r\n const dx = next[0] - current[0];\r\n const dy = next[1] - current[1];\r\n const dz = next[2] - current[2];\r\n const distance = Math.hypot(dx, dy, dz);\r\n if (current[3] >= distance + next[3]) return current;\r\n if (next[3] >= distance + current[3]) return next.slice();\r\n const radius = (distance + current[3] + next[3]) * 0.5;\r\n if (distance === 0) return [current[0], current[1], current[2], radius];\r\n const factor = (radius - current[3]) / distance;\r\n return [\r\n current[0] + dx * factor,\r\n current[1] + dy * factor,\r\n current[2] + dz * factor,\r\n radius\r\n ];\r\n}\r\n\r\nfunction findMaterialParameter(dataMgr, materialName, parameterName)\r\n{\r\n return dataMgr.GetMaterialData(materialName)?.parameters?.get(parameterName) ?? null;\r\n}\r\n\r\nfunction findAreaMaterialParameter(dataMgr, colors, areaMaterials, areaType, info)\r\n{\r\n if (!areaMaterials) return null;\r\n let value = null;\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialName = areaMaterials.materialNames.get(\r\n `${areaType}:${info.GetMaterialIdx()}`\r\n );\r\n if (materialName) value = findMaterialParameter(dataMgr, materialName, info.GetShortName());\r\n }\r\n else\r\n {\r\n const colorType = areaMaterials.glowColor.get(`${areaType}:${info.GetFullName()}`);\r\n if (colorType !== undefined) value = colors[colorType] ?? null;\r\n }\r\n if (value) return value;\r\n return areaType === EveSOFDataArea.AreaType.TYPE_PRIMARY\r\n ? null\r\n : findAreaMaterialParameter(dataMgr, colors, areaMaterials, EveSOFDataArea.AreaType.TYPE_PRIMARY, info);\r\n}\r\n"],"names":["COMMAND_NAMES","Object","freeze","BUILD_CLASSES","_EveSOFDNA","_identity","EveSOFDNA","CjsModel","e","_init_dna","_init_extra_dna","_init_dataMgr","_init_extra_dataMgr","_init_hullDatas","_init_extra_hullDatas","_init_factionData","_init_extra_factionData","_init_raceData","_init_extra_raceData","_init_genericData","_init_extra_genericData","_init_patternData","_init_extra_patternData","_init_layoutData","_init_extra_layoutData","_init_customHullData","_init_extra_customHullData","_init_hullNames","_init_extra_hullNames","_init_factionName","_init_extra_factionName","_init_raceName","_init_extra_raceName","_init_parentBoundingSphere","_init_extra_parentBoundingSphere","_init_parentHullShapeEllipsoid","_init_extra_parentHullShapeEllipsoid","_init_isSkinned","_init_extra_isSkinned","_initProto","c","_initClass","_applyDecs","type","define","className","family","string","objectRef","list","rawStruct","boolean","carbon","method","impl","implemented","adapted","dna","dataMgr","hullDatas","factionData","raceData","genericData","patternData","layoutData","customHullData","hullNames","factionName","raceName","parentBoundingSphere","parentHullShapeEllipsoid","isSkinned","Map","Setup","dnaOrLayout","dataOrDescriptor","parent","EveSOFDataMgr","String","IsValid","length","GetParseError","ValidateContent","name","args","materialPrefixes","some","value","HasMaterialData","variants","has","includes","HasPatternData","HasLayoutData","GetDnaString","GetMultiHullCount","GetHullNames","GetBuildClass","GetDnaCommandArgs","DnaCommand","CMD_CLASS","index","indexOf","buildClass","GetHullGeometryResPath","geometryResFilePath","result","variantNumber","map","slice","join","nameParts","split","variant","replace","GetHullMeshAreas","batchType","hullIndex","hull","TriBatchType","TRIBATCHTYPE_OPAQUE","opaqueAreas","TRIBATCHTYPE_DECAL","decalAreas","TRIBATCHTYPE_TRANSPARENT","transparentAreas","TRIBATCHTYPE_ADDITIVE","additiveAreas","TRIBATCHTYPE_DISTORTION","distortionAreas","GetHullDecalSets","hullDecalSets","GetHullLightSets","hullLightSets","GetHullSpriteSets","spriteSets","GetHullSpotlightSets","spotlightSets","GetFactionSpotlightSetData","groupIndex","Number","spotlightSetsColors","get","GetHullPlaneSets","planeSets","GetFactionPlaneSetData","planeSetsColors","GetHullSpriteLineSets","spriteLineSets","GetHullHazeSets","hazeSets","GetHullBanners","banners","GetHullBannerSets","bannerSets","GetHullChildren","children","GetHullChildSets","childSets","GetHullInstancedMeshes","instancedMeshes","GetHullAnimations","animations","GetHullSoundEmitters","soundEmitters","GetHullControllers","controllers","GetModelRotationCurvePath","modelRotationCurvePath","GetModelTranslationCurvePath","modelTranslationCurvePath","GetFactionChildData","factionChildren","GetGenericBannerShaderData","bannerShader","GetDecalMinScreenSize","usage","decalMinScreenSize","GetHighestMeshAreaIndex","highest","area","Math","max","GetHullTurretLocators","locatorTurrets","GetHullLocatorSetNames","locatorSets","keys","sort","GetHullLocators","setName","GetPlacementLocators","locatorSetName","GetLayoutCount","GetLayoutData","GetLocatorCount","count","GetHullNextSubsystemOffset","position","GetHullAudioPosition","audioPosition","GetAreaShaderLocationResPath","areaShaderLocation","GetDecalShaderLocationResPath","decalShaderLocation","GetDecalShader","IsHullUsingDecalSets","isUsingDecalSets","GetShaderPrefix","isAnimated","shaderPrefixAnimated","shaderPrefix","GetCompleteShaderPath","path","shaderPath","lastIndexOf","IsHullAnimated","GetGenericAreaShaderData","shaderName","areaShaderData","GetGenericDecalShaderData","decalShaderData","GetHullTextureWithMeshIndex","textureName","meshIndex","resourceExists","cache","areaIndex","meshIndexToOpaqueAreaLookup","undefined","texture","textures","ModifyTextureResPath","resFilePath","GetGenericDamageData","damage","GetGenericHullDamageData","hullDamage","GetGenericSwarmProperties","swarmBehavior","GetRaceDamageData","GetRaceBoosterData","boosters","GetHullBoosterData","GetHullBoosterCount","reduce","Array","isArray","items","GetImpactEffectType","impactEffectType","EveSOFDataHull","ImpactEffectType","IMPACTEFFECT_NONE","GetImpactShieldShader","IMPACTEFFECT_ELLIPSOID","shieldShaderEllipsoid","IMPACTEFFECT_HULL","shieldShaderHull","resourcePath","insert","resPathInsert","CMD_RESPATHINSERT","slash","candidate","underscore","exists","set","GetColorSet","colorData","colors","GetLogo","logoSetData","logos","HasLogoSet","size","IsInVisibilityData","hash","visibilityData","GetMeshAreaParameter","areaType","parameterName","hullParameters","blockedMaterials","info","materialArgs","CMD_MATERIAL","EveSOFUtilsParameterName","materialIndex","GetMaterialIdx","blocked","findMaterialParameter","GetShortName","patternArgs","CMD_PATTERN","patternMaterialPrefixes","defaultPatternLayer1MaterialName","UsingSof6","defaultPatternLayer2MaterialName","EveSOFDataArea","AreaType","TYPE_WRECK","findAreaMaterialParameter","genericWreckMaterialData","TYPE_PRIMARY","TYPE_REACTOR","areaMaterials","GetFactionTurretParameters","IsMaterialIdxValid","usageIndex","materialUsageList","ChangeMaterialIdx","turretAreaType","GetFullName","GetPatternLayerCount","HasDnaCommand","GetHullPatternApplicationData","layerAndProjection","GetFactionalPatternApplicationData","defaultPattern","enabled","pattern","GetPatternData","defaultPatternName","applicationData","applications","sof6","oldApplicationData","GetPatternApplicationData","layer","defaultPatternInfo","projection","GetPatternProjectionData","application","isInteger","GetPatternLayerData","GetMaterialTargets","layerData","materialTargets","IsPatternLayerApplicableToArea","applicableAreas","GetReflectionMode","category","categories","categoryData","ReflectionMode","REFLECT_NEVER","REFLECT_LOW_MEDIUM_HIGH","REFLECT_MEDIUM_AND_HIGH","GetHullBoundingSphere","hullOffset","source","boundingSphere","includeSphere","next","GetHullShapeEllipsoid","center","shapeEllipsoidCenter","radius","shapeEllipsoidRadius","GetParentBoundingSphere","GetParentHullShapeEllipsoid","SetParentBoundingSphere","SetParentShapeEllipsoidInfo","ellipsoid","DisableAnimation","DynamicBoundingSphereEnabled","enableDynamicBoundingSphere","CastShadow","castShadow","command","commandName","GetFactionName","GetRaceName","#setupFromString","dnaString","toLowerCase","parts","splitCarbon","GetHullData","push","GetFactionData","GetRaceData","layouts","CMD_LAYOUT","GetGenericData","CMD_VARIANT","#setupFromDescriptor","layoutName","descriptor","faction","race","layout","inherited","#inheritCommand","#setupCustomData","createCustomHullData","#reset","clear","CMD_INVALID","CMD_MESH","CMD_MAX","#CopySphere","sphere","from","#CopyEllipsoid","constructor","shapeCenter","copyArrayValue","shapeEllipsoid","shapeRadius","scaling","rotation","isMirrored","alwaysOn","hasTrails","hullAreaData","target","isTransparent","sourceArea","cloneVariantHullArea","parameters","parameter","shader","fallback","separator","pop","current","dx","dy","dz","distance","hypot","factor","materialName","GetMaterialData","materialNames","colorType","glowColor"],"mappings":";;;;;;;;;;AAYA,MAAMA,aAAa,GAAGC,MAAM,CAACC,MAAM,CAAC,CAClC,SAAS,EACT,UAAU,EACV,MAAM,EACN,eAAe,EACf,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,CACT,CAAC;AAEF,MAAMC,aAAa,GAAGF,MAAM,CAACC,MAAM,CAAC,CAClC,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,WAAW,CACZ,CAAC;;AAEF;AAAA,IAAAE;AAAA,IAAA,cAAAC,SAAA,CAAA;AAAA,EAAA,QACA,MAAAC,SAAA,SAC+BC,QAAQ,CACvC;AAAA,IAAA;AAAA,MAAA,CAAA;AAAAC,QAAAA,CAAA,EAAA,CAAAC,SAAA,EAAAC,eAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,oBAAA,EAAAC,0BAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,8BAAA,EAAAC,oCAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,UAAA,CAAA;QAAAC,CAAA,EAAA,CAAApC,UAAA,EAAAqC,UAAA;AAAA,OAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,QAAAA,SAAS,EAAE,WAAW;AAAEC,QAAAA,MAAM,EAAE;AAAM,OAAC,CAAC,CAAA,EAAA,CAAA,CAAA,CAgBpDH,IAAI,EAAJA,IAAI,CAACI,MAAM,CAAA,EAAA,EAAA,EAAA,KAAA,CAAA,EAAA,CAGXJ,IAAI,CAACK,SAAS,CAAC,eAAe,CAAC,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAG/BL,IAAI,CAACM,IAAI,CAAC,yBAAyB,CAAC,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAGpCN,IAAI,CAACK,SAAS,CAAC,4BAA4B,CAAC,EAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAG5CL,IAAI,CAACK,SAAS,CAAC,yBAAyB,CAAC,EAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAGzCL,IAAI,CAACK,SAAS,CAAC,4BAA4B,CAAC,EAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAG5CL,IAAI,CAACK,SAAS,CAAC,4BAA4B,CAAC,EAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAG5CL,IAAI,CAACM,IAAI,CAAC,2BAA2B,CAAC,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAGtCN,IAAI,CAACM,IAAI,CAAC,yBAAyB,CAAC,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAGpCN,IAAI,CAACM,IAAI,CAAC,aAAa,CAAC,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAGxBN,IAAI,EAAJA,IAAI,CAACI,MAAM,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAGXJ,IAAI,EAAJA,IAAI,CAACI,MAAM,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAGXJ,IAAI,CAACO,SAAS,CAAC,iBAAiB,CAAC,EAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAGjCP,IAAI,CAACO,SAAS,CAAC,+BAA+B,CAAC,oCAG/CP,IAAI,EAAJA,IAAI,CAACQ,OAAO,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAUZC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAYhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAahBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,6BAmDhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAgBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,oCAsBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAoBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,6BAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,kCAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAShBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAgBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,6BAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAehBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,0CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAchBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,CAYZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,sCAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAahBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,mCAchBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAsBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAuEhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,wCAyBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAmBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,oCAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,CAchBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAiBZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,sCAYhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAYhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAqBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,mCAgChBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAehBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,CAgChBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAYhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,2BAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAShBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,uBAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,mCA9tCYhD,QAAQ,CAAA;AAAA;AAgBrCkD,IAAAA,GAAG,IAAAlB,UAAA,CAAA,IAAA,CAAA,EAAA9B,SAAA,OAAG,EAAE,CAAA;AAGRiD,IAAAA,OAAO,IAAAhD,eAAA,CAAA,IAAA,CAAA,EAAAC,aAAA,OAAG,IAAI,CAAA;AAGdgD,IAAAA,SAAS,IAAA/C,mBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,EAAE,CAAA;AAGd+C,IAAAA,WAAW,IAAA9C,qBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,IAAI,CAAA;AAGlB8C,IAAAA,QAAQ,IAAA7C,uBAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,OAAG,IAAI,CAAA;AAGf6C,IAAAA,WAAW,IAAA5C,oBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,IAAI,CAAA;AAGlB4C,IAAAA,WAAW,IAAA3C,uBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,IAAI,CAAA;AAGlB2C,IAAAA,UAAU,IAAA1C,uBAAA,CAAA,IAAA,CAAA,EAAAC,gBAAA,OAAG,EAAE,CAAA;AAGf0C,IAAAA,cAAc,IAAAzC,sBAAA,CAAA,IAAA,CAAA,EAAAC,oBAAA,OAAG,EAAE,CAAA;AAGnByC,IAAAA,SAAS,IAAAxC,0BAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,EAAE,CAAA;AAGdwC,IAAAA,WAAW,IAAAvC,qBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,EAAE,CAAA;AAGhBuC,IAAAA,QAAQ,IAAAtC,uBAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,OAAG,EAAE,CAAA;AAGbsC,IAAAA,oBAAoB,IAAArC,oBAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,OAAG,IAAI,CAAA;AAG3BqC,IAAAA,wBAAwB,IAAApC,gCAAA,CAAA,IAAA,CAAA,EAAAC,8BAAA,OAAG,IAAI,CAAA;AAG/BoC,IAAAA,SAAS,IAAAnC,oCAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,KAAK,CAAA;AAEjB,IAAA,SAAS,IAAAC,qBAAA,QAAG,IAAIkC,GAAG,EAAE;IAErB,WAAW,GAAG,IAAI;;AAElB;AACF;AACA;AAGEC,IAAAA,KAAKA,CAACC,WAAW,EAAEC,gBAAgB,EAAEC,MAAM,GAAG,IAAI,EAAElB,OAAO,GAAG,IAAI,EAClE;AACE,MAAA,IAAIiB,gBAAgB,YAAYE,cAAa,IAAInB,OAAO,KAAK,IAAI,EACjE;AACE,QAAA,IAAI,CAAC,gBAAgB,CAACoB,MAAM,CAACJ,WAAW,IAAI,EAAE,CAAC,EAAEC,gBAAgB,CAAC;AAClE,QAAA;AACF,MAAA;AACA,MAAA,IAAI,CAAC,oBAAoB,CAACG,MAAM,CAACJ,WAAW,IAAI,EAAE,CAAC,EAAEC,gBAAgB,EAAEC,MAAM,EAAElB,OAAO,CAAC;AACzF,IAAA;;AAEA;AAGAqB,IAAAA,OAAOA,GACP;AACE,MAAA,OAAO,IAAI,CAACpB,SAAS,CAACqB,MAAM,GAAG,CAAC,IAAI,IAAI,CAACpB,WAAW,KAAK,IAAI,IAAI,IAAI,CAACC,QAAQ,KAAK,IAAI;AACzF,IAAA;;AAEA;AACAoB,IAAAA,aAAaA,GACb;MACE,OAAO,IAAI,CAAC,WAAW;AACzB,IAAA;;AAEA;AAGAC,IAAAA,eAAeA,GACf;AACE,MAAA,IAAI,CAAC,IAAI,CAACH,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,KAAK;MAErD,KAAK,MAAM,CAACI,IAAI,EAAEC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EACzC;AACE,QAAA,QAAQD,IAAI;AAEV,UAAA,KAAK,UAAU;AACb,YAAA,IAAIC,IAAI,CAACJ,MAAM,KAAK,IAAI,CAAClB,WAAW,CAACuB,gBAAgB,CAACL,MAAM,EAAE,OAAO,KAAK;YAC1E,IAAII,IAAI,CAACE,IAAI,CAACC,KAAK,IAAIA,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC7B,OAAO,CAAC8B,eAAe,CAACD,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK;AAC9F,YAAA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAA,KAAK,MAAM;AACX,UAAA,KAAK,UAAU;AACb,YAAA,IAAIH,IAAI,CAACJ,MAAM,KAAK,IAAI,CAAClB,WAAW,CAACuB,gBAAgB,CAACL,MAAM,EAAE,OAAO,KAAK;YAC1E,IAAII,IAAI,CAACE,IAAI,CAACC,KAAK,IAAIA,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC7B,OAAO,CAAC8B,eAAe,CAACD,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK;AAC9F,YAAA;AACF,UAAA,KAAK,eAAe;AAClB,YAAA,IAAIH,IAAI,CAACJ,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;AACnC,YAAA;AACF,UAAA,KAAK,SAAS;YACZ,IAAII,IAAI,CAACJ,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAClB,WAAW,CAAC2B,QAAQ,CAACC,GAAG,CAACN,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AAC9E,YAAA;AACF,UAAA,KAAK,OAAO;AACV,YAAA,IAAIA,IAAI,CAACJ,MAAM,KAAK,CAAC,IAAI,CAAC7E,aAAa,CAACwF,QAAQ,CAACP,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AACvE,YAAA;AACF,UAAA,KAAK,SAAS;YACZ,IAAIA,IAAI,CAACJ,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAACtB,OAAO,CAACkC,cAAc,CAACR,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;YAC5E,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC1B,OAAO,CAAC8B,eAAe,CAACJ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;YAC9E,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC1B,OAAO,CAAC8B,eAAe,CAACJ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AAC9E,YAAA;AACF,UAAA,KAAK,QAAQ;YACX,IAAIA,IAAI,CAACJ,MAAM,KAAK,CAAC,IAAII,IAAI,CAACE,IAAI,CAACC,KAAK,IAAI,CAAC,IAAI,CAAC7B,OAAO,CAACmC,aAAa,CAACN,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK;AAC7F,YAAA;AACF,UAAA;AACE,YAAA,OAAO,KAAK;AAChB;AACF,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAGAO,IAAAA,YAAYA,GACZ;MACE,OAAO,IAAI,CAACrC,GAAG;AACjB,IAAA;;AAEA;AAGAsC,IAAAA,iBAAiBA,GACjB;AACE,MAAA,OAAO,IAAI,CAACpC,SAAS,CAACqB,MAAM;AAC9B,IAAA;;AAEA;AAGAgB,IAAAA,YAAYA,GACZ;MACE,OAAO,IAAI,CAAC9B,SAAS;AACvB,IAAA;;AAEA;AACF;AACA;AACA;AAGE+B,IAAAA,aAAaA,GACb;MACE,MAAMb,IAAI,GAAG,IAAI,CAACc,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAACC,SAAS,CAAC;MACnE,IAAIhB,IAAI,EAAEJ,MAAM,EAChB;QACE,MAAMqB,KAAK,GAAGlG,aAAa,CAACmG,OAAO,CAAClB,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAA,IAAIiB,KAAK,KAAK,EAAE,EAAE,OAAOA,KAAK;AAChC,MAAA;MACA,OAAO,IAAI,CAAC1C,SAAS,CAAC,CAAC,CAAC,EAAE4C,UAAU,IAAI,CAAC;AAC3C,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,sBAAsBA,GACtB;MACE,IAAI,IAAI,CAAC7C,SAAS,CAACqB,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;AAC1C,MAAA,IAAI,IAAI,CAACrB,SAAS,CAACqB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAACrB,SAAS,CAAC,CAAC,CAAC,CAAC8C,mBAAmB,IAAI,EAAE;MAEnF,IAAIC,MAAM,GAAG,IAAI,CAAC/C,SAAS,CAAC,CAAC,CAAC,CAAC8C,mBAAmB,IAAI,EAAE;MACxD,MAAME,aAAa,GAAG,IAAI,CAACzC,SAAS,CAAC0C,GAAG,CAACzB,IAAI,IAAIA,IAAI,CAAC0B,KAAK,CAAC,EAAE,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;AACzE,MAAA,MAAMC,SAAS,GAAG,IAAI,CAAC7C,SAAS,CAAC,CAAC,CAAC,CAAC8C,KAAK,CAAC,GAAG,CAAC;MAC9C,MAAMC,OAAO,GAAGF,SAAS,CAACA,SAAS,CAAC/B,MAAM,GAAG,CAAC,CAAC;AAC/C,MAAA,IAAIiC,OAAO,EACX;AACEP,QAAAA,MAAM,GAAGA,MAAM,CAACQ,OAAO,CAAC,CAAA,EAAGD,OAAO,CAAA,IAAA,CAAM,EAAE,CAAA,EAAGN,aAAa,CAAA,IAAA,CAAM,CAAC;QACjED,MAAM,GAAGA,MAAM,CAACQ,OAAO,CAAC,GAAGD,OAAO,CAAA,CAAA,CAAG,EAAE,MAAM,CAAC;AAChD,MAAA;AACA,MAAA,OAAOP,MAAM;AACf,IAAA;;AAEA;AACF;AACA;AACA;AAGES,IAAAA,gBAAgBA,CAACC,SAAS,EAAEC,SAAS,GAAG,CAAC,EACzC;AACE,MAAA,MAAMC,IAAI,GAAG,IAAI,CAAC3D,SAAS,CAAC0D,SAAS,CAAC;AACtC,MAAA,IAAI,CAACC,IAAI,EAAE,OAAO,IAAI;AACtB,MAAA,QAAQF,SAAS;QAEf,KAAKG,YAAY,CAACC,mBAAmB;UAAE,OAAOF,IAAI,CAACG,WAAW;QAC9D,KAAKF,YAAY,CAACG,kBAAkB;UAAE,OAAOJ,IAAI,CAACK,UAAU;QAC5D,KAAKJ,YAAY,CAACK,wBAAwB;UAAE,OAAON,IAAI,CAACO,gBAAgB;QACxE,KAAKN,YAAY,CAACO,qBAAqB;UAAE,OAAOR,IAAI,CAACS,aAAa;QAClE,KAAKR,YAAY,CAACS,uBAAuB;UAAE,OAAOV,IAAI,CAACW,eAAe;AACtE,QAAA;AAAS,UAAA,OAAO,IAAI;AACtB;AACF,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,gBAAgBA,CAACb,SAAS,GAAG,CAAC,EAC9B;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAEc,aAAa,IAAI,EAAE;AACvD,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,gBAAgBA,CAACf,SAAS,GAAG,CAAC,EAC9B;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAEgB,aAAa,IAAI,EAAE;AACvD,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,iBAAiBA,CAACjB,SAAS,GAAG,CAAC,EAC/B;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAEkB,UAAU,IAAI,EAAE;AACpD,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,oBAAoBA,CAACnB,SAAS,GAAG,CAAC,EAClC;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAEoB,aAAa,IAAI,EAAE;AACvD,IAAA;;AAEA;AACF;AACA;AACA;IAGEC,0BAA0BA,CAACC,UAAU,EACrC;MACE,IAAIC,MAAM,CAACD,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI;AAC1C,MAAA,OAAO,IAAI,CAAC/E,WAAW,EAAEiF,mBAAmB,EAAEC,GAAG,CAACF,MAAM,CAACD,UAAU,CAAC,CAAC,IAAI,IAAI;AAC/E,IAAA;;AAEA;AACF;AACA;AACA;AAGEI,IAAAA,gBAAgBA,CAAC1B,SAAS,GAAG,CAAC,EAC9B;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAE2B,SAAS,IAAI,EAAE;AACnD,IAAA;;AAEA;AACF;AACA;AACA;IAGEC,sBAAsBA,CAACN,UAAU,EACjC;MACE,IAAIC,MAAM,CAACD,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI;AAC1C,MAAA,OAAO,IAAI,CAAC/E,WAAW,EAAEsF,eAAe,EAAEJ,GAAG,CAACF,MAAM,CAACD,UAAU,CAAC,CAAC,IAAI,IAAI;AAC3E,IAAA;;AAEA;AACF;AACA;AACA;AAGEQ,IAAAA,qBAAqBA,CAAC9B,SAAS,GAAG,CAAC,EACnC;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAE+B,cAAc,IAAI,EAAE;AACxD,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,eAAeA,CAAChC,SAAS,GAAG,CAAC,EAC7B;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAEiC,QAAQ,IAAI,EAAE;AAClD,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,cAAcA,CAAClC,SAAS,GAAG,CAAC,EAC5B;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAEmC,OAAO,IAAI,EAAE;AACjD,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,iBAAiBA,CAACpC,SAAS,GAAG,CAAC,EAC/B;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAEqC,UAAU,IAAI,EAAE;AACpD,IAAA;;AAEA;AAGAC,IAAAA,eAAeA,GACf;MACE,OAAO,IAAI,CAAChG,SAAS,CAAC,CAAC,CAAC,EAAEiG,QAAQ,IAAI,EAAE;AAC1C,IAAA;;AAEA;AAGAC,IAAAA,gBAAgBA,GAChB;MACE,OAAO,IAAI,CAAClG,SAAS,CAAC,CAAC,CAAC,EAAEmG,SAAS,IAAI,EAAE;AAC3C,IAAA;;AAEA;AAGAC,IAAAA,sBAAsBA,GACtB;MACE,OAAO,IAAI,CAACpG,SAAS,CAAC,CAAC,CAAC,EAAEqG,eAAe,IAAI,EAAE;AACjD,IAAA;;AAEA;AAGAC,IAAAA,iBAAiBA,GACjB;MACE,OAAO,IAAI,CAACtG,SAAS,CAAC,CAAC,CAAC,EAAEuG,UAAU,IAAI,EAAE;AAC5C,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,oBAAoBA,GACpB;MACE,OAAO,IAAI,CAACxG,SAAS,CAAC,CAAC,CAAC,EAAEyG,aAAa,IAAI,EAAE;AAC/C,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,kBAAkBA,GAClB;MACE,OAAO,IAAI,CAAC1G,SAAS,CAAC,CAAC,CAAC,EAAE2G,WAAW,IAAI,EAAE;AAC7C,IAAA;;AAEA;AAGAC,IAAAA,yBAAyBA,GACzB;MACE,OAAO,IAAI,CAAC5G,SAAS,CAAC,CAAC,CAAC,EAAE6G,sBAAsB,IAAI,IAAI;AAC1D,IAAA;;AAEA;AAGAC,IAAAA,4BAA4BA,GAC5B;MACE,OAAO,IAAI,CAAC9G,SAAS,CAAC,CAAC,CAAC,EAAE+G,yBAAyB,IAAI,IAAI;AAC7D,IAAA;;AAEA;IAGAC,mBAAmBA,CAAChC,UAAU,EAC9B;AACE,MAAA,MAAMtC,KAAK,GAAGuC,MAAM,CAACD,UAAU,CAAC;AAChC,MAAA,IAAItC,KAAK,KAAK,EAAE,EAAE,OAAO,IAAI;MAC7B,OAAO,IAAI,CAACzC,WAAW,EAAEgH,eAAe,EAAE9B,GAAG,CAACzC,KAAK,CAAC,IAAI,IAAI;AAC9D,IAAA;;AAEA;AAGAwE,IAAAA,0BAA0BA,GAC1B;AACE,MAAA,OAAO,IAAI,CAAC/G,WAAW,EAAEgH,YAAY,IAAI,IAAI;AAC/C,IAAA;;AAEA;IAGAC,qBAAqBA,CAACC,KAAK,EAC3B;MACE,OAAO,IAAI,CAAClH,WAAW,EAAEmH,kBAAkB,GAAGrC,MAAM,CAACoC,KAAK,CAAC,CAAC;AAC9D,IAAA;;AAEA;AACF;AACA;AACA;AAGEE,IAAAA,uBAAuBA,CAAC9D,SAAS,EAAEC,SAAS,GAAG,CAAC,EAChD;AACE,MAAA,IAAID,SAAS,KAAKG,YAAY,CAACC,mBAAmB,EAAE,OAAO,CAAC;MAC5D,IAAI2D,OAAO,GAAG,CAAC;AACf,MAAA,KAAK,MAAMC,IAAI,IAAI,IAAI,CAACjE,gBAAgB,CAACC,SAAS,EAAEC,SAAS,CAAC,IAAI,EAAE,EACpE;QACE8D,OAAO,GAAGE,IAAI,CAACC,GAAG,CAACH,OAAO,EAAEC,IAAI,CAAC/E,KAAK,CAAC;AACzC,MAAA;AACA,MAAA,OAAO8E,OAAO;AAChB,IAAA;;AAEA;AACF;AACA;AACA;AAGEI,IAAAA,qBAAqBA,CAAClE,SAAS,GAAG,CAAC,EACnC;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAEmE,cAAc,IAAI,EAAE;AACxD,IAAA;;AAEA;AAGAC,IAAAA,sBAAsBA,CAACpE,SAAS,GAAG,CAAC,EACpC;MACE,MAAMqE,WAAW,GAAG,IAAI,CAAC/H,SAAS,CAAC0D,SAAS,CAAC,EAAEqE,WAAW;AAC1D,MAAA,OAAOA,WAAW,YAAYlH,GAAG,GAAG,CAAC,GAAGkH,WAAW,CAACC,IAAI,EAAE,CAAC,CAACC,IAAI,EAAE,GAAG,EAAE;AACzE,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,eAAeA,CAACC,OAAO,EAAEzE,SAAS,GAAG,CAAC,EACtC;MACE,MAAMqE,WAAW,GAAG,IAAI,CAAC/H,SAAS,CAAC0D,SAAS,CAAC,EAAEqE,WAAW;AAC1D,MAAA,OAAOA,WAAW,YAAYlH,GAAG,GAAGkH,WAAW,CAAC5C,GAAG,CAAChE,MAAM,CAACgH,OAAO,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI;AACrF,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,oBAAoBA,CAAC1E,SAAS,EAAE2E,cAAc,EAC9C;AACE,MAAA,OAAO,IAAI,CAACH,eAAe,CAACG,cAAc,EAAE3E,SAAS,CAAC;AACxD,IAAA;;AAEA;AAGA4E,IAAAA,cAAcA,GACd;AACE,MAAA,OAAO,IAAI,CAACjI,UAAU,CAACgB,MAAM;AAC/B,IAAA;;AAEA;IAGAkH,aAAaA,CAAC7F,KAAK,EACnB;MACE,OAAO,IAAI,CAACrC,UAAU,CAAC4E,MAAM,CAACvC,KAAK,CAAC,CAAC,IAAI,IAAI;AAC/C,IAAA;;AAEA;AACF;AACA;AACA;IAGE8F,eAAeA,CAACL,OAAO,EACvB;MACE,IAAIM,KAAK,GAAG,CAAC;AACb,MAAA,KAAK,IAAI/E,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,IAAI,CAAC1D,SAAS,CAACqB,MAAM,EAAEqC,SAAS,EAAE,EACtE;AACE+E,QAAAA,KAAK,IAAI,IAAI,CAACP,eAAe,CAACC,OAAO,EAAEzE,SAAS,CAAC,EAAErC,MAAM,IAAI,CAAC;AAChE,MAAA;AACA,MAAA,OAAOoH,KAAK;AACd,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,0BAA0BA,CAAChF,SAAS,GAAG,CAAC,EACxC;AACE,MAAA,OAAO,IAAI,CAACwE,eAAe,CAAC,gBAAgB,EAAExE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAEiF,QAAQ,IAAI,IAAI;AACjF,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,oBAAoBA,CAAClF,SAAS,GAAG,CAAC,EAClC;MACE,IAAIA,SAAS,GAAG,CAAC,KAAK,IAAI,CAAC1D,SAAS,CAACqB,MAAM,EAAE,OAAO,IAAI;MACxD,OAAO,IAAI,CAACrB,SAAS,CAAC0D,SAAS,CAAC,EAAEmF,aAAa,IAAI,IAAI;AACzD,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,4BAA4BA,GAC5B;AACE,MAAA,OAAO,IAAI,CAAC3I,WAAW,EAAE4I,kBAAkB,IAAI,EAAE;AACnD,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,6BAA6BA,GAC7B;AACE,MAAA,OAAO,IAAI,CAAC7I,WAAW,EAAE8I,mBAAmB,IAAI,EAAE;AACpD,IAAA;;AAEA;AAGAC,IAAAA,cAAcA,GACd;AACE,MAAA,OAAO,CAAC;AACV,IAAA;;AAEA;AAGAC,IAAAA,oBAAoBA,GACpB;MACE,OAAO,IAAI,CAACnJ,SAAS,CAAC,CAAC,CAAC,EAAEoJ,gBAAgB,KAAK,IAAI;AACrD,IAAA;;AAEA;AACF;AACA;AACA;IAGEC,eAAeA,CAACC,UAAU,EAC1B;AACE,MAAA,OAAOA,UAAU,GAAG,IAAI,CAACnJ,WAAW,EAAEoJ,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAACpJ,WAAW,EAAEqJ,YAAY,IAAI,EAAE;AACzG,IAAA;;AAEA;AACF;AACA;AACA;IAGEC,qBAAqBA,CAACC,IAAI,EAC1B;AACE;AACA;AACA,MAAA,MAAMC,UAAU,GAAG,CAAA,CAAA,EAAID,IAAI,CAAA,CAAE;QACzBhH,KAAK,GAAGiH,UAAU,CAACC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3C,MAAA,OAAO,CAAA,EAAG,IAAI,CAACd,4BAA4B,EAAE,CAAA,EAAGa,UAAU,CAACzG,KAAK,CAAC,CAAC,EAAER,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC2G,eAAe,CAAC,IAAI,CAACQ,cAAc,EAAE,CAAC,CAAA,EAAGF,UAAU,CAACzG,KAAK,CAACR,KAAK,CAAC,CAAA,CAAE;AACtJ,IAAA;;AAEA;AACF;AACA;AACA;IAGEoH,wBAAwBA,CAACC,UAAU,EACnC;AACE,MAAA,OAAO,IAAI,CAAC5J,WAAW,EAAE6J,cAAc,EAAE7E,GAAG,CAAChE,MAAM,CAAC4I,UAAU,CAAC,CAAC,IAAI,IAAI;AAC1E,IAAA;;AAEA;AACF;AACA;AACA;IAGEE,yBAAyBA,CAACF,UAAU,EACpC;AACE,MAAA,OAAO,IAAI,CAAC5J,WAAW,EAAE+J,eAAe,EAAE/E,GAAG,CAAChE,MAAM,CAAC4I,UAAU,CAAC,CAAC,IAAI,IAAI;AAC3E,IAAA;;AAEA;AAGAI,IAAAA,2BAA2BA,CAACC,WAAW,EAAEC,SAAS,EAAE3G,SAAS,GAAG,CAAC,EAAE4G,cAAc,GAAG,IAAI,EAAEC,KAAK,GAAG,IAAI,EACtG;AACE,MAAA,MAAM5G,IAAI,GAAG,IAAI,CAAC3D,SAAS,CAAC0D,SAAS,CAAC;AACtC,MAAA,MAAM8G,SAAS,GAAG7G,IAAI,EAAE8G,2BAA2B,EAAEtF,GAAG,CAACF,MAAM,CAACoF,SAAS,CAAC,CAAC;AAC3E,MAAA,IAAIG,SAAS,KAAKE,SAAS,EAAE,OAAO,IAAI;AACxC,MAAA,MAAMC,OAAO,GAAGhH,IAAI,CAACG,WAAW,GAAG0G,SAAS,CAAC,EAAEI,QAAQ,EAAEzF,GAAG,CAAChE,MAAM,CAACiJ,WAAW,CAAC,CAAC;AACjF,MAAA,IAAI,CAACO,OAAO,EAAE,OAAO,IAAI;MACzB,OAAO,IAAI,CAACE,oBAAoB,CAACF,OAAO,CAACG,WAAW,EAAER,cAAc,EAAEC,KAAK,CAAC;AAC9E,IAAA;;AAEA;AAGAQ,IAAAA,oBAAoBA,GACpB;AACE,MAAA,OAAO,IAAI,CAAC5K,WAAW,EAAE6K,MAAM,IAAI,IAAI;AACzC,IAAA;;AAEA;AAGAC,IAAAA,wBAAwBA,GACxB;AACE,MAAA,OAAO,IAAI,CAAC9K,WAAW,EAAE+K,UAAU,IAAI,IAAI;AAC7C,IAAA;;AAEA;AAGAC,IAAAA,yBAAyBA,GACzB;AACE,MAAA,OAAO,IAAI,CAAChL,WAAW,EAAEiL,aAAa,IAAI,IAAI;AAChD,IAAA;;AAEA;AAGAC,IAAAA,iBAAiBA,GACjB;AACE,MAAA,OAAO,IAAI,CAACnL,QAAQ,EAAE8K,MAAM,IAAI,IAAI;AACtC,IAAA;;AAEA;AAGAM,IAAAA,kBAAkBA,GAClB;AACE,MAAA,OAAO,IAAI,CAACpL,QAAQ,EAAEqL,QAAQ,IAAI,IAAI;AACxC,IAAA;;AAEA;AAGAC,IAAAA,kBAAkBA,CAAC9H,SAAS,GAAG,CAAC,EAChC;MACE,OAAO,IAAI,CAAC1D,SAAS,CAAC0D,SAAS,CAAC,EAAE6H,QAAQ,IAAI,IAAI;AACpD,IAAA;;AAEA;AACF;AACA;AACA;AAGEE,IAAAA,mBAAmBA,GACnB;AACE,MAAA,OAAO,IAAI,CAACzL,SAAS,CAAC0L,MAAM,CAC1B,CAACjD,KAAK,EAAE9E,IAAI,KAAK8E,KAAK,IAAIkD,KAAK,CAACC,OAAO,CAACjI,IAAI,EAAE4H,QAAQ,EAAEM,KAAK,CAAC,GAAGlI,IAAI,CAAC4H,QAAQ,CAACM,KAAK,CAACxK,MAAM,GAAG,CAAC,CAAC,EAChG,CACF,CAAC;AACH,IAAA;;AAEA;AACF;AACA;AACA;AAGEyK,IAAAA,mBAAmBA,GACnB;AACE,MAAA,OAAO7G,MAAM,CAAC,IAAI,CAACjF,SAAS,CAAC,CAAC,CAAC,EAAE+L,gBAAgB,IAAIC,eAAc,CAACC,gBAAgB,CAACC,iBAAiB,CAAC;AACzG,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,qBAAqBA,GACrB;AACE,MAAA,MAAMnB,MAAM,GAAG,IAAI,CAACD,oBAAoB,EAAE;AAC1C,MAAA,IAAI,CAACC,MAAM,EAAE,OAAO,IAAI;AACxB,MAAA,QAAQ,IAAI,CAACc,mBAAmB,EAAE;AAEhC,QAAA,KAAKE,eAAc,CAACC,gBAAgB,CAACG,sBAAsB;AAAE,UAAA,OAAOpB,MAAM,CAACqB,qBAAqB,IAAI,EAAE;AACtG,QAAA,KAAKL,eAAc,CAACC,gBAAgB,CAACK,iBAAiB;AAAE,UAAA,OAAOtB,MAAM,CAACuB,gBAAgB,IAAI,EAAE;AAC5F,QAAA;AAAS,UAAA,OAAO,IAAI;AACtB;AACF,IAAA;;AAEA;IAGA1B,oBAAoBA,CAAC2B,YAAY,EAAElC,cAAc,GAAG,IAAI,EAAEC,KAAK,GAAG,IAAI,EACtE;MACE,IAAIkC,MAAM,GAAG,IAAI,CAACxM,WAAW,EAAEyM,aAAa,IAAI,IAAI;MACpD,MAAMjL,IAAI,GAAG,IAAI,CAACc,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAACmK,iBAAiB,CAAC;MAC3E,IAAIlL,IAAI,EAAEJ,MAAM,KAAK,CAAC,EAAEoL,MAAM,GAAGhL,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,IAAI,GAAGA,IAAI,CAAC,CAAC,CAAC;MACpE,IAAI,CAACgL,MAAM,IAAI,OAAOnC,cAAc,KAAK,UAAU,EAAE,OAAOkC,YAAY;AAExE,MAAA,MAAMI,KAAK,GAAGJ,YAAY,CAAC5C,WAAW,CAAC,GAAG,CAAC;AAC3C,MAAA,IAAIgD,KAAK,KAAK,EAAE,EAAE,OAAOJ,YAAY;MACrC,IAAIK,SAAS,GAAG,CAAA,EAAGL,YAAY,CAACtJ,KAAK,CAAC,CAAC,EAAE0J,KAAK,GAAG,CAAC,CAAC,CAAA,EAAGH,MAAM,CAAA,CAAA,EAAID,YAAY,CAACtJ,KAAK,CAAC0J,KAAK,GAAG,CAAC,CAAC,CAAA,CAAE;AAC/F,MAAA,MAAME,UAAU,GAAGD,SAAS,CAACjD,WAAW,CAAC,GAAG,CAAC;AAC7C,MAAA,IAAIkD,UAAU,KAAK,EAAE,EAAE,OAAON,YAAY;AAC1CK,MAAAA,SAAS,GAAG,CAAA,EAAGA,SAAS,CAAC3J,KAAK,CAAC,CAAC,EAAE4J,UAAU,CAAC,CAAA,CAAA,EAAIL,MAAM,GAAGI,SAAS,CAAC3J,KAAK,CAAC4J,UAAU,CAAC,CAAA,CAAE;AAEvF,MAAA,IAAIvC,KAAK,EAAExI,GAAG,CAAC8K,SAAS,CAAC,EAAE,OAAOtC,KAAK,CAACpF,GAAG,CAAC0H,SAAS,CAAC,GAAGA,SAAS,GAAGL,YAAY;AACjF,MAAA,MAAMO,MAAM,GAAGzC,cAAc,CAACuC,SAAS,CAAC,KAAK,IAAI;MACjD,IAAItC,KAAK,EAAEA,KAAK,CAACyC,GAAG,CAACH,SAAS,EAAEE,MAAM,CAAC;AACvC,MAAA,OAAOA,MAAM,GAAGF,SAAS,GAAGL,YAAY;AAC1C,IAAA;;AAEA;AAGAS,IAAAA,WAAWA,GACX;MACE,OAAO,IAAI,CAAChN,WAAW,EAAEiN,SAAS,EAAEC,MAAM,IAAI,EAAE;AAClD,IAAA;;AAEA;AACF;AACA;AACA;IAGEC,OAAOA,CAAC1K,KAAK,EACb;AACE,MAAA,OAAO,IAAI,CAACzC,WAAW,EAAEoN,WAAW,EAAEC,KAAK,GAAGrI,MAAM,CAACvC,KAAK,CAAC,CAAC,IAAI,IAAI;AACtE,IAAA;;AAEA;AACF;AACA;AACA;IAGE6K,UAAUA,CAAC7K,KAAK,EAChB;AACE,MAAA,OAAO,CAAC,IAAI,CAAC0K,OAAO,CAAC1K,KAAK,CAAC,EAAEkI,QAAQ,EAAE4C,IAAI,IAAI,CAAC,IAAI,CAAC;AACvD,IAAA;;AAEA;AACF;AACA;AACA;IAGEC,kBAAkBA,CAACC,IAAI,EACvB;AACE,MAAA,OAAO,IAAI,CAACzN,WAAW,EAAE0N,cAAc,EAAE5L,GAAG,CAACkD,MAAM,CAACyI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI;AAC3E,IAAA;;AAEA;AAGAE,IAAAA,oBAAoBA,CAACC,QAAQ,EAAEC,aAAa,EAAEC,cAAc,GAAG,IAAI,EAAEC,gBAAgB,GAAG,CAAC,EACzF;AACE,MAAA,IAAIC,IAAI;AACR,MAAA,IAAIrM,KAAK;MACT,MAAMsM,YAAY,GAAG,IAAI,CAAC3L,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAAC2L,YAAY,CAAC;AAC9E,MAAA,IAAID,YAAY,EAChB;QACED,IAAI,GAAG,IAAIG,wBAAwB,CAAC,IAAI,CAACjO,WAAW,CAACuB,gBAAgB,EAAEoM,aAAa,CAAC;AACrF,QAAA,MAAMO,aAAa,GAAGJ,IAAI,CAACK,cAAc,EAAE;AAC3C,QAAA,IAAID,aAAa,KAAK,EAAE,IAAIA,aAAa,GAAGH,YAAY,CAAC7M,MAAM,IAAIgN,aAAa,GAAG,EAAE,EACrF;UACE,MAAME,OAAO,GAAIP,gBAAgB,KAAK,CAAC,GAAK,CAAC,IAAIK,aAAc;UAC/D,IAAI,CAACE,OAAO,EACZ;AACE3M,YAAAA,KAAK,GAAG4M,qBAAqB,CAAC,IAAI,CAACzO,OAAO,EAAEmO,YAAY,CAACG,aAAa,CAAC,EAAEJ,IAAI,CAACQ,YAAY,EAAE,CAAC;YAC7F,IAAI7M,KAAK,EAAE,OAAOA,KAAK;AACzB,UAAA;AACF,QAAA;AACF,MAAA;MAEA,MAAM8M,WAAW,GAAG,IAAI,CAACnM,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAACmM,WAAW,CAAC;AAC5E,MAAA,IAAID,WAAW,EACf;QACET,IAAI,GAAG,IAAIG,wBAAwB,CAAC,IAAI,CAACjO,WAAW,CAACyO,uBAAuB,EAAEd,aAAa,CAAC;AAC5F,QAAA,MAAMO,aAAa,GAAGJ,IAAI,CAACK,cAAc,EAAE;AAC3C,QAAA,IAAID,aAAa,KAAK,EAAE,IAAI,CAAC,GAAGA,aAAa,GAAGK,WAAW,CAACrN,MAAM,EAClE;AACEO,UAAAA,KAAK,GAAG4M,qBAAqB,CAAC,IAAI,CAACzO,OAAO,EAAE2O,WAAW,CAAC,CAAC,GAAGL,aAAa,CAAC,EAAEJ,IAAI,CAACQ,YAAY,EAAE,CAAC;UAChG,IAAI7M,KAAK,EAAE,OAAOA,KAAK;AACzB,QAAA;AACF,MAAA;MAEAqM,IAAI,GAAG,IAAIG,wBAAwB,CAAC,IAAI,CAACjO,WAAW,CAACyO,uBAAuB,EAAEd,aAAa,CAAC;AAC5F,MAAA,IAAIG,IAAI,CAACK,cAAc,EAAE,KAAK,CAAC,EAC/B;AACE1M,QAAAA,KAAK,GAAG4M,qBAAqB,CAC3B,IAAI,CAACzO,OAAO,EACZ,IAAI,CAACE,WAAW,CAAC4O,gCAAgC,EACjDZ,IAAI,CAACQ,YAAY,EACnB,CAAC;QACD,IAAI7M,KAAK,EAAE,OAAOA,KAAK;AACzB,MAAA,CAAC,MACI,IAAIqM,IAAI,CAACK,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,CAACQ,SAAS,EAAE,EACxD;AACElN,QAAAA,KAAK,GAAG4M,qBAAqB,CAC3B,IAAI,CAACzO,OAAO,EACZ,IAAI,CAACE,WAAW,CAAC8O,gCAAgC,EACjDd,IAAI,CAACQ,YAAY,EACnB,CAAC;QACD,IAAI7M,KAAK,EAAE,OAAOA,KAAK;AACzB,MAAA;MAEAqM,IAAI,GAAG,IAAIG,wBAAwB,CAAC,IAAI,CAACjO,WAAW,CAACuB,gBAAgB,EAAEoM,aAAa,CAAC;AACrF,MAAA,IAAID,QAAQ,KAAKmB,eAAc,CAACC,QAAQ,CAACC,UAAU,EACnD;QACEtN,KAAK,GAAGuN,yBAAyB,CAAC,IAAI,CAACpP,OAAO,EAAE,IAAI,CAACkN,WAAW,EAAE,EAAE,IAAI,CAAC9M,WAAW,CAACiP,wBAAwB,EAAEvB,QAAQ,EAAEI,IAAI,CAAC;QAC9H,IAAIrM,KAAK,EAAE,OAAOA,KAAK;AACzB,MAAA;AACA,MAAA,IAAIiM,QAAQ,KAAKmB,eAAc,CAACC,QAAQ,CAACI,YAAY,IAAIxB,QAAQ,KAAKmB,eAAc,CAACC,QAAQ,CAACK,YAAY,EAC1G;QACE1N,KAAK,GAAGuN,yBAAyB,CAAC,IAAI,CAACpP,OAAO,EAAE,IAAI,CAACkN,WAAW,EAAE,EAAE,IAAI,CAAC/M,QAAQ,CAACqP,aAAa,EAAE1B,QAAQ,EAAEI,IAAI,CAAC;QAChH,IAAIrM,KAAK,EAAE,OAAOA,KAAK;AACzB,MAAA;MACAA,KAAK,GAAGuN,yBAAyB,CAAC,IAAI,CAACpP,OAAO,EAAE,IAAI,CAACkN,WAAW,EAAE,EAAE,IAAI,CAAChN,WAAW,CAACsP,aAAa,EAAE1B,QAAQ,EAAEI,IAAI,CAAC;MACnH,IAAIrM,KAAK,EAAE,OAAOA,KAAK;MAEvB,OAAOmM,cAAc,EAAE5I,GAAG,CAAChE,MAAM,CAAC2M,aAAa,CAAC,CAAC,IAAI,IAAI;AAC3D,IAAA;;AAEA;IAGA0B,0BAA0BA,CAAC1B,aAAa,EACxC;AACE,MAAA,MAAMG,IAAI,GAAG,IAAIG,wBAAwB,CACvC,IAAI,CAACjO,WAAW,EAAEuB,gBAAgB,IAAI,EAAE,EACxCoM,aACF,CAAC;AACD,MAAA,IAAIG,IAAI,CAACwB,kBAAkB,EAAE,EAC7B;AACE,QAAA,MAAMpB,aAAa,GAAGJ,IAAI,CAACK,cAAc,EAAE;AAC3C,QAAA,MAAMoB,UAAU,GAAGzK,MAAM,CACvB,IAAI,CAAChF,WAAW,EAAE0P,iBAAiB,GAAGtB,aAAa,CAAC,IAAIA,aAC1D,CAAC;QACDJ,IAAI,CAAC2B,iBAAiB,CAAC,IAAI,CAACzP,WAAW,EAAEuP,UAAU,CAAC;AACtD,MAAA;MACA,OAAO,IAAI,CAAC9B,oBAAoB,CAC9B3I,MAAM,CAAC,IAAI,CAAC9E,WAAW,EAAE0P,cAAc,IAAIb,eAAc,CAACC,QAAQ,CAACI,YAAY,CAAC,EAChFpB,IAAI,CAAC6B,WAAW,EAClB,CAAC;AACH,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,oBAAoBA,GACpB;AACE,MAAA,IAAI,IAAI,CAACC,aAAa,CAACrT,UAAS,CAAC6F,UAAU,CAACmM,WAAW,CAAC,IAAI,CAAC,IAAI,CAACvO,WAAW,EAAE,OAAO,CAAC;MACvF,IAAI,IAAI,CAACA,WAAW,EACpB;QACE,OAAO,IAAI,CAAC6P,6BAA6B,EAAE,EAAEC,kBAAkB,CAAC7O,MAAM,IAAI,CAAC;AAC7E,MAAA;AACA,MAAA,IAAI,IAAI,CAACyN,SAAS,EAAE,EACpB;QACE,OAAO,IAAI,CAACqB,kCAAkC,EAAE,EAAED,kBAAkB,CAAC7O,MAAM,IAAI,CAAC;AAClF,MAAA;AACA,MAAA,OAAO,IAAI,CAACrB,SAAS,CAAC,CAAC,CAAC,EAAEoQ,cAAc,EAAEC,OAAO,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AACpE,IAAA;;AAEA;AACF;AACA;AACA;AAGEF,IAAAA,kCAAkCA,GAClC;AACE,MAAA,MAAMG,OAAO,GAAG,IAAI,CAACvQ,OAAO,CAACwQ,cAAc,CAAC,IAAI,CAACtQ,WAAW,EAAEuQ,kBAAkB,IAAI,EAAE,CAAC;AACvF,MAAA,OAAOF,OAAO,EAAEG,eAAe,EAAEtL,GAAG,CAAC,IAAI,CAAC5E,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AACjE,IAAA;;AAEA;AACF;AACA;AACA;AAGE0P,IAAAA,6BAA6BA,GAC7B;AACE,MAAA,IAAI,CAAC,IAAI,CAAC7P,WAAW,EAAE,OAAO,IAAI;AAClC,MAAA,MAAMsQ,YAAY,GAAG,IAAI,CAACtQ,WAAW,CAACuQ,IAAI,GACtC,IAAI,CAACvQ,WAAW,CAACqQ,eAAe,GAChC,IAAI,CAACrQ,WAAW,CAACwQ,kBAAkB;AACvC,MAAA,OAAOF,YAAY,EAAEvL,GAAG,CAAC,IAAI,CAAC5E,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AACrD,IAAA;;AAEA;AACF;AACA;AACA;AAGEsQ,IAAAA,yBAAyBA,GACzB;MACE,IAAI,CAAC,IAAI,CAACb,aAAa,CAACrT,UAAS,CAAC6F,UAAU,CAACmM,WAAW,CAAC,EACzD;QACE,IAAI,IAAI,CAACG,SAAS,EAAE,EAAE,OAAO,IAAI,CAACqB,kCAAkC,EAAE;AACtE,QAAA,MAAMW,KAAK,GAAG,IAAI,CAAC7Q,WAAW,EAAE8Q,kBAAkB;QAClD,MAAMC,UAAU,GAAG,IAAI,CAAChR,SAAS,CAAC,CAAC,CAAC,EAAEoQ,cAAc;QACpD,OAAOU,KAAK,IAAIE,UAAU,GAAG;AAAEd,UAAAA,kBAAkB,EAAE,CAAC;YAAEY,KAAK;AAAEE,YAAAA;WAAY;AAAE,SAAC,GAAG,IAAI;AACrF,MAAA;AACA,MAAA,OAAO,IAAI,CAACf,6BAA6B,EAAE;AAC7C,IAAA;;AAEA;AACF;AACA;AACA;AAGEgB,IAAAA,wBAAwBA,CAACC,WAAW,EAAEJ,KAAK,EAC3C;AACE,MAAA,IAAI,CAACI,WAAW,IAAI,CAACjM,MAAM,CAACkM,SAAS,CAACL,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI;MACtE,IAAI,CAAC,IAAI,CAACd,aAAa,CAACrT,UAAS,CAAC6F,UAAU,CAACmM,WAAW,CAAC,IAAI,CAAC,IAAI,CAACG,SAAS,EAAE,IAAIgC,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI;MACxG,OAAOI,WAAW,CAAChB,kBAAkB,GAAGY,KAAK,CAAC,EAAEE,UAAU,IAAI,IAAI;AACpE,IAAA;;AAEA;AACF;AACA;AACA;AAGEI,IAAAA,mBAAmBA,CAACF,WAAW,EAAEJ,KAAK,EACtC;AACE,MAAA,IAAI,CAACI,WAAW,IAAI,CAACjM,MAAM,CAACkM,SAAS,CAACL,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI;MACtE,IAAI,CAAC,IAAI,CAACd,aAAa,CAACrT,UAAS,CAAC6F,UAAU,CAACmM,WAAW,CAAC,IAAI,CAAC,IAAI,CAACG,SAAS,EAAE,IAAIgC,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI;MACxG,OAAOI,WAAW,CAAChB,kBAAkB,GAAGY,KAAK,CAAC,EAAEA,KAAK,IAAI,IAAI;AAC/D,IAAA;;AAEA;AACF;AACA;AACA;IAGEO,kBAAkBA,CAACC,SAAS,EAC5B;MACE,OAAOA,SAAS,EAAEC,eAAe,EAAErO,KAAK,EAAE,IAAI,IAAI;AACpD,IAAA;;AAEA;AACF;AACA;AACA;AAGEsO,IAAAA,8BAA8BA,CAACF,SAAS,EAAEzD,QAAQ,EAClD;AACE,MAAA,OAAOyD,SAAS,EAAEG,eAAe,EAAEtM,GAAG,CAACF,MAAM,CAAC4I,QAAQ,CAAC,CAAC,KAAK,IAAI;AACnE,IAAA;;AAEA;AACF;AACA;AACA;AAGE6D,IAAAA,iBAAiBA,GACjB;MACE,MAAMC,QAAQ,GAAG,IAAI,CAAC3R,SAAS,CAAC,CAAC,CAAC,EAAE2R,QAAQ,IAAI,EAAE;AAClD,MAAA,MAAMC,UAAU,GAAG,IAAI,CAACzR,WAAW,EAAE0R,YAAY;MACjD,IAAID,UAAU,EAAEpE,IAAI,EACpB;QACE,OAAOoE,UAAU,CAACzM,GAAG,CAACwM,QAAQ,CAAC,IAAIG,cAAc,CAACC,aAAa;AACjE,MAAA;MACA,IAAIJ,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,UAAU,EAAE,OAAOG,cAAc,CAACE,uBAAuB;AACnG,MAAA,IAAIL,QAAQ,CAAC3P,QAAQ,CAAC,SAAS,CAAC,IAAI2P,QAAQ,CAAC3P,QAAQ,CAAC,WAAW,CAAC,IAAI2P,QAAQ,KAAK,UAAU,EAC7F;QACE,OAAOG,cAAc,CAACG,uBAAuB;AAC/C,MAAA;MACA,OAAOH,cAAc,CAACC,aAAa;AACrC,IAAA;;AAEA;AACF;AACA;AACA;AAGEG,IAAAA,qBAAqBA,GACrB;MACE,IAAInP,MAAM,GAAG,IAAI;MACjB,MAAMoP,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,MAAA,KAAK,IAAIzO,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,IAAI,CAAC1D,SAAS,CAACqB,MAAM,EAAEqC,SAAS,EAAE,EACtE;QACE,MAAM0O,MAAM,GAAG,IAAI,CAACpS,SAAS,CAAC0D,SAAS,CAAC,EAAE2O,cAAc;AACxD,QAAA,IAAID,MAAM,EAAE/Q,MAAM,IAAI,CAAC,EACvB;AACE0B,UAAAA,MAAM,GAAGuP,aAAa,CAACvP,MAAM,EAAE,CAC7BkC,MAAM,CAACmN,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGD,UAAU,CAAC,CAAC,CAAC,EACtClN,MAAM,CAACmN,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGD,UAAU,CAAC,CAAC,CAAC,EACtClN,MAAM,CAACmN,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGD,UAAU,CAAC,CAAC,CAAC,EACtClN,MAAM,CAACmN,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CACxB,CAAC;AACJ,QAAA;AACA,QAAA,MAAMG,IAAI,GAAG,IAAI,CAAC7J,0BAA0B,CAAChF,SAAS,CAAC;AACvD,QAAA,IAAI6O,IAAI,EACR;AACEJ,UAAAA,UAAU,CAAC,CAAC,CAAC,IAAIlN,MAAM,CAACsN,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrCJ,UAAAA,UAAU,CAAC,CAAC,CAAC,IAAIlN,MAAM,CAACsN,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrCJ,UAAAA,UAAU,CAAC,CAAC,CAAC,IAAIlN,MAAM,CAACsN,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA;AACF,MAAA;AACA,MAAA,OAAOxP,MAAM;AACf,IAAA;;AAEA;AACF;AACA;AACA;AAGEyP,IAAAA,qBAAqBA,GACrB;AACE,MAAA,MAAM7O,IAAI,GAAG,IAAI,CAAC3D,SAAS,CAAC,CAAC,CAAC;AAC9B,MAAA,IAAI,CAAC2D,IAAI,EAAE,OAAO,IAAI;MACtB,OAAO;AACL8O,QAAAA,MAAM,EAAE9O,IAAI,CAAC+O,oBAAoB,IAAI,IAAI;AACzCC,QAAAA,MAAM,EAAEhP,IAAI,CAACiP,oBAAoB,IAAI;OACtC;AACH,IAAA;;AAEA;AACF;AACA;AACA;AAGEC,IAAAA,uBAAuBA,GACvB;MACE,OAAOlW,UAAS,CAAC,WAAW,CAAC,IAAI,CAAC+D,oBAAoB,CAAC;AACzD,IAAA;;AAEA;AAGAoS,IAAAA,2BAA2BA,GAC3B;MACE,OAAO,IAAI,CAACnS,wBAAwB;AACtC,IAAA;;AAEA;AACF;AACA;AACA;IAGEoS,uBAAuBA,CAACV,cAAc,EACtC;MACE,IAAI,CAAC3R,oBAAoB,GAAG/D,UAAS,CAAC,WAAW,CAAC0V,cAAc,CAAC;AACnE,IAAA;;AAEA;AACF;AACA;AACA;IAGEW,2BAA2BA,CAACC,SAAS,EACrC;MACE,IAAI,CAACtS,wBAAwB,GAAGhE,UAAS,CAAC,cAAc,CAACsW,SAAS,CAAC;AACrE,IAAA;;AAEA;AACF;AACA;AACA;;AAME;AACF;AACA;AACA;;AAUE;AACF;AACA;AACA;AAGEpJ,IAAAA,cAAcA,GACd;MACE,OAAO,IAAI,CAACjJ,SAAS;AACvB,IAAA;;AAEA;AACF;AACA;AACA;AAGEsS,IAAAA,gBAAgBA,GAChB;MACE,IAAI,CAACtS,SAAS,GAAG,KAAK;AACxB,IAAA;;AAEA;AACF;AACA;AACA;AAGEuS,IAAAA,4BAA4BA,GAC5B;AACE,MAAA,OAAO,IAAI,CAACnT,SAAS,CAACqB,MAAM,GAAG,CAAC,IAAI,IAAI,CAACrB,SAAS,CAAC,CAAC,CAAC,EAAEoT,2BAA2B,KAAK,IAAI;AAC7F,IAAA;;AAEA;AAGAC,IAAAA,UAAUA,GACV;AACE;AACA;MACA,OAAO,IAAI,CAACrT,SAAS,CAAC,CAAC,CAAC,EAAEsT,UAAU,KAAK,KAAK;AAChD,IAAA;;AAEA;AACF;AACA;AACA;IAGEtD,aAAaA,CAACuD,OAAO,EACrB;AACE,MAAA,MAAM/R,IAAI,GAAGgS,WAAW,CAACD,OAAO,CAAC;AACjC,MAAA,OAAO/R,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAACO,GAAG,CAACP,IAAI,CAAC;AAClD,IAAA;;AAEA;AACF;AACA;AACA;IAGEe,iBAAiBA,CAACgR,OAAO,EACzB;AACE,MAAA,MAAM/R,IAAI,GAAGgS,WAAW,CAACD,OAAO,CAAC;AACjC,MAAA,IAAI/R,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAACO,GAAG,CAACP,IAAI,CAAC,EAAE,OAAO,IAAI;AAC3D,MAAA,OAAO,IAAI,CAAC,SAAS,CAAC2D,GAAG,CAAC3D,IAAI,CAAC,CAAC0B,KAAK,EAAE;AACzC,IAAA;;AAEA;AAGA4L,IAAAA,SAASA,GACT;AACE,MAAA,OAAO,IAAI,CAAC9O,SAAS,CAACqB,MAAM,GAAG,CAAC,IAAI,IAAI,CAACrB,SAAS,CAAC,CAAC,CAAC,CAAC2Q,IAAI,KAAK,IAAI;AACrE,IAAA;;AAEA;AAGA8C,IAAAA,cAAcA,GACd;MACE,OAAO,IAAI,CAACjT,WAAW;AACzB,IAAA;;AAEA;AAGAkT,IAAAA,WAAWA,GACX;MACE,OAAO,IAAI,CAACjT,QAAQ;AACtB,IAAA;;AAEA;AACF;AACA;AACA;AACE,IAAA,gBAAgBkT,CAACC,SAAS,EAAE7T,OAAO,EACnC;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMD,GAAG,GAAG8T,SAAS,CAACC,WAAW,EAAE;AAEnC,MAAA,IAAI,CAAC,MAAM,CAAC/T,GAAG,EAAEC,OAAO,CAAC;AACzB,MAAA,MAAM+T,KAAK,GAAGC,WAAW,CAACjU,GAAG,EAAE,GAAG,CAAC;AACnC,MAAA,IAAIgU,KAAK,CAACzS,MAAM,GAAG,CAAC,EACpB;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,kBAAkB;AACrC,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,IAAIqB,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGoR,KAAK,CAACzS,MAAM,EAAEqB,KAAK,EAAE,EACjD;QACE,MAAM6Q,OAAO,GAAGQ,WAAW,CAACD,KAAK,CAACpR,KAAK,CAAC,EAAE,GAAG,CAAC;AAC9C,QAAA,IAAI6Q,OAAO,CAAClS,MAAM,KAAK,CAAC,EACxB;AACE,UAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB;AACtC,UAAA;AACF,QAAA;QACA,IAAI,CAAC,SAAS,CAAC2L,GAAG,CAACuG,OAAO,CAAC,CAAC,CAAC,EAAEQ,WAAW,CAACR,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9D,MAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACA,IAAI,IAAI,CAAC,SAAS,CAACxR,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAACA,GAAG,CAAC,UAAU,CAAC,EACjE;AACE,QAAA,IAAI,CAAC,SAAS,CAACiL,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC7H,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5D,MAAA;MAEA,IAAI,CAAC5E,SAAS,GAAGwT,WAAW,CAACD,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3C,MAAA,IAAI,IAAI,CAACvT,SAAS,CAACc,MAAM,KAAK,CAAC,EAC/B;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc;AACjC,QAAA;AACF,MAAA;AACA,MAAA,IAAI,CAACb,WAAW,GAAGsT,KAAK,CAAC,CAAC,CAAC;AAC3B,MAAA,IAAI,CAACrT,QAAQ,GAAGqT,KAAK,CAAC,CAAC,CAAC;AAExB,MAAA,KAAK,MAAMtS,IAAI,IAAI,IAAI,CAACjB,SAAS,EACjC;AACE,QAAA,MAAMoD,IAAI,GAAG5D,OAAO,CAACiU,WAAW,CAACxS,IAAI,CAAC;QACtC,IAAI,CAACmC,IAAI,EACT;AACE,UAAA,IAAI,CAAC,WAAW,GAAG,cAAc;AACjC,UAAA;AACF,QAAA;AACA,QAAA,IAAI,CAAC3D,SAAS,CAACiU,IAAI,CAACtQ,IAAI,CAAC;AAC3B,MAAA;MAEA,IAAI,CAAC1D,WAAW,GAAGF,OAAO,CAACmU,cAAc,CAAC,IAAI,CAAC1T,WAAW,CAAC;AAC3D,MAAA,IAAI,CAAC,IAAI,CAACP,WAAW,EACrB;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB;AACpC,QAAA;AACF,MAAA;MACA,IAAI,CAACC,QAAQ,GAAGH,OAAO,CAACoU,WAAW,CAAC,IAAI,CAAC1T,QAAQ,CAAC;AAClD,MAAA,IAAI,CAAC,IAAI,CAACP,QAAQ,EAClB;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc;AACjC,QAAA;AACF,MAAA;MAEA,MAAMoQ,OAAO,GAAG,IAAI,CAAC/N,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAACmM,WAAW,CAAC;AACxE,MAAA,IAAI2B,OAAO,EAAEjP,MAAM,EAAE,IAAI,CAACjB,WAAW,GAAGL,OAAO,CAACwQ,cAAc,CAACD,OAAO,CAAC,CAAC,CAAC,CAAC;MAC1E,MAAM8D,OAAO,GAAG,IAAI,CAAC7R,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAAC6R,UAAU,CAAC;MACvE,IAAID,OAAO,EAAE,IAAI,CAAC/T,UAAU,GAAGN,OAAO,CAACwI,aAAa,CAAC6L,OAAO,CAAC;AAC7D,MAAA,IAAI,CAACjU,WAAW,GAAGJ,OAAO,CAACuU,cAAc,EAAE;AAE3C,MAAA,IAAI,IAAI,CAACtE,aAAa,CAACrT,UAAS,CAAC6F,UAAU,CAAC+R,WAAW,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACjF,MAAA,IAAI,CAAC7T,oBAAoB,GAAG,IAAI,CAACwR,qBAAqB,EAAE;AACxD,MAAA,IAAI,CAACvR,wBAAwB,GAAGhE,UAAS,CAAC,cAAc,CAAC,IAAI,CAAC6V,qBAAqB,EAAE,CAAC;AACtF,MAAA,IAAI,CAAC5R,SAAS,GAAG,IAAI,CAACZ,SAAS,CAAC,CAAC,CAAC,EAAEY,SAAS,KAAK,IAAI;AACxD,IAAA;;AAEA;AACF;AACA;AACA;IACE,oBAAoB4T,CAACC,UAAU,EAAEC,UAAU,EAAEzT,MAAM,EAAElB,OAAO,EAC5D;AACE,MAAA,IAAI,CAAC,MAAM,CAAC,EAAE,EAAEA,OAAO,CAAC;MACxB,IAAI,CAAC2U,UAAU,IAAI,CAACzT,MAAM,IAAI,CAAClB,OAAO,EACtC;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,4BAA4B;AAC/C,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAACQ,SAAS,GAAGwT,WAAW,CAAC5S,MAAM,CAACuT,UAAU,CAAC/Q,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;AAChE,MAAA,KAAK,MAAMnC,IAAI,IAAI,IAAI,CAACjB,SAAS,EACjC;AACE,QAAA,MAAMoD,IAAI,GAAG5D,OAAO,CAACiU,WAAW,CAACxS,IAAI,CAAC;QACtC,IAAI,CAACmC,IAAI,EACT;AACE,UAAA,IAAI,CAAC,WAAW,GAAG,cAAc;AACjC,UAAA;AACF,QAAA;AACA,QAAA,IAAI,CAAC3D,SAAS,CAACiU,IAAI,CAACtQ,IAAI,CAAC;AAC3B,MAAA;AACA,MAAA,IAAI,IAAI,CAAC3D,SAAS,CAACqB,MAAM,KAAK,CAAC,EAC/B;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc;AACjC,QAAA;AACF,MAAA;MAEA,IAAI,CAACb,WAAW,GAAGkU,UAAU,CAACC,OAAO,IAAI1T,MAAM,CAACT,WAAW;MAC3D,IAAI,CAACC,QAAQ,GAAGiU,UAAU,CAACE,IAAI,IAAI3T,MAAM,CAACR,QAAQ;MAClD,IAAI,CAACR,WAAW,GAAGF,OAAO,CAACmU,cAAc,CAAC,IAAI,CAAC1T,WAAW,CAAC;MAC3D,IAAI,CAACN,QAAQ,GAAGH,OAAO,CAACoU,WAAW,CAAC,IAAI,CAAC1T,QAAQ,CAAC;MAClD,IAAI,CAAC,IAAI,CAACR,WAAW,IAAI,CAAC,IAAI,CAACC,QAAQ,EACvC;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,yBAAyB;AAC5C,QAAA;AACF,MAAA;MAEA,MAAMgO,YAAY,GAAGjN,MAAM,CAACsB,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAAC2L,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;MACpH,KAAK,IAAIzL,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,CAAC,EAAEA,KAAK,EAAE,EACtC;QACE,MAAMd,KAAK,GAAG8S,UAAU,CAAC,WAAWhS,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAChD,QAAA,IAAId,KAAK,EAAEsM,YAAY,CAACxL,KAAK,CAAC,GAAGd,KAAK;AACxC,MAAA;MACA,IAAIsM,YAAY,CAACvM,IAAI,CAACC,KAAK,IAAIA,KAAK,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAACoL,GAAG,CAAC,UAAU,EAAEkB,YAAY,CAAC;MAE9F,IAAI,CAAC,eAAe,CAACjN,MAAM,EAAEtE,UAAS,CAAC6F,UAAU,CAACmK,iBAAiB,CAAC;MACpE,IAAI,CAAC,eAAe,CAAC1L,MAAM,EAAEtE,UAAS,CAAC6F,UAAU,CAAC+R,WAAW,CAAC;AAC9D,MAAA,IAAIG,UAAU,CAACG,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC7H,GAAG,CAAC,QAAQ,EAAE,CAAC0H,UAAU,CAACG,MAAM,CAAC,CAAC;MACxE,IAAIH,UAAU,CAACpE,OAAO,EACtB;QACE,MAAMwE,SAAS,GAAG7T,MAAM,CAACsB,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAACmM,WAAW,CAAC,IAAI,CAAC+F,UAAU,CAACpE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;AACpHwE,QAAAA,SAAS,CAAC,CAAC,CAAC,GAAGJ,UAAU,CAACpE,OAAO;QACjC,OAAOwE,SAAS,CAACzT,MAAM,GAAG,CAAC,EAAEyT,SAAS,CAACb,IAAI,CAAC,MAAM,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,CAACjH,GAAG,CAAC,SAAS,EAAE8H,SAAS,CAAC5R,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,MAAA;MAEA,MAAMoN,OAAO,GAAG,IAAI,CAAC/N,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAACmM,WAAW,CAAC;AACxE,MAAA,IAAI2B,OAAO,EAAE,IAAI,CAAClQ,WAAW,GAAGL,OAAO,CAACwQ,cAAc,CAACD,OAAO,CAAC,CAAC,CAAC,CAAC;MAClE,MAAM8D,OAAO,GAAG,IAAI,CAAC7R,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAAC6R,UAAU,CAAC;MACvE,IAAID,OAAO,EAAE,IAAI,CAAC/T,UAAU,GAAGN,OAAO,CAACwI,aAAa,CAAC6L,OAAO,CAAC;AAC7D,MAAA,IAAI,CAACjU,WAAW,GAAGJ,OAAO,CAACuU,cAAc,EAAE;AAC3C,MAAA,IAAI,IAAI,CAACtE,aAAa,CAACrT,UAAS,CAAC6F,UAAU,CAAC+R,WAAW,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAEjF,MAAA,IAAI,CAACzU,GAAG,GAAG,CAAA,EAAG4U,UAAU,CAAC/Q,IAAI,CAAA,CAAA,EAAI,IAAI,CAACnD,WAAW,CAAA,CAAA,EAAI,IAAI,CAACC,QAAQ,CAAA,CAAE;AACpE,MAAA,KAAK,MAAMe,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAACwG,IAAI,EAAE,CAAC,CAACC,IAAI,EAAE,EACpD;QACE,IAAI,CAACnI,GAAG,IAAI,CAAA,CAAA,EAAI0B,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC2D,GAAG,CAAC3D,IAAI,CAAC,CAAC2B,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;AAC9D,MAAA;AACA,MAAA,IAAI,CAACzC,oBAAoB,GAAGO,MAAM,CAAC4R,uBAAuB,EAAE;AAC5D,MAAA,IAAI,CAAClS,wBAAwB,GAAGhE,UAAS,CAAC,cAAc,CAACsE,MAAM,CAAC6R,2BAA2B,EAAE,CAAC;AAC9F,MAAA,IAAI,CAAClS,SAAS,GAAG,IAAI,CAACZ,SAAS,CAAC,CAAC,CAAC,EAAEY,SAAS,KAAK,IAAI;AAExD,IAAA;;AAEA;AACF;AACA;AACA;AACE,IAAA,eAAemU,CAAC9T,MAAM,EAAEsS,OAAO,EAC/B;AACE,MAAA,MAAM9R,IAAI,GAAGR,MAAM,CAACsB,iBAAiB,CAACgR,OAAO,CAAC;AAC9C,MAAA,IAAI9R,IAAI,EAAE,IAAI,CAAC,SAAS,CAACuL,GAAG,CAACwG,WAAW,CAACD,OAAO,CAAC,EAAE9R,IAAI,CAAC;AAC1D,IAAA;;AAEA;AACF;AACA;AACA;IACE,gBAAgBuT,GAChB;MACE,MAAMvT,IAAI,GAAG,IAAI,CAACc,iBAAiB,CAAC5F,UAAS,CAAC6F,UAAU,CAAC+R,WAAW,CAAC;AACrE,MAAA,IAAI,CAAC9S,IAAI,EAAEJ,MAAM,EAAE;AACnB,MAAA,MAAMiC,OAAO,GAAG,IAAI,CAACnD,WAAW,EAAE2B,QAAQ,EAAEqD,GAAG,CAAC1D,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AAEhE,MAAA,IAAI,CAACnB,cAAc,GAAG,IAAI,CAACN,SAAS,CAACiD,GAAG,CAACU,IAAI,IAAIsR,oBAAoB,CAACtR,IAAI,EAAEL,OAAO,CAAC,CAAC;AACrF,MAAA,IAAI,CAACtD,SAAS,GAAG,IAAI,CAACM,cAAc;AACtC,IAAA;;AAEA;AACF;AACA;AACA;AACE,IAAA,MAAM4U,CAACpV,GAAG,EAAEC,OAAO,EACnB;MACE,IAAI,CAACD,GAAG,GAAGA,GAAG;MACd,IAAI,CAACC,OAAO,GAAGA,OAAO;MACtB,IAAI,CAACC,SAAS,GAAG,EAAE;MACnB,IAAI,CAACC,WAAW,GAAG,IAAI;MACvB,IAAI,CAACC,QAAQ,GAAG,IAAI;MACpB,IAAI,CAACC,WAAW,GAAG,IAAI;MACvB,IAAI,CAACC,WAAW,GAAG,IAAI;MACvB,IAAI,CAACC,UAAU,GAAG,EAAE;MACpB,IAAI,CAACC,cAAc,GAAG,EAAE;MACxB,IAAI,CAACC,SAAS,GAAG,EAAE;MACnB,IAAI,CAACC,WAAW,GAAG,EAAE;MACrB,IAAI,CAACC,QAAQ,GAAG,EAAE;MAClB,IAAI,CAACC,oBAAoB,GAAG,IAAI;MAChC,IAAI,CAACC,wBAAwB,GAAG,IAAI;MACpC,IAAI,CAACC,SAAS,GAAG,KAAK;AACtB,MAAA,IAAI,CAAC,SAAS,CAACuU,KAAK,EAAE;AACtB,MAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,IAAA;GAED;AAl8CQ3S,EAAAA,UAAU,GAAGlG,MAAM,CAACC,MAAM,CAAC;AAChC6Y,IAAAA,WAAW,EAAE,CAAC;AACdjH,IAAAA,YAAY,EAAE,CAAC;AACfkH,IAAAA,QAAQ,EAAE,CAAC;AACX1I,IAAAA,iBAAiB,EAAE,CAAC;AACpB4H,IAAAA,WAAW,EAAE,CAAC;AACd9R,IAAAA,SAAS,EAAE,CAAC;AACZkM,IAAAA,WAAW,EAAE,CAAC;AACd0F,IAAAA,UAAU,EAAE,CAAC;AACbiB,IAAAA,OAAO,EAAE;AACX,GAAC,CAAC;EAymCK,WAAWC,CAACC,MAAM,EACzB;IACE,OAAOA,MAAM,GAAG7J,KAAK,CAAC8J,IAAI,CAACD,MAAM,CAAC,GAAG,IAAI;AAC3C,EAAA;EAMO,cAAcE,CAACzC,SAAS,EAC/B;AACE,IAAA,IAAI,CAACA,SAAS,EAAE,OAAO,IAAI;IAC3B,OAAO;AACLR,MAAAA,MAAM,EAAEQ,SAAS,CAACR,MAAM,GAAG9G,KAAK,CAAC8J,IAAI,CAACxC,SAAS,CAACR,MAAM,CAAC,GAAG,IAAI;AAC9DE,MAAAA,MAAM,EAAEM,SAAS,CAACN,MAAM,GAAGhH,KAAK,CAAC8J,IAAI,CAACxC,SAAS,CAACN,MAAM,CAAC,GAAG;KAC3D;AACH,EAAA;EAACgD,WAAAA,GAAA;IAAA,KAAA,CAAAlZ,UAAA,GAAAqC,UAAA,EAAA;AAAA,EAAA;AAAA,CAAA,EAAA;AAiUH,SAASmW,oBAAoBA,CAAC7C,MAAM,EAAE9O,OAAO,EAC7C;EACE,MAAMsS,WAAW,GAAGC,cAAc,CAChCzD,MAAM,EAAE0D,cAAc,EAAErD,MAAM,IAAIL,MAAM,EAAEM,oBAAoB,EAC9D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACV,CAAC;EACD,MAAMqD,WAAW,GAAGF,cAAc,CAChCzD,MAAM,EAAE0D,cAAc,EAAEnD,MAAM,IAAIP,MAAM,EAAEQ,oBAAoB,EAC9D,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CACb,CAAC;AACD,EAAA,MAAM7P,MAAM,GAAG;IACbH,UAAU,EAAEqC,MAAM,CAACmN,MAAM,EAAExP,UAAU,IAAI,CAAC,CAAC;IAC3CE,mBAAmB,EAAE3B,MAAM,CAACiR,MAAM,EAAEtP,mBAAmB,IAAI,EAAE,CAAC;AAC9DuP,IAAAA,cAAc,EAAEwD,cAAc,CAACzD,MAAM,EAAEC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpEK,IAAAA,oBAAoB,EAAEkD,WAAW,CAAC1S,KAAK,EAAE;AACzC0P,IAAAA,oBAAoB,EAAEmD,WAAW,CAAC7S,KAAK,EAAE;AACzC4S,IAAAA,cAAc,EAAE;AACdrD,MAAAA,MAAM,EAAEmD,WAAW;AACnBjD,MAAAA,MAAM,EAAEoD;KACT;AACDnV,IAAAA,SAAS,EAAEwR,MAAM,EAAExR,SAAS,KAAK,IAAI;AACrCwI,IAAAA,gBAAgB,EAAE,KAAK;AACvBgK,IAAAA,2BAA2B,EAAEhB,MAAM,EAAEgB,2BAA2B,KAAK,IAAI;AACzEE,IAAAA,UAAU,EAAElB,MAAM,EAAEkB,UAAU,KAAK,KAAK;AACxC3C,IAAAA,IAAI,EAAE,KAAK;AACX9H,IAAAA,aAAa,EAAEgN,cAAc,CAACzD,MAAM,EAAEvJ,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/DjE,IAAAA,UAAU,EAAE,EAAE;AACdE,IAAAA,aAAa,EAAE,EAAE;AACjBO,IAAAA,SAAS,EAAE,EAAE;AACbI,IAAAA,cAAc,EAAE,EAAE;AAClBE,IAAAA,QAAQ,EAAE,EAAE;AACZE,IAAAA,OAAO,EAAE,EAAE;AACXE,IAAAA,UAAU,EAAE,EAAE;AACdvB,IAAAA,aAAa,EAAE,EAAE;AACjBE,IAAAA,aAAa,EAAE,EAAE;AACjByB,IAAAA,SAAS,EAAE,EAAE;AACbiK,IAAAA,cAAc,EAAE;AACdC,MAAAA,OAAO,EAAE,KAAK;AACd1H,MAAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnBqN,MAAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAClBC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtBC,MAAAA,UAAU,EAAE;KACb;AACDnK,IAAAA,gBAAgB,EAAEC,eAAc,CAACC,gBAAgB,CAACC,iBAAiB;AACnEpI,IAAAA,WAAW,EAAE,EAAE;AACfE,IAAAA,UAAU,EAAE,EAAE;AACdE,IAAAA,gBAAgB,EAAE,EAAE;AACpBE,IAAAA,aAAa,EAAE,EAAE;AACjBE,IAAAA,eAAe,EAAE,EAAE;AACnBiH,IAAAA,QAAQ,EAAE;AACR4K,MAAAA,QAAQ,EAAE,KAAK;AACfC,MAAAA,SAAS,EAAE,KAAK;AAChBvK,MAAAA,KAAK,EAAE;KACR;AACDhE,IAAAA,cAAc,EAAE,EAAE;AAClBE,IAAAA,WAAW,EAAE,IAAIlH,GAAG,EAAE;AACtBoF,IAAAA,QAAQ,EAAE,EAAE;AACZI,IAAAA,eAAe,EAAE,EAAE;AACnBE,IAAAA,UAAU,EAAE,EAAE;AACdE,IAAAA,aAAa,EAAE,EAAE;AACjBE,IAAAA,WAAW,EAAE,EAAE;AACfE,IAAAA,sBAAsB,EAAE,EAAE;AAC1BE,IAAAA,yBAAyB,EAAE,EAAE;AAC7B0D,IAAAA,2BAA2B,EAAE,IAAI5J,GAAG,EAAE;AACtC8Q,IAAAA,QAAQ,EAAE;GACX;EAED,IAAIrO,OAAO,EAAE+S,YAAY,EACzB;AACE,IAAA,MAAMC,MAAM,GAAGhT,OAAO,CAACiT,aAAa,GAAGxT,MAAM,CAACmB,gBAAgB,GAAGnB,MAAM,CAACe,WAAW;IACnF,KAAK,MAAM0S,UAAU,IAAIpE,MAAM,EAAEtO,WAAW,IAAI,EAAE,EAClD;MACEwS,MAAM,CAACrC,IAAI,CAACwC,oBAAoB,CAACnT,OAAO,CAAC+S,YAAY,EAAEG,UAAU,CAAC,CAAC;AACrE,IAAA;AACF,EAAA;AACA,EAAA,OAAOzT,MAAM;AACf;AAEA,SAAS0T,oBAAoBA,CAAC7U,KAAK,EAAE4U,UAAU,EAC/C;AACE,EAAA,MAAM5L,QAAQ,GAAG,IAAI/J,GAAG,EAAE;AAC1B,EAAA,IAAIe,KAAK,EAAEgJ,QAAQ,YAAY/J,GAAG,EAClC;IACE,KAAK,MAAM,CAACW,IAAI,EAAEmJ,OAAO,CAAC,IAAI/I,KAAK,CAACgJ,QAAQ,EAC5C;AACEA,MAAAA,QAAQ,CAACoC,GAAG,CAACxL,IAAI,EAAE;AAAEsJ,QAAAA,WAAW,EAAE3J,MAAM,CAACwJ,OAAO,EAAEG,WAAW,IAAI,EAAE;AAAE,OAAC,CAAC;AACzE,IAAA;AACF,EAAA;AAEA,EAAA,MAAM4L,UAAU,GAAG,IAAI7V,GAAG,EAAE;AAC5B,EAAA,IAAIe,KAAK,EAAE8U,UAAU,YAAY7V,GAAG,EACpC;IACE,KAAK,MAAM,CAACW,IAAI,EAAEmV,SAAS,CAAC,IAAI/U,KAAK,CAAC8U,UAAU,EAChD;AACEA,MAAAA,UAAU,CAAC1J,GAAG,CAACxL,IAAI,EAAEqU,cAAc,CAACc,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAA;AACF,EAAA;EAEA,OAAO;IACLjU,KAAK,EAAEuC,MAAM,CAACuR,UAAU,EAAE9T,KAAK,IAAI,CAAC,CAAC;IACrC+F,KAAK,EAAExD,MAAM,CAACuR,UAAU,EAAE/N,KAAK,IAAI,CAAC,CAAC;IACrCuF,gBAAgB,EAAE/I,MAAM,CAACrD,KAAK,EAAEoM,gBAAgB,IAAI,CAAC,CAAC;IACtD4I,MAAM,EAAEzV,MAAM,CAACS,KAAK,EAAEgV,MAAM,IAAI,EAAE,CAAC;IACnC/I,QAAQ,EAAE5I,MAAM,CAACrD,KAAK,EAAEiM,QAAQ,IAAI,CAAC,CAAC;IACtCjD,QAAQ;AACR8L,IAAAA;GACD;AACH;AAEA,SAASb,cAAcA,CAACjU,KAAK,EAAEiV,QAAQ,EACvC;EACE,OAAOjV,KAAK,IAAI,OAAOA,KAAK,CAACP,MAAM,KAAK,QAAQ,GAAGsK,KAAK,CAAC8J,IAAI,CAAC7T,KAAK,CAAC,GAAGiV,QAAQ,CAAC3T,KAAK,EAAE;AACzF;AAEA,SAASsQ,WAAWA,CAACD,OAAO,EAC5B;AACE,EAAA,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE,OAAOA,OAAO;EAC/C,IAAI,CAACtO,MAAM,CAACkM,SAAS,CAACoC,OAAO,CAAC,IAAIA,OAAO,IAAI5W,UAAS,CAAC6F,UAAU,CAAC4S,WAAW,IAAI7B,OAAO,IAAI5W,UAAS,CAAC6F,UAAU,CAAC8S,OAAO,EACxH;AACE,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,OAAOjZ,aAAa,CAACkX,OAAO,CAAC,IAAI,IAAI;AACvC;AAEA,SAASQ,WAAWA,CAACnS,KAAK,EAAEkV,SAAS,EACrC;AACE,EAAA,IAAIlV,KAAK,KAAK,EAAE,EAAE,OAAO,EAAE;EAC3B,MAAMmB,MAAM,GAAG5B,MAAM,CAACS,KAAK,CAAC,CAACyB,KAAK,CAACyT,SAAS,CAAC;AAC7C,EAAA,IAAI/T,MAAM,CAACA,MAAM,CAAC1B,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE0B,MAAM,CAACgU,GAAG,EAAE;AAClD,EAAA,OAAOhU,MAAM;AACf;AAEA,SAASuP,aAAaA,CAAC0E,OAAO,EAAEzE,IAAI,EACpC;EACE,IAAI,CAACA,IAAI,IAAIA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAOyE,OAAO;AACxC,EAAA,IAAI,CAACA,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAOzE,IAAI,CAACrP,KAAK,EAAE;EACnD,MAAM+T,EAAE,GAAG1E,IAAI,CAAC,CAAC,CAAC,GAAGyE,OAAO,CAAC,CAAC,CAAC;EAC/B,MAAME,EAAE,GAAG3E,IAAI,CAAC,CAAC,CAAC,GAAGyE,OAAO,CAAC,CAAC,CAAC;EAC/B,MAAMG,EAAE,GAAG5E,IAAI,CAAC,CAAC,CAAC,GAAGyE,OAAO,CAAC,CAAC,CAAC;EAC/B,MAAMI,QAAQ,GAAG1P,IAAI,CAAC2P,KAAK,CAACJ,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC;AACvC,EAAA,IAAIH,OAAO,CAAC,CAAC,CAAC,IAAII,QAAQ,GAAG7E,IAAI,CAAC,CAAC,CAAC,EAAE,OAAOyE,OAAO;AACpD,EAAA,IAAIzE,IAAI,CAAC,CAAC,CAAC,IAAI6E,QAAQ,GAAGJ,OAAO,CAAC,CAAC,CAAC,EAAE,OAAOzE,IAAI,CAACrP,KAAK,EAAE;AACzD,EAAA,MAAMyP,MAAM,GAAG,CAACyE,QAAQ,GAAGJ,OAAO,CAAC,CAAC,CAAC,GAAGzE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;EACtD,IAAI6E,QAAQ,KAAK,CAAC,EAAE,OAAO,CAACJ,OAAO,CAAC,CAAC,CAAC,EAAEA,OAAO,CAAC,CAAC,CAAC,EAAEA,OAAO,CAAC,CAAC,CAAC,EAAErE,MAAM,CAAC;EACvE,MAAM2E,MAAM,GAAG,CAAC3E,MAAM,GAAGqE,OAAO,CAAC,CAAC,CAAC,IAAII,QAAQ;AAC/C,EAAA,OAAO,CACLJ,OAAO,CAAC,CAAC,CAAC,GAAGC,EAAE,GAAGK,MAAM,EACxBN,OAAO,CAAC,CAAC,CAAC,GAAGE,EAAE,GAAGI,MAAM,EACxBN,OAAO,CAAC,CAAC,CAAC,GAAGG,EAAE,GAAGG,MAAM,EACxB3E,MAAM,CACP;AACH;AAEA,SAASnE,qBAAqBA,CAACzO,OAAO,EAAEwX,YAAY,EAAEzJ,aAAa,EACnE;AACE,EAAA,OAAO/N,OAAO,CAACyX,eAAe,CAACD,YAAY,CAAC,EAAEb,UAAU,EAAEvR,GAAG,CAAC2I,aAAa,CAAC,IAAI,IAAI;AACtF;AAEA,SAASqB,yBAAyBA,CAACpP,OAAO,EAAEoN,MAAM,EAAEoC,aAAa,EAAE1B,QAAQ,EAAEI,IAAI,EACjF;AACE,EAAA,IAAI,CAACsB,aAAa,EAAE,OAAO,IAAI;EAC/B,IAAI3N,KAAK,GAAG,IAAI;AAChB,EAAA,IAAIqM,IAAI,CAACwB,kBAAkB,EAAE,EAC7B;AACE,IAAA,MAAM8H,YAAY,GAAGhI,aAAa,CAACkI,aAAa,CAACtS,GAAG,CAClD,CAAA,EAAG0I,QAAQ,IAAII,IAAI,CAACK,cAAc,EAAE,EACtC,CAAC;AACD,IAAA,IAAIiJ,YAAY,EAAE3V,KAAK,GAAG4M,qBAAqB,CAACzO,OAAO,EAAEwX,YAAY,EAAEtJ,IAAI,CAACQ,YAAY,EAAE,CAAC;AAC7F,EAAA,CAAC,MAED;AACE,IAAA,MAAMiJ,SAAS,GAAGnI,aAAa,CAACoI,SAAS,CAACxS,GAAG,CAAC,CAAA,EAAG0I,QAAQ,IAAII,IAAI,CAAC6B,WAAW,EAAE,EAAE,CAAC;IAClF,IAAI4H,SAAS,KAAKhN,SAAS,EAAE9I,KAAK,GAAGuL,MAAM,CAACuK,SAAS,CAAC,IAAI,IAAI;AAChE,EAAA;EACA,IAAI9V,KAAK,EAAE,OAAOA,KAAK;EACvB,OAAOiM,QAAQ,KAAKmB,eAAc,CAACC,QAAQ,CAACI,YAAY,GACpD,IAAI,GACJF,yBAAyB,CAACpP,OAAO,EAAEoN,MAAM,EAAEoC,aAAa,EAAEP,eAAc,CAACC,QAAQ,CAACI,YAAY,EAAEpB,IAAI,CAAC;AAC3G;;;;"}
|