@pstdio/ui 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MermaidComponent-DBJsTOmj.js → MermaidComponent-BCMQqPqu.js} +11 -11
- package/dist/{MermaidComponent-DBJsTOmj.js.map → MermaidComponent-BCMQqPqu.js.map} +1 -1
- package/dist/browser-storage-BinyFNJX.js +40 -0
- package/dist/browser-storage-BinyFNJX.js.map +1 -0
- package/dist/chat-ui.js +1832 -1275
- package/dist/chat-ui.js.map +1 -1
- package/dist/checkbox-B2zYVemL.js +70 -0
- package/dist/checkbox-B2zYVemL.js.map +1 -0
- package/dist/components/chat-ui/components/ai-conversation.d.ts +1 -1
- package/dist/components/chat-ui/components/ai-message.d.ts +1 -1
- package/dist/components/chat-ui/components/ai-response.d.ts +0 -1
- package/dist/components/chat-ui/components/attachment-list.d.ts +1 -1
- package/dist/components/chat-ui/components/auto-scroll.d.ts +27 -0
- package/dist/components/chat-ui/components/chat-input-actions.d.ts +1 -0
- package/dist/components/chat-ui/components/chat-input.d.ts +8 -2
- package/dist/components/chat-ui/components/chat-message-animation.d.ts +22 -0
- package/dist/components/chat-ui/components/chat-panel.d.ts +11 -5
- package/dist/components/chat-ui/components/composer-constants.d.ts +1 -0
- package/dist/components/chat-ui/components/conversation-browse.d.ts +22 -0
- package/dist/components/chat-ui/components/message-types.d.ts +14 -0
- package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +4 -0
- package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +11 -0
- package/dist/components/chat-ui/components/timeline.d.ts +5 -2
- package/dist/components/chat-ui/components/working-indicator.d.ts +9 -0
- package/dist/components/chat-ui/components/workspace-hub.d.ts +8 -1
- package/dist/components/chat-ui/index.d.ts +4 -2
- package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -1
- package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +4 -14
- package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +9 -0
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
- package/dist/components/chat-ui/tool-rendering/types.d.ts +1 -2
- package/dist/components/command-palette/index.d.ts +4 -0
- package/dist/components/data-table/build-columns.d.ts +13 -2
- package/dist/components/data-table/categorical-color-cell.d.ts +8 -0
- package/dist/components/data-table/color-cell-style.d.ts +13 -0
- package/dist/components/data-table/color-scale-cell.d.ts +7 -0
- package/dist/components/data-table/data-table-column-menu.d.ts +12 -0
- package/dist/components/data-table/data-table-header.d.ts +18 -0
- package/dist/components/data-table/data-table-stat-chart.d.ts +21 -0
- package/dist/components/data-table/data-table-state.d.ts +27 -0
- package/dist/components/data-table/data-table-stats-row.d.ts +11 -0
- package/dist/components/data-table/data-table-stats.d.ts +19 -0
- package/dist/components/data-table/data-table-table-parts.d.ts +21 -0
- package/dist/components/data-table/data-table.story-descriptions.d.ts +6 -0
- package/dist/components/data-table/data-table.story-fixtures.d.ts +6 -0
- package/dist/components/data-table/friendly-json-display.d.ts +31 -0
- package/dist/components/data-table/index.d.ts +3 -1
- package/dist/components/data-table/json-cell.d.ts +6 -0
- package/dist/components/data-table/pagination-footer.d.ts +4 -1
- package/dist/components/data-table/selection-toolbar.d.ts +3 -1
- package/dist/components/data-table/types.d.ts +72 -0
- package/dist/components/diff-viewer/diff-card.d.ts +1 -0
- package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -19
- package/dist/components/diff-viewer/diff-drawer.d.ts +1 -0
- package/dist/components/diff-viewer/index.d.ts +2 -0
- package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +7 -3
- package/dist/components/internal/style-guide.d.ts +14 -0
- package/dist/components/internal/token-editor-controls.d.ts +8 -0
- package/dist/components/internal/token-editor-data.d.ts +40 -0
- package/dist/components/internal/token-editor-state.d.ts +22 -0
- package/dist/components/{data-renderer → kanban-renderer}/display-menu.d.ts +4 -4
- package/dist/components/{data-renderer → kanban-renderer}/filter-menu.d.ts +3 -3
- package/dist/components/kanban-renderer/index.d.ts +19 -0
- package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +7 -0
- package/dist/components/{data-renderer/data-renderer-board-column-header.d.ts → kanban-renderer/kanban-renderer-board-column-header.d.ts} +2 -2
- package/dist/components/{data-renderer/data-renderer-board-group-section.d.ts → kanban-renderer/kanban-renderer-board-group-section.d.ts} +2 -2
- package/dist/components/{data-renderer/data-renderer-board-move.d.ts → kanban-renderer/kanban-renderer-board-move.d.ts} +3 -3
- package/dist/components/{data-renderer/data-renderer-board.d.ts → kanban-renderer/kanban-renderer-board.d.ts} +16 -15
- package/dist/components/{data-renderer/data-renderer-card.d.ts → kanban-renderer/kanban-renderer-card.d.ts} +5 -4
- package/dist/components/{data-renderer/data-renderer-content.d.ts → kanban-renderer/kanban-renderer-content.d.ts} +8 -8
- package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +12 -0
- package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +10 -0
- package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +23 -0
- package/dist/components/{data-renderer/data-renderer-helpers.d.ts → kanban-renderer/kanban-renderer-helpers.d.ts} +15 -15
- package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +25 -0
- package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +43 -0
- package/dist/components/{data-renderer/data-renderer-story-fixtures.d.ts → kanban-renderer/kanban-renderer-story-fixtures.d.ts} +3 -2
- package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +15 -0
- package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +14 -0
- package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +12 -0
- package/dist/components/{data-renderer/data-renderer.d.ts → kanban-renderer/kanban-renderer.d.ts} +12 -9
- package/dist/components/{data-renderer → kanban-renderer}/types.d.ts +51 -14
- package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +78 -0
- package/dist/components/layout/index.d.ts +7 -0
- package/dist/components/layout/panel-header.constants.d.ts +3 -0
- package/dist/components/{resizable-split-layout.d.ts → layout/resizable-split-layout.d.ts} +3 -2
- package/dist/components/layout/resizable-split-layout.geometry.d.ts +56 -0
- package/dist/components/{resizable-split-layout.handle.d.ts → layout/resizable-split-layout.handle.d.ts} +6 -2
- package/dist/components/layout/resizable-split-layout.panels.d.ts +25 -0
- package/dist/components/list-row/list-row-actions.d.ts +1 -0
- package/dist/components/list-row/list-row-content.d.ts +7 -0
- package/dist/components/list-row/list-row.types.d.ts +4 -1
- package/dist/components/overlays/attached-menu.d.ts +6 -0
- package/dist/components/overlays/attachment-chip.d.ts +13 -0
- package/dist/components/overlays/index.d.ts +16 -0
- package/dist/components/{resource-context-menu.d.ts → overlays/resource-context-menu.d.ts} +13 -1
- package/dist/components/{search-modal-content.d.ts → overlays/search-modal-content.d.ts} +1 -1
- package/dist/components/{searchable-menu.d.ts → overlays/searchable-menu.d.ts} +1 -1
- package/dist/components/param-editor/index.d.ts +24 -0
- package/dist/components/param-editor/inputs/action-input.d.ts +13 -0
- package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +12 -0
- package/dist/components/param-editor/inputs/anchor-grid.d.ts +4 -0
- package/dist/components/param-editor/inputs/file-accept.d.ts +22 -0
- package/dist/components/param-editor/inputs/file-drop-input.d.ts +14 -0
- package/dist/components/param-editor/inputs/numeric-value.d.ts +6 -0
- package/dist/components/param-editor/inputs/range-input.d.ts +17 -0
- package/dist/components/param-editor/inputs/range-value.d.ts +5 -0
- package/dist/components/param-editor/inputs/resource-input-chips.d.ts +15 -0
- package/dist/components/param-editor/inputs/resource-input.d.ts +18 -0
- package/dist/components/param-editor/inputs/segmented-input.d.ts +14 -0
- package/dist/components/param-editor/{selection-input.d.ts → inputs/selection-input.d.ts} +6 -6
- package/dist/components/param-editor/inputs/selection-menu.d.ts +29 -0
- package/dist/components/param-editor/inputs/slider-marks.d.ts +5 -0
- package/dist/components/param-editor/inputs/vector-input.d.ts +17 -0
- package/dist/components/param-editor/inputs/vector-value.d.ts +7 -0
- package/dist/components/param-editor/param-editor-control-item.d.ts +15 -0
- package/dist/components/param-editor/param-editor-control-list.d.ts +5 -0
- package/dist/components/param-editor/param-editor-field-label.d.ts +1 -0
- package/dist/components/param-editor/param-editor-field.d.ts +11 -0
- package/dist/components/param-editor/param-editor-horizontal.d.ts +1 -0
- package/dist/components/param-editor/param-editor-inline-group.d.ts +5 -0
- package/dist/components/param-editor/param-editor-read-only-field.d.ts +9 -0
- package/dist/components/param-editor/param-editor-section.d.ts +17 -0
- package/dist/components/param-editor/param-editor.d.ts +3 -1
- package/dist/components/param-editor/param-editor.types.d.ts +135 -24
- package/dist/components/{breadcrumb.d.ts → primitives/breadcrumb.d.ts} +1 -1
- package/dist/components/primitives/index.d.ts +28 -0
- package/dist/components/{number-input.d.ts → primitives/number-input.d.ts} +0 -2
- package/dist/components/{session-indicator.d.ts → primitives/session-indicator.d.ts} +2 -1
- package/dist/components/{tooltip.d.ts → primitives/tooltip.d.ts} +0 -1
- package/dist/components/rich-text/prompt-input/commands.d.ts +0 -17
- package/dist/components/rich-text/prompt-input/events.d.ts +0 -13
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +1 -2
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +1 -2
- package/dist/components/rich-text/prompt-input/prompt-input.d.ts +3 -2
- package/dist/components/rich-text/prompt-input/utils.d.ts +1 -2
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -1
- package/dist/components/rich-text/types.d.ts +1 -1
- package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
- package/dist/components/{sidebar/sidebar-footer.d.ts → sidenav/sidenav-footer.d.ts} +2 -2
- package/dist/components/{sidebar/sidebar-header.d.ts → sidenav/sidenav-header.d.ts} +2 -2
- package/dist/components/sidenav/sidenav.d.ts +2 -0
- package/dist/components/sidenav/sidenav.store.d.ts +49 -0
- package/dist/components/{sidebar/sidebar.types.d.ts → sidenav/sidenav.types.d.ts} +6 -6
- package/dist/components/tab-strip/tab-visibility-filter.d.ts +2 -1
- package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor.types.d.ts +1 -1
- package/dist/components/terminal/bind-session.d.ts +33 -0
- package/dist/components/terminal/index.d.ts +6 -0
- package/dist/components/terminal/scripted-bridge.d.ts +35 -0
- package/dist/components/terminal/terminal-contract.d.ts +22 -0
- package/dist/components/terminal/terminal-theme.d.ts +12 -0
- package/dist/components/terminal/terminal.d.ts +56 -0
- package/dist/components/terminal/types.d.ts +35 -0
- package/dist/components/terminal/use-terminal-session.d.ts +21 -0
- package/dist/components/tree-list/tree-list-order-filter.d.ts +1 -2
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +1 -2
- package/dist/components/tree-list/tree-list.d.ts +2 -2
- package/dist/components/tree-list/tree-list.types.d.ts +4 -0
- package/dist/data-table.js +1271 -0
- package/dist/data-table.js.map +1 -0
- package/dist/diff-editor-BnfV8cYB.js +182 -0
- package/dist/diff-editor-BnfV8cYB.js.map +1 -0
- package/dist/diff.js +1313 -0
- package/dist/diff.js.map +1 -0
- package/dist/empty-state-Bo4HVrgr.js +34 -0
- package/dist/empty-state-Bo4HVrgr.js.map +1 -0
- package/dist/foundations/gallery/gallery-frame.d.ts +21 -0
- package/dist/foundations/gallery/sections/badges-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/buttons-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/composite-chat-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/composites-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/feedback-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/input-authoring-card.d.ts +1 -0
- package/dist/foundations/gallery/sections/inputs-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/layout-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/overlays-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/panels-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +1 -0
- package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +1 -0
- package/dist/index.d.ts +14 -87
- package/dist/index.js +2027 -7501
- package/dist/index.js.map +1 -1
- package/dist/kanban-renderer-toolbar-B9ro-9z1.js +1318 -0
- package/dist/kanban-renderer-toolbar-B9ro-9z1.js.map +1 -0
- package/dist/kanban-renderer.js +1087 -0
- package/dist/kanban-renderer.js.map +1 -0
- package/dist/list-row-YRUxEcy3.js +808 -0
- package/dist/list-row-YRUxEcy3.js.map +1 -0
- package/dist/mermaid-renderer-DZo3qj6D.js +425 -0
- package/dist/mermaid-renderer-DZo3qj6D.js.map +1 -0
- package/dist/mermaid.js +5 -0
- package/dist/mermaid.js.map +1 -0
- package/dist/param-editor-CYZJbmKu.js +933 -0
- package/dist/param-editor-CYZJbmKu.js.map +1 -0
- package/dist/param-editor-read-only-field-DgtLqcFa.js +925 -0
- package/dist/param-editor-read-only-field-DgtLqcFa.js.map +1 -0
- package/dist/prism-BXb57lxL.js +125 -0
- package/dist/prism-BXb57lxL.js.map +1 -0
- package/dist/radio-cLMEBBZk.js +76 -0
- package/dist/radio-cLMEBBZk.js.map +1 -0
- package/dist/resource-badge-qCWHP-wQ.js +99 -0
- package/dist/resource-badge-qCWHP-wQ.js.map +1 -0
- package/dist/{rich-message-DNSEhxXh.js → rich-message-DBf_5YlW.js} +462 -481
- package/dist/rich-message-DBf_5YlW.js.map +1 -0
- package/dist/rich-text.js +300 -299
- package/dist/rich-text.js.map +1 -1
- package/dist/scroll-area-BMbg1WcD.js +91 -0
- package/dist/scroll-area-BMbg1WcD.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/terminal.js +359 -0
- package/dist/terminal.js.map +1 -0
- package/dist/theme/global.d.ts +3 -0
- package/dist/theme/primitives/sizes.d.ts +23 -0
- package/dist/theme/recipes/badge.d.ts +50 -0
- package/dist/theme/recipes/button.d.ts +30 -19
- package/dist/theme/recipes/color-picker.d.ts +1 -0
- package/dist/theme/recipes/dialog.d.ts +1 -1
- package/dist/theme/recipes/drawer.d.ts +1 -1
- package/dist/theme/recipes/input.d.ts +55 -0
- package/dist/theme/recipes/number-input.d.ts +98 -0
- package/dist/theme/recipes/tabs.d.ts +49 -28
- package/dist/theme/recipes/textarea.d.ts +62 -1
- package/dist/theme/recipes/timeline.d.ts +74 -0
- package/dist/theme/tokens/borders.d.ts +0 -3
- package/dist/theme/tokens/colors.d.ts +118 -94
- package/dist/{theme-25P7ij4C.js → theme-CNhnbvcE.js} +1300 -375
- package/dist/theme-CNhnbvcE.js.map +1 -0
- package/dist/theme-preference-DOzHx64J.js +123 -0
- package/dist/theme-preference-DOzHx64J.js.map +1 -0
- package/dist/theme.js +1 -1
- package/dist/tree-list-CZHLAURU.js +1033 -0
- package/dist/tree-list-CZHLAURU.js.map +1 -0
- package/package.json +29 -3
- package/dist/components/data-renderer/card-interaction-guard.d.ts +0 -2
- package/dist/components/data-renderer/data-renderer-attribute-badge.d.ts +0 -7
- package/dist/components/data-renderer/data-renderer-grouping.d.ts +0 -23
- package/dist/components/data-renderer/data-renderer-list.d.ts +0 -39
- package/dist/components/data-renderer/data-renderer-toolbar.d.ts +0 -12
- package/dist/components/data-renderer/use-data-renderer-store.d.ts +0 -59
- package/dist/components/file-tree-helpers.d.ts +0 -8
- package/dist/components/open-source-notices-screen.d.ts +0 -20
- package/dist/components/panel-header.constants.d.ts +0 -1
- package/dist/components/param-editor/input-group.d.ts +0 -10
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/index.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/TableActionMenuPlugin/TableActionMenuPlugin.d.ts +0 -5
- package/dist/components/rich-text/shared/plugins/TableCellResizerPlugin/TableCellResizerPlugin.d.ts +0 -2
- package/dist/components/rich-text/theme/report-theme.d.ts +0 -3
- package/dist/components/sidebar/sidebar.d.ts +0 -2
- package/dist/components/sidebar/sidebar.store.d.ts +0 -49
- package/dist/components/style-guide-data.d.ts +0 -40
- package/dist/components/style-guide.d.ts +0 -1
- package/dist/mermaid-renderer-CPGj6vsb.js +0 -570
- package/dist/mermaid-renderer-CPGj6vsb.js.map +0 -1
- package/dist/radio-DJtQY9po.js +0 -286
- package/dist/radio-DJtQY9po.js.map +0 -1
- package/dist/resource-badge-CeJTOn8F.js +0 -188
- package/dist/resource-badge-CeJTOn8F.js.map +0 -1
- package/dist/rich-message-DNSEhxXh.js.map +0 -1
- package/dist/theme-25P7ij4C.js.map +0 -1
- package/dist/utils/formats.d.ts +0 -7
- /package/dist/components/{palette-filter.d.ts → command-palette/palette-filter.d.ts} +0 -0
- /package/dist/components/{palette-list.d.ts → command-palette/palette-list.d.ts} +0 -0
- /package/dist/components/{palette-shortcut.d.ts → command-palette/palette-shortcut.d.ts} +0 -0
- /package/dist/components/{palette.d.ts → command-palette/palette.d.ts} +0 -0
- /package/dist/components/{code-editor.d.ts → diff-viewer/code-editor.d.ts} +0 -0
- /package/dist/components/{column-file-browser.d.ts → file-browser/column-file-browser.d.ts} +0 -0
- /package/dist/components/{performance-panel.d.ts → internal/performance-panel.d.ts} +0 -0
- /package/dist/components/{data-renderer/data-renderer-badge-helpers.d.ts → kanban-renderer/kanban-renderer-badge-helpers.d.ts} +0 -0
- /package/dist/components/{data-renderer/data-renderer-enum-helpers.d.ts → kanban-renderer/kanban-renderer-enum-helpers.d.ts} +0 -0
- /package/dist/components/{data-renderer → kanban-renderer}/use-resolved-attributes.d.ts +0 -0
- /package/dist/components/{header.d.ts → layout/header.d.ts} +0 -0
- /package/dist/components/{horizontal-menu-stack.d.ts → layout/horizontal-menu-stack.d.ts} +0 -0
- /package/dist/components/{item-section.d.ts → layout/item-section.d.ts} +0 -0
- /package/dist/components/{attached-panel.d.ts → overlays/attached-panel.d.ts} +0 -0
- /package/dist/components/{bubble-button.d.ts → overlays/bubble-button.d.ts} +0 -0
- /package/dist/components/{bubble-panel.d.ts → overlays/bubble-panel.d.ts} +0 -0
- /package/dist/components/{delete-confirmation-modal.d.ts → overlays/delete-confirmation-modal.d.ts} +0 -0
- /package/dist/components/{repo-picker-dialog.d.ts → overlays/repo-picker-dialog.d.ts} +0 -0
- /package/dist/components/param-editor/{color-input.d.ts → inputs/color-input.d.ts} +0 -0
- /package/dist/components/param-editor/{date-input.d.ts → inputs/date-input.d.ts} +0 -0
- /package/dist/components/param-editor/{horizontal-text-input.d.ts → inputs/horizontal-text-input.d.ts} +0 -0
- /package/dist/components/param-editor/{number-input.d.ts → inputs/number-input.d.ts} +0 -0
- /package/dist/components/param-editor/{text-input.d.ts → inputs/text-input.d.ts} +0 -0
- /package/dist/components/{alert.d.ts → primitives/alert.d.ts} +0 -0
- /package/dist/components/{checkbox.d.ts → primitives/checkbox.d.ts} +0 -0
- /package/dist/components/{content-placeholder.d.ts → primitives/content-placeholder.d.ts} +0 -0
- /package/dist/components/{empty-state.d.ts → primitives/empty-state.d.ts} +0 -0
- /package/dist/components/{error-boundary.d.ts → primitives/error-boundary.d.ts} +0 -0
- /package/dist/components/{icon-color-picker.d.ts → primitives/icon-color-picker.d.ts} +0 -0
- /package/dist/components/{info-card.d.ts → primitives/info-card.d.ts} +0 -0
- /package/dist/components/{integration-card.d.ts → primitives/integration-card.d.ts} +0 -0
- /package/dist/components/{radio.d.ts → primitives/radio.d.ts} +0 -0
- /package/dist/components/{resource-badge.d.ts → primitives/resource-badge.d.ts} +0 -0
- /package/dist/components/{scroll-area.d.ts → primitives/scroll-area.d.ts} +0 -0
- /package/dist/components/{simple-card.d.ts → primitives/simple-card.d.ts} +0 -0
- /package/dist/components/{slider.d.ts → primitives/slider.d.ts} +0 -0
- /package/dist/components/{switch.d.ts → primitives/switch.d.ts} +0 -0
- /package/dist/components/{toaster.d.ts → primitives/toaster.d.ts} +0 -0
- /package/dist/components/{workspace-badge.d.ts → primitives/workspace-badge.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-message-DNSEhxXh.js","sources":["../src/components/rich-text/shared/components/content-editable.tsx","../src/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.tsx","../src/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.ts","../src/components/rich-text/theme/rich-text-theme.tsx","../src/components/rich-text/shared/prism-global.ts","../src/components/rich-text/shared/components/default-rich-text-components.tsx","../src/components/rich-text/shared/nodes/DataTableNode.tsx","../src/components/rich-text/shared/plugins/EquationPlugin/EquationNode.tsx","../src/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.tsx","../src/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.ts","../src/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.tsx","../src/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.ts","../src/components/rich-text/shared/transformers/markdown-transformers.ts","../src/components/rich-text/shared/editor-config.ts","../src/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.tsx","../src/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.tsx","../src/components/rich-text/shared/plugins/LinkEditorPlugin/commands.ts","../src/components/rich-text/shared/plugins/ToggleEditablePlugin.tsx","../src/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.tsx","../src/components/rich-text/utils/markdown.ts","../src/components/rich-text/prompt-input/events.ts","../src/components/rich-text/prompt-input/commands.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.tsx","../src/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.tsx","../src/components/rich-text/prompt-input/utils.ts","../src/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.tsx","../src/components/rich-text/prompt-input/plugins/keyboard-shortcuts.ts","../src/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.tsx","../src/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.tsx","../src/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.tsx","../src/components/rich-text/prompt-input/theme/prompt-input-theme.ts","../src/components/rich-text/prompt-input/prompt-input.tsx","../src/components/rich-text/shared/plugins/StateUpdatePlugin.tsx","../src/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkNode.tsx","../src/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.ts","../src/components/rich-text/rich-message/rich-message.tsx"],"sourcesContent":["import { Box, chakra } from \"@chakra-ui/react\";\nimport { ContentEditable as LexicalContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { ScrollArea } from \"@/components/scroll-area\";\n\nconst StyledEditable = chakra(LexicalContentEditable);\n\ninterface ContentEditableProps {\n onRef?: (elem: HTMLDivElement) => void;\n fullWidth?: boolean;\n padding?: string;\n isRichMessage?: boolean;\n scrollable?: boolean;\n}\n\nexport function ContentEditable({\n onRef,\n fullWidth = false,\n padding,\n isRichMessage = false,\n scrollable = true,\n}: ContentEditableProps) {\n const editor = (\n <Box ref={onRef} width=\"100%\" minH=\"100%\" padding={padding}>\n <StyledEditable\n data-testid=\"content-editable\"\n height=\"fit-content\"\n minH=\"100%\"\n width=\"100%\"\n maxWidth={fullWidth ? \"100%\" : \"45rem\"}\n marginInline={fullWidth ? \"0\" : \"auto\"}\n textStyle=\"paragraph/M/regular\"\n fontSize=\"calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale))\"\n position=\"relative\"\n outline=\"none\"\n />\n </Box>\n );\n\n if (!scrollable) return editor;\n\n return (\n <ScrollArea\n className=\"rich-text\"\n data-rich-message={isRichMessage ? \"true\" : undefined}\n height=\"100%\"\n minH=\"0\"\n position=\"relative\"\n contentProps={{ width: \"100%\", minH: \"100%\" }}\n >\n {editor}\n </ScrollArea>\n );\n}\n","import { Box } from \"@chakra-ui/react\";\nimport {\n DecoratorNode,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n type SerializedLexicalNode,\n type Spread,\n} from \"lexical\";\nimport type { ReactElement } from \"react\";\nimport { ResourceBadge } from \"../../../../resource-badge\";\n\nexport type SerializedReferenceLinkNode = Spread<\n {\n href: string;\n label?: string;\n },\n SerializedLexicalNode\n>;\n\nexport class ReferenceLinkNode extends DecoratorNode<ReactElement> {\n __href: string;\n __label?: string;\n\n static getType(): string {\n return \"reference-link\";\n }\n\n static clone(node: ReferenceLinkNode): ReferenceLinkNode {\n return new ReferenceLinkNode(node.__href, node.__label, node.__key);\n }\n\n constructor(href: string, label?: string, key?: NodeKey) {\n super(key);\n this.__href = href;\n this.__label = label;\n }\n\n createDOM(_config: EditorConfig, _editor: LexicalEditor): HTMLElement {\n return document.createElement(\"span\");\n }\n\n updateDOM(_prevNode: ReferenceLinkNode, _dom: HTMLElement, _config: EditorConfig): boolean {\n return false;\n }\n\n getTextContent(): string {\n const label = this.__label ?? this.__href;\n return `{{link('${label}')}}`;\n }\n\n exportJSON(): SerializedReferenceLinkNode {\n return {\n type: ReferenceLinkNode.getType(),\n version: 1,\n href: this.__href,\n label: this.__label,\n };\n }\n\n static importJSON(serializedNode: SerializedReferenceLinkNode): ReferenceLinkNode {\n return $createReferenceLinkNode(serializedNode.href, serializedNode.label);\n }\n\n decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement {\n const href = this.__href;\n const fileName = href.split(\"/\").pop();\n const label = fileName || \"unknown\";\n const isExternal = /^https?:\\/\\//i.test(href);\n const isProjectFile = /^#?\\$PROJECT\\//i.test(href);\n\n return (\n <Box width=\"fit-content\" display=\"inline-block\">\n <ResourceBadge\n fileName={label}\n onSelect={() => {\n if (isExternal) {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else if (isProjectFile) {\n const projectPath = href.replace(/^#?\\$PROJECT\\//i, \"\");\n const event = new CustomEvent(\"ui:open-project-file\", { detail: projectPath });\n window.dispatchEvent(event);\n } else {\n window.location.assign(href);\n }\n }}\n />\n </Box>\n );\n }\n}\n\nexport function $createReferenceLinkNode(href: string, label?: string): ReferenceLinkNode {\n return new ReferenceLinkNode(href, label);\n}\n\nexport function $isReferenceLinkNode(node: LexicalNode | null | undefined): node is ReferenceLinkNode {\n return node instanceof ReferenceLinkNode;\n}\n","import type { TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createReferenceLinkNode, $isReferenceLinkNode, ReferenceLinkNode } from \"./ReferenceLinkNode\";\n\n// Matches {{link('xxx')}} or {{ link(\"xxx\") }}\nconst LINK_REGEXP = /\\{\\{\\s*link\\((['\"])([^'\"\\s]+)\\1\\)\\s*\\}\\}/;\n\nexport const REFERENCE_LINK_TRANSFORMER: TextMatchTransformer = {\n dependencies: [ReferenceLinkNode],\n export: (node) => {\n if ($isReferenceLinkNode(node)) {\n const href = (node as ReferenceLinkNode).__href;\n const label = (node as ReferenceLinkNode).__label ?? href;\n // Export back to token form so markdown roundtrips\n if (label) {\n return `{{link('${label}')}}`;\n }\n return `{{link('${href}')}}`;\n }\n return null;\n },\n regExp: LINK_REGEXP,\n importRegExp: LINK_REGEXP,\n replace: (textNode, match) => {\n const value = match[2];\n // For now we assume value is both label and href; if it looks like a URL, use as href.\n const looksLikeUrl = /^(https?:\\/\\/|\\/)/i.test(value);\n const href = looksLikeUrl ? value : `#${value}`;\n const label = value;\n textNode.replace($createReferenceLinkNode(href, label));\n },\n type: \"text-match\",\n};\n","import type { EditorThemeClasses } from \"lexical\";\n\nimport \"./rich-text-theme.css\";\n\nconst theme: EditorThemeClasses = {\n code: \"rich-text__code\",\n codeHighlight: {\n atrule: \"rich-text__tokenAttr\",\n attr: \"rich-text__tokenAttr\",\n boolean: \"rich-text__tokenProperty\",\n builtin: \"rich-text__tokenSelector\",\n cdata: \"rich-text__tokenComment\",\n char: \"rich-text__tokenSelector\",\n class: \"rich-text__tokenFunction\",\n \"class-name\": \"rich-text__tokenFunction\",\n comment: \"rich-text__tokenComment\",\n constant: \"rich-text__tokenProperty\",\n deleted: \"rich-text__tokenProperty\",\n doctype: \"rich-text__tokenComment\",\n entity: \"rich-text__tokenOperator\",\n function: \"rich-text__tokenFunction\",\n important: \"rich-text__tokenVariable\",\n inserted: \"rich-text__tokenSelector\",\n keyword: \"rich-text__tokenAttr\",\n namespace: \"rich-text__tokenVariable\",\n number: \"rich-text__tokenProperty\",\n operator: \"rich-text__tokenOperator\",\n prolog: \"rich-text__tokenComment\",\n property: \"rich-text__tokenProperty\",\n punctuation: \"rich-text__tokenPunctuation\",\n regex: \"rich-text__tokenVariable\",\n selector: \"rich-text__tokenSelector\",\n string: \"rich-text__tokenSelector\",\n symbol: \"rich-text__tokenProperty\",\n tag: \"rich-text__tokenProperty\",\n url: \"rich-text__tokenOperator\",\n variable: \"rich-text__tokenVariable\",\n },\n embedBlock: {\n base: \"rich-text__embedBlock\",\n focus: \"rich-text__embedBlockFocus\",\n },\n list: {\n checklist: \"rich-text__checklist\",\n listitem: \"rich-text__listItem\",\n listitemChecked: \"rich-text__listItemChecked\",\n listitemUnchecked: \"rich-text__listItemUnchecked\",\n nested: {\n listitem: \"rich-text__nestedListItem\",\n },\n olDepth: [\"rich-text__ol1\", \"rich-text__ol2\", \"rich-text__ol3\", \"rich-text__ol4\", \"rich-text__ol5\"],\n ol: \"rich-text__ol\",\n ul: \"rich-text__ul\",\n },\n heading: {\n h1: \"rich-text__h1\",\n h2: \"rich-text__h2\",\n h3: \"rich-text__h3\",\n },\n paragraph: \"rich-text__p\",\n text: {\n underline: \"rich-text__textUnderline\",\n italic: \"rich-text__textItalic\",\n code: \"rich-text__textCode\",\n },\n link: \"rich-text__link\",\n quote: \"rich-text__quote\",\n reference: \"rich-text__reference\",\n table: \"rich-text__table\",\n tableCell: \"rich-text__tableCell\",\n tableRow: \"rich-text__tableRow\",\n tableCellHeader: \"rich-text__tableCellHeader\",\n layoutContainer: \"rich-text__layoutContainer\",\n layoutItem: \"rich-text__layoutItem\",\n draggableBlockDemo: {\n row: \"rich-text__row\",\n content: \"rich-text__content\",\n },\n};\n\nexport default theme;\n","import Prism from \"prismjs\";\n\nconst globalScope = globalThis as typeof globalThis & { Prism?: unknown };\n\nglobalScope.Prism ??= Prism;\n\nexport { Prism };\n","import { Box, Table, Text, Textarea } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@/components/scroll-area\";\nimport type { CodeEditorProps, DataTableProps } from \"../types/rich-text-components\";\n\nconst scaledSmallFontSize = \"calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale))\";\n\nconst formatValue = (value: unknown) => {\n if (value === null || value === undefined) return \"-\";\n if (typeof value === \"string\") return value.length ? value : \"-\";\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value).toUpperCase();\n if (value instanceof Date) return value.toISOString();\n return JSON.stringify(value);\n};\n\nexport const DefaultRichTextCodeEditor = (props: CodeEditorProps) => {\n const { defaultCode = \"\", isEditable = false, showLineNumbers = false, disableScroll = false } = props;\n\n if (isEditable) {\n return (\n <Textarea\n defaultValue={defaultCode}\n fontFamily=\"mono\"\n fontSize={scaledSmallFontSize}\n resize=\"vertical\"\n minHeight=\"100%\"\n />\n );\n }\n\n const lines = showLineNumbers ? defaultCode.split(\"\\n\") : [defaultCode];\n\n const codeBlock = (\n <Box\n as=\"pre\"\n margin={0}\n padding=\"sm\"\n fontFamily=\"mono\"\n fontSize={scaledSmallFontSize}\n lineHeight=\"1.5\"\n background=\"bg.code\"\n borderRadius=\"md\"\n width=\"100%\"\n overflowY={disableScroll ? \"hidden\" : undefined}\n >\n {showLineNumbers ? (\n <Box as=\"code\" display=\"grid\" gridTemplateColumns=\"auto 1fr\" columnGap=\"sm\">\n {lines.map((line, index) => (\n <Box as=\"span\" key={`${index}-${line}`} display=\"contents\">\n <Text as=\"span\" color=\"fg.muted\" textAlign=\"right\" fontSize=\"inherit\">\n {index + 1}\n </Text>\n <Text as=\"span\" fontSize=\"inherit\">\n {line.length ? line : \" \"}\n </Text>\n </Box>\n ))}\n </Box>\n ) : (\n <Box as=\"code\">{defaultCode}</Box>\n )}\n </Box>\n );\n\n if (disableScroll) return codeBlock;\n\n return (\n <ScrollArea width=\"100%\" background=\"bg.code\" borderRadius=\"md\" showHorizontalScrollbar>\n {codeBlock}\n </ScrollArea>\n );\n};\n\nexport const DefaultRichTextDataTable = (props: DataTableProps) => {\n const { data, fullWidth = false, noBorder = false, hiddenColumns = [] } = props;\n\n if (!data.length) {\n return (\n <Box padding=\"sm\" borderWidth={noBorder ? \"0\" : \"1px\"} borderColor=\"border.muted\">\n <Text textStyle=\"label/S/regular\" fontSize={scaledSmallFontSize} color=\"fg.muted\">\n No data\n </Text>\n </Box>\n );\n }\n\n const hiddenSet = new Set(hiddenColumns);\n const columns = Object.keys(data[0] ?? {}).filter((key) => !hiddenSet.has(key));\n\n return (\n <ScrollArea maxWidth=\"100%\" showHorizontalScrollbar showVerticalScrollbar={false}>\n <Table.Root\n size=\"sm\"\n width={fullWidth ? \"100%\" : \"fit-content\"}\n borderWidth={noBorder ? \"0\" : \"1px\"}\n borderColor=\"border.muted\"\n >\n <Table.Header>\n <Table.Row background=\"bg.muted\">\n {columns.map((column) => (\n <Table.ColumnHeader key={column} textTransform=\"none\" paddingX=\"xs\" paddingY=\"2xs\">\n <Text textStyle=\"label/S/medium\" fontSize={scaledSmallFontSize}>\n {column}\n </Text>\n </Table.ColumnHeader>\n ))}\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {data.map((row, rowIndex) => (\n <Table.Row key={`${rowIndex}-${columns.join(\"-\")}`}>\n {columns.map((column) => (\n <Table.Cell key={`${rowIndex}-${column}`} paddingX=\"xs\" paddingY=\"2xs\">\n <Text textStyle=\"paragraph/S/regular\" fontSize={scaledSmallFontSize}>\n {formatValue(row[column])}\n </Text>\n </Table.Cell>\n ))}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Root>\n </ScrollArea>\n );\n};\n","import { DecoratorNode, type NodeKey, type SerializedLexicalNode, type Spread } from \"lexical\";\nimport type React from \"react\";\nimport { DefaultRichTextDataTable } from \"../components/default-rich-text-components\";\nimport type { RowData } from \"../types/rich-text-components\";\n\nexport type { RowData } from \"../types/rich-text-components\";\n\nexport class DataTableNode extends DecoratorNode<React.JSX.Element> {\n __data: RowData[];\n\n static getType() {\n return \"data_table\";\n }\n\n static clone(node: DataTableNode) {\n return new DataTableNode(node.__data, node.__key);\n }\n\n constructor(data: RowData[], key?: NodeKey) {\n super(key);\n this.__data = data;\n }\n\n getData(): RowData[] {\n return this.__data;\n }\n\n createDOM(): HTMLElement {\n return document.createElement(\"div\");\n }\n\n updateDOM(): boolean {\n return false;\n }\n\n decorate() {\n return <DefaultRichTextDataTable fullWidth isReadOnly data={this.__data} />;\n }\n\n exportJSON(): SerializedDataTableNode {\n return {\n type: \"data_table\",\n version: 1,\n data: this.__data,\n };\n }\n\n static importJSON(json: SerializedDataTableNode) {\n return new DataTableNode(json.data);\n }\n\n getTextContent(): string {\n // Convert table data to a readable text representation\n if (!this.__data.length) return \"\";\n\n const headers = Object.keys(this.__data[0]);\n const headerRow = headers.join(\" | \");\n const separator = headers.map(() => \"---\").join(\" | \");\n const dataRows = this.__data.map((row) => headers.map((header) => String(row[header] || \"\")).join(\" | \"));\n\n return [headerRow, separator, ...dataRows].join(\"\\n\");\n }\n}\n\nexport type SerializedDataTableNode = Spread<{ data: RowData[] }, SerializedLexicalNode>;\n\nexport function $createDataTableNode(data: RowData[]) {\n return new DataTableNode(data);\n}\n\nexport function $isDataTableNode(node: unknown): node is DataTableNode {\n return node instanceof DataTableNode;\n}\n","import katex from \"katex\";\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode, type DOMExportOutput } from \"lexical\";\nimport * as React from \"react\";\nimport { Suspense } from \"react\";\n\nconst EquationComponent = React.lazy(() => import(\"./EquationComponent\"));\n\nexport type SerializedEquationNode = Spread<\n {\n equation: string;\n inline: boolean;\n },\n SerializedLexicalNode\n>;\n\nfunction $convertEquationElement(domNode: HTMLElement): null | DOMConversionOutput {\n let equation = domNode.getAttribute(\"data-lexical-equation\");\n const inline = domNode.getAttribute(\"data-lexical-inline\") === \"true\";\n\n // Decode the equation from base64\n equation = atob(equation || \"\");\n\n if (equation) {\n const node = $createEquationNode(equation, inline);\n return { node };\n }\n\n return null;\n}\n\nexport class EquationNode extends DecoratorNode<React.ReactNode> {\n __equation: string;\n __inline: boolean;\n\n static getType(): string {\n return \"equation\";\n }\n\n static clone(node: EquationNode): EquationNode {\n return new EquationNode(node.__equation, node.__inline, node.__key);\n }\n\n constructor(equation: string, inline?: boolean, key?: NodeKey) {\n super(key);\n this.__equation = equation;\n this.__inline = inline ?? false;\n }\n\n static importJSON(serializedNode: SerializedEquationNode): EquationNode {\n return $createEquationNode(serializedNode.equation, serializedNode.inline);\n }\n\n exportJSON(): SerializedEquationNode {\n return {\n equation: this.getEquation(),\n inline: this.__inline,\n type: \"equation\",\n version: 1,\n };\n }\n\n createDOM(_config: EditorConfig): HTMLElement {\n const element = document.createElement(this.__inline ? \"span\" : \"div\");\n\n // EquationNodes should implement `user-action:none` in their CSS to avoid issues with deletion on Android.\n element.className = \"editor-equation\";\n return element;\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(this.__inline ? \"span\" : \"div\");\n\n // Encode the equation as base64 to avoid issues with special characters\n const equation = btoa(this.__equation);\n element.setAttribute(\"data-lexical-equation\", equation);\n element.setAttribute(\"data-lexical-inline\", `${this.__inline}`);\n katex.render(this.__equation, element, {\n displayMode: !this.__inline, // true === block display //\n errorColor: \"#cc0000\",\n output: \"html\",\n strict: \"warn\",\n throwOnError: false,\n trust: false,\n });\n\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n div: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n return null;\n }\n\n return {\n conversion: $convertEquationElement,\n priority: 2,\n };\n },\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n return null;\n }\n\n return {\n conversion: $convertEquationElement,\n priority: 1,\n };\n },\n };\n }\n\n updateDOM(prevNode: EquationNode): boolean {\n // If the inline property changes, replace the element\n return this.__inline !== prevNode.__inline;\n }\n\n getTextContent(): string {\n return this.__equation;\n }\n\n getEquation(): string {\n return this.__equation;\n }\n\n setEquation(equation: string): void {\n const writable = this.getWritable();\n writable.__equation = equation;\n }\n\n isInline(): boolean {\n return this.__inline;\n }\n\n decorate() {\n return (\n <Suspense fallback={null}>\n <EquationComponent equation={this.__equation} inline={this.__inline} />\n </Suspense>\n );\n }\n}\n\nexport function $createEquationNode(equation = \"\", inline = false): EquationNode {\n const equationNode = new EquationNode(equation, inline);\n return $applyNodeReplacement(equationNode);\n}\n\nexport function $isEquationNode(node: LexicalNode | null | undefined): node is EquationNode {\n return node instanceof EquationNode;\n}\n","import \"./EquationPlugin.css\";\n\nimport type { MultilineElementTransformer, TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createEquationNode, $isEquationNode, EquationNode } from \"./EquationNode.tsx\";\n\nexport const EQUATION_INLINE: TextMatchTransformer = {\n dependencies: [EquationNode],\n export: (node) => {\n if ($isEquationNode(node) && node.isInline()) {\n return `\\\\( ${node.getEquation().trim()} \\\\)`;\n }\n return null;\n },\n importRegExp: /\\\\\\((.*?)\\\\\\)/,\n regExp: /\\\\\\((.*?)\\\\\\)/,\n replace: (textNode, match) => {\n const equationNode = $createEquationNode(match[1].trim(), true);\n textNode.replace(equationNode);\n },\n type: \"text-match\",\n};\n\nexport const EQUATION_MULTILINE: MultilineElementTransformer = {\n dependencies: [EquationNode],\n regExpStart: /\\\\\\[/,\n regExpEnd: /\\\\]/,\n export: (node) => {\n if ($isEquationNode(node) && !node.isInline()) {\n return `\\\\[ ${node.getEquation().trim()} \\\\]`;\n }\n return null;\n },\n replace: (rootNode, _children, _startMatch, _endMatch, linesInBetween) => {\n if (linesInBetween) {\n rootNode.append($createEquationNode(linesInBetween.join(\" \"), false));\n return true;\n }\n return false;\n },\n type: \"multiline-element\",\n};\n\nexport function EquationPlugin(): null {\n return null;\n}\n","import {\n type EditorConfig,\n ElementNode,\n type LexicalEditor,\n type LexicalNode,\n type SerializedElementNode,\n type Spread,\n} from \"lexical\";\n\nexport type SerializedHRNode = Spread<SerializedElementNode, SerializedElementNode>;\n\nexport class HRNode extends ElementNode {\n static getType() {\n return \"hr\";\n }\n\n static clone(node: HRNode) {\n return new HRNode(node?.__key);\n }\n\n static importJSON(_serializedNode: SerializedHRNode) {\n return $createHRNode();\n }\n\n exportJSON(): SerializedHRNode {\n return {\n ...super.exportJSON(),\n };\n }\n\n createDOM(_config: EditorConfig, _editor: LexicalEditor): HTMLElement {\n const element = document.createElement(\"hr\");\n element.style = \"margin: 2rem 0;\";\n return element;\n }\n\n updateDOM(_prevNode: unknown, _dom: HTMLElement, _config: EditorConfig): boolean {\n return false;\n }\n\n decorate(_editor: LexicalEditor) {\n return null;\n }\n}\n\nexport function $createHRNode(): HRNode {\n return new HRNode();\n}\n\nexport function $isHRNode(node: LexicalNode | null | undefined): node is HRNode {\n return node instanceof HRNode;\n}\n","import type { LexicalNode, NodeKey, SerializedLexicalNode } from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode } from \"lexical\";\nimport type { ReactNode } from \"react\";\nimport { lazy, Suspense } from \"react\";\n\nconst MermaidComponent = lazy(() => import(\"./MermaidComponent\"));\n\nexport interface SerializedMermaidNode extends SerializedLexicalNode {\n type: \"mermaid\";\n code: string;\n version: 1;\n}\n\nexport class MermaidNode extends DecoratorNode<ReactNode> {\n __code: string;\n\n static getType() {\n return \"mermaid\";\n }\n\n static clone(node: MermaidNode) {\n return new MermaidNode(node.__code, node.__key);\n }\n\n constructor(code: string, key?: NodeKey) {\n super(key);\n this.__code = code;\n }\n\n createDOM() {\n return document.createElement(\"div\");\n }\n\n updateDOM() {\n return false;\n }\n\n static importJSON(serializedNode: SerializedMermaidNode): MermaidNode {\n return new MermaidNode(serializedNode.code);\n }\n\n exportJSON(): SerializedMermaidNode {\n return {\n type: \"mermaid\",\n code: this.__code,\n version: 1,\n };\n }\n\n getTextContent() {\n return `\\`\\`\\`mermaid\\n${this.__code}\\n\\`\\`\\``;\n }\n\n getCode() {\n return this.__code;\n }\n\n setCode(code: string) {\n const writable = this.getWritable();\n writable.__code = code;\n }\n\n decorate() {\n return (\n <Suspense fallback={null}>\n <MermaidComponent code={this.__code} nodeKey={this.__key} />\n </Suspense>\n );\n }\n}\n\nexport function $createMermaidNode(code = \"\") {\n const mermaidNode = new MermaidNode(code);\n return $applyNodeReplacement(mermaidNode);\n}\n\nexport function $isMermaidNode(node: LexicalNode | null | undefined): node is MermaidNode {\n return node instanceof MermaidNode;\n}\n","import type { ElementTransformer } from \"@lexical/markdown\";\nimport type { LexicalNode } from \"lexical\";\nimport { $createHRNode, $isHRNode, HRNode } from \"./HorizontalRuleNode\";\n\nexport const HR: ElementTransformer = {\n dependencies: [HRNode],\n export: (node: LexicalNode) => {\n return $isHRNode(node) ? \"***\" : null;\n },\n regExp: /^(---|\\*\\*\\*|___)\\s?$/,\n replace: (parentNode) => {\n const line = $createHRNode();\n parentNode.replace(line);\n },\n type: \"element\",\n};\n","import {\n $createAutoLinkNode,\n $createLinkNode,\n $isAutoLinkNode,\n $isLinkNode,\n AutoLinkNode,\n LinkNode,\n} from \"@lexical/link\";\nimport type { ElementTransformer, TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createTextNode, TextNode } from \"lexical\";\nimport { $createDataTableNode, $isDataTableNode, type RowData } from \"../nodes/DataTableNode\";\nimport { HR } from \"../plugins/HorizontalRulePlugin/horizontalRule\";\n\nexport const TABLE: ElementTransformer = {\n dependencies: [],\n export: (node, _traverseChildren) => {\n if ($isDataTableNode(node)) {\n const data = node.getData();\n\n if (!data.length) return \"\";\n\n const headers = Object.keys(data[0]);\n const headerRow = headers.join(\" | \");\n const separator = headers.map(() => \"---\").join(\" | \");\n const dataRows = data.map((row) => headers.map((header) => String(row[header] || \"\")).join(\" | \"));\n\n return [`| ${headerRow} |`, `| ${separator} |`, ...dataRows.map((row) => `| ${row} |`)].join(\"\\n\");\n }\n\n return null;\n },\n regExp: /^\\s*(\\|.+\\|)\\s*$/,\n replace: (parentNode, _children, match, _isImport) => {\n const previousNode = parentNode.getPreviousSibling();\n const isTableDelimiter = /^\\|?\\s*:?-{3,}:?\\s*(?:\\|\\s*:?-{3,}:?\\s*)*\\|?$/gm.test(match[0]);\n\n // if it is a delimiter, remove it\n if (isTableDelimiter) {\n parentNode.remove();\n return;\n }\n\n // Parse current row\n const cells = match[0]\n .split(\"|\")\n .slice(1, -1)\n .map((cell) => cell.trim());\n\n if (previousNode?.getType() === \"data_table\" && $isDataTableNode(previousNode)) {\n // Add row to existing table\n const existingData = previousNode.getData();\n const newRow: RowData = {};\n\n // Check if we have a placeholder row with empty values (created from headers)\n const isPlaceholderRow =\n existingData.length === 1 && Object.values(existingData[0]).every((value) => value === \"\");\n\n // Get headers from existing data structure\n const headers = existingData.length > 0 ? Object.keys(existingData[0]) : cells.map((_, index) => `col_${index}`);\n\n cells.forEach((cell, index) => {\n const header = headers[index] || `col_${index}`;\n newRow[header] = cell;\n });\n\n // If we had a placeholder row, replace it; otherwise append\n const newTableData = isPlaceholderRow ? [newRow] : [...existingData, newRow];\n const newTableNode = $createDataTableNode(newTableData);\n previousNode.replace(newTableNode);\n parentNode.remove();\n } else {\n // Create new table - treat first row as headers\n // Create a temporary empty row with these headers, which will be replaced when actual data comes\n const newRow: RowData = {};\n cells.forEach((cell, index) => {\n newRow[cell || `col_${index}`] = \"\";\n });\n\n const tableNode = $createDataTableNode([newRow]);\n parentNode.replace(tableNode);\n }\n },\n type: \"element\",\n};\n\nexport const UNDERLINE_INS_TAG: TextMatchTransformer = {\n dependencies: [TextNode],\n export: (node, _children) => {\n if (node instanceof TextNode) {\n let markdownText = node.getTextContent();\n\n if (node.hasFormat(\"bold\")) {\n markdownText = `**${markdownText}**`;\n } else if (node.hasFormat(\"italic\")) {\n markdownText = `*${markdownText}*`;\n } else if (node.hasFormat(\"underline\")) {\n markdownText = `<ins>${markdownText}</ins>`;\n } else {\n return null;\n }\n\n return markdownText;\n }\n return null;\n },\n regExp: /<ins>(.*)<\\/ins>/,\n importRegExp: /<ins>(.*)<\\/ins>/,\n replace: (node, match) => {\n const textNode = $createTextNode(match[1]);\n textNode.toggleFormat(\"underline\");\n node.replace(textNode);\n },\n type: \"text-match\",\n};\n\nexport const UNDERLINE_U_TAG: TextMatchTransformer = {\n dependencies: [TextNode],\n export: (_node, _children) => {\n return null;\n },\n regExp: /<u>(.*)<\\/u>/,\n importRegExp: /<u>(.*)<\\/u>/,\n replace: (node, match) => {\n const textNode = $createTextNode(match[1]);\n textNode.toggleFormat(\"underline\");\n node.replace(textNode);\n },\n type: \"text-match\",\n};\n\nconst BARE_URL_REGEXP = /https?:\\/\\/[^\\s<>\"']*[^\\s<>\"'.,:;\"')\\]}]/;\n\n// Strip markdown character escapes that may have leaked into a URL, e.g.\n// `https://example.com/foo\\_bar` -> `https://example.com/foo_bar`.\n// Without this, repeated save/reopen cycles would accumulate backslashes\n// because the URL is stored as both text content and href.\nconst unescapeUrl = (url: string) => url.replace(/\\\\([*_`~\\\\])/g, \"$1\");\n\nconst escapeLinkTitle = (title: string) => title.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n\nconst unescapeLinkTitle = (title: string | undefined) => title?.replace(/\\\\([\"\\\\])/g, \"$1\");\n\nconst normalizeEscapedUrlText = (textContent: string, href: string, exportedText: string) => {\n if (textContent !== href) {\n return exportedText;\n }\n\n const escapedHref = href.replace(/([*_`~\\\\])/g, \"\\\\$1\");\n\n return exportedText.replace(escapedHref, href);\n};\n\nexport const LINK: TextMatchTransformer = {\n dependencies: [LinkNode],\n export: (node, exportChildren) => {\n if (!$isLinkNode(node) || $isAutoLinkNode(node)) {\n return null;\n }\n\n const title = node.getTitle();\n const href = unescapeUrl(node.getURL());\n const textContent = normalizeEscapedUrlText(node.getTextContent(), href, exportChildren(node));\n\n return title != null ? `[${textContent}](${href} \"${escapeLinkTitle(title)}\")` : `[${textContent}](${href})`;\n },\n importRegExp: /(?:\\[(.+?)\\])(?:\\((?:([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?)\\))/,\n regExp: /(?:\\[(.+?)\\])(?:\\((?:([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?)\\))$/,\n replace: (textNode, match) => {\n const [, linkText, linkUrl, linkTitle] = match;\n const href = unescapeUrl(linkUrl);\n const linkNode = $createLinkNode(href, { title: unescapeLinkTitle(linkTitle) });\n const openBracketAmount = linkText.split(\"[\").length - 1;\n const closeBracketAmount = linkText.split(\"]\").length - 1;\n let parsedLinkText = linkText;\n let outsideLinkText = \"\";\n\n if (openBracketAmount < closeBracketAmount) {\n return;\n }\n\n if (openBracketAmount > closeBracketAmount) {\n const linkTextParts = linkText.split(\"[\");\n outsideLinkText = `[${linkTextParts[0]}`;\n parsedLinkText = linkTextParts.slice(1).join(\"[\");\n }\n\n const normalizedLinkText = unescapeUrl(parsedLinkText);\n const linkTextNode = $createTextNode(normalizedLinkText === href ? href : normalizedLinkText);\n\n linkTextNode.setFormat(textNode.getFormat());\n linkNode.append(linkTextNode);\n textNode.replace(linkNode);\n\n if (outsideLinkText) {\n linkNode.insertBefore($createTextNode(outsideLinkText));\n }\n\n return linkTextNode;\n },\n trigger: \")\",\n type: \"text-match\",\n};\n\nexport const BARE_URL: TextMatchTransformer = {\n dependencies: [AutoLinkNode],\n export: (node, exportChildren) => {\n if (!$isAutoLinkNode(node)) {\n return null;\n }\n\n const href = unescapeUrl(node.getURL());\n\n return normalizeEscapedUrlText(node.getTextContent(), href, exportChildren(node));\n },\n regExp: BARE_URL_REGEXP,\n importRegExp: BARE_URL_REGEXP,\n replace: (textNode, match) => {\n const href = unescapeUrl(match[0]);\n const autoLinkNode = $createAutoLinkNode(href);\n const linkTextNode = $createTextNode(href);\n\n linkTextNode.setFormat(textNode.getFormat());\n autoLinkNode.append(linkTextNode);\n textNode.replace(autoLinkNode);\n },\n type: \"text-match\",\n};\n\nexport const TRANSFORMERS_EXTENDED = [TABLE, HR, UNDERLINE_INS_TAG, UNDERLINE_U_TAG, LINK, BARE_URL];\n","import { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { CHECK_LIST, LINK as LEXICAL_LINK, TRANSFORMERS } from \"@lexical/markdown\";\nimport { HeadingNode, QuoteNode } from \"@lexical/rich-text\";\nimport type { Klass, LexicalNode } from \"lexical\";\nimport { REFERENCE_LINK_TRANSFORMER, ReferenceLinkNode } from \"../markdown-editor/plugins/ReferenceLinkPlugin\";\nimport theme from \"../theme/rich-text-theme\";\nimport { CodeHighlightNode, CodeNode } from \"./lexical-code\";\nimport { DataTableNode } from \"./nodes/DataTableNode\";\nimport { EquationNode } from \"./plugins/EquationPlugin/EquationNode\";\nimport { EQUATION_INLINE, EQUATION_MULTILINE } from \"./plugins/EquationPlugin/EquationPlugin\";\nimport { HRNode } from \"./plugins/HorizontalRulePlugin/HorizontalRuleNode\";\nimport { MermaidNode } from \"./plugins/MermaidPlugin/MermaidNode\";\nimport { TRANSFORMERS_EXTENDED } from \"./transformers/markdown-transformers\";\n\nexport const editorNodes: Array<Klass<LexicalNode>> = [\n QuoteNode,\n LinkNode,\n AutoLinkNode,\n DataTableNode,\n HeadingNode,\n ListNode,\n ListItemNode,\n CodeNode,\n CodeHighlightNode,\n MermaidNode,\n EquationNode,\n HRNode,\n ReferenceLinkNode,\n];\n\nexport const baseEditorTransformers = [\n CHECK_LIST,\n ...TRANSFORMERS.filter((transformer) => transformer !== LEXICAL_LINK),\n ...TRANSFORMERS_EXTENDED,\n EQUATION_INLINE,\n EQUATION_MULTILINE,\n];\n\nexport const editorTransformers = [...baseEditorTransformers, REFERENCE_LINK_TRANSFORMER];\n\nexport const editorTheme = theme;\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $nodesOfType } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { CodeNode } from \"../../lexical-code\";\nimport { MermaidNode } from \"../MermaidPlugin/MermaidNode\";\n\nfunction isMermaidLanguage(language: string) {\n return language.trim().toLowerCase() === \"mermaid\";\n}\n\nexport function replaceCodeNodeWithMermaidNode(node: CodeNode) {\n const language = node.getLanguage() ?? \"plaintext\";\n if (!isMermaidLanguage(language)) {\n return false;\n }\n\n node.replace(new MermaidNode(node.getTextContent()));\n return true;\n}\n\nexport function ImportCodeBlocksPlugin() {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.update(() => {\n const codeNodes = $nodesOfType(CodeNode);\n for (const n of codeNodes) {\n replaceCodeNodeWithMermaidNode(n);\n }\n });\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\nimport { registerCodeHighlighting } from \"../../lexical-code\";\n\nexport function CodeHighlightingPlugin() {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return registerCodeHighlighting(editor);\n }, [editor]);\n\n return null;\n}\n","import { createCommand, type LexicalCommand } from \"lexical\";\n\nexport const TOGGLE_LINK_EDIT_MODE_COMMAND: LexicalCommand<boolean> = createCommand(\"TOGGLE_LINK_EDIT_MODE_COMMAND\");\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\n\nexport default function ToggleEditablePlugin({ isEditable }: { isEditable: boolean }) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.setEditable(isEditable);\n }, [isEditable, editor]);\n\n return null;\n}\n","import { Box } from \"@chakra-ui/react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { TreeView } from \"@lexical/react/LexicalTreeView\";\n\nexport function TreeViewPlugin() {\n const [editor] = useLexicalComposerContext();\n return (\n <Box fontSize=\"xs\" color=\"fg.muted\" padding=\"4\">\n <TreeView\n treeTypeButtonClassName=\"debug-treetype-button\"\n timeTravelButtonClassName=\"debug-timetravel-button\"\n timeTravelPanelButtonClassName=\"debug-timetravel-button\"\n timeTravelPanelClassName=\"debug-timetravel-panel\"\n timeTravelPanelSliderClassName=\"debug-timetravel-slider\"\n viewClassName=\"tree-view-output\"\n editor={editor}\n />\n </Box>\n );\n}\n","const FRONTMATTER_PATTERN = /^---\\s*\\n([\\s\\S]*?)\\n---\\s*(?:\\n|$)/;\n\nconst FENCE_PATTERN = /^```/;\nconst LIST_ITEM_PATTERN = /^([ \\t]*)((?:[-*+])|(?:\\d+\\.))\\s+/;\nconst INDENTED_LINE_PATTERN = /^([ \\t]+)/;\n\ninterface ActiveListIndent {\n normalizedIndentWidth: number;\n sourceIndentWidth: number;\n}\n\ninterface MarkdownListState {\n isInCodeFence: boolean;\n activeListIndents: ActiveListIndent[];\n}\n\nfunction getExpandedIndentWidth(indent: string) {\n let width = 0;\n\n for (const char of indent) {\n width += char === \"\\t\" ? 4 : 1;\n }\n\n return width;\n}\n\nfunction findParentIndent(activeListIndents: ActiveListIndent[], sourceIndentWidth: number) {\n return [...activeListIndents].reverse().find((indent) => indent.sourceIndentWidth < sourceIndentWidth);\n}\n\nfunction toNormalizedIndent(indent: string, normalizedWidth: number, sourceWidth: number) {\n if (normalizedWidth === sourceWidth && !indent.includes(\"\\t\")) return indent;\n return \" \".repeat(normalizedWidth);\n}\n\nfunction normalizeIndentedContinuation(line: string, activeListIndents: ActiveListIndent[]) {\n const indentedLineMatch = line.match(INDENTED_LINE_PATTERN);\n if (!indentedLineMatch) {\n if (line.trim() !== \"\") {\n activeListIndents.length = 0;\n }\n\n return line;\n }\n\n const sourceIndentWidth = getExpandedIndentWidth(indentedLineMatch[1]);\n const parentLevel = findParentIndent(activeListIndents, sourceIndentWidth);\n if (!parentLevel) return line;\n\n const normalizedIndentWidth = sourceIndentWidth + (parentLevel.normalizedIndentWidth - parentLevel.sourceIndentWidth);\n const normalizedIndent = toNormalizedIndent(indentedLineMatch[1], normalizedIndentWidth, sourceIndentWidth);\n\n if (normalizedIndent === indentedLineMatch[1]) return line;\n\n return `${normalizedIndent}${line.slice(indentedLineMatch[1].length)}`;\n}\n\nfunction normalizeListItem(line: string, match: RegExpMatchArray, activeListIndents: ActiveListIndent[]) {\n const sourceIndentWidth = getExpandedIndentWidth(match[1]);\n\n while (activeListIndents.length && activeListIndents.at(-1)!.sourceIndentWidth > sourceIndentWidth) {\n activeListIndents.pop();\n }\n\n const currentLevel = activeListIndents.at(-1);\n if (currentLevel?.sourceIndentWidth === sourceIndentWidth) {\n return `${toNormalizedIndent(match[1], currentLevel.normalizedIndentWidth, sourceIndentWidth)}${line.slice(match[1].length)}`;\n }\n\n const parentLevel = activeListIndents.at(-1);\n const indentStep = sourceIndentWidth - (parentLevel?.sourceIndentWidth ?? 0);\n let normalizedIndentWidth = sourceIndentWidth;\n\n if (parentLevel && indentStep === 2 && !match[1].includes(\"\\t\")) {\n normalizedIndentWidth = parentLevel.normalizedIndentWidth + 4;\n }\n\n activeListIndents.push({ normalizedIndentWidth, sourceIndentWidth });\n\n return `${toNormalizedIndent(match[1], normalizedIndentWidth, sourceIndentWidth)}${line.slice(match[1].length)}`;\n}\n\nfunction normalizeMarkdownLine(line: string, state: MarkdownListState) {\n if (FENCE_PATTERN.test(line.trimStart())) {\n state.isInCodeFence = !state.isInCodeFence;\n return line;\n }\n\n if (state.isInCodeFence) return line;\n\n const match = line.match(LIST_ITEM_PATTERN);\n if (!match) return normalizeIndentedContinuation(line, state.activeListIndents);\n\n return normalizeListItem(line, match, state.activeListIndents);\n}\n\nexport function normalizeMarkdownListIndentation(content: string) {\n const lines = content.split(\"\\n\");\n const state: MarkdownListState = { isInCodeFence: false, activeListIndents: [] };\n\n return lines.map((line) => normalizeMarkdownLine(line, state)).join(\"\\n\");\n}\n\nexport function splitFrontmatter(content: string) {\n const match = content.match(FRONTMATTER_PATTERN);\n if (!match) {\n return { frontmatter: \"\", body: content };\n }\n return {\n frontmatter: match[0],\n body: content.slice(match[0].length),\n };\n}\n","export const FOCUS_EDITOR = \"FOCUS_EDITOR\";\nexport const UPLOAD_FILE = \"UPLOAD_FILE\";\nexport const OPEN_CONTEXT = \"OPEN_CONTEXT\";\nexport const DROP_EVENT = \"DROP_EVENT\";\n\n// prompt actions\nexport const RUN_PROMPT = \"RUN_PROMPT\";\nexport const UPDATE_FORMAT = \"UPDATE_FORMAT\";\nexport const UPDATE_BEHAVIOR = \"UPDATE_BEHAVIOR\";\nexport const INSERT_PROMPT = \"INSERT_PROMPT\";\nexport const RENAME_PROMPT = \"RENAME_PROMPT\";\nexport const DUPLICATE_PROMPT = \"DUPLICATE_PROMPT\";\nexport const DELETE_PROMPT = \"DELETE_PROMPT\";\n\n// reference actions\nexport const DELETE_REFERENCES = \"DELETE_REFERENCES\";\nexport const RENAME_REFERENCES = \"RENAME_REFERENCES\";\nexport const INSERT_REFERENCE = \"INSERT_REFERENCE\";\n\n// block actions\nexport const INSERT_BLOCK = \"INSERT_BLOCK\";\n","import { createCommand } from \"lexical\";\nimport {\n DELETE_PROMPT,\n DELETE_REFERENCES,\n DUPLICATE_PROMPT,\n INSERT_BLOCK,\n INSERT_PROMPT,\n INSERT_REFERENCE,\n OPEN_CONTEXT,\n RENAME_PROMPT,\n RENAME_REFERENCES,\n RUN_PROMPT,\n UPDATE_BEHAVIOR,\n UPDATE_FORMAT,\n UPLOAD_FILE,\n} from \"./events\";\n\nexport const UPLOAD_FILE_COMMAND = createCommand(UPLOAD_FILE);\nexport const OPEN_CONTEXT_COMMAND = createCommand(OPEN_CONTEXT);\n\n// prompt actions\nexport const RUN_PROMPT_COMMAND = createCommand(RUN_PROMPT);\nexport const UPDATE_FORMAT_COMMAND = createCommand(UPDATE_FORMAT);\nexport const UPDATE_BEHAVIOR_COMMAND = createCommand(UPDATE_BEHAVIOR);\nexport const INSERT_PROMPT_COMMAND = createCommand(INSERT_PROMPT);\nexport const RENAME_PROMPT_COMMAND = createCommand(RENAME_PROMPT);\nexport const DUPLICATE_PROMPT_COMMAND = createCommand(DUPLICATE_PROMPT);\nexport const DELETE_PROMPT_COMMAND = createCommand(DELETE_PROMPT);\n\n// reference actions\nexport const DELETE_REFERENCES_COMMAND = createCommand(DELETE_REFERENCES);\nexport const RENAME_REFERENCES_COMMAND = createCommand(RENAME_REFERENCES);\nexport const INSERT_REFERENCE_COMMAND = createCommand(INSERT_REFERENCE);\n\n// block actions\nexport const INSERT_BLOCK_COMMAND = createCommand(INSERT_BLOCK);\n\n// placeholder actions\nexport const INSERT_NEW_FILE_PLACEHOLDER = \"INSERT_NEW_FILE_PLACEHOLDER\";\nexport const INSERT_NEW_TEXT_PLACEHOLDER = \"INSERT_NEW_TEXT_PLACEHOLDER\";\nexport const INSERT_PLACEHOLDER_REFERENCE = \"INSERT_PLACEHOLDER_REFERENCE\";\nexport const INSERT_NEW_FILE_PLACEHOLDER_COMMAND = createCommand(INSERT_NEW_FILE_PLACEHOLDER);\nexport const INSERT_NEW_TEXT_PLACEHOLDER_COMMAND = createCommand(INSERT_NEW_TEXT_PLACEHOLDER);\nexport const INSERT_PLACEHOLDER_REFERENCE_COMMAND = createCommand(INSERT_PLACEHOLDER_REFERENCE);\n","import { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n type DOMConversionMap,\n type DOMConversionOutput,\n type DOMExportOutput,\n type EditorConfig,\n type ElementFormatType,\n ElementNode,\n isHTMLElement,\n type LexicalEditor,\n type LexicalNode,\n type ParagraphNode,\n type RangeSelection,\n type SerializedElementNode,\n} from \"lexical\";\n\nexport type SerializedCommentNode = SerializedElementNode;\n\nfunction convertCommentElement(element: HTMLElement): DOMConversionOutput {\n const node = $createCommentNode();\n if (element.style !== null) {\n node.setFormat(element.style.textAlign as ElementFormatType);\n }\n return { node };\n}\n\nexport class CommentNode extends ElementNode {\n static getType(): string {\n return \"comment\";\n }\n\n static clone(node: CommentNode): CommentNode {\n return new CommentNode(node.__key);\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement(\"blockquote\");\n addClassNamesToElement(element, config.theme.comment);\n return element;\n }\n\n updateDOM(): boolean {\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n blockquote: () => ({\n conversion: convertCommentElement,\n priority: 0,\n }),\n };\n }\n\n exportDOM(editor: LexicalEditor): DOMExportOutput {\n const { element } = super.exportDOM(editor);\n\n if (element && isHTMLElement(element)) {\n if (this.isEmpty()) {\n element.append(document.createElement(\"br\"));\n }\n\n const formatType = this.getFormatType();\n element.style.textAlign = formatType;\n\n const direction = this.getDirection();\n if (direction) {\n element.dir = direction;\n }\n }\n\n return {\n element,\n };\n }\n\n static importJSON(serializedNode: SerializedCommentNode): CommentNode {\n const node = $createCommentNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n exportJSON(): SerializedElementNode {\n return {\n ...super.exportJSON(),\n type: \"comment\",\n };\n }\n\n getTextContent(): string {\n const originalText = super.getTextContent();\n // escape { and } symbols\n const withEscapedReferences = originalText.replace(/([{}])/g, \"\\\\$1\");\n return `{{! ${withEscapedReferences} }}`;\n }\n\n // mutation\n\n insertNewAfter(_: RangeSelection, restoreSelection?: boolean): ParagraphNode {\n const newBlock = $createParagraphNode();\n const direction = this.getDirection();\n newBlock.setDirection(direction);\n this.insertAfter(newBlock, restoreSelection);\n return newBlock;\n }\n\n collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach((child) => {\n paragraph.append(child);\n });\n this.replace(paragraph);\n return true;\n }\n}\n\nexport function $createCommentNode(): CommentNode {\n return new CommentNode();\n}\n\nexport function $isCommentNode(node: LexicalNode | null | undefined): node is CommentNode {\n return node instanceof CommentNode;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, type TextNode } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { INSERT_BLOCK_COMMAND } from \"../../../commands\";\nimport { $createCommentNode } from \"../nodes/CommentNode/CommentNode\";\n\nexport const insertCommentBlock = (_blockType: string, nodeToReplace?: TextNode) => {\n const selection = $getSelection();\n const commentNode = $createCommentNode();\n\n if (nodeToReplace) {\n const nodeParent = nodeToReplace.getParent();\n nodeParent?.replace(commentNode, true);\n nodeToReplace.remove();\n commentNode.selectEnd();\n return;\n }\n\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, $createCommentNode);\n }\n};\n\ntype InsertBlockEvent = {\n optionId: string;\n nodeToReplace?: TextNode;\n};\n\nexport function useCommentCommands(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n INSERT_BLOCK_COMMAND,\n (event: InsertBlockEvent) => {\n const { optionId, nodeToReplace } = event;\n insertCommentBlock(optionId, nodeToReplace);\n return false;\n },\n COMMAND_PRIORITY_LOW,\n ),\n );\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $createParagraphNode } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { CommentNode } from \"../nodes/CommentNode/CommentNode\";\n\nexport const useCommentSchema = () => {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerNodeTransform(CommentNode, (node) => {\n const children = node.getChildren();\n\n /**\n * Comment nodes cannot have other comments as children\n */\n const invalidChildren = children.filter((child) => child.getType() === \"comment\");\n\n if (invalidChildren.length > 0) {\n editor.update(() => {\n invalidChildren.forEach((child) => {\n child.replace($createParagraphNode(), true);\n });\n });\n }\n }),\n );\n }, [editor]);\n};\n","import { useCommentCommands } from \"./hooks/useCommentCommands\";\nimport { useCommentSchema } from \"./hooks/useCommentSchema\";\n\nexport function CommentPlugin(): null {\n useCommentSchema();\n useCommentCommands();\n return null;\n}\n","import { $getRoot, $isElementNode, ElementNode, type Klass, type LexicalNode, type RootNode } from \"lexical\";\n\nexport function $getAllNodesOfType<T extends LexicalNode>(nodeType: Klass<T>) {\n const root = $getRoot();\n const nodesOfType: T[] = [];\n\n const traverse = (node: LexicalNode) => {\n if (node instanceof nodeType) {\n nodesOfType.push(node as T);\n }\n if (node instanceof ElementNode) {\n node.getChildren?.().forEach(traverse);\n }\n };\n\n traverse(root);\n return nodesOfType;\n}\n\nexport const $getTextContent = (root: RootNode) => {\n let textContent = \"\";\n const children = root.getChildren();\n const childrenLength = children.length;\n for (let i = 0; i < childrenLength; i++) {\n const child = children[i];\n textContent += child.getTextContent();\n if ($isElementNode(child) && i !== childrenLength - 1 && !child.isInline()) {\n textContent += \"\\n\";\n }\n }\n return textContent;\n};\n\ntype SerializedNode = {\n type?: string;\n text?: string;\n name?: string;\n referenceId?: string;\n children?: SerializedNode[];\n};\n\ntype SerializedRoot = {\n root?: SerializedNode;\n};\n\nconst getReferenceMarker = (node: SerializedNode) => {\n if (node.type !== \"reference\") return null;\n return `#${node.name ?? node.referenceId ?? \"\"}`;\n};\n\nconst shouldAppendParagraphBreak = (node: SerializedNode) => {\n return node.type === \"paragraph\" && Boolean(node.children?.length);\n};\n\nconst traverseSerializedNode = (node: SerializedNode): string => {\n if (node.type === \"comment\") {\n return \"\";\n }\n\n const referenceMarker = getReferenceMarker(node);\n if (referenceMarker !== null) {\n return referenceMarker;\n }\n\n let text = typeof node.text === \"string\" ? node.text : \"\";\n const children = node.children;\n if (!Array.isArray(children)) return text;\n\n const childrenLength = children.length;\n for (let i = 0; i < childrenLength; i += 1) {\n const child = children[i];\n if (child.type === \"comment\") {\n if (i !== childrenLength - 1) {\n text += \"\\n\";\n }\n continue;\n }\n\n text += traverseSerializedNode(child);\n if (shouldAppendParagraphBreak(child)) {\n text += \"\\n\";\n }\n }\n\n return text;\n};\n\nexport const getTextFromSerializedEditorState = (state: string): string => {\n try {\n const parsed = JSON.parse(state) as SerializedRoot;\n return traverseSerializedNode(parsed.root ?? {});\n } catch {\n return \"\";\n }\n};\n\nexport const emptyEditorState = {\n root: {\n direction: \"ltr\",\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1,\n children: [\n {\n type: \"paragraph\",\n version: 1,\n format: \"\",\n indent: 0,\n textFormat: undefined,\n direction: null,\n children: [],\n },\n ],\n },\n};\n\nexport function generateEditorStateFromString(input = \"\") {\n if (!input.trim()) {\n return JSON.parse(JSON.stringify(emptyEditorState));\n }\n\n // Split on line breaks → one paragraph per line\n const paragraphs = input.split(/\\r?\\n/);\n\n const children = paragraphs.map((line) => ({\n type: \"paragraph\",\n version: 1,\n format: \"\",\n indent: 0,\n textFormat: undefined,\n direction: null,\n children: line\n ? [\n {\n type: \"text\",\n version: 1,\n text: line,\n format: \"\",\n detail: 0,\n mode: \"normal\",\n style: \"\",\n },\n ]\n : [],\n }));\n\n return {\n root: {\n direction: \"ltr\",\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1,\n children,\n },\n };\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useImperativeHandle } from \"react\";\nimport { generateEditorStateFromString, getTextFromSerializedEditorState } from \"../utils\";\n\nexport interface PromptEditorRef {\n setEditorValue: (value: string) => void;\n}\n\nexport function ImperativeAPIPlugin({\n editorRef,\n previousTextRef,\n}: {\n editorRef: React.ForwardedRef<PromptEditorRef>;\n previousTextRef: React.MutableRefObject<string>;\n}) {\n const [editor] = useLexicalComposerContext();\n\n useImperativeHandle(\n editorRef,\n () => ({\n setEditorValue: (value: string) => {\n const state = editor.parseEditorState(JSON.stringify(generateEditorStateFromString(value)));\n editor.setEditorState(state);\n previousTextRef.current = getTextFromSerializedEditorState(value);\n editor.focus(undefined, { defaultSelection: \"rootEnd\" });\n },\n }),\n [editor, previousTextRef],\n );\n\n return null;\n}\n","type KeyDownLikeEvent = {\n key: string;\n ctrlKey: boolean;\n metaKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n};\n\nexport const shouldSubmitOnEnter = (event: KeyDownLikeEvent) => {\n if (event.key !== \"Enter\") return false;\n\n return !event.ctrlKey && !event.metaKey && !event.shiftKey && !event.altKey;\n};\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { COMMAND_PRIORITY_HIGH, KEY_DOWN_COMMAND } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { shouldSubmitOnEnter } from \"./keyboard-shortcuts\";\n\nexport interface KeyboardShortcutPluginProps {\n onSubmit?: () => void;\n}\n\nexport function KeyboardShortcutPlugin({ onSubmit }: KeyboardShortcutPluginProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (shouldSubmitOnEnter(event)) {\n event.preventDefault();\n onSubmit?.();\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n );\n }, [editor, onSubmit]);\n\n return null;\n}\n","import type { MenuOptionGroup } from \"./ReferenceMenuOption\";\n\nexport const menuSortOrder: MenuOptionGroup[] = [\"table\", \"connector\"];\n","import { menuSortOrder } from \"../constants\";\nimport type { MenuOptionGroup, ReferenceMenuOption } from \"../ReferenceMenuOption\";\n\nexport const getSortedMenuOptions = (options: ReferenceMenuOption[]) => {\n const sortedOptions = options\n .sort((a, b) => menuSortOrder.indexOf(a.group) - menuSortOrder.indexOf(b.group))\n .map((option, index) => ({ ...option, index }) as ReferenceMenuOption);\n\n const groupedOptions = sortedOptions.reduce(\n (acc, option) => {\n const bucket = acc[option.group] ?? [];\n bucket.push(option);\n acc[option.group] = bucket;\n return acc;\n },\n {} as Record<MenuOptionGroup, ReferenceMenuOption[]>,\n );\n\n return groupedOptions;\n};\n","import { Flex, Text, Tooltip } from \"@chakra-ui/react\";\n\ninterface ReferenceMenuItemProps {\n id: string;\n isSelected: boolean;\n onClick: () => void;\n onMouseEnter: () => void;\n primaryLabel: string;\n secondaryLabel?: string;\n setRefElement: (element: HTMLDivElement) => void;\n tabIndex: number;\n}\n\nexport function ReferenceMenuItem(props: ReferenceMenuItemProps) {\n const { id, isSelected, onClick, onMouseEnter, setRefElement, secondaryLabel, primaryLabel, tabIndex = -1 } = props;\n\n return (\n <Flex\n direction=\"column\"\n cursor=\"pointer\"\n gap=\"2xs\"\n padding=\"2xs\"\n paddingX=\"sm\"\n bg={isSelected ? \"bg.active\" : \"transparent\"}\n _hover={{ bg: isSelected ? \"bg.active\" : \"bg.hover\" }}\n tabIndex={tabIndex}\n ref={setRefElement}\n role=\"option\"\n aria-selected={isSelected}\n id={id}\n onMouseEnter={onMouseEnter}\n onClick={onClick}\n >\n <Tooltip.Root>\n <Tooltip.Trigger>\n <Text mt=\"1px\" lineClamp={1} textOverflow=\"ellipsis\" textStyle=\"label/M/regular\">\n {primaryLabel}\n </Text>\n </Tooltip.Trigger>\n <Tooltip.Positioner>\n <Tooltip.Content>{primaryLabel}</Tooltip.Content>\n </Tooltip.Positioner>\n </Tooltip.Root>\n {secondaryLabel && (\n <Text lineClamp={2} textOverflow=\"ellipsis\" textStyle=\"label/S/regular\" color=\"fg.muted\">\n {secondaryLabel}\n </Text>\n )}\n </Flex>\n );\n}\n","import { Box, Text } from \"@chakra-ui/react\";\nimport { useEffect } from \"react\";\nimport { ScrollArea } from \"@/components/scroll-area\";\nimport type { ReferenceMenuOption } from \"../../ReferenceMenuOption\";\nimport { getSortedMenuOptions } from \"../../utils/getSortedMenuOptions\";\nimport { ReferenceMenuItem } from \"./ReferenceMenuItem\";\n\ninterface ReferenceMenuProps {\n options: ReferenceMenuOption[];\n selectedIndex: number | null;\n onSelectItem: (option: ReferenceMenuOption, index: number) => void;\n onMouseEnterItem: (index: number) => void;\n}\n\nexport const ReferenceMenu = (props: ReferenceMenuProps) => {\n const { options, selectedIndex, onSelectItem, onMouseEnterItem } = props;\n const { table = [], connector = [] } = getSortedMenuOptions(options);\n\n const hasResults = [...table, ...connector].length;\n\n /** scroll to the selected item if necessary */\n useEffect(() => {\n document\n .getElementById(`typeahead-item-${selectedIndex}`)\n ?.scrollIntoView({ behavior: \"instant\", block: \"nearest\" });\n }, [selectedIndex]);\n\n return (\n <ScrollArea\n zIndex=\"1000\"\n position=\"absolute\"\n layerStyle=\"modal\"\n maxHeight={\"24rem\"}\n showHorizontalScrollbar={false}\n minWidth={{\n base: \"100vw\",\n md: \"264px\",\n }}\n >\n {!hasResults && <Text>No results</Text>}\n {!!table.length && (\n <>\n <Text paddingTop=\"xs\" paddingBottom=\"2xs\" paddingX=\"sm\" color=\"fg.muted\" textStyle=\"label/S/medium\">\n Tables\n </Text>\n <Box>\n {table.map((option) => {\n return (\n <ReferenceMenuItem\n id={`typeahead-item-${option.index}`}\n isSelected={selectedIndex === option.index}\n onClick={() => onSelectItem(option, option.index)}\n onMouseEnter={() => onMouseEnterItem(option.index)}\n key={option.id}\n primaryLabel={option.name}\n secondaryLabel={option.description}\n setRefElement={option.setRefElement}\n tabIndex={-1}\n />\n );\n })}\n </Box>\n </>\n )}\n {!!connector.length && (\n <>\n <Text paddingTop=\"xs\" paddingBottom=\"2xs\" paddingX=\"sm\" color=\"fg.muted\" textStyle=\"label/S/medium\">\n Data Sources\n </Text>\n <Box>\n {connector.map((option) => {\n return (\n <ReferenceMenuItem\n id={`typeahead-item-${option.index}`}\n isSelected={selectedIndex === option.index}\n onClick={() => onSelectItem(option, option.index)}\n onMouseEnter={() => onMouseEnterItem(option.index)}\n key={option.id}\n primaryLabel={option.name}\n secondaryLabel={option.description}\n setRefElement={option.setRefElement}\n tabIndex={-1}\n />\n );\n })}\n </Box>\n </>\n )}\n </ScrollArea>\n );\n};\n","import type { ReferenceMenuOption } from \"../ReferenceMenuOption\";\n\nconst localFilter = (data: ReferenceMenuOption[], q: string) =>\n data.filter((m) => m.name.replace(/ /g, \"_\").toLowerCase().includes(q.toLowerCase()));\n\n/**\n * Search across all resources and menu options\n *\n * @param queryString\n * @returns\n */\nexport function useContextLookup(\n queryString: string | null,\n items: {\n resourceId: string;\n resourceType: \"table\" | \"connector\";\n name: string;\n description?: string;\n }[] = [],\n) {\n const baseOptions: ReferenceMenuOption[] = items.map(\n (res, index): ReferenceMenuOption => ({\n id: res.resourceId,\n key: res.resourceId,\n index,\n group: res.resourceType,\n name: res.name,\n description: res.description,\n setRefElement: () => {},\n }),\n );\n\n if (queryString == null || queryString === \"\") {\n return baseOptions;\n }\n\n return localFilter(baseOptions, queryString);\n}\n","import type { MenuTextMatch } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\n\nconst VALID_PUNCTUATION = \"\\\\.\\\\-<>_:\";\nconst TRIGGERS = [\"#\"].join(\"\");\n\nconst VALID_CHARS = `[^${TRIGGERS}${VALID_PUNCTUATION}\\\\s]`;\nconst VALID_JOINS = `(?:[${VALID_PUNCTUATION}]|)`;\n\nconst LENGTH_LIMIT = 75;\n\nconst TriggerRegex = new RegExp(`(^|\\\\s|\\\\()([${TRIGGERS}]((?:${VALID_CHARS}${VALID_JOINS}){0,${LENGTH_LIMIT}}))$`);\n\nconst AliasRegex = new RegExp(`(^|\\\\s|\\\\()([${TRIGGERS}]((?:${VALID_CHARS}){0,${LENGTH_LIMIT}}))$`);\n\n/**\n * lexical will run this function on text nodes\n *\n * @param text\n * @param minMatchLength\n * @returns\n */\nexport function checkForTriggers(text: string, minMatchLength: number): MenuTextMatch | null {\n let match = TriggerRegex.exec(text);\n\n if (match === null) {\n match = AliasRegex.exec(text);\n }\n\n if (match !== null) {\n // The strategy ignores leading whitespace but we need to know it's\n // length to add it to the leadOffset\n const maybeLeadingWhitespace = match[1];\n const matchingString = match[3];\n\n if (matchingString.length >= minMatchLength) {\n return {\n leadOffset: match.index + maybeLeadingWhitespace.length,\n matchingString,\n replaceableString: match[2],\n };\n }\n }\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { LexicalTypeaheadMenuPlugin } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport type { TextNode } from \"lexical\";\nimport { useState } from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { INSERT_REFERENCE_COMMAND } from \"../../commands\";\nimport { ReferenceMenu } from \"./components/ReferenceMenu/ReferenceMenu\";\nimport { useContextLookup } from \"./hooks/useContextLookup\";\nimport type { ReferenceMenuOption } from \"./ReferenceMenuOption\";\nimport { checkForTriggers } from \"./utils/checkForTriggers\";\n\nconst SUGGESTION_LIST_LENGTH_LIMIT = 20;\n\ntype Props = {\n items?: Array<{\n resourceId: string;\n resourceType: \"table\" | \"connector\";\n name: string;\n description?: string;\n }>;\n};\n\nexport function ReferenceMenuPlugin({ items = [] }: Props) {\n const [queryString, setQueryString] = useState<string | null>(null);\n const [editor] = useLexicalComposerContext();\n const searchResults = useContextLookup(queryString, items);\n\n /**\n * triggers when the user selects an option in the context menu\n */\n const onSelectOption = (\n selectedOption: ReferenceMenuOption,\n nodeToReplace: TextNode | null,\n closeMenu: () => void,\n ) => {\n editor.update(() => {\n if (!nodeToReplace) return;\n\n editor.dispatchCommand(INSERT_REFERENCE_COMMAND, {\n resourceId: selectedOption.id,\n resourceType: selectedOption.group,\n name: selectedOption.name,\n nodeToReplace,\n });\n\n closeMenu();\n });\n };\n\n /**\n * checks text nodes and return nodes matching the trigger\n */\n const checkForTrigger = (text: string) => {\n return checkForTriggers(text, 0);\n };\n\n /**\n * define the options to display in the context menu\n */\n const menuOptions = searchResults.slice(0, SUGGESTION_LIST_LENGTH_LIMIT);\n\n return (\n <LexicalTypeaheadMenuPlugin<ReferenceMenuOption>\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForTrigger}\n options={menuOptions}\n menuRenderFn={(anchorElementRef, { options, selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }) => {\n if (!anchorElementRef.current) return null;\n return ReactDOM.createPortal(\n <ReferenceMenu\n options={options}\n selectedIndex={selectedIndex}\n onSelectItem={(option, i) => {\n setHighlightedIndex(i);\n selectOptionAndCleanUp(option);\n }}\n onMouseEnterItem={(i) => {\n setHighlightedIndex(i);\n }}\n />,\n anchorElementRef.current,\n );\n }}\n />\n );\n}\n","import { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n type DOMConversionMap,\n type DOMConversionOutput,\n type DOMExportOutput,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n type SerializedTextNode,\n type Spread,\n TextNode,\n} from \"lexical\";\n\ntype SerializedReferenceNode = Spread<\n {\n referenceId: string;\n name: string;\n },\n SerializedTextNode\n>;\n\nexport class ReferenceNode extends TextNode {\n __referenceId: string;\n __name: string;\n\n static getType(): string {\n return \"reference\";\n }\n\n static clone(node: ReferenceNode): ReferenceNode {\n return new ReferenceNode(node.__referenceId, node.__name, node.__key);\n }\n\n constructor(referenceId: string, name: string, key?: NodeKey) {\n super(name, key);\n this.__referenceId = referenceId;\n this.__name = name;\n }\n\n isKeyboardSelectable(): boolean {\n return false;\n }\n\n canBeEmpty(): boolean {\n return false;\n }\n\n canInsertTextAfter(): boolean {\n return false;\n }\n\n canInsertTextBefore(): boolean {\n return false;\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n addClassNamesToElement(span, config.theme.reference);\n span.setAttribute(\"data-reference-id\", this.__referenceId);\n span.setAttribute(\"data-name\", this.__name);\n span.textContent = `#${this.__name}`;\n return span;\n }\n\n updateDOM(prevNode: ReferenceNode, dom: HTMLElement): boolean {\n if (prevNode.__name !== this.__name || prevNode.__referenceId !== this.__referenceId) {\n dom.setAttribute(\"data-reference-id\", this.__referenceId);\n dom.setAttribute(\"data-name\", this.__name);\n dom.textContent = `#${this.__name}`;\n }\n\n return false;\n }\n\n exportDOM(_editor: LexicalEditor): DOMExportOutput {\n const el = document.createElement(\"span\");\n el.setAttribute(\"data-reference-id\", this.__referenceId);\n el.setAttribute(\"data-name\", this.__name);\n el.textContent = `#${this.__name}`;\n return { element: el };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-reference-id\") || !domNode.hasAttribute(\"data-name\")) {\n return null;\n }\n return {\n conversion: $convertReferenceElement,\n priority: 1,\n };\n },\n };\n }\n\n static importJSON(serializedNode: SerializedReferenceNode): ReferenceNode {\n const node = new ReferenceNode(serializedNode.referenceId, serializedNode.name);\n return node;\n }\n\n exportJSON(): SerializedReferenceNode {\n return {\n ...super.exportJSON(),\n type: \"reference\",\n referenceId: this.__referenceId,\n name: this.__name,\n };\n }\n\n getTextContent(): string {\n return `#${this.__name}`;\n }\n}\n\nfunction $convertReferenceElement(domNode: HTMLElement): DOMConversionOutput | null {\n const referenceId = domNode.getAttribute(\"data-reference-id\");\n const name = domNode.getAttribute(\"data-name\");\n if (!referenceId || !name) return null;\n return { node: $createReferenceNode(referenceId, name) };\n}\n\nexport function $createReferenceNode(referenceId: string, name: string): ReferenceNode {\n return new ReferenceNode(referenceId, name);\n}\n\nexport function $isReferenceNode(node: LexicalNode | null | undefined): node is ReferenceNode {\n return node instanceof ReferenceNode;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { COMMAND_PRIORITY_LOW, type LexicalNode } from \"lexical\";\nimport { type PropsWithChildren, useEffect } from \"react\";\nimport { INSERT_REFERENCE_COMMAND } from \"../../commands\";\nimport { $createReferenceNode } from \"./nodes/ReferenceNode/ReferenceNode\";\n\nexport const $insertExistingReference = (nodeToReplace: LexicalNode, resourceId: string, name: string) => {\n const refNode = $createReferenceNode(resourceId, name);\n\n if (nodeToReplace) {\n nodeToReplace?.replace(refNode);\n nodeToReplace.remove();\n refNode.selectEnd();\n return;\n }\n};\n\nexport function ReferencePlugin(\n props: PropsWithChildren<{ onAddReference?: (resourceId: string, resourceType: \"table\" | \"connector\") => void }>,\n) {\n const { onAddReference } = props;\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n INSERT_REFERENCE_COMMAND,\n (event: {\n resourceId: string;\n resourceType: \"table\" | \"connector\";\n name: string;\n nodeToReplace: LexicalNode;\n }) => {\n const { resourceId, resourceType, name, nodeToReplace } = event;\n\n editor.update(() => {\n $insertExistingReference(nodeToReplace, resourceId, name);\n });\n\n onAddReference?.(resourceId, resourceType);\n return true;\n },\n COMMAND_PRIORITY_LOW,\n ),\n );\n }, [editor, onAddReference]);\n\n return null;\n}\n","import type { EditorThemeClasses } from \"lexical\";\nimport baseTheme from \"../../theme/rich-text-theme\";\nimport \"./prompt-input-theme.css\";\n\nconst promptInputTheme: EditorThemeClasses = {\n ...baseTheme,\n // Override paragraph class to remove margins specifically for prompt input\n paragraph: \"rich-text__p rich-text__p--no-margin\",\n};\n\nexport default promptInputTheme;\n","import { Flex, Kbd, Text } from \"@chakra-ui/react\";\nimport { MarkNode } from \"@lexical/mark\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { $getRoot } from \"lexical\";\nimport type { ReactElement } from \"react\";\nimport { type ForwardRefRenderFunction, forwardRef, useRef } from \"react\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { CommentPlugin } from \"./plugins/CommentPlugin/CommentPlugin\";\nimport { CommentNode } from \"./plugins/CommentPlugin/nodes/CommentNode/CommentNode\";\nimport { ImperativeAPIPlugin, type PromptEditorRef } from \"./plugins/ImperativeAPIPlugin\";\nimport { KeyboardShortcutPlugin } from \"./plugins/KeyboardShortcutPlugin\";\nimport { ReferenceMenuPlugin } from \"./plugins/ReferenceMenuPlugin/ReferenceMenuPlugin\";\nimport { ReferenceNode } from \"./plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode\";\nimport { ReferencePlugin } from \"./plugins/ReferencePlugin/ReferencePlugin\";\nimport theme from \"./theme/prompt-input-theme\";\nimport { $getTextContent, getTextFromSerializedEditorState } from \"./utils\";\n\nexport type ReferenceItem = {\n resourceId: string;\n resourceType: \"table\" | \"connector\";\n name: string;\n description?: string;\n};\n\nexport interface PromptEditorProps {\n defaultState: string;\n debug?: boolean;\n isEditable?: boolean;\n placeholder?: ReactElement | ((isEditable: boolean) => ReactElement | null);\n onChange?: (text: string, state: object) => void;\n onError?: (error: Error) => void;\n onSubmit?: () => void;\n /** Dynamic list of references (tables, connectors) shown when typing # */\n references?: ReferenceItem[];\n /** Optional app callback when a reference is inserted */\n onAddReference?: (resourceId: string, resourceType: \"table\" | \"connector\") => void;\n}\n\nconst nodes = [CommentNode, MarkNode, ReferenceNode];\n\nexport const BasePromptEditor: ForwardRefRenderFunction<PromptEditorRef, PromptEditorProps> = (props, ref) => {\n const { defaultState, debug = false, isEditable = true, placeholder } = props;\n const { onChange, onError = () => {}, onSubmit, references = [], onAddReference } = props;\n\n const initialConfig = {\n namespace: \"PROMPT_EDITOR\",\n nodes,\n editorState: defaultState,\n editable: isEditable,\n onError,\n theme,\n };\n\n const previousTextRef = useRef<string>(getTextFromSerializedEditorState(defaultState));\n const placeholderNode: ReactElement | ((isEditable: boolean) => ReactElement | null) = placeholder ?? (\n <Text textStyle=\"label/M/regular\" color=\"fg.subtle\" pointerEvents=\"none\" position=\"absolute\" top=\"0\">\n Type your query here or press <Kbd color=\"fg.subtle\">#</Kbd> to add a reference.\n </Text>\n );\n\n return (\n <Flex direction=\"column\" justifyContent=\"space-between\" width=\"100%\" position=\"relative\">\n <LexicalComposer initialConfig={initialConfig}>\n <HistoryPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth />}\n placeholder={placeholderNode}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n // handle comment blocks properly\n const root = $getRoot();\n const rawText = $getTextContent(root);\n\n if (rawText !== previousTextRef.current) {\n previousTextRef.current = rawText;\n onChange?.(rawText, editorState.toJSON());\n }\n });\n }}\n />\n <ImperativeAPIPlugin editorRef={ref} previousTextRef={previousTextRef} />\n <ToggleEditablePlugin isEditable={isEditable} />\n <CommentPlugin />\n <KeyboardShortcutPlugin onSubmit={onSubmit} />\n <ReferenceMenuPlugin items={references} />\n <ReferencePlugin onAddReference={onAddReference} />\n {debug ? <TreeViewPlugin /> : \"\"}\n </LexicalComposer>\n </Flex>\n );\n};\n\nexport const PromptEditor = forwardRef(BasePromptEditor);\n\nexport type { PromptEditorRef } from \"./plugins/ImperativeAPIPlugin\";\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\n\ntype StateUpdatePluginProps = {\n value: string;\n onUpdate: (value: string) => void;\n};\n\nexport default function StateUpdatePlugin({ value, onUpdate }: StateUpdatePluginProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n editor.update(() => onUpdate(value), { tag: \"history-merge\" });\n }, [value, editor, onUpdate]);\n\n return null;\n}\n","import { Box } from \"@chakra-ui/react\";\nimport {\n DecoratorNode,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n type SerializedLexicalNode,\n type Spread,\n} from \"lexical\";\nimport type { ReactElement } from \"react\";\nimport { ResourceBadge } from \"../../../../resource-badge\";\n\nexport type SerializedReferenceLinkNode = Spread<\n {\n href: string;\n label?: string;\n },\n SerializedLexicalNode\n>;\n\nexport class ReferenceLinkNode extends DecoratorNode<ReactElement> {\n __href: string;\n __label?: string;\n\n static getType(): string {\n return \"reference-link\";\n }\n\n static clone(node: ReferenceLinkNode): ReferenceLinkNode {\n return new ReferenceLinkNode(node.__href, node.__label, node.__key);\n }\n\n constructor(href: string, label?: string, key?: NodeKey) {\n super(key);\n this.__href = href;\n this.__label = label;\n }\n\n createDOM(_config: EditorConfig, _editor: LexicalEditor): HTMLElement {\n return document.createElement(\"span\");\n }\n\n updateDOM(_prevNode: ReferenceLinkNode, _dom: HTMLElement, _config: EditorConfig): boolean {\n return false;\n }\n\n getTextContent(): string {\n const label = this.__label ?? this.__href;\n return `{{link('${label}')}}`;\n }\n\n exportJSON(): SerializedReferenceLinkNode {\n return {\n type: ReferenceLinkNode.getType(),\n version: 1,\n href: this.__href,\n label: this.__label,\n };\n }\n\n static importJSON(serializedNode: SerializedReferenceLinkNode): ReferenceLinkNode {\n return $createReferenceLinkNode(serializedNode.href, serializedNode.label);\n }\n\n decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement {\n const href = this.__href;\n const fileName = href.split(\"/\").pop();\n const label = fileName || \"unknown\";\n const isExternal = /^https?:\\/\\//i.test(href);\n const isProjectFile = /^#?\\$PROJECT\\//i.test(href);\n\n return (\n <Box width=\"fit-content\" display=\"inline-block\">\n <ResourceBadge\n fileName={label}\n onSelect={() => {\n if (isExternal) {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else if (isProjectFile) {\n const projectPath = href.replace(/^#?\\$PROJECT\\//i, \"\");\n const event = new CustomEvent(\"ui:open-project-file\", { detail: projectPath });\n window.dispatchEvent(event);\n } else {\n window.location.assign(href);\n }\n }}\n />\n </Box>\n );\n }\n}\n\nexport function $createReferenceLinkNode(href: string, label?: string): ReferenceLinkNode {\n return new ReferenceLinkNode(href, label);\n}\n\nexport function $isReferenceLinkNode(node: LexicalNode | null | undefined): node is ReferenceLinkNode {\n return node instanceof ReferenceLinkNode;\n}\n","import type { TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createReferenceLinkNode, $isReferenceLinkNode, ReferenceLinkNode } from \"./ReferenceLinkNode\";\n\n// Matches {{link('xxx')}} or {{ link(\"xxx\") }}\nconst LINK_REGEXP = /\\{\\{\\s*link\\((['\"])([^'\"\\s]+)\\1\\)\\s*\\}\\}/;\n\nexport const REFERENCE_LINK_TRANSFORMER: TextMatchTransformer = {\n dependencies: [ReferenceLinkNode],\n export: (node) => {\n if ($isReferenceLinkNode(node)) {\n const href = (node as ReferenceLinkNode).__href;\n const label = (node as ReferenceLinkNode).__label ?? href;\n // Export back to token form so markdown roundtrips\n if (label) {\n return `{{link('${label}')}}`;\n }\n return `{{link('${href}')}}`;\n }\n return null;\n },\n regExp: LINK_REGEXP,\n importRegExp: LINK_REGEXP,\n replace: (textNode, match) => {\n const value = match[2];\n // For now we assume value is both label and href; if it looks like a URL, use as href.\n const looksLikeUrl = /^(https?:\\/\\/|\\/)/i.test(value);\n const href = looksLikeUrl ? value : `#${value}`;\n const label = value;\n textNode.replace($createReferenceLinkNode(href, label));\n },\n type: \"text-match\",\n};\n","import \"../theme/rich-text-theme.css\";\n\nimport { Flex } from \"@chakra-ui/react\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { $convertFromMarkdownString, $convertToMarkdownString } from \"@lexical/markdown\";\nimport { ClickableLinkPlugin } from \"@lexical/react/LexicalClickableLinkPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { TabIndentationPlugin } from \"@lexical/react/LexicalTabIndentationPlugin\";\nimport { HeadingNode, QuoteNode } from \"@lexical/rich-text\";\nimport { $getRoot } from \"lexical\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { baseEditorTransformers } from \"../shared/editor-config\";\nimport { CodeHighlightNode, CodeNode } from \"../shared/lexical-code\";\nimport { DataTableNode } from \"../shared/nodes/DataTableNode\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { CodeHighlightingPlugin } from \"../shared/plugins/CodePlugin/CodeHighlightingPlugin\";\nimport { EquationNode } from \"../shared/plugins/EquationPlugin/EquationNode\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { HRNode } from \"../shared/plugins/HorizontalRulePlugin/HorizontalRuleNode\";\nimport { MermaidNode } from \"../shared/plugins/MermaidPlugin/MermaidNode\";\nimport StateUpdatePlugin from \"../shared/plugins/StateUpdatePlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport theme from \"../theme/rich-text-theme\";\nimport { normalizeMarkdownListIndentation, splitFrontmatter } from \"../utils/markdown\";\nimport { REFERENCE_LINK_TRANSFORMER, ReferenceLinkNode } from \"./plugins/ReferenceLinkPlugin\";\n\nexport interface RichMessageProps {\n debug?: boolean;\n defaultState: string;\n fullWidth?: boolean;\n isEditable?: boolean;\n onChange?: (value: string) => void;\n}\n\nconst transformers = [...baseEditorTransformers, REFERENCE_LINK_TRANSFORMER];\n\nexport function RichMessage(props: RichMessageProps) {\n const { debug = false, defaultState = \"\", fullWidth = false, isEditable = false, onChange } = props;\n const { frontmatter, body } = splitFrontmatter(defaultState);\n const shouldTrackChanges = isEditable && Boolean(onChange);\n\n const initialConfig = {\n namespace: \"RICH_MESSAGE\",\n nodes: [\n QuoteNode,\n LinkNode,\n AutoLinkNode,\n DataTableNode,\n HeadingNode,\n ListNode,\n ListItemNode,\n CodeNode,\n CodeHighlightNode,\n MermaidNode,\n EquationNode,\n HRNode,\n ReferenceLinkNode,\n ],\n editorState: () => {\n return $convertFromMarkdownString(normalizeMarkdownListIndentation(body), transformers, undefined, false);\n },\n onError: (error: Error) => console.error(error),\n editable: isEditable,\n theme,\n };\n\n return (\n <Flex\n className=\"rich-text\"\n data-rich-message=\"true\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"hidden\"\n >\n <LexicalComposer initialConfig={initialConfig}>\n <StateUpdatePlugin\n value={body}\n onUpdate={(value: string) => {\n $convertFromMarkdownString(normalizeMarkdownListIndentation(value), transformers, undefined, false);\n }}\n />\n <LinkPlugin />\n <ClickableLinkPlugin newTab />\n <ListPlugin />\n {isEditable ? <TabIndentationPlugin maxIndent={7} /> : null}\n <HorizontalRulePlugin />\n <CodeHighlightingPlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={fullWidth} isRichMessage />}\n ErrorBoundary={LexicalErrorBoundary}\n />\n {shouldTrackChanges ? (\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n const root = $getRoot();\n const markdownBody = $convertToMarkdownString(transformers, root);\n onChange?.(frontmatter + markdownBody);\n });\n }}\n />\n ) : null}\n <ToggleEditablePlugin isEditable={isEditable} />\n {debug && <TreeViewPlugin />}\n </LexicalComposer>\n </Flex>\n );\n}\n"],"names":["StyledEditable","chakra","LexicalContentEditable","ContentEditable","t0","$","_c","onRef","fullWidth","t1","padding","isRichMessage","t2","scrollable","t3","undefined","t4","t5","t6","jsx","t7","Box","editor","t8","t9","Symbol","for","width","minH","t10","ScrollArea","ReferenceLinkNode","DecoratorNode","__href","__label","getType","clone","node","__key","constructor","href","label","key","createDOM","_config","_editor","document","createElement","updateDOM","_prevNode","_dom","getTextContent","exportJSON","type","version","importJSON","serializedNode","$createReferenceLinkNode","decorate","split","pop","isExternal","test","isProjectFile","ResourceBadge","window","open","projectPath","replace","event","CustomEvent","detail","dispatchEvent","location","assign","$isReferenceLinkNode","LINK_REGEXP","REFERENCE_LINK_TRANSFORMER","dependencies","export","regExp","importRegExp","textNode","match","value","theme","code","codeHighlight","atrule","attr","boolean","builtin","cdata","char","class","comment","constant","deleted","doctype","entity","function","important","inserted","keyword","namespace","number","operator","prolog","property","punctuation","regex","selector","string","symbol","tag","url","variable","embedBlock","base","focus","list","checklist","listitem","listitemChecked","listitemUnchecked","nested","olDepth","ol","ul","heading","h1","h2","h3","paragraph","text","underline","italic","link","quote","reference","table","tableCell","tableRow","tableCellHeader","layoutContainer","layoutItem","draggableBlockDemo","row","content","globalScope","globalThis","Prism","scaledSmallFontSize","formatValue","length","String","toUpperCase","Date","toISOString","JSON","stringify","DefaultRichTextCodeEditor","props","defaultCode","isEditable","showLineNumbers","disableScroll","Textarea","lines","map","_temp","codeBlock","DefaultRichTextDataTable","data","noBorder","hiddenColumns","Text","Set","hiddenSet","Object","keys","filter","has","columns","Table","_temp2","t11","rowIndex","column_0","column","join","t12","jsxs","line","index","DataTableNode","__data","getData","json","headers","headerRow","separator","dataRows","header","$createDataTableNode","$isDataTableNode","EquationComponent","React","lazy","$convertEquationElement","domNode","equation","getAttribute","inline","atob","$createEquationNode","EquationNode","__equation","__inline","getEquation","element","className","exportDOM","btoa","setAttribute","katex","render","displayMode","errorColor","output","strict","throwOnError","trust","importDOM","div","hasAttribute","conversion","priority","span","prevNode","setEquation","writable","getWritable","isInline","Suspense","equationNode","$applyNodeReplacement","$isEquationNode","EQUATION_INLINE","trim","EQUATION_MULTILINE","regExpStart","regExpEnd","rootNode","_children","_startMatch","_endMatch","linesInBetween","append","EquationPlugin","HRNode","ElementNode","_serializedNode","$createHRNode","style","$isHRNode","MermaidComponent","MermaidNode","__code","getCode","setCode","$isMermaidNode","HR","parentNode","TABLE","_traverseChildren","_isImport","previousNode","getPreviousSibling","remove","cells","slice","cell","existingData","newRow","isPlaceholderRow","values","every","_","forEach","newTableData","newTableNode","tableNode","UNDERLINE_INS_TAG","TextNode","markdownText","hasFormat","$createTextNode","toggleFormat","UNDERLINE_U_TAG","_node","BARE_URL_REGEXP","unescapeUrl","escapeLinkTitle","title","unescapeLinkTitle","normalizeEscapedUrlText","textContent","exportedText","escapedHref","LINK","LinkNode","exportChildren","$isLinkNode","$isAutoLinkNode","getTitle","getURL","linkText","linkUrl","linkTitle","linkNode","$createLinkNode","openBracketAmount","closeBracketAmount","parsedLinkText","outsideLinkText","linkTextParts","normalizedLinkText","linkTextNode","setFormat","getFormat","insertBefore","trigger","BARE_URL","AutoLinkNode","autoLinkNode","$createAutoLinkNode","TRANSFORMERS_EXTENDED","editorNodes","QuoteNode","HeadingNode","ListNode","ListItemNode","CodeNode","CodeHighlightNode","baseEditorTransformers","CHECK_LIST","TRANSFORMERS","transformer","LEXICAL_LINK","editorTransformers","editorTheme","isMermaidLanguage","language","toLowerCase","replaceCodeNodeWithMermaidNode","getLanguage","ImportCodeBlocksPlugin","useLexicalComposerContext","update","useEffect","codeNodes","$nodesOfType","n","CodeHighlightingPlugin","registerCodeHighlighting","TOGGLE_LINK_EDIT_MODE_COMMAND","createCommand","ToggleEditablePlugin","setEditable","TreeViewPlugin","TreeView","FRONTMATTER_PATTERN","FENCE_PATTERN","LIST_ITEM_PATTERN","INDENTED_LINE_PATTERN","getExpandedIndentWidth","indent","findParentIndent","activeListIndents","sourceIndentWidth","reverse","find","toNormalizedIndent","normalizedWidth","sourceWidth","includes","repeat","normalizeIndentedContinuation","indentedLineMatch","parentLevel","normalizedIndentWidth","normalizedIndent","normalizeListItem","at","currentLevel","indentStep","push","normalizeMarkdownLine","state","trimStart","isInCodeFence","normalizeMarkdownListIndentation","splitFrontmatter","frontmatter","body","UPLOAD_FILE","OPEN_CONTEXT","RUN_PROMPT","UPDATE_FORMAT","UPDATE_BEHAVIOR","INSERT_PROMPT","RENAME_PROMPT","DUPLICATE_PROMPT","DELETE_PROMPT","DELETE_REFERENCES","RENAME_REFERENCES","INSERT_REFERENCE","INSERT_BLOCK","INSERT_REFERENCE_COMMAND","INSERT_BLOCK_COMMAND","INSERT_NEW_FILE_PLACEHOLDER","INSERT_NEW_TEXT_PLACEHOLDER","INSERT_PLACEHOLDER_REFERENCE","convertCommentElement","$createCommentNode","textAlign","CommentNode","config","addClassNamesToElement","blockquote","isHTMLElement","isEmpty","formatType","getFormatType","direction","getDirection","dir","format","setIndent","setDirection","insertNewAfter","restoreSelection","newBlock","$createParagraphNode","insertAfter","collapseAtStart","children","getChildren","child","insertCommentBlock","_blockType","nodeToReplace","selection","$getSelection","commentNode","nodeParent","getParent","selectEnd","$isRangeSelection","$setBlocksType","useCommentCommands","mergeRegister","registerCommand","COMMAND_PRIORITY_LOW","optionId","useCommentSchema","registerNodeTransform","invalidChildren","child_0","CommentPlugin","$getTextContent","root","childrenLength","i","$isElementNode","getReferenceMarker","name","referenceId","shouldAppendParagraphBreak","Boolean","traverseSerializedNode","referenceMarker","Array","isArray","getTextFromSerializedEditorState","parsed","parse","emptyEditorState","textFormat","generateEditorStateFromString","input","mode","ImperativeAPIPlugin","editorRef","previousTextRef","setEditorValue","parseEditorState","setEditorState","current","defaultSelection","useImperativeHandle","shouldSubmitOnEnter","ctrlKey","metaKey","shiftKey","altKey","KeyboardShortcutPlugin","onSubmit","KEY_DOWN_COMMAND","preventDefault","COMMAND_PRIORITY_HIGH","menuSortOrder","getSortedMenuOptions","options","sort","a","b","indexOf","group","option","reduce","acc","bucket","ReferenceMenuItem","id","isSelected","onClick","onMouseEnter","setRefElement","secondaryLabel","primaryLabel","tabIndex","bg","Tooltip","Flex","ReferenceMenu","selectedIndex","onSelectItem","onMouseEnterItem","connector","hasResults","getElementById","scrollIntoView","behavior","block","T0","md","Fragment","description","option_0","t13","localFilter","q","m","useContextLookup","queryString","items","baseOptions","res","resourceId","resourceType","VALID_PUNCTUATION","TRIGGERS","VALID_CHARS","VALID_JOINS","LENGTH_LIMIT","TriggerRegex","RegExp","AliasRegex","checkForTriggers","minMatchLength","exec","maybeLeadingWhitespace","matchingString","leadOffset","replaceableString","SUGGESTION_LIST_LENGTH_LIMIT","ReferenceMenuPlugin","setQueryString","useState","searchResults","selectedOption","closeMenu","dispatchCommand","onSelectOption","checkForTrigger","menuOptions","LexicalTypeaheadMenuPlugin","anchorElementRef","selectOptionAndCleanUp","setHighlightedIndex","ReactDOM","createPortal","i_0","ReferenceNode","__referenceId","__name","isKeyboardSelectable","canBeEmpty","canInsertTextAfter","canInsertTextBefore","dom","el","$convertReferenceElement","$createReferenceNode","$insertExistingReference","refNode","ReferencePlugin","onAddReference","promptInputTheme","baseTheme","nodes","MarkNode","BasePromptEditor","ref","defaultState","debug","placeholder","onChange","onError","references","editorState","editable","initialConfig","useRef","Kbd","placeholderNode","HistoryPlugin","RichTextPlugin","LexicalErrorBoundary","OnChangePlugin","read","$getRoot","rawText","toJSON","t14","t15","t16","t17","t18","t19","LexicalComposer","PromptEditor","forwardRef","StateUpdatePlugin","onUpdate","transformers","RichMessage","shouldTrackChanges","$convertFromMarkdownString","LinkPlugin","ClickableLinkPlugin","ListPlugin","TabIndentationPlugin","HorizontalRulePlugin","markdownBody","$convertToMarkdownString","t20","t21","error","console"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAMA,KAAiBC,GAAOC,EAAsB;AAU7C,SAAAC,GAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAyB;AAAA,IAAAC,OAAAA;AAAAA,IAAAC,WAAAC;AAAAA,IAAAC,SAAAA;AAAAA,IAAAC,eAAAC;AAAAA,IAAAC,YAAAC;AAAAA,EAAAA,IAAAV,GAE9BI,IAAAC,MAAAM,SAAA,KAAAN,GAEAE,IAAAC,MAAAG,SAAA,KAAAH,GACAC,IAAAC,MAAAC,SAAA,KAAAD,GASgBE,IAAAR,IAAA,SAAA,SACIS,IAAAT,IAAA,MAAA;AAAwB,MAAAU;AAAA,EAAAb,EAAA,CAAA,MAAAW,KAAAX,SAAAY,KANxCC,IAAA,gBAAAC,EAACnB,MACa,eAAA,oBACL,QAAA,eACF,MAAA,QACC,OAAA,QACI,UAAAgB,GACI,cAAAC,GACJ,WAAA,uBACD,UAAA,mEACA,UAAA,YACD,SAAA,OAAA,CAAM,GACdZ,OAAAW,GAAAX,OAAAY,GAAAZ,OAAAa,KAAAA,IAAAb,EAAA,CAAA;AAAA,MAAAe;AAAA,EAAAf,EAAA,CAAA,MAAAE,KAAAF,SAAAK,KAAAL,EAAA,CAAA,MAAAa,KAZJE,IAAA,gBAAAD,EAACE,KAASd,KAAAA,GAAa,OAAA,QAAY,MAAA,QAAgBG,SAAAA,GACjDQ,UAAAA,EAAAA,CAYF,GAAMb,OAAAE,GAAAF,OAAAK,GAAAL,OAAAa,GAAAb,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAdR,QAAAiB,IACEF;AAgBF,MAAI,CAACP;AAAU,WAASS;AAKD,QAAAC,IAAAZ,IAAA,SAAAI;AAAkC,MAAAS;AAAA,EAAAnB,EAAA,CAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KAIvCF,IAAA;AAAA,IAAAG,OAAS;AAAA,IAAMC,MAAQ;AAAA,EAAA,GAAQvB,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAAA,MAAAwB;AAAA,SAAAxB,EAAA,CAAA,MAAAiB,KAAAjB,SAAAkB,KAN/CM,IAAA,gBAAAV,EAACW,IAAA,EACW,WAAA,aACS,qBAAAP,GACZ,QAAA,QACF,MAAA,KACI,UAAA,YACK,cAAAC,GAEbF,UAAAA,GACH,GAAajB,OAAAiB,GAAAjB,OAAAkB,GAAAlB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA,GATbwB;AASa;SC7BV,MAAME,WAA0BC,EAA4B;AAAA,EACjEC;AAAAA,EACAC;AAAAA,EAEA,OAAOC,UAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,OAAOC,MAAMC,GAA4C;AACvD,WAAO,IAAIN,GAAkBM,EAAKJ,QAAQI,EAAKH,SAASG,EAAKC,KAAK;AAAA,EACpE;AAAA,EAEAC,YAAYC,GAAcC,GAAgBC,GAAe;AACvD,UAAMA,CAAG,GACT,KAAKT,SAASO,GACd,KAAKN,UAAUO;AAAAA,EACjB;AAAA,EAEAE,UAAUC,GAAuBC,GAAqC;AACpE,WAAOC,SAASC,cAAc,MAAM;AAAA,EACtC;AAAA,EAEAC,UAAUC,GAA8BC,GAAmBN,GAAgC;AACzF,WAAO;AAAA,EACT;AAAA,EAEAO,iBAAyB;AAEvB,WAAO,WADO,KAAKjB,WAAW,KAAKD,MACZ;AAAA,EACzB;AAAA,EAEAmB,aAA0C;AACxC,WAAO;AAAA,MACLC,MAAMtB,GAAkBI,QAAAA;AAAAA,MACxBmB,SAAS;AAAA,MACTd,MAAM,KAAKP;AAAAA,MACXQ,OAAO,KAAKP;AAAAA,IAAAA;AAAAA,EAEhB;AAAA,EAEA,OAAOqB,WAAWC,GAAgE;AAChF,WAAOC,GAAyBD,EAAehB,MAAMgB,EAAef,KAAK;AAAA,EAC3E;AAAA,EAEAiB,SAASb,GAAwBD,GAAqC;AACpE,UAAMJ,IAAO,KAAKP,QAEZQ,IADWD,EAAKmB,MAAM,GAAG,EAAEC,IAAAA,KACP,WACpBC,IAAa,gBAAgBC,KAAKtB,CAAI,GACtCuB,IAAgB,kBAAkBD,KAAKtB,CAAI;AAEjD,WACE,gBAAArB,EAACE,GAAA,EAAI,OAAM,eAAc,SAAQ,gBAC/B,UAAA,gBAAAF,EAAC6C,IAAA,EACC,UAAUvB,GACV,UAAU,MAAM;AACd,UAAIoB;AACFI,eAAOC,KAAK1B,GAAM,UAAU,qBAAqB;AAAA,eACxCuB,GAAe;AACxB,cAAMI,IAAc3B,EAAK4B,QAAQ,mBAAmB,EAAE,GAChDC,IAAQ,IAAIC,YAAY,wBAAwB;AAAA,UAAEC,QAAQJ;AAAAA,QAAAA,CAAa;AAC7EF,eAAOO,cAAcH,CAAK;AAAA,MAC5B;AACEJ,eAAOQ,SAASC,OAAOlC,CAAI;AAAA,IAE/B,GAAE,EAAA,CAEN;AAAA,EAEJ;AACF;AAEO,SAASiB,GAAyBjB,GAAcC,GAAmC;AACxF,SAAO,IAAIV,GAAkBS,GAAMC,CAAK;AAC1C;AAEO,SAASkC,GAAqBtC,GAAiE;AACpG,SAAOA,aAAgBN;AACzB;AC/FA,MAAM6C,KAAc,4CAEPC,KAAmD;AAAA,EAC9DC,cAAc,CAAC/C,EAAiB;AAAA,EAChCgD,QAAS1C,CAAAA,MAAS;AAChB,QAAIsC,GAAqBtC,CAAI,GAAG;AAC9B,YAAMG,IAAQH,EAA2BJ,QACnCQ,IAASJ,EAA2BH,WAAWM;AAErD,aAAIC,IACK,WAAWA,CAAK,SAElB,WAAWD,CAAI;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EACAwC,QAAQJ;AAAAA,EACRK,cAAcL;AAAAA,EACdR,SAASA,CAACc,GAAUC,MAAU;AAC5B,UAAMC,IAAQD,EAAM,CAAC,GAGf3C,IADe,qBAAqBsB,KAAKsB,CAAK,IACxBA,IAAQ,IAAIA,CAAK,IACvC3C,IAAQ2C;AACdF,IAAAA,EAASd,QAAQX,GAAyBjB,GAAMC,CAAK,CAAC;AAAA,EACxD;AAAA,EACAY,MAAM;AACR,GC3BMgC,KAA4B;AAAA,EAChCC,MAAM;AAAA,EACNC,eAAe;AAAA,IACbC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,SAAS;AAAA,IACTC,SAAS;AAAA,IACTC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACP,cAAc;AAAA,IACdC,SAAS;AAAA,IACTC,UAAU;AAAA,IACVC,SAAS;AAAA,IACTC,SAAS;AAAA,IACTC,QAAQ;AAAA,IACRC,UAAU;AAAA,IACVC,WAAW;AAAA,IACXC,UAAU;AAAA,IACVC,SAAS;AAAA,IACTC,WAAW;AAAA,IACXC,QAAQ;AAAA,IACRC,UAAU;AAAA,IACVC,QAAQ;AAAA,IACRC,UAAU;AAAA,IACVC,aAAa;AAAA,IACbC,OAAO;AAAA,IACPC,UAAU;AAAA,IACVC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,UAAU;AAAA,EAAA;AAAA,EAEZC,YAAY;AAAA,IACVC,MAAM;AAAA,IACNC,OAAO;AAAA,EAAA;AAAA,EAETC,MAAM;AAAA,IACJC,WAAW;AAAA,IACXC,UAAU;AAAA,IACVC,iBAAiB;AAAA,IACjBC,mBAAmB;AAAA,IACnBC,QAAQ;AAAA,MACNH,UAAU;AAAA,IAAA;AAAA,IAEZI,SAAS,CAAC,kBAAkB,kBAAkB,kBAAkB,kBAAkB,gBAAgB;AAAA,IAClGC,IAAI;AAAA,IACJC,IAAI;AAAA,EAAA;AAAA,EAENC,SAAS;AAAA,IACPC,IAAI;AAAA,IACJC,IAAI;AAAA,IACJC,IAAI;AAAA,EAAA;AAAA,EAENC,WAAW;AAAA,EACXC,MAAM;AAAA,IACJC,WAAW;AAAA,IACXC,QAAQ;AAAA,IACRlD,MAAM;AAAA,EAAA;AAAA,EAERmD,MAAM;AAAA,EACNC,OAAO;AAAA,EACPC,WAAW;AAAA,EACXC,OAAO;AAAA,EACPC,WAAW;AAAA,EACXC,UAAU;AAAA,EACVC,iBAAiB;AAAA,EACjBC,iBAAiB;AAAA,EACjBC,YAAY;AAAA,EACZC,oBAAoB;AAAA,IAClBC,KAAK;AAAA,IACLC,SAAS;AAAA,EAAA;AAEb,GC5EMC,KAAcC;AAEpBD,GAAYE,UAAUA;ACAtB,MAAMC,IAAsB,mEAEtBC,KAAcA,CAACrE,MACfA,KAAU,OAAoC,MAC9C,OAAOA,KAAU,WAAiBA,EAAMsE,SAAStE,IAAQ,MACzD,OAAOA,KAAU,YAAY,OAAOA,KAAU,YAAkBuE,OAAOvE,CAAK,EAAEwE,YAAAA,IAC9ExE,aAAiByE,OAAazE,EAAM0E,YAAAA,IACjCC,KAAKC,UAAU5E,CAAK,GAGhB6E,KAA4BC,CAAAA,MAAA;AAAA,QAAA7J,IAAAC,EAAA,CAAA,GACvC;AAAA,IAAA6J,aAAA/J;AAAAA,IAAAgK,YAAA3J;AAAAA,IAAA4J,iBAAAzJ;AAAAA,IAAA0J,eAAAxJ;AAAAA,EAAAA,IAAiGoJ,GAAzFC,IAAA/J,MAAAW,SAAA,KAAAX,GAAkBgK,IAAA3J,MAAAM,SAAA,KAAAN,GAAoB4J,IAAAzJ,MAAAG,SAAA,KAAAH,GAAyB0J,IAAAxJ,MAAAC,SAAA,KAAAD;AAEvE,MAAIsJ,GAAU;AAAA,QAAApJ;AAAA,WAAAX,SAAA8J,KAEVnJ,IAAA,gBAAAG,EAACoJ,IAAA,EACeJ,iBACH,YAAA,QACDX,UAAAA,GACH,QAAA,YACG,WAAA,OAAA,CAAM,GAChBnJ,OAAA8J,GAAA9J,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GANFW;AAAAA,EAME;AAEL,MAAAA;AAAA,MAAAX,EAAA,CAAA,MAAA8J,KAAA9J,SAAAiK,KAAAjK,EAAA,CAAA,MAAAgK,GAAA;AAED,UAAAG,IAAcH,IAAkBF,EAAWxG,MAAO;AAAA,CAAoB,IAAxD,CAA6CwG,CAAW;AAGpEnJ,IAAAA,IAAA,gBAAAG,EAACE,KACI,IAAA,OACK,QAAA,GACA,SAAA,MACG,YAAA,QACDmI,UAAAA,GACC,YAAA,OACA,YAAA,WACE,cAAA,MACP,OAAA,QACK,WAAAc,IAAA,WAAAvJ,QAEVsJ,UAAAA,sBACEhJ,GAAA,EAAO,IAAA,QAAe,SAAA,QAA2B,qBAAA,YAAqB,WAAA,MACpEmJ,UAAAA,EAAKC,IAAKC,EASV,EAAA,CACH,sBAECrJ,GAAA,EAAO,IAAA,qBAAoB,EAAA,CAEhC,GAAMhB,OAAA8J,GAAA9J,OAAAiK,GAAAjK,OAAAgK,GAAAhK,OAAAW;AAAAA,EAAA;AAAAA,IAAAA,IAAAX,EAAA,CAAA;AA7BR,QAAAsK,IACE3J;AA+BF,MAAIsJ;AAAa,WAASK;AAAU,MAAA1J;AAAA,SAAAZ,SAAAsK,KAGlC1J,IAAA,gBAAAE,EAACW,IAAA,EAAiB,OAAA,QAAkB,YAAA,WAAuB,cAAA,MAAK,yBAAA,IAC7D6I,UAAAA,EAAAA,CACH,GAAatK,OAAAsK,GAAAtK,OAAAY,KAAAA,IAAAZ,EAAA,CAAA,GAFbY;AAEa,GAIJ2J,KAA2BV,CAAAA,MAAA;AAAA,QAAA7J,IAAAC,EAAA,EAAA,GACtC;AAAA,IAAAuK,MAAAA;AAAAA,IAAArK,WAAAJ;AAAAA,IAAA0K,UAAArK;AAAAA,IAAAsK,eAAAnK;AAAAA,EAAAA,IAA0EsJ,GAA5D1J,IAAAJ,MAAAW,SAAA,KAAAX,GAAmB0K,IAAArK,MAAAM,SAAA,KAAAN;AAAgB,MAAAK;AAAA,EAAAT,SAAAO,KAAEE,IAAAF,MAAAG,SAAA,CAAA,IAAAH,GAAkBP,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAlB,QAAA0K,IAAAjK;AAEnD,MAAI,CAAC+J,EAAInB,QAAO;AAEmB,UAAA1I,IAAA8J,IAAA,MAAA;AAAsB,QAAA7J;AAAA,IAAAZ,EAAA,CAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KACnDT,sBAAC+J,GAAA,EAAe,WAAA,mBAA4BxB,aAA2B,OAAA,YAAW,UAAA,UAAA,CAElF,GAAOnJ,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAA,QAAAa;AAAA,WAAAb,SAAAW,KAHTE,IAAA,gBAAAC,EAACE,GAAA,EAAY,SAAA,MAAkB,aAAAL,GAAoC,aAAA,gBACjEC,UAAAA,EAAAA,CAGF,GAAMZ,OAAAW,GAAAX,OAAAa,KAAAA,IAAAb,EAAA,CAAA,GAJNa;AAAAA,EAIM;AAET,MAAAF;AAAA,EAAAX,SAAA0K,KAEiB/J,IAAA,IAAIiK,IAAIF,CAAa,GAAC1K,OAAA0K,GAAA1K,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAxC,QAAA6K,IAAkBlK;AAAuB,MAAAC;AAAA,EAAAZ,SAAAwK,EAAA,CAAA,KACzB5J,IAAAkK,OAAMC,KAAMP,EAAI,CAAA,KAAJ,CAAA,CAAa,GAACxK,OAAAwK,EAAA,CAAA,GAAAxK,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAA,MAAAa;AAAA,EAAAb,EAAA,CAAA,MAAA6K,KAAA7K,UAAAY,KAA1BC,IAAAD,EAA0BoK,OAAQ3I,CAAAA,MAAS,CAACwI,EAASI,IAAK5I,CAAG,CAAC,GAACrC,OAAA6K,GAAA7K,QAAAY,GAAAZ,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AAA/E,QAAAkL,IAAgBrK,GAMHE,IAAAZ,IAAA,SAAA,eACMe,IAAAuJ,IAAA,MAAA;AAAsB,MAAAtJ;AAAA,EAAAnB,UAAAkL,KAGnC/J,IAAA,gBAAAL,EAAAqK,EAAA,QAAA,EACE,4BAAAA,EAAA,KAAA,EAAsB,YAAA,YACnBD,UAAAA,EAAOd,IAAKgB,EAMZ,GACH,GACF,GAAepL,QAAAkL,GAAAlL,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA;AAAA,MAAAwB;AAAA,MAAAxB,EAAA,EAAA,MAAAkL,KAAAlL,UAAAwK,GAAA;AAAA,QAAAa;AAAA,IAAArL,UAAAkL,KAEHG,IAAAA,CAAAvC,GAAAwC,wBACRH,EAAA,KAAA,EACGD,UAAAA,EAAOd,IAAKmB,OACX,gBAAAzK,EAAAqK,EAAA,MAAA,EAAmD,UAAA,MAAc,UAAA,OAC/D,4BAACR,GAAA,EAAe,WAAA,uBAAgCxB,UAAAA,GAC7CC,aAAYN,EAAI0C,CAAM,CAAC,EAAA,CAC1B,KAHe,GAAGF,CAAQ,IAAIE,CAAM,EAItC,CACD,KAPa,GAAGF,CAAQ,IAAIJ,EAAOO,KAAM,GAAG,CAAC,EAQhD,GACDzL,QAAAkL,GAAAlL,QAAAqL,KAAAA,IAAArL,EAAA,EAAA,GAVAwB,IAAAgJ,EAAIJ,IAAKiB,CAUT,GAACrL,QAAAkL,GAAAlL,QAAAwK,GAAAxK,QAAAwB;AAAAA,EAAA;AAAAA,IAAAA,IAAAxB,EAAA,EAAA;AAAA,MAAAqL;AAAA,EAAArL,UAAAwB,KAXJ6J,IAAA,gBAAAvK,EAAAqK,EAAA,MAAA,EACG3J,UAAAA,GAWH,GAAaxB,QAAAwB,GAAAxB,QAAAqL,KAAAA,IAAArL,EAAA,EAAA;AAAA,MAAA0L;AAAA,SAAA1L,EAAA,EAAA,MAAAqL,KAAArL,EAAA,EAAA,MAAAe,KAAAf,EAAA,EAAA,MAAAkB,KAAAlB,UAAAmB,KA9BjBuK,sBAACjK,IAAA,EAAoB,UAAA,QAAO,yBAAA,IAA+C,uBAAA,IACzE,UAAA,gBAAAkK,EAAAR,EAAA,MAAA,EACO,MAAA,MACE,OAAApK,GACM,aAAAG,GACD,aAAA,gBAEZC,UAAAA;AAAAA,IAAAA;AAAAA,IAWAkK;AAAAA,EAAAA,EAAAA,CAaF,EAAA,CACF,GAAarL,QAAAqL,GAAArL,QAAAe,GAAAf,QAAAkB,GAAAlB,QAAAmB,GAAAnB,QAAA0L,KAAAA,IAAA1L,EAAA,EAAA,GAhCb0L;AAgCa;AA3GwB,SAAArB,GAAAuB,GAAAC,GAAA;AAAA,SAiC7B,gBAAAF,EAAC3K,GAAA,EAAO,IAAA,QAAwC,SAAA,YAC9C,UAAA;AAAA,IAAA,gBAAAF,EAAC6J,GAAA,EAAQ,IAAA,QAAa,OAAA,YAAqB,WAAA,SAAiB,UAAA,WACzDkB,UAAAA,IAAQ,EAAA,CACX;AAAA,IACA,gBAAA/K,EAAC6J,KAAQ,IAAA,QAAgB,UAAA,WACtBiB,UAAAA,EAAIvC,SAAJuC,IAAA,IAAA,CACH;AAAA,EAAA,EAAA,GANkB,GAAGC,CAAK,IAAID,CAAI,EAOpC;AAAM;AAkBsB,SAAAR,GAAAI,GAAA;AAAA,2BA2B1BL,EAAA,cAAA,EAA+C,eAAA,QAAgB,UAAA,MAAc,UAAA,OAC3E,UAAA,gBAAArK,EAAC6J,KAAe,WAAA,kBAA2BxB,UAAAA,GACxCqC,UAAAA,EAAAA,CACH,KAHuBA,CAIzB;AAAqB;AChG5B,MAAMM,UAAsBnK,EAAiC;AAAA,EAClEoK;AAAAA,EAEA,OAAOjK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEA,OAAOC,MAAMC,GAAqB;AAChC,WAAO,IAAI8J,EAAc9J,EAAK+J,QAAQ/J,EAAKC,KAAK;AAAA,EAClD;AAAA,EAEAC,YAAYsI,GAAiBnI,GAAe;AAC1C,UAAMA,CAAG,GACT,KAAK0J,SAASvB;AAAAA,EAChB;AAAA,EAEAwB,UAAqB;AACnB,WAAO,KAAKD;AAAAA,EACd;AAAA,EAEAzJ,YAAyB;AACvB,WAAOG,SAASC,cAAc,KAAK;AAAA,EACrC;AAAA,EAEAC,YAAqB;AACnB,WAAO;AAAA,EACT;AAAA,EAEAU,WAAW;AACT,WAAO,gBAAAvC,EAACyJ,MAAyB,WAAS,IAAC,YAAU,IAAC,MAAM,KAAKwB,QAAO;AAAA,EAC1E;AAAA,EAEAhJ,aAAsC;AACpC,WAAO;AAAA,MACLC,MAAM;AAAA,MACNC,SAAS;AAAA,MACTuH,MAAM,KAAKuB;AAAAA,IAAAA;AAAAA,EAEf;AAAA,EAEA,OAAO7I,WAAW+I,GAA+B;AAC/C,WAAO,IAAIH,EAAcG,EAAKzB,IAAI;AAAA,EACpC;AAAA,EAEA1H,iBAAyB;AAEvB,QAAI,CAAC,KAAKiJ,OAAO1C,OAAQ,QAAO;AAEhC,UAAM6C,IAAUpB,OAAOC,KAAK,KAAKgB,OAAO,CAAC,CAAC,GACpCI,IAAYD,EAAQT,KAAK,KAAK,GAC9BW,IAAYF,EAAQ9B,IAAI,MAAM,KAAK,EAAEqB,KAAK,KAAK,GAC/CY,IAAW,KAAKN,OAAO3B,IAAKtB,CAAAA,MAAQoD,EAAQ9B,IAAKkC,CAAAA,MAAWhD,OAAOR,EAAIwD,CAAM,KAAK,EAAE,CAAC,EAAEb,KAAK,KAAK,CAAC;AAExG,WAAO,CAACU,GAAWC,GAAW,GAAGC,CAAQ,EAAEZ,KAAK;AAAA,CAAI;AAAA,EACtD;AACF;AAIO,SAASc,GAAqB/B,GAAiB;AACpD,SAAO,IAAIsB,EAActB,CAAI;AAC/B;AAEO,SAASgC,GAAiBxK,GAAsC;AACrE,SAAOA,aAAgB8J;AACzB;AC1DA,MAAMW,KAAoBC,GAAMC,KAAK,MAAM,OAAO,iCAAqB,CAAC;AAUxE,SAASC,GAAwBC,GAAkD;AACjF,MAAIC,IAAWD,EAAQE,aAAa,uBAAuB;AAC3D,QAAMC,IAASH,EAAQE,aAAa,qBAAqB,MAAM;AAK/D,SAFAD,IAAWG,KAAKH,KAAY,EAAE,GAE1BA,IAEK;AAAA,IAAE9K,MADIkL,GAAoBJ,GAAUE,CAAM;AAAA,EACxChL,IAGJ;AACT;AAEO,MAAMmL,UAAqBxL,EAA+B;AAAA,EAC/DyL;AAAAA,EACAC;AAAAA,EAEA,OAAOvL,UAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,OAAOC,MAAMC,GAAkC;AAC7C,WAAO,IAAImL,EAAanL,EAAKoL,YAAYpL,EAAKqL,UAAUrL,EAAKC,KAAK;AAAA,EACpE;AAAA,EAEAC,YAAY4K,GAAkBE,GAAkB3K,GAAe;AAC7D,UAAMA,CAAG,GACT,KAAK+K,aAAaN,GAClB,KAAKO,WAAWL,KAAU;AAAA,EAC5B;AAAA,EAEA,OAAO9J,WAAWC,GAAsD;AACtE,WAAO+J,GAAoB/J,EAAe2J,UAAU3J,EAAe6J,MAAM;AAAA,EAC3E;AAAA,EAEAjK,aAAqC;AACnC,WAAO;AAAA,MACL+J,UAAU,KAAKQ,YAAAA;AAAAA,MACfN,QAAQ,KAAKK;AAAAA,MACbrK,MAAM;AAAA,MACNC,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EAEAX,UAAUC,GAAoC;AAC5C,UAAMgL,IAAU9K,SAASC,cAAc,KAAK2K,WAAW,SAAS,KAAK;AAGrEE,WAAAA,EAAQC,YAAY,mBACbD;AAAAA,EACT;AAAA,EAEAE,YAA6B;AAC3B,UAAMF,IAAU9K,SAASC,cAAc,KAAK2K,WAAW,SAAS,KAAK,GAG/DP,IAAWY,KAAK,KAAKN,UAAU;AACrCG,WAAAA,EAAQI,aAAa,yBAAyBb,CAAQ,GACtDS,EAAQI,aAAa,uBAAuB,GAAG,KAAKN,QAAQ,EAAE,GAC9DO,GAAMC,OAAO,KAAKT,YAAYG,GAAS;AAAA,MACrCO,aAAa,CAAC,KAAKT;AAAAA;AAAAA,MACnBU,YAAY;AAAA,MACZC,QAAQ;AAAA,MACRC,QAAQ;AAAA,MACRC,cAAc;AAAA,MACdC,OAAO;AAAA,IAAA,CACR,GAEM;AAAA,MAAEZ,SAAAA;AAAAA,IAAAA;AAAAA,EACX;AAAA,EAEA,OAAOa,YAAqC;AAC1C,WAAO;AAAA,MACLC,KAAKA,CAACxB,MACCA,EAAQyB,aAAa,uBAAuB,IAI1C;AAAA,QACLC,YAAY3B;AAAAA,QACZ4B,UAAU;AAAA,MAAA,IALH;AAAA,MAQXC,MAAMA,CAAC5B,MACAA,EAAQyB,aAAa,uBAAuB,IAI1C;AAAA,QACLC,YAAY3B;AAAAA,QACZ4B,UAAU;AAAA,MAAA,IALH;AAAA,IAOX;AAAA,EAEJ;AAAA,EAEA7L,UAAU+L,GAAiC;AAEzC,WAAO,KAAKrB,aAAaqB,EAASrB;AAAAA,EACpC;AAAA,EAEAvK,iBAAyB;AACvB,WAAO,KAAKsK;AAAAA,EACd;AAAA,EAEAE,cAAsB;AACpB,WAAO,KAAKF;AAAAA,EACd;AAAA,EAEAuB,YAAY7B,GAAwB;AAClC,UAAM8B,IAAW,KAAKC,YAAAA;AACtBD,IAAAA,EAASxB,aAAaN;AAAAA,EACxB;AAAA,EAEAgC,WAAoB;AAClB,WAAO,KAAKzB;AAAAA,EACd;AAAA,EAEAhK,WAAW;AACT,WACE,gBAAAvC,EAACiO,IAAA,EAAS,UAAU,MAClB,UAAA,gBAAAjO,EAAC2L,IAAA,EAAkB,UAAU,KAAKW,YAAY,QAAQ,KAAKC,SAAAA,CAAS,GACtE;AAAA,EAEJ;AACF;AAEO,SAASH,GAAoBJ,IAAW,IAAIE,IAAS,IAAqB;AAC/E,QAAMgC,IAAe,IAAI7B,EAAaL,GAAUE,CAAM;AACtD,SAAOiC,GAAsBD,CAAY;AAC3C;AAEO,SAASE,GAAgBlN,GAA4D;AAC1F,SAAOA,aAAgBmL;AACzB;AC3JO,MAAMgC,KAAwC;AAAA,EACnD1K,cAAc,CAAC0I,CAAY;AAAA,EAC3BzI,QAAS1C,CAAAA,MACHkN,GAAgBlN,CAAI,KAAKA,EAAK8M,aACzB,OAAO9M,EAAKsL,YAAAA,EAAc8B,MAAM,SAElC;AAAA,EAETxK,cAAc;AAAA,EACdD,QAAQ;AAAA,EACRZ,SAASA,CAACc,GAAUC,MAAU;AAC5B,UAAMkK,IAAe9B,GAAoBpI,EAAM,CAAC,EAAEsK,KAAAA,GAAQ,EAAI;AAC9DvK,IAAAA,EAASd,QAAQiL,CAAY;AAAA,EAC/B;AAAA,EACAhM,MAAM;AACR,GAEaqM,KAAkD;AAAA,EAC7D5K,cAAc,CAAC0I,CAAY;AAAA,EAC3BmC,aAAa;AAAA,EACbC,WAAW;AAAA,EACX7K,QAAS1C,CAAAA,MACHkN,GAAgBlN,CAAI,KAAK,CAACA,EAAK8M,aAC1B,OAAO9M,EAAKsL,YAAAA,EAAc8B,MAAM,SAElC;AAAA,EAETrL,SAASA,CAACyL,GAAUC,GAAWC,GAAaC,GAAWC,MACjDA,KACFJ,EAASK,OAAO3C,GAAoB0C,EAAenE,KAAK,GAAG,GAAG,EAAK,CAAC,GAC7D,MAEF;AAAA,EAETzI,MAAM;AACR;AAEO,SAAS8M,KAAuB;AACrC,SAAO;AACT;ACjCO,MAAMC,UAAeC,GAAY;AAAA,EACtC,OAAOlO,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEA,OAAOC,MAAMC,GAAc;AACzB,WAAO,IAAI+N,EAAO/N,GAAMC,KAAK;AAAA,EAC/B;AAAA,EAEA,OAAOiB,WAAW+M,GAAmC;AACnD,WAAOC,GAAAA;AAAAA,EACT;AAAA,EAEAnN,aAA+B;AAC7B,WAAO;AAAA,MACL,GAAG,MAAMA,WAAAA;AAAAA,IAAW;AAAA,EAExB;AAAA,EAEAT,UAAUC,GAAuBC,GAAqC;AACpE,UAAM+K,IAAU9K,SAASC,cAAc,IAAI;AAC3C6K,WAAAA,EAAQ4C,QAAQ,mBACT5C;AAAAA,EACT;AAAA,EAEA5K,UAAUC,GAAoBC,GAAmBN,GAAgC;AAC/E,WAAO;AAAA,EACT;AAAA,EAEAc,SAASb,GAAwB;AAC/B,WAAO;AAAA,EACT;AACF;AAEO,SAAS0N,KAAwB;AACtC,SAAO,IAAIH,EAAAA;AACb;AAEO,SAASK,GAAUpO,GAAsD;AAC9E,SAAOA,aAAgB+N;AACzB;AC9CA,MAAMM,KAAmB1D,GAAK,MAAM,OAAO,gCAAoB,CAAC;AAQzD,MAAM2D,UAAoB3O,EAAyB;AAAA,EACxD4O;AAAAA,EAEA,OAAOzO,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEA,OAAOC,MAAMC,GAAmB;AAC9B,WAAO,IAAIsO,EAAYtO,EAAKuO,QAAQvO,EAAKC,KAAK;AAAA,EAChD;AAAA,EAEAC,YAAY+C,GAAc5C,GAAe;AACvC,UAAMA,CAAG,GACT,KAAKkO,SAAStL;AAAAA,EAChB;AAAA,EAEA3C,YAAY;AACV,WAAOG,SAASC,cAAc,KAAK;AAAA,EACrC;AAAA,EAEAC,YAAY;AACV,WAAO;AAAA,EACT;AAAA,EAEA,OAAOO,WAAWC,GAAoD;AACpE,WAAO,IAAImN,EAAYnN,EAAe8B,IAAI;AAAA,EAC5C;AAAA,EAEAlC,aAAoC;AAClC,WAAO;AAAA,MACLC,MAAM;AAAA,MACNiC,MAAM,KAAKsL;AAAAA,MACXtN,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EAEAH,iBAAiB;AACf,WAAO;AAAA,EAAkB,KAAKyN,MAAM;AAAA;AAAA,EACtC;AAAA,EAEAC,UAAU;AACR,WAAO,KAAKD;AAAAA,EACd;AAAA,EAEAE,QAAQxL,GAAc;AACpB,UAAM2J,IAAW,KAAKC,YAAAA;AACtBD,IAAAA,EAAS2B,SAAStL;AAAAA,EACpB;AAAA,EAEA5B,WAAW;AACT,WACE,gBAAAvC,EAACiO,IAAA,EAAS,UAAU,MAClB,UAAA,gBAAAjO,EAACuP,IAAA,EAAiB,MAAM,KAAKE,QAAQ,SAAS,KAAKtO,MAAAA,CAAM,GAC3D;AAAA,EAEJ;AACF;AAOO,SAASyO,GAAe1O,GAA2D;AACxF,SAAOA,aAAgBsO;AACzB;AC1EO,MAAMK,KAAyB;AAAA,EACpClM,cAAc,CAACsL,CAAM;AAAA,EACrBrL,QAAQA,CAAC1C,MACAoO,GAAUpO,CAAI,IAAI,QAAQ;AAAA,EAEnC2C,QAAQ;AAAA,EACRZ,SAAU6M,CAAAA,MAAe;AACvB,UAAMhF,IAAOsE,GAAAA;AACbU,IAAAA,EAAW7M,QAAQ6H,CAAI;AAAA,EACzB;AAAA,EACA5I,MAAM;AACR,GCFa6N,KAA4B;AAAA,EACvCpM,cAAc,CAAA;AAAA,EACdC,QAAQA,CAAC1C,GAAM8O,MAAsB;AACnC,QAAItE,GAAiBxK,CAAI,GAAG;AAC1B,YAAMwI,IAAOxI,EAAKgK,QAAAA;AAElB,UAAI,CAACxB,EAAKnB,OAAQ,QAAO;AAEzB,YAAM6C,IAAUpB,OAAOC,KAAKP,EAAK,CAAC,CAAC,GAC7B2B,IAAYD,EAAQT,KAAK,KAAK,GAC9BW,IAAYF,EAAQ9B,IAAI,MAAM,KAAK,EAAEqB,KAAK,KAAK,GAC/CY,IAAW7B,EAAKJ,IAAKtB,CAAAA,MAAQoD,EAAQ9B,IAAKkC,CAAAA,MAAWhD,OAAOR,EAAIwD,CAAM,KAAK,EAAE,CAAC,EAAEb,KAAK,KAAK,CAAC;AAEjG,aAAO,CAAC,KAAKU,CAAS,MAAM,KAAKC,CAAS,MAAM,GAAGC,EAASjC,IAAKtB,OAAQ,KAAKA,CAAG,IAAI,CAAC,EAAE2C,KAAK;AAAA,CAAI;AAAA,IACnG;AAEA,WAAO;AAAA,EACT;AAAA,EACA9G,QAAQ;AAAA,EACRZ,SAASA,CAAC6M,GAAYnB,GAAW3K,GAAOiM,MAAc;AACpD,UAAMC,IAAeJ,EAAWK,mBAAAA;AAIhC,QAHyB,kDAAkDxN,KAAKqB,EAAM,CAAC,CAAC,GAGlE;AACpB8L,MAAAA,EAAWM,OAAAA;AACX;AAAA,IACF;AAGA,UAAMC,IAAQrM,EAAM,CAAC,EAClBxB,MAAM,GAAG,EACT8N,MAAM,GAAG,EAAE,EACXhH,IAAKiH,CAAAA,MAASA,EAAKjC,MAAM;AAE5B,QAAI4B,GAAclP,QAAAA,MAAc,gBAAgB0K,GAAiBwE,CAAY,GAAG;AAE9E,YAAMM,IAAeN,EAAahF,QAAAA,GAC5BuF,IAAkB,CAAA,GAGlBC,IACJF,EAAajI,WAAW,KAAKyB,OAAO2G,OAAOH,EAAa,CAAC,CAAC,EAAEI,MAAO3M,CAAAA,MAAUA,MAAU,EAAE,GAGrFmH,IAAUoF,EAAajI,SAAS,IAAIyB,OAAOC,KAAKuG,EAAa,CAAC,CAAC,IAAIH,EAAM/G,IAAI,CAACuH,GAAG9F,MAAU,OAAOA,CAAK,EAAE;AAE/GsF,MAAAA,EAAMS,QAAQ,CAACP,GAAMxF,MAAU;AAC7B,cAAMS,IAASJ,EAAQL,CAAK,KAAK,OAAOA,CAAK;AAC7C0F,QAAAA,EAAOjF,CAAM,IAAI+E;AAAAA,MACnB,CAAC;AAGD,YAAMQ,IAAeL,IAAmB,CAACD,CAAM,IAAI,CAAC,GAAGD,GAAcC,CAAM,GACrEO,IAAevF,GAAqBsF,CAAY;AACtDb,MAAAA,EAAajN,QAAQ+N,CAAY,GACjClB,EAAWM,OAAAA;AAAAA,IACb,OAAO;AAGL,YAAMK,IAAkB,CAAA;AACxBJ,MAAAA,EAAMS,QAAQ,CAACP,GAAMxF,MAAU;AAC7B0F,QAAAA,EAAOF,KAAQ,OAAOxF,CAAK,EAAE,IAAI;AAAA,MACnC,CAAC;AAED,YAAMkG,IAAYxF,GAAqB,CAACgF,CAAM,CAAC;AAC/CX,MAAAA,EAAW7M,QAAQgO,CAAS;AAAA,IAC9B;AAAA,EACF;AAAA,EACA/O,MAAM;AACR,GAEagP,KAA0C;AAAA,EACrDvN,cAAc,CAACwN,EAAQ;AAAA,EACvBvN,QAAQA,CAAC1C,GAAMyN,MAAc;AAC3B,QAAIzN,aAAgBiQ,IAAU;AAC5B,UAAIC,IAAelQ,EAAKc,eAAAA;AAExB,UAAId,EAAKmQ,UAAU,MAAM;AACvBD,QAAAA,IAAe,KAAKA,CAAY;AAAA,eACvBlQ,EAAKmQ,UAAU,QAAQ;AAChCD,QAAAA,IAAe,IAAIA,CAAY;AAAA,eACtBlQ,EAAKmQ,UAAU,WAAW;AACnCD,QAAAA,IAAe,QAAQA,CAAY;AAAA;AAEnC,eAAO;AAGT,aAAOA;AAAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EACAvN,QAAQ;AAAA,EACRC,cAAc;AAAA,EACdb,SAASA,CAAC/B,GAAM8C,MAAU;AACxB,UAAMD,IAAWuN,EAAgBtN,EAAM,CAAC,CAAC;AACzCD,IAAAA,EAASwN,aAAa,WAAW,GACjCrQ,EAAK+B,QAAQc,CAAQ;AAAA,EACvB;AAAA,EACA7B,MAAM;AACR,GAEasP,KAAwC;AAAA,EACnD7N,cAAc,CAACwN,EAAQ;AAAA,EACvBvN,QAAQA,CAAC6N,GAAO9C,MACP;AAAA,EAET9K,QAAQ;AAAA,EACRC,cAAc;AAAA,EACdb,SAASA,CAAC/B,GAAM8C,MAAU;AACxB,UAAMD,IAAWuN,EAAgBtN,EAAM,CAAC,CAAC;AACzCD,IAAAA,EAASwN,aAAa,WAAW,GACjCrQ,EAAK+B,QAAQc,CAAQ;AAAA,EACvB;AAAA,EACA7B,MAAM;AACR,GAEMwP,KAAkB,4CAMlBC,IAAcA,CAAC3L,MAAgBA,EAAI/C,QAAQ,iBAAiB,IAAI,GAEhE2O,KAAkBA,CAACC,MAAkBA,EAAM5O,QAAQ,OAAO,MAAM,EAAEA,QAAQ,MAAM,KAAK,GAErF6O,KAAoBA,CAACD,MAA8BA,GAAO5O,QAAQ,cAAc,IAAI,GAEpF8O,KAA0BA,CAACC,GAAqB3Q,GAAc4Q,MAAyB;AAC3F,MAAID,MAAgB3Q;AAClB,WAAO4Q;AAGT,QAAMC,IAAc7Q,EAAK4B,QAAQ,eAAe,MAAM;AAEtD,SAAOgP,EAAahP,QAAQiP,GAAa7Q,CAAI;AAC/C,GAEa8Q,KAA6B;AAAA,EACxCxO,cAAc,CAACyO,EAAQ;AAAA,EACvBxO,QAAQA,CAAC1C,GAAMmR,MAAmB;AAChC,QAAI,CAACC,GAAYpR,CAAI,KAAKqR,GAAgBrR,CAAI;AAC5C,aAAO;AAGT,UAAM2Q,IAAQ3Q,EAAKsR,SAAAA,GACbnR,IAAOsQ,EAAYzQ,EAAKuR,OAAAA,CAAQ,GAChCT,IAAcD,GAAwB7Q,EAAKc,eAAAA,GAAkBX,GAAMgR,EAAenR,CAAI,CAAC;AAE7F,WAAO2Q,KAAS,OAAO,IAAIG,CAAW,KAAK3Q,CAAI,KAAKuQ,GAAgBC,CAAK,CAAC,OAAO,IAAIG,CAAW,KAAK3Q,CAAI;AAAA,EAC3G;AAAA,EACAyC,cAAc;AAAA,EACdD,QAAQ;AAAA,EACRZ,SAASA,CAACc,GAAUC,MAAU;AAC5B,UAAM,GAAG0O,GAAUC,GAASC,CAAS,IAAI5O,GACnC3C,IAAOsQ,EAAYgB,CAAO,GAC1BE,IAAWC,GAAgBzR,GAAM;AAAA,MAAEwQ,OAAOC,GAAkBc,CAAS;AAAA,IAAA,CAAG,GACxEG,IAAoBL,EAASlQ,MAAM,GAAG,EAAE+F,SAAS,GACjDyK,IAAqBN,EAASlQ,MAAM,GAAG,EAAE+F,SAAS;AACxD,QAAI0K,IAAiBP,GACjBQ,IAAkB;AAEtB,QAAIH,IAAoBC;AACtB;AAGF,QAAID,IAAoBC,GAAoB;AAC1C,YAAMG,IAAgBT,EAASlQ,MAAM,GAAG;AACxC0Q,MAAAA,IAAkB,IAAIC,EAAc,CAAC,CAAC,IACtCF,IAAiBE,EAAc7C,MAAM,CAAC,EAAE3F,KAAK,GAAG;AAAA,IAClD;AAEA,UAAMyI,IAAqBzB,EAAYsB,CAAc,GAC/CI,IAAe/B,EAAgB8B,MAAuB/R,IAAOA,IAAO+R,CAAkB;AAE5FC,WAAAA,EAAaC,UAAUvP,EAASwP,WAAW,GAC3CV,EAAS9D,OAAOsE,CAAY,GAC5BtP,EAASd,QAAQ4P,CAAQ,GAErBK,KACFL,EAASW,aAAalC,EAAgB4B,CAAe,CAAC,GAGjDG;AAAAA,EACT;AAAA,EACAI,SAAS;AAAA,EACTvR,MAAM;AACR,GAEawR,KAAiC;AAAA,EAC5C/P,cAAc,CAACgQ,EAAY;AAAA,EAC3B/P,QAAQA,CAAC1C,GAAMmR,MAAmB;AAChC,QAAI,CAACE,GAAgBrR,CAAI;AACvB,aAAO;AAGT,UAAMG,IAAOsQ,EAAYzQ,EAAKuR,OAAAA,CAAQ;AAEtC,WAAOV,GAAwB7Q,EAAKc,eAAAA,GAAkBX,GAAMgR,EAAenR,CAAI,CAAC;AAAA,EAClF;AAAA,EACA2C,QAAQ6N;AAAAA,EACR5N,cAAc4N;AAAAA,EACdzO,SAASA,CAACc,GAAUC,MAAU;AAC5B,UAAM3C,IAAOsQ,EAAY3N,EAAM,CAAC,CAAC,GAC3B4P,IAAeC,GAAoBxS,CAAI,GACvCgS,IAAe/B,EAAgBjQ,CAAI;AAEzCgS,IAAAA,EAAaC,UAAUvP,EAASwP,WAAW,GAC3CK,EAAa7E,OAAOsE,CAAY,GAChCtP,EAASd,QAAQ2Q,CAAY;AAAA,EAC/B;AAAA,EACA1R,MAAM;AACR,GAEa4R,KAAwB,CAAC/D,IAAOF,IAAIqB,IAAmBM,IAAiBW,IAAMuB,EAAQ,GCrNtFK,KAAyC,CACpDC,IACA5B,IACAuB,IACA3I,GACAiJ,IACAC,IACAC,IACAC,IACAC,IACA7E,GACAnD,GACA4C,GACArO,EAAiB,GAGN0T,KAAyB,CACpCC,IACA,GAAGC,GAAatK,OAAQuK,CAAAA,MAAgBA,MAAgBC,EAAY,GACpE,GAAGZ,IACHzF,IACAE,EAAkB,GAGPoG,KAAqB,CAAC,GAAGL,IAAwB5Q,EAA0B,GAE3EkR,KAAc1Q;ACnC3B,SAAS2Q,GAAkBC,GAAkB;AAC3C,SAAOA,EAASxG,OAAOyG,YAAAA,MAAkB;AAC3C;AAEO,SAASC,GAA+B9T,GAAgB;AAC7D,QAAM4T,IAAW5T,EAAK+T,YAAAA,KAAiB;AACvC,SAAKJ,GAAkBC,CAAQ,KAI/B5T,EAAK+B,QAAQ,IAAIuM,EAAYtO,EAAKc,eAAAA,CAAgB,CAAC,GAC5C,MAJE;AAKX;AAEO,SAAAkT,KAAA;AAAA,QAAAhW,IAAAC,EAAA,CAAA,GACL,CAAAgB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAAlW,GAAAK;AAAA,SAAAJ,SAAAiB,KAEnClB,IAAAA,MAAA;AACRkB,IAAAA,EAAMiV,OAAQ7L,EAKb;AAAA,EAAC,GACDjK,IAAA,CAACa,CAAM,GAACjB,OAAAiB,GAAAjB,OAAAD,GAAAC,OAAAI,MAAAL,IAAAC,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,IAPXmW,EAAUpW,GAOPK,CAAQ,GAEJ;AAAI;AAZN,SAAAiK,KAAA;AAKD,QAAA+L,IAAkBC,GAAanB,EAAQ;AACvC,aAAKoB,KAAWF;AACdN,IAAAA,GAA+BQ,CAAC;AACjC;ACxBA,SAAAC,KAAA;AAAA,QAAAvW,IAAAC,EAAA,CAAA,GACL,CAAAgB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAAlW,GAAAK;AAAA,SAAAJ,SAAAiB,KAEnClB,IAAAA,MACDyW,GAAyBvV,CAAM,GACrCb,IAAA,CAACa,CAAM,GAACjB,OAAAiB,GAAAjB,OAAAD,GAAAC,OAAAI,MAAAL,IAAAC,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,IAFXmW,EAAUpW,GAEPK,CAAQ,GAEJ;AAAI;ACTN,MAAMqW,KAAyDC,EAAc,+BAA+B;ACCnH,SAAeC,GAAA5W,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAA8B;AAAA,IAAA8J,YAAAA;AAAAA,EAAAA,IAAAhK,GAC3C,CAAAkB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAA7V,GAAAG;AAAA,SAAAP,EAAA,CAAA,MAAAiB,KAAAjB,SAAA+J,KAEnC3J,IAAAA,MAAA;AACRa,IAAAA,EAAM2V,YAAa7M,CAAU;AAAA,EAAC,GAC7BxJ,IAAA,CAACwJ,GAAY9I,CAAM,GAACjB,OAAAiB,GAAAjB,OAAA+J,GAAA/J,OAAAI,GAAAJ,OAAAO,MAAAH,IAAAJ,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,IAFvBmW,EAAU/V,GAEPG,CAAoB,GAEhB;AAAI;ACNN,SAAAsW,KAAA;AAAA,QAAA7W,IAAAC,EAAA,CAAA,GACL,CAAAgB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAAlW;AAAA,SAAAC,SAAAiB,KAE3ClB,IAAA,gBAAAe,EAACE,KAAa,UAAA,MAAW,OAAA,YAAmB,SAAA,KAC1C,UAAA,gBAAAF,EAACgW,IAAA,EACyB,yBAAA,yBACE,2BAAA,2BACK,gCAAA,2BACN,0BAAA,0BACM,gCAAA,2BACjB,eAAA,oBACN7V,QAAAA,EAAAA,CAAM,EAAA,CAElB,GAAMjB,OAAAiB,GAAAjB,OAAAD,KAAAA,IAAAC,EAAA,CAAA,GAVND;AAUM;ACjBV,MAAMgX,KAAsB,uCAEtBC,KAAgB,QAChBC,KAAoB,qCACpBC,KAAwB;AAY9B,SAASC,GAAuBC,GAAgB;AAC9C,MAAI9V,IAAQ;AAEZ,aAAWkE,KAAQ4R;AACjB9V,IAAAA,KAASkE,MAAS,MAAO,IAAI;AAG/B,SAAOlE;AACT;AAEA,SAAS+V,GAAiBC,GAAuCC,GAA2B;AAC1F,SAAO,CAAC,GAAGD,CAAiB,EAAEE,QAAAA,EAAUC,KAAML,CAAAA,MAAWA,EAAOG,oBAAoBA,CAAiB;AACvG;AAEA,SAASG,GAAmBN,GAAgBO,GAAyBC,GAAqB;AACxF,SAAID,MAAoBC,KAAe,CAACR,EAAOS,SAAS,GAAI,IAAUT,IAC/D,IAAIU,OAAOH,CAAe;AACnC;AAEA,SAASI,GAA8BnM,GAAc0L,GAAuC;AAC1F,QAAMU,IAAoBpM,EAAK9G,MAAMoS,EAAqB;AAC1D,MAAI,CAACc;AACH,WAAIpM,EAAKwD,KAAAA,MAAW,OAClBkI,EAAkBjO,SAAS,IAGtBuC;AAGT,QAAM2L,IAAoBJ,GAAuBa,EAAkB,CAAC,CAAC,GAC/DC,IAAcZ,GAAiBC,GAAmBC,CAAiB;AACzE,MAAI,CAACU,EAAa,QAAOrM;AAEzB,QAAMsM,IAAwBX,KAAqBU,EAAYC,wBAAwBD,EAAYV,oBAC7FY,IAAmBT,GAAmBM,EAAkB,CAAC,GAAGE,GAAuBX,CAAiB;AAE1G,SAAIY,MAAqBH,EAAkB,CAAC,IAAUpM,IAE/C,GAAGuM,CAAgB,GAAGvM,EAAKwF,MAAM4G,EAAkB,CAAC,EAAE3O,MAAM,CAAC;AACtE;AAEA,SAAS+O,GAAkBxM,GAAc9G,GAAyBwS,GAAuC;AACvG,QAAMC,IAAoBJ,GAAuBrS,EAAM,CAAC,CAAC;AAEzD,SAAOwS,EAAkBjO,UAAUiO,EAAkBe,GAAG,EAAE,EAAGd,oBAAoBA;AAC/ED,IAAAA,EAAkB/T,IAAAA;AAGpB,QAAM+U,IAAehB,EAAkBe,GAAG,EAAE;AAC5C,MAAIC,GAAcf,sBAAsBA;AACtC,WAAO,GAAGG,GAAmB5S,EAAM,CAAC,GAAGwT,EAAaJ,uBAAuBX,CAAiB,CAAC,GAAG3L,EAAKwF,MAAMtM,EAAM,CAAC,EAAEuE,MAAM,CAAC;AAG7H,QAAM4O,IAAcX,EAAkBe,GAAG,EAAE,GACrCE,IAAahB,KAAqBU,GAAaV,qBAAqB;AAC1E,MAAIW,IAAwBX;AAE5B,SAAIU,KAAeM,MAAe,KAAK,CAACzT,EAAM,CAAC,EAAE+S,SAAS,GAAI,MAC5DK,IAAwBD,EAAYC,wBAAwB,IAG9DZ,EAAkBkB,KAAK;AAAA,IAAEN,uBAAAA;AAAAA,IAAuBX,mBAAAA;AAAAA,EAAAA,CAAmB,GAE5D,GAAGG,GAAmB5S,EAAM,CAAC,GAAGoT,GAAuBX,CAAiB,CAAC,GAAG3L,EAAKwF,MAAMtM,EAAM,CAAC,EAAEuE,MAAM,CAAC;AAChH;AAEA,SAASoP,GAAsB7M,GAAc8M,GAA0B;AACrE,MAAI1B,GAAcvT,KAAKmI,EAAK+M,UAAAA,CAAW;AACrCD,WAAAA,EAAME,gBAAgB,CAACF,EAAME,eACtBhN;AAGT,MAAI8M,EAAME,cAAe,QAAOhN;AAEhC,QAAM9G,IAAQ8G,EAAK9G,MAAMmS,EAAiB;AAC1C,SAAKnS,IAEEsT,GAAkBxM,GAAM9G,GAAO4T,EAAMpB,iBAAiB,IAF1CS,GAA8BnM,GAAM8M,EAAMpB,iBAAiB;AAGhF;AAEO,SAASuB,GAAiC9P,GAAiB;AAChE,QAAMoB,IAAQpB,EAAQzF,MAAM;AAAA,CAAI,GAC1BoV,IAA2B;AAAA,IAAEE,eAAe;AAAA,IAAOtB,mBAAmB,CAAA;AAAA,EAAA;AAE5E,SAAOnN,EAAMC,IAAKwB,CAAAA,MAAS6M,GAAsB7M,GAAM8M,CAAK,CAAC,EAAEjN,KAAK;AAAA,CAAI;AAC1E;AAEO,SAASqN,GAAiB/P,GAAiB;AAChD,QAAMjE,IAAQiE,EAAQjE,MAAMiS,EAAmB;AAC/C,SAAKjS,IAGE;AAAA,IACLiU,aAAajU,EAAM,CAAC;AAAA,IACpBkU,MAAMjQ,EAAQqI,MAAMtM,EAAM,CAAC,EAAEuE,MAAM;AAAA,EAAA,IAJ5B;AAAA,IAAE0P,aAAa;AAAA,IAAIC,MAAMjQ;AAAAA,EAAAA;AAMpC;AC/GO,MAAMkQ,KAAc,eACdC,KAAe,gBAIfC,KAAa,cACbC,KAAgB,iBAChBC,KAAkB,mBAClBC,KAAgB,iBAChBC,KAAgB,iBAChBC,KAAmB,oBACnBC,KAAgB,iBAGhBC,KAAoB,qBACpBC,KAAoB,qBACpBC,KAAmB,oBAGnBC,KAAe;ACHOnD,EAAcuC,EAAW;AACxBvC,EAAcwC,EAAY;AAG5BxC,EAAcyC,EAAU;AACrBzC,EAAc0C,EAAa;AACzB1C,EAAc2C,EAAe;AAC/B3C,EAAc4C,EAAa;AAC3B5C,EAAc6C,EAAa;AACxB7C,EAAc8C,EAAgB;AACjC9C,EAAc+C,EAAa;AAGvB/C,EAAcgD,EAAiB;AAC/BhD,EAAciD,EAAiB;AACjE,MAAMG,KAA2BpD,EAAckD,EAAgB,GAGzDG,KAAuBrD,EAAcmD,EAAY,GAGjDG,KAA8B,+BAC9BC,KAA8B,+BAC9BC,KAA+B;AACOxD,EAAcsD,EAA2B;AACzCtD,EAAcuD,EAA2B;AACxCvD,EAAcwD,EAA4B;ACxB9F,SAASC,GAAsB5M,GAA2C;AACxE,QAAMvL,IAAOoY,GAAAA;AACb,SAAI7M,EAAQ4C,UAAU,QACpBnO,EAAKoS,UAAU7G,EAAQ4C,MAAMkK,SAA8B,GAEtD;AAAA,IAAErY,MAAAA;AAAAA,EAAAA;AACX;AAEO,MAAMsY,WAAoBtK,GAAY;AAAA,EAC3C,OAAOlO,UAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,OAAOC,MAAMC,GAAgC;AAC3C,WAAO,IAAIsY,GAAYtY,EAAKC,KAAK;AAAA,EACnC;AAAA,EAEAK,UAAUiY,GAAmC;AAC3C,UAAMhN,IAAU9K,SAASC,cAAc,YAAY;AACnD8X,WAAAA,GAAuBjN,GAASgN,EAAOvV,MAAMU,OAAO,GAC7C6H;AAAAA,EACT;AAAA,EAEA5K,YAAqB;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,OAAOyL,YAAqC;AAC1C,WAAO;AAAA,MACLqM,YAAYA,OAAO;AAAA,QACjBlM,YAAY4L;AAAAA,QACZ3L,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EAEJ;AAAA,EAEAf,UAAUxM,GAAwC;AAChD,UAAM;AAAA,MAAEsM,SAAAA;AAAAA,IAAAA,IAAY,MAAME,UAAUxM,CAAM;AAE1C,QAAIsM,KAAWmN,GAAcnN,CAAO,GAAG;AACrC,MAAI,KAAKoN,aACPpN,EAAQsC,OAAOpN,SAASC,cAAc,IAAI,CAAC;AAG7C,YAAMkY,IAAa,KAAKC,cAAAA;AACxBtN,MAAAA,EAAQ4C,MAAMkK,YAAYO;AAE1B,YAAME,IAAY,KAAKC,aAAAA;AACvB,MAAID,MACFvN,EAAQyN,MAAMF;AAAAA,IAElB;AAEA,WAAO;AAAA,MACLvN,SAAAA;AAAAA,IAAAA;AAAAA,EAEJ;AAAA,EAEA,OAAOrK,WAAWC,GAAoD;AACpE,UAAMnB,IAAOoY,GAAAA;AACbpY,WAAAA,EAAKoS,UAAUjR,EAAe8X,MAAM,GACpCjZ,EAAKkZ,UAAU/X,EAAeiU,MAAM,GACpCpV,EAAKmZ,aAAahY,EAAe2X,SAAS,GACnC9Y;AAAAA,EACT;AAAA,EAEAe,aAAoC;AAClC,WAAO;AAAA,MACL,GAAG,MAAMA,WAAAA;AAAAA,MACTC,MAAM;AAAA,IAAA;AAAA,EAEV;AAAA,EAEAF,iBAAyB;AAIvB,WAAO,OAHc,MAAMA,eAAAA,EAEgBiB,QAAQ,WAAW,MAAM,CACjC;AAAA,EACrC;AAAA;AAAA,EAIAqX,eAAezJ,GAAmB0J,GAA2C;AAC3E,UAAMC,IAAWC,GAAAA,GACXT,IAAY,KAAKC,aAAAA;AACvBO,WAAAA,EAASH,aAAaL,CAAS,GAC/B,KAAKU,YAAYF,GAAUD,CAAgB,GACpCC;AAAAA,EACT;AAAA,EAEAG,kBAAwB;AACtB,UAAMzT,IAAYuT,GAAAA;AAElBG,WADiB,KAAKC,YAAAA,EACb/J,QAASgK,CAAAA,MAAU;AAC1B5T,MAAAA,EAAU6H,OAAO+L,CAAK;AAAA,IACxB,CAAC,GACD,KAAK7X,QAAQiE,CAAS,GACf;AAAA,EACT;AACF;AAEO,SAASoS,KAAkC;AAChD,SAAO,IAAIE,GAAAA;AACb;AClHO,MAAMuB,KAAqBA,CAACC,GAAoBC,MAA6B;AAClF,QAAMC,IAAYC,GAAAA,GACZC,IAAc9B,GAAAA;AAEpB,MAAI2B,GAAe;AAEjBI,IADmBJ,EAAcK,UAAAA,GACrBrY,QAAQmY,GAAa,EAAI,GACrCH,EAAc7K,OAAAA,GACdgL,EAAYG,UAAAA;AACZ;AAAA,EACF;AAEA,EAAIC,GAAkBN,CAAS,KAC7BO,GAAeP,GAAW5B,EAAkB;AAEhD;AAOO,SAAAoC,KAAA;AAAA,QAAAxc,IAAAC,EAAA,CAAA,GACL,CAAAgB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAAlW,GAAAK;AAAA,SAAAJ,SAAAiB,KAEnClB,IAAAA,MACD0c,GACLxb,EAAMyb,gBACJ3C,IACA1P,IAKAsS,EACF,CACF,GACCvc,IAAA,CAACa,CAAM,GAACjB,OAAAiB,GAAAjB,OAAAD,GAAAC,OAAAI,MAAAL,IAAAC,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,IAZXmW,EAAUpW,GAYPK,CAAQ,GAEJ;AAAI;AAjBN,SAAAiK,GAAArG,GAAA;AAQG,QAAA;AAAA,IAAA4Y,UAAAA;AAAAA,IAAAb,eAAAA;AAAAA,EAAAA,IAAoC/X;AACpC6X,SAAAA,GAAmBe,GAAUb,CAAa,GACnC;AAAK;AClCf,MAAMc,KAAmBA,MAAA;AAAA,QAAA7c,IAAAC,EAAA,CAAA,GAC9B,CAAAgB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAAlW,GAAAK;AAAA,EAAAJ,SAAAiB,KAEnClB,IAAAA,MACD0c,GACLxb,EAAM6b,sBAAuBxC,IAAatY,CAAAA,MAAA;AAMxC,UAAA+a,IALiB/a,EAAI2Z,YAAAA,EAKW3Q,OAAQX,EAAwC;AAEhF,IAAI0S,EAAe1T,SAAU,KAC3BpI,EAAMiV,OAAQ,MAAA;AACZ6G,MAAAA,EAAenL,QAASxG,EAEvB;AAAA,IAAC,CACH;AAAA,EACF,CACF,CACH,GACChL,IAAA,CAACa,CAAM,GAACjB,OAAAiB,GAAAjB,OAAAD,GAAAC,OAAAI,MAAAL,IAAAC,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,IAnBXmW,EAAUpW,GAmBPK,CAAQ;AAAC;AAtBkB,SAAAiK,GAAAuR,GAAA;AAAA,SAW2BA,EAAK9Z,cAAe;AAAS;AAXxD,SAAAsJ,GAAA4R,GAAA;AAgBlBpB,EAAAA,EAAK7X,QAASwX,GAAAA,GAAwB,EAAI;AAAC;ACnBlD,SAAA0B,KAAA;AACLJ,SAAAA,GAAAA,GACAL,GAAAA,GACO;AAAI;ACaN,MAAMU,KAAkBA,CAACC,MAAmB;AACjD,MAAIrK,IAAc;AAClB,QAAM4I,IAAWyB,EAAKxB,YAAAA,GAChByB,IAAiB1B,EAASrS;AAChC,WAASgU,IAAI,GAAGA,IAAID,GAAgBC,KAAK;AACvC,UAAMzB,IAAQF,EAAS2B,CAAC;AACxBvK,IAAAA,KAAe8I,EAAM9Y,eAAAA,GACjBwa,GAAe1B,CAAK,KAAKyB,MAAMD,IAAiB,KAAK,CAACxB,EAAM9M,eAC9DgE,KAAe;AAAA;AAAA,EAEnB;AACA,SAAOA;AACT,GAcMyK,KAAqBA,CAACvb,MACtBA,EAAKgB,SAAS,cAAoB,OAC/B,IAAIhB,EAAKwb,QAAQxb,EAAKyb,eAAe,EAAE,IAG1CC,KAA6BA,CAAC1b,MAC3BA,EAAKgB,SAAS,eAAe2a,EAAQ3b,EAAK0Z,UAAUrS,QAGvDuU,KAAyBA,CAAC5b,MAAiC;AAC/D,MAAIA,EAAKgB,SAAS;AAChB,WAAO;AAGT,QAAM6a,IAAkBN,GAAmBvb,CAAI;AAC/C,MAAI6b,MAAoB;AACtB,WAAOA;AAGT,MAAI5V,IAAO,OAAOjG,EAAKiG,QAAS,WAAWjG,EAAKiG,OAAO;AACvD,QAAMyT,IAAW1Z,EAAK0Z;AACtB,MAAI,CAACoC,MAAMC,QAAQrC,CAAQ,EAAG,QAAOzT;AAErC,QAAMmV,IAAiB1B,EAASrS;AAChC,WAASgU,IAAI,GAAGA,IAAID,GAAgBC,KAAK,GAAG;AAC1C,UAAMzB,IAAQF,EAAS2B,CAAC;AACxB,QAAIzB,EAAM5Y,SAAS,WAAW;AAC5B,MAAIqa,MAAMD,IAAiB,MACzBnV,KAAQ;AAAA;AAEV;AAAA,IACF;AAEAA,IAAAA,KAAQ2V,GAAuBhC,CAAK,GAChC8B,GAA2B9B,CAAK,MAClC3T,KAAQ;AAAA;AAAA,EAEZ;AAEA,SAAOA;AACT,GAEa+V,KAAmCA,CAACtF,MAA0B;AACzE,MAAI;AACF,UAAMuF,IAASvU,KAAKwU,MAAMxF,CAAK;AAC/B,WAAOkF,GAAuBK,EAAOd,QAAQ,EAAE;AAAA,EACjD,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAEagB,KAAmB;AAAA,EAC9BhB,MAAM;AAAA,IACJrC,WAAW;AAAA,IACXG,QAAQ;AAAA,IACR7D,QAAQ;AAAA,IACRpU,MAAM;AAAA,IACNC,SAAS;AAAA,IACTyY,UAAU,CACR;AAAA,MACE1Y,MAAM;AAAA,MACNC,SAAS;AAAA,MACTgY,QAAQ;AAAA,MACR7D,QAAQ;AAAA,MACRgH,YAAY1d;AAAAA,MACZoa,WAAW;AAAA,MACXY,UAAU,CAAA;AAAA,IAAA,CACX;AAAA,EAAA;AAGP;AAEO,SAAS2C,GAA8BC,IAAQ,IAAI;AACxD,SAAKA,EAAMlP,SA6BJ;AAAA,IACL+N,MAAM;AAAA,MACJrC,WAAW;AAAA,MACXG,QAAQ;AAAA,MACR7D,QAAQ;AAAA,MACRpU,MAAM;AAAA,MACNC,SAAS;AAAA,MACTyY,UA/Be4C,EAAMhb,MAAM,OAAO,EAEV8G,IAAKwB,CAAAA,OAAU;AAAA,QACzC5I,MAAM;AAAA,QACNC,SAAS;AAAA,QACTgY,QAAQ;AAAA,QACR7D,QAAQ;AAAA,QACRgH,YAAY1d;AAAAA,QACZoa,WAAW;AAAA,QACXY,UAAU9P,IACN,CACE;AAAA,UACE5I,MAAM;AAAA,UACNC,SAAS;AAAA,UACTgF,MAAM2D;AAAAA,UACNqP,QAAQ;AAAA,UACR/W,QAAQ;AAAA,UACRqa,MAAM;AAAA,UACNpO,OAAO;AAAA,QAAA,CACR,IAEH,CAAA;AAAA,MAAA,EACJ;AAAA,IASEuL;AAAAA,EACF,IApCOhS,KAAKwU,MAAMxU,KAAKC,UAAUwU,EAAgB,CAAC;AAsCtD;ACrJO,SAAAK,GAAAze,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAA6B;AAAA,IAAAwe,WAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAA3e,GAOlC,CAAAkB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAA7V,GAAAG;AAAA,SAAAP,EAAA,CAAA,MAAAiB,KAAAjB,SAAA0e,KAI3Cte,IAAAA,OAAO;AAAA,IAAAue,gBACW5Z,CAAAA,MAAA;AACd,YAAA2T,IAAczX,EAAM2d,iBAAkBlV,KAAIC,UAAW0U,GAA8BtZ,CAAK,CAAC,CAAC;AAC1F9D,MAAAA,EAAM4d,eAAgBnG,CAAK,GAC3BgG,EAAeI,UAAWd,GAAiCjZ,CAAK,GAChE9D,EAAMiG,MAAOxG,QAAW;AAAA,QAAAqe,kBAAoB;AAAA,MAAA,CAAW;AAAA,IAAC;AAAA,EAAA,IAG5Dxe,IAAA,CAACU,GAAQyd,CAAe,GAAC1e,OAAAiB,GAAAjB,OAAA0e,GAAA1e,OAAAI,GAAAJ,OAAAO,MAAAH,IAAAJ,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,IAV3Bgf,GACEP,GACAre,GAQAG,CACF,GAEO;AAAI;ACtBN,MAAM0e,KAAsBA,CAACjb,MAC9BA,EAAM3B,QAAQ,UAAgB,KAE3B,CAAC2B,EAAMkb,WAAW,CAAClb,EAAMmb,WAAW,CAACnb,EAAMob,YAAY,CAACpb,EAAMqb;ACFhE,SAAAC,GAAAvf,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAgC;AAAA,IAAAsf,UAAAA;AAAAA,EAAAA,IAAAxf,GACrC,CAAAkB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAA7V,GAAAG;AAAA,SAAAP,EAAA,CAAA,MAAAiB,KAAAjB,SAAAuf,KAEnCnf,IAAAA,MACDa,EAAMyb,gBACX8C,IACAxb,CAAAA,MACMib,GAAoBjb,CAAK,KAC3BA,EAAKyb,eAAAA,GACLF,IAAAA,GACO,MAGF,IAETG,EACF,GACCnf,IAAA,CAACU,GAAQse,CAAQ,GAACvf,OAAAiB,GAAAjB,OAAAuf,GAAAvf,OAAAI,GAAAJ,OAAAO,MAAAH,IAAAJ,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,IAdrBmW,EAAU/V,GAcPG,CAAkB,GAEd;AAAI;AC1BN,MAAMof,KAAmC,CAAC,SAAS,WAAW,GCCxDC,KAAuBA,CAACC,MACbA,EACnBC,KAAK,CAACC,GAAGC,MAAML,GAAcM,QAAQF,EAAEG,KAAK,IAAIP,GAAcM,QAAQD,EAAEE,KAAK,CAAC,EAC9E9V,IAAI,CAAC+V,GAAQtU,OAAW;AAAA,EAAE,GAAGsU;AAAAA,EAAQtU,OAAAA;AAAAA,EAA+B,EAElCuU,OACnC,CAACC,GAAKF,MAAW;AACf,QAAMG,IAASD,EAAIF,EAAOD,KAAK,KAAK,CAAA;AACpCI,SAAAA,EAAO9H,KAAK2H,CAAM,GAClBE,EAAIF,EAAOD,KAAK,IAAII,GACbD;AACT,GACA,CAAA,CACF;ACHK,SAAAE,GAAA1W,GAAA;AAAA,QAAA7J,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAugB,IAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,SAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAC,UAAAhhB;AAAAA,EAAAA,IAA8G8J,GAAlBkX,IAAAhhB,MAAAW,SAAA,KAAAX,GASpFK,IAAAqgB,IAAA,cAAA,eACUlgB,IAAAkgB,IAAA,cAAA;AAAqC,MAAAhgB;AAAA,EAAAT,SAAAO,KAA3CE,IAAA;AAAA,IAAAugB,IAAMzgB;AAAAA,EAAAA,GAAuCP,OAAAO,GAAAP,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAW;AAAA,EAAAX,SAAA8gB,KAUnDngB,IAAA,gBAAAG,EAAAmgB,GAAA,SAAA,EACE,4BAACtW,GAAA,EAAQ,IAAA,OAAiB,WAAA,GAAgB,cAAA,YAAqB,WAAA,mBAC5DmW,aACH,GACF,GAAkB9gB,OAAA8gB,GAAA9gB,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAA,MAAAY;AAAA,EAAAZ,SAAA8gB,KAClBlgB,IAAA,gBAAAE,EAAAmgB,GAAA,YAAA,EACE,4BAAAA,GAAA,SAAA,EAAkBH,UAAAA,EAAAA,CAAa,EAAA,CACjC,GAAqB9gB,OAAA8gB,GAAA9gB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAA,MAAAa;AAAA,EAAAb,EAAA,CAAA,MAAAW,KAAAX,SAAAY,KARvBC,iCACEF,UAAAA;AAAAA,IAAAA;AAAAA,IAKAC;AAAAA,EAAAA,GAGF,GAAeZ,OAAAW,GAAAX,OAAAY,GAAAZ,OAAAa,KAAAA,IAAAb,EAAA,CAAA;AAAA,MAAAe;AAAA,EAAAf,SAAA6gB,KACd9f,IAAA8f,KACC,gBAAA/f,EAAC6J,GAAA,EAAgB,WAAA,GAAgB,cAAA,YAAqB,WAAA,mBAAwB,OAAA,YAC3EkW,UAAAA,GACH,GACD7gB,OAAA6gB,GAAA7gB,QAAAe,KAAAA,IAAAf,EAAA,EAAA;AAAA,MAAAkB;AAAA,SAAAlB,EAAA,EAAA,MAAAwgB,KAAAxgB,UAAAygB,KAAAzgB,EAAA,EAAA,MAAA0gB,KAAA1gB,UAAA2gB,KAAA3gB,EAAA,EAAA,MAAA4gB,KAAA5gB,UAAAI,KAAAJ,EAAA,EAAA,MAAAS,KAAAT,EAAA,EAAA,MAAAa,KAAAb,EAAA,EAAA,MAAAe,KAAAf,UAAA+gB,KA9BH7f,sBAACggB,IAAA,EACW,WAAA,UACH,QAAA,WACH,KAAA,OACI,SAAA,OACC,UAAA,MACL,IAAA9gB,GACI,QAAAK,GACEsgB,UAAAA,GACLH,KAAAA,GACA,MAAA,UACUH,iBAAAA,GACXD,IAAAA,GACUG,cAAAA,GACLD,SAAAA,GAET7f,UAAAA;AAAAA,IAAAA;AAAAA,IAUCE;AAAAA,EAAAA,GAKH,GAAOf,QAAAwgB,GAAAxgB,QAAAygB,GAAAzgB,QAAA0gB,GAAA1gB,QAAA2gB,GAAA3gB,QAAA4gB,GAAA5gB,QAAAI,GAAAJ,QAAAS,GAAAT,QAAAa,GAAAb,QAAAe,GAAAf,QAAA+gB,GAAA/gB,QAAAkB,KAAAA,IAAAlB,EAAA,EAAA,GA/BPkB;AA+BO;AClCJ,MAAMigB,KAAgBtX,CAAAA,MAAA;AAAA,QAAA7J,IAAAC,EAAA,EAAA,GAC3B;AAAA,IAAA4f,SAAAA;AAAAA,IAAAuB,eAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,EAAAA,IAAmEzX,GACnE;AAAA,IAAAtB,OAAAxI;AAAAA,IAAAwhB,WAAAnhB;AAAAA,EAAAA,IAAuCwf,GAAqBC,CAAO,GAA3DtX,IAAAxI,MAAAW,SAAA,CAAA,IAAAX,GAAYwhB,IAAAnhB,MAAAM,SAAA,CAAA,IAAAN,GAEpBohB,IAAmB,CAAA,GAAIjZ,MAAUgZ,CAAS,EAAClY;AAAQ,MAAA9I,GAAAE;AAAA,EAAAT,SAAAohB,KAGzC7gB,IAAAA,MAAA;AACRkC,aAAQgf,eACU,kBAAkBL,CAAa,EAChC,GAACM,eAAC;AAAA,MAAAC,UAAY;AAAA,MAASC,OAAS;AAAA,IAAA,CAAW;AAAA,EAAC,GAC5DnhB,IAAA,CAAC2gB,CAAa,GAACphB,OAAAohB,GAAAphB,OAAAO,GAAAP,OAAAS,MAAAF,IAAAP,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAJlBmW,EAAU5V,GAIPE,CAAe;AAGf,QAAAohB,IAAApgB,IACQd,IAAA,QACEC,IAAA,YACEC,IAAA,SACAE,IAAA,SACcG,IAAA;AAAK,MAAAC;AAAA,EAAAnB,EAAA,CAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KACpBF,IAAA;AAAA,IAAA8F,MACF;AAAA,IAAO6a,IACT;AAAA,EAAA,GACL9hB,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAAA,MAAAwB;AAAA,EAAAxB,SAAAwhB,KAEAhgB,IAAA,CAACggB,KAAc,gBAAA1gB,EAAC6J,GAAA,EAAK,UAAA,cAAU,GAAO3K,OAAAwhB,GAAAxhB,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AACtC,QAAAqL,IAAA,CAAC,CAAC9C,EAAKc,UAAP,gBAAAsC,EAAAoW,IAAA,EAEG,UAAA;AAAA,IAAA,gBAAAjhB,EAAC6J,GAAA,EAAgB,YAAA,MAAmB,eAAA,OAAe,UAAA,MAAW,OAAA,YAAqB,WAAA,kBAAiB,UAAA,UAEpG;AAAA,sBACC3J,GAAA,EACEuH,UAAAA,EAAK6B,IAAK+V,CAAAA,MAEP,gBAAArf,EAACyf,MACK,IAAA,kBAAkBJ,EAAMtU,KAAM,IACtB,YAAAuV,MAAkBjB,EAAMtU,OAC3B,SAAA,MAAMwV,EAAalB,GAAQA,EAAMtU,KAAM,GAClC,cAAA,MAAMyV,EAAiBnB,EAAMtU,KAAM,GAEnC,cAAAsU,EAAM3C,MACJ,gBAAA2C,EAAM6B,aACP,eAAA7B,EAAMS,eACX,UAAA,MAJLT,EAAMK,EAIC,CAGjB,EAAA,CACH;AAAA,EAAA,GAAM,GAGT9U,IAAA,CAAC,CAAC6V,EAASlY,UAAX,gBAAAsC,EAAAoW,IAAA,EAEG,UAAA;AAAA,IAAA,gBAAAjhB,EAAC6J,GAAA,EAAgB,YAAA,MAAmB,eAAA,OAAe,UAAA,MAAW,OAAA,YAAqB,WAAA,kBAAiB,UAAA,gBAEpG;AAAA,sBACC3J,GAAA,EACEugB,UAAAA,EAASnX,IAAK6X,CAAAA,MAEX,gBAAAnhB,EAACyf,MACK,IAAA,kBAAkBJ,EAAMtU,KAAM,IACtB,YAAAuV,MAAkBjB,EAAMtU,OAC3B,SAAA,MAAMwV,EAAalB,GAAQA,EAAMtU,KAAM,GAClC,cAAA,MAAMyV,EAAiBnB,EAAMtU,KAAM,GAEnC,cAAAsU,EAAM3C,MACJ,gBAAA2C,EAAM6B,aACP,eAAA7B,EAAMS,eACX,UAAA,MAJLT,EAAMK,EAIC,CAGjB,EAAA,CACH;AAAA,EAAA,GAAM;AAET,MAAA0B;AAAA,SAAAliB,EAAA,CAAA,MAAA6hB,KAAA7hB,EAAA,CAAA,MAAAwB,KAAAxB,EAAA,CAAA,MAAAqL,KAAArL,EAAA,CAAA,MAAA0L,KAAA1L,UAAAmB,KA3DH+gB,IAAA,gBAAAvW,EAACkW,GAAA,EACQ,QAAAlhB,GACE,UAAAC,GACE,YAAAC,GACA,WAAAE,GACc,yBAAAG,GACf,UAAAC,GAKTK,UAAAA;AAAAA,IAAAA;AAAAA,IACA6J;AAAAA,IAwBAK;AAAAA,EAAAA,GAwBH,GAAa1L,OAAA6hB,GAAA7hB,OAAAwB,GAAAxB,OAAAqL,GAAArL,OAAA0L,GAAA1L,QAAAmB,GAAAnB,QAAAkiB,KAAAA,IAAAliB,EAAA,EAAA,GA5DbkiB;AA4Da,GCtFXC,KAAcA,CAAC3X,GAA6B4X,MAChD5X,EAAKQ,OAAQqX,OAAMA,EAAE7E,KAAKzZ,QAAQ,MAAM,GAAG,EAAE8R,YAAAA,EAAcgC,SAASuK,EAAEvM,YAAAA,CAAa,CAAC;AAQ/E,SAASyM,GACdC,GACAC,IAKM,IACN;AACA,QAAMC,IAAqCD,EAAMpY,IAC/C,CAACsY,GAAK7W,OAAgC;AAAA,IACpC2U,IAAIkC,EAAIC;AAAAA,IACRtgB,KAAKqgB,EAAIC;AAAAA,IACT9W,OAAAA;AAAAA,IACAqU,OAAOwC,EAAIE;AAAAA,IACXpF,MAAMkF,EAAIlF;AAAAA,IACVwE,aAAaU,EAAIV;AAAAA,IACjBpB,eAAeA,MAAM;AAAA,IAAC;AAAA,EAAA,EAE1B;AAEA,SAAI2B,KAAe,QAAQA,MAAgB,KAClCE,IAGFN,GAAYM,GAAaF,CAAW;AAC7C;ACnCA,MAAMM,KAAoB,cACpBC,KAAW,CAAC,GAAG,EAAErX,KAAK,EAAE,GAExBsX,KAAc,KAAKD,EAAQ,GAAGD,EAAiB,QAC/CG,KAAc,OAAOH,EAAiB,OAEtCI,KAAe,IAEfC,KAAe,IAAIC,OAAO,gBAAgBL,EAAQ,QAAQC,EAAW,GAAGC,EAAW,OAAOC,EAAY,MAAM,GAE5GG,KAAa,IAAID,OAAO,gBAAgBL,EAAQ,QAAQC,EAAW,OAAOE,EAAY,MAAM;AAS3F,SAASI,GAAiBpb,GAAcqb,GAA8C;AAC3F,MAAIxe,IAAQoe,GAAaK,KAAKtb,CAAI;AAMlC,MAJInD,MAAU,SACZA,IAAQse,GAAWG,KAAKtb,CAAI,IAG1BnD,MAAU,MAAM;AAGlB,UAAM0e,IAAyB1e,EAAM,CAAC,GAChC2e,IAAiB3e,EAAM,CAAC;AAE9B,QAAI2e,EAAepa,UAAUia;AAC3B,aAAO;AAAA,QACLI,YAAY5e,EAAM+G,QAAQ2X,EAAuBna;AAAAA,QACjDoa,gBAAAA;AAAAA,QACAE,mBAAmB7e,EAAM,CAAC;AAAA,MAAA;AAAA,EAGhC;AAEA,SAAO;AACT;ACjCA,MAAM8e,KAA+B;AAW9B,SAAAC,GAAA9jB,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAA6B;AAAA,IAAAuiB,OAAApiB;AAAAA,EAAAA,IAAAL;AAAqB,MAAAQ;AAAA,EAAAP,SAAAI,KAAnBG,IAAAH,MAAAM,SAAA,CAAA,IAAAN,GAAUJ,OAAAI,GAAAJ,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAV,QAAAwiB,IAAAjiB,GACpC,CAAAgiB,GAAAuB,CAAA,IAAsCC,GAAwB,IAAI,GAClE,CAAA9iB,CAAA,IAAiBgV,EAAAA,GACjB+N,IAAsB1B,GAAiBC,GAAaC,CAAK;AAAE,MAAA/hB;AAAA,EAAAT,SAAAiB,KAKpCR,IAAAA,CAAAwjB,GAAAlI,GAAAmI,MAAA;AAKrBjjB,IAAAA,EAAMiV,OAAQ,MAAA;AACZ,MAAK6F,MAEL9a,EAAMkjB,gBAAiBrK,IAA0B;AAAA,QAAA6I,YACnCsB,EAAczD;AAAAA,QAAGoC,cACfqB,EAAc/D;AAAAA,QAAM1C,MAC5ByG,EAAczG;AAAAA,QAAKzB,eAAAA;AAAAA,MAAAA,CAE1B,GAEDmI,EAAAA;AAAAA,IAAW,CACZ;AAAA,EAAC,GACHlkB,OAAAiB,GAAAjB,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAjBD,QAAAokB,IAAuB3jB,GAsBvB4jB,IAAwBha;AAEtB,MAAA1J;AAAA,EAAAX,SAAAgkB,KAKkBrjB,IAAAqjB,EAAa5S,MAAO,GAAGwS,EAA4B,GAAC5jB,OAAAgkB,GAAAhkB,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAxE,QAAAskB,IAAoB3jB;AAAqD,MAAAC;AAAA,SAAAZ,EAAA,CAAA,MAAAskB,KAAAtkB,SAAAokB,KAGvExjB,IAAA,gBAAAE,EAACyjB,IAAA,EACgBT,eAAAA,GACCM,gBAAAA,GACLC,WAAAA,GACFC,SAAAA,GACK,cAAAlZ,GAAAA,CAgBb,GACDpL,OAAAskB,GAAAtkB,OAAAokB,GAAApkB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA,GAtBFY;AAsBE;AA9DC,SAAAwK,GAAAoZ,GAAAzkB,GAAA;AA6CgC,QAAA;AAAA,IAAA8f,SAAAA;AAAAA,IAAAuB,eAAAA;AAAAA,IAAAqD,wBAAAA;AAAAA,IAAAC,qBAAAA;AAAAA,EAAAA,IAAA3kB;AAC/B,SAAKykB,EAAgB1F,UACd6F,GAAQC,aACb,gBAAA9jB,EAACqgB,IAAA,EACUtB,SAAAA,GACMuB,eAAAA,GACD,cAAA,CAAAjB,GAAA9C,MAAA;AACZqH,IAAAA,EAAoBrH,CAAC,GACrBoH,EAAuBtE,CAAM;AAAA,EAAC,GAEd,kBAAA0E,CAAAA,MAAA;AAChBH,IAAAA,EAAoBrH,CAAC;AAAA,EAAC,EAAA,CACvB,GAEHmH,EAAgB1F,OAClB,IAdsC;AAcrC;AA5DF,SAAAzU,GAAApC,GAAA;AAAA,SA+BIob,GAAiBpb,GAAM,CAAC;AAAC;AC/B7B,MAAM6c,UAAsB7S,GAAS;AAAA,EAC1C8S;AAAAA,EACAC;AAAAA,EAEA,OAAOljB,UAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,OAAOC,MAAMC,GAAoC;AAC/C,WAAO,IAAI8iB,EAAc9iB,EAAK+iB,eAAe/iB,EAAKgjB,QAAQhjB,EAAKC,KAAK;AAAA,EACtE;AAAA,EAEAC,YAAYub,GAAqBD,GAAcnb,GAAe;AAC5D,UAAMmb,GAAMnb,CAAG,GACf,KAAK0iB,gBAAgBtH,GACrB,KAAKuH,SAASxH;AAAAA,EAChB;AAAA,EAEAyH,uBAAgC;AAC9B,WAAO;AAAA,EACT;AAAA,EAEAC,aAAsB;AACpB,WAAO;AAAA,EACT;AAAA,EAEAC,qBAA8B;AAC5B,WAAO;AAAA,EACT;AAAA,EAEAC,sBAA+B;AAC7B,WAAO;AAAA,EACT;AAAA,EAEA9iB,UAAUiY,GAAmC;AAC3C,UAAM9L,IAAOhM,SAASC,cAAc,MAAM;AAC1C8X,WAAAA,GAAuB/L,GAAM8L,EAAOvV,MAAMsD,SAAS,GACnDmG,EAAKd,aAAa,qBAAqB,KAAKoX,aAAa,GACzDtW,EAAKd,aAAa,aAAa,KAAKqX,MAAM,GAC1CvW,EAAKqE,cAAc,IAAI,KAAKkS,MAAM,IAC3BvW;AAAAA,EACT;AAAA,EAEA9L,UAAU+L,GAAyB2W,GAA2B;AAC5D,YAAI3W,EAASsW,WAAW,KAAKA,UAAUtW,EAASqW,kBAAkB,KAAKA,mBACrEM,EAAI1X,aAAa,qBAAqB,KAAKoX,aAAa,GACxDM,EAAI1X,aAAa,aAAa,KAAKqX,MAAM,GACzCK,EAAIvS,cAAc,IAAI,KAAKkS,MAAM,KAG5B;AAAA,EACT;AAAA,EAEAvX,UAAUjL,GAAyC;AACjD,UAAM8iB,IAAK7iB,SAASC,cAAc,MAAM;AACxC4iB,WAAAA,EAAG3X,aAAa,qBAAqB,KAAKoX,aAAa,GACvDO,EAAG3X,aAAa,aAAa,KAAKqX,MAAM,GACxCM,EAAGxS,cAAc,IAAI,KAAKkS,MAAM,IACzB;AAAA,MAAEzX,SAAS+X;AAAAA,IAAAA;AAAAA,EACpB;AAAA,EAEA,OAAOlX,YAAqC;AAC1C,WAAO;AAAA,MACLK,MAAMA,CAAC5B,MACD,CAACA,EAAQyB,aAAa,mBAAmB,KAAK,CAACzB,EAAQyB,aAAa,WAAW,IAC1E,OAEF;AAAA,QACLC,YAAYgX;AAAAA,QACZ/W,UAAU;AAAA,MAAA;AAAA,IAEd;AAAA,EAEJ;AAAA,EAEA,OAAOtL,WAAWC,GAAwD;AAExE,WADa,IAAI2hB,EAAc3hB,EAAesa,aAAata,EAAeqa,IAAI;AAAA,EAEhF;AAAA,EAEAza,aAAsC;AACpC,WAAO;AAAA,MACL,GAAG,MAAMA,WAAAA;AAAAA,MACTC,MAAM;AAAA,MACNya,aAAa,KAAKsH;AAAAA,MAClBvH,MAAM,KAAKwH;AAAAA,IAAAA;AAAAA,EAEf;AAAA,EAEAliB,iBAAyB;AACvB,WAAO,IAAI,KAAKkiB,MAAM;AAAA,EACxB;AACF;AAEA,SAASO,GAAyB1Y,GAAkD;AAClF,QAAM4Q,IAAc5Q,EAAQE,aAAa,mBAAmB,GACtDyQ,IAAO3Q,EAAQE,aAAa,WAAW;AAC7C,SAAI,CAAC0Q,KAAe,CAACD,IAAa,OAC3B;AAAA,IAAExb,MAAMwjB,GAAqB/H,GAAaD,CAAI;AAAA,EAAA;AACvD;AAEO,SAASgI,GAAqB/H,GAAqBD,GAA6B;AACrF,SAAO,IAAIsH,EAAcrH,GAAaD,CAAI;AAC5C;ACtHO,MAAMiI,KAA2BA,CAAC1J,GAA4B4G,GAAoBnF,MAAiB;AACxG,QAAMkI,IAAUF,GAAqB7C,GAAYnF,CAAI;AAErD,MAAIzB,GAAe;AACjBA,IAAAA,GAAehY,QAAQ2hB,CAAO,GAC9B3J,EAAc7K,OAAAA,GACdwU,EAAQrJ,UAAAA;AACR;AAAA,EACF;AACF;AAEO,SAAAsJ,GAAA9b,GAAA;AAAA,QAAA7J,IAAAC,EAAA,CAAA,GAGL;AAAA,IAAA2lB,gBAAAA;AAAAA,EAAAA,IAA2B/b,GAC3B,CAAA5I,CAAA,IAAiBgV,EAAAA;AAA4B,MAAAlW,GAAAK;AAAA,SAAAJ,EAAA,CAAA,MAAAiB,KAAAjB,SAAA4lB,KAEnC7lB,IAAAA,MACD0c,GACLxb,EAAMyb,gBACJ5C,IACA9V,CAAAA,MAAA;AAME,UAAA;AAAA,MAAA2e,YAAAA;AAAAA,MAAAC,cAAAA;AAAAA,MAAApF,MAAAA;AAAAA,MAAAzB,eAAAA;AAAAA,IAAAA,IAA0D/X;AAE1D/C,WAAAA,EAAMiV,OAAQ,MAAA;AACZuP,MAAAA,GAAyB1J,GAAe4G,GAAYnF,CAAI;AAAA,IAAC,CAC1D,GAEDoI,IAAiBjD,GAAYC,CAAY,GAClC;AAAA,EAAI,GAEbjG,EACF,CACF,GACCvc,IAAA,CAACa,GAAQ2kB,CAAc,GAAC5lB,OAAAiB,GAAAjB,OAAA4lB,GAAA5lB,OAAAD,GAAAC,OAAAI,MAAAL,IAAAC,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,IAtB3BmW,EAAUpW,GAsBPK,CAAwB,GAEpB;AAAI;AC5Cb,MAAMylB,KAAuC;AAAA,EAC3C,GAAGC;AAAAA;AAAAA,EAEH9d,WAAW;AACb,GCoCM+d,KAAQ,CAACzL,IAAa0L,IAAUlB,CAAa,GAEtCmB,KAAiFA,CAAApc,GAAAqc,MAAA;AAAA,QAAAlmB,IAAAC,EAAA,EAAA,GAC5F;AAAA,IAAAkmB,cAAAA;AAAAA,IAAAC,OAAArmB;AAAAA,IAAAgK,YAAA3J;AAAAA,IAAAimB,aAAAA;AAAAA,EAAAA,IAAwExc,GAAlDuc,IAAArmB,MAAAW,SAAA,KAAAX,GAAegK,IAAA3J,MAAAM,SAAA,KAAAN,GACrC;AAAA,IAAAkmB,UAAAA;AAAAA,IAAAC,SAAAhmB;AAAAA,IAAAgf,UAAAA;AAAAA,IAAAiH,YAAA/lB;AAAAA,IAAAmlB,gBAAAA;AAAAA,EAAAA,IAAoF/b,GAAlE0c,IAAAhmB,MAAAG,SAAA2J,KAAA9J;AAAkB,MAAAI;AAAA,EAAAX,SAAAS,KAAYE,IAAAF,MAAAC,SAAA,CAAA,IAAAD,GAAeT,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAf,QAAAwmB,IAAA7lB;AAAe,MAAAC;AAAA,EAAAZ,EAAA,CAAA,MAAAmmB,KAAAnmB,SAAA+J,KAAA/J,EAAA,CAAA,MAAAumB,KAEzC3lB,IAAA;AAAA,IAAAuF,WACT;AAAA,IAAe4f,OAAAA;AAAAA,IAAAU,aAEbN;AAAAA,IAAYO,UACf3c;AAAAA,IAAUwc,SAAAA;AAAAA,IAAAA,OAAAvhB;AAAAA,EAAAA,GAGrBhF,OAAAmmB,GAAAnmB,OAAA+J,GAAA/J,OAAAumB,GAAAvmB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAPD,QAAA2mB,IAAsB/lB;AAOpB,MAAAC;AAAA,EAAAb,SAAAmmB,KAEqCtlB,IAAAmd,GAAiCmI,CAAY,GAACnmB,OAAAmmB,GAAAnmB,OAAAa,KAAAA,IAAAb,EAAA,CAAA;AAArF,QAAA0e,IAAwBkI,GAAe/lB,CAA8C;AAAE,MAAAE;AAAA,EAAAf,SAAAqmB,KACAtlB,IAAAslB,KACrF,gBAAA1a,EAAChB,GAAA,EAAe,WAAA,mBAAwB,OAAA,aAA0B,eAAA,QAAgB,UAAA,YAAe,KAAA,KAAI,UAAA;AAAA,IAAA;AAAA,IACrE,gBAAA7J,EAAC+lB,IAAA,EAAU,OAAA,aAAY,UAAA,KAAC;AAAA,IAAM;AAAA,EAAA,GAC9D,GACD7mB,OAAAqmB,GAAArmB,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAJD,QAAA8mB,IAAuF/lB;AAIrF,MAAAG;AAAA,EAAAlB,EAAA,EAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KAKIH,sBAAC6lB,IAAA,EAAa,GAAG/mB,QAAAkB,KAAAA,IAAAlB,EAAA,EAAA;AAAA,MAAAmB;AAAA,EAAAnB,EAAA,EAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KAEEF,sBAACrB,IAAA,EAAgB,WAAA,GAAA,CAAS,GAAGE,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA;AAAA,MAAAwB;AAAA,EAAAxB,UAAA8mB,KADhDtlB,sBAACwlB,IAAA,EACkB,iBAAA7lB,GACJ2lB,gBACEG,eAAAA,IAAoB,GACnCjnB,QAAA8mB,GAAA9mB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA,MAAAqL;AAAA,EAAArL,UAAAsmB,KACFjb,sBAAC6b,IAAA,EACC,2BAC6B,iCACnB,UAAAT,CAAAA,OAAA;AACRA,IAAAA,GAAWU,KAAM,MAAA;AAEf,YAAAhK,KAAaiK,GAAAA,GACbC,KAAgBnK,GAAgBC,EAAI;AAEpC,MAAIkK,OAAY3I,EAAeI,YAC7BJ,EAAeI,UAAWuI,IAC1Bf,IAAWe,IAASZ,GAAWa,QAAS;AAAA,IACzC,CACF;AAAA,EAAC,GACH,GACDtnB,QAAAsmB,GAAAtmB,QAAAqL,KAAAA,IAAArL,EAAA,EAAA;AAAA,MAAA0L;AAAA,EAAA1L,UAAAkmB,KACFxa,IAAA,gBAAA5K,EAAC0d,IAAA,EAA+B0H,WAAAA,GAAsBxH,iBAAAA,GAAe,GAAI1e,QAAAkmB,GAAAlmB,QAAA0L,KAAAA,IAAA1L,EAAA,EAAA;AAAA,MAAAkiB;AAAA,EAAAliB,UAAA+J,KACzEmY,sBAACvL,MAAiC5M,YAAAA,EAAAA,CAAU,GAAI/J,QAAA+J,GAAA/J,QAAAkiB,KAAAA,IAAAliB,EAAA,EAAA;AAAA,MAAAunB;AAAA,EAAAvnB,EAAA,EAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KAChDkmB,sBAACtK,IAAA,EAAa,GAAGjd,QAAAunB,KAAAA,IAAAvnB,EAAA,EAAA;AAAA,MAAAwnB;AAAA,EAAAxnB,UAAAuf,KACjBiI,sBAAClI,MAAiCC,UAAAA,EAAAA,CAAQ,GAAIvf,QAAAuf,GAAAvf,QAAAwnB,KAAAA,IAAAxnB,EAAA,EAAA;AAAA,MAAAynB;AAAA,EAAAznB,UAAAwmB,KAC9CiB,sBAAC5D,IAAA,EAA2B2C,OAAAA,EAAAA,CAAU,GAAIxmB,QAAAwmB,GAAAxmB,QAAAynB,KAAAA,IAAAznB,EAAA,EAAA;AAAA,MAAA0nB;AAAA,EAAA1nB,UAAA4lB,KAC1C8B,sBAAC/B,MAAgCC,gBAAAA,EAAAA,CAAc,GAAI5lB,QAAA4lB,GAAA5lB,QAAA0nB,KAAAA,IAAA1nB,EAAA,EAAA;AAAA,MAAA2nB;AAAA,EAAA3nB,UAAAomB,KAClDuB,IAAAvB,IAAQ,gBAAAtlB,EAAC+V,IAAA,CAAA,CAAc,IAAvB,IAA+B7W,QAAAomB,GAAApmB,QAAA2nB,KAAAA,IAAA3nB,EAAA,EAAA;AAAA,MAAA4nB;AAAA,SAAA5nB,EAAA,EAAA,MAAA2mB,KAAA3mB,EAAA,EAAA,MAAAwB,KAAAxB,UAAAqL,KAAArL,EAAA,EAAA,MAAA0L,KAAA1L,EAAA,EAAA,MAAAkiB,KAAAliB,EAAA,EAAA,MAAAwnB,KAAAxnB,EAAA,EAAA,MAAAynB,KAAAznB,EAAA,EAAA,MAAA0nB,KAAA1nB,UAAA2nB,KA9BpCC,IAAA,gBAAA9mB,EAACogB,IAAA,EAAe,WAAA,UAAwB,gBAAA,iBAAsB,OAAA,QAAgB,UAAA,YAC5E,UAAA,gBAAAvV,EAACkc,IAAA,EAA+BlB,eAAAA,GAC9BzlB,UAAAA;AAAAA,IAAAA;AAAAA,IACAM;AAAAA,IAKA6J;AAAAA,IAgBAK;AAAAA,IACAwW;AAAAA,IACAqF;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACCC;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF,GAAO3nB,QAAA2mB,GAAA3mB,QAAAwB,GAAAxB,QAAAqL,GAAArL,QAAA0L,GAAA1L,QAAAkiB,GAAAliB,QAAAwnB,GAAAxnB,QAAAynB,GAAAznB,QAAA0nB,GAAA1nB,QAAA2nB,GAAA3nB,QAAA4nB,KAAAA,IAAA5nB,EAAA,EAAA,GAhCP4nB;AAgCO,GAIEE,KAAeC,GAAW9B,EAAgB;AAzDuC,SAAA5b,KAAA;AAAA;ACtC9F,SAAe2d,GAAAjoB,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAA2B;AAAA,IAAA8E,OAAAA;AAAAA,IAAAkjB,UAAAA;AAAAA,EAAAA,IAAAloB,GACxC,CAAAkB,CAAA,IAAiBgV,EAAAA;AAA4B,MAAA7V,GAAAG;AAAA,SAAAP,EAAA,CAAA,MAAAiB,KAAAjB,SAAAioB,KAAAjoB,EAAA,CAAA,MAAA+E,KAEnC3E,IAAAA,MAAA;AACR,IAAKa,KAILA,EAAMiV,OAAQ,MAAM+R,EAASljB,CAAK,GAAG;AAAA,MAAA8B,KAAO;AAAA,IAAA,CAAiB;AAAA,EAAC,GAC7DtG,KAACwE,GAAO9D,GAAQgnB,CAAQ,GAACjoB,OAAAiB,GAAAjB,OAAAioB,GAAAjoB,OAAA+E,GAAA/E,OAAAI,GAAAJ,OAAAO,MAAAH,IAAAJ,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,IAN5BmW,EAAU/V,GAMPG,CAAyB,GAErB;AAAI;ACEN,MAAMmB,UAA0BC,EAA4B;AAAA,EACjEC;AAAAA,EACAC;AAAAA,EAEA,OAAOC,UAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,OAAOC,MAAMC,GAA4C;AACvD,WAAO,IAAIN,EAAkBM,EAAKJ,QAAQI,EAAKH,SAASG,EAAKC,KAAK;AAAA,EACpE;AAAA,EAEAC,YAAYC,GAAcC,GAAgBC,GAAe;AACvD,UAAMA,CAAG,GACT,KAAKT,SAASO,GACd,KAAKN,UAAUO;AAAAA,EACjB;AAAA,EAEAE,UAAUC,GAAuBC,GAAqC;AACpE,WAAOC,SAASC,cAAc,MAAM;AAAA,EACtC;AAAA,EAEAC,UAAUC,GAA8BC,GAAmBN,GAAgC;AACzF,WAAO;AAAA,EACT;AAAA,EAEAO,iBAAyB;AAEvB,WAAO,WADO,KAAKjB,WAAW,KAAKD,MACZ;AAAA,EACzB;AAAA,EAEAmB,aAA0C;AACxC,WAAO;AAAA,MACLC,MAAMtB,EAAkBI,QAAAA;AAAAA,MACxBmB,SAAS;AAAA,MACTd,MAAM,KAAKP;AAAAA,MACXQ,OAAO,KAAKP;AAAAA,IAAAA;AAAAA,EAEhB;AAAA,EAEA,OAAOqB,WAAWC,GAAgE;AAChF,WAAOC,GAAyBD,EAAehB,MAAMgB,EAAef,KAAK;AAAA,EAC3E;AAAA,EAEAiB,SAASb,GAAwBD,GAAqC;AACpE,UAAMJ,IAAO,KAAKP,QAEZQ,IADWD,EAAKmB,MAAM,GAAG,EAAEC,IAAAA,KACP,WACpBC,IAAa,gBAAgBC,KAAKtB,CAAI,GACtCuB,IAAgB,kBAAkBD,KAAKtB,CAAI;AAEjD,WACE,gBAAArB,EAACE,GAAA,EAAI,OAAM,eAAc,SAAQ,gBAC/B,UAAA,gBAAAF,EAAC6C,IAAA,EACC,UAAUvB,GACV,UAAU,MAAM;AACd,UAAIoB;AACFI,eAAOC,KAAK1B,GAAM,UAAU,qBAAqB;AAAA,eACxCuB,GAAe;AACxB,cAAMI,IAAc3B,EAAK4B,QAAQ,mBAAmB,EAAE,GAChDC,IAAQ,IAAIC,YAAY,wBAAwB;AAAA,UAAEC,QAAQJ;AAAAA,QAAAA,CAAa;AAC7EF,eAAOO,cAAcH,CAAK;AAAA,MAC5B;AACEJ,eAAOQ,SAASC,OAAOlC,CAAI;AAAA,IAE/B,GAAE,EAAA,CAEN;AAAA,EAEJ;AACF;AAEO,SAASiB,GAAyBjB,GAAcC,GAAmC;AACxF,SAAO,IAAIV,EAAkBS,GAAMC,CAAK;AAC1C;AAEO,SAASkC,GAAqBtC,GAAiE;AACpG,SAAOA,aAAgBN;AACzB;AC/FA,MAAM6C,KAAc,4CAEPC,KAAmD;AAAA,EAC9DC,cAAc,CAAC/C,CAAiB;AAAA,EAChCgD,QAAS1C,CAAAA,MAAS;AAChB,QAAIsC,GAAqBtC,CAAI,GAAG;AAC9B,YAAMG,IAAQH,EAA2BJ,QACnCQ,IAASJ,EAA2BH,WAAWM;AAErD,aAAIC,IACK,WAAWA,CAAK,SAElB,WAAWD,CAAI;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EACAwC,QAAQJ;AAAAA,EACRK,cAAcL;AAAAA,EACdR,SAASA,CAACc,GAAUC,MAAU;AAC5B,UAAMC,IAAQD,EAAM,CAAC,GAGf3C,IADe,qBAAqBsB,KAAKsB,CAAK,IACxBA,IAAQ,IAAIA,CAAK,IACvC3C,IAAQ2C;AACdF,IAAAA,EAASd,QAAQX,GAAyBjB,GAAMC,CAAK,CAAC;AAAA,EACxD;AAAA,EACAY,MAAM;AACR,GCWMklB,KAAe,CAAC,GAAG9S,IAAwB5Q,EAA0B;AAEpE,SAAA2jB,GAAAte,GAAA;AAAA,QAAA7J,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAmmB,OAAArmB;AAAAA,IAAAomB,cAAA/lB;AAAAA,IAAAD,WAAAI;AAAAA,IAAAwJ,YAAAtJ;AAAAA,IAAA6lB,UAAAA;AAAAA,EAAAA,IAA8Fzc,GAAtFuc,IAAArmB,MAAAW,SAAA,KAAAX,GAAeomB,IAAA/lB,MAAAM,SAAA,KAAAN,GAAmBD,IAAAI,MAAAG,SAAA,KAAAH,GAAmBwJ,IAAAtJ,MAAAC,SAAA,KAAAD;AAAkB,MAAAE;AAAA,EAAAX,SAAAmmB,KACjDxlB,IAAAmY,GAAiBqN,CAAY,GAACnmB,OAAAmmB,GAAAnmB,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAA5D,QAAA;AAAA,IAAA+Y,aAAAA;AAAAA,IAAAC,MAAAA;AAAAA,EAAAA,IAA8BrY,GAC9BynB,IAA2Bre,KAAc4T,EAAQ2I;AAAU,MAAA1lB;AAAA,EAAAZ,EAAA,CAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KAIlDT,IAAA,CACLkU,IACA5B,IACAuB,IACA3I,GACAiJ,IACAC,IACAC,IACAC,IACAC,IACA7E,GACAnD,GACA4C,GACArO,CAAiB,GAClB1B,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAA,MAAAa;AAAA,EAAAb,SAAAgZ,KACYnY,IAAAA,MACJwnB,GAA2BxP,GAAiCG,CAAI,GAAGkP,IAAcxnB,QAAW,EAAK,GACzGV,OAAAgZ,GAAAhZ,OAAAa,KAAAA,IAAAb,EAAA,CAAA;AAAA,MAAAe;AAAA,EAAAf,EAAA,CAAA,MAAA+J,KAAA/J,SAAAa,KAnBmBE,IAAA;AAAA,IAAAoF,WACT;AAAA,IAAc4f,OAClBnlB;AAAAA,IAcN6lB,aACY5lB;AAAAA,IAEZ0lB,SACQlc;AAAAA,IAAsCqc,UACrC3c;AAAAA,IAAU/E,OAAAA;AAAAA,EAAAA,GAErBhF,OAAA+J,GAAA/J,OAAAa,GAAAb,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAvBD,QAAA2mB,IAAsB5lB;AAuBpB,MAAAG;AAAA,EAAAlB,SAAAgZ,KAeI9X,IAAA,gBAAAJ,EAACknB,IAAA,EACQhP,OAAAA,GACG,UAAA5N,IAET,GACDpL,OAAAgZ,GAAAhZ,OAAAkB,KAAAA,IAAAlB,EAAA,CAAA;AAAA,MAAAwB,GAAA6J,GAAAlK;AAAA,EAAAnB,EAAA,EAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KACFF,sBAACmnB,IAAA,EAAU,GACX9mB,sBAAC+mB,IAAA,EAAoB,QAAA,GAAA,CAAM,GAC3Bld,sBAACmd,IAAA,EAAU,GAAGxoB,QAAAwB,GAAAxB,QAAAqL,GAAArL,QAAAmB,MAAAK,IAAAxB,EAAA,EAAA,GAAAqL,IAAArL,EAAA,EAAA,GAAAmB,IAAAnB,EAAA,EAAA;AAAA,MAAA0L;AAAA,EAAA1L,UAAA+J,KACb2B,IAAA3B,IAAa,gBAAAjJ,EAAC2nB,IAAA,EAAgC,WAAA,GAAC,IAA/C,MAA0DzoB,QAAA+J,GAAA/J,QAAA0L,KAAAA,IAAA1L,EAAA,EAAA;AAAA,MAAAkiB,GAAAqF,GAAAC,GAAAC;AAAA,EAAAznB,EAAA,EAAA,MAAAoB,uBAAAC,IAAA,2BAAA,KAC3D6gB,sBAACwG,IAAA,EAAoB,GACrBnB,sBAAChR,IAAA,EAAsB,GACvBiR,sBAACxR,IAAA,EAAsB,GACvByR,sBAAC3X,IAAA,EAAc,GAAG9P,QAAAkiB,GAAAliB,QAAAunB,GAAAvnB,QAAAwnB,GAAAxnB,QAAAynB,MAAAvF,IAAAliB,EAAA,EAAA,GAAAunB,IAAAvnB,EAAA,EAAA,GAAAwnB,IAAAxnB,EAAA,EAAA,GAAAynB,IAAAznB,EAAA,EAAA;AAAA,MAAA0nB;AAAA,EAAA1nB,UAAAG,KAClBunB,IAAA,gBAAA5mB,EAACkmB,IAAA,EACkB,mCAAClnB,IAAA,EAA2BK,WAAAA,GAAW,eAAA,GAAA,CAAa,GACtD8mB,eAAAA,GAAAA,CAAoB,GACnCjnB,QAAAG,GAAAH,QAAA0nB,KAAAA,IAAA1nB,EAAA,EAAA;AAAA,MAAA2nB;AAAA,EAAA3nB,EAAA,EAAA,MAAA+Y,KAAA/Y,UAAAsmB,KAAAtmB,EAAA,EAAA,MAAAooB,KACDT,IAAAS,sBACElB,IAAA,EACC,uBAAA,IAC6B,6BAAA,IACnB,UAAAT,CAAAA,MAAA;AACRA,IAAAA,EAAWU,KAAM,MAAA;AACf,YAAAhK,IAAaiK,GAAAA,GACbuB,KAAqBC,GAAyBV,IAAc/K,CAAI;AAChEmJ,MAAAA,IAAWvN,IAAc4P,EAAY;AAAA,IAAC,CACvC;AAAA,EAAC,GACH,IAVJ,MAYO3oB,QAAA+Y,GAAA/Y,QAAAsmB,GAAAtmB,QAAAooB,GAAApoB,QAAA2nB,KAAAA,IAAA3nB,EAAA,EAAA;AAAA,MAAA4nB;AAAA,EAAA5nB,UAAA+J,KACR6d,sBAACjR,MAAiC5M,YAAAA,EAAAA,CAAU,GAAI/J,QAAA+J,GAAA/J,QAAA4nB,KAAAA,IAAA5nB,EAAA,EAAA;AAAA,MAAA6oB;AAAA,EAAA7oB,UAAAomB,KAC/CyC,IAAAzC,uBAAUvP,IAAA,CAAA,CAAc,GAAG7W,QAAAomB,GAAApmB,QAAA6oB,KAAAA,IAAA7oB,EAAA,EAAA;AAAA,MAAA8oB;AAAA,SAAA9oB,EAAA,EAAA,MAAA2mB,KAAA3mB,EAAA,EAAA,MAAA0L,KAAA1L,EAAA,EAAA,MAAA0nB,KAAA1nB,UAAA2nB,KAAA3nB,EAAA,EAAA,MAAA4nB,KAAA5nB,EAAA,EAAA,MAAA6oB,KAAA7oB,EAAA,EAAA,MAAAkB,KA5ChC4nB,sBAAC5H,MACW,WAAA,aACQ,qBAAA,QACH,gBAAA,iBACT,OAAA,QACG,UAAA,QACF,QAAA,QACE,UAAA,YACC,WAAA,UACD,UAAA,UAET,UAAA,gBAAAvV,EAACkc,IAAA,EAA+BlB,eAAAA,GAC9BzlB,UAAAA;AAAAA,IAAAA;AAAAA,IAMAC;AAAAA,IACAK;AAAAA,IACA6J;AAAAA,IACCK;AAAAA,IACDwW;AAAAA,IACAqF;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IAICC;AAAAA,IAaDC;AAAAA,IACCiB;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF,GAAO7oB,QAAA2mB,GAAA3mB,QAAA0L,GAAA1L,QAAA0nB,GAAA1nB,QAAA2nB,GAAA3nB,QAAA4nB,GAAA5nB,QAAA6oB,GAAA7oB,QAAAkB,GAAAlB,QAAA8oB,KAAAA,IAAA9oB,EAAA,EAAA,GA9CP8oB;AA8CO;AA7EJ,SAAA1d,GAAArG,GAAA;AA8CKsjB,EAAAA,GAA2BxP,GAAiC9T,CAAK,GAAGmjB,IAAcxnB,QAAW,EAAK;AAAC;AA9CxG,SAAA2J,GAAA0e,GAAA;AAAA,SAyBwBC,QAAOD,MAAOA,CAAK;AAAC;"}
|