@pstdio/ui 0.24.1 → 0.25.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 (65) hide show
  1. package/dist/{MermaidComponent-BTgLnpLA.js → MermaidComponent-BVdDqDRU.js} +2 -2
  2. package/dist/{MermaidComponent-BTgLnpLA.js.map → MermaidComponent-BVdDqDRU.js.map} +1 -1
  3. package/dist/chat-ui.js +1326 -1414
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/activity/activity-comment.d.ts +10 -2
  6. package/dist/components/activity/index.d.ts +3 -1
  7. package/dist/components/activity/resource-activity-feed.d.ts +58 -0
  8. package/dist/components/chat-ui/components/chat-input.d.ts +1 -1
  9. package/dist/components/chat-ui/components/chat-panel.d.ts +1 -1
  10. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +1 -1
  11. package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
  12. package/dist/components/tab-strip/window-tabs.d.ts +1 -0
  13. package/dist/data-table.js +5 -5
  14. package/dist/diff.js +2 -2
  15. package/dist/{edit-mode-data-table-BrydKuMM.js → edit-mode-data-table-B8UpWb7i.js} +4 -4
  16. package/dist/{edit-mode-data-table-BrydKuMM.js.map → edit-mode-data-table-B8UpWb7i.js.map} +1 -1
  17. package/dist/index.d.ts +2 -2
  18. package/dist/index.js +2047 -1735
  19. package/dist/index.js.map +1 -1
  20. package/dist/{kanban-renderer-toolbar-ebqlG13w.js → kanban-renderer-toolbar-DzY6THJY.js} +3 -3
  21. package/dist/{kanban-renderer-toolbar-ebqlG13w.js.map → kanban-renderer-toolbar-DzY6THJY.js.map} +1 -1
  22. package/dist/kanban-renderer.js +5 -5
  23. package/dist/{lazy-markdown-editor-Obb0M8xc.js → lazy-markdown-editor-ClZPZuaU.js} +2 -2
  24. package/dist/{lazy-markdown-editor-Obb0M8xc.js.map → lazy-markdown-editor-ClZPZuaU.js.map} +1 -1
  25. package/dist/{list-row-CRi3Luog.js → list-row-BDoV_iMV.js} +3 -3
  26. package/dist/list-row-BDoV_iMV.js.map +1 -0
  27. package/dist/{markdown-editor-Bj_QX4oN.js → markdown-editor-CAVqJ9yR.js} +2 -2
  28. package/dist/{markdown-editor-Bj_QX4oN.js.map → markdown-editor-CAVqJ9yR.js.map} +1 -1
  29. package/dist/{markdown-kuU19Oh3.js → markdown-gNucAjnF.js} +9 -9
  30. package/dist/{markdown-kuU19Oh3.js.map → markdown-gNucAjnF.js.map} +1 -1
  31. package/dist/{param-editor-DhoxgwGd.js → param-editor-CTx3mDxQ.js} +2 -2
  32. package/dist/{param-editor-DhoxgwGd.js.map → param-editor-CTx3mDxQ.js.map} +1 -1
  33. package/dist/{param-editor-field-DurcyLuw.js → param-editor-field-DteDEyeU.js} +3 -3
  34. package/dist/{param-editor-field-DurcyLuw.js.map → param-editor-field-DteDEyeU.js.map} +1 -1
  35. package/dist/prompt-input-DNpRL5tI.js +564 -0
  36. package/dist/prompt-input-DNpRL5tI.js.map +1 -0
  37. package/dist/rich-message-CuPiKxKX.js +78 -0
  38. package/dist/rich-message-CuPiKxKX.js.map +1 -0
  39. package/dist/rich-text.js +24 -23
  40. package/dist/rich-text.js.map +1 -1
  41. package/dist/theme/primitives/colors.d.ts +0 -23
  42. package/dist/theme/recipes/activity-comment.d.ts +36 -0
  43. package/dist/theme/recipes/alert.d.ts +1 -1
  44. package/dist/theme/recipes/dialog.d.ts +1 -1
  45. package/dist/theme/recipes/drawer.d.ts +1 -1
  46. package/dist/theme/recipes/menu.d.ts +1 -1
  47. package/dist/theme/recipes/popover.d.ts +1 -1
  48. package/dist/theme/recipes/progress-circle.d.ts +3 -3
  49. package/dist/theme/recipes/switch.d.ts +1 -1
  50. package/dist/theme/recipes/timeline.d.ts +1 -1
  51. package/dist/theme/recipes/tooltip.d.ts +1 -1
  52. package/dist/theme/recipes/window-title-bar.d.ts +4 -1
  53. package/dist/{theme-Ca-KyNoi.js → theme-Dc7hVvMC.js} +120 -801
  54. package/dist/theme-Dc7hVvMC.js.map +1 -0
  55. package/dist/theme.js +1 -1
  56. package/dist/{tree-list-DXwHWodb.js → tree-list-CZvcg3_6.js} +2 -2
  57. package/dist/{tree-list-DXwHWodb.js.map → tree-list-CZvcg3_6.js.map} +1 -1
  58. package/package.json +2 -2
  59. package/dist/list-row-CRi3Luog.js.map +0 -1
  60. package/dist/rich-message-dNYvLDd4.js +0 -628
  61. package/dist/rich-message-dNYvLDd4.js.map +0 -1
  62. package/dist/theme/recipes/landing-story.d.ts +0 -10
  63. package/dist/theme/recipes/landing-tool-demo.d.ts +0 -1
  64. package/dist/theme/recipes/landing.d.ts +0 -23
  65. package/dist/theme-Ca-KyNoi.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"param-editor-field-DurcyLuw.js","sources":["../src/components/overlays/attachment-chip.tsx","../src/components/param-editor/param-editor-label.tsx","../src/components/param-editor/param-editor-control-item.tsx","../src/components/primitives/chip.tsx","../public/font/css/prompt-studio-icons.css?raw","../src/components/primitives/glyph-icon.tsx","../src/components/primitives/icon-options.tsx","../src/components/primitives/slider.tsx","../src/components/param-editor/inputs/selection-menu.tsx","../src/components/param-editor/inputs/action-input.tsx","../src/components/param-editor/inputs/anchor-grid.ts","../src/components/param-editor/param-editor-read-only-value.tsx","../src/components/param-editor/inputs/anchor-grid-input.tsx","../src/components/param-editor/inputs/boolean-input.tsx","../src/components/param-editor/inputs/color-input.tsx","../src/components/param-editor/inputs/date-input.tsx","../src/components/param-editor/inputs/file-upload-value.ts","../src/components/param-editor/inputs/file-upload-input.tsx","../src/components/param-editor/inputs/horizontal-text-input.tsx","../src/components/param-editor/inputs/markdown-input.tsx","../src/components/param-editor/inputs/number-input.tsx","../src/components/param-editor/inputs/numeric-value.ts","../src/components/param-editor/inputs/range-value.ts","../src/components/param-editor/inputs/slider-marks.tsx","../src/components/param-editor/inputs/range-input.tsx","../src/components/param-editor/inputs/resource-input-chips.tsx","../src/components/param-editor/inputs/resource-input.tsx","../src/components/param-editor/inputs/segmented-input.tsx","../src/components/param-editor/inputs/selection-input.tsx","../src/components/param-editor/inputs/text-input.tsx","../src/components/param-editor/param-editor-inline-group.tsx","../src/components/param-editor/inputs/vector-value.ts","../src/components/param-editor/inputs/vector-input.tsx","../src/components/param-editor/resolve-param-value.ts","../src/components/param-editor/param-editor-advanced-field.tsx","../src/components/param-editor/param-editor-presentation.ts","../src/components/param-editor/param-editor-read-only-field.tsx","../src/components/param-editor/param-editor-field.tsx"],"sourcesContent":["import { Badge, chakra, IconButton, Image, Popover, Text } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\n\nexport interface AttachmentChipProps {\n file: File;\n /** Accessible label for the remove control; the caller owns translation. */\n removeLabel: string;\n disabled?: boolean;\n onRemove: () => void;\n}\n\nconst isImage = (file: File) => file.type.startsWith(\"image/\");\n\nconst formatSize = (bytes: number) => {\n if (bytes < 1024) return `${bytes.toString()} B`;\n if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024).toString()} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\n/**\n * A file queued for upload, before the resource it belongs to exists. Removal\n * lives on the chip because there is no other surface between picking a file\n * and submitting where a mistaken attachment can be taken back.\n */\nexport const AttachmentChip = (props: AttachmentChipProps) => {\n const { file, removeLabel, disabled, onRemove } = props;\n const [previewUrl, setPreviewUrl] = useState<string | null>(null);\n\n // Object URLs are only needed for image previews; revoke on unmount/file swap\n // so we don't leak blobs while the dialog is open.\n useEffect(() => {\n if (!isImage(file)) return;\n const url = URL.createObjectURL(file);\n setPreviewUrl(url);\n return () => URL.revokeObjectURL(url);\n }, [file]);\n\n const name = (\n <Text as=\"span\" textStyle=\"label/XS/medium\" lineClamp={1} maxW=\"180px\">\n {file.name}\n </Text>\n );\n\n return (\n <Badge variant=\"chip\" gap=\"2xs\" pr=\"2xs\">\n {previewUrl ? (\n <Popover.Root positioning={{ placement: \"top\" }}>\n <Popover.Trigger asChild>\n <chakra.button type=\"button\" cursor=\"pointer\" minW=\"0\" display=\"inline-flex\">\n {name}\n </chakra.button>\n </Popover.Trigger>\n <Popover.Positioner>\n <Popover.Content w=\"auto\" p=\"2xs\" bg=\"bg\">\n <Image src={previewUrl} alt={file.name} maxW=\"240px\" maxH=\"240px\" borderRadius=\"sm\" />\n </Popover.Content>\n </Popover.Positioner>\n </Popover.Root>\n ) : (\n name\n )}\n <Text as=\"span\" textStyle=\"label/XS/regular\" color=\"fg.subtle\">\n {formatSize(file.size)}\n </Text>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={removeLabel} disabled={disabled} onClick={onRemove}>\n <X size={12} />\n </IconButton>\n </Badge>\n );\n};\n","import { HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { CircleHelp } from \"lucide-react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ninterface ParamEditorLabelProps {\n name: string;\n description?: string;\n compact?: boolean;\n}\n\nexport const ParamEditorLabel = (props: ParamEditorLabelProps) => {\n const { name, description, compact = false } = props;\n\n return (\n <HStack gap=\"1\" alignItems=\"center\" minW=\"0\">\n <Text\n textStyle={compact ? \"label/XS/medium\" : \"label/S/medium\"}\n color=\"fg.muted\"\n letterSpacing={compact ? \"0.08em\" : undefined}\n textTransform={compact ? \"uppercase\" : undefined}\n truncate\n >\n {name}\n </Text>\n {description ? (\n <Tooltip content={description}>\n <Icon as={CircleHelp} boxSize=\"12px\" color=\"fg.muted\" opacity={0.6} cursor=\"help\" flexShrink={0} />\n </Tooltip>\n ) : null}\n </HStack>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { ParamEditorFieldLabel } from \"./param-editor-field-label\";\n\ntype ControlItemOrientation = \"auto\" | \"inline\" | \"stacked\";\n\ninterface ParamEditorControlItemProps {\n name?: string;\n description?: string;\n hideLabel?: boolean;\n fullWidth?: boolean;\n /** `auto` renders inline when compact and stacked when full-width. */\n orientation?: ControlItemOrientation;\n /** Rendered on the label row, right-aligned (e.g. an editable value readout). */\n labelTrailing?: ReactNode;\n children: ReactNode;\n}\n\n// Shared row scaffold for control layouts: a labelled control that renders either\n// inline (label left / control right) or stacked (label above the control).\nexport const ParamEditorControlItem = (props: ParamEditorControlItemProps) => {\n const {\n name,\n description,\n hideLabel = false,\n fullWidth = false,\n orientation = \"auto\",\n labelTrailing,\n children,\n } = props;\n\n const label = hideLabel || !name ? null : <ParamEditorFieldLabel name={name} description={description} />;\n const resolved = orientation === \"auto\" ? (fullWidth ? \"stacked\" : \"inline\") : orientation;\n\n if (resolved === \"stacked\") {\n const header = label || labelTrailing;\n return (\n <Box minW=\"0\">\n {header ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" mb=\"xs\" minW=\"0\">\n {label}\n {labelTrailing}\n </Flex>\n ) : null}\n {children}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\" minW=\"0\">\n {label}\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\">\n {labelTrailing}\n {children}\n </Flex>\n </Flex>\n );\n};\n","import type { BadgeProps } from \"@chakra-ui/react\";\nimport { Badge } from \"@chakra-ui/react\";\n\nexport interface ChipProps extends Omit<BadgeProps, \"size\" | \"variant\"> {}\n\nexport const Chip = (props: ChipProps) => <Badge size=\"sm\" variant=\"chip\" {...props} />;\n","export default \"@font-face {\\n font-family: \\\"prompt-studio-icons\\\";\\n src: url(\\\"$fonts/prompt-studio-icons.eot?959122fb\\\");\\n src:\\n url(\\\"$fonts/prompt-studio-icons.eot?959122fb#iefix\\\") format(\\\"embedded-opentype\\\"),\\n url(\\\"$fonts/prompt-studio-icons.woff2?959122fb\\\") format(\\\"woff2\\\"),\\n url(\\\"$fonts/prompt-studio-icons.woff?959122fb\\\") format(\\\"woff\\\"),\\n url(\\\"$fonts/prompt-studio-icons.ttf?959122fb\\\") format(\\\"truetype\\\"),\\n url(\\\"$fonts/prompt-studio-icons.svg?959122fb#prompt-studio-icons\\\") format(\\\"svg\\\");\\n font-weight: normal;\\n font-style: normal;\\n font-display: block;\\n}\\n\\n[class^=\\\"icon-\\\"]::before,\\n[class*=\\\" icon-\\\"]::before {\\n font-family: \\\"prompt-studio-icons\\\", sans-serif;\\n font-style: normal;\\n font-weight: normal;\\n speak: never;\\n display: inline-block;\\n text-decoration: inherit;\\n width: 1em;\\n margin-right: 0.2em;\\n text-align: center;\\n font-variant: normal;\\n text-transform: none;\\n line-height: 1em;\\n margin-left: 0.2em;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.icon-cloud-add::before {\\n content: \\\"\\\\e800\\\";\\n}\\n.icon-credit-usage-50::before {\\n content: \\\"\\\\e801\\\";\\n}\\n.icon-history::before {\\n content: \\\"\\\\e802\\\";\\n}\\n.icon-data-string::before {\\n content: \\\"\\\\e803\\\";\\n}\\n.icon-data-object::before {\\n content: \\\"\\\\e804\\\";\\n}\\n.icon-data-integer::before {\\n content: \\\"\\\\e805\\\";\\n}\\n.icon-data-double::before {\\n content: \\\"\\\\e806\\\";\\n}\\n.icon-add::before {\\n content: \\\"\\\\e807\\\";\\n}\\n.icon-add-circle::before {\\n content: \\\"\\\\e808\\\";\\n}\\n.icon-data-boolean::before {\\n content: \\\"\\\\e809\\\";\\n}\\n.icon-add-square::before {\\n content: \\\"\\\\e80a\\\";\\n}\\n.icon-data-array::before {\\n content: \\\"\\\\e80b\\\";\\n}\\n.icon-status-backlog::before {\\n content: \\\"\\\\e80c\\\";\\n}\\n.icon-metrics::before {\\n content: \\\"\\\\e80d\\\";\\n}\\n.icon-pie-donut::before {\\n content: \\\"\\\\e80e\\\";\\n}\\n.icon-area-plot::before {\\n content: \\\"\\\\e80f\\\";\\n}\\n.icon-treemap::before {\\n content: \\\"\\\\e810\\\";\\n}\\n.icon-align-bottom::before {\\n content: \\\"\\\\e811\\\";\\n}\\n.icon-align-horizontally::before {\\n content: \\\"\\\\e812\\\";\\n}\\n.icon-align-left::before {\\n content: \\\"\\\\e813\\\";\\n}\\n.icon-align-right::before {\\n content: \\\"\\\\e814\\\";\\n}\\n.icon-align-vertically::before {\\n content: \\\"\\\\e815\\\";\\n}\\n.icon-radar-column-chart::before {\\n content: \\\"\\\\e816\\\";\\n}\\n.icon-pie-full::before {\\n content: \\\"\\\\e817\\\";\\n}\\n.icon-archive-1::before {\\n content: \\\"\\\\e818\\\";\\n}\\n.icon-archive-2::before {\\n content: \\\"\\\\e819\\\";\\n}\\n.icon-archive-add::before {\\n content: \\\"\\\\e81a\\\";\\n}\\n.icon-ct::before {\\n content: \\\"\\\\e81b\\\";\\n}\\n.icon-archive-minus::before {\\n content: \\\"\\\\e81c\\\";\\n}\\n.icon-archive-slash::before {\\n content: \\\"\\\\e81d\\\";\\n}\\n.icon-archive-tick::before {\\n content: \\\"\\\\e81e\\\";\\n}\\n.icon-min::before {\\n content: \\\"\\\\e81f\\\";\\n}\\n.icon-ctd::before {\\n content: \\\"\\\\e820\\\";\\n}\\n.icon-std::before {\\n content: \\\"\\\\e821\\\";\\n}\\n.icon-var::before {\\n content: \\\"\\\\e822\\\";\\n}\\n.icon-max::before {\\n content: \\\"\\\\e823\\\";\\n}\\n.icon-sum::before {\\n content: \\\"\\\\e824\\\";\\n}\\n.icon-status-todo::before {\\n content: \\\"\\\\e825\\\";\\n}\\n.icon-status-progress::before {\\n content: \\\"\\\\e826\\\";\\n}\\n.icon-status-review::before {\\n content: \\\"\\\\e827\\\";\\n}\\n.icon-status-done::before {\\n content: \\\"\\\\e828\\\";\\n}\\n.icon-status-canceled::before {\\n content: \\\"\\\\e829\\\";\\n}\\n.icon-level-low::before {\\n content: \\\"\\\\e82a\\\";\\n}\\n.icon-arrow-down::before {\\n content: \\\"\\\\e82b\\\";\\n}\\n.icon-arrow-down-1::before {\\n content: \\\"\\\\e82c\\\";\\n}\\n.icon-level-mid::before {\\n content: \\\"\\\\e82d\\\";\\n}\\n.icon-arrow-left::before {\\n content: \\\"\\\\e82e\\\";\\n}\\n.icon-level-high::before {\\n content: \\\"\\\\e82f\\\";\\n}\\n.icon-arrow-left-2::before {\\n content: \\\"\\\\e830\\\";\\n}\\n.icon-level-xhigh::before {\\n content: \\\"\\\\e831\\\";\\n}\\n.icon-arrow-right::before {\\n content: \\\"\\\\e832\\\";\\n}\\n.icon-arrow-right-1::before {\\n content: \\\"\\\\e833\\\";\\n}\\n.icon-arrow-right-3::before {\\n content: \\\"\\\\e835\\\";\\n}\\n.icon-arrow-right-4::before {\\n content: \\\"\\\\e836\\\";\\n}\\n.icon-arrow-square-down::before {\\n content: \\\"\\\\e838\\\";\\n}\\n.icon-arrow-square-left::before {\\n content: \\\"\\\\e839\\\";\\n}\\n.icon-arrow-square-up::before {\\n content: \\\"\\\\e83a\\\";\\n}\\n.icon-arrow-up-2::before {\\n content: \\\"\\\\e83f\\\";\\n}\\n.icon-arrow-up-3::before {\\n content: \\\"\\\\e840\\\";\\n}\\n.icon-book::before {\\n content: \\\"\\\\e868\\\";\\n}\\n.icon-book-1::before {\\n content: \\\"\\\\e869\\\";\\n}\\n.icon-box::before {\\n content: \\\"\\\\e86e\\\";\\n}\\n.icon-pointing-arrow::before {\\n content: \\\"\\\\e87d\\\";\\n}\\n.icon-data-structure::before {\\n content: \\\"\\\\e87e\\\";\\n}\\n.icon-brush-4::before {\\n content: \\\"\\\\e87f\\\";\\n}\\n.icon-folder::before {\\n content: \\\"\\\\e880\\\";\\n}\\n.icon-import-2::before {\\n content: \\\"\\\\e881\\\";\\n}\\n.icon-refresh::before {\\n content: \\\"\\\\e882\\\";\\n}\\n.icon-message-text-1::before {\\n content: \\\"\\\\e883\\\";\\n}\\n.icon-messages-2::before {\\n content: \\\"\\\\e884\\\";\\n}\\n.icon-global::before {\\n content: \\\"\\\\e885\\\";\\n}\\n.icon-briefcase::before {\\n content: \\\"\\\\e886\\\";\\n}\\n.icon-row-vertical::before {\\n content: \\\"\\\\e887\\\";\\n}\\n.icon-format-square::before {\\n content: \\\"\\\\e888\\\";\\n}\\n.icon-document-copy::before {\\n content: \\\"\\\\e889\\\";\\n}\\n.icon-document-forward::before {\\n content: \\\"\\\\e88a\\\";\\n}\\n.icon-tick-circle-1::before {\\n content: \\\"\\\\e88b\\\";\\n}\\n.icon-data-timestamp::before {\\n content: \\\"\\\\e88c\\\";\\n}\\n.icon-more-2::before {\\n content: \\\"\\\\e88d\\\";\\n}\\n.icon-notification::before {\\n content: \\\"\\\\e88e\\\";\\n}\\n.icon-search-normal-1::before {\\n content: \\\"\\\\e890\\\";\\n}\\n.icon-home-1::before {\\n content: \\\"\\\\e891\\\";\\n}\\n.icon-brush-1::before {\\n content: \\\"\\\\e892\\\";\\n}\\n.icon-paperclip-2::before {\\n content: \\\"\\\\e893\\\";\\n}\\n.icon-grid-4::before {\\n content: \\\"\\\\e894\\\";\\n}\\n.icon-mouse-circle::before {\\n content: \\\"\\\\e895\\\";\\n}\\n.icon-message-question::before {\\n content: \\\"\\\\e896\\\";\\n}\\n.icon-saving::before {\\n content: \\\"\\\\e898\\\";\\n}\\n.icon-chevron-double::before {\\n content: \\\"\\\\e899\\\";\\n}\\n.icon-close::before {\\n content: \\\"\\\\e89a\\\";\\n}\\n.icon-more-info::before {\\n content: \\\"\\\\e89b\\\";\\n}\\n.icon-arrow-up::before {\\n content: \\\"\\\\e89c\\\";\\n}\\n.icon-reorder::before {\\n content: \\\"\\\\e89d\\\";\\n}\\n.icon-refresh-1::before {\\n content: \\\"\\\\e89e\\\";\\n}\\n.icon-text-variable::before {\\n content: \\\"\\\\e89f\\\";\\n}\\n.icon-header-horizontal::before {\\n content: \\\"\\\\e8a0\\\";\\n}\\n.icon-edit-1::before {\\n content: \\\"\\\\e8a1\\\";\\n}\\n.icon-credit-usage-0::before {\\n content: \\\"\\\\e8a2\\\";\\n}\\n.icon-credit-usage-25::before {\\n content: \\\"\\\\e8a3\\\";\\n}\\n.icon-credit-usage-75::before {\\n content: \\\"\\\\e8a4\\\";\\n}\\n.icon-card::before {\\n content: \\\"\\\\e8a5\\\";\\n}\\n.icon-credit-usage-100::before {\\n content: \\\"\\\\e8a6\\\";\\n}\\n.icon-coding-language::before {\\n content: \\\"\\\\e8ab\\\";\\n}\\n.icon-table::before {\\n content: \\\"\\\\e8ad\\\";\\n}\\n.icon-check::before {\\n content: \\\"\\\\e8ae\\\";\\n}\\n.icon-logo-google::before {\\n content: \\\"\\\\e8af\\\";\\n}\\n.icon-data-date::before {\\n content: \\\"\\\\e8b0\\\";\\n}\\n.icon-llms::before {\\n content: \\\"\\\\e8b1\\\";\\n}\\n.icon-logo-openai::before {\\n content: \\\"\\\\e8b2\\\";\\n}\\n.icon-logo-anthropic::before {\\n content: \\\"\\\\e8b3\\\";\\n}\\n.icon-logo-meta::before {\\n content: \\\"\\\\e8b4\\\";\\n}\\n.icon-data-variant::before {\\n content: \\\"\\\\e8b5\\\";\\n}\\n.icon-chart-1::before {\\n content: \\\"\\\\e8b6\\\";\\n}\\n.icon-schema::before {\\n content: \\\"\\\\e8b7\\\";\\n}\\n.icon-ascending::before {\\n content: \\\"\\\\e8b8\\\";\\n}\\n.icon-bar-chart-100stacked::before {\\n content: \\\"\\\\e8ba\\\";\\n}\\n.icon-results::before {\\n content: \\\"\\\\e8bc\\\";\\n}\\n.icon-bar-chart::before {\\n content: \\\"\\\\e8be\\\";\\n}\\n.icon-descending::before {\\n content: \\\"\\\\e8bf\\\";\\n}\\n.icon-bar-chart-vertical::before {\\n content: \\\"\\\\e8c0\\\";\\n}\\n.icon-step-before-points::before {\\n content: \\\"\\\\e8c4\\\";\\n}\\n.icon-step-after-points::before {\\n content: \\\"\\\\e8c6\\\";\\n}\\n.icon-line-rounded::before {\\n content: \\\"\\\\e8c9\\\";\\n}\\n.icon-line-sharp::before {\\n content: \\\"\\\\e8cb\\\";\\n}\\n.icon-bar-chart-simple::before {\\n content: \\\"\\\\e8cc\\\";\\n}\\n.icon-pie-chart::before {\\n content: \\\"\\\\e8cd\\\";\\n}\\n.icon-bar-chart-stacked::before {\\n content: \\\"\\\\e8ce\\\";\\n}\\n.icon-map::before {\\n content: \\\"\\\\e8cf\\\";\\n}\\n.icon-radar-bar-chart::before {\\n content: \\\"\\\\e8d0\\\";\\n}\\n.icon-radar-chart::before {\\n content: \\\"\\\\e8d1\\\";\\n}\\n.icon-metric::before {\\n content: \\\"\\\\e8d2\\\";\\n}\\n.icon-area-plot-1::before {\\n content: \\\"\\\\e8d3\\\";\\n}\\n.icon-avg::before {\\n content: \\\"\\\\e8d4\\\";\\n}\\n.icon-area-plot-stacked100::before {\\n content: \\\"\\\\e8d5\\\";\\n}\\n.icon-scatter-bubbles::before {\\n content: \\\"\\\\e8d6\\\";\\n}\\n.icon-code::before {\\n content: \\\"\\\\e8d7\\\";\\n}\\n.icon-code-1::before {\\n content: \\\"\\\\e8d8\\\";\\n}\\n.icon-code-circle::before {\\n content: \\\"\\\\e8d9\\\";\\n}\\n.icon-scatter-plot::before {\\n content: \\\"\\\\e8db\\\";\\n}\\n.icon-scatter-dots::before {\\n content: \\\"\\\\e8dc\\\";\\n}\\n.icon-med::before {\\n content: \\\"\\\\e8dd\\\";\\n}\\n.icon-command-square::before {\\n content: \\\"\\\\e8e1\\\";\\n}\\n.icon-component::before {\\n content: \\\"\\\\e8e2\\\";\\n}\\n.icon-copy::before {\\n content: \\\"\\\\e8e9\\\";\\n}\\n.icon-danger::before {\\n content: \\\"\\\\e8f5\\\";\\n}\\n.icon-visualization::before {\\n content: \\\"\\\\e8fc\\\";\\n}\\n.icon-document-1::before {\\n content: \\\"\\\\e911\\\";\\n}\\n.icon-document-code::before {\\n content: \\\"\\\\e913\\\";\\n}\\n.icon-document-download::before {\\n content: \\\"\\\\e916\\\";\\n}\\n.icon-document-text-1::before {\\n content: \\\"\\\\e91f\\\";\\n}\\n.icon-document-upload::before {\\n content: \\\"\\\\e920\\\";\\n}\\n.icon-edit::before {\\n content: \\\"\\\\e927\\\";\\n}\\n.icon-edit-2::before {\\n content: \\\"\\\\e928\\\";\\n}\\n.icon-eraser-1::before {\\n content: \\\"\\\\e939\\\";\\n}\\n.icon-export-1::before {\\n content: \\\"\\\\e93b\\\";\\n}\\n.icon-export-3::before {\\n content: \\\"\\\\e93d\\\";\\n}\\n.icon-eye::before {\\n content: \\\"\\\\e93f\\\";\\n}\\n.icon-eye-slash::before {\\n content: \\\"\\\\e940\\\";\\n}\\n.icon-flash-1::before {\\n content: \\\"\\\\e950\\\";\\n}\\n.icon-folder-2::before {\\n content: \\\"\\\\e955\\\";\\n}\\n.icon-glass::before {\\n content: \\\"\\\\e97c\\\";\\n}\\n.icon-home-2::before {\\n content: \\\"\\\\e9aa\\\";\\n}\\n.icon-import-1::before {\\n content: \\\"\\\\e9b5\\\";\\n}\\n.icon-info-circle::before {\\n content: \\\"\\\\e9b7\\\";\\n}\\n.icon-key::before {\\n content: \\\"\\\\e9bc\\\";\\n}\\n.icon-data::before {\\n content: \\\"\\\\e9c7\\\";\\n}\\n.icon-link-2::before {\\n content: \\\"\\\\e9d1\\\";\\n}\\n.icon-location::before {\\n content: \\\"\\\\e9d5\\\";\\n}\\n.icon-location-slash::before {\\n content: \\\"\\\\e9d9\\\";\\n}\\n.icon-login-1::before {\\n content: \\\"\\\\e9e0\\\";\\n}\\n.icon-logout-1::before {\\n content: \\\"\\\\e9e2\\\";\\n}\\n.icon-magicpen::before {\\n content: \\\"\\\\e9e4\\\";\\n}\\n.icon-maximize-2::before {\\n content: \\\"\\\\e9f0\\\";\\n}\\n.icon-maximize-4::before {\\n content: \\\"\\\\e9f2\\\";\\n}\\n.icon-maximize-21::before {\\n content: \\\"\\\\e9f3\\\";\\n}\\n.icon-menu-1::before {\\n content: \\\"\\\\e9f8\\\";\\n}\\n.icon-message::before {\\n content: \\\"\\\\e9fa\\\";\\n}\\n.icon-messages::before {\\n content: \\\"\\\\ea06\\\";\\n}\\n.icon-microphone-2::before {\\n content: \\\"\\\\ea11\\\";\\n}\\n.icon-minus-cirlce::before {\\n content: \\\"\\\\ea18\\\";\\n}\\n.icon-moon::before {\\n content: \\\"\\\\ea2e\\\";\\n}\\n.icon-more::before {\\n content: \\\"\\\\ea2f\\\";\\n}\\n.icon-note::before {\\n content: \\\"\\\\ea44\\\";\\n}\\n.icon-paperclip::before {\\n content: \\\"\\\\ea56\\\";\\n}\\n.icon-play::before {\\n content: \\\"\\\\ea6a\\\";\\n}\\n.icon-presention-chart::before {\\n content: \\\"\\\\ea6f\\\";\\n}\\n.icon-redo::before {\\n content: \\\"\\\\ea9c\\\";\\n}\\n.icon-rotate-left::before {\\n content: \\\"\\\\eaa8\\\";\\n}\\n.icon-rotate-right::before {\\n content: \\\"\\\\eaaa\\\";\\n}\\n.icon-search-zoom-in-1::before {\\n content: \\\"\\\\eac8\\\";\\n}\\n.icon-search-zoom-out::before {\\n content: \\\"\\\\eac9\\\";\\n}\\n.icon-send-1::before {\\n content: \\\"\\\\ead1\\\";\\n}\\n.icon-setting-2::before {\\n content: \\\"\\\\ead6\\\";\\n}\\n.icon-setting-4::before {\\n content: \\\"\\\\ead8\\\";\\n}\\n.icon-setting-5::before {\\n content: \\\"\\\\ead9\\\";\\n}\\n.icon-shuffle::before {\\n content: \\\"\\\\eae9\\\";\\n}\\n.icon-sidebar-bottom::before {\\n content: \\\"\\\\eaea\\\";\\n}\\n.icon-sidebar-left::before {\\n content: \\\"\\\\eaeb\\\";\\n}\\n.icon-sidebar-right::before {\\n content: \\\"\\\\eaec\\\";\\n}\\n.icon-sidebar-top::before {\\n content: \\\"\\\\eaed\\\";\\n}\\n.icon-slash::before {\\n content: \\\"\\\\eaf3\\\";\\n}\\n.icon-smallcaps::before {\\n content: \\\"\\\\eaf9\\\";\\n}\\n.icon-sms::before {\\n content: \\\"\\\\eafd\\\";\\n}\\n.icon-star::before {\\n content: \\\"\\\\eb07\\\";\\n}\\n.icon-stop::before {\\n content: \\\"\\\\eb0e\\\";\\n}\\n.icon-sun-1::before {\\n content: \\\"\\\\eb15\\\";\\n}\\n.icon-tag-cross::before {\\n content: \\\"\\\\eb19\\\";\\n}\\n.icon-task::before {\\n content: \\\"\\\\eb1c\\\";\\n}\\n.icon-task-square::before {\\n content: \\\"\\\\eb1d\\\";\\n}\\n.icon-teacher::before {\\n content: \\\"\\\\eb1e\\\";\\n}\\n.icon-text::before {\\n content: \\\"\\\\eb1f\\\";\\n}\\n.icon-textalign-center::before {\\n content: \\\"\\\\eb20\\\";\\n}\\n.icon-textalign-justifycenter::before {\\n content: \\\"\\\\eb21\\\";\\n}\\n.icon-textalign-left::before {\\n content: \\\"\\\\eb24\\\";\\n}\\n.icon-textalign-right::before {\\n content: \\\"\\\\eb25\\\";\\n}\\n.icon-text-block::before {\\n content: \\\"\\\\eb26\\\";\\n}\\n.icon-text-bold::before {\\n content: \\\"\\\\eb27\\\";\\n}\\n.icon-text-italic::before {\\n content: \\\"\\\\eb28\\\";\\n}\\n.icon-text-underline::before {\\n content: \\\"\\\\eb29\\\";\\n}\\n.icon-tick-circle::before {\\n content: \\\"\\\\eb2a\\\";\\n}\\n.icon-timer-1::before {\\n content: \\\"\\\\eb32\\\";\\n}\\n.icon-trash::before {\\n content: \\\"\\\\eb3c\\\";\\n}\\n.icon-undo::before {\\n content: \\\"\\\\eb47\\\";\\n}\\n.icon-user::before {\\n content: \\\"\\\\eb4a\\\";\\n}\\n.icon-video-vertical::before {\\n content: \\\"\\\\eb61\\\";\\n}\\n.icon-wallet-2::before {\\n content: \\\"\\\\eb6d\\\";\\n}\\n.icon-wifi::before {\\n content: \\\"\\\\eb7b\\\";\\n}\\n.icon-stockholm::before {\\n content: \\\"\\\\eb81\\\";\\n}\\n.icon-perplexity-ai::before {\\n content: \\\"\\\\eb82\\\";\\n}\\n\"","import { chakra } from \"@chakra-ui/react\";\nimport type { ComponentType, HTMLAttributes } from \"react\";\n// Package-relative on purpose: every host that resolves `@pstdio/ui` from source\n// would otherwise need its own `$fonts` alias.\nimport generatedGlyphStyles from \"../../../public/font/css/prompt-studio-icons.css?raw\";\nimport \"./glyph-icon.css\";\n\n// The generated stylesheet is the source of truth for glyph codepoints; reading\n// them here keeps `@pstdio/ui` from bundling its legacy @font-face formats.\nconst GLYPH_RULE = /\\.icon-([\\w-]+)::before\\s*\\{\\s*content:\\s*\"(\\\\[0-9a-f]+)\"/g;\n\nconst glyphContent = new Map(\n Array.from(generatedGlyphStyles.matchAll(GLYPH_RULE), ([, name, content]) => [name, content]),\n);\n\n// Glyphs are painted through a ::before pseudo element sized by font-size, so the\n// wrapper turns its own box into a size container. That lets the glyph track\n// whatever box the caller gives it (`boxSize` on a Chakra `Icon`, say) exactly\n// like a lucide SVG would.\n//\n// Everything is applied through the `css` prop rather than a `chakra()` base:\n// factory base styles sit in a lower cascade layer than the `chakra-icon` recipe\n// and the global reset, which silently blockified the wrapper and, with it, threw\n// away the `vertical-align` that keeps an icon on the text's centre line.\n//\n// The ::before is taken out of flow and stretched over the wrapper so its geometry\n// never depends on the wrapper's own layout mode. Within that box the font builder\n// normalises every glyph's ink to a 1024-unit box sitting 47 units above the\n// baseline of a 1000-unit em (ascent 850 / descent -150), so the ink renders larger\n// than the em and half its overhang above centre: 89.5% of the container lands it\n// on lucide's 22-of-24 optical size, and 0.209em — measured against the glyph's own\n// font size, so it follows any optical scale — drops it onto the centre line.\nconst GLYPH_OPTICAL_SIZE = 89.5;\nconst GLYPH_BASELINE_OFFSET = \"0.209em\";\n\nconst GlyphRoot = chakra(\"span\");\n\nconst glyphStyles = (content: string, fontSize: string) => ({\n position: \"relative\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n flexShrink: 0,\n boxSize: \"1em\",\n lineHeight: 1,\n containerType: \"size\",\n \"&::before\": {\n content,\n fontSize,\n position: \"absolute\",\n inset: 0,\n fontFamily: '\"prompt-studio-icons\", sans-serif',\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n lineHeight: \"100cqmin\",\n textAlign: \"center\",\n transform: `translateY(${GLYPH_BASELINE_OFFSET})`,\n },\n});\n\ntype GlyphIconProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\">;\n\nexport interface GlyphIconOptions {\n /**\n * Optical size relative to a round glyph. Every glyph is normalised to the same\n * ink box, so square marks such as the level bars need trimming to carry the\n * same visual weight as the status rings.\n */\n scale?: number;\n}\n\n/**\n * Builds a component for one `prompt-studio-icons` glyph so lucide icons and\n * font glyphs share a single component type in the icon registry.\n */\nexport const createGlyphIcon = (glyph: string, options: GlyphIconOptions = {}): ComponentType<GlyphIconProps> => {\n const styles = glyphStyles(\n `\"${glyphContent.get(glyph) ?? \"\"}\"`,\n `${(GLYPH_OPTICAL_SIZE * (options.scale ?? 1)).toFixed(1)}cqmin`,\n );\n\n const GlyphIcon = (props: GlyphIconProps) => <GlyphRoot aria-hidden {...props} css={styles} />;\n\n GlyphIcon.displayName = `GlyphIcon(${glyph})`;\n return GlyphIcon;\n};\n","import {\n Archive,\n Ban,\n Bell,\n Bookmark,\n BookOpen,\n Bot,\n Bug,\n Circle,\n Code,\n Component,\n Cpu,\n Eye,\n Feather,\n FileText,\n Flag,\n Flame,\n Folder,\n GitBranch,\n GitCommitHorizontal,\n Hash,\n Heart,\n History,\n Inbox,\n Kanban,\n Layers,\n Lightbulb,\n Link,\n ListChecks,\n MessageSquare,\n Play,\n Puzzle,\n Rocket,\n Scale,\n Settings,\n Shield,\n Sparkles,\n SquareKanban,\n Star,\n Tag,\n Target,\n Terminal,\n Ticket,\n Timer,\n Users,\n Workflow,\n Wrench,\n Zap,\n} from \"lucide-react\";\nimport type { ComponentType } from \"react\";\nimport { createGlyphIcon } from \"./glyph-icon\";\n\nexport interface IconColorPickerIconOption {\n value: string | null;\n label: string;\n icon: ComponentType;\n}\n\nexport const optionColors = [\n \"gray\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"teal\",\n \"blue\",\n \"cyan\",\n \"purple\",\n \"pink\",\n] as const;\n\nconst glyph = (name: string, label: string) => ({ value: name, label, icon: createGlyphIcon(name) });\n\n// Level bars fill their ink box as a solid square, so they read heavier than the\n// round status glyphs at the same size; lucide's own bar marks sit at 18-of-24.\nconst levelGlyph = (name: string, label: string) => ({\n value: name,\n label,\n icon: createGlyphIcon(name, { scale: 0.82 }),\n});\n\n// Ordered exactly like the `cmp/TagAppearancePopover` grid in the design system:\n// a leading \"none\" cell, generic icons, then status rings, levels and concepts.\n// Status rings and level bars have no lucide equivalent and ship as glyphs in\n// the `prompt-studio-icons` font.\nexport const optionIcons = [\n { value: null, label: \"none\", icon: Ban },\n { value: \"flag\", label: \"flag\", icon: Flag },\n { value: \"bug\", label: \"bug\", icon: Bug },\n { value: \"sparkles\", label: \"sparkles\", icon: Sparkles },\n { value: \"book-open\", label: \"book open\", icon: BookOpen },\n { value: \"wrench\", label: \"wrench\", icon: Wrench },\n { value: \"zap\", label: \"zap\", icon: Zap },\n { value: \"feather\", label: \"feather\", icon: Feather },\n { value: \"scale\", label: \"scale\", icon: Scale },\n { value: \"layers\", label: \"layers\", icon: Layers },\n { value: \"star\", label: \"star\", icon: Star },\n { value: \"flame\", label: \"flame\", icon: Flame },\n { value: \"lightbulb\", label: \"lightbulb\", icon: Lightbulb },\n { value: \"shield\", label: \"shield\", icon: Shield },\n { value: \"eye\", label: \"eye\", icon: Eye },\n // The design draws the clock cell with lucide's timer.\n { value: \"clock\", label: \"clock\", icon: Timer },\n { value: \"tag\", label: \"tag\", icon: Tag },\n { value: \"code\", label: \"code\", icon: Code },\n { value: \"rocket\", label: \"rocket\", icon: Rocket },\n { value: \"heart\", label: \"heart\", icon: Heart },\n { value: \"bookmark\", label: \"bookmark\", icon: Bookmark },\n { value: \"target\", label: \"target\", icon: Target },\n { value: \"bell\", label: \"bell\", icon: Bell },\n { value: \"hash\", label: \"hash\", icon: Hash },\n glyph(\"status-backlog\", \"status backlog\"),\n glyph(\"status-todo\", \"status todo\"),\n glyph(\"status-progress\", \"status in progress\"),\n glyph(\"status-review\", \"status in review\"),\n glyph(\"status-done\", \"status done\"),\n glyph(\"status-canceled\", \"status canceled\"),\n { value: \"ticket\", label: \"ticket\", icon: Ticket },\n { value: \"git-branch\", label: \"git branch\", icon: GitBranch },\n levelGlyph(\"level-low\", \"level low\"),\n levelGlyph(\"level-mid\", \"level medium\"),\n levelGlyph(\"level-high\", \"level high\"),\n levelGlyph(\"level-xhigh\", \"level very high\"),\n { value: \"bot\", label: \"bot\", icon: Bot },\n { value: \"puzzle\", label: \"puzzle\", icon: Puzzle },\n { value: \"workflow\", label: \"workflow\", icon: Workflow },\n { value: \"kanban\", label: \"kanban\", icon: Kanban },\n { value: \"message-square\", label: \"message square\", icon: MessageSquare },\n { value: \"folder\", label: \"folder\", icon: Folder },\n { value: \"file-text\", label: \"file text\", icon: FileText },\n { value: \"history\", label: \"history\", icon: History },\n { value: \"play\", label: \"play\", icon: Play },\n { value: \"terminal\", label: \"terminal\", icon: Terminal },\n { value: \"cpu\", label: \"CPU\", icon: Cpu },\n { value: \"users\", label: \"users\", icon: Users },\n // Prompt Studio concepts: the icons its own tickets, boards, workspaces and\n // notifications are drawn with.\n { value: \"component\", label: \"ticket\", icon: Component },\n { value: \"square-kanban\", label: \"board\", icon: SquareKanban },\n { value: \"git-commit-horizontal\", label: \"workspace\", icon: GitCommitHorizontal },\n { value: \"inbox\", label: \"notifications\", icon: Inbox },\n { value: \"list-checks\", label: \"checklist\", icon: ListChecks },\n { value: \"archive\", label: \"archive\", icon: Archive },\n { value: \"link\", label: \"link\", icon: Link },\n { value: \"settings\", label: \"settings\", icon: Settings },\n] satisfies IconColorPickerIconOption[];\n\nexport const getIconComponent = (\n name: string | null | undefined,\n iconOptions: readonly IconColorPickerIconOption[] = optionIcons,\n): ComponentType => {\n const normalizedName = (name ?? \"circle\")\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([a-zA-Z])([0-9])/g, \"$1-$2\")\n .toLowerCase();\n const entry = iconOptions.find((icon) => icon.value === normalizedName);\n return entry?.icon ?? Circle;\n};\n","import { Slider as ChakraSlider } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface SliderProps extends ChakraSlider.RootProps {}\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(function Slider(props, ref) {\n const { children, ...rest } = props;\n\n return (\n <ChakraSlider.Root ref={ref} variant=\"solid\" {...rest}>\n <ChakraSlider.Control>\n <ChakraSlider.Track height=\"2px\" borderRadius=\"0\" bg=\"bg.muted\">\n <ChakraSlider.Range bg=\"fg\" />\n </ChakraSlider.Track>\n <ChakraSlider.Thumbs\n boxSize=\"0.5rem\"\n bg=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"bg\"\n borderRadius=\"none\"\n boxShadow=\"none\"\n transition=\"width 0.12s ease, height 0.12s ease, border-color 0.2s ease-in-out\"\n _hover={{ boxSize: \"0.75rem\", borderColor: \"border.accent-light\" }}\n _active={{ boxSize: \"0.875rem\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n />\n </ChakraSlider.Control>\n {children}\n </ChakraSlider.Root>\n );\n});\n","import { Button, Flex, Icon, IconButton, Menu, Portal } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, Square, SquareCheck } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { ListRow } from \"../../list-row/list-row\";\nimport { SearchableMenu, type SearchableMenuItem } from \"../../overlays/searchable-menu\";\nimport { getIconComponent } from \"../../primitives\";\nimport type { SelectionGroup } from \"../param-editor.types\";\n\nexport interface SelectionMenuOption {\n id: string;\n name: string;\n icon?: string;\n /** Palette key (e.g. \"blue\") applied to the option's icon. */\n color?: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface SelectionMenuProps {\n triggerLabel: ReactNode;\n options: SelectionMenuOption[];\n selectedIds: string[];\n multiSelect: boolean;\n disabled?: boolean;\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyText?: string;\n group?: SelectionGroup;\n fullWidth?: boolean;\n triggerVariant?: \"button\" | \"icon\";\n triggerAriaLabel?: string;\n size?: \"xs\" | \"sm\";\n onToggle: (optionId: string) => void;\n onGroupChange?: (optionId: string) => void;\n}\n\nexport const selectionIndicator = (multiSelect: boolean, selected: boolean) => {\n if (multiSelect)\n return <Icon as={selected ? SquareCheck : Square} boxSize=\"14px\" color={selected ? \"fg\" : \"fg.muted\"} />;\n return selected ? <Icon as={Check} boxSize=\"14px\" color=\"fg\" /> : null;\n};\n\nexport const selectionOptionIcon = (option: SelectionMenuOption | undefined, boxSize: string) => {\n if (!option) return null;\n return (\n <Icon\n as={getIconComponent(option.icon ?? null)}\n boxSize={boxSize}\n color={option.color ? `${option.color}.500` : \"fg.muted\"}\n />\n );\n};\n\n/**\n * The single dropdown behind every option picker in the editor — selection\n * params and editable resource params alike. Sharing it is what keeps a\n * resource attribute and a command param from drifting into two looks.\n *\n * Single-selects clear by re-picking the selected option; a dedicated \"none\"\n * row would read as just another value to choose.\n */\nexport const SelectionMenu = (props: SelectionMenuProps) => {\n const {\n triggerLabel,\n options,\n selectedIds,\n multiSelect,\n disabled,\n searchable = false,\n searchPlaceholder = \"Search options…\",\n emptyText = \"No options found\",\n group,\n fullWidth,\n triggerVariant = \"button\",\n triggerAriaLabel,\n size = \"sm\",\n onToggle,\n onGroupChange,\n } = props;\n const trigger =\n triggerVariant === \"icon\" ? (\n <IconButton aria-label={triggerAriaLabel ?? \"Open options\"} size=\"2xs\" variant=\"ghost\" disabled={disabled}>\n {triggerLabel}\n </IconButton>\n ) : (\n <Button\n size={size}\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n disabled={disabled}\n textStyle={size === \"xs\" ? \"label/XS\" : \"label/S/regular\"}\n width={fullWidth ? \"100%\" : undefined}\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _expanded={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" w={fullWidth ? \"full\" : undefined}>\n <Flex alignItems=\"center\" gap=\"xs\">\n {triggerLabel}\n </Flex>\n <ChevronDown size={14} />\n </Flex>\n </Button>\n );\n\n if (searchable || group) {\n const items: SearchableMenuItem[] = options.map((option) => ({\n id: option.id,\n label: option.name,\n searchText: [option.id, option.description].filter(Boolean).join(\" \"),\n secondaryLabel: option.description,\n icon: getIconComponent(option.icon),\n isDisabled: option.disabled,\n isSelected: selectedIds.includes(option.id),\n onSelect: () => onToggle(option.id),\n }));\n const selectedGroup = group?.options.find((option) => option.id === group.defaultValue);\n\n return (\n <SearchableMenu\n trigger={trigger}\n items={items}\n listId={group?.defaultValue}\n showSearch={searchable}\n searchPlaceholder={searchPlaceholder}\n closeOnSelect={!multiSelect}\n emptyState={\n <Menu.Item value=\"empty\" disabled asChild>\n <ListRow asChild variant=\"full-width\" id=\"empty\" label={emptyText} disabled />\n </Menu.Item>\n }\n parentList={\n group\n ? {\n items: group.options.map((option) => ({\n id: option.id,\n label: option.name,\n searchText: [option.id, option.description].filter(Boolean).join(\" \"),\n secondaryLabel: option.description,\n icon: getIconComponent(option.icon),\n isDisabled: option.disabled,\n isSelected: option.id === group.defaultValue,\n })),\n selectedLabel: selectedGroup?.name ?? group.placeholder ?? `Select ${group.name.toLowerCase()}`,\n selectedIcon: selectedGroup ? getIconComponent(selectedGroup.icon) : undefined,\n ariaLabel: group.name,\n disabled: group.disabled || group.options.length <= 1,\n showSearch: group.searchable,\n searchPlaceholder: group.searchPlaceholder ?? `Search ${group.name.toLowerCase()}…`,\n emptyState: (\n <Menu.Item value=\"group-empty\" disabled asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id=\"group-empty\"\n label={group.emptyText ?? `No ${group.name.toLowerCase()} found`}\n disabled\n />\n </Menu.Item>\n ),\n onSelect: (item) => onGroupChange?.(item.id),\n }\n : undefined\n }\n />\n );\n }\n\n return (\n <Menu.Root closeOnSelect={!multiSelect}>\n <Menu.Trigger asChild>{trigger}</Menu.Trigger>\n {/* Portaled like every other menu: rendered inline it is clipped by the\n panel's overflow and can extend past the viewport. */}\n <Portal>\n <Menu.Positioner>\n <Menu.Content>\n {options.map((option) => {\n const selected = selectedIds.includes(option.id);\n return (\n <Menu.Item key={option.id} value={option.id} disabled={option.disabled} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n role={multiSelect ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={selected}\n id={option.id}\n label={option.name}\n icon={selectionOptionIcon(option, \"16px\")}\n tooltip={option.description}\n disabled={option.disabled}\n isSelected={selected}\n endContent={selectionIndicator(multiSelect, selected)}\n onActivate={() => onToggle(option.id)}\n />\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { Button, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { ActionOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface ActionInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue?: string;\n options: ActionOption[];\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const ActionInput = (props: ActionInputProps) => {\n const { id, name, description, defaultValue, options, onChange, readOnly, presentation = \"stacked\" } = props;\n const [active, setActive] = useState(defaultValue);\n\n useEffect(() => {\n setActive(defaultValue);\n }, [defaultValue]);\n\n const run = (optionId: string) => {\n setActive(optionId);\n onChange(id, optionId);\n };\n const horizontal = presentation === \"horizontal\";\n const selectedName = options.find((option) => option.id === active)?.name ?? name;\n\n if (horizontal) {\n return (\n <SelectionMenu\n triggerLabel={selectedName}\n options={options}\n selectedIds={active ? [active] : []}\n multiSelect={false}\n disabled={readOnly}\n onToggle={run}\n />\n );\n }\n\n const row = (\n <Flex gap=\"xs\" wrap=\"wrap\">\n {options.map((option) => (\n <Button\n key={option.id}\n size=\"xs\"\n variant={active === option.id ? \"subtle\" : \"outline\"}\n disabled={option.disabled || readOnly}\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n onClick={() => run(option.id)}\n >\n {option.name}\n </Button>\n ))}\n </Flex>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {row}\n </ParamEditorControlItem>\n );\n};\n","import type { AnchorGridValue } from \"../param-editor.types\";\n\n/** The nine anchors in row-major order (top-left → bottom-right). */\nexport const ANCHOR_GRID_VALUES: AnchorGridValue[] = [\n \"top-left\",\n \"top\",\n \"top-right\",\n \"left\",\n \"center\",\n \"right\",\n \"bottom-left\",\n \"bottom\",\n \"bottom-right\",\n];\n\nexport const isAnchorGridValue = (value: unknown): value is AnchorGridValue =>\n typeof value === \"string\" && (ANCHOR_GRID_VALUES as string[]).includes(value);\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface ParamEditorReadOnlyValueProps extends Omit<BoxProps, \"children\"> {\n children: ReactNode;\n preserveWhitespace?: boolean;\n}\n\nexport const ParamEditorReadOnlyValue = (props: ParamEditorReadOnlyValueProps) => {\n const { children, preserveWhitespace = false, ...boxProps } = props;\n\n return (\n <Box minW=\"0\" textStyle=\"label/S/regular\" whiteSpace={preserveWhitespace ? \"pre-wrap\" : undefined} {...boxProps}>\n {children}\n </Box>\n );\n};\n","import { Box, Grid, IconButton } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { AnchorGridValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { ANCHOR_GRID_VALUES } from \"./anchor-grid\";\n\ninterface AnchorGridInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: AnchorGridValue;\n onChange: (id: string, value: AnchorGridValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const AnchorGridInput = (props: AnchorGridInputProps) => {\n const { id, name, description, defaultValue, onChange, readOnly, fullWidth } = props;\n const [value, setValue] = useState<AnchorGridValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: AnchorGridValue) => {\n setValue(next);\n onChange(id, next);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const grid = (\n <Grid\n templateColumns=\"repeat(3, 1.5rem)\"\n gap=\"1px\"\n width=\"fit-content\"\n bg=\"border.subtle\"\n p=\"1px\"\n borderRadius=\"sm\"\n overflow=\"hidden\"\n >\n {ANCHOR_GRID_VALUES.map((anchor) => {\n const selected = anchor === value;\n return (\n <IconButton\n key={anchor}\n aria-label={anchor}\n aria-pressed={selected}\n size=\"2xs\"\n variant=\"ghost\"\n bg={selected ? \"fg\" : \"bg\"}\n _hover={{ bg: selected ? \"fg\" : \"bg.muted\" }}\n borderRadius=\"0\"\n onClick={() => select(anchor)}\n >\n <Box boxSize=\"0.375rem\" borderRadius=\"full\" bg={selected ? \"bg\" : \"fg.muted\"} />\n </IconButton>\n );\n })}\n </Grid>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation={fullWidth ? \"stacked\" : \"inline\"}>\n {grid}\n </ParamEditorControlItem>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Switch } from \"@/components/primitives/switch\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface BooleanInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: boolean;\n onChange: (id: string, value: boolean) => void;\n readOnly?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const BooleanInput = (props: BooleanInputProps) => {\n const { id, name, description, defaultValue, onChange, readOnly, hideLabel, fullWidth, size = \"sm\" } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (readOnly) {\n return (\n <ParamEditorControlItem\n name={name}\n description={description}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n orientation=\"inline\"\n >\n <ParamEditorReadOnlyValue>{String(value)}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem\n name={name}\n description={description}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n orientation=\"inline\"\n >\n <Switch\n size={size}\n checked={value}\n inputProps={{ \"aria-label\": name }}\n onCheckedChange={(details) => {\n setValue(details.checked);\n onChange(id, details.checked);\n }}\n />\n </ParamEditorControlItem>\n );\n};\n","import { Box, ColorPicker, type ColorPickerValueChangeDetails, Flex, parseColor } from \"@chakra-ui/react\";\nimport { type FocusEvent as ReactFocusEvent, useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface ColorInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const ColorInput = (props: ColorInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextColor: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextColor), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n if (!open) return;\n\n const isInsidePicker = (target: EventTarget | null) => {\n const node = target as Node;\n return rootRef.current?.contains(node) || contentRef.current?.contains(node);\n };\n\n const handleOutsideInteraction = (event: FocusEvent | PointerEvent) => {\n if (isInsidePicker(event.target)) return;\n\n setOpen(false);\n };\n\n document.addEventListener(\"focusin\", handleOutsideInteraction, true);\n document.addEventListener(\"pointerdown\", handleOutsideInteraction, true);\n document.addEventListener(\"click\", handleOutsideInteraction, true);\n\n return () => {\n document.removeEventListener(\"focusin\", handleOutsideInteraction, true);\n document.removeEventListener(\"pointerdown\", handleOutsideInteraction, true);\n document.removeEventListener(\"click\", handleOutsideInteraction, true);\n };\n }, [open]);\n\n const handleChange = (newColor: string) => {\n setValue(newColor);\n scheduleChange(newColor);\n };\n\n const handleBlur = (event: ReactFocusEvent<HTMLDivElement>) => {\n const root = event.currentTarget;\n\n setTimeout(() => {\n if (!root.contains(root.ownerDocument.activeElement)) setOpen(false);\n });\n };\n\n if (readOnly) {\n const valueElement = (\n <ParamEditorReadOnlyValue>\n <Flex alignItems=\"center\" gap=\"xs\">\n <Box boxSize=\"0.75rem\" borderRadius=\"xs\" bg={value} />\n <Box as=\"span\">{value}</Box>\n </Flex>\n </ParamEditorReadOnlyValue>\n );\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n const rootProps = {\n value: parseColor(value),\n open,\n onOpenChange: (details: { open: boolean }) => setOpen(details.open),\n onFocusOutside: () => setOpen(false),\n onInteractOutside: () => setOpen(false),\n onBlur: handleBlur,\n onValueChange: (details: ColorPickerValueChangeDetails) => handleChange(details.value.toString(\"hex\")),\n disabled: readOnly,\n };\n\n const picker = (\n <ColorPicker.Root ref={rootRef} {...rootProps} size={size} width={fullWidth ? \"100%\" : \"8.75rem\"} maxW=\"100%\">\n <ColorPicker.HiddenInput />\n <ColorPicker.Label srOnly>{name}</ColorPicker.Label>\n <ColorPicker.Control>\n <ColorPicker.Input readOnly={readOnly} onFocus={() => setOpen(false)} />\n <ColorPicker.Trigger />\n </ColorPicker.Control>\n <ColorPicker.Positioner>\n <ColorPicker.Content ref={contentRef} onBlur={handleBlur}>\n <ColorPicker.Area />\n <ColorPicker.Sliders />\n <ColorPicker.SwatchGroup>\n <ColorPicker.SwatchTrigger value={value}>\n <ColorPicker.Swatch value={value} />\n </ColorPicker.SwatchTrigger>\n </ColorPicker.SwatchGroup>\n </ColorPicker.Content>\n </ColorPicker.Positioner>\n </ColorPicker.Root>\n );\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {picker}\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {picker}\n </Flex>\n )}\n </Box>\n );\n};\n","import { Box, Flex, Input } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface DateInputProps {\n id: string;\n defaultValue: string;\n name: string;\n min?: string;\n max?: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const DateInput = (props: DateInputProps) => {\n const {\n id,\n defaultValue,\n name,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n type=\"date\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n min={min}\n max={max}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"8.75rem\"\n size={size}\n type=\"date\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n min={min}\n max={max}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n )}\n </Box>\n );\n};\n","import type { FileUploadValue } from \"../param-editor.types\";\n\nexport type FileUploadSummaryState = \"empty\" | \"queued\" | \"uploading\" | \"complete\" | \"error\";\n\nconst valueId = (file: File, index: number) =>\n `${file.name}-${file.size.toString()}-${file.lastModified.toString()}-${index.toString()}`;\n\nexport const createFileUploadValues = (\n files: File[],\n existing: FileUploadValue[],\n multiple: boolean,\n): FileUploadValue[] => {\n const offset = multiple ? existing.length : 0;\n const selected = files.map((file, index) => ({\n id: valueId(file, offset + index),\n file,\n status: \"queued\" as const,\n }));\n\n return multiple ? [...existing, ...selected] : selected.slice(0, 1);\n};\n\nexport const getFileUploadSummary = (values: FileUploadValue[]) => {\n const states: FileUploadSummaryState[] = [\"uploading\", \"error\", \"queued\", \"complete\"];\n const state = states.find((candidate) => values.some((value) => value.status === candidate)) ?? \"empty\";\n const count = state === \"empty\" ? 0 : values.filter((value) => value.status === state).length;\n\n return { state, count };\n};\n","import { Button, Flex, Icon, Spinner, Stack, Text, Wrap } from \"@chakra-ui/react\";\nimport { CircleAlert, CircleCheck, Clock3, Paperclip } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { AttachmentChip } from \"@/components/overlays/attachment-chip\";\nimport type { FileUploadValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { createFileUploadValues, getFileUploadSummary } from \"./file-upload-value\";\n\ninterface FileUploadInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: FileUploadValue[];\n accept?: string;\n multiple?: boolean;\n uploadLabel?: string;\n onChange: (id: string, value: FileUploadValue[]) => void;\n readOnly?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nconst UploadStatus = (props: { values: FileUploadValue[] }) => {\n const { values } = props;\n const summary = getFileUploadSummary(values);\n if (summary.state === \"empty\") return null;\n\n const noun = summary.count === 1 ? \"file\" : \"files\";\n const labels = {\n queued: `${summary.count.toString()} ${noun} queued`,\n uploading: `Uploading ${summary.count.toString()} ${noun}`,\n complete: `${summary.count.toString()} ${noun} uploaded`,\n error: `${summary.count.toString()} ${noun} failed`,\n empty: \"\",\n };\n const icon =\n summary.state === \"uploading\" ? (\n <Spinner boxSize=\"12px\" borderWidth=\"1px\" />\n ) : (\n <Icon\n as={summary.state === \"error\" ? CircleAlert : summary.state === \"complete\" ? CircleCheck : Clock3}\n boxSize=\"12px\"\n />\n );\n\n return (\n <Flex alignItems=\"center\" gap=\"2xs\" color={summary.state === \"error\" ? \"fg.error\" : \"fg.muted\"}>\n {icon}\n <Text textStyle=\"label/XS/medium\">{labels[summary.state]}</Text>\n </Flex>\n );\n};\n\nconst UploadQueue = (props: { readOnly?: boolean; values: FileUploadValue[]; onRemove: (valueId: string) => void }) => {\n const { readOnly, values, onRemove } = props;\n if (values.length === 0) return null;\n\n return (\n <Stack gap=\"2xs\" minW=\"0\">\n <UploadStatus values={values} />\n <Wrap gap=\"2xs\">\n {values.map((value) => (\n <AttachmentChip\n key={value.id}\n file={value.file}\n disabled={readOnly}\n removeLabel={`Remove ${value.file.name}`}\n onRemove={() => onRemove(value.id)}\n />\n ))}\n </Wrap>\n </Stack>\n );\n};\n\nexport const FileUploadInput = (props: FileUploadInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n accept,\n multiple = true,\n uploadLabel = \"Attach files\",\n onChange,\n readOnly,\n presentation = \"stacked\",\n } = props;\n const [values, setValues] = useState(defaultValue);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setValues(defaultValue);\n }, [defaultValue]);\n\n const commit = (next: FileUploadValue[]) => {\n setValues(next);\n onChange(id, next);\n };\n const remove = (valueId: string) => commit(values.filter((value) => value.id !== valueId));\n const button = readOnly ? null : (\n <Button size=\"xs\" variant=\"ghost\" flexShrink={0} onClick={() => inputRef.current?.click()}>\n <Icon as={Paperclip} boxSize=\"14px\" />\n {uploadLabel}\n </Button>\n );\n const input = (\n <input\n ref={inputRef}\n hidden\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={(event) => {\n commit(createFileUploadValues(Array.from(event.currentTarget.files ?? []), values, multiple));\n event.currentTarget.value = \"\";\n }}\n />\n );\n\n if (presentation === \"horizontal\") {\n return (\n <Flex alignItems=\"center\" gap=\"sm\" minW=\"0\" width=\"full\">\n {input}\n {button}\n <UploadQueue readOnly={readOnly} values={values} onRemove={remove} />\n </Flex>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <Stack alignItems=\"start\" gap=\"xs\" minW=\"0\">\n {input}\n {button}\n <UploadQueue readOnly={readOnly} values={values} onRemove={remove} />\n </Stack>\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface HorizontalTextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n size?: \"xs\" | \"sm\";\n}\n\nexport const HorizontalTextInput = (props: HorizontalTextInputProps) => {\n const { id, defaultValue, name, onChange, description, readOnly, hideLabel = false, size = \"sm\" } = props;\n const [value, setValue] = useState(defaultValue);\n const [isExpanded, setIsExpanded] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n const handleClick = () => {\n if (!readOnly) {\n setIsExpanded(true);\n }\n };\n\n const handleBlur = () => {\n // Only collapse if the value is empty\n if (value.trim().length === 0) {\n setIsExpanded(false);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n // Allow users to collapse with Escape key\n if (e.key === \"Escape\") {\n setIsExpanded(false);\n e.preventDefault();\n }\n };\n\n if (readOnly) {\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <ParamEditorReadOnlyValue preserveWhitespace>{value}</ParamEditorReadOnlyValue>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Box position=\"relative\" minHeight=\"2rem\">\n {!isExpanded ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" height=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onClick={handleClick}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n boxShadow=\"none\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {!hideLabel && (\n <Box mb=\"sm\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Textarea\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n rows={3}\n resize=\"vertical\"\n autoFocus\n />\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","import { Box, Flex, Input, Stack } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { LazyMarkdownEditor } from \"@/components/rich-text\";\nimport { ParamEditorFieldLabel } from \"../param-editor-field-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface MarkdownInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n placeholder?: string;\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nexport const MarkdownInput = (props: MarkdownInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n placeholder,\n onChange,\n readOnly,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [isExpanded, setIsExpanded] = useState(false);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commit = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const editor = (editorValue: string) => (\n <Box borderWidth=\"1px\" borderColor=\"border\" borderRadius=\"xs\" minH=\"7rem\" minW=\"0\" overflow=\"visible\" width=\"full\">\n <LazyMarkdownEditor\n defaultState={editorValue}\n isEditable={!readOnly}\n placeholder={placeholder}\n scrollable={false}\n onChange={commit}\n />\n </Box>\n );\n const label = <ParamEditorFieldLabel name={name} description={description} />;\n\n if (presentation === \"horizontal\") {\n if (readOnly) {\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Flex alignItems=\"center\" minHeight=\"2rem\">\n <ParamEditorReadOnlyValue preserveWhitespace>{value}</ParamEditorReadOnlyValue>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Box position=\"relative\" minHeight=\"2rem\">\n {!isExpanded ? (\n <Input\n className=\"nodrag\"\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={name}\n value={value}\n onClick={() => {\n setIsExpanded(true);\n }}\n onChange={(event) => commit(event.target.value)}\n />\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\" }}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n setIsExpanded(false);\n event.preventDefault();\n }\n }}\n >\n {editor(value)}\n </Box>\n )}\n </Box>\n </Box>\n );\n }\n\n return (\n <Stack gap=\"xs\" minW=\"0\" width=\"full\">\n {label}\n {editor(value)}\n </Stack>\n );\n};\n","import { Box, Flex, type NumberInputValueChangeDetails, type SliderValueChangeDetails } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { NumberInputField, NumberInputRoot } from \"@/components/primitives/number-input\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface NumberInputProps {\n id: string;\n defaultValue: number;\n name: string;\n step?: number;\n min?: number;\n max?: number;\n onChange: (id: string, value: number) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n hideSlider?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const NumberInput = (props: NumberInputProps) => {\n const {\n id,\n defaultValue,\n name,\n step = 1,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n hideSlider = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const isRange = min !== undefined && max !== undefined;\n const showSlider = isRange && !hideSlider;\n const useFullWidthLayout = fullWidth && !showSlider;\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const scheduleChange = (nextValue: number) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {useFullWidthLayout ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <NumberInputRoot\n disabled={readOnly}\n width=\"100%\"\n size={size}\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <NumberInputRoot\n disabled={readOnly}\n width=\"5rem\"\n size={size}\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Flex>\n )}\n {showSlider && (\n <Slider\n disabled={readOnly}\n value={[value]}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: SliderValueChangeDetails) => {\n setValue(details.value[0]);\n }}\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n onChange(id, details.value[0]);\n }}\n />\n )}\n </Box>\n );\n};\n","/** Clamp `value` into the inclusive range, tolerating an inverted min/max. */\nexport const clampToRange = (value: number, min: number, max: number) => {\n const lower = Math.min(min, max);\n const upper = Math.max(min, max);\n if (value < lower) return lower;\n if (value > upper) return upper;\n return value;\n};\n\n/** Snap `value` to the nearest multiple of `step` measured from `origin`. */\nexport const snapToStep = (value: number, step: number, origin = 0) => {\n if (!(step > 0)) return value;\n const steps = Math.round((value - origin) / step);\n return origin + steps * step;\n};\n\n/** Format a number with an optional unit suffix, trimming float noise. */\nexport const formatUnitValue = (value: number, unit?: string) => {\n const rounded = Number.isInteger(value) ? `${value}` : `${Number(value.toFixed(3))}`;\n return unit ? `${rounded}${unit}` : rounded;\n};\n","import type { RangeValue } from \"../param-editor.types\";\nimport { clampToRange, snapToStep } from \"./numeric-value\";\n\n/** Order both handles and clamp (and optionally snap) them into `[min, max]`. */\nexport const normalizeRange = (value: RangeValue, min: number, max: number, step?: number): RangeValue => {\n const first = clampToRange(value[0], min, max);\n const second = clampToRange(value[1], min, max);\n let start = Math.min(first, second);\n let end = Math.max(first, second);\n if (step && step > 0) {\n start = clampToRange(snapToStep(start, step, min), min, max);\n end = clampToRange(snapToStep(end, step, min), min, max);\n }\n return [start, end];\n};\n\n/** Replace a single handle, keeping the pair ordered. */\nexport const updateRangeHandle = (\n value: RangeValue,\n index: 0 | 1,\n next: number,\n min: number,\n max: number,\n step?: number,\n): RangeValue => {\n const draft: RangeValue = index === 0 ? [next, value[1]] : [value[0], next];\n return normalizeRange(draft, min, max, step);\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\n\ninterface SliderMarksProps {\n count?: number;\n}\n\n// Evenly-spaced tick marks rendered under a slider track. Purely decorative.\nexport const SliderMarks = (props: SliderMarksProps) => {\n const { count } = props;\n if (!count || count < 2) return null;\n const positions = Array.from({ length: count }, (_, index) => index / (count - 1));\n\n return (\n <Flex justifyContent=\"space-between\" mt=\"2xs\" aria-hidden=\"true\">\n {positions.map((position) => (\n <Box key={position} width=\"1px\" height=\"0.375rem\" bg=\"border.subtle\" />\n ))}\n </Flex>\n );\n};\n","import { Box, Button, Flex, Icon, Popover, type SliderValueChangeDetails, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport type { RangeValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { formatUnitValue } from \"./numeric-value\";\nimport { normalizeRange } from \"./range-value\";\nimport { SliderMarks } from \"./slider-marks\";\n\ninterface RangeInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: RangeValue;\n min: number;\n max: number;\n step?: number;\n unit?: string;\n markerCount?: number;\n onChange: (id: string, value: RangeValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const RangeInput = (props: RangeInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n min,\n max,\n step = 1,\n unit,\n markerCount,\n onChange,\n readOnly,\n fullWidth,\n presentation = \"stacked\",\n } = props;\n\n const [value, setValue] = useState<RangeValue>(() => normalizeRange(defaultValue, min, max, step));\n\n useEffect(() => {\n setValue(normalizeRange(defaultValue, min, max, step));\n }, [defaultValue, min, max, step]);\n\n const label = `${formatUnitValue(value[0], unit)} – ${formatUnitValue(value[1], unit)}`;\n const horizontal = presentation === \"horizontal\";\n\n if (readOnly) {\n if (horizontal) {\n return <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>;\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const trailing = (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n );\n const slider = (\n <Box>\n <Slider\n size=\"sm\"\n value={value}\n min={min}\n max={max}\n step={step}\n onValueChange={(details: SliderValueChangeDetails) =>\n setValue(normalizeRange(details.value as RangeValue, min, max, step))\n }\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n const next = normalizeRange(details.value as RangeValue, min, max, step);\n setValue(next);\n onChange(id, next);\n }}\n />\n <SliderMarks count={markerCount} />\n </Box>\n );\n\n if (horizontal) {\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\", offset: { mainAxis: 4 } }}>\n <Popover.Trigger asChild>\n <Button size=\"xs\" variant=\"ghost\" aria-label={`${name}: ${label}`}>\n {label}\n <Icon as={ChevronDown} boxSize=\"14px\" />\n </Button>\n </Popover.Trigger>\n <Popover.Positioner>\n <Popover.Content width=\"60\" padding=\"sm\" background=\"bg\">\n <Stack gap=\"xs\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\">\n <Text textStyle=\"label/S/medium\">{name}</Text>\n {trailing}\n </Flex>\n {slider}\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Popover.Root>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\" labelTrailing={trailing}>\n {slider}\n </ParamEditorControlItem>\n );\n};\n","import { Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport { Chip } from \"../../primitives/chip\";\nimport { getIconComponent } from \"../../primitives/icon-options\";\nimport { ResourceBadge } from \"../../primitives/resource-badge\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\n\nconst optionIcon = (option: ResourceOption) => (\n <Icon as={getIconComponent(option.icon)} boxSize=\"14px\" color={option.color ? `${option.color}.500` : \"fg.muted\"} />\n);\n\nconst openExternal = (href: string) => window.open(href, \"_blank\", \"noreferrer\");\n\nconst copyToClipboard = (text: string) => void navigator.clipboard?.writeText(text).catch(() => undefined);\n\ninterface ResourceChipProps {\n option: ResourceOption;\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: () => void;\n}\n\n// A chip opens its external href in a new tab, opens its internal ref via the host, or\n// copies its text to the clipboard — whichever the option declares.\nexport const ResourceChip = (props: ResourceChipProps) => {\n const { option, onOpenResource, onRemove } = props;\n const isReference = Boolean(option.href || option.ref || option.copyText);\n\n if (!isReference) {\n return <Chip>{option.name}</Chip>;\n }\n\n const handleSelect =\n option.href && option.href.length > 0\n ? () => openExternal(option.href!)\n : option.ref && onOpenResource\n ? () => onOpenResource(option.ref!)\n : option.copyText\n ? () => copyToClipboard(option.copyText!)\n : undefined;\n\n return (\n <ResourceBadge\n fileName={option.name}\n icon={optionIcon(option)}\n size=\"md\"\n onSelect={handleSelect ? () => handleSelect() : undefined}\n onRemove={onRemove ? () => onRemove() : undefined}\n />\n );\n};\n\ninterface ResourceChipListProps {\n options: ResourceOption[];\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: (optionId: string) => void;\n emptyText?: string;\n}\n\nexport const ResourceChipList = (props: ResourceChipListProps) => {\n const { options, onOpenResource, onRemove, emptyText } = props;\n\n if (options.length === 0) {\n return (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n {emptyText ?? \"None\"}\n </Text>\n );\n }\n\n return (\n <Wrap gap=\"2xs\">\n {options.map((option) => (\n <ResourceChip\n key={option.id}\n option={option}\n onOpenResource={onOpenResource}\n onRemove={onRemove ? () => onRemove(option.id) : undefined}\n />\n ))}\n </Wrap>\n );\n};\n","import { Box, Flex, Icon, Stack } from \"@chakra-ui/react\";\nimport { Plus } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { getIconComponent } from \"../../primitives/icon-options\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ResourceChipList } from \"./resource-input-chips\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface ResourceInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string | string[];\n options: ResourceOption[];\n onChange: (id: string, value: string | string[]) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n editable?: boolean;\n multiSelect?: boolean;\n placeholder?: string;\n emptyText?: string;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nconst toIds = (value: string | string[]) => {\n if (Array.isArray(value)) return value;\n return value ? [value] : [];\n};\n\nconst resolveOptions = (ids: string[], options: ResourceOption[]) =>\n ids\n .map((id) => options.find((option) => option.id === id))\n .filter((option): option is ResourceOption => Boolean(option));\n\ninterface FieldShellProps {\n fullWidth: boolean;\n label: ReactNode;\n control: ReactNode;\n presentation: \"stacked\" | \"horizontal\";\n}\n\nconst FieldShell = (props: FieldShellProps) => {\n const { fullWidth, label, control, presentation } = props;\n\n if (presentation === \"horizontal\") {\n return (\n <Stack gap=\"2xs\" alignItems=\"start\" minW=\"0\">\n {label}\n {control}\n </Stack>\n );\n }\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">{label}</Box>\n {control}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {control}\n </Flex>\n );\n};\n\ninterface ResourceSelectMenuProps {\n triggerLabel: ReactNode;\n options: ResourceOption[];\n selectedIds: string[];\n multiSelect: boolean;\n triggerVariant?: \"button\" | \"icon\";\n triggerAriaLabel?: string;\n size?: \"xs\" | \"sm\";\n onToggle: (optionId: string) => void;\n}\n\n// Resource params share the editor's one dropdown, so a ticket property and a\n// command param cannot drift into two looks.\nconst ResourceSelectMenu = (props: ResourceSelectMenuProps) => {\n const { triggerLabel, options, selectedIds, multiSelect, triggerVariant, triggerAriaLabel, size, onToggle } = props;\n\n return (\n <SelectionMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n triggerVariant={triggerVariant}\n triggerAriaLabel={triggerAriaLabel}\n size={size}\n onToggle={onToggle}\n />\n );\n};\n\nexport const ResourceInput = (props: ResourceInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n onChange,\n onOpenResource,\n readOnly,\n editable = false,\n multiSelect = false,\n placeholder,\n emptyText,\n fullWidth = false,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const emitChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n onChange(id, next);\n };\n\n // Debounce multi-select toggles so a burst of menu clicks makes one update call.\n const scheduleChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, next), 540);\n };\n\n const selectedIds = toIds(value);\n const selectedOptions = resolveOptions(selectedIds, options);\n const interactive = editable && !readOnly;\n\n const label = <ParamEditorLabel name={name} description={description} compact={presentation === \"horizontal\"} />;\n\n if (!interactive) {\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n presentation={presentation}\n control={<ResourceChipList options={selectedOptions} onOpenResource={onOpenResource} emptyText={emptyText} />}\n />\n );\n }\n\n const toggleOption = (optionId: string) => {\n if (multiSelect) {\n const next = selectedIds.includes(optionId)\n ? selectedIds.filter((entry) => entry !== optionId)\n : [...selectedIds, optionId];\n setValue(next);\n scheduleChange(next);\n return;\n }\n // Re-picking the selected option clears it.\n const next = selectedIds.includes(optionId) ? \"\" : optionId;\n setValue(next);\n emitChange(next);\n };\n\n const removeOption = (optionId: string) => {\n const next = selectedIds.filter((entry) => entry !== optionId);\n setValue(next);\n scheduleChange(next);\n };\n\n if (multiSelect) {\n const control = (\n <Flex gap=\"2xs\" alignItems=\"center\" flexWrap=\"wrap\" minW=\"0\">\n {selectedOptions.length > 0 ? (\n <ResourceChipList\n options={selectedOptions}\n onOpenResource={onOpenResource}\n onRemove={removeOption}\n emptyText={emptyText}\n />\n ) : null}\n <ResourceSelectMenu\n triggerLabel={<Icon as={Plus} boxSize=\"12px\" />}\n options={options}\n selectedIds={selectedIds}\n multiSelect\n triggerVariant=\"icon\"\n triggerAriaLabel={placeholder ?? `Add ${name}`}\n size={size}\n onToggle={toggleOption}\n />\n </Flex>\n );\n\n return <FieldShell fullWidth={fullWidth} label={label} control={control} presentation={presentation} />;\n }\n\n const selected = selectedOptions[0];\n const triggerLabel = selected ? (\n <Flex align=\"center\" gap=\"2xs\" minW=\"0\">\n <Icon\n as={getIconComponent(selected.icon)}\n boxSize=\"14px\"\n color={selected.color ? `${selected.color}.500` : \"fg.muted\"}\n />\n {selected.name}\n </Flex>\n ) : (\n (placeholder ?? \"Select\")\n );\n\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n presentation={presentation}\n control={\n <ResourceSelectMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={false}\n size={size}\n onToggle={toggleOption}\n />\n }\n />\n );\n};\n","import { Box, Button, Group } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SegmentedOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface SegmentedInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n options: SegmentedOption[];\n variant?: \"default\" | \"dots\";\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const SegmentedInput = (props: SegmentedInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n variant = \"default\",\n onChange,\n readOnly,\n fullWidth,\n presentation = \"stacked\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const selectedName = options.find((option) => option.id === value)?.name ?? value;\n const horizontal = presentation === \"horizontal\";\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} hideLabel={horizontal} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{selectedName}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n if (horizontal) {\n return (\n <SelectionMenu\n triggerLabel={selectedName}\n options={options}\n selectedIds={[value]}\n multiSelect={false}\n onToggle={select}\n />\n );\n }\n\n const group = (\n <Group\n attached\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {options.map((option) => {\n const selected = option.id === value;\n return (\n <Button\n key={option.id}\n flex=\"1\"\n size=\"xs\"\n variant={selected ? \"subtle\" : \"ghost\"}\n borderRadius=\"0\"\n aria-pressed={selected}\n onClick={() => select(option.id)}\n >\n {variant === \"dots\" ? (\n <Box boxSize=\"0.5rem\" borderRadius=\"full\" bg={option.indicatorColor ?? \"fg.muted\"} mr=\"1\" />\n ) : null}\n {option.name}\n </Button>\n );\n })}\n </Group>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {group}\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SelectionGroup } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { SelectionMenu, type SelectionMenuOption, selectionOptionIcon } from \"./selection-menu\";\n\ninterface SelectionInputProps {\n id: string;\n defaultValue: string | string[];\n name: string;\n options: SelectionMenuOption[];\n onChange: (id: string, value: string | string[]) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n multiSelect?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n placeholder?: string;\n fullWidth?: boolean;\n /** Re-picking the selected option clears it. */\n clearable?: boolean;\n /** Inert, but still rendered as a control. */\n disabled?: boolean;\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyText?: string;\n group?: SelectionGroup;\n size?: \"xs\" | \"sm\";\n}\n\nexport const SelectionInput = (props: SelectionInputProps) => {\n const {\n id,\n defaultValue,\n name,\n options,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n multiSelect = false,\n placeholder,\n fullWidth = false,\n clearable = false,\n disabled = false,\n searchable = false,\n searchPlaceholder,\n emptyText,\n group,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [groupValue, setGroupValue] = useState(group?.defaultValue ?? \"\");\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n setGroupValue(group?.defaultValue ?? \"\");\n }, [group?.defaultValue]);\n\n const selectedIds = multiSelect\n ? Array.isArray(value)\n ? value\n : []\n : typeof value === \"string\" && value\n ? [value]\n : [];\n\n const getDisplayText = () => {\n const names = selectedIds\n .map((selectedId) => options.find((option) => option.id === selectedId)?.name)\n .filter((optionName): optionName is string => Boolean(optionName));\n\n if (names.length === 0) return placeholder || \"Select\";\n if (names.length <= 3) return names.join(\", \");\n return `${names.slice(0, 3).join(\", \")} +${(names.length - 3).toString()}`;\n };\n\n const commit = (nextValue: string | string[]) => {\n setValue(nextValue);\n onChange(id, nextValue);\n };\n\n const handleToggle = (optionId: string) => {\n if (!multiSelect) {\n // Re-picking the selected option clears it, so a single-select needs no\n // extra \"none\" row cluttering the list.\n commit(clearable && selectedIds.includes(optionId) ? \"\" : optionId);\n return;\n }\n commit(\n selectedIds.includes(optionId) ? selectedIds.filter((item) => item !== optionId) : [...selectedIds, optionId],\n );\n };\n\n const handleGroupChange = (optionId: string) => {\n if (!group || optionId === groupValue) return;\n setGroupValue(optionId);\n onChange(group.id, optionId);\n };\n\n // Only a lone selection can colour the trigger; a multi-pick has no single icon.\n const triggerOption = selectedIds.length === 1 ? options.find((option) => option.id === selectedIds[0]) : undefined;\n const label = !hideLabel ? <ParamEditorLabel name={name} description={description} /> : null;\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{getDisplayText()}</ParamEditorReadOnlyValue>;\n\n if (fullWidth)\n return (\n <Box>\n {label ? <Box mb=\"xs\">{label}</Box> : null}\n {valueElement}\n </Box>\n );\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n const menu = (\n <SelectionMenu\n triggerLabel={\n <>\n {selectionOptionIcon(triggerOption, \"14px\")}\n {getDisplayText()}\n </>\n }\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n disabled={disabled}\n searchable={searchable}\n searchPlaceholder={searchPlaceholder}\n emptyText={emptyText}\n group={group ? { ...group, defaultValue: groupValue } : undefined}\n fullWidth={fullWidth}\n size={size}\n onToggle={handleToggle}\n onGroupChange={handleGroupChange}\n />\n );\n\n if (fullWidth)\n return (\n <Box>\n {label ? <Box mb=\"xs\">{label}</Box> : null}\n {menu}\n </Box>\n );\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {menu}\n </Flex>\n </Box>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface TextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n singleLine?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const TextInput = (props: TextInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n singleLine = true,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n // Leaving the field is a commit: a form submitted inside the debounce window\n // would otherwise send the value as it was before the last keystrokes.\n const handleBlur = () => {\n if (!timeoutRef.current) return;\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n onChange(id, value);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue preserveWhitespace={!singleLine}>{value}</ParamEditorReadOnlyValue>;\n\n if (singleLine && !fullWidth) {\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n {singleLine && !fullWidth ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {singleLine ? (\n <Input\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n ) : (\n <Textarea\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n rows={3}\n resize=\"vertical\"\n />\n )}\n </Box>\n )}\n </Box>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorInlineGroupProps extends FlexProps {}\n\n// A horizontal row of controls that share a line (e.g. paired x/y inputs).\nexport const ParamEditorInlineGroup = (props: ParamEditorInlineGroupProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import type { VectorValue } from \"../param-editor.types\";\nimport { clampToRange } from \"./numeric-value\";\n\nexport interface VectorBounds {\n min?: number;\n max?: number;\n}\n\nconst clampAxis = (value: number, bounds: VectorBounds) => {\n if (bounds.min === undefined && bounds.max === undefined) return value;\n const min = bounds.min ?? Number.NEGATIVE_INFINITY;\n const max = bounds.max ?? Number.POSITIVE_INFINITY;\n return clampToRange(value, min, max);\n};\n\n/** Update a single axis without dropping the other, clamping into optional bounds. */\nexport const updateVectorAxis = (\n value: VectorValue,\n axis: \"x\" | \"y\",\n next: number,\n bounds: VectorBounds = {},\n): VectorValue => {\n const clamped = clampAxis(next, bounds);\n return axis === \"x\" ? { x: clamped, y: value.y } : { x: value.x, y: clamped };\n};\n","import { Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { VectorValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorInlineGroup } from \"../param-editor-inline-group\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { NumberInput } from \"./number-input\";\nimport { updateVectorAxis } from \"./vector-value\";\n\ninterface VectorInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: VectorValue;\n xLabel?: string;\n yLabel?: string;\n min?: number;\n max?: number;\n step?: number;\n onChange: (id: string, value: VectorValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\ninterface VectorAxisFieldProps {\n label: string;\n fieldId: string;\n value: number;\n min?: number;\n max?: number;\n step?: number;\n onCommit: (value: number) => void;\n}\n\n// A single axis: the shared NumberInput (label/slider hidden) prefixed with its axis letter.\nconst VectorAxisField = (props: VectorAxisFieldProps) => {\n const { label, fieldId, value, min, max, step, onCommit } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"1\" flexShrink={0}>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" width=\"1rem\" flexShrink={0}>\n {label}\n </Text>\n <NumberInput\n id={fieldId}\n name={label}\n description=\"\"\n defaultValue={value}\n min={min}\n max={max}\n step={step}\n hideLabel\n hideSlider\n onChange={(_, next) => onCommit(next)}\n />\n </Flex>\n );\n};\n\nexport const VectorInput = (props: VectorInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n xLabel = \"X\",\n yLabel = \"Y\",\n min,\n max,\n step = 1,\n onChange,\n readOnly,\n } = props;\n const [value, setValue] = useState<VectorValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commitAxis = (axis: \"x\" | \"y\", next: number) => {\n const updated = updateVectorAxis(value, axis, next, { min, max });\n setValue(updated);\n onChange(id, updated);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description}>\n <ParamEditorReadOnlyValue>{`${value.x}, ${value.y}`}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <ParamEditorInlineGroup>\n <VectorAxisField\n label={xLabel}\n fieldId={`${id}.x`}\n value={value.x}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"x\", next)}\n />\n <VectorAxisField\n label={yLabel}\n fieldId={`${id}.y`}\n value={value.y}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"y\", next)}\n />\n </ParamEditorInlineGroup>\n </ParamEditorControlItem>\n );\n};\n","import type { ParamValueMap } from \"./param-editor.types\";\n\nexport const resolveParamValue = <T>(defaultValues: ParamValueMap, paramId: string, fallback: T) =>\n defaultValues[paramId] === undefined ? fallback : (defaultValues[paramId] as T);\n","import { ActionInput } from \"./inputs/action-input\";\nimport { AnchorGridInput } from \"./inputs/anchor-grid-input\";\nimport { FileUploadInput } from \"./inputs/file-upload-input\";\nimport { RangeInput } from \"./inputs/range-input\";\nimport { SegmentedInput } from \"./inputs/segmented-input\";\nimport { VectorInput } from \"./inputs/vector-input\";\nimport type { Param, ParamValue, ParamValueMap } from \"./param-editor.types\";\nimport { resolveParamValue } from \"./resolve-param-value\";\n\ntype AdvancedParam = Extract<\n Param,\n { type: \"range\" | \"segmented\" | \"actions\" | \"anchorGrid\" | \"vector\" | \"fileUpload\" }\n>;\n\ninterface ParamEditorAdvancedFieldProps {\n param: AdvancedParam;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation: \"stacked\" | \"horizontal\";\n}\n\nexport const ParamEditorAdvancedField = (props: ParamEditorAdvancedFieldProps) => {\n const { param, defaultValues, onChange, readOnly, fullWidth, presentation } = props;\n const common = {\n id: param.id,\n readOnly: readOnly || param.readOnly,\n onChange,\n fullWidth: presentation === \"horizontal\" ? false : fullWidth,\n };\n\n switch (param.type) {\n case \"range\":\n return (\n <RangeInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n unit={param.unit}\n markerCount={param.markerCount}\n presentation={presentation}\n />\n );\n case \"segmented\":\n return (\n <SegmentedInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n variant={param.variant}\n presentation={presentation}\n />\n );\n case \"actions\":\n return (\n <ActionInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n presentation={presentation}\n />\n );\n case \"anchorGrid\":\n if (presentation === \"horizontal\") return null;\n return (\n <AnchorGridInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n />\n );\n case \"vector\":\n return (\n <VectorInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n xLabel={param.xLabel}\n yLabel={param.yLabel}\n min={param.min}\n max={param.max}\n step={param.step}\n />\n );\n case \"fileUpload\":\n return (\n <FileUploadInput\n id={param.id}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n accept={param.accept}\n multiple={param.multiple}\n uploadLabel={param.uploadLabel}\n readOnly={common.readOnly}\n presentation={presentation}\n onChange={onChange}\n />\n );\n }\n};\n","import type { Param } from \"./param-editor.types\";\n\nexport const isParamEditorRichControl = (param: Param) => param.type === \"fileUpload\";\n\nexport const isParamEditorHorizontalControl = (param: Param) => param.type !== \"anchorGrid\";\n","import { Badge, HStack, Image } from \"@chakra-ui/react\";\nimport type { Param } from \"./param-editor.types\";\nimport { ParamEditorControlItem } from \"./param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\n\ninterface ParamEditorReadOnlyFieldProps {\n param: Extract<Param, { type: \"readOnly\" }>;\n fullWidth?: boolean;\n}\n\nconst formatPrimitive = (value: string | number | boolean | null) => {\n if (value === null || value === \"\") return \"Not provided\";\n return String(value);\n};\n\nconst ReadOnlyContent = (props: Pick<ParamEditorReadOnlyFieldProps[\"param\"], \"value\">) => {\n const { value } = props;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <ParamEditorReadOnlyValue color=\"fg.muted\">None</ParamEditorReadOnlyValue>;\n }\n\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {value.map((item, index) => (\n <Badge key={`${String(item)}-${index}`} variant=\"subtle\" colorPalette=\"gray\">\n {formatPrimitive(item)}\n </Badge>\n ))}\n </HStack>\n );\n }\n\n if (typeof value === \"object\" && value !== null) {\n const images = value.type === \"image\" ? [{ src: value.src, alt: value.alt }] : value.images;\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {images.map((image) => (\n <Image\n key={`${image.src}-${image.alt}`}\n src={image.src}\n alt={image.alt}\n width=\"96px\"\n height=\"72px\"\n borderRadius=\"sm\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n objectFit=\"cover\"\n />\n ))}\n </HStack>\n );\n }\n\n if (typeof value === \"boolean\") {\n return <ParamEditorReadOnlyValue>{formatPrimitive(value)}</ParamEditorReadOnlyValue>;\n }\n\n return (\n <ParamEditorReadOnlyValue color={value === null || value === \"\" ? \"fg.muted\" : \"fg\"}>\n {formatPrimitive(value)}\n </ParamEditorReadOnlyValue>\n );\n};\n\nexport const ParamEditorReadOnlyField = (props: ParamEditorReadOnlyFieldProps) => {\n const { param, fullWidth } = props;\n\n return (\n <ParamEditorControlItem name={param.name} description={param.description} fullWidth={fullWidth}>\n <ReadOnlyContent value={param.value} />\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { BooleanInput } from \"./inputs/boolean-input\";\nimport { ColorInput } from \"./inputs/color-input\";\nimport { DateInput } from \"./inputs/date-input\";\nimport { HorizontalTextInput } from \"./inputs/horizontal-text-input\";\nimport { MarkdownInput } from \"./inputs/markdown-input\";\nimport { NumberInput } from \"./inputs/number-input\";\nimport { ResourceInput } from \"./inputs/resource-input\";\nimport { SelectionInput } from \"./inputs/selection-input\";\nimport { TextInput } from \"./inputs/text-input\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorAdvancedField } from \"./param-editor-advanced-field\";\nimport { ParamEditorLabel } from \"./param-editor-label\";\nimport { isParamEditorRichControl } from \"./param-editor-presentation\";\nimport { ParamEditorReadOnlyField } from \"./param-editor-read-only-field\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\nimport { resolveParamValue } from \"./resolve-param-value\";\n\ninterface ParamEditorFieldProps {\n param: Param;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nconst PropertyField = (props: { param: Extract<Param, { type: \"property\" }>; fullWidth?: boolean }) => {\n const { param, fullWidth } = props;\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n </Box>\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Flex>\n );\n};\n\nexport const ParamEditorField = (props: ParamEditorFieldProps) => {\n const {\n param,\n defaultValues,\n onChange,\n onOpenResource,\n readOnly,\n fullWidth = false,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n const horizontal = presentation === \"horizontal\";\n const richControl = isParamEditorRichControl(param);\n const common = {\n id: param.id,\n readOnly: readOnly || param.readOnly,\n onChange,\n fullWidth: horizontal ? richControl : fullWidth,\n size,\n };\n\n switch (param.type) {\n case \"number\":\n return (\n <NumberInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n hideLabel={horizontal}\n hideSlider={horizontal}\n />\n );\n case \"boolean\":\n return (\n <BooleanInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel={horizontal}\n />\n );\n case \"text\":\n if (horizontal) {\n return (\n <HorizontalTextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel\n />\n );\n }\n return (\n <TextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n singleLine={param.singleLine}\n />\n );\n case \"markdown\":\n return (\n <MarkdownInput\n id={param.id}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n placeholder={param.placeholder}\n readOnly={common.readOnly}\n presentation={presentation}\n size={size}\n onChange={onChange}\n />\n );\n case \"selection\":\n return (\n <SelectionInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n placeholder={param.placeholder}\n clearable={param.clearable}\n disabled={param.disabled}\n searchable={param.searchable}\n searchPlaceholder={param.searchPlaceholder}\n emptyText={param.emptyText}\n group={\n param.group\n ? {\n ...param.group,\n defaultValue: resolveParamValue(defaultValues, param.group.id, param.group.defaultValue),\n }\n : undefined\n }\n hideLabel={horizontal}\n />\n );\n case \"date\":\n return (\n <DateInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n hideLabel={horizontal}\n />\n );\n case \"color\":\n return (\n <ColorInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel={horizontal}\n />\n );\n case \"property\":\n return <PropertyField param={param} fullWidth={horizontal ? false : fullWidth} />;\n case \"readOnly\":\n return <ParamEditorReadOnlyField param={param} fullWidth={horizontal ? false : fullWidth} />;\n case \"resource\":\n return (\n <ResourceInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n editable={param.editable}\n placeholder={param.placeholder}\n emptyText={param.emptyText}\n onOpenResource={onOpenResource}\n presentation={presentation}\n />\n );\n case \"range\":\n case \"segmented\":\n case \"actions\":\n case \"anchorGrid\":\n case \"vector\":\n case \"fileUpload\":\n return (\n <ParamEditorAdvancedField\n param={param}\n defaultValues={defaultValues}\n onChange={onChange}\n readOnly={readOnly}\n fullWidth={fullWidth}\n presentation={presentation}\n />\n );\n default:\n return null;\n }\n};\n"],"names":["isImage","file","type","startsWith","formatSize","bytes","toString","Math","round","toFixed","AttachmentChip","props","$","_c","removeLabel","disabled","onRemove","previewUrl","setPreviewUrl","useState","t0","t1","url","URL","createObjectURL","revokeObjectURL","useEffect","t2","name","jsx","Text","t3","jsxs","Popover","placement","chakra","Image","t4","size","t5","t6","Symbol","for","X","t7","IconButton","t8","Badge","ParamEditorLabel","description","compact","undefined","Tooltip","Icon","CircleHelp","HStack","ParamEditorControlItem","hideLabel","fullWidth","orientation","labelTrailing","children","ParamEditorFieldLabel","label","header","Flex","Box","Chip","generatedGlyphStyles","GLYPH_RULE","glyphContent","Map","Array","from","matchAll","content","GLYPH_OPTICAL_SIZE","GLYPH_BASELINE_OFFSET","GlyphRoot","glyphStyles","fontSize","position","display","verticalAlign","flexShrink","boxSize","lineHeight","containerType","inset","fontFamily","fontStyle","fontWeight","textAlign","transform","createGlyphIcon","glyph","options","styles","get","scale","GlyphIcon","displayName","optionColors","value","icon","levelGlyph","optionIcons","Ban","Flag","Bug","Sparkles","BookOpen","Wrench","Zap","Feather","Scale","Layers","Star","Flame","Lightbulb","Shield","Eye","Timer","Tag","Code","Rocket","Heart","Bookmark","Target","Bell","Hash","Ticket","GitBranch","Bot","Puzzle","Workflow","Kanban","MessageSquare","Folder","FileText","History","Play","Terminal","Cpu","Users","Component","SquareKanban","GitCommitHorizontal","Inbox","ListChecks","Archive","Link","Settings","getIconComponent","iconOptions","normalizedName","replace","toLowerCase","find","Circle","Slider","React","forwardRef","ref","rest","ChakraSlider","borderColor","outline","boxShadow","selectionIndicator","multiSelect","selected","SquareCheck","Square","Check","selectionOptionIcon","option","color","SelectionMenu","triggerLabel","selectedIds","searchable","searchPlaceholder","emptyText","group","triggerVariant","triggerAriaLabel","onToggle","onGroupChange","Button","bg","ChevronDown","trigger","id","searchText","filter","Boolean","join","secondaryLabel","isDisabled","isSelected","includes","onSelect","map","items","selectedGroup","option_0","defaultValue","ListRow","SearchableMenu","option_1","selectedLabel","placeholder","selectedIcon","ariaLabel","length","showSearch","emptyState","Menu","item","t9","option_2","Portal","t10","ActionInput","onChange","readOnly","presentation","active","setActive","optionId","run","horizontal","selectedName","row","ANCHOR_GRID_VALUES","isAnchorGridValue","ParamEditorReadOnlyValue","boxProps","preserveWhitespace","AnchorGridInput","setValue","next","select","anchor","Grid","grid","BooleanInput","String","details","checked","Switch","ColorInput","open","setOpen","rootRef","useRef","contentRef","timeoutRef","nextColor","current","clearTimeout","setTimeout","scheduleChange","isInsidePicker","target","node","contains","handleOutsideInteraction","event","document","addEventListener","removeEventListener","newColor","handleChange","event_0","root","currentTarget","ownerDocument","activeElement","handleBlur","valueElement","t11","t12","parseColor","t13","t14","details_0","t15","onOpenChange","onFocusOutside","onInteractOutside","onBlur","onValueChange","rootProps","t16","t17","ColorPicker","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","picker","t28","DateInput","min","max","nextValue","newValue","Input","e","_temp","e_1","_temp2","e_0","key","blur","e_2","valueId","index","lastModified","createFileUploadValues","files","existing","multiple","offset","status","slice","getFileUploadSummary","values","state","candidate","some","count","UploadStatus","noun","summary","bb0","queued","uploading","complete","error","empty","labels","Spinner","CircleAlert","CircleCheck","Clock3","UploadQueue","Wrap","Stack","FileUploadInput","accept","uploadLabel","setValues","inputRef","commit","remove","click","Paperclip","button","input","HorizontalTextInput","isExpanded","setIsExpanded","handleClick","trim","preventDefault","handleKeyDown","Textarea","MarkdownInput","editorValue","LazyMarkdownEditor","editor","NumberInput","step","hideSlider","showSlider","useFullWidthLayout","NumberInputRoot","Number","isNaN","valueAsNumber","NumberInputField","next_0","details_1","details_2","clampToRange","lower","upper","snapToStep","origin","steps","formatUnitValue","unit","rounded","isInteger","normalizeRange","first","second","start","end","SliderMarks","_","positions","RangeInput","markerCount","trailing","slider","mainAxis","optionIcon","openExternal","href","window","copyToClipboard","text","navigator","clipboard","writeText","catch","ResourceChip","onOpenResource","copyText","handleSelect","ResourceBadge","ResourceChipList","toIds","isArray","resolveOptions","ids","FieldShell","control","ResourceSelectMenu","ResourceInput","editable","emitChange","selectedOptions","interactive","toggleOption","next_1","entry","next_2","removeOption","optionId_0","next_3","entry_0","Plus","SegmentedInput","variant","indicatorColor","Group","SelectionInput","clearable","groupValue","setGroupValue","names","selectedId","getDisplayText","handleToggle","handleGroupChange","T0","triggerOption","menu","optionName","TextInput","singleLine","e_3","ParamEditorInlineGroup","clampAxis","bounds","NEGATIVE_INFINITY","POSITIVE_INFINITY","updateVectorAxis","axis","clamped","x","y","VectorAxisField","fieldId","onCommit","VectorInput","xLabel","yLabel","updated","commitAxis","resolveParamValue","defaultValues","paramId","fallback","ParamEditorAdvancedField","param","common","isParamEditorRichControl","isParamEditorHorizontalControl","formatPrimitive","ReadOnlyContent","alt","images","src","ParamEditorReadOnlyField","image","PropertyField","ParamEditorField","richControl"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCSTC,KAAa,8DAEbC,KAAe,IAAIC,IACvBC,MAAMC,KAAKL,GAAqBM,SAASL,EAAU,GAAG,CAAC,CAAA,EAAGzC,GAAM+C,CAAO,MAAM,CAAC/C,GAAM+C,CAAO,CAAC,CAC9F,GAmBMC,KAAqB,MACrBC,KAAwB,WAExBC,KAAY3C,GAAO,MAAM,GAEzB4C,KAAcA,CAACJ,GAAiBK,OAAsB;AAAA,EAC1DC,UAAU;AAAA,EACVC,SAAS;AAAA,EACTC,eAAe;AAAA,EACfC,YAAY;AAAA,EACZC,SAAS;AAAA,EACTC,YAAY;AAAA,EACZC,eAAe;AAAA,EACf,aAAa;AAAA,IACXZ,SAAAA;AAAAA,IACAK,UAAAA;AAAAA,IACAC,UAAU;AAAA,IACVO,OAAO;AAAA,IACPC,YAAY;AAAA,IACZC,WAAW;AAAA,IACXC,YAAY;AAAA,IACZL,YAAY;AAAA,IACZM,WAAW;AAAA,IACXC,WAAW,cAAchB,EAAqB;AAAA,EAAA;AAElD,IAiBaiB,KAAkBA,CAACC,GAAeC,IAA4B,OAAsC;AAC/G,QAAMC,IAASlB,GACb,IAAIT,GAAa4B,IAAIH,CAAK,KAAK,EAAE,KACjC,IAAInB,MAAsBoB,EAAQG,SAAS,IAAI1F,QAAQ,CAAC,CAAC,OAC3D,GAEM2F,IAAYzF,CAAAA,MAAA;AAAA,UAAAC,IAAAC,EAAA,CAAA;AAAA,QAAAO;AAAA,WAAAR,SAAAD,KAA2BS,sBAAC0D,IAAA,EAAU,eAAA,IAAW,GAAKnE,GAAYsF,KAAAA,GAAM,GAAIrF,OAAAD,GAAAC,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAAjDQ;AAAAA,EAAiD;AAE9FgF,SAAAA,EAAUC,cAAc,aAAaN,CAAK,KACnCK;AACT,GC1BaE,KAAe,CAC1B,QACA,OACA,UACA,UACA,SACA,QACA,QACA,QACA,UACA,MAAM,GAGFP,KAAQA,CAACnE,GAAcmC,OAAmB;AAAA,EAAEwC,OAAO3E;AAAAA,EAAMmC,OAAAA;AAAAA,EAAOyC,MAAMV,GAAgBlE,CAAI;AAAE,IAI5F6E,KAAaA,CAAC7E,GAAcmC,OAAmB;AAAA,EACnDwC,OAAO3E;AAAAA,EACPmC,OAAAA;AAAAA,EACAyC,MAAMV,GAAgBlE,GAAM;AAAA,IAAEuE,OAAO;AAAA,EAAA,CAAM;AAC7C,IAMaO,KAAc;AAAA,EACzB;AAAA,IAAEH,OAAO;AAAA,IAAMxC,OAAO;AAAA,IAAQyC,MAAMG;AAAAA,EAAAA;AAAAA,EACpC;AAAA,IAAEJ,OAAO;AAAA,IAAQxC,OAAO;AAAA,IAAQyC,MAAMI;AAAAA,EAAAA;AAAAA,EACtC;AAAA,IAAEL,OAAO;AAAA,IAAOxC,OAAO;AAAA,IAAOyC,MAAMK;AAAAA,EAAAA;AAAAA,EACpC;AAAA,IAAEN,OAAO;AAAA,IAAYxC,OAAO;AAAA,IAAYyC,MAAMM;AAAAA,EAAAA;AAAAA,EAC9C;AAAA,IAAEP,OAAO;AAAA,IAAaxC,OAAO;AAAA,IAAayC,MAAMO;AAAAA,EAAAA;AAAAA,EAChD;AAAA,IAAER,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAMQ;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAET,OAAO;AAAA,IAAOxC,OAAO;AAAA,IAAOyC,MAAMS;AAAAA,EAAAA;AAAAA,EACpC;AAAA,IAAEV,OAAO;AAAA,IAAWxC,OAAO;AAAA,IAAWyC,MAAMU;AAAAA,EAAAA;AAAAA,EAC5C;AAAA,IAAEX,OAAO;AAAA,IAASxC,OAAO;AAAA,IAASyC,MAAMW;AAAAA,EAAAA;AAAAA,EACxC;AAAA,IAAEZ,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAMY;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAEb,OAAO;AAAA,IAAQxC,OAAO;AAAA,IAAQyC,MAAMa;AAAAA,EAAAA;AAAAA,EACtC;AAAA,IAAEd,OAAO;AAAA,IAASxC,OAAO;AAAA,IAASyC,MAAMc;AAAAA,EAAAA;AAAAA,EACxC;AAAA,IAAEf,OAAO;AAAA,IAAaxC,OAAO;AAAA,IAAayC,MAAMe;AAAAA,EAAAA;AAAAA,EAChD;AAAA,IAAEhB,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAMgB;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAEjB,OAAO;AAAA,IAAOxC,OAAO;AAAA,IAAOyC,MAAMiB;AAAAA,EAAAA;AAAAA;AAAAA,EAEpC;AAAA,IAAElB,OAAO;AAAA,IAASxC,OAAO;AAAA,IAASyC,MAAMkB;AAAAA,EAAAA;AAAAA,EACxC;AAAA,IAAEnB,OAAO;AAAA,IAAOxC,OAAO;AAAA,IAAOyC,MAAMmB;AAAAA,EAAAA;AAAAA,EACpC;AAAA,IAAEpB,OAAO;AAAA,IAAQxC,OAAO;AAAA,IAAQyC,MAAMoB;AAAAA,EAAAA;AAAAA,EACtC;AAAA,IAAErB,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAMqB;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAEtB,OAAO;AAAA,IAASxC,OAAO;AAAA,IAASyC,MAAMsB;AAAAA,EAAAA;AAAAA,EACxC;AAAA,IAAEvB,OAAO;AAAA,IAAYxC,OAAO;AAAA,IAAYyC,MAAMuB;AAAAA,EAAAA;AAAAA,EAC9C;AAAA,IAAExB,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAMwB;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAEzB,OAAO;AAAA,IAAQxC,OAAO;AAAA,IAAQyC,MAAMyB;AAAAA,EAAAA;AAAAA,EACtC;AAAA,IAAE1B,OAAO;AAAA,IAAQxC,OAAO;AAAA,IAAQyC,MAAM0B;AAAAA,EAAAA;AAAAA,EACtCnC,GAAM,kBAAkB,gBAAgB;AAAA,EACxCA,GAAM,eAAe,aAAa;AAAA,EAClCA,GAAM,mBAAmB,oBAAoB;AAAA,EAC7CA,GAAM,iBAAiB,kBAAkB;AAAA,EACzCA,GAAM,eAAe,aAAa;AAAA,EAClCA,GAAM,mBAAmB,iBAAiB;AAAA,EAC1C;AAAA,IAAEQ,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAM2B;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAE5B,OAAO;AAAA,IAAcxC,OAAO;AAAA,IAAcyC,MAAM4B;AAAAA,EAAAA;AAAAA,EAClD3B,GAAW,aAAa,WAAW;AAAA,EACnCA,GAAW,aAAa,cAAc;AAAA,EACtCA,GAAW,cAAc,YAAY;AAAA,EACrCA,GAAW,eAAe,iBAAiB;AAAA,EAC3C;AAAA,IAAEF,OAAO;AAAA,IAAOxC,OAAO;AAAA,IAAOyC,MAAM6B;AAAAA,EAAAA;AAAAA,EACpC;AAAA,IAAE9B,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAM8B;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAE/B,OAAO;AAAA,IAAYxC,OAAO;AAAA,IAAYyC,MAAM+B;AAAAA,EAAAA;AAAAA,EAC9C;AAAA,IAAEhC,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAMgC;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAEjC,OAAO;AAAA,IAAkBxC,OAAO;AAAA,IAAkByC,MAAMiC;AAAAA,EAAAA;AAAAA,EAC1D;AAAA,IAAElC,OAAO;AAAA,IAAUxC,OAAO;AAAA,IAAUyC,MAAMkC;AAAAA,EAAAA;AAAAA,EAC1C;AAAA,IAAEnC,OAAO;AAAA,IAAaxC,OAAO;AAAA,IAAayC,MAAMmC;AAAAA,EAAAA;AAAAA,EAChD;AAAA,IAAEpC,OAAO;AAAA,IAAWxC,OAAO;AAAA,IAAWyC,MAAMoC;AAAAA,EAAAA;AAAAA,EAC5C;AAAA,IAAErC,OAAO;AAAA,IAAQxC,OAAO;AAAA,IAAQyC,MAAMqC;AAAAA,EAAAA;AAAAA,EACtC;AAAA,IAAEtC,OAAO;AAAA,IAAYxC,OAAO;AAAA,IAAYyC,MAAMsC;AAAAA,EAAAA;AAAAA,EAC9C;AAAA,IAAEvC,OAAO;AAAA,IAAOxC,OAAO;AAAA,IAAOyC,MAAMuC;AAAAA,EAAAA;AAAAA,EACpC;AAAA,IAAExC,OAAO;AAAA,IAASxC,OAAO;AAAA,IAASyC,MAAMwC;AAAAA,EAAAA;AAAAA;AAAAA;AAAAA,EAGxC;AAAA,IAAEzC,OAAO;AAAA,IAAaxC,OAAO;AAAA,IAAUyC,MAAMyC;AAAAA,EAAAA;AAAAA,EAC7C;AAAA,IAAE1C,OAAO;AAAA,IAAiBxC,OAAO;AAAA,IAASyC,MAAM0C;AAAAA,EAAAA;AAAAA,EAChD;AAAA,IAAE3C,OAAO;AAAA,IAAyBxC,OAAO;AAAA,IAAayC,MAAM2C;AAAAA,EAAAA;AAAAA,EAC5D;AAAA,IAAE5C,OAAO;AAAA,IAASxC,OAAO;AAAA,IAAiByC,MAAM4C;AAAAA,EAAAA;AAAAA,EAChD;AAAA,IAAE7C,OAAO;AAAA,IAAexC,OAAO;AAAA,IAAayC,MAAM6C;AAAAA,EAAAA;AAAAA,EAClD;AAAA,IAAE9C,OAAO;AAAA,IAAWxC,OAAO;AAAA,IAAWyC,MAAM8C;AAAAA,EAAAA;AAAAA,EAC5C;AAAA,IAAE/C,OAAO;AAAA,IAAQxC,OAAO;AAAA,IAAQyC,MAAM+C;AAAAA,EAAAA;AAAAA,EACtC;AAAA,IAAEhD,OAAO;AAAA,IAAYxC,OAAO;AAAA,IAAYyC,MAAMgD;AAAAA,EAAAA;AAAU,GAG7CC,KAAmBA,CAC9B7H,GACA8H,IAAoDhD,OAClC;AAClB,QAAMiD,KAAkB/H,KAAQ,UAC7BgI,QAAQ,sBAAsB,OAAO,EACrCA,QAAQ,sBAAsB,OAAO,EACrCC,YAAAA;AAEH,SADcH,EAAYI,KAAMtD,CAAAA,MAASA,EAAKD,UAAUoD,CAAc,GACxDnD,QAAQuD;AACxB,GCxJaC,KAASC,GAAMC,WAAwC,SAAAvJ,GAAAwJ,GAAA;AAAA,QAAAvJ,IAAAC,EAAA,CAAA;AAAA,MAAAgD,GAAAuG;AAAA,EAAAxJ,SAAAD,KAClE;AAAA,IAAAkD,UAAAA;AAAAA,IAAA,GAAAuG;AAAAA,EAAAA,IAA8BzJ,GAAMC,OAAAD,GAAAC,OAAAiD,GAAAjD,OAAAwJ,MAAAvG,IAAAjD,EAAA,CAAA,GAAAwJ,IAAAxJ,EAAA,CAAA;AAAA,MAAAQ;AAAA,EAAAR,EAAA,CAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAK9BtB,kCAA2B,QAAA,OAAmB,cAAA,KAAO,IAAA,YACnD,4BAAAiJ,GAAA,OAAA,EAAuB,IAAA,SACzB,GAAqBzJ,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAA,MAAAS;AAAA,EAAAT,EAAA,CAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAHvBrB,IAAA,gBAAAW,EAAAqI,GAAA,SAAA,EACEjJ,UAAAA;AAAAA,IAAAA;AAAAA,mCAIU,SAAA,UACL,IAAA,MACS,aAAA,OACA,aAAA,MACC,cAAA,QACH,WAAA,QACC,YAAA,sEACH,QAAA;AAAA,MAAAiE,SAAW;AAAA,MAASiF,aAAe;AAAA,IAAA,GAClC,SAAA;AAAA,MAAAjF,SAAW;AAAA,MAAUiF,aAAe;AAAA,IAAA,GAC9B,eAAA;AAAA,MAAAA,aAAe;AAAA,MAAqBC,SAAW;AAAA,MAAMC,WAAa;AAAA,IAAA,EAAO;KAE5F,GAAuB5J,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAe;AAAA,SAAAf,EAAA,CAAA,MAAAiD,KAAAjD,SAAAuJ,KAAAvJ,EAAA,CAAA,MAAAwJ,KAjBzBzI,iCAAwBwI,KAAAA,GAAa,SAAA,SAAO,GAAKC,GAC/C/I,UAAAA;AAAAA,IAAAA;AAAAA,IAiBCwC;AAAAA,EAAAA,GACH,GAAoBjD,OAAAiD,GAAAjD,OAAAuJ,GAAAvJ,OAAAwJ,GAAAxJ,OAAAe,KAAAA,IAAAf,EAAA,CAAA,GAnBpBe;AAmBoB,CAEvB,GCMY8I,KAAqBA,CAACC,GAAsBC,MACnDD,IACK,gBAAA7I,EAACwB,IAAA,EAAK,IAAIsH,IAAWC,KAAcC,IAAQ,SAAQ,QAAO,OAAOF,IAAW,OAAO,YAAW,IAChGA,sBAAYtH,IAAA,EAAK,IAAIyH,IAAO,SAAQ,QAAO,OAAM,KAAA,CAAI,IAAM,MAGvDC,KAAsBA,CAACC,GAAyC3F,MACtE2F,sBAEF3H,IAAA,EACC,IAAIoG,GAAiBuB,EAAOxE,QAAQ,IAAI,GACxC,SAAAnB,GACA,OAAO2F,EAAOC,QAAQ,GAAGD,EAAOC,KAAK,SAAS,YAAW,IALzC,MAkBTC,KAAgBvK,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC3B;AAAA,IAAAsK,cAAAA;AAAAA,IAAAnF,SAAAA;AAAAA,IAAAoF,aAAAA;AAAAA,IAAAV,aAAAA;AAAAA,IAAA3J,UAAAA;AAAAA,IAAAsK,YAAAjK;AAAAA,IAAAkK,mBAAAjK;AAAAA,IAAAkK,WAAA5J;AAAAA,IAAA6J,OAAAA;AAAAA,IAAA9H,WAAAA;AAAAA,IAAA+H,gBAAA1J;AAAAA,IAAA2J,kBAAAA;AAAAA,IAAApJ,MAAAD;AAAAA,IAAAsJ,UAAAA;AAAAA,IAAAC,eAAAA;AAAAA,EAAAA,IAgBIjL,GAVF0K,IAAAjK,MAAA+B,SAAA,KAAA/B,GACAkK,IAAAjK,MAAA8B,SAAA,oBAAA9B,GACAkK,IAAA5J,MAAAwB,SAAA,qBAAAxB,GAGA8J,IAAA1J,MAAAoB,SAAA,WAAApB,GAEAO,IAAAD,MAAAc,SAAA,OAAAd;AAAW,MAAAE;AAAA,EAAA3B,SAAAG,KAAAH,EAAA,CAAA,MAAA8C,KAAA9C,EAAA,CAAA,MAAA0B,KAAA1B,EAAA,CAAA,MAAA8K,KAAA9K,SAAAuK,KAAAvK,EAAA,CAAA,MAAA6K,KAKXlJ,IAAAkJ,MAAmB,SACjB,gBAAA5J,EAACgB,IAAA,EAAuB,cAAA6I,KAAA,gBAAyC,MAAA,OAAc,SAAA,SAAkB3K,UAAAA,GAC9FoK,UAAAA,EAAAA,CACH,IAEA,gBAAAtJ,EAACgK,IAAA,EACOvJ,MAAAA,GACM,aAAA,OACA,aAAA,SACA,aAAA,UACFvB,UAAAA,GACC,WAAAuB,MAAS,OAAT,aAAA,mBACJ,OAAAoB,IAAA,SAAAP,QACC,QAAA;AAAA,IAAA2I,IAAM;AAAA,IAAUxB,aAAe;AAAA,EAAA,GAC9B,SAAA;AAAA,IAAAwB,IAAM;AAAA,IAAWxB,aAAe;AAAA,EAAA,GAC9B,WAAA;AAAA,IAAAwB,IAAM;AAAA,IAAWxB,aAAe;AAAA,EAAA,GAC5B,eAAA;AAAA,IAAAA,aAAe;AAAA,IAAqBC,SAAW;AAAA,IAAMC,WAAa;AAAA,EAAA,GAEjF,UAAA,gBAAAxI,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAAoB,KAAA,MAAQ,GAAAP,IAAA,SAAAP,QACnE,UAAA;AAAA,IAAA,gBAAAtB,EAACoC,GAAA,EAAgB,YAAA,UAAa,KAAA,MAC3BkH,UAAAA,GACH;AAAA,IACA,gBAAAtJ,EAACkK,IAAA,EAAkB,MAAA,GAAA,CAAE;AAAA,EAAA,EAAA,CACvB,EAAA,CACF,GACDnL,OAAAG,GAAAH,OAAA8C,GAAA9C,OAAA0B,GAAA1B,OAAA8K,GAAA9K,OAAAuK,GAAAvK,OAAA6K,GAAA7K,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AA1BH,QAAAoL,IACEzJ;AA2BF,MAAI8I,KAAAG,GAAmB;AAAA,QAAAhJ;AAAA,QAAA5B,EAAA,CAAA,MAAA+K,KAAA/K,SAAAoF,KAAApF,EAAA,CAAA,MAAAwK,GAAA;AAAA,UAAAxI;AAAA,MAAAhC,EAAA,EAAA,MAAA+K,KAAA/K,UAAAwK,KAC2BxI,IAAAoI,CAAAA,OAAa;AAAA,QAAAiB,IACvDjB,EAAMiB;AAAAA,QAAGlI,OACNiH,EAAMpJ;AAAAA,QAAKsK,YACN,CAAClB,EAAMiB,IAAKjB,EAAM/H,WAAY,EAACkJ,OAAQC,OAAO,EAACC,KAAM,GAAG;AAAA,QAACC,gBACrDtB,EAAM/H;AAAAA,QAAYuD,MAC5BiD,GAAiBuB,EAAMxE,IAAK;AAAA,QAAC+F,YACvBvB,EAAMjK;AAAAA,QAASyL,YACfpB,EAAWqB,SAAUzB,EAAMiB,EAAG;AAAA,QAACS,UACjCA,MAAMf,EAASX,EAAMiB,EAAG;AAAA,MAAA,IAClCrL,QAAA+K,GAAA/K,QAAAwK,GAAAxK,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GATkC4B,IAAAwD,EAAO2G,IAAK/J,CAS9C,GAAChC,OAAA+K,GAAA/K,OAAAoF,GAAApF,OAAAwK,GAAAxK,QAAA4B;AAAAA,IAAA;AAAAA,MAAAA,IAAA5B,EAAA,EAAA;AATH,UAAAgM,IAAoCpK;AAShC,QAAAI;AAAA,QAAAhC,EAAA,EAAA,MAAA2K,KAAA3K,EAAA,EAAA,MAAA4K,KAAA5K,EAAA,EAAA,MAAAgM,KAAAhM,EAAA,EAAA,MAAA8J,KAAA9J,EAAA,EAAA,MAAAgL,KAAAhL,EAAA,EAAA,MAAA0K,KAAA1K,EAAA,EAAA,MAAAyK,KAAAzK,UAAAoL,GAAA;AACJ,YAAAa,IAAsBrB,GAAKxF,QAAc8D,KAACgD,OAAY9B,EAAMiB,OAAQT,EAAKuB,YAAa;AAAE,UAAAjK;AAAA,MAAAlC,UAAA2K,KAWlFzI,iCAAiB,OAAA,SAAQ,UAAA,IAAS,SAAA,IAChC,4BAACkK,IAAA,EAAQ,SAAA,IAAgB,SAAA,cAAgB,IAAA,SAAezB,OAAAA,GAAW,UAAA,GAAA,IACrE,GAAY3K,QAAA2K,GAAA3K,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAVhBgC,IAAA,gBAAAf,EAACoL,IAAA,EACUjB,SAAAA,GACFY,OAAAA,GACC,QAAApB,GAAKuB,cACD1B,eACOC,mBAAAA,GACJ,eAAA,CAACZ,GAEd,YAAA5H,GAKA,YAAA0I,IAAA;AAAA,QAAAoB,OAEapB,EAAKxF,QAAQ2G,IAAKO,CAAAA,OAAa;AAAA,UAAAjB,IAChCjB,EAAMiB;AAAAA,UAAGlI,OACNiH,EAAMpJ;AAAAA,UAAKsK,YACN,CAAClB,EAAMiB,IAAKjB,EAAM/H,WAAY,EAACkJ,OAAQC,OAAO,EAACC,KAAM,GAAG;AAAA,UAACC,gBACrDtB,EAAM/H;AAAAA,UAAYuD,MAC5BiD,GAAiBuB,EAAMxE,IAAK;AAAA,UAAC+F,YACvBvB,EAAMjK;AAAAA,UAASyL,YACfxB,EAAMiB,OAAQT,EAAKuB;AAAAA,QAAAA,EAC/B;AAAA,QAACI,eACYN,GAAajL,QAAU4J,EAAK4B,eAA5B,UAAsD5B,EAAK5J,KAAKiI,YAAAA,CAAc;AAAA,QAAEwD,cACjFR,IAAgBpD,GAAiBoD,EAAarG,IAAiB,IAA/DrD;AAAAA,QAAgEmK,WACnE9B,EAAK5J;AAAAA,QAAKb,UACXyK,EAAKzK,YAAayK,EAAKxF,QAAQuH,UAAW;AAAA,QAACC,YACzChC,EAAKH;AAAAA,QAAWC,mBACTE,EAAKF,qBAAL,UAAqCE,EAAK5J,KAAKiI,aAAc;AAAA,QAAG4D,YAEjF,gBAAA5L,EAAA6L,GAAA,MAAA,EAAiB,OAAA,eAAc,UAAA,IAAS,SAAA,IACtC,UAAA,gBAAA7L,EAACmL,MACC,SAAA,IACQ,SAAA,cACL,IAAA,eACI,OAAAxB,EAAKD,aAAL,MAAyBC,EAAK5J,KAAKiI,YAAAA,CAAc,UACxD,UAAA,IAAQ,GAEZ;AAAA,QAAY6C,UAEJiB,CAAAA,MAAU/B,IAAgB+B,EAAI1B,EAAG;AAAA,MAAA,IA5BjD9I,OAAAA,CA8Ba,GAEfvC,QAAA2K,GAAA3K,QAAA4K,GAAA5K,QAAAgM,GAAAhM,QAAA8J,GAAA9J,QAAAgL,GAAAhL,QAAA0K,GAAA1K,QAAAyK,GAAAzK,QAAAoL,GAAApL,QAAAgC;AAAAA,IAAA;AAAAA,MAAAA,IAAAhC,EAAA,EAAA;AAAA,WA7CFgC;AAAAA,EA6CE;AAKsB,QAAAJ,KAACkI;AAAW,MAAA9H;AAAA,EAAAhC,UAAAoL,KACpCpJ,sBAAA8K,GAAA,SAAA,EAAc,SAAA,IAAS1B,UAAAA,GAAQ,GAAepL,QAAAoL,GAAApL,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAkC;AAAA,MAAAlC,EAAA,EAAA,MAAA8J,KAAA9J,EAAA,EAAA,MAAA+K,KAAA/K,EAAA,EAAA,MAAAoF,KAAApF,UAAAwK,GAAA;AAAA,QAAAwC;AAAA,IAAAhN,EAAA,EAAA,MAAA8J,KAAA9J,UAAA+K,KAAA/K,EAAA,EAAA,MAAAwK,KAM3BwC,IAAAC,CAAAA,MAAA;AACX,YAAAlD,IAAiBS,EAAWqB,SAAUzB,EAAMiB,EAAG;AAAE,aAE/C,gBAAApK,EAAA6L,GAAA,MAAA,EAAkC,OAAA1C,EAAMiB,IAAe,UAAAjB,EAAMjK,UAAW,SAAA,IACtE,UAAA,gBAAAc,EAACmL,MACC,SAAA,IACQ,SAAA,cACF,MAAAtC,IAAA,qBAAA,iBACQC,gBAAAA,GACV,IAAAK,EAAMiB,IACH,OAAAjB,EAAMpJ,MACP,MAAAmJ,GAAoBC,GAAQ,MAAM,GAC/B,SAAAA,EAAM/H,aACL,UAAA+H,EAAMjK,UACJ4J,YAAAA,GACA,YAAAF,GAAmBC,GAAaC,CAAQ,GACxC,YAAA,MAAMgB,EAASX,EAAMiB,EAAG,EAAA,CAAC,EAAA,GAbzBjB,EAAMiB,EAetB;AAAA,IAAY,GAEfrL,QAAA8J,GAAA9J,QAAA+K,GAAA/K,QAAAwK,GAAAxK,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA,GApBAkC,IAAAkD,EAAO2G,IAAKiB,CAoBZ,GAAChN,QAAA8J,GAAA9J,QAAA+K,GAAA/K,QAAAoF,GAAApF,QAAAwK,GAAAxK,QAAAkC;AAAAA,EAAA;AAAAA,IAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAgN;AAAA,EAAAhN,UAAAkC,KAvBR8K,IAAA,gBAAA/L,EAACiM,IAAA,EACC,UAAA,gBAAAjM,EAAA6L,GAAA,YAAA,EACE,UAAA,gBAAA7L,EAAA6L,GAAA,SAAA,EACG5K,UAAAA,EAAAA,CAqBH,EAAA,CACF,GACF,GAASlC,QAAAkC,GAAAlC,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,MAAAmN;AAAA,SAAAnN,EAAA,EAAA,MAAA4B,KAAA5B,UAAAgC,KAAAhC,EAAA,EAAA,MAAAgN,KA9BXG,IAAA,gBAAA/L,EAAA0L,GAAA,MAAA,EAA0B,eAAAlL,GACxBI,UAAAA;AAAAA,IAAAA;AAAAA,IAGAgL;AAAAA,EAAAA,GA2BF,GAAYhN,QAAA4B,GAAA5B,QAAAgC,GAAAhC,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GA/BZmN;AA+BY,GCxLHC,KAAcrN,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACzB;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAA/G,SAAAA;AAAAA,IAAAiI,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,cAAA/M;AAAAA,EAAAA,IAAuGT,GAA7BwN,IAAA/M,MAAA+B,SAAA,YAAA/B,GAC1E,CAAAgN,GAAAC,CAAA,IAA4BlN,EAAS4L,CAAY;AAAE,MAAA1L,GAAAM;AAAA,EAAAf,SAAAmM,KAEzC1L,IAAAA,MAAA;AACRgN,IAAAA,EAAUtB,CAAY;AAAA,EAAC,GACtBpL,IAAA,CAACoL,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAS,GAAAT,OAAAe,MAAAN,IAAAT,EAAA,CAAA,GAAAe,IAAAf,EAAA,CAAA,IAFjBc,GAAUL,GAEPM,CAAc;AAAC,MAAAI;AAAA,EAAAnB,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAENlM,IAAAuM,CAAAA,MAAA;AACVD,IAAAA,EAAUC,CAAQ,GAClBL,EAAShC,GAAIqC,CAAQ;AAAA,EAAC,GACvB1N,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAHD,QAAA2N,IAAYxM,GAIZyM,IAAmBL,MAAiB;AAAa,MAAA9L;AAAA,EAAAzB,EAAA,CAAA,MAAAwN,KAAAxN,SAAAgB,KAAAhB,EAAA,CAAA,MAAAoF,KAC5B3D,IAAA2D,EAAO8D,KAAMkB,CAAAA,MAAYA,EAAMiB,OAAQmC,CAAY,GAACxM,QAApDA,GAA4DhB,OAAAwN,GAAAxN,OAAAgB,GAAAhB,OAAAoF,GAAApF,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAAjF,QAAA6N,IAAqBpM;AAErB,MAAImM,GAAU;AAAA,QAAAjM;AAAA,IAAA3B,UAAAwN,KAKK7L,IAAA6L,IAAA,CAAUA,CAAM,IAAhB,CAAA,GAAsBxN,QAAAwN,GAAAxN,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,QAAA4B;AAAA,WAAA5B,EAAA,EAAA,MAAAoF,KAAApF,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAA2N,KAAA3N,EAAA,EAAA,MAAA6N,KAAA7N,UAAA2B,KAHrCC,IAAA,gBAAAX,EAACqJ,IAAA,EACeuD,cAAAA,GACLzI,SAAAA,GACI,aAAAzD,GACA,aAAA,IACH2L,UAAAA,GACAK,UAAAA,GAAG,GACb3N,QAAAoF,GAAApF,QAAAsN,GAAAtN,QAAA2N,GAAA3N,QAAA6N,GAAA7N,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GAPF4B;AAAAA,EAOE;AAEL,MAAAD;AAAA,MAAA3B,EAAA,EAAA,MAAAwN,KAAAxN,EAAA,EAAA,MAAAoF,KAAApF,EAAA,EAAA,MAAAsN,KAAAtN,UAAA2N,GAAA;AAAA,QAAA/L;AAAA,IAAA5B,EAAA,EAAA,MAAAwN,KAAAxN,UAAAsN,KAAAtN,EAAA,EAAA,MAAA2N,KAIgB/L,IAAAsK,CAAAA,MACX,gBAAAjL,EAACgK,IAAA,EAEM,MAAA,MACI,SAAAuC,MAAWpD,EAAMiB,KAAjB,WAAA,WACC,UAAAjB,EAAMjK,YAANmN,GACF,QAAA;AAAA,MAAApC,IAAM;AAAA,MAAUxB,aAAe;AAAA,IAAA,GAC9B,SAAA;AAAA,MAAAwB,IAAM;AAAA,MAAWxB,aAAe;AAAA,IAAA,GAC1B,eAAA;AAAA,MAAAA,aAAe;AAAA,MAAqBC,SAAW;AAAA,MAAMC,WAAa;AAAA,IAAA,GACxE,eAAM+D,EAAIvD,EAAMiB,EAAG,GAE3BjB,UAAAA,EAAMpJ,QATFoJ,EAAMiB,EAUb,GACDrL,QAAAwN,GAAAxN,QAAAsN,GAAAtN,QAAA2N,GAAA3N,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GAbA2B,IAAAyD,EAAO2G,IAAKnK,CAaZ,GAAC5B,QAAAwN,GAAAxN,QAAAoF,GAAApF,QAAAsN,GAAAtN,QAAA2N,GAAA3N,QAAA2B;AAAAA,EAAA;AAAAA,IAAAA,IAAA3B,EAAA,EAAA;AAAA,MAAA4B;AAAA,EAAA5B,UAAA2B,KAdJC,sBAACyB,GAAA,EAAS,KAAA,MAAU,MAAA,QACjB1B,UAAAA,GAcH,GAAO3B,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAhBT,QAAA8N,IACElM;AAgBA,MAAAI;AAAA,SAAAhC,EAAA,EAAA,MAAAqC,KAAArC,UAAAgB,KAAAhB,EAAA,EAAA,MAAA8N,KAGA9L,sBAACY,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAAyB,aAAA,WACvEyL,UAAAA,GACH,GAAyB9N,QAAAqC,GAAArC,QAAAgB,GAAAhB,QAAA8N,GAAA9N,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GAFzBgC;AAEyB,GCjEhB+L,KAAwC,CACnD,YACA,OACA,aACA,QACA,UACA,SACA,eACA,UACA,cAAc,GAGHC,KAAoBA,CAACrI,MAChC,OAAOA,KAAU,YAAaoI,GAAgClC,SAASlG,CAAK,GCRjEsI,KAA2BlO,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAiO,GAAAjL,GAAAzC;AAAA,EAAAR,SAAAD,KACtC;AAAA,IAAAkD,UAAAA;AAAAA,IAAAkL,oBAAA3N;AAAAA,IAAA,GAAA0N;AAAAA,EAAAA,IAA8DnO,GAAMC,OAAAD,GAAAC,OAAAkO,GAAAlO,OAAAiD,GAAAjD,OAAAQ,MAAA0N,IAAAlO,EAAA,CAAA,GAAAiD,IAAAjD,EAAA,CAAA,GAAAQ,IAAAR,EAAA,CAAA;AAGZ,QAAAS,KAHtCD,MAAA+B,SAAA,KAAA/B,KAGsC,aAAA+B;AAA2C,MAAAxB;AAAA,SAAAf,EAAA,CAAA,MAAAkO,KAAAlO,SAAAiD,KAAAjD,EAAA,CAAA,MAAAS,KAAjGM,IAAA,gBAAAE,EAACqC,GAAA,EAAS,MAAA,KAAc,WAAA,mBAA8B,YAAA7C,GAA2C,GAAMyN,GACpGjL,UAAAA,EAAAA,CACH,GAAMjD,OAAAkO,GAAAlO,OAAAiD,GAAAjD,OAAAS,GAAAT,OAAAe,KAAAA,IAAAf,EAAA,CAAA,GAFNe;AAEM,GCGGqN,KAAkBrO,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC7B;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAAkB,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAxK,WAAAA;AAAAA,EAAAA,IAA+E/C,GAC/E,CAAA4F,GAAA0I,CAAA,IAA0B9N,EAA0B4L,CAAY;AAAE,MAAA3L,GAAAC;AAAA,EAAAT,SAAAmM,KAExD3L,IAAAA,MAAA;AACR6N,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrB1L,IAAA,CAAC0L,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAQ,GAAAR,OAAAS,MAAAD,IAAAR,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAFjBc,GAAUN,GAEPC,CAAc;AAAC,MAAAM;AAAA,EAAAf,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAEHtM,IAAAuN,CAAAA,MAAA;AACbD,IAAAA,EAASC,CAAI,GACbjB,EAAShC,GAAIiD,CAAI;AAAA,EAAC,GACnBtO,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAHD,QAAAuO,IAAexN;AAKf,MAAIuM,GAAQ;AAAA,QAAAnM;AAAA,IAAAnB,SAAA2F,KAGNxE,sBAAC8M,IAAA,eAAgC,GAA2BjO,OAAA2F,GAAA3F,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAAA,QAAAyB;AAAA,WAAAzB,EAAA,CAAA,MAAAqC,KAAArC,EAAA,CAAA,MAAA8C,KAAA9C,EAAA,EAAA,MAAAgB,KAAAhB,UAAAmB,KAD9DM,IAAA,gBAAAR,EAAC2B,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAAwBS,WAAAA,GACvE3B,UAAAA,GACF,GAAyBnB,OAAAqC,GAAArC,OAAA8C,GAAA9C,QAAAgB,GAAAhB,QAAAmB,GAAAnB,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA,GAFzByB;AAAAA,EAEyB;AAE5B,MAAAN;AAAA,EAAAnB,EAAA,EAAA,MAAAuO,KAAAvO,UAAA2F,KAYIxE,IAAA4M,GAAkBhC,IAAKyC,CAAAA,MAAA;AACtB,UAAAzE,IAAiByE,MAAW7I;AAAM,WAEhC,gBAAA1E,EAACgB,IAAA,EAEauM,iBACEzE,mBACT,MAAA,OACG,SAAA,SACJ,IAAAA,IAAA,OAAA,MACI,QAAA;AAAA,MAAAmB,IAAMnB,IAAA,OAAA;AAAA,IAAA,GACD,cAAA,KACJ,SAAA,MAAMwE,EAAOC,CAAM,GAE5B,UAAA,gBAAAvN,EAACqC,KAAY,SAAA,YAAwB,cAAA,QAAW,IAAAyG,IAAA,OAAA,WAAA,CAA4B,MAC9E;AAAA,EAAa,CAEhB,GAAC/J,QAAAuO,GAAAvO,QAAA2F,GAAA3F,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA;AAAA,MAAAyB;AAAA,EAAAzB,UAAAmB,KA1BJM,sBAACgN,IAAA,EACiB,iBAAA,qBACZ,KAAA,OACE,OAAA,eACH,IAAA,iBACD,GAAA,OACW,cAAA,MACJ,UAAA,UAERtN,UAAAA,GAkBH,GAAOnB,QAAAmB,GAAAnB,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AA5BT,QAAA0O,IACEjN,GA+B2EE,IAAAmB,IAAA,YAAA;AAAgC,MAAAlB;AAAA,SAAA5B,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAA0O,KAAA1O,EAAA,EAAA,MAAAgB,KAAAhB,UAAA2B,KAA3GC,sBAACgB,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAA0B,aAAAV,GACxE+M,UAAAA,GACH,GAAyB1O,QAAAqC,GAAArC,QAAA0O,GAAA1O,QAAAgB,GAAAhB,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GAFzB4B;AAEyB,GCvDhB+M,KAAe5O,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC1B;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAAkB,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAzK,WAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAApB,MAAAlB;AAAAA,EAAAA,IAAuGT,GAAhB2B,IAAAlB,MAAA+B,SAAA,OAAA/B,GACvF,CAAAmF,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY;AAAE,MAAA1L,GAAAM;AAMjD,MANiDf,SAAAmM,KAEvC1L,IAAAA,MAAA;AACR4N,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBpL,IAAA,CAACoL,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAS,GAAAT,OAAAe,MAAAN,IAAAT,EAAA,CAAA,GAAAe,IAAAf,EAAA,CAAA,IAFjBc,GAAUL,GAEPM,CAAc,GAEbuM,GAAQ;AASqB,UAAAnM,IAAAyN,OAAOjJ,CAAK;AAAC,QAAAlE;AAAA,IAAAzB,SAAAmB,KAAxCM,IAAA,gBAAAR,EAACgN,IAAA,EAA0B9M,UAAAA,EAAAA,CAAc,GAA2BnB,OAAAmB,GAAAnB,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAAA,QAAA2B;AAAA,WAAA3B,EAAA,CAAA,MAAAqC,KAAArC,EAAA,CAAA,MAAA8C,KAAA9C,EAAA,CAAA,MAAA6C,KAAA7C,EAAA,CAAA,MAAAgB,KAAAhB,SAAAyB,KAPtEE,IAAA,gBAAAV,EAAC2B,IAAA,EACO5B,MAAAA,GACOqB,aAAAA,GACFQ,WAAAA,GACAC,WAAAA,GACC,aAAA,UAEZrB,UAAAA,EAAAA,CACF,GAAyBzB,OAAAqC,GAAArC,OAAA8C,GAAA9C,OAAA6C,GAAA7C,OAAAgB,GAAAhB,OAAAyB,GAAAzB,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA,GARzB2B;AAAAA,EAQyB;AAE5B,MAAAR;AAAA,EAAAnB,UAAAgB,KAaiBG,IAAA;AAAA,IAAA,cAAgBH;AAAAA,EAAAA,GAAMhB,QAAAgB,GAAAhB,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA;AAAA,MAAAyB;AAAA,EAAAzB,EAAA,EAAA,MAAAqL,KAAArL,UAAAqN,KACjB5L,IAAAoN,CAAAA,MAAA;AACfR,IAAAA,EAASQ,EAAOC,OAAQ,GACxBzB,EAAShC,GAAIwD,EAAOC,OAAQ;AAAA,EAAC,GAC9B9O,QAAAqL,GAAArL,QAAAqN,GAAArN,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AAAA,MAAA2B;AAAA,EAAA3B,EAAA,EAAA,MAAA0B,KAAA1B,EAAA,EAAA,MAAAmB,KAAAnB,EAAA,EAAA,MAAAyB,KAAAzB,UAAA2F,KAPHhE,IAAA,gBAAAV,EAAC8N,MACOrN,MAAAA,GACGiE,SAAAA,GACG,YAAAxE,GACK,iBAAAM,EAAAA,CAGhB,GACDzB,QAAA0B,GAAA1B,QAAAmB,GAAAnB,QAAAyB,GAAAzB,QAAA2F,GAAA3F,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,MAAA4B;AAAA,SAAA5B,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAA8C,KAAA9C,EAAA,EAAA,MAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAAAhB,UAAA2B,KAfJC,IAAA,gBAAAX,EAAC2B,MACO5B,MAAAA,GACOqB,aAAAA,GACFQ,WAAAA,GACAC,WAAAA,GACC,aAAA,UAEZnB,UAAAA,EAAAA,CASF,GAAyB3B,QAAAqC,GAAArC,QAAA8C,GAAA9C,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GAhBzB4B;AAgByB,GCtChBoN,KAAajP,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACxB;AAAA,IAAAoL,IAAAA;AAAAA,IAAAc,cAAAA;AAAAA,IAAAnL,MAAAA;AAAAA,IAAAqM,UAAAA;AAAAA,IAAAhL,aAAAA;AAAAA,IAAAiL,UAAAA;AAAAA,IAAAzK,WAAArC;AAAAA,IAAAsC,WAAArC;AAAAA,IAAAiB,MAAAX;AAAAA,EAAAA,IAUIhB,GAHF8C,IAAArC,MAAA+B,SAAA,KAAA/B,GACAsC,IAAArC,MAAA8B,SAAA,KAAA9B,GACAiB,IAAAX,MAAAwB,SAAA,OAAAxB,GAEF,CAAA4E,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY,GAC/C,CAAA8C,GAAAC,CAAA,IAAwB3O,EAAS,EAAK,GACtC4O,IAAgBC,GAAuB,IAAI,GAC3CC,IAAmBD,GAAuB,IAAI,GAC9CE,IAAmBF,GAA6C,IAAI;AAAE,MAAAjO;AAAA,EAAAnB,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAC/ClM,IAAAoO,CAAAA,MAAA;AACrB,IAAID,EAAUE,WAAUC,aAAaH,EAAUE,OAAQ,GACvDF,EAAUE,UAAWE,WAAW,MAAMrC,EAAShC,GAAIkE,CAAS,GAAG,GAAG;AAAA,EAAhD,GACnBvP,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAHD,QAAA2P,IAAuBxO;AAGrB,MAAAM,GAAAE;AAAA,EAAA3B,SAAAmM,KAEQ1K,IAAAA,MAAA;AACR4M,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBxK,IAAA,CAACwK,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAyB,GAAAzB,OAAA2B,MAAAF,IAAAzB,EAAA,CAAA,GAAA2B,IAAA3B,EAAA,CAAA,IAFjBc,GAAUW,GAEPE,CAAc;AAAC,MAAAC,GAAAI;AAAA,EAAAhC,SAAAiP,KAERrN,IAAAA,MAAA;AACR,QAAI,CAACqN;AAAI;AAET,UAAAW,IAAuBC,CAAAA,OAAA;AACrB,YAAAC,KAAaD;AAAe,aACrBV,EAAOK,SAAkBO,SAACD,EAA0C,KAAjCT,EAAUG,SAAkBO,SAACD,EAAI;AAAA,IAAC,GAG9EE,IAAiCC,CAAAA,OAAA;AAC/B,MAAIL,EAAeK,GAAKJ,MAAO,KAE/BX,EAAQ,EAAK;AAAA,IAAC;AAGhBgB,oBAAQC,iBAAkB,WAAWH,GAA0B,EAAI,GACnEE,SAAQC,iBAAkB,eAAeH,GAA0B,EAAI,GACvEE,SAAQC,iBAAkB,SAASH,GAA0B,EAAI,GAE1D,MAAA;AACLE,eAAQE,oBAAqB,WAAWJ,GAA0B,EAAI,GACtEE,SAAQE,oBAAqB,eAAeJ,GAA0B,EAAI,GAC1EE,SAAQE,oBAAqB,SAASJ,GAA0B,EAAI;AAAA,IAAC;AAAA,EACtE,GACAhO,IAAA,CAACiN,CAAI,GAACjP,OAAAiP,GAAAjP,OAAA4B,GAAA5B,OAAAgC,MAAAJ,IAAA5B,EAAA,CAAA,GAAAgC,IAAAhC,EAAA,CAAA,IAvBTc,GAAUc,GAuBPI,CAAM;AAAC,MAAAE;AAAA,EAAAlC,SAAA2P,KAEWzN,IAAAmO,CAAAA,MAAA;AACnBhC,IAAAA,EAASgC,CAAQ,GACjBV,EAAeU,CAAQ;AAAA,EAAC,GACzBrQ,OAAA2P,GAAA3P,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAHD,QAAAsQ,IAAqBpO;AAGnB,MAAA8K;AAAA,EAAAhN,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAEiBkL,IAAAuD,CAAAA,MAAA;AACjB,UAAAC,IAAaP,EAAKQ;AAElBf,eAAW,MAAA;AACT,MAAKc,EAAIT,SAAUS,EAAIE,cAAcC,aAAc,KAAGzB,EAAQ,EAAK;AAAA,IAAE,CACtE;AAAA,EAAC,GACHlP,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAND,QAAA4Q,IAAmB5D;AAQnB,MAAIM,GAAQ;AAAA,QAAAH;AAAA,IAAAnN,UAAA2F,KAERwH,sBAACc,IAAA,EACC,UAAA,gBAAA7M,EAACiC,KAAgB,YAAA,UAAa,KAAA,MAC5B,UAAA;AAAA,MAAA,gBAAApC,EAACqC,KAAY,SAAA,WAAuB,cAAA,MAASqC,IAAAA;MAC7C,gBAAA1E,EAACqC,GAAA,EAAO,IAAA,QAAQqC,UAAAA,EAAAA,CAAM;AAAA,IAAA,EAAA,CACxB,EAAA,CACF,GAA2B3F,QAAA2F,GAAA3F,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAN7B,UAAA6Q,IACE1D;AAQF,QAAIrK,GAAS;AAAA,UAAAgO;AAAA,MAAA9Q,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAGN8P,IAAA,CAACjO,KACA,gBAAA5B,EAACqC,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW,EAAA,CACxD,GACDrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA;AAAA,UAAA+Q;AAAA,aAAA/Q,EAAA,EAAA,MAAA8Q,KAAA9Q,UAAA6Q,KALHE,uBAACzN,GAAA,EACEwN,UAAAA;AAAAA,QAAAA;AAAAA,QAKAD;AAAAA,MAAAA,GACH,GAAM7Q,QAAA8Q,GAAA9Q,QAAA6Q,GAAA7Q,QAAA+Q,MAAAA,KAAA/Q,EAAA,EAAA,GAPN+Q;AAAAA,IAOM;AAET,QAAAD;AAAA,IAAA9Q,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAKM8P,KAAA,CAACjO,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,GAAW,GAAIrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAA8Q,MAAAA,KAAA9Q,EAAA,EAAA;AAAA,QAAA+Q;AAAA,WAAA/Q,EAAA,EAAA,MAAA8Q,MAAA9Q,UAAA6Q,KAF7EE,KAAA,gBAAA9P,EAACqC,GAAA,EACC,UAAA,gBAAAlC,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3EyN,UAAAA;AAAAA,MAAAA;AAAAA,MACAD;AAAAA,IAAAA,EAAAA,CACH,EAAA,CACF,GAAM7Q,QAAA8Q,IAAA9Q,QAAA6Q,GAAA7Q,QAAA+Q,MAAAA,KAAA/Q,EAAA,EAAA,GALN+Q;AAAAA,EAKM;AAET,MAAA5D;AAAA,EAAAnN,UAAA2F,KAGQwH,IAAA6D,GAAWrL,CAAK,GAAC3F,QAAA2F,GAAA3F,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,MAAA8Q,GAAAC,GAAAE;AAAA,EAAAjR,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAEVgP,IAAAjC,CAAAA,MAAgCK,EAAQL,EAAOI,IAAK,GAClD8B,IAAAA,MAAM7B,EAAQ,EAAK,GAChB+B,IAAAA,MAAM/B,EAAQ,EAAK,GAAClP,QAAA8Q,GAAA9Q,QAAA+Q,GAAA/Q,QAAAiR,MAAAH,IAAA9Q,EAAA,EAAA,GAAA+Q,IAAA/Q,EAAA,EAAA,GAAAiR,IAAAjR,EAAA,EAAA;AAAA,MAAAkR;AAAA,EAAAlR,UAAAsQ,KAExBY,IAAAC,OAA4Cb,EAAazB,EAAOlJ,MAAMjG,SAAU,KAAK,CAAC,GAACM,QAAAsQ,GAAAtQ,QAAAkR,KAAAA,IAAAlR,EAAA,EAAA;AAAA,MAAAoR;AAAA,EAAApR,EAAA,EAAA,MAAAiP,KAAAjP,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAAmN,KAAAnN,UAAAkR,KAPtFE,IAAA;AAAA,IAAAzL,OACTwH;AAAAA,IAAiB8B,MAAAA;AAAAA,IAAAoC,cAEVP;AAAAA,IAAqDQ,gBACnDP;AAAAA,IAAoBQ,mBACjBN;AAAAA,IAAoBO,QAC/BZ;AAAAA,IAAUa,eACHP;AAAAA,IAAuF/Q,UAC5FmN;AAAAA,EAAAA,GACXtN,QAAAiP,GAAAjP,QAAAsN,GAAAtN,QAAAmN,GAAAnN,QAAAkR,GAAAlR,QAAAoR,KAAAA,IAAApR,EAAA,EAAA;AATD,QAAA0R,IAAkBN,GAYkDO,IAAA7O,IAAA,SAAA;AAA8B,MAAA8O;AAAA,EAAA5R,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAC9F8P,IAAA,gBAAA3Q,EAAA4Q,GAAA,aAAA,CAAA,CAAA,GAA2B7R,QAAA4R,KAAAA,IAAA5R,EAAA,EAAA;AAAA,MAAA8R;AAAA,EAAA9R,UAAAgB,KAC3B8Q,sBAAAD,GAAA,OAAA,EAAmB,QAAA,IAAQ7Q,UAAAA,GAAK,GAAoBhB,QAAAgB,GAAAhB,QAAA8R,KAAAA,IAAA9R,EAAA,EAAA;AAAA,MAAA+R;AAAA,EAAA/R,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAEFiQ,IAAAA,MAAM7C,EAAQ,EAAK,GAAClP,QAAA+R,KAAAA,IAAA/R,EAAA,EAAA;AAAA,MAAAgS;AAAA,EAAAhS,UAAAsN,KAApE0E,sBAAAH,GAAA,OAAA,EAA6BvE,UAAAA,GAAmB,SAAAyE,GAAoB,GAAI/R,QAAAsN,GAAAtN,QAAAgS,KAAAA,IAAAhS,EAAA,EAAA;AAAA,MAAAiS;AAAA,EAAAjS,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KACxEmQ,KAAA,gBAAAhR,EAAA4Q,GAAA,SAAA,CAAA,CAAA,GAAuB7R,QAAAiS,MAAAA,KAAAjS,EAAA,EAAA;AAAA,MAAAkS;AAAA,EAAAlS,UAAAgS,KAFzBE,qCACEF,UAAAA;AAAAA,IAAAA;AAAAA,IACAC;AAAAA,EAAAA,GACF,GAAsBjS,QAAAgS,GAAAhS,QAAAkS,MAAAA,KAAAlS,EAAA,EAAA;AAAA,MAAAmS,IAAAC;AAAA,EAAApS,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAGlBqQ,KAAA,gBAAAlR,EAAA4Q,GAAA,MAAA,CAAA,CAAA,GACAO,KAAA,gBAAAnR,EAAA4Q,GAAA,SAAA,CAAA,CAAA,GAAuB7R,QAAAmS,IAAAnS,QAAAoS,OAAAD,KAAAnS,EAAA,EAAA,GAAAoS,KAAApS,EAAA,EAAA;AAAA,MAAAqS;AAAA,EAAArS,UAAA2F,KAGnB0M,IAAA,gBAAApR,EAAA4Q,GAAA,QAAA,EAA2BlM,OAAAA,EAAAA,CAAK,GAAI3F,QAAA2F,GAAA3F,QAAAqS,KAAAA,IAAArS,EAAA,EAAA;AAAA,MAAAsS;AAAA,EAAAtS,EAAA,EAAA,MAAAqS,KAAArS,UAAA2F,KAN5C2M,KAAA,gBAAArR,EAAA4Q,GAAA,YAAA,EACE,UAAA,gBAAAzQ,EAAAyQ,GAAA,SAAA,EAA0BxC,KAAAA,GAAoBuB,QAAAA,GAC5CuB,UAAAA;AAAAA,IAAAA;AAAAA,IACAC;AAAAA,IACA,gBAAAnR,EAAA4Q,GAAA,aAAA,EACE,UAAA,gBAAA5Q,EAAA4Q,GAAA,eAAA,EAAkClM,OAAAA,GAChC0M,UAAAA,EAAAA,CACF,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF,GAAyBrS,QAAAqS,GAAArS,QAAA2F,GAAA3F,QAAAsS,MAAAA,KAAAtS,EAAA,EAAA;AAAA,MAAAuS;AAAA,EAAAvS,UAAA0R,KAAA1R,EAAA,EAAA,MAAA0B,KAAA1B,EAAA,EAAA,MAAA2R,KAAA3R,EAAA,EAAA,MAAA8R,KAAA9R,UAAAkS,MAAAlS,EAAA,EAAA,MAAAsS,MAjB3BC,KAAA,gBAAAnR,EAAAyQ,GAAA,MAAA,EAAuB1C,KAAAA,GAAO,GAAMuC,GAAiBhQ,MAAAA,GAAa,OAAAiQ,GAAqC,MAAA,QACrGC,UAAAA;AAAAA,IAAAA;AAAAA,IACAE;AAAAA,IACAI;AAAAA,IAIAI;AAAAA,EAAAA,GAWF,GAAmBtS,QAAA0R,GAAA1R,QAAA0B,GAAA1B,QAAA2R,GAAA3R,QAAA8R,GAAA9R,QAAAkS,IAAAlS,QAAAsS,IAAAtS,QAAAuS,MAAAA,KAAAvS,EAAA,EAAA;AAnBrB,QAAAwS,KACED;AAmBA,MAAAE;AAAA,SAAAzS,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAA8C,KAAA9C,EAAA,EAAA,MAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAAAhB,UAAAwS,MAGAC,uBAACnP,GAAA,EACER,UAAAA,IACC,gBAAA1B,EAACkC,GAAA,EACE,UAAA;AAAA,IAAA,CAACT,uBACCS,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,IAC7C;AAAA,IAEDmQ;AAAAA,EAAAA,EAAAA,CACH,IAEA,gBAAApR,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3E,UAAA;AAAA,IAAA,CAACR,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA;IACzDmQ;AAAAA,EAAAA,EAAAA,CACH,EAAA,CAEJ,GAAMxS,QAAAqC,GAAArC,QAAA8C,GAAA9C,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAAwS,IAAAxS,QAAAyS,MAAAA,KAAAzS,EAAA,EAAA,GAhBNyS;AAgBM,GCjJGC,KAAY3S,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACvB;AAAA,IAAAoL,IAAAA;AAAAA,IAAAc,cAAAA;AAAAA,IAAAnL,MAAAA;AAAAA,IAAA2R,KAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAvF,UAAAA;AAAAA,IAAAhL,aAAAA;AAAAA,IAAAiL,UAAAA;AAAAA,IAAAzK,WAAArC;AAAAA,IAAAsC,WAAArC;AAAAA,IAAAiB,MAAAX;AAAAA,EAAAA,IAYIhB,GAHF8C,IAAArC,MAAA+B,SAAA,KAAA/B,GACAsC,IAAArC,MAAA8B,SAAA,KAAA9B,GACAiB,IAAAX,MAAAwB,SAAA,OAAAxB,GAEF,CAAA4E,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY,GAC/CmD,IAAmBF,GAA6C,IAAI;AAAE,MAAAjO;AAAA,EAAAnB,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAC/ClM,IAAA0R,CAAAA,MAAA;AACrB,IAAIvD,EAAUE,WAAUC,aAAaH,EAAUE,OAAQ,GACvDF,EAAUE,UAAWE,WAAW,MAAMrC,EAAShC,GAAIwH,CAAS,GAAG,GAAG;AAAA,EAAhD,GACnB7S,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAHD,QAAA2P,IAAuBxO;AAGrB,MAAAM,GAAAE;AAAA,EAAA3B,SAAAmM,KAEQ1K,IAAAA,MAAA;AACR4M,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBxK,IAAA,CAACwK,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAyB,GAAAzB,OAAA2B,MAAAF,IAAAzB,EAAA,CAAA,GAAA2B,IAAA3B,EAAA,CAAA,IAFjBc,GAAUW,GAEPE,CAAc;AAAC,MAAAC;AAAA,EAAA5B,SAAA2P,KAEG/N,IAAAkR,CAAAA,MAAA;AACnBzE,IAAAA,EAASyE,CAAQ,GACjBnD,EAAemD,CAAQ;AAAA,EAAC,GACzB9S,OAAA2P,GAAA3P,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA;AAHD,QAAAsQ,IAAqB1O;AAKrB,MAAI0L,GAAQ;AAAA,QAAAtL;AAAA,IAAAhC,SAAA2F,KACW3D,sBAACiM,IAAA,eAAgC,GAA2BjO,OAAA2F,GAAA3F,OAAAgC,KAAAA,IAAAhC,EAAA,CAAA;AAAjF,UAAA6Q,IAAqB7O;AAErB,QAAIc,GAAS;AAAA,UAAAZ;AAAA,MAAAlC,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAGNkB,IAAA,CAACW,KACA,gBAAA5B,EAACqC,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW,EAAA,CACxD,GACDrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,UAAAgN;AAAA,aAAAhN,EAAA,EAAA,MAAAkC,KAAAlC,UAAA6Q,KALH7D,sBAAC1J,GAAA,EACEpB,UAAAA;AAAAA,QAAAA;AAAAA,QAKA2O;AAAAA,MAAAA,GACH,GAAM7Q,QAAAkC,GAAAlC,QAAA6Q,GAAA7Q,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA,GAPNgN;AAAAA,IAOM;AAET,QAAA9K;AAAA,IAAAlC,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAKMkB,IAAA,CAACW,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,GAAW,GAAIrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,QAAAgN;AAAA,WAAAhN,EAAA,EAAA,MAAAkC,KAAAlC,UAAA6Q,KAF7E7D,IAAA,gBAAA/L,EAACqC,GAAA,EACC,UAAA,gBAAAlC,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3EnB,UAAAA;AAAAA,MAAAA;AAAAA,MACA2O;AAAAA,IAAAA,EAAAA,CACH,EAAA,CACF,GAAM7Q,QAAAkC,GAAAlC,QAAA6Q,GAAA7Q,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA,GALNgN;AAAAA,EAKM;AAET,MAAAhL;AAAA,SAAAhC,EAAA,EAAA,MAAAqC,KAAArC,UAAA8C,KAAA9C,EAAA,EAAA,MAAAsQ,KAAAtQ,UAAA6C,KAAA7C,EAAA,EAAA,MAAA4S,KAAA5S,UAAA2S,KAAA3S,EAAA,EAAA,MAAAgB,KAAAhB,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAA0B,KAAA1B,UAAA2F,KAGC3D,IAAA,gBAAAf,EAACqC,GAAA,EACER,UAAAA,IACC,gBAAA1B,EAACkC,GAAA,EACE,UAAA;AAAA,IAAA,CAACT,uBACCS,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW,EAAA,CACxD;AAAA,IAEF,gBAAApB,EAAC8R,IAAA,EACW,WAAA,UACAzF,UAAAA,GACJ,OAAA,QACA5L,MAAAA,GACD,MAAA,QACQ,aAAAmB,IAAA7B,IAAAuB,QACNoD,OAAAA,GACFgN,KAAAA,GACAC,KAAAA,GACK,UAAAI,CAAAA,MAAO1C,EAAa0C,EAACnD,OAAOlK,KAAM,GACnC,SAAAsN,GAAAA,CAIR;AAAA,EAAA,EAAA,CAEL,IAEA,gBAAA7R,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3E,UAAA;AAAA,IAAA,CAACR,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW;AAAA,IACrE,gBAAApB,EAAC8R,IAAA,EACW,WAAA,UACAzF,UAAAA,GACJ,OAAA,WACA5L,MAAAA,GACD,MAAA,QACQ,aAAAmB,IAAA7B,IAAAuB,QACNoD,OAAAA,GACFgN,KAAAA,GACAC,KAAAA,GACK,UAAAM,CAAAA,MAAO5C,EAAa0C,EAACnD,OAAOlK,KAAM,GACnC,SAAAwN,GAAAA,CAIR;AAAA,EAAA,EAAA,CAEL,EAAA,CAEJ,GAAMnT,QAAAqC,GAAArC,QAAA8C,GAAA9C,QAAAsQ,GAAAtQ,QAAA6C,GAAA7C,QAAA4S,GAAA5S,QAAA2S,GAAA3S,QAAAgB,GAAAhB,QAAAsN,GAAAtN,QAAA0B,GAAA1B,QAAA2F,GAAA3F,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GAhDNgC;AAgDM;AAzGe,SAAAiR,GAAAG,GAAA;AA6EX,EAAIJ,EAACK,QAAS,WACZL,EAACvC,cAAc6C,KAAAA;AAChB;AA/EU,SAAAH,GAAAI,GAAA;AAkGX,EAAIP,EAACK,QAAS,WACZL,EAACvC,cAAc6C,KAAAA;AAChB;ACpHf,MAAME,KAAUA,CAACnU,GAAYoU,MAC3B,GAAGpU,EAAK2B,IAAI,IAAI3B,EAAKqC,KAAKhC,UAAU,IAAIL,EAAKqU,aAAahU,SAAAA,CAAU,IAAI+T,EAAM/T,UAAU,IAE7EiU,KAAyBA,CACpCC,GACAC,GACAC,MACsB;AACtB,QAAMC,IAASD,IAAWD,EAASlH,SAAS,GACtC5C,IAAW6J,EAAM7H,IAAI,CAAC1M,GAAMoU,OAAW;AAAA,IAC3CpI,IAAImI,GAAQnU,GAAM0U,IAASN,CAAK;AAAA,IAChCpU,MAAAA;AAAAA,IACA2U,QAAQ;AAAA,EAAA,EACR;AAEF,SAAOF,IAAW,CAAC,GAAGD,GAAU,GAAG9J,CAAQ,IAAIA,EAASkK,MAAM,GAAG,CAAC;AACpE,GAEaC,KAAuBA,CAACC,MAA8B;AAEjE,QAAMC,IADmC,CAAC,aAAa,SAAS,UAAU,UAAU,EAC/DlL,KAAMmL,CAAAA,MAAcF,EAAOG,KAAM3O,CAAAA,MAAUA,EAAMqO,WAAWK,CAAS,CAAC,KAAK,SAC1FE,IAAQH,MAAU,UAAU,IAAID,EAAO5I,OAAQ5F,CAAAA,MAAUA,EAAMqO,WAAWI,CAAK,EAAEzH;AAEvF,SAAO;AAAA,IAAEyH,OAAAA;AAAAA,IAAOG,OAAAA;AAAAA,EAAAA;AAClB,GCPMC,KAAezU,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACnB;AAAA,IAAAkU,QAAAA;AAAAA,EAAAA,IAAmBpU;AAAM,MAAA0U,GAAAC,GAAAlU,GAAAC,GAAAM,GAAAI,GAAAM;AAAA,MAAAzB,SAAAmU,GAAA;AAEa1S,IAAAA,IAAAI,uBAAIC,IAAJ,6BAAG;AAAC6S,IAAAA,GAAA;AAA1C,UADAD,IAAgBR,GAAqBC,CAAM,GACvCO,EAAON,UAAW,SAAO;AAAS3S,QAAAA,IAAA;AAAA,cAAAkT;AAAAA,MAAI;AAE1CF,MAAAA,IAAaC,EAAOH,UAAW,IAAlB,SAAA,SAEH9T,IAAA,GAAGiU,EAAOH,MAAM7U,SAAAA,CAAW,IAAI+U,CAAI,WAChC1T,IAAA,aAAa2T,EAAOH,MAAM7U,UAAW,IAAI+U,CAAI,IAC9CtT,IAAA,GAAGuT,EAAOH,MAAM7U,SAAAA,CAAW,IAAI+U,CAAI,aACnCjU,IAAAkU,EAAOH,MAAM7U,SAAAA;AAAAA,IAAW;AAAAM,IAAAA,OAAAmU,GAAAnU,OAAAyU,GAAAzU,OAAA0U,GAAA1U,OAAAQ,GAAAR,OAAAS,GAAAT,OAAAe,GAAAf,OAAAmB,GAAAnB,OAAAyB;AAAAA,EAAA;AAAAgT,IAAAA,IAAAzU,EAAA,CAAA,GAAA0U,IAAA1U,EAAA,CAAA,GAAAQ,IAAAR,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,GAAAe,IAAAf,EAAA,CAAA,GAAAmB,IAAAnB,EAAA,CAAA,GAAAyB,IAAAzB,EAAA,CAAA;AAAA,MAAAyB,MAAAI,uBAAAC,IAAA,6BAAA;AAAA,WAAAL;AAA3B,QAAAE,IAAA,GAAGnB,CAAwB,IAAIiU,CAAI;AAAS,MAAA7S;AAAA,EAAA5B,EAAA,CAAA,MAAAS,KAAAT,EAAA,CAAA,MAAAe,KAAAf,EAAA,EAAA,MAAAmB,KAAAnB,UAAA2B,KAJtCC,IAAA;AAAA,IAAAgT,QACLnU;AAAAA,IAA4CoU,WACzC9T;AAAAA,IAA+C+T,UAChD3T;AAAAA,IAA8C4T,OACjDpT;AAAAA,IAA4CqT,OAC5C;AAAA,EAAA,GACRhV,OAAAS,GAAAT,OAAAe,GAAAf,QAAAmB,GAAAnB,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAND,QAAAiV,IAAerT;AAMb,MAAAI;AAAA,EAAAhC,EAAA,EAAA,MAAA0U,EAAAN,SAEApS,IAAA0S,EAAON,UAAW,cAChB,gBAAAnT,EAACiU,MAAgB,SAAA,QAAmB,aAAA,MAAA,CAAK,IAEzC,gBAAAjU,EAACwB,MACK,IAAAiS,EAAON,UAAW,UAAlBe,KAA0CT,EAAON,UAAW,aAAlBgB,KAAAC,IACtC,SAAA,OAAA,CAAM,GAEjBrV,EAAA,EAAA,IAAA0U,EAAAN,OAAApU,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AARH,QAAA4F,IACE5D,GAU2CE,IAAAwS,EAAON,UAAW,UAAlB,aAAA,YAENpH,IAAAiI,EAAOP,EAAON,KAAM;AAAC,MAAAjH;AAAA,EAAAnN,UAAAgN,KAAxDG,IAAA,gBAAAlM,EAACC,IAAA,EAAe,WAAA,mBAAmB8L,UAAAA,GAAsB,GAAOhN,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,MAAA8Q;AAAA,SAAA9Q,EAAA,EAAA,MAAA4F,KAAA5F,UAAAmN,KAAAnN,EAAA,EAAA,MAAAkC,KAFlE4O,sBAACzN,GAAA,EAAgB,YAAA,UAAa,KAAA,OAAa,OAAAnB,GACxC0D,UAAAA;AAAAA,IAAAA;AAAAA,IACDuH;AAAAA,EAAAA,GACF,GAAOnN,QAAA4F,GAAA5F,QAAAmN,GAAAnN,QAAAkC,GAAAlC,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA,GAHP8Q;AAGO,GAILwE,KAAcvV,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAClB;AAAA,IAAAqN,UAAAA;AAAAA,IAAA6G,QAAAA;AAAAA,IAAA/T,UAAAA;AAAAA,EAAAA,IAAuCL;AACvC,MAAIoU,EAAMxH,WAAY;AAAC,WAAS;AAAK,MAAAnM;AAAA,EAAAR,SAAAmU,KAIjC3T,sBAACgU,MAAqBL,QAAAA,EAAAA,CAAM,GAAInU,OAAAmU,GAAAnU,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAA,MAAAS;AAAA,MAAAT,EAAA,CAAA,MAAAI,KAAAJ,SAAAsN,KAAAtN,EAAA,CAAA,MAAAmU,GAAA;AAAA,QAAApT;AAAA,IAAAf,EAAA,CAAA,MAAAI,KAAAJ,SAAAsN,KAElBvM,IAAA4E,OACV,gBAAA1E,EAACnB,IAAA,EAEO,MAAA6F,EAAKtG,MACDiO,UAAAA,GACG,uBAAU3H,EAAKtG,KAAK2B,IAAK,IAC5B,UAAA,MAAMZ,EAASuF,EAAK0F,EAAG,KAJ5B1F,EAAK0F,EAIwB,GAErCrL,OAAAI,GAAAJ,OAAAsN,GAAAtN,OAAAe,KAAAA,IAAAf,EAAA,CAAA,GARAS,IAAA0T,EAAMpI,IAAKhL,CAQX,GAACf,OAAAI,GAAAJ,OAAAsN,GAAAtN,OAAAmU,GAAAnU,OAAAS;AAAAA,EAAA;AAAAA,IAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAe;AAAA,EAAAf,SAAAS,KATJM,IAAA,gBAAAE,EAACsU,IAAA,EAAS,KAAA,OACP9U,UAAAA,GASH,GAAOT,OAAAS,GAAAT,QAAAe,KAAAA,IAAAf,EAAA,EAAA;AAAA,MAAAmB;AAAA,SAAAnB,EAAA,EAAA,MAAAQ,KAAAR,UAAAe,KAZTI,sBAACqU,IAAA,EAAU,KAAA,OAAW,MAAA,KACpBhV,UAAAA;AAAAA,IAAAA;AAAAA,IACAO;AAAAA,EAAAA,GAWF,GAAQf,QAAAQ,GAAAR,QAAAe,GAAAf,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA,GAbRmB;AAaQ,GAICsU,KAAkB1V,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC7B;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAAuJ,QAAAA;AAAAA,IAAA5B,UAAAtT;AAAAA,IAAAmV,aAAAlV;AAAAA,IAAA4M,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,cAAAxM;AAAAA,EAAAA,IAWIhB,GALF+T,IAAAtT,MAAA+B,SAAA,KAAA/B,GACAmV,IAAAlV,MAAA8B,SAAA,iBAAA9B,GAGA8M,IAAAxM,MAAAwB,SAAA,YAAAxB,GAEF,CAAAoT,GAAAyB,CAAA,IAA4BrV,EAAS4L,CAAY,GACjD0J,IAAiBzG,GAAyB,IAAI;AAAE,MAAAjO,GAAAM;AAAA,EAAAzB,SAAAmM,KAEtChL,IAAAA,MAAA;AACRyU,IAAAA,EAAUzJ,CAAY;AAAA,EAAC,GACtB1K,IAAA,CAAC0K,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAmB,GAAAnB,OAAAyB,MAAAN,IAAAnB,EAAA,CAAA,GAAAyB,IAAAzB,EAAA,CAAA,IAFjBc,GAAUK,GAEPM,CAAc;AAAC,MAAAE;AAAA,EAAA3B,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAEH1L,IAAA2M,CAAAA,MAAA;AACbsH,IAAAA,EAAUtH,CAAI,GACdjB,EAAShC,GAAIiD,CAAI;AAAA,EAAC,GACnBtO,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAHD,QAAA8V,IAAenU;AAGb,MAAAC;AAAA,EAAA5B,EAAA,CAAA,MAAA8V,KAAA9V,SAAAmU,KACavS,IAAA4R,CAAAA,MAAqBsC,EAAO3B,EAAM5I,OAAQ5F,OAAWA,EAAK0F,OAAQmI,CAAO,CAAC,GAACxT,OAAA8V,GAAA9V,OAAAmU,GAAAnU,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA;AAA1F,QAAA+V,IAAenU;AAA4E,MAAAI;AAAA,EAAAhC,EAAA,CAAA,MAAAsN,KAAAtN,UAAA2V,KAC5E3T,IAAAsL,IAAA,OACb,gBAAAlM,EAAC6J,IAAA,EAAY,MAAA,MAAa,SAAA,SAAoB,YAAA,GAAY,SAAA,MAAM4K,EAAQrG,SAAewG,SACrF,UAAA;AAAA,IAAA,gBAAA/U,EAACwB,IAAA,EAASwT,QAAmB,SAAA;IAC5BN;AAAAA,EAAAA,GACH,GACD3V,OAAAsN,GAAAtN,QAAA2V,GAAA3V,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AALD,QAAAkW,IAAelU;AAKb,MAAAE;AAAA,EAAAlC,EAAA,EAAA,MAAA8V,KAAA9V,UAAA8T,KAAA9T,EAAA,EAAA,MAAAmU,KAQYjS,IAAA+N,CAAAA,MAAA;AACR6F,IAAAA,EAAOnC,GAAuB/P,MAAKC,KAAMoM,EAAKQ,cAAcmD,SAAnB,CAAA,CAA+B,GAAGO,GAAQL,CAAQ,CAAC,GAC5F7D,EAAKQ,cAAc9K,QAAS;AAAA,EAAH,GAC1B3F,QAAA8V,GAAA9V,QAAA8T,GAAA9T,QAAAmU,GAAAnU,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAgN;AAAA,EAAAhN,EAAA,EAAA,MAAA0V,KAAA1V,UAAA8T,KAAA9T,EAAA,EAAA,MAAAkC,KATH8K,IAAA,gBAAA/L,EAAA,SAAA,EACO4U,KAAAA,GACL,QAAA,IACK,MAAA,QACGH,QAAAA,GACE5B,UAAAA,GACA,UAAA5R,EAAAA,CAGT,GACDlC,QAAA0V,GAAA1V,QAAA8T,GAAA9T,QAAAkC,GAAAlC,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAXJ,QAAAmW,IACEnJ;AAaF,MAAIO,MAAiB,cAAY;AAAA,QAAAJ;AAAA,IAAAnN,EAAA,EAAA,MAAAsN,KAAAtN,UAAA+V,KAAA/V,EAAA,EAAA,MAAAmU,KAK3BhH,sBAACmI,IAAA,EAAsBhI,UAAAA,GAAkB6G,QAAAA,GAAkB4B,UAAAA,GAAM,GAAI/V,QAAAsN,GAAAtN,QAAA+V,GAAA/V,QAAAmU,GAAAnU,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,QAAA8Q;AAAA,WAAA9Q,EAAA,EAAA,MAAAkW,KAAAlW,UAAAmW,KAAAnW,EAAA,EAAA,MAAAmN,KAHvE2D,IAAA,gBAAA1P,EAACiC,GAAA,EAAgB,YAAA,UAAa,KAAA,MAAU,MAAA,KAAU,OAAA,QAC/C8S,UAAAA;AAAAA,MAAAA;AAAAA,MACAD;AAAAA,MACD/I;AAAAA,IAAAA,GACF,GAAOnN,QAAAkW,GAAAlW,QAAAmW,GAAAnW,QAAAmN,GAAAnN,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA,GAJP8Q;AAAAA,EAIO;AAEV,MAAA3D;AAAA,EAAAnN,EAAA,EAAA,MAAAsN,KAAAtN,UAAA+V,KAAA/V,EAAA,EAAA,MAAAmU,KAOKhH,sBAACmI,IAAA,EAAsBhI,UAAAA,GAAkB6G,QAAAA,GAAkB4B,UAAAA,GAAM,GAAI/V,QAAAsN,GAAAtN,QAAA+V,GAAA/V,QAAAmU,GAAAnU,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,MAAA8Q;AAAA,EAAA9Q,EAAA,EAAA,MAAAkW,KAAAlW,UAAAmW,KAAAnW,EAAA,EAAA,MAAAmN,KAHvE2D,sBAAC0E,IAAA,EAAiB,YAAA,SAAY,KAAA,MAAU,MAAA,KACrCW,UAAAA;AAAAA,IAAAA;AAAAA,IACAD;AAAAA,IACD/I;AAAAA,EAAAA,GACF,GAAQnN,QAAAkW,GAAAlW,QAAAmW,GAAAnW,QAAAmN,GAAAnN,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA;AAAA,MAAA+Q;AAAA,SAAA/Q,EAAA,EAAA,MAAAqC,KAAArC,UAAAgB,KAAAhB,EAAA,EAAA,MAAA8Q,KALVC,sBAACnO,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAAyB,aAAA,WACxEyO,UAAAA,GAKF,GAAyB9Q,QAAAqC,GAAArC,QAAAgB,GAAAhB,QAAA8Q,GAAA9Q,QAAA+Q,KAAAA,IAAA/Q,EAAA,EAAA,GANzB+Q;AAMyB,GCvHhBqF,KAAsBrW,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACjC;AAAA,IAAAoL,IAAAA;AAAAA,IAAAc,cAAAA;AAAAA,IAAAnL,MAAAA;AAAAA,IAAAqM,UAAAA;AAAAA,IAAAhL,aAAAA;AAAAA,IAAAiL,UAAAA;AAAAA,IAAAzK,WAAArC;AAAAA,IAAAkB,MAAAjB;AAAAA,EAAAA,IAAoGV,GAAnC8C,IAAArC,MAAA+B,SAAA,KAAA/B,GAAmBkB,IAAAjB,MAAA8B,SAAA,OAAA9B,GACpF,CAAAkF,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY,GAC/C,CAAAkK,GAAAC,CAAA,IAAoC/V,EAAS,EAAK,GAClD+O,IAAmBF,GAA6C,IAAI;AAAE,MAAArO;AAAA,EAAAf,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAC/CtM,IAAA8R,CAAAA,MAAA;AACrB,IAAIvD,EAAUE,WAAUC,aAAaH,EAAUE,OAAQ,GACvDF,EAAUE,UAAWE,WAAW,MAAMrC,EAAShC,GAAIwH,CAAS,GAAG,GAAG;AAAA,EAAhD,GACnB7S,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAHD,QAAA2P,IAAuB5O;AAGrB,MAAAI,GAAAM;AAAA,EAAAzB,SAAAmM,KAEQhL,IAAAA,MAAA;AACRkN,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrB1K,IAAA,CAAC0K,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAmB,GAAAnB,OAAAyB,MAAAN,IAAAnB,EAAA,CAAA,GAAAyB,IAAAzB,EAAA,CAAA,IAFjBc,GAAUK,GAEPM,CAAc;AAAC,MAAAE;AAAA,EAAA3B,SAAA2P,KAEGhO,IAAAmR,CAAAA,MAAA;AACnBzE,IAAAA,EAASyE,CAAQ,GACjBnD,EAAemD,CAAQ;AAAA,EAAC,GACzB9S,OAAA2P,GAAA3P,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAHD,QAAAsQ,IAAqB3O;AAGnB,MAAAC;AAAA,EAAA5B,SAAAsN,KAEkB1L,IAAAA,MAAA;AAClB,IAAK0L,KACHgJ,EAAc,EAAI;AAAA,EACnB,GACFtW,OAAAsN,GAAAtN,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA;AAJD,QAAAuW,IAAoB3U;AAIlB,MAAAI;AAAA,EAAAhC,UAAA2F,KAEiB3D,IAAAA,MAAA;AAEjB,IAAI2D,EAAK6Q,OAAO7J,WAAY,KAC1B2J,EAAc,EAAK;AAAA,EACpB,GACFtW,QAAA2F,GAAA3F,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AALD,QAAA4Q,IAAmB5O;AAKjB,MAAAE;AAAA,EAAAlC,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAEoBI,IAAA8Q,CAAAA,MAAA;AAEpB,IAAIA,EAACK,QAAS,aACZiD,EAAc,EAAK,GACnBtD,EAACyD,eAAAA;AAAAA,EACF,GACFzW,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAND,QAAA0W,IAAsBxU;AAQtB,MAAIoL,GAAQ;AAAA,QAAAN;AAAA,IAAAhN,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAIHgM,IAAA,CAACnK,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,GAAW,GAAIrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,QAAAmN;AAAA,IAAAnN,UAAA2F,KACzEwH,IAAA,gBAAAlM,EAACgN,IAAA,EAAyB,oBAAA,IAAoBtI,UAAAA,GAAM,GAA2B3F,QAAA2F,GAAA3F,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,QAAA8Q;AAAA,WAAA9Q,EAAA,EAAA,MAAAmN,KAAAnN,UAAAgN,KAHnF8D,sBAACxN,GAAA,EAAa,UAAA,YAAgB,MAAA,KAAS,MAAA,WACrC,UAAA,gBAAAlC,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3E2J,UAAAA;AAAAA,MAAAA;AAAAA,MACDG;AAAAA,IAAAA,EAAAA,CACF,EAAA,CACF,GAAMnN,QAAAmN,GAAAnN,QAAAgN,GAAAhN,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA,GALN8Q;AAAAA,EAKM;AAET,MAAA9D;AAAA,SAAAhN,EAAA,EAAA,MAAAqC,KAAArC,UAAA4Q,KAAA5Q,EAAA,EAAA,MAAAsQ,KAAAtQ,UAAAuW,KAAAvW,EAAA,EAAA,MAAA6C,KAAA7C,UAAAqW,KAAArW,EAAA,EAAA,MAAAgB,KAAAhB,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAA0B,KAAA1B,UAAA2F,KAGCqH,IAAA,gBAAA/L,EAACqC,GAAA,EAAa,UAAA,YAAgB,MAAA,KAAS,MAAA,WACrC,UAAA,gBAAArC,EAACqC,GAAA,EAAa,UAAA,YAAqB,WAAA,kBAC/B+S,IAuBA,gBAAAjV,EAACkC,GAAA,EACU,UAAA,YACL,KAAA,KACC,MAAA,KACC,OAAA,KACC,QAAA,MACJ,IAAA,MACS,aAAA,OACA,aAAA,SACA,aAAA,UACC,cAAA,MACX,GAAA,KACS,YAAA,iCACD,WAAA,QACF,QAAA;AAAA,IAAAoG,aAAe;AAAA,EAAA,GACd,SAAA;AAAA,IAAAA,aAAe;AAAA,EAAA,GACV,cAAA;AAAA,IAAAA,aAAe;AAAA,IAAqBE,WAAa;AAAA,EAAA,GAE9D,UAAA;AAAA,IAAA,CAAC/G,uBACCS,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW,EAAA,CACxD;AAAA,IAEF,gBAAApB,EAAC0V,IAAA,EACa3V,cAAAA,GACF,WAAA,UACAsM,UAAAA,GACJ,OAAA,QACA5L,MAAAA,GACO,aAAAmB,IAAA7B,IAAAuB,QACNoD,OAAAA,GACG,UAAA4N,CAAAA,MAAOjD,EAAa0C,EAACnD,OAAOlK,KAAM,GACpCiL,QAAAA,GACG8F,WAAAA,GACL,MAAA,GACC,QAAA,YACP,WAAA,GAAA,CAAS;AAAA,EAAA,EAAA,CAEb,IA5DA,gBAAAtV,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAAuB,QAAA,QAAW,KAAA;KACvER,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA;IAC1D,gBAAApB,EAAC8R,IAAA,EACa/R,cAAAA,GACF,WAAA,UACAsM,UAAAA,GACL,MAAA,KACA,MAAA,WACC5L,MAAAA,GACD,MAAA,QACQ,aAAAmB,IAAA7B,IAAAuB,QACNoD,OAAAA,GACE4Q,SAAAA,GACC,UAAAnD,CAAAA,MAAO9C,EAAa0C,EAACnD,OAAOlK,KAAM,GACnC,SAAAsN,GAAAA,CAIR;AAAA,EAAA,EAAA,CAEL,GA0CJ,GACF,GAAMjT,QAAAqC,GAAArC,QAAA4Q,GAAA5Q,QAAAsQ,GAAAtQ,QAAAuW,GAAAvW,QAAA6C,GAAA7C,QAAAqW,GAAArW,QAAAgB,GAAAhB,QAAAsN,GAAAtN,QAAA0B,GAAA1B,QAAA2F,GAAA3F,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA,GAlENgN;AAkEM;AAtHyB,SAAAiG,GAAAC,GAAA;AAsEnB,EAAIF,EAACK,QAAS,WACZL,EAACvC,cAAc6C,KAAAA;AAChB;ACvEV,MAAMsD,KAAgB7W,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC3B;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAAK,aAAAA;AAAAA,IAAAa,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,cAAA/M;AAAAA,IAAAkB,MAAAjB;AAAAA,EAAAA,IAUIV,GAFFwN,IAAA/M,MAAA+B,SAAA,YAAA/B,GACAkB,IAAAjB,MAAA8B,SAAA,OAAA9B,GAEF,CAAAkF,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY,GAC/C,CAAAkK,GAAAC,CAAA,IAAoC/V,EAAS,EAAK;AAAE,MAAAQ,GAAAI;AAAA,EAAAnB,SAAAmM,KAE1CpL,IAAAA,MAAA;AACRsN,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBhL,IAAA,CAACgL,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAe,GAAAf,OAAAmB,MAAAJ,IAAAf,EAAA,CAAA,GAAAmB,IAAAnB,EAAA,CAAA,IAFjBc,GAAUC,GAEPI,CAAc;AAAC,MAAAM;AAAA,EAAAzB,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAEH5L,IAAA6M,CAAAA,MAAA;AACbD,IAAAA,EAASC,CAAI,GACbjB,EAAShC,GAAIiD,CAAI;AAAA,EAAC,GACnBtO,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAHD,QAAA8V,IAAerU;AAGb,MAAAE;AAAA,EAAA3B,EAAA,CAAA,MAAA8V,KAAA9V,SAAAwM,KAAAxM,EAAA,CAAA,MAAAsN,KAEa3L,IAAAkV,CAAAA,MACb,gBAAA5V,EAACqC,GAAA,EAAgB,aAAA,OAAkB,aAAA,UAAsB,cAAA,MAAU,MAAA,QAAY,MAAA,KAAa,UAAA,WAAgB,OAAA,QAC1G,UAAA,gBAAArC,EAAC6V,IAAA,EACeD,cAAAA,GACF,YAAA,CAACvJ,GACAd,aAAAA,GACD,gBACFsJ,UAAAA,GAAM,GAEpB,GACD9V,OAAA8V,GAAA9V,OAAAwM,GAAAxM,OAAAsN,GAAAtN,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAVD,QAAA+W,IAAepV;AAUb,MAAAC;AAAA,EAAA5B,EAAA,EAAA,MAAAqC,KAAArC,UAAAgB,KACYY,IAAA,gBAAAX,EAACiC,GAAA,EAA4BlC,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW,GAAIrC,QAAAqC,GAAArC,QAAAgB,GAAAhB,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAA7E,QAAAmD,IAAcvB;AAEd,MAAI2L,MAAiB,cAAY;AAC/B,QAAID,GAAQ;AAAA,UAAAtL;AAAA,aAAAhC,UAAA2F,KAER3D,sBAACsB,GAAA,EAAa,UAAA,YAAgB,MAAA,KAAS,MAAA,WACrC,UAAA,gBAAArC,EAACoC,KAAgB,YAAA,UAAmB,WAAA,QAClC,UAAA,gBAAApC,EAACgN,MAAyB,qCAA0B,EAAA,CACtD,EAAA,CACF,GAAMjO,QAAA2F,GAAA3F,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GAJNgC;AAAAA,IAIM;AAET,QAAAA;AAAA,WAAAhC,UAAA8V,KAAA9V,EAAA,EAAA,MAAA+W,KAAA/W,EAAA,EAAA,MAAAqW,KAAArW,EAAA,EAAA,MAAAgB,KAAAhB,UAAA0B,KAAA1B,EAAA,EAAA,MAAA2F,KAGC3D,IAAA,gBAAAf,EAACqC,GAAA,EAAa,UAAA,YAAgB,MAAA,KAAS,MAAA,WACrC,UAAA,gBAAArC,EAACqC,GAAA,EAAa,UAAA,YAAqB,WAAA,QAChC,UAAC+S,IAeA,gBAAApV,EAACqC,GAAA,EACU,UAAA,YACL,KAAA,KACC,MAAA,KACC,OAAA,KACC,QAAA,MACJ,IAAA,MACS,aAAA,OACA,aAAA,UACC,cAAA,MACX,GAAA,KACS,YAAA,iCACH,QAAA;AAAA,MAAAoG,aAAe;AAAA,IAAA,GACT,cAAA;AAAA,MAAAA,aAAe;AAAA,IAAA,GAClB,WAAA6G,CAAAA,MAAA;AACT,MAAIN,EAAKoD,QAAS,aAChBiD,EAAc,EAAK,GACnBrG,EAAKwG,eAAAA;AAAAA,IACN,GAGFM,UAAAA,EAAOpR,CAAK,EAAA,CACf,IApCA,gBAAA1E,EAAC8R,IAAA,EACW,WAAA,UACL,MAAA,KACA,MAAA,WACCrR,MAAAA,GACD,MAAA,QACQV,aAAAA,GACN2E,OAAAA,GACE,SAAA,MAAA;AACP2Q,MAAAA,EAAc,EAAI;AAAA,IAAC,GAEX,UAAArG,CAAAA,MAAW6F,EAAO7F,EAAKJ,OAAOlK,KAAM,EAAA,CAAC,GA2BrD,GACF,GAAM3F,QAAA8V,GAAA9V,QAAA+W,GAAA/W,QAAAqW,GAAArW,QAAAgB,GAAAhB,QAAA0B,GAAA1B,QAAA2F,GAAA3F,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GA1CNgC;AAAAA,EA0CM;AAET,MAAAA;AAAA,EAAAhC,EAAA,EAAA,MAAA+W,KAAA/W,UAAA2F,KAKI3D,IAAA+U,EAAOpR,CAAK,GAAC3F,QAAA+W,GAAA/W,QAAA2F,GAAA3F,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,EAAA,MAAAmD,KAAAnD,UAAAgC,KAFhBE,sBAACsT,IAAA,EAAU,KAAA,MAAU,MAAA,KAAU,OAAA,QAC5BrS,UAAAA;AAAAA,IAAAA;AAAAA,IACAnB;AAAAA,EAAAA,GACH,GAAQhC,QAAAmD,GAAAnD,QAAAgC,GAAAhC,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAHRkC;AAGQ,GC7FC8U,KAAcjX,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACzB;AAAA,IAAAoL,IAAAA;AAAAA,IAAAc,cAAAA;AAAAA,IAAAnL,MAAAA;AAAAA,IAAAiW,MAAAzW;AAAAA,IAAAmS,KAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAvF,UAAAA;AAAAA,IAAAhL,aAAAA;AAAAA,IAAAiL,UAAAA;AAAAA,IAAAzK,WAAApC;AAAAA,IAAAyW,YAAAnW;AAAAA,IAAA+B,WAAA3B;AAAAA,IAAAO,MAAAD;AAAAA,EAAAA,IAcI1B,GAVFkX,IAAAzW,MAAA+B,SAAA,IAAA/B,GAMAqC,IAAApC,MAAA8B,SAAA,KAAA9B,GACAyW,IAAAnW,MAAAwB,SAAA,KAAAxB,GACA+B,IAAA3B,MAAAoB,SAAA,KAAApB,GACAO,IAAAD,MAAAc,SAAA,OAAAd,GAEF,CAAAkE,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY,GAE/CgL,IADgBxE,MAAQpQ,UAAaqQ,MAAQrQ,UAC1B,CAAY2U,GAC/BE,IAA2BtU,KAAA,CAAcqU,GACzC7H,IAAmBF,GAA6C,IAAI;AAAE,MAAAzN;AAAA,EAAA3B,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAE/C1L,IAAAkR,CAAAA,MAAA;AACrB,IAAIvD,EAAUE,WAAUC,aAAaH,EAAUE,OAAQ,GACvDF,EAAUE,UAAWE,WAAW,MAAMrC,EAAShC,GAAIwH,CAAS,GAAG,GAAG;AAAA,EAAhD,GACnB7S,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAHD,QAAA2P,IAAuBhO;AAGrB,MAAAC,GAAAI;AAMF,MANEhC,SAAAmM,KAEQvK,IAAAA,MAAA;AACRyM,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBnK,IAAA,CAACmK,CAAY,GAACnM,OAAAmM,GAAAnM,OAAA4B,GAAA5B,OAAAgC,MAAAJ,IAAA5B,EAAA,CAAA,GAAAgC,IAAAhC,EAAA,CAAA,IAFjBc,GAAUc,GAEPI,CAAc,GAEbsL,GAAQ;AAAA,QAAApL;AAAA,IAAAlC,SAAA2F,KACWzD,sBAAC+L,IAAA,eAAgC,GAA2BjO,OAAA2F,GAAA3F,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAjF,UAAA6Q,IAAqB3O;AAErB,QAAIY,GAAS;AAAA,UAAAkK;AAAA,MAAAhN,EAAA,CAAA,MAAAqC,KAAArC,SAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAGNgM,IAAA,CAACnK,KACA,gBAAA5B,EAACqC,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW,EAAA,CACxD,GACDrC,OAAAqC,GAAArC,OAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,UAAAmN;AAAA,aAAAnN,EAAA,EAAA,MAAAgN,KAAAhN,UAAA6Q,KALH1D,sBAAC7J,GAAA,EACE0J,UAAAA;AAAAA,QAAAA;AAAAA,QAKA6D;AAAAA,MAAAA,GACH,GAAM7Q,QAAAgN,GAAAhN,QAAA6Q,GAAA7Q,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GAPNmN;AAAAA,IAOM;AAET,QAAAH;AAAA,IAAAhN,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAKMgM,IAAA,CAACnK,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,GAAW,GAAIrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,QAAAmN;AAAA,WAAAnN,EAAA,EAAA,MAAAgN,KAAAhN,UAAA6Q,KAF7E1D,IAAA,gBAAAlM,EAACqC,GAAA,EACC,UAAA,gBAAAlC,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3E2J,UAAAA;AAAAA,MAAAA;AAAAA,MACA6D;AAAAA,IAAAA,EAAAA,CACH,EAAA,CACF,GAAM7Q,QAAAgN,GAAAhN,QAAA6Q,GAAA7Q,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GALNmN;AAAAA,EAKM;AAET,MAAAjL;AAAA,EAAAlC,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAA6C,KAAA7C,UAAA4S,KAAA5S,EAAA,EAAA,MAAA2S,KAAA3S,EAAA,EAAA,MAAAgB,KAAAhB,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAA2P,KAAA3P,UAAA0B,KAAA1B,EAAA,EAAA,MAAAiX,KAAAjX,EAAA,EAAA,MAAAoX,KAAApX,UAAA2F,KAIIzD,IAAAkV,sBACE9T,GAAA,EACE,UAAA;AAAA,IAAA,CAACT,uBACCS,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW,EAAA,CACxD;AAAA,IAEF,gBAAApB,EAACoW,IAAA,EACW/J,UAAAA,GACJ,OAAA,QACA5L,MAAAA,GACC,OAAA,GAAGiE,CAAK,IACTsR,MAAAA,GACDtE,KAAAA,GACAC,KAAAA,GACU,eAAA/D,CAAAA,MAAA;AACb,YAAAP,IAAagJ,OAAMC,MAAO1I,EAAO2I,aAAmD,IAAhC7E,KAAA,IAAY9D,EAAO2I;AACvEnJ,MAAAA,EAASC,CAAI,GACbqB,EAAerB,CAAI;AAAA,IAAC,GAGtB,UAAA,gBAAArN,EAACwW,IAAA,EACW,WAAA,UACAnK,UAAAA,GACG,aAAAzK,IAAA7B,IAAAuB,QACJ,SAAA0Q,GAAAA,CAIR,EAAA,CAEL;AAAA,EAAA,EAAA,CACF,IAEA,gBAAA7R,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3E,UAAA;AAAA,IAAA,CAACR,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW;AAAA,IACrE,gBAAApB,EAACoW,IAAA,EACW/J,UAAAA,GACJ,OAAA,QACA5L,MAAAA,GACC,OAAA,GAAGiE,CAAK,IACTsR,MAAAA,GACDtE,KAAAA,GACAC,KAAAA,GACU,eAAAzB,CAAAA,MAAA;AACb,YAAAuG,IAAaJ,OAAMC,MAAO1I,EAAO2I,aAAmD,IAAhC7E,KAAA,IAAY9D,EAAO2I;AACvEnJ,MAAAA,EAASC,CAAI,GACbqB,EAAerB,CAAI;AAAA,IAAC,GAGtB,UAAA,gBAAArN,EAACwW,IAAA,EACW,WAAA,UACAnK,UAAAA,GACG,aAAAzK,IAAA7B,IAAAuB,QACJ,SAAA4Q,GAAAA,IAMb;AAAA,EAAA,GACF,GACDnT,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAA4S,GAAA5S,QAAA2S,GAAA3S,QAAAgB,GAAAhB,QAAAsN,GAAAtN,QAAA2P,GAAA3P,QAAA0B,GAAA1B,QAAAiX,GAAAjX,QAAAoX,GAAApX,QAAA2F,GAAA3F,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAgN;AAAA,EAAAhN,EAAA,EAAA,MAAAqL,KAAArL,EAAA,EAAA,MAAA4S,KAAA5S,EAAA,EAAA,MAAA2S,KAAA3S,EAAA,EAAA,MAAAqN,KAAArN,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAAmX,KAAAnX,EAAA,EAAA,MAAAiX,KAAAjX,UAAA2F,KACAqH,IAAAmK,KACC,gBAAAlW,EAACmI,IAAA,EACWkE,UAAAA,GACH,OAAA,CAAC3H,CAAK,GACPsR,MAAAA,GACDtE,KAAAA,GACAC,KAAAA,GACU,eAAA+E,CAAAA,MAAA;AACbtJ,IAAAA,EAASQ,EAAOlJ,QAAS;AAAA,EAAC,GAEV,kBAAAiS,CAAAA,MAAA;AAChBvK,IAAAA,EAAShC,GAAIwD,EAAOlJ,QAAS;AAAA,EAAC,GAC/B,GAEJ3F,QAAAqL,GAAArL,QAAA4S,GAAA5S,QAAA2S,GAAA3S,QAAAqN,GAAArN,QAAAsN,GAAAtN,QAAAmX,GAAAnX,QAAAiX,GAAAjX,QAAA2F,GAAA3F,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,MAAAmN;AAAA,SAAAnN,EAAA,EAAA,MAAAkC,KAAAlC,UAAAgN,KA9EHG,sBAAC7J,GAAA,EACEpB,UAAAA;AAAAA,IAAAA;AAAAA,IA+DA8K;AAAAA,EAAAA,GAeH,GAAMhN,QAAAkC,GAAAlC,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GA/ENmN;AA+EM;AAzIiB,SAAA8F,GAAAD,GAAA;AAqFX,EAAIA,EAACK,QAAS,WACZL,EAACvC,cAAc6C,KAAAA;AAChB;AAvFU,SAAAH,GAAAC,GAAA;AAkHX,EAAIJ,EAACK,QAAS,WACZL,EAACvC,cAAc6C,KAAAA;AAChB;AC3IV,MAAMuE,KAAeA,CAAClS,GAAegN,GAAaC,MAAgB;AACvE,QAAMkF,IAAQnY,KAAKgT,IAAIA,GAAKC,CAAG,GACzBmF,IAAQpY,KAAKiT,IAAID,GAAKC,CAAG;AAC/B,SAAIjN,IAAQmS,IAAcA,IACtBnS,IAAQoS,IAAcA,IACnBpS;AACT,GAGaqS,KAAaA,CAACrS,GAAesR,GAAcgB,IAAS,MAAM;AACrE,MAAI,EAAEhB,IAAO,GAAI,QAAOtR;AACxB,QAAMuS,IAAQvY,KAAKC,OAAO+F,IAAQsS,KAAUhB,CAAI;AAChD,SAAOgB,IAASC,IAAQjB;AAC1B,GAGakB,KAAkBA,CAACxS,GAAeyS,MAAkB;AAC/D,QAAMC,IAAUf,OAAOgB,UAAU3S,CAAK,IAAI,GAAGA,CAAK,KAAK,GAAG2R,OAAO3R,EAAM9F,QAAQ,CAAC,CAAC,CAAC;AAClF,SAAOuY,IAAO,GAAGC,CAAO,GAAGD,CAAI,KAAKC;AACtC,GChBaE,KAAiBA,CAAC5S,GAAmBgN,GAAaC,GAAaqE,MAA8B;AACxG,QAAMuB,IAAQX,GAAalS,EAAM,CAAC,GAAGgN,GAAKC,CAAG,GACvC6F,IAASZ,GAAalS,EAAM,CAAC,GAAGgN,GAAKC,CAAG;AAC9C,MAAI8F,IAAQ/Y,KAAKgT,IAAI6F,GAAOC,CAAM,GAC9BE,IAAMhZ,KAAKiT,IAAI4F,GAAOC,CAAM;AAChC,SAAIxB,KAAQA,IAAO,MACjByB,IAAQb,GAAaG,GAAWU,GAAOzB,GAAMtE,CAAG,GAAGA,GAAKC,CAAG,GAC3D+F,IAAMd,GAAaG,GAAWW,GAAK1B,GAAMtE,CAAG,GAAGA,GAAKC,CAAG,IAElD,CAAC8F,GAAOC,CAAG;AACpB,GCPaC,KAAc7Y,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACzB;AAAA,IAAAsU,OAAAA;AAAAA,EAAAA,IAAkBxU;AAClB,MAAI,CAACwU,KAASA,IAAQ;AAAC,WAAS;AAAK,MAAA/T;AAAA,EAAAR,SAAAuU,KACnB/T,IAAAoD,MAAKC,KAAM;AAAA,IAAA8I,QAAU4H;AAAAA,EAAAA,GAAS,CAAAsE,GAAApF,MAAcA,KAASc,IAAQ,EAAE,GAACvU,OAAAuU,GAAAvU,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAlF,QAAA8Y,IAAkBtY;AAAiE,MAAAC;AAAA,SAAAT,SAAA8Y,KAGjFrY,IAAA,gBAAAQ,EAACoC,GAAA,EAAoB,gBAAA,iBAAmB,IAAA,OAAkB,eAAA,QACvDyV,UAAAA,EAAS/M,IAAKkH,EAEd,EAAA,CACH,GAAOjT,OAAA8Y,GAAA9Y,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAJPS;AAIO;AAVgB,SAAAwS,GAAA5O,GAAA;AAAA,SAQnB,gBAAApD,EAACqC,KAAyB,OAAA,OAAa,QAAA,YAAc,IAAA,mBAA3Ce,CAA0D;AAAG;ACYxE,MAAM0U,KAAahZ,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACxB;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAAwG,KAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAqE,MAAAzW;AAAAA,IAAA4X,MAAAA;AAAAA,IAAAY,aAAAA;AAAAA,IAAA3L,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAxK,WAAAA;AAAAA,IAAAyK,cAAA9M;AAAAA,EAAAA,IAcIV,GAPFkX,IAAAzW,MAAA+B,SAAA,IAAA/B,GAMA+M,IAAA9M,MAAA8B,SAAA,YAAA9B;AAAwB,MAAAM;AAAA,EAAAf,EAAA,CAAA,MAAAmM,KAAAnM,EAAA,CAAA,MAAA4S,KAAA5S,EAAA,CAAA,MAAA2S,KAAA3S,SAAAiX,KAGqBlW,IAAAA,MAAMwX,GAAepM,GAAcwG,GAAKC,GAAKqE,CAAI,GAACjX,OAAAmM,GAAAnM,OAAA4S,GAAA5S,OAAA2S,GAAA3S,OAAAiX,GAAAjX,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAjG,QAAA,CAAA2F,GAAA0I,CAAA,IAA0B9N,EAAqBQ,CAAkD;AAAE,MAAAI,GAAAM;AAAA,EAAAzB,EAAA,CAAA,MAAAmM,KAAAnM,EAAA,CAAA,MAAA4S,KAAA5S,EAAA,CAAA,MAAA2S,KAAA3S,SAAAiX,KAEzF9V,IAAAA,MAAA;AACRkN,IAAAA,EAASkK,GAAepM,GAAcwG,GAAKC,GAAKqE,CAAI,CAAC;AAAA,EAAC,GACrDxV,IAAA,CAAC0K,GAAcwG,GAAKC,GAAKqE,CAAI,GAACjX,OAAAmM,GAAAnM,OAAA4S,GAAA5S,OAAA2S,GAAA3S,OAAAiX,GAAAjX,OAAAmB,GAAAnB,QAAAyB,MAAAN,IAAAnB,EAAA,CAAA,GAAAyB,IAAAzB,EAAA,EAAA,IAFjCc,GAAUK,GAEPM,CAA8B;AAAC,MAAAE;AAAA,EAAA3B,EAAA,EAAA,MAAAoY,KAAApY,UAAA2F,EAAA,CAAA,KAEjBhE,IAAAwW,GAAgBxS,EAAK,CAAA,GAAKyS,CAAI,GAACpY,QAAAoY,GAAApY,QAAA2F,EAAA,CAAA,GAAA3F,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,MAAA4B;AAAA,EAAA5B,EAAA,EAAA,MAAAoY,KAAApY,UAAA2F,EAAA,CAAA,KAAM/D,IAAAuW,GAAgBxS,EAAK,CAAA,GAAKyS,CAAI,GAACpY,QAAAoY,GAAApY,QAAA2F,EAAA,CAAA,GAAA3F,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAArF,QAAAmD,IAAc,GAAGxB,CAA+B,MAAMC,CAA+B,IACrFgM,IAAmBL,MAAiB;AAEpC,MAAID,GAAQ;AACV,QAAIM,GAAU;AAAA,UAAA5L;AAAA,aAAAhC,UAAAmD,KACLnB,sBAACiM,IAAA,eAAgC,GAA2BjO,QAAAmD,GAAAnD,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GAA5DgC;AAAAA,IAA4D;AACpE,QAAAA;AAAA,IAAAhC,UAAAmD,KAIGnB,sBAACiM,IAAA,eAAgC,GAA2BjO,QAAAmD,GAAAnD,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,QAAAkC;AAAA,WAAAlC,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAA8C,KAAA9C,EAAA,EAAA,MAAAgB,KAAAhB,UAAAgC,KAD9DE,IAAA,gBAAAjB,EAAC2B,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAAwBS,WAAAA,GACvEd,UAAAA,GACF,GAAyBhC,QAAAqC,GAAArC,QAAA8C,GAAA9C,QAAAgB,GAAAhB,QAAAgC,GAAAhC,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAFzBkC;AAAAA,EAEyB;AAE5B,MAAAF;AAAA,EAAAhC,UAAAmD,KAGCnB,sBAACd,MAAe,WAAA,mBAAwB,OAAA,YAAsB,YAAA,uBAE9D,GAAOlB,QAAAmD,GAAAnD,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAHT,QAAAiZ,IACEjX;AAGA,MAAAE;AAAA,EAAAlC,EAAA,EAAA,MAAA4S,KAAA5S,UAAA2S,KAAA3S,EAAA,EAAA,MAAAiX,KASmB/U,IAAA2M,CAAAA,MACbR,EAASkK,GAAe1J,EAAOlJ,OAAsBgN,GAAKC,GAAKqE,CAAI,CAAC,GAACjX,QAAA4S,GAAA5S,QAAA2S,GAAA3S,QAAAiX,GAAAjX,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAgN;AAAA,EAAAhN,EAAA,EAAA,MAAAqL,KAAArL,EAAA,EAAA,MAAA4S,KAAA5S,EAAA,EAAA,MAAA2S,KAAA3S,EAAA,EAAA,MAAAqN,KAAArN,UAAAiX,KAErDjK,IAAAmE,CAAAA,MAAA;AAChB,UAAA7C,IAAaiK,GAAe1J,EAAOlJ,OAAsBgN,GAAKC,GAAKqE,CAAI;AACvE5I,IAAAA,EAASC,CAAI,GACbjB,EAAShC,GAAIiD,CAAI;AAAA,EAAC,GACnBtO,QAAAqL,GAAArL,QAAA4S,GAAA5S,QAAA2S,GAAA3S,QAAAqN,GAAArN,QAAAiX,GAAAjX,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,MAAAmN;AAAA,EAAAnN,UAAA4S,KAAA5S,EAAA,EAAA,MAAA2S,KAAA3S,EAAA,EAAA,MAAAiX,KAAAjX,EAAA,EAAA,MAAAkC,KAAAlC,UAAAgN,KAAAhN,EAAA,EAAA,MAAA2F,KAbHwH,sBAAC/D,IAAA,EACM,MAAA,MACEzD,OAAAA,GACFgN,KAAAA,GACAC,KAAAA,GACCqE,MAAAA,GACS,eAAA/U,GAGG,kBAAA8K,EAAAA,CAIjB,GACDhN,QAAA4S,GAAA5S,QAAA2S,GAAA3S,QAAAiX,GAAAjX,QAAAkC,GAAAlC,QAAAgN,GAAAhN,QAAA2F,GAAA3F,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,MAAA8Q;AAAA,EAAA9Q,UAAAgZ,KACFlI,sBAAC8H,IAAA,EAAmBI,OAAAA,EAAAA,CAAW,GAAIhZ,QAAAgZ,GAAAhZ,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA;AAAA,MAAA+Q;AAAA,EAAA/Q,EAAA,EAAA,MAAAmN,KAAAnN,UAAA8Q,KAhBrCC,sBAACzN,GAAA,EACC6J,UAAAA;AAAAA,IAAAA;AAAAA,IAeA2D;AAAAA,EAAAA,GACF,GAAM9Q,QAAAmN,GAAAnN,QAAA8Q,GAAA9Q,QAAA+Q,KAAAA,IAAA/Q,EAAA,EAAA;AAlBR,QAAAkZ,IACEnI;AAoBF,MAAInD,GAAU;AAAA,QAAAqD;AAAA,IAAAjR,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAEiBmP,IAAA;AAAA,MAAA3P,WAAa;AAAA,MAAcyS,QAAU;AAAA,QAAAoF,UAAY;AAAA,MAAA;AAAA,IAAE,GAAGnZ,QAAAiR,KAAAA,IAAAjR,EAAA,EAAA;AAE/B,UAAAkR,IAAA,GAAGlQ,CAAI,KAAKmC,CAAK;AAAE,QAAAiO;AAAA,IAAApR,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAE/DsP,IAAA,gBAAAnQ,EAACwB,IAAA,EAAS0I,IAAAA,IAAqB,SAAA,QAAM,GAAGnL,QAAAoR,KAAAA,IAAApR,EAAA,EAAA;AAAA,QAAA2R;AAAA,IAAA3R,EAAA,EAAA,MAAAmD,KAAAnD,UAAAkR,KAH5CS,IAAA,gBAAA1Q,EAAAI,GAAA,SAAA,EAAiB,SAAA,IACf,UAAA,gBAAAD,EAAC6J,IAAA,EAAY,MAAA,MAAa,SAAA,SAAoB,cAAAiG,GAC3C/N,UAAAA;AAAAA,MAAAA;AAAAA,MACDiO;AAAAA,IAAAA,EAAAA,CACF,EAAA,CACF,GAAkBpR,QAAAmD,GAAAnD,QAAAkR,GAAAlR,QAAA2R,KAAAA,IAAA3R,EAAA,EAAA;AAAA,QAAA4R;AAAA,IAAA5R,UAAAgB,KAKV4Q,IAAA,gBAAA3Q,EAACC,IAAA,EAAe,WAAA,kBAAkBF,UAAAA,GAAK,GAAOhB,QAAAgB,GAAAhB,QAAA4R,KAAAA,IAAA5R,EAAA,EAAA;AAAA,QAAA8R;AAAA,IAAA9R,EAAA,EAAA,MAAA4R,KAAA5R,UAAAiZ,KADhDnH,sBAACzO,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAAoB,KAAA,MAC3DuO,UAAAA;AAAAA,MAAAA;AAAAA,MACCqH;AAAAA,IAAAA,GACH,GAAOjZ,QAAA4R,GAAA5R,QAAAiZ,GAAAjZ,QAAA8R,KAAAA,IAAA9R,EAAA,EAAA;AAAA,QAAA+R;AAAA,IAAA/R,EAAA,EAAA,MAAAkZ,KAAAlZ,UAAA8R,KANbC,sBAAA1Q,GAAA,YAAA,EACE,UAAA,gBAAAJ,EAAAI,GAAA,SAAA,EAAuB,OAAA,MAAa,SAAA,MAAgB,YAAA,MAClD,UAAA,gBAAAD,EAACoU,IAAA,EAAU,KAAA,MACT1D,UAAAA;AAAAA,MAAAA;AAAAA,MAICoH;AAAAA,IAAAA,EAAAA,CACH,GACF,GACF,GAAqBlZ,QAAAkZ,GAAAlZ,QAAA8R,GAAA9R,QAAA+R,KAAAA,IAAA/R,EAAA,EAAA;AAAA,QAAAgS;AAAA,WAAAhS,EAAA,EAAA,MAAA2R,KAAA3R,UAAA+R,KAjBvBC,IAAA,gBAAA5Q,EAAAC,GAAA,MAAA,EAA2B,aAAA4P,GACzBU,UAAAA;AAAAA,MAAAA;AAAAA,MAMAI;AAAAA,IAAAA,GAWF,GAAe/R,QAAA2R,GAAA3R,QAAA+R,GAAA/R,QAAAgS,KAAAA,IAAAhS,EAAA,EAAA,GAlBfgS;AAAAA,EAkBe;AAElB,MAAAf;AAAA,SAAAjR,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAAgB,KAAAhB,EAAA,EAAA,MAAAkZ,KAAAlZ,UAAAiZ,KAGChI,IAAA,gBAAAhQ,EAAC2B,MAA6B5B,MAAAA,GAAmBqB,aAAAA,GAAyB,aAAA,WAAyB4W,eAAAA,GAChGC,UAAAA,EAAAA,CACH,GAAyBlZ,QAAAqC,GAAArC,QAAAgB,GAAAhB,QAAAkZ,GAAAlZ,QAAAiZ,GAAAjZ,QAAAiR,KAAAA,IAAAjR,EAAA,EAAA,GAFzBiR;AAEyB,GChHvBmI,KAAaA,CAAChP,wBACjB3H,IAAA,EAAK,IAAIoG,GAAiBuB,EAAOxE,IAAI,GAAG,SAAQ,QAAO,OAAOwE,EAAOC,QAAQ,GAAGD,EAAOC,KAAK,SAAS,YAAW,GAG7GgP,KAAeA,CAACC,MAAiBC,OAAOtK,KAAKqK,GAAM,UAAU,YAAY,GAEzEE,KAAkBA,CAACC,MAAAA;AAAiB,EAAKC,UAAUC,WAAWC,UAAUH,CAAI,EAAEI,MAAM,MAAA;AAAA,GAAe;AAAA,GAU5FC,KAAe/Z,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC1B;AAAA,IAAAmK,QAAAA;AAAAA,IAAA2P,gBAAAA;AAAAA,IAAA3Z,UAAAA;AAAAA,EAAAA,IAA6CL;AAG7C,MAAI,CAFgByL,GAAQpB,EAAMkP,QAASlP,EAAMb,OAAQa,EAAM4P,WAE/C;AAAA,QAAAxZ;AAAA,WAAAR,EAAA,CAAA,MAAAoK,EAAApJ,QACPR,IAAA,gBAAAS,EAACsC,IAAA,EAAM6G,UAAAA,EAAMpJ,MAAM,GAAOhB,EAAA,CAAA,IAAAoK,EAAApJ,MAAAhB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAA1BQ;AAAAA,EAA0B;AAClC,MAAAA;AAAA,EAAAR,SAAA+Z,KAAA/Z,EAAA,CAAA,MAAAoK,EAAA4P,YAAAha,EAAA,CAAA,MAAAoK,EAAAkP,QAAAtZ,EAAA,CAAA,MAAAoK,EAAAb,OAGC/I,IAAA4J,EAAMkP,QAASlP,EAAMkP,KAAK3M,SAAU,IAApC,MACU0M,GAAajP,EAAMkP,IAAM,IAC/BlP,EAAMb,OAANwQ,IAAA,MACQA,EAAe3P,EAAMb,GAAK,IAChCa,EAAM4P,WAAN,MACQR,GAAgBpP,EAAM4P,QAAU,IADxCzX,QAEWvC,OAAA+Z,GAAA/Z,EAAA,CAAA,IAAAoK,EAAA4P,UAAAha,EAAA,CAAA,IAAAoK,EAAAkP,MAAAtZ,EAAA,CAAA,IAAAoK,EAAAb,KAAAvJ,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAPnB,QAAAia,IACEzZ,GAUYC,IAAA2J,EAAMpJ;AAAK,MAAAD;AAAA,EAAAf,SAAAoK,KACfrJ,IAAAqY,GAAWhP,CAAM,GAACpK,OAAAoK,GAAApK,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAA,MAAAmB;AAAA,EAAAnB,SAAAia,KAEd9Y,IAAA8Y,IAAA,MAAqBA,EAAAA,IAArB1X,QAA+CvC,OAAAia,GAAAja,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA;AAAA,MAAAyB;AAAA,EAAAzB,UAAAI,KAC/CqB,IAAArB,IAAA,MAAiBA,EAAAA,IAAjBmC,QAAuCvC,QAAAI,GAAAJ,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AAAA,MAAA2B;AAAA,SAAA3B,EAAA,EAAA,MAAAoK,EAAApJ,QAAAhB,EAAA,EAAA,MAAAe,KAAAf,EAAA,EAAA,MAAAmB,KAAAnB,UAAAyB,KALnDE,IAAA,gBAAAV,EAACiZ,IAAA,EACW,UAAAzZ,GACJ,MAAAM,GACD,MAAA,MACK,UAAAI,GACA,UAAAM,EAAAA,CAAuC,GACjDzB,EAAA,EAAA,IAAAoK,EAAApJ,MAAAhB,QAAAe,GAAAf,QAAAmB,GAAAnB,QAAAyB,GAAAzB,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA,GANF2B;AAME,GAWOwY,KAAmBpa,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC9B;AAAA,IAAAmF,SAAAA;AAAAA,IAAA2U,gBAAAA;AAAAA,IAAA3Z,UAAAA;AAAAA,IAAAuK,WAAAA;AAAAA,EAAAA,IAAyD5K;AAEzD,MAAIqF,EAAOuH,WAAY,GAAC;AAGjB,UAAAnM,IAAAmK,KAAA;AAAmB,QAAAlK;AAAA,WAAAT,SAAAQ,KADtBC,sBAACS,IAAA,EAAe,WAAA,mBAAwB,OAAA,YACrCV,UAAAA,GACH,GAAOR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFPS;AAAAA,EAEO;AAEV,MAAAD;AAAA,MAAAR,EAAA,CAAA,MAAA+Z,KAAA/Z,SAAAI,KAAAJ,EAAA,CAAA,MAAAoF,GAAA;AAAA,QAAA3E;AAAA,IAAAT,EAAA,CAAA,MAAA+Z,KAAA/Z,SAAAI,KAIgBK,IAAA2J,CAAAA,MACX,gBAAAnJ,EAAC6Y,IAAA,EAES1P,QAAAA,GACQ2P,gBAAAA,GACN,UAAA3Z,IAAA,MAAiBA,EAASgK,EAAMiB,EAAG,IAAnC9I,OAAAA,GAHL6H,EAAMiB,EAG+C,GAE7DrL,OAAA+Z,GAAA/Z,OAAAI,GAAAJ,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAPAQ,IAAA4E,EAAO2G,IAAKtL,CAOZ,GAACT,OAAA+Z,GAAA/Z,OAAAI,GAAAJ,OAAAoF,GAAApF,OAAAQ;AAAAA,EAAA;AAAAA,IAAAA,IAAAR,EAAA,CAAA;AAAA,MAAAS;AAAA,SAAAT,SAAAQ,KARJC,IAAA,gBAAAQ,EAACsU,IAAA,EAAS,KAAA,OACP/U,UAAAA,GAQH,GAAOR,OAAAQ,GAAAR,QAAAS,KAAAA,IAAAT,EAAA,EAAA,GATPS;AASO,GClDL2Z,KAAQA,CAACzU,MACT/B,MAAMyW,QAAQ1U,CAAK,IAAUA,IAC1BA,IAAQ,CAACA,CAAK,IAAI,CAAA,GAGrB2U,KAAiBA,CAACC,GAAenV,MACrCmV,EACGxO,IAAKV,CAAAA,MAAOjG,EAAQ8D,KAAMkB,CAAAA,MAAWA,EAAOiB,OAAOA,CAAE,CAAC,EACtDE,OAAO,CAACnB,MAAqCoB,EAAQpB,CAAO,GAS3DoQ,KAAaza,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACjB;AAAA,IAAA6C,WAAAA;AAAAA,IAAAK,OAAAA;AAAAA,IAAAsX,SAAAA;AAAAA,IAAAlN,cAAAA;AAAAA,EAAAA,IAAoDxN;AAEpD,MAAIwN,MAAiB,cAAY;AAAA,QAAA/M;AAAA,WAAAR,EAAA,CAAA,MAAAya,KAAAza,SAAAmD,KAE7B3C,sBAACgV,IAAA,EAAU,KAAA,OAAiB,YAAA,SAAa,MAAA,KACtCrS,UAAAA;AAAAA,MAAAA;AAAAA,MACAsX;AAAAA,IAAAA,GACH,GAAQza,OAAAya,GAAAza,OAAAmD,GAAAnD,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAHRQ;AAAAA,EAGQ;AAIZ,MAAIsC,GAAS;AAAA,QAAAtC;AAAA,IAAAR,SAAAmD,KAGP3C,IAAA,gBAAAS,EAACqC,GAAA,EAAO,IAAA,MAAMH,UAAAA,GAAM,GAAMnD,OAAAmD,GAAAnD,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAA,QAAAS;AAAA,WAAAT,EAAA,CAAA,MAAAya,KAAAza,SAAAQ,KAD5BC,sBAAC6C,GAAA,EACC9C,UAAAA;AAAAA,MAAAA;AAAAA,MACCia;AAAAA,IAAAA,GACH,GAAMza,OAAAya,GAAAza,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAHNS;AAAAA,EAGM;AAET,MAAAD;AAAA,SAAAR,EAAA,CAAA,MAAAya,KAAAza,SAAAmD,KAGC3C,IAAA,gBAAAY,EAACiC,KAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3EF,UAAAA;AAAAA,IAAAA;AAAAA,IACAsX;AAAAA,EAAAA,GACH,GAAOza,OAAAya,GAAAza,OAAAmD,GAAAnD,QAAAQ,KAAAA,IAAAR,EAAA,EAAA,GAHPQ;AAGO,GAiBLka,KAAqB3a,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACzB;AAAA,IAAAsK,cAAAA;AAAAA,IAAAnF,SAAAA;AAAAA,IAAAoF,aAAAA;AAAAA,IAAAV,aAAAA;AAAAA,IAAAe,gBAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAApJ,MAAAA;AAAAA,IAAAqJ,UAAAA;AAAAA,EAAAA,IAA8GhL;AAAM,MAAAS;AAAA,SAAAR,EAAA,CAAA,MAAA8J,KAAA9J,EAAA,CAAA,MAAA+K,KAAA/K,EAAA,CAAA,MAAAoF,KAAApF,EAAA,CAAA,MAAAwK,KAAAxK,EAAA,CAAA,MAAA0B,KAAA1B,EAAA,CAAA,MAAA8K,KAAA9K,EAAA,CAAA,MAAAuK,KAAAvK,SAAA6K,KAGlHrK,sBAAC8J,MACeC,cAAAA,GACLnF,SAAAA,GACIoF,aAAAA,GACAV,aAAAA,GACGe,gBAAAA,GACEC,kBAAAA,GACZpJ,MAAAA,GACIqJ,UAAAA,EAAAA,CAAQ,GAClB/K,OAAA8J,GAAA9J,OAAA+K,GAAA/K,OAAAoF,GAAApF,OAAAwK,GAAAxK,OAAA0B,GAAA1B,OAAA8K,GAAA9K,OAAAuK,GAAAvK,OAAA6K,GAAA7K,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GATFQ;AASE,GAIOma,KAAgB5a,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC3B;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAA/G,SAAAA;AAAAA,IAAAiI,UAAAA;AAAAA,IAAA0M,gBAAAA;AAAAA,IAAAzM,UAAAA;AAAAA,IAAAsN,UAAApa;AAAAA,IAAAsJ,aAAArJ;AAAAA,IAAA+L,aAAAA;AAAAA,IAAA7B,WAAAA;AAAAA,IAAA7H,WAAA/B;AAAAA,IAAAwM,cAAApM;AAAAA,IAAAO,MAAAD;AAAAA,EAAAA,IAgBI1B,GAPF6a,IAAApa,MAAA+B,SAAA,KAAA/B,GACAsJ,IAAArJ,MAAA8B,SAAA,KAAA9B,GAGAqC,IAAA/B,MAAAwB,SAAA,KAAAxB,GACAwM,IAAApM,MAAAoB,SAAA,YAAApB,GACAO,IAAAD,MAAAc,SAAA,OAAAd,GAGF,CAAAkE,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY,GAC/CmD,IAAmBF,GAA6C,IAAI;AAAE,MAAAzN,GAAAC;AAAA,EAAA5B,SAAAmM,KAE5DxK,IAAAA,MAAA;AACR0M,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBvK,IAAA,CAACuK,CAAY,GAACnM,OAAAmM,GAAAnM,OAAA2B,GAAA3B,OAAA4B,MAAAD,IAAA3B,EAAA,CAAA,GAAA4B,IAAA5B,EAAA,CAAA,IAFjBc,GAAUa,GAEPC,CAAc;AAEjB,QAAAiZ,IAAmBvM,CAAAA,MAAA;AACjB,IAAIgB,EAAUE,WAAUC,aAAaH,EAAUE,OAAQ,GACvDnC,EAAShC,GAAIiD,CAAI;AAAA,EAAC,GAIpBqB,IAAuB+H,CAAAA,MAAA;AACrB,IAAIpI,EAAUE,WAAUC,aAAaH,EAAUE,OAAQ,GACvDF,EAAUE,UAAWE,WAAW,MAAMrC,EAAShC,GAAIiD,CAAI,GAAG,GAAG;AAAA,EAA3C,GAGpB9D,IAAoB4P,GAAMzU,CAAK,GAC/BmV,IAAwBR,GAAe9P,GAAapF,CAAO,GAC3D2V,IAAoBH,KAAA,CAAatN,GAE8CtL,IAAAuL,MAAiB;AAAY,MAAArL;AAAA,EAAAlC,EAAA,CAAA,MAAAqC,KAAArC,SAAAgB,KAAAhB,EAAA,CAAA,MAAAgC,KAA9FE,sBAACE,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,GAAsB,SAAAL,GAA6B,GAAIhC,OAAAqC,GAAArC,OAAAgB,GAAAhB,OAAAgC,GAAAhC,OAAAkC,KAAAA,IAAAlC,EAAA,CAAA;AAAhH,QAAAmD,IAAcjB;AAEd,MAAI,CAAC6Y;AAAW,WAEZ,gBAAA9Z,EAACuZ,IAAA,EACY1X,WAAAA,GACJK,OAAAA,GACOoK,cAAAA,GACL,SAAA,gBAAAtM,EAACkZ,IAAA,EAA0BW,SAAAA,GAAiCf,gBAAAA,GAA2BpP,WAAAA,EAAAA,CAAS,GAAI;AAKnH,QAAAqQ,IAAqBtN,CAAAA,MAAA;AACnB,QAAI5D,GAAW;AACb,YAAAmR,KAAazQ,EAAWqB,SAAU6B,CAEL,IADzBlD,EAAWe,OAAQ2P,CAAAA,OAAWA,OAAUxN,CACf,IAFhB,CAAA,GAELlD,GAAakD,CAAQ;AAC7BW,MAAAA,EAASC,EAAI,GACbqB,EAAerB,EAAI;AAAC;AAAA,IAAA;AAItB,UAAA6M,IAAa3Q,EAAWqB,SAAU6B,CAAwB,IAA7C,KAAAA;AACbW,IAAAA,EAASC,CAAI,GACbuM,EAAWvM,CAAI;AAAA,EAAC,GAGlB8M,IAAqBC,CAAAA,MAAA;AACnB,UAAAC,IAAa9Q,EAAWe,OAAQgQ,CAAAA,OAAWL,OAAUxN,CAAQ;AAC7DW,IAAAA,EAASC,CAAI,GACbqB,EAAerB,CAAI;AAAA,EAAC;AAGtB,MAAIxE,GAAW;AAAA,QAAAkD;AAAA,IAAAhN,EAAA,CAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAYOkL,IAAA,gBAAA/L,EAACwB,IAAA,EAAS+Y,IAAAA,IAAc,SAAA,QAAM,GAAGxb,OAAAgN,KAAAA,IAAAhN,EAAA,CAAA;AAXrD,UAAAya,IACE,gBAAArZ,EAACiC,GAAA,EAAS,KAAA,OAAiB,YAAA,UAAkB,UAAA,QAAY,MAAA,KACtDyX,UAAAA;AAAAA,MAAAA,EAAenO,SAAU,IACxB,gBAAA1L,EAACkZ,IAAA,EACUW,SAAAA,GACOf,gBAAAA,GACNqB,UAAAA,GACCzQ,WAAAA,EAAAA,CAAS,IALvB;AAAA,wBAQA+P,IAAA,EACe,cAAA1N,GACL5H,SAAAA,GACIoF,aAAAA,GACb,aAAA,IACe,gBAAA,QACG,kBAAAgC,KAAA,OAAsBxL,CAAI,IACtCU,MAAAA,GACIsZ,aAAY;AAAA,IAAA,GAE1B;AACA,WAEK,gBAAA/Z,EAACuZ,IAAA,EAAsB1X,WAAAA,GAAkBK,OAAAA,GAAgBsX,SAAAA,GAAuBlN,cAAAA,GAAY;AAAA,EAAI;AAGzG,QAAAxD,IAAiB+Q,EAAe,CAAA,GAChCvQ,IAAqBR,IACnB,gBAAA3I,EAACiC,GAAA,EAAW,OAAA,UAAa,KAAA,OAAW,MAAA,KAClC,UAAA;AAAA,IAAA,gBAAApC,EAACwB,IAAA,EACK,IAAAoG,GAAiBkB,EAAQnE,IAAK,GAC1B,SAAA,QACD,OAAAmE,EAAQM,QAAR,GAAoBN,EAAQM,KAAM,SAAlC,YAAqD;AAAA,IAE7DN,EAAQ/I;AAAAA,EAAAA,EAAAA,CACX,IAECwL,KAAA;AACD,MAAAQ;AAAA,EAAAhN,EAAA,CAAA,MAAAoF,KAAApF,EAAA,CAAA,MAAAwK,KAAAxK,EAAA,EAAA,MAAA0B,KAAA1B,EAAA,EAAA,MAAAgb,KAAAhb,UAAAuK,KAQIyC,IAAA,gBAAA/L,EAACyZ,MACenQ,cAAAA,GACLnF,SAAAA,GACIoF,aAAAA,GACA,aAAA,IACP9I,MAAAA,GACIsZ,UAAAA,EAAAA,CAAY,GACtBhb,OAAAoF,GAAApF,OAAAwK,GAAAxK,QAAA0B,GAAA1B,QAAAgb,GAAAhb,QAAAuK,GAAAvK,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,MAAAmN;AAAA,SAAAnN,EAAA,EAAA,MAAA8C,KAAA9C,EAAA,EAAA,MAAAmD,KAAAnD,EAAA,EAAA,MAAAuN,KAAAvN,UAAAgN,KAZNG,sBAACqN,IAAA,EACY1X,WAAAA,GACJK,OAAAA,GACOoK,cAAAA,GAEZ,SAAAP,GAOE,GAEJhN,QAAA8C,GAAA9C,QAAAmD,GAAAnD,QAAAuN,GAAAvN,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GAdFmN;AAcE,GCvNOsO,KAAiB1b,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC5B;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAA/G,SAAAA;AAAAA,IAAAsW,SAAAlb;AAAAA,IAAA6M,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAxK,WAAAA;AAAAA,IAAAyK,cAAA9M;AAAAA,EAAAA,IAWIV,GALF2b,IAAAlb,MAAA+B,SAAA,YAAA/B,GAIA+M,IAAA9M,MAAA8B,SAAA,YAAA9B,GAEF,CAAAkF,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY;AAAE,MAAApL,GAAAI;AAAA,EAAAnB,SAAAmM,KAEvCpL,IAAAA,MAAA;AACRsN,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBhL,IAAA,CAACgL,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAe,GAAAf,OAAAmB,MAAAJ,IAAAf,EAAA,CAAA,GAAAmB,IAAAnB,EAAA,CAAA,IAFjBc,GAAUC,GAEPI,CAAc;AAAC,MAAAM;AAAA,EAAAzB,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAEH5L,IAAA6M,CAAAA,MAAA;AACbD,IAAAA,EAASC,CAAI,GACbjB,EAAShC,GAAIiD,CAAI;AAAA,EAAC,GACnBtO,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAHD,QAAAuO,IAAe9M;AAGb,MAAAE;AAAA,EAAA3B,EAAA,CAAA,MAAAoF,KAAApF,SAAA2F,KAEmBhE,IAAAyD,EAAO8D,KAAMkB,CAAAA,MAAYA,EAAMiB,OAAQ1F,CAAW,GAAC3E,QAAnD2E,GAA4D3F,OAAAoF,GAAApF,OAAA2F,GAAA3F,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAAjF,QAAA6N,IAAqBlM,GACrBiM,IAAmBL,MAAiB;AAEpC,MAAID,GAAQ;AAAA,QAAA1L;AAAA,IAAA5B,SAAA6N,KAGNjM,sBAACqM,IAAA,eAAuC,GAA2BjO,OAAA6N,GAAA7N,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAAA,QAAAgC;AAAA,WAAAhC,EAAA,EAAA,MAAAqC,KAAArC,EAAA,EAAA,MAAA8C,KAAA9C,EAAA,EAAA,MAAA4N,KAAA5N,EAAA,EAAA,MAAAgB,KAAAhB,UAAA4B,KADrEI,sBAACY,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAAwBuL,WAAAA,GAAuB9K,WAAAA,GAC9FlB,UAAAA,EAAAA,CACF,GAAyB5B,QAAAqC,GAAArC,QAAA8C,GAAA9C,QAAA4N,GAAA5N,QAAAgB,GAAAhB,QAAA4B,GAAA5B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GAFzBgC;AAAAA,EAEyB;AAI7B,MAAI4L,GAAU;AAAA,QAAAhM;AAAA,IAAA5B,UAAA2F,KAKK/D,IAAA,CAAC+D,CAAK,GAAC3F,QAAA2F,GAAA3F,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAAA,QAAAgC;AAAA,WAAAhC,EAAA,EAAA,MAAAoF,KAAApF,EAAA,EAAA,MAAAuO,KAAAvO,EAAA,EAAA,MAAA6N,KAAA7N,UAAA4B,KAHtBI,IAAA,gBAAAf,EAACqJ,IAAA,EACeuD,cAAAA,GACLzI,SAAAA,GACI,aAAAxD,GACA,aAAA,IACH2M,UAAAA,EAAAA,CAAM,GAChBvO,QAAAoF,GAAApF,QAAAuO,GAAAvO,QAAA6N,GAAA7N,QAAA4B,GAAA5B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GANFgC;AAAAA,EAME;AAEL,MAAAJ,GAAAI,GAAAE;AAAA,EAAAlC,EAAA,EAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KAWWF,IAAA;AAAA,IAAA8H,aAAe;AAAA,EAAA,GACd1H,IAAA;AAAA,IAAA0H,aAAe;AAAA,EAAA,GACVxH,IAAA;AAAA,IAAAwH,aAAe;AAAA,IAAqBE,WAAa;AAAA,EAAA,GAAQ5J,QAAA4B,GAAA5B,QAAAgC,GAAAhC,QAAAkC,MAAAN,IAAA5B,EAAA,EAAA,GAAAgC,IAAAhC,EAAA,EAAA,GAAAkC,IAAAlC,EAAA,EAAA;AAAA,MAAAgN;AAAA,MAAAhN,EAAA,EAAA,MAAAoF,KAAApF,EAAA,EAAA,MAAAuO,KAAAvO,EAAA,EAAA,MAAA2F,KAAA3F,UAAA0b,GAAA;AAAA,QAAAvO;AAAA,IAAAnN,EAAA,EAAA,MAAAuO,KAAAvO,UAAA2F,KAAA3F,EAAA,EAAA,MAAA0b,KAE1DvO,IAAAjB,CAAAA,MAAA;AACX,YAAAnC,IAAiBK,EAAMiB,OAAQ1F;AAAM,+BAElCsF,IAAA,EAEM,MAAA,KACA,MAAA,MACI,SAAAlB,IAAA,WAAA,SACI,cAAA,KACCA,mBACL,SAAA,MAAMwE,EAAOnE,EAAMiB,EAAG,GAE9BqQ,UAAAA;AAAAA,QAAAA,MAAY,SACX,gBAAAza,EAACqC,GAAA,EAAY,SAAA,UAAsB,cAAA,QAAW,IAAA8G,EAAMuR,kBAAN,YAAwC,IAAA,KAAG,IAD1F;AAAA,QAGAvR,EAAMpJ;AAAAA,MAAAA,EAAAA,GAXFoJ,EAAMiB,EAYb;AAAA,IAAS,GAEZrL,QAAAuO,GAAAvO,QAAA2F,GAAA3F,QAAA0b,GAAA1b,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GAlBAgN,IAAA5H,EAAO2G,IAAKoB,CAkBZ,GAACnN,QAAAoF,GAAApF,QAAAuO,GAAAvO,QAAA2F,GAAA3F,QAAA0b,GAAA1b,QAAAgN;AAAAA,EAAA;AAAAA,IAAAA,IAAAhN,EAAA,EAAA;AAAA,MAAAmN;AAAA,EAAAnN,UAAAgN,KA9BJG,IAAA,gBAAAlM,EAAC2a,MACC,cACM,OAAA,QACM,aAAA,OACA,aAAA,UACC,cAAA,MACJ,UAAA,UACE,YAAA,iCACH,QAAAha,GACC,SAAAI,GACK,cAAAE,GAEb8K,UAAAA,EAAAA,CAmBH,GAAQhN,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAhCV,QAAA4K,IACEuC;AAgCA,MAAA2D;AAAA,SAAA9Q,EAAA,EAAA,MAAAqC,KAAArC,UAAA4K,KAAA5K,EAAA,EAAA,MAAAgB,KAGA8P,sBAAClO,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAAyB,aAAA,WACvEuI,UAAAA,GACH,GAAyB5K,QAAAqC,GAAArC,QAAA4K,GAAA5K,QAAAgB,GAAAhB,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA,GAFzB8Q;AAEyB,GC1EhB+K,KAAiB9b,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAC5B;AAAA,IAAAoL,IAAAA;AAAAA,IAAAc,cAAAA;AAAAA,IAAAnL,MAAAA;AAAAA,IAAAoE,SAAAA;AAAAA,IAAAiI,UAAAA;AAAAA,IAAAhL,aAAAA;AAAAA,IAAAiL,UAAAA;AAAAA,IAAAzK,WAAArC;AAAAA,IAAAsJ,aAAArJ;AAAAA,IAAA+L,aAAAA;AAAAA,IAAA1J,WAAA/B;AAAAA,IAAA+a,WAAA3a;AAAAA,IAAAhB,UAAAsB;AAAAA,IAAAgJ,YAAA9I;AAAAA,IAAA+I,mBAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAlJ,MAAAE;AAAAA,EAAAA,IAmBI7B,GAXF8C,IAAArC,MAAA+B,SAAA,KAAA/B,GACAsJ,IAAArJ,MAAA8B,SAAA,KAAA9B,GAEAqC,IAAA/B,MAAAwB,SAAA,KAAAxB,GACA+a,IAAA3a,MAAAoB,SAAA,KAAApB,GACAhB,IAAAsB,MAAAc,SAAA,KAAAd,GACAgJ,IAAA9I,MAAAY,SAAA,KAAAZ,GAIAD,IAAAE,MAAAW,SAAA,OAAAX,GAEF,CAAA+D,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY,GAC/C,CAAA4P,GAAAC,CAAA,IAAoCzb,EAASqK,GAAKuB,gBAAL,EAAyB;AAAE,MAAAnK,GAAAE;AAAA,EAAAlC,SAAAmM,KAE9DnK,IAAAA,MAAA;AACRqM,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBjK,IAAA,CAACiK,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAgC,GAAAhC,OAAAkC,MAAAF,IAAAhC,EAAA,CAAA,GAAAkC,IAAAlC,EAAA,CAAA,IAFjBc,GAAUkB,GAEPE,CAAc;AAAC,MAAA8K;AAAA,EAAAhN,EAAA,CAAA,MAAA4K,GAAAuB,gBAERa,IAAAA,MAAA;AACRgP,IAAAA,EAAcpR,GAAKuB,gBAAL,EAAyB;AAAA,EAAC,GACzCnM,EAAA,CAAA,IAAA4K,GAAAuB,cAAAnM,OAAAgN,KAAAA,IAAAhN,EAAA,CAAA;AAAG,QAAAmN,IAAAvC,GAAKuB;AAAc,MAAA2E;AAAA,EAAA9Q,SAAAmN,KAApB2D,IAAA,CAAC3D,CAAmB,GAACnN,OAAAmN,GAAAnN,OAAA8Q,KAAAA,IAAA9Q,EAAA,CAAA,GAFxBc,GAAUkM,GAEP8D,CAAqB;AAAC,MAAAC;AAAA,EAAA/Q,EAAA,CAAA,MAAA8J,KAAA9J,SAAA2F,KAELoL,IAAAjH,IAChBlG,MAAKyW,QAAS1U,CAEX,IAFHA,IAAA,KAGA,OAAOA,KAAU,YAAjBA,IAAA,CACGA,CAAK,IADR,CAAA,GAEI3F,OAAA8J,GAAA9J,OAAA2F,GAAA3F,OAAA+Q,KAAAA,IAAA/Q,EAAA,CAAA;AANR,QAAAwK,IAAoBuG;AAMX,MAAAE;AAAA,EAAAjR,EAAA,EAAA,MAAAoF,KAAApF,UAAAwM,KAAAxM,EAAA,EAAA,MAAAwK,KAEcyG,IAAAA,MAAA;AACrB,UAAAgL,IAAczR,EAAWuB,IAClBmQ,CAAAA,OAAgB9W,EAAO8D,KAAMkB,CAAAA,OAAYA,GAAMiB,OAAQ6Q,EAAgB,GAAClb,IAAA,EAACuK,OACtE0H,EAAyD;AAEnE,WAAIgJ,EAAKtP,WAAY,IAAUH,KAAA,WAC3ByP,EAAKtP,UAAW,IAAUsP,EAAKxQ,KAAM,IAAI,IACtC,GAAGwQ,EAAKhI,MAAO,GAAG,CAAC,EAACxI,KAAM,IAAI,CAAC,MAAMwQ,EAAKtP,SAAU,GAACjN,UAAY;AAAA,EAAE,GAC3EM,QAAAoF,GAAApF,QAAAwM,GAAAxM,QAAAwK,GAAAxK,QAAAiR,KAAAA,IAAAjR,EAAA,EAAA;AARD,QAAAmc,IAAuBlL;AAQrB,MAAAC;AAAA,EAAAlR,EAAA,EAAA,MAAAqL,KAAArL,UAAAqN,KAEa6D,IAAA2B,CAAAA,MAAA;AACbxE,IAAAA,EAASwE,CAAS,GAClBxF,EAAShC,GAAIwH,CAAS;AAAA,EAAC,GACxB7S,QAAAqL,GAAArL,QAAAqN,GAAArN,QAAAkR,KAAAA,IAAAlR,EAAA,EAAA;AAHD,QAAA8V,IAAe5E;AAGb,MAAAE;AAAA,EAAApR,EAAA,EAAA,MAAA8b,KAAA9b,EAAA,EAAA,MAAA8V,KAAA9V,EAAA,EAAA,MAAA8J,KAAA9J,UAAAwK,KAEmB4G,IAAA1D,CAAAA,MAAA;AACnB,QAAI,CAAC5D,GAAW;AAGdgM,MAAAA,EAAOgG,KAAatR,EAAWqB,SAAU6B,CAAQ,IAA1C,KAAAA,CAA2D;AAAC;AAAA,IAAA;AAGrEoI,IAAAA,EACEtL,EAAWqB,SAAU6B,CAAuF,IAA3ElD,EAAWe,OAAQwB,CAAAA,OAAUA,OAASW,CAAqC,IAA5G,IAAuFlD,GAAakD,CAAQ,CAC9G;AAAA,EAAC,GACF1N,QAAA8b,GAAA9b,QAAA8V,GAAA9V,QAAA8J,GAAA9J,QAAAwK,GAAAxK,QAAAoR,KAAAA,IAAApR,EAAA,EAAA;AAVD,QAAAoc,KAAqBhL;AAUnB,MAAAO;AAAA,EAAA3R,EAAA,EAAA,MAAA4K,KAAA5K,UAAA+b,KAAA/b,EAAA,EAAA,MAAAqN,KAEwBsE,KAAA0J,CAAAA,MAAA;AACxB,IAAI,CAACzQ,KAAS8C,MAAaqO,MAC3BC,EAActO,CAAQ,GACtBL,EAASzC,EAAKS,IAAKqC,CAAQ;AAAA,EAAC,GAC7B1N,QAAA4K,GAAA5K,QAAA+b,GAAA/b,QAAAqN,GAAArN,QAAA2R,MAAAA,KAAA3R,EAAA,EAAA;AAJD,QAAAqc,KAA0B1K;AAIxB,MAAA2K,IAAAnZ,GAAAyO,IAAAE;AAAA,MAAA9R,EAAA,EAAA,MAAAqC,KAAArC,UAAA8C,KAAA9C,EAAA,EAAA,MAAAmc,KAAAnc,EAAA,EAAA,MAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAAAhB,EAAA,EAAA,MAAAoF,KAAApF,UAAAsN,KAAAtN,EAAA,EAAA,MAAAwK,EAAA,CAAA,KAAAxK,EAAA,EAAA,MAAAwK,EAAAmC,QAAA;AAWImF,IAAAA,KAAAjQ,uBAGMC,IAHN,6BAGK;AAAC6S,IAAAA,GAAA;AAXZ,YAAA4H,IAAsB/R,EAAWmC,WAAY,IAAIvH,EAAO8D,KAAMgD,CAAAA,OAAY9B,GAAMiB,OAAQb,EAAW,CAAA,CAAe,IAA5FjI;AAA8F,UAAAwP;AAGpH,UAHoH/R,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KACtG+Q,KAAClP,IAAD,yBAAcT,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,GAAW,GAAWrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAA+R,MAAAA,KAAA/R,EAAA,EAAA,GAA5FmD,IAAc4O,IAEVzE,GAAQ;AAAA,YAAA0E;AAAA,QAAAhS,UAAAmc,KACsCnK,KAAAmK,EAAAA,GAAgBnc,QAAAmc,GAAAnc,QAAAgS,MAAAA,KAAAhS,EAAA,EAAA;AAAA,YAAAiS;AAAA,QAAAjS,UAAAgS,MAA3CC,KAAA,gBAAAhR,EAACgN,IAAA,EAA0B+D,UAAAA,GAAAA,CAAiB,GAA2BhS,QAAAgS,IAAAhS,QAAAiS,MAAAA,KAAAjS,EAAA,EAAA;AAA5F,cAAA6Q,KAAqBoB;AAErB,YAAInP,GAAS;AAAA,cAAAoP;AAAA,UAAAlS,UAAAmD,KAGN+O,KAAA/O,IAAQ,gBAAAlC,EAACqC,KAAO,IAAA,mBAAY,IAA5B,MAAyCtD,QAAAmD,GAAAnD,QAAAkS,MAAAA,KAAAlS,EAAA,EAAA;AAAA,cAAAmS;AAAA,UAAAnS,EAAA,EAAA,MAAAkS,MAAAlS,UAAA6Q,MAD5CsB,uBAAC7O,GAAA,EACE4O,UAAAA;AAAAA,YAAAA;AAAAA,YACArB;AAAAA,UAAAA,GACH,GAAM7Q,QAAAkS,IAAAlS,QAAA6Q,IAAA7Q,QAAAmS,MAAAA,KAAAnS,EAAA,EAAA,GAHN8R,KAAAK;AAAA,gBAAAwC;AAAAA,QAGM;AACN,YAAAzC;AAAA,QAAAlS,EAAA,EAAA,MAAAmD,KAAAnD,UAAA6Q,MAGFqB,KAAA,gBAAAjR,EAACqC,GAAA,EACC,UAAA,gBAAAlC,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3EF,UAAAA;AAAAA,UAAAA;AAAAA,UACA0N;AAAAA,QAAAA,EAAAA,CACH,EAAA,CACF,GAAM7Q,QAAAmD,GAAAnD,QAAA6Q,IAAA7Q,QAAAkS,MAAAA,KAAAlS,EAAA,EAAA,GALN8R,KAAAI;AAAA,cAAAyC;AAAAA,MAKM;AAKP2H,MAAAA,KAAAhS,IAGMsH,KAAAzH,GAAoBoS,GAAe,MAAM;AAAA,IAAC;AAAAvc,IAAAA,QAAAqC,GAAArC,QAAA8C,GAAA9C,QAAAmc,GAAAnc,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAAoF,GAAApF,QAAAsN,GAAAtN,QAAAwK,EAAA,CAAA,GAAAxK,EAAA,EAAA,IAAAwK,EAAAmC,QAAA3M,QAAAsc,IAAAtc,QAAAmD,GAAAnD,QAAA4R,IAAA5R,QAAA8R;AAAAA,EAAA;AAAAwK,IAAAA,KAAAtc,EAAA,EAAA,GAAAmD,IAAAnD,EAAA,EAAA,GAAA4R,KAAA5R,EAAA,EAAA,GAAA8R,KAAA9R,EAAA,EAAA;AAAA,MAAA8R,OAAAjQ,uBAAAC,IAAA,6BAAA;AAAA,WAAAgQ;AAAA,MAAAC;AAAA,EAAA/R,UAAAmc,KAC1CpK,KAAAoK,EAAAA,GAAgBnc,QAAAmc,GAAAnc,QAAA+R,MAAAA,KAAA/R,EAAA,EAAA;AAAA,MAAAgS;AAAA,EAAAhS,EAAA,EAAA,MAAA4R,MAAA5R,UAAA+R,MAFnBC,6BACGJ,UAAAA;AAAAA,IAAAA;AAAAA,IACAG;AAAAA,EAAAA,GAAgB,GAChB/R,QAAA4R,IAAA5R,QAAA+R,IAAA/R,QAAAgS,MAAAA,KAAAhS,EAAA,EAAA;AAAA,MAAAiS;AAAA,EAAAjS,EAAA,EAAA,MAAA4K,KAAA5K,UAAA+b,KASE9J,IAAArH,IAAA;AAAA,IAAA,GAAaA;AAAAA,IAAKuB,cAAgB4P;AAAAA,EAAAA,IAAlCxZ,QAA0DvC,QAAA4K,GAAA5K,QAAA+b,GAAA/b,QAAAiS,KAAAA,IAAAjS,EAAA,EAAA;AAAA,MAAAkS;AAAA,EAAAlS,EAAA,EAAA,MAAAsc,MAAAtc,UAAAG,KAAAH,EAAA,EAAA,MAAA2K,KAAA3K,EAAA,EAAA,MAAA8C,KAAA9C,EAAA,EAAA,MAAAqc,MAAArc,EAAA,EAAA,MAAAoc,MAAApc,EAAA,EAAA,MAAA8J,KAAA9J,EAAA,EAAA,MAAAoF,KAAApF,EAAA,EAAA,MAAA0K,KAAA1K,EAAA,EAAA,MAAAyK,KAAAzK,UAAAwK,KAAAxK,EAAA,EAAA,MAAA0B,KAAA1B,EAAA,EAAA,MAAAgS,MAAAhS,EAAA,EAAA,MAAAiS,KAdnEC,sBAACoK,IAAA,EAEG,cAAAtK,IAKO5M,SAAAA,GACIoF,aAAAA,GACAV,aAAAA,GACH3J,UAAAA,GACEsK,YAAAA,GACOC,mBAAAA,GACRC,WAAAA,GACJ,OAAAsH,GACInP,WAAAA,GACLpB,MAAAA,GACI0a,UAAAA,IACKC,eAAAA,IAAiB,GAChCrc,QAAAsc,IAAAtc,QAAAG,GAAAH,QAAA2K,GAAA3K,QAAA8C,GAAA9C,QAAAqc,IAAArc,QAAAoc,IAAApc,QAAA8J,GAAA9J,QAAAoF,GAAApF,QAAA0K,GAAA1K,QAAAyK,GAAAzK,QAAAwK,GAAAxK,QAAA0B,GAAA1B,QAAAgS,IAAAhS,QAAAiS,GAAAjS,QAAAkS,KAAAA,IAAAlS,EAAA,EAAA;AApBJ,QAAAwc,KACEtK;AAsBF,MAAIpP,GAAS;AAAA,QAAAqP;AAAA,IAAAnS,UAAAmD,KAGNgP,IAAAhP,IAAQ,gBAAAlC,EAACqC,KAAO,IAAA,mBAAY,IAA5B,MAAyCtD,QAAAmD,GAAAnD,QAAAmS,KAAAA,IAAAnS,EAAA,EAAA;AAAA,QAAAoS;AAAA,WAAApS,EAAA,EAAA,MAAAwc,MAAAxc,UAAAmS,KAD5CC,uBAAC9O,GAAA,EACE6O,UAAAA;AAAAA,MAAAA;AAAAA,MACAqK;AAAAA,IAAAA,GACH,GAAMxc,QAAAwc,IAAAxc,QAAAmS,GAAAnS,QAAAoS,MAAAA,KAAApS,EAAA,EAAA,GAHNoS;AAAAA,EAGM;AACN,MAAAD;AAAA,SAAAnS,EAAA,EAAA,MAAAmD,KAAAnD,UAAAwc,MAGFrK,KAAA,gBAAAlR,EAACqC,GAAA,EACC,UAAA,gBAAAlC,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3EF,UAAAA;AAAAA,IAAAA;AAAAA,IACAqZ;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF,GAAMxc,QAAAmD,GAAAnD,QAAAwc,IAAAxc,QAAAmS,MAAAA,KAAAnS,EAAA,EAAA,GALNmS;AAKM;AAvIoB,SAAAc,GAAAwJ,GAAA;AAAA,SA2CsBjR,EAAQiR;AAAW;ACxDhE,MAAMC,KAAY3c,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACvB;AAAA,IAAAoL,IAAAA;AAAAA,IAAAc,cAAAA;AAAAA,IAAAnL,MAAAA;AAAAA,IAAAqM,UAAAA;AAAAA,IAAAhL,aAAAA;AAAAA,IAAAiL,UAAAA;AAAAA,IAAAqP,YAAAnc;AAAAA,IAAAqC,WAAApC;AAAAA,IAAAqC,WAAA/B;AAAAA,IAAAW,MAAAP;AAAAA,EAAAA,IAWIpB,GAJF4c,IAAAnc,MAAA+B,SAAA,KAAA/B,GACAqC,IAAApC,MAAA8B,SAAA,KAAA9B,GACAqC,IAAA/B,MAAAwB,SAAA,KAAAxB,GACAW,IAAAP,MAAAoB,SAAA,OAAApB,GAEF,CAAAwE,GAAA0I,CAAA,IAA0B9N,EAAS4L,CAAY,GAC/CmD,IAAmBF,GAA6C,IAAI;AAAE,MAAA3N;AAAA,EAAAzB,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAC/C5L,IAAAoR,CAAAA,MAAA;AACrB,IAAIvD,EAAUE,WAAUC,aAAaH,EAAUE,OAAQ,GACvDF,EAAUE,UAAWE,WAAW,MAAMrC,EAAShC,GAAIwH,CAAS,GAAG,GAAG;AAAA,EAAhD,GACnB7S,OAAAqL,GAAArL,OAAAqN,GAAArN,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAHD,QAAA2P,IAAuBlO;AAGrB,MAAAE,GAAAC;AAAA,EAAA5B,SAAAmM,KAEQxK,IAAAA,MAAA;AACR0M,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrBvK,IAAA,CAACuK,CAAY,GAACnM,OAAAmM,GAAAnM,OAAA2B,GAAA3B,OAAA4B,MAAAD,IAAA3B,EAAA,CAAA,GAAA4B,IAAA5B,EAAA,CAAA,IAFjBc,GAAUa,GAEPC,CAAc;AAAC,MAAAI;AAAA,EAAAhC,SAAA2P,KAEG3N,IAAA8Q,CAAAA,MAAA;AACnBzE,IAAAA,EAASyE,CAAQ,GACjBnD,EAAemD,CAAQ;AAAA,EAAC,GACzB9S,OAAA2P,GAAA3P,OAAAgC,KAAAA,IAAAhC,EAAA,CAAA;AAHD,QAAAsQ,IAAqBtO;AAGnB,MAAAE;AAAA,EAAAlC,EAAA,CAAA,MAAAqL,KAAArL,SAAAqN,KAAArN,EAAA,EAAA,MAAA2F,KAIiBzD,IAAAA,MAAA;AACjB,IAAKoN,EAAUE,YACfC,aAAaH,EAAUE,OAAQ,GAC/BF,EAAUE,UAAW,MACrBnC,EAAShC,GAAI1F,CAAK;AAAA,EAAC,GACpB3F,OAAAqL,GAAArL,OAAAqN,GAAArN,QAAA2F,GAAA3F,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AALD,QAAA4Q,IAAmB1O;AAOnB,MAAIoL,GAAQ;AACyD,UAAAN,KAAC2P;AAAU,QAAAxP;AAAA,IAAAnN,EAAA,EAAA,MAAAgN,KAAAhN,UAAA2F,KAAzDwH,IAAA,gBAAAlM,EAACgN,IAAA,EAA6C,oBAAAjB,GAAcrH,UAAAA,GAAM,GAA2B3F,QAAAgN,GAAAhN,QAAA2F,GAAA3F,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAlH,UAAA6Q,IAAqB1D;AAErB,QAAIwP,KAAA,CAAe7Z,GAAS;AAAA,UAAAgO;AAAA,MAAA9Q,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAInB8P,IAAA,CAACjO,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,GAAW,GAAIrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA;AAAA,UAAA+Q;AAAA,aAAA/Q,EAAA,EAAA,MAAA8Q,KAAA9Q,UAAA6Q,KAF7EE,IAAA,gBAAA9P,EAACqC,GAAA,EACC,UAAA,gBAAAlC,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC3EyN,UAAAA;AAAAA,QAAAA;AAAAA,QACAD;AAAAA,MAAAA,EAAAA,CACH,EAAA,CACF,GAAM7Q,QAAA8Q,GAAA9Q,QAAA6Q,GAAA7Q,QAAA+Q,KAAAA,IAAA/Q,EAAA,EAAA,GALN+Q;AAAAA,IAKM;AAET,QAAAD;AAAA,IAAA9Q,EAAA,EAAA,MAAAqC,KAAArC,UAAA6C,KAAA7C,EAAA,EAAA,MAAAgB,KAII8P,IAAA,CAACjO,KACA,gBAAA5B,EAACqC,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW,EAAA,CACxD,GACDrC,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA;AAAA,QAAA+Q;AAAA,WAAA/Q,EAAA,EAAA,MAAA8Q,KAAA9Q,UAAA6Q,KALHE,sBAACzN,GAAA,EACEwN,UAAAA;AAAAA,MAAAA;AAAAA,MAKAD;AAAAA,IAAAA,GACH,GAAM7Q,QAAA8Q,GAAA9Q,QAAA6Q,GAAA7Q,QAAA+Q,KAAAA,IAAA/Q,EAAA,EAAA,GAPN+Q;AAAAA,EAOM;AAET,MAAA/D;AAAA,SAAAhN,EAAA,EAAA,MAAAqC,KAAArC,UAAA8C,KAAA9C,EAAA,EAAA,MAAA4Q,KAAA5Q,UAAAsQ,KAAAtQ,EAAA,EAAA,MAAA6C,KAAA7C,UAAAgB,KAAAhB,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAA2c,KAAA3c,EAAA,EAAA,MAAA0B,KAAA1B,UAAA2F,KAGCqH,IAAA,gBAAA/L,EAACqC,GAAA,EACEqZ,UAAAA,KAAA,CAAe7Z,IACd,gBAAA1B,EAACiC,GAAA,EAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA;KAC1ER,KAAa,gBAAA5B,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,CAAW;AAAA,IACrE,gBAAApB,EAAC8R,IAAA,EACa/R,cAAAA,GACF,WAAA,UACAsM,UAAAA,GACL,MAAA,KACA,MAAA,WACC5L,MAAAA,GACD,MAAA,QACQ,aAAAmB,IAAA7B,IAAAuB,QACNoD,OAAAA,GACG,UAAAqN,CAAAA,MAAO1C,EAAa0C,EAACnD,OAAOlK,KAAM,GACpCiL,QAAAA,GACC,SAAAqC,GAAAA;KAMb,sBAEC3P,GAAA,EACE,UAAA;AAAA,IAAA,CAACT,uBACCS,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuBpB,MAAAA,GAAmBqB,aAAAA,EAAAA,IAC7C;AAAA,IAEDsa,IACC,gBAAA1b,EAAC8R,IAAA,EACa/R,cAAAA,GACF,WAAA,UACAsM,UAAAA,GACJ,OAAA,QACA5L,MAAAA,GACD,MAAA,QACQ,aAAAmB,IAAA7B,IAAAuB,QACNoD,OAAAA,GACG,UAAAuN,CAAAA,MAAO5C,EAAa0C,EAACnD,OAAOlK,KAAM,GACpCiL,QAAAA,GACC,SAAAuC,IAIR,IAGH,gBAAAlS,EAAC0V,IAAA,EACa3V,cAAAA,GACF,WAAA,UACAsM,UAAAA,GACJ,OAAA,QACA5L,MAAAA,GACO,aAAAmB,IAAA7B,IAAAuB,QACNoD,OAAAA,GACG,UAAAiX,CAAAA,MAAOtM,EAAa0C,EAACnD,OAAOlK,KAAM,GACpCiL,QAAAA,GACF,MAAA,GACC,QAAA,WAAA,CAAU;AAAA,EAAA,EAAA,CAGvB,EAAA,CAEJ,GAAM5Q,QAAAqC,GAAArC,QAAA8C,GAAA9C,QAAA4Q,GAAA5Q,QAAAsQ,GAAAtQ,QAAA6C,GAAA7C,QAAAgB,GAAAhB,QAAAsN,GAAAtN,QAAA2c,GAAA3c,QAAA0B,GAAA1B,QAAA2F,GAAA3F,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA,GAjENgN;AAiEM;AAlIe,SAAAiG,GAAAG,GAAA;AAkFX,EAAIJ,EAACK,QAAS,WACZL,EAACvC,cAAc6C,KAAAA;AAChB;AApFU,SAAAH,GAAAI,GAAA;AA4GT,EAAIP,EAACK,QAAS,WACZL,EAACvC,cAAc6C,KAAAA;AAChB;AC3HV,MAAMuJ,KAAyB9c,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAgD,GAAAuG;AAAA,EAAAxJ,SAAAD,KACpC;AAAA,IAAAkD,UAAAA;AAAAA,IAAA,GAAAuG;AAAAA,EAAAA,IAA8BzJ,GAAMC,OAAAD,GAAAC,OAAAiD,GAAAjD,OAAAwJ,MAAAvG,IAAAjD,EAAA,CAAA,GAAAwJ,IAAAxJ,EAAA,CAAA;AAAA,MAAAQ;AAAA,SAAAR,EAAA,CAAA,MAAAiD,KAAAjD,SAAAwJ,KAGlChJ,IAAA,gBAAAS,EAACoC,GAAA,EAAgB,YAAA,UAAa,KAAA,MAAU,MAAA,KAAG,GAAKmG,GAC7CvG,UAAAA,EAAAA,CACH,GAAOjD,OAAAiD,GAAAjD,OAAAwJ,GAAAxJ,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAFPQ;AAEO,GCHLsc,KAAYA,CAACnX,GAAeoX,MAAyB;AACzD,MAAIA,EAAOpK,QAAQpQ,UAAawa,EAAOnK,QAAQrQ,OAAW,QAAOoD;AACjE,QAAMgN,IAAMoK,EAAOpK,OAAO2E,OAAO0F,mBAC3BpK,IAAMmK,EAAOnK,OAAO0E,OAAO2F;AACjC,SAAOpF,GAAalS,GAAOgN,GAAKC,CAAG;AACrC,GAGasK,KAAmBA,CAC9BvX,GACAwX,GACA7O,GACAyO,IAAuB,CAAA,MACP;AAChB,QAAMK,IAAUN,GAAUxO,GAAMyO,CAAM;AACtC,SAAOI,MAAS,MAAM;AAAA,IAAEE,GAAGD;AAAAA,IAASE,GAAG3X,EAAM2X;AAAAA,EAAAA,IAAM;AAAA,IAAED,GAAG1X,EAAM0X;AAAAA,IAAGC,GAAGF;AAAAA,EAAAA;AACtE,GCWMG,KAAkBxd,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACtB;AAAA,IAAAkD,OAAAA;AAAAA,IAAAqa,SAAAA;AAAAA,IAAA7X,OAAAA;AAAAA,IAAAgN,KAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAqE,MAAAA;AAAAA,IAAAwG,UAAAA;AAAAA,EAAAA,IAA4D1d;AAAM,MAAAS;AAAA,EAAAR,SAAAmD,KAI9D3C,IAAA,gBAAAS,EAACC,IAAA,EAAe,WAAA,oBAAyB,OAAA,YAAiB,OAAA,QAAmB,YAAA,GAC1EiC,UAAAA,EAAAA,CACH,GAAOnD,OAAAmD,GAAAnD,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAA,MAAAS;AAAA,EAAAT,SAAAyd,KAWKhd,IAAAA,CAAAoY,GAAAvK,MAAamP,EAASnP,CAAI,GAACtO,OAAAyd,GAAAzd,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAe;AAAA,EAAAf,EAAA,CAAA,MAAAwd,KAAAxd,EAAA,CAAA,MAAAmD,KAAAnD,EAAA,CAAA,MAAA4S,KAAA5S,SAAA2S,KAAA3S,EAAA,CAAA,MAAAiX,KAAAjX,EAAA,CAAA,MAAAS,KAAAT,EAAA,EAAA,MAAA2F,KAVvC5E,sBAACiW,IAAA,EACKwG,OACEra,MAAAA,GACM,aAAA,IACEwC,iBACTgN,KAAAA,GACAC,KAAAA,GACCqE,MAAAA,GACN,WAAA,IACA,YAAA,IACU,UAAAxW,GAA2B,GACrCT,OAAAwd,GAAAxd,OAAAmD,GAAAnD,OAAA4S,GAAA5S,OAAA2S,GAAA3S,OAAAiX,GAAAjX,OAAAS,GAAAT,QAAA2F,GAAA3F,QAAAe,KAAAA,IAAAf,EAAA,EAAA;AAAA,MAAAmB;AAAA,SAAAnB,EAAA,EAAA,MAAAQ,KAAAR,UAAAe,KAfJI,sBAACkC,GAAA,EAAgB,YAAA,UAAa,KAAA,KAAgB,YAAA,GAC5C7C,UAAAA;AAAAA,IAAAA;AAAAA,IAGAO;AAAAA,EAAAA,GAYF,GAAOf,QAAAQ,GAAAR,QAAAe,GAAAf,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA,GAhBPmB;AAgBO,GAIEuc,KAAc3d,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACzB;AAAA,IAAAoL,IAAAA;AAAAA,IAAArK,MAAAA;AAAAA,IAAAqB,aAAAA;AAAAA,IAAA8J,cAAAA;AAAAA,IAAAwR,QAAAnd;AAAAA,IAAAod,QAAAnd;AAAAA,IAAAkS,KAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAqE,MAAAlW;AAAAA,IAAAsM,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,EAAAA,IAYIvN,GAPF4d,IAAAnd,MAAA+B,SAAA,MAAA/B,GACAod,IAAAnd,MAAA8B,SAAA,MAAA9B,GAGAwW,IAAAlW,MAAAwB,SAAA,IAAAxB,GAIF,CAAA4E,GAAA0I,CAAA,IAA0B9N,EAAsB4L,CAAY;AAAE,MAAAhL,GAAAM;AAAA,EAAAzB,SAAAmM,KAEpDhL,IAAAA,MAAA;AACRkN,IAAAA,EAASlC,CAAY;AAAA,EAAC,GACrB1K,IAAA,CAAC0K,CAAY,GAACnM,OAAAmM,GAAAnM,OAAAmB,GAAAnB,OAAAyB,MAAAN,IAAAnB,EAAA,CAAA,GAAAyB,IAAAzB,EAAA,CAAA,IAFjBc,GAAUK,GAEPM,CAAc;AAAC,MAAAE;AAAA,EAAA3B,EAAA,CAAA,MAAAqL,KAAArL,EAAA,CAAA,MAAA4S,KAAA5S,EAAA,CAAA,MAAA2S,KAAA3S,EAAA,CAAA,MAAAqN,KAAArN,SAAA2F,KAEChE,IAAAA,CAAAwb,GAAA7O,MAAA;AACjB,UAAAuP,IAAgBX,GAAiBvX,GAAOwX,GAAM7O,GAAM;AAAA,MAAAqE,KAAAA;AAAAA,MAAAC,KAAAA;AAAAA,IAAAA,CAAY;AAChEvE,IAAAA,EAASwP,CAAO,GAChBxQ,EAAShC,GAAIwS,CAAO;AAAA,EAAC,GACtB7d,OAAAqL,GAAArL,OAAA4S,GAAA5S,OAAA2S,GAAA3S,OAAAqN,GAAArN,OAAA2F,GAAA3F,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAJD,QAAA8d,IAAmBnc;AAMnB,MAAI2L,GAAQ;AAGqB,UAAA1L,OAAG+D,EAAK0X,CAAE,KAAK1X,EAAK2X,CAAE;AAAE,QAAAtb;AAAA,IAAAhC,SAAA4B,KAAnDI,IAAA,gBAAAf,EAACgN,IAAA,EAA0BrM,UAAAA,EAAAA,CAAyB,GAA2B5B,OAAA4B,GAAA5B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,QAAAkC;AAAA,WAAAlC,EAAA,EAAA,MAAAqC,KAAArC,UAAAgB,KAAAhB,EAAA,EAAA,MAAAgC,KADjFE,sBAACU,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAC/CL,UAAAA,GACF,GAAyBhC,QAAAqC,GAAArC,QAAAgB,GAAAhB,QAAAgC,GAAAhC,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAFzBkC;AAAAA,EAEyB;AASZ,QAAAN,IAAA,GAAGyJ,CAAE;AAAI,MAAArJ;AAAA,EAAAhC,UAAA8d,KAKR9b,IAAA0V,CAAAA,MAAUoG,EAAW,KAAKxP,CAAI,GAACtO,QAAA8d,GAAA9d,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,EAAA,MAAA4S,KAAA5S,EAAA,EAAA,MAAA2S,KAAA3S,EAAA,EAAA,MAAAiX,KAAAjX,EAAA,EAAA,MAAA4B,KAAA5B,EAAA,EAAA,MAAAgC,KAAAhC,EAAA,EAAA,MAAA2F,EAAA0X,KAAArd,EAAA,EAAA,MAAA2d,KAP3Czb,sBAACqb,IAAA,EACQI,OAAAA,GACE,SAAA/b,GACF,OAAA+D,EAAK0X,GACP1K,KAAAA,GACAC,KAAAA,GACCqE,MAAAA,GACI,UAAAjV,GAA+B,GACzChC,QAAA4S,GAAA5S,QAAA2S,GAAA3S,QAAAiX,GAAAjX,QAAA4B,GAAA5B,QAAAgC,GAAAhC,EAAA,EAAA,IAAA2F,EAAA0X,GAAArd,QAAA2d,GAAA3d,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAGS,QAAAgN,IAAA,GAAG3B,CAAE;AAAI,MAAA8B;AAAA,EAAAnN,UAAA8d,KAKR3Q,IAAA8N,CAAAA,MAAU6C,EAAW,KAAKxP,CAAI,GAACtO,QAAA8d,GAAA9d,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,MAAA8Q;AAAA,EAAA9Q,EAAA,EAAA,MAAA4S,KAAA5S,EAAA,EAAA,MAAA2S,KAAA3S,EAAA,EAAA,MAAAiX,KAAAjX,EAAA,EAAA,MAAAmN,KAAAnN,EAAA,EAAA,MAAAgN,KAAAhN,EAAA,EAAA,MAAA2F,EAAA2X,KAAAtd,EAAA,EAAA,MAAA4d,KAP3C9M,sBAACyM,IAAA,EACQK,OAAAA,GACE,SAAA5Q,GACF,OAAArH,EAAK2X,GACP3K,KAAAA,GACAC,KAAAA,GACCqE,MAAAA,GACI,UAAA9J,GAA+B,GACzCnN,QAAA4S,GAAA5S,QAAA2S,GAAA3S,QAAAiX,GAAAjX,QAAAmN,GAAAnN,QAAAgN,GAAAhN,EAAA,EAAA,IAAA2F,EAAA2X,GAAAtd,QAAA4d,GAAA5d,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA;AAAA,MAAA+Q;AAAA,EAAA/Q,EAAA,EAAA,MAAA8Q,KAAA9Q,UAAAkC,KAlBJ6O,sBAAC8L,IAAA,EACC3a,UAAAA;AAAAA,IAAAA;AAAAA,IASA4O;AAAAA,EAAAA,GASF,GAAyB9Q,QAAA8Q,GAAA9Q,QAAAkC,GAAAlC,QAAA+Q,KAAAA,IAAA/Q,EAAA,EAAA;AAAA,MAAAiR;AAAA,SAAAjR,EAAA,EAAA,MAAAqC,KAAArC,UAAAgB,KAAAhB,EAAA,EAAA,MAAA+Q,KApB3BE,sBAACrO,IAAA,EAA6B5B,MAAAA,GAAmBqB,aAAAA,GAAyB,aAAA,WACxE0O,UAAAA,GAoBF,GAAyB/Q,QAAAqC,GAAArC,QAAAgB,GAAAhB,QAAA+Q,GAAA/Q,QAAAiR,KAAAA,IAAAjR,EAAA,EAAA,GArBzBiR;AAqByB,GCjHhB8M,KAAoB,CAAIC,GAA8BC,GAAiBC,MAClFF,EAAcC,CAAO,MAAM1b,SAAY2b,IAAYF,EAAcC,CAAO,GCoB7DE,KAA2Bpe,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACtC;AAAA,IAAAme,OAAAA;AAAAA,IAAAJ,eAAAA;AAAAA,IAAA3Q,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAxK,WAAAA;AAAAA,IAAAyK,cAAAA;AAAAA,EAAAA,IAA8ExN,GAGlES,IAAA8M,KAAY8Q,EAAK9Q,UAEhB7M,IAAA8M,MAAiB,eAAjB,KAAAzK;AAAiD,MAAA/B;AAAA,EAAAf,EAAA,CAAA,MAAAqN,KAAArN,SAAAoe,EAAA/S,MAAArL,EAAA,CAAA,MAAAQ,KAAAR,SAAAS,KAJ/CM,IAAA;AAAA,IAAAsK,IACT+S,EAAK/S;AAAAA,IAAGiC,UACF9M;AAAAA,IAA0B6M,UAAAA;AAAAA,IAAAvK,WAEzBrC;AAAAA,EAAAA,GACZT,OAAAqN,GAAArN,EAAA,CAAA,IAAAoe,EAAA/S,IAAArL,OAAAQ,GAAAR,OAAAS,GAAAT,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AALD,QAAAqe,IAAetd;AAOf,UAAQqd,EAAK9e,MAAAA;AAAAA,IAAK,KACX,SAAO;AAIA,YAAA6B,IAAAid,EAAKpd,MACES,IAAA2c,EAAK/b;AAAY,UAAAV;AAAA,MAAA3B,EAAA,CAAA,MAAAge,KAAAhe,EAAA,CAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,CAAA,MAAAoe,EAAA/S,MAChB1J,IAAAoc,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,OAAAge,GAAAhe,EAAA,CAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,CAAA,IAAAoe,EAAA/S,IAAArL,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAAA,UAAA4B;AAAA,aAAA5B,EAAA,CAAA,MAAAqe,KAAAre,UAAAoe,EAAA/b,eAAArC,EAAA,EAAA,MAAAoe,EAAApF,eAAAhZ,EAAA,EAAA,MAAAoe,EAAAxL,OAAA5S,EAAA,EAAA,MAAAoe,EAAAzL,OAAA3S,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAoe,EAAAnH,QAAAjX,EAAA,EAAA,MAAAoe,EAAAhG,QAAApY,UAAAuN,KAAAvN,EAAA,EAAA,MAAA2B,KAJ9EC,IAAA,gBAAAX,EAAC8X,IAAA,EAAU,GACLsF,GACE,MAAAld,GACO,aAAAM,GACC,cAAAE,GACT,KAAAyc,EAAKzL,KACL,KAAAyL,EAAKxL,KACJ,MAAAwL,EAAKnH,MACL,MAAAmH,EAAKhG,MACE,aAAAgG,EAAKpF,aACJzL,cAAAA,EAAAA,CAAY,GAC1BvN,OAAAqe,GAAAre,EAAA,EAAA,IAAAoe,EAAA/b,aAAArC,EAAA,EAAA,IAAAoe,EAAApF,aAAAhZ,EAAA,EAAA,IAAAoe,EAAAxL,KAAA5S,EAAA,EAAA,IAAAoe,EAAAzL,KAAA3S,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAAnH,MAAAjX,EAAA,EAAA,IAAAoe,EAAAhG,MAAApY,QAAAuN,GAAAvN,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GAXF4B;AAAAA,IAWE;AAAA,IAAA,KAED,aAAW;AAIJ,YAAAT,IAAAid,EAAKpd,MACES,IAAA2c,EAAK/b;AAAY,UAAAV;AAAA,MAAA3B,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MAChB1J,IAAAoc,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,UAAA4B;AAAA,aAAA5B,EAAA,EAAA,MAAAqe,KAAAre,EAAA,EAAA,MAAAoe,EAAA/b,eAAArC,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAoe,EAAAhZ,WAAApF,UAAAoe,EAAA1C,WAAA1b,EAAA,EAAA,MAAAuN,KAAAvN,UAAA2B,KAJ9EC,sBAAC6Z,IAAA,EAAc,GACT4C,GACE,MAAAld,GACO,aAAAM,GACC,cAAAE,GACL,SAAAyc,EAAKhZ,SACL,SAAAgZ,EAAK1C,SACAnO,cAAAA,GAAY,GAC1BvN,QAAAqe,GAAAre,EAAA,EAAA,IAAAoe,EAAA/b,aAAArC,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAAhZ,SAAApF,EAAA,EAAA,IAAAoe,EAAA1C,SAAA1b,QAAAuN,GAAAvN,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GARF4B;AAAAA,IAQE;AAAA,IAAA,KAED,WAAS;AAIF,YAAAT,IAAAid,EAAKpd,MACES,IAAA2c,EAAK/b;AAAY,UAAAV;AAAA,MAAA3B,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MAChB1J,IAAAoc,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,UAAA4B;AAAA,aAAA5B,EAAA,EAAA,MAAAqe,KAAAre,EAAA,EAAA,MAAAoe,EAAA/b,eAAArC,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAoe,EAAAhZ,WAAApF,EAAA,EAAA,MAAAuN,KAAAvN,EAAA,EAAA,MAAA2B,KAJ9EC,IAAA,gBAAAX,EAACmM,IAAA,EAAW,GACNiR,GACE,MAAAld,GACO,aAAAM,GACC,cAAAE,GACL,SAAAyc,EAAKhZ,SACAmI,cAAAA,GAAY,GAC1BvN,QAAAqe,GAAAre,EAAA,EAAA,IAAAoe,EAAA/b,aAAArC,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAAhZ,SAAApF,QAAAuN,GAAAvN,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GAPF4B;AAAAA,IAOE;AAAA,IAAA,KAED,cAAY;AACf,UAAI2L,MAAiB;AAAY,eAAS;AAIhC,YAAApM,IAAAid,EAAKpd,MACES,IAAA2c,EAAK/b;AAAY,UAAAV;AAAA,MAAA3B,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MAChB1J,IAAAoc,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,UAAA4B;AAAA,aAAA5B,EAAA,EAAA,MAAAqe,KAAAre,EAAA,EAAA,MAAAoe,EAAA/b,eAAArC,UAAAoe,EAAApd,QAAAhB,UAAA2B,KAJ9EC,IAAA,gBAAAX,EAACmN,MAAe,GACViQ,GACE,MAAAld,GACO,aAAAM,GACC,cAAAE,EAAAA,CAA8D,GAC5E3B,QAAAqe,GAAAre,EAAA,EAAA,IAAAoe,EAAA/b,aAAArC,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GALF4B;AAAAA,IAKE;AAAA,IAAA,KAED,UAAQ;AAID,YAAAT,IAAAid,EAAKpd,MACES,IAAA2c,EAAK/b;AAAY,UAAAV;AAAA,MAAA3B,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MAChB1J,IAAAoc,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,UAAA4B;AAAA,aAAA5B,UAAAqe,KAAAre,EAAA,EAAA,MAAAoe,EAAA/b,eAAArC,UAAAoe,EAAAxL,OAAA5S,UAAAoe,EAAAzL,OAAA3S,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAoe,EAAAnH,QAAAjX,EAAA,EAAA,MAAAoe,EAAAT,UAAA3d,EAAA,EAAA,MAAAoe,EAAAR,UAAA5d,EAAA,EAAA,MAAA2B,KAJ9EC,IAAA,gBAAAX,EAACyc,IAAA,EAAW,GACNW,GACE,MAAAld,GACO,aAAAM,GACC,cAAAE,GACN,QAAAyc,EAAKT,QACL,QAAAS,EAAKR,QACR,KAAAQ,EAAKzL,KACL,KAAAyL,EAAKxL,KACJ,MAAAwL,EAAKnH,KAAAA,CAAK,GAChBjX,QAAAqe,GAAAre,EAAA,EAAA,IAAAoe,EAAA/b,aAAArC,EAAA,EAAA,IAAAoe,EAAAxL,KAAA5S,EAAA,EAAA,IAAAoe,EAAAzL,KAAA3S,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAAnH,MAAAjX,EAAA,EAAA,IAAAoe,EAAAT,QAAA3d,EAAA,EAAA,IAAAoe,EAAAR,QAAA5d,QAAA2B,GAAA3B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GAVF4B;AAAAA,IAUE;AAAA,IAAA,KAED,cAAY;AAGP,YAAAT,IAAAid,EAAK/S,IACH5J,IAAA2c,EAAKpd,MACEW,IAAAyc,EAAK/b;AAAY,UAAAT;AAAA,MAAA5B,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MAChBzJ,IAAAmc,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAAA,UAAAgC;AAAA,aAAAhC,EAAA,EAAA,MAAAqe,EAAA/Q,YAAAtN,EAAA,EAAA,MAAAqN,KAAArN,EAAA,EAAA,MAAAoe,EAAA1I,UAAA1V,EAAA,EAAA,MAAAoe,EAAA/b,eAAArC,EAAA,EAAA,MAAAoe,EAAA/S,MAAArL,EAAA,EAAA,MAAAoe,EAAAtK,YAAA9T,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAoe,EAAAzI,eAAA3V,UAAAuN,KAAAvN,EAAA,EAAA,MAAA4B,KAJ9EI,IAAA,gBAAAf,EAACwU,MACK,IAAAtU,GACE,MAAAM,GACO,aAAAE,GACC,cAAAC,GACN,QAAAwc,EAAK1I,QACH,UAAA0I,EAAKtK,UACF,aAAAsK,EAAKzI,aACR,UAAA0I,EAAM/Q,UACFC,cAAAA,GACJF,UAAAA,EAAAA,CAAQ,GAClBrN,EAAA,EAAA,IAAAqe,EAAA/Q,UAAAtN,QAAAqN,GAAArN,EAAA,EAAA,IAAAoe,EAAA1I,QAAA1V,EAAA,EAAA,IAAAoe,EAAA/b,aAAArC,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,EAAA,EAAA,IAAAoe,EAAAtK,UAAA9T,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAAzI,aAAA3V,QAAAuN,GAAAvN,QAAA4B,GAAA5B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GAXFgC;AAAAA,IAWE;AAAA,EAAA;AAEP,GC5GUsc,KAA2BA,CAACF,MAAiBA,EAAM9e,SAAS,cAE5Dif,KAAiCA,CAACH,MAAiBA,EAAM9e,SAAS,cCMzEkf,KAAkBA,CAAC7Y,MACnBA,MAAU,QAAQA,MAAU,KAAW,iBACpCiJ,OAAOjJ,CAAK,GAGf8Y,KAAkB1e,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACtB;AAAA,IAAA0F,OAAAA;AAAAA,EAAAA,IAAkB5F;AAElB,MAAI6D,MAAKyW,QAAS1U,CAAK,GAAC;AACtB,QAAIA,EAAKgH,WAAY,GAAC;AAAA,UAAAnM;AAAA,aAAAR,EAAA,CAAA,MAAA6B,uBAAAC,IAAA,2BAAA,KACbtB,IAAA,gBAAAS,EAACgN,IAAA,EAA+B,OAAA,YAAW,UAAA,QAAI,GAA2BjO,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAA1EQ;AAAAA,IAA0E;AAClF,QAAAA;AAAA,IAAAR,SAAA2F,KAIInF,IAAAmF,EAAKoG,IAAKkH,EAIV,GAACjT,OAAA2F,GAAA3F,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAA,QAAAS;AAAA,WAAAT,SAAAQ,KALJC,sBAACkC,IAAA,EAAW,KAAA,OAAe,UAAA,QACxBnC,UAAAA,GAKH,GAASR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GANTS;AAAAA,EAMS;AAIb,MAAI,OAAOkF,KAAU,YAAYA,MAAU,MAAI;AAAA,QAAAnF;AAAA,IAAAR,SAAA2F,EAAA+Y,OAAA1e,EAAA,CAAA,MAAA2F,EAAAgZ,UAAA3e,EAAA,CAAA,MAAA2F,EAAAiZ,OAAA5e,EAAA,CAAA,MAAA2F,EAAArG,QAC9BkB,IAAAmF,EAAKrG,SAAU,UAAf,CAA0B;AAAA,MAAAsf,KAAOjZ,EAAKiZ;AAAAA,MAAIF,KAAO/Y,EAAK+Y;AAAAA,IAAAA,CAAM,IAAI/Y,EAAKgZ,QAAO3e,EAAA,CAAA,IAAA2F,EAAA+Y,KAAA1e,EAAA,CAAA,IAAA2F,EAAAgZ,QAAA3e,EAAA,CAAA,IAAA2F,EAAAiZ,KAAA5e,EAAA,CAAA,IAAA2F,EAAArG,MAAAU,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAA3F,UAAA2e,IAAene;AAA6E,QAAAC;AAAA,IAAAT,UAAA2e,KAGvFle,IAAAke,EAAM5S,IAAKoH,EAYX,GAACnT,QAAA2e,GAAA3e,QAAAS,KAAAA,IAAAT,EAAA,EAAA;AAAA,QAAAe;AAAA,WAAAf,UAAAS,KAbJM,sBAAC4B,IAAA,EAAW,KAAA,OAAe,UAAA,QACxBlC,UAAAA,GAaH,GAAST,QAAAS,GAAAT,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAdTe;AAAAA,EAcS;AAIb,MAAI,OAAO4E,KAAU,WAAS;AAAA,QAAAnF;AAAA,IAAAR,UAAA2F,KACMnF,IAAAge,GAAgB7Y,CAAK,GAAC3F,QAAA2F,GAAA3F,QAAAQ,KAAAA,IAAAR,EAAA,EAAA;AAAA,QAAAS;AAAA,WAAAT,UAAAQ,KAAjDC,IAAA,gBAAAQ,EAACgN,IAAA,EAA0BzN,UAAAA,EAAAA,CAAuB,GAA2BR,QAAAQ,GAAAR,QAAAS,KAAAA,IAAAT,EAAA,EAAA,GAA7ES;AAAAA,EAA6E;AAInD,QAAAD,IAAAmF,MAAU,QAAQA,MAAU,KAA5B,aAAA;AAAkD,MAAAlF;AAAA,EAAAT,UAAA2F,KAChFlF,IAAA+d,GAAgB7Y,CAAK,GAAC3F,QAAA2F,GAAA3F,QAAAS,KAAAA,IAAAT,EAAA,EAAA;AAAA,MAAAe;AAAA,SAAAf,EAAA,EAAA,MAAAQ,KAAAR,UAAAS,KADzBM,IAAA,gBAAAE,EAACgN,IAAA,EAAgC,OAAAzN,GAC9BC,UAAAA,GACH,GAA2BT,QAAAQ,GAAAR,QAAAS,GAAAT,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAF3Be;AAE2B,GAIlB8d,KAA2B9e,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACtC;AAAA,IAAAme,OAAAA;AAAAA,IAAAtb,WAAAA;AAAAA,EAAAA,IAA6B/C;AAAM,MAAAS;AAAA,EAAAR,EAAA,CAAA,MAAAoe,EAAAzY,SAI/BnF,IAAA,gBAAAS,EAACwd,IAAA,EAAuB,OAAAL,EAAKzY,OAAM,GAAI3F,EAAA,CAAA,IAAAoe,EAAAzY,OAAA3F,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAA,MAAAS;AAAA,SAAAT,EAAA,CAAA,MAAA8C,KAAA9C,EAAA,CAAA,MAAAoe,EAAA/b,eAAArC,SAAAoe,EAAApd,QAAAhB,SAAAQ,KADzCC,IAAA,gBAAAQ,EAAC2B,MAA6B,MAAAwb,EAAKpd,MAAoB,aAAAod,EAAK/b,aAAyBS,WAAAA,GACnFtC,UAAAA,EAAAA,CACF,GAAyBR,OAAA8C,GAAA9C,EAAA,CAAA,IAAAoe,EAAA/b,aAAArC,EAAA,CAAA,IAAAoe,EAAApd,MAAAhB,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFzBS;AAEyB;AAzDL,SAAAwS,GAAAlG,GAAA0G,GAAA;AAAA,SAWd,gBAAAxS,EAACkB,IAAA,EAA+C,SAAA,UAAsB,cAAA,QACnEqc,UAAAA,GAAgBzR,CAAI,EAAA,GADX,GAAG6B,OAAO7B,CAAI,CAAC,IAAI0G,CAAK,EAEpC;AAAQ;AAbM,SAAAN,GAAA2L,GAAA;AAAA,SAwBd,gBAAA7d,EAACO,IAAA,EAEM,KAAAsd,EAAKF,KACL,KAAAE,EAAKJ,KACJ,OAAA,QACC,QAAA,QACM,cAAA,MACD,aAAA,OACA,aAAA,iBACF,WAAA,QAAA,MARFI,EAAKF,GAAI,IAAIE,EAAKJ,GAAI,EAQb;AACjB;ACpBZ,MAAMK,KAAgBhf,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACpB;AAAA,IAAAme,OAAAA;AAAAA,IAAAtb,WAAAA;AAAAA,EAAAA,IAA6B/C;AAE7B,MAAI+C,GAAS;AAAA,QAAAtC;AAAA,IAAAR,EAAA,CAAA,MAAAoe,EAAA/b,eAAArC,EAAA,CAAA,MAAAoe,EAAApd,QAGPR,IAAA,gBAAAS,EAACqC,GAAA,EAAO,IAAA,MACN,UAAA,gBAAArC,EAACmB,GAAA,EAAuB,MAAAgc,EAAKpd,MAAoB,aAAAod,EAAK/b,aAAY,GACpE,GAAMrC,EAAA,CAAA,IAAAoe,EAAA/b,aAAArC,EAAA,CAAA,IAAAoe,EAAApd,MAAAhB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAA,QAAAS;AAAA,IAAAT,EAAA,CAAA,MAAAoe,EAAAzY,SACNlF,IAAA,gBAAAQ,EAACgN,IAAA,EAA0BmQ,UAAAA,EAAKzY,OAAO,GAA2B3F,EAAA,CAAA,IAAAoe,EAAAzY,OAAA3F,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,QAAAe;AAAA,WAAAf,EAAA,CAAA,MAAAQ,KAAAR,SAAAS,KAJpEM,sBAACuC,GAAA,EACC9C,UAAAA;AAAAA,MAAAA;AAAAA,MAGAC;AAAAA,IAAAA,GACF,GAAMT,OAAAQ,GAAAR,OAAAS,GAAAT,OAAAe,KAAAA,IAAAf,EAAA,CAAA,GALNe;AAAAA,EAKM;AAET,MAAAP;AAAA,EAAAR,EAAA,CAAA,MAAAoe,EAAA/b,eAAArC,EAAA,CAAA,MAAAoe,EAAApd,QAIGR,sBAAC4B,GAAA,EAAuB,MAAAgc,EAAKpd,MAAoB,aAAAod,EAAK/b,aAAY,GAAIrC,EAAA,CAAA,IAAAoe,EAAA/b,aAAArC,EAAA,CAAA,IAAAoe,EAAApd,MAAAhB,QAAAQ,KAAAA,IAAAR,EAAA,EAAA;AAAA,MAAAS;AAAA,EAAAT,EAAA,EAAA,MAAAoe,EAAAzY,SACtElF,IAAA,gBAAAQ,EAACgN,IAAA,EAA0BmQ,UAAAA,EAAKzY,OAAO,GAA2B3F,EAAA,EAAA,IAAAoe,EAAAzY,OAAA3F,QAAAS,KAAAA,IAAAT,EAAA,EAAA;AAAA,MAAAe;AAAA,SAAAf,EAAA,EAAA,MAAAQ,KAAAR,UAAAS,KAFpEM,IAAA,gBAAAK,EAACiC,KAAgB,YAAA,UAAwB,gBAAA,iBAA0B,WAAA,QAAW,KAAA,MAC5E7C,UAAAA;AAAAA,IAAAA;AAAAA,IACAC;AAAAA,EAAAA,GACF,GAAOT,QAAAQ,GAAAR,QAAAS,GAAAT,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAHPe;AAGO,GAIEie,KAAmBjf,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,GAAA,GAC9B;AAAA,IAAAme,OAAAA;AAAAA,IAAAJ,eAAAA;AAAAA,IAAA3Q,UAAAA;AAAAA,IAAA0M,gBAAAA;AAAAA,IAAAzM,UAAAA;AAAAA,IAAAxK,WAAAtC;AAAAA,IAAA+M,cAAA9M;AAAAA,IAAAiB,MAAAX;AAAAA,EAAAA,IASIhB,GAHF+C,IAAAtC,MAAA+B,SAAA,KAAA/B,GACA+M,IAAA9M,MAAA8B,SAAA,YAAA9B,GACAiB,IAAAX,MAAAwB,SAAA,OAAAxB,GAEF6M,IAAmBL,MAAiB;AAAa,MAAApM;AAAA,EAAAnB,SAAAoe,KAC7Bjd,IAAAmd,GAAyBF,CAAK,GAACpe,OAAAoe,GAAApe,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAAnD,QAAAif,IAAoB9d,GAGRM,IAAA6L,KAAY8Q,EAAK9Q,UAEhB3L,IAAAiM,IAAAqR,IAAAnc;AAAoC,MAAAlB;AAAA,EAAA5B,SAAAqN,KAAArN,EAAA,CAAA,MAAAoe,EAAA/S,MAAArL,EAAA,CAAA,MAAA0B,KAAA1B,EAAA,CAAA,MAAAyB,KAAAzB,SAAA2B,KAJlCC,IAAA;AAAA,IAAAyJ,IACT+S,EAAK/S;AAAAA,IAAGiC,UACF7L;AAAAA,IAA0B4L,UAAAA;AAAAA,IAAAvK,WAEzBnB;AAAAA,IAAoCD,MAAAA;AAAAA,EAAAA,GAEhD1B,OAAAqN,GAAArN,EAAA,CAAA,IAAAoe,EAAA/S,IAAArL,OAAA0B,GAAA1B,OAAAyB,GAAAzB,OAAA2B,GAAA3B,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA;AAND,QAAAqe,IAAezc;AAQf,UAAQwc,EAAK9e,MAAAA;AAAAA,IAAK,KACX,UAAQ;AAID,YAAA0C,IAAAoc,EAAKpd,MACEkB,IAAAkc,EAAK/b,eAAL;AAAuB,UAAA2K;AAAA,MAAAhN,EAAA,CAAA,MAAAge,KAAAhe,EAAA,CAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MACtB2B,IAAA+Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,OAAAge,GAAAhe,EAAA,CAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,UAAAmN;AAAA,aAAAnN,EAAA,EAAA,MAAAqe,KAAAre,UAAA4N,KAAA5N,EAAA,EAAA,MAAAoe,EAAAxL,OAAA5S,EAAA,EAAA,MAAAoe,EAAAzL,OAAA3S,UAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAoe,EAAAnH,QAAAjX,EAAA,EAAA,MAAAkC,KAAAlC,UAAAgN,KAJ9EG,IAAA,gBAAAlM,EAAC+V,MAAW,GACNqH,GACE,MAAArc,GACO,aAAAE,GACC,cAAA8K,GACT,KAAAoR,EAAKzL,KACL,KAAAyL,EAAKxL,KACJ,MAAAwL,EAAKnH,MACArJ,WAAAA,GACCA,YAAAA,EAAAA,CAAU,GACtB5N,QAAAqe,GAAAre,QAAA4N,GAAA5N,EAAA,EAAA,IAAAoe,EAAAxL,KAAA5S,EAAA,EAAA,IAAAoe,EAAAzL,KAAA3S,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAAnH,MAAAjX,QAAAkC,GAAAlC,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GAVFmN;AAAAA,IAUE;AAAA,IAAA,KAED,WAAS;AAIF,YAAAnL,IAAAoc,EAAKpd,MACEkB,IAAAkc,EAAK/b;AAAY,UAAA2K;AAAA,MAAAhN,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MAChB2B,IAAA+Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,UAAAmN;AAAA,aAAAnN,UAAAqe,KAAAre,EAAA,EAAA,MAAA4N,KAAA5N,EAAA,EAAA,MAAAoe,EAAA/b,eAAArC,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAgN,KAJ9EG,IAAA,gBAAAlM,EAAC0N,IAAA,EAAY,GACP0P,GACE,MAAArc,GACO,aAAAE,GACC,cAAA8K,GACHY,WAAAA,EAAAA,CAAU,GACrB5N,QAAAqe,GAAAre,QAAA4N,GAAA5N,EAAA,EAAA,IAAAoe,EAAA/b,aAAArC,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GANFmN;AAAAA,IAME;AAAA,IAAA,KAED,QAAM;AACT,UAAIS,GAAU;AAIF,cAAA5L,IAAAoc,EAAKpd,MACEkB,IAAAkc,EAAK/b,eAAL;AAAuB,YAAA2K;AAAA,QAAAhN,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MACtB2B,IAAA+Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,YAAAmN;AAAA,eAAAnN,EAAA,EAAA,MAAAqe,KAAAre,UAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAkC,KAAAlC,UAAAgN,KAJ9EG,IAAA,gBAAAlM,EAACmV,IAAA,EAAmB,GACdiI,GACE,MAAArc,GACO,aAAAE,GACC,cAAA8K,GACd,WAAA,GAAA,CAAS,GACThN,QAAAqe,GAAAre,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,QAAAkC,GAAAlC,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GANFmN;AAAAA,MAME;AAMI,YAAAnL,IAAAoc,EAAKpd,MACEkB,IAAAkc,EAAK/b,eAAL;AAAuB,UAAA2K;AAAA,MAAAhN,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MACtB2B,IAAA+Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,UAAAmN;AAAA,aAAAnN,UAAAqe,KAAAre,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,UAAAoe,EAAAzB,cAAA3c,UAAAkC,KAAAlC,EAAA,EAAA,MAAAgN,KAJ9EG,IAAA,gBAAAlM,EAACyb,IAAA,EAAS,GACJ2B,GACE,MAAArc,GACO,aAAAE,GACC,cAAA8K,GACF,YAAAoR,EAAKzB,WAAAA,CAAW,GAC5B3c,QAAAqe,GAAAre,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAAzB,YAAA3c,QAAAkC,GAAAlC,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GANFmN;AAAAA,IAME;AAAA,IAAA,KAED,YAAU;AAGL,YAAAnL,IAAAoc,EAAK/S,IACHnJ,IAAAkc,EAAKpd,MACEgM,IAAAoR,EAAK/b;AAAY,UAAA8K;AAAA,MAAAnN,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MAChB8B,IAAA4Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,UAAA8Q;AAAA,aAAA9Q,UAAAqe,EAAA/Q,YAAAtN,UAAAqN,KAAArN,EAAA,EAAA,MAAAoe,EAAA/b,eAAArC,EAAA,EAAA,MAAAoe,EAAA/S,MAAArL,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAoe,EAAA5R,eAAAxM,EAAA,EAAA,MAAAuN,KAAAvN,EAAA,EAAA,MAAA0B,KAAA1B,UAAAmN,KAJ9E2D,sBAAC8F,IAAA,EACK,IAAA5U,GACE,MAAAE,GACO,aAAA8K,GACC,cAAAG,GACD,aAAAiR,EAAK5R,aACR,UAAA6R,EAAM/Q,UACFC,cAAAA,GACR7L,MAAAA,GACI2L,UAAAA,GAAQ,GAClBrN,EAAA,EAAA,IAAAqe,EAAA/Q,UAAAtN,QAAAqN,GAAArN,EAAA,EAAA,IAAAoe,EAAA/b,aAAArC,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAA5R,aAAAxM,QAAAuN,GAAAvN,QAAA0B,GAAA1B,QAAAmN,GAAAnN,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA,GAVF8Q;AAAAA,IAUE;AAAA,IAAA,KAED,aAAW;AAIJ,YAAA9O,IAAAoc,EAAKpd,MACEkB,IAAAkc,EAAK/b,eAAL;AAAuB,UAAA2K;AAAA,MAAAhN,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MACtB2B,IAAA+Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,UAAAmN;AAAA,MAAAnN,UAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAxT,SAU1EuC,IAAAiR,EAAKxT,QAAL;AAAA,QAAA,GAESwT,EAAKxT;AAAAA,QAAMuB,cACA4R,GAAkBC,GAAeI,EAAKxT,MAAMS,IAAK+S,EAAKxT,MAAMuB,YAAa;AAAA,MAAA,IAH7F5J,QAKavC,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAxT,OAAA5K,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA;AAAA,UAAA8Q;AAAA,aAAA9Q,EAAA,EAAA,MAAAqe,KAAAre,EAAA,EAAA,MAAA4N,KAAA5N,UAAAoe,EAAAtC,aAAA9b,EAAA,EAAA,MAAAoe,EAAAje,YAAAH,EAAA,EAAA,MAAAoe,EAAAzT,aAAA3K,EAAA,EAAA,MAAAoe,EAAAtU,eAAA9J,UAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAoe,EAAAhZ,WAAApF,EAAA,EAAA,MAAAoe,EAAA5R,eAAAxM,EAAA,EAAA,MAAAoe,EAAA1T,qBAAA1K,EAAA,EAAA,MAAAoe,EAAA3T,cAAAzK,EAAA,EAAA,MAAAmN,KAAAnN,EAAA,EAAA,MAAAkC,KAAAlC,UAAAgN,KAnBjB8D,sBAAC+K,IAAA,EAAc,GACTwC,GACE,MAAArc,GACO,aAAAE,GACC,cAAA8K,GACL,SAAAoR,EAAKhZ,SACD,aAAAgZ,EAAKtU,aACL,aAAAsU,EAAK5R,aACP,WAAA4R,EAAKtC,WACN,UAAAsC,EAAKje,UACH,YAAAie,EAAK3T,YACE,mBAAA2T,EAAK1T,mBACb,WAAA0T,EAAKzT,WAEd,OAAAwC,GAOSS,WAAAA,GAAU,GACrB5N,QAAAqe,GAAAre,QAAA4N,GAAA5N,EAAA,EAAA,IAAAoe,EAAAtC,WAAA9b,EAAA,EAAA,IAAAoe,EAAAje,UAAAH,EAAA,EAAA,IAAAoe,EAAAzT,WAAA3K,EAAA,EAAA,IAAAoe,EAAAtU,aAAA9J,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,EAAA,EAAA,IAAAoe,EAAAhZ,SAAApF,EAAA,EAAA,IAAAoe,EAAA5R,aAAAxM,EAAA,EAAA,IAAAoe,EAAA1T,mBAAA1K,EAAA,EAAA,IAAAoe,EAAA3T,YAAAzK,QAAAmN,GAAAnN,QAAAkC,GAAAlC,QAAAgN,GAAAhN,QAAA8Q,KAAAA,IAAA9Q,EAAA,EAAA,GAtBF8Q;AAAAA,IAsBE;AAAA,IAAA,KAED,QAAM;AAIC,YAAA9O,IAAAoc,EAAKpd,MACEkB,IAAAkc,EAAK/b,eAAL;AAAuB,UAAA2K;AAAA,MAAAhN,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,EAAA,MAAAoe,EAAA/S,MACtB2B,IAAA+Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,EAAA,IAAAoe,EAAA/S,IAAArL,QAAAgN,KAAAA,IAAAhN,EAAA,EAAA;AAAA,UAAAmN;AAAA,aAAAnN,EAAA,EAAA,MAAAqe,KAAAre,EAAA,EAAA,MAAA4N,KAAA5N,EAAA,EAAA,MAAAoe,EAAAxL,OAAA5S,EAAA,EAAA,MAAAoe,EAAAzL,OAAA3S,EAAA,EAAA,MAAAoe,EAAApd,QAAAhB,EAAA,EAAA,MAAAkC,KAAAlC,UAAAgN,KAJ9EG,sBAACuF,IAAA,EAAS,GACJ2L,GACE,MAAArc,GACO,aAAAE,GACC,cAAA8K,GACT,KAAAoR,EAAKzL,KACL,KAAAyL,EAAKxL,KACChF,WAAAA,GAAU,GACrB5N,QAAAqe,GAAAre,QAAA4N,GAAA5N,EAAA,EAAA,IAAAoe,EAAAxL,KAAA5S,EAAA,EAAA,IAAAoe,EAAAzL,KAAA3S,EAAA,EAAA,IAAAoe,EAAApd,MAAAhB,QAAAkC,GAAAlC,QAAAgN,GAAAhN,QAAAmN,KAAAA,IAAAnN,EAAA,EAAA,GARFmN;AAAAA,IAQE;AAAA,IAAA,KAED,SAAO;AAIA,YAAAnL,IAAAoc,EAAKpd,MACEkB,IAAAkc,EAAK/b,eAAL;AAAuB,UAAA2K;AAAA,MAAAhN,EAAA,EAAA,MAAAge,KAAAhe,EAAA,EAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,GAAA,MAAAoe,EAAA/S,MACtB2B,IAAA+Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,QAAAge,GAAAhe,EAAA,EAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,GAAA,IAAAoe,EAAA/S,IAAArL,SAAAgN,KAAAA,IAAAhN,EAAA,GAAA;AAAA,UAAAmN;AAAA,aAAAnN,WAAAqe,KAAAre,EAAA,GAAA,MAAA4N,KAAA5N,EAAA,GAAA,MAAAoe,EAAApd,QAAAhB,EAAA,GAAA,MAAAkC,KAAAlC,WAAAgN,KAJ9EG,IAAA,gBAAAlM,EAAC+N,IAAA,EAAU,GACLqP,GACE,MAAArc,GACO,aAAAE,GACC,cAAA8K,GACHY,WAAAA,EAAAA,CAAU,GACrB5N,SAAAqe,GAAAre,SAAA4N,GAAA5N,EAAA,GAAA,IAAAoe,EAAApd,MAAAhB,SAAAkC,GAAAlC,SAAAgN,GAAAhN,SAAAmN,KAAAA,IAAAnN,EAAA,GAAA,GANFmN;AAAAA,IAME;AAAA,IAAA,KAED,YAAU;AACkC,YAAAnL,IAAA4L,IAAA,KAAA9K;AAA8B,UAAAZ;AAAA,aAAAlC,EAAA,GAAA,MAAAoe,KAAApe,WAAAgC,KAAtEE,IAAA,gBAAAjB,EAAC8d,IAAA,EAAqBX,OAAAA,GAAkB,WAAApc,GAA8B,GAAIhC,SAAAoe,GAAApe,SAAAgC,GAAAhC,SAAAkC,KAAAA,IAAAlC,EAAA,GAAA,GAA1EkC;AAAAA,IAA0E;AAAA,IAAA,KAC9E,YAAU;AAC6C,YAAAF,IAAA4L,IAAA,KAAA9K;AAA8B,UAAAZ;AAAA,aAAAlC,EAAA,GAAA,MAAAoe,KAAApe,WAAAgC,KAAjFE,IAAA,gBAAAjB,EAAC4d,IAAA,EAAgCT,OAAAA,GAAkB,WAAApc,GAA8B,GAAIhC,SAAAoe,GAAApe,SAAAgC,GAAAhC,SAAAkC,KAAAA,IAAAlC,EAAA,GAAA,GAArFkC;AAAAA,IAAqF;AAAA,IAAA,KACzF,YAAU;AAIH,YAAAF,IAAAoc,EAAKpd,MACEkB,IAAAkc,EAAK/b;AAAY,UAAA2K;AAAA,MAAAhN,EAAA,GAAA,MAAAge,KAAAhe,EAAA,GAAA,MAAAoe,EAAAjS,gBAAAnM,EAAA,GAAA,MAAAoe,EAAA/S,MAChB2B,IAAA+Q,GAAkBC,GAAeI,EAAK/S,IAAK+S,EAAKjS,YAAa,GAACnM,SAAAge,GAAAhe,EAAA,GAAA,IAAAoe,EAAAjS,cAAAnM,EAAA,GAAA,IAAAoe,EAAA/S,IAAArL,SAAAgN,KAAAA,IAAAhN,EAAA,GAAA;AAAA,UAAAmN;AAAA,aAAAnN,EAAA,GAAA,MAAAqe,KAAAre,EAAA,GAAA,MAAA+Z,KAAA/Z,EAAA,GAAA,MAAAoe,EAAA/b,eAAArC,EAAA,GAAA,MAAAoe,EAAAxD,YAAA5a,EAAA,GAAA,MAAAoe,EAAAzT,aAAA3K,EAAA,GAAA,MAAAoe,EAAAtU,eAAA9J,EAAA,GAAA,MAAAoe,EAAApd,QAAAhB,EAAA,GAAA,MAAAoe,EAAAhZ,WAAApF,EAAA,GAAA,MAAAoe,EAAA5R,eAAAxM,EAAA,GAAA,MAAAuN,KAAAvN,EAAA,GAAA,MAAAgN,KAJ9EG,IAAA,gBAAAlM,EAAC0Z,IAAA,EAAa,GACR0D,GACE,MAAArc,GACO,aAAAE,GACC,cAAA8K,GACL,SAAAoR,EAAKhZ,SACD,aAAAgZ,EAAKtU,aACR,UAAAsU,EAAKxD,UACF,aAAAwD,EAAK5R,aACP,WAAA4R,EAAKzT,WACAoP,gBAAAA,GACFxM,cAAAA,EAAAA,CAAY,GAC1BvN,SAAAqe,GAAAre,SAAA+Z,GAAA/Z,EAAA,GAAA,IAAAoe,EAAA/b,aAAArC,EAAA,GAAA,IAAAoe,EAAAxD,UAAA5a,EAAA,GAAA,IAAAoe,EAAAzT,WAAA3K,EAAA,GAAA,IAAAoe,EAAAtU,aAAA9J,EAAA,GAAA,IAAAoe,EAAApd,MAAAhB,EAAA,GAAA,IAAAoe,EAAAhZ,SAAApF,EAAA,GAAA,IAAAoe,EAAA5R,aAAAxM,SAAAuN,GAAAvN,SAAAgN,GAAAhN,SAAAmN,KAAAA,IAAAnN,EAAA,GAAA,GAZFmN;AAAAA,IAYE;AAAA,IAAA,KAED;AAAA,IAAO,KACP;AAAA,IAAW,KACX;AAAA,IAAS,KACT;AAAA,IAAY,KACZ;AAAA,IAAQ,KACR,cAAY;AAAA,UAAAnL;AAAA,aAAAhC,WAAAge,KAAAhe,EAAA,GAAA,MAAA8C,KAAA9C,EAAA,GAAA,MAAAqN,KAAArN,EAAA,GAAA,MAAAoe,KAAApe,WAAAuN,KAAAvN,EAAA,GAAA,MAAAsN,KAEbtL,sBAACmc,IAAA,EACQC,OAAAA,GACQJ,eAAAA,GACL3Q,UAAAA,GACAC,UAAAA,GACCxK,WAAAA,GACGyK,cAAAA,GAAY,GAC1BvN,SAAAge,GAAAhe,SAAA8C,GAAA9C,SAAAqN,GAAArN,SAAAoe,GAAApe,SAAAuN,GAAAvN,SAAAsN,GAAAtN,SAAAgC,KAAAA,IAAAhC,EAAA,GAAA,GAPFgC;AAAAA,IAOE;AAAA,IAAA;AAAA,aAGG;AAAA,EAAI;AACd;"}
1
+ {"version":3,"file":"param-editor-field-DteDEyeU.js","sources":["../src/components/overlays/attachment-chip.tsx","../src/components/param-editor/param-editor-label.tsx","../src/components/param-editor/param-editor-control-item.tsx","../src/components/primitives/chip.tsx","../public/font/css/prompt-studio-icons.css?raw","../src/components/primitives/glyph-icon.tsx","../src/components/primitives/icon-options.tsx","../src/components/primitives/slider.tsx","../src/components/param-editor/inputs/selection-menu.tsx","../src/components/param-editor/inputs/action-input.tsx","../src/components/param-editor/inputs/anchor-grid.ts","../src/components/param-editor/param-editor-read-only-value.tsx","../src/components/param-editor/inputs/anchor-grid-input.tsx","../src/components/param-editor/inputs/boolean-input.tsx","../src/components/param-editor/inputs/color-input.tsx","../src/components/param-editor/inputs/date-input.tsx","../src/components/param-editor/inputs/file-upload-value.ts","../src/components/param-editor/inputs/file-upload-input.tsx","../src/components/param-editor/inputs/horizontal-text-input.tsx","../src/components/param-editor/inputs/markdown-input.tsx","../src/components/param-editor/inputs/number-input.tsx","../src/components/param-editor/inputs/numeric-value.ts","../src/components/param-editor/inputs/range-value.ts","../src/components/param-editor/inputs/slider-marks.tsx","../src/components/param-editor/inputs/range-input.tsx","../src/components/param-editor/inputs/resource-input-chips.tsx","../src/components/param-editor/inputs/resource-input.tsx","../src/components/param-editor/inputs/segmented-input.tsx","../src/components/param-editor/inputs/selection-input.tsx","../src/components/param-editor/inputs/text-input.tsx","../src/components/param-editor/param-editor-inline-group.tsx","../src/components/param-editor/inputs/vector-value.ts","../src/components/param-editor/inputs/vector-input.tsx","../src/components/param-editor/resolve-param-value.ts","../src/components/param-editor/param-editor-advanced-field.tsx","../src/components/param-editor/param-editor-presentation.ts","../src/components/param-editor/param-editor-read-only-field.tsx","../src/components/param-editor/param-editor-field.tsx"],"sourcesContent":["import { Badge, chakra, IconButton, Image, Popover, Text } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\n\nexport interface AttachmentChipProps {\n file: File;\n /** Accessible label for the remove control; the caller owns translation. */\n removeLabel: string;\n disabled?: boolean;\n onRemove: () => void;\n}\n\nconst isImage = (file: File) => file.type.startsWith(\"image/\");\n\nconst formatSize = (bytes: number) => {\n if (bytes < 1024) return `${bytes.toString()} B`;\n if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024).toString()} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\n/**\n * A file queued for upload, before the resource it belongs to exists. Removal\n * lives on the chip because there is no other surface between picking a file\n * and submitting where a mistaken attachment can be taken back.\n */\nexport const AttachmentChip = (props: AttachmentChipProps) => {\n const { file, removeLabel, disabled, onRemove } = props;\n const [previewUrl, setPreviewUrl] = useState<string | null>(null);\n\n // Object URLs are only needed for image previews; revoke on unmount/file swap\n // so we don't leak blobs while the dialog is open.\n useEffect(() => {\n if (!isImage(file)) return;\n const url = URL.createObjectURL(file);\n setPreviewUrl(url);\n return () => URL.revokeObjectURL(url);\n }, [file]);\n\n const name = (\n <Text as=\"span\" textStyle=\"label/XS/medium\" lineClamp={1} maxW=\"180px\">\n {file.name}\n </Text>\n );\n\n return (\n <Badge variant=\"chip\" gap=\"2xs\" pr=\"2xs\">\n {previewUrl ? (\n <Popover.Root positioning={{ placement: \"top\" }}>\n <Popover.Trigger asChild>\n <chakra.button type=\"button\" cursor=\"pointer\" minW=\"0\" display=\"inline-flex\">\n {name}\n </chakra.button>\n </Popover.Trigger>\n <Popover.Positioner>\n <Popover.Content w=\"auto\" p=\"2xs\" bg=\"bg\">\n <Image src={previewUrl} alt={file.name} maxW=\"240px\" maxH=\"240px\" borderRadius=\"sm\" />\n </Popover.Content>\n </Popover.Positioner>\n </Popover.Root>\n ) : (\n name\n )}\n <Text as=\"span\" textStyle=\"label/XS/regular\" color=\"fg.subtle\">\n {formatSize(file.size)}\n </Text>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={removeLabel} disabled={disabled} onClick={onRemove}>\n <X size={12} />\n </IconButton>\n </Badge>\n );\n};\n","import { HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { CircleHelp } from \"lucide-react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ninterface ParamEditorLabelProps {\n name: string;\n description?: string;\n compact?: boolean;\n}\n\nexport const ParamEditorLabel = (props: ParamEditorLabelProps) => {\n const { name, description, compact = false } = props;\n\n return (\n <HStack gap=\"1\" alignItems=\"center\" minW=\"0\">\n <Text\n textStyle={compact ? \"label/XS/medium\" : \"label/S/medium\"}\n color=\"fg.muted\"\n letterSpacing={compact ? \"0.08em\" : undefined}\n textTransform={compact ? \"uppercase\" : undefined}\n truncate\n >\n {name}\n </Text>\n {description ? (\n <Tooltip content={description}>\n <Icon as={CircleHelp} boxSize=\"12px\" color=\"fg.muted\" opacity={0.6} cursor=\"help\" flexShrink={0} />\n </Tooltip>\n ) : null}\n </HStack>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { ParamEditorFieldLabel } from \"./param-editor-field-label\";\n\ntype ControlItemOrientation = \"auto\" | \"inline\" | \"stacked\";\n\ninterface ParamEditorControlItemProps {\n name?: string;\n description?: string;\n hideLabel?: boolean;\n fullWidth?: boolean;\n /** `auto` renders inline when compact and stacked when full-width. */\n orientation?: ControlItemOrientation;\n /** Rendered on the label row, right-aligned (e.g. an editable value readout). */\n labelTrailing?: ReactNode;\n children: ReactNode;\n}\n\n// Shared row scaffold for control layouts: a labelled control that renders either\n// inline (label left / control right) or stacked (label above the control).\nexport const ParamEditorControlItem = (props: ParamEditorControlItemProps) => {\n const {\n name,\n description,\n hideLabel = false,\n fullWidth = false,\n orientation = \"auto\",\n labelTrailing,\n children,\n } = props;\n\n const label = hideLabel || !name ? null : <ParamEditorFieldLabel name={name} description={description} />;\n const resolved = orientation === \"auto\" ? (fullWidth ? \"stacked\" : \"inline\") : orientation;\n\n if (resolved === \"stacked\") {\n const header = label || labelTrailing;\n return (\n <Box minW=\"0\">\n {header ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" mb=\"xs\" minW=\"0\">\n {label}\n {labelTrailing}\n </Flex>\n ) : null}\n {children}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\" minW=\"0\">\n {label}\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\">\n {labelTrailing}\n {children}\n </Flex>\n </Flex>\n );\n};\n","import type { BadgeProps } from \"@chakra-ui/react\";\nimport { Badge } from \"@chakra-ui/react\";\n\nexport interface ChipProps extends Omit<BadgeProps, \"size\" | \"variant\"> {}\n\nexport const Chip = (props: ChipProps) => <Badge size=\"sm\" variant=\"chip\" {...props} />;\n","export default \"@font-face {\\n font-family: \\\"prompt-studio-icons\\\";\\n src: url(\\\"$fonts/prompt-studio-icons.eot?959122fb\\\");\\n src:\\n url(\\\"$fonts/prompt-studio-icons.eot?959122fb#iefix\\\") format(\\\"embedded-opentype\\\"),\\n url(\\\"$fonts/prompt-studio-icons.woff2?959122fb\\\") format(\\\"woff2\\\"),\\n url(\\\"$fonts/prompt-studio-icons.woff?959122fb\\\") format(\\\"woff\\\"),\\n url(\\\"$fonts/prompt-studio-icons.ttf?959122fb\\\") format(\\\"truetype\\\"),\\n url(\\\"$fonts/prompt-studio-icons.svg?959122fb#prompt-studio-icons\\\") format(\\\"svg\\\");\\n font-weight: normal;\\n font-style: normal;\\n font-display: block;\\n}\\n\\n[class^=\\\"icon-\\\"]::before,\\n[class*=\\\" icon-\\\"]::before {\\n font-family: \\\"prompt-studio-icons\\\", sans-serif;\\n font-style: normal;\\n font-weight: normal;\\n speak: never;\\n display: inline-block;\\n text-decoration: inherit;\\n width: 1em;\\n margin-right: 0.2em;\\n text-align: center;\\n font-variant: normal;\\n text-transform: none;\\n line-height: 1em;\\n margin-left: 0.2em;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.icon-cloud-add::before {\\n content: \\\"\\\\e800\\\";\\n}\\n.icon-credit-usage-50::before {\\n content: \\\"\\\\e801\\\";\\n}\\n.icon-history::before {\\n content: \\\"\\\\e802\\\";\\n}\\n.icon-data-string::before {\\n content: \\\"\\\\e803\\\";\\n}\\n.icon-data-object::before {\\n content: \\\"\\\\e804\\\";\\n}\\n.icon-data-integer::before {\\n content: \\\"\\\\e805\\\";\\n}\\n.icon-data-double::before {\\n content: \\\"\\\\e806\\\";\\n}\\n.icon-add::before {\\n content: \\\"\\\\e807\\\";\\n}\\n.icon-add-circle::before {\\n content: \\\"\\\\e808\\\";\\n}\\n.icon-data-boolean::before {\\n content: \\\"\\\\e809\\\";\\n}\\n.icon-add-square::before {\\n content: \\\"\\\\e80a\\\";\\n}\\n.icon-data-array::before {\\n content: \\\"\\\\e80b\\\";\\n}\\n.icon-status-backlog::before {\\n content: \\\"\\\\e80c\\\";\\n}\\n.icon-metrics::before {\\n content: \\\"\\\\e80d\\\";\\n}\\n.icon-pie-donut::before {\\n content: \\\"\\\\e80e\\\";\\n}\\n.icon-area-plot::before {\\n content: \\\"\\\\e80f\\\";\\n}\\n.icon-treemap::before {\\n content: \\\"\\\\e810\\\";\\n}\\n.icon-align-bottom::before {\\n content: \\\"\\\\e811\\\";\\n}\\n.icon-align-horizontally::before {\\n content: \\\"\\\\e812\\\";\\n}\\n.icon-align-left::before {\\n content: \\\"\\\\e813\\\";\\n}\\n.icon-align-right::before {\\n content: \\\"\\\\e814\\\";\\n}\\n.icon-align-vertically::before {\\n content: \\\"\\\\e815\\\";\\n}\\n.icon-radar-column-chart::before {\\n content: \\\"\\\\e816\\\";\\n}\\n.icon-pie-full::before {\\n content: \\\"\\\\e817\\\";\\n}\\n.icon-archive-1::before {\\n content: \\\"\\\\e818\\\";\\n}\\n.icon-archive-2::before {\\n content: \\\"\\\\e819\\\";\\n}\\n.icon-archive-add::before {\\n content: \\\"\\\\e81a\\\";\\n}\\n.icon-ct::before {\\n content: \\\"\\\\e81b\\\";\\n}\\n.icon-archive-minus::before {\\n content: \\\"\\\\e81c\\\";\\n}\\n.icon-archive-slash::before {\\n content: \\\"\\\\e81d\\\";\\n}\\n.icon-archive-tick::before {\\n content: \\\"\\\\e81e\\\";\\n}\\n.icon-min::before {\\n content: \\\"\\\\e81f\\\";\\n}\\n.icon-ctd::before {\\n content: \\\"\\\\e820\\\";\\n}\\n.icon-std::before {\\n content: \\\"\\\\e821\\\";\\n}\\n.icon-var::before {\\n content: \\\"\\\\e822\\\";\\n}\\n.icon-max::before {\\n content: \\\"\\\\e823\\\";\\n}\\n.icon-sum::before {\\n content: \\\"\\\\e824\\\";\\n}\\n.icon-status-todo::before {\\n content: \\\"\\\\e825\\\";\\n}\\n.icon-status-progress::before {\\n content: \\\"\\\\e826\\\";\\n}\\n.icon-status-review::before {\\n content: \\\"\\\\e827\\\";\\n}\\n.icon-status-done::before {\\n content: \\\"\\\\e828\\\";\\n}\\n.icon-status-canceled::before {\\n content: \\\"\\\\e829\\\";\\n}\\n.icon-level-low::before {\\n content: \\\"\\\\e82a\\\";\\n}\\n.icon-arrow-down::before {\\n content: \\\"\\\\e82b\\\";\\n}\\n.icon-arrow-down-1::before {\\n content: \\\"\\\\e82c\\\";\\n}\\n.icon-level-mid::before {\\n content: \\\"\\\\e82d\\\";\\n}\\n.icon-arrow-left::before {\\n content: \\\"\\\\e82e\\\";\\n}\\n.icon-level-high::before {\\n content: \\\"\\\\e82f\\\";\\n}\\n.icon-arrow-left-2::before {\\n content: \\\"\\\\e830\\\";\\n}\\n.icon-level-xhigh::before {\\n content: \\\"\\\\e831\\\";\\n}\\n.icon-arrow-right::before {\\n content: \\\"\\\\e832\\\";\\n}\\n.icon-arrow-right-1::before {\\n content: \\\"\\\\e833\\\";\\n}\\n.icon-arrow-right-3::before {\\n content: \\\"\\\\e835\\\";\\n}\\n.icon-arrow-right-4::before {\\n content: \\\"\\\\e836\\\";\\n}\\n.icon-arrow-square-down::before {\\n content: \\\"\\\\e838\\\";\\n}\\n.icon-arrow-square-left::before {\\n content: \\\"\\\\e839\\\";\\n}\\n.icon-arrow-square-up::before {\\n content: \\\"\\\\e83a\\\";\\n}\\n.icon-arrow-up-2::before {\\n content: \\\"\\\\e83f\\\";\\n}\\n.icon-arrow-up-3::before {\\n content: \\\"\\\\e840\\\";\\n}\\n.icon-book::before {\\n content: \\\"\\\\e868\\\";\\n}\\n.icon-book-1::before {\\n content: \\\"\\\\e869\\\";\\n}\\n.icon-box::before {\\n content: \\\"\\\\e86e\\\";\\n}\\n.icon-pointing-arrow::before {\\n content: \\\"\\\\e87d\\\";\\n}\\n.icon-data-structure::before {\\n content: \\\"\\\\e87e\\\";\\n}\\n.icon-brush-4::before {\\n content: \\\"\\\\e87f\\\";\\n}\\n.icon-folder::before {\\n content: \\\"\\\\e880\\\";\\n}\\n.icon-import-2::before {\\n content: \\\"\\\\e881\\\";\\n}\\n.icon-refresh::before {\\n content: \\\"\\\\e882\\\";\\n}\\n.icon-message-text-1::before {\\n content: \\\"\\\\e883\\\";\\n}\\n.icon-messages-2::before {\\n content: \\\"\\\\e884\\\";\\n}\\n.icon-global::before {\\n content: \\\"\\\\e885\\\";\\n}\\n.icon-briefcase::before {\\n content: \\\"\\\\e886\\\";\\n}\\n.icon-row-vertical::before {\\n content: \\\"\\\\e887\\\";\\n}\\n.icon-format-square::before {\\n content: \\\"\\\\e888\\\";\\n}\\n.icon-document-copy::before {\\n content: \\\"\\\\e889\\\";\\n}\\n.icon-document-forward::before {\\n content: \\\"\\\\e88a\\\";\\n}\\n.icon-tick-circle-1::before {\\n content: \\\"\\\\e88b\\\";\\n}\\n.icon-data-timestamp::before {\\n content: \\\"\\\\e88c\\\";\\n}\\n.icon-more-2::before {\\n content: \\\"\\\\e88d\\\";\\n}\\n.icon-notification::before {\\n content: \\\"\\\\e88e\\\";\\n}\\n.icon-search-normal-1::before {\\n content: \\\"\\\\e890\\\";\\n}\\n.icon-home-1::before {\\n content: \\\"\\\\e891\\\";\\n}\\n.icon-brush-1::before {\\n content: \\\"\\\\e892\\\";\\n}\\n.icon-paperclip-2::before {\\n content: \\\"\\\\e893\\\";\\n}\\n.icon-grid-4::before {\\n content: \\\"\\\\e894\\\";\\n}\\n.icon-mouse-circle::before {\\n content: \\\"\\\\e895\\\";\\n}\\n.icon-message-question::before {\\n content: \\\"\\\\e896\\\";\\n}\\n.icon-saving::before {\\n content: \\\"\\\\e898\\\";\\n}\\n.icon-chevron-double::before {\\n content: \\\"\\\\e899\\\";\\n}\\n.icon-close::before {\\n content: \\\"\\\\e89a\\\";\\n}\\n.icon-more-info::before {\\n content: \\\"\\\\e89b\\\";\\n}\\n.icon-arrow-up::before {\\n content: \\\"\\\\e89c\\\";\\n}\\n.icon-reorder::before {\\n content: \\\"\\\\e89d\\\";\\n}\\n.icon-refresh-1::before {\\n content: \\\"\\\\e89e\\\";\\n}\\n.icon-text-variable::before {\\n content: \\\"\\\\e89f\\\";\\n}\\n.icon-header-horizontal::before {\\n content: \\\"\\\\e8a0\\\";\\n}\\n.icon-edit-1::before {\\n content: \\\"\\\\e8a1\\\";\\n}\\n.icon-credit-usage-0::before {\\n content: \\\"\\\\e8a2\\\";\\n}\\n.icon-credit-usage-25::before {\\n content: \\\"\\\\e8a3\\\";\\n}\\n.icon-credit-usage-75::before {\\n content: \\\"\\\\e8a4\\\";\\n}\\n.icon-card::before {\\n content: \\\"\\\\e8a5\\\";\\n}\\n.icon-credit-usage-100::before {\\n content: \\\"\\\\e8a6\\\";\\n}\\n.icon-coding-language::before {\\n content: \\\"\\\\e8ab\\\";\\n}\\n.icon-table::before {\\n content: \\\"\\\\e8ad\\\";\\n}\\n.icon-check::before {\\n content: \\\"\\\\e8ae\\\";\\n}\\n.icon-logo-google::before {\\n content: \\\"\\\\e8af\\\";\\n}\\n.icon-data-date::before {\\n content: \\\"\\\\e8b0\\\";\\n}\\n.icon-llms::before {\\n content: \\\"\\\\e8b1\\\";\\n}\\n.icon-logo-openai::before {\\n content: \\\"\\\\e8b2\\\";\\n}\\n.icon-logo-anthropic::before {\\n content: \\\"\\\\e8b3\\\";\\n}\\n.icon-logo-meta::before {\\n content: \\\"\\\\e8b4\\\";\\n}\\n.icon-data-variant::before {\\n content: \\\"\\\\e8b5\\\";\\n}\\n.icon-chart-1::before {\\n content: \\\"\\\\e8b6\\\";\\n}\\n.icon-schema::before {\\n content: \\\"\\\\e8b7\\\";\\n}\\n.icon-ascending::before {\\n content: \\\"\\\\e8b8\\\";\\n}\\n.icon-bar-chart-100stacked::before {\\n content: \\\"\\\\e8ba\\\";\\n}\\n.icon-results::before {\\n content: \\\"\\\\e8bc\\\";\\n}\\n.icon-bar-chart::before {\\n content: \\\"\\\\e8be\\\";\\n}\\n.icon-descending::before {\\n content: \\\"\\\\e8bf\\\";\\n}\\n.icon-bar-chart-vertical::before {\\n content: \\\"\\\\e8c0\\\";\\n}\\n.icon-step-before-points::before {\\n content: \\\"\\\\e8c4\\\";\\n}\\n.icon-step-after-points::before {\\n content: \\\"\\\\e8c6\\\";\\n}\\n.icon-line-rounded::before {\\n content: \\\"\\\\e8c9\\\";\\n}\\n.icon-line-sharp::before {\\n content: \\\"\\\\e8cb\\\";\\n}\\n.icon-bar-chart-simple::before {\\n content: \\\"\\\\e8cc\\\";\\n}\\n.icon-pie-chart::before {\\n content: \\\"\\\\e8cd\\\";\\n}\\n.icon-bar-chart-stacked::before {\\n content: \\\"\\\\e8ce\\\";\\n}\\n.icon-map::before {\\n content: \\\"\\\\e8cf\\\";\\n}\\n.icon-radar-bar-chart::before {\\n content: \\\"\\\\e8d0\\\";\\n}\\n.icon-radar-chart::before {\\n content: \\\"\\\\e8d1\\\";\\n}\\n.icon-metric::before {\\n content: \\\"\\\\e8d2\\\";\\n}\\n.icon-area-plot-1::before {\\n content: \\\"\\\\e8d3\\\";\\n}\\n.icon-avg::before {\\n content: \\\"\\\\e8d4\\\";\\n}\\n.icon-area-plot-stacked100::before {\\n content: \\\"\\\\e8d5\\\";\\n}\\n.icon-scatter-bubbles::before {\\n content: \\\"\\\\e8d6\\\";\\n}\\n.icon-code::before {\\n content: \\\"\\\\e8d7\\\";\\n}\\n.icon-code-1::before {\\n content: \\\"\\\\e8d8\\\";\\n}\\n.icon-code-circle::before {\\n content: \\\"\\\\e8d9\\\";\\n}\\n.icon-scatter-plot::before {\\n content: \\\"\\\\e8db\\\";\\n}\\n.icon-scatter-dots::before {\\n content: \\\"\\\\e8dc\\\";\\n}\\n.icon-med::before {\\n content: \\\"\\\\e8dd\\\";\\n}\\n.icon-command-square::before {\\n content: \\\"\\\\e8e1\\\";\\n}\\n.icon-component::before {\\n content: \\\"\\\\e8e2\\\";\\n}\\n.icon-copy::before {\\n content: \\\"\\\\e8e9\\\";\\n}\\n.icon-danger::before {\\n content: \\\"\\\\e8f5\\\";\\n}\\n.icon-visualization::before {\\n content: \\\"\\\\e8fc\\\";\\n}\\n.icon-document-1::before {\\n content: \\\"\\\\e911\\\";\\n}\\n.icon-document-code::before {\\n content: \\\"\\\\e913\\\";\\n}\\n.icon-document-download::before {\\n content: \\\"\\\\e916\\\";\\n}\\n.icon-document-text-1::before {\\n content: \\\"\\\\e91f\\\";\\n}\\n.icon-document-upload::before {\\n content: \\\"\\\\e920\\\";\\n}\\n.icon-edit::before {\\n content: \\\"\\\\e927\\\";\\n}\\n.icon-edit-2::before {\\n content: \\\"\\\\e928\\\";\\n}\\n.icon-eraser-1::before {\\n content: \\\"\\\\e939\\\";\\n}\\n.icon-export-1::before {\\n content: \\\"\\\\e93b\\\";\\n}\\n.icon-export-3::before {\\n content: \\\"\\\\e93d\\\";\\n}\\n.icon-eye::before {\\n content: \\\"\\\\e93f\\\";\\n}\\n.icon-eye-slash::before {\\n content: \\\"\\\\e940\\\";\\n}\\n.icon-flash-1::before {\\n content: \\\"\\\\e950\\\";\\n}\\n.icon-folder-2::before {\\n content: \\\"\\\\e955\\\";\\n}\\n.icon-glass::before {\\n content: \\\"\\\\e97c\\\";\\n}\\n.icon-home-2::before {\\n content: \\\"\\\\e9aa\\\";\\n}\\n.icon-import-1::before {\\n content: \\\"\\\\e9b5\\\";\\n}\\n.icon-info-circle::before {\\n content: \\\"\\\\e9b7\\\";\\n}\\n.icon-key::before {\\n content: \\\"\\\\e9bc\\\";\\n}\\n.icon-data::before {\\n content: \\\"\\\\e9c7\\\";\\n}\\n.icon-link-2::before {\\n content: \\\"\\\\e9d1\\\";\\n}\\n.icon-location::before {\\n content: \\\"\\\\e9d5\\\";\\n}\\n.icon-location-slash::before {\\n content: \\\"\\\\e9d9\\\";\\n}\\n.icon-login-1::before {\\n content: \\\"\\\\e9e0\\\";\\n}\\n.icon-logout-1::before {\\n content: \\\"\\\\e9e2\\\";\\n}\\n.icon-magicpen::before {\\n content: \\\"\\\\e9e4\\\";\\n}\\n.icon-maximize-2::before {\\n content: \\\"\\\\e9f0\\\";\\n}\\n.icon-maximize-4::before {\\n content: \\\"\\\\e9f2\\\";\\n}\\n.icon-maximize-21::before {\\n content: \\\"\\\\e9f3\\\";\\n}\\n.icon-menu-1::before {\\n content: \\\"\\\\e9f8\\\";\\n}\\n.icon-message::before {\\n content: \\\"\\\\e9fa\\\";\\n}\\n.icon-messages::before {\\n content: \\\"\\\\ea06\\\";\\n}\\n.icon-microphone-2::before {\\n content: \\\"\\\\ea11\\\";\\n}\\n.icon-minus-cirlce::before {\\n content: \\\"\\\\ea18\\\";\\n}\\n.icon-moon::before {\\n content: \\\"\\\\ea2e\\\";\\n}\\n.icon-more::before {\\n content: \\\"\\\\ea2f\\\";\\n}\\n.icon-note::before {\\n content: \\\"\\\\ea44\\\";\\n}\\n.icon-paperclip::before {\\n content: \\\"\\\\ea56\\\";\\n}\\n.icon-play::before {\\n content: \\\"\\\\ea6a\\\";\\n}\\n.icon-presention-chart::before {\\n content: \\\"\\\\ea6f\\\";\\n}\\n.icon-redo::before {\\n content: \\\"\\\\ea9c\\\";\\n}\\n.icon-rotate-left::before {\\n content: \\\"\\\\eaa8\\\";\\n}\\n.icon-rotate-right::before {\\n content: \\\"\\\\eaaa\\\";\\n}\\n.icon-search-zoom-in-1::before {\\n content: \\\"\\\\eac8\\\";\\n}\\n.icon-search-zoom-out::before {\\n content: \\\"\\\\eac9\\\";\\n}\\n.icon-send-1::before {\\n content: \\\"\\\\ead1\\\";\\n}\\n.icon-setting-2::before {\\n content: \\\"\\\\ead6\\\";\\n}\\n.icon-setting-4::before {\\n content: \\\"\\\\ead8\\\";\\n}\\n.icon-setting-5::before {\\n content: \\\"\\\\ead9\\\";\\n}\\n.icon-shuffle::before {\\n content: \\\"\\\\eae9\\\";\\n}\\n.icon-sidebar-bottom::before {\\n content: \\\"\\\\eaea\\\";\\n}\\n.icon-sidebar-left::before {\\n content: \\\"\\\\eaeb\\\";\\n}\\n.icon-sidebar-right::before {\\n content: \\\"\\\\eaec\\\";\\n}\\n.icon-sidebar-top::before {\\n content: \\\"\\\\eaed\\\";\\n}\\n.icon-slash::before {\\n content: \\\"\\\\eaf3\\\";\\n}\\n.icon-smallcaps::before {\\n content: \\\"\\\\eaf9\\\";\\n}\\n.icon-sms::before {\\n content: \\\"\\\\eafd\\\";\\n}\\n.icon-star::before {\\n content: \\\"\\\\eb07\\\";\\n}\\n.icon-stop::before {\\n content: \\\"\\\\eb0e\\\";\\n}\\n.icon-sun-1::before {\\n content: \\\"\\\\eb15\\\";\\n}\\n.icon-tag-cross::before {\\n content: \\\"\\\\eb19\\\";\\n}\\n.icon-task::before {\\n content: \\\"\\\\eb1c\\\";\\n}\\n.icon-task-square::before {\\n content: \\\"\\\\eb1d\\\";\\n}\\n.icon-teacher::before {\\n content: \\\"\\\\eb1e\\\";\\n}\\n.icon-text::before {\\n content: \\\"\\\\eb1f\\\";\\n}\\n.icon-textalign-center::before {\\n content: \\\"\\\\eb20\\\";\\n}\\n.icon-textalign-justifycenter::before {\\n content: \\\"\\\\eb21\\\";\\n}\\n.icon-textalign-left::before {\\n content: \\\"\\\\eb24\\\";\\n}\\n.icon-textalign-right::before {\\n content: \\\"\\\\eb25\\\";\\n}\\n.icon-text-block::before {\\n content: \\\"\\\\eb26\\\";\\n}\\n.icon-text-bold::before {\\n content: \\\"\\\\eb27\\\";\\n}\\n.icon-text-italic::before {\\n content: \\\"\\\\eb28\\\";\\n}\\n.icon-text-underline::before {\\n content: \\\"\\\\eb29\\\";\\n}\\n.icon-tick-circle::before {\\n content: \\\"\\\\eb2a\\\";\\n}\\n.icon-timer-1::before {\\n content: \\\"\\\\eb32\\\";\\n}\\n.icon-trash::before {\\n content: \\\"\\\\eb3c\\\";\\n}\\n.icon-undo::before {\\n content: \\\"\\\\eb47\\\";\\n}\\n.icon-user::before {\\n content: \\\"\\\\eb4a\\\";\\n}\\n.icon-video-vertical::before {\\n content: \\\"\\\\eb61\\\";\\n}\\n.icon-wallet-2::before {\\n content: \\\"\\\\eb6d\\\";\\n}\\n.icon-wifi::before {\\n content: \\\"\\\\eb7b\\\";\\n}\\n.icon-stockholm::before {\\n content: \\\"\\\\eb81\\\";\\n}\\n.icon-perplexity-ai::before {\\n content: \\\"\\\\eb82\\\";\\n}\\n\"","import { chakra } from \"@chakra-ui/react\";\nimport type { ComponentType, HTMLAttributes } from \"react\";\n// Package-relative on purpose: every host that resolves `@pstdio/ui` from source\n// would otherwise need its own `$fonts` alias.\nimport generatedGlyphStyles from \"../../../public/font/css/prompt-studio-icons.css?raw\";\nimport \"./glyph-icon.css\";\n\n// The generated stylesheet is the source of truth for glyph codepoints; reading\n// them here keeps `@pstdio/ui` from bundling its legacy @font-face formats.\nconst GLYPH_RULE = /\\.icon-([\\w-]+)::before\\s*\\{\\s*content:\\s*\"(\\\\[0-9a-f]+)\"/g;\n\nconst glyphContent = new Map(\n Array.from(generatedGlyphStyles.matchAll(GLYPH_RULE), ([, name, content]) => [name, content]),\n);\n\n// Glyphs are painted through a ::before pseudo element sized by font-size, so the\n// wrapper turns its own box into a size container. That lets the glyph track\n// whatever box the caller gives it (`boxSize` on a Chakra `Icon`, say) exactly\n// like a lucide SVG would.\n//\n// Everything is applied through the `css` prop rather than a `chakra()` base:\n// factory base styles sit in a lower cascade layer than the `chakra-icon` recipe\n// and the global reset, which silently blockified the wrapper and, with it, threw\n// away the `vertical-align` that keeps an icon on the text's centre line.\n//\n// The ::before is taken out of flow and stretched over the wrapper so its geometry\n// never depends on the wrapper's own layout mode. Within that box the font builder\n// normalises every glyph's ink to a 1024-unit box sitting 47 units above the\n// baseline of a 1000-unit em (ascent 850 / descent -150), so the ink renders larger\n// than the em and half its overhang above centre: 89.5% of the container lands it\n// on lucide's 22-of-24 optical size, and 0.209em — measured against the glyph's own\n// font size, so it follows any optical scale — drops it onto the centre line.\nconst GLYPH_OPTICAL_SIZE = 89.5;\nconst GLYPH_BASELINE_OFFSET = \"0.209em\";\n\nconst GlyphRoot = chakra(\"span\");\n\nconst glyphStyles = (content: string, fontSize: string) => ({\n position: \"relative\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n flexShrink: 0,\n boxSize: \"1em\",\n lineHeight: 1,\n containerType: \"size\",\n \"&::before\": {\n content,\n fontSize,\n position: \"absolute\",\n inset: 0,\n fontFamily: '\"prompt-studio-icons\", sans-serif',\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n lineHeight: \"100cqmin\",\n textAlign: \"center\",\n transform: `translateY(${GLYPH_BASELINE_OFFSET})`,\n },\n});\n\ntype GlyphIconProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\">;\n\nexport interface GlyphIconOptions {\n /**\n * Optical size relative to a round glyph. Every glyph is normalised to the same\n * ink box, so square marks such as the level bars need trimming to carry the\n * same visual weight as the status rings.\n */\n scale?: number;\n}\n\n/**\n * Builds a component for one `prompt-studio-icons` glyph so lucide icons and\n * font glyphs share a single component type in the icon registry.\n */\nexport const createGlyphIcon = (glyph: string, options: GlyphIconOptions = {}): ComponentType<GlyphIconProps> => {\n const styles = glyphStyles(\n `\"${glyphContent.get(glyph) ?? \"\"}\"`,\n `${(GLYPH_OPTICAL_SIZE * (options.scale ?? 1)).toFixed(1)}cqmin`,\n );\n\n const GlyphIcon = (props: GlyphIconProps) => <GlyphRoot aria-hidden {...props} css={styles} />;\n\n GlyphIcon.displayName = `GlyphIcon(${glyph})`;\n return GlyphIcon;\n};\n","import {\n Archive,\n Ban,\n Bell,\n Bookmark,\n BookOpen,\n Bot,\n Bug,\n Circle,\n Code,\n Component,\n Cpu,\n Eye,\n Feather,\n FileText,\n Flag,\n Flame,\n Folder,\n GitBranch,\n GitCommitHorizontal,\n Hash,\n Heart,\n History,\n Inbox,\n Kanban,\n Layers,\n Lightbulb,\n Link,\n ListChecks,\n MessageSquare,\n Play,\n Puzzle,\n Rocket,\n Scale,\n Settings,\n Shield,\n Sparkles,\n SquareKanban,\n Star,\n Tag,\n Target,\n Terminal,\n Ticket,\n Timer,\n Users,\n Workflow,\n Wrench,\n Zap,\n} from \"lucide-react\";\nimport type { ComponentType } from \"react\";\nimport { createGlyphIcon } from \"./glyph-icon\";\n\nexport interface IconColorPickerIconOption {\n value: string | null;\n label: string;\n icon: ComponentType;\n}\n\nexport const optionColors = [\n \"gray\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"teal\",\n \"blue\",\n \"cyan\",\n \"purple\",\n \"pink\",\n] as const;\n\nconst glyph = (name: string, label: string) => ({ value: name, label, icon: createGlyphIcon(name) });\n\n// Level bars fill their ink box as a solid square, so they read heavier than the\n// round status glyphs at the same size; lucide's own bar marks sit at 18-of-24.\nconst levelGlyph = (name: string, label: string) => ({\n value: name,\n label,\n icon: createGlyphIcon(name, { scale: 0.82 }),\n});\n\n// Ordered exactly like the `cmp/TagAppearancePopover` grid in the design system:\n// a leading \"none\" cell, generic icons, then status rings, levels and concepts.\n// Status rings and level bars have no lucide equivalent and ship as glyphs in\n// the `prompt-studio-icons` font.\nexport const optionIcons = [\n { value: null, label: \"none\", icon: Ban },\n { value: \"flag\", label: \"flag\", icon: Flag },\n { value: \"bug\", label: \"bug\", icon: Bug },\n { value: \"sparkles\", label: \"sparkles\", icon: Sparkles },\n { value: \"book-open\", label: \"book open\", icon: BookOpen },\n { value: \"wrench\", label: \"wrench\", icon: Wrench },\n { value: \"zap\", label: \"zap\", icon: Zap },\n { value: \"feather\", label: \"feather\", icon: Feather },\n { value: \"scale\", label: \"scale\", icon: Scale },\n { value: \"layers\", label: \"layers\", icon: Layers },\n { value: \"star\", label: \"star\", icon: Star },\n { value: \"flame\", label: \"flame\", icon: Flame },\n { value: \"lightbulb\", label: \"lightbulb\", icon: Lightbulb },\n { value: \"shield\", label: \"shield\", icon: Shield },\n { value: \"eye\", label: \"eye\", icon: Eye },\n // The design draws the clock cell with lucide's timer.\n { value: \"clock\", label: \"clock\", icon: Timer },\n { value: \"tag\", label: \"tag\", icon: Tag },\n { value: \"code\", label: \"code\", icon: Code },\n { value: \"rocket\", label: \"rocket\", icon: Rocket },\n { value: \"heart\", label: \"heart\", icon: Heart },\n { value: \"bookmark\", label: \"bookmark\", icon: Bookmark },\n { value: \"target\", label: \"target\", icon: Target },\n { value: \"bell\", label: \"bell\", icon: Bell },\n { value: \"hash\", label: \"hash\", icon: Hash },\n glyph(\"status-backlog\", \"status backlog\"),\n glyph(\"status-todo\", \"status todo\"),\n glyph(\"status-progress\", \"status in progress\"),\n glyph(\"status-review\", \"status in review\"),\n glyph(\"status-done\", \"status done\"),\n glyph(\"status-canceled\", \"status canceled\"),\n { value: \"ticket\", label: \"ticket\", icon: Ticket },\n { value: \"git-branch\", label: \"git branch\", icon: GitBranch },\n levelGlyph(\"level-low\", \"level low\"),\n levelGlyph(\"level-mid\", \"level medium\"),\n levelGlyph(\"level-high\", \"level high\"),\n levelGlyph(\"level-xhigh\", \"level very high\"),\n { value: \"bot\", label: \"bot\", icon: Bot },\n { value: \"puzzle\", label: \"puzzle\", icon: Puzzle },\n { value: \"workflow\", label: \"workflow\", icon: Workflow },\n { value: \"kanban\", label: \"kanban\", icon: Kanban },\n { value: \"message-square\", label: \"message square\", icon: MessageSquare },\n { value: \"folder\", label: \"folder\", icon: Folder },\n { value: \"file-text\", label: \"file text\", icon: FileText },\n { value: \"history\", label: \"history\", icon: History },\n { value: \"play\", label: \"play\", icon: Play },\n { value: \"terminal\", label: \"terminal\", icon: Terminal },\n { value: \"cpu\", label: \"CPU\", icon: Cpu },\n { value: \"users\", label: \"users\", icon: Users },\n // Prompt Studio concepts: the icons its own tickets, boards, workspaces and\n // notifications are drawn with.\n { value: \"component\", label: \"ticket\", icon: Component },\n { value: \"square-kanban\", label: \"board\", icon: SquareKanban },\n { value: \"git-commit-horizontal\", label: \"workspace\", icon: GitCommitHorizontal },\n { value: \"inbox\", label: \"notifications\", icon: Inbox },\n { value: \"list-checks\", label: \"checklist\", icon: ListChecks },\n { value: \"archive\", label: \"archive\", icon: Archive },\n { value: \"link\", label: \"link\", icon: Link },\n { value: \"settings\", label: \"settings\", icon: Settings },\n] satisfies IconColorPickerIconOption[];\n\nexport const getIconComponent = (\n name: string | null | undefined,\n iconOptions: readonly IconColorPickerIconOption[] = optionIcons,\n): ComponentType => {\n const normalizedName = (name ?? \"circle\")\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([a-zA-Z])([0-9])/g, \"$1-$2\")\n .toLowerCase();\n const entry = iconOptions.find((icon) => icon.value === normalizedName);\n return entry?.icon ?? Circle;\n};\n","import { Slider as ChakraSlider } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface SliderProps extends ChakraSlider.RootProps {}\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(function Slider(props, ref) {\n const { children, ...rest } = props;\n\n return (\n <ChakraSlider.Root ref={ref} variant=\"solid\" {...rest}>\n <ChakraSlider.Control>\n <ChakraSlider.Track height=\"2px\" borderRadius=\"0\" bg=\"bg.muted\">\n <ChakraSlider.Range bg=\"fg\" />\n </ChakraSlider.Track>\n <ChakraSlider.Thumbs\n boxSize=\"0.5rem\"\n bg=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"bg\"\n borderRadius=\"none\"\n boxShadow=\"none\"\n transition=\"width 0.12s ease, height 0.12s ease, border-color 0.2s ease-in-out\"\n _hover={{ boxSize: \"0.75rem\", borderColor: \"border.accent-light\" }}\n _active={{ boxSize: \"0.875rem\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n />\n </ChakraSlider.Control>\n {children}\n </ChakraSlider.Root>\n );\n});\n","import { Button, Flex, Icon, IconButton, Menu, Portal } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, Square, SquareCheck } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { ListRow } from \"../../list-row/list-row\";\nimport { SearchableMenu, type SearchableMenuItem } from \"../../overlays/searchable-menu\";\nimport { getIconComponent } from \"../../primitives\";\nimport type { SelectionGroup } from \"../param-editor.types\";\n\nexport interface SelectionMenuOption {\n id: string;\n name: string;\n icon?: string;\n /** Palette key (e.g. \"blue\") applied to the option's icon. */\n color?: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface SelectionMenuProps {\n triggerLabel: ReactNode;\n options: SelectionMenuOption[];\n selectedIds: string[];\n multiSelect: boolean;\n disabled?: boolean;\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyText?: string;\n group?: SelectionGroup;\n fullWidth?: boolean;\n triggerVariant?: \"button\" | \"icon\";\n triggerAriaLabel?: string;\n size?: \"xs\" | \"sm\";\n onToggle: (optionId: string) => void;\n onGroupChange?: (optionId: string) => void;\n}\n\nexport const selectionIndicator = (multiSelect: boolean, selected: boolean) => {\n if (multiSelect)\n return <Icon as={selected ? SquareCheck : Square} boxSize=\"14px\" color={selected ? \"fg\" : \"fg.muted\"} />;\n return selected ? <Icon as={Check} boxSize=\"14px\" color=\"fg\" /> : null;\n};\n\nexport const selectionOptionIcon = (option: SelectionMenuOption | undefined, boxSize: string) => {\n if (!option) return null;\n return (\n <Icon\n as={getIconComponent(option.icon ?? null)}\n boxSize={boxSize}\n color={option.color ? `${option.color}.500` : \"fg.muted\"}\n />\n );\n};\n\n/**\n * The single dropdown behind every option picker in the editor — selection\n * params and editable resource params alike. Sharing it is what keeps a\n * resource attribute and a command param from drifting into two looks.\n *\n * Single-selects clear by re-picking the selected option; a dedicated \"none\"\n * row would read as just another value to choose.\n */\nexport const SelectionMenu = (props: SelectionMenuProps) => {\n const {\n triggerLabel,\n options,\n selectedIds,\n multiSelect,\n disabled,\n searchable = false,\n searchPlaceholder = \"Search options…\",\n emptyText = \"No options found\",\n group,\n fullWidth,\n triggerVariant = \"button\",\n triggerAriaLabel,\n size = \"sm\",\n onToggle,\n onGroupChange,\n } = props;\n const trigger =\n triggerVariant === \"icon\" ? (\n <IconButton aria-label={triggerAriaLabel ?? \"Open options\"} size=\"2xs\" variant=\"ghost\" disabled={disabled}>\n {triggerLabel}\n </IconButton>\n ) : (\n <Button\n size={size}\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n disabled={disabled}\n textStyle={size === \"xs\" ? \"label/XS\" : \"label/S/regular\"}\n width={fullWidth ? \"100%\" : undefined}\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _expanded={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" w={fullWidth ? \"full\" : undefined}>\n <Flex alignItems=\"center\" gap=\"xs\">\n {triggerLabel}\n </Flex>\n <ChevronDown size={14} />\n </Flex>\n </Button>\n );\n\n if (searchable || group) {\n const items: SearchableMenuItem[] = options.map((option) => ({\n id: option.id,\n label: option.name,\n searchText: [option.id, option.description].filter(Boolean).join(\" \"),\n secondaryLabel: option.description,\n icon: getIconComponent(option.icon),\n isDisabled: option.disabled,\n isSelected: selectedIds.includes(option.id),\n onSelect: () => onToggle(option.id),\n }));\n const selectedGroup = group?.options.find((option) => option.id === group.defaultValue);\n\n return (\n <SearchableMenu\n trigger={trigger}\n items={items}\n listId={group?.defaultValue}\n showSearch={searchable}\n searchPlaceholder={searchPlaceholder}\n closeOnSelect={!multiSelect}\n emptyState={\n <Menu.Item value=\"empty\" disabled asChild>\n <ListRow asChild variant=\"full-width\" id=\"empty\" label={emptyText} disabled />\n </Menu.Item>\n }\n parentList={\n group\n ? {\n items: group.options.map((option) => ({\n id: option.id,\n label: option.name,\n searchText: [option.id, option.description].filter(Boolean).join(\" \"),\n secondaryLabel: option.description,\n icon: getIconComponent(option.icon),\n isDisabled: option.disabled,\n isSelected: option.id === group.defaultValue,\n })),\n selectedLabel: selectedGroup?.name ?? group.placeholder ?? `Select ${group.name.toLowerCase()}`,\n selectedIcon: selectedGroup ? getIconComponent(selectedGroup.icon) : undefined,\n ariaLabel: group.name,\n disabled: group.disabled || group.options.length <= 1,\n showSearch: group.searchable,\n searchPlaceholder: group.searchPlaceholder ?? `Search ${group.name.toLowerCase()}…`,\n emptyState: (\n <Menu.Item value=\"group-empty\" disabled asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id=\"group-empty\"\n label={group.emptyText ?? `No ${group.name.toLowerCase()} found`}\n disabled\n />\n </Menu.Item>\n ),\n onSelect: (item) => onGroupChange?.(item.id),\n }\n : undefined\n }\n />\n );\n }\n\n return (\n <Menu.Root closeOnSelect={!multiSelect}>\n <Menu.Trigger asChild>{trigger}</Menu.Trigger>\n {/* Portaled like every other menu: rendered inline it is clipped by the\n panel's overflow and can extend past the viewport. */}\n <Portal>\n <Menu.Positioner>\n <Menu.Content>\n {options.map((option) => {\n const selected = selectedIds.includes(option.id);\n return (\n <Menu.Item key={option.id} value={option.id} disabled={option.disabled} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n role={multiSelect ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={selected}\n id={option.id}\n label={option.name}\n icon={selectionOptionIcon(option, \"16px\")}\n tooltip={option.description}\n disabled={option.disabled}\n isSelected={selected}\n endContent={selectionIndicator(multiSelect, selected)}\n onActivate={() => onToggle(option.id)}\n />\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { Button, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { ActionOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface ActionInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue?: string;\n options: ActionOption[];\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const ActionInput = (props: ActionInputProps) => {\n const { id, name, description, defaultValue, options, onChange, readOnly, presentation = \"stacked\" } = props;\n const [active, setActive] = useState(defaultValue);\n\n useEffect(() => {\n setActive(defaultValue);\n }, [defaultValue]);\n\n const run = (optionId: string) => {\n setActive(optionId);\n onChange(id, optionId);\n };\n const horizontal = presentation === \"horizontal\";\n const selectedName = options.find((option) => option.id === active)?.name ?? name;\n\n if (horizontal) {\n return (\n <SelectionMenu\n triggerLabel={selectedName}\n options={options}\n selectedIds={active ? [active] : []}\n multiSelect={false}\n disabled={readOnly}\n onToggle={run}\n />\n );\n }\n\n const row = (\n <Flex gap=\"xs\" wrap=\"wrap\">\n {options.map((option) => (\n <Button\n key={option.id}\n size=\"xs\"\n variant={active === option.id ? \"subtle\" : \"outline\"}\n disabled={option.disabled || readOnly}\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n onClick={() => run(option.id)}\n >\n {option.name}\n </Button>\n ))}\n </Flex>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {row}\n </ParamEditorControlItem>\n );\n};\n","import type { AnchorGridValue } from \"../param-editor.types\";\n\n/** The nine anchors in row-major order (top-left → bottom-right). */\nexport const ANCHOR_GRID_VALUES: AnchorGridValue[] = [\n \"top-left\",\n \"top\",\n \"top-right\",\n \"left\",\n \"center\",\n \"right\",\n \"bottom-left\",\n \"bottom\",\n \"bottom-right\",\n];\n\nexport const isAnchorGridValue = (value: unknown): value is AnchorGridValue =>\n typeof value === \"string\" && (ANCHOR_GRID_VALUES as string[]).includes(value);\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface ParamEditorReadOnlyValueProps extends Omit<BoxProps, \"children\"> {\n children: ReactNode;\n preserveWhitespace?: boolean;\n}\n\nexport const ParamEditorReadOnlyValue = (props: ParamEditorReadOnlyValueProps) => {\n const { children, preserveWhitespace = false, ...boxProps } = props;\n\n return (\n <Box minW=\"0\" textStyle=\"label/S/regular\" whiteSpace={preserveWhitespace ? \"pre-wrap\" : undefined} {...boxProps}>\n {children}\n </Box>\n );\n};\n","import { Box, Grid, IconButton } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { AnchorGridValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { ANCHOR_GRID_VALUES } from \"./anchor-grid\";\n\ninterface AnchorGridInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: AnchorGridValue;\n onChange: (id: string, value: AnchorGridValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const AnchorGridInput = (props: AnchorGridInputProps) => {\n const { id, name, description, defaultValue, onChange, readOnly, fullWidth } = props;\n const [value, setValue] = useState<AnchorGridValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: AnchorGridValue) => {\n setValue(next);\n onChange(id, next);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const grid = (\n <Grid\n templateColumns=\"repeat(3, 1.5rem)\"\n gap=\"1px\"\n width=\"fit-content\"\n bg=\"border.subtle\"\n p=\"1px\"\n borderRadius=\"sm\"\n overflow=\"hidden\"\n >\n {ANCHOR_GRID_VALUES.map((anchor) => {\n const selected = anchor === value;\n return (\n <IconButton\n key={anchor}\n aria-label={anchor}\n aria-pressed={selected}\n size=\"2xs\"\n variant=\"ghost\"\n bg={selected ? \"fg\" : \"bg\"}\n _hover={{ bg: selected ? \"fg\" : \"bg.muted\" }}\n borderRadius=\"0\"\n onClick={() => select(anchor)}\n >\n <Box boxSize=\"0.375rem\" borderRadius=\"full\" bg={selected ? \"bg\" : \"fg.muted\"} />\n </IconButton>\n );\n })}\n </Grid>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation={fullWidth ? \"stacked\" : \"inline\"}>\n {grid}\n </ParamEditorControlItem>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Switch } from \"@/components/primitives/switch\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface BooleanInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: boolean;\n onChange: (id: string, value: boolean) => void;\n readOnly?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const BooleanInput = (props: BooleanInputProps) => {\n const { id, name, description, defaultValue, onChange, readOnly, hideLabel, fullWidth, size = \"sm\" } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (readOnly) {\n return (\n <ParamEditorControlItem\n name={name}\n description={description}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n orientation=\"inline\"\n >\n <ParamEditorReadOnlyValue>{String(value)}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem\n name={name}\n description={description}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n orientation=\"inline\"\n >\n <Switch\n size={size}\n checked={value}\n inputProps={{ \"aria-label\": name }}\n onCheckedChange={(details) => {\n setValue(details.checked);\n onChange(id, details.checked);\n }}\n />\n </ParamEditorControlItem>\n );\n};\n","import { Box, ColorPicker, type ColorPickerValueChangeDetails, Flex, parseColor } from \"@chakra-ui/react\";\nimport { type FocusEvent as ReactFocusEvent, useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface ColorInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const ColorInput = (props: ColorInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextColor: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextColor), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n if (!open) return;\n\n const isInsidePicker = (target: EventTarget | null) => {\n const node = target as Node;\n return rootRef.current?.contains(node) || contentRef.current?.contains(node);\n };\n\n const handleOutsideInteraction = (event: FocusEvent | PointerEvent) => {\n if (isInsidePicker(event.target)) return;\n\n setOpen(false);\n };\n\n document.addEventListener(\"focusin\", handleOutsideInteraction, true);\n document.addEventListener(\"pointerdown\", handleOutsideInteraction, true);\n document.addEventListener(\"click\", handleOutsideInteraction, true);\n\n return () => {\n document.removeEventListener(\"focusin\", handleOutsideInteraction, true);\n document.removeEventListener(\"pointerdown\", handleOutsideInteraction, true);\n document.removeEventListener(\"click\", handleOutsideInteraction, true);\n };\n }, [open]);\n\n const handleChange = (newColor: string) => {\n setValue(newColor);\n scheduleChange(newColor);\n };\n\n const handleBlur = (event: ReactFocusEvent<HTMLDivElement>) => {\n const root = event.currentTarget;\n\n setTimeout(() => {\n if (!root.contains(root.ownerDocument.activeElement)) setOpen(false);\n });\n };\n\n if (readOnly) {\n const valueElement = (\n <ParamEditorReadOnlyValue>\n <Flex alignItems=\"center\" gap=\"xs\">\n <Box boxSize=\"0.75rem\" borderRadius=\"xs\" bg={value} />\n <Box as=\"span\">{value}</Box>\n </Flex>\n </ParamEditorReadOnlyValue>\n );\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n const rootProps = {\n value: parseColor(value),\n open,\n onOpenChange: (details: { open: boolean }) => setOpen(details.open),\n onFocusOutside: () => setOpen(false),\n onInteractOutside: () => setOpen(false),\n onBlur: handleBlur,\n onValueChange: (details: ColorPickerValueChangeDetails) => handleChange(details.value.toString(\"hex\")),\n disabled: readOnly,\n };\n\n const picker = (\n <ColorPicker.Root ref={rootRef} {...rootProps} size={size} width={fullWidth ? \"100%\" : \"8.75rem\"} maxW=\"100%\">\n <ColorPicker.HiddenInput />\n <ColorPicker.Label srOnly>{name}</ColorPicker.Label>\n <ColorPicker.Control>\n <ColorPicker.Input readOnly={readOnly} onFocus={() => setOpen(false)} />\n <ColorPicker.Trigger />\n </ColorPicker.Control>\n <ColorPicker.Positioner>\n <ColorPicker.Content ref={contentRef} onBlur={handleBlur}>\n <ColorPicker.Area />\n <ColorPicker.Sliders />\n <ColorPicker.SwatchGroup>\n <ColorPicker.SwatchTrigger value={value}>\n <ColorPicker.Swatch value={value} />\n </ColorPicker.SwatchTrigger>\n </ColorPicker.SwatchGroup>\n </ColorPicker.Content>\n </ColorPicker.Positioner>\n </ColorPicker.Root>\n );\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {picker}\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {picker}\n </Flex>\n )}\n </Box>\n );\n};\n","import { Box, Flex, Input } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface DateInputProps {\n id: string;\n defaultValue: string;\n name: string;\n min?: string;\n max?: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const DateInput = (props: DateInputProps) => {\n const {\n id,\n defaultValue,\n name,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n type=\"date\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n min={min}\n max={max}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"8.75rem\"\n size={size}\n type=\"date\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n min={min}\n max={max}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n )}\n </Box>\n );\n};\n","import type { FileUploadValue } from \"../param-editor.types\";\n\nexport type FileUploadSummaryState = \"empty\" | \"queued\" | \"uploading\" | \"complete\" | \"error\";\n\nconst valueId = (file: File, index: number) =>\n `${file.name}-${file.size.toString()}-${file.lastModified.toString()}-${index.toString()}`;\n\nexport const createFileUploadValues = (\n files: File[],\n existing: FileUploadValue[],\n multiple: boolean,\n): FileUploadValue[] => {\n const offset = multiple ? existing.length : 0;\n const selected = files.map((file, index) => ({\n id: valueId(file, offset + index),\n file,\n status: \"queued\" as const,\n }));\n\n return multiple ? [...existing, ...selected] : selected.slice(0, 1);\n};\n\nexport const getFileUploadSummary = (values: FileUploadValue[]) => {\n const states: FileUploadSummaryState[] = [\"uploading\", \"error\", \"queued\", \"complete\"];\n const state = states.find((candidate) => values.some((value) => value.status === candidate)) ?? \"empty\";\n const count = state === \"empty\" ? 0 : values.filter((value) => value.status === state).length;\n\n return { state, count };\n};\n","import { Button, Flex, Icon, Spinner, Stack, Text, Wrap } from \"@chakra-ui/react\";\nimport { CircleAlert, CircleCheck, Clock3, Paperclip } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { AttachmentChip } from \"@/components/overlays/attachment-chip\";\nimport type { FileUploadValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { createFileUploadValues, getFileUploadSummary } from \"./file-upload-value\";\n\ninterface FileUploadInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: FileUploadValue[];\n accept?: string;\n multiple?: boolean;\n uploadLabel?: string;\n onChange: (id: string, value: FileUploadValue[]) => void;\n readOnly?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nconst UploadStatus = (props: { values: FileUploadValue[] }) => {\n const { values } = props;\n const summary = getFileUploadSummary(values);\n if (summary.state === \"empty\") return null;\n\n const noun = summary.count === 1 ? \"file\" : \"files\";\n const labels = {\n queued: `${summary.count.toString()} ${noun} queued`,\n uploading: `Uploading ${summary.count.toString()} ${noun}`,\n complete: `${summary.count.toString()} ${noun} uploaded`,\n error: `${summary.count.toString()} ${noun} failed`,\n empty: \"\",\n };\n const icon =\n summary.state === \"uploading\" ? (\n <Spinner boxSize=\"12px\" borderWidth=\"1px\" />\n ) : (\n <Icon\n as={summary.state === \"error\" ? CircleAlert : summary.state === \"complete\" ? CircleCheck : Clock3}\n boxSize=\"12px\"\n />\n );\n\n return (\n <Flex alignItems=\"center\" gap=\"2xs\" color={summary.state === \"error\" ? \"fg.error\" : \"fg.muted\"}>\n {icon}\n <Text textStyle=\"label/XS/medium\">{labels[summary.state]}</Text>\n </Flex>\n );\n};\n\nconst UploadQueue = (props: { readOnly?: boolean; values: FileUploadValue[]; onRemove: (valueId: string) => void }) => {\n const { readOnly, values, onRemove } = props;\n if (values.length === 0) return null;\n\n return (\n <Stack gap=\"2xs\" minW=\"0\">\n <UploadStatus values={values} />\n <Wrap gap=\"2xs\">\n {values.map((value) => (\n <AttachmentChip\n key={value.id}\n file={value.file}\n disabled={readOnly}\n removeLabel={`Remove ${value.file.name}`}\n onRemove={() => onRemove(value.id)}\n />\n ))}\n </Wrap>\n </Stack>\n );\n};\n\nexport const FileUploadInput = (props: FileUploadInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n accept,\n multiple = true,\n uploadLabel = \"Attach files\",\n onChange,\n readOnly,\n presentation = \"stacked\",\n } = props;\n const [values, setValues] = useState(defaultValue);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setValues(defaultValue);\n }, [defaultValue]);\n\n const commit = (next: FileUploadValue[]) => {\n setValues(next);\n onChange(id, next);\n };\n const remove = (valueId: string) => commit(values.filter((value) => value.id !== valueId));\n const button = readOnly ? null : (\n <Button size=\"xs\" variant=\"ghost\" flexShrink={0} onClick={() => inputRef.current?.click()}>\n <Icon as={Paperclip} boxSize=\"14px\" />\n {uploadLabel}\n </Button>\n );\n const input = (\n <input\n ref={inputRef}\n hidden\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={(event) => {\n commit(createFileUploadValues(Array.from(event.currentTarget.files ?? []), values, multiple));\n event.currentTarget.value = \"\";\n }}\n />\n );\n\n if (presentation === \"horizontal\") {\n return (\n <Flex alignItems=\"center\" gap=\"sm\" minW=\"0\" width=\"full\">\n {input}\n {button}\n <UploadQueue readOnly={readOnly} values={values} onRemove={remove} />\n </Flex>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <Stack alignItems=\"start\" gap=\"xs\" minW=\"0\">\n {input}\n {button}\n <UploadQueue readOnly={readOnly} values={values} onRemove={remove} />\n </Stack>\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface HorizontalTextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n size?: \"xs\" | \"sm\";\n}\n\nexport const HorizontalTextInput = (props: HorizontalTextInputProps) => {\n const { id, defaultValue, name, onChange, description, readOnly, hideLabel = false, size = \"sm\" } = props;\n const [value, setValue] = useState(defaultValue);\n const [isExpanded, setIsExpanded] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n const handleClick = () => {\n if (!readOnly) {\n setIsExpanded(true);\n }\n };\n\n const handleBlur = () => {\n // Only collapse if the value is empty\n if (value.trim().length === 0) {\n setIsExpanded(false);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n // Allow users to collapse with Escape key\n if (e.key === \"Escape\") {\n setIsExpanded(false);\n e.preventDefault();\n }\n };\n\n if (readOnly) {\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <ParamEditorReadOnlyValue preserveWhitespace>{value}</ParamEditorReadOnlyValue>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Box position=\"relative\" minHeight=\"2rem\">\n {!isExpanded ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" height=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onClick={handleClick}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n boxShadow=\"none\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {!hideLabel && (\n <Box mb=\"sm\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Textarea\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n rows={3}\n resize=\"vertical\"\n autoFocus\n />\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","import { Box, Flex, Input, Stack } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { LazyMarkdownEditor } from \"@/components/rich-text\";\nimport { ParamEditorFieldLabel } from \"../param-editor-field-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface MarkdownInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n placeholder?: string;\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nexport const MarkdownInput = (props: MarkdownInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n placeholder,\n onChange,\n readOnly,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [isExpanded, setIsExpanded] = useState(false);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commit = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const editor = (editorValue: string) => (\n <Box borderWidth=\"1px\" borderColor=\"border\" borderRadius=\"xs\" minH=\"7rem\" minW=\"0\" overflow=\"visible\" width=\"full\">\n <LazyMarkdownEditor\n defaultState={editorValue}\n isEditable={!readOnly}\n placeholder={placeholder}\n scrollable={false}\n onChange={commit}\n />\n </Box>\n );\n const label = <ParamEditorFieldLabel name={name} description={description} />;\n\n if (presentation === \"horizontal\") {\n if (readOnly) {\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Flex alignItems=\"center\" minHeight=\"2rem\">\n <ParamEditorReadOnlyValue preserveWhitespace>{value}</ParamEditorReadOnlyValue>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Box position=\"relative\" minHeight=\"2rem\">\n {!isExpanded ? (\n <Input\n className=\"nodrag\"\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={name}\n value={value}\n onClick={() => {\n setIsExpanded(true);\n }}\n onChange={(event) => commit(event.target.value)}\n />\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\" }}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n setIsExpanded(false);\n event.preventDefault();\n }\n }}\n >\n {editor(value)}\n </Box>\n )}\n </Box>\n </Box>\n );\n }\n\n return (\n <Stack gap=\"xs\" minW=\"0\" width=\"full\">\n {label}\n {editor(value)}\n </Stack>\n );\n};\n","import { Box, Flex, type NumberInputValueChangeDetails, type SliderValueChangeDetails } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { NumberInputField, NumberInputRoot } from \"@/components/primitives/number-input\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface NumberInputProps {\n id: string;\n defaultValue: number;\n name: string;\n step?: number;\n min?: number;\n max?: number;\n onChange: (id: string, value: number) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n hideSlider?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const NumberInput = (props: NumberInputProps) => {\n const {\n id,\n defaultValue,\n name,\n step = 1,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n hideSlider = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const isRange = min !== undefined && max !== undefined;\n const showSlider = isRange && !hideSlider;\n const useFullWidthLayout = fullWidth && !showSlider;\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const scheduleChange = (nextValue: number) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {useFullWidthLayout ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <NumberInputRoot\n disabled={readOnly}\n width=\"100%\"\n size={size}\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <NumberInputRoot\n disabled={readOnly}\n width=\"5rem\"\n size={size}\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Flex>\n )}\n {showSlider && (\n <Slider\n disabled={readOnly}\n value={[value]}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: SliderValueChangeDetails) => {\n setValue(details.value[0]);\n }}\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n onChange(id, details.value[0]);\n }}\n />\n )}\n </Box>\n );\n};\n","/** Clamp `value` into the inclusive range, tolerating an inverted min/max. */\nexport const clampToRange = (value: number, min: number, max: number) => {\n const lower = Math.min(min, max);\n const upper = Math.max(min, max);\n if (value < lower) return lower;\n if (value > upper) return upper;\n return value;\n};\n\n/** Snap `value` to the nearest multiple of `step` measured from `origin`. */\nexport const snapToStep = (value: number, step: number, origin = 0) => {\n if (!(step > 0)) return value;\n const steps = Math.round((value - origin) / step);\n return origin + steps * step;\n};\n\n/** Format a number with an optional unit suffix, trimming float noise. */\nexport const formatUnitValue = (value: number, unit?: string) => {\n const rounded = Number.isInteger(value) ? `${value}` : `${Number(value.toFixed(3))}`;\n return unit ? `${rounded}${unit}` : rounded;\n};\n","import type { RangeValue } from \"../param-editor.types\";\nimport { clampToRange, snapToStep } from \"./numeric-value\";\n\n/** Order both handles and clamp (and optionally snap) them into `[min, max]`. */\nexport const normalizeRange = (value: RangeValue, min: number, max: number, step?: number): RangeValue => {\n const first = clampToRange(value[0], min, max);\n const second = clampToRange(value[1], min, max);\n let start = Math.min(first, second);\n let end = Math.max(first, second);\n if (step && step > 0) {\n start = clampToRange(snapToStep(start, step, min), min, max);\n end = clampToRange(snapToStep(end, step, min), min, max);\n }\n return [start, end];\n};\n\n/** Replace a single handle, keeping the pair ordered. */\nexport const updateRangeHandle = (\n value: RangeValue,\n index: 0 | 1,\n next: number,\n min: number,\n max: number,\n step?: number,\n): RangeValue => {\n const draft: RangeValue = index === 0 ? [next, value[1]] : [value[0], next];\n return normalizeRange(draft, min, max, step);\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\n\ninterface SliderMarksProps {\n count?: number;\n}\n\n// Evenly-spaced tick marks rendered under a slider track. Purely decorative.\nexport const SliderMarks = (props: SliderMarksProps) => {\n const { count } = props;\n if (!count || count < 2) return null;\n const positions = Array.from({ length: count }, (_, index) => index / (count - 1));\n\n return (\n <Flex justifyContent=\"space-between\" mt=\"2xs\" aria-hidden=\"true\">\n {positions.map((position) => (\n <Box key={position} width=\"1px\" height=\"0.375rem\" bg=\"border.subtle\" />\n ))}\n </Flex>\n );\n};\n","import { Box, Button, Flex, Icon, Popover, type SliderValueChangeDetails, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport type { RangeValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { formatUnitValue } from \"./numeric-value\";\nimport { normalizeRange } from \"./range-value\";\nimport { SliderMarks } from \"./slider-marks\";\n\ninterface RangeInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: RangeValue;\n min: number;\n max: number;\n step?: number;\n unit?: string;\n markerCount?: number;\n onChange: (id: string, value: RangeValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const RangeInput = (props: RangeInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n min,\n max,\n step = 1,\n unit,\n markerCount,\n onChange,\n readOnly,\n fullWidth,\n presentation = \"stacked\",\n } = props;\n\n const [value, setValue] = useState<RangeValue>(() => normalizeRange(defaultValue, min, max, step));\n\n useEffect(() => {\n setValue(normalizeRange(defaultValue, min, max, step));\n }, [defaultValue, min, max, step]);\n\n const label = `${formatUnitValue(value[0], unit)} – ${formatUnitValue(value[1], unit)}`;\n const horizontal = presentation === \"horizontal\";\n\n if (readOnly) {\n if (horizontal) {\n return <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>;\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const trailing = (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n );\n const slider = (\n <Box>\n <Slider\n size=\"sm\"\n value={value}\n min={min}\n max={max}\n step={step}\n onValueChange={(details: SliderValueChangeDetails) =>\n setValue(normalizeRange(details.value as RangeValue, min, max, step))\n }\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n const next = normalizeRange(details.value as RangeValue, min, max, step);\n setValue(next);\n onChange(id, next);\n }}\n />\n <SliderMarks count={markerCount} />\n </Box>\n );\n\n if (horizontal) {\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\", offset: { mainAxis: 4 } }}>\n <Popover.Trigger asChild>\n <Button size=\"xs\" variant=\"ghost\" aria-label={`${name}: ${label}`}>\n {label}\n <Icon as={ChevronDown} boxSize=\"14px\" />\n </Button>\n </Popover.Trigger>\n <Popover.Positioner>\n <Popover.Content width=\"60\" padding=\"sm\" background=\"bg\">\n <Stack gap=\"xs\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\">\n <Text textStyle=\"label/S/medium\">{name}</Text>\n {trailing}\n </Flex>\n {slider}\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Popover.Root>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\" labelTrailing={trailing}>\n {slider}\n </ParamEditorControlItem>\n );\n};\n","import { Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport { Chip } from \"../../primitives/chip\";\nimport { getIconComponent } from \"../../primitives/icon-options\";\nimport { ResourceBadge } from \"../../primitives/resource-badge\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\n\nconst optionIcon = (option: ResourceOption) => (\n <Icon as={getIconComponent(option.icon)} boxSize=\"14px\" color={option.color ? `${option.color}.500` : \"fg.muted\"} />\n);\n\nconst openExternal = (href: string) => window.open(href, \"_blank\", \"noreferrer\");\n\nconst copyToClipboard = (text: string) => void navigator.clipboard?.writeText(text).catch(() => undefined);\n\ninterface ResourceChipProps {\n option: ResourceOption;\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: () => void;\n}\n\n// A chip opens its external href in a new tab, opens its internal ref via the host, or\n// copies its text to the clipboard — whichever the option declares.\nexport const ResourceChip = (props: ResourceChipProps) => {\n const { option, onOpenResource, onRemove } = props;\n const isReference = Boolean(option.href || option.ref || option.copyText);\n\n if (!isReference) {\n return <Chip>{option.name}</Chip>;\n }\n\n const handleSelect =\n option.href && option.href.length > 0\n ? () => openExternal(option.href!)\n : option.ref && onOpenResource\n ? () => onOpenResource(option.ref!)\n : option.copyText\n ? () => copyToClipboard(option.copyText!)\n : undefined;\n\n return (\n <ResourceBadge\n fileName={option.name}\n icon={optionIcon(option)}\n size=\"md\"\n onSelect={handleSelect ? () => handleSelect() : undefined}\n onRemove={onRemove ? () => onRemove() : undefined}\n />\n );\n};\n\ninterface ResourceChipListProps {\n options: ResourceOption[];\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: (optionId: string) => void;\n emptyText?: string;\n}\n\nexport const ResourceChipList = (props: ResourceChipListProps) => {\n const { options, onOpenResource, onRemove, emptyText } = props;\n\n if (options.length === 0) {\n return (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n {emptyText ?? \"None\"}\n </Text>\n );\n }\n\n return (\n <Wrap gap=\"2xs\">\n {options.map((option) => (\n <ResourceChip\n key={option.id}\n option={option}\n onOpenResource={onOpenResource}\n onRemove={onRemove ? () => onRemove(option.id) : undefined}\n />\n ))}\n </Wrap>\n );\n};\n","import { Box, Flex, Icon, Stack } from \"@chakra-ui/react\";\nimport { Plus } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { getIconComponent } from \"../../primitives/icon-options\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ResourceChipList } from \"./resource-input-chips\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface ResourceInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string | string[];\n options: ResourceOption[];\n onChange: (id: string, value: string | string[]) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n editable?: boolean;\n multiSelect?: boolean;\n placeholder?: string;\n emptyText?: string;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nconst toIds = (value: string | string[]) => {\n if (Array.isArray(value)) return value;\n return value ? [value] : [];\n};\n\nconst resolveOptions = (ids: string[], options: ResourceOption[]) =>\n ids\n .map((id) => options.find((option) => option.id === id))\n .filter((option): option is ResourceOption => Boolean(option));\n\ninterface FieldShellProps {\n fullWidth: boolean;\n label: ReactNode;\n control: ReactNode;\n presentation: \"stacked\" | \"horizontal\";\n}\n\nconst FieldShell = (props: FieldShellProps) => {\n const { fullWidth, label, control, presentation } = props;\n\n if (presentation === \"horizontal\") {\n return (\n <Stack gap=\"2xs\" alignItems=\"start\" minW=\"0\">\n {label}\n {control}\n </Stack>\n );\n }\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">{label}</Box>\n {control}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {control}\n </Flex>\n );\n};\n\ninterface ResourceSelectMenuProps {\n triggerLabel: ReactNode;\n options: ResourceOption[];\n selectedIds: string[];\n multiSelect: boolean;\n triggerVariant?: \"button\" | \"icon\";\n triggerAriaLabel?: string;\n size?: \"xs\" | \"sm\";\n onToggle: (optionId: string) => void;\n}\n\n// Resource params share the editor's one dropdown, so a ticket property and a\n// command param cannot drift into two looks.\nconst ResourceSelectMenu = (props: ResourceSelectMenuProps) => {\n const { triggerLabel, options, selectedIds, multiSelect, triggerVariant, triggerAriaLabel, size, onToggle } = props;\n\n return (\n <SelectionMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n triggerVariant={triggerVariant}\n triggerAriaLabel={triggerAriaLabel}\n size={size}\n onToggle={onToggle}\n />\n );\n};\n\nexport const ResourceInput = (props: ResourceInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n onChange,\n onOpenResource,\n readOnly,\n editable = false,\n multiSelect = false,\n placeholder,\n emptyText,\n fullWidth = false,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const emitChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n onChange(id, next);\n };\n\n // Debounce multi-select toggles so a burst of menu clicks makes one update call.\n const scheduleChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, next), 540);\n };\n\n const selectedIds = toIds(value);\n const selectedOptions = resolveOptions(selectedIds, options);\n const interactive = editable && !readOnly;\n\n const label = <ParamEditorLabel name={name} description={description} compact={presentation === \"horizontal\"} />;\n\n if (!interactive) {\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n presentation={presentation}\n control={<ResourceChipList options={selectedOptions} onOpenResource={onOpenResource} emptyText={emptyText} />}\n />\n );\n }\n\n const toggleOption = (optionId: string) => {\n if (multiSelect) {\n const next = selectedIds.includes(optionId)\n ? selectedIds.filter((entry) => entry !== optionId)\n : [...selectedIds, optionId];\n setValue(next);\n scheduleChange(next);\n return;\n }\n // Re-picking the selected option clears it.\n const next = selectedIds.includes(optionId) ? \"\" : optionId;\n setValue(next);\n emitChange(next);\n };\n\n const removeOption = (optionId: string) => {\n const next = selectedIds.filter((entry) => entry !== optionId);\n setValue(next);\n scheduleChange(next);\n };\n\n if (multiSelect) {\n const control = (\n <Flex gap=\"2xs\" alignItems=\"center\" flexWrap=\"wrap\" minW=\"0\">\n {selectedOptions.length > 0 ? (\n <ResourceChipList\n options={selectedOptions}\n onOpenResource={onOpenResource}\n onRemove={removeOption}\n emptyText={emptyText}\n />\n ) : null}\n <ResourceSelectMenu\n triggerLabel={<Icon as={Plus} boxSize=\"12px\" />}\n options={options}\n selectedIds={selectedIds}\n multiSelect\n triggerVariant=\"icon\"\n triggerAriaLabel={placeholder ?? `Add ${name}`}\n size={size}\n onToggle={toggleOption}\n />\n </Flex>\n );\n\n return <FieldShell fullWidth={fullWidth} label={label} control={control} presentation={presentation} />;\n }\n\n const selected = selectedOptions[0];\n const triggerLabel = selected ? (\n <Flex align=\"center\" gap=\"2xs\" minW=\"0\">\n <Icon\n as={getIconComponent(selected.icon)}\n boxSize=\"14px\"\n color={selected.color ? `${selected.color}.500` : \"fg.muted\"}\n />\n {selected.name}\n </Flex>\n ) : (\n (placeholder ?? \"Select\")\n );\n\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n presentation={presentation}\n control={\n <ResourceSelectMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={false}\n size={size}\n onToggle={toggleOption}\n />\n }\n />\n );\n};\n","import { Box, Button, Group } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SegmentedOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { SelectionMenu } from \"./selection-menu\";\n\ninterface SegmentedInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n options: SegmentedOption[];\n variant?: \"default\" | \"dots\";\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n}\n\nexport const SegmentedInput = (props: SegmentedInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n variant = \"default\",\n onChange,\n readOnly,\n fullWidth,\n presentation = \"stacked\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const selectedName = options.find((option) => option.id === value)?.name ?? value;\n const horizontal = presentation === \"horizontal\";\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} hideLabel={horizontal} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{selectedName}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n if (horizontal) {\n return (\n <SelectionMenu\n triggerLabel={selectedName}\n options={options}\n selectedIds={[value]}\n multiSelect={false}\n onToggle={select}\n />\n );\n }\n\n const group = (\n <Group\n attached\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {options.map((option) => {\n const selected = option.id === value;\n return (\n <Button\n key={option.id}\n flex=\"1\"\n size=\"xs\"\n variant={selected ? \"subtle\" : \"ghost\"}\n borderRadius=\"0\"\n aria-pressed={selected}\n onClick={() => select(option.id)}\n >\n {variant === \"dots\" ? (\n <Box boxSize=\"0.5rem\" borderRadius=\"full\" bg={option.indicatorColor ?? \"fg.muted\"} mr=\"1\" />\n ) : null}\n {option.name}\n </Button>\n );\n })}\n </Group>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {group}\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SelectionGroup } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { SelectionMenu, type SelectionMenuOption, selectionOptionIcon } from \"./selection-menu\";\n\ninterface SelectionInputProps {\n id: string;\n defaultValue: string | string[];\n name: string;\n options: SelectionMenuOption[];\n onChange: (id: string, value: string | string[]) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n multiSelect?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n placeholder?: string;\n fullWidth?: boolean;\n /** Re-picking the selected option clears it. */\n clearable?: boolean;\n /** Inert, but still rendered as a control. */\n disabled?: boolean;\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyText?: string;\n group?: SelectionGroup;\n size?: \"xs\" | \"sm\";\n}\n\nexport const SelectionInput = (props: SelectionInputProps) => {\n const {\n id,\n defaultValue,\n name,\n options,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n multiSelect = false,\n placeholder,\n fullWidth = false,\n clearable = false,\n disabled = false,\n searchable = false,\n searchPlaceholder,\n emptyText,\n group,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const [groupValue, setGroupValue] = useState(group?.defaultValue ?? \"\");\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n setGroupValue(group?.defaultValue ?? \"\");\n }, [group?.defaultValue]);\n\n const selectedIds = multiSelect\n ? Array.isArray(value)\n ? value\n : []\n : typeof value === \"string\" && value\n ? [value]\n : [];\n\n const getDisplayText = () => {\n const names = selectedIds\n .map((selectedId) => options.find((option) => option.id === selectedId)?.name)\n .filter((optionName): optionName is string => Boolean(optionName));\n\n if (names.length === 0) return placeholder || \"Select\";\n if (names.length <= 3) return names.join(\", \");\n return `${names.slice(0, 3).join(\", \")} +${(names.length - 3).toString()}`;\n };\n\n const commit = (nextValue: string | string[]) => {\n setValue(nextValue);\n onChange(id, nextValue);\n };\n\n const handleToggle = (optionId: string) => {\n if (!multiSelect) {\n // Re-picking the selected option clears it, so a single-select needs no\n // extra \"none\" row cluttering the list.\n commit(clearable && selectedIds.includes(optionId) ? \"\" : optionId);\n return;\n }\n commit(\n selectedIds.includes(optionId) ? selectedIds.filter((item) => item !== optionId) : [...selectedIds, optionId],\n );\n };\n\n const handleGroupChange = (optionId: string) => {\n if (!group || optionId === groupValue) return;\n setGroupValue(optionId);\n onChange(group.id, optionId);\n };\n\n // Only a lone selection can colour the trigger; a multi-pick has no single icon.\n const triggerOption = selectedIds.length === 1 ? options.find((option) => option.id === selectedIds[0]) : undefined;\n const label = !hideLabel ? <ParamEditorLabel name={name} description={description} /> : null;\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{getDisplayText()}</ParamEditorReadOnlyValue>;\n\n if (fullWidth)\n return (\n <Box>\n {label ? <Box mb=\"xs\">{label}</Box> : null}\n {valueElement}\n </Box>\n );\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n const menu = (\n <SelectionMenu\n triggerLabel={\n <>\n {selectionOptionIcon(triggerOption, \"14px\")}\n {getDisplayText()}\n </>\n }\n options={options}\n selectedIds={selectedIds}\n multiSelect={multiSelect}\n disabled={disabled}\n searchable={searchable}\n searchPlaceholder={searchPlaceholder}\n emptyText={emptyText}\n group={group ? { ...group, defaultValue: groupValue } : undefined}\n fullWidth={fullWidth}\n size={size}\n onToggle={handleToggle}\n onGroupChange={handleGroupChange}\n />\n );\n\n if (fullWidth)\n return (\n <Box>\n {label ? <Box mb=\"xs\">{label}</Box> : null}\n {menu}\n </Box>\n );\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {menu}\n </Flex>\n </Box>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface TextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n singleLine?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n size?: \"xs\" | \"sm\";\n}\n\nexport const TextInput = (props: TextInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n singleLine = true,\n hideLabel = false,\n fullWidth = false,\n size = \"sm\",\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n // Leaving the field is a commit: a form submitted inside the debounce window\n // would otherwise send the value as it was before the last keystrokes.\n const handleBlur = () => {\n if (!timeoutRef.current) return;\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n onChange(id, value);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue preserveWhitespace={!singleLine}>{value}</ParamEditorReadOnlyValue>;\n\n if (singleLine && !fullWidth) {\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n {singleLine && !fullWidth ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {singleLine ? (\n <Input\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n ) : (\n <Textarea\n aria-label={name}\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size={size}\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n rows={3}\n resize=\"vertical\"\n />\n )}\n </Box>\n )}\n </Box>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorInlineGroupProps extends FlexProps {}\n\n// A horizontal row of controls that share a line (e.g. paired x/y inputs).\nexport const ParamEditorInlineGroup = (props: ParamEditorInlineGroupProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import type { VectorValue } from \"../param-editor.types\";\nimport { clampToRange } from \"./numeric-value\";\n\nexport interface VectorBounds {\n min?: number;\n max?: number;\n}\n\nconst clampAxis = (value: number, bounds: VectorBounds) => {\n if (bounds.min === undefined && bounds.max === undefined) return value;\n const min = bounds.min ?? Number.NEGATIVE_INFINITY;\n const max = bounds.max ?? Number.POSITIVE_INFINITY;\n return clampToRange(value, min, max);\n};\n\n/** Update a single axis without dropping the other, clamping into optional bounds. */\nexport const updateVectorAxis = (\n value: VectorValue,\n axis: \"x\" | \"y\",\n next: number,\n bounds: VectorBounds = {},\n): VectorValue => {\n const clamped = clampAxis(next, bounds);\n return axis === \"x\" ? { x: clamped, y: value.y } : { x: value.x, y: clamped };\n};\n","import { Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { VectorValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorInlineGroup } from \"../param-editor-inline-group\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { NumberInput } from \"./number-input\";\nimport { updateVectorAxis } from \"./vector-value\";\n\ninterface VectorInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: VectorValue;\n xLabel?: string;\n yLabel?: string;\n min?: number;\n max?: number;\n step?: number;\n onChange: (id: string, value: VectorValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\ninterface VectorAxisFieldProps {\n label: string;\n fieldId: string;\n value: number;\n min?: number;\n max?: number;\n step?: number;\n onCommit: (value: number) => void;\n}\n\n// A single axis: the shared NumberInput (label/slider hidden) prefixed with its axis letter.\nconst VectorAxisField = (props: VectorAxisFieldProps) => {\n const { label, fieldId, value, min, max, step, onCommit } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"1\" flexShrink={0}>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" width=\"1rem\" flexShrink={0}>\n {label}\n </Text>\n <NumberInput\n id={fieldId}\n name={label}\n description=\"\"\n defaultValue={value}\n min={min}\n max={max}\n step={step}\n hideLabel\n hideSlider\n onChange={(_, next) => onCommit(next)}\n />\n </Flex>\n );\n};\n\nexport const VectorInput = (props: VectorInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n xLabel = \"X\",\n yLabel = \"Y\",\n min,\n max,\n step = 1,\n onChange,\n readOnly,\n } = props;\n const [value, setValue] = useState<VectorValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commitAxis = (axis: \"x\" | \"y\", next: number) => {\n const updated = updateVectorAxis(value, axis, next, { min, max });\n setValue(updated);\n onChange(id, updated);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description}>\n <ParamEditorReadOnlyValue>{`${value.x}, ${value.y}`}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <ParamEditorInlineGroup>\n <VectorAxisField\n label={xLabel}\n fieldId={`${id}.x`}\n value={value.x}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"x\", next)}\n />\n <VectorAxisField\n label={yLabel}\n fieldId={`${id}.y`}\n value={value.y}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"y\", next)}\n />\n </ParamEditorInlineGroup>\n </ParamEditorControlItem>\n );\n};\n","import type { ParamValueMap } from \"./param-editor.types\";\n\nexport const resolveParamValue = <T>(defaultValues: ParamValueMap, paramId: string, fallback: T) =>\n defaultValues[paramId] === undefined ? fallback : (defaultValues[paramId] as T);\n","import { ActionInput } from \"./inputs/action-input\";\nimport { AnchorGridInput } from \"./inputs/anchor-grid-input\";\nimport { FileUploadInput } from \"./inputs/file-upload-input\";\nimport { RangeInput } from \"./inputs/range-input\";\nimport { SegmentedInput } from \"./inputs/segmented-input\";\nimport { VectorInput } from \"./inputs/vector-input\";\nimport type { Param, ParamValue, ParamValueMap } from \"./param-editor.types\";\nimport { resolveParamValue } from \"./resolve-param-value\";\n\ntype AdvancedParam = Extract<\n Param,\n { type: \"range\" | \"segmented\" | \"actions\" | \"anchorGrid\" | \"vector\" | \"fileUpload\" }\n>;\n\ninterface ParamEditorAdvancedFieldProps {\n param: AdvancedParam;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation: \"stacked\" | \"horizontal\";\n}\n\nexport const ParamEditorAdvancedField = (props: ParamEditorAdvancedFieldProps) => {\n const { param, defaultValues, onChange, readOnly, fullWidth, presentation } = props;\n const common = {\n id: param.id,\n readOnly: readOnly || param.readOnly,\n onChange,\n fullWidth: presentation === \"horizontal\" ? false : fullWidth,\n };\n\n switch (param.type) {\n case \"range\":\n return (\n <RangeInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n unit={param.unit}\n markerCount={param.markerCount}\n presentation={presentation}\n />\n );\n case \"segmented\":\n return (\n <SegmentedInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n variant={param.variant}\n presentation={presentation}\n />\n );\n case \"actions\":\n return (\n <ActionInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n presentation={presentation}\n />\n );\n case \"anchorGrid\":\n if (presentation === \"horizontal\") return null;\n return (\n <AnchorGridInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n />\n );\n case \"vector\":\n return (\n <VectorInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n xLabel={param.xLabel}\n yLabel={param.yLabel}\n min={param.min}\n max={param.max}\n step={param.step}\n />\n );\n case \"fileUpload\":\n return (\n <FileUploadInput\n id={param.id}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n accept={param.accept}\n multiple={param.multiple}\n uploadLabel={param.uploadLabel}\n readOnly={common.readOnly}\n presentation={presentation}\n onChange={onChange}\n />\n );\n }\n};\n","import type { Param } from \"./param-editor.types\";\n\nexport const isParamEditorRichControl = (param: Param) => param.type === \"fileUpload\";\n\nexport const isParamEditorHorizontalControl = (param: Param) => param.type !== \"anchorGrid\";\n","import { Badge, HStack, Image } from \"@chakra-ui/react\";\nimport type { Param } from \"./param-editor.types\";\nimport { ParamEditorControlItem } from \"./param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\n\ninterface ParamEditorReadOnlyFieldProps {\n param: Extract<Param, { type: \"readOnly\" }>;\n fullWidth?: boolean;\n}\n\nconst formatPrimitive = (value: string | number | boolean | null) => {\n if (value === null || value === \"\") return \"Not provided\";\n return String(value);\n};\n\nconst ReadOnlyContent = (props: Pick<ParamEditorReadOnlyFieldProps[\"param\"], \"value\">) => {\n const { value } = props;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <ParamEditorReadOnlyValue color=\"fg.muted\">None</ParamEditorReadOnlyValue>;\n }\n\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {value.map((item, index) => (\n <Badge key={`${String(item)}-${index}`} variant=\"subtle\" colorPalette=\"gray\">\n {formatPrimitive(item)}\n </Badge>\n ))}\n </HStack>\n );\n }\n\n if (typeof value === \"object\" && value !== null) {\n const images = value.type === \"image\" ? [{ src: value.src, alt: value.alt }] : value.images;\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {images.map((image) => (\n <Image\n key={`${image.src}-${image.alt}`}\n src={image.src}\n alt={image.alt}\n width=\"96px\"\n height=\"72px\"\n borderRadius=\"sm\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n objectFit=\"cover\"\n />\n ))}\n </HStack>\n );\n }\n\n if (typeof value === \"boolean\") {\n return <ParamEditorReadOnlyValue>{formatPrimitive(value)}</ParamEditorReadOnlyValue>;\n }\n\n return (\n <ParamEditorReadOnlyValue color={value === null || value === \"\" ? \"fg.muted\" : \"fg\"}>\n {formatPrimitive(value)}\n </ParamEditorReadOnlyValue>\n );\n};\n\nexport const ParamEditorReadOnlyField = (props: ParamEditorReadOnlyFieldProps) => {\n const { param, fullWidth } = props;\n\n return (\n <ParamEditorControlItem name={param.name} description={param.description} fullWidth={fullWidth}>\n <ReadOnlyContent value={param.value} />\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { BooleanInput } from \"./inputs/boolean-input\";\nimport { ColorInput } from \"./inputs/color-input\";\nimport { DateInput } from \"./inputs/date-input\";\nimport { HorizontalTextInput } from \"./inputs/horizontal-text-input\";\nimport { MarkdownInput } from \"./inputs/markdown-input\";\nimport { NumberInput } from \"./inputs/number-input\";\nimport { ResourceInput } from \"./inputs/resource-input\";\nimport { SelectionInput } from \"./inputs/selection-input\";\nimport { TextInput } from \"./inputs/text-input\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorAdvancedField } from \"./param-editor-advanced-field\";\nimport { ParamEditorLabel } from \"./param-editor-label\";\nimport { isParamEditorRichControl } from \"./param-editor-presentation\";\nimport { ParamEditorReadOnlyField } from \"./param-editor-read-only-field\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\nimport { resolveParamValue } from \"./resolve-param-value\";\n\ninterface ParamEditorFieldProps {\n param: Param;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n presentation?: \"stacked\" | \"horizontal\";\n size?: \"xs\" | \"sm\";\n}\n\nconst PropertyField = (props: { param: Extract<Param, { type: \"property\" }>; fullWidth?: boolean }) => {\n const { param, fullWidth } = props;\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n </Box>\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Flex>\n );\n};\n\nexport const ParamEditorField = (props: ParamEditorFieldProps) => {\n const {\n param,\n defaultValues,\n onChange,\n onOpenResource,\n readOnly,\n fullWidth = false,\n presentation = \"stacked\",\n size = \"sm\",\n } = props;\n const horizontal = presentation === \"horizontal\";\n const richControl = isParamEditorRichControl(param);\n const common = {\n id: param.id,\n readOnly: readOnly || param.readOnly,\n onChange,\n fullWidth: horizontal ? richControl : fullWidth,\n size,\n };\n\n switch (param.type) {\n case \"number\":\n return (\n <NumberInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n hideLabel={horizontal}\n hideSlider={horizontal}\n />\n );\n case \"boolean\":\n return (\n <BooleanInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel={horizontal}\n />\n );\n case \"text\":\n if (horizontal) {\n return (\n <HorizontalTextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel\n />\n );\n }\n return (\n <TextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n singleLine={param.singleLine}\n />\n );\n case \"markdown\":\n return (\n <MarkdownInput\n id={param.id}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n placeholder={param.placeholder}\n readOnly={common.readOnly}\n presentation={presentation}\n size={size}\n onChange={onChange}\n />\n );\n case \"selection\":\n return (\n <SelectionInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n placeholder={param.placeholder}\n clearable={param.clearable}\n disabled={param.disabled}\n searchable={param.searchable}\n searchPlaceholder={param.searchPlaceholder}\n emptyText={param.emptyText}\n group={\n param.group\n ? {\n ...param.group,\n defaultValue: resolveParamValue(defaultValues, param.group.id, param.group.defaultValue),\n }\n : undefined\n }\n hideLabel={horizontal}\n />\n );\n case \"date\":\n return (\n <DateInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n hideLabel={horizontal}\n />\n );\n case \"color\":\n return (\n <ColorInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n hideLabel={horizontal}\n />\n );\n case \"property\":\n return <PropertyField param={param} fullWidth={horizontal ? false : fullWidth} />;\n case \"readOnly\":\n return <ParamEditorReadOnlyField param={param} fullWidth={horizontal ? false : fullWidth} />;\n case \"resource\":\n return (\n <ResourceInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveParamValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n editable={param.editable}\n placeholder={param.placeholder}\n emptyText={param.emptyText}\n onOpenResource={onOpenResource}\n presentation={presentation}\n />\n );\n case \"range\":\n case \"segmented\":\n case \"actions\":\n case \"anchorGrid\":\n case \"vector\":\n case \"fileUpload\":\n return (\n <ParamEditorAdvancedField\n param={param}\n defaultValues={defaultValues}\n onChange={onChange}\n readOnly={readOnly}\n fullWidth={fullWidth}\n presentation={presentation}\n />\n );\n default:\n return null;\n }\n};\n"],"names":["isImage","file","type","startsWith","formatSize","bytes","toString","Math","round","toFixed","AttachmentChip","props","$","_c","removeLabel","disabled","onRemove","previewUrl","setPreviewUrl","useState","t0","t1","url","URL","createObjectURL","revokeObjectURL","useEffect","t2","name","jsx","Text","t3","jsxs","Popover","placement","chakra","Image","t4","size","t5","t6","Symbol","for","X","t7","IconButton","t8","Badge","ParamEditorLabel","description","compact","undefined","Tooltip","Icon","CircleHelp","HStack","ParamEditorControlItem","hideLabel","fullWidth","orientation","labelTrailing","children","ParamEditorFieldLabel","label","header","Flex","Box","Chip","generatedGlyphStyles","GLYPH_RULE","glyphContent","Map","Array","from","matchAll","content","GLYPH_OPTICAL_SIZE","GLYPH_BASELINE_OFFSET","GlyphRoot","glyphStyles","fontSize","position","display","verticalAlign","flexShrink","boxSize","lineHeight","containerType","inset","fontFamily","fontStyle","fontWeight","textAlign","transform","createGlyphIcon","glyph","options","styles","get","scale","GlyphIcon","displayName","optionColors","value","icon","levelGlyph","optionIcons","Ban","Flag","Bug","Sparkles","BookOpen","Wrench","Zap","Feather","Scale","Layers","Star","Flame","Lightbulb","Shield","Eye","Timer","Tag","Code","Rocket","Heart","Bookmark","Target","Bell","Hash","Ticket","GitBranch","Bot","Puzzle","Workflow","Kanban","MessageSquare","Folder","FileText","History","Play","Terminal","Cpu","Users","Component","SquareKanban","GitCommitHorizontal","Inbox","ListChecks","Archive","Link","Settings","getIconComponent","iconOptions","normalizedName","replace","toLowerCase","find","Circle","Slider","React","forwardRef","ref","rest","ChakraSlider","borderColor","outline","boxShadow","selectionIndicator","multiSelect","selected","SquareCheck","Square","Check","selectionOptionIcon","option","color","SelectionMenu","triggerLabel","selectedIds","searchable","searchPlaceholder","emptyText","group","triggerVariant","triggerAriaLabel","onToggle","onGroupChange","Button","bg","ChevronDown","trigger","id","searchText","filter","Boolean","join","secondaryLabel","isDisabled","isSelected","includes","onSelect","map","items","selectedGroup","option_0","defaultValue","ListRow","SearchableMenu","option_1","selectedLabel","placeholder","selectedIcon","ariaLabel","length","showSearch","emptyState","Menu","item","t9","option_2","Portal","t10","ActionInput","onChange","readOnly","presentation","active","setActive","optionId","run","horizontal","selectedName","row","ANCHOR_GRID_VALUES","isAnchorGridValue","ParamEditorReadOnlyValue","boxProps","preserveWhitespace","AnchorGridInput","setValue","next","select","anchor","Grid","grid","BooleanInput","String","details","checked","Switch","ColorInput","open","setOpen","rootRef","useRef","contentRef","timeoutRef","nextColor","current","clearTimeout","setTimeout","scheduleChange","isInsidePicker","target","node","contains","handleOutsideInteraction","event","document","addEventListener","removeEventListener","newColor","handleChange","event_0","root","currentTarget","ownerDocument","activeElement","handleBlur","valueElement","t11","t12","parseColor","t13","t14","details_0","t15","onOpenChange","onFocusOutside","onInteractOutside","onBlur","onValueChange","rootProps","t16","t17","ColorPicker","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","picker","t28","DateInput","min","max","nextValue","newValue","Input","e","_temp","e_1","_temp2","e_0","key","blur","e_2","valueId","index","lastModified","createFileUploadValues","files","existing","multiple","offset","status","slice","getFileUploadSummary","values","state","candidate","some","count","UploadStatus","noun","summary","bb0","queued","uploading","complete","error","empty","labels","Spinner","CircleAlert","CircleCheck","Clock3","UploadQueue","Wrap","Stack","FileUploadInput","accept","uploadLabel","setValues","inputRef","commit","remove","click","Paperclip","button","input","HorizontalTextInput","isExpanded","setIsExpanded","handleClick","trim","preventDefault","handleKeyDown","Textarea","MarkdownInput","editorValue","LazyMarkdownEditor","editor","NumberInput","step","hideSlider","showSlider","useFullWidthLayout","NumberInputRoot","Number","isNaN","valueAsNumber","NumberInputField","next_0","details_1","details_2","clampToRange","lower","upper","snapToStep","origin","steps","formatUnitValue","unit","rounded","isInteger","normalizeRange","first","second","start","end","SliderMarks","_","positions","RangeInput","markerCount","trailing","slider","mainAxis","optionIcon","openExternal","href","window","copyToClipboard","text","navigator","clipboard","writeText","catch","ResourceChip","onOpenResource","copyText","handleSelect","ResourceBadge","ResourceChipList","toIds","isArray","resolveOptions","ids","FieldShell","control","ResourceSelectMenu","ResourceInput","editable","emitChange","selectedOptions","interactive","toggleOption","next_1","entry","next_2","removeOption","optionId_0","next_3","entry_0","Plus","SegmentedInput","variant","indicatorColor","Group","SelectionInput","clearable","groupValue","setGroupValue","names","selectedId","getDisplayText","handleToggle","handleGroupChange","T0","triggerOption","menu","optionName","TextInput","singleLine","e_3","ParamEditorInlineGroup","clampAxis","bounds","NEGATIVE_INFINITY","POSITIVE_INFINITY","updateVectorAxis","axis","clamped","x","y","VectorAxisField","fieldId","onCommit","VectorInput","xLabel","yLabel","updated","commitAxis","resolveParamValue","defaultValues","paramId","fallback","ParamEditorAdvancedField","param","common","isParamEditorRichControl","isParamEditorHorizontalControl","formatPrimitive","ReadOnlyContent","alt","images","src","ParamEditorReadOnlyField","image","PropertyField","ParamEditorField","richControl"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}