@carbonenginejs/runtime-resource 0.9.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/NOTICE +3 -2
  2. package/README.md +47 -6
  3. package/dist/CjsMotherLode.js +88 -88
  4. package/dist/CjsMotherLode.js.map +1 -1
  5. package/dist/CjsResMan.js +717 -228
  6. package/dist/CjsResMan.js.map +1 -1
  7. package/dist/CjsResManFetchProvider.js +94 -0
  8. package/dist/CjsResManFetchProvider.js.map +1 -0
  9. package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
  10. package/dist/CjsResManWorkQueue.js.map +1 -0
  11. package/dist/format/CjsBlueReader.js +89 -0
  12. package/dist/format/CjsBlueReader.js.map +1 -1
  13. package/dist/format/CjsFormat.js +42 -16
  14. package/dist/format/CjsFormat.js.map +1 -1
  15. package/dist/format/CjsReader.js +4 -0
  16. package/dist/format/CjsReader.js.map +1 -1
  17. package/dist/format/CjsResourceProbe.js +2 -0
  18. package/dist/format/CjsResourceProbe.js.map +1 -1
  19. package/dist/format/effect/effectPermutationGraph.js +257 -0
  20. package/dist/format/effect/effectPermutationGraph.js.map +1 -0
  21. package/dist/format/effect/effectReflectionPackage.js +636 -0
  22. package/dist/format/effect/effectReflectionPackage.js.map +1 -0
  23. package/dist/format/effect/sha256.js +114 -0
  24. package/dist/format/effect/sha256.js.map +1 -0
  25. package/dist/format/payloadContract.js +20 -0
  26. package/dist/format/payloadContract.js.map +1 -1
  27. package/dist/formats/black/CjsBlackFormat.js +15 -1
  28. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  29. package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
  30. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  31. package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
  32. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  33. package/dist/formats/black/core/CjsBlackReader.js +125 -0
  34. package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
  35. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
  36. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  37. package/dist/formats/black/core/helpers.js +17 -0
  38. package/dist/formats/black/core/helpers.js.map +1 -1
  39. package/dist/formats/bnk/CjsBnkFormat.js +8 -0
  40. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  41. package/dist/formats/bnk/core/helpers.js +20 -0
  42. package/dist/formats/bnk/core/helpers.js.map +1 -1
  43. package/dist/formats/bnk/core/musicNodes.js +40 -3
  44. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  45. package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
  46. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
  47. package/dist/formats/cmf/core/binary.js +71 -0
  48. package/dist/formats/cmf/core/binary.js.map +1 -1
  49. package/dist/formats/cmf/core/buffers.js +4 -0
  50. package/dist/formats/cmf/core/buffers.js.map +1 -1
  51. package/dist/formats/cmf/core/helpers.js +31 -0
  52. package/dist/formats/cmf/core/helpers.js.map +1 -1
  53. package/dist/formats/cmf/core/schema.js +10 -0
  54. package/dist/formats/cmf/core/schema.js.map +1 -1
  55. package/dist/formats/cmf/core/shared.js +9 -0
  56. package/dist/formats/cmf/core/shared.js.map +1 -1
  57. package/dist/formats/cmf/core/writer.js +54 -0
  58. package/dist/formats/cmf/core/writer.js.map +1 -1
  59. package/dist/formats/dds/core/bc6h.js +10 -0
  60. package/dist/formats/dds/core/bc6h.js.map +1 -1
  61. package/dist/formats/dds/core/bc7.js +16 -0
  62. package/dist/formats/dds/core/bc7.js.map +1 -1
  63. package/dist/formats/dds/core/helpers.js +47 -0
  64. package/dist/formats/dds/core/helpers.js.map +1 -1
  65. package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
  66. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
  67. package/dist/formats/dxbc/core/DxbcReader.js +266 -0
  68. package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
  69. package/dist/formats/dxbc/core/container.js +169 -0
  70. package/dist/formats/dxbc/core/container.js.map +1 -0
  71. package/dist/formats/dxbc/core/decoder.js +789 -0
  72. package/dist/formats/dxbc/core/decoder.js.map +1 -0
  73. package/dist/formats/dxbc/core/errors.js +19 -0
  74. package/dist/formats/dxbc/core/errors.js.map +1 -0
  75. package/dist/formats/dxbc/core/helpers.js +220 -0
  76. package/dist/formats/dxbc/core/helpers.js.map +1 -0
  77. package/dist/formats/dxbc/core/opcodes.js +45 -0
  78. package/dist/formats/dxbc/core/opcodes.js.map +1 -0
  79. package/dist/formats/dxbc/core/program.js +91 -0
  80. package/dist/formats/dxbc/core/program.js.map +1 -0
  81. package/dist/formats/dxbc/core/signature.js +172 -0
  82. package/dist/formats/dxbc/core/signature.js.map +1 -0
  83. package/dist/formats/dxbc/index.js +2 -0
  84. package/dist/formats/dxbc/index.js.map +1 -0
  85. package/dist/formats/fbx/core/helpers.js +21 -0
  86. package/dist/formats/fbx/core/helpers.js.map +1 -1
  87. package/dist/formats/flac/CjsFlacFormat.js +49 -0
  88. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  89. package/dist/formats/flac/core/helpers.js +20 -0
  90. package/dist/formats/flac/core/helpers.js.map +1 -1
  91. package/dist/formats/gif/CjsGifFormat.js +49 -0
  92. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  93. package/dist/formats/gif/core/helpers.js +20 -0
  94. package/dist/formats/gif/core/helpers.js.map +1 -1
  95. package/dist/formats/gltf/core/helpers.js +15 -0
  96. package/dist/formats/gltf/core/helpers.js.map +1 -1
  97. package/dist/formats/gltf/core/parser.js +13 -0
  98. package/dist/formats/gltf/core/parser.js.map +1 -1
  99. package/dist/formats/gltf/core/targets.js +10 -0
  100. package/dist/formats/gltf/core/targets.js.map +1 -1
  101. package/dist/formats/gr2/core/bitknit2.js +2 -0
  102. package/dist/formats/gr2/core/bitknit2.js.map +1 -1
  103. package/dist/formats/gr2/core/helpers.js +20 -0
  104. package/dist/formats/gr2/core/helpers.js.map +1 -1
  105. package/dist/formats/gr2/core/targets.js +10 -0
  106. package/dist/formats/gr2/core/targets.js.map +1 -1
  107. package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
  108. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
  109. package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
  110. package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
  111. package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
  112. package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
  113. package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
  114. package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
  115. package/dist/formats/hlsl/core/HlslReader.js +266 -0
  116. package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
  117. package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
  118. package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
  119. package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
  120. package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
  121. package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
  122. package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
  123. package/dist/formats/hlsl/core/analysis.js +51 -0
  124. package/dist/formats/hlsl/core/analysis.js.map +1 -0
  125. package/dist/formats/hlsl/core/helpers.js +270 -0
  126. package/dist/formats/hlsl/core/helpers.js.map +1 -0
  127. package/dist/formats/hlsl/core/json.js +284 -0
  128. package/dist/formats/hlsl/core/json.js.map +1 -0
  129. package/dist/formats/hlsl/core/metadata.js +327 -0
  130. package/dist/formats/hlsl/core/metadata.js.map +1 -0
  131. package/dist/formats/hlsl/core/portableReflection.js +848 -0
  132. package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
  133. package/dist/formats/hlsl/core/render-states.js +280 -0
  134. package/dist/formats/hlsl/core/render-states.js.map +1 -0
  135. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
  136. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
  137. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
  138. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
  139. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
  140. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
  141. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
  142. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
  143. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
  144. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
  145. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
  146. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
  147. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
  148. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
  149. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
  150. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
  151. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
  152. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
  153. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
  154. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
  155. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
  156. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
  157. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
  158. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
  159. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
  160. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
  161. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
  162. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
  163. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
  164. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
  165. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
  166. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
  167. package/dist/formats/hlsl/index.js +2 -0
  168. package/dist/formats/hlsl/index.js.map +1 -0
  169. package/dist/formats/hlsl/portable.js +2 -0
  170. package/dist/formats/hlsl/portable.js.map +1 -0
  171. package/dist/formats/index.js +4 -0
  172. package/dist/formats/index.js.map +1 -1
  173. package/dist/formats/jpeg/core/helpers.js +52 -0
  174. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  175. package/dist/formats/jpeg/core/jpeg.js +93 -0
  176. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  177. package/dist/formats/mp3/core/helpers.js +37 -0
  178. package/dist/formats/mp3/core/helpers.js.map +1 -1
  179. package/dist/formats/mp4/core/helpers.js +35 -0
  180. package/dist/formats/mp4/core/helpers.js.map +1 -1
  181. package/dist/formats/ogg/CjsOggFormat.js +49 -0
  182. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  183. package/dist/formats/ogg/core/helpers.js +23 -0
  184. package/dist/formats/ogg/core/helpers.js.map +1 -1
  185. package/dist/formats/ogg/core/vorbis.js +13 -0
  186. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  187. package/dist/formats/png/core/helpers.js +52 -0
  188. package/dist/formats/png/core/helpers.js.map +1 -1
  189. package/dist/formats/red/CjsRedFormat.js +2 -0
  190. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  191. package/dist/formats/red/core/CjsRedReader.js +52 -0
  192. package/dist/formats/red/core/CjsRedReader.js.map +1 -1
  193. package/dist/formats/red/core/helpers.js +19 -0
  194. package/dist/formats/red/core/helpers.js.map +1 -1
  195. package/dist/formats/stl/core/stl.js +8 -0
  196. package/dist/formats/stl/core/stl.js.map +1 -1
  197. package/dist/formats/stl/core/targets.js +10 -0
  198. package/dist/formats/stl/core/targets.js.map +1 -1
  199. package/dist/formats/tga/core/helpers.js +47 -0
  200. package/dist/formats/tga/core/helpers.js.map +1 -1
  201. package/dist/formats/wav/core/helpers.js +37 -0
  202. package/dist/formats/wav/core/helpers.js.map +1 -1
  203. package/dist/formats/webgl/CjsWebglFormat.js +221 -0
  204. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
  205. package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
  206. package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
  207. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
  208. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
  209. package/dist/formats/webgl/core/cewg/binary.js +101 -0
  210. package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
  211. package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
  212. package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
  213. package/dist/formats/webgl/core/effectPackage.js +789 -0
  214. package/dist/formats/webgl/core/effectPackage.js.map +1 -0
  215. package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
  216. package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
  217. package/dist/formats/webgl/core/errors.js +27 -0
  218. package/dist/formats/webgl/core/errors.js.map +1 -0
  219. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
  220. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
  221. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
  222. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
  223. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
  224. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
  225. package/dist/formats/webgl/core/helpers.js +306 -0
  226. package/dist/formats/webgl/core/helpers.js.map +1 -0
  227. package/dist/formats/webgl/index.js +2 -0
  228. package/dist/formats/webgl/index.js.map +1 -0
  229. package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
  230. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
  231. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
  232. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
  233. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
  234. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
  235. package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
  236. package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
  237. package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
  238. package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
  239. package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
  240. package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
  241. package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
  242. package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
  243. package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
  244. package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
  245. package/dist/formats/webgpu/core/errors.js +20 -0
  246. package/dist/formats/webgpu/core/errors.js.map +1 -0
  247. package/dist/formats/webgpu/core/helpers.js +448 -0
  248. package/dist/formats/webgpu/core/helpers.js.map +1 -0
  249. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
  250. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
  251. package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
  252. package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
  253. package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
  254. package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
  255. package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
  256. package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
  257. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
  258. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
  259. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
  260. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
  261. package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
  262. package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
  263. package/dist/formats/webgpu/core/packageEffect.js +300 -0
  264. package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
  265. package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
  266. package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
  267. package/dist/formats/webgpu/core/packageMetadata.js +8 -0
  268. package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
  269. package/dist/formats/webgpu/core/schema.js +4 -0
  270. package/dist/formats/webgpu/core/schema.js.map +1 -0
  271. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
  272. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
  273. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
  274. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
  275. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
  276. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
  277. package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
  278. package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
  279. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
  280. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
  281. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
  282. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
  283. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
  284. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
  285. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
  286. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
  287. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
  288. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
  289. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
  290. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
  291. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
  292. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
  293. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
  294. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
  295. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
  296. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
  297. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
  298. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
  299. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
  300. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
  301. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
  302. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
  303. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
  304. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
  305. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
  306. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
  307. package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
  308. package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
  309. package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
  310. package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
  311. package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
  312. package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
  313. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
  314. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
  315. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
  316. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
  317. package/dist/formats/webgpu/index.js +2 -0
  318. package/dist/formats/webgpu/index.js.map +1 -0
  319. package/dist/formats/webm/core/helpers.js +35 -0
  320. package/dist/formats/webm/core/helpers.js.map +1 -1
  321. package/dist/formats/webp/CjsWebpFormat.js +49 -0
  322. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  323. package/dist/formats/webp/core/helpers.js +23 -0
  324. package/dist/formats/webp/core/helpers.js.map +1 -1
  325. package/dist/formats/wem/CjsWemFormat.js +8 -0
  326. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  327. package/dist/formats/wem/core/bitStream.js +2 -0
  328. package/dist/formats/wem/core/bitStream.js.map +1 -1
  329. package/dist/formats/wem/core/helpers.js +20 -0
  330. package/dist/formats/wem/core/helpers.js.map +1 -1
  331. package/dist/formats/yaml/CjsYamlFormat.js +45 -0
  332. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  333. package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
  334. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  335. package/dist/formats/yaml/core/helpers.js +10 -0
  336. package/dist/formats/yaml/core/helpers.js.map +1 -1
  337. package/dist/index.js +56 -43
  338. package/dist/index.js.map +1 -1
  339. package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
  340. package/dist/resource/CjsResource.js.map +1 -0
  341. package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
  342. package/dist/resource/Tr2LightProfileRes.js.map +1 -0
  343. package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
  344. package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
  345. package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
  346. package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
  347. package/dist/resource/audio/CjsAudioRes.js +213 -0
  348. package/dist/resource/audio/CjsAudioRes.js.map +1 -0
  349. package/dist/resource/audio/index.js +4 -0
  350. package/dist/resource/audio/index.js.map +1 -0
  351. package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
  352. package/dist/resource/geometry/MeshDecalData.js.map +1 -0
  353. package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
  354. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
  355. package/dist/resource/geometry/TriGeometryRes.js +656 -0
  356. package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
  357. package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
  358. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
  359. package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
  360. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
  361. package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
  362. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
  363. package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
  364. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
  365. package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
  366. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
  367. package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
  368. package/dist/resource/geometry/TriJointBinding.js.map +1 -0
  369. package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
  370. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
  371. package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
  372. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
  373. package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
  374. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
  375. package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
  376. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
  377. package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
  378. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
  379. package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
  380. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
  381. package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
  382. package/dist/resource/geometry/granny/enums.js.map +1 -0
  383. package/dist/resource/geometry/granny/index.js +6 -0
  384. package/dist/resource/geometry/granny/index.js.map +1 -0
  385. package/dist/resource/geometry/index.js +17 -0
  386. package/dist/resource/geometry/index.js.map +1 -0
  387. package/dist/resource/index.js +52 -0
  388. package/dist/resource/index.js.map +1 -0
  389. package/dist/resource/resourceBoundary.js +64 -0
  390. package/dist/resource/resourceBoundary.js.map +1 -0
  391. package/dist/resource/shader/Tr2EffectRes.js +429 -0
  392. package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
  393. package/dist/resource/shader/Tr2MaterialArea.js +34 -0
  394. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
  395. package/dist/resource/shader/Tr2MaterialMesh.js +30 -0
  396. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
  397. package/dist/resource/shader/Tr2MaterialRes.js +35 -0
  398. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
  399. package/dist/resource/shader/Tr2Shader.js +256 -0
  400. package/dist/resource/shader/Tr2Shader.js.map +1 -0
  401. package/dist/resource/shader/Tr2ShaderPermutation.js +47 -0
  402. package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
  403. package/dist/resource/shader/index.js +17 -0
  404. package/dist/resource/shader/index.js.map +1 -0
  405. package/dist/resource/shader/portable.js +33 -0
  406. package/dist/resource/shader/portable.js.map +1 -0
  407. package/dist/resource/shader/reflection/Tr2EffectConstant.js +135 -0
  408. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
  409. package/dist/resource/shader/reflection/Tr2EffectDefine.js +28 -0
  410. package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
  411. package/dist/resource/shader/reflection/Tr2EffectDescription.js +107 -0
  412. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
  413. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +145 -0
  414. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
  415. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +103 -0
  416. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
  417. package/dist/resource/shader/reflection/Tr2EffectResource.js +84 -0
  418. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
  419. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +239 -0
  420. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
  421. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +66 -0
  422. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
  423. package/dist/resource/shader/reflection/Tr2Pass.js +109 -0
  424. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
  425. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +75 -0
  426. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
  427. package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
  428. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
  429. package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
  430. package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
  431. package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
  432. package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
  433. package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
  434. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
  435. package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
  436. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
  437. package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
  438. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
  439. package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
  440. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
  441. package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
  442. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
  443. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
  444. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
  445. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
  446. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
  447. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
  448. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
  449. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
  450. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
  451. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
  452. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
  453. package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
  454. package/dist/resource/texture/TriTextureRes.js.map +1 -0
  455. package/dist/resource/texture/index.js +15 -0
  456. package/dist/resource/texture/index.js.map +1 -0
  457. package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
  458. package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
  459. package/dist/worker/CjsResManMainThreadLoader.js +87 -0
  460. package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
  461. package/dist/worker/CjsResManWorker.js +217 -0
  462. package/dist/worker/CjsResManWorker.js.map +1 -0
  463. package/dist/worker/CjsResManWorkerLoader.js +434 -0
  464. package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
  465. package/dist/worker/protocol.js +12 -0
  466. package/dist/worker/protocol.js.map +1 -0
  467. package/docs/README.md +16 -3
  468. package/docs/architecture.md +39 -16
  469. package/docs/concepts/resource-lifecycle.md +2 -1
  470. package/docs/formats/README.md +8 -0
  471. package/docs/formats/provenance.md +11 -3
  472. package/docs/reference/classes/README.md +6 -4
  473. package/docs/reference/classes/audio.md +30 -0
  474. package/docs/reference/classes/core.md +31 -11
  475. package/docs/reference/classes/formats.md +440 -0
  476. package/docs/reference/classes/resources.md +151 -41
  477. package/docs/reference/classes/texture.md +7 -7
  478. package/docs/reference/motherlode-cache.md +17 -0
  479. package/docs/reference/queues.md +9 -1
  480. package/docs/reference/workers.md +135 -0
  481. package/docs/roadmap.md +27 -1
  482. package/format-notices/dxbc/LICENSE +21 -0
  483. package/format-notices/dxbc/NOTICE +20 -0
  484. package/format-notices/hlsl/LICENSE +21 -0
  485. package/format-notices/hlsl/NOTICE +25 -0
  486. package/format-notices/webgl/LICENSE +21 -0
  487. package/format-notices/webgl/NOTICE +35 -0
  488. package/format-notices/webgpu/LICENSE +21 -0
  489. package/format-notices/webgpu/NOTICE +31 -0
  490. package/package.json +13 -1
  491. package/dist/CjsResManQueue.js.map +0 -1
  492. package/dist/CjsResource.js.map +0 -1
  493. package/dist/CjsResourceSource.js +0 -68
  494. package/dist/CjsResourceSource.js.map +0 -1
  495. package/dist/resourcePath.js +0 -18
  496. package/dist/resourcePath.js.map +0 -1
  497. package/dist/resourceStates.js +0 -9
  498. package/dist/resourceStates.js.map +0 -1
  499. package/dist/resources/AudioGeometryResData.js.map +0 -1
  500. package/dist/resources/GStateBindingCallbackData.js.map +0 -1
  501. package/dist/resources/MeshDecalData.js.map +0 -1
  502. package/dist/resources/MeshDecalLodData.js.map +0 -1
  503. package/dist/resources/Tr2EffectRes.js +0 -71
  504. package/dist/resources/Tr2EffectRes.js.map +0 -1
  505. package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
  506. package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
  507. package/dist/resources/Tr2ImageRes.js.map +0 -1
  508. package/dist/resources/Tr2LightProfileRes.js.map +0 -1
  509. package/dist/resources/Tr2MaterialArea.js +0 -34
  510. package/dist/resources/Tr2MaterialArea.js.map +0 -1
  511. package/dist/resources/Tr2MaterialMesh.js +0 -31
  512. package/dist/resources/Tr2MaterialMesh.js.map +0 -1
  513. package/dist/resources/Tr2MaterialRes.js +0 -34
  514. package/dist/resources/Tr2MaterialRes.js.map +0 -1
  515. package/dist/resources/Tr2ShaderPermutation.js +0 -43
  516. package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
  517. package/dist/resources/Tr2TextureLodManager.js.map +0 -1
  518. package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
  519. package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
  520. package/dist/resources/Tr2TexturePipeline.js.map +0 -1
  521. package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
  522. package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
  523. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
  524. package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
  525. package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
  526. package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
  527. package/dist/resources/TriGeometryRes.js +0 -239
  528. package/dist/resources/TriGeometryRes.js.map +0 -1
  529. package/dist/resources/TriGeometryResAreaData.js.map +0 -1
  530. package/dist/resources/TriGeometryResJointData.js.map +0 -1
  531. package/dist/resources/TriGeometryResLodData.js.map +0 -1
  532. package/dist/resources/TriGeometryResMeshData.js.map +0 -1
  533. package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
  534. package/dist/resources/TriGrannyRes.js.map +0 -1
  535. package/dist/resources/TriJointBinding.js.map +0 -1
  536. package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
  537. package/dist/resources/TriRtGeometryConstants.js.map +0 -1
  538. package/dist/resources/TriTextureRes.js.map +0 -1
  539. package/dist/resources/enums.js.map +0 -1
  540. package/dist/resources/resourceBoundary.js +0 -47
  541. package/dist/resources/resourceBoundary.js.map +0 -1
  542. package/dist/resources/texturePipelineBehavior.js.map +0 -1
  543. package/dist/texture/CjsTextureArrayRes.js.map +0 -1
  544. package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowerFragmentProgram.js","sources":["../../../../../../src/formats/webgpu/core/wgsl/lowerFragmentProgram.js"],"sourcesContent":["import { fixedSourceLanes } from \"../ir/sourceLanes.js\";\nimport {\n validateIndexableTempOperand,\n validateIndexableTempRead,\n validateIndexableTempWrite\n} from \"../ir/indexableTemps.js\";\nimport { hoistEscapingValues } from \"./hoistEscapingValues.js\";\nimport { lowerBindingLayout } from \"./lowerBindingLayout.js\";\nimport { normalizeResourceTransformPlan } from \"./buildResourceTransformPlan.js\";\nimport { requireRefactoringAllowed, validatePreciseInstruction } from \"./precisionControls.js\";\nimport { buildSelectionPlans, cloneWritten, terminatesAllPaths } from \"./selectionPlans.js\";\nimport { computeVaryingValues, conditionIsUniform } from \"./uniformity.js\";\nimport { validateFixedHandleBinding, validateFixedHandleOperand } from \"./validateHandleOperand.js\";\n\nconst COMPONENTS = [ \"x\", \"y\", \"z\", \"w\" ];\nconst SUPPORTED_OPCODES = new Set([\n \"add\", \"and\", \"atomic_iadd\", \"deriv_rtx\", \"deriv_rty\", \"deriv_rtx_coarse\",\n \"deriv_rty_coarse\", \"deriv_rtx_fine\", \"deriv_rty_fine\", \"discard\", \"div\",\n \"dp2\", \"dp3\", \"dp4\", \"eq\", \"exp\", \"f16tof32\", \"f32tof16\", \"frc\", \"ftoi\",\n \"ftou\", \"ge\", \"iadd\", \"ieq\", \"ige\", \"ilt\", \"imad\", \"imax\", \"imin\", \"imul\",\n \"ine\", \"ineg\", \"ishl\", \"ishr\", \"if\", \"itof\", \"ld\", \"ld_structured\", \"log\", \"lt\",\n \"mad\", \"max\", \"min\", \"mov\", \"movc\", \"mul\", \"ne\", \"or\", \"rcp\", \"resinfo\",\n \"round_ne\", \"round_ni\", \"round_pi\", \"round_z\", \"rsq\", \"sample\", \"sample_b\", \"sample_d\",\n \"sample_l\", \"sincos\", \"sqrt\", \"udiv\", \"uge\", \"ult\", \"umax\", \"umin\", \"ushr\",\n \"utof\", \"xor\", \"endif\", \"ret\"\n]);\nconst METADATA_OPCODE_EXTENSIONS = new Set([ \"resource_dimension\", \"resource_return_type\" ]);\nconst SAMPLE_OFFSET_OPCODES = new Set([ \"sample\", \"sample_b\", \"sample_d\", \"sample_l\" ]);\nconst NUMERIC_CONVERSIONS = Object.freeze({\n itof: [ \"int32\", \"float32\" ],\n utof: [ \"uint32\", \"float32\" ],\n ftoi: [ \"float32\", \"int32\" ],\n ftou: [ \"float32\", \"uint32\" ]\n});\n\nconst INPUT_BUILTINS = Object.freeze({\n SV_POSITION: { name: \"position\" },\n SV_ISFRONTFACE: { name: \"front_facing\", scalarType: \"bool\" }\n});\nconst DERIVATIVES = Object.freeze({\n deriv_rtx: \"dpdx\", deriv_rty: \"dpdy\",\n deriv_rtx_coarse: \"dpdxCoarse\", deriv_rty_coarse: \"dpdyCoarse\",\n deriv_rtx_fine: \"dpdxFine\", deriv_rty_fine: \"dpdyFine\"\n});\n// Operations that compute screen-space derivatives (the dpdx*/dpdy* family) or\n// derive them internally (implicit-LOD textureSample / textureSampleBias). WGSL\n// forbids these inside non-uniform control flow; see uniformity.js.\nconst REQUIRES_UNIFORM_CONTROL_FLOW = new Set([\n ...Object.keys(DERIVATIVES), \"sample\", \"sample_b\"\n]);\n\nfunction componentsFromMask(mask)\n{\n return COMPONENTS.filter((_, index) => (mask & (1 << index)) !== 0);\n}\n\nfunction sampleOffsetArgument(instruction, viewDimension)\n{\n const controls = instruction.extensions?.filter((extension) => extension.typeName === \"sample_controls\") || [];\n if (!controls.length) return \"\";\n if (controls.length !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has duplicate sample_controls extensions`);\n }\n if (viewDimension !== \"2d\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} immediate sample offsets support only 2d textures`);\n }\n const offsets = controls[0].sampleOffsets;\n if (![ offsets?.u, offsets?.v, offsets?.w ].every((value) =>\n Number.isInteger(value) && value >= -8 && value <= 7))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has invalid immediate sample offsets`);\n }\n // D3D ignores the w offset for Texture2D. WGSL takes the same signed,\n // texel-space u/v constants as the final sampling argument.\n return `, vec2<i32>(${offsets.u}, ${offsets.v})`;\n}\n\nfunction scalarTypeName(type)\n{\n return ({ float32: \"f32\", int32: \"i32\", uint32: \"u32\", bool: \"bool\", bitpattern32: \"u32\" })[type] || null;\n}\n\nfunction isDeadUntypedWrite(program, write, readValueIds, localSsaDestination)\n{\n if (!localSsaDestination || readValueIds.has(write.valueId)) return false;\n const value = program.values.find((entry) => entry.id === write.valueId);\n return Array.from(write.mask).some((component) => !scalarTypeName(value?.componentTypes?.[component]));\n}\n\nfunction mixedImmediateTypes(program, write)\n{\n const value = program.values.find((entry) => entry.id === write.valueId);\n if (!value || write.mask.length < 2) return null;\n const types = Array.from(write.mask).map((component) => value.componentTypes?.[component]);\n if (types.some((type) => !scalarTypeName(type)) || new Set(types).size === 1) return null;\n return types;\n}\n\n\nfunction valueType(program, write)\n{\n const value = program.values.find((entry) => entry.id === write.valueId);\n const types = Array.from(write.mask).map((component) => value?.componentTypes?.[component]);\n if (!types.length || types.some((type) => !scalarTypeName(type)) || new Set(types).size !== 1)\n {\n throw new Error(`WGSL fragment value ${write.valueId} has an unresolved or mixed result type that is not supported`);\n }\n const scalarType = types[0];\n return {\n scalarType,\n wgslType: types.length === 1 ? scalarTypeName(scalarType) : `vec${types.length}<${scalarTypeName(scalarType)}>`\n };\n}\n\nfunction fieldType(scalarType, count)\n{\n const scalar = scalarTypeName(scalarType);\n if (!scalar) throw new Error(`WGSL fragment interface cannot use ${scalarType}`);\n return count === 1 ? scalar : `vec${count}<${scalar}>`;\n}\n\nfunction packedComponent(mask, component)\n{\n const index = Array.from(mask).indexOf(component);\n if (index < 0) throw new Error(`WGSL value mask ${mask} does not contain component ${component}`);\n return COMPONENTS[index];\n}\n\nfunction interfaceField(rows, direction)\n{\n const registerIndex = rows[0].registerIndex;\n const mask = rows.reduce((accumulator, signature) => accumulator | signature.mask, 0);\n const components = componentsFromMask(mask);\n if (!components.length || !components.every((component, index) => component === COMPONENTS[index]))\n {\n throw new Error(`WGSL fragment ${direction} register ${registerIndex} requires a prefix signature mask`);\n }\n const semantic = String(rows[0].semanticName || \"\").toUpperCase();\n if (direction === \"output\" && semantic !== \"SV_TARGET\")\n {\n throw new Error(`WGSL fragment output semantic ${semantic} is not supported`);\n }\n const builtin = direction === \"input\" ? INPUT_BUILTINS[semantic] || null : null;\n if (direction === \"input\" && rows.some((signature) => String(signature.semanticName || \"\").toUpperCase().startsWith(\"SV_\")) && !builtin)\n {\n throw new Error(`WGSL fragment live system input ${semantic} is not supported`);\n }\n const componentTypeName = rows[0].componentTypeName;\n if (rows.some((signature) => signature.componentTypeName !== componentTypeName))\n {\n throw new Error(`WGSL fragment ${direction} register ${registerIndex} packs mixed component types`);\n }\n const scalarType = builtin?.scalarType || componentTypeName;\n return {\n kind: \"interface-field\",\n id: `${direction}:r${registerIndex}`,\n direction,\n registerIndex,\n semanticName: rows[0].semanticName,\n semanticIndex: rows[0].semanticIndex,\n components,\n scalarType,\n type: builtin?.scalarType ? builtin.scalarType : fieldType(componentTypeName, components.length),\n name: builtin?.name || `${direction}${registerIndex}`,\n attribute: builtin\n ? { kind: \"builtin\", name: builtin.name }\n : { kind: \"location\", index: direction === \"output\" ? rows[0].semanticIndex : registerIndex }\n };\n}\n\nfunction groupSignaturesByRegister(signatures)\n{\n const groups = new Map();\n for (const signature of signatures)\n {\n if (!groups.has(signature.registerIndex)) groups.set(signature.registerIndex, []);\n groups.get(signature.registerIndex).push(signature);\n }\n return Array.from(groups.values());\n}\n\nfunction liveInputRegisters(program)\n{\n const values = new Map(program.values.map((value) => [ value.id, value ]));\n const registers = new Set();\n for (const instruction of program.instructions)\n {\n for (const ref of instruction.dataflow.reads.flatMap((read) => read.refs))\n {\n const value = values.get(ref.valueId);\n if (value?.origin === \"undefined-register\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} reads undefined ${value.register}.${ref.component}`);\n }\n const match = value?.origin === \"program-input\" && /^input\\[(\\d+)\\]$/.exec(value.register);\n if (match) registers.add(Number(match[1]));\n }\n }\n return registers;\n}\n\nfunction validateInterpolation(program, input)\n{\n if (input.attribute.kind === \"builtin\") return;\n // A merged location field may pack several signature rows onto one register\n // (component-packed varyings). WGSL interpolation is per-location, not per-\n // component, so EVERY dcl_input_ps covering this register must agree on one\n // supported mode — checking only the first row would let a differing lane\n // render with the wrong interpolation, which the browser gate cannot detect.\n // DXBC \"linear\" is perspective-correct (the WGSL default); DXBC\n // \"linear_noperspective\" maps exactly to `@interpolate(linear)` (center\n // sampling on both sides). Everything else fails closed.\n const declarations = program.declarations.filter((entry) =>\n entry.opcodeName === \"dcl_input_ps\" && entry.data?.registerIndex === input.registerIndex);\n const modes = new Set(declarations.map((entry) => entry.data?.interpolationModeName).filter(Boolean));\n if (modes.size > 1)\n {\n throw new Error(`WGSL fragment input r${input.registerIndex} packs mixed interpolation modes`);\n }\n const mode = modes.values().next().value;\n if (!mode || mode === \"linear\") return;\n if (mode === \"linear_noperspective\")\n {\n input.interpolation = \"linear\";\n return;\n }\n throw new Error(`WGSL fragment input r${input.registerIndex} has unsupported interpolation ${mode}`);\n}\n\nfunction sourceRead(instruction, operandIndex)\n{\n return instruction.dataflow.reads.find((entry) =>\n entry.kind !== \"index-read\" && entry.operandIndex === operandIndex) || null;\n}\n\nfunction vectorCode(parts, scalarType)\n{\n if (parts.length === 1) return parts[0];\n return `vec${parts.length}<${scalarTypeName(scalarType)}>(${parts.join(\", \")})`;\n}\n\nfunction reinterpretCode(code, fromType, toType, count, context)\n{\n const from = scalarTypeName(fromType);\n const to = scalarTypeName(toType);\n if (!from || !to) throw new Error(`WGSL fragment cannot resolve ${context} type ${fromType} to ${toType}`);\n if (from === to) return code;\n if (![ \"f32\", \"i32\", \"u32\" ].includes(from) || ![ \"f32\", \"i32\", \"u32\" ].includes(to))\n {\n throw new Error(`WGSL fragment cannot reinterpret ${context} from ${fromType} to ${toType}`);\n }\n return `bitcast<${fieldType(toType, count)}>(${code})`;\n}\n\nfunction valueReference(program, ref, inputs)\n{\n const value = program.values.find((entry) => entry.id === ref.valueId);\n if (!value) throw new Error(`WGSL fragment references missing value ${ref.valueId}`);\n if (value.origin === \"undefined-register\") throw new Error(`WGSL fragment reads undefined ${value.register}.${ref.component}`);\n if (value.origin === \"program-input\")\n {\n const registerIndex = Number(/^input\\[(\\d+)\\]$/.exec(value.register)?.[1]);\n const field = inputs.find((entry) => entry.registerIndex === registerIndex);\n if (!field) throw new Error(`WGSL fragment has no live input field for ${value.register}`);\n const packed = packedComponent(field.components.join(\"\"), ref.component);\n const code = field.components.length === 1 ? `input.${field.name}` : `input.${field.name}.${packed}`;\n const target = value.componentTypes?.[ref.component];\n if (field.scalarType === \"bool\")\n {\n if (target === \"bool\") return code;\n if (target === \"uint32\" || target === \"bitpattern32\") return `select(0u, 0xffffffffu, ${code})`;\n if (target === \"int32\") return `select(0i, -1i, ${code})`;\n throw new Error(`WGSL fragment cannot consume boolean ${value.register}.${ref.component} as ${target}`);\n }\n return reinterpretCode(code, field.scalarType, target, 1, `${value.register}.${ref.component}`);\n }\n if (value.origin === \"instruction-write\" && value.writeMask.length > 1)\n {\n const componentTypes = Array.from(value.writeMask).map((component) => value.componentTypes?.[component]);\n if (new Set(componentTypes).size > 1) return `${value.id}_${ref.component}`;\n }\n const packed = packedComponent(value.writeMask, ref.component);\n return value.writeMask.length === 1 ? value.id : `${value.id}.${packed}`;\n}\n\nfunction rawSelectedComponents(operand, destinationMask, count, activeComponents = null)\n{\n const selected = operand.selected || \"\";\n if (selected) return Array.from({ length: count }, () => selected);\n const swizzle = operand.swizzle || \"xyzw\";\n const mask = activeComponents || Array.from(destinationMask);\n return mask.slice(0, count).map((component) => swizzle[COMPONENTS.indexOf(component)] || swizzle[0]);\n}\n\nfunction immediateRawBits(operand, destinationMask, count, activeComponents = null)\n{\n const values = operand.immediateValues || [];\n const components = rawSelectedComponents(operand, destinationMask, count, activeComponents);\n return components.map((component, index) =>\n {\n const sourceIndex = values.length === 1 ? 0 : COMPONENTS.indexOf(component);\n const bits = values[sourceIndex]?.uint32 ?? values[index]?.uint32;\n if (!Number.isInteger(bits)) throw new Error(\"WGSL fragment immediate has no raw uint32 bits\");\n return bits >>> 0;\n });\n}\n\nfunction immediateParts(operand, destinationMask, count, expectedType, activeComponents = null)\n{\n return immediateRawBits(operand, destinationMask, count, activeComponents).map((bits) =>\n {\n const hex = `0x${(bits >>> 0).toString(16).padStart(8, \"0\")}u`;\n if (expectedType === \"float32\") return `bitcast<f32>(${hex})`;\n if (expectedType === \"int32\") return `bitcast<i32>(${hex})`;\n return hex;\n });\n}\n\nfunction validateRcpImmediate(program, instruction, write)\n{\n const operand = instruction.operands[1];\n if (operand?.typeName !== \"immediate32\") return;\n const activeComponents = fixedSourceLanes(instruction, 1, program);\n const bits = immediateRawBits(operand, write.mask, write.mask.length, activeComponents);\n if (bits.some((value) =>\n {\n const exponent = (value >>> 23) & 0xff;\n return exponent === 0 || exponent === 0xff;\n }))\n {\n throw new Error(`WGSL fragment rcp instruction ${instruction.index} requires finite normal immediate source lanes`);\n }\n}\n\nfunction bindingForOperand(bindings, resourceKind, operand)\n{\n const rangeId = operand.resourceReference?.rangeId;\n if (Number.isInteger(rangeId))\n {\n const matches = bindings.filter((entry) => entry.resourceKind === resourceKind && entry.rangeId === rangeId);\n if (matches.length > 1)\n {\n throw new Error(`WGSL fragment ${resourceKind} range ${rangeId} is ambiguous`);\n }\n const binding = matches[0] || null;\n return resourceKind === \"uniform-buffer\"\n ? binding\n : validateFixedHandleBinding(operand, binding, \"fragment\");\n }\n const binding = bindings.find((entry) =>\n entry.resourceKind === resourceKind && entry.registerIndex === operand.registerIndex) || null;\n return resourceKind === \"uniform-buffer\"\n ? binding\n : validateFixedHandleBinding(operand, binding, \"fragment\");\n}\n\nfunction originalBindingForOperand(program, resourceKind, operand)\n{\n const rangeId = operand.resourceReference?.rangeId;\n const candidates = program.bindings.filter((entry) =>\n entry.resourceKind === resourceKind);\n const matches = Number.isInteger(rangeId)\n ? candidates.filter((entry) => entry.range?.rangeId === rangeId)\n : candidates.filter((entry) =>\n (entry.range?.lowerBound ?? entry.registerIndex) === operand.registerIndex);\n if (matches.length > 1)\n {\n throw new Error(`WGSL fragment ${resourceKind} source identity is ambiguous`);\n }\n const binding = matches[0] || null;\n if (!binding) return null;\n const absoluteIndex = operand.resourceReference?.absoluteIndex;\n const registerIndex = binding.range?.lowerBound ?? binding.registerIndex;\n if (absoluteIndex !== undefined\n && (absoluteIndex?.relative\n || absoluteIndex?.values?.length !== 1\n || absoluteIndex.values[0] !== registerIndex))\n {\n throw new Error(`WGSL fragment ${resourceKind} source identity is out of range`);\n }\n const registerSpace = binding.range?.registerSpace ?? 0;\n return {\n binding,\n identity: `${resourceKind}:${registerSpace}:${registerIndex}`\n };\n}\n\nfunction transformedSampleForOperand(program, operand, bindings, context)\n{\n if (!context?.transformedInputs?.size) return null;\n const original = originalBindingForOperand(program, \"sampled-resource\", operand);\n const input = original ? context.transformedInputs.get(original.identity) : null;\n if (!input) return null;\n const textureBinding = bindings.find((binding) =>\n binding.resourceKind === \"sampled-resource\"\n && binding.identity === input.transform.output.identity\n && binding.transformId === input.transform.id) || null;\n if (!textureBinding)\n {\n throw new Error(`WGSL fragment resource transform ${input.transform.id} has no physical binding`);\n }\n return { textureBinding, layer: input.layer };\n}\n\nfunction cbufferVectorIndex(program, instruction, operandIndex, operand, inputs)\n{\n const indices = operand.indices || [];\n for (let dimension = 0; dimension < indices.length - 1; dimension += 1)\n {\n if (indices[dimension].relative) throw new Error(\"WGSL fragment does not support dynamic cbuffer register selection\");\n }\n const last = indices.at(-1);\n const base = last?.values?.length ? last.values[0] : (last?.relative ? 0 : undefined);\n if (!Number.isInteger(base) || base < 0) throw new Error(\"WGSL fragment cbuffer operand has no immediate vector index\");\n if (!last.relative) return `${base}`;\n const read = instruction.dataflow.reads.find((entry) => entry.kind === \"index-read\"\n && entry.operandIndex === operandIndex && entry.dimension === indices.length - 1);\n if (!read || read.refs.length !== 1) throw new Error(\"WGSL fragment dynamic cbuffer index has no resolved register\");\n if (last.relative?.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(program, last.relative, read, rawSelectedComponents(last.relative, \"x\", 1));\n }\n const ref = read.refs[0];\n const storage = valueStorageType(program, ref);\n let indexCode = valueReference(program, ref, inputs);\n if (storage === \"uint32\" || storage === \"bitpattern32\") indexCode = `i32(${indexCode})`;\n else if (storage !== \"int32\") throw new Error(`WGSL fragment dynamic cbuffer index has unsupported type ${storage}`);\n return base === 0 ? indexCode : `${base} + ${indexCode}`;\n}\n\nfunction cbufferParts(program, instruction, operandIndex, operand, destinationMask, count, bindings, expectedType, inputs, activeComponents = null)\n{\n const binding = bindingForOperand(bindings, \"uniform-buffer\", operand);\n if (!binding) throw new Error(`WGSL fragment cannot resolve cb${operand.registerIndex}`);\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `${binding.generatedSymbol}[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret cbuffer lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\nfunction icbParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents = null)\n{\n if (!program.immediateConstantBuffer?.length)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has no immediate constant buffer`);\n }\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `icb[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret icb lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\nfunction constTableParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents = null)\n{\n if (validateIndexableTempOperand(program, operand, \"source\") !== null)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} fixed indexable temp has no resolved SSA read`);\n }\n const registerIndex = operand.indices?.[0]?.values?.[0];\n const table = (program.constTables || []).find((entry) => entry.registerIndex === registerIndex);\n if (!table)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} indexable temp x${registerIndex} is not a supported constant table`);\n }\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `${table.symbol}[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret constant-table lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\n// DXBC float source modifiers are selected by the consuming opcode. Integer\n// consumers admit two's-complement negation only. Bit-preserving movers\n// (unknown expected type) apply the FLOAT semantics to raw lane bits\n// (\"modifiers assume float data\"), represented as sign-bit arithmetic.\nfunction modifierOnStorage(part, storage, modifier)\n{\n if (storage === \"float32\")\n {\n if (modifier === \"neg\") return `-(${part})`;\n if (modifier === \"abs\") return `abs(${part})`;\n return `-(abs(${part}))`;\n }\n const bit = modifier === \"neg\" ? \"^ 0x80000000u\" : modifier === \"abs\" ? \"& 0x7fffffffu\" : \"| 0x80000000u\";\n const raw = storage === \"int32\" ? `bitcast<u32>(${part})` : part;\n const masked = `(${raw} ${bit})`;\n return storage === \"int32\" ? `bitcast<i32>(${masked})` : masked;\n}\n\nconst MODIFIER_STORAGE_TYPES = new Set([ \"float32\", \"int32\", \"uint32\", \"bitpattern32\" ]);\n\nfunction applyModifier(parts, operand, expected, storageTypes, instruction, operandIndex)\n{\n const modifier = operand.modifierName || \"none\";\n if (modifier === \"none\") return parts;\n if (![ \"neg\", \"abs\", \"absneg\" ].includes(modifier))\n {\n throw new Error(`WGSL fragment operand modifier ${modifier} is not supported`);\n }\n if (expected === \"float32\")\n {\n if (modifier === \"neg\") return parts.map((part) => `-(${part})`);\n if (modifier === \"abs\") return parts.map((part) => `abs(${part})`);\n return parts.map((part) => `-(abs(${part}))`);\n }\n if (expected === \"int32\" && modifier === \"neg\")\n {\n return parts.map((part) => `-(${part})`);\n }\n if (expected === \"uint32\" && modifier === \"neg\")\n {\n return parts.map((part) => `(0u - ${part})`);\n }\n if (expected === \"bitpattern32\")\n {\n return parts.map((part) => modifierOnStorage(part, \"bitpattern32\", modifier));\n }\n if (expected === \"unknown\" && storageTypes?.length === parts.length\n && storageTypes.every((storage) => MODIFIER_STORAGE_TYPES.has(storage)))\n {\n return parts.map((part, index) => modifierOnStorage(part, storageTypes[index], modifier));\n }\n throw new Error(`WGSL fragment instruction ${instruction?.index} operand ${operandIndex} uses an unsupported ${modifier} modifier for ${expected}`);\n}\n\n\nfunction applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n{\n const modifier = operand.modifierName || \"none\";\n if (modifier === \"none\") return code;\n if (![ \"neg\", \"abs\", \"absneg\" ].includes(modifier) || !MODIFIER_STORAGE_TYPES.has(targetType))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} lane operand ${operandIndex} uses an unsupported ${modifier} modifier for ${targetType}`);\n }\n // The per-lane path is reached only from bit-preserving movc lanes, where\n // DXBC applies the float modifier semantics to the raw lane bits; the lane\n // code is already reinterpreted to targetType.\n return modifierOnStorage(code, targetType, modifier);\n}\n\nfunction unsupportedMinPrecision(operand)\n{\n // D3D minimum precision is a floor, not a format: computing float_16\n // operands at full 32-bit is a conforming implementation, so they promote\n // to ordinary f32 lanes (registers are 32-bit either way). Other kinds\n // stay fail-closed until a shader needs them.\n const name = operand.minPrecisionName || \"default\";\n return name !== \"default\" && name !== \"float_16\";\n}\n\nfunction operandLaneExpression(program, instruction, operandIndex, destinationMask, laneIndex, targetType, inputs, bindings,\n moverData = false)\n{\n const operand = instruction.operands[operandIndex];\n if (!operand) throw new Error(`WGSL fragment instruction ${instruction.index} has no operand ${operandIndex}`);\n if (unsupportedMinPrecision(operand))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${operand.minPrecisionName} is not supported`);\n }\n const read = sourceRead(instruction, operandIndex);\n const activeComponents = fixedSourceLanes(instruction, operandIndex, program);\n if (read && operand.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(\n program, operand, read,\n rawSelectedComponents(operand, destinationMask, read.refs.length, activeComponents));\n }\n if (read)\n {\n const replicated = read.refs.length === 1 && Boolean(operand.selected);\n if (!replicated && laneIndex >= read.refs.length)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has too few source lanes`);\n }\n const ref = replicated ? read.refs[0] : read.refs[laneIndex];\n const storage = valueStorageType(program, ref);\n const code = reinterpretCode(valueReference(program, ref, inputs), storage, targetType, 1,\n `instruction ${instruction.index} lane read`);\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n const component = destinationMask[laneIndex];\n if (operand.typeName === \"immediate32\")\n {\n const code = immediateParts(operand, component, 1, targetType)[0];\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n if (operand.typeName === \"constant_buffer\")\n {\n const code = cbufferParts(program, instruction, operandIndex, operand, component, 1, bindings, targetType, inputs)[0];\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n throw new Error(`WGSL fragment instruction ${instruction.index} cannot lower ${operand.typeName} lane operand ${operandIndex}`);\n}\n\nfunction operandExpression(program, instruction, operandIndex, destinationMask, count, expectedType, inputs, bindings)\n{\n const operand = instruction.operands[operandIndex];\n if (!operand) throw new Error(`WGSL fragment instruction ${instruction.index} has no operand ${operandIndex}`);\n if (unsupportedMinPrecision(operand))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${operand.minPrecisionName} is not supported`);\n }\n const read = sourceRead(instruction, operandIndex);\n const activeComponents = fixedSourceLanes(instruction, operandIndex, program);\n if (read && operand.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(\n program, operand, read,\n rawSelectedComponents(operand, destinationMask, read.refs.length, activeComponents));\n }\n let parts;\n if (read)\n {\n if (read.refs.length < count) throw new Error(`WGSL fragment instruction ${instruction.index} has too few source lanes`);\n parts = read.refs.slice(0, count).map((ref, componentIndex) =>\n {\n let part = valueReference(program, ref, inputs);\n const bitcast = instruction.typeInfo.bitcasts.find((entry) => entry.kind === \"read-bitcast\"\n && entry.operandIndex === operandIndex && entry.componentIndex === componentIndex\n && entry.valueId === ref.valueId && entry.component === ref.component);\n if (bitcast)\n {\n part = reinterpretCode(part, bitcast.from, bitcast.to, 1, `instruction ${instruction.index} read`);\n }\n return part;\n });\n }\n else if (operand.typeName === \"immediate32\")\n {\n parts = immediateParts(operand, destinationMask, count, expectedType, activeComponents);\n }\n else if (operand.typeName === \"constant_buffer\")\n {\n parts = cbufferParts(program, instruction, operandIndex, operand, destinationMask, count, bindings, expectedType, inputs, activeComponents);\n }\n else if (operand.typeName === \"indexable_temp\")\n {\n parts = constTableParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents);\n }\n else if (operand.typeName === \"immediate_constant_buffer\")\n {\n parts = icbParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents);\n }\n else\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} cannot lower ${operand.typeName} operand ${operandIndex}`);\n }\n const storageTypes = (operand.modifierName || \"none\") !== \"none\" && expectedType === \"unknown\" && read\n ? read.refs.slice(0, count).map((ref) => valueStorageType(program, ref))\n : null;\n return vectorCode(applyModifier(parts, operand, expectedType, storageTypes, instruction, operandIndex), expectedType);\n}\n\nfunction expectedType(instruction, operandIndex)\n{\n return instruction.typeInfo.operandTypes.find((entry) => entry.operandIndex === operandIndex)?.expectedType || \"unknown\";\n}\n\nfunction valueStorageType(program, ref)\n{\n const value = program.values.find((entry) => entry.id === ref.valueId);\n return value?.componentTypes?.[ref.component] || \"unknown\";\n}\n\nfunction bitcastKey(entry)\n{\n if (entry.kind === \"read-bitcast\")\n {\n return [ entry.kind, entry.operandIndex, entry.componentIndex, entry.valueId, entry.component,\n entry.from, entry.to ].join(\":\");\n }\n return [ entry.kind, entry.operandIndex, entry.valueId, entry.component, entry.from, entry.to ].join(\":\");\n}\n\nfunction validateRegisterBitcasts(program, instruction)\n{\n const required = [];\n for (const read of instruction.dataflow.reads)\n {\n if (read.kind === \"index-read\") continue;\n const expected = expectedType(instruction, read.operandIndex);\n if (expected === \"unknown\") continue;\n read.refs.forEach((ref, componentIndex) =>\n {\n const storage = valueStorageType(program, ref);\n if (storage !== \"unknown\" && storage !== expected)\n {\n required.push({\n kind: \"read-bitcast\",\n operandIndex: read.operandIndex,\n componentIndex,\n valueId: ref.valueId,\n component: ref.component,\n from: storage,\n to: expected\n });\n }\n });\n }\n const intrinsicResult = instruction.typeInfo.resultType;\n if (intrinsicResult !== \"unknown\")\n {\n for (const write of instruction.dataflow.writes)\n {\n for (const component of write.mask)\n {\n const storage = valueStorageType(program, { valueId: write.valueId, component });\n if (storage !== \"unknown\" && storage !== intrinsicResult)\n {\n required.push({\n kind: \"result-bitcast\",\n operandIndex: write.operandIndex,\n valueId: write.valueId,\n component,\n from: intrinsicResult,\n to: storage\n });\n }\n }\n }\n }\n const actual = instruction.typeInfo.bitcasts.filter((entry) =>\n entry.kind === \"read-bitcast\" || entry.kind === \"result-bitcast\");\n const requiredKeys = required.map(bitcastKey).sort();\n const actualKeys = actual.map(bitcastKey).sort();\n if (new Set(actualKeys).size !== actualKeys.length\n || requiredKeys.length !== actualKeys.length\n || requiredKeys.some((entry, index) => entry !== actualKeys[index]))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has inconsistent register bitcast metadata`);\n }\n}\n\nfunction zeroMask(count)\n{\n return count === 1 ? \"0u\" : `vec${count}<u32>(0u)`;\n}\n\nfunction fullMask(count)\n{\n return count === 1 ? \"0xffffffffu\" : `vec${count}<u32>(0xffffffffu)`;\n}\n\nfunction oneMask(count)\n{\n return count === 1 ? \"1u\" : `vec${count}<u32>(1u)`;\n}\n\nfunction floatBound(count, value)\n{\n return count === 1 ? value : `vec${count}<f32>(${value})`;\n}\n\nfunction splatScalar(code, count)\n{\n return count === 1 ? code : `vec${count}<f32>(${code})`;\n}\n\nfunction structuredLoadExpression(program, instruction, write, type, inputs, bindings)\n{\n const count = write.mask.length;\n if (instruction.operands.length !== 4)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires four operands`);\n }\n const addressOperand = instruction.operands[1];\n if (!COMPONENTS.includes(addressOperand?.selected) || (addressOperand.modifierName || \"none\") !== \"none\")\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires one unmodified scalar address`);\n }\n const address = operandExpression(program, instruction, 1, write.mask, 1, \"uint32\", inputs, bindings);\n const byteOffsetOperand = instruction.operands[2];\n const byteOffset = byteOffsetOperand?.immediateValues?.[0]?.uint32;\n if (byteOffsetOperand?.typeName !== \"immediate32\" || byteOffsetOperand.immediateValues?.length !== 1\n || (byteOffsetOperand.modifierName || \"none\") !== \"none\"\n || !Number.isInteger(byteOffset) || byteOffset % 4 !== 0)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires an immediate DWORD byte offset`);\n }\n const resource = validateFixedHandleOperand(instruction, 3, \"resource\", \"fragment\");\n const binding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!binding?.buffer || !Number.isInteger(binding.structureStride))\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} has no structured buffer binding`);\n }\n const strideWords = binding.structureStride / 4;\n const firstWord = byteOffset / 4;\n const symbol = binding.generatedSymbol;\n const wordCount = `arrayLength(&${symbol})`;\n const addressInRange = `${address} < (${wordCount} / ${strideWords}u)`;\n const swizzle = rawSelectedComponents(resource, write.mask, count);\n const selected = swizzle.map((component) =>\n {\n const index = COMPONENTS.indexOf(component);\n const word = firstWord + index;\n if (index < 0 || word >= strideWords)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} exceeds its ${binding.structureStride}-byte stride`);\n }\n const wordAddress = `((${address}) * ${strideWords}u) + ${word}u`;\n const safeWordAddress = `min(${wordAddress}, ${wordCount} - 1u)`;\n return `select(0u, ${symbol}[${safeWordAddress}], ${addressInRange})`;\n });\n if (type === null) return selected;\n const parts = selected.map((part) => reinterpretCode(part, \"uint32\", type.scalarType, 1,\n `structured load ${instruction.index}`));\n return vectorCode(parts, type.scalarType);\n}\n\nfunction expressionFor(program, instruction, write, inputs, bindings, context = null)\n{\n const mask = write.mask;\n const count = mask.length;\n const source = (index, forcedCount = count) => operandExpression(\n program, instruction, index, mask, forcedCount, expectedType(instruction, index), inputs, bindings);\n const op = instruction.opcodeName;\n if ([ \"add\", \"div\", \"iadd\", \"mul\" ].includes(op))\n {\n const operator = { add: \"+\", div: \"/\", iadd: \"+\", mul: \"*\" }[op];\n return `(${source(1)} ${operator} ${source(2)})`;\n }\n if (op === \"mad\" || op === \"imad\" || op === \"umad\") return `((${source(1)} * ${source(2)}) + ${source(3)})`;\n if (op === \"f16tof32\" || op === \"f32tof16\")\n {\n const src = source(1);\n const lane = (index) => (count === 1 ? `(${src})` : `(${src})[${index}]`);\n const parts = Array.from({ length: count }, (_, index) => (op === \"f16tof32\"\n ? `unpack2x16float(${lane(index)}).x`\n : `(pack2x16float(vec2<f32>(${lane(index)}, 0.0)) & 0xffffu)`));\n return vectorCode(parts, op === \"f16tof32\" ? \"float32\" : \"uint32\");\n }\n if (op === \"imul\" || op === \"umul\")\n {\n if (write.operandIndex !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} does not support the ${op} high result`);\n }\n return `(${source(2)} * ${source(3)})`;\n }\n if (op === \"udiv\")\n {\n const divisor = instruction.operands[3];\n const lanes = (divisor?.immediateValues || []).map((value) => value.uint32);\n const operator = write.operandIndex === 0 ? \"/\" : write.operandIndex === 1 ? \"%\" : null;\n if (!operator) throw new Error(`WGSL fragment udiv instruction ${instruction.index} has an unexpected destination operand`);\n if (divisor?.typeName === \"immediate32\" && (divisor.modifierName ?? \"none\") === \"none\" && lanes.length\n && lanes.every((value) => Number.isInteger(value) && value !== 0))\n {\n return `(${source(2)} ${operator} ${source(3)})`;\n }\n const dividendCode = source(2);\n const divisorCode = source(3);\n return `select(${fullMask(count)}, (${dividendCode} ${operator} max(${divisorCode}, ${oneMask(count)})), ${divisorCode} != ${zeroMask(count)})`;\n }\n if ([ \"max\", \"imax\", \"umax\" ].includes(op)) return `max(${source(1)}, ${source(2)})`;\n if ([ \"min\", \"imin\", \"umin\" ].includes(op)) return `min(${source(1)}, ${source(2)})`;\n if (op === \"ishl\") return `(${source(1)} << u32(${source(2)}))`;\n if (op === \"ishr\") return `(${source(1)} >> u32(${source(2)}))`;\n if (op === \"and\") return `(${source(1)} & ${source(2)})`;\n if (op === \"or\") return `(${source(1)} | ${source(2)})`;\n if (op === \"xor\") return `(${source(1)} ^ ${source(2)})`;\n if (op === \"ushr\") return `(${source(1)} >> ${source(2)})`;\n if ([ \"lt\", \"ge\", \"eq\", \"ne\", \"ilt\", \"ige\", \"ieq\", \"ine\", \"ult\", \"uge\" ].includes(op))\n {\n const operator = { lt: \"<\", ge: \">=\", eq: \"==\", ne: \"!=\", ilt: \"<\", ige: \">=\", ieq: \"==\", ine: \"!=\", ult: \"<\", uge: \">=\" }[op];\n return `select(${zeroMask(count)}, ${fullMask(count)}, ${source(1)} ${operator} ${source(2)})`;\n }\n if (op === \"mov\") return source(1);\n if (op === \"movc\") return `select(${source(3)}, ${source(2)}, ${source(1)} != ${zeroMask(count)})`;\n if (op === \"ineg\") return `(-${source(1)})`;\n if (op === \"exp\") return `exp2(${source(1)})`;\n if (op === \"frc\") return `fract(${source(1)})`;\n if (op === \"log\") return `log2(${source(1)})`;\n if (op === \"round_ne\") return `round(${source(1)})`;\n if (op === \"round_ni\") return `floor(${source(1)})`;\n if (op === \"round_pi\") return `ceil(${source(1)})`;\n if (op === \"round_z\") return `trunc(${source(1)})`;\n if (DERIVATIVES[op]) return `${DERIVATIVES[op]}(${source(1)})`;\n if (op === \"rcp\")\n {\n validateRcpImmediate(program, instruction, write);\n return `(${floatBound(count, \"1.0\")} / ${source(1)})`;\n }\n if (op === \"rsq\") return `inverseSqrt(${source(1)})`;\n if (op === \"sqrt\") return `sqrt(${source(1)})`;\n if (NUMERIC_CONVERSIONS[op])\n {\n const conversion = instruction.typeInfo.conversion;\n const [ from, to ] = NUMERIC_CONVERSIONS[op];\n if (conversion?.from !== from || conversion?.to !== to)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has invalid ${op} conversion metadata`);\n }\n return `${fieldType(to, count)}(${source(1)})`;\n }\n if (op === \"dp2\") return splatScalar(`dot(${source(1, 2)}, ${source(2, 2)})`, count);\n if (op === \"dp3\") return splatScalar(`dot(${source(1, 3)}, ${source(2, 3)})`, count);\n if (op === \"dp4\") return splatScalar(`dot(${source(1, 4)}, ${source(2, 4)})`, count);\n if (op === \"sincos\")\n {\n const fn = write.operandIndex === 0 ? \"sin\" : write.operandIndex === 1 ? \"cos\" : null;\n if (!fn) throw new Error(`WGSL fragment sincos instruction ${instruction.index} has an unexpected destination operand`);\n return `${fn}(${source(2)})`;\n }\n if (op === \"resinfo\")\n {\n if (instruction.saturate)\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} cannot saturate`);\n }\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!textureBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has an unresolved resinfo resource`);\n const viewDimension = textureBinding.texture?.viewDimension;\n if (viewDimension !== \"2d\" && viewDimension !== \"3d\")\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} supports only 2d and 3d textures`);\n }\n const mipOperand = instruction.operands[1];\n const mipBits = mipOperand?.immediateValues?.[0]?.uint32;\n if (mipOperand?.typeName !== \"immediate32\" || mipOperand.immediateValues?.length !== 1\n || (mipOperand.modifierName || \"none\") !== \"none\"\n || (mipOperand.minPrecisionName || \"default\") !== \"default\"\n || !Number.isInteger(mipBits))\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} requires an immediate mip level`);\n }\n const modifier = instruction.resinfoReturnTypeName || \"float\";\n if (![ \"float\", \"rcpfloat\", \"uint\" ].includes(modifier))\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} has unsupported return type ${modifier}`);\n }\n const symbol = textureBinding.generatedSymbol;\n const mipCount = `textureNumLevels(${symbol})`;\n // Every WebGPU sampled texture has at least one mip. Query a valid level\n // and select zero for a non-zero immediate beyond the bound view so D3D's\n // defined out-of-range resinfo dimensions do not inherit WGSL's\n // indeterminate textureDimensions result. Mip zero is always valid.\n const level = mipBits === 0 ? \"0\" : `min(${mipBits}u, ${mipCount} - 1u)`;\n const levelInRange = mipBits === 0 ? null : `${mipBits}u < ${mipCount}`;\n const dims = `textureDimensions(${symbol}, ${level})`;\n const parts = rawSelectedComponents(resource, mask, count).map((component) =>\n {\n let value;\n let dimension = true;\n if (component === \"x\") value = `${dims}.x`;\n else if (component === \"y\") value = `${dims}.y`;\n else if (component === \"z\" && viewDimension === \"3d\") value = `${dims}.z`;\n else if (component === \"w\")\n {\n value = mipCount;\n dimension = false;\n }\n else throw new Error(`WGSL fragment resinfo instruction ${instruction.index} cannot report component ${component} for a ${viewDimension} texture`);\n if (dimension && levelInRange) value = `select(0u, ${value}, ${levelInRange})`;\n if (modifier === \"uint\") return value;\n return modifier === \"rcpfloat\" && dimension ? `(1.0 / f32(${value}))` : `f32(${value})`;\n });\n return vectorCode(parts, modifier === \"uint\" ? \"uint32\" : \"float32\");\n }\n if (op === \"ld_structured\") return structuredLoadExpression(program, instruction, write, valueType(program, write), inputs, bindings);\n if (op === \"ld\")\n {\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!textureBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has an unresolved load resource`);\n let loaded;\n if (textureBinding.buffer && !Number.isInteger(textureBinding.structureStride))\n {\n // Typed Buffer SRV: storage-array element fetch. D3D ld returns\n // zero out of bounds. Clamp the eagerly evaluated WGSL load itself\n // before selecting zero so no invalid memory reference is formed.\n const element = textureBinding.type.slice(\"array<\".length, -1);\n const address = source(1, 1);\n const symbol = textureBinding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n loaded = `select(${element}(), ${symbol}[min(${address}, ${length} - 1u)], ${address} < ${length})`;\n }\n else if (textureBinding.texture?.viewDimension === \"2d\")\n {\n const address = source(1, 3);\n const symbol = textureBinding.generatedSymbol;\n const mipCount = `textureNumLevels(${symbol})`;\n const safeLevel = `min(${address}.z, ${mipCount} - 1u)`;\n const dimensions = `textureDimensions(${symbol}, ${safeLevel})`;\n const safeCoordinates = `min(${address}.xy, ${dimensions} - vec2<u32>(1u))`;\n const inBounds = `${address}.z < ${mipCount} && all(${address}.xy < ${dimensions})`;\n loaded = `select(vec4<f32>(), textureLoad(${symbol}, ${safeCoordinates}, ${safeLevel}), ${inBounds})`;\n }\n else\n {\n throw new Error(`WGSL fragment load instruction ${instruction.index} resource shape is not supported; only 2d textures and typed buffers are supported`);\n }\n const components = rawSelectedComponents(resource, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (op === \"sample\" || op === \"sample_b\" || op === \"sample_l\" || op === \"sample_d\")\n {\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const sampler = validateFixedHandleOperand(instruction, 3, \"sampler\", \"fragment\");\n const transformed = transformedSampleForOperand(\n program,\n resource,\n bindings,\n context\n );\n const textureBinding = transformed?.textureBinding\n || bindingForOperand(bindings, \"sampled-resource\", resource);\n const samplerBinding = bindingForOperand(bindings, \"sampler\", sampler);\n if (!textureBinding || !samplerBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has unresolved sample bindings`);\n const viewDimension = textureBinding.texture?.viewDimension;\n const coordComponents = viewDimension === \"2d\" ? 2 : 3;\n const gradientComponents = [ \"2d\", \"2d-array\" ].includes(viewDimension) ? 2 : 3;\n let coord;\n let arrayArg = \"\";\n if (transformed)\n {\n if (viewDimension !== \"2d-array\")\n {\n throw new Error(`WGSL fragment resource transform ${textureBinding.transformId} is not a 2d-array binding`);\n }\n coord = source(1, 2);\n arrayArg = `, ${transformed.layer}i`;\n }\n else if (viewDimension === \"2d-array\")\n {\n const coord3 = source(1, 3);\n coord = `${coord3}.xy`;\n arrayArg = `, i32(round(${coord3}.z))`;\n }\n else\n {\n coord = source(1, coordComponents);\n }\n const tex = `${textureBinding.generatedSymbol}, ${samplerBinding.generatedSymbol}`;\n const offsetArg = sampleOffsetArgument(instruction, viewDimension);\n const sampled = op === \"sample_b\"\n ? `textureSampleBias(${tex}, ${coord}${arrayArg}, ${source(4, 1)}${offsetArg})`\n : op === \"sample_l\"\n ? `textureSampleLevel(${tex}, ${coord}${arrayArg}, ${source(4, 1)}${offsetArg})`\n : op === \"sample_d\"\n ? `textureSampleGrad(${tex}, ${coord}${arrayArg}, ${source(4, gradientComponents)}, ${source(5, gradientComponents)}${offsetArg})`\n : `textureSample(${tex}, ${coord}${arrayArg}${offsetArg})`;\n const components = rawSelectedComponents(resource, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? sampled : `${sampled}.${components.join(\"\")}`;\n }\n throw new Error(`WGSL fragment opcode ${op} at instruction ${instruction.index} is not supported`);\n}\n\nfunction applyResultBitcast(instruction, write, expression, type)\n{\n const bitcasts = instruction.typeInfo.bitcasts.filter((entry) => entry.kind === \"result-bitcast\"\n && entry.operandIndex === write.operandIndex && entry.valueId === write.valueId);\n if (!bitcasts.length) return expression;\n const components = Array.from(write.mask);\n const intrinsicType = instruction.typeInfo.resultType;\n if (bitcasts.length !== components.length || bitcasts.some((entry) =>\n entry.from !== intrinsicType || entry.to !== type.scalarType)\n || components.some((component) => !bitcasts.some((entry) => entry.component === component)))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has unsupported partial result bitcasts`);\n }\n return reinterpretCode(expression, intrinsicType, type.scalarType, components.length,\n `instruction ${instruction.index} result`);\n}\n\nfunction lowerInstruction(program, instruction, inputs, outputs, bindings, written, readValueIds, nonUniform = false, context = null)\n{\n if (!SUPPORTED_OPCODES.has(instruction.opcodeName))\n {\n throw new Error(`WGSL fragment opcode ${instruction.opcodeName} at instruction ${instruction.index} is not supported`);\n }\n const unsupportedExtension = instruction.extensions?.find((extension) =>\n !METADATA_OPCODE_EXTENSIONS.has(extension.typeName)\n && !(extension.typeName === \"sample_controls\"\n && SAMPLE_OFFSET_OPCODES.has(instruction.opcodeName)));\n if (unsupportedExtension)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} opcode extension ${unsupportedExtension.typeName} is not supported`);\n }\n if (nonUniform && REQUIRES_UNIFORM_CONTROL_FLOW.has(instruction.opcodeName) && context)\n {\n // Screen-space derivative / implicit-LOD sample under non-uniform control\n // flow. Rather than reject, record that the module needs the WGSL\n // derivative-uniformity opt-out (emitted at module top); this reproduces\n // D3D11's permissive behavior. See uniformity.js and\n // docs/reference/wgsl-compatibility.md.\n context.requiresDerivativeUniformityOptOut = true;\n }\n validatePreciseInstruction(instruction, \"fragment\");\n const imprecise = instruction.operands.find(unsupportedMinPrecision);\n if (imprecise)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${imprecise.minPrecisionName} is not supported`);\n }\n validateRegisterBitcasts(program, instruction);\n if (instruction.opcodeName === \"ret\")\n {\n for (const field of outputs)\n {\n const missing = field.components.filter((component) => !written.get(field.id).has(component));\n if (missing.length) throw new Error(`WGSL fragment output ${field.semanticName}${field.semanticIndex} leaves ${missing.join(\"\")} unwritten before return`);\n }\n return { kind: \"return\", instructionIndex: instruction.index, dxbcOffset: instruction.dxbcOffset };\n }\n if (instruction.opcodeName === \"discard\")\n {\n const projection = instruction.testBoolean;\n const operand = instruction.operands[0];\n const read = sourceRead(instruction, 0);\n if (![ \"zero\", \"nonzero\" ].includes(projection))\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} has no supported condition projection`);\n }\n const scalarShape = operand?.typeName === \"immediate32\"\n ? operand.immediateValues?.length === 1\n : COMPONENTS.includes(operand?.selected);\n if (instruction.operands.length !== 1 || !operand || !scalarShape || (read && read.refs.length !== 1))\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} requires one scalar condition`);\n }\n if ((operand.modifierName || \"none\") !== \"none\")\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} cannot modify its condition`);\n }\n if (instruction.saturate)\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} cannot saturate its condition`);\n }\n const condition = operandExpression(program, instruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n return {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${condition} ${projection === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ { kind: \"discard\" } ]\n };\n }\n if (instruction.opcodeName === \"atomic_iadd\")\n {\n const uav = validateFixedHandleOperand(instruction, 0, \"uav\", \"fragment\");\n if (instruction.operands.length !== 3 || instruction.saturate)\n {\n throw new Error(`WGSL fragment atomic instruction ${instruction.index} has an unsupported operand shape`);\n }\n const binding = bindingForOperand(bindings, \"storage-resource\", uav);\n if (!binding) throw new Error(`WGSL fragment atomic instruction ${instruction.index} has an unresolved UAV binding`);\n if (binding.type !== \"array<atomic<u32>>\")\n {\n throw new Error(`WGSL fragment atomic instruction ${instruction.index} UAV layout ${binding.type} is not supported`);\n }\n const address = operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings);\n const value = operandExpression(program, instruction, 2, \"x\", 1, \"uint32\", inputs, bindings);\n // D3D defines out-of-bounds typed-UAV atomics as dropped writes; the\n // bounds guard reproduces that (WGSL could redirect to a live element).\n return {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${address} < arrayLength(&${binding.generatedSymbol})`, type: \"bool\" },\n statements: [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: `atomicAdd(&${binding.generatedSymbol}[${address}], ${value})`, type: \"void\" }\n } ]\n };\n }\n const writes = instruction.dataflow.writes;\n if (!writes.length) throw new Error(`WGSL fragment instruction ${instruction.index} has no result write`);\n if (instruction.opcodeName === \"sincos\" || instruction.opcodeName === \"udiv\")\n {\n const destinationOperands = writes.map((write) => write.operandIndex);\n if (writes.length > 2 || new Set(destinationOperands).size !== writes.length\n || destinationOperands.some((operandIndex) => ![ 0, 1 ].includes(operandIndex)))\n {\n throw new Error(`WGSL fragment ${instruction.opcodeName} instruction ${instruction.index} has unsupported result writes`);\n }\n if (writes.length === 2 && writes[0].mask !== writes[1].mask)\n {\n throw new Error(`WGSL fragment ${instruction.opcodeName} instruction ${instruction.index} requires matching destination masks`);\n }\n }\n else if (writes.length !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has unsupported multiple result writes`);\n }\n const lowerWrite = (write) =>\n {\n const destination = instruction.operands[write.operandIndex];\n const indexableAddress = destination?.typeName === \"indexable_temp\"\n ? validateIndexableTempWrite(program, destination, write)\n : null;\n const localSsaDestination = destination?.typeName === \"temp\" || Boolean(indexableAddress);\n if (isDeadUntypedWrite(program, write, readValueIds, localSsaDestination)) return [];\n const mixedTypes = mixedImmediateTypes(program, write);\n if (mixedTypes)\n {\n if (instruction.opcodeName === \"ld_structured\" && localSsaDestination && !instruction.saturate)\n {\n const words = structuredLoadExpression(program, instruction, write, null, inputs, bindings);\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: reinterpretCode(words[laneIndex], \"uint32\", mixedTypes[laneIndex], 1, `structured load ${instruction.index}`),\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n const intrinsic = instruction.typeInfo.resultType;\n if (localSsaDestination && scalarTypeName(intrinsic) && instruction.opcodeName !== \"mov\")\n {\n let packedCode = expressionFor(program, instruction, write, inputs, bindings, context);\n if (instruction.saturate)\n {\n if (intrinsic !== \"float32\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} saturates a non-float result`);\n }\n packedCode = `clamp(${packedCode}, ${floatBound(write.mask.length, \"0.0\")}, ${floatBound(write.mask.length, \"1.0\")})`;\n }\n const packedName = `${write.valueId}_p`;\n const packedType = fieldType(intrinsic, write.mask.length);\n const statements = [ {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: packedName,\n type: packedType,\n expression: { code: packedCode, type: packedType }\n } ];\n Array.from(write.mask).forEach((component, laneIndex) =>\n {\n const laneType = mixedTypes[laneIndex];\n const access = write.mask.length === 1 ? packedName : `${packedName}.${COMPONENTS[laneIndex]}`;\n statements.push({\n kind: \"let\",\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(laneType),\n expression: {\n code: reinterpretCode(access, intrinsic, laneType, 1, `mixed write ${instruction.index}`),\n type: scalarTypeName(laneType)\n }\n });\n });\n return statements;\n }\n if (instruction.opcodeName === \"movc\" && localSsaDestination && !instruction.saturate)\n {\n return Array.from(write.mask).map((component, laneIndex) =>\n {\n const laneType = mixedTypes[laneIndex];\n const condition = operandLaneExpression(program, instruction, 1, write.mask, laneIndex, \"uint32\", inputs, bindings);\n const whenTrue = operandLaneExpression(program, instruction, 2, write.mask, laneIndex, laneType, inputs, bindings, true);\n const whenFalse = operandLaneExpression(program, instruction, 3, write.mask, laneIndex, laneType, inputs, bindings, true);\n return {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(laneType),\n expression: {\n code: `select(${whenFalse}, ${whenTrue}, ${condition} != 0u)`,\n type: scalarTypeName(laneType)\n }\n };\n });\n }\n const immediateSource = instruction.operands[1];\n if (instruction.opcodeName !== \"mov\" || instruction.saturate\n || !localSsaDestination || immediateSource?.typeName !== \"immediate32\")\n {\n throw new Error(`WGSL fragment value ${write.valueId} has an unresolved or mixed result type that is not supported`);\n }\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: immediateParts(immediateSource, component, 1, mixedTypes[laneIndex])[0],\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n const type = valueType(program, write);\n let expression = expressionFor(program, instruction, write, inputs, bindings, context);\n if (instruction.saturate)\n {\n const clampBounds = `${floatBound(write.mask.length, \"0.0\")}, ${floatBound(write.mask.length, \"1.0\")}`;\n if (instruction.typeInfo.resultType === \"float32\")\n {\n expression = `clamp(${expression}, ${clampBounds})`;\n }\n else if ([ \"mov\", \"movc\" ].includes(instruction.opcodeName)\n && [ \"int32\", \"uint32\", \"bitpattern32\" ].includes(type.scalarType))\n {\n // D3D saturate assumes float data (like source modifiers); on a\n // bit-preserving mover whose lanes resolved to integer storage,\n // clamp the float interpretation of the bits and keep the storage.\n const floatType = fieldType(\"float32\", write.mask.length);\n expression = `bitcast<${type.wgslType}>(clamp(bitcast<${floatType}>(${expression}), ${clampBounds}))`;\n }\n else\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} saturates a non-float result`);\n }\n }\n expression = applyResultBitcast(instruction, write, expression, type);\n if (destination.typeName === \"output\")\n {\n const field = outputs.find((entry) => entry.registerIndex === destination.registerIndex);\n if (!field) throw new Error(`WGSL fragment instruction ${instruction.index} references undeclared output r${destination.registerIndex}`);\n const components = Array.from(write.mask).map((component) => packedComponent(field.components.join(\"\"), component));\n Array.from(write.mask).forEach((component) => written.get(field.id).add(component));\n const outputType = fieldType(field.scalarType, write.mask.length);\n const assignmentExpression = reinterpretCode(\n expression,\n type.scalarType,\n field.scalarType,\n write.mask.length,\n `output ${field.semanticName}${field.semanticIndex}`\n );\n const assignment = {\n kind: \"assignment\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n target: { fieldId: field.id, components, type: outputType },\n expression: { code: assignmentExpression, type: outputType }\n };\n if (!readValueIds.has(write.valueId)) return assignment;\n return [\n {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: write.valueId,\n type: type.wgslType,\n expression: { code: expression, type: type.wgslType }\n },\n {\n ...assignment,\n instructionIndex: undefined,\n dxbcOffset: undefined,\n expression: {\n code: reinterpretCode(write.valueId, type.scalarType, field.scalarType, write.mask.length,\n `output ${field.semanticName}${field.semanticIndex}`),\n type: outputType\n }\n }\n ];\n }\n if (!localSsaDestination)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} writes unsupported ${destination.typeName}`);\n }\n return {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: write.valueId,\n type: type.wgslType,\n expression: { code: expression, type: type.wgslType }\n };\n };\n const statements = writes.flatMap((write) =>\n {\n const lowered = lowerWrite(write);\n return Array.isArray(lowered) ? lowered : [ lowered ];\n });\n return statements.length === 1 ? statements[0] : statements;\n}\n\nfunction deepFreeze(value)\n{\n if (!value || typeof value !== \"object\" || Object.isFrozen(value)) return value;\n for (const entry of Object.values(value)) deepFreeze(entry);\n return Object.freeze(value);\n}\n\n\nfunction containsOutputAssignment(statements)\n{\n return statements.some((statement) => statement.kind === \"assignment\"\n || (statement.kind === \"if\" && (containsOutputAssignment(statement.statements)\n || (statement.elseStatements ? containsOutputAssignment(statement.elseStatements) : false)))\n || (statement.kind === \"switch\" && statement.clauses.some((clause) => containsOutputAssignment(clause.statements)))\n || (statement.kind === \"loop\" && containsOutputAssignment(statement.statements)));\n}\n\n/**\n * Whether a loop can be exited through NON-UNIFORM control flow: a `breakc`/\n * `continuec` with a varying condition, or an unconditional `break`/`continue`\n * lexically guarded by a varying `if`/`switch`. Per the WGSL uniformity rules a\n * `break` reached from non-uniform control flow taints the loop body AND the code\n * after the loop (the break edges carry non-uniformity to the merge). Nested\n * loops are skipped — their breaks belong to the inner loop, not this one.\n *\n * @param {object} program Frozen CJS shader IR.\n * @param {object} region Loop control-flow region.\n * @param {Set<string>} varying Varying value ids from computeVaryingValues.\n * @returns {boolean} True when at least one exit is non-uniform.\n */\nfunction loopHasNonUniformExit(program, region, varying)\n{\n const regions = program.controlFlow.regions;\n const insideNestedLoop = (index) => regions.some((candidate) =>\n candidate.kind === \"loop\" && candidate !== region\n && candidate.startInstruction > region.startInstruction\n && candidate.endInstruction < region.endInstruction\n && index >= candidate.startInstruction && index <= candidate.endInstruction);\n for (let index = region.startInstruction; index <= region.endInstruction; index += 1)\n {\n const instruction = program.instructions[index];\n if (!instruction || insideNestedLoop(index)) continue;\n const op = instruction.opcodeName;\n if ((op === \"breakc\" || op === \"continuec\") && !conditionIsUniform(instruction, varying)) return true;\n if (op === \"break\" || op === \"continue\")\n {\n const varyingGuard = regions.some((candidate) =>\n (candidate.kind === \"selection\" || candidate.kind === \"switch\")\n && candidate.startInstruction >= region.startInstruction\n && candidate.endInstruction <= region.endInstruction\n && candidate.startInstruction < index && index <= candidate.endInstruction\n && !conditionIsUniform(program.instructions[candidate.startInstruction], varying));\n if (varyingGuard) return true;\n }\n }\n return false;\n}\n\n/**\n * Lowers the bounded copyblit-style fragment slice with structured no-else\n * selections and scalar component merges.\n *\n * @param {object} program Frozen CJS shader IR.\n * @param {object} [options] Binding-plan and lowering options.\n * @returns {object} Frozen typed fragment program.\n */\nexport function lowerFragmentProgram(program, options = {})\n{\n if (program?.format !== \"CJS_SHADER_IR\") throw new TypeError(\"WGSL fragment lowering expects CJS_SHADER_IR input\");\n if (program.stage !== \"pixel\") throw new Error(`WGSL fragment lowering cannot lower ${program.stage}`);\n if (program.shaderModel.major !== 5 || ![ 0, 1 ].includes(program.shaderModel.minor))\n {\n throw new Error(\"WGSL fragment body slice currently supports only SM5.0/SM5.1\");\n }\n requireRefactoringAllowed(program, \"fragment\");\n const liveRegisters = liveInputRegisters(program);\n const inputs = groupSignaturesByRegister(\n program.signatures.input.filter((entry) => liveRegisters.has(entry.registerIndex)))\n .map((rows) => interfaceField(rows, \"input\"));\n const outputs = program.signatures.output.map((entry) => interfaceField([ entry ], \"output\"));\n if (!outputs.length) throw new Error(\"WGSL fragment body slice requires output signatures\");\n inputs.forEach((input) => validateInterpolation(program, input));\n const planFromBinding = options.bindingPlan?.resourceTransforms === undefined\n ? null\n : normalizeResourceTransformPlan({\n format: \"CJS_WGSL_RESOURCE_TRANSFORM_PLAN\",\n formatVersion: 1,\n resourceTransforms: options.bindingPlan.resourceTransforms\n });\n const explicitPlan = normalizeResourceTransformPlan(options.resourceTransformPlan);\n if (planFromBinding && explicitPlan\n && JSON.stringify(planFromBinding) !== JSON.stringify(explicitPlan))\n {\n throw new Error(\"WGSL fragment binding and resource transform plans disagree\");\n }\n const resourceTransformPlan = planFromBinding || explicitPlan;\n const bindings = lowerBindingLayout(\n program,\n options.bindingPlan,\n null,\n resourceTransformPlan\n );\n const plans = buildSelectionPlans(program, \"fragment\");\n const varying = computeVaryingValues(program);\n const transformedInputs = new Map();\n for (const transform of resourceTransformPlan?.resourceTransforms || [])\n {\n if (transform.stage !== \"fragment\") continue;\n for (const input of transform.inputs)\n {\n transformedInputs.set(input.identity, {\n transform,\n layer: input.layer\n });\n }\n }\n const context = {\n requiresDerivativeUniformityOptOut: false,\n transformedInputs\n };\n const written = new Map(outputs.map((field) => [ field.id, new Set() ]));\n const readValueIds = new Set([\n ...program.instructions.flatMap((instruction) =>\n instruction.dataflow.reads.flatMap((read) => read.refs.map((ref) => ref.valueId))),\n ...program.values.flatMap((value) => (value.incoming || []).map((incoming) => incoming.valueId))\n ]);\n\n function exitMergeAssignments(loopExit, breakIndex)\n {\n return (loopExit?.get(breakIndex) || []).map((assign) => ({\n kind: \"value-assignment\", name: assign.id, type: assign.type,\n expression: { code: valueReference(program, assign.ref, inputs), type: assign.type }\n }));\n }\n\n function lowerRange(start, end, rangeWritten, inLoop = false, nonUniform = false, loopExit = null)\n {\n const statements = [];\n // Non-uniformity accumulates within a range: once a loop with a non-uniform\n // exit is lowered, every subsequent statement in this range is non-uniform\n // (WGSL propagates the break-edge non-uniformity past the loop merge).\n let flowNonUniform = nonUniform;\n for (let index = start; index < end; index += 1)\n {\n const plan = plans.get(index);\n if (!plan)\n {\n const marker = program.instructions[index].opcodeName;\n if (marker === \"break\" || marker === \"breakc\")\n {\n if (!inLoop) throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n const breakInstruction = program.instructions[index];\n if (marker === \"break\")\n {\n statements.push(...exitMergeAssignments(loopExit, breakInstruction.index));\n statements.push({ kind: \"break\", instructionIndex: breakInstruction.index, dxbcOffset: breakInstruction.dxbcOffset });\n continue;\n }\n validatePreciseInstruction(breakInstruction, \"fragment\");\n validateRegisterBitcasts(program, breakInstruction);\n const conditionOperand = breakInstruction.operands[0];\n const conditionRead = sourceRead(breakInstruction, 0);\n if (breakInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1\n || ![ \"zero\", \"nonzero\" ].includes(breakInstruction.testBoolean))\n {\n throw new Error(`WGSL fragment breakc instruction ${breakInstruction.index} requires one unmodified scalar condition`);\n }\n const condition = operandExpression(program, breakInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n statements.push({\n kind: \"if\",\n instructionIndex: breakInstruction.index,\n dxbcOffset: breakInstruction.dxbcOffset,\n condition: { code: `${condition} ${breakInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ ...exitMergeAssignments(loopExit, breakInstruction.index), { kind: \"break\" } ]\n });\n continue;\n }\n if (marker === \"continue\" || marker === \"continuec\")\n {\n if (!inLoop) throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n const continueInstruction = program.instructions[index];\n if (marker === \"continue\")\n {\n statements.push({ kind: \"continue\", instructionIndex: continueInstruction.index, dxbcOffset: continueInstruction.dxbcOffset });\n continue;\n }\n validatePreciseInstruction(continueInstruction, \"fragment\");\n validateRegisterBitcasts(program, continueInstruction);\n const conditionOperand = continueInstruction.operands[0];\n const conditionRead = sourceRead(continueInstruction, 0);\n if (continueInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1\n || ![ \"zero\", \"nonzero\" ].includes(continueInstruction.testBoolean))\n {\n throw new Error(`WGSL fragment continuec instruction ${continueInstruction.index} requires one unmodified scalar condition`);\n }\n const condition = operandExpression(program, continueInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n statements.push({\n kind: \"if\",\n instructionIndex: continueInstruction.index,\n dxbcOffset: continueInstruction.dxbcOffset,\n condition: { code: `${condition} ${continueInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ { kind: \"continue\" } ]\n });\n continue;\n }\n if ([ \"endif\", \"else\", \"case\", \"default\", \"endswitch\", \"endloop\" ].includes(marker))\n {\n throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n }\n const lowered = lowerInstruction(\n program, program.instructions[index], inputs, outputs, bindings, rangeWritten, readValueIds, flowNonUniform, context);\n statements.push(...(Array.isArray(lowered) ? lowered : [ lowered ]));\n continue;\n }\n if (plan.kind === \"loop\")\n {\n const loopInstruction = program.instructions[index];\n if (loopInstruction.opcodeName !== \"loop\"\n || program.instructions[plan.region.endInstruction].opcodeName !== \"endloop\")\n {\n throw new Error(\"WGSL fragment loop boundaries are malformed\");\n }\n for (const merge of plan.merges)\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type,\n expression: { code: valueReference(program, merge.entryIncoming, inputs), type: merge.type } });\n }\n for (const merge of plan.exitMerges || [])\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type,\n expression: { code: merge.zeroCode, type: merge.type } });\n }\n const bodyWritten = cloneWritten(rangeWritten);\n // A non-uniform loop exit makes both the body and everything after\n // the loop non-uniform. Fold that into the running flow flag so a\n // requires-uniform op (sample/derivative) below picks up the\n // derivative-uniformity opt-out (D3D11-permissive; see the ledger).\n const loopNonUniform = loopHasNonUniformExit(program, plan.region, varying);\n const body = lowerRange(index + 1, plan.region.endInstruction, bodyWritten, true,\n flowNonUniform || loopNonUniform, plan.exitEdges);\n if (body.at(-1)?.kind === \"return\")\n {\n throw new Error(`WGSL fragment loop at ${index} terminates before latch assignments`);\n }\n if (loopNonUniform) flowNonUniform = true;\n // Latch phi updates go in a `continuing` block so they run on both\n // fall-through and `continue` paths (a body `continue` would skip\n // updates appended to the body).\n const latch = plan.merges.map((merge) => ({ kind: \"value-assignment\", name: merge.id, type: merge.type,\n expression: { code: valueReference(program, merge.backedgeIncoming, inputs), type: merge.type } }));\n statements.push({ kind: \"loop\", instructionIndex: loopInstruction.index, dxbcOffset: loopInstruction.dxbcOffset,\n statements: body, continuing: latch });\n index = plan.region.endInstruction;\n continue;\n }\n if (plan.kind === \"switch\")\n {\n const switchInstruction = program.instructions[index];\n if (switchInstruction.opcodeName !== \"switch\"\n || program.instructions[plan.region.endInstruction].opcodeName !== \"endswitch\")\n {\n throw new Error(\"WGSL fragment switch boundaries are malformed\");\n }\n validatePreciseInstruction(switchInstruction, \"fragment\");\n validateRegisterBitcasts(program, switchInstruction);\n const selectorOperand = switchInstruction.operands[0];\n const selectorRead = sourceRead(switchInstruction, 0);\n if (switchInstruction.saturate || (selectorOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(selectorOperand?.selected) || selectorRead?.refs.length !== 1)\n {\n throw new Error(`WGSL fragment switch instruction ${switchInstruction.index} requires one unmodified scalar selector`);\n }\n for (const merge of plan.merges)\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type, expression: { code: merge.zeroCode, type: merge.type } });\n }\n const selector = operandExpression(program, switchInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n const clauseNonUniform = flowNonUniform || !conditionIsUniform(switchInstruction, varying);\n const clauses = [];\n const clauseResults = [];\n for (let clauseIndex = 0; clauseIndex < plan.clauses.length; clauseIndex += 1)\n {\n const clause = plan.clauses[clauseIndex];\n const clauseWritten = cloneWritten(rangeWritten);\n const body = lowerRange(clause.bodyStart, clause.bodyEnd, clauseWritten, false, clauseNonUniform, loopExit);\n if ((plan.merges.length || plan.outerMerges?.length) && containsOutputAssignment(body))\n {\n throw new Error(`WGSL fragment switch at ${index} writes output before a live merge`);\n }\n if (body.at(-1)?.kind === \"return\" && (plan.merges.length || plan.outerMerges?.length))\n {\n throw new Error(`WGSL fragment switch at ${index} terminates before merge assignments`);\n }\n for (const merge of [ ...plan.merges, ...(plan.outerMerges || []) ])\n {\n body.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: valueReference(program, merge.perClause[clauseIndex], inputs), type: merge.type }\n });\n }\n clauses.push({ selectors: clause.selectors, isDefault: clause.isDefault, statements: body });\n clauseResults.push({ clauseWritten, returns: body.at(-1)?.kind === \"return\" });\n }\n statements.push({\n kind: \"switch\",\n instructionIndex: switchInstruction.index,\n dxbcOffset: switchInstruction.dxbcOffset,\n selector: { code: selector, type: \"u32\" },\n clauses\n });\n if (plan.region.defaultInstruction !== null)\n {\n const continuing = clauseResults.filter((entry) => !entry.returns);\n for (const [ fieldId, target ] of rangeWritten)\n {\n if (!continuing.length) break;\n const sets = continuing.map((entry) => entry.clauseWritten.get(fieldId) || new Set());\n for (const component of sets[0])\n {\n if (sets.every((set) => set.has(component))) target.add(component);\n }\n }\n }\n if (terminatesAllPaths(statements))\n {\n return statements;\n }\n index = plan.region.endInstruction;\n continue;\n }\n const ifInstruction = program.instructions[index];\n const endInstruction = program.instructions[plan.region.endInstruction];\n if (ifInstruction.opcodeName !== \"if\" || endInstruction.opcodeName !== \"endif\"\n || (plan.hasElse && program.instructions[plan.region.elseInstruction].opcodeName !== \"else\"))\n {\n throw new Error(\"WGSL fragment selection boundaries are malformed\");\n }\n validatePreciseInstruction(ifInstruction, \"fragment\");\n validateRegisterBitcasts(program, ifInstruction);\n const conditionOperand = ifInstruction.operands[0];\n const conditionRead = sourceRead(ifInstruction, 0);\n if (ifInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1)\n {\n throw new Error(`WGSL fragment if instruction ${ifInstruction.index} requires one unmodified scalar condition`);\n }\n for (const merge of plan.merges)\n {\n const expression = plan.hasElse\n ? merge.zeroCode\n : (merge.falseCode || valueReference(program, merge.falseIncoming, inputs));\n statements.push({ kind: \"var\", name: merge.id, type: merge.type, expression: { code: expression, type: merge.type } });\n }\n const condition = operandExpression(program, ifInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n const comparison = ifInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\";\n const branchNonUniform = flowNonUniform || !conditionIsUniform(ifInstruction, varying);\n const trueBodyEnd = plan.hasElse ? plan.region.elseInstruction : plan.region.endInstruction;\n const trueWritten = cloneWritten(rangeWritten);\n const trueStatements = lowerRange(index + 1, trueBodyEnd, trueWritten, inLoop, branchNonUniform, loopExit);\n if (trueStatements.at(-1)?.kind === \"return\" && plan.merges.length)\n {\n throw new Error(`WGSL fragment selection at ${index} terminates before merge assignments`);\n }\n for (const merge of plan.merges)\n {\n if (merge.viaSwitch) continue;\n trueStatements.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: valueReference(program, merge.trueIncoming, inputs), type: merge.type }\n });\n }\n let falseStatements = null;\n let falseWritten = null;\n if (plan.hasElse)\n {\n falseWritten = cloneWritten(rangeWritten);\n falseStatements = lowerRange(plan.region.elseInstruction + 1, plan.region.endInstruction, falseWritten, inLoop, branchNonUniform, loopExit);\n if (falseStatements.at(-1)?.kind === \"return\" && plan.merges.length)\n {\n throw new Error(`WGSL fragment selection at ${index} terminates before merge assignments`);\n }\n for (const merge of plan.merges)\n {\n falseStatements.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: merge.falseCode || valueReference(program, merge.falseIncoming, inputs), type: merge.type }\n });\n }\n }\n statements.push({\n kind: \"if\",\n instructionIndex: ifInstruction.index,\n dxbcOffset: ifInstruction.dxbcOffset,\n condition: { code: `${condition} ${comparison} 0u`, type: \"bool\" },\n statements: trueStatements,\n ...(falseStatements ? { elseStatements: falseStatements } : {})\n });\n if (plan.hasElse)\n {\n const trueReturns = trueStatements.at(-1)?.kind === \"return\";\n const falseReturns = falseStatements.at(-1)?.kind === \"return\";\n for (const [ fieldId, target ] of rangeWritten)\n {\n const fromTrue = trueWritten.get(fieldId) || new Set();\n const fromFalse = falseWritten.get(fieldId) || new Set();\n if (trueReturns && !falseReturns) for (const component of fromFalse) target.add(component);\n else if (falseReturns && !trueReturns) for (const component of fromTrue) target.add(component);\n else if (!trueReturns && !falseReturns)\n {\n for (const component of fromTrue) if (fromFalse.has(component)) target.add(component);\n }\n }\n }\n if (terminatesAllPaths(statements))\n {\n return statements;\n }\n index = plan.region.endInstruction;\n }\n return statements;\n }\n\n const lowered = lowerRange(0, program.instructions.length, written);\n if (!terminatesAllPaths(lowered)) throw new Error(\"WGSL fragment path must end in return\");\n const statements = hoistEscapingValues(lowered);\n return deepFreeze({\n kind: \"typed-shader-program\",\n format: \"CJS_TYPED_SHADER\",\n formatVersion: 1,\n source: program.source,\n stage: \"fragment\",\n entryPoint: \"main\",\n interface: { inputs, outputs },\n bindings,\n ...(resourceTransformPlan\n ? { resourceTransforms: resourceTransformPlan.resourceTransforms }\n : {}),\n immediateConstantBuffer: program.immediateConstantBuffer || null,\n constTables: program.constTables || null,\n requiresDerivativeUniformityOptOut: context.requiresDerivativeUniformityOptOut,\n statements\n });\n}\n"],"names":["COMPONENTS","SUPPORTED_OPCODES","Set","METADATA_OPCODE_EXTENSIONS","SAMPLE_OFFSET_OPCODES","NUMERIC_CONVERSIONS","Object","freeze","itof","utof","ftoi","ftou","INPUT_BUILTINS","SV_POSITION","name","SV_ISFRONTFACE","scalarType","DERIVATIVES","deriv_rtx","deriv_rty","deriv_rtx_coarse","deriv_rty_coarse","deriv_rtx_fine","deriv_rty_fine","REQUIRES_UNIFORM_CONTROL_FLOW","keys","componentsFromMask","mask","filter","_","index","sampleOffsetArgument","instruction","viewDimension","controls","extensions","extension","typeName","length","Error","offsets","sampleOffsets","u","v","w","every","value","Number","isInteger","scalarTypeName","type","float32","int32","uint32","bool","bitpattern32","isDeadUntypedWrite","program","write","readValueIds","localSsaDestination","has","valueId","values","find","entry","id","Array","from","some","component","componentTypes","mixedImmediateTypes","types","map","size","valueType","wgslType","fieldType","count","scalar","packedComponent","indexOf","interfaceField","rows","direction","registerIndex","reduce","accumulator","signature","components","semantic","String","semanticName","toUpperCase","builtin","startsWith","componentTypeName","kind","semanticIndex","attribute","groupSignaturesByRegister","signatures","groups","Map","set","get","push","liveInputRegisters","registers","instructions","ref","dataflow","reads","flatMap","read","refs","origin","register","match","exec","add","validateInterpolation","input","declarations","opcodeName","data","modes","interpolationModeName","Boolean","mode","next","interpolation","sourceRead","operandIndex","vectorCode","parts","join","reinterpretCode","code","fromType","toType","context","to","includes","valueReference","inputs","field","packed","target","writeMask","rawSelectedComponents","operand","destinationMask","activeComponents","selected","swizzle","slice","immediateRawBits","immediateValues","sourceIndex","bits","immediateParts","expectedType","hex","toString","padStart","validateRcpImmediate","operands","fixedSourceLanes","exponent","bindingForOperand","bindings","resourceKind","rangeId","resourceReference","matches","binding","validateFixedHandleBinding","originalBindingForOperand","candidates","range","lowerBound","absoluteIndex","undefined","relative","registerSpace","identity","transformedSampleForOperand","transformedInputs","original","textureBinding","transform","output","transformId","layer","cbufferVectorIndex","indices","dimension","last","at","base","validateIndexableTempRead","storage","valueStorageType","indexCode","cbufferParts","vectorIndex","generatedSymbol","part","icbParts","immediateConstantBuffer","constTableParts","validateIndexableTempOperand","table","constTables","symbol","modifierOnStorage","modifier","bit","raw","masked","MODIFIER_STORAGE_TYPES","applyModifier","expected","storageTypes","modifierName","applyLaneModifier","targetType","unsupportedMinPrecision","minPrecisionName","operandLaneExpression","laneIndex","moverData","replicated","operandExpression","componentIndex","bitcast","typeInfo","bitcasts","operandTypes","bitcastKey","validateRegisterBitcasts","required","forEach","intrinsicResult","resultType","writes","actual","requiredKeys","sort","actualKeys","zeroMask","fullMask","oneMask","floatBound","splatScalar","structuredLoadExpression","addressOperand","address","byteOffsetOperand","byteOffset","resource","validateFixedHandleOperand","buffer","structureStride","strideWords","firstWord","wordCount","addressInRange","word","wordAddress","safeWordAddress","expressionFor","source","forcedCount","op","operator","div","iadd","mul","src","lane","divisor","lanes","dividendCode","divisorCode","lt","ge","eq","ne","ilt","ige","ieq","ine","ult","uge","conversion","fn","saturate","texture","mipOperand","mipBits","resinfoReturnTypeName","mipCount","level","levelInRange","dims","loaded","element","safeLevel","dimensions","safeCoordinates","inBounds","sampler","transformed","samplerBinding","coordComponents","gradientComponents","coord","arrayArg","coord3","tex","offsetArg","sampled","applyResultBitcast","expression","intrinsicType","lowerInstruction","outputs","written","nonUniform","unsupportedExtension","requiresDerivativeUniformityOptOut","validatePreciseInstruction","imprecise","missing","instructionIndex","dxbcOffset","projection","testBoolean","scalarShape","condition","statements","uav","destinationOperands","lowerWrite","destination","indexableAddress","validateIndexableTempWrite","mixedTypes","words","intrinsic","packedCode","packedName","packedType","laneType","access","whenTrue","whenFalse","immediateSource","clampBounds","floatType","outputType","assignmentExpression","assignment","fieldId","lowered","isArray","deepFreeze","isFrozen","containsOutputAssignment","statement","elseStatements","clauses","clause","loopHasNonUniformExit","region","varying","regions","controlFlow","insideNestedLoop","candidate","startInstruction","endInstruction","conditionIsUniform","varyingGuard","lowerFragmentProgram","options","format","TypeError","stage","shaderModel","major","minor","requireRefactoringAllowed","liveRegisters","planFromBinding","bindingPlan","resourceTransforms","normalizeResourceTransformPlan","formatVersion","explicitPlan","resourceTransformPlan","JSON","stringify","lowerBindingLayout","plans","buildSelectionPlans","computeVaryingValues","incoming","exitMergeAssignments","loopExit","breakIndex","assign","lowerRange","start","end","rangeWritten","inLoop","flowNonUniform","plan","marker","breakInstruction","conditionOperand","conditionRead","continueInstruction","loopInstruction","merge","merges","entryIncoming","exitMerges","zeroCode","bodyWritten","cloneWritten","loopNonUniform","body","exitEdges","latch","backedgeIncoming","continuing","switchInstruction","selectorOperand","selectorRead","selector","clauseNonUniform","clauseResults","clauseIndex","clauseWritten","bodyStart","bodyEnd","outerMerges","perClause","selectors","isDefault","returns","defaultInstruction","sets","terminatesAllPaths","ifInstruction","hasElse","elseInstruction","falseCode","falseIncoming","comparison","branchNonUniform","trueBodyEnd","trueWritten","trueStatements","viaSwitch","trueIncoming","falseStatements","falseWritten","trueReturns","falseReturns","fromTrue","fromFalse","hoistEscapingValues","entryPoint","interface"],"mappings":";;;;;;;;;;AAcA,MAAMA,UAAU,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE;AACzC,MAAMC,iBAAiB,GAAG,IAAIC,GAAG,CAAC,CAC9B,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EACzE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EACxE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EACvE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACzE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAC/E,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EACvE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EACtF,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC1E,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAChC,CAAC;AACF,MAAMC,0BAA0B,GAAG,IAAID,GAAG,CAAC,CAAE,oBAAoB,EAAE,sBAAsB,CAAE,CAAC;AAC5F,MAAME,qBAAqB,GAAG,IAAIF,GAAG,CAAC,CAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAE,CAAC;AACvF,MAAMG,mBAAmB,GAAGC,MAAM,CAACC,MAAM,CAAC;AACtCC,EAAAA,IAAI,EAAE,CAAE,OAAO,EAAE,SAAS,CAAE;AAC5BC,EAAAA,IAAI,EAAE,CAAE,QAAQ,EAAE,SAAS,CAAE;AAC7BC,EAAAA,IAAI,EAAE,CAAE,SAAS,EAAE,OAAO,CAAE;AAC5BC,EAAAA,IAAI,EAAE,CAAE,SAAS,EAAE,QAAQ;AAC/B,CAAC,CAAC;AAEF,MAAMC,cAAc,GAAGN,MAAM,CAACC,MAAM,CAAC;AACjCM,EAAAA,WAAW,EAAE;AAAEC,IAAAA,IAAI,EAAE;GAAY;AACjCC,EAAAA,cAAc,EAAE;AAAED,IAAAA,IAAI,EAAE,cAAc;AAAEE,IAAAA,UAAU,EAAE;AAAO;AAC/D,CAAC,CAAC;AACF,MAAMC,WAAW,GAAGX,MAAM,CAACC,MAAM,CAAC;AAC9BW,EAAAA,SAAS,EAAE,MAAM;AAAEC,EAAAA,SAAS,EAAE,MAAM;AACpCC,EAAAA,gBAAgB,EAAE,YAAY;AAAEC,EAAAA,gBAAgB,EAAE,YAAY;AAC9DC,EAAAA,cAAc,EAAE,UAAU;AAAEC,EAAAA,cAAc,EAAE;AAChD,CAAC,CAAC;AACF;AACA;AACA;AACA,MAAMC,6BAA6B,GAAG,IAAItB,GAAG,CAAC,CAC1C,GAAGI,MAAM,CAACmB,IAAI,CAACR,WAAW,CAAC,EAAE,QAAQ,EAAE,UAAU,CACpD,CAAC;AAEF,SAASS,kBAAkBA,CAACC,IAAI,EAChC;AACI,EAAA,OAAO3B,UAAU,CAAC4B,MAAM,CAAC,CAACC,CAAC,EAAEC,KAAK,KAAK,CAACH,IAAI,GAAI,CAAC,IAAIG,KAAM,MAAM,CAAC,CAAC;AACvE;AAEA,SAASC,oBAAoBA,CAACC,WAAW,EAAEC,aAAa,EACxD;AACI,EAAA,MAAMC,QAAQ,GAAGF,WAAW,CAACG,UAAU,EAAEP,MAAM,CAAEQ,SAAS,IAAKA,SAAS,CAACC,QAAQ,KAAK,iBAAiB,CAAC,IAAI,EAAE;AAC9G,EAAA,IAAI,CAACH,QAAQ,CAACI,MAAM,EAAE,OAAO,EAAE;AAC/B,EAAA,IAAIJ,QAAQ,CAACI,MAAM,KAAK,CAAC,EACzB;IACI,MAAM,IAAIC,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,2CAA2C,CAAC;AAC9G,EAAA;EACA,IAAIG,aAAa,KAAK,IAAI,EAC1B;IACI,MAAM,IAAIM,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,oDAAoD,CAAC;AACvH,EAAA;AACA,EAAA,MAAMU,OAAO,GAAGN,QAAQ,CAAC,CAAC,CAAC,CAACO,aAAa;AACzC,EAAA,IAAI,CAAC,CAAED,OAAO,EAAEE,CAAC,EAAEF,OAAO,EAAEG,CAAC,EAAEH,OAAO,EAAEI,CAAC,CAAE,CAACC,KAAK,CAAEC,KAAK,IACpDC,MAAM,CAACC,SAAS,CAACF,KAAK,CAAC,IAAIA,KAAK,IAAI,EAAE,IAAIA,KAAK,IAAI,CAAC,CAAC,EACzD;IACI,MAAM,IAAIP,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,uCAAuC,CAAC;AAC1G,EAAA;AACA;AACA;EACA,OAAO,CAAA,YAAA,EAAeU,OAAO,CAACE,CAAC,KAAKF,OAAO,CAACG,CAAC,CAAA,CAAA,CAAG;AACpD;AAEA,SAASM,cAAcA,CAACC,IAAI,EAC5B;EACI,OAAQ;AAAEC,IAAAA,OAAO,EAAE,KAAK;AAAEC,IAAAA,KAAK,EAAE,KAAK;AAAEC,IAAAA,MAAM,EAAE,KAAK;AAAEC,IAAAA,IAAI,EAAE,MAAM;AAAEC,IAAAA,YAAY,EAAE;AAAM,GAAC,CAAEL,IAAI,CAAC,IAAI,IAAI;AAC7G;AAEA,SAASM,kBAAkBA,CAACC,OAAO,EAAEC,KAAK,EAAEC,YAAY,EAAEC,mBAAmB,EAC7E;AACI,EAAA,IAAI,CAACA,mBAAmB,IAAID,YAAY,CAACE,GAAG,CAACH,KAAK,CAACI,OAAO,CAAC,EAAE,OAAO,KAAK;AACzE,EAAA,MAAMhB,KAAK,GAAGW,OAAO,CAACM,MAAM,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,EAAE,KAAKR,KAAK,CAACI,OAAO,CAAC;EACxE,OAAOK,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAAC0C,IAAI,CAAEC,SAAS,IAAK,CAACrB,cAAc,CAACH,KAAK,EAAEyB,cAAc,GAAGD,SAAS,CAAC,CAAC,CAAC;AAC1G;AAEA,SAASE,mBAAmBA,CAACf,OAAO,EAAEC,KAAK,EAC3C;AACI,EAAA,MAAMZ,KAAK,GAAGW,OAAO,CAACM,MAAM,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,EAAE,KAAKR,KAAK,CAACI,OAAO,CAAC;AACxE,EAAA,IAAI,CAAChB,KAAK,IAAIY,KAAK,CAAC/B,IAAI,CAACW,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;EAChD,MAAMmC,KAAK,GAAGN,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAAC+C,GAAG,CAAEJ,SAAS,IAAKxB,KAAK,CAACyB,cAAc,GAAGD,SAAS,CAAC,CAAC;EAC1F,IAAIG,KAAK,CAACJ,IAAI,CAAEnB,IAAI,IAAK,CAACD,cAAc,CAACC,IAAI,CAAC,CAAC,IAAI,IAAIhD,GAAG,CAACuE,KAAK,CAAC,CAACE,IAAI,KAAK,CAAC,EAAE,OAAO,IAAI;AACzF,EAAA,OAAOF,KAAK;AAChB;AAGA,SAASG,SAASA,CAACnB,OAAO,EAAEC,KAAK,EACjC;AACI,EAAA,MAAMZ,KAAK,GAAGW,OAAO,CAACM,MAAM,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,EAAE,KAAKR,KAAK,CAACI,OAAO,CAAC;EACxE,MAAMW,KAAK,GAAGN,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAAC+C,GAAG,CAAEJ,SAAS,IAAKxB,KAAK,EAAEyB,cAAc,GAAGD,SAAS,CAAC,CAAC;EAC3F,IAAI,CAACG,KAAK,CAACnC,MAAM,IAAImC,KAAK,CAACJ,IAAI,CAAEnB,IAAI,IAAK,CAACD,cAAc,CAACC,IAAI,CAAC,CAAC,IAAI,IAAIhD,GAAG,CAACuE,KAAK,CAAC,CAACE,IAAI,KAAK,CAAC,EAC7F;IACI,MAAM,IAAIpC,KAAK,CAAC,CAAA,oBAAA,EAAuBmB,KAAK,CAACI,OAAO,+DAA+D,CAAC;AACxH,EAAA;AACA,EAAA,MAAM9C,UAAU,GAAGyD,KAAK,CAAC,CAAC,CAAC;EAC3B,OAAO;IACHzD,UAAU;IACV6D,QAAQ,EAAEJ,KAAK,CAACnC,MAAM,KAAK,CAAC,GAAGW,cAAc,CAACjC,UAAU,CAAC,GAAG,CAAA,GAAA,EAAMyD,KAAK,CAACnC,MAAM,IAAIW,cAAc,CAACjC,UAAU,CAAC,CAAA,CAAA;GAC/G;AACL;AAEA,SAAS8D,SAASA,CAAC9D,UAAU,EAAE+D,KAAK,EACpC;AACI,EAAA,MAAMC,MAAM,GAAG/B,cAAc,CAACjC,UAAU,CAAC;EACzC,IAAI,CAACgE,MAAM,EAAE,MAAM,IAAIzC,KAAK,CAAC,CAAA,mCAAA,EAAsCvB,UAAU,CAAA,CAAE,CAAC;EAChF,OAAO+D,KAAK,KAAK,CAAC,GAAGC,MAAM,GAAG,CAAA,GAAA,EAAMD,KAAK,CAAA,CAAA,EAAIC,MAAM,CAAA,CAAA,CAAG;AAC1D;AAEA,SAASC,eAAeA,CAACtD,IAAI,EAAE2C,SAAS,EACxC;AACI,EAAA,MAAMxC,KAAK,GAAGqC,KAAK,CAACC,IAAI,CAACzC,IAAI,CAAC,CAACuD,OAAO,CAACZ,SAAS,CAAC;AACjD,EAAA,IAAIxC,KAAK,GAAG,CAAC,EAAE,MAAM,IAAIS,KAAK,CAAC,CAAA,gBAAA,EAAmBZ,IAAI,CAAA,4BAAA,EAA+B2C,SAAS,EAAE,CAAC;EACjG,OAAOtE,UAAU,CAAC8B,KAAK,CAAC;AAC5B;AAEA,SAASqD,cAAcA,CAACC,IAAI,EAAEC,SAAS,EACvC;AACI,EAAA,MAAMC,aAAa,GAAGF,IAAI,CAAC,CAAC,CAAC,CAACE,aAAa;AAC3C,EAAA,MAAM3D,IAAI,GAAGyD,IAAI,CAACG,MAAM,CAAC,CAACC,WAAW,EAAEC,SAAS,KAAKD,WAAW,GAAGC,SAAS,CAAC9D,IAAI,EAAE,CAAC,CAAC;AACrF,EAAA,MAAM+D,UAAU,GAAGhE,kBAAkB,CAACC,IAAI,CAAC;EAC3C,IAAI,CAAC+D,UAAU,CAACpD,MAAM,IAAI,CAACoD,UAAU,CAAC7C,KAAK,CAAC,CAACyB,SAAS,EAAExC,KAAK,KAAKwC,SAAS,KAAKtE,UAAU,CAAC8B,KAAK,CAAC,CAAC,EAClG;IACI,MAAM,IAAIS,KAAK,CAAC,CAAA,cAAA,EAAiB8C,SAAS,CAAA,UAAA,EAAaC,aAAa,mCAAmC,CAAC;AAC5G,EAAA;AACA,EAAA,MAAMK,QAAQ,GAAGC,MAAM,CAACR,IAAI,CAAC,CAAC,CAAC,CAACS,YAAY,IAAI,EAAE,CAAC,CAACC,WAAW,EAAE;AACjE,EAAA,IAAIT,SAAS,KAAK,QAAQ,IAAIM,QAAQ,KAAK,WAAW,EACtD;AACI,IAAA,MAAM,IAAIpD,KAAK,CAAC,CAAA,8BAAA,EAAiCoD,QAAQ,mBAAmB,CAAC;AACjF,EAAA;AACA,EAAA,MAAMI,OAAO,GAAGV,SAAS,KAAK,OAAO,GAAGzE,cAAc,CAAC+E,QAAQ,CAAC,IAAI,IAAI,GAAG,IAAI;AAC/E,EAAA,IAAIN,SAAS,KAAK,OAAO,IAAID,IAAI,CAACf,IAAI,CAAEoB,SAAS,IAAKG,MAAM,CAACH,SAAS,CAACI,YAAY,IAAI,EAAE,CAAC,CAACC,WAAW,EAAE,CAACE,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAACD,OAAO,EACvI;AACI,IAAA,MAAM,IAAIxD,KAAK,CAAC,CAAA,gCAAA,EAAmCoD,QAAQ,mBAAmB,CAAC;AACnF,EAAA;AACA,EAAA,MAAMM,iBAAiB,GAAGb,IAAI,CAAC,CAAC,CAAC,CAACa,iBAAiB;AACnD,EAAA,IAAIb,IAAI,CAACf,IAAI,CAAEoB,SAAS,IAAKA,SAAS,CAACQ,iBAAiB,KAAKA,iBAAiB,CAAC,EAC/E;IACI,MAAM,IAAI1D,KAAK,CAAC,CAAA,cAAA,EAAiB8C,SAAS,CAAA,UAAA,EAAaC,aAAa,8BAA8B,CAAC;AACvG,EAAA;AACA,EAAA,MAAMtE,UAAU,GAAG+E,OAAO,EAAE/E,UAAU,IAAIiF,iBAAiB;EAC3D,OAAO;AACHC,IAAAA,IAAI,EAAE,iBAAiB;AACvBhC,IAAAA,EAAE,EAAE,CAAA,EAAGmB,SAAS,CAAA,EAAA,EAAKC,aAAa,CAAA,CAAE;IACpCD,SAAS;IACTC,aAAa;AACbO,IAAAA,YAAY,EAAET,IAAI,CAAC,CAAC,CAAC,CAACS,YAAY;AAClCM,IAAAA,aAAa,EAAEf,IAAI,CAAC,CAAC,CAAC,CAACe,aAAa;IACpCT,UAAU;IACV1E,UAAU;AACVkC,IAAAA,IAAI,EAAE6C,OAAO,EAAE/E,UAAU,GAAG+E,OAAO,CAAC/E,UAAU,GAAG8D,SAAS,CAACmB,iBAAiB,EAAEP,UAAU,CAACpD,MAAM,CAAC;IAChGxB,IAAI,EAAEiF,OAAO,EAAEjF,IAAI,IAAI,CAAA,EAAGuE,SAAS,CAAA,EAAGC,aAAa,CAAA,CAAE;IACrDc,SAAS,EAAEL,OAAO,GACZ;AAAEG,MAAAA,IAAI,EAAE,SAAS;MAAEpF,IAAI,EAAEiF,OAAO,CAACjF;AAAK,KAAC,GACvC;AAAEoF,MAAAA,IAAI,EAAE,UAAU;MAAEpE,KAAK,EAAEuD,SAAS,KAAK,QAAQ,GAAGD,IAAI,CAAC,CAAC,CAAC,CAACe,aAAa,GAAGb;AAAc;GACnG;AACL;AAEA,SAASe,yBAAyBA,CAACC,UAAU,EAC7C;AACI,EAAA,MAAMC,MAAM,GAAG,IAAIC,GAAG,EAAE;AACxB,EAAA,KAAK,MAAMf,SAAS,IAAIa,UAAU,EAClC;AACI,IAAA,IAAI,CAACC,MAAM,CAAC1C,GAAG,CAAC4B,SAAS,CAACH,aAAa,CAAC,EAAEiB,MAAM,CAACE,GAAG,CAAChB,SAAS,CAACH,aAAa,EAAE,EAAE,CAAC;IACjFiB,MAAM,CAACG,GAAG,CAACjB,SAAS,CAACH,aAAa,CAAC,CAACqB,IAAI,CAAClB,SAAS,CAAC;AACvD,EAAA;EACA,OAAOtB,KAAK,CAACC,IAAI,CAACmC,MAAM,CAACxC,MAAM,EAAE,CAAC;AACtC;AAEA,SAAS6C,kBAAkBA,CAACnD,OAAO,EACnC;EACI,MAAMM,MAAM,GAAG,IAAIyC,GAAG,CAAC/C,OAAO,CAACM,MAAM,CAACW,GAAG,CAAE5B,KAAK,IAAK,CAAEA,KAAK,CAACoB,EAAE,EAAEpB,KAAK,CAAE,CAAC,CAAC;AAC1E,EAAA,MAAM+D,SAAS,GAAG,IAAI3G,GAAG,EAAE;AAC3B,EAAA,KAAK,MAAM8B,WAAW,IAAIyB,OAAO,CAACqD,YAAY,EAC9C;AACI,IAAA,KAAK,MAAMC,GAAG,IAAI/E,WAAW,CAACgF,QAAQ,CAACC,KAAK,CAACC,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACC,IAAI,CAAC,EACzE;MACI,MAAMtE,KAAK,GAAGiB,MAAM,CAAC2C,GAAG,CAACK,GAAG,CAACjD,OAAO,CAAC;AACrC,MAAA,IAAIhB,KAAK,EAAEuE,MAAM,KAAK,oBAAoB,EAC1C;AACI,QAAA,MAAM,IAAI9E,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,iBAAA,EAAoBgB,KAAK,CAACwE,QAAQ,CAAA,CAAA,EAAIP,GAAG,CAACzC,SAAS,EAAE,CAAC;AACxH,MAAA;AACA,MAAA,MAAMiD,KAAK,GAAGzE,KAAK,EAAEuE,MAAM,KAAK,eAAe,IAAI,kBAAkB,CAACG,IAAI,CAAC1E,KAAK,CAACwE,QAAQ,CAAC;AAC1F,MAAA,IAAIC,KAAK,EAAEV,SAAS,CAACY,GAAG,CAAC1E,MAAM,CAACwE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAA;AACJ,EAAA;AACA,EAAA,OAAOV,SAAS;AACpB;AAEA,SAASa,qBAAqBA,CAACjE,OAAO,EAAEkE,KAAK,EAC7C;AACI,EAAA,IAAIA,KAAK,CAACvB,SAAS,CAACF,IAAI,KAAK,SAAS,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,MAAM0B,YAAY,GAAGnE,OAAO,CAACmE,YAAY,CAAChG,MAAM,CAAEqC,KAAK,IACnDA,KAAK,CAAC4D,UAAU,KAAK,cAAc,IAAI5D,KAAK,CAAC6D,IAAI,EAAExC,aAAa,KAAKqC,KAAK,CAACrC,aAAa,CAAC;EAC7F,MAAMyC,KAAK,GAAG,IAAI7H,GAAG,CAAC0H,YAAY,CAAClD,GAAG,CAAET,KAAK,IAAKA,KAAK,CAAC6D,IAAI,EAAEE,qBAAqB,CAAC,CAACpG,MAAM,CAACqG,OAAO,CAAC,CAAC;AACrG,EAAA,IAAIF,KAAK,CAACpD,IAAI,GAAG,CAAC,EAClB;IACI,MAAM,IAAIpC,KAAK,CAAC,CAAA,qBAAA,EAAwBoF,KAAK,CAACrC,aAAa,kCAAkC,CAAC;AAClG,EAAA;AACA,EAAA,MAAM4C,IAAI,GAAGH,KAAK,CAAChE,MAAM,EAAE,CAACoE,IAAI,EAAE,CAACrF,KAAK;AACxC,EAAA,IAAI,CAACoF,IAAI,IAAIA,IAAI,KAAK,QAAQ,EAAE;EAChC,IAAIA,IAAI,KAAK,sBAAsB,EACnC;IACIP,KAAK,CAACS,aAAa,GAAG,QAAQ;AAC9B,IAAA;AACJ,EAAA;EACA,MAAM,IAAI7F,KAAK,CAAC,CAAA,qBAAA,EAAwBoF,KAAK,CAACrC,aAAa,CAAA,+BAAA,EAAkC4C,IAAI,CAAA,CAAE,CAAC;AACxG;AAEA,SAASG,UAAUA,CAACrG,WAAW,EAAEsG,YAAY,EAC7C;EACI,OAAOtG,WAAW,CAACgF,QAAQ,CAACC,KAAK,CAACjD,IAAI,CAAEC,KAAK,IACzCA,KAAK,CAACiC,IAAI,KAAK,YAAY,IAAIjC,KAAK,CAACqE,YAAY,KAAKA,YAAY,CAAC,IAAI,IAAI;AACnF;AAEA,SAASC,UAAUA,CAACC,KAAK,EAAExH,UAAU,EACrC;EACI,IAAIwH,KAAK,CAAClG,MAAM,KAAK,CAAC,EAAE,OAAOkG,KAAK,CAAC,CAAC,CAAC;AACvC,EAAA,OAAO,MAAMA,KAAK,CAAClG,MAAM,CAAA,CAAA,EAAIW,cAAc,CAACjC,UAAU,CAAC,CAAA,EAAA,EAAKwH,KAAK,CAACC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG;AACnF;AAEA,SAASC,eAAeA,CAACC,IAAI,EAAEC,QAAQ,EAAEC,MAAM,EAAE9D,KAAK,EAAE+D,OAAO,EAC/D;AACI,EAAA,MAAM1E,IAAI,GAAGnB,cAAc,CAAC2F,QAAQ,CAAC;AACrC,EAAA,MAAMG,EAAE,GAAG9F,cAAc,CAAC4F,MAAM,CAAC;AACjC,EAAA,IAAI,CAACzE,IAAI,IAAI,CAAC2E,EAAE,EAAE,MAAM,IAAIxG,KAAK,CAAC,gCAAgCuG,OAAO,CAAA,MAAA,EAASF,QAAQ,CAAA,IAAA,EAAOC,MAAM,EAAE,CAAC;AAC1G,EAAA,IAAIzE,IAAI,KAAK2E,EAAE,EAAE,OAAOJ,IAAI;EAC5B,IAAI,CAAC,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE,CAACK,QAAQ,CAAC5E,IAAI,CAAC,IAAI,CAAC,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE,CAAC4E,QAAQ,CAACD,EAAE,CAAC,EACpF;IACI,MAAM,IAAIxG,KAAK,CAAC,CAAA,iCAAA,EAAoCuG,OAAO,SAASF,QAAQ,CAAA,IAAA,EAAOC,MAAM,CAAA,CAAE,CAAC;AAChG,EAAA;EACA,OAAO,CAAA,QAAA,EAAW/D,SAAS,CAAC+D,MAAM,EAAE9D,KAAK,CAAC,CAAA,EAAA,EAAK4D,IAAI,CAAA,CAAA,CAAG;AAC1D;AAEA,SAASM,cAAcA,CAACxF,OAAO,EAAEsD,GAAG,EAAEmC,MAAM,EAC5C;AACI,EAAA,MAAMpG,KAAK,GAAGW,OAAO,CAACM,MAAM,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,EAAE,KAAK6C,GAAG,CAACjD,OAAO,CAAC;AACtE,EAAA,IAAI,CAAChB,KAAK,EAAE,MAAM,IAAIP,KAAK,CAAC,CAAA,uCAAA,EAA0CwE,GAAG,CAACjD,OAAO,CAAA,CAAE,CAAC;AACpF,EAAA,IAAIhB,KAAK,CAACuE,MAAM,KAAK,oBAAoB,EAAE,MAAM,IAAI9E,KAAK,CAAC,CAAA,8BAAA,EAAiCO,KAAK,CAACwE,QAAQ,CAAA,CAAA,EAAIP,GAAG,CAACzC,SAAS,EAAE,CAAC;AAC9H,EAAA,IAAIxB,KAAK,CAACuE,MAAM,KAAK,eAAe,EACpC;AACI,IAAA,MAAM/B,aAAa,GAAGvC,MAAM,CAAC,kBAAkB,CAACyE,IAAI,CAAC1E,KAAK,CAACwE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,IAAA,MAAM6B,KAAK,GAAGD,MAAM,CAAClF,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACqB,aAAa,KAAKA,aAAa,CAAC;AAC3E,IAAA,IAAI,CAAC6D,KAAK,EAAE,MAAM,IAAI5G,KAAK,CAAC,CAAA,0CAAA,EAA6CO,KAAK,CAACwE,QAAQ,CAAA,CAAE,CAAC;AAC1F,IAAA,MAAM8B,MAAM,GAAGnE,eAAe,CAACkE,KAAK,CAACzD,UAAU,CAAC+C,IAAI,CAAC,EAAE,CAAC,EAAE1B,GAAG,CAACzC,SAAS,CAAC;IACxE,MAAMqE,IAAI,GAAGQ,KAAK,CAACzD,UAAU,CAACpD,MAAM,KAAK,CAAC,GAAG,CAAA,MAAA,EAAS6G,KAAK,CAACrI,IAAI,EAAE,GAAG,CAAA,MAAA,EAASqI,KAAK,CAACrI,IAAI,CAAA,CAAA,EAAIsI,MAAM,CAAA,CAAE;IACpG,MAAMC,MAAM,GAAGvG,KAAK,CAACyB,cAAc,GAAGwC,GAAG,CAACzC,SAAS,CAAC;AACpD,IAAA,IAAI6E,KAAK,CAACnI,UAAU,KAAK,MAAM,EAC/B;AACI,MAAA,IAAIqI,MAAM,KAAK,MAAM,EAAE,OAAOV,IAAI;MAClC,IAAIU,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,cAAc,EAAE,OAAO,CAAA,wBAAA,EAA2BV,IAAI,CAAA,CAAA,CAAG;AAC/F,MAAA,IAAIU,MAAM,KAAK,OAAO,EAAE,OAAO,CAAA,gBAAA,EAAmBV,IAAI,CAAA,CAAA,CAAG;AACzD,MAAA,MAAM,IAAIpG,KAAK,CAAC,CAAA,qCAAA,EAAwCO,KAAK,CAACwE,QAAQ,CAAA,CAAA,EAAIP,GAAG,CAACzC,SAAS,CAAA,IAAA,EAAO+E,MAAM,EAAE,CAAC;AAC3G,IAAA;IACA,OAAOX,eAAe,CAACC,IAAI,EAAEQ,KAAK,CAACnI,UAAU,EAAEqI,MAAM,EAAE,CAAC,EAAE,CAAA,EAAGvG,KAAK,CAACwE,QAAQ,IAAIP,GAAG,CAACzC,SAAS,CAAA,CAAE,CAAC;AACnG,EAAA;AACA,EAAA,IAAIxB,KAAK,CAACuE,MAAM,KAAK,mBAAmB,IAAIvE,KAAK,CAACwG,SAAS,CAAChH,MAAM,GAAG,CAAC,EACtE;IACI,MAAMiC,cAAc,GAAGJ,KAAK,CAACC,IAAI,CAACtB,KAAK,CAACwG,SAAS,CAAC,CAAC5E,GAAG,CAAEJ,SAAS,IAAKxB,KAAK,CAACyB,cAAc,GAAGD,SAAS,CAAC,CAAC;AACxG,IAAA,IAAI,IAAIpE,GAAG,CAACqE,cAAc,CAAC,CAACI,IAAI,GAAG,CAAC,EAAE,OAAO,CAAA,EAAG7B,KAAK,CAACoB,EAAE,IAAI6C,GAAG,CAACzC,SAAS,CAAA,CAAE;AAC/E,EAAA;EACA,MAAM8E,MAAM,GAAGnE,eAAe,CAACnC,KAAK,CAACwG,SAAS,EAAEvC,GAAG,CAACzC,SAAS,CAAC;AAC9D,EAAA,OAAOxB,KAAK,CAACwG,SAAS,CAAChH,MAAM,KAAK,CAAC,GAAGQ,KAAK,CAACoB,EAAE,GAAG,CAAA,EAAGpB,KAAK,CAACoB,EAAE,CAAA,CAAA,EAAIkF,MAAM,CAAA,CAAE;AAC5E;AAEA,SAASG,qBAAqBA,CAACC,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE2E,gBAAgB,GAAG,IAAI,EACvF;AACI,EAAA,MAAMC,QAAQ,GAAGH,OAAO,CAACG,QAAQ,IAAI,EAAE;AACvC,EAAA,IAAIA,QAAQ,EAAE,OAAOxF,KAAK,CAACC,IAAI,CAAC;AAAE9B,IAAAA,MAAM,EAAEyC;GAAO,EAAE,MAAM4E,QAAQ,CAAC;AAClE,EAAA,MAAMC,OAAO,GAAGJ,OAAO,CAACI,OAAO,IAAI,MAAM;EACzC,MAAMjI,IAAI,GAAG+H,gBAAgB,IAAIvF,KAAK,CAACC,IAAI,CAACqF,eAAe,CAAC;EAC5D,OAAO9H,IAAI,CAACkI,KAAK,CAAC,CAAC,EAAE9E,KAAK,CAAC,CAACL,GAAG,CAAEJ,SAAS,IAAKsF,OAAO,CAAC5J,UAAU,CAACkF,OAAO,CAACZ,SAAS,CAAC,CAAC,IAAIsF,OAAO,CAAC,CAAC,CAAC,CAAC;AACxG;AAEA,SAASE,gBAAgBA,CAACN,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE2E,gBAAgB,GAAG,IAAI,EAClF;AACI,EAAA,MAAM3F,MAAM,GAAGyF,OAAO,CAACO,eAAe,IAAI,EAAE;EAC5C,MAAMrE,UAAU,GAAG6D,qBAAqB,CAACC,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE2E,gBAAgB,CAAC;EAC3F,OAAOhE,UAAU,CAAChB,GAAG,CAAC,CAACJ,SAAS,EAAExC,KAAK,KACvC;AACI,IAAA,MAAMkI,WAAW,GAAGjG,MAAM,CAACzB,MAAM,KAAK,CAAC,GAAG,CAAC,GAAGtC,UAAU,CAACkF,OAAO,CAACZ,SAAS,CAAC;AAC3E,IAAA,MAAM2F,IAAI,GAAGlG,MAAM,CAACiG,WAAW,CAAC,EAAE3G,MAAM,IAAIU,MAAM,CAACjC,KAAK,CAAC,EAAEuB,MAAM;AACjE,IAAA,IAAI,CAACN,MAAM,CAACC,SAAS,CAACiH,IAAI,CAAC,EAAE,MAAM,IAAI1H,KAAK,CAAC,gDAAgD,CAAC;IAC9F,OAAO0H,IAAI,KAAK,CAAC;AACrB,EAAA,CAAC,CAAC;AACN;AAEA,SAASC,cAAcA,CAACV,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAEoF,YAAY,EAAET,gBAAgB,GAAG,IAAI,EAC9F;AACI,EAAA,OAAOI,gBAAgB,CAACN,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE2E,gBAAgB,CAAC,CAAChF,GAAG,CAAEuF,IAAI,IACpF;AACI,IAAA,MAAMG,GAAG,GAAG,CAAA,EAAA,EAAK,CAACH,IAAI,KAAK,CAAC,EAAEI,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,CAAG;AAC9D,IAAA,IAAIH,YAAY,KAAK,SAAS,EAAE,OAAO,CAAA,aAAA,EAAgBC,GAAG,CAAA,CAAA,CAAG;AAC7D,IAAA,IAAID,YAAY,KAAK,OAAO,EAAE,OAAO,CAAA,aAAA,EAAgBC,GAAG,CAAA,CAAA,CAAG;AAC3D,IAAA,OAAOA,GAAG;AACd,EAAA,CAAC,CAAC;AACN;AAEA,SAASG,oBAAoBA,CAAC9G,OAAO,EAAEzB,WAAW,EAAE0B,KAAK,EACzD;AACI,EAAA,MAAM8F,OAAO,GAAGxH,WAAW,CAACwI,QAAQ,CAAC,CAAC,CAAC;AACvC,EAAA,IAAIhB,OAAO,EAAEnH,QAAQ,KAAK,aAAa,EAAE;EACzC,MAAMqH,gBAAgB,GAAGe,gBAAgB,CAACzI,WAAW,EAAE,CAAC,EAAEyB,OAAO,CAAC;AAClE,EAAA,MAAMwG,IAAI,GAAGH,gBAAgB,CAACN,OAAO,EAAE9F,KAAK,CAAC/B,IAAI,EAAE+B,KAAK,CAAC/B,IAAI,CAACW,MAAM,EAAEoH,gBAAgB,CAAC;AACvF,EAAA,IAAIO,IAAI,CAAC5F,IAAI,CAAEvB,KAAK,IACpB;AACI,IAAA,MAAM4H,QAAQ,GAAI5H,KAAK,KAAK,EAAE,GAAI,IAAI;AACtC,IAAA,OAAO4H,QAAQ,KAAK,CAAC,IAAIA,QAAQ,KAAK,IAAI;AAC9C,EAAA,CAAC,CAAC,EACF;IACI,MAAM,IAAInI,KAAK,CAAC,CAAA,8BAAA,EAAiCP,WAAW,CAACF,KAAK,gDAAgD,CAAC;AACvH,EAAA;AACJ;AAEA,SAAS6I,iBAAiBA,CAACC,QAAQ,EAAEC,YAAY,EAAErB,OAAO,EAC1D;AACI,EAAA,MAAMsB,OAAO,GAAGtB,OAAO,CAACuB,iBAAiB,EAAED,OAAO;AAClD,EAAA,IAAI/H,MAAM,CAACC,SAAS,CAAC8H,OAAO,CAAC,EAC7B;AACI,IAAA,MAAME,OAAO,GAAGJ,QAAQ,CAAChJ,MAAM,CAAEqC,KAAK,IAAKA,KAAK,CAAC4G,YAAY,KAAKA,YAAY,IAAI5G,KAAK,CAAC6G,OAAO,KAAKA,OAAO,CAAC;AAC5G,IAAA,IAAIE,OAAO,CAAC1I,MAAM,GAAG,CAAC,EACtB;MACI,MAAM,IAAIC,KAAK,CAAC,CAAA,cAAA,EAAiBsI,YAAY,CAAA,OAAA,EAAUC,OAAO,eAAe,CAAC;AAClF,IAAA;AACA,IAAA,MAAMG,OAAO,GAAGD,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;AAClC,IAAA,OAAOH,YAAY,KAAK,gBAAgB,GAClCI,OAAO,GACPC,0BAA0B,CAAC1B,OAAO,EAAEyB,OAAO,EAAE,UAAU,CAAC;AAClE,EAAA;EACA,MAAMA,OAAO,GAAGL,QAAQ,CAAC5G,IAAI,CAAEC,KAAK,IAChCA,KAAK,CAAC4G,YAAY,KAAKA,YAAY,IAAI5G,KAAK,CAACqB,aAAa,KAAKkE,OAAO,CAAClE,aAAa,CAAC,IAAI,IAAI;AACjG,EAAA,OAAOuF,YAAY,KAAK,gBAAgB,GAClCI,OAAO,GACPC,0BAA0B,CAAC1B,OAAO,EAAEyB,OAAO,EAAE,UAAU,CAAC;AAClE;AAEA,SAASE,yBAAyBA,CAAC1H,OAAO,EAAEoH,YAAY,EAAErB,OAAO,EACjE;AACI,EAAA,MAAMsB,OAAO,GAAGtB,OAAO,CAACuB,iBAAiB,EAAED,OAAO;AAClD,EAAA,MAAMM,UAAU,GAAG3H,OAAO,CAACmH,QAAQ,CAAChJ,MAAM,CAAEqC,KAAK,IAC7CA,KAAK,CAAC4G,YAAY,KAAKA,YAAY,CAAC;EACxC,MAAMG,OAAO,GAAGjI,MAAM,CAACC,SAAS,CAAC8H,OAAO,CAAC,GACnCM,UAAU,CAACxJ,MAAM,CAAEqC,KAAK,IAAKA,KAAK,CAACoH,KAAK,EAAEP,OAAO,KAAKA,OAAO,CAAC,GAC9DM,UAAU,CAACxJ,MAAM,CAAEqC,KAAK,IACtB,CAACA,KAAK,CAACoH,KAAK,EAAEC,UAAU,IAAIrH,KAAK,CAACqB,aAAa,MAAMkE,OAAO,CAAClE,aAAa,CAAC;AACnF,EAAA,IAAI0F,OAAO,CAAC1I,MAAM,GAAG,CAAC,EACtB;AACI,IAAA,MAAM,IAAIC,KAAK,CAAC,CAAA,cAAA,EAAiBsI,YAAY,+BAA+B,CAAC;AACjF,EAAA;AACA,EAAA,MAAMI,OAAO,GAAGD,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;AAClC,EAAA,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;AACzB,EAAA,MAAMM,aAAa,GAAG/B,OAAO,CAACuB,iBAAiB,EAAEQ,aAAa;EAC9D,MAAMjG,aAAa,GAAG2F,OAAO,CAACI,KAAK,EAAEC,UAAU,IAAIL,OAAO,CAAC3F,aAAa;EACxE,IAAIiG,aAAa,KAAKC,SAAS,KACvBD,aAAa,EAAEE,QAAQ,IACpBF,aAAa,EAAExH,MAAM,EAAEzB,MAAM,KAAK,CAAC,IACnCiJ,aAAa,CAACxH,MAAM,CAAC,CAAC,CAAC,KAAKuB,aAAa,CAAC,EACrD;AACI,IAAA,MAAM,IAAI/C,KAAK,CAAC,CAAA,cAAA,EAAiBsI,YAAY,kCAAkC,CAAC;AACpF,EAAA;EACA,MAAMa,aAAa,GAAGT,OAAO,CAACI,KAAK,EAAEK,aAAa,IAAI,CAAC;EACvD,OAAO;IACHT,OAAO;AACPU,IAAAA,QAAQ,EAAE,CAAA,EAAGd,YAAY,CAAA,CAAA,EAAIa,aAAa,IAAIpG,aAAa,CAAA;GAC9D;AACL;AAEA,SAASsG,2BAA2BA,CAACnI,OAAO,EAAE+F,OAAO,EAAEoB,QAAQ,EAAE9B,OAAO,EACxE;EACI,IAAI,CAACA,OAAO,EAAE+C,iBAAiB,EAAElH,IAAI,EAAE,OAAO,IAAI;EAClD,MAAMmH,QAAQ,GAAGX,yBAAyB,CAAC1H,OAAO,EAAE,kBAAkB,EAAE+F,OAAO,CAAC;AAChF,EAAA,MAAM7B,KAAK,GAAGmE,QAAQ,GAAGhD,OAAO,CAAC+C,iBAAiB,CAACnF,GAAG,CAACoF,QAAQ,CAACH,QAAQ,CAAC,GAAG,IAAI;AAChF,EAAA,IAAI,CAAChE,KAAK,EAAE,OAAO,IAAI;AACvB,EAAA,MAAMoE,cAAc,GAAGnB,QAAQ,CAAC5G,IAAI,CAAEiH,OAAO,IACzCA,OAAO,CAACJ,YAAY,KAAK,kBAAkB,IACxCI,OAAO,CAACU,QAAQ,KAAKhE,KAAK,CAACqE,SAAS,CAACC,MAAM,CAACN,QAAQ,IACpDV,OAAO,CAACiB,WAAW,KAAKvE,KAAK,CAACqE,SAAS,CAAC9H,EAAE,CAAC,IAAI,IAAI;EAC1D,IAAI,CAAC6H,cAAc,EACnB;IACI,MAAM,IAAIxJ,KAAK,CAAC,CAAA,iCAAA,EAAoCoF,KAAK,CAACqE,SAAS,CAAC9H,EAAE,CAAA,wBAAA,CAA0B,CAAC;AACrG,EAAA;EACA,OAAO;IAAE6H,cAAc;IAAEI,KAAK,EAAExE,KAAK,CAACwE;GAAO;AACjD;AAEA,SAASC,kBAAkBA,CAAC3I,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEN,MAAM,EAC/E;AACI,EAAA,MAAMmD,OAAO,GAAG7C,OAAO,CAAC6C,OAAO,IAAI,EAAE;AACrC,EAAA,KAAK,IAAIC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAGD,OAAO,CAAC/J,MAAM,GAAG,CAAC,EAAEgK,SAAS,IAAI,CAAC,EACtE;AACI,IAAA,IAAID,OAAO,CAACC,SAAS,CAAC,CAACb,QAAQ,EAAE,MAAM,IAAIlJ,KAAK,CAAC,mEAAmE,CAAC;AACzH,EAAA;EACA,MAAMgK,IAAI,GAAGF,OAAO,CAACG,EAAE,CAAC,EAAE,CAAC;EAC3B,MAAMC,IAAI,GAAGF,IAAI,EAAExI,MAAM,EAAEzB,MAAM,GAAGiK,IAAI,CAACxI,MAAM,CAAC,CAAC,CAAC,GAAIwI,IAAI,EAAEd,QAAQ,GAAG,CAAC,GAAGD,SAAU;AACrF,EAAA,IAAI,CAACzI,MAAM,CAACC,SAAS,CAACyJ,IAAI,CAAC,IAAIA,IAAI,GAAG,CAAC,EAAE,MAAM,IAAIlK,KAAK,CAAC,6DAA6D,CAAC;EACvH,IAAI,CAACgK,IAAI,CAACd,QAAQ,EAAE,OAAO,CAAA,EAAGgB,IAAI,CAAA,CAAE;AACpC,EAAA,MAAMtF,IAAI,GAAGnF,WAAW,CAACgF,QAAQ,CAACC,KAAK,CAACjD,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACiC,IAAI,KAAK,YAAY,IAC5EjC,KAAK,CAACqE,YAAY,KAAKA,YAAY,IAAIrE,KAAK,CAACqI,SAAS,KAAKD,OAAO,CAAC/J,MAAM,GAAG,CAAC,CAAC;AACrF,EAAA,IAAI,CAAC6E,IAAI,IAAIA,IAAI,CAACC,IAAI,CAAC9E,MAAM,KAAK,CAAC,EAAE,MAAM,IAAIC,KAAK,CAAC,8DAA8D,CAAC;AACpH,EAAA,IAAIgK,IAAI,CAACd,QAAQ,EAAEpJ,QAAQ,KAAK,gBAAgB,EAChD;AACIqK,IAAAA,yBAAyB,CAACjJ,OAAO,EAAE8I,IAAI,CAACd,QAAQ,EAAEtE,IAAI,EAAEoC,qBAAqB,CAACgD,IAAI,CAACd,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACzG,EAAA;AACA,EAAA,MAAM1E,GAAG,GAAGI,IAAI,CAACC,IAAI,CAAC,CAAC,CAAC;AACxB,EAAA,MAAMuF,OAAO,GAAGC,gBAAgB,CAACnJ,OAAO,EAAEsD,GAAG,CAAC;EAC9C,IAAI8F,SAAS,GAAG5D,cAAc,CAACxF,OAAO,EAAEsD,GAAG,EAAEmC,MAAM,CAAC;EACpD,IAAIyD,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,cAAc,EAAEE,SAAS,GAAG,CAAA,IAAA,EAAOA,SAAS,CAAA,CAAA,CAAG,CAAC,KACnF,IAAIF,OAAO,KAAK,OAAO,EAAE,MAAM,IAAIpK,KAAK,CAAC,CAAA,yDAAA,EAA4DoK,OAAO,CAAA,CAAE,CAAC;EACpH,OAAOF,IAAI,KAAK,CAAC,GAAGI,SAAS,GAAG,CAAA,EAAGJ,IAAI,CAAA,GAAA,EAAMI,SAAS,CAAA,CAAE;AAC5D;AAEA,SAASC,YAAYA,CAACrJ,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE6F,QAAQ,EAAET,YAAY,EAAEjB,MAAM,EAAEQ,gBAAgB,GAAG,IAAI,EAClJ;EACI,MAAMuB,OAAO,GAAGN,iBAAiB,CAACC,QAAQ,EAAE,gBAAgB,EAAEpB,OAAO,CAAC;AACtE,EAAA,IAAI,CAACyB,OAAO,EAAE,MAAM,IAAI1I,KAAK,CAAC,CAAA,+BAAA,EAAkCiH,OAAO,CAAClE,aAAa,CAAA,CAAE,CAAC;AACxF,EAAA,MAAMyH,WAAW,GAAGX,kBAAkB,CAAC3I,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEN,MAAM,CAAC;EAC3F,MAAMV,KAAK,GAAGe,qBAAqB,CAACC,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE2E,gBAAgB,CAAC,CACjFhF,GAAG,CAAEJ,SAAS,IAAK,CAAA,EAAG2G,OAAO,CAAC+B,eAAe,CAAA,CAAA,EAAID,WAAW,CAAA,EAAA,EAAKzI,SAAS,CAAA,CAAE,CAAC;AAClF,EAAA,IAAI6F,YAAY,KAAK,SAAS,EAAE,OAAO3B,KAAK;AAC5C,EAAA,IAAI,CAAC,CAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAE,CAACQ,QAAQ,CAACmB,YAAY,CAAC,EACjE;AACI,IAAA,MAAM,IAAI5H,KAAK,CAAC,CAAA,kDAAA,EAAqD4H,YAAY,EAAE,CAAC;AACxF,EAAA;AACA,EAAA,MAAMd,MAAM,GAAGpG,cAAc,CAACkH,YAAY,CAAC;EAC3C,OAAO3B,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAK,CAAA,QAAA,EAAW5D,MAAM,CAAA,EAAA,EAAK4D,IAAI,CAAA,CAAA,CAAG,CAAC;AAC7D;AAEA,SAASC,QAAQA,CAACzJ,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAEoF,YAAY,EAAEjB,MAAM,EAAEQ,gBAAgB,GAAG,IAAI,EACpI;AACI,EAAA,IAAI,CAACjG,OAAO,CAAC0J,uBAAuB,EAAE7K,MAAM,EAC5C;IACI,MAAM,IAAIC,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,mCAAmC,CAAC;AACtG,EAAA;AACA,EAAA,MAAMiL,WAAW,GAAGX,kBAAkB,CAAC3I,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEN,MAAM,CAAC;EAC3F,MAAMV,KAAK,GAAGe,qBAAqB,CAACC,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE2E,gBAAgB,CAAC,CACjFhF,GAAG,CAAEJ,SAAS,IAAK,OAAOyI,WAAW,CAAA,EAAA,EAAKzI,SAAS,CAAA,CAAE,CAAC;AAC3D,EAAA,IAAI6F,YAAY,KAAK,SAAS,EAAE,OAAO3B,KAAK;AAC5C,EAAA,IAAI,CAAC,CAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAE,CAACQ,QAAQ,CAACmB,YAAY,CAAC,EACjE;AACI,IAAA,MAAM,IAAI5H,KAAK,CAAC,CAAA,8CAAA,EAAiD4H,YAAY,EAAE,CAAC;AACpF,EAAA;AACA,EAAA,MAAMd,MAAM,GAAGpG,cAAc,CAACkH,YAAY,CAAC;EAC3C,OAAO3B,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAK,CAAA,QAAA,EAAW5D,MAAM,CAAA,EAAA,EAAK4D,IAAI,CAAA,CAAA,CAAG,CAAC;AAC7D;AAEA,SAASG,eAAeA,CAAC3J,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAEoF,YAAY,EAAEjB,MAAM,EAAEQ,gBAAgB,GAAG,IAAI,EAC3I;EACI,IAAI2D,4BAA4B,CAAC5J,OAAO,EAAE+F,OAAO,EAAE,QAAQ,CAAC,KAAK,IAAI,EACrE;IACI,MAAM,IAAIjH,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,gDAAgD,CAAC;AACnH,EAAA;AACA,EAAA,MAAMwD,aAAa,GAAGkE,OAAO,CAAC6C,OAAO,GAAG,CAAC,CAAC,EAAEtI,MAAM,GAAG,CAAC,CAAC;AACvD,EAAA,MAAMuJ,KAAK,GAAG,CAAC7J,OAAO,CAAC8J,WAAW,IAAI,EAAE,EAAEvJ,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACqB,aAAa,KAAKA,aAAa,CAAC;EAChG,IAAI,CAACgI,KAAK,EACV;IACI,MAAM,IAAI/K,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,iBAAA,EAAoBwD,aAAa,CAAA,kCAAA,CAAoC,CAAC;AACxI,EAAA;AACA,EAAA,MAAMyH,WAAW,GAAGX,kBAAkB,CAAC3I,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEN,MAAM,CAAC;EAC3F,MAAMV,KAAK,GAAGe,qBAAqB,CAACC,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE2E,gBAAgB,CAAC,CACjFhF,GAAG,CAAEJ,SAAS,IAAK,CAAA,EAAGgJ,KAAK,CAACE,MAAM,CAAA,CAAA,EAAIT,WAAW,CAAA,EAAA,EAAKzI,SAAS,CAAA,CAAE,CAAC;AACvE,EAAA,IAAI6F,YAAY,KAAK,SAAS,EAAE,OAAO3B,KAAK;AAC5C,EAAA,IAAI,CAAC,CAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAE,CAACQ,QAAQ,CAACmB,YAAY,CAAC,EACjE;AACI,IAAA,MAAM,IAAI5H,KAAK,CAAC,CAAA,yDAAA,EAA4D4H,YAAY,EAAE,CAAC;AAC/F,EAAA;AACA,EAAA,MAAMd,MAAM,GAAGpG,cAAc,CAACkH,YAAY,CAAC;EAC3C,OAAO3B,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAK,CAAA,QAAA,EAAW5D,MAAM,CAAA,EAAA,EAAK4D,IAAI,CAAA,CAAA,CAAG,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA,SAASQ,iBAAiBA,CAACR,IAAI,EAAEN,OAAO,EAAEe,QAAQ,EAClD;EACI,IAAIf,OAAO,KAAK,SAAS,EACzB;AACI,IAAA,IAAIe,QAAQ,KAAK,KAAK,EAAE,OAAO,CAAA,EAAA,EAAKT,IAAI,CAAA,CAAA,CAAG;AAC3C,IAAA,IAAIS,QAAQ,KAAK,KAAK,EAAE,OAAO,CAAA,IAAA,EAAOT,IAAI,CAAA,CAAA,CAAG;IAC7C,OAAO,CAAA,MAAA,EAASA,IAAI,CAAA,EAAA,CAAI;AAC5B,EAAA;AACA,EAAA,MAAMU,GAAG,GAAGD,QAAQ,KAAK,KAAK,GAAG,eAAe,GAAGA,QAAQ,KAAK,KAAK,GAAG,eAAe,GAAG,eAAe;EACzG,MAAME,GAAG,GAAGjB,OAAO,KAAK,OAAO,GAAG,CAAA,aAAA,EAAgBM,IAAI,CAAA,CAAA,CAAG,GAAGA,IAAI;AAChE,EAAA,MAAMY,MAAM,GAAG,CAAA,CAAA,EAAID,GAAG,CAAA,CAAA,EAAID,GAAG,CAAA,CAAA,CAAG;EAChC,OAAOhB,OAAO,KAAK,OAAO,GAAG,gBAAgBkB,MAAM,CAAA,CAAA,CAAG,GAAGA,MAAM;AACnE;AAEA,MAAMC,sBAAsB,GAAG,IAAI5N,GAAG,CAAC,CAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAE,CAAC;AAExF,SAAS6N,aAAaA,CAACvF,KAAK,EAAEgB,OAAO,EAAEwE,QAAQ,EAAEC,YAAY,EAAEjM,WAAW,EAAEsG,YAAY,EACxF;AACI,EAAA,MAAMoF,QAAQ,GAAGlE,OAAO,CAAC0E,YAAY,IAAI,MAAM;AAC/C,EAAA,IAAIR,QAAQ,KAAK,MAAM,EAAE,OAAOlF,KAAK;AACrC,EAAA,IAAI,CAAC,CAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAE,CAACQ,QAAQ,CAAC0E,QAAQ,CAAC,EAClD;AACI,IAAA,MAAM,IAAInL,KAAK,CAAC,CAAA,+BAAA,EAAkCmL,QAAQ,mBAAmB,CAAC;AAClF,EAAA;EACA,IAAIM,QAAQ,KAAK,SAAS,EAC1B;AACI,IAAA,IAAIN,QAAQ,KAAK,KAAK,EAAE,OAAOlF,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAK,CAAA,EAAA,EAAKA,IAAI,GAAG,CAAC;AAChE,IAAA,IAAIS,QAAQ,KAAK,KAAK,EAAE,OAAOlF,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAK,CAAA,IAAA,EAAOA,IAAI,GAAG,CAAC;IAClE,OAAOzE,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAK,CAAA,MAAA,EAASA,IAAI,CAAA,EAAA,CAAI,CAAC;AACjD,EAAA;AACA,EAAA,IAAIe,QAAQ,KAAK,OAAO,IAAIN,QAAQ,KAAK,KAAK,EAC9C;IACI,OAAOlF,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAK,CAAA,EAAA,EAAKA,IAAI,CAAA,CAAA,CAAG,CAAC;AAC5C,EAAA;AACA,EAAA,IAAIe,QAAQ,KAAK,QAAQ,IAAIN,QAAQ,KAAK,KAAK,EAC/C;IACI,OAAOlF,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAK,CAAA,MAAA,EAASA,IAAI,CAAA,CAAA,CAAG,CAAC;AAChD,EAAA;EACA,IAAIe,QAAQ,KAAK,cAAc,EAC/B;AACI,IAAA,OAAOxF,KAAK,CAAC9D,GAAG,CAAEuI,IAAI,IAAKQ,iBAAiB,CAACR,IAAI,EAAE,cAAc,EAAES,QAAQ,CAAC,CAAC;AACjF,EAAA;EACA,IAAIM,QAAQ,KAAK,SAAS,IAAIC,YAAY,EAAE3L,MAAM,KAAKkG,KAAK,CAAClG,MAAM,IAC5D2L,YAAY,CAACpL,KAAK,CAAE8J,OAAO,IAAKmB,sBAAsB,CAACjK,GAAG,CAAC8I,OAAO,CAAC,CAAC,EAC3E;IACI,OAAOnE,KAAK,CAAC9D,GAAG,CAAC,CAACuI,IAAI,EAAEnL,KAAK,KAAK2L,iBAAiB,CAACR,IAAI,EAAEgB,YAAY,CAACnM,KAAK,CAAC,EAAE4L,QAAQ,CAAC,CAAC;AAC7F,EAAA;AACA,EAAA,MAAM,IAAInL,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,EAAEF,KAAK,CAAA,SAAA,EAAYwG,YAAY,CAAA,qBAAA,EAAwBoF,QAAQ,CAAA,cAAA,EAAiBM,QAAQ,EAAE,CAAC;AACvJ;AAGA,SAASG,iBAAiBA,CAACxF,IAAI,EAAEa,OAAO,EAAE4E,UAAU,EAAEpM,WAAW,EAAEsG,YAAY,EAC/E;AACI,EAAA,MAAMoF,QAAQ,GAAGlE,OAAO,CAAC0E,YAAY,IAAI,MAAM;AAC/C,EAAA,IAAIR,QAAQ,KAAK,MAAM,EAAE,OAAO/E,IAAI;EACpC,IAAI,CAAC,CAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAE,CAACK,QAAQ,CAAC0E,QAAQ,CAAC,IAAI,CAACI,sBAAsB,CAACjK,GAAG,CAACuK,UAAU,CAAC,EAC7F;AACI,IAAA,MAAM,IAAI7L,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,cAAA,EAAiBwG,YAAY,CAAA,qBAAA,EAAwBoF,QAAQ,CAAA,cAAA,EAAiBU,UAAU,EAAE,CAAC;AAC7J,EAAA;AACA;AACA;AACA;AACA,EAAA,OAAOX,iBAAiB,CAAC9E,IAAI,EAAEyF,UAAU,EAAEV,QAAQ,CAAC;AACxD;AAEA,SAASW,uBAAuBA,CAAC7E,OAAO,EACxC;AACI;AACA;AACA;AACA;AACA,EAAA,MAAM1I,IAAI,GAAG0I,OAAO,CAAC8E,gBAAgB,IAAI,SAAS;AAClD,EAAA,OAAOxN,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,UAAU;AACpD;AAEA,SAASyN,qBAAqBA,CAAC9K,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEmB,eAAe,EAAE+E,SAAS,EAAEJ,UAAU,EAAElF,MAAM,EAAE0B,QAAQ,EACvH6D,SAAS,GAAG,KAAK,EACrB;AACI,EAAA,MAAMjF,OAAO,GAAGxH,WAAW,CAACwI,QAAQ,CAAClC,YAAY,CAAC;AAClD,EAAA,IAAI,CAACkB,OAAO,EAAE,MAAM,IAAIjH,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,gBAAA,EAAmBwG,YAAY,EAAE,CAAC;AAC9G,EAAA,IAAI+F,uBAAuB,CAAC7E,OAAO,CAAC,EACpC;AACI,IAAA,MAAM,IAAIjH,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,wBAAA,EAA2B0H,OAAO,CAAC8E,gBAAgB,CAAA,iBAAA,CAAmB,CAAC;AACzI,EAAA;AACA,EAAA,MAAMnH,IAAI,GAAGkB,UAAU,CAACrG,WAAW,EAAEsG,YAAY,CAAC;EAClD,MAAMoB,gBAAgB,GAAGe,gBAAgB,CAACzI,WAAW,EAAEsG,YAAY,EAAE7E,OAAO,CAAC;AAC7E,EAAA,IAAI0D,IAAI,IAAIqC,OAAO,CAACnH,QAAQ,KAAK,gBAAgB,EACjD;IACIqK,yBAAyB,CACrBjJ,OAAO,EAAE+F,OAAO,EAAErC,IAAI,EACtBoC,qBAAqB,CAACC,OAAO,EAAEC,eAAe,EAAEtC,IAAI,CAACC,IAAI,CAAC9E,MAAM,EAAEoH,gBAAgB,CAAC,CAAC;AAC5F,EAAA;AACA,EAAA,IAAIvC,IAAI,EACR;AACI,IAAA,MAAMuH,UAAU,GAAGvH,IAAI,CAACC,IAAI,CAAC9E,MAAM,KAAK,CAAC,IAAI2F,OAAO,CAACuB,OAAO,CAACG,QAAQ,CAAC;IACtE,IAAI,CAAC+E,UAAU,IAAIF,SAAS,IAAIrH,IAAI,CAACC,IAAI,CAAC9E,MAAM,EAChD;MACI,MAAM,IAAIC,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,2BAA2B,CAAC;AAC9F,IAAA;AACA,IAAA,MAAMiF,GAAG,GAAG2H,UAAU,GAAGvH,IAAI,CAACC,IAAI,CAAC,CAAC,CAAC,GAAGD,IAAI,CAACC,IAAI,CAACoH,SAAS,CAAC;AAC5D,IAAA,MAAM7B,OAAO,GAAGC,gBAAgB,CAACnJ,OAAO,EAAEsD,GAAG,CAAC;IAC9C,MAAM4B,IAAI,GAAGD,eAAe,CAACO,cAAc,CAACxF,OAAO,EAAEsD,GAAG,EAAEmC,MAAM,CAAC,EAAEyD,OAAO,EAAEyB,UAAU,EAAE,CAAC,EACrF,eAAepM,WAAW,CAACF,KAAK,CAAA,UAAA,CAAY,CAAC;AACjD,IAAA,OAAO2M,SAAS,GACVN,iBAAiB,CAACxF,IAAI,EAAEa,OAAO,EAAE4E,UAAU,EAAEpM,WAAW,EAAEsG,YAAY,CAAC,GACvEyF,aAAa,CAAC,CAAEpF,IAAI,CAAE,EAAEa,OAAO,EAAE4E,UAAU,EAAE,IAAI,EAAEpM,WAAW,EAAEsG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1F,EAAA;AACA,EAAA,MAAMhE,SAAS,GAAGmF,eAAe,CAAC+E,SAAS,CAAC;AAC5C,EAAA,IAAIhF,OAAO,CAACnH,QAAQ,KAAK,aAAa,EACtC;AACI,IAAA,MAAMsG,IAAI,GAAGuB,cAAc,CAACV,OAAO,EAAElF,SAAS,EAAE,CAAC,EAAE8J,UAAU,CAAC,CAAC,CAAC,CAAC;AACjE,IAAA,OAAOK,SAAS,GACVN,iBAAiB,CAACxF,IAAI,EAAEa,OAAO,EAAE4E,UAAU,EAAEpM,WAAW,EAAEsG,YAAY,CAAC,GACvEyF,aAAa,CAAC,CAAEpF,IAAI,CAAE,EAAEa,OAAO,EAAE4E,UAAU,EAAE,IAAI,EAAEpM,WAAW,EAAEsG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1F,EAAA;AACA,EAAA,IAAIkB,OAAO,CAACnH,QAAQ,KAAK,iBAAiB,EAC1C;IACI,MAAMsG,IAAI,GAAGmE,YAAY,CAACrJ,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAElF,SAAS,EAAE,CAAC,EAAEsG,QAAQ,EAAEwD,UAAU,EAAElF,MAAM,CAAC,CAAC,CAAC,CAAC;AACrH,IAAA,OAAOuF,SAAS,GACVN,iBAAiB,CAACxF,IAAI,EAAEa,OAAO,EAAE4E,UAAU,EAAEpM,WAAW,EAAEsG,YAAY,CAAC,GACvEyF,aAAa,CAAC,CAAEpF,IAAI,CAAE,EAAEa,OAAO,EAAE4E,UAAU,EAAE,IAAI,EAAEpM,WAAW,EAAEsG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1F,EAAA;AACA,EAAA,MAAM,IAAI/F,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,cAAA,EAAiB0H,OAAO,CAACnH,QAAQ,CAAA,cAAA,EAAiBiG,YAAY,EAAE,CAAC;AACnI;AAEA,SAASqG,iBAAiBA,CAAClL,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEmB,eAAe,EAAE1E,KAAK,EAAEoF,YAAY,EAAEjB,MAAM,EAAE0B,QAAQ,EACrH;AACI,EAAA,MAAMpB,OAAO,GAAGxH,WAAW,CAACwI,QAAQ,CAAClC,YAAY,CAAC;AAClD,EAAA,IAAI,CAACkB,OAAO,EAAE,MAAM,IAAIjH,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,gBAAA,EAAmBwG,YAAY,EAAE,CAAC;AAC9G,EAAA,IAAI+F,uBAAuB,CAAC7E,OAAO,CAAC,EACpC;AACI,IAAA,MAAM,IAAIjH,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,wBAAA,EAA2B0H,OAAO,CAAC8E,gBAAgB,CAAA,iBAAA,CAAmB,CAAC;AACzI,EAAA;AACA,EAAA,MAAMnH,IAAI,GAAGkB,UAAU,CAACrG,WAAW,EAAEsG,YAAY,CAAC;EAClD,MAAMoB,gBAAgB,GAAGe,gBAAgB,CAACzI,WAAW,EAAEsG,YAAY,EAAE7E,OAAO,CAAC;AAC7E,EAAA,IAAI0D,IAAI,IAAIqC,OAAO,CAACnH,QAAQ,KAAK,gBAAgB,EACjD;IACIqK,yBAAyB,CACrBjJ,OAAO,EAAE+F,OAAO,EAAErC,IAAI,EACtBoC,qBAAqB,CAACC,OAAO,EAAEC,eAAe,EAAEtC,IAAI,CAACC,IAAI,CAAC9E,MAAM,EAAEoH,gBAAgB,CAAC,CAAC;AAC5F,EAAA;AACA,EAAA,IAAIlB,KAAK;AACT,EAAA,IAAIrB,IAAI,EACR;AACI,IAAA,IAAIA,IAAI,CAACC,IAAI,CAAC9E,MAAM,GAAGyC,KAAK,EAAE,MAAM,IAAIxC,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,2BAA2B,CAAC;AACxH0G,IAAAA,KAAK,GAAGrB,IAAI,CAACC,IAAI,CAACyC,KAAK,CAAC,CAAC,EAAE9E,KAAK,CAAC,CAACL,GAAG,CAAC,CAACqC,GAAG,EAAE6H,cAAc,KAC1D;MACI,IAAI3B,IAAI,GAAGhE,cAAc,CAACxF,OAAO,EAAEsD,GAAG,EAAEmC,MAAM,CAAC;MAC/C,MAAM2F,OAAO,GAAG7M,WAAW,CAAC8M,QAAQ,CAACC,QAAQ,CAAC/K,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACiC,IAAI,KAAK,cAAc,IACpFjC,KAAK,CAACqE,YAAY,KAAKA,YAAY,IAAIrE,KAAK,CAAC2K,cAAc,KAAKA,cAAc,IAC9E3K,KAAK,CAACH,OAAO,KAAKiD,GAAG,CAACjD,OAAO,IAAIG,KAAK,CAACK,SAAS,KAAKyC,GAAG,CAACzC,SAAS,CAAC;AAC1E,MAAA,IAAIuK,OAAO,EACX;QACI5B,IAAI,GAAGvE,eAAe,CAACuE,IAAI,EAAE4B,OAAO,CAACzK,IAAI,EAAEyK,OAAO,CAAC9F,EAAE,EAAE,CAAC,EAAE,CAAA,YAAA,EAAe/G,WAAW,CAACF,KAAK,OAAO,CAAC;AACtG,MAAA;AACA,MAAA,OAAOmL,IAAI;AACf,IAAA,CAAC,CAAC;AACN,EAAA,CAAC,MACI,IAAIzD,OAAO,CAACnH,QAAQ,KAAK,aAAa,EAC3C;AACImG,IAAAA,KAAK,GAAG0B,cAAc,CAACV,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAEoF,YAAY,EAAET,gBAAgB,CAAC;AAC3F,EAAA,CAAC,MACI,IAAIF,OAAO,CAACnH,QAAQ,KAAK,iBAAiB,EAC/C;IACImG,KAAK,GAAGsE,YAAY,CAACrJ,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAE6F,QAAQ,EAAET,YAAY,EAAEjB,MAAM,EAAEQ,gBAAgB,CAAC;AAC/I,EAAA,CAAC,MACI,IAAIF,OAAO,CAACnH,QAAQ,KAAK,gBAAgB,EAC9C;IACImG,KAAK,GAAG4E,eAAe,CAAC3J,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAEoF,YAAY,EAAEjB,MAAM,EAAEQ,gBAAgB,CAAC;AACxI,EAAA,CAAC,MACI,IAAIF,OAAO,CAACnH,QAAQ,KAAK,2BAA2B,EACzD;IACImG,KAAK,GAAG0E,QAAQ,CAACzJ,OAAO,EAAEzB,WAAW,EAAEsG,YAAY,EAAEkB,OAAO,EAAEC,eAAe,EAAE1E,KAAK,EAAEoF,YAAY,EAAEjB,MAAM,EAAEQ,gBAAgB,CAAC;AACjI,EAAA,CAAC,MAED;AACI,IAAA,MAAM,IAAInH,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,cAAA,EAAiB0H,OAAO,CAACnH,QAAQ,CAAA,SAAA,EAAYiG,YAAY,EAAE,CAAC;AAC9H,EAAA;AACA,EAAA,MAAM2F,YAAY,GAAG,CAACzE,OAAO,CAAC0E,YAAY,IAAI,MAAM,MAAM,MAAM,IAAI/D,YAAY,KAAK,SAAS,IAAIhD,IAAI,GAChGA,IAAI,CAACC,IAAI,CAACyC,KAAK,CAAC,CAAC,EAAE9E,KAAK,CAAC,CAACL,GAAG,CAAEqC,GAAG,IAAK6F,gBAAgB,CAACnJ,OAAO,EAAEsD,GAAG,CAAC,CAAC,GACtE,IAAI;AACV,EAAA,OAAOwB,UAAU,CAACwF,aAAa,CAACvF,KAAK,EAAEgB,OAAO,EAAEW,YAAY,EAAE8D,YAAY,EAAEjM,WAAW,EAAEsG,YAAY,CAAC,EAAE6B,YAAY,CAAC;AACzH;AAEA,SAASA,YAAYA,CAACnI,WAAW,EAAEsG,YAAY,EAC/C;AACI,EAAA,OAAOtG,WAAW,CAAC8M,QAAQ,CAACE,YAAY,CAAChL,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACqE,YAAY,KAAKA,YAAY,CAAC,EAAE6B,YAAY,IAAI,SAAS;AAC5H;AAEA,SAASyC,gBAAgBA,CAACnJ,OAAO,EAAEsD,GAAG,EACtC;AACI,EAAA,MAAMjE,KAAK,GAAGW,OAAO,CAACM,MAAM,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,EAAE,KAAK6C,GAAG,CAACjD,OAAO,CAAC;EACtE,OAAOhB,KAAK,EAAEyB,cAAc,GAAGwC,GAAG,CAACzC,SAAS,CAAC,IAAI,SAAS;AAC9D;AAEA,SAAS2K,UAAUA,CAAChL,KAAK,EACzB;AACI,EAAA,IAAIA,KAAK,CAACiC,IAAI,KAAK,cAAc,EACjC;AACI,IAAA,OAAO,CAAEjC,KAAK,CAACiC,IAAI,EAAEjC,KAAK,CAACqE,YAAY,EAAErE,KAAK,CAAC2K,cAAc,EAAE3K,KAAK,CAACH,OAAO,EAAEG,KAAK,CAACK,SAAS,EACzFL,KAAK,CAACG,IAAI,EAAEH,KAAK,CAAC8E,EAAE,CAAE,CAACN,IAAI,CAAC,GAAG,CAAC;AACxC,EAAA;AACA,EAAA,OAAO,CAAExE,KAAK,CAACiC,IAAI,EAAEjC,KAAK,CAACqE,YAAY,EAAErE,KAAK,CAACH,OAAO,EAAEG,KAAK,CAACK,SAAS,EAAEL,KAAK,CAACG,IAAI,EAAEH,KAAK,CAAC8E,EAAE,CAAE,CAACN,IAAI,CAAC,GAAG,CAAC;AAC7G;AAEA,SAASyG,wBAAwBA,CAACzL,OAAO,EAAEzB,WAAW,EACtD;EACI,MAAMmN,QAAQ,GAAG,EAAE;EACnB,KAAK,MAAMhI,IAAI,IAAInF,WAAW,CAACgF,QAAQ,CAACC,KAAK,EAC7C;AACI,IAAA,IAAIE,IAAI,CAACjB,IAAI,KAAK,YAAY,EAAE;IAChC,MAAM8H,QAAQ,GAAG7D,YAAY,CAACnI,WAAW,EAAEmF,IAAI,CAACmB,YAAY,CAAC;IAC7D,IAAI0F,QAAQ,KAAK,SAAS,EAAE;IAC5B7G,IAAI,CAACC,IAAI,CAACgI,OAAO,CAAC,CAACrI,GAAG,EAAE6H,cAAc,KACtC;AACI,MAAA,MAAMjC,OAAO,GAAGC,gBAAgB,CAACnJ,OAAO,EAAEsD,GAAG,CAAC;AAC9C,MAAA,IAAI4F,OAAO,KAAK,SAAS,IAAIA,OAAO,KAAKqB,QAAQ,EACjD;QACImB,QAAQ,CAACxI,IAAI,CAAC;AACVT,UAAAA,IAAI,EAAE,cAAc;UACpBoC,YAAY,EAAEnB,IAAI,CAACmB,YAAY;UAC/BsG,cAAc;UACd9K,OAAO,EAAEiD,GAAG,CAACjD,OAAO;UACpBQ,SAAS,EAAEyC,GAAG,CAACzC,SAAS;AACxBF,UAAAA,IAAI,EAAEuI,OAAO;AACb5D,UAAAA,EAAE,EAAEiF;AACR,SAAC,CAAC;AACN,MAAA;AACJ,IAAA,CAAC,CAAC;AACN,EAAA;AACA,EAAA,MAAMqB,eAAe,GAAGrN,WAAW,CAAC8M,QAAQ,CAACQ,UAAU;EACvD,IAAID,eAAe,KAAK,SAAS,EACjC;IACI,KAAK,MAAM3L,KAAK,IAAI1B,WAAW,CAACgF,QAAQ,CAACuI,MAAM,EAC/C;AACI,MAAA,KAAK,MAAMjL,SAAS,IAAIZ,KAAK,CAAC/B,IAAI,EAClC;AACI,QAAA,MAAMgL,OAAO,GAAGC,gBAAgB,CAACnJ,OAAO,EAAE;UAAEK,OAAO,EAAEJ,KAAK,CAACI,OAAO;AAAEQ,UAAAA;AAAU,SAAC,CAAC;AAChF,QAAA,IAAIqI,OAAO,KAAK,SAAS,IAAIA,OAAO,KAAK0C,eAAe,EACxD;UACIF,QAAQ,CAACxI,IAAI,CAAC;AACVT,YAAAA,IAAI,EAAE,gBAAgB;YACtBoC,YAAY,EAAE5E,KAAK,CAAC4E,YAAY;YAChCxE,OAAO,EAAEJ,KAAK,CAACI,OAAO;YACtBQ,SAAS;AACTF,YAAAA,IAAI,EAAEiL,eAAe;AACrBtG,YAAAA,EAAE,EAAE4D;AACR,WAAC,CAAC;AACN,QAAA;AACJ,MAAA;AACJ,IAAA;AACJ,EAAA;EACA,MAAM6C,MAAM,GAAGxN,WAAW,CAAC8M,QAAQ,CAACC,QAAQ,CAACnN,MAAM,CAAEqC,KAAK,IACtDA,KAAK,CAACiC,IAAI,KAAK,cAAc,IAAIjC,KAAK,CAACiC,IAAI,KAAK,gBAAgB,CAAC;EACrE,MAAMuJ,YAAY,GAAGN,QAAQ,CAACzK,GAAG,CAACuK,UAAU,CAAC,CAACS,IAAI,EAAE;EACpD,MAAMC,UAAU,GAAGH,MAAM,CAAC9K,GAAG,CAACuK,UAAU,CAAC,CAACS,IAAI,EAAE;AAChD,EAAA,IAAI,IAAIxP,GAAG,CAACyP,UAAU,CAAC,CAAChL,IAAI,KAAKgL,UAAU,CAACrN,MAAM,IAC3CmN,YAAY,CAACnN,MAAM,KAAKqN,UAAU,CAACrN,MAAM,IACzCmN,YAAY,CAACpL,IAAI,CAAC,CAACJ,KAAK,EAAEnC,KAAK,KAAKmC,KAAK,KAAK0L,UAAU,CAAC7N,KAAK,CAAC,CAAC,EACvE;IACI,MAAM,IAAIS,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,6CAA6C,CAAC;AAChH,EAAA;AACJ;AAEA,SAAS8N,QAAQA,CAAC7K,KAAK,EACvB;EACI,OAAOA,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,CAAA,GAAA,EAAMA,KAAK,CAAA,SAAA,CAAW;AACtD;AAEA,SAAS8K,QAAQA,CAAC9K,KAAK,EACvB;EACI,OAAOA,KAAK,KAAK,CAAC,GAAG,aAAa,GAAG,CAAA,GAAA,EAAMA,KAAK,CAAA,kBAAA,CAAoB;AACxE;AAEA,SAAS+K,OAAOA,CAAC/K,KAAK,EACtB;EACI,OAAOA,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,CAAA,GAAA,EAAMA,KAAK,CAAA,SAAA,CAAW;AACtD;AAEA,SAASgL,UAAUA,CAAChL,KAAK,EAAEjC,KAAK,EAChC;EACI,OAAOiC,KAAK,KAAK,CAAC,GAAGjC,KAAK,GAAG,CAAA,GAAA,EAAMiC,KAAK,CAAA,MAAA,EAASjC,KAAK,CAAA,CAAA,CAAG;AAC7D;AAEA,SAASkN,WAAWA,CAACrH,IAAI,EAAE5D,KAAK,EAChC;EACI,OAAOA,KAAK,KAAK,CAAC,GAAG4D,IAAI,GAAG,CAAA,GAAA,EAAM5D,KAAK,CAAA,MAAA,EAAS4D,IAAI,CAAA,CAAA,CAAG;AAC3D;AAEA,SAASsH,wBAAwBA,CAACxM,OAAO,EAAEzB,WAAW,EAAE0B,KAAK,EAAER,IAAI,EAAEgG,MAAM,EAAE0B,QAAQ,EACrF;AACI,EAAA,MAAM7F,KAAK,GAAGrB,KAAK,CAAC/B,IAAI,CAACW,MAAM;AAC/B,EAAA,IAAIN,WAAW,CAACwI,QAAQ,CAAClI,MAAM,KAAK,CAAC,EACrC;IACI,MAAM,IAAIC,KAAK,CAAC,CAAA,8BAAA,EAAiCP,WAAW,CAACF,KAAK,yBAAyB,CAAC;AAChG,EAAA;AACA,EAAA,MAAMoO,cAAc,GAAGlO,WAAW,CAACwI,QAAQ,CAAC,CAAC,CAAC;AAC9C,EAAA,IAAI,CAACxK,UAAU,CAACgJ,QAAQ,CAACkH,cAAc,EAAEvG,QAAQ,CAAC,IAAI,CAACuG,cAAc,CAAChC,YAAY,IAAI,MAAM,MAAM,MAAM,EACxG;IACI,MAAM,IAAI3L,KAAK,CAAC,CAAA,8BAAA,EAAiCP,WAAW,CAACF,KAAK,yCAAyC,CAAC;AAChH,EAAA;EACA,MAAMqO,OAAO,GAAGxB,iBAAiB,CAAClL,OAAO,EAAEzB,WAAW,EAAE,CAAC,EAAE0B,KAAK,CAAC/B,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAEuH,MAAM,EAAE0B,QAAQ,CAAC;AACrG,EAAA,MAAMwF,iBAAiB,GAAGpO,WAAW,CAACwI,QAAQ,CAAC,CAAC,CAAC;EACjD,MAAM6F,UAAU,GAAGD,iBAAiB,EAAErG,eAAe,GAAG,CAAC,CAAC,EAAE1G,MAAM;AAClE,EAAA,IAAI+M,iBAAiB,EAAE/N,QAAQ,KAAK,aAAa,IAAI+N,iBAAiB,CAACrG,eAAe,EAAEzH,MAAM,KAAK,CAAC,IAC7F,CAAC8N,iBAAiB,CAAClC,YAAY,IAAI,MAAM,MAAM,MAAM,IACrD,CAACnL,MAAM,CAACC,SAAS,CAACqN,UAAU,CAAC,IAAIA,UAAU,GAAG,CAAC,KAAK,CAAC,EAC5D;IACI,MAAM,IAAI9N,KAAK,CAAC,CAAA,8BAAA,EAAiCP,WAAW,CAACF,KAAK,0CAA0C,CAAC;AACjH,EAAA;EACA,MAAMwO,QAAQ,GAAGC,0BAA0B,CAACvO,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC;EACnF,MAAMiJ,OAAO,GAAGN,iBAAiB,CAACC,QAAQ,EAAE,kBAAkB,EAAE0F,QAAQ,CAAC;AACzE,EAAA,IAAI,CAACrF,OAAO,EAAEuF,MAAM,IAAI,CAACzN,MAAM,CAACC,SAAS,CAACiI,OAAO,CAACwF,eAAe,CAAC,EAClE;IACI,MAAM,IAAIlO,KAAK,CAAC,CAAA,8BAAA,EAAiCP,WAAW,CAACF,KAAK,mCAAmC,CAAC;AAC1G,EAAA;AACA,EAAA,MAAM4O,WAAW,GAAGzF,OAAO,CAACwF,eAAe,GAAG,CAAC;AAC/C,EAAA,MAAME,SAAS,GAAGN,UAAU,GAAG,CAAC;AAChC,EAAA,MAAM7C,MAAM,GAAGvC,OAAO,CAAC+B,eAAe;AACtC,EAAA,MAAM4D,SAAS,GAAG,CAAA,aAAA,EAAgBpD,MAAM,CAAA,CAAA,CAAG;EAC3C,MAAMqD,cAAc,GAAG,CAAA,EAAGV,OAAO,OAAOS,SAAS,CAAA,GAAA,EAAMF,WAAW,CAAA,EAAA,CAAI;EACtE,MAAM9G,OAAO,GAAGL,qBAAqB,CAAC+G,QAAQ,EAAE5M,KAAK,CAAC/B,IAAI,EAAEoD,KAAK,CAAC;AAClE,EAAA,MAAM4E,QAAQ,GAAGC,OAAO,CAAClF,GAAG,CAAEJ,SAAS,IACvC;AACI,IAAA,MAAMxC,KAAK,GAAG9B,UAAU,CAACkF,OAAO,CAACZ,SAAS,CAAC;AAC3C,IAAA,MAAMwM,IAAI,GAAGH,SAAS,GAAG7O,KAAK;AAC9B,IAAA,IAAIA,KAAK,GAAG,CAAC,IAAIgP,IAAI,IAAIJ,WAAW,EACpC;AACI,MAAA,MAAM,IAAInO,KAAK,CAAC,CAAA,8BAAA,EAAiCP,WAAW,CAACF,KAAK,CAAA,aAAA,EAAgBmJ,OAAO,CAACwF,eAAe,CAAA,YAAA,CAAc,CAAC;AAC5H,IAAA;IACA,MAAMM,WAAW,GAAG,CAAA,EAAA,EAAKZ,OAAO,OAAOO,WAAW,CAAA,KAAA,EAAQI,IAAI,CAAA,CAAA,CAAG;AACjE,IAAA,MAAME,eAAe,GAAG,CAAA,IAAA,EAAOD,WAAW,CAAA,EAAA,EAAKH,SAAS,CAAA,MAAA,CAAQ;AAChE,IAAA,OAAO,cAAcpD,MAAM,CAAA,CAAA,EAAIwD,eAAe,CAAA,GAAA,EAAMH,cAAc,CAAA,CAAA,CAAG;AACzE,EAAA,CAAC,CAAC;AACF,EAAA,IAAI3N,IAAI,KAAK,IAAI,EAAE,OAAOyG,QAAQ;EAClC,MAAMnB,KAAK,GAAGmB,QAAQ,CAACjF,GAAG,CAAEuI,IAAI,IAAKvE,eAAe,CAACuE,IAAI,EAAE,QAAQ,EAAE/J,IAAI,CAAClC,UAAU,EAAE,CAAC,EACnF,CAAA,gBAAA,EAAmBgB,WAAW,CAACF,KAAK,CAAA,CAAE,CAAC,CAAC;AAC5C,EAAA,OAAOyG,UAAU,CAACC,KAAK,EAAEtF,IAAI,CAAClC,UAAU,CAAC;AAC7C;AAEA,SAASiQ,aAAaA,CAACxN,OAAO,EAAEzB,WAAW,EAAE0B,KAAK,EAAEwF,MAAM,EAAE0B,QAAQ,EAAE9B,OAAO,GAAG,IAAI,EACpF;AACI,EAAA,MAAMnH,IAAI,GAAG+B,KAAK,CAAC/B,IAAI;AACvB,EAAA,MAAMoD,KAAK,GAAGpD,IAAI,CAACW,MAAM;AACzB,EAAA,MAAM4O,MAAM,GAAGA,CAACpP,KAAK,EAAEqP,WAAW,GAAGpM,KAAK,KAAK4J,iBAAiB,CAC5DlL,OAAO,EAAEzB,WAAW,EAAEF,KAAK,EAAEH,IAAI,EAAEwP,WAAW,EAAEhH,YAAY,CAACnI,WAAW,EAAEF,KAAK,CAAC,EAAEoH,MAAM,EAAE0B,QAAQ,CAAC;AACvG,EAAA,MAAMwG,EAAE,GAAGpP,WAAW,CAAC6F,UAAU;AACjC,EAAA,IAAI,CAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAE,CAACmB,QAAQ,CAACoI,EAAE,CAAC,EAChD;AACI,IAAA,MAAMC,QAAQ,GAAG;AAAE5J,MAAAA,GAAG,EAAE,GAAG;AAAE6J,MAAAA,GAAG,EAAE,GAAG;AAAEC,MAAAA,IAAI,EAAE,GAAG;AAAEC,MAAAA,GAAG,EAAE;KAAK,CAACJ,EAAE,CAAC;AAChE,IAAA,OAAO,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIG,QAAQ,CAAA,CAAA,EAAIH,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AACpD,EAAA;AACA,EAAA,IAAIE,EAAE,KAAK,KAAK,IAAIA,EAAE,KAAK,MAAM,IAAIA,EAAE,KAAK,MAAM,EAAE,OAAO,CAAA,EAAA,EAAKF,MAAM,CAAC,CAAC,CAAC,CAAA,GAAA,EAAMA,MAAM,CAAC,CAAC,CAAC,CAAA,IAAA,EAAOA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AAC3G,EAAA,IAAIE,EAAE,KAAK,UAAU,IAAIA,EAAE,KAAK,UAAU,EAC1C;AACI,IAAA,MAAMK,GAAG,GAAGP,MAAM,CAAC,CAAC,CAAC;AACrB,IAAA,MAAMQ,IAAI,GAAI5P,KAAK,IAAMiD,KAAK,KAAK,CAAC,GAAG,CAAA,CAAA,EAAI0M,GAAG,GAAG,GAAG,CAAA,CAAA,EAAIA,GAAG,CAAA,EAAA,EAAK3P,KAAK,CAAA,CAAA,CAAI;AACzE,IAAA,MAAM0G,KAAK,GAAGrE,KAAK,CAACC,IAAI,CAAC;AAAE9B,MAAAA,MAAM,EAAEyC;KAAO,EAAE,CAAClD,CAAC,EAAEC,KAAK,KAAMsP,EAAE,KAAK,UAAU,GACtE,CAAA,gBAAA,EAAmBM,IAAI,CAAC5P,KAAK,CAAC,CAAA,GAAA,CAAK,GACnC,CAAA,yBAAA,EAA4B4P,IAAI,CAAC5P,KAAK,CAAC,CAAA,kBAAA,CAAqB,CAAC;IACnE,OAAOyG,UAAU,CAACC,KAAK,EAAE4I,EAAE,KAAK,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AACtE,EAAA;AACA,EAAA,IAAIA,EAAE,KAAK,MAAM,IAAIA,EAAE,KAAK,MAAM,EAClC;AACI,IAAA,IAAI1N,KAAK,CAAC4E,YAAY,KAAK,CAAC,EAC5B;MACI,MAAM,IAAI/F,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,sBAAA,EAAyBsP,EAAE,CAAA,YAAA,CAAc,CAAC;AAC5G,IAAA;IACA,OAAO,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,MAAMA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AAC1C,EAAA;EACA,IAAIE,EAAE,KAAK,MAAM,EACjB;AACI,IAAA,MAAMO,OAAO,GAAG3P,WAAW,CAACwI,QAAQ,CAAC,CAAC,CAAC;AACvC,IAAA,MAAMoH,KAAK,GAAG,CAACD,OAAO,EAAE5H,eAAe,IAAI,EAAE,EAAErF,GAAG,CAAE5B,KAAK,IAAKA,KAAK,CAACO,MAAM,CAAC;AAC3E,IAAA,MAAMgO,QAAQ,GAAG3N,KAAK,CAAC4E,YAAY,KAAK,CAAC,GAAG,GAAG,GAAG5E,KAAK,CAAC4E,YAAY,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI;AACvF,IAAA,IAAI,CAAC+I,QAAQ,EAAE,MAAM,IAAI9O,KAAK,CAAC,CAAA,+BAAA,EAAkCP,WAAW,CAACF,KAAK,CAAA,sCAAA,CAAwC,CAAC;AAC3H,IAAA,IAAI6P,OAAO,EAAEtP,QAAQ,KAAK,aAAa,IAAI,CAACsP,OAAO,CAACzD,YAAY,IAAI,MAAM,MAAM,MAAM,IAAI0D,KAAK,CAACtP,MAAM,IAC/FsP,KAAK,CAAC/O,KAAK,CAAEC,KAAK,IAAKC,MAAM,CAACC,SAAS,CAACF,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC,CAAC,EACrE;AACI,MAAA,OAAO,CAAA,CAAA,EAAIoO,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIG,QAAQ,CAAA,CAAA,EAAIH,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AACpD,IAAA;AACA,IAAA,MAAMW,YAAY,GAAGX,MAAM,CAAC,CAAC,CAAC;AAC9B,IAAA,MAAMY,WAAW,GAAGZ,MAAM,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAA,OAAA,EAAUrB,QAAQ,CAAC9K,KAAK,CAAC,CAAA,GAAA,EAAM8M,YAAY,CAAA,CAAA,EAAIR,QAAQ,CAAA,KAAA,EAAQS,WAAW,KAAKhC,OAAO,CAAC/K,KAAK,CAAC,CAAA,IAAA,EAAO+M,WAAW,OAAOlC,QAAQ,CAAC7K,KAAK,CAAC,CAAA,CAAA,CAAG;AACnJ,EAAA;EACA,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAE,CAACiE,QAAQ,CAACoI,EAAE,CAAC,EAAE,OAAO,CAAA,IAAA,EAAOF,MAAM,CAAC,CAAC,CAAC,KAAKA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EACpF,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAE,CAAClI,QAAQ,CAACoI,EAAE,CAAC,EAAE,OAAO,CAAA,IAAA,EAAOF,MAAM,CAAC,CAAC,CAAC,KAAKA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AACpF,EAAA,IAAIE,EAAE,KAAK,MAAM,EAAE,OAAO,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,CAAA,QAAA,EAAWA,MAAM,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AAC/D,EAAA,IAAIE,EAAE,KAAK,MAAM,EAAE,OAAO,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,CAAA,QAAA,EAAWA,MAAM,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AAC/D,EAAA,IAAIE,EAAE,KAAK,KAAK,EAAE,OAAO,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,CAAA,GAAA,EAAMA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AACxD,EAAA,IAAIE,EAAE,KAAK,IAAI,EAAE,OAAO,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,CAAA,GAAA,EAAMA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AACvD,EAAA,IAAIE,EAAE,KAAK,KAAK,EAAE,OAAO,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,CAAA,GAAA,EAAMA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AACxD,EAAA,IAAIE,EAAE,KAAK,MAAM,EAAE,OAAO,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,CAAA,IAAA,EAAOA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EAC1D,IAAI,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE,CAAClI,QAAQ,CAACoI,EAAE,CAAC,EACrF;AACI,IAAA,MAAMC,QAAQ,GAAG;AAAEU,MAAAA,EAAE,EAAE,GAAG;AAAEC,MAAAA,EAAE,EAAE,IAAI;AAAEC,MAAAA,EAAE,EAAE,IAAI;AAAEC,MAAAA,EAAE,EAAE,IAAI;AAAEC,MAAAA,GAAG,EAAE,GAAG;AAAEC,MAAAA,GAAG,EAAE,IAAI;AAAEC,MAAAA,GAAG,EAAE,IAAI;AAAEC,MAAAA,GAAG,EAAE,IAAI;AAAEC,MAAAA,GAAG,EAAE,GAAG;AAAEC,MAAAA,GAAG,EAAE;KAAM,CAACpB,EAAE,CAAC;IAC9H,OAAO,CAAA,OAAA,EAAUxB,QAAQ,CAAC7K,KAAK,CAAC,CAAA,EAAA,EAAK8K,QAAQ,CAAC9K,KAAK,CAAC,CAAA,EAAA,EAAKmM,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIG,QAAQ,IAAIH,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AAClG,EAAA;EACA,IAAIE,EAAE,KAAK,KAAK,EAAE,OAAOF,MAAM,CAAC,CAAC,CAAC;EAClC,IAAIE,EAAE,KAAK,MAAM,EAAE,OAAO,UAAUF,MAAM,CAAC,CAAC,CAAC,CAAA,EAAA,EAAKA,MAAM,CAAC,CAAC,CAAC,CAAA,EAAA,EAAKA,MAAM,CAAC,CAAC,CAAC,CAAA,IAAA,EAAOtB,QAAQ,CAAC7K,KAAK,CAAC,CAAA,CAAA,CAAG;EAClG,IAAIqM,EAAE,KAAK,MAAM,EAAE,OAAO,KAAKF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EAC3C,IAAIE,EAAE,KAAK,KAAK,EAAE,OAAO,QAAQF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EAC7C,IAAIE,EAAE,KAAK,KAAK,EAAE,OAAO,SAASF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EAC9C,IAAIE,EAAE,KAAK,KAAK,EAAE,OAAO,QAAQF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EAC7C,IAAIE,EAAE,KAAK,UAAU,EAAE,OAAO,SAASF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EACnD,IAAIE,EAAE,KAAK,UAAU,EAAE,OAAO,SAASF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EACnD,IAAIE,EAAE,KAAK,UAAU,EAAE,OAAO,QAAQF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EAClD,IAAIE,EAAE,KAAK,SAAS,EAAE,OAAO,SAASF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AAClD,EAAA,IAAIjQ,WAAW,CAACmQ,EAAE,CAAC,EAAE,OAAO,CAAA,EAAGnQ,WAAW,CAACmQ,EAAE,CAAC,CAAA,CAAA,EAAIF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EAC9D,IAAIE,EAAE,KAAK,KAAK,EAChB;AACI7G,IAAAA,oBAAoB,CAAC9G,OAAO,EAAEzB,WAAW,EAAE0B,KAAK,CAAC;AACjD,IAAA,OAAO,CAAA,CAAA,EAAIqM,UAAU,CAAChL,KAAK,EAAE,KAAK,CAAC,CAAA,GAAA,EAAMmM,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AACzD,EAAA;EACA,IAAIE,EAAE,KAAK,KAAK,EAAE,OAAO,eAAeF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;EACpD,IAAIE,EAAE,KAAK,MAAM,EAAE,OAAO,QAAQF,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AAC9C,EAAA,IAAI7Q,mBAAmB,CAAC+Q,EAAE,CAAC,EAC3B;AACI,IAAA,MAAMqB,UAAU,GAAGzQ,WAAW,CAAC8M,QAAQ,CAAC2D,UAAU;IAClD,MAAM,CAAErO,IAAI,EAAE2E,EAAE,CAAE,GAAG1I,mBAAmB,CAAC+Q,EAAE,CAAC;IAC5C,IAAIqB,UAAU,EAAErO,IAAI,KAAKA,IAAI,IAAIqO,UAAU,EAAE1J,EAAE,KAAKA,EAAE,EACtD;MACI,MAAM,IAAIxG,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,aAAA,EAAgBsP,EAAE,CAAA,oBAAA,CAAsB,CAAC;AAC3G,IAAA;AACA,IAAA,OAAO,CAAA,EAAGtM,SAAS,CAACiE,EAAE,EAAEhE,KAAK,CAAC,CAAA,CAAA,EAAImM,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AAClD,EAAA;EACA,IAAIE,EAAE,KAAK,KAAK,EAAE,OAAOpB,WAAW,CAAC,CAAA,IAAA,EAAOkB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,EAAA,EAAKA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,CAAG,EAAEnM,KAAK,CAAC;EACpF,IAAIqM,EAAE,KAAK,KAAK,EAAE,OAAOpB,WAAW,CAAC,CAAA,IAAA,EAAOkB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,EAAA,EAAKA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,CAAG,EAAEnM,KAAK,CAAC;EACpF,IAAIqM,EAAE,KAAK,KAAK,EAAE,OAAOpB,WAAW,CAAC,CAAA,IAAA,EAAOkB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,EAAA,EAAKA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,CAAG,EAAEnM,KAAK,CAAC;EACpF,IAAIqM,EAAE,KAAK,QAAQ,EACnB;AACI,IAAA,MAAMsB,EAAE,GAAGhP,KAAK,CAAC4E,YAAY,KAAK,CAAC,GAAG,KAAK,GAAG5E,KAAK,CAAC4E,YAAY,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI;AACrF,IAAA,IAAI,CAACoK,EAAE,EAAE,MAAM,IAAInQ,KAAK,CAAC,CAAA,iCAAA,EAAoCP,WAAW,CAACF,KAAK,CAAA,sCAAA,CAAwC,CAAC;AACvH,IAAA,OAAO,GAAG4Q,EAAE,CAAA,CAAA,EAAIxB,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AAChC,EAAA;EACA,IAAIE,EAAE,KAAK,SAAS,EACpB;IACI,IAAIpP,WAAW,CAAC2Q,QAAQ,EACxB;MACI,MAAM,IAAIpQ,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,kBAAkB,CAAC;AAC7F,IAAA;IACA,MAAMwO,QAAQ,GAAGC,0BAA0B,CAACvO,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC;IACnF,MAAM+J,cAAc,GAAGpB,iBAAiB,CAACC,QAAQ,EAAE,kBAAkB,EAAE0F,QAAQ,CAAC;AAChF,IAAA,IAAI,CAACvE,cAAc,EAAE,MAAM,IAAIxJ,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,mCAAA,CAAqC,CAAC;AACzH,IAAA,MAAMG,aAAa,GAAG8J,cAAc,CAAC6G,OAAO,EAAE3Q,aAAa;AAC3D,IAAA,IAAIA,aAAa,KAAK,IAAI,IAAIA,aAAa,KAAK,IAAI,EACpD;MACI,MAAM,IAAIM,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,mCAAmC,CAAC;AAC9G,IAAA;AACA,IAAA,MAAM+Q,UAAU,GAAG7Q,WAAW,CAACwI,QAAQ,CAAC,CAAC,CAAC;IAC1C,MAAMsI,OAAO,GAAGD,UAAU,EAAE9I,eAAe,GAAG,CAAC,CAAC,EAAE1G,MAAM;AACxD,IAAA,IAAIwP,UAAU,EAAExQ,QAAQ,KAAK,aAAa,IAAIwQ,UAAU,CAAC9I,eAAe,EAAEzH,MAAM,KAAK,CAAC,IAC/E,CAACuQ,UAAU,CAAC3E,YAAY,IAAI,MAAM,MAAM,MAAM,IAC9C,CAAC2E,UAAU,CAACvE,gBAAgB,IAAI,SAAS,MAAM,SAAS,IACxD,CAACvL,MAAM,CAACC,SAAS,CAAC8P,OAAO,CAAC,EACjC;MACI,MAAM,IAAIvQ,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,kCAAkC,CAAC;AAC7G,IAAA;AACA,IAAA,MAAM4L,QAAQ,GAAG1L,WAAW,CAAC+Q,qBAAqB,IAAI,OAAO;AAC7D,IAAA,IAAI,CAAC,CAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAE,CAAC/J,QAAQ,CAAC0E,QAAQ,CAAC,EACvD;MACI,MAAM,IAAInL,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,CAAA,6BAAA,EAAgC4L,QAAQ,CAAA,CAAE,CAAC;AACrH,IAAA;AACA,IAAA,MAAMF,MAAM,GAAGzB,cAAc,CAACiB,eAAe;AAC7C,IAAA,MAAMgG,QAAQ,GAAG,CAAA,iBAAA,EAAoBxF,MAAM,CAAA,CAAA,CAAG;AAC9C;AACA;AACA;AACA;AACA,IAAA,MAAMyF,KAAK,GAAGH,OAAO,KAAK,CAAC,GAAG,GAAG,GAAG,CAAA,IAAA,EAAOA,OAAO,CAAA,GAAA,EAAME,QAAQ,CAAA,MAAA,CAAQ;AACxE,IAAA,MAAME,YAAY,GAAGJ,OAAO,KAAK,CAAC,GAAG,IAAI,GAAG,CAAA,EAAGA,OAAO,CAAA,IAAA,EAAOE,QAAQ,CAAA,CAAE;AACvE,IAAA,MAAMG,IAAI,GAAG,CAAA,kBAAA,EAAqB3F,MAAM,CAAA,EAAA,EAAKyF,KAAK,CAAA,CAAA,CAAG;AACrD,IAAA,MAAMzK,KAAK,GAAGe,qBAAqB,CAAC+G,QAAQ,EAAE3O,IAAI,EAAEoD,KAAK,CAAC,CAACL,GAAG,CAAEJ,SAAS,IACzE;AACI,MAAA,IAAIxB,KAAK;MACT,IAAIwJ,SAAS,GAAG,IAAI;AACpB,MAAA,IAAIhI,SAAS,KAAK,GAAG,EAAExB,KAAK,GAAG,GAAGqQ,IAAI,CAAA,EAAA,CAAI,CAAC,KACtC,IAAI7O,SAAS,KAAK,GAAG,EAAExB,KAAK,GAAG,GAAGqQ,IAAI,CAAA,EAAA,CAAI,CAAC,KAC3C,IAAI7O,SAAS,KAAK,GAAG,IAAIrC,aAAa,KAAK,IAAI,EAAEa,KAAK,GAAG,CAAA,EAAGqQ,IAAI,IAAI,CAAC,KACrE,IAAI7O,SAAS,KAAK,GAAG,EAC1B;AACIxB,QAAAA,KAAK,GAAGkQ,QAAQ;AAChB1G,QAAAA,SAAS,GAAG,KAAK;AACrB,MAAA,CAAC,MACI,MAAM,IAAI/J,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,CAAA,yBAAA,EAA4BwC,SAAS,CAAA,OAAA,EAAUrC,aAAa,UAAU,CAAC;MAClJ,IAAIqK,SAAS,IAAI4G,YAAY,EAAEpQ,KAAK,GAAG,CAAA,WAAA,EAAcA,KAAK,CAAA,EAAA,EAAKoQ,YAAY,CAAA,CAAA,CAAG;AAC9E,MAAA,IAAIxF,QAAQ,KAAK,MAAM,EAAE,OAAO5K,KAAK;AACrC,MAAA,OAAO4K,QAAQ,KAAK,UAAU,IAAIpB,SAAS,GAAG,CAAA,WAAA,EAAcxJ,KAAK,CAAA,EAAA,CAAI,GAAG,CAAA,IAAA,EAAOA,KAAK,CAAA,CAAA,CAAG;AAC3F,IAAA,CAAC,CAAC;IACF,OAAOyF,UAAU,CAACC,KAAK,EAAEkF,QAAQ,KAAK,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AACxE,EAAA;EACA,IAAI0D,EAAE,KAAK,eAAe,EAAE,OAAOnB,wBAAwB,CAACxM,OAAO,EAAEzB,WAAW,EAAE0B,KAAK,EAAEkB,SAAS,CAACnB,OAAO,EAAEC,KAAK,CAAC,EAAEwF,MAAM,EAAE0B,QAAQ,CAAC;EACrI,IAAIwG,EAAE,KAAK,IAAI,EACf;IACI,MAAMd,QAAQ,GAAGC,0BAA0B,CAACvO,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC;IACnF,MAAM+J,cAAc,GAAGpB,iBAAiB,CAACC,QAAQ,EAAE,kBAAkB,EAAE0F,QAAQ,CAAC;AAChF,IAAA,IAAI,CAACvE,cAAc,EAAE,MAAM,IAAIxJ,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,gCAAA,CAAkC,CAAC;AACtH,IAAA,IAAIsR,MAAM;AACV,IAAA,IAAIrH,cAAc,CAACyE,MAAM,IAAI,CAACzN,MAAM,CAACC,SAAS,CAAC+I,cAAc,CAAC0E,eAAe,CAAC,EAC9E;AACI;AACA;AACA;AACA,MAAA,MAAM4C,OAAO,GAAGtH,cAAc,CAAC7I,IAAI,CAAC2G,KAAK,CAAC,QAAQ,CAACvH,MAAM,EAAE,EAAE,CAAC;AAC9D,MAAA,MAAM6N,OAAO,GAAGe,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,MAAA,MAAM1D,MAAM,GAAGzB,cAAc,CAACiB,eAAe;AAC7C,MAAA,MAAM1K,MAAM,GAAG,CAAA,aAAA,EAAgBkL,MAAM,CAAA,CAAA,CAAG;AACxC4F,MAAAA,MAAM,GAAG,CAAA,OAAA,EAAUC,OAAO,CAAA,IAAA,EAAO7F,MAAM,CAAA,KAAA,EAAQ2C,OAAO,CAAA,EAAA,EAAK7N,MAAM,CAAA,SAAA,EAAY6N,OAAO,CAAA,GAAA,EAAM7N,MAAM,CAAA,CAAA,CAAG;IACvG,CAAC,MACI,IAAIyJ,cAAc,CAAC6G,OAAO,EAAE3Q,aAAa,KAAK,IAAI,EACvD;AACI,MAAA,MAAMkO,OAAO,GAAGe,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,MAAA,MAAM1D,MAAM,GAAGzB,cAAc,CAACiB,eAAe;AAC7C,MAAA,MAAMgG,QAAQ,GAAG,CAAA,iBAAA,EAAoBxF,MAAM,CAAA,CAAA,CAAG;AAC9C,MAAA,MAAM8F,SAAS,GAAG,CAAA,IAAA,EAAOnD,OAAO,CAAA,IAAA,EAAO6C,QAAQ,CAAA,MAAA,CAAQ;AACvD,MAAA,MAAMO,UAAU,GAAG,CAAA,kBAAA,EAAqB/F,MAAM,CAAA,EAAA,EAAK8F,SAAS,CAAA,CAAA,CAAG;AAC/D,MAAA,MAAME,eAAe,GAAG,CAAA,IAAA,EAAOrD,OAAO,CAAA,KAAA,EAAQoD,UAAU,CAAA,iBAAA,CAAmB;MAC3E,MAAME,QAAQ,GAAG,CAAA,EAAGtD,OAAO,CAAA,KAAA,EAAQ6C,QAAQ,CAAA,QAAA,EAAW7C,OAAO,CAAA,MAAA,EAASoD,UAAU,CAAA,CAAA,CAAG;MACnFH,MAAM,GAAG,mCAAmC5F,MAAM,CAAA,EAAA,EAAKgG,eAAe,CAAA,EAAA,EAAKF,SAAS,CAAA,GAAA,EAAMG,QAAQ,CAAA,CAAA,CAAG;AACzG,IAAA,CAAC,MAED;MACI,MAAM,IAAIlR,KAAK,CAAC,CAAA,+BAAA,EAAkCP,WAAW,CAACF,KAAK,oFAAoF,CAAC;AAC5J,IAAA;IACA,MAAM4D,UAAU,GAAG6D,qBAAqB,CAAC+G,QAAQ,EAAE3O,IAAI,EAAEoD,KAAK,CAAC;IAC/D,OAAOA,KAAK,KAAK,CAAC,IAAIW,UAAU,CAAC+C,IAAI,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG2K,MAAM,GAAG,CAAA,EAAGA,MAAM,CAAA,CAAA,EAAI1N,UAAU,CAAC+C,IAAI,CAAC,EAAE,CAAC,CAAA,CAAE;AACtG,EAAA;AACA,EAAA,IAAI2I,EAAE,KAAK,QAAQ,IAAIA,EAAE,KAAK,UAAU,IAAIA,EAAE,KAAK,UAAU,IAAIA,EAAE,KAAK,UAAU,EAClF;IACI,MAAMd,QAAQ,GAAGC,0BAA0B,CAACvO,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC;IACnF,MAAM0R,OAAO,GAAGnD,0BAA0B,CAACvO,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC;IACjF,MAAM2R,WAAW,GAAG/H,2BAA2B,CAC3CnI,OAAO,EACP6M,QAAQ,EACR1F,QAAQ,EACR9B,OACJ,CAAC;AACD,IAAA,MAAMiD,cAAc,GAAG4H,WAAW,EAAE5H,cAAc,IAC3CpB,iBAAiB,CAACC,QAAQ,EAAE,kBAAkB,EAAE0F,QAAQ,CAAC;IAChE,MAAMsD,cAAc,GAAGjJ,iBAAiB,CAACC,QAAQ,EAAE,SAAS,EAAE8I,OAAO,CAAC;AACtE,IAAA,IAAI,CAAC3H,cAAc,IAAI,CAAC6H,cAAc,EAAE,MAAM,IAAIrR,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,iCAAiC,CAAC;AACxI,IAAA,MAAMG,aAAa,GAAG8J,cAAc,CAAC6G,OAAO,EAAE3Q,aAAa;IAC3D,MAAM4R,eAAe,GAAG5R,aAAa,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AACtD,IAAA,MAAM6R,kBAAkB,GAAG,CAAE,IAAI,EAAE,UAAU,CAAE,CAAC9K,QAAQ,CAAC/G,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/E,IAAA,IAAI8R,KAAK;IACT,IAAIC,QAAQ,GAAG,EAAE;AACjB,IAAA,IAAIL,WAAW,EACf;MACI,IAAI1R,aAAa,KAAK,UAAU,EAChC;QACI,MAAM,IAAIM,KAAK,CAAC,CAAA,iCAAA,EAAoCwJ,cAAc,CAACG,WAAW,4BAA4B,CAAC;AAC/G,MAAA;AACA6H,MAAAA,KAAK,GAAG7C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACpB8C,MAAAA,QAAQ,GAAG,CAAA,EAAA,EAAKL,WAAW,CAACxH,KAAK,CAAA,CAAA,CAAG;AACxC,IAAA,CAAC,MACI,IAAIlK,aAAa,KAAK,UAAU,EACrC;AACI,MAAA,MAAMgS,MAAM,GAAG/C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;MAC3B6C,KAAK,GAAG,CAAA,EAAGE,MAAM,CAAA,GAAA,CAAK;MACtBD,QAAQ,GAAG,CAAA,YAAA,EAAeC,MAAM,CAAA,IAAA,CAAM;AAC1C,IAAA,CAAC,MAED;AACIF,MAAAA,KAAK,GAAG7C,MAAM,CAAC,CAAC,EAAE2C,eAAe,CAAC;AACtC,IAAA;IACA,MAAMK,GAAG,GAAG,CAAA,EAAGnI,cAAc,CAACiB,eAAe,CAAA,EAAA,EAAK4G,cAAc,CAAC5G,eAAe,CAAA,CAAE;AAClF,IAAA,MAAMmH,SAAS,GAAGpS,oBAAoB,CAACC,WAAW,EAAEC,aAAa,CAAC;AAClE,IAAA,MAAMmS,OAAO,GAAGhD,EAAE,KAAK,UAAU,GAC3B,CAAA,kBAAA,EAAqB8C,GAAG,CAAA,EAAA,EAAKH,KAAK,GAAGC,QAAQ,CAAA,EAAA,EAAK9C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,EAAGiD,SAAS,GAAG,GAC7E/C,EAAE,KAAK,UAAU,GACb,CAAA,mBAAA,EAAsB8C,GAAG,CAAA,EAAA,EAAKH,KAAK,GAAGC,QAAQ,CAAA,EAAA,EAAK9C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,EAAGiD,SAAS,GAAG,GAC9E/C,EAAE,KAAK,UAAU,GACb,CAAA,kBAAA,EAAqB8C,GAAG,CAAA,EAAA,EAAKH,KAAK,GAAGC,QAAQ,CAAA,EAAA,EAAK9C,MAAM,CAAC,CAAC,EAAE4C,kBAAkB,CAAC,CAAA,EAAA,EAAK5C,MAAM,CAAC,CAAC,EAAE4C,kBAAkB,CAAC,GAAGK,SAAS,CAAA,CAAA,CAAG,GAChI,CAAA,cAAA,EAAiBD,GAAG,CAAA,EAAA,EAAKH,KAAK,GAAGC,QAAQ,CAAA,EAAGG,SAAS,CAAA,CAAA,CAAG;IACtE,MAAMzO,UAAU,GAAG6D,qBAAqB,CAAC+G,QAAQ,EAAE3O,IAAI,EAAEoD,KAAK,CAAC;IAC/D,OAAOA,KAAK,KAAK,CAAC,IAAIW,UAAU,CAAC+C,IAAI,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG2L,OAAO,GAAG,CAAA,EAAGA,OAAO,CAAA,CAAA,EAAI1O,UAAU,CAAC+C,IAAI,CAAC,EAAE,CAAC,CAAA,CAAE;AACxG,EAAA;EACA,MAAM,IAAIlG,KAAK,CAAC,CAAA,qBAAA,EAAwB6O,EAAE,mBAAmBpP,WAAW,CAACF,KAAK,CAAA,iBAAA,CAAmB,CAAC;AACtG;AAEA,SAASuS,kBAAkBA,CAACrS,WAAW,EAAE0B,KAAK,EAAE4Q,UAAU,EAAEpR,IAAI,EAChE;AACI,EAAA,MAAM6L,QAAQ,GAAG/M,WAAW,CAAC8M,QAAQ,CAACC,QAAQ,CAACnN,MAAM,CAAEqC,KAAK,IAAKA,KAAK,CAACiC,IAAI,KAAK,gBAAgB,IACzFjC,KAAK,CAACqE,YAAY,KAAK5E,KAAK,CAAC4E,YAAY,IAAIrE,KAAK,CAACH,OAAO,KAAKJ,KAAK,CAACI,OAAO,CAAC;AACpF,EAAA,IAAI,CAACiL,QAAQ,CAACzM,MAAM,EAAE,OAAOgS,UAAU;EACvC,MAAM5O,UAAU,GAAGvB,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC;AACzC,EAAA,MAAM4S,aAAa,GAAGvS,WAAW,CAAC8M,QAAQ,CAACQ,UAAU;EACrD,IAAIP,QAAQ,CAACzM,MAAM,KAAKoD,UAAU,CAACpD,MAAM,IAAIyM,QAAQ,CAAC1K,IAAI,CAAEJ,KAAK,IAC7DA,KAAK,CAACG,IAAI,KAAKmQ,aAAa,IAAItQ,KAAK,CAAC8E,EAAE,KAAK7F,IAAI,CAAClC,UAAU,CAAC,IAC1D0E,UAAU,CAACrB,IAAI,CAAEC,SAAS,IAAK,CAACyK,QAAQ,CAAC1K,IAAI,CAAEJ,KAAK,IAAKA,KAAK,CAACK,SAAS,KAAKA,SAAS,CAAC,CAAC,EAC/F;IACI,MAAM,IAAI/B,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,0CAA0C,CAAC;AAC7G,EAAA;AACA,EAAA,OAAO4G,eAAe,CAAC4L,UAAU,EAAEC,aAAa,EAAErR,IAAI,CAAClC,UAAU,EAAE0E,UAAU,CAACpD,MAAM,EAChF,CAAA,YAAA,EAAeN,WAAW,CAACF,KAAK,SAAS,CAAC;AAClD;AAEA,SAAS0S,gBAAgBA,CAAC/Q,OAAO,EAAEzB,WAAW,EAAEkH,MAAM,EAAEuL,OAAO,EAAE7J,QAAQ,EAAE8J,OAAO,EAAE/Q,YAAY,EAAEgR,UAAU,GAAG,KAAK,EAAE7L,OAAO,GAAG,IAAI,EACpI;EACI,IAAI,CAAC7I,iBAAiB,CAAC4D,GAAG,CAAC7B,WAAW,CAAC6F,UAAU,CAAC,EAClD;AACI,IAAA,MAAM,IAAItF,KAAK,CAAC,CAAA,qBAAA,EAAwBP,WAAW,CAAC6F,UAAU,CAAA,gBAAA,EAAmB7F,WAAW,CAACF,KAAK,CAAA,iBAAA,CAAmB,CAAC;AAC1H,EAAA;AACA,EAAA,MAAM8S,oBAAoB,GAAG5S,WAAW,CAACG,UAAU,EAAE6B,IAAI,CAAE5B,SAAS,IAChE,CAACjC,0BAA0B,CAAC0D,GAAG,CAACzB,SAAS,CAACC,QAAQ,CAAC,IAChD,EAAED,SAAS,CAACC,QAAQ,KAAK,iBAAiB,IACtCjC,qBAAqB,CAACyD,GAAG,CAAC7B,WAAW,CAAC6F,UAAU,CAAC,CAAC,CAAC;AAC9D,EAAA,IAAI+M,oBAAoB,EACxB;AACI,IAAA,MAAM,IAAIrS,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,kBAAA,EAAqB8S,oBAAoB,CAACvS,QAAQ,CAAA,iBAAA,CAAmB,CAAC;AACxI,EAAA;AACA,EAAA,IAAIsS,UAAU,IAAInT,6BAA6B,CAACqC,GAAG,CAAC7B,WAAW,CAAC6F,UAAU,CAAC,IAAIiB,OAAO,EACtF;AACI;AACA;AACA;AACA;AACA;IACAA,OAAO,CAAC+L,kCAAkC,GAAG,IAAI;AACrD,EAAA;AACAC,EAAAA,0BAA0B,CAAC9S,WAAW,EAAE,UAAU,CAAC;EACnD,MAAM+S,SAAS,GAAG/S,WAAW,CAACwI,QAAQ,CAACxG,IAAI,CAACqK,uBAAuB,CAAC;AACpE,EAAA,IAAI0G,SAAS,EACb;AACI,IAAA,MAAM,IAAIxS,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,wBAAA,EAA2BiT,SAAS,CAACzG,gBAAgB,CAAA,iBAAA,CAAmB,CAAC;AAC3I,EAAA;AACAY,EAAAA,wBAAwB,CAACzL,OAAO,EAAEzB,WAAW,CAAC;AAC9C,EAAA,IAAIA,WAAW,CAAC6F,UAAU,KAAK,KAAK,EACpC;AACI,IAAA,KAAK,MAAMsB,KAAK,IAAIsL,OAAO,EAC3B;MACI,MAAMO,OAAO,GAAG7L,KAAK,CAACzD,UAAU,CAAC9D,MAAM,CAAE0C,SAAS,IAAK,CAACoQ,OAAO,CAAChO,GAAG,CAACyC,KAAK,CAACjF,EAAE,CAAC,CAACL,GAAG,CAACS,SAAS,CAAC,CAAC;MAC7F,IAAI0Q,OAAO,CAAC1S,MAAM,EAAE,MAAM,IAAIC,KAAK,CAAC,CAAA,qBAAA,EAAwB4G,KAAK,CAACtD,YAAY,GAAGsD,KAAK,CAAChD,aAAa,CAAA,QAAA,EAAW6O,OAAO,CAACvM,IAAI,CAAC,EAAE,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC9J,IAAA;IACA,OAAO;AAAEvC,MAAAA,IAAI,EAAE,QAAQ;MAAE+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;MAAEoT,UAAU,EAAElT,WAAW,CAACkT;KAAY;AACtG,EAAA;AACA,EAAA,IAAIlT,WAAW,CAAC6F,UAAU,KAAK,SAAS,EACxC;AACI,IAAA,MAAMsN,UAAU,GAAGnT,WAAW,CAACoT,WAAW;AAC1C,IAAA,MAAM5L,OAAO,GAAGxH,WAAW,CAACwI,QAAQ,CAAC,CAAC,CAAC;AACvC,IAAA,MAAMrD,IAAI,GAAGkB,UAAU,CAACrG,WAAW,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,CAAE,MAAM,EAAE,SAAS,CAAE,CAACgH,QAAQ,CAACmM,UAAU,CAAC,EAC/C;MACI,MAAM,IAAI5S,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,wCAAwC,CAAC;AACnH,IAAA;IACA,MAAMuT,WAAW,GAAG7L,OAAO,EAAEnH,QAAQ,KAAK,aAAa,GACjDmH,OAAO,CAACO,eAAe,EAAEzH,MAAM,KAAK,CAAC,GACrCtC,UAAU,CAACgJ,QAAQ,CAACQ,OAAO,EAAEG,QAAQ,CAAC;IAC5C,IAAI3H,WAAW,CAACwI,QAAQ,CAAClI,MAAM,KAAK,CAAC,IAAI,CAACkH,OAAO,IAAI,CAAC6L,WAAW,IAAKlO,IAAI,IAAIA,IAAI,CAACC,IAAI,CAAC9E,MAAM,KAAK,CAAE,EACrG;MACI,MAAM,IAAIC,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,gCAAgC,CAAC;AAC3G,IAAA;IACA,IAAI,CAAC0H,OAAO,CAAC0E,YAAY,IAAI,MAAM,MAAM,MAAM,EAC/C;MACI,MAAM,IAAI3L,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,8BAA8B,CAAC;AACzG,IAAA;IACA,IAAIE,WAAW,CAAC2Q,QAAQ,EACxB;MACI,MAAM,IAAIpQ,KAAK,CAAC,CAAA,kCAAA,EAAqCP,WAAW,CAACF,KAAK,gCAAgC,CAAC;AAC3G,IAAA;AACA,IAAA,MAAMwT,SAAS,GAAG3G,iBAAiB,CAAClL,OAAO,EAAEzB,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAEkH,MAAM,EAAE0B,QAAQ,CAAC;IAChG,OAAO;AACH1E,MAAAA,IAAI,EAAE,IAAI;MACV+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;MACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;AAClCI,MAAAA,SAAS,EAAE;QAAE3M,IAAI,EAAE,CAAA,EAAG2M,SAAS,CAAA,CAAA,EAAIH,UAAU,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA,GAAA,CAAK;AAAEjS,QAAAA,IAAI,EAAE;OAAQ;AAC3FqS,MAAAA,UAAU,EAAE,CAAE;AAAErP,QAAAA,IAAI,EAAE;OAAW;KACpC;AACL,EAAA;AACA,EAAA,IAAIlE,WAAW,CAAC6F,UAAU,KAAK,aAAa,EAC5C;IACI,MAAM2N,GAAG,GAAGjF,0BAA0B,CAACvO,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC;IACzE,IAAIA,WAAW,CAACwI,QAAQ,CAAClI,MAAM,KAAK,CAAC,IAAIN,WAAW,CAAC2Q,QAAQ,EAC7D;MACI,MAAM,IAAIpQ,KAAK,CAAC,CAAA,iCAAA,EAAoCP,WAAW,CAACF,KAAK,mCAAmC,CAAC;AAC7G,IAAA;IACA,MAAMmJ,OAAO,GAAGN,iBAAiB,CAACC,QAAQ,EAAE,kBAAkB,EAAE4K,GAAG,CAAC;AACpE,IAAA,IAAI,CAACvK,OAAO,EAAE,MAAM,IAAI1I,KAAK,CAAC,CAAA,iCAAA,EAAoCP,WAAW,CAACF,KAAK,CAAA,8BAAA,CAAgC,CAAC;AACpH,IAAA,IAAImJ,OAAO,CAAC/H,IAAI,KAAK,oBAAoB,EACzC;AACI,MAAA,MAAM,IAAIX,KAAK,CAAC,CAAA,iCAAA,EAAoCP,WAAW,CAACF,KAAK,CAAA,YAAA,EAAemJ,OAAO,CAAC/H,IAAI,CAAA,iBAAA,CAAmB,CAAC;AACxH,IAAA;AACA,IAAA,MAAMiN,OAAO,GAAGxB,iBAAiB,CAAClL,OAAO,EAAEzB,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAEkH,MAAM,EAAE0B,QAAQ,CAAC;AAC9F,IAAA,MAAM9H,KAAK,GAAG6L,iBAAiB,CAAClL,OAAO,EAAEzB,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAEkH,MAAM,EAAE0B,QAAQ,CAAC;AAC5F;AACA;IACA,OAAO;AACH1E,MAAAA,IAAI,EAAE,IAAI;MACV+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;MACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;AAClCI,MAAAA,SAAS,EAAE;AAAE3M,QAAAA,IAAI,EAAE,CAAA,EAAGwH,OAAO,mBAAmBlF,OAAO,CAAC+B,eAAe,CAAA,CAAA,CAAG;AAAE9J,QAAAA,IAAI,EAAE;OAAQ;AAC1FqS,MAAAA,UAAU,EAAE,CAAE;AACVrP,QAAAA,IAAI,EAAE,MAAM;QACZ+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;QACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;AAClCZ,QAAAA,UAAU,EAAE;UAAE3L,IAAI,EAAE,cAAcsC,OAAO,CAAC+B,eAAe,CAAA,CAAA,EAAImD,OAAO,CAAA,GAAA,EAAMrN,KAAK,CAAA,CAAA,CAAG;AAAEI,UAAAA,IAAI,EAAE;AAAO;OACpG;KACJ;AACL,EAAA;AACA,EAAA,MAAMqM,MAAM,GAAGvN,WAAW,CAACgF,QAAQ,CAACuI,MAAM;AAC1C,EAAA,IAAI,CAACA,MAAM,CAACjN,MAAM,EAAE,MAAM,IAAIC,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,sBAAsB,CAAC;EACzG,IAAIE,WAAW,CAAC6F,UAAU,KAAK,QAAQ,IAAI7F,WAAW,CAAC6F,UAAU,KAAK,MAAM,EAC5E;IACI,MAAM4N,mBAAmB,GAAGlG,MAAM,CAAC7K,GAAG,CAAEhB,KAAK,IAAKA,KAAK,CAAC4E,YAAY,CAAC;AACrE,IAAA,IAAIiH,MAAM,CAACjN,MAAM,GAAG,CAAC,IAAI,IAAIpC,GAAG,CAACuV,mBAAmB,CAAC,CAAC9Q,IAAI,KAAK4K,MAAM,CAACjN,MAAM,IACrEmT,mBAAmB,CAACpR,IAAI,CAAEiE,YAAY,IAAK,CAAC,CAAE,CAAC,EAAE,CAAC,CAAE,CAACU,QAAQ,CAACV,YAAY,CAAC,CAAC,EACnF;AACI,MAAA,MAAM,IAAI/F,KAAK,CAAC,CAAA,cAAA,EAAiBP,WAAW,CAAC6F,UAAU,CAAA,aAAA,EAAgB7F,WAAW,CAACF,KAAK,CAAA,8BAAA,CAAgC,CAAC;AAC7H,IAAA;AACA,IAAA,IAAIyN,MAAM,CAACjN,MAAM,KAAK,CAAC,IAAIiN,MAAM,CAAC,CAAC,CAAC,CAAC5N,IAAI,KAAK4N,MAAM,CAAC,CAAC,CAAC,CAAC5N,IAAI,EAC5D;AACI,MAAA,MAAM,IAAIY,KAAK,CAAC,CAAA,cAAA,EAAiBP,WAAW,CAAC6F,UAAU,CAAA,aAAA,EAAgB7F,WAAW,CAACF,KAAK,CAAA,oCAAA,CAAsC,CAAC;AACnI,IAAA;AACJ,EAAA,CAAC,MACI,IAAIyN,MAAM,CAACjN,MAAM,KAAK,CAAC,EAC5B;IACI,MAAM,IAAIC,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,yCAAyC,CAAC;AAC5G,EAAA;EACA,MAAM4T,UAAU,GAAIhS,KAAK,IACzB;IACI,MAAMiS,WAAW,GAAG3T,WAAW,CAACwI,QAAQ,CAAC9G,KAAK,CAAC4E,YAAY,CAAC;AAC5D,IAAA,MAAMsN,gBAAgB,GAAGD,WAAW,EAAEtT,QAAQ,KAAK,gBAAgB,GAC7DwT,0BAA0B,CAACpS,OAAO,EAAEkS,WAAW,EAAEjS,KAAK,CAAC,GACvD,IAAI;IACV,MAAME,mBAAmB,GAAG+R,WAAW,EAAEtT,QAAQ,KAAK,MAAM,IAAI4F,OAAO,CAAC2N,gBAAgB,CAAC;AACzF,IAAA,IAAIpS,kBAAkB,CAACC,OAAO,EAAEC,KAAK,EAAEC,YAAY,EAAEC,mBAAmB,CAAC,EAAE,OAAO,EAAE;AACpF,IAAA,MAAMkS,UAAU,GAAGtR,mBAAmB,CAACf,OAAO,EAAEC,KAAK,CAAC;AACtD,IAAA,IAAIoS,UAAU,EACd;AACI,MAAA,IAAI9T,WAAW,CAAC6F,UAAU,KAAK,eAAe,IAAIjE,mBAAmB,IAAI,CAAC5B,WAAW,CAAC2Q,QAAQ,EAC9F;AACI,QAAA,MAAMoD,KAAK,GAAG9F,wBAAwB,CAACxM,OAAO,EAAEzB,WAAW,EAAE0B,KAAK,EAAE,IAAI,EAAEwF,MAAM,EAAE0B,QAAQ,CAAC;AAC3F,QAAA,OAAOzG,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAAC+C,GAAG,CAAC,CAACJ,SAAS,EAAEkK,SAAS,MAAM;AACzDtI,UAAAA,IAAI,EAAE,KAAK;UACX+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;UACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;AAClCpU,UAAAA,IAAI,EAAE,CAAA,EAAG4C,KAAK,CAACI,OAAO,CAAA,CAAA,EAAIQ,SAAS,CAAA,CAAE;AACrCpB,UAAAA,IAAI,EAAED,cAAc,CAAC6S,UAAU,CAACtH,SAAS,CAAC,CAAC;AAC3C8F,UAAAA,UAAU,EAAE;YACR3L,IAAI,EAAED,eAAe,CAACqN,KAAK,CAACvH,SAAS,CAAC,EAAE,QAAQ,EAAEsH,UAAU,CAACtH,SAAS,CAAC,EAAE,CAAC,EAAE,mBAAmBxM,WAAW,CAACF,KAAK,CAAA,CAAE,CAAC;AACnHoB,YAAAA,IAAI,EAAED,cAAc,CAAC6S,UAAU,CAACtH,SAAS,CAAC;AAC9C;AACJ,SAAC,CAAC,CAAC;AACP,MAAA;AACA,MAAA,MAAMwH,SAAS,GAAGhU,WAAW,CAAC8M,QAAQ,CAACQ,UAAU;AACjD,MAAA,IAAI1L,mBAAmB,IAAIX,cAAc,CAAC+S,SAAS,CAAC,IAAIhU,WAAW,CAAC6F,UAAU,KAAK,KAAK,EACxF;AACI,QAAA,IAAIoO,UAAU,GAAGhF,aAAa,CAACxN,OAAO,EAAEzB,WAAW,EAAE0B,KAAK,EAAEwF,MAAM,EAAE0B,QAAQ,EAAE9B,OAAO,CAAC;QACtF,IAAI9G,WAAW,CAAC2Q,QAAQ,EACxB;UACI,IAAIqD,SAAS,KAAK,SAAS,EAC3B;YACI,MAAM,IAAIzT,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,+BAA+B,CAAC;AAClG,UAAA;UACAmU,UAAU,GAAG,CAAA,MAAA,EAASA,UAAU,CAAA,EAAA,EAAKlG,UAAU,CAACrM,KAAK,CAAC/B,IAAI,CAACW,MAAM,EAAE,KAAK,CAAC,CAAA,EAAA,EAAKyN,UAAU,CAACrM,KAAK,CAAC/B,IAAI,CAACW,MAAM,EAAE,KAAK,CAAC,CAAA,CAAA,CAAG;AACzH,QAAA;AACA,QAAA,MAAM4T,UAAU,GAAG,CAAA,EAAGxS,KAAK,CAACI,OAAO,CAAA,EAAA,CAAI;QACvC,MAAMqS,UAAU,GAAGrR,SAAS,CAACkR,SAAS,EAAEtS,KAAK,CAAC/B,IAAI,CAACW,MAAM,CAAC;QAC1D,MAAMiT,UAAU,GAAG,CAAE;AACjBrP,UAAAA,IAAI,EAAE,KAAK;UACX+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;UACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;AAClCpU,UAAAA,IAAI,EAAEoV,UAAU;AAChBhT,UAAAA,IAAI,EAAEiT,UAAU;AAChB7B,UAAAA,UAAU,EAAE;AAAE3L,YAAAA,IAAI,EAAEsN,UAAU;AAAE/S,YAAAA,IAAI,EAAEiT;AAAW;AACrD,SAAC,CAAE;AACHhS,QAAAA,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAACyN,OAAO,CAAC,CAAC9K,SAAS,EAAEkK,SAAS,KACpD;AACI,UAAA,MAAM4H,QAAQ,GAAGN,UAAU,CAACtH,SAAS,CAAC;AACtC,UAAA,MAAM6H,MAAM,GAAG3S,KAAK,CAAC/B,IAAI,CAACW,MAAM,KAAK,CAAC,GAAG4T,UAAU,GAAG,GAAGA,UAAU,CAAA,CAAA,EAAIlW,UAAU,CAACwO,SAAS,CAAC,CAAA,CAAE;UAC9F+G,UAAU,CAAC5O,IAAI,CAAC;AACZT,YAAAA,IAAI,EAAE,KAAK;AACXpF,YAAAA,IAAI,EAAE,CAAA,EAAG4C,KAAK,CAACI,OAAO,CAAA,CAAA,EAAIQ,SAAS,CAAA,CAAE;AACrCpB,YAAAA,IAAI,EAAED,cAAc,CAACmT,QAAQ,CAAC;AAC9B9B,YAAAA,UAAU,EAAE;AACR3L,cAAAA,IAAI,EAAED,eAAe,CAAC2N,MAAM,EAAEL,SAAS,EAAEI,QAAQ,EAAE,CAAC,EAAE,CAAA,YAAA,EAAepU,WAAW,CAACF,KAAK,EAAE,CAAC;cACzFoB,IAAI,EAAED,cAAc,CAACmT,QAAQ;AACjC;AACJ,WAAC,CAAC;AACN,QAAA,CAAC,CAAC;AACF,QAAA,OAAOb,UAAU;AACrB,MAAA;AACA,MAAA,IAAIvT,WAAW,CAAC6F,UAAU,KAAK,MAAM,IAAIjE,mBAAmB,IAAI,CAAC5B,WAAW,CAAC2Q,QAAQ,EACrF;AACI,QAAA,OAAOxO,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAAC+C,GAAG,CAAC,CAACJ,SAAS,EAAEkK,SAAS,KACvD;AACI,UAAA,MAAM4H,QAAQ,GAAGN,UAAU,CAACtH,SAAS,CAAC;UACtC,MAAM8G,SAAS,GAAG/G,qBAAqB,CAAC9K,OAAO,EAAEzB,WAAW,EAAE,CAAC,EAAE0B,KAAK,CAAC/B,IAAI,EAAE6M,SAAS,EAAE,QAAQ,EAAEtF,MAAM,EAAE0B,QAAQ,CAAC;UACnH,MAAM0L,QAAQ,GAAG/H,qBAAqB,CAAC9K,OAAO,EAAEzB,WAAW,EAAE,CAAC,EAAE0B,KAAK,CAAC/B,IAAI,EAAE6M,SAAS,EAAE4H,QAAQ,EAAElN,MAAM,EAAE0B,QAAQ,EAAE,IAAI,CAAC;UACxH,MAAM2L,SAAS,GAAGhI,qBAAqB,CAAC9K,OAAO,EAAEzB,WAAW,EAAE,CAAC,EAAE0B,KAAK,CAAC/B,IAAI,EAAE6M,SAAS,EAAE4H,QAAQ,EAAElN,MAAM,EAAE0B,QAAQ,EAAE,IAAI,CAAC;UACzH,OAAO;AACH1E,YAAAA,IAAI,EAAE,KAAK;YACX+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;YACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;AAClCpU,YAAAA,IAAI,EAAE,CAAA,EAAG4C,KAAK,CAACI,OAAO,CAAA,CAAA,EAAIQ,SAAS,CAAA,CAAE;AACrCpB,YAAAA,IAAI,EAAED,cAAc,CAACmT,QAAQ,CAAC;AAC9B9B,YAAAA,UAAU,EAAE;AACR3L,cAAAA,IAAI,EAAE,CAAA,OAAA,EAAU4N,SAAS,KAAKD,QAAQ,CAAA,EAAA,EAAKhB,SAAS,CAAA,OAAA,CAAS;cAC7DpS,IAAI,EAAED,cAAc,CAACmT,QAAQ;AACjC;WACH;AACL,QAAA,CAAC,CAAC;AACN,MAAA;AACA,MAAA,MAAMI,eAAe,GAAGxU,WAAW,CAACwI,QAAQ,CAAC,CAAC,CAAC;AAC/C,MAAA,IAAIxI,WAAW,CAAC6F,UAAU,KAAK,KAAK,IAAI7F,WAAW,CAAC2Q,QAAQ,IACrD,CAAC/O,mBAAmB,IAAI4S,eAAe,EAAEnU,QAAQ,KAAK,aAAa,EAC1E;QACI,MAAM,IAAIE,KAAK,CAAC,CAAA,oBAAA,EAAuBmB,KAAK,CAACI,OAAO,+DAA+D,CAAC;AACxH,MAAA;AACA,MAAA,OAAOK,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAAC+C,GAAG,CAAC,CAACJ,SAAS,EAAEkK,SAAS,MAAM;AACzDtI,QAAAA,IAAI,EAAE,KAAK;QACX+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;QACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;AAClCpU,QAAAA,IAAI,EAAE,CAAA,EAAG4C,KAAK,CAACI,OAAO,CAAA,CAAA,EAAIQ,SAAS,CAAA,CAAE;AACrCpB,QAAAA,IAAI,EAAED,cAAc,CAAC6S,UAAU,CAACtH,SAAS,CAAC,CAAC;AAC3C8F,QAAAA,UAAU,EAAE;AACR3L,UAAAA,IAAI,EAAEuB,cAAc,CAACsM,eAAe,EAAElS,SAAS,EAAE,CAAC,EAAEwR,UAAU,CAACtH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7EtL,UAAAA,IAAI,EAAED,cAAc,CAAC6S,UAAU,CAACtH,SAAS,CAAC;AAC9C;AACJ,OAAC,CAAC,CAAC;AACP,IAAA;AACJ,IAAA,MAAMtL,IAAI,GAAG0B,SAAS,CAACnB,OAAO,EAAEC,KAAK,CAAC;AACtC,IAAA,IAAI4Q,UAAU,GAAGrD,aAAa,CAACxN,OAAO,EAAEzB,WAAW,EAAE0B,KAAK,EAAEwF,MAAM,EAAE0B,QAAQ,EAAE9B,OAAO,CAAC;IACtF,IAAI9G,WAAW,CAAC2Q,QAAQ,EACxB;MACI,MAAM8D,WAAW,GAAG,CAAA,EAAG1G,UAAU,CAACrM,KAAK,CAAC/B,IAAI,CAACW,MAAM,EAAE,KAAK,CAAC,CAAA,EAAA,EAAKyN,UAAU,CAACrM,KAAK,CAAC/B,IAAI,CAACW,MAAM,EAAE,KAAK,CAAC,CAAA,CAAE;AACtG,MAAA,IAAIN,WAAW,CAAC8M,QAAQ,CAACQ,UAAU,KAAK,SAAS,EACjD;AACIgF,QAAAA,UAAU,GAAG,CAAA,MAAA,EAASA,UAAU,CAAA,EAAA,EAAKmC,WAAW,CAAA,CAAA,CAAG;AACvD,MAAA,CAAC,MACI,IAAI,CAAE,KAAK,EAAE,MAAM,CAAE,CAACzN,QAAQ,CAAChH,WAAW,CAAC6F,UAAU,CAAC,IACpD,CAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAE,CAACmB,QAAQ,CAAC9F,IAAI,CAAClC,UAAU,CAAC,EACtE;AACI;AACA;AACA;QACA,MAAM0V,SAAS,GAAG5R,SAAS,CAAC,SAAS,EAAEpB,KAAK,CAAC/B,IAAI,CAACW,MAAM,CAAC;QACzDgS,UAAU,GAAG,CAAA,QAAA,EAAWpR,IAAI,CAAC2B,QAAQ,CAAA,gBAAA,EAAmB6R,SAAS,CAAA,EAAA,EAAKpC,UAAU,CAAA,GAAA,EAAMmC,WAAW,CAAA,EAAA,CAAI;AACzG,MAAA,CAAC,MAED;QACI,MAAM,IAAIlU,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,+BAA+B,CAAC;AAClG,MAAA;AACJ,IAAA;IACAwS,UAAU,GAAGD,kBAAkB,CAACrS,WAAW,EAAE0B,KAAK,EAAE4Q,UAAU,EAAEpR,IAAI,CAAC;AACrE,IAAA,IAAIyS,WAAW,CAACtT,QAAQ,KAAK,QAAQ,EACrC;AACI,MAAA,MAAM8G,KAAK,GAAGsL,OAAO,CAACzQ,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACqB,aAAa,KAAKqQ,WAAW,CAACrQ,aAAa,CAAC;AACxF,MAAA,IAAI,CAAC6D,KAAK,EAAE,MAAM,IAAI5G,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,+BAAA,EAAkC6T,WAAW,CAACrQ,aAAa,EAAE,CAAC;AACxI,MAAA,MAAMI,UAAU,GAAGvB,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAAC+C,GAAG,CAAEJ,SAAS,IAAKW,eAAe,CAACkE,KAAK,CAACzD,UAAU,CAAC+C,IAAI,CAAC,EAAE,CAAC,EAAEnE,SAAS,CAAC,CAAC;MACnHH,KAAK,CAACC,IAAI,CAACV,KAAK,CAAC/B,IAAI,CAAC,CAACyN,OAAO,CAAE9K,SAAS,IAAKoQ,OAAO,CAAChO,GAAG,CAACyC,KAAK,CAACjF,EAAE,CAAC,CAACuD,GAAG,CAACnD,SAAS,CAAC,CAAC;AACnF,MAAA,MAAMqS,UAAU,GAAG7R,SAAS,CAACqE,KAAK,CAACnI,UAAU,EAAE0C,KAAK,CAAC/B,IAAI,CAACW,MAAM,CAAC;AACjE,MAAA,MAAMsU,oBAAoB,GAAGlO,eAAe,CACxC4L,UAAU,EACVpR,IAAI,CAAClC,UAAU,EACfmI,KAAK,CAACnI,UAAU,EAChB0C,KAAK,CAAC/B,IAAI,CAACW,MAAM,EACjB,CAAA,OAAA,EAAU6G,KAAK,CAACtD,YAAY,CAAA,EAAGsD,KAAK,CAAChD,aAAa,EACtD,CAAC;AACD,MAAA,MAAM0Q,UAAU,GAAG;AACf3Q,QAAAA,IAAI,EAAE,YAAY;QAClB+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;QACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;AAClC7L,QAAAA,MAAM,EAAE;UAAEyN,OAAO,EAAE3N,KAAK,CAACjF,EAAE;UAAEwB,UAAU;AAAExC,UAAAA,IAAI,EAAEyT;SAAY;AAC3DrC,QAAAA,UAAU,EAAE;AAAE3L,UAAAA,IAAI,EAAEiO,oBAAoB;AAAE1T,UAAAA,IAAI,EAAEyT;AAAW;OAC9D;MACD,IAAI,CAAChT,YAAY,CAACE,GAAG,CAACH,KAAK,CAACI,OAAO,CAAC,EAAE,OAAO+S,UAAU;AACvD,MAAA,OAAO,CACH;AACI3Q,QAAAA,IAAI,EAAE,KAAK;QACX+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;QACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;QAClCpU,IAAI,EAAE4C,KAAK,CAACI,OAAO;QACnBZ,IAAI,EAAEA,IAAI,CAAC2B,QAAQ;AACnByP,QAAAA,UAAU,EAAE;AAAE3L,UAAAA,IAAI,EAAE2L,UAAU;UAAEpR,IAAI,EAAEA,IAAI,CAAC2B;AAAS;AACxD,OAAC,EACD;AACI,QAAA,GAAGgS,UAAU;AACb5B,QAAAA,gBAAgB,EAAEzJ,SAAS;AAC3B0J,QAAAA,UAAU,EAAE1J,SAAS;AACrB8I,QAAAA,UAAU,EAAE;AACR3L,UAAAA,IAAI,EAAED,eAAe,CAAChF,KAAK,CAACI,OAAO,EAAEZ,IAAI,CAAClC,UAAU,EAAEmI,KAAK,CAACnI,UAAU,EAAE0C,KAAK,CAAC/B,IAAI,CAACW,MAAM,EACrF,CAAA,OAAA,EAAU6G,KAAK,CAACtD,YAAY,CAAA,EAAGsD,KAAK,CAAChD,aAAa,EAAE,CAAC;AACzDjD,UAAAA,IAAI,EAAEyT;AACV;AACJ,OAAC,CACJ;AACL,IAAA;IACA,IAAI,CAAC/S,mBAAmB,EACxB;AACI,MAAA,MAAM,IAAIrB,KAAK,CAAC,CAAA,0BAAA,EAA6BP,WAAW,CAACF,KAAK,CAAA,oBAAA,EAAuB6T,WAAW,CAACtT,QAAQ,CAAA,CAAE,CAAC;AAChH,IAAA;IACA,OAAO;AACH6D,MAAAA,IAAI,EAAE,KAAK;MACX+O,gBAAgB,EAAEjT,WAAW,CAACF,KAAK;MACnCoT,UAAU,EAAElT,WAAW,CAACkT,UAAU;MAClCpU,IAAI,EAAE4C,KAAK,CAACI,OAAO;MACnBZ,IAAI,EAAEA,IAAI,CAAC2B,QAAQ;AACnByP,MAAAA,UAAU,EAAE;AAAE3L,QAAAA,IAAI,EAAE2L,UAAU;QAAEpR,IAAI,EAAEA,IAAI,CAAC2B;AAAS;KACvD;EACD,CAAC;AACD,EAAA,MAAM0Q,UAAU,GAAGhG,MAAM,CAACrI,OAAO,CAAExD,KAAK,IACxC;AACI,IAAA,MAAMqT,OAAO,GAAGrB,UAAU,CAAChS,KAAK,CAAC;IACjC,OAAOS,KAAK,CAAC6S,OAAO,CAACD,OAAO,CAAC,GAAGA,OAAO,GAAG,CAAEA,OAAO,CAAE;AACzD,EAAA,CAAC,CAAC;EACF,OAAOxB,UAAU,CAACjT,MAAM,KAAK,CAAC,GAAGiT,UAAU,CAAC,CAAC,CAAC,GAAGA,UAAU;AAC/D;AAEA,SAAS0B,UAAUA,CAACnU,KAAK,EACzB;AACI,EAAA,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIxC,MAAM,CAAC4W,QAAQ,CAACpU,KAAK,CAAC,EAAE,OAAOA,KAAK;AAC/E,EAAA,KAAK,MAAMmB,KAAK,IAAI3D,MAAM,CAACyD,MAAM,CAACjB,KAAK,CAAC,EAAEmU,UAAU,CAAChT,KAAK,CAAC;AAC3D,EAAA,OAAO3D,MAAM,CAACC,MAAM,CAACuC,KAAK,CAAC;AAC/B;AAGA,SAASqU,wBAAwBA,CAAC5B,UAAU,EAC5C;AACI,EAAA,OAAOA,UAAU,CAAClR,IAAI,CAAE+S,SAAS,IAAKA,SAAS,CAAClR,IAAI,KAAK,YAAY,IAC7DkR,SAAS,CAAClR,IAAI,KAAK,IAAI,KAAKiR,wBAAwB,CAACC,SAAS,CAAC7B,UAAU,CAAC,KACtE6B,SAAS,CAACC,cAAc,GAAGF,wBAAwB,CAACC,SAAS,CAACC,cAAc,CAAC,GAAG,KAAK,CAAC,CAAE,IAC5FD,SAAS,CAAClR,IAAI,KAAK,QAAQ,IAAIkR,SAAS,CAACE,OAAO,CAACjT,IAAI,CAAEkT,MAAM,IAAKJ,wBAAwB,CAACI,MAAM,CAAChC,UAAU,CAAC,CAAE,IAC/G6B,SAAS,CAAClR,IAAI,KAAK,MAAM,IAAIiR,wBAAwB,CAACC,SAAS,CAAC7B,UAAU,CAAE,CAAC;AACzF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiC,qBAAqBA,CAAC/T,OAAO,EAAEgU,MAAM,EAAEC,OAAO,EACvD;AACI,EAAA,MAAMC,OAAO,GAAGlU,OAAO,CAACmU,WAAW,CAACD,OAAO;EAC3C,MAAME,gBAAgB,GAAI/V,KAAK,IAAK6V,OAAO,CAACtT,IAAI,CAAEyT,SAAS,IACvDA,SAAS,CAAC5R,IAAI,KAAK,MAAM,IAAI4R,SAAS,KAAKL,MAAM,IAC9CK,SAAS,CAACC,gBAAgB,GAAGN,MAAM,CAACM,gBAAgB,IACpDD,SAAS,CAACE,cAAc,GAAGP,MAAM,CAACO,cAAc,IAChDlW,KAAK,IAAIgW,SAAS,CAACC,gBAAgB,IAAIjW,KAAK,IAAIgW,SAAS,CAACE,cAAc,CAAC;AAChF,EAAA,KAAK,IAAIlW,KAAK,GAAG2V,MAAM,CAACM,gBAAgB,EAAEjW,KAAK,IAAI2V,MAAM,CAACO,cAAc,EAAElW,KAAK,IAAI,CAAC,EACpF;AACI,IAAA,MAAME,WAAW,GAAGyB,OAAO,CAACqD,YAAY,CAAChF,KAAK,CAAC;AAC/C,IAAA,IAAI,CAACE,WAAW,IAAI6V,gBAAgB,CAAC/V,KAAK,CAAC,EAAE;AAC7C,IAAA,MAAMsP,EAAE,GAAGpP,WAAW,CAAC6F,UAAU;AACjC,IAAA,IAAI,CAACuJ,EAAE,KAAK,QAAQ,IAAIA,EAAE,KAAK,WAAW,KAAK,CAAC6G,kBAAkB,CAACjW,WAAW,EAAE0V,OAAO,CAAC,EAAE,OAAO,IAAI;AACrG,IAAA,IAAItG,EAAE,KAAK,OAAO,IAAIA,EAAE,KAAK,UAAU,EACvC;AACI,MAAA,MAAM8G,YAAY,GAAGP,OAAO,CAACtT,IAAI,CAAEyT,SAAS,IACxC,CAACA,SAAS,CAAC5R,IAAI,KAAK,WAAW,IAAI4R,SAAS,CAAC5R,IAAI,KAAK,QAAQ,KAC3D4R,SAAS,CAACC,gBAAgB,IAAIN,MAAM,CAACM,gBAAgB,IACrDD,SAAS,CAACE,cAAc,IAAIP,MAAM,CAACO,cAAc,IACjDF,SAAS,CAACC,gBAAgB,GAAGjW,KAAK,IAAIA,KAAK,IAAIgW,SAAS,CAACE,cAAc,IACvE,CAACC,kBAAkB,CAACxU,OAAO,CAACqD,YAAY,CAACgR,SAAS,CAACC,gBAAgB,CAAC,EAAEL,OAAO,CAAC,CAAC;MACtF,IAAIQ,YAAY,EAAE,OAAO,IAAI;AACjC,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAAC1U,OAAO,EAAE2U,OAAO,GAAG,EAAE,EAC1D;EACI,IAAI3U,OAAO,EAAE4U,MAAM,KAAK,eAAe,EAAE,MAAM,IAAIC,SAAS,CAAC,oDAAoD,CAAC;AAClH,EAAA,IAAI7U,OAAO,CAAC8U,KAAK,KAAK,OAAO,EAAE,MAAM,IAAIhW,KAAK,CAAC,CAAA,oCAAA,EAAuCkB,OAAO,CAAC8U,KAAK,EAAE,CAAC;EACtG,IAAI9U,OAAO,CAAC+U,WAAW,CAACC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAE,CAAC,EAAE,CAAC,CAAE,CAACzP,QAAQ,CAACvF,OAAO,CAAC+U,WAAW,CAACE,KAAK,CAAC,EACpF;AACI,IAAA,MAAM,IAAInW,KAAK,CAAC,8DAA8D,CAAC;AACnF,EAAA;AACAoW,EAAAA,yBAAyB,CAAClV,OAAO,EAAE,UAAU,CAAC;AAC9C,EAAA,MAAMmV,aAAa,GAAGhS,kBAAkB,CAACnD,OAAO,CAAC;AACjD,EAAA,MAAMyF,MAAM,GAAG7C,yBAAyB,CACpC5C,OAAO,CAAC6C,UAAU,CAACqB,KAAK,CAAC/F,MAAM,CAAEqC,KAAK,IAAK2U,aAAa,CAAC/U,GAAG,CAACI,KAAK,CAACqB,aAAa,CAAC,CAAC,CAAC,CAClFZ,GAAG,CAAEU,IAAI,IAAKD,cAAc,CAACC,IAAI,EAAE,OAAO,CAAC,CAAC;EACjD,MAAMqP,OAAO,GAAGhR,OAAO,CAAC6C,UAAU,CAAC2F,MAAM,CAACvH,GAAG,CAAET,KAAK,IAAKkB,cAAc,CAAC,CAAElB,KAAK,CAAE,EAAE,QAAQ,CAAC,CAAC;EAC7F,IAAI,CAACwQ,OAAO,CAACnS,MAAM,EAAE,MAAM,IAAIC,KAAK,CAAC,qDAAqD,CAAC;EAC3F2G,MAAM,CAACkG,OAAO,CAAEzH,KAAK,IAAKD,qBAAqB,CAACjE,OAAO,EAAEkE,KAAK,CAAC,CAAC;AAChE,EAAA,MAAMkR,eAAe,GAAGT,OAAO,CAACU,WAAW,EAAEC,kBAAkB,KAAKvN,SAAS,GACvE,IAAI,GACJwN,8BAA8B,CAAC;AAC7BX,IAAAA,MAAM,EAAE,kCAAkC;AAC1CY,IAAAA,aAAa,EAAE,CAAC;AAChBF,IAAAA,kBAAkB,EAAEX,OAAO,CAACU,WAAW,CAACC;AAC5C,GAAC,CAAC;AACN,EAAA,MAAMG,YAAY,GAAGF,8BAA8B,CAACZ,OAAO,CAACe,qBAAqB,CAAC;AAClF,EAAA,IAAIN,eAAe,IAAIK,YAAY,IAC5BE,IAAI,CAACC,SAAS,CAACR,eAAe,CAAC,KAAKO,IAAI,CAACC,SAAS,CAACH,YAAY,CAAC,EACvE;AACI,IAAA,MAAM,IAAI3W,KAAK,CAAC,6DAA6D,CAAC;AAClF,EAAA;AACA,EAAA,MAAM4W,qBAAqB,GAAGN,eAAe,IAAIK,YAAY;AAC7D,EAAA,MAAMtO,QAAQ,GAAG0O,kBAAkB,CAC/B7V,OAAO,EACP2U,OAAO,CAACU,WAAW,EACnB,IAAI,EACJK,qBACJ,CAAC;AACD,EAAA,MAAMI,KAAK,GAAGC,mBAAmB,CAAC/V,OAAO,EAAE,UAAU,CAAC;AACtD,EAAA,MAAMiU,OAAO,GAAG+B,oBAAoB,CAAChW,OAAO,CAAC;AAC7C,EAAA,MAAMoI,iBAAiB,GAAG,IAAIrF,GAAG,EAAE;EACnC,KAAK,MAAMwF,SAAS,IAAImN,qBAAqB,EAAEJ,kBAAkB,IAAI,EAAE,EACvE;AACI,IAAA,IAAI/M,SAAS,CAACuM,KAAK,KAAK,UAAU,EAAE;AACpC,IAAA,KAAK,MAAM5Q,KAAK,IAAIqE,SAAS,CAAC9C,MAAM,EACpC;AACI2C,MAAAA,iBAAiB,CAACpF,GAAG,CAACkB,KAAK,CAACgE,QAAQ,EAAE;QAClCK,SAAS;QACTG,KAAK,EAAExE,KAAK,CAACwE;AACjB,OAAC,CAAC;AACN,IAAA;AACJ,EAAA;AACA,EAAA,MAAMrD,OAAO,GAAG;AACZ+L,IAAAA,kCAAkC,EAAE,KAAK;AACzChJ,IAAAA;GACH;EACD,MAAM6I,OAAO,GAAG,IAAIlO,GAAG,CAACiO,OAAO,CAAC/P,GAAG,CAAEyE,KAAK,IAAK,CAAEA,KAAK,CAACjF,EAAE,EAAE,IAAIhE,GAAG,EAAE,CAAE,CAAC,CAAC;AACxE,EAAA,MAAMyD,YAAY,GAAG,IAAIzD,GAAG,CAAC,CACzB,GAAGuD,OAAO,CAACqD,YAAY,CAACI,OAAO,CAAElF,WAAW,IACxCA,WAAW,CAACgF,QAAQ,CAACC,KAAK,CAACC,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACC,IAAI,CAAC1C,GAAG,CAAEqC,GAAG,IAAKA,GAAG,CAACjD,OAAO,CAAC,CAAC,CAAC,EACtF,GAAGL,OAAO,CAACM,MAAM,CAACmD,OAAO,CAAEpE,KAAK,IAAK,CAACA,KAAK,CAAC4W,QAAQ,IAAI,EAAE,EAAEhV,GAAG,CAAEgV,QAAQ,IAAKA,QAAQ,CAAC5V,OAAO,CAAC,CAAC,CACnG,CAAC;AAEF,EAAA,SAAS6V,oBAAoBA,CAACC,QAAQ,EAAEC,UAAU,EAClD;AACI,IAAA,OAAO,CAACD,QAAQ,EAAElT,GAAG,CAACmT,UAAU,CAAC,IAAI,EAAE,EAAEnV,GAAG,CAAEoV,MAAM,KAAM;AACtD5T,MAAAA,IAAI,EAAE,kBAAkB;MAAEpF,IAAI,EAAEgZ,MAAM,CAAC5V,EAAE;MAAEhB,IAAI,EAAE4W,MAAM,CAAC5W,IAAI;AAC5DoR,MAAAA,UAAU,EAAE;QAAE3L,IAAI,EAAEM,cAAc,CAACxF,OAAO,EAAEqW,MAAM,CAAC/S,GAAG,EAAEmC,MAAM,CAAC;QAAEhG,IAAI,EAAE4W,MAAM,CAAC5W;AAAK;AACvF,KAAC,CAAC,CAAC;AACP,EAAA;AAEA,EAAA,SAAS6W,UAAUA,CAACC,KAAK,EAAEC,GAAG,EAAEC,YAAY,EAAEC,MAAM,GAAG,KAAK,EAAExF,UAAU,GAAG,KAAK,EAAEiF,QAAQ,GAAG,IAAI,EACjG;IACI,MAAMrE,UAAU,GAAG,EAAE;AACrB;AACA;AACA;IACA,IAAI6E,cAAc,GAAGzF,UAAU;AAC/B,IAAA,KAAK,IAAI7S,KAAK,GAAGkY,KAAK,EAAElY,KAAK,GAAGmY,GAAG,EAAEnY,KAAK,IAAI,CAAC,EAC/C;AACI,MAAA,MAAMuY,IAAI,GAAGd,KAAK,CAAC7S,GAAG,CAAC5E,KAAK,CAAC;MAC7B,IAAI,CAACuY,IAAI,EACT;QACI,MAAMC,MAAM,GAAG7W,OAAO,CAACqD,YAAY,CAAChF,KAAK,CAAC,CAAC+F,UAAU;AACrD,QAAA,IAAIyS,MAAM,KAAK,OAAO,IAAIA,MAAM,KAAK,QAAQ,EAC7C;AACI,UAAA,IAAI,CAACH,MAAM,EAAE,MAAM,IAAI5X,KAAK,CAAC,CAAA,+BAAA,EAAkC+X,MAAM,CAAA,gBAAA,EAAmBxY,KAAK,CAAA,CAAE,CAAC;AAChG,UAAA,MAAMyY,gBAAgB,GAAG9W,OAAO,CAACqD,YAAY,CAAChF,KAAK,CAAC;UACpD,IAAIwY,MAAM,KAAK,OAAO,EACtB;AACI/E,YAAAA,UAAU,CAAC5O,IAAI,CAAC,GAAGgT,oBAAoB,CAACC,QAAQ,EAAEW,gBAAgB,CAACzY,KAAK,CAAC,CAAC;YAC1EyT,UAAU,CAAC5O,IAAI,CAAC;AAAET,cAAAA,IAAI,EAAE,OAAO;cAAE+O,gBAAgB,EAAEsF,gBAAgB,CAACzY,KAAK;cAAEoT,UAAU,EAAEqF,gBAAgB,CAACrF;AAAW,aAAC,CAAC;AACrH,YAAA;AACJ,UAAA;AACAJ,UAAAA,0BAA0B,CAACyF,gBAAgB,EAAE,UAAU,CAAC;AACxDrL,UAAAA,wBAAwB,CAACzL,OAAO,EAAE8W,gBAAgB,CAAC;AACnD,UAAA,MAAMC,gBAAgB,GAAGD,gBAAgB,CAAC/P,QAAQ,CAAC,CAAC,CAAC;AACrD,UAAA,MAAMiQ,aAAa,GAAGpS,UAAU,CAACkS,gBAAgB,EAAE,CAAC,CAAC;UACrD,IAAIA,gBAAgB,CAAC5H,QAAQ,IAAI,CAAC6H,gBAAgB,EAAEtM,YAAY,IAAI,MAAM,MAAM,MAAM,IAC/E,CAAClO,UAAU,CAACgJ,QAAQ,CAACwR,gBAAgB,EAAE7Q,QAAQ,CAAC,IAAI8Q,aAAa,EAAErT,IAAI,CAAC9E,MAAM,KAAK,CAAC,IACpF,CAAC,CAAE,MAAM,EAAE,SAAS,CAAE,CAAC0G,QAAQ,CAACuR,gBAAgB,CAACnF,WAAW,CAAC,EACpE;YACI,MAAM,IAAI7S,KAAK,CAAC,CAAA,iCAAA,EAAoCgY,gBAAgB,CAACzY,KAAK,2CAA2C,CAAC;AAC1H,UAAA;AACA,UAAA,MAAMwT,SAAS,GAAG3G,iBAAiB,CAAClL,OAAO,EAAE8W,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAErR,MAAM,EAAE0B,QAAQ,CAAC;UACrG2K,UAAU,CAAC5O,IAAI,CAAC;AACZT,YAAAA,IAAI,EAAE,IAAI;YACV+O,gBAAgB,EAAEsF,gBAAgB,CAACzY,KAAK;YACxCoT,UAAU,EAAEqF,gBAAgB,CAACrF,UAAU;AACvCI,YAAAA,SAAS,EAAE;AAAE3M,cAAAA,IAAI,EAAE,CAAA,EAAG2M,SAAS,CAAA,CAAA,EAAIiF,gBAAgB,CAACnF,WAAW,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA,GAAA,CAAK;AAAElS,cAAAA,IAAI,EAAE;aAAQ;YAC7GqS,UAAU,EAAE,CAAE,GAAGoE,oBAAoB,CAACC,QAAQ,EAAEW,gBAAgB,CAACzY,KAAK,CAAC,EAAE;AAAEoE,cAAAA,IAAI,EAAE;aAAS;AAC9F,WAAC,CAAC;AACF,UAAA;AACJ,QAAA;AACA,QAAA,IAAIoU,MAAM,KAAK,UAAU,IAAIA,MAAM,KAAK,WAAW,EACnD;AACI,UAAA,IAAI,CAACH,MAAM,EAAE,MAAM,IAAI5X,KAAK,CAAC,CAAA,+BAAA,EAAkC+X,MAAM,CAAA,gBAAA,EAAmBxY,KAAK,CAAA,CAAE,CAAC;AAChG,UAAA,MAAM4Y,mBAAmB,GAAGjX,OAAO,CAACqD,YAAY,CAAChF,KAAK,CAAC;UACvD,IAAIwY,MAAM,KAAK,UAAU,EACzB;YACI/E,UAAU,CAAC5O,IAAI,CAAC;AAAET,cAAAA,IAAI,EAAE,UAAU;cAAE+O,gBAAgB,EAAEyF,mBAAmB,CAAC5Y,KAAK;cAAEoT,UAAU,EAAEwF,mBAAmB,CAACxF;AAAW,aAAC,CAAC;AAC9H,YAAA;AACJ,UAAA;AACAJ,UAAAA,0BAA0B,CAAC4F,mBAAmB,EAAE,UAAU,CAAC;AAC3DxL,UAAAA,wBAAwB,CAACzL,OAAO,EAAEiX,mBAAmB,CAAC;AACtD,UAAA,MAAMF,gBAAgB,GAAGE,mBAAmB,CAAClQ,QAAQ,CAAC,CAAC,CAAC;AACxD,UAAA,MAAMiQ,aAAa,GAAGpS,UAAU,CAACqS,mBAAmB,EAAE,CAAC,CAAC;UACxD,IAAIA,mBAAmB,CAAC/H,QAAQ,IAAI,CAAC6H,gBAAgB,EAAEtM,YAAY,IAAI,MAAM,MAAM,MAAM,IAClF,CAAClO,UAAU,CAACgJ,QAAQ,CAACwR,gBAAgB,EAAE7Q,QAAQ,CAAC,IAAI8Q,aAAa,EAAErT,IAAI,CAAC9E,MAAM,KAAK,CAAC,IACpF,CAAC,CAAE,MAAM,EAAE,SAAS,CAAE,CAAC0G,QAAQ,CAAC0R,mBAAmB,CAACtF,WAAW,CAAC,EACvE;YACI,MAAM,IAAI7S,KAAK,CAAC,CAAA,oCAAA,EAAuCmY,mBAAmB,CAAC5Y,KAAK,2CAA2C,CAAC;AAChI,UAAA;AACA,UAAA,MAAMwT,SAAS,GAAG3G,iBAAiB,CAAClL,OAAO,EAAEiX,mBAAmB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAExR,MAAM,EAAE0B,QAAQ,CAAC;UACxG2K,UAAU,CAAC5O,IAAI,CAAC;AACZT,YAAAA,IAAI,EAAE,IAAI;YACV+O,gBAAgB,EAAEyF,mBAAmB,CAAC5Y,KAAK;YAC3CoT,UAAU,EAAEwF,mBAAmB,CAACxF,UAAU;AAC1CI,YAAAA,SAAS,EAAE;AAAE3M,cAAAA,IAAI,EAAE,CAAA,EAAG2M,SAAS,CAAA,CAAA,EAAIoF,mBAAmB,CAACtF,WAAW,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA,GAAA,CAAK;AAAElS,cAAAA,IAAI,EAAE;aAAQ;AAChHqS,YAAAA,UAAU,EAAE,CAAE;AAAErP,cAAAA,IAAI,EAAE;aAAY;AACtC,WAAC,CAAC;AACF,UAAA;AACJ,QAAA;AACA,QAAA,IAAI,CAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAE,CAAC8C,QAAQ,CAACsR,MAAM,CAAC,EACnF;UACI,MAAM,IAAI/X,KAAK,CAAC,CAAA,+BAAA,EAAkC+X,MAAM,CAAA,gBAAA,EAAmBxY,KAAK,EAAE,CAAC;AACvF,QAAA;QACA,MAAMiV,OAAO,GAAGvC,gBAAgB,CAC5B/Q,OAAO,EAAEA,OAAO,CAACqD,YAAY,CAAChF,KAAK,CAAC,EAAEoH,MAAM,EAAEuL,OAAO,EAAE7J,QAAQ,EAAEsP,YAAY,EAAEvW,YAAY,EAAEyW,cAAc,EAAEtR,OAAO,CAAC;AACzHyM,QAAAA,UAAU,CAAC5O,IAAI,CAAC,IAAIxC,KAAK,CAAC6S,OAAO,CAACD,OAAO,CAAC,GAAGA,OAAO,GAAG,CAAEA,OAAO,CAAE,CAAC,CAAC;AACpE,QAAA;AACJ,MAAA;AACA,MAAA,IAAIsD,IAAI,CAACnU,IAAI,KAAK,MAAM,EACxB;AACI,QAAA,MAAMyU,eAAe,GAAGlX,OAAO,CAACqD,YAAY,CAAChF,KAAK,CAAC;QACnD,IAAI6Y,eAAe,CAAC9S,UAAU,KAAK,MAAM,IAClCpE,OAAO,CAACqD,YAAY,CAACuT,IAAI,CAAC5C,MAAM,CAACO,cAAc,CAAC,CAACnQ,UAAU,KAAK,SAAS,EAChF;AACI,UAAA,MAAM,IAAItF,KAAK,CAAC,6CAA6C,CAAC;AAClE,QAAA;AACA,QAAA,KAAK,MAAMqY,KAAK,IAAIP,IAAI,CAACQ,MAAM,EAC/B;UACItF,UAAU,CAAC5O,IAAI,CAAC;AAAET,YAAAA,IAAI,EAAE,KAAK;YAAEpF,IAAI,EAAE8Z,KAAK,CAAC1W,EAAE;YAAEhB,IAAI,EAAE0X,KAAK,CAAC1X,IAAI;AAC3DoR,YAAAA,UAAU,EAAE;cAAE3L,IAAI,EAAEM,cAAc,CAACxF,OAAO,EAAEmX,KAAK,CAACE,aAAa,EAAE5R,MAAM,CAAC;cAAEhG,IAAI,EAAE0X,KAAK,CAAC1X;AAAK;AAAE,WAAC,CAAC;AACvG,QAAA;QACA,KAAK,MAAM0X,KAAK,IAAIP,IAAI,CAACU,UAAU,IAAI,EAAE,EACzC;UACIxF,UAAU,CAAC5O,IAAI,CAAC;AAAET,YAAAA,IAAI,EAAE,KAAK;YAAEpF,IAAI,EAAE8Z,KAAK,CAAC1W,EAAE;YAAEhB,IAAI,EAAE0X,KAAK,CAAC1X,IAAI;AAC3DoR,YAAAA,UAAU,EAAE;cAAE3L,IAAI,EAAEiS,KAAK,CAACI,QAAQ;cAAE9X,IAAI,EAAE0X,KAAK,CAAC1X;AAAK;AAAE,WAAC,CAAC;AACjE,QAAA;AACA,QAAA,MAAM+X,WAAW,GAAGC,YAAY,CAAChB,YAAY,CAAC;AAC9C;AACA;AACA;AACA;QACA,MAAMiB,cAAc,GAAG3D,qBAAqB,CAAC/T,OAAO,EAAE4W,IAAI,CAAC5C,MAAM,EAAEC,OAAO,CAAC;QAC3E,MAAM0D,IAAI,GAAGrB,UAAU,CAACjY,KAAK,GAAG,CAAC,EAAEuY,IAAI,CAAC5C,MAAM,CAACO,cAAc,EAAEiD,WAAW,EAAE,IAAI,EAC5Eb,cAAc,IAAIe,cAAc,EAAEd,IAAI,CAACgB,SAAS,CAAC;QACrD,IAAID,IAAI,CAAC5O,EAAE,CAAC,EAAE,CAAC,EAAEtG,IAAI,KAAK,QAAQ,EAClC;AACI,UAAA,MAAM,IAAI3D,KAAK,CAAC,CAAA,sBAAA,EAAyBT,KAAK,sCAAsC,CAAC;AACzF,QAAA;AACA,QAAA,IAAIqZ,cAAc,EAAEf,cAAc,GAAG,IAAI;AACzC;AACA;AACA;QACA,MAAMkB,KAAK,GAAGjB,IAAI,CAACQ,MAAM,CAACnW,GAAG,CAAEkW,KAAK,KAAM;AAAE1U,UAAAA,IAAI,EAAE,kBAAkB;UAAEpF,IAAI,EAAE8Z,KAAK,CAAC1W,EAAE;UAAEhB,IAAI,EAAE0X,KAAK,CAAC1X,IAAI;AAClGoR,UAAAA,UAAU,EAAE;YAAE3L,IAAI,EAAEM,cAAc,CAACxF,OAAO,EAAEmX,KAAK,CAACW,gBAAgB,EAAErS,MAAM,CAAC;YAAEhG,IAAI,EAAE0X,KAAK,CAAC1X;AAAK;AAAE,SAAC,CAAC,CAAC;QACvGqS,UAAU,CAAC5O,IAAI,CAAC;AAAET,UAAAA,IAAI,EAAE,MAAM;UAAE+O,gBAAgB,EAAE0F,eAAe,CAAC7Y,KAAK;UAAEoT,UAAU,EAAEyF,eAAe,CAACzF,UAAU;AAC3GK,UAAAA,UAAU,EAAE6F,IAAI;AAAEI,UAAAA,UAAU,EAAEF;AAAM,SAAC,CAAC;AAC1CxZ,QAAAA,KAAK,GAAGuY,IAAI,CAAC5C,MAAM,CAACO,cAAc;AAClC,QAAA;AACJ,MAAA;AACA,MAAA,IAAIqC,IAAI,CAACnU,IAAI,KAAK,QAAQ,EAC1B;AACI,QAAA,MAAMuV,iBAAiB,GAAGhY,OAAO,CAACqD,YAAY,CAAChF,KAAK,CAAC;QACrD,IAAI2Z,iBAAiB,CAAC5T,UAAU,KAAK,QAAQ,IACtCpE,OAAO,CAACqD,YAAY,CAACuT,IAAI,CAAC5C,MAAM,CAACO,cAAc,CAAC,CAACnQ,UAAU,KAAK,WAAW,EAClF;AACI,UAAA,MAAM,IAAItF,KAAK,CAAC,+CAA+C,CAAC;AACpE,QAAA;AACAuS,QAAAA,0BAA0B,CAAC2G,iBAAiB,EAAE,UAAU,CAAC;AACzDvM,QAAAA,wBAAwB,CAACzL,OAAO,EAAEgY,iBAAiB,CAAC;AACpD,QAAA,MAAMC,eAAe,GAAGD,iBAAiB,CAACjR,QAAQ,CAAC,CAAC,CAAC;AACrD,QAAA,MAAMmR,YAAY,GAAGtT,UAAU,CAACoT,iBAAiB,EAAE,CAAC,CAAC;AACrD,QAAA,IAAIA,iBAAiB,CAAC9I,QAAQ,IAAI,CAAC+I,eAAe,EAAExN,YAAY,IAAI,MAAM,MAAM,MAAM,IAC/E,CAAClO,UAAU,CAACgJ,QAAQ,CAAC0S,eAAe,EAAE/R,QAAQ,CAAC,IAAIgS,YAAY,EAAEvU,IAAI,CAAC9E,MAAM,KAAK,CAAC,EACzF;UACI,MAAM,IAAIC,KAAK,CAAC,CAAA,iCAAA,EAAoCkZ,iBAAiB,CAAC3Z,KAAK,0CAA0C,CAAC;AAC1H,QAAA;AACA,QAAA,KAAK,MAAM8Y,KAAK,IAAIP,IAAI,CAACQ,MAAM,EAC/B;UACItF,UAAU,CAAC5O,IAAI,CAAC;AAAET,YAAAA,IAAI,EAAE,KAAK;YAAEpF,IAAI,EAAE8Z,KAAK,CAAC1W,EAAE;YAAEhB,IAAI,EAAE0X,KAAK,CAAC1X,IAAI;AAAEoR,YAAAA,UAAU,EAAE;cAAE3L,IAAI,EAAEiS,KAAK,CAACI,QAAQ;cAAE9X,IAAI,EAAE0X,KAAK,CAAC1X;AAAK;AAAE,WAAC,CAAC;AAC9H,QAAA;AACA,QAAA,MAAM0Y,QAAQ,GAAGjN,iBAAiB,CAAClL,OAAO,EAAEgY,iBAAiB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAEvS,MAAM,EAAE0B,QAAQ,CAAC;QACrG,MAAMiR,gBAAgB,GAAGzB,cAAc,IAAI,CAACnC,kBAAkB,CAACwD,iBAAiB,EAAE/D,OAAO,CAAC;QAC1F,MAAMJ,OAAO,GAAG,EAAE;QAClB,MAAMwE,aAAa,GAAG,EAAE;AACxB,QAAA,KAAK,IAAIC,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAG1B,IAAI,CAAC/C,OAAO,CAAChV,MAAM,EAAEyZ,WAAW,IAAI,CAAC,EAC7E;AACI,UAAA,MAAMxE,MAAM,GAAG8C,IAAI,CAAC/C,OAAO,CAACyE,WAAW,CAAC;AACxC,UAAA,MAAMC,aAAa,GAAGd,YAAY,CAAChB,YAAY,CAAC;AAChD,UAAA,MAAMkB,IAAI,GAAGrB,UAAU,CAACxC,MAAM,CAAC0E,SAAS,EAAE1E,MAAM,CAAC2E,OAAO,EAAEF,aAAa,EAAE,KAAK,EAAEH,gBAAgB,EAAEjC,QAAQ,CAAC;AAC3G,UAAA,IAAI,CAACS,IAAI,CAACQ,MAAM,CAACvY,MAAM,IAAI+X,IAAI,CAAC8B,WAAW,EAAE7Z,MAAM,KAAK6U,wBAAwB,CAACiE,IAAI,CAAC,EACtF;AACI,YAAA,MAAM,IAAI7Y,KAAK,CAAC,CAAA,wBAAA,EAA2BT,KAAK,oCAAoC,CAAC;AACzF,UAAA;UACA,IAAIsZ,IAAI,CAAC5O,EAAE,CAAC,EAAE,CAAC,EAAEtG,IAAI,KAAK,QAAQ,KAAKmU,IAAI,CAACQ,MAAM,CAACvY,MAAM,IAAI+X,IAAI,CAAC8B,WAAW,EAAE7Z,MAAM,CAAC,EACtF;AACI,YAAA,MAAM,IAAIC,KAAK,CAAC,CAAA,wBAAA,EAA2BT,KAAK,sCAAsC,CAAC;AAC3F,UAAA;AACA,UAAA,KAAK,MAAM8Y,KAAK,IAAI,CAAE,GAAGP,IAAI,CAACQ,MAAM,EAAE,IAAIR,IAAI,CAAC8B,WAAW,IAAI,EAAE,CAAC,CAAE,EACnE;YACIf,IAAI,CAACzU,IAAI,CAAC;AACNT,cAAAA,IAAI,EAAE,kBAAkB;cACxBpF,IAAI,EAAE8Z,KAAK,CAAC1W,EAAE;cACdhB,IAAI,EAAE0X,KAAK,CAAC1X,IAAI;AAChBoR,cAAAA,UAAU,EAAE;AAAE3L,gBAAAA,IAAI,EAAEM,cAAc,CAACxF,OAAO,EAAEmX,KAAK,CAACwB,SAAS,CAACL,WAAW,CAAC,EAAE7S,MAAM,CAAC;gBAAEhG,IAAI,EAAE0X,KAAK,CAAC1X;AAAK;AACxG,aAAC,CAAC;AACN,UAAA;UACAoU,OAAO,CAAC3Q,IAAI,CAAC;YAAE0V,SAAS,EAAE9E,MAAM,CAAC8E,SAAS;YAAEC,SAAS,EAAE/E,MAAM,CAAC+E,SAAS;AAAE/G,YAAAA,UAAU,EAAE6F;AAAK,WAAC,CAAC;UAC5FU,aAAa,CAACnV,IAAI,CAAC;YAAEqV,aAAa;YAAEO,OAAO,EAAEnB,IAAI,CAAC5O,EAAE,CAAC,EAAE,CAAC,EAAEtG,IAAI,KAAK;AAAS,WAAC,CAAC;AAClF,QAAA;QACAqP,UAAU,CAAC5O,IAAI,CAAC;AACZT,UAAAA,IAAI,EAAE,QAAQ;UACd+O,gBAAgB,EAAEwG,iBAAiB,CAAC3Z,KAAK;UACzCoT,UAAU,EAAEuG,iBAAiB,CAACvG,UAAU;AACxC0G,UAAAA,QAAQ,EAAE;AAAEjT,YAAAA,IAAI,EAAEiT,QAAQ;AAAE1Y,YAAAA,IAAI,EAAE;WAAO;AACzCoU,UAAAA;AACJ,SAAC,CAAC;AACF,QAAA,IAAI+C,IAAI,CAAC5C,MAAM,CAAC+E,kBAAkB,KAAK,IAAI,EAC3C;AACI,UAAA,MAAMhB,UAAU,GAAGM,aAAa,CAACla,MAAM,CAAEqC,KAAK,IAAK,CAACA,KAAK,CAACsY,OAAO,CAAC;UAClE,KAAK,MAAM,CAAEzF,OAAO,EAAEzN,MAAM,CAAE,IAAI6Q,YAAY,EAC9C;AACI,YAAA,IAAI,CAACsB,UAAU,CAAClZ,MAAM,EAAE;YACxB,MAAMma,IAAI,GAAGjB,UAAU,CAAC9W,GAAG,CAAET,KAAK,IAAKA,KAAK,CAAC+X,aAAa,CAACtV,GAAG,CAACoQ,OAAO,CAAC,IAAI,IAAI5W,GAAG,EAAE,CAAC;AACrF,YAAA,KAAK,MAAMoE,SAAS,IAAImY,IAAI,CAAC,CAAC,CAAC,EAC/B;AACI,cAAA,IAAIA,IAAI,CAAC5Z,KAAK,CAAE4D,GAAG,IAAKA,GAAG,CAAC5C,GAAG,CAACS,SAAS,CAAC,CAAC,EAAE+E,MAAM,CAAC5B,GAAG,CAACnD,SAAS,CAAC;AACtE,YAAA;AACJ,UAAA;AACJ,QAAA;AACA,QAAA,IAAIoY,kBAAkB,CAACnH,UAAU,CAAC,EAClC;AACI,UAAA,OAAOA,UAAU;AACrB,QAAA;AACAzT,QAAAA,KAAK,GAAGuY,IAAI,CAAC5C,MAAM,CAACO,cAAc;AAClC,QAAA;AACJ,MAAA;AACA,MAAA,MAAM2E,aAAa,GAAGlZ,OAAO,CAACqD,YAAY,CAAChF,KAAK,CAAC;MACjD,MAAMkW,cAAc,GAAGvU,OAAO,CAACqD,YAAY,CAACuT,IAAI,CAAC5C,MAAM,CAACO,cAAc,CAAC;AACvE,MAAA,IAAI2E,aAAa,CAAC9U,UAAU,KAAK,IAAI,IAAImQ,cAAc,CAACnQ,UAAU,KAAK,OAAO,IACtEwS,IAAI,CAACuC,OAAO,IAAInZ,OAAO,CAACqD,YAAY,CAACuT,IAAI,CAAC5C,MAAM,CAACoF,eAAe,CAAC,CAAChV,UAAU,KAAK,MAAO,EAChG;AACI,QAAA,MAAM,IAAItF,KAAK,CAAC,kDAAkD,CAAC;AACvE,MAAA;AACAuS,MAAAA,0BAA0B,CAAC6H,aAAa,EAAE,UAAU,CAAC;AACrDzN,MAAAA,wBAAwB,CAACzL,OAAO,EAAEkZ,aAAa,CAAC;AAChD,MAAA,MAAMnC,gBAAgB,GAAGmC,aAAa,CAACnS,QAAQ,CAAC,CAAC,CAAC;AAClD,MAAA,MAAMiQ,aAAa,GAAGpS,UAAU,CAACsU,aAAa,EAAE,CAAC,CAAC;AAClD,MAAA,IAAIA,aAAa,CAAChK,QAAQ,IAAI,CAAC6H,gBAAgB,EAAEtM,YAAY,IAAI,MAAM,MAAM,MAAM,IAC5E,CAAClO,UAAU,CAACgJ,QAAQ,CAACwR,gBAAgB,EAAE7Q,QAAQ,CAAC,IAAI8Q,aAAa,EAAErT,IAAI,CAAC9E,MAAM,KAAK,CAAC,EAC3F;QACI,MAAM,IAAIC,KAAK,CAAC,CAAA,6BAAA,EAAgCoa,aAAa,CAAC7a,KAAK,2CAA2C,CAAC;AACnH,MAAA;AACA,MAAA,KAAK,MAAM8Y,KAAK,IAAIP,IAAI,CAACQ,MAAM,EAC/B;QACI,MAAMvG,UAAU,GAAG+F,IAAI,CAACuC,OAAO,GACzBhC,KAAK,CAACI,QAAQ,GACbJ,KAAK,CAACkC,SAAS,IAAI7T,cAAc,CAACxF,OAAO,EAAEmX,KAAK,CAACmC,aAAa,EAAE7T,MAAM,CAAE;QAC/EqM,UAAU,CAAC5O,IAAI,CAAC;AAAET,UAAAA,IAAI,EAAE,KAAK;UAAEpF,IAAI,EAAE8Z,KAAK,CAAC1W,EAAE;UAAEhB,IAAI,EAAE0X,KAAK,CAAC1X,IAAI;AAAEoR,UAAAA,UAAU,EAAE;AAAE3L,YAAAA,IAAI,EAAE2L,UAAU;YAAEpR,IAAI,EAAE0X,KAAK,CAAC1X;AAAK;AAAE,SAAC,CAAC;AAC1H,MAAA;AACA,MAAA,MAAMoS,SAAS,GAAG3G,iBAAiB,CAAClL,OAAO,EAAEkZ,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAEzT,MAAM,EAAE0B,QAAQ,CAAC;MAClG,MAAMoS,UAAU,GAAGL,aAAa,CAACvH,WAAW,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI;MACrE,MAAM6H,gBAAgB,GAAG7C,cAAc,IAAI,CAACnC,kBAAkB,CAAC0E,aAAa,EAAEjF,OAAO,CAAC;AACtF,MAAA,MAAMwF,WAAW,GAAG7C,IAAI,CAACuC,OAAO,GAAGvC,IAAI,CAAC5C,MAAM,CAACoF,eAAe,GAAGxC,IAAI,CAAC5C,MAAM,CAACO,cAAc;AAC3F,MAAA,MAAMmF,WAAW,GAAGjC,YAAY,CAAChB,YAAY,CAAC;AAC9C,MAAA,MAAMkD,cAAc,GAAGrD,UAAU,CAACjY,KAAK,GAAG,CAAC,EAAEob,WAAW,EAAEC,WAAW,EAAEhD,MAAM,EAAE8C,gBAAgB,EAAErD,QAAQ,CAAC;AAC1G,MAAA,IAAIwD,cAAc,CAAC5Q,EAAE,CAAC,EAAE,CAAC,EAAEtG,IAAI,KAAK,QAAQ,IAAImU,IAAI,CAACQ,MAAM,CAACvY,MAAM,EAClE;AACI,QAAA,MAAM,IAAIC,KAAK,CAAC,CAAA,2BAAA,EAA8BT,KAAK,sCAAsC,CAAC;AAC9F,MAAA;AACA,MAAA,KAAK,MAAM8Y,KAAK,IAAIP,IAAI,CAACQ,MAAM,EAC/B;QACI,IAAID,KAAK,CAACyC,SAAS,EAAE;QACrBD,cAAc,CAACzW,IAAI,CAAC;AAChBT,UAAAA,IAAI,EAAE,kBAAkB;UACxBpF,IAAI,EAAE8Z,KAAK,CAAC1W,EAAE;UACdhB,IAAI,EAAE0X,KAAK,CAAC1X,IAAI;AAChBoR,UAAAA,UAAU,EAAE;YAAE3L,IAAI,EAAEM,cAAc,CAACxF,OAAO,EAAEmX,KAAK,CAAC0C,YAAY,EAAEpU,MAAM,CAAC;YAAEhG,IAAI,EAAE0X,KAAK,CAAC1X;AAAK;AAC9F,SAAC,CAAC;AACN,MAAA;MACA,IAAIqa,eAAe,GAAG,IAAI;MAC1B,IAAIC,YAAY,GAAG,IAAI;MACvB,IAAInD,IAAI,CAACuC,OAAO,EAChB;AACIY,QAAAA,YAAY,GAAGtC,YAAY,CAAChB,YAAY,CAAC;QACzCqD,eAAe,GAAGxD,UAAU,CAACM,IAAI,CAAC5C,MAAM,CAACoF,eAAe,GAAG,CAAC,EAAExC,IAAI,CAAC5C,MAAM,CAACO,cAAc,EAAEwF,YAAY,EAAErD,MAAM,EAAE8C,gBAAgB,EAAErD,QAAQ,CAAC;AAC3I,QAAA,IAAI2D,eAAe,CAAC/Q,EAAE,CAAC,EAAE,CAAC,EAAEtG,IAAI,KAAK,QAAQ,IAAImU,IAAI,CAACQ,MAAM,CAACvY,MAAM,EACnE;AACI,UAAA,MAAM,IAAIC,KAAK,CAAC,CAAA,2BAAA,EAA8BT,KAAK,sCAAsC,CAAC;AAC9F,QAAA;AACA,QAAA,KAAK,MAAM8Y,KAAK,IAAIP,IAAI,CAACQ,MAAM,EAC/B;UACI0C,eAAe,CAAC5W,IAAI,CAAC;AACjBT,YAAAA,IAAI,EAAE,kBAAkB;YACxBpF,IAAI,EAAE8Z,KAAK,CAAC1W,EAAE;YACdhB,IAAI,EAAE0X,KAAK,CAAC1X,IAAI;AAChBoR,YAAAA,UAAU,EAAE;AAAE3L,cAAAA,IAAI,EAAEiS,KAAK,CAACkC,SAAS,IAAI7T,cAAc,CAACxF,OAAO,EAAEmX,KAAK,CAACmC,aAAa,EAAE7T,MAAM,CAAC;cAAEhG,IAAI,EAAE0X,KAAK,CAAC1X;AAAK;AAClH,WAAC,CAAC;AACN,QAAA;AACJ,MAAA;MACAqS,UAAU,CAAC5O,IAAI,CAAC;AACZT,QAAAA,IAAI,EAAE,IAAI;QACV+O,gBAAgB,EAAE0H,aAAa,CAAC7a,KAAK;QACrCoT,UAAU,EAAEyH,aAAa,CAACzH,UAAU;AACpCI,QAAAA,SAAS,EAAE;AAAE3M,UAAAA,IAAI,EAAE,CAAA,EAAG2M,SAAS,CAAA,CAAA,EAAI0H,UAAU,CAAA,GAAA,CAAK;AAAE9Z,UAAAA,IAAI,EAAE;SAAQ;AAClEqS,QAAAA,UAAU,EAAE6H,cAAc;AAC1B,QAAA,IAAIG,eAAe,GAAG;AAAElG,UAAAA,cAAc,EAAEkG;SAAiB,GAAG,EAAE;AAClE,OAAC,CAAC;MACF,IAAIlD,IAAI,CAACuC,OAAO,EAChB;AACI,QAAA,MAAMa,WAAW,GAAGL,cAAc,CAAC5Q,EAAE,CAAC,EAAE,CAAC,EAAEtG,IAAI,KAAK,QAAQ;AAC5D,QAAA,MAAMwX,YAAY,GAAGH,eAAe,CAAC/Q,EAAE,CAAC,EAAE,CAAC,EAAEtG,IAAI,KAAK,QAAQ;QAC9D,KAAK,MAAM,CAAE4Q,OAAO,EAAEzN,MAAM,CAAE,IAAI6Q,YAAY,EAC9C;AACI,UAAA,MAAMyD,QAAQ,GAAGR,WAAW,CAACzW,GAAG,CAACoQ,OAAO,CAAC,IAAI,IAAI5W,GAAG,EAAE;AACtD,UAAA,MAAM0d,SAAS,GAAGJ,YAAY,CAAC9W,GAAG,CAACoQ,OAAO,CAAC,IAAI,IAAI5W,GAAG,EAAE;UACxD,IAAIud,WAAW,IAAI,CAACC,YAAY,EAAE,KAAK,MAAMpZ,SAAS,IAAIsZ,SAAS,EAAEvU,MAAM,CAAC5B,GAAG,CAACnD,SAAS,CAAC,CAAC,KACtF,IAAIoZ,YAAY,IAAI,CAACD,WAAW,EAAE,KAAK,MAAMnZ,SAAS,IAAIqZ,QAAQ,EAAEtU,MAAM,CAAC5B,GAAG,CAACnD,SAAS,CAAC,CAAC,KAC1F,IAAI,CAACmZ,WAAW,IAAI,CAACC,YAAY,EACtC;AACI,YAAA,KAAK,MAAMpZ,SAAS,IAAIqZ,QAAQ,EAAE,IAAIC,SAAS,CAAC/Z,GAAG,CAACS,SAAS,CAAC,EAAE+E,MAAM,CAAC5B,GAAG,CAACnD,SAAS,CAAC;AACzF,UAAA;AACJ,QAAA;AACJ,MAAA;AACA,MAAA,IAAIoY,kBAAkB,CAACnH,UAAU,CAAC,EAClC;AACI,QAAA,OAAOA,UAAU;AACrB,MAAA;AACAzT,MAAAA,KAAK,GAAGuY,IAAI,CAAC5C,MAAM,CAACO,cAAc;AACtC,IAAA;AACA,IAAA,OAAOzC,UAAU;AACrB,EAAA;AAEA,EAAA,MAAMwB,OAAO,GAAGgD,UAAU,CAAC,CAAC,EAAEtW,OAAO,CAACqD,YAAY,CAACxE,MAAM,EAAEoS,OAAO,CAAC;EACnE,IAAI,CAACgI,kBAAkB,CAAC3F,OAAO,CAAC,EAAE,MAAM,IAAIxU,KAAK,CAAC,uCAAuC,CAAC;AAC1F,EAAA,MAAMgT,UAAU,GAAGsI,mBAAmB,CAAC9G,OAAO,CAAC;AAC/C,EAAA,OAAOE,UAAU,CAAC;AACd/Q,IAAAA,IAAI,EAAE,sBAAsB;AAC5BmS,IAAAA,MAAM,EAAE,kBAAkB;AAC1BY,IAAAA,aAAa,EAAE,CAAC;IAChB/H,MAAM,EAAEzN,OAAO,CAACyN,MAAM;AACtBqH,IAAAA,KAAK,EAAE,UAAU;AACjBuF,IAAAA,UAAU,EAAE,MAAM;AAClBC,IAAAA,SAAS,EAAE;MAAE7U,MAAM;AAAEuL,MAAAA;KAAS;IAC9B7J,QAAQ;AACR,IAAA,IAAIuO,qBAAqB,GACnB;MAAEJ,kBAAkB,EAAEI,qBAAqB,CAACJ;KAAoB,GAChE,EAAE,CAAC;AACT5L,IAAAA,uBAAuB,EAAE1J,OAAO,CAAC0J,uBAAuB,IAAI,IAAI;AAChEI,IAAAA,WAAW,EAAE9J,OAAO,CAAC8J,WAAW,IAAI,IAAI;IACxCsH,kCAAkC,EAAE/L,OAAO,CAAC+L,kCAAkC;AAC9EU,IAAAA;AACJ,GAAC,CAAC;AACN;;;;"}