@seed-ship/mcp-ui-solid 6.23.0 → 6.25.1

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 (172) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/README.md +154 -2
  3. package/dist/components/ActionGroupRenderer.cjs +6 -6
  4. package/dist/components/ActionGroupRenderer.cjs.map +1 -1
  5. package/dist/components/ActionGroupRenderer.js +6 -6
  6. package/dist/components/ActionGroupRenderer.js.map +1 -1
  7. package/dist/components/AutocompleteDropdown.cjs +6 -6
  8. package/dist/components/AutocompleteDropdown.cjs.map +1 -1
  9. package/dist/components/AutocompleteDropdown.js +6 -6
  10. package/dist/components/AutocompleteDropdown.js.map +1 -1
  11. package/dist/components/AutocompleteFormField.cjs +6 -5
  12. package/dist/components/AutocompleteFormField.cjs.map +1 -1
  13. package/dist/components/AutocompleteFormField.d.ts.map +1 -1
  14. package/dist/components/AutocompleteFormField.js +6 -5
  15. package/dist/components/AutocompleteFormField.js.map +1 -1
  16. package/dist/components/ChartJSRenderer.cjs +406 -70
  17. package/dist/components/ChartJSRenderer.cjs.map +1 -1
  18. package/dist/components/ChartJSRenderer.d.ts.map +1 -1
  19. package/dist/components/ChartJSRenderer.js +407 -71
  20. package/dist/components/ChartJSRenderer.js.map +1 -1
  21. package/dist/components/ChatPrompt.cjs +5 -5
  22. package/dist/components/ChatPrompt.cjs.map +1 -1
  23. package/dist/components/ChatPrompt.js +5 -5
  24. package/dist/components/ChatPrompt.js.map +1 -1
  25. package/dist/components/ComponentToolbar.cjs +5 -5
  26. package/dist/components/ComponentToolbar.cjs.map +1 -1
  27. package/dist/components/ComponentToolbar.js +5 -5
  28. package/dist/components/ComponentToolbar.js.map +1 -1
  29. package/dist/components/DegradedFallback.cjs +35 -3
  30. package/dist/components/DegradedFallback.cjs.map +1 -1
  31. package/dist/components/DegradedFallback.d.ts +7 -0
  32. package/dist/components/DegradedFallback.d.ts.map +1 -1
  33. package/dist/components/DegradedFallback.js +35 -3
  34. package/dist/components/DegradedFallback.js.map +1 -1
  35. package/dist/components/ExpandableWrapper.cjs +10 -7
  36. package/dist/components/ExpandableWrapper.cjs.map +1 -1
  37. package/dist/components/ExpandableWrapper.d.ts.map +1 -1
  38. package/dist/components/ExpandableWrapper.js +10 -7
  39. package/dist/components/ExpandableWrapper.js.map +1 -1
  40. package/dist/components/FormFieldRenderer.cjs +13 -12
  41. package/dist/components/FormFieldRenderer.cjs.map +1 -1
  42. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  43. package/dist/components/FormFieldRenderer.js +13 -12
  44. package/dist/components/FormFieldRenderer.js.map +1 -1
  45. package/dist/components/FormRenderer.cjs +1 -1
  46. package/dist/components/FormRenderer.cjs.map +1 -1
  47. package/dist/components/FormRenderer.js +1 -1
  48. package/dist/components/FormRenderer.js.map +1 -1
  49. package/dist/components/GenerativeUIErrorBoundary.cjs +1 -1
  50. package/dist/components/GenerativeUIErrorBoundary.cjs.map +1 -1
  51. package/dist/components/GenerativeUIErrorBoundary.js +1 -1
  52. package/dist/components/GenerativeUIErrorBoundary.js.map +1 -1
  53. package/dist/components/GhostText.cjs +2 -2
  54. package/dist/components/GhostText.cjs.map +1 -1
  55. package/dist/components/GhostText.js +2 -2
  56. package/dist/components/GhostText.js.map +1 -1
  57. package/dist/components/GraphRenderer.cjs +100 -29
  58. package/dist/components/GraphRenderer.cjs.map +1 -1
  59. package/dist/components/GraphRenderer.d.ts +1 -1
  60. package/dist/components/GraphRenderer.d.ts.map +1 -1
  61. package/dist/components/GraphRenderer.js +100 -29
  62. package/dist/components/GraphRenderer.js.map +1 -1
  63. package/dist/components/MissingValue.cjs +43 -0
  64. package/dist/components/MissingValue.cjs.map +1 -0
  65. package/dist/components/MissingValue.d.ts +27 -0
  66. package/dist/components/MissingValue.d.ts.map +1 -0
  67. package/dist/components/MissingValue.js +43 -0
  68. package/dist/components/MissingValue.js.map +1 -0
  69. package/dist/components/ModalRenderer.cjs +39 -31
  70. package/dist/components/ModalRenderer.cjs.map +1 -1
  71. package/dist/components/ModalRenderer.d.ts.map +1 -1
  72. package/dist/components/ModalRenderer.js +40 -32
  73. package/dist/components/ModalRenderer.js.map +1 -1
  74. package/dist/components/PortalDropdownMenu.cjs +6 -3
  75. package/dist/components/PortalDropdownMenu.cjs.map +1 -1
  76. package/dist/components/PortalDropdownMenu.d.ts.map +1 -1
  77. package/dist/components/PortalDropdownMenu.js +7 -4
  78. package/dist/components/PortalDropdownMenu.js.map +1 -1
  79. package/dist/components/ScratchpadPanel.cjs +38 -44
  80. package/dist/components/ScratchpadPanel.cjs.map +1 -1
  81. package/dist/components/ScratchpadPanel.d.ts.map +1 -1
  82. package/dist/components/ScratchpadPanel.js +38 -44
  83. package/dist/components/ScratchpadPanel.js.map +1 -1
  84. package/dist/components/UIResourceRenderer.cjs +255 -217
  85. package/dist/components/UIResourceRenderer.cjs.map +1 -1
  86. package/dist/components/UIResourceRenderer.d.ts.map +1 -1
  87. package/dist/components/UIResourceRenderer.js +255 -217
  88. package/dist/components/UIResourceRenderer.js.map +1 -1
  89. package/dist/components/chart-data-table.cjs +30 -5
  90. package/dist/components/chart-data-table.cjs.map +1 -1
  91. package/dist/components/chart-data-table.d.ts +18 -1
  92. package/dist/components/chart-data-table.d.ts.map +1 -1
  93. package/dist/components/chart-data-table.js +30 -5
  94. package/dist/components/chart-data-table.js.map +1 -1
  95. package/dist/components/chart-missing-plugin.cjs +194 -0
  96. package/dist/components/chart-missing-plugin.cjs.map +1 -0
  97. package/dist/components/chart-missing-plugin.d.ts +129 -0
  98. package/dist/components/chart-missing-plugin.d.ts.map +1 -0
  99. package/dist/components/chart-missing-plugin.js +194 -0
  100. package/dist/components/chart-missing-plugin.js.map +1 -0
  101. package/dist/context/MCPUIStringsContext.cjs +12 -1
  102. package/dist/context/MCPUIStringsContext.cjs.map +1 -1
  103. package/dist/context/MCPUIStringsContext.d.ts +62 -0
  104. package/dist/context/MCPUIStringsContext.d.ts.map +1 -1
  105. package/dist/context/MCPUIStringsContext.js +12 -1
  106. package/dist/context/MCPUIStringsContext.js.map +1 -1
  107. package/dist/services/component-registry.cjs +9 -2
  108. package/dist/services/component-registry.cjs.map +1 -1
  109. package/dist/services/component-registry.d.ts.map +1 -1
  110. package/dist/services/component-registry.js +9 -2
  111. package/dist/services/component-registry.js.map +1 -1
  112. package/dist/services/validation.cjs +31 -8
  113. package/dist/services/validation.cjs.map +1 -1
  114. package/dist/services/validation.d.ts.map +1 -1
  115. package/dist/services/validation.js +31 -8
  116. package/dist/services/validation.js.map +1 -1
  117. package/dist/types/index.d.ts +14 -2
  118. package/dist/types/index.d.ts.map +1 -1
  119. package/dist/utils/degraded-projections.cjs +19 -3
  120. package/dist/utils/degraded-projections.cjs.map +1 -1
  121. package/dist/utils/degraded-projections.d.ts +22 -2
  122. package/dist/utils/degraded-projections.d.ts.map +1 -1
  123. package/dist/utils/degraded-projections.js +19 -3
  124. package/dist/utils/degraded-projections.js.map +1 -1
  125. package/dist/utils/math-markdown.cjs +1 -1
  126. package/dist/utils/math-markdown.cjs.map +1 -1
  127. package/dist/utils/math-markdown.js +1 -1
  128. package/dist/utils/math-markdown.js.map +1 -1
  129. package/dist/utils/missing-value.cjs +60 -0
  130. package/dist/utils/missing-value.cjs.map +1 -0
  131. package/dist/utils/missing-value.d.ts +79 -0
  132. package/dist/utils/missing-value.d.ts.map +1 -0
  133. package/dist/utils/missing-value.js +60 -0
  134. package/dist/utils/missing-value.js.map +1 -0
  135. package/dist/utils/theme.cjs +91 -0
  136. package/dist/utils/theme.cjs.map +1 -0
  137. package/dist/utils/theme.d.ts +11 -0
  138. package/dist/utils/theme.d.ts.map +1 -0
  139. package/dist/utils/theme.js +91 -0
  140. package/dist/utils/theme.js.map +1 -0
  141. package/docs/SECURITY-DEPENDENCIES.md +81 -0
  142. package/docs/THEMING.md +205 -0
  143. package/package.json +7 -5
  144. package/src/components/ActionGroupRenderer.tsx +6 -6
  145. package/src/components/AutocompleteDropdown.tsx +17 -17
  146. package/src/components/AutocompleteFormField.tsx +10 -9
  147. package/src/components/ChartJSRenderer.tsx +609 -212
  148. package/src/components/ChatPrompt.tsx +16 -16
  149. package/src/components/ComponentToolbar.tsx +5 -5
  150. package/src/components/DegradedFallback.tsx +33 -11
  151. package/src/components/ExpandableWrapper.tsx +15 -11
  152. package/src/components/FormFieldRenderer.tsx +52 -51
  153. package/src/components/FormRenderer.tsx +12 -12
  154. package/src/components/GenerativeUIErrorBoundary.tsx +6 -6
  155. package/src/components/GhostText.tsx +7 -7
  156. package/src/components/GraphRenderer.tsx +83 -67
  157. package/src/components/MissingValue.tsx +61 -0
  158. package/src/components/ModalRenderer.tsx +11 -5
  159. package/src/components/PortalDropdownMenu.tsx +6 -2
  160. package/src/components/ScratchpadPanel.tsx +144 -141
  161. package/src/components/UIResourceRenderer.tsx +143 -110
  162. package/src/components/chart-data-table.ts +50 -6
  163. package/src/components/chart-missing-plugin.ts +336 -0
  164. package/src/context/MCPUIStringsContext.tsx +76 -0
  165. package/src/services/component-registry.ts +10 -2
  166. package/src/services/validation.ts +44 -9
  167. package/src/styles/autocomplete.css +53 -53
  168. package/src/types/index.ts +13 -1
  169. package/src/utils/degraded-projections.ts +44 -4
  170. package/src/utils/math-markdown.ts +1 -1
  171. package/src/utils/missing-value.ts +127 -0
  172. package/src/utils/theme.ts +101 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ScratchpadPanel.js","sources":["../../src/components/ScratchpadPanel.tsx"],"sourcesContent":["/**\n * ScratchpadPanel v3 — Full HITL/AITL workspace\n * v2.9.0: Interactive filters, form sections, stepper, preview auto-refresh\n *\n * @experimental\n */\n\nimport { Component, Show, For, Switch, Match, createSignal, createEffect, onCleanup } from 'solid-js'\nimport type { ScratchpadState, ScratchpadSection, VerifiedTextContent, DataPreviewContent, MapSectionContent, AgentCardContent, SplitStepperContent, AgentHandoffContent, BriefingDiffContent } from '../types/chat-bus'\nimport type { FormFieldParams, ChartComponentParams } from '../types'\nimport { FormFieldRenderer } from './FormFieldRenderer'\nimport { VerifiedText } from './VerifiedText'\nimport { DataPreviewSection } from './DataPreviewSection'\nimport { MapRenderer } from './MapRenderer'\nimport { ChartJSRenderer } from './ChartJSRenderer'\nimport { AgentCard, AgentStatusBadge } from './AgentCard'\nimport { SplitStepper } from './SplitStepper'\nimport { AgentHandoff } from './AgentHandoff'\nimport { BriefingDiff } from './BriefingDiff'\nimport { formatMCPUIString, useMCPUIStrings } from '../context/MCPUIStringsContext'\n\nexport interface ScratchpadPanelProps {\n state: ScratchpadState\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n onAction?: (action: string, data?: unknown) => void\n onSectionEdit?: (sectionId: string, content: unknown) => void\n /** Dedicated callback for form submissions (cleaner than onAction) */\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n /** Called when user clicks retry on error state */\n onRetry?: () => void\n onClose?: () => void\n /** When true, action buttons show loading spinner and stay open until next server update */\n asyncAction?: boolean\n /** When true (set by server), scratchpad stays visible during stream */\n pinned?: boolean\n /** Log events/actions to console */\n debug?: boolean\n /** Show mini debug overlay */\n debugOverlay?: boolean\n /** Show collapsible debug trace panel under forms */\n debugTrace?: boolean\n closable?: boolean\n autoCloseDelay?: number\n collapsible?: boolean\n maxHeight?: string\n}\n\n/**\n * Status badges. The record stays module-level (it is static styling), but\n * it carries a `labelKey` instead of English: the label is resolved from\n * `useMCPUIStrings()` at render time, so a host provider localizes it.\n * Same technique as `SOURCE_BADGES` in `FormFieldRenderer`.\n */\ntype StatusLabelKey =\n | 'statusLoading'\n | 'statusActionAvailable'\n | 'statusYourTurn'\n | 'statusProcessing'\n | 'statusComplete'\n | 'scratchpadError'\n\nconst STATUS_BADGES: Record<\n ScratchpadState['status'],\n { labelKey: StatusLabelKey; class: string }\n> = {\n loading: { labelKey: 'statusLoading', class: 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400' },\n ready: { labelKey: 'statusActionAvailable', class: 'bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-400' },\n waiting_human: { labelKey: 'statusYourTurn', class: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400 animate-pulse' },\n processing: { labelKey: 'statusProcessing', class: 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400' },\n complete: { labelKey: 'statusComplete', class: 'bg-green-100 text-green-600 dark:bg-green-900/30 dark:text-green-400' },\n // The error badge reuses the existing `scratchpadError` key ('Error').\n error: { labelKey: 'scratchpadError', class: 'bg-red-100 text-red-600 dark:bg-red-900/30 dark:text-red-400' },\n}\n\nexport const ScratchpadPanel: Component<ScratchpadPanelProps> = (props) => {\n const strings = useMCPUIStrings()\n const [collapsed, setCollapsed] = createSignal(false)\n const [localPreview, setLocalPreview] = createSignal<ScratchpadState['preview']>(undefined)\n const [loadingAction, setLoadingAction] = createSignal<string | null>(null)\n let previewTimer: ReturnType<typeof setTimeout> | null = null\n const badge = () => STATUS_BADGES[props.state.status] || STATUS_BADGES.loading\n const isClosable = () => props.closable !== false\n const isCollapsible = () => props.collapsible !== false\n const preview = () => localPreview() || props.state.preview\n const hasFilters = () => Object.keys(props.state.filters || {}).length > 0\n const [eventCount, setEventCount] = createSignal(0)\n const [lastEvent, setLastEvent] = createSignal('')\n\n const debugLog = (event: string, data?: any) => {\n if (!props.debug) return\n setEventCount(c => c + 1)\n setLastEvent(event)\n console.log(`[ScratchpadPanel:${props.state.id}] ${event}`, data || '')\n }\n\n // ─── DX1: Proactive console messages (always, not just debug) ───\n\n const VALID_TRANSITIONS: Record<string, string[]> = {\n loading: ['processing', 'waiting_human', 'error'],\n waiting_human: ['processing', 'ready', 'complete', 'error'],\n processing: ['ready', 'complete', 'error', 'waiting_human'],\n ready: ['processing', 'complete', 'error', 'waiting_human'],\n complete: [],\n error: ['processing', 'ready', 'waiting_human'],\n }\n let prevStatus = props.state.status\n\n // Etape 1: create log\n console.info(\n `%c[MCP-UI] Scratchpad created%c id=${props.state.id} sections=${props.state.sections?.length || 0} status=${props.state.status}${props.pinned ? ' pinned=true' : ''}`,\n 'color: #10b981; font-weight: bold', 'color: inherit'\n )\n\n // Etape 3: status transitions + Etape 4: auto-close info\n createEffect(() => {\n const newStatus = props.state.status\n if (newStatus !== prevStatus) {\n console.info(`%c[MCP-UI] Scratchpad status%c ${props.state.id}: ${prevStatus} → ${newStatus}`, 'color: #3b82f6; font-weight: bold', 'color: inherit')\n if (!VALID_TRANSITIONS[prevStatus]?.includes(newStatus)) {\n console.warn(`[MCP-UI] Scratchpad ${props.state.id}: unusual transition ${prevStatus} → ${newStatus}. Expected: ${VALID_TRANSITIONS[prevStatus]?.join(', ') || 'none (terminal)'}`)\n }\n prevStatus = newStatus\n }\n // Etape 4\n if (props.autoCloseDelay && newStatus !== 'complete') {\n console.info(`[MCP-UI] Scratchpad ${props.state.id}: autoCloseDelay=${props.autoCloseDelay}ms but status='${newStatus}' — auto-close will NOT trigger.`)\n }\n })\n\n // Action aliases that auto-close the scratchpad\n const CLOSE_ALIASES = new Set(['done', 'close', 'dismiss', 'validate', 'cancel', 'sufficient'])\n\n const handleAction = (action: string, data?: unknown) => {\n // DX1 Etape 5: action dispatch\n console.info(`%c[MCP-UI] Action dispatched%c value='${action}' asyncAction=${!!props.asyncAction}`, 'color: #f59e0b; font-weight: bold', 'color: inherit')\n if (!props.asyncAction && /^(try_alt:|retry|fetch|load)/.test(action)) {\n console.warn(`[MCP-UI] ScratchpadPanel: action '${action}' looks async but asyncAction prop is not set. The button will NOT show a loading state.`)\n }\n debugLog('onAction', { action, asyncAction: props.asyncAction, data })\n if (props.asyncAction && !CLOSE_ALIASES.has(action)) {\n setLoadingAction(action)\n }\n props.onAction?.(action, data)\n if (CLOSE_ALIASES.has(action) && props.onClose) {\n props.onClose()\n }\n }\n\n // Debug: log state changes\n createEffect(() => {\n debugLog('state', { status: props.state.status, sections: props.state.sections?.length, filters: Object.keys(props.state.filters || {}), turn: props.state.turn })\n })\n\n // Auto-close on complete (unless pinned)\n createEffect(() => {\n if (props.state.status === 'complete' && props.autoCloseDelay && !props.pinned) {\n const timer = setTimeout(() => props.onClose?.(), props.autoCloseDelay)\n onCleanup(() => clearTimeout(timer))\n }\n // Clear loading action when server responds\n if (props.state.status !== 'processing' && loadingAction()) {\n setLoadingAction(null)\n }\n })\n\n // Preview auto-refresh when filters change\n createEffect(() => {\n const endpoint = props.state.previewEndpoint\n if (!endpoint) return\n const filters = props.state.filters\n if (!filters || Object.keys(filters).length === 0) return\n\n if (previewTimer) clearTimeout(previewTimer)\n previewTimer = setTimeout(async () => {\n try {\n const res = await fetch(endpoint, {\n method: props.state.previewMethod || 'POST',\n headers: { 'Content-Type': 'application/json', ...props.state.previewHeaders },\n credentials: 'include',\n body: JSON.stringify({ filters }),\n })\n if (res.ok) setLocalPreview(await res.json())\n } catch { /* ignore */ }\n }, props.state.previewDebounce || 500)\n })\n\n onCleanup(() => { if (previewTimer) clearTimeout(previewTimer) })\n\n return (\n <div\n class={`w-full bg-white dark:bg-gray-800 rounded-xl border shadow-lg overflow-visible ${\n props.state.status === 'waiting_human'\n ? 'border-blue-300 dark:border-blue-600'\n : 'border-gray-200 dark:border-gray-700'\n } ${props.pinned ? 'sticky top-0 z-40' : ''}`}\n style={{ animation: 'scratchpad-slide-down 0.2s ease-out' }}\n >\n {/* Header */}\n <div\n class={`flex items-center justify-between px-4 py-3 border-b border-gray-100 dark:border-gray-700 ${isCollapsible() ? 'cursor-pointer select-none hover:bg-gray-50 dark:hover:bg-gray-750' : ''}`}\n onClick={() => isCollapsible() && setCollapsed(!collapsed())}\n >\n <div class=\"flex items-center gap-2\">\n <span class=\"text-base\">&#128221;</span>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white\">{props.state.title}</h3>\n {/* AgentStatusBadge — auto-detected from agent_card sections (v4.1.0) */}\n {(() => {\n const agentSection = props.state.sections.find(s => s.type === 'agent_card')\n if (!agentSection) return null\n const ac = parseContent(agentSection.content) as AgentCardContent | null\n if (!ac?.name) return null\n return <AgentStatusBadge agentName={ac.name} status={ac.status || 'idle'} />\n })()}\n <Show when={isCollapsible()}>\n <svg class={`w-3.5 h-3.5 text-gray-400 transition-transform ${collapsed() ? '-rotate-90' : ''}`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </Show>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class={`px-2 py-0.5 text-xs font-medium rounded-full ${badge().class}`}>{strings[badge().labelKey]}</span>\n <Show when={isClosable() && props.onClose}>\n <button onClick={(e) => { e.stopPropagation(); props.onClose?.() }} class=\"p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\" aria-label={strings.scratchpadClose}>\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" /></svg>\n </button>\n </Show>\n </div>\n </div>\n\n {/* Body */}\n <Show when={!collapsed()}>\n <div style={{ \"max-height\": props.maxHeight || \"500px\", \"overflow-y\": \"auto\" }}>\n {/* Turn history header */}\n <Show when={props.state.turnHistory && props.state.turnHistory.length > 0}>\n <div class=\"px-4 py-2 border-b border-gray-100 dark:border-gray-700 flex flex-wrap items-center gap-1.5\">\n <For each={props.state.turnHistory}>\n {(turn, i) => (\n <>\n <Show when={i() > 0}>\n <svg class=\"w-3 h-3 text-gray-300 dark:text-gray-600 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </Show>\n <span class={`text-xs font-medium px-2 py-0.5 rounded-full ${\n turn.status === 'done' ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400'\n : turn.status === 'active' ? 'bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400'\n : turn.status === 'skipped' ? 'bg-gray-100 dark:bg-gray-700 text-gray-400 line-through'\n : 'bg-gray-100 dark:bg-gray-700 text-gray-400'\n }`}>\n {turn.status === 'done' ? '✅' : turn.status === 'active' ? '●' : '○'} {turn.label}\n <Show when={turn.summary}><span class=\"ml-1 font-normal opacity-75\">— {turn.summary}</span></Show>\n </span>\n </>\n )}\n </For>\n </div>\n </Show>\n\n {/* Sections */}\n <div class=\"divide-y divide-gray-100 dark:divide-gray-700\">\n <For each={props.state.sections}>\n {(section) => (\n <SectionRenderer\n section={section}\n filters={props.state.filters}\n onFilterChange={props.onFilterChange}\n onAction={handleAction}\n onSectionEdit={props.onSectionEdit}\n onSubmit={props.onSubmit}\n debugTrace={props.debugTrace}\n />\n )}\n </For>\n </div>\n\n {/* Agent messages */}\n <Show when={props.state.agentMessages.length > 0}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700 space-y-2\">\n <For each={props.state.agentMessages}>\n {(msg) => (\n <div class={`flex items-start gap-2 text-sm rounded-lg px-3 py-2 ${\n msg.type === 'warning' ? 'bg-amber-50 dark:bg-amber-900/10 text-amber-700 dark:text-amber-400'\n : msg.type === 'question' ? 'bg-blue-50 dark:bg-blue-900/10 text-blue-700 dark:text-blue-400 border border-blue-200 dark:border-blue-800'\n : 'bg-gray-50 dark:bg-gray-700/50 text-gray-600 dark:text-gray-400'\n }`}>\n <span class=\"flex-shrink-0 mt-0.5\">{msg.type === 'warning' ? '⚠️' : msg.type === 'question' ? '❓' : 'ℹ️'}</span>\n <p>{msg.text}</p>\n </div>\n )}\n </For>\n </div>\n </Show>\n\n {/* Preview */}\n <Show when={preview()}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700\">\n <Show when={preview()!.count === 0} fallback={\n <>\n <div class=\"flex items-center gap-2 mb-2\">\n <span class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">{strings.scratchpadPreview}</span>\n <span class=\"px-1.5 py-0.5 text-xs font-bold bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded\">{preview()!.count.toLocaleString(strings.locale)}</span>\n </div>\n <p class=\"text-sm text-gray-700 dark:text-gray-300\">{preview()!.summary}</p>\n <Show when={preview()!.rows && preview()!.rows!.length > 0}>\n <div class=\"mt-2 overflow-x-auto\">\n <table class=\"min-w-full text-xs\">\n <thead><tr><For each={Object.keys(preview()!.rows![0])}>{(k) => <th class=\"px-2 py-1 text-left font-medium text-gray-500 dark:text-gray-400\">{k}</th>}</For></tr></thead>\n <tbody><For each={preview()!.rows!.slice(0, 5)}>{(row) => <tr class=\"border-t border-gray-100 dark:border-gray-700\"><For each={Object.values(row)}>{(v) => <td class=\"px-2 py-1 text-gray-700 dark:text-gray-300\">{String(v)}</td>}</For></tr>}</For></tbody>\n </table>\n </div>\n </Show>\n </>\n }>\n <div class=\"flex flex-col items-center gap-2 py-4 text-center\">\n <span class=\"text-2xl\">&#128269;</span>\n <p class=\"text-sm text-gray-500 dark:text-gray-400\">{strings.scratchpadNoResults}</p>\n <button type=\"button\" onClick={() => props.onAction?.('refine_filters')} class=\"px-3 py-1.5 text-xs font-medium text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded-lg transition-colors\">{strings.scratchpadModifyFilters}</button>\n </div>\n </Show>\n </div>\n </Show>\n\n {/* Error state with retry */}\n <Show when={props.state.status === 'error' && props.state.error}>\n <div class=\"px-4 py-3 border-t border-red-100 dark:border-red-900/30 bg-red-50 dark:bg-red-900/10\">\n <div class=\"flex items-start gap-2 text-sm text-red-700 dark:text-red-400\">\n <span class=\"flex-shrink-0 mt-0.5\">⚠️</span>\n <div class=\"flex-1\">\n <p class=\"font-medium\">{props.state.error!.message}</p>\n <Show when={props.state.error!.code}>\n <p class=\"text-xs text-red-500 dark:text-red-500 mt-0.5\">\n {formatMCPUIString(strings.scratchpadErrorCode, { code: props.state.error!.code! })}\n </p>\n </Show>\n </div>\n </div>\n <div class=\"flex gap-2 mt-2\">\n <Show when={props.state.error!.retryable !== false}>\n <button type=\"button\" onClick={() => props.onRetry?.()}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg bg-red-600 text-white hover:bg-red-700 transition-colors flex items-center gap-1\">\n &#128260; {strings.retry}\n </button>\n </Show>\n <Show when={props.onClose}>\n <button type=\"button\" onClick={() => props.onClose?.()}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\">\n {strings.scratchpadClose}\n </button>\n </Show>\n </div>\n </div>\n </Show>\n\n {/* Search button when waiting_human */}\n <Show when={props.state.status === 'waiting_human' && hasFilters()}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700\">\n <button\n type=\"button\"\n onClick={() => handleAction('search', { filters: props.state.filters })}\n class=\"w-full px-4 py-2.5 text-sm font-semibold rounded-lg text-white bg-blue-600 hover:bg-blue-700 transition-colors flex items-center justify-center gap-2\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" /></svg>\n {strings.scratchpadSearch}\n </button>\n </div>\n </Show>\n </div>\n </Show>\n\n <style>{`\n @keyframes scratchpad-slide-down { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }\n `}</style>\n\n {/* Debug overlay */}\n <Show when={props.debugOverlay}>\n <div class=\"absolute bottom-1 right-1 px-2 py-1 text-[9px] font-mono bg-black/80 text-green-400 rounded z-50 pointer-events-none\">\n {props.state.id} | ev:{eventCount()} | sec:{props.state.sections?.length || 0} | {props.state.status} | last:{lastEvent()}\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Helpers ────────────────────────────────────────────────\n\n/** Parse content that may arrive as a JSON string from SSE transport */\nfunction parseContent(content: unknown): unknown {\n if (typeof content === 'string') {\n try { return JSON.parse(content) } catch { return content }\n }\n return content\n}\n\n// ─── Section Renderer ────────────────────────────────────────\n\nconst SectionRenderer: Component<{\n section: ScratchpadSection\n filters: Record<string, string | string[]>\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n onAction?: (action: string, data?: unknown) => void\n onSectionEdit?: (sectionId: string, content: unknown) => void\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n debugTrace?: boolean\n}> = (props) => {\n return (\n <div class=\"px-4 py-3 animate-[slideDown_0.2s_ease-out]\">\n <h4 class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide mb-2\">{props.section.title}</h4>\n <Switch>\n <Match when={props.section.type === 'data'}><DataSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'filter'}><InteractiveFilterSection content={parseContent(props.section.content)} filters={props.filters} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'message'}><p class=\"text-sm text-gray-700 dark:text-gray-300\">{String(props.section.content)}</p></Match>\n <Match when={props.section.type === 'action'}><ActionSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'steps'}><EnrichedStepsSection content={parseContent(props.section.content)} onAction={props.onAction} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'form'}><EmbeddedFormSection content={parseContent(props.section.content)} sectionId={props.section.id} onAction={props.onAction} onSubmit={props.onSubmit} debugTrace={props.debugTrace} /></Match>\n <Match when={props.section.type === 'understanding'}><UnderstandingSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'feedback'}><FeedbackSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'prompt'}><PromptSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'stepper'}><StepperProgressSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'error'}><ErrorSectionRenderer content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'source_card'}><SourceCardSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'diff'}><DiffSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'verified_text'}><VerifiedText {...(parseContent(props.section.content) as VerifiedTextContent)} onHallucinationClick={(h) => props.onAction?.('hallucination_click', h)} /></Match>\n <Match when={props.section.type === 'data_preview'}><DataPreviewSection content={parseContent(props.section.content) as DataPreviewContent} /></Match>\n <Match when={props.section.type === 'map'}>{(() => { const c = parseContent(props.section.content) as MapSectionContent; return <MapRenderer params={{ geojson: c.geojson, center: c.center, zoom: c.zoom, geojsonStyle: c.style, popup: c.popup, layers: c.layers, height: c.height || '300px', fitBounds: true }} /> })()}</Match>\n <Match when={props.section.type === 'chart'}>{(() => { const c = parseContent(props.section.content) as ChartComponentParams; return <ChartJSRenderer component={{ id: props.section.id, type: 'chart', position: { colStart: 1, colSpan: 12 }, params: { ...c, renderer: 'native', height: (c as any)?.height || '250px' } }} /> })()}</Match>\n <Match when={props.section.type === 'agent_card'}><AgentCard content={parseContent(props.section.content) as AgentCardContent} /></Match>\n <Match when={props.section.type === 'split_stepper'}><SplitStepper content={parseContent(props.section.content) as SplitStepperContent} /></Match>\n <Match when={props.section.type === 'agent_handoff'}><AgentHandoff content={parseContent(props.section.content) as AgentHandoffContent} /></Match>\n <Match when={props.section.type === 'briefing_diff'}><BriefingDiff content={parseContent(props.section.content) as BriefingDiffContent} /></Match>\n <Match when={true}><pre class=\"text-xs text-gray-500 overflow-auto\">{JSON.stringify(props.section.content, null, 2)}</pre></Match>\n </Switch>\n </div>\n )\n}\n\n// ─── Data Section ────────────────────────────────────────────\n\nconst DataSection: Component<{ content: unknown }> = (props) => {\n const entries = () => typeof props.content === 'object' && props.content ? Object.entries(props.content as Record<string, unknown>) : []\n return (\n <div class=\"space-y-1\">\n <For each={entries()}>{([k, v]) => <div class=\"flex gap-2 text-xs\"><span class=\"text-gray-500 dark:text-gray-400 font-mono min-w-[120px]\">{k}:</span><span class=\"text-gray-900 dark:text-white\">{Array.isArray(v) ? v.join(', ') : String(v)}</span></div>}</For>\n </div>\n )\n}\n\n// ─── Interactive Filter Section (#4, #5) ─────────────────────\n\nconst InteractiveFilterSection: Component<{\n content: unknown\n filters: Record<string, string | string[]>\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [editingKey, setEditingKey] = createSignal<string | null>(null)\n const [editValue, setEditValue] = createSignal('')\n\n // Content can be a filter definition or just use props.filters\n const filterDefs = () => {\n if (typeof props.content === 'object' && props.content) return props.content as Record<string, any>\n return {}\n }\n\n const allKeys = () => {\n const fromContent = Object.keys(filterDefs())\n const fromFilters = Object.keys(props.filters || {})\n return [...new Set([...fromContent, ...fromFilters])]\n }\n\n const removeFilter = (key: string) => {\n const next = { ...props.filters }\n delete next[key]\n props.onFilterChange?.(next)\n }\n\n const setFilter = (key: string, value: string) => {\n props.onFilterChange?.({ ...props.filters, [key]: value })\n setEditingKey(null)\n setEditValue('')\n }\n\n const getDef = (key: string) => filterDefs()[key] || {}\n\n return (\n <div class=\"flex flex-wrap gap-1.5\">\n <For each={allKeys()}>\n {(key) => {\n const def = () => getDef(key)\n const value = () => props.filters[key]\n const hasValue = () => value() !== undefined && value() !== ''\n\n return (\n <div class=\"relative\">\n <Show when={hasValue()} fallback={\n <button type=\"button\" onClick={() => { setEditingKey(key); setEditValue('') }}\n class=\"inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium border border-dashed border-gray-300 dark:border-gray-600 text-gray-500 dark:text-gray-400 rounded-full hover:border-blue-400 hover:text-blue-500 transition-colors\">\n + {def()?.label || key}\n </button>\n }>\n <span class=\"inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full\">\n <button type=\"button\" onClick={() => { setEditingKey(key); setEditValue(String(value() || '')) }} class=\"hover:underline\">\n <span class=\"text-blue-500 dark:text-blue-400\">{def()?.label || key}:</span> {Array.isArray(value()) ? (value() as string[]).join(', ') : String(value())}\n </button>\n <Show when={props.onFilterChange}>\n <button type=\"button\" onClick={() => removeFilter(key)} class=\"ml-0.5 hover:text-blue-900 dark:hover:text-blue-100\" aria-label={formatMCPUIString(strings.removeItem, { name: key })}>&times;</button>\n </Show>\n </span>\n </Show>\n\n {/* Inline editor */}\n <Show when={editingKey() === key}>\n <div class=\"absolute z-50 mt-1 left-0 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg p-2 min-w-[200px]\">\n <Show when={def()?.options} fallback={\n <form onSubmit={(e) => { e.preventDefault(); setFilter(key, editValue()) }} class=\"flex gap-1\">\n <input type=\"text\" value={editValue()} onInput={(e) => setEditValue(e.currentTarget.value)} placeholder={def()?.placeholder || key} autofocus\n class=\"flex-1 px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none\" />\n <button type=\"submit\" class=\"px-2 py-1 text-xs bg-blue-600 text-white rounded hover:bg-blue-700\">{strings.ok}</button>\n <button type=\"button\" onClick={() => setEditingKey(null)} class=\"px-2 py-1 text-xs text-gray-500 hover:text-gray-700\">{strings.cancel}</button>\n </form>\n }>\n <div class=\"max-h-48 overflow-y-auto\">\n <For each={def().options as Array<{ value: string; label: string }>}>\n {(opt) => (\n <button type=\"button\" onClick={() => setFilter(key, opt.value)}\n class={`w-full text-left px-2 py-1.5 text-sm rounded hover:bg-blue-50 dark:hover:bg-blue-900/20 ${\n String(value()) === opt.value ? 'text-blue-600 dark:text-blue-400 bg-blue-50/50 dark:bg-blue-900/10' : 'text-gray-900 dark:text-white'\n }`}>\n {opt.label}\n <Show when={String(value()) === opt.value}><span class=\"ml-1\">✓</span></Show>\n </button>\n )}\n </For>\n </div>\n <button type=\"button\" onClick={() => setEditingKey(null)} class=\"mt-1 w-full px-2 py-1 text-xs text-gray-500 hover:text-gray-700 text-center\">{strings.cancel}</button>\n </Show>\n </div>\n </Show>\n </div>\n )\n }}\n </For>\n <Show when={allKeys().length === 0}>\n <p class=\"text-xs text-gray-400 italic\">{strings.scratchpadNoFilters}</p>\n </Show>\n </div>\n )\n}\n\n// ─── Embedded Form Section (#7, #8) ──────────────────────────\n\nconst EmbeddedFormSection: Component<{\n content: unknown\n sectionId: string\n onAction?: (action: string, data?: unknown) => void\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n debugTrace?: boolean\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [dynamicOptions, setDynamicOptions] = createSignal<Record<string, Array<{ label: string; value: string }>>>({})\n\n const config = () => {\n const c = props.content as any\n return {\n fields: c?.fields || [],\n submitLabel: c?.submitLabel || strings.submit,\n autoSubmitDelay: c?.autoSubmitDelay as number | undefined,\n }\n }\n\n // Initialize form data with prefill values (v4.2.0)\n const buildInitial = () => {\n const initial: Record<string, any> = {}\n for (const field of config().fields) {\n initial[field.name] = field.prefill ?? field.defaultValue ?? ''\n }\n return initial\n }\n\n const [formData, setFormData] = createSignal<Record<string, any>>(buildInitial())\n\n // Re-init when content changes (streaming updates)\n createEffect(() => {\n const fields = config().fields\n if (fields.length > 0) {\n setFormData((prev) => {\n const next = { ...prev }\n for (const field of fields) {\n // Only apply prefill if the user hasn't changed the field yet\n if (field.prefill != null && (next[field.name] === undefined || next[field.name] === '')) {\n next[field.name] = field.prefill\n }\n }\n return next\n })\n }\n })\n\n // Auto-submit countdown (v4.2.0)\n const [countdown, setCountdown] = createSignal<number | null>(null)\n let countdownTimer: ReturnType<typeof setInterval> | null = null\n const [userInteracted, setUserInteracted] = createSignal(false)\n\n const cancelCountdown = () => {\n if (countdownTimer) { clearInterval(countdownTimer); countdownTimer = null }\n setCountdown(null)\n }\n\n onCleanup(() => cancelCountdown())\n\n createEffect(() => {\n const delay = config().autoSubmitDelay\n if (!delay || userInteracted()) return\n const allRequiredPrefilled = config().fields\n .filter((f: any) => f.required)\n .every((f: any) => f.prefill != null)\n if (!allRequiredPrefilled) return\n\n let remaining = Math.ceil(delay / 1000)\n setCountdown(remaining)\n countdownTimer = setInterval(() => {\n remaining--\n if (remaining <= 0) {\n cancelCountdown()\n const form = document.querySelector(`#scratchpad-form-${props.sectionId}`) as HTMLFormElement | null\n if (form) form.requestSubmit()\n } else {\n setCountdown(remaining)\n }\n }, 1000)\n })\n\n const updateField = (name: string, value: any) => {\n if (!userInteracted()) { setUserInteracted(true); cancelCountdown() }\n setFormData(prev => ({ ...prev, [name]: value }))\n }\n\n // depends_on reactive (#9)\n createEffect(() => {\n const data = formData()\n for (const field of config().fields) {\n const dep = field.depends_on || field.dependsOn\n if (!dep) continue\n const parentValue = data[dep.field]\n if (!parentValue) continue\n const url = (dep.options_endpoint || dep.apiUrl || '').replace('{value}', encodeURIComponent(parentValue))\n if (!url) continue\n const params = new URLSearchParams(dep.extraParams || dep.extra_params || {})\n fetch(`${url}${url.includes('?') ? '&' : '?'}${params}`)\n .then(r => r.json())\n .then(items => {\n const arr = Array.isArray(items) ? items : items.results || items.features || []\n const lf = dep.label_field || dep.labelField || 'label'\n const vf = dep.value_field || dep.valueField || 'value'\n setDynamicOptions(prev => ({ ...prev, [field.name]: arr.map((i: any) => ({ label: i[lf] || String(i), value: String(i[vf] || i[lf] || i) })) }))\n })\n .catch(() => {})\n }\n })\n\n const getField = (field: any): FormFieldParams => {\n const dynOpts = dynamicOptions()[field.name]\n return dynOpts ? { ...field, options: dynOpts } as FormFieldParams : field as FormFieldParams\n }\n\n // Debug trace: track submitted values\n const [submittedValues, setSubmittedValues] = createSignal<Record<string, any> | null>(null)\n\n const handleSubmit = (e: Event) => {\n e.preventDefault()\n\n // Filter out unsupported fields, keep only values with content\n const values = Object.fromEntries(\n Object.entries(formData())\n .filter(([key]) => {\n const field = config().fields.find((f: any) => f.name === key)\n return field?.fieldStatus !== 'unsupported'\n })\n .filter(([, v]) => v !== undefined && v !== '' && !(Array.isArray(v) && v.length === 0))\n )\n\n setSubmittedValues(values)\n\n // DX1 Etape 7: form submit log\n console.info(`%c[MCP-UI] Form submitted%c section=${props.sectionId} fields=${Object.keys(values).join(',')}`, 'color: #8b5cf6; font-weight: bold', 'color: inherit')\n\n if (props.onSubmit) {\n props.onSubmit(props.sectionId, values)\n } else {\n props.onAction?.('submit_form', { sectionId: props.sectionId, values })\n }\n }\n\n // Proposal 3: prefill confidence summary\n const prefillSummary = () => {\n const fields = config().fields\n const total = fields.length\n const prefilled = fields.filter((f: any) => f.prefill != null).length\n return { total, prefilled }\n }\n\n // Proposal 4: auto-submit toast mode — compact view when ALL fields prefilled\n const [expanded, setExpanded] = createSignal(false)\n const allFieldsPrefilled = () => {\n const fields = config().fields\n return fields.length > 0 && fields.every((f: any) => f.prefill != null)\n }\n const showToast = () => allFieldsPrefilled() && !userInteracted() && !expanded() && countdown() != null\n\n return (\n <>\n <Show when={!showToast()} fallback={\n <div class=\"flex items-center gap-3 p-3 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg text-sm\">\n <span class=\"flex-1 text-blue-800 dark:text-blue-200 font-medium\">\n {config().fields.map((f: any) => f.displayHint || f.prefill).join(', ')}\n </span>\n <span class=\"text-blue-600 dark:text-blue-300\">{countdown()}s...</span>\n <button type=\"button\" onClick={() => { setExpanded(true); cancelCountdown(); setUserInteracted(true) }}\n class=\"text-blue-600 dark:text-blue-400 underline text-xs\">{strings.scratchpadEdit}</button>\n <button type=\"button\" onClick={() => { cancelCountdown(); setUserInteracted(true) }}\n class=\"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\">&times;</button>\n </div>\n }>\n <form id={`scratchpad-form-${props.sectionId}`} onSubmit={handleSubmit} class=\"flex flex-col gap-3\">\n {/* Proposal 3: prefill summary */}\n <Show when={prefillSummary().prefilled > 0}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400\">\n {formatMCPUIString(\n prefillSummary().prefilled === 1 ? strings.formPrefilledOne : strings.formPrefilledMany,\n { count: prefillSummary().prefilled, total: prefillSummary().total }\n )}\n </p>\n </Show>\n <For each={config().fields}>\n {(field) => (\n <FormFieldRenderer\n field={getField(field)}\n value={formData()[field.name]}\n onChange={(val) => updateField(field.name, val)}\n formData={formData}\n />\n )}\n </For>\n <Show when={countdown() != null}>\n <div class=\"flex items-center gap-3 p-2 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-md text-sm\">\n <span class=\"text-blue-700 dark:text-blue-300\">\n {formatMCPUIString(strings.formSubmitCountdown, {\n label: config().submitLabel,\n seconds: countdown()!,\n })}\n </span>\n <button\n type=\"button\"\n onClick={() => { cancelCountdown(); setUserInteracted(true) }}\n class=\"text-blue-600 dark:text-blue-400 underline hover:text-blue-800 dark:hover:text-blue-200\"\n >\n {strings.cancel}\n </button>\n </div>\n </Show>\n <div class=\"flex justify-end\">\n <button type=\"submit\" class=\"px-4 py-2 text-sm font-medium rounded-lg text-white bg-blue-600 hover:bg-blue-700 transition-colors\">\n {config().submitLabel}\n </button>\n </div>\n </form>\n </Show>\n\n {/* Debug trace panel */}\n <Show when={props.debugTrace}>\n <FormDebugTrace\n fields={config().fields}\n formData={formData()}\n submittedValues={submittedValues()}\n autoSubmitDelay={config().autoSubmitDelay}\n userInteracted={userInteracted()}\n rawContent={props.content}\n />\n </Show>\n </>\n )\n}\n\n// ─── Form Debug Trace Panel ─────────────────────────────────\n\nconst FormDebugTrace: Component<{\n fields: any[]\n formData: Record<string, any>\n submittedValues: Record<string, any> | null\n autoSubmitDelay?: number\n userInteracted: boolean\n rawContent: unknown\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [open, setOpen] = createSignal(false)\n const [showRaw, setShowRaw] = createSignal(false)\n\n const prefilledCount = () => props.fields.filter((f: any) => f.prefill != null).length\n const requiredFields = () => props.fields.filter((f: any) => f.required)\n const missingRequired = () => requiredFields().filter((f: any) => f.prefill == null)\n\n const autoSubmitReason = () => {\n if (!props.autoSubmitDelay) return 'no autoSubmitDelay configured'\n if (missingRequired().length > 0) return `${missingRequired().length} required field(s) without prefill`\n if (props.userInteracted) return 'user interacted — cancelled'\n return 'all conditions met'\n }\n\n // Server-side _debug data\n const serverDebug = () => (props.rawContent as any)?._debug\n\n return (\n <div class=\"mt-2 border border-gray-200 dark:border-gray-700 rounded-md text-xs font-mono\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open())}\n class=\"w-full px-3 py-1.5 text-left text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 flex items-center gap-1\"\n >\n <span>{open() ? '\\u25BE' : '\\u25B8'}</span>\n Debug trace ({prefilledCount()}/{props.fields.length} prefilled)\n </button>\n <Show when={open()}>\n <div class=\"px-3 pb-3 space-y-2 text-gray-600 dark:text-gray-400 border-t border-gray-200 dark:border-gray-700 pt-2\">\n <div>Fields: {props.fields.length} total, {prefilledCount()} prefilled</div>\n\n <For each={props.fields}>\n {(field: any) => (\n <div class=\"pl-2 border-l-2 border-gray-200 dark:border-gray-600 space-y-0.5\">\n <div class=\"text-gray-800 dark:text-gray-200 font-medium\">{field.name}:</div>\n <Show when={field.prefill != null}>\n <div> prefill: {JSON.stringify(field.prefill)}</div>\n </Show>\n <Show when={!field.prefill}>\n <div class=\"text-amber-500\"> prefill: (none)</div>\n </Show>\n <Show when={field.source}><div> source: {field.source}</div></Show>\n <Show when={field.displayHint}><div> displayHint: \"{field.displayHint}\"</div></Show>\n <Show when={field.muted}><div> muted: true</div></Show>\n <Show when={field.prefillMode}><div> prefillMode: {field.prefillMode}</div></Show>\n <Show when={field.valueFormat}><div> valueFormat: /{field.valueFormat}/</div></Show>\n <Show when={props.submittedValues}>\n {(() => {\n const v = props.submittedValues![field.name]\n const hasValue = v !== undefined && v !== '' && !(Array.isArray(v) && v.length === 0)\n return (\n <div class={hasValue ? 'text-green-600 dark:text-green-400' : 'text-gray-400'}>\n {'\\u2192'} submitted: {hasValue ? `${JSON.stringify(v)} \\u2713` : '(empty)'}\n </div>\n )\n })()}\n </Show>\n </div>\n )}\n </For>\n\n <div class=\"pt-1 border-t border-gray-200 dark:border-gray-600\">\n autoSubmit: {props.autoSubmitDelay ? 'true' : 'false'}\n {props.autoSubmitDelay ? ` (${props.autoSubmitDelay}ms)` : ''}\n <div> reason: {autoSubmitReason()}</div>\n </div>\n\n <Show when={serverDebug()}>\n <div class=\"pt-1 border-t border-gray-200 dark:border-gray-600\">\n <div class=\"font-medium text-gray-800 dark:text-gray-200\">Server _debug:</div>\n <Show when={serverDebug()?.resolvers}>\n <For each={serverDebug().resolvers}>\n {(r: any) => (\n <div class=\"pl-2\">\n {r.field}: {r.resolver} \"{r.input}\" {'\\u2192'} \"{r.output}\" ({r.ms}ms)\n </div>\n )}\n </For>\n </Show>\n <Show when={serverDebug()?.routing}>\n <div class=\"pl-2\">routing: {serverDebug().routing.topic} via {serverDebug().routing.method} ({serverDebug().routing.ms}ms)</div>\n </Show>\n <Show when={serverDebug()?.missingFields}>\n <div class=\"pl-2 text-amber-500\">missing: {serverDebug().missingFields.join(', ')}</div>\n </Show>\n </div>\n </Show>\n\n <div class=\"pt-1 border-t border-gray-200 dark:border-gray-600\">\n <button type=\"button\" onClick={() => setShowRaw(!showRaw())} class=\"text-blue-500 hover:text-blue-700 underline\">\n {showRaw() ? strings.scratchpadHideRaw : strings.scratchpadShowRaw}\n </button>\n <Show when={showRaw()}>\n <pre class=\"mt-1 p-2 bg-gray-50 dark:bg-gray-900 rounded max-h-48 overflow-auto text-[10px]\">\n {JSON.stringify(props.rawContent, null, 2)}\n </pre>\n </Show>\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Enriched Steps Section (#6) ─────────────────────────────\n\nconst EnrichedStepsSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const stepsData = () => {\n const c = props.content as any\n return { steps: c?.steps || [], currentStep: c?.currentStep ?? 0 }\n }\n\n return (\n <div class=\"space-y-3\">\n <For each={stepsData().steps}>\n {(step: any) => (\n <div class={`rounded-lg ${step.status === 'active' ? 'bg-blue-50/50 dark:bg-blue-900/10 border border-blue-200 dark:border-blue-800 p-3 animate-pulse' : 'px-1'}`}>\n <div class={`flex items-center gap-2 text-sm font-medium ${\n step.status === 'done' ? 'text-green-600 dark:text-green-400'\n : step.status === 'active' ? 'text-blue-600 dark:text-blue-400'\n : 'text-gray-400'\n }`}>\n <span>{step.status === 'done' ? '✅' : step.status === 'active' ? '●' : '○'}</span>\n {step.label}\n <Show when={step.description && step.status === 'active'}>\n <span class=\"text-xs font-normal text-gray-500 dark:text-gray-400\">— {step.description}</span>\n </Show>\n </div>\n\n {/* Embedded content for active step */}\n <Show when={step.status === 'active' && step.content}>\n <div class=\"mt-2 ml-6\">\n <SectionRenderer\n section={step.content}\n filters={{}}\n onFilterChange={props.onFilterChange}\n onAction={props.onAction}\n />\n </div>\n </Show>\n </div>\n )}\n </For>\n\n {/* Next button */}\n <Show when={stepsData().steps.some((s: any) => s.status === 'active')}>\n <div class=\"flex justify-end\">\n <button type=\"button\" onClick={() => props.onAction?.('next_step', { step: stepsData().currentStep })}\n class=\"px-3 py-1.5 text-sm font-medium text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded-lg transition-colors flex items-center gap-1\">\n {strings.scratchpadNextStep} <svg class=\"w-3.5 h-3.5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </button>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Action Section ──────────────────────────────────────────\n\nconst ActionSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const data = () => {\n const c = props.content as any\n if (Array.isArray(c)) return { actions: c, title: undefined, preview: undefined, validation: undefined }\n if (c && Array.isArray(c.actions)) return { actions: c.actions, title: c.title, preview: c.preview, validation: c.validation }\n return { actions: [], title: undefined, preview: undefined, validation: undefined }\n }\n\n return (\n <div>\n {/* Confirm checkpoint: title + preview (v4.1.0) */}\n <Show when={data().title}>\n <p class=\"text-sm font-medium text-gray-800 dark:text-gray-200 mb-2\">{data().title}</p>\n </Show>\n <Show when={data().preview}>\n {(preview) => (\n <div class=\"mb-2 p-2 rounded bg-gray-50 dark:bg-gray-800 border border-gray-200 dark:border-gray-700 text-xs text-gray-600 dark:text-gray-400\">\n <Show when={preview().count != null}>\n <span class=\"font-medium text-gray-800 dark:text-gray-200\">{preview().count}</span> {strings.scratchpadItems}\n </Show>\n <Show when={preview().summary}>\n <span class=\"ml-1\">&mdash; {preview().summary}</span>\n </Show>\n </div>\n )}\n </Show>\n <Show when={data().validation && data().validation.confidence != null}>\n <div class=\"mb-2 flex items-center gap-2 text-xs\">\n <span classList={{\n 'text-green-600 dark:text-green-400': data().validation.confidence >= 0.8,\n 'text-amber-600 dark:text-amber-400': data().validation.confidence >= 0.5 && data().validation.confidence < 0.8,\n 'text-red-600 dark:text-red-400': data().validation.confidence < 0.5,\n }}>\n {formatMCPUIString(strings.verifiedConfidence, {\n pct: Math.round(data().validation.confidence * 100),\n })}\n </span>\n <Show when={data().validation.hallucinated?.length > 0}>\n <span class=\"text-amber-600\">\n {formatMCPUIString(strings.verifiedUnverifiedCount, {\n count: data().validation.hallucinated.length,\n })}\n </span>\n </Show>\n </div>\n </Show>\n\n {/* Action buttons */}\n <div class=\"flex flex-wrap gap-2\">\n <For each={data().actions as Array<{ label: string; value?: string; action?: string; variant?: string; icon?: string }>}>\n {(item) => (\n <button type=\"button\" on:click={() => props.onAction?.(item.value || item.action || item.label, item)}\n class={`px-3 py-1.5 text-sm font-medium rounded-lg transition-colors ${\n item.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700'\n : item.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700'\n : item.variant === 'secondary' ? 'border border-blue-300 dark:border-blue-600 text-blue-700 dark:text-blue-300 hover:bg-blue-50 dark:hover:bg-blue-900/20'\n : 'border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700'\n }`}>\n <Show when={item.icon}><span class=\"mr-1\">{item.icon}</span></Show>\n {item.label}\n </button>\n )}\n </For>\n </div>\n </div>\n )\n}\n\n// ─── Understanding Section — agent comprehension ─────────────\n\nconst UnderstandingSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { detections: c?.detections || [], warnings: c?.warnings || [] }\n }\n\n const confidenceClass = (conf?: string) => {\n switch (conf) {\n case 'high': return 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400'\n case 'medium': return 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-400'\n case 'low': return 'bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400'\n default: return 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400'\n }\n }\n\n return (\n <div class=\"space-y-2\">\n <div class=\"space-y-1.5\">\n <For each={data().detections}>\n {(det: any) => (\n <div class=\"flex items-center gap-2 text-sm\">\n <span class={`px-1.5 py-0.5 text-xs font-medium rounded ${confidenceClass(det.confidence)}`}>\n {det.label}\n </span>\n <span class=\"text-gray-900 dark:text-white\">{det.value}</span>\n </div>\n )}\n </For>\n </div>\n <Show when={data().warnings.length > 0}>\n <div class=\"space-y-1\">\n <For each={data().warnings}>\n {(w: string) => (\n <div class=\"flex items-start gap-1.5 text-xs text-amber-600 dark:text-amber-400\">\n <span class=\"flex-shrink-0\">⚠️</span>\n <span>{w}</span>\n </div>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Feedback Section — thumbs up/down ───────────────────────\n\nconst FeedbackSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [comment, setComment] = createSignal('')\n const [showComment, setShowComment] = createSignal(false)\n const [submitted, setSubmitted] = createSignal<string | null>(null)\n // The badge shows the chosen option's LABEL (payload or localized default),\n // never its machine value ('approve' / 'reject' / 'comment').\n const [submittedLabel, setSubmittedLabel] = createSignal('')\n const data = () => {\n const c = props.content as any\n const options = c?.options || [\n { value: c?.approve?.value || 'approve', label: c?.approve?.label || strings.yes, icon: '\\uD83D\\uDC4D', variant: 'primary' },\n { value: c?.reject?.value || 'reject', label: c?.reject?.label || strings.no, icon: '\\uD83D\\uDC4E' },\n ]\n return {\n question: c?.question || '',\n options: options as Array<{ value: string; label: string; icon?: string; variant?: string; needsComment?: boolean }>,\n allowFreeText: c?.allowFreeText ?? c?.allowComment ?? false,\n placeholder: c?.placeholder || c?.commentPlaceholder || strings.scratchpadCommentPlaceholder,\n // v4.1.0: per-step feedback\n agentId: c?.agentId as string | undefined,\n stepId: c?.stepId as string | undefined,\n }\n }\n\n const handleOption = (option: any) => {\n if (option.needsComment) {\n setShowComment(true)\n return\n }\n setSubmitted(option.value)\n setSubmittedLabel(option.label ?? '')\n const payload = {\n option: option.value,\n comment: comment(),\n ...(data().agentId ? { agentId: data().agentId } : {}),\n ...(data().stepId ? { stepId: data().stepId } : {}),\n }\n console.info('[MCP-UI:HITL] user responded', {\n agentId: data().agentId, stepId: data().stepId, action: option.value,\n })\n props.onAction?.('feedback', payload)\n }\n\n return (\n <div class=\"space-y-3\">\n <p class=\"text-sm text-gray-700 dark:text-gray-300\">{data().question}</p>\n\n {/* Already submitted — show micro-badge */}\n <Show when={submitted()}>\n <div class=\"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400\">\n <span classList={{\n 'text-green-600': submitted() === 'approve',\n 'text-red-600': submitted() === 'reject',\n 'text-blue-600': submitted() !== 'approve' && submitted() !== 'reject',\n }}>\n {submitted() === 'approve' ? '\\u2705' : submitted() === 'reject' ? '\\u274C' : '\\uD83D\\uDCAC'} {submittedLabel()}\n </span>\n <Show when={comment()}>\n <span class=\"italic\">&mdash; {comment()}</span>\n </Show>\n </div>\n </Show>\n\n {/* Buttons — hidden after submit */}\n <Show when={!submitted()}>\n <div class=\"flex flex-wrap gap-2\">\n <For each={data().options}>\n {(option) => (\n <button type=\"button\" on:click={() => handleOption(option)}\n class={`px-3 py-1.5 text-sm font-medium rounded-lg transition-colors flex items-center gap-1 ${\n option.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700'\n : option.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700'\n : 'border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700'\n }`}>\n <Show when={option.icon}><span>{option.icon}</span></Show>\n {option.label}\n </button>\n )}\n </For>\n </div>\n <Show when={data().allowFreeText || showComment()}>\n <div class=\"flex gap-1\">\n <input type=\"text\" value={comment()} onInput={(e) => setComment(e.currentTarget.value)}\n placeholder={data().placeholder} autofocus={showComment()}\n class=\"flex-1 px-3 py-2 text-sm border border-gray-200 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none\" />\n <button type=\"button\" on:click={() => { setSubmitted('comment'); setSubmittedLabel(''); props.onAction?.('feedback', { option: 'comment', comment: comment(), agentId: data().agentId, stepId: data().stepId }) }}\n class=\"px-3 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700\">{strings.scratchpadSend}</button>\n </div>\n </Show>\n </Show>\n </div>\n )\n}\n\n// ─── Prompt Section — agent interpretation ───────────────────\n\nconst PromptSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const data = () => {\n const c = props.content as any\n return {\n originalQuery: c?.originalQuery || '',\n interpretation: c?.interpretation || '',\n extracted: c?.extracted || {},\n plan: c?.plan || '',\n editable: c?.editable ?? false,\n }\n }\n\n return (\n <div class=\"space-y-2\">\n <Show when={data().originalQuery}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400 italic\">\"{data().originalQuery}\"</p>\n </Show>\n <div class=\"space-y-1\">\n <For each={Object.entries(data().extracted)}>\n {([key, value]) => (\n <div class=\"flex gap-2 text-sm\">\n <span class=\"text-gray-500 dark:text-gray-400 font-medium min-w-[80px]\">{key}:</span>\n <span class=\"text-gray-900 dark:text-white\">{String(value)}</span>\n </div>\n )}\n </For>\n </div>\n <Show when={data().plan}>\n <div class=\"mt-2 px-3 py-2 bg-blue-50 dark:bg-blue-900/10 rounded-lg text-sm text-blue-700 dark:text-blue-300\">\n <span class=\"font-medium\">{strings.scratchpadPlan}</span> {data().plan}\n </div>\n </Show>\n <Show when={data().editable}>\n <button type=\"button\" onClick={() => props.onAction?.('edit_prompt', data())}\n class=\"text-xs text-blue-600 dark:text-blue-400 hover:underline flex items-center gap-1\">\n &#9998; {strings.scratchpadModify}\n </button>\n </Show>\n </div>\n )\n}\n\n// ─── Stepper Progress Section (multi-source) ─────────────────\n\nconst StepperProgressSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return {\n steps: (c?.steps || []) as Array<{ id: string; label: string; status: string; summary?: string; duration_ms?: number }>,\n orientation: c?.orientation || 'horizontal',\n }\n }\n\n const statusIcon = (status: string) => {\n switch (status) {\n case 'done': return '✅'\n case 'active': return '🔄'\n case 'error': return '❌'\n default: return '⏳'\n }\n }\n\n const isHorizontal = () => data().orientation === 'horizontal'\n\n return (\n <Show when={isHorizontal()} fallback={\n <div class=\"space-y-2\">\n <For each={data().steps}>\n {(step) => (\n <div class={`flex items-start gap-2 text-sm ${step.status === 'active' ? 'font-medium' : ''} ${step.status === 'pending' ? 'text-gray-400' : 'text-gray-700 dark:text-gray-300'}`}>\n <span class=\"flex-shrink-0\">{statusIcon(step.status)}</span>\n <div>\n <span>{step.label}</span>\n <Show when={step.summary}>\n <span class=\"ml-1 text-xs text-gray-500 dark:text-gray-400\">— {step.summary}</span>\n </Show>\n <Show when={step.duration_ms}>\n <span class=\"ml-1 text-xs text-gray-400\">({step.duration_ms}ms)</span>\n </Show>\n </div>\n </div>\n )}\n </For>\n </div>\n }>\n <div class=\"flex items-center gap-1 flex-wrap\">\n <For each={data().steps}>\n {(step, i) => (\n <>\n <Show when={i() > 0}>\n <svg class=\"w-3 h-3 text-gray-300 dark:text-gray-600 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </Show>\n <div class={`flex items-center gap-1 px-2 py-1 rounded text-xs ${\n step.status === 'done' ? 'bg-green-50 dark:bg-green-900/20 text-green-700 dark:text-green-400'\n : step.status === 'active' ? 'bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-400 font-medium animate-pulse'\n : step.status === 'error' ? 'bg-red-50 dark:bg-red-900/20 text-red-700 dark:text-red-400'\n : 'text-gray-400'\n }`}>\n <span>{statusIcon(step.status)}</span>\n <span>{step.label}</span>\n <Show when={step.summary}>\n <span class=\"text-[10px] opacity-75\">{step.summary}</span>\n </Show>\n </div>\n </>\n )}\n </For>\n </div>\n </Show>\n )\n}\n\n// ─── Error Section (F6) ──────────────────────────────────────\n\nconst ErrorSectionRenderer: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [showDetails, setShowDetails] = createSignal(false)\n const data = () => {\n const c = props.content as any\n const d = { message: c?.message || strings.scratchpadError, severity: c?.severity || 'error', retryAction: c?.retryAction, retryLabel: c?.retryLabel || strings.retry, details: c?.details, timestamp: c?.timestamp }\n // DX1 Etape 8\n console.info(`%c[MCP-UI] Error section rendered%c severity=${d.severity} retry=${!!d.retryAction}`, 'color: #ef4444; font-weight: bold', 'color: inherit')\n return d\n }\n const isWarning = () => data().severity === 'warning'\n\n return (\n <div class={`rounded-lg px-3 py-2 text-sm ${isWarning() ? 'bg-amber-50 dark:bg-amber-900/10 text-amber-700 dark:text-amber-400 border border-amber-200 dark:border-amber-800' : 'bg-red-50 dark:bg-red-900/10 text-red-700 dark:text-red-400 border border-red-200 dark:border-red-800'}`}>\n <div class=\"flex items-start gap-2\">\n <span class=\"flex-shrink-0\">{isWarning() ? '⚠️' : '❌'}</span>\n <div class=\"flex-1\">\n <p>{data().message}</p>\n <div class=\"flex gap-2 mt-2\">\n <Show when={data().retryAction}>\n <button type=\"button\" onClick={() => props.onAction?.(data().retryAction!)} class={`px-2 py-1 text-xs font-medium rounded ${isWarning() ? 'bg-amber-600 text-white hover:bg-amber-700' : 'bg-red-600 text-white hover:bg-red-700'} transition-colors`}>&#128260; {data().retryLabel}</button>\n </Show>\n <Show when={data().details}>\n <button type=\"button\" onClick={() => setShowDetails(!showDetails())} class=\"px-2 py-1 text-xs opacity-70 hover:opacity-100\">&#9654; {strings.scratchpadDetails}</button>\n </Show>\n </div>\n <Show when={showDetails() && data().details}>\n <pre class=\"mt-2 text-xs opacity-70 overflow-x-auto\">{data().details}</pre>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n\n// ─── Source Card Section (F9) ────────────────────────────────\n\nconst SourceCardSection: Component<{ content: unknown }> = (props) => {\n const strings = useMCPUIStrings()\n const data = () => {\n const c = props.content as any\n return { name: c?.name || strings.scratchpadSource, status: c?.status || 'available', capabilities: c?.capabilities || [], latency_ms: c?.latency_ms, freshness: c?.freshness, row_count: c?.row_count }\n }\n const statusIcon = () => ({ queried: '✅', available: '📦', error: '❌' } as Record<string, string>)[data().status] || '📦'\n\n return (\n <div class=\"rounded-lg border border-gray-200 dark:border-gray-700 px-3 py-2\">\n <div class=\"flex items-center justify-between mb-1.5\">\n <span class=\"text-sm font-medium text-gray-900 dark:text-white\">{statusIcon()} {data().name}</span>\n <Show when={data().row_count !== undefined}>\n <span class=\"text-xs font-bold text-blue-600 dark:text-blue-400\">\n {formatMCPUIString(strings.scratchpadResultCount, {\n count: data().row_count?.toLocaleString(strings.locale) ?? '',\n })}\n </span>\n </Show>\n </div>\n <div class=\"flex flex-wrap gap-1.5 mb-1\">\n <For each={data().capabilities}>\n {(cap: any) => (\n <span class={`text-[10px] px-1.5 py-0.5 rounded ${cap.supported ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400' : 'bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400'}`}>\n {cap.supported ? '✅' : '❌'} {cap.label}\n </span>\n )}\n </For>\n </div>\n <Show when={data().freshness || data().latency_ms}>\n <p class=\"text-[10px] text-gray-400\">{[data().freshness, data().latency_ms ? `${data().latency_ms}ms` : ''].filter(Boolean).join(' · ')}</p>\n </Show>\n </div>\n )\n}\n\n// ─── Diff Section (F10) ──────────────────────────────────────\n\nconst DiffSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { left: c?.left || { label: 'A', rows: [] }, right: c?.right || { label: 'B', rows: [] }, highlight: c?.highlight_columns || [] }\n }\n const allKeys = () => {\n const l = data().left.rows[0] || {}\n const r = data().right.rows[0] || {}\n return [...new Set([...Object.keys(l), ...Object.keys(r)])]\n }\n\n return (\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full text-xs\">\n <thead>\n <tr>\n <th class=\"px-2 py-1 text-left text-gray-500 dark:text-gray-400\"></th>\n <th class=\"px-2 py-1 text-left font-medium text-blue-600 dark:text-blue-400\">{data().left.label}</th>\n <th class=\"px-2 py-1 text-left font-medium text-purple-600 dark:text-purple-400\">{data().right.label}</th>\n </tr>\n </thead>\n <tbody>\n <For each={allKeys()}>\n {(key) => {\n const lVal = () => data().left.rows[0]?.[key]\n const rVal = () => data().right.rows[0]?.[key]\n const isDiff = () => String(lVal()) !== String(rVal()) && data().highlight.includes(key)\n return (\n <tr class={`border-t border-gray-100 dark:border-gray-700 ${isDiff() ? 'bg-yellow-50 dark:bg-yellow-900/10' : ''}`}>\n <td class=\"px-2 py-1 font-mono text-gray-500 dark:text-gray-400\">{key}</td>\n <td class=\"px-2 py-1 text-gray-900 dark:text-white\">{lVal() !== undefined ? String(lVal()) : '—'}</td>\n <td class=\"px-2 py-1 text-gray-900 dark:text-white\">{rVal() !== undefined ? String(rVal()) : '—'}</td>\n </tr>\n )\n }}\n </For>\n </tbody>\n </table>\n </div>\n )\n}\n"],"names":["STATUS_BADGES","loading","labelKey","class","ready","waiting_human","processing","complete","error","ScratchpadPanel","props","strings","useMCPUIStrings","collapsed","setCollapsed","createSignal","localPreview","setLocalPreview","undefined","loadingAction","setLoadingAction","previewTimer","badge","state","status","isClosable","closable","isCollapsible","collapsible","preview","hasFilters","Object","keys","filters","length","eventCount","setEventCount","lastEvent","setLastEvent","debugLog","event","data","debug","c","console","log","id","VALID_TRANSITIONS","prevStatus","info","sections","pinned","createEffect","newStatus","includes","warn","join","autoCloseDelay","CLOSE_ALIASES","Set","handleAction","action","asyncAction","test","has","onAction","onClose","turn","timer","setTimeout","onCleanup","clearTimeout","endpoint","previewEndpoint","res","fetch","method","previewMethod","headers","previewHeaders","credentials","body","JSON","stringify","ok","json","previewDebounce","_el$","_$getNextElement","_tmpl$12","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_el$1","_el$10","_el$12","_el$13","_co$3","_el$72","_el$73","_co$17","_el$56","_el$74","_el$75","_co$18","$$click","_$insert","title","agentSection","find","s","type","ac","parseContent","content","name","_$createComponent","AgentStatusBadge","agentName","Show","when","children","_el$6","_tmpl$","_$effect","_$setAttribute","_$memo","_el$11","_tmpl$2","e","stopPropagation","scratchpadClose","_$runHydrationEvents","_el$14","_tmpl$10","_el$46","_el$47","_co$9","_el$16","_el$48","_el$49","_co$0","_el$50","_el$51","_co$1","_el$52","_el$53","_co$10","_el$54","_el$55","_co$11","turnHistory","_el$15","_tmpl$3","For","each","i","_tmpl$13","_el$77","_tmpl$15","_el$83","_el$84","_co$20","_el$78","_el$85","_el$86","_co$21","_el$87","_el$88","_co$22","_c$","label","summary","_el$79","_tmpl$14","_el$80","_el$81","_el$82","_co$19","_$className","section","SectionRenderer","onFilterChange","onSectionEdit","onSubmit","debugTrace","agentMessages","_el$17","_tmpl$4","msg","_el$89","_tmpl$16","_el$90","_el$91","_c$2","text","_el$18","_tmpl$6","count","fallback","_el$92","_tmpl$17","_el$93","_el$94","scratchpadPreview","toLocaleString","locale","_el$95","_tmpl$18","rows","_el$96","_tmpl$19","_el$97","_el$98","_el$99","_el$100","k","_el$101","_tmpl$20","slice","row","_el$102","_tmpl$21","values","v","_el$103","_tmpl$22","String","_el$19","_tmpl$5","_el$20","_el$21","_el$22","scratchpadNoResults","scratchpadModifyFilters","_el$23","_tmpl$0","_el$24","_el$25","_el$26","_el$27","_el$29","_el$30","_co$4","_el$31","_el$37","_el$38","_co$6","_el$39","_el$40","_co$7","message","code","_el$28","_tmpl$7","formatMCPUIString","scratchpadErrorCode","retryable","_el$32","_tmpl$8","_el$33","_el$34","_el$35","_co$5","onRetry","retry","_el$36","_tmpl$9","_el$41","_tmpl$1","_el$42","_el$43","_el$44","_el$45","_co$8","scratchpadSearch","_$p","_$setStyleProperty","maxHeight","debugOverlay","_el$57","_tmpl$11","_el$62","_el$63","_co$12","_el$58","_el$64","_el$65","_co$13","_el$59","_el$66","_el$67","_co$14","_el$60","_el$68","_el$69","_co$15","_el$61","_el$70","_el$71","_co$16","_p$","_v$","_v$2","_v$3","t","a","parse","_el$104","_tmpl$24","_el$105","_el$108","_el$109","_co$23","Switch","Match","DataSection","InteractiveFilterSection","_el$106","ActionSection","EnrichedStepsSection","EmbeddedFormSection","sectionId","UnderstandingSection","FeedbackSection","PromptSection","StepperProgressSection","ErrorSectionRenderer","SourceCardSection","DiffSection","VerifiedText","_$mergeProps","onHallucinationClick","h","DataPreviewSection","MapRenderer","params","geojson","center","zoom","geojsonStyle","style","popup","layers","height","fitBounds","ChartJSRenderer","component","position","colStart","colSpan","renderer","AgentCard","SplitStepper","AgentHandoff","BriefingDiff","_el$107","_tmpl$23","entries","_el$110","_tmpl$25","_el$111","_tmpl$26","_el$112","_el$114","_el$115","_co$24","_el$116","_c$3","Array","isArray","editingKey","setEditingKey","editValue","setEditValue","filterDefs","allKeys","fromContent","fromFilters","removeFilter","key","next","setFilter","value","getDef","_el$117","_tmpl$28","_el$119","_el$120","_co$25","_el$121","_el$122","_co$26","def","hasValue","_el$123","_tmpl$34","_el$139","_el$140","_co$30","_el$141","_el$142","_co$31","_el$143","_tmpl$35","_el$144","_el$145","_el$146","_co$32","_el$124","_tmpl$30","_el$125","_el$126","_el$128","_el$129","_co$27","_el$130","_el$131","_el$132","_co$28","_el$134","_el$135","_co$29","_c$4","_el$133","_tmpl$29","removeItem","_el$136","_tmpl$33","options","_el$147","_tmpl$36","_el$148","_el$149","_el$150","addEventListener","preventDefault","$$input","currentTarget","cancel","placeholder","_$setProperty","_el$137","_tmpl$31","opt","_el$151","_tmpl$38","_el$153","_el$154","_co$33","_el$155","_el$156","_co$34","_tmpl$37","_el$138","_tmpl$32","_el$118","_tmpl$27","scratchpadNoFilters","dynamicOptions","setDynamicOptions","config","fields","submitLabel","submit","autoSubmitDelay","buildInitial","initial","field","prefill","defaultValue","formData","setFormData","prev","countdown","setCountdown","countdownTimer","userInteracted","setUserInteracted","cancelCountdown","clearInterval","delay","allRequiredPrefilled","filter","f","required","every","remaining","Math","ceil","setInterval","form","document","querySelector","requestSubmit","updateField","dep","depends_on","dependsOn","parentValue","url","options_endpoint","apiUrl","replace","encodeURIComponent","URLSearchParams","extraParams","extra_params","then","r","items","arr","results","features","lf","label_field","labelField","vf","value_field","valueField","map","catch","getField","dynOpts","submittedValues","setSubmittedValues","handleSubmit","fromEntries","fieldStatus","prefillSummary","total","prefilled","expanded","setExpanded","allFieldsPrefilled","showToast","_el$170","_tmpl$42","_el$171","_el$172","_el$174","_el$175","_co$38","_el$176","_el$177","displayHint","scratchpadEdit","_el$157","_tmpl$41","_el$164","_el$165","_co$35","_el$166","_el$167","_co$36","_el$168","_el$169","_co$37","_el$162","_el$163","_el$158","_tmpl$39","formPrefilledOne","formPrefilledMany","FormFieldRenderer","onChange","val","_el$159","_tmpl$40","_el$160","_el$161","formSubmitCountdown","seconds","FormDebugTrace","rawContent","open","setOpen","showRaw","setShowRaw","prefilledCount","requiredFields","missingRequired","autoSubmitReason","serverDebug","_debug","_el$178","_tmpl$48","_el$179","_el$180","_el$181","_el$184","_el$185","_co$39","_el$182","_el$186","_el$187","_co$40","_el$239","_el$240","_co$56","_el$188","_tmpl$47","_el$189","_el$190","_el$193","_el$194","_co$41","_el$191","_el$195","_el$196","_co$42","_el$235","_el$236","_co$54","_el$197","_el$198","_el$203","_el$204","_co$44","_el$205","_el$206","_co$45","_el$199","_el$200","_el$201","_el$202","_co$43","_el$237","_el$238","_co$55","_el$230","_el$231","_el$233","_el$234","_co$53","_el$241","_tmpl$56","_el$242","_el$244","_el$245","_co$57","_el$270","_el$271","_co$63","_el$272","_el$273","_co$64","_el$274","_el$275","_co$65","_el$276","_el$277","_co$66","_el$278","_el$279","_co$67","_el$280","_el$281","_co$68","_el$282","_el$283","_co$69","_el$284","_el$285","_co$70","_el$246","_tmpl$49","_el$247","_el$248","_el$249","_co$58","_tmpl$50","source","_el$251","_tmpl$51","_el$252","_el$253","_el$254","_co$59","_el$255","_tmpl$52","_el$256","_el$258","_el$259","_co$60","muted","_tmpl$53","prefillMode","_el$261","_tmpl$54","_el$262","_el$263","_el$264","_co$61","valueFormat","_el$265","_tmpl$55","_el$266","_el$268","_el$269","_co$62","_el$286","_tmpl$57","_el$287","_el$289","_el$290","_co$71","_c$5","_el$207","_tmpl$45","_el$208","_el$224","_el$225","_co$50","_el$226","_el$227","_co$51","_el$228","_el$229","_co$52","resolvers","_el$291","_tmpl$58","_el$299","_el$300","_co$72","_el$292","_el$301","_el$302","_co$73","_el$293","_el$303","_el$304","_co$74","_el$294","_el$305","_el$306","_co$75","_el$297","_el$307","_el$308","_co$76","resolver","input","output","ms","routing","_el$209","_tmpl$43","_el$210","_el$214","_el$215","_co$46","_el$211","_el$216","_el$217","_co$47","_el$212","_el$218","_el$219","_co$48","topic","missingFields","_el$220","_tmpl$44","_el$221","_el$222","_el$223","_co$49","_c$6","scratchpadHideRaw","scratchpadShowRaw","_el$232","_tmpl$46","stepsData","steps","currentStep","_el$309","_tmpl$60","_el$315","_el$316","_co$78","_el$317","_el$318","_co$79","step","_el$319","_tmpl$63","_el$320","_el$321","_el$326","_el$327","_co$81","_el$328","_el$329","_co$82","_el$331","_el$332","_co$83","_c$7","description","_el$322","_tmpl$61","_el$323","_el$324","_el$325","_co$80","_el$330","_tmpl$62","_v$4","_v$5","some","_el$310","_tmpl$59","_el$311","_el$313","_el$314","_co$77","scratchpadNextStep","actions","validation","_el$333","_tmpl$67","_el$341","_el$342","_co$85","_el$343","_el$344","_co$86","_el$345","_el$346","_co$87","_el$340","_el$334","_tmpl$64","_el$347","_tmpl$70","_el$353","_el$354","_co$89","_el$355","_el$356","_co$90","_el$348","_tmpl$68","scratchpadItems","_el$349","_tmpl$69","_el$350","_el$351","_el$352","_co$88","confidence","_el$335","_tmpl$66","_el$336","_el$338","_el$339","_co$84","verifiedConfidence","pct","round","hallucinated","_el$337","_tmpl$65","verifiedUnverifiedCount","_$classList","item","_el$357","_el$359","_el$360","_co$91","_el$361","_el$362","_co$92","_$addEventListener","icon","_el$358","_tmpl$71","variant","detections","warnings","confidenceClass","conf","_el$363","_tmpl$72","_el$364","_el$366","_el$367","_co$93","det","_el$368","_tmpl$73","_el$369","_el$370","_el$365","w","_el$371","_tmpl$74","_el$372","_el$373","comment","setComment","showComment","setShowComment","submitted","setSubmitted","submittedLabel","setSubmittedLabel","approve","yes","reject","no","question","allowFreeText","allowComment","commentPlaceholder","scratchpadCommentPlaceholder","agentId","stepId","handleOption","option","needsComment","payload","_el$374","_tmpl$79","_el$375","_el$393","_el$394","_co$98","_el$395","_el$396","_co$99","_el$376","_tmpl$76","_el$377","_el$379","_el$380","_co$94","_el$378","_el$381","_el$382","_co$95","_el$387","_el$388","_co$97","_c$8","_el$383","_tmpl$75","_el$384","_el$385","_el$386","_co$96","_v$6","_v$7","_v$8","classList","toggle","_el$389","_tmpl$77","_el$397","_el$399","_el$400","_co$100","_el$401","_el$402","_co$101","_el$398","_tmpl$80","_el$390","_tmpl$78","_el$391","_el$392","scratchpadSend","_v$9","_v$0","originalQuery","interpretation","extracted","plan","editable","_el$403","_tmpl$84","_el$419","_el$420","_co$105","_el$409","_el$421","_el$422","_co$106","_el$423","_el$424","_co$107","_el$404","_tmpl$81","_el$405","_el$407","_el$408","_co$102","_el$425","_tmpl$85","_el$426","_el$428","_el$429","_co$108","_el$430","_el$410","_tmpl$82","_el$411","_el$412","_el$413","_el$414","_co$103","scratchpadPlan","_el$415","_tmpl$83","_el$416","_el$417","_el$418","_co$104","scratchpadModify","orientation","statusIcon","isHorizontal","_el$432","_tmpl$87","_el$433","_tmpl$90","_el$434","_el$435","_el$436","_el$446","_el$447","_co$111","_el$448","_el$449","_co$112","_el$437","_tmpl$88","_el$438","_el$439","_el$440","_co$109","duration_ms","_el$441","_tmpl$89","_el$442","_el$444","_el$445","_co$110","_el$431","_tmpl$86","_el$451","_tmpl$92","_el$452","_el$453","_el$455","_el$456","_co$113","_el$454","_tmpl$91","showDetails","setShowDetails","d","scratchpadError","severity","retryAction","retryLabel","details","timestamp","isWarning","_el$457","_tmpl$96","_el$458","_el$459","_el$460","_el$461","_el$462","_el$471","_el$472","_co$116","_el$473","_el$474","_co$117","_el$476","_el$477","_co$118","_el$463","_tmpl$93","_el$464","_el$465","_el$466","_co$114","_el$467","_tmpl$94","_el$468","_el$469","_el$470","_co$115","scratchpadDetails","_el$475","_tmpl$95","scratchpadSource","capabilities","latency_ms","freshness","row_count","queried","available","_el$478","_tmpl$99","_el$479","_el$480","_el$482","_el$483","_co$119","_el$481","_el$484","_el$485","_co$120","_el$487","_el$488","_co$121","_el$489","_el$491","_el$492","_co$122","_el$486","_tmpl$97","scratchpadResultCount","cap","_el$493","_tmpl$100","_el$495","_el$496","_co$123","_el$494","_el$497","_el$498","_co$124","supported","_el$490","_tmpl$98","Boolean","left","right","highlight","highlight_columns","l","_el$499","_tmpl$101","_el$500","_el$501","_el$502","_el$503","_el$504","_el$505","_el$506","lVal","rVal","isDiff","_el$507","_tmpl$102","_el$508","_el$509","_el$510","_c$9","_c$0","_$delegateEvents"],"mappings":";;;;;;;;;;;;;;;;AA6DA,MAAMA,gBAGF;AAAA,EACFC,SAAS;AAAA,IAAEC,UAAU;AAAA,IAAiBC,OAAO;AAAA,EAAA;AAAA,EAC7CC,OAAO;AAAA,IAAEF,UAAU;AAAA,IAAyBC,OAAO;AAAA,EAAA;AAAA,EACnDE,eAAe;AAAA,IAAEH,UAAU;AAAA,IAAkBC,OAAO;AAAA,EAAA;AAAA,EACpDG,YAAY;AAAA,IAAEJ,UAAU;AAAA,IAAoBC,OAAO;AAAA,EAAA;AAAA,EACnDI,UAAU;AAAA,IAAEL,UAAU;AAAA,IAAkBC,OAAO;AAAA,EAAA;AAAA;AAAA,EAE/CK,OAAO;AAAA,IAAEN,UAAU;AAAA,IAAmBC,OAAO;AAAA,EAAA;AAC/C;AAEO,MAAMM,kBAAoDC,CAAAA,UAAU;;AACzE,QAAMC,UAAUC,gBAAAA;AAChB,QAAM,CAACC,WAAWC,YAAY,IAAIC,aAAa,KAAK;AACpD,QAAM,CAACC,cAAcC,eAAe,IAAIF,aAAyCG,MAAS;AAC1F,QAAM,CAACC,eAAeC,gBAAgB,IAAIL,aAA4B,IAAI;AAC1E,MAAIM,eAAqD;AACzD,QAAMC,QAAQA,MAAMtB,cAAcU,MAAMa,MAAMC,MAAM,KAAKxB,cAAcC;AACvE,QAAMwB,aAAaA,MAAMf,MAAMgB,aAAa;AAC5C,QAAMC,gBAAgBA,MAAMjB,MAAMkB,gBAAgB;AAClD,QAAMC,UAAUA,MAAMb,aAAAA,KAAkBN,MAAMa,MAAMM;AACpD,QAAMC,aAAaA,MAAMC,OAAOC,KAAKtB,MAAMa,MAAMU,WAAW,CAAA,CAAE,EAAEC,SAAS;AACzE,QAAM,CAACC,YAAYC,aAAa,IAAIrB,aAAa,CAAC;AAClD,QAAM,CAACsB,WAAWC,YAAY,IAAIvB,aAAa,EAAE;AAEjD,QAAMwB,WAAWA,CAACC,OAAeC,SAAe;AAC9C,QAAI,CAAC/B,MAAMgC,MAAO;AAClBN,kBAAcO,CAAAA,MAAKA,IAAI,CAAC;AACxBL,iBAAaE,KAAK;AAClBI,YAAQC,IAAI,oBAAoBnC,MAAMa,MAAMuB,EAAE,KAAKN,KAAK,IAAIC,QAAQ,EAAE;AAAA,EACxE;AAIA,QAAMM,oBAA8C;AAAA,IAClD9C,SAAS,CAAC,cAAc,iBAAiB,OAAO;AAAA,IAChDI,eAAe,CAAC,cAAc,SAAS,YAAY,OAAO;AAAA,IAC1DC,YAAY,CAAC,SAAS,YAAY,SAAS,eAAe;AAAA,IAC1DF,OAAO,CAAC,cAAc,YAAY,SAAS,eAAe;AAAA,IAC1DG,UAAU,CAAA;AAAA,IACVC,OAAO,CAAC,cAAc,SAAS,eAAe;AAAA,EAAA;AAEhD,MAAIwC,aAAatC,MAAMa,MAAMC;AAG7BoB,UAAQK,KACN,sCAAsCvC,MAAMa,MAAMuB,EAAE,eAAapC,WAAMa,MAAM2B,aAAZxC,mBAAsBwB,WAAU,CAAC,WAAWxB,MAAMa,MAAMC,MAAM,GAAGd,MAAMyC,SAAS,iBAAiB,EAAE,IACpK,qCAAqC,gBACvC;AAGAC,eAAa,MAAM;;AACjB,UAAMC,YAAY3C,MAAMa,MAAMC;AAC9B,QAAI6B,cAAcL,YAAY;AAC5BJ,cAAQK,KAAK,kCAAkCvC,MAAMa,MAAMuB,EAAE,KAAKE,UAAU,MAAMK,SAAS,IAAI,qCAAqC,gBAAgB;AACpJ,UAAI,GAACN,MAAAA,kBAAkBC,UAAU,MAA5BD,gBAAAA,IAA+BO,SAASD,aAAY;AACvDT,gBAAQW,KAAK,uBAAuB7C,MAAMa,MAAMuB,EAAE,wBAAwBE,UAAU,MAAMK,SAAS,iBAAeN,uBAAkBC,UAAU,MAA5BD,mBAA+BS,KAAK,UAAS,iBAAiB,EAAE;AAAA,MACpL;AACAR,mBAAaK;AAAAA,IACf;AAEA,QAAI3C,MAAM+C,kBAAkBJ,cAAc,YAAY;AACpDT,cAAQK,KAAK,uBAAuBvC,MAAMa,MAAMuB,EAAE,oBAAoBpC,MAAM+C,cAAc,kBAAkBJ,SAAS,kCAAkC;AAAA,IACzJ;AAAA,EACF,CAAC;AAGD,QAAMK,gBAAgB,oBAAIC,IAAI,CAAC,QAAQ,SAAS,WAAW,YAAY,UAAU,YAAY,CAAC;AAE9F,QAAMC,eAAeA,CAACC,QAAgBpB,SAAmB;;AAEvDG,YAAQK,KAAK,yCAAyCY,MAAM,iBAAiB,CAAC,CAACnD,MAAMoD,WAAW,IAAI,qCAAqC,gBAAgB;AACzJ,QAAI,CAACpD,MAAMoD,eAAe,+BAA+BC,KAAKF,MAAM,GAAG;AACrEjB,cAAQW,KAAK,qCAAqCM,MAAM,0FAA0F;AAAA,IACpJ;AACAtB,aAAS,YAAY;AAAA,MAAEsB;AAAAA,MAAQC,aAAapD,MAAMoD;AAAAA,MAAarB;AAAAA,IAAAA,CAAM;AACrE,QAAI/B,MAAMoD,eAAe,CAACJ,cAAcM,IAAIH,MAAM,GAAG;AACnDzC,uBAAiByC,MAAM;AAAA,IACzB;AACAnD,KAAAA,MAAAA,MAAMuD,aAANvD,gBAAAA,IAAAA,YAAiBmD,QAAQpB;AACzB,QAAIiB,cAAcM,IAAIH,MAAM,KAAKnD,MAAMwD,SAAS;AAC9CxD,YAAMwD,QAAAA;AAAAA,IACR;AAAA,EACF;AAGAd,eAAa,MAAM;;AACjBb,aAAS,SAAS;AAAA,MAAEf,QAAQd,MAAMa,MAAMC;AAAAA,MAAQ0B,WAAUxC,MAAAA,MAAMa,MAAM2B,aAAZxC,gBAAAA,IAAsBwB;AAAAA,MAAQD,SAASF,OAAOC,KAAKtB,MAAMa,MAAMU,WAAW,EAAE;AAAA,MAAGkC,MAAMzD,MAAMa,MAAM4C;AAAAA,IAAAA,CAAM;AAAA,EACnK,CAAC;AAGDf,eAAa,MAAM;AACjB,QAAI1C,MAAMa,MAAMC,WAAW,cAAcd,MAAM+C,kBAAkB,CAAC/C,MAAMyC,QAAQ;AAC9E,YAAMiB,QAAQC,WAAW,MAAA;;AAAM3D,gBAAAA,MAAAA,MAAMwD,YAANxD,gBAAAA,IAAAA;AAAAA,SAAmBA,MAAM+C,cAAc;AACtEa,gBAAU,MAAMC,aAAaH,KAAK,CAAC;AAAA,IACrC;AAEA,QAAI1D,MAAMa,MAAMC,WAAW,gBAAgBL,iBAAiB;AAC1DC,uBAAiB,IAAI;AAAA,IACvB;AAAA,EACF,CAAC;AAGDgC,eAAa,MAAM;AACjB,UAAMoB,WAAW9D,MAAMa,MAAMkD;AAC7B,QAAI,CAACD,SAAU;AACf,UAAMvC,UAAUvB,MAAMa,MAAMU;AAC5B,QAAI,CAACA,WAAWF,OAAOC,KAAKC,OAAO,EAAEC,WAAW,EAAG;AAEnD,QAAIb,2BAA2BA,YAAY;AAC3CA,mBAAegD,WAAW,YAAY;AACpC,UAAI;AACF,cAAMK,MAAM,MAAMC,MAAMH,UAAU;AAAA,UAChCI,QAAQlE,MAAMa,MAAMsD,iBAAiB;AAAA,UACrCC,SAAS;AAAA,YAAE,gBAAgB;AAAA,YAAoB,GAAGpE,MAAMa,MAAMwD;AAAAA,UAAAA;AAAAA,UAC9DC,aAAa;AAAA,UACbC,MAAMC,KAAKC,UAAU;AAAA,YAAElD;AAAAA,UAAAA,CAAS;AAAA,QAAA,CACjC;AACD,YAAIyC,IAAIU,GAAInE,iBAAgB,MAAMyD,IAAIW,MAAM;AAAA,MAC9C,QAAQ;AAAA,MAAE;AAAA,IACZ,GAAG3E,MAAMa,MAAM+D,mBAAmB,GAAG;AAAA,EACvC,CAAC;AAEDhB,YAAU,MAAM;AAAE,QAAIjD,2BAA2BA,YAAY;AAAA,EAAE,CAAC;AAEhE,UAAA,MAAA;AAAA,QAAAkE,OAAAC,eAAAC,QAAA,GAAAC,QAAAH,KAAAI,YAAAC,QAAAF,MAAAC,YAAAE,QAAAD,MAAAD,YAAAG,QAAAD,MAAAE,aAAAC,QAAAF,MAAAC,aAAA,CAAAE,OAAAC,IAAA,IAAAC,cAAAH,MAAAD,WAAA,GAAAK,QAAAH,MAAAF,aAAA,CAAAM,OAAAC,KAAA,IAAAH,cAAAC,MAAAL,WAAA,GAAAQ,QAAAX,MAAAG,aAAAS,SAAAD,MAAAZ,YAAAc,SAAAD,OAAAT,aAAA,CAAAW,QAAAC,KAAA,IAAAR,cAAAM,OAAAV,WAAA,GAAAa,SAAAlB,MAAAK,aAAA,CAAAc,QAAAC,MAAA,IAAAX,cAAAS,OAAAb,WAAA,GAAAgB,SAAAF,OAAAd,aAAAiB,SAAAD,OAAAhB,aAAA,CAAAkB,QAAAC,MAAA,IAAAf,cAAAa,OAAAjB,WAAA;AAAAL,UAAAyB,UAYe,MAAMxF,cAAAA,KAAmBb,aAAa,CAACD,WAAW;AAACuG,WAAAtB,OAAA,MAIOpF,MAAMa,MAAM8F,KAAK;AAAAD,WAAAxB,OAEhF,MAAM;AACN,YAAM0B,eAAe5G,MAAMa,MAAM2B,SAASqE,KAAKC,CAAAA,MAAKA,EAAEC,SAAS,YAAY;AAC3E,UAAI,CAACH,aAAc,QAAO;AAC1B,YAAMI,KAAKC,aAAaL,aAAaM,OAAO;AAC5C,UAAI,EAACF,yBAAIG,MAAM,QAAO;AACtB,aAAAC,gBAAQC,kBAAgB;AAAA,QAAA,IAACC,YAAS;AAAA,iBAAEN,GAAGG;AAAAA,QAAI;AAAA,QAAA,IAAErG,SAAM;AAAA,iBAAEkG,GAAGlG,UAAU;AAAA,QAAM;AAAA,MAAA,CAAA;AAAA,IAC1E,GAACyE,OAAAC,IAAA;AAAAkB,WAAAxB,OAAAkC,gBACAG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEvG,cAAAA;AAAAA,MAAe;AAAA,MAAA,IAAAwG,WAAA;AAAA,YAAAC,QAAA5C,eAAA6C,MAAA;AAAAC,eAAA,MAAAC,aAAAH,OAAA,SACb,kDAAkDvH,cAAc,eAAe,EAAE,EAAE,CAAA;AAAA,eAAAuH;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAA/B,OAAAC,KAAA;AAAAc,WAAAZ,QAAA,MAMlB7F,QAAQW,MAAAA,EAAQpB,QAAQ,CAAC;AAAAkH,WAAAb,OAAAuB,gBACvGG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEM,aAAA/G,YAAY,EAAA,KAAIf,MAAMwD;AAAAA,MAAO;AAAA,MAAA,IAAAiE,WAAA;AAAA,YAAAM,SAAAjD,eAAAkD,OAAA;AAAAD,eAAAtB,UACrBwB,CAAAA,MAAM;;AAAEA,YAAEC,gBAAAA;AAAmBlI,WAAAA,MAAAA,MAAMwD,YAANxD,gBAAAA,IAAAA;AAAAA,QAAkB;AAAC4H,qBAAAC,aAAAE,QAAA,cAA6J9H,QAAQkI,eAAe,CAAA;AAAAC,2BAAAA;AAAA,eAAAL;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAA/B,QAAAC,KAAA;AAAAS,WAAA7B,MAAAuC,gBAQ3PG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE,CAACrH,UAAAA;AAAAA,MAAW;AAAA,MAAA,IAAAsH,WAAA;AAAA,YAAAY,SAAAvD,eAAAwD,QAAA,GAAAC,SAAAF,OAAApD,YAAA,CAAAuD,QAAAC,KAAA,IAAAhD,cAAA8C,OAAAlD,WAAA,GAAAqD,SAAAF,OAAAnD,aAAAsD,SAAAD,OAAArD,aAAA,CAAAuD,QAAAC,KAAA,IAAApD,cAAAkD,OAAAtD,WAAA,GAAAyD,SAAAF,OAAAvD,aAAA,CAAA0D,QAAAC,KAAA,IAAAvD,cAAAqD,OAAAzD,WAAA,GAAA4D,SAAAF,OAAA1D,aAAA,CAAA6D,QAAAC,MAAA,IAAA1D,cAAAwD,OAAA5D,WAAA,GAAA+D,SAAAF,OAAA7D,aAAA,CAAAgE,QAAAC,MAAA,IAAA7D,cAAA2D,OAAA/D,WAAA;AAAAqB,eAAA2B,QAAAjB,gBAGnBG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEM,KAAA,MAAA,CAAA,CAAA9H,MAAMa,MAAM0I,WAAW,EAAA,KAAIvJ,MAAMa,MAAM0I,YAAY/H,SAAS;AAAA,UAAC;AAAA,UAAA,IAAAiG,WAAA;AAAA,gBAAA+B,SAAA1E,eAAA2E,OAAA;AAAA/C,mBAAA8C,QAAApC,gBAEpEsC,KAAG;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE3J,MAAMa,MAAM0I;AAAAA,cAAW;AAAA,cAAA9B,UAC/BA,CAAChE,MAAMmG,MAAC,CAAAxC,gBAEJG,MAAI;AAAA,gBAAA,IAACC,OAAI;AAAA,yBAAEoC,MAAM;AAAA,gBAAC;AAAA,gBAAA,IAAAnC,WAAA;AAAA,yBAAA3C,eAAA+E,QAAA;AAAA,gBAAA;AAAA,cAAA,CAAA,IAAA,MAAA;AAAA,oBAAAC,SAAAhF,eAAAiF,QAAA,GAAAC,SAAAF,OAAA7E,YAAA,CAAAgF,QAAAC,MAAA,IAAAzE,cAAAuE,OAAA3E,WAAA,GAAA8E,SAAAF,OAAA5E,aAAA+E,SAAAD,OAAA9E,aAAA,CAAAgF,QAAAC,MAAA,IAAA7E,cAAA2E,OAAA/E,WAAA,GAAAkF,SAAAF,OAAAhF,aAAA,CAAAmF,QAAAC,MAAA,IAAAhF,cAAA8E,OAAAlF,WAAA;AAAAqB,uBAAAoD,SAAA,MAAA;AAAA,sBAAAY,MAAA5C,KAAA,MAShBrE,KAAK3C,WAAW,MAAM;AAAA,yBAAA,MAAtB4J,IAAAA,IAAyB,MAAMjH,KAAK3C,WAAW,WAAW,MAAM;AAAA,gBAAG,GAAA,GAAAmJ,QAAAC,MAAA;AAAAxD,uBAAAoD,QAAA,MAAGrG,KAAKkH,OAAKN,QAAAC,MAAA;AAAA5D,uBAAAoD,QAAA1C,gBAChFG,MAAI;AAAA,kBAAA,IAACC,OAAI;AAAA,2BAAE/D,KAAKmH;AAAAA,kBAAO;AAAA,kBAAA,IAAAnD,WAAA;AAAA,wBAAAoD,SAAA/F,eAAAgG,QAAA,GAAAC,SAAAF,OAAA5F,YAAA+F,SAAAD,OAAA1F,aAAA,CAAA4F,QAAAC,MAAA,IAAAzF,cAAAuF,OAAA3F,WAAA;AAAAqB,2BAAAmE,QAAA,MAA+CpH,KAAKmH,SAAOK,QAAAC,MAAA;AAAA,2BAAAL;AAAAA,kBAAA;AAAA,gBAAA,CAAA,GAAAL,QAAAC,MAAA;AAAA7C,uBAAA,MAAAuD,UAAArB,QAPxE,gDACXrG,KAAK3C,WAAW,SAAS,yEACvB2C,KAAK3C,WAAW,WAAW,qEAC3B2C,KAAK3C,WAAW,YAAY,4DAC5B,4CAA4C,EAC9C,CAAA;AAAA,uBAAAgJ;AAAAA,cAAA,IAAA;AAAA,YAAA,CAKL,CAAA;AAAA,mBAAAN;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAhB,QAAAC,KAAA;AAAA/B,eAAAgC,QAAAtB,gBAOJsC,KAAG;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAE3J,MAAMa,MAAM2B;AAAAA,UAAQ;AAAA,UAAAiF,UAC3B2D,CAAAA,YAAOhE,gBACNiE,iBAAe;AAAA,YACdD;AAAAA,YAAgB,IAChB7J,UAAO;AAAA,qBAAEvB,MAAMa,MAAMU;AAAAA,YAAO;AAAA,YAAA,IAC5B+J,iBAAc;AAAA,qBAAEtL,MAAMsL;AAAAA,YAAc;AAAA,YACpC/H,UAAUL;AAAAA,YAAY,IACtBqI,gBAAa;AAAA,qBAAEvL,MAAMuL;AAAAA,YAAa;AAAA,YAAA,IAClCC,WAAQ;AAAA,qBAAExL,MAAMwL;AAAAA,YAAQ;AAAA,YAAA,IACxBC,aAAU;AAAA,qBAAEzL,MAAMyL;AAAAA,YAAU;AAAA,UAAA,CAAA;AAAA,QAAA,CAE/B,CAAA;AAAA/E,eAAA2B,QAAAjB,gBAKJG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAExH,MAAMa,MAAM6K,cAAclK,SAAS;AAAA,UAAC;AAAA,UAAA,IAAAiG,WAAA;AAAA,gBAAAkE,SAAA7G,eAAA8G,OAAA;AAAAlF,mBAAAiF,QAAAvE,gBAE3CsC,KAAG;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE3J,MAAMa,MAAM6K;AAAAA,cAAa;AAAA,cAAAjE,UAChCoE,UAAG,MAAA;AAAA,oBAAAC,SAAAhH,eAAAiH,QAAA,GAAAC,SAAAF,OAAA7G,YAAAgH,SAAAD,OAAA3G;AAAAqB,uBAAAsF,SAAA,MAAA;AAAA,sBAAAE,OAAApE,KAAA,MAMmC+D,IAAI9E,SAAS,SAAS;AAAA,yBAAA,MAAtBmF,KAAAA,IAAyB,OAAOL,IAAI9E,SAAS,aAAa,MAAM;AAAA,gBAAI,IAAA;AAAAL,uBAAAuF,QAAA,MACpGJ,IAAIM,IAAI;AAAAvE,uBAAA,MAAAuD,UAAAW,QANF,uDACVD,IAAI9E,SAAS,YAAY,wEACvB8E,IAAI9E,SAAS,aAAa,gHAC1B,iEAAiE,EACnE,CAAA;AAAA,uBAAA+E;AAAAA,cAAA,GAAA;AAAA,YAAA,CAIH,CAAA;AAAA,mBAAAH;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAA/C,QAAAC,KAAA;AAAAnC,eAAA2B,QAAAjB,gBAMNG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAErG,QAAAA;AAAAA,UAAS;AAAA,UAAA,IAAAsG,WAAA;AAAA,gBAAA2E,SAAAtH,eAAAuH,OAAA;AAAA3F,mBAAA0F,QAAAhF,gBAEhBG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAErG,QAAAA,EAAWmL,UAAU;AAAA,cAAC;AAAA,cAAA,IAAEC,WAAQ;AAAA,uBAAA,EAAA,MAAA;AAAA,sBAAAC,SAAA1H,eAAA2H,QAAA,GAAAC,SAAAF,OAAAvH,YAAA0H,SAAAD,OAAArH;AAAAqB,yBAAAgG,QAAA,MAGsDzM,QAAQ2M,iBAAiB;AAAAlG,yBAAAiG,QAAA,MACGxL,QAAAA,EAAWmL,MAAMO,eAAe5M,QAAQ6M,MAAM,CAAC;AAAA,yBAAAN;AAAAA,gBAAA,GAAA,IAAA,MAAA;AAAA,sBAAAO,SAAAjI,eAAAkI,QAAA;AAAAtG,yBAAAqG,QAAA,MAEpH5L,QAAAA,EAAWyJ,OAAO;AAAA,yBAAAmC;AAAAA,gBAAA,GAAA,GAAA3F,gBACtEG,MAAI;AAAA,kBAAA,IAACC,OAAI;AAAA,2BAAEM,KAAA,MAAA,CAAA,CAAA3G,UAAW8L,IAAI,EAAA,KAAI9L,QAAAA,EAAW8L,KAAMzL,SAAS;AAAA,kBAAC;AAAA,kBAAA,IAAAiG,WAAA;AAAA,wBAAAyF,SAAApI,eAAAqI,QAAA,GAAAC,SAAAF,OAAAjI,YAAAoI,SAAAD,OAAAnI,YAAAqI,SAAAD,OAAApI,YAAAsI,UAAAF,OAAAhI;AAAAqB,2BAAA4G,QAAAlG,gBAGxCsC,KAAG;AAAA,sBAAA,IAACC,OAAI;AAAA,+BAAEtI,OAAOC,KAAKH,QAAAA,EAAW8L,KAAM,CAAC,CAAC;AAAA,sBAAC;AAAA,sBAAAxF,UAAI+F,QAAC,MAAA;AAAA,4BAAAC,UAAA3I,eAAA4I,QAAA;AAAAhH,+BAAA+G,SAAmFD,CAAC;AAAA,+BAAAC;AAAAA,sBAAA,GAAA;AAAA,oBAAA,CAAM,CAAA;AAAA/G,2BAAA6G,SAAAnG,gBAC7IsC,KAAG;AAAA,sBAAA,IAACC,OAAI;AAAA,+BAAExI,QAAAA,EAAW8L,KAAMU,MAAM,GAAG,CAAC;AAAA,sBAAC;AAAA,sBAAAlG,UAAImG,UAAG,MAAA;AAAA,4BAAAC,UAAA/I,eAAAgJ,QAAA;AAAApH,+BAAAmH,SAAAzG,gBAAgEsC,KAAG;AAAA,0BAAA,IAACC,OAAI;AAAA,mCAAEtI,OAAO0M,OAAOH,GAAG;AAAA,0BAAC;AAAA,0BAAAnG,UAAIuG,QAAC,MAAA;AAAA,gCAAAC,UAAAnJ,eAAAoJ,QAAA;AAAAxH,mCAAAuH,SAAA,MAA6DE,OAAOH,CAAC,CAAC;AAAA,mCAAAC;AAAAA,0BAAA,GAAA;AAAA,wBAAA,CAAM,CAAA;AAAA,+BAAAJ;AAAAA,sBAAA,GAAA;AAAA,oBAAA,CAAY,CAAA;AAAA,2BAAAX;AAAAA,kBAAA;AAAA,gBAAA,CAAA,CAAA;AAAA,cAAA;AAAA,cAAA,IAAAzF,WAAA;AAAA,oBAAA2G,SAAAtJ,eAAAuJ,OAAA,GAAAC,SAAAF,OAAAnJ,YAAAsJ,SAAAD,OAAAjJ,aAAAmJ,SAAAD,OAAAlJ;AAAAqB,uBAAA6H,QAAA,MAQ/LtO,QAAQwO,mBAAmB;AAAAD,uBAAA/H,UACjD,MAAA;;AAAMzG,0BAAAA,MAAAA,MAAMuD,aAANvD,gBAAAA,IAAAA,YAAiB;AAAA;AAAiB0G,uBAAA8H,QAAA,MAAoJvO,QAAQyO,uBAAuB;AAAAtG,mCAAAA;AAAA,uBAAAgG;AAAAA,cAAA;AAAA,YAAA,CAAA,CAAA;AAAA,mBAAAhC;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAArD,QAAAC,KAAA;AAAAtC,eAAA2B,QAAAjB,gBAOjQG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEM,KAAA,MAAA9H,MAAMa,MAAMC,WAAW,OAAO,EAAA,KAAId,MAAMa,MAAMf;AAAAA,UAAK;AAAA,UAAA,IAAA2H,WAAA;AAAA,gBAAAkH,SAAA7J,eAAA8J,OAAA,GAAAC,SAAAF,OAAA1J,YAAA6J,SAAAD,OAAA5J,YAAA8J,SAAAD,OAAAzJ,aAAA2J,SAAAD,OAAA9J,YAAAgK,SAAAD,OAAA3J,aAAA,CAAA6J,QAAAC,KAAA,IAAA1J,cAAAwJ,OAAA5J,WAAA,GAAA+J,SAAAP,OAAAxJ,aAAAgK,SAAAD,OAAAnK,YAAA,CAAAqK,QAAAC,KAAA,IAAA9J,cAAA4J,OAAAhK,WAAA,GAAAmK,SAAAF,OAAAjK,aAAA,CAAAoK,QAAAC,KAAA,IAAAjK,cAAA+J,OAAAnK,WAAA;AAAAqB,mBAAAsI,QAAA,MAK/BhP,MAAMa,MAAMf,MAAO6P,OAAO;AAAAjJ,mBAAAqI,QAAA3H,gBACjDG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAExH,MAAMa,MAAMf,MAAO8P;AAAAA,cAAI;AAAA,cAAA,IAAAnI,WAAA;AAAA,oBAAAoI,SAAA/K,eAAAgL,OAAA;AAAApJ,uBAAAmJ,QAAA,MAE9BE,kBAAkB9P,QAAQ+P,qBAAqB;AAAA,kBAAEJ,MAAM5P,MAAMa,MAAMf,MAAO8P;AAAAA,gBAAAA,CAAO,CAAC;AAAA,uBAAAC;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAX,QAAAC,KAAA;AAAAzI,mBAAA0I,QAAAhI,gBAMxFG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAExH,MAAMa,MAAMf,MAAOmQ,cAAc;AAAA,cAAK;AAAA,cAAA,IAAAxI,WAAA;AAAA,oBAAAyI,SAAApL,eAAAqL,OAAA,GAAAC,SAAAF,OAAAjL,YAAAoL,SAAAD,OAAA/K,aAAA,CAAAiL,QAAAC,KAAA,IAAA9K,cAAA4K,OAAAhL,WAAA;AAAA6K,uBAAAzJ,UACjB;;AAAMzG,0BAAAA,MAAAA,MAAMwQ,YAANxQ,gBAAAA,IAAAA;AAAAA;AAAiB0G,uBAAAwJ,QAAA,MAEzCjQ,QAAQwQ,OAAKH,QAAAC,KAAA;AAAAnI,mCAAAA;AAAA,uBAAA8H;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAZ,QAAAC,KAAA;AAAA7I,mBAAA0I,QAAAhI,gBAG3BG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAExH,MAAMwD;AAAAA,cAAO;AAAA,cAAA,IAAAiE,WAAA;AAAA,oBAAAiJ,SAAA5L,eAAA6L,OAAA;AAAAD,uBAAAjK,UACQ;;AAAMzG,0BAAAA,MAAAA,MAAMwD,YAANxD,gBAAAA,IAAAA;AAAAA;AAAiB0G,uBAAAgK,QAAA,MAEnDzQ,QAAQkI,eAAe;AAAAC,mCAAAA;AAAA,uBAAAsI;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAjB,QAAAC,KAAA;AAAA,mBAAAf;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAzF,QAAAC,MAAA;AAAAzC,eAAA2B,QAAAjB,gBAQjCG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEM,KAAA,MAAA9H,MAAMa,MAAMC,WAAW,eAAe,EAAA,KAAIM,WAAAA;AAAAA,UAAY;AAAA,UAAA,IAAAqG,WAAA;AAAA,gBAAAmJ,SAAA9L,eAAA+L,OAAA,GAAAC,SAAAF,OAAA3L,YAAA8L,SAAAD,OAAA7L,YAAA+L,SAAAD,OAAA1L,aAAA,CAAA4L,QAAAC,KAAA,IAAAzL,cAAAuL,OAAA3L,WAAA;AAAAyL,mBAAArK,UAInD,MAAMvD,aAAa,UAAU;AAAA,cAAE3B,SAASvB,MAAMa,MAAMU;AAAAA,YAAAA,CAAS;AAACmF,mBAAAoK,QAAA,MAItE7Q,QAAQkR,kBAAgBF,QAAAC,KAAA;AAAA9I,+BAAAA;AAAA,mBAAAwI;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAvH,QAAAC,MAAA;AAAA1B,eAAAwJ,SAAAC,iBAAAhJ,QAAA,cAjILrI,MAAMsR,aAAa,OAAO,CAAA;AAAA,eAAAjJ;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAlC,QAAAC,MAAA;AAAAM,WAAA7B,MAAAuC,gBA6IvDG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAExH,MAAMuR;AAAAA,MAAY;AAAA,MAAA,IAAA9J,WAAA;AAAA,YAAA+J,SAAA1M,eAAA2M,QAAA,GAAAC,SAAAF,OAAAvM,YAAA,CAAA0M,QAAAC,MAAA,IAAAnM,cAAAiM,OAAArM,WAAA,GAAAwM,SAAAF,OAAAtM,aAAAyM,SAAAD,OAAAxM,aAAA,CAAA0M,QAAAC,MAAA,IAAAvM,cAAAqM,OAAAzM,WAAA,GAAA4M,SAAAF,OAAA1M,aAAA6M,SAAAD,OAAA5M,aAAA,CAAA8M,QAAAC,MAAA,IAAA3M,cAAAyM,OAAA7M,WAAA,GAAAgN,SAAAF,OAAA9M,aAAAiN,SAAAD,OAAAhN,aAAA,CAAAkN,QAAAC,MAAA,IAAA/M,cAAA6M,OAAAjN,WAAA,GAAAoN,SAAAF,OAAAlN,aAAAqN,SAAAD,OAAApN,aAAA,CAAAsN,QAAAC,MAAA,IAAAnN,cAAAiN,OAAArN,WAAA;AAAAqB,eAAA8K,QAAA,MAEzBxR,MAAMa,MAAMuB,IAAEuP,QAAAC,MAAA;AAAAlL,eAAA8K,QAAQ/P,YAAUsQ,QAAAC,MAAA;AAAAtL,eAAA8K,QAAA,MAAA;;AAAWxR,mBAAAA,MAAAA,MAAMa,MAAM2B,aAAZxC,gBAAAA,IAAsBwB,WAAU;AAAA,WAAC2Q,QAAAC,MAAA;AAAA1L,eAAA8K,QAAA,MAAKxR,MAAMa,MAAMC,QAAMyR,QAAAC,MAAA;AAAA9L,eAAA8K,QAAU7P,WAASgR,QAAAC,MAAA;AAAA,eAAApB;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAjL,QAAAC,MAAA;AAAAoB,WAAAiL,CAAAA,QAAA;AAAA,UAAAC,MAxLpH,iFACL9S,MAAMa,MAAMC,WAAW,kBACnB,yCACA,sCAAsC,IACxCd,MAAMyC,SAAS,sBAAsB,EAAE,IAAEsQ,OAKpC,6FAA6F9R,cAAAA,IAAkB,uEAAuE,EAAE,IAAE+R,OAqBlL,gDAAgDpS,MAAAA,EAAQnB,KAAK;AAAEqT,cAAAD,IAAA5K,KAAAkD,UAAAtG,MAAAgO,IAAA5K,IAAA6K,GAAA;AAAAC,eAAAF,IAAAI,KAAA9H,UAAAnG,OAAA6N,IAAAI,IAAAF,IAAA;AAAAC,eAAAH,IAAAK,KAAA/H,UAAArF,QAAA+M,IAAAK,IAAAF,IAAA;AAAA,aAAAH;AAAAA,IAAA,GAAA;AAAA,MAAA5K,GAAAzH;AAAAA,MAAAyS,GAAAzS;AAAAA,MAAA0S,GAAA1S;AAAAA,IAAAA,CAAA;AAAA4H,uBAAAA;AAAA,WAAAvD;AAAAA,EAAA,GAAA;AA+JtF;AAKA,SAASoC,aAAaC,SAA2B;AAC/C,MAAI,OAAOA,YAAY,UAAU;AAC/B,QAAI;AAAE,aAAO1C,KAAK2O,MAAMjM,OAAO;AAAA,IAAE,QAAQ;AAAE,aAAOA;AAAAA,IAAQ;AAAA,EAC5D;AACA,SAAOA;AACT;AAIA,MAAMmE,kBAQArL,CAAAA,UAAU;AACd,UAAA,MAAA;AAAA,QAAAoT,UAAAtO,eAAAuO,QAAA,GAAAC,UAAAF,QAAAnO,YAAAsO,UAAAD,QAAAjO,aAAA,CAAAmO,SAAAC,MAAA,IAAAhO,cAAA8N,QAAAlO,WAAA;AAAAqB,WAAA4M,SAAA,MAEmGtT,MAAMoL,QAAQzE,KAAK;AAAAD,WAAA0M,SAAAhM,gBACjHsM,QAAM;AAAA,MAAA,IAAAjM,WAAA;AAAA,eAAA,CAAAL,gBACJuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAM;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGwM,aAAW;AAAA,cAAA,IAAC1M,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBACpGuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAQ;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGyM,0BAAwB;AAAA,cAAA,IAAC3M,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,cAAA,IAAE3F,UAAO;AAAA,uBAAEvB,MAAMuB;AAAAA,cAAO;AAAA,cAAA,IAAE+J,iBAAc;AAAA,uBAAEtL,MAAMsL;AAAAA,cAAc;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAlE,gBACjLuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAS;AAAA,UAAA,IAAAU,WAAA;AAAA,gBAAAqM,UAAAhP,eAAAkI,QAAA;AAAAtG,mBAAAoN,SAAA,MAAuD3F,OAAOnO,MAAMoL,QAAQlE,OAAO,CAAC;AAAA,mBAAA4M;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAA1M,gBAChIuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAQ;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG2M,eAAa;AAAA,cAAA,IAAC7M,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,cAAA,IAAE3D,WAAQ;AAAA,uBAAEvD,MAAMuD;AAAAA,cAAQ;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAA6D,gBAClIuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAO;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG4M,sBAAoB;AAAA,cAAA,IAAC9M,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,cAAA,IAAE3D,WAAQ;AAAA,uBAAEvD,MAAMuD;AAAAA,cAAQ;AAAA,cAAA,IAAE+H,iBAAc;AAAA,uBAAEtL,MAAMsL;AAAAA,cAAc;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAlE,gBAC9KuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAM;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG6M,qBAAmB;AAAA,cAAA,IAAC/M,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,cAAA,IAAEgN,YAAS;AAAA,uBAAElU,MAAMoL,QAAQhJ;AAAAA,cAAE;AAAA,cAAA,IAAEmB,WAAQ;AAAA,uBAAEvD,MAAMuD;AAAAA,cAAQ;AAAA,cAAA,IAAEiI,WAAQ;AAAA,uBAAExL,MAAMwL;AAAAA,cAAQ;AAAA,cAAA,IAAEC,aAAU;AAAA,uBAAEzL,MAAMyL;AAAAA,cAAU;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAArE,gBAC3NuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAe;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG+M,sBAAoB;AAAA,cAAA,IAACjN,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBACtHuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAU;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGgN,iBAAe;AAAA,cAAA,IAAClN,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,cAAA,IAAE3D,WAAQ;AAAA,uBAAEvD,MAAMuD;AAAAA,cAAQ;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAA6D,gBACtIuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAQ;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGiN,eAAa;AAAA,cAAA,IAACnN,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,cAAA,IAAE3D,WAAQ;AAAA,uBAAEvD,MAAMuD;AAAAA,cAAQ;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAA6D,gBAClIuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAS;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGkN,wBAAsB;AAAA,cAAA,IAACpN,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBAClHuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAO;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGmN,sBAAoB;AAAA,cAAA,IAACrN,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,cAAA,IAAE3D,WAAQ;AAAA,uBAAEvD,MAAMuD;AAAAA,cAAQ;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAA6D,gBACxIuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAa;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGoN,mBAAiB;AAAA,cAAA,IAACtN,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBACjHuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAM;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGqN,aAAW;AAAA,cAAA,IAACvN,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAC;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBACpGuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAe;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAGsN,cAAYC,WAAA,MAAM1N,aAAajH,MAAMoL,QAAQlE,OAAO,GAAwB;AAAA,cAAG0N,sBAAuBC,CAAAA,MAAAA;;AAAM7U,mCAAMuD,aAANvD,+BAAiB,uBAAuB6U;AAAAA;AAAAA,YAAC,CAAC,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAzN,gBAC3MuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAc;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG0N,oBAAkB;AAAA,cAAA,IAAC5N,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAuB;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBACzIuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAK;AAAA,UAAA,IAAAU,WAAA;AAAA,oBAAI,MAAM;AAAE,oBAAMxF,IAAIgF,aAAajH,MAAMoL,QAAQlE,OAAO;AAAwB,qBAAAE,gBAAQ2N,aAAW;AAAA,gBAAA,IAACC,SAAM;AAAA,yBAAE;AAAA,oBAAEC,SAAShT,EAAEgT;AAAAA,oBAASC,QAAQjT,EAAEiT;AAAAA,oBAAQC,MAAMlT,EAAEkT;AAAAA,oBAAMC,cAAcnT,EAAEoT;AAAAA,oBAAOC,OAAOrT,EAAEqT;AAAAA,oBAAOC,QAAQtT,EAAEsT;AAAAA,oBAAQC,QAAQvT,EAAEuT,UAAU;AAAA,oBAASC,WAAW;AAAA,kBAAA;AAAA,gBAAM;AAAA,cAAA,CAAA;AAAA,YAAK,GAAA;AAAA,UAAI;AAAA,QAAA,CAAA,GAAArO,gBAC1TuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAO;AAAA,UAAA,IAAAU,WAAA;AAAA,oBAAI,MAAM;AAAE,oBAAMxF,IAAIgF,aAAajH,MAAMoL,QAAQlE,OAAO;AAA2B,qBAAAE,gBAAQsO,iBAAe;AAAA,gBAAA,IAACC,YAAS;AAAA,yBAAE;AAAA,oBAAEvT,IAAIpC,MAAMoL,QAAQhJ;AAAAA,oBAAI2E,MAAM;AAAA,oBAAS6O,UAAU;AAAA,sBAAEC,UAAU;AAAA,sBAAGC,SAAS;AAAA,oBAAA;AAAA,oBAAMd,QAAQ;AAAA,sBAAE,GAAG/S;AAAAA,sBAAG8T,UAAU;AAAA,sBAAUP,SAASvT,uBAAWuT,WAAU;AAAA,oBAAA;AAAA,kBAAQ;AAAA,gBAAG;AAAA,cAAA,CAAA;AAAA,YAAK,GAAA;AAAA,UAAI;AAAA,QAAA,CAAA,GAAApO,gBACrUuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAY;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG4O,WAAS;AAAA,cAAA,IAAC9O,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAqB;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBAC5HuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAe;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG6O,cAAY;AAAA,cAAA,IAAC/O,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAwB;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBACrIuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAe;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG8O,cAAY;AAAA,cAAA,IAAChP,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAwB;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBACrIuM,OAAK;AAAA,UAAA,IAACnM,OAAI;AAAA,mBAAExH,MAAMoL,QAAQrE,SAAS;AAAA,UAAe;AAAA,UAAA,IAAAU,WAAA;AAAA,mBAAAL,gBAAG+O,cAAY;AAAA,cAAA,IAACjP,UAAO;AAAA,uBAAED,aAAajH,MAAMoL,QAAQlE,OAAO;AAAA,cAAwB;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAE,gBACrIuM,OAAK;AAAA,UAACnM,MAAM;AAAA,UAAI,IAAAC,WAAA;AAAA,gBAAA2O,UAAAtR,eAAAuR,QAAA;AAAA3P,mBAAA0P,SAAA,MAAoD5R,KAAKC,UAAUzE,MAAMoL,QAAQlE,SAAS,MAAM,CAAC,CAAC;AAAA,mBAAAkP;AAAAA,UAAA;AAAA,QAAA,CAAA,CAAA;AAAA,MAAA;AAAA,IAAA,CAAA,GAAA5C,SAAAC,MAAA;AAAA,WAAAL;AAAAA,EAAA,GAAA;AAI3H;AAIA,MAAMQ,cAAgD5T,CAAAA,UAAU;AAC9D,QAAMsW,UAAUA,MAAM,OAAOtW,MAAMkH,YAAY,YAAYlH,MAAMkH,UAAU7F,OAAOiV,QAAQtW,MAAMkH,OAAkC,IAAI,CAAA;AACtI,UAAA,MAAA;AAAA,QAAAqP,UAAAzR,eAAA0R,QAAA;AAAA9P,WAAA6P,SAAAnP,gBAEKsC,KAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE2M,QAAAA;AAAAA,MAAS;AAAA,MAAA7O,UAAGA,CAAC,CAAC+F,GAAGQ,CAAC,OAAC,MAAA;AAAA,YAAAyI,UAAA3R,eAAA4R,QAAA,GAAAC,UAAAF,QAAAxR,YAAA2R,UAAAD,QAAA1R,YAAA,CAAA4R,SAAAC,MAAA,IAAArR,cAAAmR,QAAAvR,WAAA;AAAAwR,gBAAAxR;AAAAA,YAAA0R,UAAAJ,QAAAtR;AAAAqB,eAAAiQ,SAA6GnJ,GAACqJ,SAAAC,MAAA;AAAApQ,eAAAqQ,UAAA,MAAA;AAAA,cAAAC,OAAAlP,KAAA,MAAA,CAAA,CAAsDmP,MAAMC,QAAQlJ,CAAC,CAAC;AAAA,iBAAA,MAAhBgJ,SAAmBhJ,EAAElL,KAAK,IAAI,IAAIqL,OAAOH,CAAC;AAAA,QAAC,IAAA;AAAA,eAAAyI;AAAAA,MAAA,GAAA;AAAA,IAAA,CAAc,CAAA;AAAA,WAAAF;AAAAA,EAAA,GAAA;AAGjQ;AAIA,MAAM1C,2BAIA7T,CAAAA,UAAU;AACd,QAAMC,UAAUC,gBAAAA;AAChB,QAAM,CAACiX,YAAYC,aAAa,IAAI/W,aAA4B,IAAI;AACpE,QAAM,CAACgX,WAAWC,YAAY,IAAIjX,aAAa,EAAE;AAGjD,QAAMkX,aAAaA,MAAM;AACvB,QAAI,OAAOvX,MAAMkH,YAAY,YAAYlH,MAAMkH,gBAAgBlH,MAAMkH;AACrE,WAAO,CAAA;AAAA,EACT;AAEA,QAAMsQ,UAAUA,MAAM;AACpB,UAAMC,cAAcpW,OAAOC,KAAKiW,WAAAA,CAAY;AAC5C,UAAMG,cAAcrW,OAAOC,KAAKtB,MAAMuB,WAAW,CAAA,CAAE;AACnD,WAAO,CAAC,GAAG,oBAAI0B,IAAI,CAAC,GAAGwU,aAAa,GAAGC,WAAW,CAAC,CAAC;AAAA,EACtD;AAEA,QAAMC,eAAeA,CAACC,QAAgB;;AACpC,UAAMC,OAAO;AAAA,MAAE,GAAG7X,MAAMuB;AAAAA,IAAAA;AACxB,WAAOsW,KAAKD,GAAG;AACf5X,gBAAMsL,mBAANtL,+BAAuB6X;AAAAA,EACzB;AAEA,QAAMC,YAAYA,CAACF,KAAaG,UAAkB;;AAChD/X,gBAAMsL,mBAANtL,+BAAuB;AAAA,MAAE,GAAGA,MAAMuB;AAAAA,MAAS,CAACqW,GAAG,GAAGG;AAAAA,IAAAA;AAClDX,kBAAc,IAAI;AAClBE,iBAAa,EAAE;AAAA,EACjB;AAEA,QAAMU,SAASA,CAACJ,QAAgBL,aAAaK,GAAG,KAAK,CAAA;AAErD,UAAA,MAAA;AAAA,QAAAK,UAAAnT,eAAAoT,QAAA,GAAAC,UAAAF,QAAAhT,YAAA,CAAAmT,SAAAC,MAAA,IAAA5S,cAAA0S,QAAA9S,WAAA,GAAAiT,UAAAF,QAAA/S,aAAA,CAAAkT,SAAAC,MAAA,IAAA/S,cAAA6S,QAAAjT,WAAA;AAAAqB,WAAAuR,SAAA7Q,gBAEKsC,KAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE6N,QAAAA;AAAAA,MAAS;AAAA,MAAA/P,UAChBmQ,CAAAA,QAAQ;AACR,cAAMa,MAAMA,MAAMT,OAAOJ,GAAG;AAC5B,cAAMG,QAAQA,MAAM/X,MAAMuB,QAAQqW,GAAG;AACrC,cAAMc,WAAWA,MAAMX,MAAAA,MAAYvX,UAAauX,YAAY;AAE5D,gBAAA,MAAA;AAAA,cAAAY,UAAA7T,eAAA8T,QAAA,GAAAC,UAAAF,QAAA1T,YAAA,CAAA6T,SAAAC,MAAA,IAAAtT,cAAAoT,QAAAxT,WAAA,GAAA2T,UAAAF,QAAAzT,aAAA,CAAA4T,SAAAC,MAAA,IAAAzT,cAAAuT,QAAA3T,WAAA;AAAAqB,iBAAAiS,SAAAvR,gBAEKG,MAAI;AAAA,YAAA,IAACC,OAAI;AAAA,qBAAEkR,SAAAA;AAAAA,YAAU;AAAA,YAAA,IAAEnM,WAAQ;AAAA,sBAAA,MAAA;AAAA,oBAAA4M,UAAArU,eAAAsU,QAAA,GAAAC,UAAAF,QAAAlU,YAAAqU,UAAAD,QAAAhU,aAAA,CAAAkU,SAAAC,MAAA,IAAA/T,cAAA6T,QAAAjU,WAAA;AAAA8T,wBAAA1S,UACC,MAAM;AAAE2Q,gCAAcQ,GAAG;AAAGN,+BAAa,EAAE;AAAA,gBAAE;AAAC5Q,uBAAAyS,SAAA;;AAExEV,oCAAAA,MAAAA,mBAAO9N,UAASiN;AAAAA,mBAAG2B,SAAAC,MAAA;AAAApR,mCAAAA;AAAA,uBAAA+Q;AAAAA,cAAA,GAAA;AAAA,YAAA;AAAA,YAAA,IAAA1R,WAAA;AAAA,kBAAAgS,UAAA3U,eAAA4U,QAAA,GAAAC,UAAAF,QAAAxU,YAAA2U,UAAAD,QAAA1U,YAAA4U,UAAAD,QAAA3U,YAAA,CAAA6U,SAAAC,MAAA,IAAAtU,cAAAoU,QAAAxU,WAAA;AAAAyU,sBAAAzU;kBAAA2U,UAAAJ,QAAAvU,aAAA4U,UAAAD,QAAA3U,aAAA,CAAA6U,SAAAC,MAAA,IAAA1U,cAAAwU,QAAA5U,WAAA,GAAA+U,UAAAT,QAAAtU,aAAA,CAAAgV,SAAAC,MAAA,IAAA7U,cAAA2U,QAAA/U,WAAA;AAAAsU,sBAAAlT,UAIS,MAAM;AAAE2Q,8BAAcQ,GAAG;AAAGN,6BAAanJ,OAAO4J,MAAAA,KAAW,EAAE,CAAC;AAAA,cAAE;AAACrR,qBAAAkT,SAAA;;AAC9CnB,kCAAAA,MAAAA,mBAAO9N,UAASiN;AAAAA,iBAAGkC,SAAAC,MAAA;AAAArT,qBAAAiT,UAAA,MAAA;AAAA,oBAAAY,OAAAzS,KAAA,MAAA,CAAA,CAAWmP,MAAMC,QAAQa,MAAAA,CAAO,CAAC;AAAA,uBAAA,MAAtBwC,KAAAA,IAA0BxC,MAAAA,EAAqBjV,KAAK,IAAI,IAAIqL,OAAO4J,OAAO;AAAA,cAAC,GAAA,GAAAmC,SAAAC,MAAA;AAAAzT,qBAAA+S,SAAArS,gBAE1JG,MAAI;AAAA,gBAAA,IAACC,OAAI;AAAA,yBAAExH,MAAMsL;AAAAA,gBAAc;AAAA,gBAAA,IAAA7D,WAAA;AAAA,sBAAA+S,UAAA1V,eAAA2V,QAAA;AAAAD,0BAAA/T,UACC,MAAMkR,aAAaC,GAAG;AAAChQ,yBAAA,MAAAC,aAAA2S,SAAA,cAA0EzK,kBAAkB9P,QAAQya,YAAY;AAAA,oBAAEvT,MAAMyQ;AAAAA,kBAAAA,CAAK,CAAC,CAAA;AAAAxP,qCAAAA;AAAA,yBAAAoS;AAAAA,gBAAA;AAAA,cAAA,CAAA,GAAAH,SAAAC,MAAA;AAAAlS,iCAAAA;AAAA,qBAAAqR;AAAAA,YAAA;AAAA,UAAA,CAAA,GAAAX,SAAAC,MAAA;AAAArS,iBAAAiS,SAAAvR,gBAMzLG,MAAI;AAAA,YAAA,IAACC,OAAI;AAAA,qBAAE2P,iBAAiBS;AAAAA,YAAG;AAAA,YAAA,IAAAnQ,WAAA;AAAA,kBAAAkT,UAAA7V,eAAA8V,QAAA;AAAAlU,qBAAAiU,SAAAvT,gBAE3BG,MAAI;AAAA,gBAAA,IAACC,OAAI;;AAAA,0BAAEiR,eAAAA,mBAAOoC;AAAAA,gBAAO;AAAA,gBAAA,IAAEtO,WAAQ;AAAA,0BAAA,MAAA;AAAA,wBAAAuO,UAAAhW,eAAAiW,QAAA,GAAAC,UAAAF,QAAA7V,YAAAgW,UAAAD,QAAA3V,aAAA6V,UAAAD,QAAA5V;AAAAyV,4BAAAK,iBAAA,UACjBlT,CAAAA,MAAM;AAAEA,wBAAEmT,eAAAA;AAAkBtD,gCAAUF,KAAKP,WAAW;AAAA,oBAAE,CAAC;AAAA2D,4BAAAK,UACvBpT,CAAAA,MAAMqP,aAAarP,EAAEqT,cAAcvD,KAAK;AAACrR,2BAAAuU,SAAA,MAEQhb,QAAQyE,EAAE;AAAAwW,4BAAAzU,UAC7E,MAAM2Q,cAAc,IAAI;AAAC1Q,2BAAAwU,SAAA,MAA+Djb,QAAQsb,MAAM;AAAA3T,2BAAA,MAAA;;AAAAC,0CAAAmT,SAAA,iBAH5BvC,eAAAA,mBAAO+C,gBAAe5D,GAAG;AAAA,qBAAA;AAAAhQ,iCAAA6T,YAAAT,SAAA,SAAxG3D,UAAAA,CAAW,CAAA;AAAAjP,uCAAAA;AAAA,2BAAA0S;AAAAA,kBAAA,GAAA;AAAA,gBAAA;AAAA,gBAAA,IAAArT,WAAA;AAAA,yBAAA,EAAA,MAAA;AAAA,wBAAAiU,UAAA5W,eAAA6W,QAAA;AAAAjV,2BAAAgV,SAAAtU,gBAOpCsC,KAAG;AAAA,sBAAA,IAACC,OAAI;AAAA,+BAAE8O,MAAMoC;AAAAA,sBAAkD;AAAA,sBAAApT,UAC/DmU,UAAG,MAAA;AAAA,4BAAAC,UAAA/W,eAAAgX,QAAA,GAAAC,UAAAF,QAAA5W,YAAA,CAAA+W,SAAAC,MAAA,IAAAxW,cAAAsW,QAAA1W,WAAA,GAAA6W,UAAAF,QAAA3W,aAAA,CAAA8W,SAAAC,MAAA,IAAA3W,cAAAyW,QAAA7W,WAAA;AAAAwW,gCAAApV,UAC4B,MAAMqR,UAAUF,KAAKgE,IAAI7D,KAAK;AAACrR,+BAAAmV,SAAA,MAI3DD,IAAIjR,OAAKqR,SAAAC,MAAA;AAAAvV,+BAAAmV,SAAAzU,gBACTG,MAAI;AAAA,0BAAA,IAACC,OAAI;AAAA,mCAAE2G,OAAO4J,OAAO,MAAM6D,IAAI7D;AAAAA,0BAAK;AAAA,0BAAA,IAAAtQ,WAAA;AAAA,mCAAA3C,eAAAuX,QAAA;AAAA,0BAAA;AAAA,wBAAA,CAAA,GAAAF,SAAAC,MAAA;AAAAxU,+BAAA,MAAAuD,UAAA0Q,SAJlC,2FACL1N,OAAO4J,OAAO,MAAM6D,IAAI7D,QAAQ,uEAAuE,+BAA+B,EACtI,CAAA;AAAA3P,2CAAAA;AAAA,+BAAAyT;AAAAA,sBAAA,GAAA;AAAA,oBAAA,CAIL,CAAA;AAAA,2BAAAH;AAAAA,kBAAA,GAAA,IAAA,MAAA;AAAA,wBAAAY,UAAAxX,eAAAyX,QAAA;AAAAD,4BAAA7V,UAG0B,MAAM2Q,cAAc,IAAI;AAAC1Q,2BAAA4V,SAAA,MAAuFrc,QAAQsb,MAAM;AAAAnT,uCAAAA;AAAA,2BAAAkU;AAAAA,kBAAA,IAAA;AAAA,gBAAA;AAAA,cAAA,CAAA,CAAA;AAAA,qBAAA3B;AAAAA,YAAA;AAAA,UAAA,CAAA,GAAA1B,SAAAC,MAAA;AAAA,iBAAAP;AAAAA,QAAA,GAAA;AAAA,MAMzK;AAAA,IAAA,CAAC,GAAAP,SAAAC,MAAA;AAAA3R,WAAAuR,SAAA7Q,gBAEFG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEgQ,QAAAA,EAAUhW,WAAW;AAAA,MAAC;AAAA,MAAA,IAAAiG,WAAA;AAAA,YAAA+U,UAAA1X,eAAA2X,QAAA;AAAA/V,eAAA8V,SAAA,MACSvc,QAAQyc,mBAAmB;AAAA,eAAAF;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAjE,SAAAC,MAAA;AAAA,WAAAP;AAAAA,EAAA,GAAA;AAI5E;AAIA,MAAMhE,sBAMAjU,CAAAA,UAAU;AACd,QAAMC,UAAUC,gBAAAA;AAChB,QAAM,CAACyc,gBAAgBC,iBAAiB,IAAIvc,aAAsE,CAAA,CAAE;AAEpH,QAAMwc,SAASA,MAAM;AACnB,UAAM5a,IAAIjC,MAAMkH;AAChB,WAAO;AAAA,MACL4V,SAAQ7a,uBAAG6a,WAAU,CAAA;AAAA,MACrBC,cAAa9a,uBAAG8a,gBAAe9c,QAAQ+c;AAAAA,MACvCC,iBAAiBhb,uBAAGgb;AAAAA,IAAAA;AAAAA,EAExB;AAGA,QAAMC,eAAeA,MAAM;AACzB,UAAMC,UAA+B,CAAA;AACrC,eAAWC,SAASP,OAAAA,EAASC,QAAQ;AACnCK,cAAQC,MAAMjW,IAAI,IAAIiW,MAAMC,WAAWD,MAAME,gBAAgB;AAAA,IAC/D;AACA,WAAOH;AAAAA,EACT;AAEA,QAAM,CAACI,UAAUC,WAAW,IAAInd,aAAkC6c,cAAc;AAGhFxa,eAAa,MAAM;AACjB,UAAMoa,SAASD,SAASC;AACxB,QAAIA,OAAOtb,SAAS,GAAG;AACrBgc,kBAAaC,CAAAA,SAAS;AACpB,cAAM5F,OAAO;AAAA,UAAE,GAAG4F;AAAAA,QAAAA;AAClB,mBAAWL,SAASN,QAAQ;AAE1B,cAAIM,MAAMC,WAAW,SAASxF,KAAKuF,MAAMjW,IAAI,MAAM3G,UAAaqX,KAAKuF,MAAMjW,IAAI,MAAM,KAAK;AACxF0Q,iBAAKuF,MAAMjW,IAAI,IAAIiW,MAAMC;AAAAA,UAC3B;AAAA,QACF;AACA,eAAOxF;AAAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAGD,QAAM,CAAC6F,WAAWC,YAAY,IAAItd,aAA4B,IAAI;AAClE,MAAIud,iBAAwD;AAC5D,QAAM,CAACC,gBAAgBC,iBAAiB,IAAIzd,aAAa,KAAK;AAE9D,QAAM0d,kBAAkBA,MAAM;AAC5B,QAAIH,gBAAgB;AAAEI,oBAAcJ,cAAc;AAAGA,uBAAiB;AAAA,IAAK;AAC3ED,iBAAa,IAAI;AAAA,EACnB;AAEA/Z,YAAU,MAAMma,iBAAiB;AAEjCrb,eAAa,MAAM;AACjB,UAAMub,QAAQpB,SAASI;AACvB,QAAI,CAACgB,SAASJ,iBAAkB;AAChC,UAAMK,uBAAuBrB,OAAAA,EAASC,OACnCqB,OAAO,CAACC,MAAWA,EAAEC,QAAQ,EAC7BC,MAAM,CAACF,MAAWA,EAAEf,WAAW,IAAI;AACtC,QAAI,CAACa,qBAAsB;AAE3B,QAAIK,YAAYC,KAAKC,KAAKR,QAAQ,GAAI;AACtCN,iBAAaY,SAAS;AACtBX,qBAAiBc,YAAY,MAAM;AACjCH;AACA,UAAIA,aAAa,GAAG;AAClBR,wBAAAA;AACA,cAAMY,OAAOC,SAASC,cAAc,oBAAoB7e,MAAMkU,SAAS,EAAE;AACzE,YAAIyK,WAAWG,cAAAA;AAAAA,MACjB,OAAO;AACLnB,qBAAaY,SAAS;AAAA,MACxB;AAAA,IACF,GAAG,GAAI;AAAA,EACT,CAAC;AAED,QAAMQ,cAAcA,CAAC5X,MAAc4Q,UAAe;AAChD,QAAI,CAAC8F,kBAAkB;AAAEC,wBAAkB,IAAI;AAAGC,sBAAAA;AAAAA,IAAkB;AACpEP,gBAAYC,CAAAA,UAAS;AAAA,MAAE,GAAGA;AAAAA,MAAM,CAACtW,IAAI,GAAG4Q;AAAAA,IAAAA,EAAQ;AAAA,EAClD;AAGArV,eAAa,MAAM;AACjB,UAAMX,OAAOwb,SAAAA;AACb,eAAWH,SAASP,OAAAA,EAASC,QAAQ;AACnC,YAAMkC,MAAM5B,MAAM6B,cAAc7B,MAAM8B;AACtC,UAAI,CAACF,IAAK;AACV,YAAMG,cAAcpd,KAAKid,IAAI5B,KAAK;AAClC,UAAI,CAAC+B,YAAa;AAClB,YAAMC,OAAOJ,IAAIK,oBAAoBL,IAAIM,UAAU,IAAIC,QAAQ,WAAWC,mBAAmBL,WAAW,CAAC;AACzG,UAAI,CAACC,IAAK;AACV,YAAMpK,SAAS,IAAIyK,gBAAgBT,IAAIU,eAAeV,IAAIW,gBAAgB,EAAE;AAC5E1b,YAAM,GAAGmb,GAAG,GAAGA,IAAIxc,SAAS,GAAG,IAAI,MAAM,GAAG,GAAGoS,MAAM,EAAE,EACpD4K,KAAKC,CAAAA,MAAKA,EAAElb,MAAM,EAClBib,KAAKE,CAAAA,UAAS;AACb,cAAMC,MAAM9I,MAAMC,QAAQ4I,KAAK,IAAIA,QAAQA,MAAME,WAAWF,MAAMG,YAAY,CAAA;AAC9E,cAAMC,KAAKlB,IAAImB,eAAenB,IAAIoB,cAAc;AAChD,cAAMC,KAAKrB,IAAIsB,eAAetB,IAAIuB,cAAc;AAChD3D,0BAAkBa,CAAAA,UAAS;AAAA,UAAE,GAAGA;AAAAA,UAAM,CAACL,MAAMjW,IAAI,GAAG4Y,IAAIS,IAAI,CAAC5W,OAAY;AAAA,YAAEe,OAAOf,EAAEsW,EAAE,KAAK/R,OAAOvE,CAAC;AAAA,YAAGmO,OAAO5J,OAAOvE,EAAEyW,EAAE,KAAKzW,EAAEsW,EAAE,KAAKtW,CAAC;AAAA,UAAA,EAAI;AAAA,QAAA,EAAI;AAAA,MACjJ,CAAC,EACA6W,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACnB;AAAA,EACF,CAAC;AAED,QAAMC,WAAWA,CAACtD,UAAgC;AAChD,UAAMuD,UAAUhE,iBAAiBS,MAAMjW,IAAI;AAC3C,WAAOwZ,UAAU;AAAA,MAAE,GAAGvD;AAAAA,MAAOvC,SAAS8F;AAAAA,IAAAA,IAA+BvD;AAAAA,EACvE;AAGA,QAAM,CAACwD,iBAAiBC,kBAAkB,IAAIxgB,aAAyC,IAAI;AAE3F,QAAMygB,eAAeA,CAAC7Y,MAAa;;AACjCA,MAAEmT,eAAAA;AAGF,UAAMrN,SAAS1M,OAAO0f,YACpB1f,OAAOiV,QAAQiH,SAAAA,CAAU,EACtBY,OAAO,CAAC,CAACvG,GAAG,MAAM;AACjB,YAAMwF,QAAQP,SAASC,OAAOjW,KAAK,CAACuX,MAAWA,EAAEjX,SAASyQ,GAAG;AAC7D,cAAOwF,+BAAO4D,iBAAgB;AAAA,IAChC,CAAC,EACA7C,OAAO,CAAC,CAAA,EAAGnQ,CAAC,MAAMA,MAAMxN,UAAawN,MAAM,MAAM,EAAEiJ,MAAMC,QAAQlJ,CAAC,KAAKA,EAAExM,WAAW,EAAE,CAC3F;AAEAqf,uBAAmB9S,MAAM;AAGzB7L,YAAQK,KAAK,uCAAuCvC,MAAMkU,SAAS,WAAW7S,OAAOC,KAAKyM,MAAM,EAAEjL,KAAK,GAAG,CAAC,IAAI,qCAAqC,gBAAgB;AAEpK,QAAI9C,MAAMwL,UAAU;AAClBxL,YAAMwL,SAASxL,MAAMkU,WAAWnG,MAAM;AAAA,IACxC,OAAO;AACL/N,kBAAMuD,aAANvD,+BAAiB,eAAe;AAAA,QAAEkU,WAAWlU,MAAMkU;AAAAA,QAAWnG;AAAAA,MAAAA;AAAAA,IAChE;AAAA,EACF;AAGA,QAAMkT,iBAAiBA,MAAM;AAC3B,UAAMnE,SAASD,SAASC;AACxB,UAAMoE,QAAQpE,OAAOtb;AACrB,UAAM2f,YAAYrE,OAAOqB,OAAO,CAACC,MAAWA,EAAEf,WAAW,IAAI,EAAE7b;AAC/D,WAAO;AAAA,MAAE0f;AAAAA,MAAOC;AAAAA,IAAAA;AAAAA,EAClB;AAGA,QAAM,CAACC,UAAUC,WAAW,IAAIhhB,aAAa,KAAK;AAClD,QAAMihB,qBAAqBA,MAAM;AAC/B,UAAMxE,SAASD,SAASC;AACxB,WAAOA,OAAOtb,SAAS,KAAKsb,OAAOwB,MAAM,CAACF,MAAWA,EAAEf,WAAW,IAAI;AAAA,EACxE;AACA,QAAMkE,YAAYA,MAAMD,mBAAAA,KAAwB,CAACzD,eAAAA,KAAoB,CAACuD,SAAAA,KAAc1D,UAAAA,KAAe;AAEnG,SAAA,CAAAtW,gBAEGG,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAE,CAAC+Z,UAAAA;AAAAA,IAAW;AAAA,IAAA,IAAEhV,WAAQ;AAAA,cAAA,MAAA;AAAA,YAAAiV,UAAA1c,eAAA2c,QAAA,GAAAC,UAAAF,QAAAvc,YAAA0c,UAAAD,QAAArc,aAAAuc,UAAAD,QAAA1c,YAAA,CAAA4c,SAAAC,MAAA,IAAArc,cAAAmc,QAAAvc,WAAA;AAAAwc,gBAAAxc;AAAAA,YAAA0c,UAAAJ,QAAAtc,aAAA2c,UAAAD,QAAA1c;AAAAqB,eAAAgb,SAAA,MAG3B7E,OAAAA,EAASC,OAAO0D,IAAI,CAACpC,MAAWA,EAAE6D,eAAe7D,EAAEf,OAAO,EAAEva,KAAK,IAAI,CAAC;AAAA4D,eAAAib,SAEzBjE,WAASmE,SAAAC,MAAA;AAAAC,gBAAAtb,UAC1B,MAAM;AAAE4a,sBAAY,IAAI;AAAGtD,0BAAAA;AAAmBD,4BAAkB,IAAI;AAAA,QAAE;AAACpX,eAAAqb,SAAA,MACxC9hB,QAAQiiB,cAAc;AAAAF,gBAAAvb,UACrD,MAAM;AAAEsX,0BAAAA;AAAmBD,4BAAkB,IAAI;AAAA,QAAE;AAAC1V,2BAAAA;AAAA,eAAAoZ;AAAAA,MAAA,GAAA;AAAA,IAAA;AAAA,IAAA,IAAA/Z,WAAA;AAAA,UAAA0a,UAAArd,eAAAsd,QAAA,GAAAC,UAAAF,QAAAld,YAAA,CAAAqd,SAAAC,MAAA,IAAA9c,cAAA4c,QAAAhd,WAAA,GAAAmd,UAAAF,QAAAjd,aAAA,CAAAod,SAAAC,MAAA,IAAAjd,cAAA+c,QAAAnd,WAAA,GAAAsd,UAAAF,QAAApd,aAAA,CAAAud,SAAAC,MAAA,IAAApd,cAAAkd,QAAAtd,WAAA,GAAAyd,UAAAF,QAAAvd,aAAA0d,UAAAD,QAAA7d;AAAAkd,cAAAhH,iBAAA,UAI7B2F,YAAY;AAAApa,aAAAyb,SAAA/a,gBAEnEG,MAAI;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAEyZ,eAAAA,EAAiBE,YAAY;AAAA,QAAC;AAAA,QAAA,IAAA1Z,WAAA;AAAA,cAAAub,UAAAle,eAAAme,QAAA;AAAAvc,iBAAAsc,SAAA,MAErCjT,kBACCkR,eAAAA,EAAiBE,cAAc,IAAIlhB,QAAQijB,mBAAmBjjB,QAAQkjB,mBACtE;AAAA,YAAE7W,OAAO2U,iBAAiBE;AAAAA,YAAWD,OAAOD,iBAAiBC;AAAAA,UAAAA,CAC/D,CAAC;AAAA,iBAAA8B;AAAAA,QAAA;AAAA,MAAA,CAAA,GAAAV,SAAAC,MAAA;AAAA7b,aAAAyb,SAAA/a,gBAGJsC,KAAG;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAEkT,SAASC;AAAAA,QAAM;AAAA,QAAArV,UACtB2V,CAAAA,UAAKhW,gBACJgc,mBAAiB;AAAA,UAAA,IAChBhG,QAAK;AAAA,mBAAEsD,SAAStD,KAAK;AAAA,UAAC;AAAA,UAAA,IACtBrF,QAAK;AAAA,mBAAEwF,SAAAA,EAAWH,MAAMjW,IAAI;AAAA,UAAC;AAAA,UAC7Bkc,UAAWC,CAAAA,QAAQvE,YAAY3B,MAAMjW,MAAMmc,GAAG;AAAA,UAC9C/F;AAAAA,QAAAA,CAAkB;AAAA,MAAA,CAErB,GAAAkF,SAAAC,MAAA;AAAAhc,aAAAyb,SAAA/a,gBAEFG,MAAI;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAEkW,eAAe;AAAA,QAAI;AAAA,QAAA,IAAAjW,WAAA;AAAA,cAAA8b,UAAAze,eAAA0e,QAAA,GAAAC,UAAAF,QAAAte,YAAAye,UAAAD,QAAApe;AAAAqB,iBAAA+c,SAAA,MAGxB1T,kBAAkB9P,QAAQ0jB,qBAAqB;AAAA,YAC9ChZ,OAAOkS,SAASE;AAAAA,YAChB6G,SAASlG,UAAAA;AAAAA,UAAU,CACpB,CAAC;AAAAgG,kBAAAjd,UAIO,MAAM;AAAEsX,4BAAAA;AAAmBD,8BAAkB,IAAI;AAAA,UAAE;AAACpX,iBAAAgd,SAAA,MAG5DzjB,QAAQsb,MAAM;AAAAnT,6BAAAA;AAAA,iBAAAmb;AAAAA,QAAA;AAAA,MAAA,CAAA,GAAAX,SAAAC,MAAA;AAAAnc,aAAAqc,SAAA,MAMhBlG,OAAAA,EAASE,WAAW;AAAAnV,aAAA,MAAAC,aAAAsa,eAvCjB,mBAAmBniB,MAAMkU,SAAS,EAAE,CAAA;AAAA,aAAAiO;AAAAA,IAAA;AAAA,EAAA,CAAA,GAAA/a,gBA8C7CG,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAExH,MAAMyL;AAAAA,IAAU;AAAA,IAAA,IAAAhE,WAAA;AAAA,aAAAL,gBACzByc,gBAAc;AAAA,QAAA,IACb/G,SAAM;AAAA,iBAAED,SAASC;AAAAA,QAAM;AAAA,QAAA,IACvBS,WAAQ;AAAA,iBAAEA,SAAAA;AAAAA,QAAU;AAAA,QAAA,IACpBqD,kBAAe;AAAA,iBAAEA,gBAAAA;AAAAA,QAAiB;AAAA,QAAA,IAClC3D,kBAAe;AAAA,iBAAEJ,SAASI;AAAAA,QAAe;AAAA,QAAA,IACzCY,iBAAc;AAAA,iBAAEA,eAAAA;AAAAA,QAAgB;AAAA,QAAA,IAChCiG,aAAU;AAAA,iBAAE9jB,MAAMkH;AAAAA,QAAO;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA,CAAA;AAKjC;AAIA,MAAM2c,iBAOA7jB,CAAAA,UAAU;AACd,QAAMC,UAAUC,gBAAAA;AAChB,QAAM,CAAC6jB,MAAMC,OAAO,IAAI3jB,aAAa,KAAK;AAC1C,QAAM,CAAC4jB,SAASC,UAAU,IAAI7jB,aAAa,KAAK;AAEhD,QAAM8jB,iBAAiBA,MAAMnkB,MAAM8c,OAAOqB,OAAO,CAACC,MAAWA,EAAEf,WAAW,IAAI,EAAE7b;AAChF,QAAM4iB,iBAAiBA,MAAMpkB,MAAM8c,OAAOqB,OAAO,CAACC,MAAWA,EAAEC,QAAQ;AACvE,QAAMgG,kBAAkBA,MAAMD,iBAAiBjG,OAAO,CAACC,MAAWA,EAAEf,WAAW,IAAI;AAEnF,QAAMiH,mBAAmBA,MAAM;AAC7B,QAAI,CAACtkB,MAAMid,gBAAiB,QAAO;AACnC,QAAIoH,gBAAAA,EAAkB7iB,SAAS,UAAU,GAAG6iB,gBAAAA,EAAkB7iB,MAAM;AACpE,QAAIxB,MAAM6d,eAAgB,QAAO;AACjC,WAAO;AAAA,EACT;AAGA,QAAM0G,cAAcA,MAAAA;;AAAOvkB,uBAAM8jB,eAAN9jB,mBAA0BwkB;AAAAA;AAErD,UAAA,MAAA;AAAA,QAAAC,UAAA3f,eAAA4f,QAAA,GAAAC,UAAAF,QAAAxf,YAAA2f,UAAAD,QAAA1f,YAAA4f,UAAAD,QAAAvf,aAAAyf,UAAAD,QAAAxf,aAAA,CAAA0f,SAAAC,MAAA,IAAAvf,cAAAqf,QAAAzf,WAAA,GAAA4f,UAAAF,QAAA1f,aAAA6f,UAAAD,QAAA5f,aAAA,CAAA8f,SAAAC,MAAA,IAAA3f,cAAAyf,QAAA7f,WAAA;AAAA8f,YAAA9f;AAAAA,QAAAggB,UAAAV,QAAAtf,aAAA,CAAAigB,SAAAC,MAAA,IAAA9f,cAAA4f,QAAAhgB,WAAA;AAAAsf,YAAAle,UAIe,MAAMud,QAAQ,CAACD,MAAM;AAACrd,WAAAke,SAAA,MAGxBb,KAAAA,IAAS,MAAW,GAAQ;AAAArd,WAAAie,SACrBR,gBAAcY,SAAAC,MAAA;AAAAte,WAAAie,SAAA,MAAK3kB,MAAM8c,OAAOtb,QAAM2jB,SAAAC,MAAA;AAAA1e,WAAA+d,SAAArd,gBAErDG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEuc,KAAAA;AAAAA,MAAM;AAAA,MAAA,IAAAtc,WAAA;AAAA,YAAA+d,UAAA1gB,eAAA2gB,QAAA,GAAAC,UAAAF,QAAAvgB,YAAA0gB,UAAAD,QAAAzgB,YAAA2gB,UAAAD,QAAAtgB,aAAA,CAAAwgB,SAAAC,MAAA,IAAArgB,cAAAmgB,QAAAvgB,WAAA,GAAA0gB,UAAAF,QAAAxgB,aAAA2gB,UAAAD,QAAA1gB,aAAA,CAAA4gB,SAAAC,MAAA,IAAAzgB,cAAAugB,QAAA3gB,WAAA;AAAA4gB,gBAAA5gB;AAAAA,YAAA8gB,UAAAT,QAAArgB,aAAA,CAAA+gB,SAAAC,MAAA,IAAA5gB,cAAA0gB,QAAA9gB,WAAA,GAAAihB,UAAAF,QAAA/gB,aAAAkhB,UAAAD,QAAArhB,YAAAuhB,UAAAD,QAAAlhB,aAAA,CAAAohB,SAAAC,MAAA,IAAAjhB,cAAA+gB,QAAAnhB,WAAA,GAAAshB,UAAAF,QAAAphB,aAAA,CAAAuhB,SAAAC,MAAA,IAAAphB,cAAAkhB,QAAAthB,WAAA,GAAAyhB,UAAAF,QAAAvhB,aAAA0hB,UAAAD,QAAA7hB,YAAA+hB,UAAAD,QAAA1hB,aAAA,CAAA4hB,SAAAC,MAAA,IAAAzhB,cAAAuhB,QAAA3hB,WAAA,GAAA8hB,UAAAb,QAAAjhB,aAAA,CAAA+hB,SAAAC,MAAA,IAAA5hB,cAAA0hB,QAAA9hB,WAAA,GAAAiiB,UAAAF,QAAA/hB,aAAAkiB,UAAAD,QAAAriB,YAAAuiB,UAAAD,QAAAliB,aAAA,CAAAoiB,SAAAC,MAAA,IAAAjiB,cAAA+hB,QAAAniB,WAAA;AAAAqB,eAAAgf,SAAA,MAEA1lB,MAAM8c,OAAOtb,QAAMqkB,SAAAC,MAAA;AAAApf,eAAAgf,SAAUvB,gBAAc8B,SAAAC,MAAA;AAAAxf,eAAA8e,SAAApe,gBAExDsC,KAAG;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAE3J,MAAM8c;AAAAA,UAAM;AAAA,UAAArV,UACpBA,CAAC2V,WAAU,MAAA;AAAA,gBAAAuK,UAAA7iB,eAAA8iB,QAAA,GAAAC,UAAAF,QAAA1iB,YAAA6iB,UAAAD,QAAA5iB,YAAA,CAAA8iB,SAAAC,MAAA,IAAAviB,cAAAqiB,QAAAziB,WAAA;AAAA0iB,oBAAA1iB;AAAAA,gBAAA4iB,UAAAJ,QAAAxiB,aAAA,CAAA6iB,SAAAC,MAAA,IAAA1iB,cAAAwiB,QAAA5iB,WAAA,GAAA+iB,UAAAF,QAAA7iB,aAAA,CAAAgjB,SAAAC,MAAA,IAAA7iB,cAAA2iB,QAAA/iB,WAAA,GAAAkjB,UAAAF,QAAAhjB,aAAA,CAAAmjB,SAAAC,MAAA,IAAAhjB,cAAA8iB,QAAAljB,WAAA,GAAAqjB,UAAAF,QAAAnjB,aAAA,CAAAsjB,SAAAC,MAAA,IAAAnjB,cAAAijB,QAAArjB,WAAA,GAAAwjB,UAAAF,QAAAtjB,aAAA,CAAAyjB,SAAAC,MAAA,IAAAtjB,cAAAojB,QAAAxjB,WAAA,GAAA2jB,UAAAF,QAAAzjB,aAAA,CAAA4jB,SAAAC,MAAA,IAAAzjB,cAAAujB,QAAA3jB,WAAA,GAAA8jB,UAAAF,QAAA5jB,aAAA,CAAA+jB,SAAAC,MAAA,IAAA5jB,cAAA0jB,QAAA9jB,WAAA,GAAAikB,UAAAF,QAAA/jB,aAAA,CAAAkkB,SAAAC,MAAA,IAAA/jB,cAAA6jB,QAAAjkB,WAAA;AAAAqB,mBAAAmhB,SAAA,MAEmDzK,MAAMjW,MAAI4gB,SAAAC,MAAA;AAAAthB,mBAAAihB,SAAAvgB,gBACpEG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE4V,MAAMC,WAAW;AAAA,cAAI;AAAA,cAAA,IAAA5V,WAAA;AAAA,oBAAAgiB,UAAA3kB,eAAA4kB,QAAA,GAAAC,UAAAF,QAAAxkB,YAAA2kB,UAAAD,QAAAtkB,aAAA,CAAAwkB,SAAAC,MAAA,IAAArkB,cAAAmkB,QAAAvkB,WAAA;AAAAqB,uBAAA+iB,SAAA,MACdjlB,KAAKC,UAAU2Y,MAAMC,OAAO,GAACwM,SAAAC,MAAA;AAAA,uBAAAL;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAvB,SAAAC,MAAA;AAAAzhB,mBAAAihB,SAAAvgB,gBAE/CG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE,CAAC4V,MAAMC;AAAAA,cAAO;AAAA,cAAA,IAAA5V,WAAA;AAAA,uBAAA3C,eAAAilB,QAAA;AAAA,cAAA;AAAA,YAAA,CAAA,GAAA1B,SAAAC,MAAA;AAAA5hB,mBAAAihB,SAAAvgB,gBAGzBG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE4V,MAAM4M;AAAAA,cAAM;AAAA,cAAA,IAAAviB,WAAA;AAAA,oBAAAwiB,UAAAnlB,eAAAolB,QAAA,GAAAC,UAAAF,QAAAhlB,YAAAmlB,UAAAD,QAAA9kB,aAAA,CAAAglB,SAAAC,MAAA,IAAA7kB,cAAA2kB,QAAA/kB,WAAA;AAAAqB,uBAAAujB,SAAA,MAAkB7M,MAAM4M,QAAMK,SAAAC,MAAA;AAAA,uBAAAL;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAzB,SAAAC,MAAA;AAAA/hB,mBAAAihB,SAAAvgB,gBACrDG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE4V,MAAM6E;AAAAA,cAAW;AAAA,cAAA,IAAAxa,WAAA;AAAA,oBAAA8iB,UAAAzlB,eAAA0lB,QAAA,GAAAC,UAAAF,QAAAtlB,YAAAylB,UAAAD,QAAAplB,aAAA,CAAAslB,SAAAC,MAAA,IAAAnlB,cAAAilB,QAAArlB,WAAA;AAAAslB,wBAAAtlB;AAAAqB,uBAAA6jB,SAAA,MAAwBnN,MAAM6E,aAAW0I,SAAAC,MAAA;AAAA,uBAAAL;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAA5B,SAAAC,MAAA;AAAAliB,mBAAAihB,SAAAvgB,gBACrEG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE4V,MAAMyN;AAAAA,cAAK;AAAA,cAAA,IAAApjB,WAAA;AAAA,uBAAA3C,eAAAgmB,QAAA;AAAA,cAAA;AAAA,YAAA,CAAA,GAAAhC,SAAAC,MAAA;AAAAriB,mBAAAihB,SAAAvgB,gBACtBG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE4V,MAAM2N;AAAAA,cAAW;AAAA,cAAA,IAAAtjB,WAAA;AAAA,oBAAAujB,UAAAlmB,eAAAmmB,QAAA,GAAAC,UAAAF,QAAA/lB,YAAAkmB,UAAAD,QAAA7lB,aAAA,CAAA+lB,SAAAC,MAAA,IAAA5lB,cAAA0lB,QAAA9lB,WAAA;AAAAqB,uBAAAskB,SAAA,MAAuB5N,MAAM2N,aAAWK,SAAAC,MAAA;AAAA,uBAAAL;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAA/B,SAAAC,MAAA;AAAAxiB,mBAAAihB,SAAAvgB,gBACpEG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE4V,MAAMkO;AAAAA,cAAW;AAAA,cAAA,IAAA7jB,WAAA;AAAA,oBAAA8jB,UAAAzmB,eAAA0mB,QAAA,GAAAC,UAAAF,QAAAtmB,YAAAymB,UAAAD,QAAApmB,aAAA,CAAAsmB,SAAAC,MAAA,IAAAnmB,cAAAimB,QAAArmB,WAAA;AAAAsmB,wBAAAtmB;AAAAqB,uBAAA6kB,SAAA,MAAwBnO,MAAMkO,aAAWK,SAAAC,MAAA;AAAA,uBAAAL;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAnC,SAAAC,MAAA;AAAA3iB,mBAAAihB,SAAAvgB,gBACrEG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAExH,MAAM4gB;AAAAA,cAAe;AAAA,cAAA,IAAAnZ,WAAA;AAAA,wBAC7B,MAAM;AACN,wBAAMuG,IAAIhO,MAAM4gB,gBAAiBxD,MAAMjW,IAAI;AAC3C,wBAAMuR,WAAW1K,MAAMxN,UAAawN,MAAM,MAAM,EAAEiJ,MAAMC,QAAQlJ,CAAC,KAAKA,EAAExM,WAAW;AACnF,0BAAA,MAAA;AAAA,wBAAAqqB,UAAA/mB,eAAAgnB,QAAA,GAAAC,UAAAF,QAAA5mB,YAAA+mB,UAAAD,QAAA1mB,aAAA,CAAA4mB,SAAAC,MAAA,IAAAzmB,cAAAumB,QAAA3mB,WAAA;AAAA8F,8BAAA0gB,SACcnT,WAAW,uCAAuC,eAAe;AAAAhS,2BAAAmlB,SAAA,MACpDnT,WAAW,GAAGlU,KAAKC,UAAUuJ,CAAC,CAAC,OAAY,WAASie,SAAAC,MAAA;AAAA,2BAAAL;AAAAA,kBAAA,GAAA;AAAA,gBAGjF,GAAA;AAAA,cAAI;AAAA,YAAA,CAAA,GAAAtC,SAAAC,MAAA;AAAA,mBAAA7B;AAAAA,UAAA,GAAA;AAAA,QAAA,CAGT,GAAAvB,SAAAC,MAAA;AAAA3f,eAAA4f,SAAA,MAIYtmB,MAAMid,kBAAkB,SAAS,SAAOwJ,SAAAC,MAAA;AAAAhgB,eAAA4f,UAAA,MAAA;AAAA,cAAA6F,OAAArkB,KAAA,MAAA,CAAA,CACpD9H,MAAMid,eAAe;AAAA,iBAAA,MAArBkP,KAAAA,IAAwB,KAAKnsB,MAAMid,eAAe,QAAQ;AAAA,QAAE,GAAA,GAAA2J,SAAAC,MAAA;AAAAngB,eAAAogB,SAC7CxC,kBAAgB2C,SAAAC,MAAA;AAAAxgB,eAAA8e,SAAApe,gBAGjCG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAE+c,YAAAA;AAAAA,UAAa;AAAA,UAAA,IAAA9c,WAAA;AAAA,gBAAA2kB,UAAAtnB,eAAAunB,QAAA,GAAAC,UAAAF,QAAAnnB,YAAAsnB,UAAAD,QAAAjnB,aAAA,CAAAmnB,SAAAC,MAAA,IAAAhnB,cAAA8mB,QAAAlnB,WAAA,GAAAqnB,UAAAF,QAAAnnB,aAAA,CAAAsnB,SAAAC,MAAA,IAAAnnB,cAAAinB,QAAArnB,WAAA,GAAAwnB,UAAAF,QAAAtnB,aAAA,CAAAynB,SAAAC,MAAA,IAAAtnB,cAAAonB,QAAAxnB,WAAA;AAAAqB,mBAAA0lB,SAAAhlB,gBAGpBG,MAAI;AAAA,cAAA,IAACC,OAAI;;AAAA,wBAAE+c,uBAAAA,mBAAeyI;AAAAA,cAAS;AAAA,cAAA,IAAAvlB,WAAA;AAAA,uBAAAL,gBACjCsC,KAAG;AAAA,kBAAA,IAACC,OAAI;AAAA,2BAAE4a,cAAcyI;AAAAA,kBAAS;AAAA,kBAAAvlB,UAC/BA,CAACoY,OAAM,MAAA;AAAA,wBAAAoN,UAAAnoB,eAAAooB,QAAA,GAAAC,UAAAF,QAAAhoB,YAAA,CAAAmoB,SAAAC,MAAA,IAAA5nB,cAAA0nB,QAAA9nB,WAAA,GAAAioB,UAAAF,QAAA/nB,aAAAkoB,UAAAD,QAAAjoB,aAAA,CAAAmoB,SAAAC,MAAA,IAAAhoB,cAAA8nB,QAAAloB,WAAA,GAAAqoB,UAAAF,QAAAnoB,aAAAsoB,UAAAD,QAAAroB,aAAA,CAAAuoB,SAAAC,MAAA,IAAApoB,cAAAkoB,QAAAtoB,WAAA,GAAAyoB,UAAAF,QAAAvoB,aAAA0oB,UAAAD,QAAAzoB,aAAA,CAAA2oB,SAAAC,MAAA,IAAAxoB,cAAAsoB,QAAA1oB,WAAA,GAAA6oB,UAAAF,QAAA3oB,aAAA8oB,UAAAD,QAAA7oB,aAAA,CAAA+oB,SAAAC,MAAA,IAAA5oB,cAAA0oB,QAAA9oB,WAAA;AAAA+oB,4BAAA/oB;AAAAqB,2BAAAumB,SAAA,MAEHpN,EAAEzC,OAAKgQ,SAAAC,MAAA;AAAA3mB,2BAAAumB,SAAA,MAAIpN,EAAEyO,UAAQd,SAAAC,MAAA;AAAA/mB,2BAAAumB,SAAA,MAAIpN,EAAE0O,OAAKX,SAAAC,MAAA;AAAAnnB,2BAAAumB,SAAA,MAAgBpN,EAAE2O,QAAMR,SAAAC,MAAA;AAAAvnB,2BAAAumB,SAAA,MAAKpN,EAAE4O,IAAEL,SAAAC,MAAA;AAAA,2BAAApB;AAAAA,kBAAA,GAAA;AAAA,gBAAA,CAErE;AAAA,cAAA;AAAA,YAAA,CAAA,GAAAT,SAAAC,MAAA;AAAA/lB,mBAAA0lB,SAAAhlB,gBAGJG,MAAI;AAAA,cAAA,IAACC,OAAI;;AAAA,wBAAE+c,uBAAAA,mBAAemK;AAAAA,cAAO;AAAA,cAAA,IAAAjnB,WAAA;AAAA,oBAAAknB,UAAA7pB,eAAA8pB,QAAA,GAAAC,UAAAF,QAAA1pB,YAAA6pB,UAAAD,QAAAxpB,aAAA,CAAA0pB,SAAAC,MAAA,IAAAvpB,cAAAqpB,QAAAzpB,WAAA,GAAA4pB,UAAAF,QAAA1pB,aAAA6pB,UAAAD,QAAA5pB,aAAA,CAAA8pB,SAAAC,MAAA,IAAA3pB,cAAAypB,QAAA7pB,WAAA,GAAAgqB,UAAAF,QAAA9pB,aAAAiqB,UAAAD,QAAAhqB,aAAA,CAAAkqB,SAAAC,MAAA,IAAA/pB,cAAA6pB,QAAAjqB,WAAA;AAAAkqB,wBAAAlqB;AAAAqB,uBAAAioB,SAAA,MACJpK,YAAAA,EAAcmK,QAAQe,OAAKV,SAAAC,MAAA;AAAAtoB,uBAAAioB,SAAA,MAAOpK,YAAAA,EAAcmK,QAAQxqB,QAAMirB,SAAAC,MAAA;AAAA1oB,uBAAAioB,SAAA,MAAIpK,YAAAA,EAAcmK,QAAQD,IAAEc,SAAAC,MAAA;AAAA,uBAAAb;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAhC,SAAAC,MAAA;AAAAlmB,mBAAA0lB,SAAAhlB,gBAEvHG,MAAI;AAAA,cAAA,IAACC,OAAI;;AAAA,wBAAE+c,uBAAAA,mBAAemL;AAAAA,cAAa;AAAA,cAAA,IAAAjoB,WAAA;AAAA,oBAAAkoB,UAAA7qB,eAAA8qB,QAAA,GAAAC,UAAAF,QAAA1qB,YAAA6qB,UAAAD,QAAAxqB,aAAA,CAAA0qB,SAAAC,MAAA,IAAAvqB,cAAAqqB,QAAAzqB,WAAA;AAAAqB,uBAAAipB,SAAA,MACKpL,cAAcmL,cAAc5sB,KAAK,IAAI,GAACitB,SAAAC,MAAA;AAAA,uBAAAL;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAA7C,SAAAC,MAAA;AAAA,mBAAAX;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAhF,SAAAC,MAAA;AAAAE,gBAAA9gB,UAMtD,MAAMyd,WAAW,CAACD,SAAS;AAACvd,eAAA6gB,UAAA,MAAA;AAAA,cAAA0I,OAAAnoB,KAAA,MAAA,CAAA,CACxDmc,SAAS;AAAA,iBAAA,MAATgM,KAAAA,IAAYhwB,QAAQiwB,oBAAoBjwB,QAAQkwB;AAAAA,QAAiB,IAAA;AAAAzpB,eAAA4gB,SAAAlgB,gBAEnEG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEyc,QAAAA;AAAAA,UAAS;AAAA,UAAA,IAAAxc,WAAA;AAAA,gBAAA2oB,UAAAtrB,eAAAurB,QAAA;AAAA3pB,mBAAA0pB,SAAA,MAEhB5rB,KAAKC,UAAUzE,MAAM8jB,YAAY,MAAM,CAAC,CAAC;AAAA,mBAAAsM;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAA3I,SAAAC,MAAA;AAAAtf,2BAAAA;AAAA,eAAAod;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAF,SAAAC,MAAA;AAAAnd,uBAAAA;AAAA,WAAAqc;AAAAA,EAAA,GAAA;AAQ1D;AAIA,MAAMzQ,uBAIAhU,CAAAA,UAAU;AACd,QAAMC,UAAUC,gBAAAA;AAChB,QAAMowB,YAAYA,MAAM;AACtB,UAAMruB,IAAIjC,MAAMkH;AAChB,WAAO;AAAA,MAAEqpB,QAAOtuB,uBAAGsuB,UAAS,CAAA;AAAA,MAAIC,cAAavuB,uBAAGuuB,gBAAe;AAAA,IAAA;AAAA,EACjE;AAEA,UAAA,MAAA;AAAA,QAAAC,UAAA3rB,eAAA4rB,QAAA,GAAAC,UAAAF,QAAAxrB,YAAA,CAAA2rB,SAAAC,MAAA,IAAAprB,cAAAkrB,QAAAtrB,WAAA,GAAAyrB,UAAAF,QAAAvrB,aAAA,CAAA0rB,SAAAC,MAAA,IAAAvrB,cAAAqrB,QAAAzrB,WAAA;AAAAqB,WAAA+pB,SAAArpB,gBAEKsC,KAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE2mB,YAAYC;AAAAA,MAAK;AAAA,MAAA9oB,UACzBA,CAACwpB,UAAS,MAAA;AAAA,YAAAC,UAAApsB,eAAAqsB,QAAA,GAAAC,UAAAF,QAAAjsB,YAAAosB,UAAAD,QAAAnsB,YAAAqsB,UAAAD,QAAAhsB,aAAA,CAAAksB,SAAAC,MAAA,IAAA/rB,cAAA6rB,QAAAjsB,WAAA,GAAAosB,UAAAF,QAAAlsB,aAAA,CAAAqsB,SAAAC,MAAA,IAAAlsB,cAAAgsB,QAAApsB,WAAA,GAAAusB,UAAAR,QAAA/rB,aAAA,CAAAwsB,SAAAC,MAAA,IAAArsB,cAAAmsB,QAAAvsB,WAAA;AAAAqB,eAAA2qB,UAAA,MAAA;AAAA,cAAAU,OAAAjqB,KAAA,MAOEmpB,KAAKnwB,WAAW,MAAM;AAAA,iBAAA,MAAtBixB,KAAAA,IAAyB,MAAMd,KAAKnwB,WAAW,WAAW,MAAM;AAAA,QAAG,IAAA;AAAA4F,eAAA0qB,SAAA,MACzEH,KAAKtmB,OAAK4mB,SAAAC,MAAA;AAAA9qB,eAAA0qB,SAAAhqB,gBACVG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEM,KAAA,MAAA,CAAA,CAAAmpB,KAAKe,WAAW,OAAIf,KAAKnwB,WAAW;AAAA,UAAQ;AAAA,UAAA,IAAA2G,WAAA;AAAA,gBAAAwqB,UAAAntB,eAAAotB,QAAA,GAAAC,UAAAF,QAAAhtB,YAAAmtB,UAAAD,QAAA9sB,aAAA,CAAAgtB,SAAAC,MAAA,IAAA7sB,cAAA2sB,QAAA/sB,WAAA;AAAAqB,mBAAAurB,SAAA,MACgBhB,KAAKe,aAAWK,SAAAC,MAAA;AAAA,mBAAAL;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAP,SAAAC,MAAA;AAAAjrB,eAAAwqB,SAAA9pB,gBAKzFG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEM,KAAA,MAAAmpB,KAAKnwB,WAAW,QAAQ,EAAA,KAAImwB,KAAK/pB;AAAAA,UAAO;AAAA,UAAA,IAAAO,WAAA;AAAA,gBAAA8qB,UAAAztB,eAAA0tB,QAAA;AAAA9rB,mBAAA6rB,SAAAnrB,gBAE/CiE,iBAAe;AAAA,cAAA,IACdD,UAAO;AAAA,uBAAE6lB,KAAK/pB;AAAAA,cAAO;AAAA,cACrB3F,SAAS,CAAA;AAAA,cAAE,IACX+J,iBAAc;AAAA,uBAAEtL,MAAMsL;AAAAA,cAAc;AAAA,cAAA,IACpC/H,WAAQ;AAAA,uBAAEvD,MAAMuD;AAAAA,cAAQ;AAAA,YAAA,CAAA,CAAA;AAAA,mBAAAgvB;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAV,SAAAC,MAAA;AAAAlqB,eAAAiL,CAAAA,QAAA;AAAA,cAAA4f,OApBpB,cAAcxB,KAAKnwB,WAAW,WAAW,oGAAoG,MAAM,IAAE4xB,OACnJ,+CACVzB,KAAKnwB,WAAW,SAAS,uCACvBmwB,KAAKnwB,WAAW,WAAW,qCAC3B,eAAe;AACjB2xB,mBAAA5f,IAAA5K,KAAAkD,UAAA+lB,SAAAre,IAAA5K,IAAAwqB,IAAA;AAAAC,mBAAA7f,IAAAI,KAAA9H,UAAAimB,SAAAve,IAAAI,IAAAyf,IAAA;AAAA,iBAAA7f;AAAAA,QAAA,GAAA;AAAA,UAAA5K,GAAAzH;AAAAA,UAAAyS,GAAAzS;AAAAA,QAAAA,CAAA;AAAA,eAAA0wB;AAAAA,MAAA,GAAA;AAAA,IAAA,CAoBL,GAAAN,SAAAC,MAAA;AAAAnqB,WAAA+pB,SAAArpB,gBAIFG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE8oB,UAAAA,EAAYC,MAAMoC,KAAK,CAAC7rB,MAAWA,EAAEhG,WAAW,QAAQ;AAAA,MAAC;AAAA,MAAA,IAAA2G,WAAA;AAAA,YAAAmrB,UAAA9tB,eAAA+tB,QAAA,GAAAC,UAAAF,QAAA3tB,YAAA8tB,UAAAD,QAAA7tB,YAAA,CAAA+tB,SAAAC,MAAA,IAAAxtB,cAAAstB,QAAA1tB,WAAA;AAAA2tB,gBAAA3tB;AAAAytB,gBAAArsB,UAElC,MAAA;;AAAMzG,6BAAMuD,aAANvD,+BAAiB,aAAa;AAAA,YAAEixB,MAAMX,YAAYE;AAAAA,UAAAA;AAAAA;AAAc9pB,eAAAosB,SAAA,MAElG7yB,QAAQizB,oBAAkBF,SAAAC,MAAA;AAAA7qB,2BAAAA;AAAA,eAAAwqB;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAA7B,SAAAC,MAAA;AAAA,WAAAP;AAAAA,EAAA,GAAA;AAMvC;AAIA,MAAM1c,gBAGA/T,CAAAA,UAAU;AACd,QAAMC,UAAUC,gBAAAA;AAChB,QAAM6B,OAAOA,MAAM;AACjB,UAAME,IAAIjC,MAAMkH;AAChB,QAAI+P,MAAMC,QAAQjV,CAAC,EAAG,QAAO;AAAA,MAAEkxB,SAASlxB;AAAAA,MAAG0E,OAAOnG;AAAAA,MAAWW,SAASX;AAAAA,MAAW4yB,YAAY5yB;AAAAA,IAAAA;AAC7F,QAAIyB,KAAKgV,MAAMC,QAAQjV,EAAEkxB,OAAO,EAAG,QAAO;AAAA,MAAEA,SAASlxB,EAAEkxB;AAAAA,MAASxsB,OAAO1E,EAAE0E;AAAAA,MAAOxF,SAASc,EAAEd;AAAAA,MAASiyB,YAAYnxB,EAAEmxB;AAAAA,IAAAA;AAClH,WAAO;AAAA,MAAED,SAAS,CAAA;AAAA,MAAIxsB,OAAOnG;AAAAA,MAAWW,SAASX;AAAAA,MAAW4yB,YAAY5yB;AAAAA,IAAAA;AAAAA,EAC1E;AAEA,UAAA,MAAA;AAAA,QAAA6yB,UAAAvuB,eAAAwuB,QAAA,GAAAC,UAAAF,QAAApuB,YAAA,CAAAuuB,SAAAC,MAAA,IAAAhuB,cAAA8tB,QAAAluB,WAAA,GAAAquB,UAAAF,QAAAnuB,aAAA,CAAAsuB,SAAAC,MAAA,IAAAnuB,cAAAiuB,QAAAruB,WAAA,GAAAwuB,UAAAF,QAAAtuB,aAAA,CAAAyuB,SAAAC,MAAA,IAAAtuB,cAAAouB,QAAAxuB,WAAA,GAAA2uB,UAAAF,QAAAzuB;AAAAqB,WAAA2sB,SAAAjsB,gBAGKG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,OAAO4E;AAAAA,MAAK;AAAA,MAAA,IAAAc,WAAA;AAAA,YAAAwsB,UAAAnvB,eAAAovB,QAAA;AAAAxtB,eAAAutB,SAAA,MACgDlyB,KAAAA,EAAO4E,KAAK;AAAA,eAAAstB;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAT,SAAAC,MAAA;AAAA/sB,WAAA2sB,SAAAjsB,gBAEnFG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,OAAOZ;AAAAA,MAAO;AAAA,MAAAsG,UACtBtG,cAAO,MAAA;AAAA,YAAAgzB,UAAArvB,eAAAsvB,QAAA,GAAAC,UAAAF,QAAAlvB,YAAA,CAAAqvB,SAAAC,MAAA,IAAA9uB,cAAA4uB,QAAAhvB,WAAA,GAAAmvB,UAAAF,QAAAjvB,aAAA,CAAAovB,SAAAC,MAAA,IAAAjvB,cAAA+uB,QAAAnvB,WAAA;AAAAqB,eAAAytB,SAAA/sB,gBAEJG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAErG,QAAAA,EAAUmL,SAAS;AAAA,UAAI;AAAA,UAAA,IAAA7E,WAAA;AAAA,mBAAA,EAAA,MAAA;AAAA,kBAAAktB,UAAA7vB,eAAA8vB,QAAA;AAAAluB,qBAAAiuB,SAAA,MAC2BxzB,QAAAA,EAAUmL,KAAK;AAAA,qBAAAqoB;AAAAA,YAAA,MAAA,KAAA7sB,KAAA,MAAU7H,QAAQ40B,eAAe,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA,GAAAP,SAAAC,MAAA;AAAA7tB,eAAAytB,SAAA/sB,gBAE7GG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAErG,UAAUyJ;AAAAA,UAAO;AAAA,UAAA,IAAAnD,WAAA;AAAA,gBAAAqtB,UAAAhwB,eAAAiwB,QAAA,GAAAC,UAAAF,QAAA7vB,YAAAgwB,UAAAD,QAAA3vB,aAAA,CAAA6vB,SAAAC,MAAA,IAAA1vB,cAAAwvB,QAAA5vB,WAAA;AAAAqB,mBAAAouB,SAAA,MACC3zB,QAAAA,EAAUyJ,SAAOsqB,SAAAC,MAAA;AAAA,mBAAAL;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAL,SAAAC,MAAA;AAAA,eAAAP;AAAAA,MAAA,GAAA;AAAA,IAAA,CAGlD,GAAAR,SAAAC,MAAA;AAAAltB,WAAA2sB,SAAAjsB,gBAEFG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEM,KAAA,MAAA,CAAA,CAAA/F,OAAOqxB,UAAU,EAAA,KAAIrxB,KAAAA,EAAOqxB,WAAWgC,cAAc;AAAA,MAAI;AAAA,MAAA,IAAA3tB,WAAA;AAAA,YAAA4tB,UAAAvwB,eAAAwwB,QAAA,GAAAC,UAAAF,QAAApwB,YAAAuwB,UAAAD,QAAAlwB,aAAA,CAAAowB,SAAAC,MAAA,IAAAjwB,cAAA+vB,QAAAnwB,WAAA;AAAAqB,eAAA6uB,SAAA,MAO9DxlB,kBAAkB9P,QAAQ01B,oBAAoB;AAAA,UAC7CC,KAAKpX,KAAKqX,MAAM9zB,OAAOqxB,WAAWgC,aAAa,GAAG;AAAA,QAAA,CACnD,CAAC;AAAA1uB,eAAA2uB,SAAAjuB,gBAEHG,MAAI;AAAA,UAAA,IAACC,OAAI;;AAAA,qBAAEzF,UAAAA,EAAOqxB,WAAW0C,iBAAlB/zB,mBAAgCP,UAAS;AAAA,UAAC;AAAA,UAAA,IAAAiG,WAAA;AAAA,gBAAAsuB,UAAAjxB,eAAAkxB,QAAA;AAAAtvB,mBAAAqvB,SAAA,MAEjDhmB,kBAAkB9P,QAAQg2B,yBAAyB;AAAA,cAClD3pB,OAAOvK,KAAAA,EAAOqxB,WAAW0C,aAAat0B;AAAAA,YAAAA,CACvC,CAAC;AAAA,mBAAAu0B;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAN,SAAAC,MAAA;AAAA9tB,eAAAwJ,CAAAA,QAAA8kB,UAAAX,SAbW;AAAA,UACf,sCAAsCxzB,KAAAA,EAAOqxB,WAAWgC,cAAc;AAAA,UACtE,sCAAsCrzB,OAAOqxB,WAAWgC,cAAc,OAAOrzB,KAAAA,EAAOqxB,WAAWgC,aAAa;AAAA,UAC5G,kCAAkCrzB,KAAAA,EAAOqxB,WAAWgC,aAAa;AAAA,QAAA,GAClEhkB,GAAA,CAAA;AAAA,eAAAikB;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAvB,SAAAC,MAAA;AAAArtB,WAAAstB,SAAA5sB,gBAiBFsC,KAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE5H,OAAOoxB;AAAAA,MAAqG;AAAA,MAAA1rB,UACnH0uB,WAAI,MAAA;AAAA,YAAAC,UAAAtxB,eAAAgX,QAAA,GAAAua,UAAAD,QAAAnxB,YAAA,CAAAqxB,SAAAC,MAAA,IAAA9wB,cAAA4wB,QAAAhxB,WAAA,GAAAmxB,UAAAF,QAAAjxB,aAAA,CAAAoxB,SAAAC,MAAA,IAAAjxB,cAAA+wB,QAAAnxB,WAAA;AAAAsxB,yBAAAP,SAAA,SAC4B,MAAA;;AAAMp2B,6BAAMuD,aAANvD,+BAAiBm2B,KAAKpe,SAASoe,KAAKhzB,UAAUgzB,KAAKxrB,OAAOwrB;AAAAA,SAAK;AAAAzvB,eAAA0vB,SAAAhvB,gBAOlGG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAE2uB,KAAKS;AAAAA,UAAI;AAAA,UAAA,IAAAnvB,WAAA;AAAA,gBAAAovB,UAAA/xB,eAAAgyB,QAAA;AAAApwB,mBAAAmwB,SAAA,MAAsBV,KAAKS,IAAI;AAAA,mBAAAC;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAP,SAAAC,MAAA;AAAA7vB,eAAA0vB,SAAA,MACnDD,KAAKxrB,OAAK8rB,SAAAC,MAAA;AAAA9uB,eAAA,MAAAuD,UAAAirB,SAPJ,gEACLD,KAAKY,YAAY,YAAY,6CAC3BZ,KAAKY,YAAY,WAAW,2CAC5BZ,KAAKY,YAAY,cAAc,4HAC/B,uHAAuH,EACzH,CAAA;AAAA,eAAAX;AAAAA,MAAA,GAAA;AAAA,IAAA,CAIL,CAAA;AAAA,WAAA/C;AAAAA,EAAA,GAAA;AAKX;AAIA,MAAMlf,uBAAyDnU,CAAAA,UAAU;AACvE,QAAM+B,OAAOA,MAAM;AACjB,UAAME,IAAIjC,MAAMkH;AAChB,WAAO;AAAA,MAAE8vB,aAAY/0B,uBAAG+0B,eAAc,CAAA;AAAA,MAAIC,WAAUh1B,uBAAGg1B,aAAY,CAAA;AAAA,IAAA;AAAA,EACrE;AAEA,QAAMC,kBAAkBA,CAACC,SAAkB;AACzC,YAAQA,MAAAA;AAAAA,MACN,KAAK;AAAQ,eAAO;AAAA,MACpB,KAAK;AAAU,eAAO;AAAA,MACtB,KAAK;AAAO,eAAO;AAAA,MACnB;AAAS,eAAO;AAAA,IAAA;AAAA,EAEpB;AAEA,UAAA,MAAA;AAAA,QAAAC,UAAAtyB,eAAAuyB,QAAA,GAAAC,UAAAF,QAAAnyB,YAAAsyB,UAAAD,QAAAjyB,aAAA,CAAAmyB,SAAAC,MAAA,IAAAhyB,cAAA8xB,QAAAlyB,WAAA;AAAAqB,WAAA4wB,SAAAlwB,gBAGOsC,KAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE5H,OAAOi1B;AAAAA,MAAU;AAAA,MAAAvvB,UACzBA,CAACiwB,SAAQ,MAAA;AAAA,YAAAC,UAAA7yB,eAAA8yB,QAAA,GAAAC,UAAAF,QAAA1yB,YAAA6yB,UAAAD,QAAAxyB;AAAAqB,eAAAmxB,SAAA,MAGHH,IAAI/sB,KAAK;AAAAjE,eAAAoxB,SAAA,MAEiCJ,IAAI3f,KAAK;AAAAnQ,eAAA,MAAAuD,UAAA0sB,SAHzC,6CAA6CX,gBAAgBQ,IAAItC,UAAU,CAAC,EAAE,CAAA;AAAA,eAAAuC;AAAAA,MAAA,GAAA;AAAA,IAAA,CAK9F,CAAA;AAAAjxB,WAAA0wB,SAAAhwB,gBAGJG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,KAAAA,EAAOk1B,SAASz1B,SAAS;AAAA,MAAC;AAAA,MAAA,IAAAiG,WAAA;AAAA,YAAAswB,UAAAjzB,eAAA0R,QAAA;AAAA9P,eAAAqxB,SAAA3wB,gBAEjCsC,KAAG;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAE5H,OAAOk1B;AAAAA,UAAQ;AAAA,UAAAxvB,UACvBA,CAACuwB,OAAS,MAAA;AAAA,gBAAAC,UAAAnzB,eAAAozB,QAAA,GAAAC,UAAAF,QAAAhzB,YAAAmzB,UAAAD,QAAA9yB;AAAAqB,mBAAA0xB,SAGAJ,CAAC;AAAA,mBAAAC;AAAAA,UAAA,GAAA;AAAA,QAAA,CAEX,CAAA;AAAA,eAAAF;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAP,SAAAC,MAAA;AAAA,WAAAL;AAAAA,EAAA,GAAA;AAMb;AAIA,MAAMhjB,kBAGApU,CAAAA,UAAU;AACd,QAAMC,UAAUC,gBAAAA;AAChB,QAAM,CAACm4B,SAASC,UAAU,IAAIj4B,aAAa,EAAE;AAC7C,QAAM,CAACk4B,aAAaC,cAAc,IAAIn4B,aAAa,KAAK;AACxD,QAAM,CAACo4B,WAAWC,YAAY,IAAIr4B,aAA4B,IAAI;AAGlE,QAAM,CAACs4B,gBAAgBC,iBAAiB,IAAIv4B,aAAa,EAAE;AAC3D,QAAM0B,OAAOA,MAAM;;AACjB,UAAME,IAAIjC,MAAMkH;AAChB,UAAM2T,WAAU5Y,uBAAG4Y,YAAW,CAC5B;AAAA,MAAE9C,SAAO9V,4BAAG42B,YAAH52B,mBAAY8V,UAAS;AAAA,MAAWpN,SAAO1I,4BAAG42B,YAAH52B,mBAAY0I,UAAS1K,QAAQ64B;AAAAA,MAAKlC,MAAM;AAAA,MAAgBG,SAAS;AAAA,IAAA,GACjH;AAAA,MAAEhf,SAAO9V,4BAAG82B,WAAH92B,mBAAW8V,UAAS;AAAA,MAAUpN,SAAO1I,4BAAG82B,WAAH92B,mBAAW0I,UAAS1K,QAAQ+4B;AAAAA,MAAIpC,MAAM;AAAA,IAAA,CAAgB;AAEtG,WAAO;AAAA,MACLqC,WAAUh3B,uBAAGg3B,aAAY;AAAA,MACzBpe;AAAAA,MACAqe,gBAAej3B,uBAAGi3B,mBAAiBj3B,uBAAGk3B,iBAAgB;AAAA,MACtD3d,cAAavZ,uBAAGuZ,iBAAevZ,uBAAGm3B,uBAAsBn5B,QAAQo5B;AAAAA;AAAAA,MAEhEC,SAASr3B,uBAAGq3B;AAAAA,MACZC,QAAQt3B,uBAAGs3B;AAAAA,IAAAA;AAAAA,EAEf;AAEA,QAAMC,eAAeA,CAACC,WAAgB;;AACpC,QAAIA,OAAOC,cAAc;AACvBlB,qBAAe,IAAI;AACnB;AAAA,IACF;AACAE,iBAAae,OAAO1hB,KAAK;AACzB6gB,sBAAkBa,OAAO9uB,SAAS,EAAE;AACpC,UAAMgvB,UAAU;AAAA,MACdF,QAAQA,OAAO1hB;AAAAA,MACfsgB,SAASA,QAAAA;AAAAA,MACT,GAAIt2B,KAAAA,EAAOu3B,UAAU;AAAA,QAAEA,SAASv3B,OAAOu3B;AAAAA,MAAAA,IAAY,CAAA;AAAA,MACnD,GAAIv3B,KAAAA,EAAOw3B,SAAS;AAAA,QAAEA,QAAQx3B,OAAOw3B;AAAAA,MAAAA,IAAW,CAAA;AAAA,IAAC;AAEnDr3B,YAAQK,KAAK,gCAAgC;AAAA,MAC3C+2B,SAASv3B,OAAOu3B;AAAAA,MAASC,QAAQx3B,OAAOw3B;AAAAA,MAAQp2B,QAAQs2B,OAAO1hB;AAAAA,IAAAA,CAChE;AACD/X,gBAAMuD,aAANvD,+BAAiB,YAAY25B;AAAAA,EAC/B;AAEA,UAAA,MAAA;AAAA,QAAAC,UAAA90B,eAAA+0B,QAAA,GAAAC,UAAAF,QAAA30B,YAAA80B,UAAAD,QAAAz0B,aAAA,CAAA20B,SAAAC,MAAA,IAAAx0B,cAAAs0B,QAAA10B,WAAA,GAAA60B,UAAAF,QAAA30B,aAAA,CAAA80B,SAAAC,MAAA,IAAA30B,cAAAy0B,QAAA70B,WAAA;AAAAqB,WAAAozB,SAAA,MAEyD/3B,KAAAA,EAAOk3B,QAAQ;AAAAvyB,WAAAkzB,SAAAxyB,gBAGnEG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEixB,UAAAA;AAAAA,MAAW;AAAA,MAAA,IAAAhxB,WAAA;AAAA,YAAA4yB,UAAAv1B,eAAAw1B,QAAA,GAAAC,UAAAF,QAAAp1B,YAAAu1B,UAAAD,QAAAt1B,YAAA,CAAAw1B,SAAAC,MAAA,IAAAj1B,cAAA+0B,QAAAn1B,WAAA,GAAAs1B,UAAAF,QAAAp1B,aAAAu1B,UAAAD,QAAAt1B,aAAA,CAAAw1B,SAAAC,MAAA,IAAAr1B,cAAAm1B,QAAAv1B,WAAA,GAAA01B,UAAAR,QAAAl1B,aAAA,CAAA21B,SAAAC,MAAA,IAAAx1B,cAAAs1B,QAAA11B,WAAA;AAAAqB,eAAA6zB,UAAA,MAAA;AAAA,cAAAW,OAAApzB,KAAA,MAOhB2wB,UAAAA,MAAgB,SAAS;AAAA,iBAAA,MAAzByC,KAAAA,IAA4B,MAAWzC,UAAAA,MAAgB,WAAW,MAAW;AAAA,QAAc,GAAA,GAAAgC,SAAAC,MAAA;AAAAh0B,eAAA6zB,SAAG5B,gBAAckC,SAAAC,MAAA;AAAAp0B,eAAA2zB,SAAAjzB,gBAE9GG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAE6wB,QAAAA;AAAAA,UAAS;AAAA,UAAA,IAAA5wB,WAAA;AAAA,gBAAA0zB,UAAAr2B,eAAAs2B,QAAA,GAAAC,UAAAF,QAAAl2B,YAAAq2B,UAAAD,QAAAh2B,aAAA,CAAAk2B,SAAAC,MAAA,IAAA/1B,cAAA61B,QAAAj2B,WAAA;AAAAqB,mBAAAy0B,SACW9C,SAAOkD,SAAAC,MAAA;AAAA,mBAAAL;AAAAA,UAAA;AAAA,QAAA,CAAA,GAAAH,SAAAC,MAAA;AAAArzB,eAAAiL,CAAAA,QAAA;AAAA,cAAA4oB,OAAA,CAAA,EAPnBhD,gBAAgB,YAASiD,OAAA,CAAA,EAC3BjD,gBAAgB,WAAQkD,OAAA,CAAA,EACvBlD,gBAAgB,aAAaA,gBAAgB;AAAQgD,mBAAA5oB,IAAA5K,KAAAsyB,QAAAqB,UAAAC,OAAA,kBAAAhpB,IAAA5K,IAAAwzB,IAAA;AAAAC,mBAAA7oB,IAAAI,KAAAsnB,QAAAqB,UAAAC,OAAA,gBAAAhpB,IAAAI,IAAAyoB,IAAA;AAAAC,mBAAA9oB,IAAAK,KAAAqnB,QAAAqB,UAAAC,OAAA,iBAAAhpB,IAAAK,IAAAyoB,IAAA;AAAA,iBAAA9oB;AAAAA,QAAA,GAAA;AAAA,UAAA5K,GAAAzH;AAAAA,UAAAyS,GAAAzS;AAAAA,UAAA0S,GAAA1S;AAAAA,QAAAA,CAAA;AAAA,eAAA65B;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAL,SAAAC,MAAA;AAAAvzB,WAAAkzB,SAAAxyB,gBAW3EG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE,CAACixB,UAAAA;AAAAA,MAAW;AAAA,MAAA,IAAAhxB,WAAA;AAAA,eAAA,EAAA,MAAA;AAAA,cAAAq0B,UAAAh3B,eAAAi3B,QAAA;AAAAr1B,iBAAAo1B,SAAA10B,gBAEnBsC,KAAG;AAAA,YAAA,IAACC,OAAI;AAAA,qBAAE5H,OAAO8Y;AAAAA,YAAO;AAAA,YAAApT,UACrBgyB,aAAM,MAAA;AAAA,kBAAAuC,UAAAl3B,eAAAgX,QAAA,GAAAmgB,UAAAD,QAAA/2B,YAAA,CAAAi3B,SAAAC,OAAA,IAAA12B,cAAAw2B,QAAA52B,WAAA,GAAA+2B,UAAAF,QAAA72B,aAAA,CAAAg3B,SAAAC,OAAA,IAAA72B,cAAA22B,QAAA/2B,WAAA;AAAAsxB,+BAAAqF,SAAA,SAC0B,MAAMxC,aAAaC,MAAM,CAAC;AAAA/yB,qBAAAs1B,SAAA50B,gBAMvDG,MAAI;AAAA,gBAAA,IAACC,OAAI;AAAA,yBAAEiyB,OAAO7C;AAAAA,gBAAI;AAAA,gBAAA,IAAAnvB,WAAA;AAAA,sBAAA80B,UAAAz3B,eAAA03B,QAAA;AAAA91B,yBAAA61B,SAAA,MAAS9C,OAAO7C,IAAI;AAAA,yBAAA2F;AAAAA,gBAAA;AAAA,cAAA,CAAA,GAAAL,SAAAC,OAAA;AAAAz1B,qBAAAs1B,SAAA,MAC1CvC,OAAO9uB,OAAK0xB,SAAAC,OAAA;AAAA10B,qBAAA,MAAAuD,UAAA6wB,SANN,wFACLvC,OAAO1C,YAAY,YAAY,6CAC7B0C,OAAO1C,YAAY,WAAW,2CAC9B,uHAAuH,EACzH,CAAA;AAAA,qBAAAiF;AAAAA,YAAA,GAAA;AAAA,UAAA,CAIL,CAAA;AAAA,iBAAAF;AAAAA,QAAA,GAAA,GAAA10B,gBAGJG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEzF,KAAAA,EAAOm3B,iBAAiBX,YAAAA;AAAAA,UAAa;AAAA,UAAA,IAAA9wB,WAAA;AAAA,gBAAAg1B,UAAA33B,eAAA43B,QAAA,GAAAC,UAAAF,QAAAx3B,YAAA23B,UAAAD,QAAAt3B;AAAAs3B,oBAAAthB,UAEEpT,CAAAA,MAAMqwB,WAAWrwB,EAAEqT,cAAcvD,KAAK;AAAC4e,6BAAAiG,SAAA,SAGtD,MAAM;;AAAElE,2BAAa,SAAS;AAAGE,gCAAkB,EAAE;AAAG54B,0BAAMuD,aAANvD,+BAAiB,YAAY;AAAA,gBAAEy5B,QAAQ;AAAA,gBAAWpB,SAASA,QAAAA;AAAAA,gBAAWiB,SAASv3B,OAAOu3B;AAAAA,gBAASC,QAAQx3B,OAAOw3B;AAAAA,cAAAA;AAAAA,YAAU,CAAC;AAAA7yB,mBAAAk2B,SAAA,MAChI38B,QAAQ48B,cAAc;AAAAj1B,mBAAAiL,CAAAA,QAAA;AAAA,kBAAAiqB,OAHxF/6B,KAAAA,EAAOyZ,aAAWuhB,OAAaxE,YAAAA;AAAauE,uBAAAjqB,IAAA5K,KAAAJ,aAAA80B,SAAA,eAAA9pB,IAAA5K,IAAA60B,IAAA;AAAAC,uBAAAlqB,IAAAI,KAAAwI,YAAAkhB,SAAA,aAAA9pB,IAAAI,IAAA8pB,IAAA;AAAA,qBAAAlqB;AAAAA,YAAA,GAAA;AAAA,cAAA5K,GAAAzH;AAAAA,cAAAyS,GAAAzS;AAAAA,YAAAA,CAAA;AAAAoH,yBAAA6T,YAAAkhB,SAAA,SADjCtE,QAAAA,CAAS,CAAA;AAAAjwB,+BAAAA;AAAA,mBAAAq0B;AAAAA,UAAA;AAAA,QAAA,CAAA,CAAA;AAAA,MAAA;AAAA,IAAA,CAAA,GAAAtC,SAAAC,MAAA;AAAA,WAAAR;AAAAA,EAAA,GAAA;AAU/C;AAIA,MAAMvlB,gBAGArU,CAAAA,UAAU;AACd,QAAMC,UAAUC,gBAAAA;AAChB,QAAM6B,OAAOA,MAAM;AACjB,UAAME,IAAIjC,MAAMkH;AAChB,WAAO;AAAA,MACL81B,gBAAe/6B,uBAAG+6B,kBAAiB;AAAA,MACnCC,iBAAgBh7B,uBAAGg7B,mBAAkB;AAAA,MACrCC,YAAWj7B,uBAAGi7B,cAAa,CAAA;AAAA,MAC3BC,OAAMl7B,uBAAGk7B,SAAQ;AAAA,MACjBC,WAAUn7B,uBAAGm7B,aAAY;AAAA,IAAA;AAAA,EAE7B;AAEA,UAAA,MAAA;AAAA,QAAAC,UAAAv4B,eAAAw4B,QAAA,GAAAC,UAAAF,QAAAp4B,YAAA,CAAAu4B,SAAAC,OAAA,IAAAh4B,cAAA83B,QAAAl4B,WAAA,GAAAq4B,UAAAF,QAAAn4B,aAAAs4B,UAAAD,QAAAr4B,aAAA,CAAAu4B,SAAAC,OAAA,IAAAp4B,cAAAk4B,QAAAt4B,WAAA,GAAAy4B,UAAAF,QAAAv4B,aAAA,CAAA04B,SAAAC,OAAA,IAAAv4B,cAAAq4B,QAAAz4B,WAAA;AAAAqB,WAAA22B,SAAAj2B,gBAEKG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,OAAOi7B;AAAAA,MAAa;AAAA,MAAA,IAAAv1B,WAAA;AAAA,YAAAw2B,UAAAn5B,eAAAo5B,QAAA,GAAAC,UAAAF,QAAAh5B,YAAAm5B,UAAAD,QAAA94B,aAAA,CAAAg5B,SAAAC,OAAA,IAAA74B,cAAA24B,QAAA/4B,WAAA;AAAAg5B,gBAAAh5B;AAAAqB,eAAAu3B,SAAA,MAC+Bl8B,KAAAA,EAAOi7B,eAAaqB,SAAAC,OAAA;AAAA,eAAAL;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAT,SAAAC,OAAA;AAAA/2B,WAAAg3B,SAAAt2B,gBAGhFsC,KAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEtI,OAAOiV,QAAQvU,KAAAA,EAAOm7B,SAAS;AAAA,MAAC;AAAA,MAAAz1B,UACxCA,CAAC,CAACmQ,KAAKG,KAAK,OAAC,MAAA;AAAA,YAAAwmB,UAAAz5B,eAAA05B,QAAA,GAAAC,UAAAF,QAAAt5B,YAAAy5B,UAAAD,QAAAx5B,YAAA,CAAA05B,SAAAC,OAAA,IAAAn5B,cAAAi5B,QAAAr5B,WAAA;AAAAs5B,gBAAAt5B;AAAAA,YAAAw5B,UAAAJ,QAAAp5B;AAAAqB,eAAA+3B,SAE+D7mB,KAAG+mB,SAAAC,OAAA;AAAAl4B,eAAAm4B,SAAA,MAC/B1wB,OAAO4J,KAAK,CAAC;AAAA,eAAAwmB;AAAAA,MAAA,GAAA;AAAA,IAAA,CAE7D,CAAA;AAAA73B,WAAA22B,SAAAj2B,gBAGJG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,OAAOo7B;AAAAA,MAAI;AAAA,MAAA,IAAA11B,WAAA;AAAA,YAAAq3B,UAAAh6B,eAAAi6B,QAAA,GAAAC,UAAAF,QAAA75B,YAAAg6B,UAAAD,QAAA35B,aAAA65B,UAAAD,QAAA55B,aAAA,CAAA85B,SAAAC,OAAA,IAAA35B,cAAAy5B,QAAA75B,WAAA;AAAAqB,eAAAs4B,SAAA,MAEQ/+B,QAAQo/B,cAAc;AAAA34B,eAAAo4B,SAAA,MAAU/8B,KAAAA,EAAOo7B,MAAIgC,SAAAC,OAAA;AAAA,eAAAN;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAlB,SAAAC,OAAA;AAAAn3B,WAAA22B,SAAAj2B,gBAGzEG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,OAAOq7B;AAAAA,MAAQ;AAAA,MAAA,IAAA31B,WAAA;AAAA,YAAA63B,UAAAx6B,eAAAy6B,QAAA,GAAAC,UAAAF,QAAAr6B,YAAAw6B,UAAAD,QAAAn6B,aAAA,CAAAq6B,SAAAC,OAAA,IAAAl6B,cAAAg6B,QAAAp6B,WAAA;AAAAi6B,gBAAA74B,UACM,MAAA;;AAAMzG,6BAAMuD,aAANvD,+BAAiB,eAAe+B;;AAAO2E,eAAA44B,SAAA,MAEjEr/B,QAAQ2/B,kBAAgBF,SAAAC,OAAA;AAAAv3B,2BAAAA;AAAA,eAAAk3B;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAvB,SAAAC,OAAA;AAAA,WAAAX;AAAAA,EAAA,GAAA;AAK3C;AAIA,MAAM/oB,yBAA2DtU,CAAAA,UAAU;AACzE,QAAM+B,OAAOA,MAAM;AACjB,UAAME,IAAIjC,MAAMkH;AAChB,WAAO;AAAA,MACLqpB,QAAQtuB,uBAAGsuB,UAAS,CAAA;AAAA,MACpBsP,cAAa59B,uBAAG49B,gBAAe;AAAA,IAAA;AAAA,EAEnC;AAEA,QAAMC,aAAaA,CAACh/B,WAAmB;AACrC,YAAQA,QAAAA;AAAAA,MACN,KAAK;AAAQ,eAAO;AAAA,MACpB,KAAK;AAAU,eAAO;AAAA,MACtB,KAAK;AAAS,eAAO;AAAA,MACrB;AAAS,eAAO;AAAA,IAAA;AAAA,EAEpB;AAEA,QAAMi/B,eAAeA,MAAMh+B,KAAAA,EAAO89B,gBAAgB;AAElD,SAAAz4B,gBACGG,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEu4B,aAAAA;AAAAA,IAAc;AAAA,IAAA,IAAExzB,WAAQ;AAAA,cAAA,MAAA;AAAA,YAAAyzB,UAAAl7B,eAAAm7B,QAAA;AAAAv5B,eAAAs5B,SAAA54B,gBAE/BsC,KAAG;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAE5H,OAAOwuB;AAAAA,UAAK;AAAA,UAAA9oB,UACnBwpB,WAAI,MAAA;AAAA,gBAAAiP,UAAAp7B,eAAAq7B,QAAA,GAAAC,UAAAF,QAAAj7B,YAAAo7B,UAAAD,QAAA/6B,aAAAi7B,UAAAD,QAAAp7B,YAAAs7B,UAAAD,QAAAj7B,aAAA,CAAAm7B,SAAAC,OAAA,IAAAh7B,cAAA86B,QAAAl7B,WAAA,GAAAq7B,UAAAF,QAAAn7B,aAAA,CAAAs7B,SAAAC,OAAA,IAAAn7B,cAAAi7B,QAAAr7B,WAAA;AAAAqB,mBAAA05B,SAAA,MAE2BN,WAAW7O,KAAKnwB,MAAM,CAAC;AAAA4F,mBAAA45B,SAAA,MAE3CrP,KAAKtmB,KAAK;AAAAjE,mBAAA25B,SAAAj5B,gBAChBG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAEypB,KAAKrmB;AAAAA,cAAO;AAAA,cAAA,IAAAnD,WAAA;AAAA,oBAAAo5B,UAAA/7B,eAAAg8B,QAAA,GAAAC,UAAAF,QAAA57B,YAAA+7B,UAAAD,QAAA17B,aAAA,CAAA47B,SAAAC,OAAA,IAAAz7B,cAAAu7B,QAAA37B,WAAA;AAAAqB,uBAAAm6B,SAAA,MACyC5P,KAAKrmB,SAAOq2B,SAAAC,OAAA;AAAA,uBAAAL;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAL,SAAAC,OAAA;AAAA/5B,mBAAA25B,SAAAj5B,gBAE5EG,MAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAEypB,KAAKkQ;AAAAA,cAAW;AAAA,cAAA,IAAA15B,WAAA;AAAA,oBAAA25B,UAAAt8B,eAAAu8B,QAAA,GAAAC,UAAAF,QAAAn8B,YAAAs8B,UAAAD,QAAAj8B,aAAA,CAAAm8B,SAAAC,OAAA,IAAAh8B,cAAA87B,QAAAl8B,WAAA;AAAAm8B,wBAAAn8B;AAAAqB,uBAAA06B,SAAA,MACiBnQ,KAAKkQ,aAAWK,SAAAC,OAAA;AAAA,uBAAAL;AAAAA,cAAA;AAAA,YAAA,CAAA,GAAAT,SAAAC,OAAA;AAAAh5B,mBAAA,MAAAuD,UAAA+0B,SARrD,kCAAkCjP,KAAKnwB,WAAW,WAAW,gBAAgB,EAAE,IAAImwB,KAAKnwB,WAAW,YAAY,kBAAkB,kCAAkC,EAAE,CAAA;AAAA,mBAAAo/B;AAAAA,UAAA,GAAA;AAAA,QAAA,CAYlL,CAAA;AAAA,eAAAF;AAAAA,MAAA,GAAA;AAAA,IAAA;AAAA,IAAA,IAAAv4B,WAAA;AAAA,UAAAi6B,UAAA58B,eAAA68B,QAAA;AAAAj7B,aAAAg7B,SAAAt6B,gBAKFsC,KAAG;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAE5H,OAAOwuB;AAAAA,QAAK;AAAA,QAAA9oB,UACpBA,CAACwpB,MAAMrnB,MAAC,CAAAxC,gBAEJG,MAAI;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEoC,MAAM;AAAA,UAAC;AAAA,UAAA,IAAAnC,WAAA;AAAA,mBAAA3C,eAAA+E,QAAA;AAAA,UAAA;AAAA,QAAA,CAAA,IAAA,MAAA;AAAA,cAAA+3B,UAAA98B,eAAA+8B,QAAA,GAAAC,UAAAF,QAAA38B,YAAA88B,UAAAD,QAAAz8B,aAAA28B,UAAAD,QAAA18B,aAAA,CAAA48B,SAAAC,OAAA,IAAAz8B,cAAAu8B,QAAA38B,WAAA;AAAAqB,iBAAAo7B,SAAA,MASVhC,WAAW7O,KAAKnwB,MAAM,CAAC;AAAA4F,iBAAAq7B,SAAA,MACvB9Q,KAAKtmB,KAAK;AAAAjE,iBAAAk7B,SAAAx6B,gBAChBG,MAAI;AAAA,YAAA,IAACC,OAAI;AAAA,qBAAEypB,KAAKrmB;AAAAA,YAAO;AAAA,YAAA,IAAAnD,WAAA;AAAA,kBAAA06B,UAAAr9B,eAAAs9B,QAAA;AAAA17B,qBAAAy7B,SAAA,MACgBlR,KAAKrmB,OAAO;AAAA,qBAAAu3B;AAAAA,YAAA;AAAA,UAAA,CAAA,GAAAF,SAAAC,OAAA;AAAAt6B,iBAAA,MAAAuD,UAAAy2B,SAT1C,qDACV3Q,KAAKnwB,WAAW,SAAS,wEACvBmwB,KAAKnwB,WAAW,WAAW,8FAC3BmwB,KAAKnwB,WAAW,UAAU,gEAC1B,eAAe,EACjB,CAAA;AAAA,iBAAA8gC;AAAAA,QAAA,IAAA;AAAA,MAAA,CAQL,CAAA;AAAA,aAAAF;AAAAA,IAAA;AAAA,EAAA,CAAA;AAKX;AAIA,MAAMntB,uBAGAvU,CAAAA,UAAU;AACd,QAAMC,UAAUC,gBAAAA;AAChB,QAAM,CAACmiC,aAAaC,cAAc,IAAIjiC,aAAa,KAAK;AACxD,QAAM0B,OAAOA,MAAM;AACjB,UAAME,IAAIjC,MAAMkH;AAChB,UAAMq7B,IAAI;AAAA,MAAE5yB,UAAS1N,uBAAG0N,YAAW1P,QAAQuiC;AAAAA,MAAiBC,WAAUxgC,uBAAGwgC,aAAY;AAAA,MAASC,aAAazgC,uBAAGygC;AAAAA,MAAaC,aAAY1gC,uBAAG0gC,eAAc1iC,QAAQwQ;AAAAA,MAAOmyB,SAAS3gC,uBAAG2gC;AAAAA,MAASC,WAAW5gC,uBAAG4gC;AAAAA,IAAAA;AAE1M3gC,YAAQK,KAAK,gDAAgDggC,EAAEE,QAAQ,UAAU,CAAC,CAACF,EAAEG,WAAW,IAAI,qCAAqC,gBAAgB;AACzJ,WAAOH;AAAAA,EACT;AACA,QAAMO,YAAYA,MAAM/gC,KAAAA,EAAO0gC,aAAa;AAE5C,UAAA,MAAA;AAAA,QAAAM,UAAAj+B,eAAAk+B,QAAA,GAAAC,UAAAF,QAAA99B,YAAAi+B,UAAAD,QAAAh+B,YAAAk+B,UAAAD,QAAA79B,aAAA+9B,UAAAD,QAAAl+B,YAAAo+B,UAAAD,QAAA/9B,aAAAi+B,UAAAD,QAAAp+B,YAAA,CAAAs+B,SAAAC,OAAA,IAAA/9B,cAAA69B,QAAAj+B,WAAA,GAAAo+B,UAAAF,QAAAl+B,aAAA,CAAAq+B,SAAAC,OAAA,IAAAl+B,cAAAg+B,QAAAp+B,WAAA,GAAAu+B,UAAAP,QAAAh+B,aAAA,CAAAw+B,SAAAC,OAAA,IAAAr+B,cAAAm+B,QAAAv+B,WAAA;AAAAqB,WAAAw8B,SAAA,MAGmCJ,UAAAA,IAAc,OAAO,GAAG;AAAAp8B,WAAA08B,SAAA,MAE/CrhC,KAAAA,EAAO4N,OAAO;AAAAjJ,WAAA28B,SAAAj8B,gBAEfG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,OAAO2gC;AAAAA,MAAW;AAAA,MAAA,IAAAj7B,WAAA;AAAA,YAAAs8B,UAAAj/B,eAAAk/B,QAAA,GAAAC,UAAAF,QAAA9+B,YAAAi/B,UAAAD,QAAA5+B,aAAA,CAAA8+B,SAAAC,OAAA,IAAA3+B,cAAAy+B,QAAA7+B,WAAA;AAAA0+B,gBAAAt9B,UACG,MAAA;;AAAMzG,6BAAMuD,aAANvD,+BAAiB+B,KAAAA,EAAO2gC;AAAAA;AAAah8B,eAAAq9B,SAAA,MAAwLhiC,KAAAA,EAAO4gC,YAAUwB,SAAAC,OAAA;AAAAx8B,eAAA,MAAAuD,UAAA44B,SAAhM,yCAAyCjB,cAAc,+CAA+C,wCAAwC,oBAAoB,CAAA;AAAA16B,2BAAAA;AAAA,eAAA27B;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAR,SAAAC,OAAA;AAAA98B,WAAA28B,SAAAj8B,gBAEtPG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,OAAO6gC;AAAAA,MAAO;AAAA,MAAA,IAAAn7B,WAAA;AAAA,YAAA48B,UAAAv/B,eAAAw/B,QAAA,GAAAC,UAAAF,QAAAp/B,YAAAu/B,UAAAD,QAAAl/B,aAAA,CAAAo/B,SAAAC,OAAA,IAAAj/B,cAAA++B,QAAAn/B,WAAA;AAAAg/B,gBAAA59B,UACO,MAAM67B,eAAe,CAACD,aAAa;AAAC37B,eAAA29B,SAAA,MAAkEpkC,QAAQ0kC,mBAAiBF,SAAAC,OAAA;AAAAt8B,2BAAAA;AAAA,eAAAi8B;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAX,SAAAC,OAAA;AAAAj9B,WAAAy8B,SAAA/7B,gBAGjKG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEM,KAAA,MAAA,CAAA,CAAAu6B,aAAa,EAAA,KAAItgC,KAAAA,EAAO6gC;AAAAA,MAAO;AAAA,MAAA,IAAAn7B,WAAA;AAAA,YAAAm9B,UAAA9/B,eAAA+/B,QAAA;AAAAn+B,eAAAk+B,SAAA,MACa7iC,KAAAA,EAAO6gC,OAAO;AAAA,eAAAgC;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAf,SAAAC,OAAA;AAAAl8B,WAAA,MAAAuD,UAAA43B,SAdhE,gCAAgCD,cAAc,sHAAsH,uGAAuG,EAAE,CAAA;AAAA,WAAAC;AAAAA,EAAA,GAAA;AAoB7R;AAIA,MAAMvuB,oBAAsDxU,CAAAA,UAAU;AACpE,QAAMC,UAAUC,gBAAAA;AAChB,QAAM6B,OAAOA,MAAM;AACjB,UAAME,IAAIjC,MAAMkH;AAChB,WAAO;AAAA,MAAEC,OAAMlF,uBAAGkF,SAAQlH,QAAQ6kC;AAAAA,MAAkBhkC,SAAQmB,uBAAGnB,WAAU;AAAA,MAAaikC,eAAc9iC,uBAAG8iC,iBAAgB,CAAA;AAAA,MAAIC,YAAY/iC,uBAAG+iC;AAAAA,MAAYC,WAAWhjC,uBAAGgjC;AAAAA,MAAWC,WAAWjjC,uBAAGijC;AAAAA,IAAAA;AAAAA,EAC/L;AACA,QAAMpF,aAAaA,OAAO;AAAA,IAAEqF,SAAS;AAAA,IAAKC,WAAW;AAAA,IAAMtlC,OAAO;AAAA,EAAA,GAAiCiC,KAAAA,EAAOjB,MAAM,KAAK;AAErH,UAAA,MAAA;AAAA,QAAAukC,UAAAvgC,eAAAwgC,QAAA,GAAAC,UAAAF,QAAApgC,YAAAugC,UAAAD,QAAAtgC,YAAAwgC,UAAAD,QAAAvgC,YAAA,CAAAygC,SAAAC,OAAA,IAAAlgC,cAAAggC,QAAApgC,WAAA,GAAAugC,UAAAF,QAAArgC,aAAAwgC,UAAAD,QAAAvgC,aAAA,CAAAygC,SAAAC,OAAA,IAAAtgC,cAAAogC,QAAAxgC,WAAA,GAAA2gC,UAAAR,QAAAngC,aAAA,CAAA4gC,SAAAC,OAAA,IAAAzgC,cAAAugC,QAAA3gC,WAAA,GAAA8gC,UAAAZ,QAAAlgC,aAAA+gC,UAAAD,QAAA9gC,aAAA,CAAAghC,SAAAC,OAAA,IAAA7gC,cAAA2gC,QAAA/gC,WAAA;AAAAqB,WAAA8+B,SAGuE1F,YAAU4F,SAAAC,OAAA;AAAAj/B,WAAA8+B,SAAA,MAAKzjC,KAAAA,EAAOoF,MAAI2+B,SAAAC,OAAA;AAAAr/B,WAAA6+B,SAAAn+B,gBAC1FG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,KAAAA,EAAOmjC,cAAc1kC;AAAAA,MAAS;AAAA,MAAA,IAAAiH,WAAA;AAAA,YAAA8+B,UAAAzhC,eAAA0hC,QAAA;AAAA9/B,eAAA6/B,SAAA,MAAA;;AAErCx2B,mCAAkB9P,QAAQwmC,uBAAuB;AAAA,YAChDn6B,SAAOvK,UAAAA,EAAOmjC,cAAPnjC,mBAAkB8K,eAAe5M,QAAQ6M,YAAW;AAAA,UAAA,CAC5D;AAAA,SAAC;AAAA,eAAAy5B;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAN,SAAAC,OAAA;AAAAx/B,WAAAy/B,SAAA/+B,gBAKLsC,KAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE5H,OAAOgjC;AAAAA,MAAY;AAAA,MAAAt9B,UAC3BA,CAACi/B,SAAQ,MAAA;AAAA,YAAAC,UAAA7hC,eAAA8hC,SAAA,GAAAC,UAAAF,QAAA1hC,YAAA,CAAA6hC,SAAAC,OAAA,IAAAthC,cAAAohC,QAAAxhC,WAAA,GAAA2hC,UAAAF,QAAAzhC,aAAA4hC,UAAAD,QAAA3hC,aAAA,CAAA6hC,SAAAC,OAAA,IAAA1hC,cAAAwhC,QAAA5hC,WAAA;AAAAqB,eAAAigC,SAAA,MAELD,IAAIU,YAAY,MAAM,KAAGN,SAAAC,OAAA;AAAArgC,eAAAigC,SAAA,MAAGD,IAAI/7B,OAAKu8B,SAAAC,OAAA;AAAAv/B,eAAA,MAAAuD,UAAAw7B,SAD3B,qCAAqCD,IAAIU,YAAY,yEAAyE,8DAA8D,EAAE,CAAA;AAAA,eAAAT;AAAAA,MAAA,GAAA;AAAA,IAAA,CAG5M,CAAA;AAAAjgC,WAAA2+B,SAAAj+B,gBAGJG,MAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzF,KAAAA,EAAOkjC,aAAaljC,KAAAA,EAAOijC;AAAAA,MAAU;AAAA,MAAA,IAAAv9B,WAAA;AAAA,YAAA4/B,UAAAviC,eAAAwiC,QAAA;AAAA5gC,eAAA2gC,SAAA,MACT,CAACtlC,KAAAA,EAAOkjC,WAAWljC,KAAAA,EAAOijC,aAAa,GAAGjjC,OAAOijC,UAAU,OAAO,EAAE,EAAE7mB,OAAOopB,OAAO,EAAEzkC,KAAK,KAAK,CAAC;AAAA,eAAAukC;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAhB,SAAAC,OAAA;AAAA,WAAAjB;AAAAA,EAAA,GAAA;AAI/I;AAIA,MAAM5wB,cAAgDzU,CAAAA,UAAU;AAC9D,QAAM+B,OAAOA,MAAM;AACjB,UAAME,IAAIjC,MAAMkH;AAChB,WAAO;AAAA,MAAEsgC,OAAMvlC,uBAAGulC,SAAQ;AAAA,QAAE78B,OAAO;AAAA,QAAKsC,MAAM,CAAA;AAAA,MAAA;AAAA,MAAMw6B,QAAOxlC,uBAAGwlC,UAAS;AAAA,QAAE98B,OAAO;AAAA,QAAKsC,MAAM,CAAA;AAAA,MAAA;AAAA,MAAMy6B,YAAWzlC,uBAAG0lC,sBAAqB,CAAA;AAAA,IAAA;AAAA,EACtI;AACA,QAAMnwB,UAAUA,MAAM;AACpB,UAAMowB,IAAI7lC,KAAAA,EAAOylC,KAAKv6B,KAAK,CAAC,KAAK,CAAA;AACjC,UAAM4S,IAAI9d,KAAAA,EAAO0lC,MAAMx6B,KAAK,CAAC,KAAK,CAAA;AAClC,WAAO,CAAC,GAAG,oBAAIhK,IAAI,CAAC,GAAG5B,OAAOC,KAAKsmC,CAAC,GAAG,GAAGvmC,OAAOC,KAAKue,CAAC,CAAC,CAAC,CAAC;AAAA,EAC5D;AAEA,UAAA,MAAA;AAAA,QAAAgoB,UAAA/iC,eAAAgjC,SAAA,GAAAC,UAAAF,QAAA5iC,YAAA+iC,UAAAD,QAAA9iC,YAAAgjC,UAAAD,QAAA/iC,YAAAijC,UAAAD,QAAAhjC,YAAAkjC,UAAAD,QAAA7iC,aAAA+iC,UAAAD,QAAA9iC,aAAAgjC,UAAAL,QAAA3iC;AAAAqB,WAAAyhC,SAAA,MAMwFpmC,KAAAA,EAAOylC,KAAK78B,KAAK;AAAAjE,WAAA0hC,SAAA,MACbrmC,KAAAA,EAAO0lC,MAAM98B,KAAK;AAAAjE,WAAA2hC,SAAAjhC,gBAIrGsC,KAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE6N,QAAAA;AAAAA,MAAS;AAAA,MAAA/P,UAChBmQ,CAAAA,QAAQ;AACR,cAAM0wB,OAAOA,MAAAA;;AAAMvmC,4BAAAA,EAAOylC,KAAKv6B,KAAK,CAAC,MAAlBlL,mBAAsB6V;AAAAA;AACzC,cAAM2wB,OAAOA,MAAAA;;AAAMxmC,4BAAAA,EAAO0lC,MAAMx6B,KAAK,CAAC,MAAnBlL,mBAAuB6V;AAAAA;AAC1C,cAAM4wB,SAASA,MAAMr6B,OAAOm6B,KAAAA,CAAM,MAAMn6B,OAAOo6B,KAAAA,CAAM,KAAKxmC,KAAAA,EAAO2lC,UAAU9kC,SAASgV,GAAG;AACvF,gBAAA,MAAA;AAAA,cAAA6wB,UAAA3jC,eAAA4jC,SAAA,GAAAC,UAAAF,QAAAxjC,YAAA2jC,UAAAD,QAAAtjC,aAAAwjC,UAAAD,QAAAvjC;AAAAqB,iBAAAiiC,SAEsE/wB,GAAG;AAAAlR,iBAAAkiC,UAAA,MAAA;AAAA,gBAAAE,OAAAhhC,KAAA,MAChBwgC,KAAAA,MAAW9nC,MAAS;AAAA,mBAAA,MAApBsoC,KAAAA,IAAuB36B,OAAOm6B,KAAAA,CAAM,IAAI;AAAA,UAAG,IAAA;AAAA5hC,iBAAAmiC,UAAA,MAAA;AAAA,gBAAAE,OAAAjhC,KAAA,MAC3CygC,KAAAA,MAAW/nC,MAAS;AAAA,mBAAA,MAApBuoC,KAAAA,IAAuB56B,OAAOo6B,KAAAA,CAAM,IAAI;AAAA,UAAG,IAAA;AAAA3gC,iBAAA,MAAAuD,UAAAs9B,SAHvF,iDAAiDD,WAAW,uCAAuC,EAAE,EAAE,CAAA;AAAA,iBAAAC;AAAAA,QAAA,GAAA;AAAA,MAMtH;AAAA,IAAA,CAAC,CAAA;AAAA,WAAAZ;AAAAA,EAAA,GAAA;AAMb;AAACmB,eAAA,CAAA,SAAA,OAAA,CAAA;"}
1
+ {"version":3,"file":"ScratchpadPanel.js","sources":["../../src/components/ScratchpadPanel.tsx"],"sourcesContent":["/**\n * ScratchpadPanel v3 — Full HITL/AITL workspace\n * v2.9.0: Interactive filters, form sections, stepper, preview auto-refresh\n *\n * @experimental\n */\n\nimport { Component, Show, For, Switch, Match, createSignal, createEffect, onCleanup } from 'solid-js'\nimport type { ScratchpadState, ScratchpadSection, VerifiedTextContent, DataPreviewContent, MapSectionContent, AgentCardContent, SplitStepperContent, AgentHandoffContent, BriefingDiffContent } from '../types/chat-bus'\nimport type { FormFieldParams, ChartComponentParams } from '../types'\nimport { FormFieldRenderer } from './FormFieldRenderer'\nimport { VerifiedText } from './VerifiedText'\nimport { DataPreviewSection } from './DataPreviewSection'\nimport { MapRenderer } from './MapRenderer'\nimport { ChartJSRenderer } from './ChartJSRenderer'\nimport { AgentCard, AgentStatusBadge } from './AgentCard'\nimport { SplitStepper } from './SplitStepper'\nimport { AgentHandoff } from './AgentHandoff'\nimport { BriefingDiff } from './BriefingDiff'\nimport { formatMCPUIString, useMCPUIStrings } from '../context/MCPUIStringsContext'\n\nexport interface ScratchpadPanelProps {\n state: ScratchpadState\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n onAction?: (action: string, data?: unknown) => void\n onSectionEdit?: (sectionId: string, content: unknown) => void\n /** Dedicated callback for form submissions (cleaner than onAction) */\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n /** Called when user clicks retry on error state */\n onRetry?: () => void\n onClose?: () => void\n /** When true, action buttons show loading spinner and stay open until next server update */\n asyncAction?: boolean\n /** When true (set by server), scratchpad stays visible during stream */\n pinned?: boolean\n /** Log events/actions to console */\n debug?: boolean\n /** Show mini debug overlay */\n debugOverlay?: boolean\n /** Show collapsible debug trace panel under forms */\n debugTrace?: boolean\n closable?: boolean\n autoCloseDelay?: number\n collapsible?: boolean\n maxHeight?: string\n}\n\n/**\n * Status badges. The record stays module-level (it is static styling), but\n * it carries a `labelKey` instead of English: the label is resolved from\n * `useMCPUIStrings()` at render time, so a host provider localizes it.\n * Same technique as `SOURCE_BADGES` in `FormFieldRenderer`.\n */\ntype StatusLabelKey =\n | 'statusLoading'\n | 'statusActionAvailable'\n | 'statusYourTurn'\n | 'statusProcessing'\n | 'statusComplete'\n | 'scratchpadError'\n\nconst STATUS_BADGES: Record<\n ScratchpadState['status'],\n { labelKey: StatusLabelKey; class: string }\n> = {\n loading: { labelKey: 'statusLoading', class: 'bg-[color:var(--mcp-ui-warning-soft,var(--color-yellow-100))] text-[color:var(--mcp-ui-warning,var(--color-yellow-700))] dark:bg-[color:var(--mcp-ui-warning-soft,color-mix(in_oklab,var(--color-yellow-900)_30%,transparent))] dark:text-[color:var(--mcp-ui-warning,var(--color-yellow-400))]' },\n ready: { labelKey: 'statusActionAvailable', class: 'bg-[color:var(--mcp-ui-info-soft,var(--color-cyan-100))] text-[color:var(--mcp-ui-info,var(--color-cyan-700))] dark:bg-[color:var(--mcp-ui-info-soft,color-mix(in_oklab,var(--color-cyan-900)_30%,transparent))] dark:text-[color:var(--mcp-ui-info,var(--color-cyan-400))]' },\n waiting_human: { labelKey: 'statusYourTurn', class: 'bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-100))] text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_30%,transparent))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] animate-pulse' },\n processing: { labelKey: 'statusProcessing', class: 'bg-[color:var(--mcp-ui-secondary-soft,var(--color-purple-100))] text-[color:var(--mcp-ui-secondary,var(--color-purple-700))] dark:bg-[color:var(--mcp-ui-secondary-soft,color-mix(in_oklab,var(--color-purple-900)_30%,transparent))] dark:text-[color:var(--mcp-ui-secondary,var(--color-purple-400))]' },\n complete: { labelKey: 'statusComplete', class: 'bg-[color:var(--mcp-ui-success-soft,var(--color-green-100))] text-[color:var(--mcp-ui-success,var(--color-green-600))] dark:bg-[color:var(--mcp-ui-success-soft,color-mix(in_oklab,var(--color-green-900)_30%,transparent))] dark:text-[color:var(--mcp-ui-success,var(--color-green-400))]' },\n // The error badge reuses the existing `scratchpadError` key ('Error').\n error: { labelKey: 'scratchpadError', class: 'bg-[color:var(--mcp-ui-danger-soft,var(--color-red-100))] text-[color:var(--mcp-ui-danger,var(--color-red-600))] dark:bg-[color:var(--mcp-ui-danger-soft,color-mix(in_oklab,var(--color-red-900)_30%,transparent))] dark:text-[color:var(--mcp-ui-danger,var(--color-red-400))]' },\n}\n\nexport const ScratchpadPanel: Component<ScratchpadPanelProps> = (props) => {\n const strings = useMCPUIStrings()\n const [collapsed, setCollapsed] = createSignal(false)\n const [localPreview, setLocalPreview] = createSignal<ScratchpadState['preview']>(undefined)\n const [loadingAction, setLoadingAction] = createSignal<string | null>(null)\n let previewTimer: ReturnType<typeof setTimeout> | null = null\n const badge = () => STATUS_BADGES[props.state.status] || STATUS_BADGES.loading\n const isClosable = () => props.closable !== false\n const isCollapsible = () => props.collapsible !== false\n const preview = () => localPreview() || props.state.preview\n const hasFilters = () => Object.keys(props.state.filters || {}).length > 0\n const [eventCount, setEventCount] = createSignal(0)\n const [lastEvent, setLastEvent] = createSignal('')\n\n const debugLog = (event: string, data?: any) => {\n if (!props.debug) return\n setEventCount(c => c + 1)\n setLastEvent(event)\n console.log(`[ScratchpadPanel:${props.state.id}] ${event}`, data || '')\n }\n\n // ─── DX1: Proactive console messages (always, not just debug) ───\n\n const VALID_TRANSITIONS: Record<string, string[]> = {\n loading: ['processing', 'waiting_human', 'error'],\n waiting_human: ['processing', 'ready', 'complete', 'error'],\n processing: ['ready', 'complete', 'error', 'waiting_human'],\n ready: ['processing', 'complete', 'error', 'waiting_human'],\n complete: [],\n error: ['processing', 'ready', 'waiting_human'],\n }\n let prevStatus = props.state.status\n\n // Etape 1: create log\n console.info(\n `%c[MCP-UI] Scratchpad created%c id=${props.state.id} sections=${props.state.sections?.length || 0} status=${props.state.status}${props.pinned ? ' pinned=true' : ''}`,\n 'color: #10b981; font-weight: bold', 'color: inherit'\n )\n\n // Etape 3: status transitions + Etape 4: auto-close info\n createEffect(() => {\n const newStatus = props.state.status\n if (newStatus !== prevStatus) {\n console.info(`%c[MCP-UI] Scratchpad status%c ${props.state.id}: ${prevStatus} → ${newStatus}`, 'color: #3b82f6; font-weight: bold', 'color: inherit')\n if (!VALID_TRANSITIONS[prevStatus]?.includes(newStatus)) {\n console.warn(`[MCP-UI] Scratchpad ${props.state.id}: unusual transition ${prevStatus} → ${newStatus}. Expected: ${VALID_TRANSITIONS[prevStatus]?.join(', ') || 'none (terminal)'}`)\n }\n prevStatus = newStatus\n }\n // Etape 4\n if (props.autoCloseDelay && newStatus !== 'complete') {\n console.info(`[MCP-UI] Scratchpad ${props.state.id}: autoCloseDelay=${props.autoCloseDelay}ms but status='${newStatus}' — auto-close will NOT trigger.`)\n }\n })\n\n // Action aliases that auto-close the scratchpad\n const CLOSE_ALIASES = new Set(['done', 'close', 'dismiss', 'validate', 'cancel', 'sufficient'])\n\n const handleAction = (action: string, data?: unknown) => {\n // DX1 Etape 5: action dispatch\n console.info(`%c[MCP-UI] Action dispatched%c value='${action}' asyncAction=${!!props.asyncAction}`, 'color: #f59e0b; font-weight: bold', 'color: inherit')\n if (!props.asyncAction && /^(try_alt:|retry|fetch|load)/.test(action)) {\n console.warn(`[MCP-UI] ScratchpadPanel: action '${action}' looks async but asyncAction prop is not set. The button will NOT show a loading state.`)\n }\n debugLog('onAction', { action, asyncAction: props.asyncAction, data })\n if (props.asyncAction && !CLOSE_ALIASES.has(action)) {\n setLoadingAction(action)\n }\n props.onAction?.(action, data)\n if (CLOSE_ALIASES.has(action) && props.onClose) {\n props.onClose()\n }\n }\n\n // Debug: log state changes\n createEffect(() => {\n debugLog('state', { status: props.state.status, sections: props.state.sections?.length, filters: Object.keys(props.state.filters || {}), turn: props.state.turn })\n })\n\n // Auto-close on complete (unless pinned)\n createEffect(() => {\n if (props.state.status === 'complete' && props.autoCloseDelay && !props.pinned) {\n const timer = setTimeout(() => props.onClose?.(), props.autoCloseDelay)\n onCleanup(() => clearTimeout(timer))\n }\n // Clear loading action when server responds\n if (props.state.status !== 'processing' && loadingAction()) {\n setLoadingAction(null)\n }\n })\n\n // Preview auto-refresh when filters change\n createEffect(() => {\n const endpoint = props.state.previewEndpoint\n if (!endpoint) return\n const filters = props.state.filters\n if (!filters || Object.keys(filters).length === 0) return\n\n if (previewTimer) clearTimeout(previewTimer)\n previewTimer = setTimeout(async () => {\n try {\n const res = await fetch(endpoint, {\n method: props.state.previewMethod || 'POST',\n headers: { 'Content-Type': 'application/json', ...props.state.previewHeaders },\n credentials: 'include',\n body: JSON.stringify({ filters }),\n })\n if (res.ok) setLocalPreview(await res.json())\n } catch { /* ignore */ }\n }, props.state.previewDebounce || 500)\n })\n\n onCleanup(() => { if (previewTimer) clearTimeout(previewTimer) })\n\n return (\n <div\n class={`mcp-ui-root w-full bg-[color:var(--mcp-ui-surface,var(--color-white,#fff))] dark:bg-[color:var(--mcp-ui-surface,var(--color-gray-800,#1f2937))] rounded-xl border shadow-[var(--mcp-ui-shadow,var(--shadow-lg))] overflow-visible ${\n props.state.status === 'waiting_human'\n ? 'border-[color:var(--mcp-ui-accent-border,var(--color-blue-300))] dark:border-[color:var(--mcp-ui-accent-border,var(--color-blue-600))]'\n : 'border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))]'\n } ${props.pinned ? 'sticky top-0 z-40' : ''}`}\n style={{\n animation: 'scratchpad-slide-down 0.2s ease-out',\n 'scrollbar-color': 'var(--mcp-ui-scrollbar-thumb,auto) var(--mcp-ui-scrollbar-track,transparent)',\n }}\n >\n {/* Header */}\n <div\n class={`flex items-center justify-between px-4 py-3 border-b border-[color:var(--mcp-ui-border,var(--color-gray-100,#f3f4f6))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))] ${isCollapsible() ? 'cursor-pointer select-none hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-50,#f9fafb))] dark:hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-750))]' : ''}`}\n onClick={() => isCollapsible() && setCollapsed(!collapsed())}\n >\n <div class=\"flex items-center gap-2\">\n <span class=\"text-base\">&#128221;</span>\n <h3 class=\"text-sm font-semibold text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))]\">{props.state.title}</h3>\n {/* AgentStatusBadge — auto-detected from agent_card sections (v4.1.0) */}\n {(() => {\n const agentSection = props.state.sections.find(s => s.type === 'agent_card')\n if (!agentSection) return null\n const ac = parseContent(agentSection.content) as AgentCardContent | null\n if (!ac?.name) return null\n return <AgentStatusBadge agentName={ac.name} status={ac.status || 'idle'} />\n })()}\n <Show when={isCollapsible()}>\n <svg class={`w-3.5 h-3.5 text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] transition-transform ${collapsed() ? '-rotate-90' : ''}`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </Show>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class={`px-2 py-0.5 text-xs font-medium rounded-full ${badge().class}`}>{strings[badge().labelKey]}</span>\n <Show when={isClosable() && props.onClose}>\n <button onClick={(e) => { e.stopPropagation(); props.onClose?.() }} class=\"p-1 text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] hover:text-[color:var(--mcp-ui-fg-muted,var(--color-gray-600,#4b5563))] dark:hover:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))] rounded-full hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-100,#f3f4f6))] dark:hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-700,#374151))] transition-colors\" aria-label={strings.scratchpadClose}>\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" /></svg>\n </button>\n </Show>\n </div>\n </div>\n\n {/* Body */}\n <Show when={!collapsed()}>\n <div style={{ \"max-height\": props.maxHeight || \"500px\", \"overflow-y\": \"auto\" }}>\n {/* Turn history header */}\n <Show when={props.state.turnHistory && props.state.turnHistory.length > 0}>\n <div class=\"px-4 py-2 border-b border-[color:var(--mcp-ui-border,var(--color-gray-100,#f3f4f6))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))] flex flex-wrap items-center gap-1.5\">\n <For each={props.state.turnHistory}>\n {(turn, i) => (\n <>\n <Show when={i() > 0}>\n <svg class=\"w-3 h-3 text-[color:var(--mcp-ui-fg-muted,var(--color-gray-300,#d1d5db))] dark:text-[color:var(--mcp-ui-fg-muted,var(--color-gray-600,#4b5563))] flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </Show>\n <span class={`text-xs font-medium px-2 py-0.5 rounded-full ${\n turn.status === 'done' ? 'bg-[color:var(--mcp-ui-success-soft,var(--color-green-100))] dark:bg-[color:var(--mcp-ui-success-soft,color-mix(in_oklab,var(--color-green-900)_30%,transparent))] text-[color:var(--mcp-ui-success,var(--color-green-700))] dark:text-[color:var(--mcp-ui-success,var(--color-green-400))]'\n : turn.status === 'active' ? 'bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-100))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_30%,transparent))] text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))]'\n : turn.status === 'skipped' ? 'bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-100,#f3f4f6))] dark:bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-700,#374151))] text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] line-through'\n : 'bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-100,#f3f4f6))] dark:bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-700,#374151))] text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]'\n }`}>\n {turn.status === 'done' ? '✅' : turn.status === 'active' ? '●' : '○'} {turn.label}\n <Show when={turn.summary}><span class=\"ml-1 font-normal opacity-75\">— {turn.summary}</span></Show>\n </span>\n </>\n )}\n </For>\n </div>\n </Show>\n\n {/* Sections */}\n <div class=\"divide-y divide-[color:var(--mcp-ui-border,var(--color-gray-100,#f3f4f6))] dark:divide-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))]\">\n <For each={props.state.sections}>\n {(section) => (\n <SectionRenderer\n section={section}\n filters={props.state.filters}\n onFilterChange={props.onFilterChange}\n onAction={handleAction}\n onSectionEdit={props.onSectionEdit}\n onSubmit={props.onSubmit}\n debugTrace={props.debugTrace}\n />\n )}\n </For>\n </div>\n\n {/* Agent messages */}\n <Show when={props.state.agentMessages.length > 0}>\n <div class=\"px-4 py-3 border-t border-[color:var(--mcp-ui-border,var(--color-gray-100,#f3f4f6))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))] space-y-2\">\n <For each={props.state.agentMessages}>\n {(msg) => (\n <div class={`flex items-start gap-2 text-sm rounded-lg px-3 py-2 ${\n msg.type === 'warning' ? 'bg-[color:var(--mcp-ui-warning-soft,var(--color-amber-50))] dark:bg-[color:var(--mcp-ui-warning-soft,color-mix(in_oklab,var(--color-amber-900)_10%,transparent))] text-[color:var(--mcp-ui-warning,var(--color-amber-700))] dark:text-[color:var(--mcp-ui-warning,var(--color-amber-400))]'\n : msg.type === 'question' ? 'bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_10%,transparent))] text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] border border-[color:var(--mcp-ui-accent-border,var(--color-blue-200))] dark:border-[color:var(--mcp-ui-accent-border,var(--color-blue-800))]'\n : 'bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-50,#f9fafb))] dark:bg-[color:var(--mcp-ui-surface-muted,color-mix(in_oklab,var(--color-gray-700,#374151)_50%,transparent))] text-[color:var(--mcp-ui-fg-muted,var(--color-gray-600,#4b5563))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]'\n }`}>\n <span class=\"flex-shrink-0 mt-0.5\">{msg.type === 'warning' ? '⚠️' : msg.type === 'question' ? '❓' : 'ℹ️'}</span>\n <p>{msg.text}</p>\n </div>\n )}\n </For>\n </div>\n </Show>\n\n {/* Preview */}\n <Show when={preview()}>\n <div class=\"px-4 py-3 border-t border-[color:var(--mcp-ui-border,var(--color-gray-100,#f3f4f6))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))]\">\n <Show when={preview()!.count === 0} fallback={\n <>\n <div class=\"flex items-center gap-2 mb-2\">\n <span class=\"text-xs font-medium text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] uppercase tracking-wide\">{strings.scratchpadPreview}</span>\n <span class=\"px-1.5 py-0.5 text-xs font-bold bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-100))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_30%,transparent))] text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-300))] rounded\">{preview()!.count.toLocaleString(strings.locale)}</span>\n </div>\n <p class=\"text-sm text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))]\">{preview()!.summary}</p>\n <Show when={preview()!.rows && preview()!.rows!.length > 0}>\n <div class=\"mt-2 overflow-x-auto\">\n <table class=\"min-w-full text-xs\">\n <thead><tr><For each={Object.keys(preview()!.rows![0])}>{(k) => <th class=\"px-2 py-1 text-left font-medium text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">{k}</th>}</For></tr></thead>\n <tbody><For each={preview()!.rows!.slice(0, 5)}>{(row) => <tr class=\"border-t border-[color:var(--mcp-ui-border,var(--color-gray-100,#f3f4f6))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))]\"><For each={Object.values(row)}>{(v) => <td class=\"px-2 py-1 text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))]\">{String(v)}</td>}</For></tr>}</For></tbody>\n </table>\n </div>\n </Show>\n </>\n }>\n <div class=\"flex flex-col items-center gap-2 py-4 text-center\">\n <span class=\"text-2xl\">&#128269;</span>\n <p class=\"text-sm text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">{strings.scratchpadNoResults}</p>\n <button type=\"button\" onClick={() => props.onAction?.('refine_filters')} class=\"px-3 py-1.5 text-xs font-medium text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] hover:bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:hover:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_20%,transparent))] rounded-lg transition-colors\">{strings.scratchpadModifyFilters}</button>\n </div>\n </Show>\n </div>\n </Show>\n\n {/* Error state with retry */}\n <Show when={props.state.status === 'error' && props.state.error}>\n <div class=\"px-4 py-3 border-t border-[color:var(--mcp-ui-danger-border,var(--color-red-100))] dark:border-[color:var(--mcp-ui-danger-border,color-mix(in_oklab,var(--color-red-900)_30%,transparent))] bg-[color:var(--mcp-ui-danger-soft,var(--color-red-50))] dark:bg-[color:var(--mcp-ui-danger-soft,color-mix(in_oklab,var(--color-red-900)_10%,transparent))]\">\n <div class=\"flex items-start gap-2 text-sm text-[color:var(--mcp-ui-danger,var(--color-red-700))] dark:text-[color:var(--mcp-ui-danger,var(--color-red-400))]\">\n <span class=\"flex-shrink-0 mt-0.5\">⚠️</span>\n <div class=\"flex-1\">\n <p class=\"font-medium\">{props.state.error!.message}</p>\n <Show when={props.state.error!.code}>\n <p class=\"text-xs text-[color:var(--mcp-ui-danger,var(--color-red-500))] dark:text-[color:var(--mcp-ui-danger,var(--color-red-500))] mt-0.5\">\n {formatMCPUIString(strings.scratchpadErrorCode, { code: props.state.error!.code! })}\n </p>\n </Show>\n </div>\n </div>\n <div class=\"flex gap-2 mt-2\">\n <Show when={props.state.error!.retryable !== false}>\n <button type=\"button\" onClick={() => props.onRetry?.()}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg bg-[color:var(--mcp-ui-danger,var(--color-red-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] hover:bg-[color:var(--mcp-ui-danger-hover,var(--color-red-700))] transition-colors flex items-center gap-1\">\n &#128260; {strings.retry}\n </button>\n </Show>\n <Show when={props.onClose}>\n <button type=\"button\" onClick={() => props.onClose?.()}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))] text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))] hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-100,#f3f4f6))] dark:hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-700,#374151))] transition-colors\">\n {strings.scratchpadClose}\n </button>\n </Show>\n </div>\n </div>\n </Show>\n\n {/* Search button when waiting_human */}\n <Show when={props.state.status === 'waiting_human' && hasFilters()}>\n <div class=\"px-4 py-3 border-t border-[color:var(--mcp-ui-border,var(--color-gray-100,#f3f4f6))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))]\">\n <button\n type=\"button\"\n onClick={() => handleAction('search', { filters: props.state.filters })}\n class=\"w-full px-4 py-2.5 text-sm font-semibold rounded-lg text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] bg-[color:var(--mcp-ui-accent,var(--color-blue-600))] hover:bg-[color:var(--mcp-ui-accent-hover,var(--color-blue-700))] transition-colors flex items-center justify-center gap-2\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" /></svg>\n {strings.scratchpadSearch}\n </button>\n </div>\n </Show>\n </div>\n </Show>\n\n <style>{`\n @keyframes scratchpad-slide-down { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }\n `}</style>\n\n {/* Debug overlay */}\n <Show when={props.debugOverlay}>\n <div class=\"absolute bottom-1 right-1 px-2 py-1 text-[9px] font-mono bg-[color:var(--mcp-ui-overlay,color-mix(in_oklab,var(--color-black,#000)_80%,transparent))] text-[color:var(--mcp-ui-success,var(--color-green-400))] rounded z-50 pointer-events-none\">\n {props.state.id} | ev:{eventCount()} | sec:{props.state.sections?.length || 0} | {props.state.status} | last:{lastEvent()}\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Helpers ────────────────────────────────────────────────\n\n/** Parse content that may arrive as a JSON string from SSE transport */\nfunction parseContent(content: unknown): unknown {\n if (typeof content === 'string') {\n try { return JSON.parse(content) } catch { return content }\n }\n return content\n}\n\n// ─── Section Renderer ────────────────────────────────────────\n\nconst SectionRenderer: Component<{\n section: ScratchpadSection\n filters: Record<string, string | string[]>\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n onAction?: (action: string, data?: unknown) => void\n onSectionEdit?: (sectionId: string, content: unknown) => void\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n debugTrace?: boolean\n}> = (props) => {\n return (\n <div class=\"px-4 py-3 animate-[slideDown_0.2s_ease-out]\">\n <h4 class=\"text-xs font-medium text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] uppercase tracking-wide mb-2\">{props.section.title}</h4>\n <Switch>\n <Match when={props.section.type === 'data'}><DataSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'filter'}><InteractiveFilterSection content={parseContent(props.section.content)} filters={props.filters} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'message'}><p class=\"text-sm text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))]\">{String(props.section.content)}</p></Match>\n <Match when={props.section.type === 'action'}><ActionSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'steps'}><EnrichedStepsSection content={parseContent(props.section.content)} onAction={props.onAction} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'form'}><EmbeddedFormSection content={parseContent(props.section.content)} sectionId={props.section.id} onAction={props.onAction} onSubmit={props.onSubmit} debugTrace={props.debugTrace} /></Match>\n <Match when={props.section.type === 'understanding'}><UnderstandingSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'feedback'}><FeedbackSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'prompt'}><PromptSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'stepper'}><StepperProgressSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'error'}><ErrorSectionRenderer content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'source_card'}><SourceCardSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'diff'}><DiffSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'verified_text'}><VerifiedText {...(parseContent(props.section.content) as VerifiedTextContent)} onHallucinationClick={(h) => props.onAction?.('hallucination_click', h)} /></Match>\n <Match when={props.section.type === 'data_preview'}><DataPreviewSection content={parseContent(props.section.content) as DataPreviewContent} /></Match>\n <Match when={props.section.type === 'map'}>{(() => { const c = parseContent(props.section.content) as MapSectionContent; return <MapRenderer params={{ geojson: c.geojson, center: c.center, zoom: c.zoom, geojsonStyle: c.style, popup: c.popup, layers: c.layers, height: c.height || '300px', fitBounds: true }} /> })()}</Match>\n <Match when={props.section.type === 'chart'}>{(() => { const c = parseContent(props.section.content) as ChartComponentParams; return <ChartJSRenderer component={{ id: props.section.id, type: 'chart', position: { colStart: 1, colSpan: 12 }, params: { ...c, renderer: 'native', height: (c as any)?.height || '250px' } }} /> })()}</Match>\n <Match when={props.section.type === 'agent_card'}><AgentCard content={parseContent(props.section.content) as AgentCardContent} /></Match>\n <Match when={props.section.type === 'split_stepper'}><SplitStepper content={parseContent(props.section.content) as SplitStepperContent} /></Match>\n <Match when={props.section.type === 'agent_handoff'}><AgentHandoff content={parseContent(props.section.content) as AgentHandoffContent} /></Match>\n <Match when={props.section.type === 'briefing_diff'}><BriefingDiff content={parseContent(props.section.content) as BriefingDiffContent} /></Match>\n <Match when={true}><pre class=\"text-xs text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] overflow-auto\">{JSON.stringify(props.section.content, null, 2)}</pre></Match>\n </Switch>\n </div>\n )\n}\n\n// ─── Data Section ────────────────────────────────────────────\n\nconst DataSection: Component<{ content: unknown }> = (props) => {\n const entries = () => typeof props.content === 'object' && props.content ? Object.entries(props.content as Record<string, unknown>) : []\n return (\n <div class=\"space-y-1\">\n <For each={entries()}>{([k, v]) => <div class=\"flex gap-2 text-xs\"><span class=\"text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] font-mono min-w-[120px]\">{k}:</span><span class=\"text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))]\">{Array.isArray(v) ? v.join(', ') : String(v)}</span></div>}</For>\n </div>\n )\n}\n\n// ─── Interactive Filter Section (#4, #5) ─────────────────────\n\nconst InteractiveFilterSection: Component<{\n content: unknown\n filters: Record<string, string | string[]>\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [editingKey, setEditingKey] = createSignal<string | null>(null)\n const [editValue, setEditValue] = createSignal('')\n\n // Content can be a filter definition or just use props.filters\n const filterDefs = () => {\n if (typeof props.content === 'object' && props.content) return props.content as Record<string, any>\n return {}\n }\n\n const allKeys = () => {\n const fromContent = Object.keys(filterDefs())\n const fromFilters = Object.keys(props.filters || {})\n return [...new Set([...fromContent, ...fromFilters])]\n }\n\n const removeFilter = (key: string) => {\n const next = { ...props.filters }\n delete next[key]\n props.onFilterChange?.(next)\n }\n\n const setFilter = (key: string, value: string) => {\n props.onFilterChange?.({ ...props.filters, [key]: value })\n setEditingKey(null)\n setEditValue('')\n }\n\n const getDef = (key: string) => filterDefs()[key] || {}\n\n return (\n <div class=\"flex flex-wrap gap-1.5\">\n <For each={allKeys()}>\n {(key) => {\n const def = () => getDef(key)\n const value = () => props.filters[key]\n const hasValue = () => value() !== undefined && value() !== ''\n\n return (\n <div class=\"relative\">\n <Show when={hasValue()} fallback={\n <button type=\"button\" onClick={() => { setEditingKey(key); setEditValue('') }}\n class=\"inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium border border-dashed border-[color:var(--mcp-ui-border,var(--color-gray-300,#d1d5db))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))] text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] rounded-full hover:border-[color:var(--mcp-ui-accent-border,var(--color-blue-400))] hover:text-[color:var(--mcp-ui-accent,var(--color-blue-500))] transition-colors\">\n + {def()?.label || key}\n </button>\n }>\n <span class=\"inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-100))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_30%,transparent))] text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-300))] rounded-full\">\n <button type=\"button\" onClick={() => { setEditingKey(key); setEditValue(String(value() || '')) }} class=\"hover:underline\">\n <span class=\"text-[color:var(--mcp-ui-accent,var(--color-blue-500))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))]\">{def()?.label || key}:</span> {Array.isArray(value()) ? (value() as string[]).join(', ') : String(value())}\n </button>\n <Show when={props.onFilterChange}>\n <button type=\"button\" onClick={() => removeFilter(key)} class=\"ml-0.5 hover:text-[color:var(--mcp-ui-accent,var(--color-blue-900))] dark:hover:text-[color:var(--mcp-ui-accent,var(--color-blue-100))]\" aria-label={formatMCPUIString(strings.removeItem, { name: key })}>&times;</button>\n </Show>\n </span>\n </Show>\n\n {/* Inline editor */}\n <Show when={editingKey() === key}>\n <div class=\"absolute z-50 mt-1 left-0 bg-[color:var(--mcp-ui-surface,var(--color-white,#fff))] dark:bg-[color:var(--mcp-ui-surface,var(--color-gray-800,#1f2937))] border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))] rounded-lg shadow-[var(--mcp-ui-shadow,var(--shadow-lg))] p-2 min-w-[200px]\">\n <Show when={def()?.options} fallback={\n <form onSubmit={(e) => { e.preventDefault(); setFilter(key, editValue()) }} class=\"flex gap-1\">\n <input type=\"text\" value={editValue()} onInput={(e) => setEditValue(e.currentTarget.value)} placeholder={def()?.placeholder || key} autofocus\n class=\"flex-1 px-2 py-1 text-sm border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))] rounded bg-[color:var(--mcp-ui-surface,var(--color-white,#fff))] dark:bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-700,#374151))] text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))] focus:border-[color:var(--mcp-ui-focus,var(--color-blue-400))] outline-none\" />\n <button type=\"submit\" class=\"px-2 py-1 text-xs bg-[color:var(--mcp-ui-accent,var(--color-blue-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] rounded hover:bg-[color:var(--mcp-ui-accent-hover,var(--color-blue-700))]\">{strings.ok}</button>\n <button type=\"button\" onClick={() => setEditingKey(null)} class=\"px-2 py-1 text-xs text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] hover:text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))]\">{strings.cancel}</button>\n </form>\n }>\n <div class=\"max-h-48 overflow-y-auto\">\n <For each={def().options as Array<{ value: string; label: string }>}>\n {(opt) => (\n <button type=\"button\" onClick={() => setFilter(key, opt.value)}\n class={`w-full text-left px-2 py-1.5 text-sm rounded hover:bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:hover:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_20%,transparent))] ${\n String(value()) === opt.value ? 'text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-50)_50%,transparent))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_10%,transparent))]' : 'text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))]'\n }`}>\n {opt.label}\n <Show when={String(value()) === opt.value}><span class=\"ml-1\">✓</span></Show>\n </button>\n )}\n </For>\n </div>\n <button type=\"button\" onClick={() => setEditingKey(null)} class=\"mt-1 w-full px-2 py-1 text-xs text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] hover:text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] text-center\">{strings.cancel}</button>\n </Show>\n </div>\n </Show>\n </div>\n )\n }}\n </For>\n <Show when={allKeys().length === 0}>\n <p class=\"text-xs text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] italic\">{strings.scratchpadNoFilters}</p>\n </Show>\n </div>\n )\n}\n\n// ─── Embedded Form Section (#7, #8) ──────────────────────────\n\nconst EmbeddedFormSection: Component<{\n content: unknown\n sectionId: string\n onAction?: (action: string, data?: unknown) => void\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n debugTrace?: boolean\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [dynamicOptions, setDynamicOptions] = createSignal<Record<string, Array<{ label: string; value: string }>>>({})\n\n const config = () => {\n const c = props.content as any\n return {\n fields: c?.fields || [],\n submitLabel: c?.submitLabel || strings.submit,\n autoSubmitDelay: c?.autoSubmitDelay as number | undefined,\n }\n }\n\n // Initialize form data with prefill values (v4.2.0)\n const buildInitial = () => {\n const initial: Record<string, any> = {}\n for (const field of config().fields) {\n initial[field.name] = field.prefill ?? field.defaultValue ?? ''\n }\n return initial\n }\n\n const [formData, setFormData] = createSignal<Record<string, any>>(buildInitial())\n\n // Re-init when content changes (streaming updates)\n createEffect(() => {\n const fields = config().fields\n if (fields.length > 0) {\n setFormData((prev) => {\n const next = { ...prev }\n for (const field of fields) {\n // Only apply prefill if the user hasn't changed the field yet\n if (field.prefill != null && (next[field.name] === undefined || next[field.name] === '')) {\n next[field.name] = field.prefill\n }\n }\n return next\n })\n }\n })\n\n // Auto-submit countdown (v4.2.0)\n const [countdown, setCountdown] = createSignal<number | null>(null)\n let countdownTimer: ReturnType<typeof setInterval> | null = null\n const [userInteracted, setUserInteracted] = createSignal(false)\n\n const cancelCountdown = () => {\n if (countdownTimer) { clearInterval(countdownTimer); countdownTimer = null }\n setCountdown(null)\n }\n\n onCleanup(() => cancelCountdown())\n\n createEffect(() => {\n const delay = config().autoSubmitDelay\n if (!delay || userInteracted()) return\n const allRequiredPrefilled = config().fields\n .filter((f: any) => f.required)\n .every((f: any) => f.prefill != null)\n if (!allRequiredPrefilled) return\n\n let remaining = Math.ceil(delay / 1000)\n setCountdown(remaining)\n countdownTimer = setInterval(() => {\n remaining--\n if (remaining <= 0) {\n cancelCountdown()\n const form = document.querySelector(`#scratchpad-form-${props.sectionId}`) as HTMLFormElement | null\n if (form) form.requestSubmit()\n } else {\n setCountdown(remaining)\n }\n }, 1000)\n })\n\n const updateField = (name: string, value: any) => {\n if (!userInteracted()) { setUserInteracted(true); cancelCountdown() }\n setFormData(prev => ({ ...prev, [name]: value }))\n }\n\n // depends_on reactive (#9)\n createEffect(() => {\n const data = formData()\n for (const field of config().fields) {\n const dep = field.depends_on || field.dependsOn\n if (!dep) continue\n const parentValue = data[dep.field]\n if (!parentValue) continue\n const url = (dep.options_endpoint || dep.apiUrl || '').replace('{value}', encodeURIComponent(parentValue))\n if (!url) continue\n const params = new URLSearchParams(dep.extraParams || dep.extra_params || {})\n fetch(`${url}${url.includes('?') ? '&' : '?'}${params}`)\n .then(r => r.json())\n .then(items => {\n const arr = Array.isArray(items) ? items : items.results || items.features || []\n const lf = dep.label_field || dep.labelField || 'label'\n const vf = dep.value_field || dep.valueField || 'value'\n setDynamicOptions(prev => ({ ...prev, [field.name]: arr.map((i: any) => ({ label: i[lf] || String(i), value: String(i[vf] || i[lf] || i) })) }))\n })\n .catch(() => {})\n }\n })\n\n const getField = (field: any): FormFieldParams => {\n const dynOpts = dynamicOptions()[field.name]\n return dynOpts ? { ...field, options: dynOpts } as FormFieldParams : field as FormFieldParams\n }\n\n // Debug trace: track submitted values\n const [submittedValues, setSubmittedValues] = createSignal<Record<string, any> | null>(null)\n\n const handleSubmit = (e: Event) => {\n e.preventDefault()\n\n // Filter out unsupported fields, keep only values with content\n const values = Object.fromEntries(\n Object.entries(formData())\n .filter(([key]) => {\n const field = config().fields.find((f: any) => f.name === key)\n return field?.fieldStatus !== 'unsupported'\n })\n .filter(([, v]) => v !== undefined && v !== '' && !(Array.isArray(v) && v.length === 0))\n )\n\n setSubmittedValues(values)\n\n // DX1 Etape 7: form submit log\n console.info(`%c[MCP-UI] Form submitted%c section=${props.sectionId} fields=${Object.keys(values).join(',')}`, 'color: #8b5cf6; font-weight: bold', 'color: inherit')\n\n if (props.onSubmit) {\n props.onSubmit(props.sectionId, values)\n } else {\n props.onAction?.('submit_form', { sectionId: props.sectionId, values })\n }\n }\n\n // Proposal 3: prefill confidence summary\n const prefillSummary = () => {\n const fields = config().fields\n const total = fields.length\n const prefilled = fields.filter((f: any) => f.prefill != null).length\n return { total, prefilled }\n }\n\n // Proposal 4: auto-submit toast mode — compact view when ALL fields prefilled\n const [expanded, setExpanded] = createSignal(false)\n const allFieldsPrefilled = () => {\n const fields = config().fields\n return fields.length > 0 && fields.every((f: any) => f.prefill != null)\n }\n const showToast = () => allFieldsPrefilled() && !userInteracted() && !expanded() && countdown() != null\n\n return (\n <>\n <Show when={!showToast()} fallback={\n <div class=\"flex items-center gap-3 p-3 bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_20%,transparent))] border border-[color:var(--mcp-ui-accent-border,var(--color-blue-200))] dark:border-[color:var(--mcp-ui-accent-border,var(--color-blue-800))] rounded-lg text-sm\">\n <span class=\"flex-1 text-[color:var(--mcp-ui-accent,var(--color-blue-800))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-200))] font-medium\">\n {config().fields.map((f: any) => f.displayHint || f.prefill).join(', ')}\n </span>\n <span class=\"text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-300))]\">{countdown()}s...</span>\n <button type=\"button\" onClick={() => { setExpanded(true); cancelCountdown(); setUserInteracted(true) }}\n class=\"text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] underline text-xs\">{strings.scratchpadEdit}</button>\n <button type=\"button\" onClick={() => { cancelCountdown(); setUserInteracted(true) }}\n class=\"text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] hover:text-[color:var(--mcp-ui-fg-muted,var(--color-gray-600,#4b5563))] dark:hover:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))]\">&times;</button>\n </div>\n }>\n <form id={`scratchpad-form-${props.sectionId}`} onSubmit={handleSubmit} class=\"flex flex-col gap-3\">\n {/* Proposal 3: prefill summary */}\n <Show when={prefillSummary().prefilled > 0}>\n <p class=\"text-xs text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">\n {formatMCPUIString(\n prefillSummary().prefilled === 1 ? strings.formPrefilledOne : strings.formPrefilledMany,\n { count: prefillSummary().prefilled, total: prefillSummary().total }\n )}\n </p>\n </Show>\n <For each={config().fields}>\n {(field) => (\n <FormFieldRenderer\n field={getField(field)}\n value={formData()[field.name]}\n onChange={(val) => updateField(field.name, val)}\n formData={formData}\n />\n )}\n </For>\n <Show when={countdown() != null}>\n <div class=\"flex items-center gap-3 p-2 bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_20%,transparent))] border border-[color:var(--mcp-ui-accent-border,var(--color-blue-200))] dark:border-[color:var(--mcp-ui-accent-border,var(--color-blue-800))] rounded-md text-sm\">\n <span class=\"text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-300))]\">\n {formatMCPUIString(strings.formSubmitCountdown, {\n label: config().submitLabel,\n seconds: countdown()!,\n })}\n </span>\n <button\n type=\"button\"\n onClick={() => { cancelCountdown(); setUserInteracted(true) }}\n class=\"text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] underline hover:text-[color:var(--mcp-ui-accent,var(--color-blue-800))] dark:hover:text-[color:var(--mcp-ui-accent,var(--color-blue-200))]\"\n >\n {strings.cancel}\n </button>\n </div>\n </Show>\n <div class=\"flex justify-end\">\n <button type=\"submit\" class=\"px-4 py-2 text-sm font-medium rounded-lg text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] bg-[color:var(--mcp-ui-accent,var(--color-blue-600))] hover:bg-[color:var(--mcp-ui-accent-hover,var(--color-blue-700))] transition-colors\">\n {config().submitLabel}\n </button>\n </div>\n </form>\n </Show>\n\n {/* Debug trace panel */}\n <Show when={props.debugTrace}>\n <FormDebugTrace\n fields={config().fields}\n formData={formData()}\n submittedValues={submittedValues()}\n autoSubmitDelay={config().autoSubmitDelay}\n userInteracted={userInteracted()}\n rawContent={props.content}\n />\n </Show>\n </>\n )\n}\n\n// ─── Form Debug Trace Panel ─────────────────────────────────\n\nconst FormDebugTrace: Component<{\n fields: any[]\n formData: Record<string, any>\n submittedValues: Record<string, any> | null\n autoSubmitDelay?: number\n userInteracted: boolean\n rawContent: unknown\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [open, setOpen] = createSignal(false)\n const [showRaw, setShowRaw] = createSignal(false)\n\n const prefilledCount = () => props.fields.filter((f: any) => f.prefill != null).length\n const requiredFields = () => props.fields.filter((f: any) => f.required)\n const missingRequired = () => requiredFields().filter((f: any) => f.prefill == null)\n\n const autoSubmitReason = () => {\n if (!props.autoSubmitDelay) return 'no autoSubmitDelay configured'\n if (missingRequired().length > 0) return `${missingRequired().length} required field(s) without prefill`\n if (props.userInteracted) return 'user interacted — cancelled'\n return 'all conditions met'\n }\n\n // Server-side _debug data\n const serverDebug = () => (props.rawContent as any)?._debug\n\n return (\n <div class=\"mt-2 border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))] rounded-md text-xs font-mono\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open())}\n class=\"w-full px-3 py-1.5 text-left text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-50,#f9fafb))] dark:hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-800,#1f2937))] flex items-center gap-1\"\n >\n <span>{open() ? '\\u25BE' : '\\u25B8'}</span>\n Debug trace ({prefilledCount()}/{props.fields.length} prefilled)\n </button>\n <Show when={open()}>\n <div class=\"px-3 pb-3 space-y-2 text-[color:var(--mcp-ui-fg-muted,var(--color-gray-600,#4b5563))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] border-t border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))] pt-2\">\n <div>Fields: {props.fields.length} total, {prefilledCount()} prefilled</div>\n\n <For each={props.fields}>\n {(field: any) => (\n <div class=\"pl-2 border-l-2 border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))] space-y-0.5\">\n <div class=\"text-[color:var(--mcp-ui-fg,var(--color-gray-800,#1f2937))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-200,#e5e7eb))] font-medium\">{field.name}:</div>\n <Show when={field.prefill != null}>\n <div> prefill: {JSON.stringify(field.prefill)}</div>\n </Show>\n <Show when={!field.prefill}>\n <div class=\"text-[color:var(--mcp-ui-warning,var(--color-amber-500))]\"> prefill: (none)</div>\n </Show>\n <Show when={field.source}><div> source: {field.source}</div></Show>\n <Show when={field.displayHint}><div> displayHint: \"{field.displayHint}\"</div></Show>\n <Show when={field.muted}><div> muted: true</div></Show>\n <Show when={field.prefillMode}><div> prefillMode: {field.prefillMode}</div></Show>\n <Show when={field.valueFormat}><div> valueFormat: /{field.valueFormat}/</div></Show>\n <Show when={props.submittedValues}>\n {(() => {\n const v = props.submittedValues![field.name]\n const hasValue = v !== undefined && v !== '' && !(Array.isArray(v) && v.length === 0)\n return (\n <div class={hasValue ? 'text-[color:var(--mcp-ui-success,var(--color-green-600))] dark:text-[color:var(--mcp-ui-success,var(--color-green-400))]' : 'text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]'}>\n {'\\u2192'} submitted: {hasValue ? `${JSON.stringify(v)} \\u2713` : '(empty)'}\n </div>\n )\n })()}\n </Show>\n </div>\n )}\n </For>\n\n <div class=\"pt-1 border-t border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))]\">\n autoSubmit: {props.autoSubmitDelay ? 'true' : 'false'}\n {props.autoSubmitDelay ? ` (${props.autoSubmitDelay}ms)` : ''}\n <div> reason: {autoSubmitReason()}</div>\n </div>\n\n <Show when={serverDebug()}>\n <div class=\"pt-1 border-t border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))]\">\n <div class=\"font-medium text-[color:var(--mcp-ui-fg,var(--color-gray-800,#1f2937))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-200,#e5e7eb))]\">Server _debug:</div>\n <Show when={serverDebug()?.resolvers}>\n <For each={serverDebug().resolvers}>\n {(r: any) => (\n <div class=\"pl-2\">\n {r.field}: {r.resolver} \"{r.input}\" {'\\u2192'} \"{r.output}\" ({r.ms}ms)\n </div>\n )}\n </For>\n </Show>\n <Show when={serverDebug()?.routing}>\n <div class=\"pl-2\">routing: {serverDebug().routing.topic} via {serverDebug().routing.method} ({serverDebug().routing.ms}ms)</div>\n </Show>\n <Show when={serverDebug()?.missingFields}>\n <div class=\"pl-2 text-[color:var(--mcp-ui-warning,var(--color-amber-500))]\">missing: {serverDebug().missingFields.join(', ')}</div>\n </Show>\n </div>\n </Show>\n\n <div class=\"pt-1 border-t border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))]\">\n <button type=\"button\" onClick={() => setShowRaw(!showRaw())} class=\"text-[color:var(--mcp-ui-accent,var(--color-blue-500))] hover:text-[color:var(--mcp-ui-accent,var(--color-blue-700))] underline\">\n {showRaw() ? strings.scratchpadHideRaw : strings.scratchpadShowRaw}\n </button>\n <Show when={showRaw()}>\n <pre class=\"mt-1 p-2 bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-50,#f9fafb))] dark:bg-[color:var(--mcp-ui-surface,var(--color-gray-900,#111827))] rounded max-h-48 overflow-auto text-[10px]\">\n {JSON.stringify(props.rawContent, null, 2)}\n </pre>\n </Show>\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Enriched Steps Section (#6) ─────────────────────────────\n\nconst EnrichedStepsSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const stepsData = () => {\n const c = props.content as any\n return { steps: c?.steps || [], currentStep: c?.currentStep ?? 0 }\n }\n\n return (\n <div class=\"space-y-3\">\n <For each={stepsData().steps}>\n {(step: any) => (\n <div class={`rounded-lg ${step.status === 'active' ? 'bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-50)_50%,transparent))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_10%,transparent))] border border-[color:var(--mcp-ui-accent-border,var(--color-blue-200))] dark:border-[color:var(--mcp-ui-accent-border,var(--color-blue-800))] p-3 animate-pulse' : 'px-1'}`}>\n <div class={`flex items-center gap-2 text-sm font-medium ${\n step.status === 'done' ? 'text-[color:var(--mcp-ui-success,var(--color-green-600))] dark:text-[color:var(--mcp-ui-success,var(--color-green-400))]'\n : step.status === 'active' ? 'text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))]'\n : 'text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]'\n }`}>\n <span>{step.status === 'done' ? '✅' : step.status === 'active' ? '●' : '○'}</span>\n {step.label}\n <Show when={step.description && step.status === 'active'}>\n <span class=\"text-xs font-normal text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">— {step.description}</span>\n </Show>\n </div>\n\n {/* Embedded content for active step */}\n <Show when={step.status === 'active' && step.content}>\n <div class=\"mt-2 ml-6\">\n <SectionRenderer\n section={step.content}\n filters={{}}\n onFilterChange={props.onFilterChange}\n onAction={props.onAction}\n />\n </div>\n </Show>\n </div>\n )}\n </For>\n\n {/* Next button */}\n <Show when={stepsData().steps.some((s: any) => s.status === 'active')}>\n <div class=\"flex justify-end\">\n <button type=\"button\" onClick={() => props.onAction?.('next_step', { step: stepsData().currentStep })}\n class=\"px-3 py-1.5 text-sm font-medium text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] hover:bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:hover:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_20%,transparent))] rounded-lg transition-colors flex items-center gap-1\">\n {strings.scratchpadNextStep} <svg class=\"w-3.5 h-3.5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </button>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Action Section ──────────────────────────────────────────\n\nconst ActionSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const data = () => {\n const c = props.content as any\n if (Array.isArray(c)) return { actions: c, title: undefined, preview: undefined, validation: undefined }\n if (c && Array.isArray(c.actions)) return { actions: c.actions, title: c.title, preview: c.preview, validation: c.validation }\n return { actions: [], title: undefined, preview: undefined, validation: undefined }\n }\n\n return (\n <div>\n {/* Confirm checkpoint: title + preview (v4.1.0) */}\n <Show when={data().title}>\n <p class=\"text-sm font-medium text-[color:var(--mcp-ui-fg,var(--color-gray-800,#1f2937))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-200,#e5e7eb))] mb-2\">{data().title}</p>\n </Show>\n <Show when={data().preview}>\n {(preview) => (\n <div class=\"mb-2 p-2 rounded bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-50,#f9fafb))] dark:bg-[color:var(--mcp-ui-surface,var(--color-gray-800,#1f2937))] border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))] text-xs text-[color:var(--mcp-ui-fg-muted,var(--color-gray-600,#4b5563))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">\n <Show when={preview().count != null}>\n <span class=\"font-medium text-[color:var(--mcp-ui-fg,var(--color-gray-800,#1f2937))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-200,#e5e7eb))]\">{preview().count}</span> {strings.scratchpadItems}\n </Show>\n <Show when={preview().summary}>\n <span class=\"ml-1\">&mdash; {preview().summary}</span>\n </Show>\n </div>\n )}\n </Show>\n <Show when={data().validation && data().validation.confidence != null}>\n <div class=\"mb-2 flex items-center gap-2 text-xs\">\n <span classList={{\n 'text-[color:var(--mcp-ui-success,var(--color-green-600))] dark:text-[color:var(--mcp-ui-success,var(--color-green-400))]': data().validation.confidence >= 0.8,\n 'text-[color:var(--mcp-ui-warning,var(--color-amber-600))] dark:text-[color:var(--mcp-ui-warning,var(--color-amber-400))]': data().validation.confidence >= 0.5 && data().validation.confidence < 0.8,\n 'text-[color:var(--mcp-ui-danger,var(--color-red-600))] dark:text-[color:var(--mcp-ui-danger,var(--color-red-400))]': data().validation.confidence < 0.5,\n }}>\n {formatMCPUIString(strings.verifiedConfidence, {\n pct: Math.round(data().validation.confidence * 100),\n })}\n </span>\n <Show when={data().validation.hallucinated?.length > 0}>\n <span class=\"text-[color:var(--mcp-ui-warning,var(--color-amber-600))]\">\n {formatMCPUIString(strings.verifiedUnverifiedCount, {\n count: data().validation.hallucinated.length,\n })}\n </span>\n </Show>\n </div>\n </Show>\n\n {/* Action buttons */}\n <div class=\"flex flex-wrap gap-2\">\n <For each={data().actions as Array<{ label: string; value?: string; action?: string; variant?: string; icon?: string }>}>\n {(item) => (\n <button type=\"button\" on:click={() => props.onAction?.(item.value || item.action || item.label, item)}\n class={`px-3 py-1.5 text-sm font-medium rounded-lg transition-colors ${\n item.variant === 'primary' ? 'bg-[color:var(--mcp-ui-accent,var(--color-blue-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] hover:bg-[color:var(--mcp-ui-accent-hover,var(--color-blue-700))]'\n : item.variant === 'danger' ? 'bg-[color:var(--mcp-ui-danger,var(--color-red-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] hover:bg-[color:var(--mcp-ui-danger-hover,var(--color-red-700))]'\n : item.variant === 'secondary' ? 'border border-[color:var(--mcp-ui-accent-border,var(--color-blue-300))] dark:border-[color:var(--mcp-ui-accent-border,var(--color-blue-600))] text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-300))] hover:bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:hover:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_20%,transparent))]'\n : 'border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))] text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))] hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-100,#f3f4f6))] dark:hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-700,#374151))]'\n }`}>\n <Show when={item.icon}><span class=\"mr-1\">{item.icon}</span></Show>\n {item.label}\n </button>\n )}\n </For>\n </div>\n </div>\n )\n}\n\n// ─── Understanding Section — agent comprehension ─────────────\n\nconst UnderstandingSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { detections: c?.detections || [], warnings: c?.warnings || [] }\n }\n\n const confidenceClass = (conf?: string) => {\n switch (conf) {\n case 'high': return 'bg-[color:var(--mcp-ui-success-soft,var(--color-green-100))] dark:bg-[color:var(--mcp-ui-success-soft,color-mix(in_oklab,var(--color-green-900)_30%,transparent))] text-[color:var(--mcp-ui-success,var(--color-green-700))] dark:text-[color:var(--mcp-ui-success,var(--color-green-400))]'\n case 'medium': return 'bg-[color:var(--mcp-ui-warning-soft,var(--color-yellow-100))] dark:bg-[color:var(--mcp-ui-warning-soft,color-mix(in_oklab,var(--color-yellow-900)_30%,transparent))] text-[color:var(--mcp-ui-warning,var(--color-yellow-700))] dark:text-[color:var(--mcp-ui-warning,var(--color-yellow-400))]'\n case 'low': return 'bg-[color:var(--mcp-ui-danger-soft,var(--color-red-100))] dark:bg-[color:var(--mcp-ui-danger-soft,color-mix(in_oklab,var(--color-red-900)_30%,transparent))] text-[color:var(--mcp-ui-danger,var(--color-red-700))] dark:text-[color:var(--mcp-ui-danger,var(--color-red-400))]'\n default: return 'bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-100,#f3f4f6))] dark:bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-700,#374151))] text-[color:var(--mcp-ui-fg-muted,var(--color-gray-600,#4b5563))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]'\n }\n }\n\n return (\n <div class=\"space-y-2\">\n <div class=\"space-y-1.5\">\n <For each={data().detections}>\n {(det: any) => (\n <div class=\"flex items-center gap-2 text-sm\">\n <span class={`px-1.5 py-0.5 text-xs font-medium rounded ${confidenceClass(det.confidence)}`}>\n {det.label}\n </span>\n <span class=\"text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))]\">{det.value}</span>\n </div>\n )}\n </For>\n </div>\n <Show when={data().warnings.length > 0}>\n <div class=\"space-y-1\">\n <For each={data().warnings}>\n {(w: string) => (\n <div class=\"flex items-start gap-1.5 text-xs text-[color:var(--mcp-ui-warning,var(--color-amber-600))] dark:text-[color:var(--mcp-ui-warning,var(--color-amber-400))]\">\n <span class=\"flex-shrink-0\">⚠️</span>\n <span>{w}</span>\n </div>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Feedback Section — thumbs up/down ───────────────────────\n\nconst FeedbackSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [comment, setComment] = createSignal('')\n const [showComment, setShowComment] = createSignal(false)\n const [submitted, setSubmitted] = createSignal<string | null>(null)\n // The badge shows the chosen option's LABEL (payload or localized default),\n // never its machine value ('approve' / 'reject' / 'comment').\n const [submittedLabel, setSubmittedLabel] = createSignal('')\n const data = () => {\n const c = props.content as any\n const options = c?.options || [\n { value: c?.approve?.value || 'approve', label: c?.approve?.label || strings.yes, icon: '\\uD83D\\uDC4D', variant: 'primary' },\n { value: c?.reject?.value || 'reject', label: c?.reject?.label || strings.no, icon: '\\uD83D\\uDC4E' },\n ]\n return {\n question: c?.question || '',\n options: options as Array<{ value: string; label: string; icon?: string; variant?: string; needsComment?: boolean }>,\n allowFreeText: c?.allowFreeText ?? c?.allowComment ?? false,\n placeholder: c?.placeholder || c?.commentPlaceholder || strings.scratchpadCommentPlaceholder,\n // v4.1.0: per-step feedback\n agentId: c?.agentId as string | undefined,\n stepId: c?.stepId as string | undefined,\n }\n }\n\n const handleOption = (option: any) => {\n if (option.needsComment) {\n setShowComment(true)\n return\n }\n setSubmitted(option.value)\n setSubmittedLabel(option.label ?? '')\n const payload = {\n option: option.value,\n comment: comment(),\n ...(data().agentId ? { agentId: data().agentId } : {}),\n ...(data().stepId ? { stepId: data().stepId } : {}),\n }\n console.info('[MCP-UI:HITL] user responded', {\n agentId: data().agentId, stepId: data().stepId, action: option.value,\n })\n props.onAction?.('feedback', payload)\n }\n\n return (\n <div class=\"space-y-3\">\n <p class=\"text-sm text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))]\">{data().question}</p>\n\n {/* Already submitted — show micro-badge */}\n <Show when={submitted()}>\n <div class=\"flex items-center gap-2 text-xs text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">\n <span classList={{\n 'text-[color:var(--mcp-ui-success,var(--color-green-600))]': submitted() === 'approve',\n 'text-[color:var(--mcp-ui-danger,var(--color-red-600))]': submitted() === 'reject',\n 'text-[color:var(--mcp-ui-accent,var(--color-blue-600))]': submitted() !== 'approve' && submitted() !== 'reject',\n }}>\n {submitted() === 'approve' ? '\\u2705' : submitted() === 'reject' ? '\\u274C' : '\\uD83D\\uDCAC'} {submittedLabel()}\n </span>\n <Show when={comment()}>\n <span class=\"italic\">&mdash; {comment()}</span>\n </Show>\n </div>\n </Show>\n\n {/* Buttons — hidden after submit */}\n <Show when={!submitted()}>\n <div class=\"flex flex-wrap gap-2\">\n <For each={data().options}>\n {(option) => (\n <button type=\"button\" on:click={() => handleOption(option)}\n class={`px-3 py-1.5 text-sm font-medium rounded-lg transition-colors flex items-center gap-1 ${\n option.variant === 'primary' ? 'bg-[color:var(--mcp-ui-accent,var(--color-blue-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] hover:bg-[color:var(--mcp-ui-accent-hover,var(--color-blue-700))]'\n : option.variant === 'danger' ? 'bg-[color:var(--mcp-ui-danger,var(--color-red-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] hover:bg-[color:var(--mcp-ui-danger-hover,var(--color-red-700))]'\n : 'border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))] text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))] hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-100,#f3f4f6))] dark:hover:bg-[color:var(--mcp-ui-surface-hover,var(--color-gray-700,#374151))]'\n }`}>\n <Show when={option.icon}><span>{option.icon}</span></Show>\n {option.label}\n </button>\n )}\n </For>\n </div>\n <Show when={data().allowFreeText || showComment()}>\n <div class=\"flex gap-1\">\n <input type=\"text\" value={comment()} onInput={(e) => setComment(e.currentTarget.value)}\n placeholder={data().placeholder} autofocus={showComment()}\n class=\"flex-1 px-3 py-2 text-sm border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-600,#4b5563))] rounded-lg bg-[color:var(--mcp-ui-surface,var(--color-white,#fff))] dark:bg-[color:var(--mcp-ui-surface-muted,var(--color-gray-700,#374151))] text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))] focus:border-[color:var(--mcp-ui-focus,var(--color-blue-400))] outline-none\" />\n <button type=\"button\" on:click={() => { setSubmitted('comment'); setSubmittedLabel(''); props.onAction?.('feedback', { option: 'comment', comment: comment(), agentId: data().agentId, stepId: data().stepId }) }}\n class=\"px-3 py-2 text-sm bg-[color:var(--mcp-ui-accent,var(--color-blue-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] rounded-lg hover:bg-[color:var(--mcp-ui-accent-hover,var(--color-blue-700))]\">{strings.scratchpadSend}</button>\n </div>\n </Show>\n </Show>\n </div>\n )\n}\n\n// ─── Prompt Section — agent interpretation ───────────────────\n\nconst PromptSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const data = () => {\n const c = props.content as any\n return {\n originalQuery: c?.originalQuery || '',\n interpretation: c?.interpretation || '',\n extracted: c?.extracted || {},\n plan: c?.plan || '',\n editable: c?.editable ?? false,\n }\n }\n\n return (\n <div class=\"space-y-2\">\n <Show when={data().originalQuery}>\n <p class=\"text-xs text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] italic\">\"{data().originalQuery}\"</p>\n </Show>\n <div class=\"space-y-1\">\n <For each={Object.entries(data().extracted)}>\n {([key, value]) => (\n <div class=\"flex gap-2 text-sm\">\n <span class=\"text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))] font-medium min-w-[80px]\">{key}:</span>\n <span class=\"text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))]\">{String(value)}</span>\n </div>\n )}\n </For>\n </div>\n <Show when={data().plan}>\n <div class=\"mt-2 px-3 py-2 bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_10%,transparent))] rounded-lg text-sm text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-300))]\">\n <span class=\"font-medium\">{strings.scratchpadPlan}</span> {data().plan}\n </div>\n </Show>\n <Show when={data().editable}>\n <button type=\"button\" onClick={() => props.onAction?.('edit_prompt', data())}\n class=\"text-xs text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] hover:underline flex items-center gap-1\">\n &#9998; {strings.scratchpadModify}\n </button>\n </Show>\n </div>\n )\n}\n\n// ─── Stepper Progress Section (multi-source) ─────────────────\n\nconst StepperProgressSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return {\n steps: (c?.steps || []) as Array<{ id: string; label: string; status: string; summary?: string; duration_ms?: number }>,\n orientation: c?.orientation || 'horizontal',\n }\n }\n\n const statusIcon = (status: string) => {\n switch (status) {\n case 'done': return '✅'\n case 'active': return '🔄'\n case 'error': return '❌'\n default: return '⏳'\n }\n }\n\n const isHorizontal = () => data().orientation === 'horizontal'\n\n return (\n <Show when={isHorizontal()} fallback={\n <div class=\"space-y-2\">\n <For each={data().steps}>\n {(step) => (\n <div class={`flex items-start gap-2 text-sm ${step.status === 'active' ? 'font-medium' : ''} ${step.status === 'pending' ? 'text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]' : 'text-[color:var(--mcp-ui-fg,var(--color-gray-700,#374151))] dark:text-[color:var(--mcp-ui-fg,var(--color-gray-300,#d1d5db))]'}`}>\n <span class=\"flex-shrink-0\">{statusIcon(step.status)}</span>\n <div>\n <span>{step.label}</span>\n <Show when={step.summary}>\n <span class=\"ml-1 text-xs text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">— {step.summary}</span>\n </Show>\n <Show when={step.duration_ms}>\n <span class=\"ml-1 text-xs text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">({step.duration_ms}ms)</span>\n </Show>\n </div>\n </div>\n )}\n </For>\n </div>\n }>\n <div class=\"flex items-center gap-1 flex-wrap\">\n <For each={data().steps}>\n {(step, i) => (\n <>\n <Show when={i() > 0}>\n <svg class=\"w-3 h-3 text-[color:var(--mcp-ui-fg-muted,var(--color-gray-300,#d1d5db))] dark:text-[color:var(--mcp-ui-fg-muted,var(--color-gray-600,#4b5563))] flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </Show>\n <div class={`flex items-center gap-1 px-2 py-1 rounded text-xs ${\n step.status === 'done' ? 'bg-[color:var(--mcp-ui-success-soft,var(--color-green-50))] dark:bg-[color:var(--mcp-ui-success-soft,color-mix(in_oklab,var(--color-green-900)_20%,transparent))] text-[color:var(--mcp-ui-success,var(--color-green-700))] dark:text-[color:var(--mcp-ui-success,var(--color-green-400))]'\n : step.status === 'active' ? 'bg-[color:var(--mcp-ui-accent-soft,var(--color-blue-50))] dark:bg-[color:var(--mcp-ui-accent-soft,color-mix(in_oklab,var(--color-blue-900)_20%,transparent))] text-[color:var(--mcp-ui-accent,var(--color-blue-700))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))] font-medium animate-pulse'\n : step.status === 'error' ? 'bg-[color:var(--mcp-ui-danger-soft,var(--color-red-50))] dark:bg-[color:var(--mcp-ui-danger-soft,color-mix(in_oklab,var(--color-red-900)_20%,transparent))] text-[color:var(--mcp-ui-danger,var(--color-red-700))] dark:text-[color:var(--mcp-ui-danger,var(--color-red-400))]'\n : 'text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]'\n }`}>\n <span>{statusIcon(step.status)}</span>\n <span>{step.label}</span>\n <Show when={step.summary}>\n <span class=\"text-[10px] opacity-75\">{step.summary}</span>\n </Show>\n </div>\n </>\n )}\n </For>\n </div>\n </Show>\n )\n}\n\n// ─── Error Section (F6) ──────────────────────────────────────\n\nconst ErrorSectionRenderer: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const strings = useMCPUIStrings()\n const [showDetails, setShowDetails] = createSignal(false)\n const data = () => {\n const c = props.content as any\n const d = { message: c?.message || strings.scratchpadError, severity: c?.severity || 'error', retryAction: c?.retryAction, retryLabel: c?.retryLabel || strings.retry, details: c?.details, timestamp: c?.timestamp }\n // DX1 Etape 8\n console.info(`%c[MCP-UI] Error section rendered%c severity=${d.severity} retry=${!!d.retryAction}`, 'color: #ef4444; font-weight: bold', 'color: inherit')\n return d\n }\n const isWarning = () => data().severity === 'warning'\n\n return (\n <div class={`rounded-lg px-3 py-2 text-sm ${isWarning() ? 'bg-[color:var(--mcp-ui-warning-soft,var(--color-amber-50))] dark:bg-[color:var(--mcp-ui-warning-soft,color-mix(in_oklab,var(--color-amber-900)_10%,transparent))] text-[color:var(--mcp-ui-warning,var(--color-amber-700))] dark:text-[color:var(--mcp-ui-warning,var(--color-amber-400))] border border-[color:var(--mcp-ui-warning-border,var(--color-amber-200))] dark:border-[color:var(--mcp-ui-warning-border,var(--color-amber-800))]' : 'bg-[color:var(--mcp-ui-danger-soft,var(--color-red-50))] dark:bg-[color:var(--mcp-ui-danger-soft,color-mix(in_oklab,var(--color-red-900)_10%,transparent))] text-[color:var(--mcp-ui-danger,var(--color-red-700))] dark:text-[color:var(--mcp-ui-danger,var(--color-red-400))] border border-[color:var(--mcp-ui-danger-border,var(--color-red-200))] dark:border-[color:var(--mcp-ui-danger-border,var(--color-red-800))]'}`}>\n <div class=\"flex items-start gap-2\">\n <span class=\"flex-shrink-0\">{isWarning() ? '⚠️' : '❌'}</span>\n <div class=\"flex-1\">\n <p>{data().message}</p>\n <div class=\"flex gap-2 mt-2\">\n <Show when={data().retryAction}>\n <button type=\"button\" onClick={() => props.onAction?.(data().retryAction!)} class={`px-2 py-1 text-xs font-medium rounded ${isWarning() ? 'bg-[color:var(--mcp-ui-warning,var(--color-amber-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] hover:bg-[color:var(--mcp-ui-warning-hover,var(--color-amber-700))]' : 'bg-[color:var(--mcp-ui-danger,var(--color-red-600))] text-[color:var(--mcp-ui-accent-fg,var(--color-white,#fff))] hover:bg-[color:var(--mcp-ui-danger-hover,var(--color-red-700))]'} transition-colors`}>&#128260; {data().retryLabel}</button>\n </Show>\n <Show when={data().details}>\n <button type=\"button\" onClick={() => setShowDetails(!showDetails())} class=\"px-2 py-1 text-xs opacity-70 hover:opacity-100\">&#9654; {strings.scratchpadDetails}</button>\n </Show>\n </div>\n <Show when={showDetails() && data().details}>\n <pre class=\"mt-2 text-xs opacity-70 overflow-x-auto\">{data().details}</pre>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n\n// ─── Source Card Section (F9) ────────────────────────────────\n\nconst SourceCardSection: Component<{ content: unknown }> = (props) => {\n const strings = useMCPUIStrings()\n const data = () => {\n const c = props.content as any\n return { name: c?.name || strings.scratchpadSource, status: c?.status || 'available', capabilities: c?.capabilities || [], latency_ms: c?.latency_ms, freshness: c?.freshness, row_count: c?.row_count }\n }\n const statusIcon = () => ({ queried: '✅', available: '📦', error: '❌' } as Record<string, string>)[data().status] || '📦'\n\n return (\n <div class=\"rounded-lg border border-[color:var(--mcp-ui-border,var(--color-gray-200,#e5e7eb))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))] px-3 py-2\">\n <div class=\"flex items-center justify-between mb-1.5\">\n <span class=\"text-sm font-medium text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))]\">{statusIcon()} {data().name}</span>\n <Show when={data().row_count !== undefined}>\n <span class=\"text-xs font-bold text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))]\">\n {formatMCPUIString(strings.scratchpadResultCount, {\n count: data().row_count?.toLocaleString(strings.locale) ?? '',\n })}\n </span>\n </Show>\n </div>\n <div class=\"flex flex-wrap gap-1.5 mb-1\">\n <For each={data().capabilities}>\n {(cap: any) => (\n <span class={`text-[10px] px-1.5 py-0.5 rounded ${cap.supported ? 'bg-[color:var(--mcp-ui-success-soft,var(--color-green-100))] dark:bg-[color:var(--mcp-ui-success-soft,color-mix(in_oklab,var(--color-green-900)_30%,transparent))] text-[color:var(--mcp-ui-success,var(--color-green-700))] dark:text-[color:var(--mcp-ui-success,var(--color-green-400))]' : 'bg-[color:var(--mcp-ui-danger-soft,var(--color-red-100))] dark:bg-[color:var(--mcp-ui-danger-soft,color-mix(in_oklab,var(--color-red-900)_30%,transparent))] text-[color:var(--mcp-ui-danger,var(--color-red-600))] dark:text-[color:var(--mcp-ui-danger,var(--color-red-400))]'}`}>\n {cap.supported ? '✅' : '❌'} {cap.label}\n </span>\n )}\n </For>\n </div>\n <Show when={data().freshness || data().latency_ms}>\n <p class=\"text-[10px] text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">{[data().freshness, data().latency_ms ? `${data().latency_ms}ms` : ''].filter(Boolean).join(' · ')}</p>\n </Show>\n </div>\n )\n}\n\n// ─── Diff Section (F10) ──────────────────────────────────────\n\nconst DiffSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { left: c?.left || { label: 'A', rows: [] }, right: c?.right || { label: 'B', rows: [] }, highlight: c?.highlight_columns || [] }\n }\n const allKeys = () => {\n const l = data().left.rows[0] || {}\n const r = data().right.rows[0] || {}\n return [...new Set([...Object.keys(l), ...Object.keys(r)])]\n }\n\n return (\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full text-xs\">\n <thead>\n <tr>\n <th class=\"px-2 py-1 text-left text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\"></th>\n <th class=\"px-2 py-1 text-left font-medium text-[color:var(--mcp-ui-accent,var(--color-blue-600))] dark:text-[color:var(--mcp-ui-accent,var(--color-blue-400))]\">{data().left.label}</th>\n <th class=\"px-2 py-1 text-left font-medium text-[color:var(--mcp-ui-secondary,var(--color-purple-600))] dark:text-[color:var(--mcp-ui-secondary,var(--color-purple-400))]\">{data().right.label}</th>\n </tr>\n </thead>\n <tbody>\n <For each={allKeys()}>\n {(key) => {\n const lVal = () => data().left.rows[0]?.[key]\n const rVal = () => data().right.rows[0]?.[key]\n const isDiff = () => String(lVal()) !== String(rVal()) && data().highlight.includes(key)\n return (\n <tr class={`border-t border-[color:var(--mcp-ui-border,var(--color-gray-100,#f3f4f6))] dark:border-[color:var(--mcp-ui-border,var(--color-gray-700,#374151))] ${isDiff() ? 'bg-[color:var(--mcp-ui-warning-soft,var(--color-yellow-50))] dark:bg-[color:var(--mcp-ui-warning-soft,color-mix(in_oklab,var(--color-yellow-900)_10%,transparent))]' : ''}`}>\n <td class=\"px-2 py-1 font-mono text-[color:var(--mcp-ui-fg-muted,var(--color-gray-500,#6b7280))] dark:text-[color:var(--mcp-ui-fg-subtle,var(--color-gray-400,#9ca3af))]\">{key}</td>\n <td class=\"px-2 py-1 text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))]\">{lVal() !== undefined ? String(lVal()) : '—'}</td>\n <td class=\"px-2 py-1 text-[color:var(--mcp-ui-fg,var(--color-gray-900,#111827))] dark:text-[color:var(--mcp-ui-fg,var(--color-white,#fff))]\">{rVal() !== undefined ? String(rVal()) : '—'}</td>\n </tr>\n )\n }}\n </For>\n </tbody>\n </table>\n </div>\n )\n}\n"],"names":["STATUS_BADGES","loading","labelKey","class","ready","waiting_human","processing","complete","error","ScratchpadPanel","props","strings","useMCPUIStrings","collapsed","setCollapsed","createSignal","localPreview","setLocalPreview","undefined","loadingAction","setLoadingAction","previewTimer","badge","state","status","isClosable","closable","isCollapsible","collapsible","preview","hasFilters","Object","keys","filters","length","eventCount","setEventCount","lastEvent","setLastEvent","debugLog","event","data","debug","c","console","log","id","VALID_TRANSITIONS","prevStatus","info","sections","pinned","createEffect","newStatus","includes","warn","join","autoCloseDelay","CLOSE_ALIASES","Set","handleAction","action","asyncAction","test","has","onAction","onClose","turn","timer","setTimeout","onCleanup","clearTimeout","endpoint","previewEndpoint","res","fetch","method","previewMethod","headers","previewHeaders","credentials","body","JSON","stringify","ok","json","previewDebounce","_el$","_$getNextElement","_tmpl$12","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_el$1","_el$10","_el$12","_el$13","_co$3","_el$72","_el$73","_co$17","_el$56","_el$74","_el$75","_co$18","$$click","_$insert","title","agentSection","find","s","type","ac","parseContent","content","name","_$createComponent","AgentStatusBadge","agentName","Show","when","children","_el$6","_tmpl$","_$effect","_$setAttribute","_$memo","_el$11","_tmpl$2","e","stopPropagation","scratchpadClose","_$runHydrationEvents","_el$14","_tmpl$10","_el$46","_el$47","_co$9","_el$16","_el$48","_el$49","_co$0","_el$50","_el$51","_co$1","_el$52","_el$53","_co$10","_el$54","_el$55","_co$11","turnHistory","_el$15","_tmpl$3","For","each","i","_tmpl$13","_el$77","_tmpl$15","_el$83","_el$84","_co$20","_el$78","_el$85","_el$86","_co$21","_el$87","_el$88","_co$22","_c$","label","summary","_el$79","_tmpl$14","_el$80","_el$81","_el$82","_co$19","_$className","section","SectionRenderer","onFilterChange","onSectionEdit","onSubmit","debugTrace","agentMessages","_el$17","_tmpl$4","msg","_el$89","_tmpl$16","_el$90","_el$91","_c$2","text","_el$18","_tmpl$6","count","fallback","_el$92","_tmpl$17","_el$93","_el$94","scratchpadPreview","toLocaleString","locale","_el$95","_tmpl$18","rows","_el$96","_tmpl$19","_el$97","_el$98","_el$99","_el$100","k","_el$101","_tmpl$20","slice","row","_el$102","_tmpl$21","values","v","_el$103","_tmpl$22","String","_el$19","_tmpl$5","_el$20","_el$21","_el$22","scratchpadNoResults","scratchpadModifyFilters","_el$23","_tmpl$0","_el$24","_el$25","_el$26","_el$27","_el$29","_el$30","_co$4","_el$31","_el$37","_el$38","_co$6","_el$39","_el$40","_co$7","message","code","_el$28","_tmpl$7","formatMCPUIString","scratchpadErrorCode","retryable","_el$32","_tmpl$8","_el$33","_el$34","_el$35","_co$5","onRetry","retry","_el$36","_tmpl$9","_el$41","_tmpl$1","_el$42","_el$43","_el$44","_el$45","_co$8","scratchpadSearch","_$p","_$setStyleProperty","maxHeight","debugOverlay","_el$57","_tmpl$11","_el$62","_el$63","_co$12","_el$58","_el$64","_el$65","_co$13","_el$59","_el$66","_el$67","_co$14","_el$60","_el$68","_el$69","_co$15","_el$61","_el$70","_el$71","_co$16","_p$","_v$","_v$2","_v$3","t","a","parse","_el$104","_tmpl$24","_el$105","_el$108","_el$109","_co$23","Switch","Match","DataSection","InteractiveFilterSection","_el$106","ActionSection","EnrichedStepsSection","EmbeddedFormSection","sectionId","UnderstandingSection","FeedbackSection","PromptSection","StepperProgressSection","ErrorSectionRenderer","SourceCardSection","DiffSection","VerifiedText","_$mergeProps","onHallucinationClick","h","DataPreviewSection","MapRenderer","params","geojson","center","zoom","geojsonStyle","style","popup","layers","height","fitBounds","ChartJSRenderer","component","position","colStart","colSpan","renderer","AgentCard","SplitStepper","AgentHandoff","BriefingDiff","_el$107","_tmpl$23","entries","_el$110","_tmpl$25","_el$111","_tmpl$26","_el$112","_el$114","_el$115","_co$24","_el$116","_c$3","Array","isArray","editingKey","setEditingKey","editValue","setEditValue","filterDefs","allKeys","fromContent","fromFilters","removeFilter","key","next","setFilter","value","getDef","_el$117","_tmpl$28","_el$119","_el$120","_co$25","_el$121","_el$122","_co$26","def","hasValue","_el$123","_tmpl$34","_el$139","_el$140","_co$30","_el$141","_el$142","_co$31","_el$143","_tmpl$35","_el$144","_el$145","_el$146","_co$32","_el$124","_tmpl$30","_el$125","_el$126","_el$128","_el$129","_co$27","_el$130","_el$131","_el$132","_co$28","_el$134","_el$135","_co$29","_c$4","_el$133","_tmpl$29","removeItem","_el$136","_tmpl$33","options","_el$147","_tmpl$36","_el$148","_el$149","_el$150","addEventListener","preventDefault","$$input","currentTarget","cancel","placeholder","_$setProperty","_el$137","_tmpl$31","opt","_el$151","_tmpl$38","_el$153","_el$154","_co$33","_el$155","_el$156","_co$34","_tmpl$37","_el$138","_tmpl$32","_el$118","_tmpl$27","scratchpadNoFilters","dynamicOptions","setDynamicOptions","config","fields","submitLabel","submit","autoSubmitDelay","buildInitial","initial","field","prefill","defaultValue","formData","setFormData","prev","countdown","setCountdown","countdownTimer","userInteracted","setUserInteracted","cancelCountdown","clearInterval","delay","allRequiredPrefilled","filter","f","required","every","remaining","Math","ceil","setInterval","form","document","querySelector","requestSubmit","updateField","dep","depends_on","dependsOn","parentValue","url","options_endpoint","apiUrl","replace","encodeURIComponent","URLSearchParams","extraParams","extra_params","then","r","items","arr","results","features","lf","label_field","labelField","vf","value_field","valueField","map","catch","getField","dynOpts","submittedValues","setSubmittedValues","handleSubmit","fromEntries","fieldStatus","prefillSummary","total","prefilled","expanded","setExpanded","allFieldsPrefilled","showToast","_el$170","_tmpl$42","_el$171","_el$172","_el$174","_el$175","_co$38","_el$176","_el$177","displayHint","scratchpadEdit","_el$157","_tmpl$41","_el$164","_el$165","_co$35","_el$166","_el$167","_co$36","_el$168","_el$169","_co$37","_el$162","_el$163","_el$158","_tmpl$39","formPrefilledOne","formPrefilledMany","FormFieldRenderer","onChange","val","_el$159","_tmpl$40","_el$160","_el$161","formSubmitCountdown","seconds","FormDebugTrace","rawContent","open","setOpen","showRaw","setShowRaw","prefilledCount","requiredFields","missingRequired","autoSubmitReason","serverDebug","_debug","_el$178","_tmpl$48","_el$179","_el$180","_el$181","_el$184","_el$185","_co$39","_el$182","_el$186","_el$187","_co$40","_el$239","_el$240","_co$56","_el$188","_tmpl$47","_el$189","_el$190","_el$193","_el$194","_co$41","_el$191","_el$195","_el$196","_co$42","_el$235","_el$236","_co$54","_el$197","_el$198","_el$203","_el$204","_co$44","_el$205","_el$206","_co$45","_el$199","_el$200","_el$201","_el$202","_co$43","_el$237","_el$238","_co$55","_el$230","_el$231","_el$233","_el$234","_co$53","_el$241","_tmpl$56","_el$242","_el$244","_el$245","_co$57","_el$270","_el$271","_co$63","_el$272","_el$273","_co$64","_el$274","_el$275","_co$65","_el$276","_el$277","_co$66","_el$278","_el$279","_co$67","_el$280","_el$281","_co$68","_el$282","_el$283","_co$69","_el$284","_el$285","_co$70","_el$246","_tmpl$49","_el$247","_el$248","_el$249","_co$58","_tmpl$50","source","_el$251","_tmpl$51","_el$252","_el$253","_el$254","_co$59","_el$255","_tmpl$52","_el$256","_el$258","_el$259","_co$60","muted","_tmpl$53","prefillMode","_el$261","_tmpl$54","_el$262","_el$263","_el$264","_co$61","valueFormat","_el$265","_tmpl$55","_el$266","_el$268","_el$269","_co$62","_el$286","_tmpl$57","_el$287","_el$289","_el$290","_co$71","_c$5","_el$207","_tmpl$45","_el$208","_el$224","_el$225","_co$50","_el$226","_el$227","_co$51","_el$228","_el$229","_co$52","resolvers","_el$291","_tmpl$58","_el$299","_el$300","_co$72","_el$292","_el$301","_el$302","_co$73","_el$293","_el$303","_el$304","_co$74","_el$294","_el$305","_el$306","_co$75","_el$297","_el$307","_el$308","_co$76","resolver","input","output","ms","routing","_el$209","_tmpl$43","_el$210","_el$214","_el$215","_co$46","_el$211","_el$216","_el$217","_co$47","_el$212","_el$218","_el$219","_co$48","topic","missingFields","_el$220","_tmpl$44","_el$221","_el$222","_el$223","_co$49","_c$6","scratchpadHideRaw","scratchpadShowRaw","_el$232","_tmpl$46","stepsData","steps","currentStep","_el$309","_tmpl$60","_el$315","_el$316","_co$78","_el$317","_el$318","_co$79","step","_el$319","_tmpl$63","_el$320","_el$321","_el$326","_el$327","_co$81","_el$328","_el$329","_co$82","_el$331","_el$332","_co$83","_c$7","description","_el$322","_tmpl$61","_el$323","_el$324","_el$325","_co$80","_el$330","_tmpl$62","_v$4","_v$5","some","_el$310","_tmpl$59","_el$311","_el$313","_el$314","_co$77","scratchpadNextStep","actions","validation","_el$333","_tmpl$67","_el$341","_el$342","_co$85","_el$343","_el$344","_co$86","_el$345","_el$346","_co$87","_el$340","_el$334","_tmpl$64","_el$347","_tmpl$70","_el$353","_el$354","_co$89","_el$355","_el$356","_co$90","_el$348","_tmpl$68","scratchpadItems","_el$349","_tmpl$69","_el$350","_el$351","_el$352","_co$88","confidence","_el$335","_tmpl$66","_el$336","_el$338","_el$339","_co$84","verifiedConfidence","pct","round","hallucinated","_el$337","_tmpl$65","verifiedUnverifiedCount","_$classList","item","_el$357","_el$359","_el$360","_co$91","_el$361","_el$362","_co$92","_$addEventListener","icon","_el$358","_tmpl$71","variant","detections","warnings","confidenceClass","conf","_el$363","_tmpl$72","_el$364","_el$366","_el$367","_co$93","det","_el$368","_tmpl$73","_el$369","_el$370","_el$365","w","_el$371","_tmpl$74","_el$372","_el$373","comment","setComment","showComment","setShowComment","submitted","setSubmitted","submittedLabel","setSubmittedLabel","approve","yes","reject","no","question","allowFreeText","allowComment","commentPlaceholder","scratchpadCommentPlaceholder","agentId","stepId","handleOption","option","needsComment","payload","_el$374","_tmpl$79","_el$375","_el$393","_el$394","_co$98","_el$395","_el$396","_co$99","_el$376","_tmpl$76","_el$377","_el$379","_el$380","_co$94","_el$378","_el$381","_el$382","_co$95","_el$387","_el$388","_co$97","_c$8","_el$383","_tmpl$75","_el$384","_el$385","_el$386","_co$96","_el$389","_tmpl$77","_el$397","_el$399","_el$400","_co$100","_el$401","_el$402","_co$101","_el$398","_tmpl$80","_el$390","_tmpl$78","_el$391","_el$392","scratchpadSend","_v$6","_v$7","originalQuery","interpretation","extracted","plan","editable","_el$403","_tmpl$84","_el$419","_el$420","_co$105","_el$409","_el$421","_el$422","_co$106","_el$423","_el$424","_co$107","_el$404","_tmpl$81","_el$405","_el$407","_el$408","_co$102","_el$425","_tmpl$85","_el$426","_el$428","_el$429","_co$108","_el$430","_el$410","_tmpl$82","_el$411","_el$412","_el$413","_el$414","_co$103","scratchpadPlan","_el$415","_tmpl$83","_el$416","_el$417","_el$418","_co$104","scratchpadModify","orientation","statusIcon","isHorizontal","_el$432","_tmpl$87","_el$433","_tmpl$90","_el$434","_el$435","_el$436","_el$446","_el$447","_co$111","_el$448","_el$449","_co$112","_el$437","_tmpl$88","_el$438","_el$439","_el$440","_co$109","duration_ms","_el$441","_tmpl$89","_el$442","_el$444","_el$445","_co$110","_el$431","_tmpl$86","_el$451","_tmpl$92","_el$452","_el$453","_el$455","_el$456","_co$113","_el$454","_tmpl$91","showDetails","setShowDetails","d","scratchpadError","severity","retryAction","retryLabel","details","timestamp","isWarning","_el$457","_tmpl$96","_el$458","_el$459","_el$460","_el$461","_el$462","_el$471","_el$472","_co$116","_el$473","_el$474","_co$117","_el$476","_el$477","_co$118","_el$463","_tmpl$93","_el$464","_el$465","_el$466","_co$114","_el$467","_tmpl$94","_el$468","_el$469","_el$470","_co$115","scratchpadDetails","_el$475","_tmpl$95","scratchpadSource","capabilities","latency_ms","freshness","row_count","queried","available","_el$478","_tmpl$99","_el$479","_el$480","_el$482","_el$483","_co$119","_el$481","_el$484","_el$485","_co$120","_el$487","_el$488","_co$121","_el$489","_el$491","_el$492","_co$122","_el$486","_tmpl$97","scratchpadResultCount","cap","_el$493","_tmpl$100","_el$495","_el$496","_co$123","_el$494","_el$497","_el$498","_co$124","supported","_el$490","_tmpl$98","Boolean","left","right","highlight","highlight_columns","l","_el$499","_tmpl$101","_el$500","_el$501","_el$502","_el$503","_el$504","_el$505","_el$506","lVal","rVal","isDiff","_el$507","_tmpl$102","_el$508","_el$509","_el$510","_c$9","_c$0","_$delegateEvents"],"mappings":"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"}