@deephaven/iris-grid 1.28.0 → 1.29.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/ColumnStatistics.js +1 -1
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/IrisGrid.d.ts +28 -4
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +185 -113
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +5 -4
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +36 -29
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridModel.d.ts +2 -2
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +2 -2
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridSelectionUtils.d.ts +26 -0
- package/dist/IrisGridSelectionUtils.d.ts.map +1 -0
- package/dist/IrisGridSelectionUtils.js +84 -0
- package/dist/IrisGridSelectionUtils.js.map +1 -0
- package/dist/IrisGridTableModel.d.ts +4 -4
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +8 -8
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +25 -3
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +283 -79
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +2 -0
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +11 -0
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/KeyedGridModel.d.ts +63 -0
- package/dist/KeyedGridModel.d.ts.map +1 -0
- package/dist/KeyedGridModel.js +12 -0
- package/dist/KeyedGridModel.js.map +1 -0
- package/dist/KeyedSelection.d.ts +194 -0
- package/dist/KeyedSelection.d.ts.map +1 -0
- package/dist/KeyedSelection.js +699 -0
- package/dist/KeyedSelection.js.map +1 -0
- package/dist/LazyIrisGrid.d.ts +1 -0
- package/dist/LazyIrisGrid.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +8 -6
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +94 -69
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +7 -4
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +86 -38
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/package.json +9 -9
package/dist/IrisGrid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","SlideTransition","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","isDeletableGridModel","isExpandableColumnGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","isSortDirection","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","CopyCellKeyHandler","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridCopyCellMouseHandler","IrisGridDataSelectMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","DEFAULT_REGISTRY","IrisGridContext","IrisGridModel","IrisGridUtils","CrossColumnSearch","isPartitionedGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","PluginTableOptionsErrorBoundary","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","isMissingPartitionError","NoPastePermissionModal","isColumnHeaderGroup","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","IrisGrid","constructor","props","_model$layoutHints","_model$columns$0$name","_model$columns$","_defineProperty","createRef","column","handleAdvancedMenuOpened","bind","max","handleAdvancedFilterToggleMaximize","model","advancedFilterOptions","sortDirection","formatter","isMaximized","onToggleMaximize","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isOrganizeColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","push","type","CHART_BUILDER","title","icon","order","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","GOTO","items","transformTableOptions","transformedItems","err","error","byType","Map","forEach","item","set","String","sortedItems","values","map","index","sort","a","b","_a$item$order","_b$item$order","Infinity","_ref","metricCalculator","userColumnWidths","getHiddenColumns","initialColumnWidths","hiddenColumns","columns","idx","_columns$idx","name","filter","n","aggregationMap","_ref2","operation","selected","invert","getOperationColumnNames","getOperationMap","getOperationOrder","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","aggregationSettings","getModelRollupConfig","getModelTotalsConfig","theme","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","quickFilters","advancedFilters","sorts","reverse","rollupConfig","isMenuShown","customFilters","searchFilter","getFiltersFromFilterMap","contextTheme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","rowFooterWidth","state","resetCalculatedColumnWidths","resetCalculatedRowHeights","densityTheme","compact","spacious","_objectSpread","autoSelectRow","keyHandlers","mouseHandlersProp","mouseHandlers","handler","rendererProp","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","length","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","loadingSpinnerShown","isViewportPending","startLoading","loadingCancelShown","loadingBlocksGrid","leading","trailing","conditionalFormatPreview","conditionalFormatError","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","textAlign","isMacPlatform","hoverTooltipProps","hoverDisplayValue","className","input","gotoValue","gotoValueManuallyChanged","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handlePending","handlePendingCleared","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleTableChanged","handleSchemaChanged","handleViewChanged","handleFormatSelection","handleColumnAlignmentChange","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handleViewportUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionChange","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","handleCloseNoPastePermissionModal","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","makeQuickFilter","setFilterMap","handleFrozenColumnsChanged","grid","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","showExtraGroupColumn","tableSaver","crossColumnRef","isAnimating","filterInputRef","gotoRowRef","isCopying","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","size","discardPending","catch","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","columnAlignmentMap","isSelectingPartition","partitions","partitionConfig","movedColumnsProp","movedRowsProp","movedRows","userColumnWidthsByName","userRowHeights","selectDistinctColumns","canCopy","frozenColumns","columnHeaderGroups","getMetricCalculator","initialMovedColumns","initialMovedRows","layoutHints","getColumnIndexByName","lastMetricCalculatorFactory","searchColumns","focusedFilterBarColumn","metrics","mode","shownAdvancedFilter","maximizedAdvancedFilter","hoverAdvancedFilter","customColumns","selectedRanges","copyOperation","loadingText","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","initState","startListening","componentDidUpdate","prevProps","prevState","_this$props","inputFilters","settings","isQuickFiltersControlled","isSortsControlled","stopListening","maybeRebuildMetricCalculator","changedInputFilters","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","isChanged","applyInputFilters","resetRanges","resetColumnSelection","updateFormatterSettings","updateSorts","updateQuickFilters","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","isAggEditType","option","AGGREGATION_EDIT","some","removeEmptyAggregations","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","showViewportLoading","gridWrapper","_this$grid$canvasWrap","_this$grid","canvasWrapper","current","getKeyHandlers","getCachedKeyHandlers","getMetricState","_this$grid2","gridMetricState","_this$state","_this$props2","getCachedStateOverride","getTheme","renderer","getCachedRenderer","getMouseHandlers","getCachedMouseHandlers","getValueForCell","columnIndex","rowIndex","rawValue","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","_ref3","_this$props3","_this$context","context","contextDensity","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","replaceExisting","_this$state2","newAdvancedFilters","newQuickFilters","didAdvancedFiltersChange","didQuickFiltersChange","_ref4","findIndex","_ref5","columnName","columnType","delete","applyQuickFilter","requestQuickFiltersChange","concat","trim","quickFilter","setAdvancedFilterMap","setAdvancedFilter","_ref6","setQuickFilter","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref7","filterList","find","c","combinedText","combineFiltersFromList","removeColumnFilter","modelRange","clearRange","Array","isArray","_this$state3","_","removeQuickFilter","_this$state4","hasOtherFilters","clearAllAggregations","setValue","rebuildFilters","_this$state5","key","makeAdvancedFilter","setFilters","_ref8","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","_settings$showExtraGr","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","isShowExtraGroupColumnChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","_this$props4","applyInputFiltersOnInit","reverseType","inputFiltersWithValues","REVERSE_TYPE","POST_SORT","_this","_asyncToGenerator","initializePartitionConfig","isCanceled","_this2","keyTable","add","partitionKeysTable","resolved","close","desc","applySort","setViewport","addEventListener","Table","EVENT_UPDATED","event","data","detail","rows","stopLoading","row","newPartition","isPartitionAwareSourceTable","e","selectPartitionKeyFromTable","getRowDataMap","partitionColumnSet","partitionColumns","entries","_ref9","_ref0","_slicedToArray","has","_ref1","_ref10","columnData","copyCell","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","_this$props5","_this$state6","getUserColumnWidths","boundedRanges","columnCount","rowCount","_ref11","_ref11$resetRanges","_ref11$loadingCancelS","_ref11$loadingBlocksG","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","rollback","_this$lastLoadedConfi","canRollback","isEmptyConfig","EVENT","UPDATED","REQUEST_FAILED","PENDING","PENDING_CLEARED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","TABLE_CHANGED","SCHEMA_CHANGED","removeEventListener","focus","_this$grid3","focusFilterBar","isFilterable","_this$state7","metricState","scrollColumn","getScrollLeftForColumn","_this$grid4","left","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid5","_this$state8","setColumnWidth","freezeColumnByColumnName","_this$state9","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","_this$state0","frontColumns","toggleExpandColumn","expandDescendants","hasExpandableColumns","setColumnExpanded","isColumnExpanded","expandAllColumns","isExpandAllColumnsAvailable","collapseAllColumns","modelIndexes","isVisible","_this$grid6","_this$state1","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","resetAllColumnWidths","_this$grid7","updateCanvas","prevConfig","onError","_this$state10","loadingMessage","showAllColumns","_this$grid8","_entries$i","columnWidth","updateMetrics","_this$grid9","toggleSort","addToExisting","info","isColumnSortable","currentSorts","toggleSortForColumn","requestSortsChange","_this$grid0","_this$props6","onSortsChange","_this$grid1","currentQuickFilters","_this$props7","onQuickFiltersChange","sortColumn","direction","none","isAbs","_this$grid10","isReversible","focusIndex","isTextType","_this$grid11","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","_this$props8","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid12","_this$grid13","_this$grid14","_this$gotoRowRef$curr","cursorRow","cursorColumn","_this3","_document","Error","containsGridCellInputField","document","activeElement","classList","contains","_this3$grid","newPendingSavePromise","then","_this4","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","_this5","groupedColumns","_loop","isExpandable","isRowExpandable","isGrouped","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid15","_ref12","_this$filterInputRef","_this$state11","_this$filterInputRef2","_this$props9","onCreateChart","warn","_this$state12","setGridFocus","defocusInput","_this$grid16","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","alignment","_ref13","_ref13$columnAlignmen","newColumnAlignmentMap","stopPropagation","_ref14","newOptions","pop","_ref15","_ref16","_this$state13","_errorMessage","errorMessage","_ref17","_ref18","_this$grid17","_this$state14","_this$grid$state","_this$grid18","_ref19","_ref19$selectionEndRo","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","consolidate","startRow","onChangeApplied","prevColumnHeaderGroups","every","group","isValid","parseColumnHeaderGroups","groups","_this$grid19","tooltip","startTimer","_this$state15","CONDITIONAL_FORMATTING_EDIT","_this$state16","_this$state17","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_model$layoutHints4","next","_this$grid20","handleResizeColumn","_this$grid21","_this$state18","contentWidth","contentColumnWidths","userWidths","setCalculatedColumnWidth","handleResizeAllColumns","_this$grid22","_this$state19","allColumns","allColumnWidths","visibleColumns","_ref20","_ref21","width","_ref22","_ref23","contentWidths","manualColumns","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","isRollupProhibited","join","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref24","_rollupConfig$columns5","_rollupConfig$columns6","getUserColumnWidthsByName","resetColumnWidthByName","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref25","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","_this6$state","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this6$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","_DateUtils$parseDateR","parseDateRange","_DateUtils$parseDateR2","startDate","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","isDeletable","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","_this$grid23","handleOpenNoPastePermissionModal","_this$gridWrapper2","_this$state20","gridRect","popperMargin","columnHeaderHeight","allColumnXs","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid24","_this$grid25","_this$grid26","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid27","_this$state21","prevColumnName","prevColumn","convertValueToText","getFilterBarInput","_this$grid28","filterBoxCoordinates","getFilterInputCoordinates","debounceMs","minDebounce","round","maxDebounce","fieldWidth","fieldHeight","minWidth","advancedFilter","isBarFiltered","showAdvancedFilterButton","getAdvancedFilterButtonCoordinates","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","render","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid29","_openOptions","_this$props0","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","cellInputRendererRegistry","_this$state22","singleColumnHeaderHeight","getCachedFilter","stateOverride","focusField","loadingElement","loadingStatus","show","onClick","transform","gridY","columnTooltip","_this$tooltip2","filterBar","_loop2","buttonCoordinates","isFilterSet","isFilterVisible","element","hidden","kind","_this7$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","gridX","_loop3","xColumnHeader","xFilterBar","filterBarHeight","_ref26","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","getAdvancedMenuToggleMaximizeHandler","defaultOptionItems","getCachedOptionItems","getCachedTransformedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onFrozenColumnsChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","availablePlacements","onEdit","isDownloading","onDownload","onDownloadStart","PluginPage","configPage","itemType","viewState","getCachedViewState","getCachedHiddenColumnNames","onBack","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","nodeRef","slideTransitionRef","bottomTransitionRef","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","actions","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","_len","args","_key"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n type ContextAction,\n type PopperOptions,\n type ReferenceObject,\n Button,\n ContextActionUtils,\n type ResolvableContextAction,\n SlideTransition,\n} from '@deephaven/components';\nimport {\n Grid,\n type GridMetrics,\n type GridMouseHandler,\n GridRange,\n type GridRangeIndex,\n GridUtils,\n type KeyHandler,\n type ModelIndex,\n type ModelSizeMap,\n type MoveOperation,\n type VisibleIndex,\n type GridState,\n isEditableGridModel,\n type BoundedAxisRange,\n isExpandableGridModel,\n isDeletableGridModel,\n isExpandableColumnGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n type FormattingRule,\n type ReverseType,\n type RowDataMap,\n type SortDirection,\n type DateTimeColumnFormatterOptions,\n type TableColumnFormat,\n type Settings,\n isSortDirection,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n type EventT,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n type TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n type FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { type CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n CopyCellKeyHandler,\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridCopyCellMouseHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridPartitionedTableMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator, {\n type IrisGridMetricState,\n} from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport {\n createDefaultIrisGridTheme,\n type IrisGridThemeType,\n} from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n DownloadServiceWorkerUtils,\n type TableOptionsTransform,\n} from './sidebar';\nimport { DEFAULT_REGISTRY, IrisGridContext } from './IrisGridContextProvider';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport {\n isPartitionedGridModel,\n type PartitionConfig,\n type PartitionedGridModel,\n} from './PartitionedGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport PluginTableOptionsErrorBoundary from './sidebar/PluginTableOptionsErrorBoundary';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n type AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { type GotoRowElement } from './GotoRow';\nimport {\n type Aggregation,\n type AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { type ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport type AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type UIRollupConfig } from './sidebar/RollupRows';\nimport {\n type Action,\n type AdvancedFilterOptions,\n type ColumnName,\n type InputFilter,\n type IrisGridStateOverride,\n type IrisGridViewState,\n type OperationMap,\n type OptionItem,\n type PendingDataErrorMap,\n type PendingDataMap,\n type PendingOperationDetail,\n type QuickFilterMap,\n type ReadonlyAdvancedFilterMap,\n type ReadonlyAggregationMap,\n type ReadonlyQuickFilterMap,\n type UITotalsTableConfig,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { isMissingPartitionError } from './MissingPartitionError';\nimport { NoPastePermissionModal } from './NoPastePermissionModal';\nimport { isColumnHeaderGroup } from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGrid');\n\nconst VIEWPORT_LOADING_DELAY = 500;\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nexport type FilterData = {\n operator?: FilterTypeValue; // Default behavior treats no operator as equals\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string | null;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: DhType.Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow?: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport type MouseHandlersProp = readonly (\n | GridMouseHandler\n | ((irisGrid: IrisGrid) => GridMouseHandler)\n)[];\n\nexport type GetMetricCalculatorType = (\n ...args: ConstructorParameters<typeof IrisGridMetricCalculator>\n) => IrisGridMetricCalculator;\n\nexport interface IrisGridProps {\n children?: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: ReadonlyMap<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: ReadonlyMap<ColumnName, FormattingRule>;\n columnAlignmentMap: ReadonlyMap<string, CanvasTextAlign>;\n model: IrisGridModel;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly DhType.FilterCondition[];\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: DhType.Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: RowDataMap) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n\n /**\n * Pure transform over the default Table Options menu list. Receives\n * the built-in items (already filtered by model availability) and\n * returns the items to actually render. Use it to add, hide,\n * relabel, reorder, or replace entries.\n *\n * Items returned with a `configPage` are rendered by the\n * `default` case of the page switch and isolated inside a small\n * error boundary; items without a `configPage` MUST have a `type`\n * matching an existing `OptionType` enum value, otherwise the\n * existing case arms can't render them.\n *\n * Called inside memoization; the function should be referentially\n * stable and side-effect-free. A throwing transform is logged once\n * and treated as identity for that render.\n */\n transformTableOptions?: TableOptionsTransform;\n\n /** @deprecated use `partitionConfig` instead */\n partitions?: (string | null)[];\n partitionConfig?: PartitionConfig;\n sorts: readonly SortDescriptor[];\n isSortsControlled: boolean;\n onSortsChange?: (sorts: readonly SortDescriptor[]) => void;\n\n /** @deprecated use `reverse` instead */\n reverseType?: ReverseType;\n reverse: boolean;\n quickFilters: ReadonlyQuickFilterMap | null;\n isQuickFiltersControlled: boolean;\n onQuickFiltersChange?: (quickFilters: ReadonlyQuickFilterMap) => void;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n /**\n * @deprecated Pass `userColumnWidthsByName` instead. The by-index map is\n * lossy across model swaps because column indices change when the model\n * is replaced (e.g. when applying or removing a rollup). Kept for\n * back-compat with consumers that have not migrated.\n */\n userColumnWidths: ReadonlyMap<ModelIndex, number>;\n /**\n * Map of user-set column widths keyed by column name. Source of truth\n * for hidden/manually-sized columns across model swaps and persistence\n * boundaries. Takes precedence over `userColumnWidths` when both are\n * provided.\n */\n userColumnWidthsByName?: ReadonlyMap<ColumnName, number>;\n userRowHeights: ReadonlyMap<ModelIndex, number>;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator?: (value: DhType.Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n copyCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme?: Partial<IrisGridThemeType> & Record<string, unknown>;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // Optional key and mouse handlers\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: MouseHandlersProp;\n\n // Pass in a custom renderer to the grid for advanced use cases\n renderer?: IrisGridRenderer;\n\n density?: 'compact' | 'regular' | 'spacious';\n\n getMetricCalculator: GetMetricCalculatorType;\n}\n\n/**\n * The subset of `IrisGridProps` that overrides how the grid presents its\n * model: theme, canvas renderer, extra mouse handlers, and the metric\n * calculator factory. Hosts that render `<IrisGrid>` on behalf of a plugin\n * (e.g. `GridWidgetPlugin`) accept this as a single passthrough bag so they\n * don't need to know each view concern by name, and plugins build it from\n * their own hooks. Kept as a `Pick` (not `Partial<IrisGridProps>`) so it can\n * never clobber structural props like `model` or `ref`.\n */\nexport type IrisGridViewProps = Pick<\n IrisGridProps,\n 'theme' | 'renderer' | 'mouseHandlers' | 'getMetricCalculator'\n>;\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n\n partitionConfig?: PartitionConfig;\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n maximizedAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly SortDescriptor[];\n reverse: boolean;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n loadingCancelShown: boolean;\n loadingBlocksGrid: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n conditionalFormatError: string | null;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: DhType.FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n showNoPastePermissionModal: boolean;\n noPastePermissionError: string;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n hoverTooltipProps: CSSProperties | null;\n hoverDisplayValue: ReactNode;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValueManuallyChanged: boolean;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nclass IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static contextType = IrisGridContext;\n\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n declare context: React.ContextType<typeof IrisGridContext>;\n\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n columnAlignmentMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n isQuickFiltersControlled: false,\n onQuickFiltersChange: undefined,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n isSortsControlled: false,\n onSortsChange: undefined,\n reverse: false,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userColumnWidthsByName: undefined,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnAllowedCursor: 'linker',\n columnNotAllowedCursor: 'linker-not-allowed',\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n formatter: EMPTY_ARRAY,\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: undefined,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY,\n getMetricCalculator: (\n ...args: ConstructorParameters<typeof IrisGridMetricCalculator>\n ): IrisGridMetricCalculator => new IrisGridMetricCalculator(...args),\n } satisfies Partial<IrisGridProps>;\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedFilterToggleMaximize =\n this.handleAdvancedFilterToggleMaximize.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handlePending = this.handlePending.bind(this);\n this.handlePendingCleared = this.handlePendingCleared.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleSchemaChanged = this.handleSchemaChanged.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleColumnAlignmentChange =\n this.handleColumnAlignmentChange.bind(this);\n this.handleConditionalFormatCreate =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.handleCloseNoPastePermissionModal =\n this.handleCloseNoPastePermissionModal.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.makeQuickFilter = this.makeQuickFilter.bind(this);\n this.setFilterMap = this.setFilterMap.bind(this);\n this.handleFrozenColumnsChanged =\n this.handleFrozenColumnsChanged.bind(this);\n\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n this.showEmptyStrings = true;\n this.showNullStrings = true;\n this.showExtraGroupColumn = true;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\n\n this.gotoRowRef = React.createRef();\n\n this.isCopying = false;\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig,\n userColumnWidths,\n userColumnWidthsByName,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n getMetricCalculator,\n } = props;\n\n const { dh } = model;\n const keyHandlers: KeyHandler[] = [\n new CopyCellKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers: MouseHandlersProp = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n new IrisGridPartitionedTableMouseHandler(this),\n ...(canCopy ? [new IrisGridCopyCellMouseHandler(this)] : []),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = getMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userColumnWidthsByName:\n userColumnWidthsByName != null\n ? new Map(userColumnWidthsByName)\n : undefined,\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n // Remember the factory we used so `maybeRebuildMetricCalculator` (called\n // from `componentDidUpdate` when the `getMetricCalculator` prop changes)\n // can detect a model-driven swap, e.g. pivot-builder's proxy swapping its\n // inner model.\n this.lastMetricCalculatorFactory = getMetricCalculator;\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.mouseHandlers = mouseHandlers;\n this.keyHandlers = keyHandlers;\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n\n partitionConfig:\n partitionConfig ??\n (partitions && partitions.length\n ? { partitions, mode: 'partition' }\n : undefined),\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: quickFilters ? new Map(quickFilters) : new Map(),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n maximizedAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverse: false,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n columnAlignmentMap: new Map(columnAlignmentMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n conditionalFormatError: null,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings:\n // Pin aggregations to the top if the grid is editable, so that the bottom is reserved for pending rows\n isEditableGridModel(model) && model.isEditable\n ? { ...aggregationSettings, showOnTop: true }\n : aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap ?? new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n showNoPastePermissionModal: false,\n noPastePermissionError: '',\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n hoverTooltipProps: null,\n hoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { model } = this.props;\n this.initState();\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps, prevState: IrisGridState): void {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n quickFilters,\n sorts,\n isQuickFiltersControlled,\n isSortsControlled,\n getMetricCalculator,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n // The renderer and mouse handlers flow through memoized getters in\n // render(), so a `renderer` / `mouseHandlers` prop change naturally\n // propagates on the next render. The metric calculator, however, lives in\n // component state, so mirror that path when the `getMetricCalculator` prop\n // changes (e.g. the pivot-builder middleware swapping the pivot factory in\n // or out) so the calculator stays in sync. Moved columns are not touched\n // here — a model swap resets them via `handleSchemaChanged`.\n if (getMetricCalculator !== prevProps.getMetricCalculator) {\n this.maybeRebuildMetricCalculator();\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n const isChanged = this.applyInputFilters(\n changedInputFilters,\n replaceExistingFilters\n );\n if (isChanged) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\n if (\n sorts !== prevProps.sorts ||\n (!prevProps.isSortsControlled && isSortsControlled)\n ) {\n this.updateSorts(sorts);\n }\n if (\n quickFilters !== prevProps.quickFilters ||\n (!prevProps.isQuickFiltersControlled && isQuickFiltersControlled)\n ) {\n this.updateQuickFilters(quickFilters);\n }\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n const { openOptions } = this.state;\n if (openOptions !== prevState.openOptions) {\n const isAggEditType = (option: OptionItem): boolean =>\n option.type === OptionType.AGGREGATION_EDIT;\n if (\n !openOptions.some(isAggEditType) &&\n prevState.openOptions.some(isAggEditType)\n ) {\n this.removeEmptyAggregations();\n }\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n\n this.showViewportLoading.cancel();\n }\n\n grid: Grid | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'conditionalFormats'\n | 'conditionalFormatEditIndex'\n | 'conditionalFormatPreview'\n | 'customColumns'\n | 'quickFilters'\n | 'reverse'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: boolean;\n\n showEmptyStrings: boolean;\n\n showNullStrings: boolean;\n\n showExtraGroupColumn: boolean;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n loadingScrimStartTime?: number;\n\n loadingScrimFinishTime?: number;\n\n animationFrame?: number;\n\n loadingTimer?: ReturnType<typeof setTimeout>;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\n\n gotoRowRef: React.RefObject<GotoRowElement>;\n\n isCopying: boolean;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n keyHandlers: readonly KeyHandler[];\n\n mouseHandlers: MouseHandlersProp;\n\n /**\n * The metric calculator factory most recently used to instantiate the\n * calculator currently stored in state. Used by `maybeRebuildMetricCalculator`\n * (called from `componentDidUpdate` when the `getMetricCalculator` prop\n * changes) to detect when a different factory is supplied and rebuild.\n */\n lastMetricCalculatorFactory?: GetMetricCalculatorType;\n\n slideTransitionRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n bottomTransitionRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n get gridWrapper(): HTMLDivElement | null {\n return this.grid?.canvasWrapper.current ?? null;\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getAdvancedMenuToggleMaximizeHandler = memoize(\n (column: ModelIndex) =>\n this.handleAdvancedFilterToggleMaximize.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: DhType.Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter,\n isMaximized: boolean,\n onToggleMaximize: () => void\n ) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n tableUtils={this.tableUtils}\n isMaximized={isMaximized}\n onToggleMaximize={onToggleMaximize}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isOrganizeColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n order: 100,\n });\n }\n if (isOrganizeColumnsAvailable) {\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n order: 200,\n });\n }\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n order: 300,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n order: 400,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n order: 500,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n order: 600,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n order: 700,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n order: 800,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n order: 900,\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n order: 1000,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n order: 1100,\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n order: 1200,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n /**\n * Apply the `transformTableOptions` transform (if any) to the\n * default option list.\n * Catches exceptions so a buggy plugin can't break the grid, and collapses\n * duplicate `type` entries (last writer wins) before sorting by `order`.\n */\n getCachedTransformedOptionItems = memoize(\n (\n items: readonly OptionItem[],\n transformTableOptions: IrisGridProps['transformTableOptions']\n ): readonly OptionItem[] => {\n if (transformTableOptions == null) {\n return items;\n }\n let transformedItems: readonly OptionItem[];\n try {\n transformedItems = transformTableOptions(items);\n } catch (err) {\n log.error(\n 'transformTableOptions threw an error; falling back to defaults.',\n err\n );\n return items;\n }\n // Collapse duplicate `type` entries before sorting. A duplicate `type`\n // would otherwise collide on the `<Menu>` / `<Page>` React key and cause\n // incorrect page reuse. Per the documented composition rule (see the\n // package README), the last writer wins: a later entry — e.g. from a\n // downstream middleware — overrides an earlier one with the same type.\n // `Map.set` keeps the most recent value while preserving the original\n // insertion slot, so an override stays in place unless it changes\n // `order`.\n const byType = new Map<string, OptionItem>();\n transformedItems.forEach(item => {\n byType.set(String(item.type), item);\n });\n // Stably sort by ascending `order`. Items without an `order` sink to\n // the end of the menu (default `Infinity`), while items with an `order`\n // are positioned by their weight. Decorate-sort-undecorate guarantees\n // stability regardless of the engine's sort implementation.\n const sortedItems = [...byType.values()]\n .map((item, index) => ({ item, index }))\n .sort(\n (a, b) =>\n (a.item.order ?? Infinity) - (b.item.order ?? Infinity) ||\n a.index - b.index\n )\n .map(({ item }) => item);\n return Object.freeze(sortedItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getCachedHiddenColumnNames = memoize(\n (\n hiddenColumns: readonly ModelIndex[],\n columns: readonly DhType.Column[]\n ): readonly ColumnName[] =>\n Object.freeze(\n hiddenColumns\n .map(idx => columns[idx]?.name)\n .filter((n): n is ColumnName => n != null)\n ),\n { max: 1 }\n );\n\n getCachedViewState = memoize(\n (hiddenColumns: readonly ColumnName[]): IrisGridViewState =>\n Object.freeze({ hiddenColumns }),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n },\n { max: 1 }\n );\n\n getOperationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): OperationMap => IrisGridUtils.getOperationMap(columns, aggregations),\n { max: 1 }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n IrisGridUtils.getOperationOrder(aggregations),\n { max: 1 }\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules),\n { max: 1000 }\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rulesParam: readonly SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): DhType.CustomColumn[] => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== undefined) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n },\n { max: 1 }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n ),\n { max: 1 }\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null =>\n IrisGridUtils.getModelTotalsConfig(columns, config, aggregationSettings),\n { max: 1 }\n );\n\n getCachedStateOverride = memoize(\n (\n model: IrisGridModel,\n theme: IrisGridThemeType,\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly SortDescriptor[],\n reverse: boolean,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ): IrisGridStateOverride => ({\n model,\n theme,\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly DhType.FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n searchFilter: DhType.FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n contextTheme: IrisGridThemeType | null,\n theme: Partial<IrisGridThemeType> | undefined,\n isEditable: boolean,\n floatingRowCount: number,\n density: 'compact' | 'regular' | 'spacious'\n ): IrisGridThemeType => {\n // If a theme is available via context, use that as the base theme.\n // If iris-grid is standalone without a context, use the default theme.\n const baseTheme = contextTheme ?? createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ?? baseTheme.rowFooterWidth\n : 0;\n\n const { metricCalculator } = this.state;\n if (metricCalculator != null) {\n metricCalculator.resetCalculatedColumnWidths();\n metricCalculator.resetCalculatedRowHeights();\n }\n\n let densityTheme = {};\n if (density === 'compact') {\n densityTheme = baseTheme.density.compact;\n } else if (density === 'spacious') {\n densityTheme = baseTheme.density.spacious;\n }\n\n return {\n ...baseTheme,\n ...densityTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getCachedKeyHandlers = memoize(\n (keyHandlers: readonly KeyHandler[]) =>\n [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order),\n { max: 1 }\n );\n\n getKeyHandlers(): readonly KeyHandler[] {\n const { keyHandlers } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n\n getMetricState(): IrisGridMetricState | undefined {\n const gridMetricState = this.grid?.getMetricState();\n if (gridMetricState == null) {\n return undefined;\n }\n const {\n advancedFilters,\n hoverSelectColumn,\n isFilterBarShown,\n isMenuShown,\n loadingScrimProgress,\n quickFilters,\n sorts,\n reverse,\n rollupConfig,\n } = this.state;\n\n const { model, isSelectingColumn } = this.props;\n\n return {\n ...gridMetricState,\n ...this.getCachedStateOverride(\n model,\n this.getTheme(),\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n ),\n };\n }\n\n getCachedMouseHandlers = memoize(\n (mouseHandlersProp: MouseHandlersProp): readonly GridMouseHandler[] =>\n [...mouseHandlersProp, ...this.mouseHandlers].map(handler =>\n typeof handler === 'function' ? handler(this) : handler\n ),\n { max: 1 }\n );\n\n getCachedRenderer = memoize(\n (rendererProp?: IrisGridRenderer) => rendererProp ?? new IrisGridRenderer(),\n { max: 1 }\n );\n\n get renderer(): IrisGridRenderer {\n const { renderer } = this.props;\n return this.getCachedRenderer(renderer);\n }\n\n getMouseHandlers(): readonly GridMouseHandler[] {\n const { mouseHandlers } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DhType.DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n /**\n * Get the model column index for the provided visible index\n * @param columnIndex Visible column index\n * @returns Model column index, or null if not found\n */\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n if (columnIndex != null && columnIndex < 0) {\n // ColumnBy sources aren't movable, so just return the index directly\n return columnIndex;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): IrisGridThemeType {\n const { model, theme, density } = this.props;\n const { theme: contextTheme, density: contextDensity } = this.context;\n\n return this.getCachedTheme(\n contextTheme,\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount,\n density ?? contextDensity\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: DhType.Column,\n text: string,\n timeZone: string\n ): DhType.FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n * @returns True if any filters were changed as a result of this operation\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): boolean {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let didAdvancedFiltersChange = replaceExisting && advancedFilters.size > 0;\n let didQuickFiltersChange = replaceExisting && quickFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n didAdvancedFiltersChange =\n newAdvancedFilters.delete(modelIndex) || didAdvancedFiltersChange;\n didQuickFiltersChange =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n didQuickFiltersChange;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (didQuickFiltersChange) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n if (didAdvancedFiltersChange) {\n this.setState({ advancedFilters: newAdvancedFilters });\n }\n return didQuickFiltersChange || didAdvancedFiltersChange;\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n const { quickFilters } = this.state;\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n this.requestQuickFiltersChange(newQuickFilters);\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n const { quickFilters } = this.state;\n const newQuickFilters: QuickFilterMap = clearFiltersOnLinkerFilterUpdate\n ? new Map()\n : new Map(quickFilters);\n let didQuickFiltersChange = false;\n filterMap.forEach(({ columnType, filterList }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n didQuickFiltersChange =\n newQuickFilters.delete(columnIndex) || didQuickFiltersChange;\n } else {\n const { formatter } = model;\n newQuickFilters.set(columnIndex, {\n filter: this.makeQuickFilter(\n column,\n combinedText,\n formatter.timeZone\n ),\n text: `${combinedText}`,\n });\n didQuickFiltersChange = true;\n }\n });\n if (didQuickFiltersChange) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n }\n\n removeColumnFilter(modelRange: ModelIndex | BoundedAxisRange): void {\n const clearRange: BoundedAxisRange = Array.isArray(modelRange)\n ? modelRange\n : [modelRange, modelRange];\n const { advancedFilters, quickFilters } = this.state;\n const { isQuickFiltersControlled } = this.props;\n const newAdvancedFilters = new Map(advancedFilters);\n const newQuickFilters = new Map(quickFilters);\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n\n const didAdvancedFiltersChange =\n newAdvancedFilters.size !== advancedFilters.size;\n const didQuickFiltersChange = newQuickFilters.size !== quickFilters.size;\n if (didQuickFiltersChange) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n if (didAdvancedFiltersChange) {\n if (!didQuickFiltersChange || isQuickFiltersControlled) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\n this.setState({ advancedFilters: newAdvancedFilters });\n }\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n const { quickFilters } = this.state;\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n this.requestQuickFiltersChange(newQuickFilters);\n }\n\n clearAllFilters(): void {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n const { isQuickFiltersControlled } = this.props;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n if (quickFilters.size > 0) {\n this.requestQuickFiltersChange(EMPTY_MAP);\n }\n\n const hasOtherFilters = advancedFilters.size > 0 || searchFilter != null;\n if (hasOtherFilters) {\n if (quickFilters.size === 0 || isQuickFiltersControlled) {\n this.startLoading('Clearing Filters...', { resetRanges: true });\n }\n this.setState({\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n if (!isQuickFiltersControlled) {\n this.clearGridInputField();\n }\n }\n\n clearAllAggregations(): void {\n log.debug('Clearing all aggregations');\n\n this.setState({ aggregationSettings: DEFAULT_AGGREGATION_SETTINGS });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters(): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n\n if (advancedFilters.size === 0 && quickFilters.size === 0) {\n log.debug('No filters to rebuild');\n return;\n }\n\n const { columns, formatter } = model;\n\n log.debug('Rebuilding filters');\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n this.startLoading('Rebuilding filters...', { resetRanges: true });\n if (quickFilters.size > 0) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n this.setState({ advancedFilters: newAdvancedFilters });\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: Pick<IrisGridState, 'quickFilters' | 'advancedFilters'>): void {\n this.requestQuickFiltersChange(quickFilters);\n this.setState({ advancedFilters });\n }\n\n updateFormatterSettings(settings?: Settings, forceUpdate = true): void {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const showEmptyStrings = settings?.showEmptyStrings ?? true;\n const showNullStrings = settings?.showNullStrings ?? true;\n const showExtraGroupColumn = settings?.showExtraGroupColumn ?? true;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n settings?.defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n const isShowEmptyStringsChanged =\n this.showEmptyStrings !== showEmptyStrings;\n const isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n const isShowExtraGroupColumnChanged =\n this.showExtraGroupColumn !== showExtraGroupColumn;\n\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged ||\n isShowEmptyStringsChanged ||\n isShowNullStringsChanged ||\n isShowExtraGroupColumnChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.showExtraGroupColumn = showExtraGroupColumn;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n },\n { max: 1 }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound,\n this.showEmptyStrings,\n this.showNullStrings\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): void {\n const { model } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n loadTableState(): void {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverse,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverse: reverse || reverseType === TableUtils.REVERSE_TYPE.POST_SORT,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(model: PartitionedGridModel): Promise<void> {\n try {\n const { partitionConfig } = this.state;\n if (!partitionConfig) {\n this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true,\n });\n this.initializePartitionConfig(model);\n }\n this.setState({ isSelectingPartition: true }, this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n this.handleTableLoadError(error);\n }\n }\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n async initializePartitionConfig(model: PartitionedGridModel): Promise<void> {\n const keyTable = await this.pending.add(\n model.partitionKeysTable(),\n resolved => resolved.close()\n );\n const { dh } = model;\n\n const sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event: DhType.Event<DhType.ViewportData>) => {\n try {\n const { detail: data } = event;\n if (data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n this.stopLoading();\n return;\n }\n const row = data.rows[0];\n const values = keyTable.columns.map(column => row.get(column));\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys',\n };\n keyTable.close();\n this.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition,\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n }\n );\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex: GridRangeIndex): void {\n const { model } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n const data = this.getRowDataMap(rowIndex);\n const partitionColumnSet = new Set(\n model.partitionColumns.map(column => column.name)\n );\n const values = Object.entries(data)\n .filter(([key, _]) => partitionColumnSet.has(key))\n .map(([key, columnData]) => columnData.value);\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: 'partition',\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition,\n });\n }\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n copyColumnHeader(columnIndex: GridRangeIndex, columnDepth = 0): void {\n if (columnIndex === null) {\n return;\n }\n const { canCopy } = this.props;\n const { movedColumns } = this.state;\n\n if (canCopy) {\n const copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(\n loadingText: string,\n {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true,\n } = {}\n ): void {\n this.setState({ loadingText, loadingCancelShown, loadingBlocksGrid });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading(): void {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback(): void {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n aggregationSettings,\n conditionalFormats,\n conditionalFormatEditIndex,\n conditionalFormatPreview,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n conditionalFormats,\n conditionalFormatEditIndex,\n conditionalFormatPreview,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n conditionalFormats: [],\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n customColumns: [],\n quickFilters: new Map(),\n reverse: false,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return (\n this.lastLoadedConfig != null || !IrisGridUtils.isEmptyConfig(this.state)\n );\n }\n\n startListening(model: IrisGridModel): void {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(IrisGridModel.EVENT.PENDING, this.handlePending);\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_CLEARED,\n this.handlePendingCleared\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.SCHEMA_CHANGED,\n this.handleSchemaChanged\n );\n }\n\n stopListening(model: IrisGridModel): void {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(IrisGridModel.EVENT.PENDING, this.handlePending);\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_CLEARED,\n this.handlePendingCleared\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.SCHEMA_CHANGED,\n this.handleSchemaChanged\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\n\n if (\n column == null ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n const metricState = this.getMetricState();\n assertNotNull(metricState);\n\n const scrollColumn = metricCalculator.getScrollLeftForColumn(\n column,\n metricState,\n metrics\n );\n\n if (scrollColumn != null) {\n this.grid?.setViewState({ left: scrollColumn, leftOffset: 0 }, true);\n }\n\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid?.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n /**\n * Updates the entire list of frozen columns.\n * Used by VisibilityOrderingBuilder.\n * @param frozenColumns The new list of frozen columns\n */\n handleFrozenColumnsChanged(frozenColumns: readonly ColumnName[]): void {\n this.setState({ frozenColumns });\n }\n\n toggleExpandColumn(\n modelIndex: ModelIndex,\n expandDescendants?: boolean\n ): void {\n log.debug2('Toggle expand column', modelIndex);\n const { model } = this.props;\n if (isExpandableColumnGridModel(model) && model.hasExpandableColumns) {\n model.setColumnExpanded(\n modelIndex,\n !model.isColumnExpanded(modelIndex),\n expandDescendants\n );\n }\n }\n\n expandAllColumns(): void {\n log.debug2('Expand all columns');\n const { model } = this.props;\n if (\n isExpandableColumnGridModel(model) &&\n model.isExpandAllColumnsAvailable\n ) {\n model.expandAllColumns();\n }\n }\n\n collapseAllColumns(): void {\n log.debug2('Collapse all columns');\n const { model } = this.props;\n if (\n isExpandableColumnGridModel(model) &&\n model.isExpandAllColumnsAvailable\n ) {\n model.collapseAllColumns();\n }\n }\n\n handleColumnVisibilityChanged(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = metrics.calculatedColumnWidths.get(modelIndex);\n\n // If we haven't scrolled to the column, the calculated width will be undefined.\n // This means the function was triggered by the visibility ordering menu,\n // so just reset the column width to default.\n if (defaultWidth !== calculatedWidth && calculatedWidth != null) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator } = this.state;\n const { model } = this.props;\n metricCalculator.resetAllColumnWidths();\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? EMPTY_ARRAY,\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionChange(partitionConfig: PartitionConfig): void {\n this.startLoading('Partitioning...');\n const { partitionConfig: prevConfig } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({ partitionConfig });\n }\n }\n\n handleTableLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n handleViewportUpdated(): void {\n const { model } = this.props;\n const { loadingText, loadingSpinnerShown } = this.state;\n const loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n\n showViewportLoading = throttle(\n (): void => {\n const { model } = this.props;\n const { loadingSpinnerShown } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n });\n }\n },\n VIEWPORT_LOADING_DELAY,\n { leading: false, trailing: true }\n );\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid?.forceUpdate();\n }\n\n /**\n * Updates grid metrics after model columns have changed\n * to keep Grid and IrisGrid metrics in sync since metrics are stored in both places.\n */\n updateMetrics(): void {\n this.setState({\n metrics: this.grid?.updateMetrics(),\n });\n }\n\n toggleSort(columnIndex: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.requestSortsChange(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly SortDescriptor[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n requestSortsChange(sorts: readonly SortDescriptor[]): void {\n const { isSortsControlled, onSortsChange } = this.props;\n onSortsChange?.(sorts);\n if (!isSortsControlled) {\n this.updateSorts(sorts);\n }\n }\n\n updateQuickFilters(quickFilters: ReadonlyQuickFilterMap | null): void {\n const { quickFilters: currentQuickFilters } = this.state;\n if (quickFilters == null) {\n if (currentQuickFilters.size === 0) {\n return;\n }\n } else if (quickFilters === currentQuickFilters) {\n return;\n }\n\n this.startLoading('Filtering...', { resetRanges: true });\n this.setState({ quickFilters: quickFilters ?? EMPTY_MAP });\n this.grid?.forceUpdate();\n }\n\n requestQuickFiltersChange(quickFilters: ReadonlyQuickFilterMap): void {\n const { isQuickFiltersControlled, onQuickFiltersChange } = this.props;\n onQuickFiltersChange?.(quickFilters);\n if (!isQuickFiltersControlled) {\n this.updateQuickFilters(quickFilters);\n }\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.requestSortsChange(sorts);\n }\n\n reverse(reverse: boolean): void {\n this.startLoading('Reversing...');\n this.setState({ reverse });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid?.focus();\n }\n }\n\n isTableSearchAvailable(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar(): void {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef?.current) {\n this.crossColumnRef?.current.focus();\n } else {\n this.grid?.focus();\n }\n }\n );\n }\n\n toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name } = model.columns[cursorColumn];\n\n // Use raw value (same as Copy Cell Unformatted) to preserve full precision and timezone\n const text = String(this.getValueForCell(cursorColumn, cursorRow, true));\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): Promise<void> {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column: DhType.Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const dataMap = this.getRowDataMap(rowIndex);\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex: ModelIndex): RowDataMap {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n const visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n return dataMap;\n }\n\n handleAdvancedFilterChange(\n column: DhType.Column,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: DhType.Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnName,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.requestSortsChange(sorts);\n }\n\n handleAdvancedFilterDone(): void {\n this.grid?.focus();\n }\n\n handleAdvancedFilterToggleMaximize(column: GridRangeIndex): void {\n this.setState(({ maximizedAdvancedFilter }) => ({\n maximizedAdvancedFilter:\n maximizedAdvancedFilter === column ? null : column,\n }));\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({\n shownAdvancedFilter: column,\n maximizedAdvancedFilter: null,\n });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true, gotoValueManuallyChanged: false });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false, gotoValueManuallyChanged: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef?.current !== null\n ) {\n this.filterInputRef?.current.focus();\n this.setState({\n shownAdvancedFilter: null,\n maximizedAdvancedFilter: null,\n });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n maximizedAdvancedFilter: null,\n });\n }\n }\n\n handleCancel(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n const { focusedFilterBarColumn, quickFilters } = this.state;\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n this.requestQuickFiltersChange(newQuickFilters);\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleColumnAlignmentChange(\n modelIndex: ModelIndex,\n alignment: CanvasTextAlign | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n\n this.setState(({ columnAlignmentMap = EMPTY_MAP }) => {\n const newColumnAlignmentMap = new Map(columnAlignmentMap);\n if (alignment != null) {\n newColumnAlignmentMap.set(column.name, alignment);\n } else {\n newColumnAlignmentMap.delete(column.name);\n }\n return { columnAlignmentMap: newColumnAlignmentMap };\n });\n }\n\n handleMenu(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: EventT): void {\n const { detail: error } = event as CustomEvent;\n log.error('request failed:', error);\n this.stopLoading();\n const { partitionConfig, conditionalFormatEditIndex } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', { resetRanges: true });\n this.setState({ partitionConfig: undefined }, () => {\n this.initState();\n });\n } else if (conditionalFormatEditIndex !== null) {\n // Preview format failed — surface error in the editor instead of rolling back\n const errorMessage =\n (error as { errorMessage?: string })?.errorMessage ?? String(error);\n this.setState({\n conditionalFormatError: errorMessage,\n conditionalFormatPreview: undefined,\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', { resetRanges: true });\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${error}`));\n }\n }\n\n /**\n * Raise the loading scrim in response to a model-driven `PENDING` event. The\n * model is the start signal, mirroring how `UPDATED`/`COLUMNS_CHANGED` are\n * already the model-driven stop signal. Idempotent: the first message within\n * a commit wins (the `loadingScrimStartTime == null` guard collapses multiple\n * pending operations into a single scrim).\n */\n handlePending(event: EventT): void {\n const { detail } = event as CustomEvent<PendingOperationDetail | undefined>;\n const { text, options } = detail ?? {};\n if (this.loadingScrimStartTime == null) {\n this.startLoading(text ?? 'Loading...', {\n loadingCancelShown: false,\n ...options,\n });\n }\n }\n\n /**\n * Clear the loading scrim in response to a model-driven `PENDING_CLEARED`\n * event. Only needed for operations that do not naturally end in\n * `UPDATED`/`COLUMNS_CHANGED`/`REQUEST_FAILED`.\n *\n * The current contract assumes a single outstanding model-driven operation:\n * `handlePending` collapses concurrent `PENDING` events into one scrim, so\n * this clears unconditionally. That is consistent with the existing scrim,\n * which any model stop signal already clears regardless of what else is in\n * flight. Ref-counting overlapping operations is intentionally deferred to\n * the planned migration that routes the built-in `startLoading` calls\n * through `PENDING`/`PENDING_CLEARED`; only once every raise/clear goes\n * through this pair can a depth counter stay balanced (a counter added now\n * would desync against the direct `startLoading` callers).\n */\n handlePendingCleared(): void {\n this.stopLoading();\n }\n\n handleUpdate(): void {\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n conditionalFormats,\n conditionalFormatEditIndex,\n conditionalFormatPreview,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\n const config = {\n advancedFilters,\n aggregationSettings,\n conditionalFormats,\n conditionalFormatEditIndex,\n conditionalFormatPreview,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!IrisGridUtils.isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleTableChanged(): void {\n const { model } = this.props;\n // For partitioned tables, we want to rebuild filters on table change to ensure filters are applied to the new partition\n const { partitionConfig } = this.state;\n if (isPartitionedGridModel(model) && partitionConfig?.mode !== 'keys') {\n this.rebuildFilters();\n }\n }\n\n /**\n * Handle an inner-model swap on a proxy model (`SCHEMA_CHANGED`). The previous\n * model's `movedColumns` reference indices that may not exist in the new\n * model (e.g. a pivot exposes a different column set), so reset them to the\n * new model's initial order. The metric calculator is rebuilt separately when\n * the `getMetricCalculator` prop changes (see `componentDidUpdate`); a calc\n * whose seed `movedColumns` are now stale self-heals because `getMetrics`\n * reconciles against the grid's current `movedColumns` at draw time.\n */\n handleSchemaChanged(): void {\n const { model } = this.props;\n this.setState({ movedColumns: model.initialMovedColumns });\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges?: readonly GridRange[]): void {\n assertNotNull(selectedRanges);\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n\n // We get 2 identical ranges here,\n // but consolidating in `Grid#moveSelection` causes\n // deselection to break, so just consolidate here.\n // This will only update the goto row input for row index\n if (\n GridRange.rowCount(GridRange.consolidate(selectedRanges)) === 1 &&\n selectedRanges[0].startRow != null\n ) {\n this.setState({ gotoRow: `${selectedRanges[0].startRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(\n columnHeaderGroups: readonly (DhType.ColumnGroup | ColumnHeaderGroup)[]\n ): void {\n const { model } = this.props;\n const { columnHeaderGroups: prevColumnHeaderGroups } = this.state;\n if (prevColumnHeaderGroups === columnHeaderGroups) {\n return;\n }\n\n this.setState(\n {\n // undo/redo will pass already parsed groups\n // Parsing them again causes a loop with undo/redo that makes it unusable\n columnHeaderGroups: columnHeaderGroups.every(\n (group): group is ColumnHeaderGroup =>\n isColumnHeaderGroup(group) && group.isValid()\n )\n ? columnHeaderGroups\n : IrisGridUtils.parseColumnHeaderGroups(model, columnHeaderGroups)\n .groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index: number): void {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes; clear any previous preview error on each new update\n handleConditionalFormatEditorUpdate = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview, conditionalFormatError: null });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel(): void {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({\n conditionalFormatEditIndex: null,\n conditionalFormatError: null,\n });\n }\n\n handleUpdateCustomColumns(customColumns: readonly string[]): void {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.requestSortsChange(newSorts);\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n if (newQuickFilters.size !== quickFilters.size) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n if (newAdvancedFilters.size !== advancedFilters.size) {\n this.setState({ advancedFilters: newAdvancedFilters });\n }\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\n log.debug('Model columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.updateMetrics();\n\n // Make sure stopLoading() is called after the updateMetrics call,\n // otherwise IrisGridModelUpdater queues an extra setViewport based on old metrics.\n this.stopLoading();\n } else {\n this.loadTableState();\n }\n }\n\n /**\n * Rebuild the metric calculator when the `getMetricCalculator` prop swaps for\n * a different factory (e.g. entering or leaving a pivot, where the\n * pivot-builder middleware flips the prop). The renderer and mouse handlers\n * are recomputed via their memoized getters on the next render and do not\n * need explicit handling here.\n *\n * User column-widths / row-heights from the previous calculator are not\n * carried over: a factory swap means the column set has effectively changed,\n * so the stored sizes wouldn't map to anything meaningful.\n *\n * Moved columns are NOT reset here — that is owned by `handleSchemaChanged`\n * (the `SCHEMA_CHANGED` event) so that a plain prop swap against the same\n * model preserves the user's layout. The new calculator is seeded with the\n * current moved columns; `getMetrics` reconciles against the grid's live\n * `movedColumns` at draw time, so a later reset stays consistent.\n */\n maybeRebuildMetricCalculator(): void {\n const { getMetricCalculator } = this.props;\n if (getMetricCalculator === this.lastMetricCalculatorFactory) return;\n\n const { model } = this.props;\n const { movedColumns } = this.state;\n const next = getMetricCalculator({\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n this.lastMetricCalculatorFactory = getMetricCalculator;\n log.debug('Swapping metric calculator', next);\n // Also push the new calculator onto the Grid synchronously so any\n // immediately-following read of `Grid.metricCalculator` (before React has\n // committed the setState below) uses the new instance against the new\n // model rather than invoking the old calculator and potentially throwing.\n if (this.grid != null) {\n this.grid.metricCalculator = next;\n }\n this.setState({ metricCalculator: next });\n }\n\n handlePendingCommitClicked(): Promise<void> {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked(): Promise<void> {\n return this.discardPending();\n }\n\n handlePendingDataUpdated(): void {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid?.forceUpdate();\n }\n\n handleResizeColumn(modelIndex: number): void {\n const { metrics, metricCalculator } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const contentWidth = getOrThrow(metrics.contentColumnWidths, modelIndex);\n\n const userWidths = metricCalculator.getUserColumnWidths();\n if (userWidths.has(modelIndex)) {\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n } else {\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n\n this.grid?.forceUpdate();\n }\n\n handleResizeAllColumns(): void {\n const { metrics, metricCalculator } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const allColumns = [...metrics.allColumnWidths.entries()];\n const visibleColumns = allColumns\n .filter(([_, width]) => width !== 0)\n .map(([modelIndex]) => modelIndex);\n\n const contentWidths = metrics.contentColumnWidths;\n const userWidths = metricCalculator.getUserColumnWidths();\n\n const manualColumns = visibleColumns.filter(modelIndex =>\n userWidths.has(modelIndex)\n );\n\n if (visibleColumns.length === manualColumns.length) {\n // All columns are manually sized, flip all to auto resize\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const modelIndex = visibleColumns[i];\n const contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n }\n } else {\n // Flip all to manual sized\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const modelIndex = visibleColumns[i];\n const contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n }\n\n this.grid?.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n * @param added The aggregations that were added\n * @param removed The aggregations that were removed\n */\n handleAggregationsChange(\n aggregationSettings: AggregationSettings,\n added: AggregationOperation[] = [],\n removed: AggregationOperation[] = []\n ): void {\n log.debug('handleAggregationsChange', aggregationSettings, added, removed);\n const { rollupConfig } = this.state;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n // Do not start loading if this is rollup and added / removed aggregations are prohibited for rollups\n const changes = [...added, ...removed];\n const shouldStartLoading = !(\n isRollup &&\n changes.length > 0 &&\n changes.every(op => AggregationUtils.isRollupProhibited(op))\n );\n\n if (shouldStartLoading) {\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n }\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param aggregation The new aggregation\n */\n handleAggregationChange(aggregation: Aggregation): void {\n log.debug('handleAggregationChange', aggregation);\n const { rollupConfig } = this.state;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n // Do not start loading if this is rollup and the aggregation is prohibited for rollups\n const shouldStartLoading = !(\n isRollup && AggregationUtils.isRollupProhibited(aggregation.operation)\n );\n\n if (shouldStartLoading) {\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n }\n\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation: Aggregation): void {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig: UIRollupConfig): void {\n log.info('Rollup change', rollupConfig);\n\n // Un-hide hidden group-by columns.\n if (rollupConfig?.columns != null && rollupConfig.columns.length > 0) {\n const { metricCalculator } = this.state;\n const userColumnWidthsByName =\n metricCalculator.getUserColumnWidthsByName();\n rollupConfig.columns.forEach(name => {\n if (userColumnWidthsByName.get(name) === 0) {\n metricCalculator.resetColumnWidthByName(name);\n }\n });\n }\n\n this.resetGridViewState();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n this.requestSortsChange(EMPTY_ARRAY);\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: EMPTY_ARRAY,\n frozenColumns: EMPTY_ARRAY,\n reverse: false,\n selectDistinctColumns: EMPTY_ARRAY,\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n this.clearAllAggregations();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.requestSortsChange(EMPTY_ARRAY);\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n reverse: false,\n });\n }\n\n handleDownloadTableStart(): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(\n fileName: string,\n frozenTable: DhType.Table,\n tableSubscription: DhType.TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations(): void {\n log.debug('removeEmptyAggregations');\n\n this.setState(({ aggregationSettings }) => {\n const { aggregations } = aggregationSettings;\n const newAggregations = aggregations.filter(\n a => a.selected.length > 0 || a.invert\n );\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: newAggregations,\n },\n };\n }\n return { selectedAggregation: null, aggregationSettings };\n });\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): void {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange(): void {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n handleOverflowClose(): void {\n this.setState({\n showOverflowModal: false,\n });\n this.grid?.focus(); // Focus on the grid after closing the overflow modal\n }\n\n handleOpenNoPastePermissionModal(errorMessage: string): void {\n this.setState({\n showNoPastePermissionModal: true,\n noPastePermissionError: errorMessage,\n });\n }\n\n handleCloseNoPastePermissionModal(): void {\n this.setState({\n showNoPastePermissionModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n const { model } = this.props;\n const isExpandAllAvailable =\n isExpandableGridModel(model) && model.isExpandAllAvailable;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n {isExpandAllAvailable && (\n <>\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </>\n )}\n </div>\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n getHoverTooltip = memoize(\n (hoverTooltipProps: CSSProperties): ReactNode => {\n if (hoverTooltipProps == null) {\n return null;\n }\n\n const { hoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...hoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">{hoverDisplayValue}</div>\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n const {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged,\n } = this.state;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n const prevColumn = IrisGridUtils.getColumnByName(\n model.columns,\n prevColumnName\n );\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && column.type === prevColumn?.type) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input, gotoValueManuallyChanged: true });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n /**\n * Render the input field for the focused filter\n * @param metrics Grid metrics\n * @param metricCalculator Metric calculator\n * @param focusedFilterBarColumn Column index for the focused filter\n * @param quickFilters Quick filters map\n * @param advancedFilters Advanced filters map\n * @returns The filter input field element or null if not applicable\n */\n getFilterBarInput(\n metrics: GridMetrics | undefined,\n metricCalculator: IrisGridMetricCalculator,\n focusedFilterBarColumn: VisibleIndex | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap\n ): ReactElement | null {\n if (metrics == null || focusedFilterBarColumn == null) {\n return null;\n }\n\n const metricState = this.getMetricState();\n if (metricState == null) {\n return null;\n }\n\n const filterBoxCoordinates = metricCalculator.getFilterInputCoordinates(\n focusedFilterBarColumn,\n metricState,\n metrics\n );\n if (filterBoxCoordinates == null) {\n return null;\n }\n\n const debounceMs = Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n );\n const {\n x,\n y,\n width: fieldWidth,\n height: fieldHeight,\n } = filterBoxCoordinates;\n const { width } = metrics;\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;\n const showAdvancedFilterButton =\n metricCalculator.getAdvancedFilterButtonCoordinates(\n focusedFilterBarColumn,\n metricState,\n metrics\n ) != null;\n return (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n showAdvancedFilterButton={showAdvancedFilterButton}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid?.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n\n render(): ReactElement | null {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n transformTableOptions,\n } = this.props;\n const { cellInputRendererRegistry } = this.context;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n maximizedAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n conditionalFormatError,\n\n columnAlignmentMap,\n\n sorts,\n reverse,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n showNoPastePermissionModal,\n noPastePermissionError,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n hoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n const { columnHeaderHeight: singleColumnHeaderHeight } = theme;\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n model,\n theme,\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n const focusField = isFilterBarShown\n ? this.getFilterBarInput(\n metrics,\n metricCalculator,\n focusedFilterBarColumn,\n quickFilters,\n advancedFilters\n )\n : null;\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div\n className=\"iris-grid-loading\"\n style={loadingBlocksGrid ? { top: gridY } : {}}\n >\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const metricState = this.getMetricState();\n\n // Advanced Filter buttons\n const { visibleColumns } = metrics;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const modelColumn = this.getModelColumn(columnIndex);\n\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n const buttonCoordinates =\n isFilterable && metricState\n ? metricCalculator.getAdvancedFilterButtonCoordinates(\n columnIndex,\n metricState,\n metrics\n )\n : null;\n if (buttonCoordinates != null) {\n const { x, y } = buttonCoordinates;\n const style: CSSProperties = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <Button\n kind=\"ghost\"\n className={classNames(\n 'btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({\n shownAdvancedFilter: columnIndex,\n maximizedAdvancedFilter: null,\n });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: CSSProperties = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n\n const sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(`Invalid sort direction: ${sortDirection}`);\n }\n\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n isMaximized={\n shownAdvancedFilter === columnIndex &&\n maximizedAdvancedFilter === columnIndex\n }\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n options={{\n positionFixed: true,\n }}\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter,\n shownAdvancedFilter === columnIndex &&\n maximizedAdvancedFilter === columnIndex,\n this.getAdvancedMenuToggleMaximizeHandler(columnIndex)\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const defaultOptionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isOrganizeColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n const optionItems = this.getCachedTransformedOptionItems(\n defaultOptionItems,\n transformTableOptions\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n onFrozenColumnsChanged={this.handleFrozenColumnsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\n columns={model.columns}\n rule={conditionalFormatPreview}\n errorMessage={conditionalFormatError ?? undefined}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n availablePlacements={\n isEditableGridModel(model) && model.isEditable\n ? ['top']\n : ['top', 'bottom']\n }\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n dh={model.dh}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default: {\n // Plugin-contributed items render their own page via\n // `configPage`. The page is isolated inside an error\n // boundary so a throwing plugin doesn't tear down the\n // entire grid subtree. Built-in items that hit the default\n // case indicate a programmer error (unhandled enum case).\n const PluginPage = option.configPage;\n if (PluginPage == null) {\n throw Error(`Unexpected option type ${option.type}`);\n }\n return (\n <PluginTableOptionsErrorBoundary\n itemType={String(option.type)}\n key={String(option.type)}\n >\n <PluginPage\n model={model}\n viewState={this.getCachedViewState(\n this.getCachedHiddenColumnNames(hiddenColumns, model.columns)\n )}\n onBack={this.handleMenuBack}\n />\n </PluginTableOptionsErrorBoundary>\n );\n }\n }\n });\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n nodeRef={this.slideTransitionRef}\n >\n <div\n ref={this.slideTransitionRef}\n className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\"\n >\n {isPartitionedGridModel(model) && model.isPartitionRequired && (\n <IrisGridPartitionSelector\n model={model}\n partitionConfig={partitionConfig}\n onChange={this.handlePartitionChange}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n nodeRef={this.bottomTransitionRef}\n >\n <div ref={this.bottomTransitionRef} className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={this.getKeyHandlers()}\n mouseHandlers={this.getMouseHandlers()}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n cellInputRendererRegistry={\n cellInputRendererRegistry ?? DEFAULT_REGISTRY\n }\n stateOverride={stateOverride}\n theme={theme}\n >\n <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n columnAlignmentMap={columnAlignmentMap}\n sorts={sorts}\n reverse={reverse}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount,\n this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n model.dh,\n model.columns,\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? undefined\n : undefined\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n partitionConfig={partitionConfig}\n showExtraGroupColumn={this.showExtraGroupColumn}\n />\n )}\n {!isMenuShown && (\n <div\n className=\"grid-settings-button\"\n style={{\n height: `${singleColumnHeaderHeight}px`,\n width: `${singleColumnHeaderHeight}px`,\n }}\n >\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {hoverTooltipProps && this.getHoverTooltip(hoverTooltipProps)}\n </Grid>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <SlideTransition\n in={isMenuShown}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n {[\n <Page\n key=\"table-options\"\n title=\"Table Options\"\n onClose={this.handleMenuClose}\n >\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>,\n ...openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n )),\n ]}\n </Stack>\n </div>\n </SlideTransition>\n <ContextActions actions={this.contextActions} />\n <NoPastePermissionModal\n isOpen={showNoPastePermissionModal}\n onClose={this.handleCloseNoPastePermissionModal}\n errorMessage={noPastePermissionError}\n />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","SlideTransition","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","isDeletableGridModel","isExpandableColumnGridModel","RangedSelection","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","isSortDirection","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","CopyCellKeyHandler","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridCopyCellMouseHandler","IrisGridDataSelectMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","DEFAULT_REGISTRY","IrisGridContext","IrisGridModel","isKeyedGridModel","KeyedSelection","IrisGridUtils","CrossColumnSearch","isPartitionedGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","PluginTableOptionsErrorBoundary","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","isMissingPartitionError","NoPastePermissionModal","isColumnHeaderGroup","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","IrisGrid","constructor","props","_model$layoutHints","_model$columns$0$name","_model$columns$","_defineProperty","createRef","column","handleAdvancedMenuOpened","bind","max","handleAdvancedFilterToggleMaximize","isKeyed","getModel","empty","undefined","model","advancedFilterOptions","sortDirection","formatter","isMaximized","onToggleMaximize","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isOrganizeColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","push","type","CHART_BUILDER","title","icon","order","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","GOTO","items","transformTableOptions","transformedItems","err","error","byType","Map","forEach","item","set","String","sortedItems","values","map","index","sort","a","b","_a$item$order","_b$item$order","Infinity","_ref","metricCalculator","userColumnWidths","getHiddenColumns","initialColumnWidths","hiddenColumns","columns","idx","_columns$idx","name","filter","n","aggregationMap","_ref2","operation","selected","invert","getOperationColumnNames","getOperationMap","getOperationOrder","dh","rules","rulesParam","preview","editIndex","debug","getCachedFormatColumns","originalColumns","config","aggregationSettings","getModelRollupConfig","getModelTotalsConfig","theme","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","quickFilters","advancedFilters","sorts","reverse","rollupConfig","isMenuShown","customFilters","searchFilter","getFiltersFromFilterMap","contextTheme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","rowFooterWidth","state","resetCalculatedColumnWidths","resetCalculatedRowHeights","densityTheme","compact","spacious","_objectSpread","autoSelectRow","keyHandlers","mouseHandlersProp","mouseHandlers","handler","rendererProp","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","length","keyColumnIndices","selectionKeyColumnIndices","keyColumns","_columns$i","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","loadingSpinnerShown","isViewportPending","startLoading","loadingCancelShown","loadingBlocksGrid","leading","trailing","conditionalFormatPreview","conditionalFormatError","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","textAlign","isMacPlatform","hoverTooltipProps","hoverDisplayValue","className","input","gotoValue","gotoValueManuallyChanged","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handlePending","handlePendingCleared","handleSelectionChanged","handleGridSelectionChange","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleTableChanged","handleSchemaChanged","handleViewChanged","handleFormatSelection","handleColumnAlignmentChange","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handleViewportUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionChange","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","handleCloseNoPastePermissionModal","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","makeQuickFilter","setFilterMap","handleFrozenColumnsChanged","grid","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","showExtraGroupColumn","tableSaver","crossColumnRef","isAnimating","filterInputRef","gotoRowRef","isCopying","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","size","discardPending","catch","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","columnAlignmentMap","isSelectingPartition","partitions","partitionConfig","movedColumnsProp","movedRowsProp","movedRows","userColumnWidthsByName","userRowHeights","selectDistinctColumns","canCopy","frozenColumns","columnHeaderGroups","getMetricCalculator","initialMovedColumns","initialMovedRows","layoutHints","getColumnIndexByName","lastMetricCalculatorFactory","searchColumns","focusedFilterBarColumn","metrics","mode","shownAdvancedFilter","maximizedAdvancedFilter","hoverAdvancedFilter","customColumns","gridSelection","copyOperation","loadingText","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","initState","startListening","componentDidUpdate","prevProps","prevState","_this$props","inputFilters","settings","isQuickFiltersControlled","isSortsControlled","stopListening","maybeRebuildMetricCalculator","changedInputFilters","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","isChanged","applyInputFilters","resetRanges","resetColumnSelection","updateFormatterSettings","updateSorts","updateQuickFilters","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","isAggEditType","option","AGGREGATION_EDIT","some","removeEmptyAggregations","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","showViewportLoading","gridWrapper","_this$grid$canvasWrap","_this$grid","canvasWrapper","current","getKeyHandlers","getCachedKeyHandlers","getMetricState","_this$grid2","gridMetricState","_this$state","_this$props2","getCachedStateOverride","getTheme","renderer","getCachedRenderer","getMouseHandlers","getCachedMouseHandlers","getValueForCell","columnIndex","rowIndex","rawValue","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","_ref3","_this$props3","_this$context","context","contextDensity","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","replaceExisting","_this$state2","newAdvancedFilters","newQuickFilters","didAdvancedFiltersChange","didQuickFiltersChange","_ref4","findIndex","_ref5","columnName","columnType","delete","applyQuickFilter","requestQuickFiltersChange","concat","trim","quickFilter","setAdvancedFilterMap","setAdvancedFilter","_ref6","setQuickFilter","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref7","filterList","find","c","combinedText","combineFiltersFromList","removeColumnFilter","modelRange","clearRange","Array","isArray","_this$state3","_","removeQuickFilter","_this$state4","hasOtherFilters","clearAllAggregations","setValue","rebuildFilters","_this$state5","key","makeAdvancedFilter","setFilters","_ref8","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","_settings$showExtraGr","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","isShowExtraGroupColumnChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","_this$props4","applyInputFiltersOnInit","reverseType","inputFiltersWithValues","REVERSE_TYPE","POST_SORT","_this","_asyncToGenerator","initializePartitionConfig","isCanceled","_this2","keyTable","add","partitionKeysTable","resolved","close","desc","applySort","setViewport","addEventListener","Table","EVENT_UPDATED","event","data","detail","rows","stopLoading","row","newPartition","isPartitionAwareSourceTable","e","selectPartitionKeyFromTable","getRowDataMap","partitionColumnSet","partitionColumns","entries","_ref9","_ref0","_slicedToArray","has","_ref1","_ref10","columnData","copyCell","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","bounded","boundedRanges","columnCount","rowCount","selection","copySelection","_this$state6","getUserColumnWidths","pendingRanges","_ref11","_ref11$resetRanges","_ref11$loadingCancelS","_ref11$loadingBlocksG","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","rollback","_this$lastLoadedConfi","canRollback","isEmptyConfig","EVENT","UPDATED","REQUEST_FAILED","PENDING","PENDING_CLEARED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","TABLE_CHANGED","SCHEMA_CHANGED","removeEventListener","focus","_this$grid3","focusFilterBar","isFilterable","_this$state7","metricState","scrollColumn","getScrollLeftForColumn","_this$grid4","left","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid5","_this$state8","setColumnWidth","freezeColumnByColumnName","_this$state9","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","_this$state0","frontColumns","toggleExpandColumn","expandDescendants","hasExpandableColumns","setColumnExpanded","isColumnExpanded","expandAllColumns","isExpandAllColumnsAvailable","collapseAllColumns","modelIndexes","isVisible","_this$grid6","_this$state1","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","resetAllColumnWidths","_this$grid7","updateCanvas","prevConfig","onError","_this$state10","loadingMessage","showAllColumns","_this$grid8","_entries$i","columnWidth","updateMetrics","_this$grid9","toggleSort","addToExisting","info","isColumnSortable","currentSorts","toggleSortForColumn","requestSortsChange","_this$grid0","_this$props5","onSortsChange","_this$grid1","currentQuickFilters","_this$props6","onQuickFiltersChange","sortColumn","direction","none","isAbs","_this$grid10","isReversible","focusIndex","isTextType","_this$grid11","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","_this$props7","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid12","_this$grid13","_this$grid14","_this$gotoRowRef$curr","cursorRow","cursorColumn","_this3","_document","Error","containsGridCellInputField","document","activeElement","classList","contains","_this3$grid","newPendingSavePromise","then","_this4","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","_this5","groupedColumns","_loop","isExpandable","isRowExpandable","isGrouped","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid15","_ref12","_this$filterInputRef","_this$state11","_this$filterInputRef2","_this$props8","onCreateChart","warn","_this$state12","setGridFocus","defocusInput","_this$grid16","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","alignment","_ref13","_ref13$columnAlignmen","newColumnAlignmentMap","stopPropagation","_ref14","newOptions","pop","_ref15","_ref16","_this$state13","_errorMessage","errorMessage","_ref17","_ref18","_this$grid17","_this$state14","_this$grid18","currentSelection","modelIsKeyed","selectionIsKeyed","_this$grid19","_this$grid$state$sele","_this$grid20","selectionEndRow","bottomViewport","bottomNonFloating","selectedRanges","onSelectionChanged","onSelectionChange","resolveKeyedSelection","_this6","_this6$grid","keyValues","fetchKeyValuesForRowRanges","getSelection","setSelection","resolve","_this6$grid2","clear","onChangeApplied","prevColumnHeaderGroups","every","group","isValid","parseColumnHeaderGroups","groups","_this$grid21","tooltip","startTimer","_this$state15","CONDITIONAL_FORMATTING_EDIT","_this$state16","_this$state17","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_model$layoutHints4","next","_this$grid22","handleResizeColumn","_this$grid23","_this$state18","contentWidth","contentColumnWidths","userWidths","setCalculatedColumnWidth","handleResizeAllColumns","_this$grid24","_this$state19","allColumns","allColumnWidths","visibleColumns","_ref19","_ref20","width","_ref21","_ref22","contentWidths","manualColumns","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","isRollupProhibited","join","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref23","_rollupConfig$columns5","_rollupConfig$columns6","getUserColumnWidthsByName","resetColumnWidthByName","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref24","newAggregations","inputString","_arguments","_this7","_this7$grid","isBackwards","_this7$state","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this7$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","_DateUtils$parseDateR","parseDateRange","_DateUtils$parseDateR2","startDate","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","isDeletable","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","_this$grid25","handleOpenNoPastePermissionModal","_this$gridWrapper2","_this$state20","gridRect","popperMargin","columnHeaderHeight","allColumnXs","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid26","_this$grid27","_this$grid28","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid29","_this$state21","prevColumnName","prevColumn","convertValueToText","getFilterBarInput","_this$grid30","filterBoxCoordinates","getFilterInputCoordinates","debounceMs","minDebounce","round","maxDebounce","fieldWidth","fieldHeight","minWidth","advancedFilter","isBarFiltered","showAdvancedFilterButton","getAdvancedFilterButtonCoordinates","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","render","_rollupConfig$columns7","_rollupConfig$columns8","_this8","_this$grid31","_openOptions","_this$props9","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","cellInputRendererRegistry","_this$state22","singleColumnHeaderHeight","getCachedFilter","stateOverride","focusField","loadingElement","loadingStatus","show","onClick","transform","gridY","columnTooltip","_this$tooltip2","filterBar","_loop2","buttonCoordinates","isFilterSet","isFilterVisible","element","hidden","kind","_this8$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","gridX","_loop3","xColumnHeader","xFilterBar","filterBarHeight","_ref25","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","getAdvancedMenuToggleMaximizeHandler","defaultOptionItems","getCachedOptionItems","getCachedTransformedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onFrozenColumnsChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","availablePlacements","onEdit","isDownloading","onDownload","onDownloadStart","PluginPage","configPage","itemType","viewState","getCachedViewState","getCachedHiddenColumnNames","onBack","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","nodeRef","slideTransitionRef","bottomTransitionRef","selectedColumns","invertSelection","isStickyBottom","createEmptySelection","getCachedCreateEmptySelection","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","actions","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","_len","args","_key"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n type ContextAction,\n type PopperOptions,\n type ReferenceObject,\n Button,\n ContextActionUtils,\n type ResolvableContextAction,\n SlideTransition,\n} from '@deephaven/components';\nimport {\n Grid,\n type GridMetrics,\n type GridMouseHandler,\n GridRange,\n type GridRangeIndex,\n GridUtils,\n type GridModel,\n type KeyHandler,\n type ModelIndex,\n type ModelSizeMap,\n type MoveOperation,\n type VisibleIndex,\n type GridState,\n isEditableGridModel,\n type BoundedAxisRange,\n isExpandableGridModel,\n isDeletableGridModel,\n isExpandableColumnGridModel,\n type Selection,\n RangedSelection,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n type FormattingRule,\n type ReverseType,\n type RowDataMap,\n type SortDirection,\n type DateTimeColumnFormatterOptions,\n type TableColumnFormat,\n type Settings,\n isSortDirection,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n type EventT,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n type TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n type FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { type CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n CopyCellKeyHandler,\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridCopyCellMouseHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridPartitionedTableMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator, {\n type IrisGridMetricState,\n} from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport {\n createDefaultIrisGridTheme,\n type IrisGridThemeType,\n} from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n DownloadServiceWorkerUtils,\n type TableOptionsTransform,\n} from './sidebar';\nimport { DEFAULT_REGISTRY, IrisGridContext } from './IrisGridContextProvider';\nimport IrisGridModel from './IrisGridModel';\nimport { isKeyedGridModel } from './KeyedGridModel';\nimport { KeyedSelection, type GetKeyedModel } from './KeyedSelection';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport {\n isPartitionedGridModel,\n type PartitionConfig,\n type PartitionedGridModel,\n} from './PartitionedGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport PluginTableOptionsErrorBoundary from './sidebar/PluginTableOptionsErrorBoundary';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n type AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { type GotoRowElement } from './GotoRow';\nimport {\n type Aggregation,\n type AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { type ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport type AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type UIRollupConfig } from './sidebar/RollupRows';\nimport {\n type Action,\n type AdvancedFilterOptions,\n type ColumnName,\n type InputFilter,\n type IrisGridStateOverride,\n type IrisGridViewState,\n type OperationMap,\n type OptionItem,\n type PendingDataErrorMap,\n type PendingDataMap,\n type PendingOperationDetail,\n type QuickFilterMap,\n type ReadonlyAdvancedFilterMap,\n type ReadonlyAggregationMap,\n type ReadonlyQuickFilterMap,\n type UITotalsTableConfig,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { isMissingPartitionError } from './MissingPartitionError';\nimport { NoPastePermissionModal } from './NoPastePermissionModal';\nimport { isColumnHeaderGroup } from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGrid');\n\nconst VIEWPORT_LOADING_DELAY = 500;\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nexport type FilterData = {\n operator?: FilterTypeValue; // Default behavior treats no operator as equals\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string | null;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: DhType.Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow?: GridRangeIndex;\n modelColumn: GridRangeIndex;\n selection: Selection | null;\n}\n\nexport type MouseHandlersProp = readonly (\n | GridMouseHandler\n | ((irisGrid: IrisGrid) => GridMouseHandler)\n)[];\n\nexport type GetMetricCalculatorType = (\n ...args: ConstructorParameters<typeof IrisGridMetricCalculator>\n) => IrisGridMetricCalculator;\n\nexport interface IrisGridProps {\n children?: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: ReadonlyMap<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: ReadonlyMap<ColumnName, FormattingRule>;\n columnAlignmentMap: ReadonlyMap<string, CanvasTextAlign>;\n model: IrisGridModel;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly DhType.FilterCondition[];\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: DhType.Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: RowDataMap) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n\n /**\n * Pure transform over the default Table Options menu list. Receives\n * the built-in items (already filtered by model availability) and\n * returns the items to actually render. Use it to add, hide,\n * relabel, reorder, or replace entries.\n *\n * Items returned with a `configPage` are rendered by the\n * `default` case of the page switch and isolated inside a small\n * error boundary; items without a `configPage` MUST have a `type`\n * matching an existing `OptionType` enum value, otherwise the\n * existing case arms can't render them.\n *\n * Called inside memoization; the function should be referentially\n * stable and side-effect-free. A throwing transform is logged once\n * and treated as identity for that render.\n */\n transformTableOptions?: TableOptionsTransform;\n\n /** @deprecated use `partitionConfig` instead */\n partitions?: (string | null)[];\n partitionConfig?: PartitionConfig;\n sorts: readonly SortDescriptor[];\n isSortsControlled: boolean;\n onSortsChange?: (sorts: readonly SortDescriptor[]) => void;\n\n /** @deprecated use `reverse` instead */\n reverseType?: ReverseType;\n reverse: boolean;\n quickFilters: ReadonlyQuickFilterMap | null;\n isQuickFiltersControlled: boolean;\n onQuickFiltersChange?: (quickFilters: ReadonlyQuickFilterMap) => void;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n /**\n * @deprecated Pass `userColumnWidthsByName` instead. The by-index map is\n * lossy across model swaps because column indices change when the model\n * is replaced (e.g. when applying or removing a rollup). Kept for\n * back-compat with consumers that have not migrated.\n */\n userColumnWidths: ReadonlyMap<ModelIndex, number>;\n /**\n * Map of user-set column widths keyed by column name. Source of truth\n * for hidden/manually-sized columns across model swaps and persistence\n * boundaries. Takes precedence over `userColumnWidths` when both are\n * provided.\n */\n userColumnWidthsByName?: ReadonlyMap<ColumnName, number>;\n userRowHeights: ReadonlyMap<ModelIndex, number>;\n /** @deprecated Use onSelectionChange instead. */\n onSelectionChanged?: (gridRanges: readonly GridRange[]) => void;\n /**\n * Called when the selection changes.\n * @param selection The new selection state as a `Selection` object.\n */\n onSelectionChange?: (selection: Selection) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator?: (value: DhType.Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n copyCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme?: Partial<IrisGridThemeType> & Record<string, unknown>;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // Optional key and mouse handlers\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: MouseHandlersProp;\n\n // Pass in a custom renderer to the grid for advanced use cases\n renderer?: IrisGridRenderer;\n\n density?: 'compact' | 'regular' | 'spacious';\n\n getMetricCalculator: GetMetricCalculatorType;\n}\n\n/**\n * The subset of `IrisGridProps` that overrides how the grid presents its\n * model: theme, canvas renderer, extra mouse handlers, and the metric\n * calculator factory. Hosts that render `<IrisGrid>` on behalf of a plugin\n * (e.g. `GridWidgetPlugin`) accept this as a single passthrough bag so they\n * don't need to know each view concern by name, and plugins build it from\n * their own hooks. Kept as a `Pick` (not `Partial<IrisGridProps>`) so it can\n * never clobber structural props like `model` or `ref`.\n */\nexport type IrisGridViewProps = Pick<\n IrisGridProps,\n 'theme' | 'renderer' | 'mouseHandlers' | 'getMetricCalculator'\n>;\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n\n partitionConfig?: PartitionConfig;\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n maximizedAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly SortDescriptor[];\n reverse: boolean;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // polymorphic selection object; source of truth\n gridSelection: Selection | null;\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n loadingCancelShown: boolean;\n loadingBlocksGrid: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n conditionalFormatError: string | null;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: DhType.FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n showNoPastePermissionModal: boolean;\n noPastePermissionError: string;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n hoverTooltipProps: CSSProperties | null;\n hoverDisplayValue: ReactNode;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValueManuallyChanged: boolean;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nclass IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static contextType = IrisGridContext;\n\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n declare context: React.ContextType<typeof IrisGridContext>;\n\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n columnAlignmentMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n isQuickFiltersControlled: false,\n onQuickFiltersChange: undefined,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n isSortsControlled: false,\n onSortsChange: undefined,\n reverse: false,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userColumnWidthsByName: undefined,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n onSelectionChange: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnAllowedCursor: 'linker',\n columnNotAllowedCursor: 'linker-not-allowed',\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n formatter: EMPTY_ARRAY,\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: undefined,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY,\n getMetricCalculator: (\n ...args: ConstructorParameters<typeof IrisGridMetricCalculator>\n ): IrisGridMetricCalculator => new IrisGridMetricCalculator(...args),\n } satisfies Partial<IrisGridProps>;\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedFilterToggleMaximize =\n this.handleAdvancedFilterToggleMaximize.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handlePending = this.handlePending.bind(this);\n this.handlePendingCleared = this.handlePendingCleared.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleGridSelectionChange = this.handleGridSelectionChange.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleSchemaChanged = this.handleSchemaChanged.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleColumnAlignmentChange =\n this.handleColumnAlignmentChange.bind(this);\n this.handleConditionalFormatCreate =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.handleCloseNoPastePermissionModal =\n this.handleCloseNoPastePermissionModal.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.makeQuickFilter = this.makeQuickFilter.bind(this);\n this.setFilterMap = this.setFilterMap.bind(this);\n this.handleFrozenColumnsChanged =\n this.handleFrozenColumnsChanged.bind(this);\n\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n this.showEmptyStrings = true;\n this.showNullStrings = true;\n this.showExtraGroupColumn = true;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\n\n this.gotoRowRef = React.createRef();\n\n this.isCopying = false;\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig,\n userColumnWidths,\n userColumnWidthsByName,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n getMetricCalculator,\n } = props;\n\n const { dh } = model;\n const keyHandlers: KeyHandler[] = [\n new CopyCellKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers: MouseHandlersProp = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n new IrisGridPartitionedTableMouseHandler(this),\n ...(canCopy ? [new IrisGridCopyCellMouseHandler(this)] : []),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = getMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userColumnWidthsByName:\n userColumnWidthsByName != null\n ? new Map(userColumnWidthsByName)\n : undefined,\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n // Remember the factory we used so `maybeRebuildMetricCalculator` (called\n // from `componentDidUpdate` when the `getMetricCalculator` prop changes)\n // can detect a model-driven swap, e.g. pivot-builder's proxy swapping its\n // inner model.\n this.lastMetricCalculatorFactory = getMetricCalculator;\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.mouseHandlers = mouseHandlers;\n this.keyHandlers = keyHandlers;\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n\n partitionConfig:\n partitionConfig ??\n (partitions && partitions.length\n ? { partitions, mode: 'partition' }\n : undefined),\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: quickFilters ? new Map(quickFilters) : new Map(),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n maximizedAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverse: false,\n customColumns: [],\n selectDistinctColumns,\n\n gridSelection: null,\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n columnAlignmentMap: new Map(columnAlignmentMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n conditionalFormatError: null,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings:\n // Pin aggregations to the top if the grid is editable, so that the bottom is reserved for pending rows\n isEditableGridModel(model) && model.isEditable\n ? { ...aggregationSettings, showOnTop: true }\n : aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap ?? new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n showNoPastePermissionModal: false,\n noPastePermissionError: '',\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n hoverTooltipProps: null,\n hoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { model } = this.props;\n this.initState();\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps, prevState: IrisGridState): void {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n quickFilters,\n sorts,\n isQuickFiltersControlled,\n isSortsControlled,\n getMetricCalculator,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n // The renderer and mouse handlers flow through memoized getters in\n // render(), so a `renderer` / `mouseHandlers` prop change naturally\n // propagates on the next render. The metric calculator, however, lives in\n // component state, so mirror that path when the `getMetricCalculator` prop\n // changes (e.g. the pivot-builder middleware swapping the pivot factory in\n // or out) so the calculator stays in sync. Moved columns are not touched\n // here — a model swap resets them via `handleSchemaChanged`.\n if (getMetricCalculator !== prevProps.getMetricCalculator) {\n this.maybeRebuildMetricCalculator();\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n const isChanged = this.applyInputFilters(\n changedInputFilters,\n replaceExistingFilters\n );\n if (isChanged) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\n if (\n sorts !== prevProps.sorts ||\n (!prevProps.isSortsControlled && isSortsControlled)\n ) {\n this.updateSorts(sorts);\n }\n if (\n quickFilters !== prevProps.quickFilters ||\n (!prevProps.isQuickFiltersControlled && isQuickFiltersControlled)\n ) {\n this.updateQuickFilters(quickFilters);\n }\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n const { openOptions } = this.state;\n if (openOptions !== prevState.openOptions) {\n const isAggEditType = (option: OptionItem): boolean =>\n option.type === OptionType.AGGREGATION_EDIT;\n if (\n !openOptions.some(isAggEditType) &&\n prevState.openOptions.some(isAggEditType)\n ) {\n this.removeEmptyAggregations();\n }\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n\n this.showViewportLoading.cancel();\n }\n\n grid: Grid | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'conditionalFormats'\n | 'conditionalFormatEditIndex'\n | 'conditionalFormatPreview'\n | 'customColumns'\n | 'quickFilters'\n | 'reverse'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: boolean;\n\n showEmptyStrings: boolean;\n\n showNullStrings: boolean;\n\n showExtraGroupColumn: boolean;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n loadingScrimStartTime?: number;\n\n loadingScrimFinishTime?: number;\n\n animationFrame?: number;\n\n loadingTimer?: ReturnType<typeof setTimeout>;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\n\n gotoRowRef: React.RefObject<GotoRowElement>;\n\n isCopying: boolean;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n keyHandlers: readonly KeyHandler[];\n\n mouseHandlers: MouseHandlersProp;\n\n /**\n * The metric calculator factory most recently used to instantiate the\n * calculator currently stored in state. Used by `maybeRebuildMetricCalculator`\n * (called from `componentDidUpdate` when the `getMetricCalculator` prop\n * changes) to detect when a different factory is supplied and rebuild.\n */\n lastMetricCalculatorFactory?: GetMetricCalculatorType;\n\n slideTransitionRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n bottomTransitionRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n get gridWrapper(): HTMLDivElement | null {\n return this.grid?.canvasWrapper.current ?? null;\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getAdvancedMenuToggleMaximizeHandler = memoize(\n (column: ModelIndex) =>\n this.handleAdvancedFilterToggleMaximize.bind(this, column),\n { max: 100 }\n );\n\n /**\n * For keyed models, return a function that creates an empty keyed selection.\n * For non-keyed models, return `undefined` to use the Grid default.\n */\n getCachedCreateEmptySelection = memoize(\n (isKeyed: boolean) =>\n isKeyed\n ? (getModel: () => GridModel): Selection =>\n KeyedSelection.empty(getModel as GetKeyedModel)\n : undefined,\n { max: 1 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: DhType.Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter,\n isMaximized: boolean,\n onToggleMaximize: () => void\n ) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n tableUtils={this.tableUtils}\n isMaximized={isMaximized}\n onToggleMaximize={onToggleMaximize}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isOrganizeColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n order: 100,\n });\n }\n if (isOrganizeColumnsAvailable) {\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n order: 200,\n });\n }\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n order: 300,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n order: 400,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n order: 500,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n order: 600,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n order: 700,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n order: 800,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n order: 900,\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n order: 1000,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n order: 1100,\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n order: 1200,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n /**\n * Apply the `transformTableOptions` transform (if any) to the\n * default option list.\n * Catches exceptions so a buggy plugin can't break the grid, and collapses\n * duplicate `type` entries (last writer wins) before sorting by `order`.\n */\n getCachedTransformedOptionItems = memoize(\n (\n items: readonly OptionItem[],\n transformTableOptions: IrisGridProps['transformTableOptions']\n ): readonly OptionItem[] => {\n if (transformTableOptions == null) {\n return items;\n }\n let transformedItems: readonly OptionItem[];\n try {\n transformedItems = transformTableOptions(items);\n } catch (err) {\n log.error(\n 'transformTableOptions threw an error; falling back to defaults.',\n err\n );\n return items;\n }\n // Collapse duplicate `type` entries before sorting. A duplicate `type`\n // would otherwise collide on the `<Menu>` / `<Page>` React key and cause\n // incorrect page reuse. Per the documented composition rule (see the\n // package README), the last writer wins: a later entry — e.g. from a\n // downstream middleware — overrides an earlier one with the same type.\n // `Map.set` keeps the most recent value while preserving the original\n // insertion slot, so an override stays in place unless it changes\n // `order`.\n const byType = new Map<string, OptionItem>();\n transformedItems.forEach(item => {\n byType.set(String(item.type), item);\n });\n // Stably sort by ascending `order`. Items without an `order` sink to\n // the end of the menu (default `Infinity`), while items with an `order`\n // are positioned by their weight. Decorate-sort-undecorate guarantees\n // stability regardless of the engine's sort implementation.\n const sortedItems = [...byType.values()]\n .map((item, index) => ({ item, index }))\n .sort(\n (a, b) =>\n (a.item.order ?? Infinity) - (b.item.order ?? Infinity) ||\n a.index - b.index\n )\n .map(({ item }) => item);\n return Object.freeze(sortedItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getCachedHiddenColumnNames = memoize(\n (\n hiddenColumns: readonly ModelIndex[],\n columns: readonly DhType.Column[]\n ): readonly ColumnName[] =>\n Object.freeze(\n hiddenColumns\n .map(idx => columns[idx]?.name)\n .filter((n): n is ColumnName => n != null)\n ),\n { max: 1 }\n );\n\n getCachedViewState = memoize(\n (hiddenColumns: readonly ColumnName[]): IrisGridViewState =>\n Object.freeze({ hiddenColumns }),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n },\n { max: 1 }\n );\n\n getOperationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): OperationMap => IrisGridUtils.getOperationMap(columns, aggregations),\n { max: 1 }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n IrisGridUtils.getOperationOrder(aggregations),\n { max: 1 }\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules),\n { max: 1000 }\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rulesParam: readonly SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): DhType.CustomColumn[] => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== undefined) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n },\n { max: 1 }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n ),\n { max: 1 }\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null =>\n IrisGridUtils.getModelTotalsConfig(columns, config, aggregationSettings),\n { max: 1 }\n );\n\n getCachedStateOverride = memoize(\n (\n model: IrisGridModel,\n theme: IrisGridThemeType,\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly SortDescriptor[],\n reverse: boolean,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ): IrisGridStateOverride => ({\n model,\n theme,\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly DhType.FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n searchFilter: DhType.FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n contextTheme: IrisGridThemeType | null,\n theme: Partial<IrisGridThemeType> | undefined,\n isEditable: boolean,\n floatingRowCount: number,\n density: 'compact' | 'regular' | 'spacious'\n ): IrisGridThemeType => {\n // If a theme is available via context, use that as the base theme.\n // If iris-grid is standalone without a context, use the default theme.\n const baseTheme = contextTheme ?? createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ?? baseTheme.rowFooterWidth\n : 0;\n\n const { metricCalculator } = this.state;\n if (metricCalculator != null) {\n metricCalculator.resetCalculatedColumnWidths();\n metricCalculator.resetCalculatedRowHeights();\n }\n\n let densityTheme = {};\n if (density === 'compact') {\n densityTheme = baseTheme.density.compact;\n } else if (density === 'spacious') {\n densityTheme = baseTheme.density.spacious;\n }\n\n return {\n ...baseTheme,\n ...densityTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getCachedKeyHandlers = memoize(\n (keyHandlers: readonly KeyHandler[]) =>\n [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order),\n { max: 1 }\n );\n\n getKeyHandlers(): readonly KeyHandler[] {\n const { keyHandlers } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n\n getMetricState(): IrisGridMetricState | undefined {\n const gridMetricState = this.grid?.getMetricState();\n if (gridMetricState == null) {\n return undefined;\n }\n const {\n advancedFilters,\n hoverSelectColumn,\n isFilterBarShown,\n isMenuShown,\n loadingScrimProgress,\n quickFilters,\n sorts,\n reverse,\n rollupConfig,\n } = this.state;\n\n const { model, isSelectingColumn } = this.props;\n\n return {\n ...gridMetricState,\n ...this.getCachedStateOverride(\n model,\n this.getTheme(),\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n ),\n };\n }\n\n getCachedMouseHandlers = memoize(\n (mouseHandlersProp: MouseHandlersProp): readonly GridMouseHandler[] =>\n [...mouseHandlersProp, ...this.mouseHandlers].map(handler =>\n typeof handler === 'function' ? handler(this) : handler\n ),\n { max: 1 }\n );\n\n getCachedRenderer = memoize(\n (rendererProp?: IrisGridRenderer) => rendererProp ?? new IrisGridRenderer(),\n { max: 1 }\n );\n\n get renderer(): IrisGridRenderer {\n const { renderer } = this.props;\n return this.getCachedRenderer(renderer);\n }\n\n getMouseHandlers(): readonly GridMouseHandler[] {\n const { mouseHandlers } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DhType.DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n /**\n * Get the model column index for the provided visible index\n * @param columnIndex Visible column index\n * @returns Model column index, or null if not found\n */\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n if (columnIndex != null && columnIndex < 0) {\n // ColumnBy sources aren't movable, so just return the index directly\n return columnIndex;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): IrisGridThemeType {\n const { model, theme, density } = this.props;\n const { theme: contextTheme, density: contextDensity } = this.context;\n\n return this.getCachedTheme(\n contextTheme,\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount,\n density ?? contextDensity\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: DhType.Column,\n text: string,\n timeZone: string\n ): DhType.FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n * @returns True if any filters were changed as a result of this operation\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): boolean {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let didAdvancedFiltersChange = replaceExisting && advancedFilters.size > 0;\n let didQuickFiltersChange = replaceExisting && quickFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n didAdvancedFiltersChange =\n newAdvancedFilters.delete(modelIndex) || didAdvancedFiltersChange;\n didQuickFiltersChange =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n didQuickFiltersChange;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (didQuickFiltersChange) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n if (didAdvancedFiltersChange) {\n this.setState({ advancedFilters: newAdvancedFilters });\n }\n return didQuickFiltersChange || didAdvancedFiltersChange;\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n const { quickFilters } = this.state;\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n this.requestQuickFiltersChange(newQuickFilters);\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n const { quickFilters } = this.state;\n const newQuickFilters: QuickFilterMap = clearFiltersOnLinkerFilterUpdate\n ? new Map()\n : new Map(quickFilters);\n let didQuickFiltersChange = false;\n filterMap.forEach(({ columnType, filterList }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n didQuickFiltersChange =\n newQuickFilters.delete(columnIndex) || didQuickFiltersChange;\n } else {\n const { formatter } = model;\n newQuickFilters.set(columnIndex, {\n filter: this.makeQuickFilter(\n column,\n combinedText,\n formatter.timeZone\n ),\n text: `${combinedText}`,\n });\n didQuickFiltersChange = true;\n }\n });\n if (didQuickFiltersChange) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n }\n\n removeColumnFilter(modelRange: ModelIndex | BoundedAxisRange): void {\n const clearRange: BoundedAxisRange = Array.isArray(modelRange)\n ? modelRange\n : [modelRange, modelRange];\n const { advancedFilters, quickFilters } = this.state;\n const { isQuickFiltersControlled } = this.props;\n const newAdvancedFilters = new Map(advancedFilters);\n const newQuickFilters = new Map(quickFilters);\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n\n const didAdvancedFiltersChange =\n newAdvancedFilters.size !== advancedFilters.size;\n const didQuickFiltersChange = newQuickFilters.size !== quickFilters.size;\n if (didQuickFiltersChange) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n if (didAdvancedFiltersChange) {\n if (!didQuickFiltersChange || isQuickFiltersControlled) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\n this.setState({ advancedFilters: newAdvancedFilters });\n }\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n const { quickFilters } = this.state;\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n this.requestQuickFiltersChange(newQuickFilters);\n }\n\n clearAllFilters(): void {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n const { isQuickFiltersControlled } = this.props;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n if (quickFilters.size > 0) {\n this.requestQuickFiltersChange(EMPTY_MAP);\n }\n\n const hasOtherFilters = advancedFilters.size > 0 || searchFilter != null;\n if (hasOtherFilters) {\n if (quickFilters.size === 0 || isQuickFiltersControlled) {\n this.startLoading('Clearing Filters...', { resetRanges: true });\n }\n this.setState({\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n if (!isQuickFiltersControlled) {\n this.clearGridInputField();\n }\n }\n\n clearAllAggregations(): void {\n log.debug('Clearing all aggregations');\n\n this.setState({ aggregationSettings: DEFAULT_AGGREGATION_SETTINGS });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters(): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n\n if (advancedFilters.size === 0 && quickFilters.size === 0) {\n log.debug('No filters to rebuild');\n return;\n }\n\n const { columns, formatter } = model;\n\n log.debug('Rebuilding filters');\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n this.startLoading('Rebuilding filters...', { resetRanges: true });\n if (quickFilters.size > 0) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n this.setState({ advancedFilters: newAdvancedFilters });\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: Pick<IrisGridState, 'quickFilters' | 'advancedFilters'>): void {\n this.requestQuickFiltersChange(quickFilters);\n this.setState({ advancedFilters });\n }\n\n updateFormatterSettings(settings?: Settings, forceUpdate = true): void {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const showEmptyStrings = settings?.showEmptyStrings ?? true;\n const showNullStrings = settings?.showNullStrings ?? true;\n const showExtraGroupColumn = settings?.showExtraGroupColumn ?? true;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n settings?.defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n const isShowEmptyStringsChanged =\n this.showEmptyStrings !== showEmptyStrings;\n const isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n const isShowExtraGroupColumnChanged =\n this.showExtraGroupColumn !== showExtraGroupColumn;\n\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged ||\n isShowEmptyStringsChanged ||\n isShowNullStringsChanged ||\n isShowExtraGroupColumnChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.showExtraGroupColumn = showExtraGroupColumn;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n model: IrisGridModel,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const keyColumnIndices = isKeyedGridModel(model)\n ? model.selectionKeyColumnIndices\n : EMPTY_ARRAY;\n const keyColumns = keyColumnIndices\n .map(i => columns[i]?.name)\n .filter((n): n is ColumnName => n != null);\n\n const columnSet = new Set([\n ...alwaysFetchColumns,\n ...floatingColumns,\n ...keyColumns,\n ]);\n\n return Object.freeze([...columnSet]);\n },\n { max: 1 }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound,\n this.showEmptyStrings,\n this.showNullStrings\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): void {\n const { model } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n loadTableState(): void {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverse,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverse: reverse || reverseType === TableUtils.REVERSE_TYPE.POST_SORT,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(model: PartitionedGridModel): Promise<void> {\n try {\n const { partitionConfig } = this.state;\n if (!partitionConfig) {\n this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true,\n });\n this.initializePartitionConfig(model);\n }\n this.setState({ isSelectingPartition: true }, this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n this.handleTableLoadError(error);\n }\n }\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n async initializePartitionConfig(model: PartitionedGridModel): Promise<void> {\n const keyTable = await this.pending.add(\n model.partitionKeysTable(),\n resolved => resolved.close()\n );\n const { dh } = model;\n\n const sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event: DhType.Event<DhType.ViewportData>) => {\n try {\n const { detail: data } = event;\n if (data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n this.stopLoading();\n return;\n }\n const row = data.rows[0];\n const values = keyTable.columns.map(column => row.get(column));\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys',\n };\n keyTable.close();\n this.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition,\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n }\n );\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex: GridRangeIndex): void {\n const { model } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n const data = this.getRowDataMap(rowIndex);\n const partitionColumnSet = new Set(\n model.partitionColumns.map(column => column.name)\n );\n const values = Object.entries(data)\n .filter(([key, _]) => partitionColumnSet.has(key))\n .map(([key, columnData]) => columnData.value);\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: 'partition',\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition,\n });\n }\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n copyColumnHeader(columnIndex: GridRangeIndex, columnDepth = 0): void {\n if (columnIndex === null) {\n return;\n }\n const { canCopy } = this.props;\n const { movedColumns } = this.state;\n\n if (canCopy) {\n const copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model } = this.props;\n const bounded = GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n );\n const selection = new RangedSelection(bounded, () => model);\n this.copySelection(selection, includeHeaders, formatValues, error);\n }\n\n copySelection(\n selection: Selection,\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n\n if (canCopy) {\n // Skip copy while keyed selection is still resolving — selectedKeyValues is empty.\n if (\n selection instanceof KeyedSelection &&\n selection.pendingRanges.length > 0\n ) {\n return;\n }\n const copyOperation = {\n selection,\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copySelection for user without copy permission.');\n }\n }\n\n startLoading(\n loadingText: string,\n {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true,\n } = {}\n ): void {\n this.setState({ loadingText, loadingCancelShown, loadingBlocksGrid });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading(): void {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback(): void {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n aggregationSettings,\n conditionalFormats,\n conditionalFormatEditIndex,\n conditionalFormatPreview,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n conditionalFormats,\n conditionalFormatEditIndex,\n conditionalFormatPreview,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n conditionalFormats: [],\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n customColumns: [],\n quickFilters: new Map(),\n reverse: false,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return (\n this.lastLoadedConfig != null || !IrisGridUtils.isEmptyConfig(this.state)\n );\n }\n\n startListening(model: IrisGridModel): void {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(IrisGridModel.EVENT.PENDING, this.handlePending);\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_CLEARED,\n this.handlePendingCleared\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.SCHEMA_CHANGED,\n this.handleSchemaChanged\n );\n }\n\n stopListening(model: IrisGridModel): void {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(IrisGridModel.EVENT.PENDING, this.handlePending);\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_CLEARED,\n this.handlePendingCleared\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.SCHEMA_CHANGED,\n this.handleSchemaChanged\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\n\n if (\n column == null ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n const metricState = this.getMetricState();\n assertNotNull(metricState);\n\n const scrollColumn = metricCalculator.getScrollLeftForColumn(\n column,\n metricState,\n metrics\n );\n\n if (scrollColumn != null) {\n this.grid?.setViewState({ left: scrollColumn, leftOffset: 0 }, true);\n }\n\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid?.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n /**\n * Updates the entire list of frozen columns.\n * Used by VisibilityOrderingBuilder.\n * @param frozenColumns The new list of frozen columns\n */\n handleFrozenColumnsChanged(frozenColumns: readonly ColumnName[]): void {\n this.setState({ frozenColumns });\n }\n\n toggleExpandColumn(\n modelIndex: ModelIndex,\n expandDescendants?: boolean\n ): void {\n log.debug2('Toggle expand column', modelIndex);\n const { model } = this.props;\n if (isExpandableColumnGridModel(model) && model.hasExpandableColumns) {\n model.setColumnExpanded(\n modelIndex,\n !model.isColumnExpanded(modelIndex),\n expandDescendants\n );\n }\n }\n\n expandAllColumns(): void {\n log.debug2('Expand all columns');\n const { model } = this.props;\n if (\n isExpandableColumnGridModel(model) &&\n model.isExpandAllColumnsAvailable\n ) {\n model.expandAllColumns();\n }\n }\n\n collapseAllColumns(): void {\n log.debug2('Collapse all columns');\n const { model } = this.props;\n if (\n isExpandableColumnGridModel(model) &&\n model.isExpandAllColumnsAvailable\n ) {\n model.collapseAllColumns();\n }\n }\n\n handleColumnVisibilityChanged(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = metrics.calculatedColumnWidths.get(modelIndex);\n\n // If we haven't scrolled to the column, the calculated width will be undefined.\n // This means the function was triggered by the visibility ordering menu,\n // so just reset the column width to default.\n if (defaultWidth !== calculatedWidth && calculatedWidth != null) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator } = this.state;\n const { model } = this.props;\n metricCalculator.resetAllColumnWidths();\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? EMPTY_ARRAY,\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionChange(partitionConfig: PartitionConfig): void {\n this.startLoading('Partitioning...');\n const { partitionConfig: prevConfig } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({ partitionConfig });\n }\n }\n\n handleTableLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n handleViewportUpdated(): void {\n const { model } = this.props;\n const { loadingText, loadingSpinnerShown } = this.state;\n const loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n\n showViewportLoading = throttle(\n (): void => {\n const { model } = this.props;\n const { loadingSpinnerShown } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n });\n }\n },\n VIEWPORT_LOADING_DELAY,\n { leading: false, trailing: true }\n );\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid?.forceUpdate();\n }\n\n /**\n * Updates grid metrics after model columns have changed\n * to keep Grid and IrisGrid metrics in sync since metrics are stored in both places.\n */\n updateMetrics(): void {\n this.setState({\n metrics: this.grid?.updateMetrics(),\n });\n }\n\n toggleSort(columnIndex: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.requestSortsChange(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly SortDescriptor[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n requestSortsChange(sorts: readonly SortDescriptor[]): void {\n const { isSortsControlled, onSortsChange } = this.props;\n onSortsChange?.(sorts);\n if (!isSortsControlled) {\n this.updateSorts(sorts);\n }\n }\n\n updateQuickFilters(quickFilters: ReadonlyQuickFilterMap | null): void {\n const { quickFilters: currentQuickFilters } = this.state;\n if (quickFilters == null) {\n if (currentQuickFilters.size === 0) {\n return;\n }\n } else if (quickFilters === currentQuickFilters) {\n return;\n }\n\n this.startLoading('Filtering...', { resetRanges: true });\n this.setState({ quickFilters: quickFilters ?? EMPTY_MAP });\n this.grid?.forceUpdate();\n }\n\n requestQuickFiltersChange(quickFilters: ReadonlyQuickFilterMap): void {\n const { isQuickFiltersControlled, onQuickFiltersChange } = this.props;\n onQuickFiltersChange?.(quickFilters);\n if (!isQuickFiltersControlled) {\n this.updateQuickFilters(quickFilters);\n }\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.requestSortsChange(sorts);\n }\n\n reverse(reverse: boolean): void {\n this.startLoading('Reversing...');\n this.setState({ reverse });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid?.focus();\n }\n }\n\n isTableSearchAvailable(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar(): void {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef?.current) {\n this.crossColumnRef?.current.focus();\n } else {\n this.grid?.focus();\n }\n }\n );\n }\n\n toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.selection.cursorRow;\n const cursorColumn = this.grid?.state.selection.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name } = model.columns[cursorColumn];\n\n // Use raw value (same as Copy Cell Unformatted) to preserve full precision and timezone\n const text = String(this.getValueForCell(cursorColumn, cursorRow, true));\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): Promise<void> {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column: DhType.Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const dataMap = this.getRowDataMap(rowIndex);\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex: ModelIndex): RowDataMap {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n const visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n return dataMap;\n }\n\n handleAdvancedFilterChange(\n column: DhType.Column,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: DhType.Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnName,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.requestSortsChange(sorts);\n }\n\n handleAdvancedFilterDone(): void {\n this.grid?.focus();\n }\n\n handleAdvancedFilterToggleMaximize(column: GridRangeIndex): void {\n this.setState(({ maximizedAdvancedFilter }) => ({\n maximizedAdvancedFilter:\n maximizedAdvancedFilter === column ? null : column,\n }));\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({\n shownAdvancedFilter: column,\n maximizedAdvancedFilter: null,\n });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true, gotoValueManuallyChanged: false });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false, gotoValueManuallyChanged: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef?.current !== null\n ) {\n this.filterInputRef?.current.focus();\n this.setState({\n shownAdvancedFilter: null,\n maximizedAdvancedFilter: null,\n });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n maximizedAdvancedFilter: null,\n });\n }\n }\n\n handleCancel(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n const { focusedFilterBarColumn, quickFilters } = this.state;\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n this.requestQuickFiltersChange(newQuickFilters);\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleColumnAlignmentChange(\n modelIndex: ModelIndex,\n alignment: CanvasTextAlign | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n\n this.setState(({ columnAlignmentMap = EMPTY_MAP }) => {\n const newColumnAlignmentMap = new Map(columnAlignmentMap);\n if (alignment != null) {\n newColumnAlignmentMap.set(column.name, alignment);\n } else {\n newColumnAlignmentMap.delete(column.name);\n }\n return { columnAlignmentMap: newColumnAlignmentMap };\n });\n }\n\n handleMenu(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: EventT): void {\n const { detail: error } = event as CustomEvent;\n log.error('request failed:', error);\n this.stopLoading();\n const { partitionConfig, conditionalFormatEditIndex } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', { resetRanges: true });\n this.setState({ partitionConfig: undefined }, () => {\n this.initState();\n });\n } else if (conditionalFormatEditIndex !== null) {\n // Preview format failed — surface error in the editor instead of rolling back\n const errorMessage =\n (error as { errorMessage?: string })?.errorMessage ?? String(error);\n this.setState({\n conditionalFormatError: errorMessage,\n conditionalFormatPreview: undefined,\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', { resetRanges: true });\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${error}`));\n }\n }\n\n /**\n * Raise the loading scrim in response to a model-driven `PENDING` event. The\n * model is the start signal, mirroring how `UPDATED`/`COLUMNS_CHANGED` are\n * already the model-driven stop signal. Idempotent: the first message within\n * a commit wins (the `loadingScrimStartTime == null` guard collapses multiple\n * pending operations into a single scrim).\n */\n handlePending(event: EventT): void {\n const { detail } = event as CustomEvent<PendingOperationDetail | undefined>;\n const { text, options } = detail ?? {};\n if (this.loadingScrimStartTime == null) {\n this.startLoading(text ?? 'Loading...', {\n loadingCancelShown: false,\n ...options,\n });\n }\n }\n\n /**\n * Clear the loading scrim in response to a model-driven `PENDING_CLEARED`\n * event. Only needed for operations that do not naturally end in\n * `UPDATED`/`COLUMNS_CHANGED`/`REQUEST_FAILED`.\n *\n * The current contract assumes a single outstanding model-driven operation:\n * `handlePending` collapses concurrent `PENDING` events into one scrim, so\n * this clears unconditionally. That is consistent with the existing scrim,\n * which any model stop signal already clears regardless of what else is in\n * flight. Ref-counting overlapping operations is intentionally deferred to\n * the planned migration that routes the built-in `startLoading` calls\n * through `PENDING`/`PENDING_CLEARED`; only once every raise/clear goes\n * through this pair can a depth counter stay balanced (a counter added now\n * would desync against the direct `startLoading` callers).\n */\n handlePendingCleared(): void {\n this.stopLoading();\n }\n\n handleUpdate(): void {\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n conditionalFormats,\n conditionalFormatEditIndex,\n conditionalFormatPreview,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\n const config = {\n advancedFilters,\n aggregationSettings,\n conditionalFormats,\n conditionalFormatEditIndex,\n conditionalFormatPreview,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!IrisGridUtils.isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleTableChanged(): void {\n const { model } = this.props;\n // For partitioned tables, we want to rebuild filters on table change to ensure filters are applied to the new partition\n const { partitionConfig } = this.state;\n if (isPartitionedGridModel(model) && partitionConfig?.mode !== 'keys') {\n this.rebuildFilters();\n }\n }\n\n /**\n * Handle an inner-model swap on a proxy model (`SCHEMA_CHANGED`). The previous\n * model's `movedColumns` reference indices that may not exist in the new\n * model (e.g. a pivot exposes a different column set), so reset them to the\n * new model's initial order. The metric calculator is rebuilt separately when\n * the `getMetricCalculator` prop changes (see `componentDidUpdate`); a calc\n * whose seed `movedColumns` are now stale self-heals because `getMetrics`\n * reconciles against the grid's current `movedColumns` at draw time.\n */\n handleSchemaChanged(): void {\n const { model } = this.props;\n this.setState({ movedColumns: model.initialMovedColumns });\n\n // Clear the selection if the model type changed (keyed vs non-keyed)\n const currentSelection = this.grid?.state.selection;\n if (currentSelection == null) return;\n const modelIsKeyed = isKeyedGridModel(model);\n const selectionIsKeyed = currentSelection instanceof KeyedSelection;\n if (modelIsKeyed !== selectionIsKeyed) {\n this.grid?.clearSelectedRanges();\n }\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const selectionEndRow = this.grid?.state.selection.selectionEndRow ?? 0;\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n /** @deprecated Use `handleGridSelectionChange` instead. */\n handleSelectionChanged(selectedRanges?: readonly GridRange[]): void {\n assertNotNull(selectedRanges);\n const { onSelectionChanged } = this.props;\n onSelectionChanged?.(selectedRanges);\n }\n\n handleGridSelectionChange(selection: Selection): void {\n const { onSelectionChange } = this.props;\n const { copyOperation } = this.state;\n this.setState({ gridSelection: selection });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n const { cursorRow } = selection;\n if (cursorRow != null) {\n this.setState({ gotoRow: `${cursorRow + 1}` });\n }\n onSelectionChange?.(selection);\n if (\n selection instanceof KeyedSelection &&\n selection.pendingRanges.length > 0\n ) {\n this.resolveKeyedSelection(selection);\n }\n }\n\n /**\n * Resolves a KeyedSelection with ranges outside the current viewport by\n * fetching the missing key values from the server. Triggered by\n * `Grid.setSelectedRanges` (plugin-driven programmatic selection) and by\n * shift+click/drag that spans a scrolled-away region.\n */\n async resolveKeyedSelection(pending: KeyedSelection): Promise<void> {\n const { model } = this.props;\n if (!isKeyedGridModel(model)) return;\n const { pendingRanges } = pending;\n if (pendingRanges.length === 0) return;\n\n try {\n const keyValues = await model.fetchKeyValuesForRowRanges(pendingRanges);\n // Bail if the user changed the selection while we were fetching.\n if (this.grid?.getSelection() !== pending) return;\n this.grid.setSelection(pending.resolve(keyValues));\n } catch (e) {\n log.error('resolveKeyedSelection failed', e);\n // Prevent the unusable pending selection from remaining installed indefinitely.\n if (this.grid?.getSelection() === pending) {\n this.grid.setSelection(pending.clear());\n }\n }\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(\n columnHeaderGroups: readonly (DhType.ColumnGroup | ColumnHeaderGroup)[]\n ): void {\n const { model } = this.props;\n const { columnHeaderGroups: prevColumnHeaderGroups } = this.state;\n if (prevColumnHeaderGroups === columnHeaderGroups) {\n return;\n }\n\n this.setState(\n {\n // undo/redo will pass already parsed groups\n // Parsing them again causes a loop with undo/redo that makes it unusable\n columnHeaderGroups: columnHeaderGroups.every(\n (group): group is ColumnHeaderGroup =>\n isColumnHeaderGroup(group) && group.isValid()\n )\n ? columnHeaderGroups\n : IrisGridUtils.parseColumnHeaderGroups(model, columnHeaderGroups)\n .groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index: number): void {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes; clear any previous preview error on each new update\n handleConditionalFormatEditorUpdate = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview, conditionalFormatError: null });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel(): void {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({\n conditionalFormatEditIndex: null,\n conditionalFormatError: null,\n });\n }\n\n handleUpdateCustomColumns(customColumns: readonly string[]): void {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.requestSortsChange(newSorts);\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n if (newQuickFilters.size !== quickFilters.size) {\n this.requestQuickFiltersChange(newQuickFilters);\n }\n if (newAdvancedFilters.size !== advancedFilters.size) {\n this.setState({ advancedFilters: newAdvancedFilters });\n }\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\n log.debug('Model columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.updateMetrics();\n\n // Make sure stopLoading() is called after the updateMetrics call,\n // otherwise IrisGridModelUpdater queues an extra setViewport based on old metrics.\n this.stopLoading();\n } else {\n this.loadTableState();\n }\n }\n\n /**\n * Rebuild the metric calculator when the `getMetricCalculator` prop swaps for\n * a different factory (e.g. entering or leaving a pivot, where the\n * pivot-builder middleware flips the prop). The renderer and mouse handlers\n * are recomputed via their memoized getters on the next render and do not\n * need explicit handling here.\n *\n * User column-widths / row-heights from the previous calculator are not\n * carried over: a factory swap means the column set has effectively changed,\n * so the stored sizes wouldn't map to anything meaningful.\n *\n * Moved columns are NOT reset here — that is owned by `handleSchemaChanged`\n * (the `SCHEMA_CHANGED` event) so that a plain prop swap against the same\n * model preserves the user's layout. The new calculator is seeded with the\n * current moved columns; `getMetrics` reconciles against the grid's live\n * `movedColumns` at draw time, so a later reset stays consistent.\n */\n maybeRebuildMetricCalculator(): void {\n const { getMetricCalculator } = this.props;\n if (getMetricCalculator === this.lastMetricCalculatorFactory) return;\n\n const { model } = this.props;\n const { movedColumns } = this.state;\n const next = getMetricCalculator({\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n this.lastMetricCalculatorFactory = getMetricCalculator;\n log.debug('Swapping metric calculator', next);\n // Also push the new calculator onto the Grid synchronously so any\n // immediately-following read of `Grid.metricCalculator` (before React has\n // committed the setState below) uses the new instance against the new\n // model rather than invoking the old calculator and potentially throwing.\n if (this.grid != null) {\n this.grid.metricCalculator = next;\n }\n this.setState({ metricCalculator: next });\n }\n\n handlePendingCommitClicked(): Promise<void> {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked(): Promise<void> {\n return this.discardPending();\n }\n\n handlePendingDataUpdated(): void {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid?.forceUpdate();\n }\n\n handleResizeColumn(modelIndex: number): void {\n const { metrics, metricCalculator } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const contentWidth = getOrThrow(metrics.contentColumnWidths, modelIndex);\n\n const userWidths = metricCalculator.getUserColumnWidths();\n if (userWidths.has(modelIndex)) {\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n } else {\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n\n this.grid?.forceUpdate();\n }\n\n handleResizeAllColumns(): void {\n const { metrics, metricCalculator } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const allColumns = [...metrics.allColumnWidths.entries()];\n const visibleColumns = allColumns\n .filter(([_, width]) => width !== 0)\n .map(([modelIndex]) => modelIndex);\n\n const contentWidths = metrics.contentColumnWidths;\n const userWidths = metricCalculator.getUserColumnWidths();\n\n const manualColumns = visibleColumns.filter(modelIndex =>\n userWidths.has(modelIndex)\n );\n\n if (visibleColumns.length === manualColumns.length) {\n // All columns are manually sized, flip all to auto resize\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const modelIndex = visibleColumns[i];\n const contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n }\n } else {\n // Flip all to manual sized\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const modelIndex = visibleColumns[i];\n const contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n }\n\n this.grid?.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n * @param added The aggregations that were added\n * @param removed The aggregations that were removed\n */\n handleAggregationsChange(\n aggregationSettings: AggregationSettings,\n added: AggregationOperation[] = [],\n removed: AggregationOperation[] = []\n ): void {\n log.debug('handleAggregationsChange', aggregationSettings, added, removed);\n const { rollupConfig } = this.state;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n // Do not start loading if this is rollup and added / removed aggregations are prohibited for rollups\n const changes = [...added, ...removed];\n const shouldStartLoading = !(\n isRollup &&\n changes.length > 0 &&\n changes.every(op => AggregationUtils.isRollupProhibited(op))\n );\n\n if (shouldStartLoading) {\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n }\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param aggregation The new aggregation\n */\n handleAggregationChange(aggregation: Aggregation): void {\n log.debug('handleAggregationChange', aggregation);\n const { rollupConfig } = this.state;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n // Do not start loading if this is rollup and the aggregation is prohibited for rollups\n const shouldStartLoading = !(\n isRollup && AggregationUtils.isRollupProhibited(aggregation.operation)\n );\n\n if (shouldStartLoading) {\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n }\n\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation: Aggregation): void {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig: UIRollupConfig): void {\n log.info('Rollup change', rollupConfig);\n\n // Un-hide hidden group-by columns.\n if (rollupConfig?.columns != null && rollupConfig.columns.length > 0) {\n const { metricCalculator } = this.state;\n const userColumnWidthsByName =\n metricCalculator.getUserColumnWidthsByName();\n rollupConfig.columns.forEach(name => {\n if (userColumnWidthsByName.get(name) === 0) {\n metricCalculator.resetColumnWidthByName(name);\n }\n });\n }\n\n this.resetGridViewState();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n this.requestSortsChange(EMPTY_ARRAY);\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: EMPTY_ARRAY,\n frozenColumns: EMPTY_ARRAY,\n reverse: false,\n selectDistinctColumns: EMPTY_ARRAY,\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n this.clearAllAggregations();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.requestSortsChange(EMPTY_ARRAY);\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n reverse: false,\n });\n }\n\n handleDownloadTableStart(): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(\n fileName: string,\n frozenTable: DhType.Table,\n tableSubscription: DhType.TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations(): void {\n log.debug('removeEmptyAggregations');\n\n this.setState(({ aggregationSettings }) => {\n const { aggregations } = aggregationSettings;\n const newAggregations = aggregations.filter(\n a => a.selected.length > 0 || a.invert\n );\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: newAggregations,\n },\n };\n }\n return { selectedAggregation: null, aggregationSettings };\n });\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.selection.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): void {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange(): void {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n handleOverflowClose(): void {\n this.setState({\n showOverflowModal: false,\n });\n this.grid?.focus(); // Focus on the grid after closing the overflow modal\n }\n\n handleOpenNoPastePermissionModal(errorMessage: string): void {\n this.setState({\n showNoPastePermissionModal: true,\n noPastePermissionError: errorMessage,\n });\n }\n\n handleCloseNoPastePermissionModal(): void {\n this.setState({\n showNoPastePermissionModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n const { model } = this.props;\n const isExpandAllAvailable =\n isExpandableGridModel(model) && model.isExpandAllAvailable;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n {isExpandAllAvailable && (\n <>\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </>\n )}\n </div>\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n getHoverTooltip = memoize(\n (hoverTooltipProps: CSSProperties): ReactNode => {\n if (hoverTooltipProps == null) {\n return null;\n }\n\n const { hoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...hoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">{hoverDisplayValue}</div>\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.selection.cursorRow;\n const {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged,\n } = this.state;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n const prevColumn = IrisGridUtils.getColumnByName(\n model.columns,\n prevColumnName\n );\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && column.type === prevColumn?.type) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input, gotoValueManuallyChanged: true });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n /**\n * Render the input field for the focused filter\n * @param metrics Grid metrics\n * @param metricCalculator Metric calculator\n * @param focusedFilterBarColumn Column index for the focused filter\n * @param quickFilters Quick filters map\n * @param advancedFilters Advanced filters map\n * @returns The filter input field element or null if not applicable\n */\n getFilterBarInput(\n metrics: GridMetrics | undefined,\n metricCalculator: IrisGridMetricCalculator,\n focusedFilterBarColumn: VisibleIndex | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap\n ): ReactElement | null {\n if (metrics == null || focusedFilterBarColumn == null) {\n return null;\n }\n\n const metricState = this.getMetricState();\n if (metricState == null) {\n return null;\n }\n\n const filterBoxCoordinates = metricCalculator.getFilterInputCoordinates(\n focusedFilterBarColumn,\n metricState,\n metrics\n );\n if (filterBoxCoordinates == null) {\n return null;\n }\n\n const debounceMs = Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n );\n const {\n x,\n y,\n width: fieldWidth,\n height: fieldHeight,\n } = filterBoxCoordinates;\n const { width } = metrics;\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;\n const showAdvancedFilterButton =\n metricCalculator.getAdvancedFilterButtonCoordinates(\n focusedFilterBarColumn,\n metricState,\n metrics\n ) != null;\n return (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n showAdvancedFilterButton={showAdvancedFilterButton}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid?.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n\n render(): ReactElement | null {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n transformTableOptions,\n } = this.props;\n const { cellInputRendererRegistry } = this.context;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n maximizedAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n conditionalFormatError,\n\n columnAlignmentMap,\n\n sorts,\n reverse,\n customColumns,\n\n gridSelection,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n showNoPastePermissionModal,\n noPastePermissionError,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n hoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n const { columnHeaderHeight: singleColumnHeaderHeight } = theme;\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n model,\n theme,\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n const focusField = isFilterBarShown\n ? this.getFilterBarInput(\n metrics,\n metricCalculator,\n focusedFilterBarColumn,\n quickFilters,\n advancedFilters\n )\n : null;\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div\n className=\"iris-grid-loading\"\n style={loadingBlocksGrid ? { top: gridY } : {}}\n >\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const metricState = this.getMetricState();\n\n // Advanced Filter buttons\n const { visibleColumns } = metrics;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const modelColumn = this.getModelColumn(columnIndex);\n\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n const buttonCoordinates =\n isFilterable && metricState\n ? metricCalculator.getAdvancedFilterButtonCoordinates(\n columnIndex,\n metricState,\n metrics\n )\n : null;\n if (buttonCoordinates != null) {\n const { x, y } = buttonCoordinates;\n const style: CSSProperties = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <Button\n kind=\"ghost\"\n className={classNames(\n 'btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({\n shownAdvancedFilter: columnIndex,\n maximizedAdvancedFilter: null,\n });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: CSSProperties = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n\n const sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(`Invalid sort direction: ${sortDirection}`);\n }\n\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n isMaximized={\n shownAdvancedFilter === columnIndex &&\n maximizedAdvancedFilter === columnIndex\n }\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n options={{\n positionFixed: true,\n }}\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter,\n shownAdvancedFilter === columnIndex &&\n maximizedAdvancedFilter === columnIndex,\n this.getAdvancedMenuToggleMaximizeHandler(columnIndex)\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const defaultOptionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isOrganizeColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n const optionItems = this.getCachedTransformedOptionItems(\n defaultOptionItems,\n transformTableOptions\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n onFrozenColumnsChanged={this.handleFrozenColumnsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\n columns={model.columns}\n rule={conditionalFormatPreview}\n errorMessage={conditionalFormatError ?? undefined}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n availablePlacements={\n isEditableGridModel(model) && model.isEditable\n ? ['top']\n : ['top', 'bottom']\n }\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n dh={model.dh}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selection={gridSelection}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default: {\n // Plugin-contributed items render their own page via\n // `configPage`. The page is isolated inside an error\n // boundary so a throwing plugin doesn't tear down the\n // entire grid subtree. Built-in items that hit the default\n // case indicate a programmer error (unhandled enum case).\n const PluginPage = option.configPage;\n if (PluginPage == null) {\n throw Error(`Unexpected option type ${option.type}`);\n }\n return (\n <PluginTableOptionsErrorBoundary\n itemType={String(option.type)}\n key={String(option.type)}\n >\n <PluginPage\n model={model}\n viewState={this.getCachedViewState(\n this.getCachedHiddenColumnNames(hiddenColumns, model.columns)\n )}\n onBack={this.handleMenuBack}\n />\n </PluginTableOptionsErrorBoundary>\n );\n }\n }\n });\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n nodeRef={this.slideTransitionRef}\n >\n <div\n ref={this.slideTransitionRef}\n className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\"\n >\n {isPartitionedGridModel(model) && model.isPartitionRequired && (\n <IrisGridPartitionSelector\n model={model}\n partitionConfig={partitionConfig}\n onChange={this.handlePartitionChange}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n nodeRef={this.bottomTransitionRef}\n >\n <div ref={this.bottomTransitionRef} className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n createEmptySelection={this.getCachedCreateEmptySelection(\n isKeyedGridModel(model)\n )}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={this.getKeyHandlers()}\n mouseHandlers={this.getMouseHandlers()}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onSelectionChange={this.handleGridSelectionChange}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n cellInputRendererRegistry={\n cellInputRendererRegistry ?? DEFAULT_REGISTRY\n }\n stateOverride={stateOverride}\n theme={theme}\n >\n <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n columnAlignmentMap={columnAlignmentMap}\n sorts={sorts}\n reverse={reverse}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount,\n model,\n this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n model.dh,\n model.columns,\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? undefined\n : undefined\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n partitionConfig={partitionConfig}\n showExtraGroupColumn={this.showExtraGroupColumn}\n />\n )}\n {!isMenuShown && (\n <div\n className=\"grid-settings-button\"\n style={{\n height: `${singleColumnHeaderHeight}px`,\n width: `${singleColumnHeaderHeight}px`,\n }}\n >\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {hoverTooltipProps && this.getHoverTooltip(hoverTooltipProps)}\n </Grid>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <SlideTransition\n in={isMenuShown}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n {[\n <Page\n key=\"table-options\"\n title=\"Table Options\"\n onClose={this.handleMenuClose}\n >\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>,\n ...openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n )),\n ]}\n </Stack>\n </div>\n </SlideTransition>\n <ContextActions actions={this.contextActions} />\n <NoPastePermissionModal\n isOpen={showNoPastePermissionModal}\n onClose={this.handleCloseNoPastePermissionModal}\n errorMessage={noPastePermissionError}\n />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":";;;;;;;;;;;;;AAAA,OAAOA,KAAK,IAEVC,SAAS,QAIJ,OAAO;AACd,OAAOC,OAAO,MAAM,UAAU;AAC9B,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,wBAAwB;AACtD,OAAOC,SAAS,MAAM,iBAAiB;AACvC,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SACEC,cAAc,EACdC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,MAAM,EACNC,WAAW,EACXC,OAAO,EAIPC,MAAM,EACNC,kBAAkB,EAElBC,eAAe,QACV,uBAAuB;AAC9B,SACEC,IAAI,EAGJC,SAAS,EAETC,SAAS,EAQTC,mBAAmB,EAEnBC,qBAAqB,EACrBC,oBAAoB,EACpBC,2BAA2B,EAE3BC,eAAe,QACV,iBAAiB;AACxB,SACEC,KAAK,EACLC,cAAc,EACdC,aAAa,EACbC,oBAAoB,EACpBC,OAAO,EACPC,eAAe,EACfC,MAAM,EACNC,QAAQ,EACRC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,iBAAiB,EACjBC,gBAAgB,EAChBC,OAAO,QACF,kBAAkB;AAEzB,SACEC,SAAS,EACTC,SAAS,EACTC,cAAc,EACdC,UAAU,EAQVC,eAAe,QAEV,wBAAwB;AAC/B,SACEC,aAAa,EACbC,eAAe,EACfC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,YAAY,EACZC,eAAe,EACfC,UAAU,QAEL,kBAAkB;AACzB,SACEC,IAAI,IAAIC,UAAU,QAEb,oBAAoB;AAC3B,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,OAAOC,KAAK,MAAM,cAAc;AAAC,SAG/BC,gBAAgB;AAAA,OAEXC,oBAAoB;AAAA,OACpBC,mBAAmB;AAAA,OACnBC,gBAAgB;AAAA,SAErBC,kBAAkB,EAClBC,qBAAqB,EACrBC,cAAc,EACdC,iBAAiB;AAAA,SAGjBC,gCAAgC,EAChCC,gCAAgC,EAChCC,iCAAiC,EACjCC,0BAA0B,EAC1BC,4BAA4B,EAC5BC,8BAA8B,EAC9BC,oCAAoC,EACpCC,0BAA0B,EAC1BC,2BAA2B,EAC3BC,wBAAwB,EACxBC,yBAAyB,EACzBC,mBAAmB;AAAA,OAEdC,cAAc;AAAA,OACdC,wBAAwB;AAAA,OAGxBC,oBAAoB;AAAA,OACpBC,gBAAgB;AAAA,SAErBC,0BAA0B;AAAA,OAGrBC,gBAAgB;AAAA;AAAA,OAEhBC,qBAAqB;AAAA,SAE1BC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBC,YAAY,EACZC,mBAAmB,EACnBC,UAAU,EACVC,UAAU,EACVC,gBAAgB,EAChBC,UAAU,EACVC,yBAAyB,EACzBC,0BAA0B;AAAA,SAGnBC,gBAAgB,EAAEC,eAAe;AAAA,OACnCC,aAAa;AAAA,SACXC,gBAAgB;AAAA,SAChBC,cAAc;AAAA,OAChBC,aAAa;AAAA,OACbC,iBAAiB;AAAA,SAEtBC,sBAAsB;AAAA,OAIjBC,yBAAyB;AAAA,OACzBC,qBAAqB;AAAA,OACrBC,+BAA+B;AAAA,OAC/BC,oBAAoB;AAAA,OACpBC,oBAAoB;AAAA,OAGpBC,SAAS;AAAA,OACTC,yBAAyB;AAAA,OAEzBC,uBAAuB;AAAA,OACvBC,yBAAyB;AAAA,OACzBC,OAAO;AAAA,SA2BLC,uBAAuB;AAAA,SACvBC,sBAAsB;AAAA,SACtBC,mBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAE5B,IAAMC,GAAG,GAAGtH,GAAG,CAACuH,MAAM,CAAC,UAAU,CAAC;AAElC,IAAMC,sBAAsB,GAAG,GAAG;AAElC,IAAMC,wBAAwB,GAAG,GAAG;AAEpC,IAAMC,mBAAmB,GAAG,GAAG;AAE/B,IAAMC,iBAAiB,GAAG,GAAG;AAE7B,IAAMC,+BAA+B,GAAG,GAAG;AAE3C,IAAMC,4BAA4B,GAAGC,MAAM,CAACC,MAAM,CAAC;EACjDC,YAAY,EAAEtF,WAAW;EACzBuF,SAAS,EAAE;AACb,CAAC,CAAC;AAEF,IAAMC,wBAAwB,sCAAsC;;AA4KpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA8GA,MAAMC,QAAQ,SAASxI,SAAS,CAA+B;EAwF7DyI,WAAWA,CAACC,KAAoB,EAAE;IAAA,IAAAC,kBAAA,EAAAC,qBAAA,EAAAC,eAAA;IAChC,KAAK,CAACH,KAAK,CAAC;IAACI,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAqiBf;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAuCA;AACF;AACA;AACA;AACA;AACA;IALEA,eAAA;IAAAA,eAAA,0CAQsD/I,KAAK,CAACgJ,SAAS,CAAC,CAAC;IAAAD,eAAA,2CAEhB/I,KAAK,CAACgJ,SAAS,CAAC,CAAC;IAAAD,eAAA,uCAMzC7I,OAAO,CACnC+I,MAAkB,IAAK,IAAI,CAACC,wBAAwB,CAACC,IAAI,CAAC,IAAI,EAAEF,MAAM,CAAC,EACxE;MAAEG,GAAG,EAAE;IAAI,CACb,CAAC;IAAAL,eAAA,+CAEsC7I,OAAO,CAC3C+I,MAAkB,IACjB,IAAI,CAACI,kCAAkC,CAACF,IAAI,CAAC,IAAI,EAAEF,MAAM,CAAC,EAC5D;MAAEG,GAAG,EAAE;IAAI,CACb,CAAC;IAED;AACF;AACA;AACA;IAHEL,eAAA,wCAIgC7I,OAAO,CACpCoJ,OAAgB,IACfA,OAAO,GACFC,QAAyB,IACxBlD,cAAc,CAACmD,KAAK,CAACD,QAAyB,CAAC,GACjDE,SAAS,EACf;MAAEL,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,6CAEoC7I,OAAO,CAC1C,CACEwJ,KAAoB,EACpBT,MAAqB,EACrBU,qBAAwD,EACxDC,aAAwC,EACxCC,SAAoB,EACpBC,WAAoB,EACpBC,gBAA4B,kBAE5BxC,IAAA,CAAClC,qBAAqB;MACpBqE,KAAK,EAAEA,KAAM;MACbT,MAAM,EAAEA,MAAO;MACfe,cAAc,EAAE,IAAI,CAACC,0BAA2B;MAChDC,YAAY,EAAE,IAAI,CAACC,8BAA+B;MAClDC,MAAM,EAAE,IAAI,CAACC,wBAAyB;MACtCC,OAAO,EAAEX,qBAAsB;MAC/BC,aAAa,EAAEA,aAAc;MAC7BC,SAAS,EAAEA,SAAU;MACrBU,UAAU,EAAE,IAAI,CAACA,UAAW;MAC5BT,WAAW,EAAEA,WAAY;MACzBC,gBAAgB,EAAEA;IAAiB,CACpC,CACF,EACD;MAAEX,GAAG,EAAE;IAAG,CACZ,CAAC;IAAAL,eAAA,+BAEsB7I,OAAO,CAC5B,CACEsK,uBAAgC,EAChCC,wBAAiC,EACjCC,wBAAiC,EACjCC,0BAAmC,EACnCC,iBAA0B,EAC1BC,iBAA0B,EAC1BC,yBAAkC,EAClCC,iBAA0B,EAC1BC,qBAA6B,EAC7BC,qBAA6B,EAC7BC,mBAA2B,EAC3BC,gBAAyB,EACzBC,aAAsB,EACtBC,cAAuB,EACvBC,eAAwB,EACxBC,WAAoB,EACpBC,mBAA4B,KACF;MAC1B,IAAMC,WAAyB,GAAG,EAAE;MACpC,IAAIjB,uBAAuB,EAAE;QAC3BiB,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAACiG,aAAa;UAC9BC,KAAK,EAAE,eAAe;UACtBC,IAAI,EAAElK,aAAa;UACnBmK,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAIpB,0BAA0B,EAAE;QAC9Bc,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAACqG,2BAA2B;UAC5CH,KAAK,EAAE,kBAAkB;UACzBC,IAAI,EAAEpK,KAAK;UACXqK,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAIrB,wBAAwB,EAAE;QAC5Be,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAACsG,sBAAsB;UACvCJ,KAAK,EAAE,wBAAwB;UAC/BC,IAAI,EAAE9J,MAAM;UACZ+J,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAItB,wBAAwB,EAAE;QAC5BgB,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAACuG,qBAAqB;UACtCL,KAAK,EAAE,gBAAgB;UACvBC,IAAI,EAAExJ,iBAAiB;UACvByJ,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAInB,iBAAiB,EAAE;QACrBa,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAACwG,WAAW;UAC5BN,KAAK,EAAE,aAAa;UACpBC,IAAI,EAAEjK,oBAAoB;UAC1BkK,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAIlB,iBAAiB,EAAE;QACrBY,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAACyG,YAAY;UAC7BP,KAAK,EAAE,mBAAmB;UAC1BC,IAAI,EAAEvJ,gBAAgB;UACtBwJ,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAIjB,yBAAyB,EAAE;QAC7BW,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAAC0G,eAAe;UAChCR,KAAK,EAAE,wBAAwB;UAC/BC,IAAI,EAAE1J,MAAM;UACZ2J,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAIhB,iBAAiB,IAAIM,cAAc,EAAE;QACvCI,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAAC2G,cAAc;UAC/BT,KAAK,EAAE,cAAc;UACrBC,IAAI,EAAE/J,eAAe;UACrBgK,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAIP,mBAAmB,EAAE;QACvBC,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAAC4G,iBAAiB;UAClCV,KAAK,EAAE,mBAAmB;UAC1BC,IAAI,EAAEtJ,OAAO;UACbuJ,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACAN,WAAW,CAACC,IAAI,CAAC;QACfC,IAAI,EAAEhG,UAAU,CAAC6G,aAAa;QAC9BX,KAAK,EAAE,eAAe;QACtBY,QAAQ,EAAEzB,qBAAqB,CAAC0B,QAAQ,CAACC,cAAc,CAAC,CAAC;QACzDb,IAAI,EAAE7J,QAAQ;QACd2K,IAAI,EAAEzB,gBAAgB;QACtB0B,QAAQ,EAAE7B,qBAAqB,CAAC8B,MAAM;QACtCf,KAAK,EAAE;MACT,CAAC,CAAC;MACF,IAAIT,eAAe,EAAE;QACnBG,WAAW,CAACC,IAAI,CAAC;UACfC,IAAI,EAAEhG,UAAU,CAACoH,UAAU;UAC3BlB,KAAK,EAAE,YAAY;UACnBY,QAAQ,EAAExB,qBAAqB,CAACyB,QAAQ,CAACC,cAAc,CAAC,CAAC;UACzDb,IAAI,EAAEzJ,QAAQ;UACduK,IAAI,EAAExB,aAAa;UACnByB,QAAQ,EAAE5B,qBAAqB,CAAC6B,MAAM;UACtCf,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACAN,WAAW,CAACC,IAAI,CAAC;QACfC,IAAI,EAAEhG,UAAU,CAACqH,IAAI;QACrBnB,KAAK,EAAE,OAAO;QACdY,QAAQ,EAAEvB,mBAAmB,CAACwB,QAAQ,CAACC,cAAc,CAAC,CAAC;QACvDb,IAAI,EAAE3J,OAAO;QACbyK,IAAI,EAAErB,WAAW;QACjBsB,QAAQ,EAAE3B,mBAAmB,CAAC4B,MAAM;QACpCf,KAAK,EAAE;MACT,CAAC,CAAC;MAEF,OAAO3D,MAAM,CAACC,MAAM,CAACoD,WAAW,CAAC;IACnC,CAAC,EACD;MAAErC,GAAG,EAAE;IAAE,CACX,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;IALEL,eAAA,0CAMkC7I,OAAO,CACvC,CACE+M,KAA4B,EAC5BC,qBAA6D,KACnC;MAC1B,IAAIA,qBAAqB,IAAI,IAAI,EAAE;QACjC,OAAOD,KAAK;MACd;MACA,IAAIE,gBAAuC;MAC3C,IAAI;QACFA,gBAAgB,GAAGD,qBAAqB,CAACD,KAAK,CAAC;MACjD,CAAC,CAAC,OAAOG,GAAG,EAAE;QACZxF,GAAG,CAACyF,KAAK,CACP,iEAAiE,EACjED,GACF,CAAC;QACD,OAAOH,KAAK;MACd;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAMK,MAAM,GAAG,IAAIC,GAAG,CAAqB,CAAC;MAC5CJ,gBAAgB,CAACK,OAAO,CAACC,IAAI,IAAI;QAC/BH,MAAM,CAACI,GAAG,CAACC,MAAM,CAACF,IAAI,CAAC9B,IAAI,CAAC,EAAE8B,IAAI,CAAC;MACrC,CAAC,CAAC;MACF;MACA;MACA;MACA;MACA,IAAMG,WAAW,GAAG,CAAC,GAAGN,MAAM,CAACO,MAAM,CAAC,CAAC,CAAC,CACrCC,GAAG,CAAC,CAACL,IAAI,EAAEM,KAAK,MAAM;QAAEN,IAAI;QAAEM;MAAM,CAAC,CAAC,CAAC,CACvCC,IAAI,CACH,CAACC,CAAC,EAAEC,CAAC;QAAA,IAAAC,aAAA,EAAAC,aAAA;QAAA,OACH,EAAAD,aAAA,GAACF,CAAC,CAACR,IAAI,CAAC1B,KAAK,cAAAoC,aAAA,cAAAA,aAAA,GAAIE,QAAQ,MAAAD,aAAA,GAAKF,CAAC,CAACT,IAAI,CAAC1B,KAAK,cAAAqC,aAAA,cAAAA,aAAA,GAAIC,QAAQ,CAAC,IACvDJ,CAAC,CAACF,KAAK,GAAGG,CAAC,CAACH,KAAK;MAAA,CACrB,CAAC,CACAD,GAAG,CAACQ,IAAA;QAAA,IAAGb,IAAI,GAAAa,IAAA,CAAJb,IAAI;QAAA,OAAOA,IAAI;MAAA,EAAC;MAC1B,OAAOrF,MAAM,CAACC,MAAM,CAACuF,WAAW,CAAC;IACnC,CAAC,EACD;MAAExE,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,iCAEwB7I,OAAO,CAC9B,CACEqO,gBAA0C,EAC1CC,gBAA8B,KAE9BlI,aAAa,CAACmI,gBAAgB,CAC5B,IAAIlB,GAAG,CAAC,CAAC,GAAGgB,gBAAgB,CAACG,mBAAmB,EAAE,GAAGF,gBAAgB,CAAC,CACxE,CAAC,EACH;MAAEpF,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,qCAE4B7I,OAAO,CAClC,CACEyO,aAAoC,EACpCC,OAAiC,KAEjCxG,MAAM,CAACC,MAAM,CACXsG,aAAa,CACVb,GAAG,CAACe,GAAG;MAAA,IAAAC,YAAA;MAAA,QAAAA,YAAA,GAAIF,OAAO,CAACC,GAAG,CAAC,cAAAC,YAAA,uBAAZA,YAAA,CAAcC,IAAI;IAAA,EAAC,CAC9BC,MAAM,CAAEC,CAAC,IAAsBA,CAAC,IAAI,IAAI,CAC7C,CAAC,EACH;MAAE7F,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,6BAEoB7I,OAAO,CACzByO,aAAoC,IACnCvG,MAAM,CAACC,MAAM,CAAC;MAAEsG;IAAc,CAAC,CAAC,EAClC;MAAEvF,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,4BAEmB7I,OAAO,CACzB,CACE0O,OAAiC,EACjCtG,YAAoC,KACT;MAC3B,IAAM4G,cAAc,GAAG,CAAC,CAA2C;MACnE5G,YAAY,CAACkF,OAAO,CAAC2B,KAAA,IAAqC;QAAA,IAAlCC,SAAS,GAAAD,KAAA,CAATC,SAAS;UAAEC,QAAQ,GAAAF,KAAA,CAARE,QAAQ;UAAEC,MAAM,GAAAH,KAAA,CAANG,MAAM;QACjDJ,cAAc,CAACE,SAAS,CAAC,GAAG5J,gBAAgB,CAAC+J,uBAAuB,CAClEX,OAAO,EACPQ,SAAS,EACTC,QAAQ,EACRC,MACF,CAAC;MACH,CAAC,CAAC;MACF,OAAOJ,cAAc;IACvB,CAAC,EACD;MAAE9F,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,0BAEiB7I,OAAO,CACvB,CACE0O,OAAiC,EACjCtG,YAAoC,KACnBhC,aAAa,CAACkJ,eAAe,CAACZ,OAAO,EAAEtG,YAAY,CAAC,EACvE;MAAEc,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,4BAEmB7I,OAAO,CACxBoI,YAAoC,IACnChC,aAAa,CAACmJ,iBAAiB,CAACnH,YAAY,CAAC,EAC/C;MAAEc,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,iCAEwB7I,OAAO,CAC9B,CACEwP,EAAiB,EACjBd,OAAiC,EACjCe,KAAuC,KACpChM,gBAAgB,CAAC+L,EAAE,EAAEd,OAAO,EAAEe,KAAK,CAAC,EACzC;MAAEvG,GAAG,EAAE;IAAK,CACd,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPEL,eAAA,wCAQgC7I,OAAO,CACrC,CACEwP,EAAiB,EACjBd,OAAiC,EACjCgB,UAA4C,EAC5CC,OAA+B,EAC/BC,SAAkB,KACQ;MAC1BlI,GAAG,CAACmI,KAAK,CACP,+BAA+B,EAC/BH,UAAU,EACVC,OAAO,EACPC,SACF,CAAC;MACD,IAAID,OAAO,KAAKpG,SAAS,IAAIqG,SAAS,KAAKrG,SAAS,EAAE;QACpD,IAAMkG,KAAK,GAAG,CAAC,GAAGC,UAAU,CAAC;QAC7BD,KAAK,CAACG,SAAS,CAAC,GAAGD,OAAO;QAC1B,OAAO,IAAI,CAACG,sBAAsB,CAACN,EAAE,EAAEd,OAAO,EAAEe,KAAK,CAAC;MACxD;MAEA,OAAO,IAAI,CAACK,sBAAsB,CAACN,EAAE,EAAEd,OAAO,EAAEgB,UAAU,CAAC;IAC7D,CAAC,EACD;MAAExG,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,+BAEsB7I,OAAO,CAC5B,CACE+P,eAAyC,EACzCC,MAAkC,EAClCC,mBAAwC,KAExC7J,aAAa,CAAC8J,oBAAoB,CAChCH,eAAe,EACfC,MAAM,EACNC,mBACF,CAAC,EACH;MAAE/G,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,+BAEsB7I,OAAO,CAC5B,CACE0O,OAAiC,EACjCsB,MAAkC,EAClCC,mBAAwC,KAExC7J,aAAa,CAAC+J,oBAAoB,CAACzB,OAAO,EAAEsB,MAAM,EAAEC,mBAAmB,CAAC,EAC1E;MAAE/G,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,iCAEwB7I,OAAO,CAC9B,CACEwJ,KAAoB,EACpB4G,KAAwB,EACxBC,iBAAiC,EACjCpF,gBAAyB,EACzBqF,iBAA0B,EAC1BC,oBAAmC,EACnCC,YAAoC,EACpCC,eAA0C,EAC1CC,KAAgC,EAChCC,OAAgB,EAChBC,YAAwC,EACxCC,WAAoB,MACO;MAC3BrH,KAAK;MACL4G,KAAK;MACLC,iBAAiB;MACjBpF,gBAAgB;MAChBqF,iBAAiB;MACjBC,oBAAoB;MACpBC,YAAY;MACZC,eAAe;MACfC,KAAK;MACLC,OAAO;MACPC,YAAY;MACZC;IACF,CAAC,CAAC,EACF;MAAE3H,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,0BAEiB7I,OAAO,CACvB,CACE8Q,aAAgD,EAChDN,YAAoC,EACpCC,eAA0C,EAC1CM,YAAgD,KAC7C,CACH,IAAID,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,CAAC,EACxB,GAAG1K,aAAa,CAAC4K,uBAAuB,CAACR,YAAY,CAAC,EACtD,GAAGpK,aAAa,CAAC4K,uBAAuB,CAACP,eAAe,CAAC,EACzD,IAAIM,YAAY,KAAKxH,SAAS,GAAG,CAACwH,YAAY,CAAC,GAAG,EAAE,CAAC,CACtD,EACD;MAAE7H,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,yBAEgB7I,OAAO,CACtB,CACEiR,YAAsC,EACtCb,KAA6C,EAC7Cc,UAAmB,EACnBC,gBAAwB,EACxBC,OAA2C,KACrB;MAAA,IAAAC,qBAAA;MACtB;MACA;MACA,IAAMC,SAAS,GAAGL,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAIhM,0BAA0B,CAAC,CAAC;;MAE9D;MACA,IAAMsM,cAAc,GAClBJ,gBAAgB,GAAG,CAAC,IAAAE,qBAAA,GAChBjB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEmB,cAAc,cAAAF,qBAAA,cAAAA,qBAAA,GAAIC,SAAS,CAACC,cAAc,GACjD,CAAC;MAEP,IAAQlD,gBAAgB,GAAK,IAAI,CAACmD,KAAK,CAA/BnD,gBAAgB;MACxB,IAAIA,gBAAgB,IAAI,IAAI,EAAE;QAC5BA,gBAAgB,CAACoD,2BAA2B,CAAC,CAAC;QAC9CpD,gBAAgB,CAACqD,yBAAyB,CAAC,CAAC;MAC9C;MAEA,IAAIC,YAAY,GAAG,CAAC,CAAC;MACrB,IAAIP,OAAO,KAAK,SAAS,EAAE;QACzBO,YAAY,GAAGL,SAAS,CAACF,OAAO,CAACQ,OAAO;MAC1C,CAAC,MAAM,IAAIR,OAAO,KAAK,UAAU,EAAE;QACjCO,YAAY,GAAGL,SAAS,CAACF,OAAO,CAACS,QAAQ;MAC3C;MAEA,OAAAC,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACKR,SAAS,GACTK,YAAY,GACZvB,KAAK;QACR2B,aAAa,EAAE,CAACb,UAAU;QAC1BK;MAAc;IAElB,CAAC,EACD;MAAErI,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,+BAEsB7I,OAAO,CAC3BgS,WAAkC,IACjC,CAAC,GAAGA,WAAW,EAAE,GAAG,IAAI,CAACA,WAAW,CAAC,CAAClE,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAClC,KAAK,GAAGmC,CAAC,CAACnC,KAAK,CAAC,EACzE;MAAE3C,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,iCA6CwB7I,OAAO,CAC7BiS,iBAAoC,IACnC,CAAC,GAAGA,iBAAiB,EAAE,GAAG,IAAI,CAACC,aAAa,CAAC,CAACtE,GAAG,CAACuE,OAAO,IACvD,OAAOA,OAAO,KAAK,UAAU,GAAGA,OAAO,CAAC,IAAI,CAAC,GAAGA,OAClD,CAAC,EACH;MAAEjJ,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,4BAEmB7I,OAAO,CACxBoS,YAA+B,IAAKA,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAI,IAAIpN,gBAAgB,CAAC,CAAC,EAC3E;MAAEkE,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,gCAufuB7I,OAAO,CAC7B,CACEqS,kBAAyC,EACzC3D,OAAiC,EACjC4D,YAAsC,EACtCC,uBAA+B,EAC/BC,wBAAgC,EAChChJ,KAAoB,EACpBiJ,aAAgC,KACN;MAC1B,IAAMC,eAA6B,GAAG,EAAE;MAExC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,uBAAuB,EAAEI,CAAC,IAAI,CAAC,EAAE;QACnDD,eAAe,CAAClH,IAAI,CAClBkD,OAAO,CAACxN,SAAS,CAAC0R,aAAa,CAACD,CAAC,EAAEL,YAAY,CAAC,CAAC,CAACzD,IACpD,CAAC;MACH;MAEA,KAAK,IAAI8D,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGH,wBAAwB,EAAEG,EAAC,IAAI,CAAC,EAAE;QACpDD,eAAe,CAAClH,IAAI,CAClBkD,OAAO,CAACxN,SAAS,CAAC0R,aAAa,CAAClE,OAAO,CAACmE,MAAM,GAAG,CAAC,GAAGF,EAAC,EAAEL,YAAY,CAAC,CAAC,CACnEzD,IACL,CAAC;MACH;MAEA,IAAI4D,aAAa,EAAE;QACjB,KAAK,IAAIE,GAAC,GAAGF,aAAa,CAAC,CAAC,CAAC,EAAEE,GAAC,IAAIF,aAAa,CAAC,CAAC,CAAC,EAAEE,GAAC,IAAI,CAAC,EAAE;UAC5DD,eAAe,CAAClH,IAAI,CAClBkD,OAAO,CAACxN,SAAS,CAAC0R,aAAa,CAACD,GAAC,EAAEL,YAAY,CAAC,CAAC,CAACzD,IACpD,CAAC;QACH;MACF;MAEA,IAAMiE,gBAAgB,GAAG5M,gBAAgB,CAACsD,KAAK,CAAC,GAC5CA,KAAK,CAACuJ,yBAAyB,GAC/BjQ,WAAW;MACf,IAAMkQ,UAAU,GAAGF,gBAAgB,CAChClF,GAAG,CAAC+E,CAAC;QAAA,IAAAM,UAAA;QAAA,QAAAA,UAAA,GAAIvE,OAAO,CAACiE,CAAC,CAAC,cAAAM,UAAA,uBAAVA,UAAA,CAAYpE,IAAI;MAAA,EAAC,CAC1BC,MAAM,CAAEC,CAAC,IAAsBA,CAAC,IAAI,IAAI,CAAC;MAE5C,IAAMmE,SAAS,GAAG,IAAIC,GAAG,CAAC,CACxB,GAAGd,kBAAkB,EACrB,GAAGK,eAAe,EAClB,GAAGM,UAAU,CACd,CAAC;MAEF,OAAO9K,MAAM,CAACC,MAAM,CAAC,CAAC,GAAG+K,SAAS,CAAC,CAAC;IACtC,CAAC,EACD;MAAEhK,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,6BAoqBoBtF,QAAQ,CAC3B,CACE6P,WAAmB,EACnBC,qBAA4C,EAC5C3E,OAAiC,EACjC4E,mBAA4B,KACnB;MACT,IAAQ9J,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;MACb,IAAMuH,YAAY,GAAG1K,iBAAiB,CAACkN,kBAAkB,CACvD/J,KAAK,CAACgG,EAAE,EACR4D,WAAW,EACXC,qBAAqB,EACrB3E,OAAO,EACP4E,mBACF,CAAC;MACD,IAAI,CAACE,QAAQ,CAAC;QAAEzC;MAAa,CAAC,CAAC;IACjC,CAAC,EACDjJ,mBACF,CAAC;IAAAe,eAAA,8BAyDqBvF,QAAQ,CAC5B,MAAY;MACV,IAAQkG,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;MACb,IAAQiK,mBAAmB,GAAK,IAAI,CAACjC,KAAK,CAAlCiC,mBAAmB;MAC3B,IAAIjK,KAAK,CAACkK,iBAAiB,IAAI,CAACD,mBAAmB,EAAE;QACnD;QACA;QACA,IAAI,CAACE,YAAY,CAAC,yBAAyB,EAAE;UAC3CC,kBAAkB,EAAE,KAAK;UACzBC,iBAAiB,EAAE;QACrB,CAAC,CAAC;MACJ;IACF,CAAC,EACDjM,sBAAsB,EACtB;MAAEkM,OAAO,EAAE,KAAK;MAAEC,QAAQ,EAAE;IAAK,CACnC,CAAC;IA40BD;IAAAlL,eAAA,8CACsCtF,QAAQ,CAC3CyQ,wBAAgD,IAAW;MAC1D,IAAI,CAACR,QAAQ,CAAC;QAAEQ,wBAAwB;QAAEC,sBAAsB,EAAE;MAAK,CAAC,CAAC;IAC3E,CAAC,EACDjM,+BACF,CAAC;IAAAa,eAAA,uCAmmB8BvF,QAAQ,CACrC,CACE4Q,qBAA6B,EAC7BC,0BAAyC,KACtC;MACH,IAAQC,mBAAmB,GAAK,IAAI,CAAC5C,KAAK,CAAlC4C,mBAAmB;MAC3B,IACEA,mBAAmB,KAAKzO,gBAAgB,CAAC0O,eAAe,CAACC,WAAW,EACpE;QACA,IAAI,CAACd,QAAQ,CAAC;UACZU,qBAAqB;UACrBC;QACF,CAAC,CAAC;MACJ;IACF,CAAC,EACDtM,wBACF,CAAC;IAAAgB,eAAA,mCAwI0B7I,OAAO,CAC/BuU,0BAAyC,IAAgB;MACxD,IAAIA,0BAA0B,IAAI,IAAI,EAAE;QACtC,OAAO,IAAI;MACb;MAEA,IAAMC,YAA2B,GAAA1C,aAAA,CAAAA,aAAA;QAC/B2C,QAAQ,EAAE;MAAU,GACjBF,0BAA0B;QAC7BG,aAAa,EAAE;MAAM,EACtB;MAED,IAAMC,aAA4B,GAAG;QACnCC,SAAS,EAAE,MAAM;QACjBC,SAAS,EAAE;UACTC,IAAI,EAAE;YACJC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO;UAC5B;QACF;MACF,CAAC;MAED,oBACE1N,IAAA;QAAK2N,KAAK,EAAER,YAAa;QAAAS,QAAA,eACvB5N,IAAA,CAACzG,OAAO;UAENwJ,OAAO,EAAEuK,aAAc;UACvBO,GAAG,EAAE,IAAI,CAACC,gBAAiB;UAAAF,QAAA,EAC5B;QAED,GALOG,IAAI,CAACC,GAAG,CAAC,CAKP;MAAC,CACP,CAAC;IAEV,CAAC,EACD;MAAEnM,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,+BAEsB7I,OAAO,CAC3BsV,sBAAqC,IAAgB;MACpD,IAAIA,sBAAsB,IAAI,IAAI,EAAE;QAClC,OAAO,IAAI;MACb;MAEA,IAAQC,yBAAyB,GAAK,IAAI,CAAC/D,KAAK,CAAxC+D,yBAAyB;MACjC,IAAQ/L,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;MACb,IAAMgM,oBAAoB,GACxBpU,qBAAqB,CAACoI,KAAK,CAAC,IAAIA,KAAK,CAACgM,oBAAoB;MAE5D,IAAMhB,YAA2B,GAAA1C,aAAA,CAAAA,aAAA;QAC/B2C,QAAQ,EAAE;MAAU,GACjBa,sBAAsB;QACzBZ,aAAa,EAAE;MAAM,EACtB;MAED,IAAMC,aAA4B,GAAG;QACnCC,SAAS,EAAE;MACb,CAAC;MAED,oBACEvN,IAAA;QAAK2N,KAAK,EAAER,YAAa;QAAAS,QAAA,eACvB5N,IAAA,CAACzG,OAAO;UAENwJ,OAAO,EAAEuK,aAAc;UACvBO,GAAG,EAAE,IAAI,CAACC,gBAAiB;UAAAF,QAAA,eAE3BxN,KAAA;YAAKuN,KAAK,EAAE;cAAES,SAAS,EAAE;YAAO,CAAE;YAAAR,QAAA,GAAC,WACxB,EAACM,yBAAyB,EAAC,MACpC,EAACC,oBAAoB,iBACnB/N,KAAA,CAAAF,SAAA;cAAA0N,QAAA,gBACE5N,IAAA,SAAK,CAAC,EACLvG,kBAAkB,CAAC4U,aAAa,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,EAAC,sCAEtD;YAAA,CAAE,CACH;UAAA,CACE;QAAC,GAbDN,IAAI,CAACC,GAAG,CAAC,CAcP;MAAC,CACP,CAAC;IAEV,CAAC,EACD;MAAEnM,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,0BAEiB7I,OAAO,CACtB2V,iBAAgC,IAAgB;MAC/C,IAAIA,iBAAiB,IAAI,IAAI,EAAE;QAC7B,OAAO,IAAI;MACb;MAEA,IAAQC,iBAAiB,GAAK,IAAI,CAACpE,KAAK,CAAhCoE,iBAAiB;MAEzB,IAAMpB,YAA2B,GAAA1C,aAAA,CAAAA,aAAA;QAC/B2C,QAAQ,EAAE;MAAU,GACjBkB,iBAAiB;QACpBjB,aAAa,EAAE;MAAM,EACtB;MAED,IAAMC,aAA4B,GAAG;QACnCC,SAAS,EAAE;MACb,CAAC;MAED,oBACEvN,IAAA;QAAK2N,KAAK,EAAER,YAAa;QAAAS,QAAA,eACvB5N,IAAA,CAACzG,OAAO;UAACwJ,OAAO,EAAEuK,aAAc;UAACO,GAAG,EAAE,IAAI,CAACC,gBAAiB;UAAAF,QAAA,eAC1D5N,IAAA;YAAKwO,SAAS,EAAC,oBAAoB;YAAAZ,QAAA,EAAEW;UAAiB,CAAM;QAAC,CACtD;MAAC,CACP,CAAC;IAEV,CAAC,EACD;MAAE1M,GAAG,EAAE;IAAE,CACX,CAAC;IAAAL,eAAA,iCAuLyBiN,KAAa,IAAW;MAChD,IAAI,CAACtC,QAAQ,CAAC;QAAEuC,SAAS,EAAED,KAAK;QAAEE,wBAAwB,EAAE;MAAK,CAAC,CAAC;MACnE,IAAI,CAACC,gBAAgB,CAACH,KAAK,CAAC;IAC9B,CAAC;IAAAjN,eAAA,2BAEkBtF,QAAQ,CAAEuS,KAAa,IAAW;MACnD,IAAI,CAACI,OAAO,CAACJ,KAAK,CAAC;IACrB,CAAC,EAAE/N,iBAAiB,CAAC;IApvInB,IAAI,CAACgC,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACd,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACgB,8BAA8B,GACjC,IAAI,CAACA,8BAA8B,CAAChB,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACkB,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAAClB,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACE,kCAAkC,GACrC,IAAI,CAACA,kCAAkC,CAACF,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACD,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACC,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACkN,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAClN,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACmN,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACnN,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACoN,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACpN,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACqN,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACrN,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACsN,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACtN,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACuN,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACvN,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACwN,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACxN,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACyN,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACzN,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAAC0N,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAAC1N,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAAC2N,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAAC3N,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAAC4N,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAAC5N,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAAC6N,eAAe,GAAG,IAAI,CAACA,eAAe,CAAC7N,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAAC8N,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAC9N,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAAC+N,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAC/N,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACgO,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAAChO,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACiO,YAAY,GAAG,IAAI,CAACA,YAAY,CAACjO,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACkO,UAAU,GAAG,IAAI,CAACA,UAAU,CAAClO,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACmO,eAAe,GAAG,IAAI,CAACA,eAAe,CAACnO,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACoO,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACpO,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACqO,cAAc,GAAG,IAAI,CAACA,cAAc,CAACrO,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACsO,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACtO,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACuO,aAAa,GAAG,IAAI,CAACA,aAAa,CAACvO,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACwO,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACxO,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACyO,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACzO,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAAC0O,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAAC1O,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAAC2O,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAAC3O,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAAC4O,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAAC5O,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAAC6O,YAAY,GAAG,IAAI,CAACA,YAAY,CAAC7O,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAAC8O,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAAC9O,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAAC+O,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAC/O,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACkM,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAClM,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACgP,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAAChP,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACiP,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACjP,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACkP,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAAClP,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAACmP,6BAA6B,GAChC,IAAI,CAACA,6BAA6B,CAACnP,IAAI,CAAC,IAAI,CAAC;IAC/C,IAAI,CAACoP,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAACpP,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAACqP,8BAA8B,GACjC,IAAI,CAACA,8BAA8B,CAACrP,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACsP,iCAAiC,GACpC,IAAI,CAACA,iCAAiC,CAACtP,IAAI,CAAC,IAAI,CAAC;IACnD,IAAI,CAACuP,mCAAmC,GACtC,IAAI,CAACA,mCAAmC,CAACvP,IAAI,CAAC,IAAI,CAAC;IACrD,IAAI,CAACwP,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACxP,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAACyP,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACzP,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAAC0P,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAAC1P,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAAC2P,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAAC3P,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAAC4P,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAC5P,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAAC6P,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAAC7P,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAAC8P,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAAC9P,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAAC+P,oCAAoC,GACvC,IAAI,CAACA,oCAAoC,CAAC/P,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACgQ,cAAc,GAAG,IAAI,CAACA,cAAc,CAAChQ,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACiQ,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACjQ,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACkQ,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAAClQ,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACmQ,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACnQ,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAACoQ,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACpQ,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACqQ,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACrQ,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACsQ,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACtQ,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACuQ,6BAA6B,GAChC,IAAI,CAACA,6BAA6B,CAACvQ,IAAI,CAAC,IAAI,CAAC;IAC/C,IAAI,CAACwQ,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAACxQ,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAACyQ,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACzQ,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAAC0Q,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAAC1Q,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAAC2Q,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAC3Q,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAAC4Q,iCAAiC,GACpC,IAAI,CAACA,iCAAiC,CAAC5Q,IAAI,CAAC,IAAI,CAAC;IACnD,IAAI,CAAC6Q,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAC7Q,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAAC8Q,qCAAqC,GACxC,IAAI,CAACA,qCAAqC,CAAC9Q,IAAI,CAAC,IAAI,CAAC;IACvD,IAAI,CAAC+Q,wCAAwC,GAC3C,IAAI,CAACA,wCAAwC,CAAC/Q,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACgR,oCAAoC,GACvC,IAAI,CAACA,oCAAoC,CAAChR,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACiR,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACjR,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACkR,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAAClR,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAAC4P,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAC5P,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACmR,eAAe,GAAG,IAAI,CAACA,eAAe,CAACnR,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACoR,YAAY,GAAG,IAAI,CAACA,YAAY,CAACpR,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACqR,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACrR,IAAI,CAAC,IAAI,CAAC;IAE5C,IAAI,CAACsR,IAAI,GAAG,IAAI;IAChB,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,OAAO,GAAG,IAAIzX,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC0X,mBAAmB,GAAG5X,WAAW;IACtC,IAAI,CAAC6X,oBAAoB,GAAG,CAAC,CAAC;IAC9B,IAAI,CAACC,oBAAoB,GAAG,CAAC,CAAC;IAC9B,IAAI,CAACC,wBAAwB,GAAG,KAAK;IACrC,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,oBAAoB,GAAG,IAAI;;IAEhC;IACA,IAAI,CAACC,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,cAAc,gBAAGpb,KAAK,CAACgJ,SAAS,CAAC,CAAC;IACvC,IAAI,CAACqS,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,cAAc,gBAAGtb,KAAK,CAACgJ,SAAS,CAAC,CAAC;IAEvC,IAAI,CAACuS,UAAU,gBAAGvb,KAAK,CAACgJ,SAAS,CAAC,CAAC;IAEnC,IAAI,CAACwS,SAAS,GAAG,KAAK;IAEtB,IAAI,CAACxQ,qBAAqB,GAAG;MAC3B8B,MAAM,EAAEA,CAAA,KAAM,IAAI,CAAC2O,eAAe,CAAC,CAAC;MACpC/O,QAAQ,EAAE5F,SAAS,CAAC4U,KAAK,CAACC;IAC5B,CAAC;IAED,IAAI,CAAC1Q,qBAAqB,GAAG;MAC3B6B,MAAM,EAAEA,CAAA,KAAM,IAAI,CAAC8O,eAAe,CAAC,CAAC;MACpClP,QAAQ,EAAE5F,SAAS,CAAC4U,KAAK,CAACG;IAC5B,CAAC;IAED,IAAI,CAAC3Q,mBAAmB,GAAG;MACzB4B,MAAM,EAAEA,CAAA,KAAM,IAAI,CAACgP,aAAa,CAAC,CAAC;MAClCpP,QAAQ,EAAE5F,SAAS,CAAC4U,KAAK,CAACK;IAC5B,CAAC;IAED,IAAI,CAACC,aAAa,GAAG;MACnBlP,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAQpD,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;QACb,IACErI,mBAAmB,CAACqI,KAAK,CAAC,IAC1BA,KAAK,CAAC0H,UAAU,IAChB1H,KAAK,CAACuS,cAAc,CAACC,IAAI,GAAG,CAAC,EAC7B;UACA,IAAI,CAACC,cAAc,CAAC,CAAC,CAACC,KAAK,CAACxU,GAAG,CAACyF,KAAK,CAAC;QACxC;MACF,CAAC;MACDX,QAAQ,EAAE5F,SAAS,CAACuV,WAAW,CAACC;IAClC,CAAC;IACD,IAAI,CAACC,YAAY,GAAG;MAClBzP,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAQpD,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;QACb,IACErI,mBAAmB,CAACqI,KAAK,CAAC,IAC1BA,KAAK,CAAC0H,UAAU,IAChB1H,KAAK,CAACuS,cAAc,CAACC,IAAI,GAAG,CAAC,IAC7BxS,KAAK,CAAC8S,iBAAiB,CAACN,IAAI,KAAK,CAAC,EAClC;UACA,IAAI,CAACO,aAAa,CAAC,CAAC,CAACL,KAAK,CAACxU,GAAG,CAACyF,KAAK,CAAC;QACvC;MACF,CAAC;MACDX,QAAQ,EAAE5F,SAAS,CAACuV,WAAW,CAACK;IAClC,CAAC;IACD,IAAI,CAACC,cAAc,GAAG,CACpB,IAAI,CAAC3R,qBAAqB,EAC1B,IAAI,CAACC,qBAAqB,EAC1B,IAAI,CAACC,mBAAmB,EACxB,IAAI,CAAC8Q,aAAa,EAClB,IAAI,CAACO,YAAY,CAClB;IAED,IACEpM,oBAAmB,GA2BjBxH,KAAK,CA3BPwH,mBAAmB;MACnByM,kBAAkB,GA0BhBjU,KAAK,CA1BPiU,kBAAkB;MAClBC,qBAAqB,GAyBnBlU,KAAK,CAzBPkU,qBAAqB;MACrBC,kBAAkB,GAwBhBnU,KAAK,CAxBPmU,kBAAkB;MAClB3R,iBAAgB,GAuBdxC,KAAK,CAvBPwC,gBAAgB;MAChB4R,oBAAoB,GAsBlBpU,KAAK,CAtBPoU,oBAAoB;MACpBC,UAAU,GAqBRrU,KAAK,CArBPqU,UAAU;MACVC,eAAe,GAoBbtU,KAAK,CApBPsU,eAAe;MACfvT,MAAK,GAmBHf,KAAK,CAnBPe,KAAK;MACSwT,gBAAgB,GAkB5BvU,KAAK,CAlBP6J,YAAY;MACD2K,aAAa,GAiBtBxU,KAAK,CAjBPyU,SAAS;MACTtM,aAAY,GAgBVnI,KAAK,CAhBPmI,YAAY;MACZtC,iBAAgB,GAed7F,KAAK,CAfP6F,gBAAgB;MAChB6O,sBAAsB,GAcpB1U,KAAK,CAdP0U,sBAAsB;MACtBC,cAAc,GAaZ3U,KAAK,CAbP2U,cAAc;MACdlS,cAAa,GAYXzC,KAAK,CAZPyC,aAAa;MACbkI,YAAW,GAWT3K,KAAK,CAXP2K,WAAW;MACXC,sBAAqB,GAUnB5K,KAAK,CAVP4K,qBAAqB;MACrBC,oBAAmB,GASjB7K,KAAK,CATP6K,mBAAmB;MACnB7C,gBAAe,GAQbhI,KAAK,CARPgI,eAAe;MACfD,aAAY,GAOV/H,KAAK,CAPP+H,YAAY;MACZ6M,qBAAqB,GAMnB5U,KAAK,CANP4U,qBAAqB;MACrBtB,cAAc,GAKZtT,KAAK,CALPsT,cAAc;MACduB,OAAO,GAIL7U,KAAK,CAJP6U,OAAO;MACPC,aAAa,GAGX9U,KAAK,CAHP8U,aAAa;MACbC,kBAAkB,GAEhB/U,KAAK,CAFP+U,kBAAkB;MAClBC,mBAAmB,GACjBhV,KAAK,CADPgV,mBAAmB;IAGrB,IAAQjO,GAAE,GAAKhG,MAAK,CAAZgG,EAAE;IACV,IAAMwC,YAAyB,GAAG,CAChC,IAAInO,kBAAkB,CAAC,IAAI,CAAC,EAC5B,IAAIG,iBAAiB,CAAC,IAAI,CAAC,EAC3B,IAAIF,qBAAqB,CAAC,IAAI,CAAC,CAChC;IACD,IAAMoO,aAAgC,GAAG,CACvC,IAAIjO,gCAAgC,CAAC,IAAI,CAAC,EAC1C,IAAIQ,2BAA2B,CAAC,IAAI,CAAC,EACrC,IAAIE,yBAAyB,CAAC,IAAI,CAAC,EACnC,IAAIT,gCAAgC,CAAC,IAAI,CAAC,EAC1C,IAAIC,iCAAiC,CAAC,IAAI,CAAC,EAC3C,IAAIO,wBAAwB,CAAC,IAAI,CAAC,EAClC,IAAIF,0BAA0B,CAAC,IAAI,CAAC,EACpC,IAAIJ,0BAA0B,CAAC,IAAI,EAAEoL,GAAE,CAAC,EACxC,IAAIlL,8BAA8B,CAAC,IAAI,CAAC,EACxC,IAAIM,mBAAmB,CAAC,IAAI,CAAC,EAC7B,IAAIL,oCAAoC,CAAC,IAAI,CAAC,EAC9C,IAAI+Y,OAAO,GAAG,CAAC,IAAIjZ,4BAA4B,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAC7D;IACD,IAAIiZ,OAAO,EAAE;MACXtL,YAAW,CAACxG,IAAI,CAAC,IAAIzH,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5C;IACA,IAAMuO,aAAY,GAChB0K,gBAAgB,CAACnK,MAAM,GAAG,CAAC,GACvBmK,gBAAgB,GAChBxT,MAAK,CAACkU,mBAAmB;IAC/B,IAAMR,SAAS,GACbD,aAAa,CAACpK,MAAM,GAAG,CAAC,GAAGoK,aAAa,GAAGzT,MAAK,CAACmU,gBAAgB;IAEnE,IAAMtP,iBAAgB,GAAGoP,mBAAmB,CAAC;MAC3CnP,gBAAgB,EAAE,IAAIjB,GAAG,CAACiB,iBAAgB,CAAC;MAC3C6O,sBAAsB,EACpBA,sBAAsB,IAAI,IAAI,GAC1B,IAAI9P,GAAG,CAAC8P,sBAAsB,CAAC,GAC/B5T,SAAS;MACf6T,cAAc,EAAE,IAAI/P,GAAG,CAAC+P,cAAc,CAAC;MACvC9K,YAAY,EAAZA,aAAY;MACZ9D,mBAAmB,EAAE,IAAInB,GAAG,CAC1B7D,MAAK,aAALA,MAAK,gBAAAd,kBAAA,GAALc,MAAK,CAAEoU,WAAW,cAAAlV,kBAAA,gBAAAA,kBAAA,GAAlBA,kBAAA,CAAoB+F,aAAa,cAAA/F,kBAAA,uBAAjCA,kBAAA,CAAmCkF,GAAG,CAACiB,IAAI,IAAI,CAC7CrF,MAAK,CAACqU,oBAAoB,CAAChP,IAAI,CAAC,EAChC,CAAC,CACF,CACH;IACF,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA,IAAI,CAACiP,2BAA2B,GAAGL,mBAAmB;IACtD,IAAMM,aAAa,GAAG1K,sBAAqB,aAArBA,sBAAqB,cAArBA,sBAAqB,GAAI,EAAE;IACjD,IAAMtC,aAAY,GAAG1K,iBAAiB,CAACkN,kBAAkB,CACvD/D,GAAE,EACF4D,YAAW,EACX2K,aAAa,EACbvU,MAAK,CAACkF,OAAO,EACb4E,oBACF,CAAC;IAED,IAAI,CAACjJ,UAAU,GAAG,IAAI3H,UAAU,CAAC8M,GAAE,CAAC;IAEpC,IAAI,CAAC0C,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACF,WAAW,GAAGA,YAAW;IAE9B,IAAI,CAACR,KAAK,GAAG;MACXvG,gBAAgB,EAAhBA,iBAAgB;MAChB4R,oBAAoB;MACpBmB,sBAAsB,EAAE,IAAI;MAC5B3P,gBAAgB,EAAhBA,iBAAgB;MAChB4P,OAAO,EAAE1U,SAAS;MAElBwT,eAAe,EACbA,eAAe,aAAfA,eAAe,cAAfA,eAAe,GACdD,UAAU,IAAIA,UAAU,CAACjK,MAAM,GAC5B;QAAEiK,UAAU;QAAEoB,IAAI,EAAE;MAAY,CAAC,GACjC3U,SAAU;MAEhB;MACA;MACAiH,YAAY,EAAEA,aAAY,GAAG,IAAInD,GAAG,CAACmD,aAAY,CAAC,GAAG,IAAInD,GAAG,CAAC,CAAC;MAC9DoD,eAAe,EAAE,IAAIpD,GAAG,CAACoD,gBAAe,CAAC;MACzC0N,mBAAmB,EAAE,IAAI;MACzBC,uBAAuB,EAAE,IAAI;MAC7BC,mBAAmB,EAAE,IAAI;MACzB3N,KAAK,EAAE,EAAE;MACTC,OAAO,EAAE,KAAK;MACd2N,aAAa,EAAE,EAAE;MACjBjB,qBAAqB;MAErBkB,aAAa,EAAE,IAAI;MAEnB;MACAC,aAAa,EAAE,IAAI;MAEnB;MACAC,WAAW,EAAE,IAAI;MACjBlO,oBAAoB,EAAE,IAAI;MAC1BkD,mBAAmB,EAAE,KAAK;MAC1BG,kBAAkB,EAAE,KAAK;MACzBC,iBAAiB,EAAE,KAAK;MAExBvB,YAAY,EAAZA,aAAY;MACZ4K,SAAS;MAETwB,kBAAkB,EAAE,IAAI;MAExB/U,SAAS,EAAE,IAAInH,SAAS,CAACgN,GAAE,CAAC;MAC5BqB,WAAW,EAAE,KAAK;MAClB8L,qBAAqB,EAAE,IAAItP,GAAG,CAACsP,qBAAqB,CAAC;MACrDC,kBAAkB,EAAE,IAAIvP,GAAG,CAACuP,kBAAkB,CAAC;MAE/CF,kBAAkB;MAClBiC,0BAA0B,EAAE,IAAI;MAChC3K,wBAAwB,EAAEzK,SAAS;MACnC0K,sBAAsB,EAAE,IAAI;MAE5B;MACA5D,iBAAiB,EAAE,IAAI;MAEvBuO,kBAAkB,EAAE,KAAK;MACzBC,OAAO,EAAE,KAAK;MACdzK,mBAAmB,EAAE,EAAE;MACvBF,qBAAqB,EAAE,CAAC;MACxBC,0BAA0B,EAAE,CAAC;MAE7BjJ,aAAa,EAAbA,cAAa;MACb6F,YAAY,EAAZA,aAAY;MACZqC,WAAW,EAAXA,YAAW;MACXC,qBAAqB,EAAE0K,aAAa;MACpCzK,mBAAmB,EAAnBA,oBAAmB;MAEnB1C,YAAY,EAAZA,aAAY;MACZkO,qBAAqB,EAAE,EAAE;MACzB7O,mBAAmB;MACjB;MACA9O,mBAAmB,CAACqI,MAAK,CAAC,IAAIA,MAAK,CAAC0H,UAAU,GAAAY,aAAA,CAAAA,aAAA,KACrC7B,oBAAmB;QAAE5H,SAAS,EAAE;MAAI,KACzC4H,oBAAmB;MACzB8O,mBAAmB,EAAE,IAAI;MAEzBC,WAAW,EAAE,EAAE;MAEfC,eAAe,EAAE,CAAC;MAClBlD,cAAc,EAAEA,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,IAAI1O,GAAG,CAAC,CAAC;MAC3CiP,iBAAiB,EAAE,IAAIjP,GAAG,CAAC,CAAC;MAC5B6R,kBAAkB,EAAE,IAAI;MACxBC,gBAAgB,EAAE,IAAI;MAEtBC,YAAY,EAAE,IAAI;MAClB7B,aAAa;MACb8B,iBAAiB,EAAE,KAAK;MACxBC,0BAA0B,EAAE,KAAK;MACjCC,sBAAsB,EAAE,EAAE;MAC1BC,YAAY,EAAE,EAAE;MAChBjL,0BAA0B,EAAE,IAAI;MAChCe,sBAAsB,EAAE,IAAI;MAC5BC,yBAAyB,EAAE,QAAQ;MACnCI,iBAAiB,EAAE,IAAI;MACvBC,iBAAiB,EAAE,EAAE;MACrB6J,WAAW,EAAE,KAAK;MAClBC,OAAO,EAAE,EAAE;MACXC,YAAY,EAAE,EAAE;MAChBC,cAAc,EAAE,EAAE;MAElBC,2BAA2B,GAAAlX,qBAAA,IAAAC,eAAA,GAAEY,MAAK,CAACkF,OAAO,CAAC,CAAC,CAAC,cAAA9F,eAAA,uBAAhBA,eAAA,CAAkBiG,IAAI,cAAAlG,qBAAA,cAAAA,qBAAA,GAAI,EAAE;MACzDmX,uBAAuB,EAAEzc,UAAU,CAAC0c,YAAY;MAChDhK,SAAS,EAAE,EAAE;MACbC,wBAAwB,EAAE,KAAK;MAC/BwH,kBAAkB,EAAEA,kBAAkB,aAAlBA,kBAAkB,cAAlBA,kBAAkB,GAAIhU,MAAK,CAACwW;IAClD,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAQzW,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAI,CAAC0W,SAAS,CAAC,CAAC;IAChB,IAAI,CAACC,cAAc,CAAC3W,KAAK,CAAC;EAC5B;EAEA4W,kBAAkBA,CAACC,SAAwB,EAAEC,SAAwB,EAAQ;IAC3E,IAAAC,WAAA,GAWI,IAAI,CAAC9X,KAAK;MAVZ+X,YAAY,GAAAD,WAAA,CAAZC,YAAY;MACZlQ,iBAAiB,GAAAiQ,WAAA,CAAjBjQ,iBAAiB;MACjBmQ,QAAQ,GAAAF,WAAA,CAARE,QAAQ;MACRjX,KAAK,GAAA+W,WAAA,CAAL/W,KAAK;MACLsH,aAAa,GAAAyP,WAAA,CAAbzP,aAAa;MACbN,YAAY,GAAA+P,WAAA,CAAZ/P,YAAY;MACZE,KAAK,GAAA6P,WAAA,CAAL7P,KAAK;MACLgQ,wBAAwB,GAAAH,WAAA,CAAxBG,wBAAwB;MACxBC,iBAAiB,GAAAJ,WAAA,CAAjBI,iBAAiB;MACjBlD,mBAAmB,GAAA8C,WAAA,CAAnB9C,mBAAmB;IAGrB,IAAIjU,KAAK,KAAK6W,SAAS,CAAC7W,KAAK,EAAE;MAC7B,IAAI,CAACoX,aAAa,CAACP,SAAS,CAAC7W,KAAK,CAAC;MACnC,IAAI,CAAC2W,cAAc,CAAC3W,KAAK,CAAC;IAC5B;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAIiU,mBAAmB,KAAK4C,SAAS,CAAC5C,mBAAmB,EAAE;MACzD,IAAI,CAACoD,4BAA4B,CAAC,CAAC;IACrC;IAEA,IAAMC,mBAAmB,GACvBN,YAAY,KAAKH,SAAS,CAACG,YAAY,GACnCA,YAAY,CAAC1R,MAAM,CACjBiS,WAAW,IAAI,CAACV,SAAS,CAACG,YAAY,CAACQ,QAAQ,CAACD,WAAW,CAC7D,CAAC,GACD,EAAE;IACR,IAAID,mBAAmB,CAACjO,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAoO,qBAAA;MAClC,IAAQC,gBAAgB,GAAK,IAAI,CAACzY,KAAK,CAA/ByY,gBAAgB;MACxB,IAAMC,sBAAsB,IAAAF,qBAAA,GAC1BC,gBAAgB,CAACE,GAAG,CAClB1a,oBAAoB,CAAC2a,wCACvB,CAAC,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,KAAK;MACZ,IAAIE,sBAAsB,EAAE;QAC1B,IAAI,CAACG,mBAAmB,CAAC,CAAC;QAC1B,IAAI,CAACC,qBAAqB,CAAC,CAAC;MAC9B;MACA,IAAMC,SAAS,GAAG,IAAI,CAACC,iBAAiB,CACtCX,mBAAmB,EACnBK,sBACF,CAAC;MACD,IAAIK,SAAS,EAAE;QACb,IAAI,CAAC7N,YAAY,CAAC,cAAc,EAAE;UAAE+N,WAAW,EAAE;QAAK,CAAC,CAAC;MAC1D;IACF;IAEA,IAAIpR,iBAAiB,KAAK+P,SAAS,CAAC/P,iBAAiB,EAAE;MACrD,IAAI,CAACqR,oBAAoB,CAAC,CAAC;IAC7B;IACA,IAAIlB,QAAQ,KAAKJ,SAAS,CAACI,QAAQ,EAAE;MACnC,IAAI,CAACmB,uBAAuB,CAACnB,QAAQ,CAAC;IACxC;IACA,IAAI3P,aAAa,KAAKuP,SAAS,CAACvP,aAAa,EAAE;MAC7C,IAAI,CAAC6C,YAAY,CAAC,cAAc,EAAE;QAAE+N,WAAW,EAAE;MAAK,CAAC,CAAC;IAC1D;IACA,IACEhR,KAAK,KAAK2P,SAAS,CAAC3P,KAAK,IACxB,CAAC2P,SAAS,CAACM,iBAAiB,IAAIA,iBAAkB,EACnD;MACA,IAAI,CAACkB,WAAW,CAACnR,KAAK,CAAC;IACzB;IACA,IACEF,YAAY,KAAK6P,SAAS,CAAC7P,YAAY,IACtC,CAAC6P,SAAS,CAACK,wBAAwB,IAAIA,wBAAyB,EACjE;MACA,IAAI,CAACoB,kBAAkB,CAACtR,YAAY,CAAC;IACvC;IACA,IAAQuR,qBAAqB,GAA6B,IAAI,CAAtDA,qBAAqB;MAAEC,sBAAsB,GAAK,IAAI,CAA/BA,sBAAsB;IACrD,IAAID,qBAAqB,IAAI,IAAI,IAAIC,sBAAsB,IAAI,IAAI,EAAE;MACnEC,MAAM,CAACC,qBAAqB,CAAC,MAAM;QACjC,IAAM7M,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,CAAC;QACtB,IAAM8M,WAAW,GAAG9M,GAAG,GAAG0M,qBAAqB;QAC/C,IAAMK,SAAS,GAAGJ,sBAAsB,GAAGD,qBAAqB;QAChE,IAAMxR,oBAAoB,GAAG8R,IAAI,CAACC,GAAG,CAACH,WAAW,GAAGC,SAAS,EAAE,CAAC,CAAC;QACjE,IAAIJ,sBAAsB,GAAG3M,GAAG,EAAE;UAChC,IAAI,CAAC0M,qBAAqB,GAAGxY,SAAS;UACtC,IAAI,CAACyY,sBAAsB,GAAGzY,SAAS;QACzC;QAEA,IAAI,CAACiK,QAAQ,CAAChC,KAAK,IAAI;UACrB,IAAIA,KAAK,CAACjB,oBAAoB,IAAI,IAAI,EAAE;YACtC7I,GAAG,CAAC6a,MAAM,CAAC,kDAAkD,CAAC;YAC9D,OAAO,IAAI;UACb;UAEA,OAAO;YAAEhS;UAAqB,CAAC;QACjC,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IAEA,IAAQyO,WAAW,GAAK,IAAI,CAACxN,KAAK,CAA1BwN,WAAW;IACnB,IAAIA,WAAW,KAAKsB,SAAS,CAACtB,WAAW,EAAE;MACzC,IAAMwD,aAAa,GAAIC,MAAkB,IACvCA,MAAM,CAAChX,IAAI,KAAKhG,UAAU,CAACid,gBAAgB;MAC7C,IACE,CAAC1D,WAAW,CAAC2D,IAAI,CAACH,aAAa,CAAC,IAChClC,SAAS,CAACtB,WAAW,CAAC2D,IAAI,CAACH,aAAa,CAAC,EACzC;QACA,IAAI,CAACI,uBAAuB,CAAC,CAAC;MAChC;IACF;IAEA,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAQtZ,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAI,CAACoX,aAAa,CAACpX,KAAK,CAAC;IACzB,IAAI,CAACiR,OAAO,CAACsI,MAAM,CAAC,CAAC;IACrB,IAAI,CAACC,kBAAkB,CAACD,MAAM,CAAC,CAAC;IAEhC,IAAI,IAAI,CAACE,YAAY,EAAE;MACrBC,YAAY,CAAC,IAAI,CAACD,YAAY,CAAC;IACjC;IACA,IAAI,CAACE,4BAA4B,CAACJ,MAAM,CAAC,CAAC;IAC1C,IAAI,IAAI,CAACK,cAAc,KAAK7Z,SAAS,EAAE;MACrC8Z,oBAAoB,CAAC,IAAI,CAACD,cAAc,CAAC;IAC3C;IAEA,IAAI,CAACE,mBAAmB,CAACP,MAAM,CAAC,CAAC;EACnC;EA6FA,IAAIQ,WAAWA,CAAA,EAA0B;IAAA,IAAAC,qBAAA,EAAAC,UAAA;IACvC,QAAAD,qBAAA,IAAAC,UAAA,GAAO,IAAI,CAAClJ,IAAI,cAAAkJ,UAAA,uBAATA,UAAA,CAAWC,aAAa,CAACC,OAAO,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EACjD;EAycAI,cAAcA,CAAA,EAA0B;IACtC,IAAQ5R,WAAW,GAAK,IAAI,CAACvJ,KAAK,CAA1BuJ,WAAW;IACnB,OAAO,IAAI,CAAC6R,oBAAoB,CAAC7R,WAAW,CAAC;EAC/C;EAEA8R,cAAcA,CAAA,EAAoC;IAAA,IAAAC,WAAA;IAChD,IAAMC,eAAe,IAAAD,WAAA,GAAG,IAAI,CAACxJ,IAAI,cAAAwJ,WAAA,uBAATA,WAAA,CAAWD,cAAc,CAAC,CAAC;IACnD,IAAIE,eAAe,IAAI,IAAI,EAAE;MAC3B,OAAOza,SAAS;IAClB;IACA,IAAA0a,WAAA,GAUI,IAAI,CAACzS,KAAK;MATZf,eAAe,GAAAwT,WAAA,CAAfxT,eAAe;MACfJ,iBAAiB,GAAA4T,WAAA,CAAjB5T,iBAAiB;MACjBpF,gBAAgB,GAAAgZ,WAAA,CAAhBhZ,gBAAgB;MAChB4F,WAAW,GAAAoT,WAAA,CAAXpT,WAAW;MACXN,oBAAoB,GAAA0T,WAAA,CAApB1T,oBAAoB;MACpBC,YAAY,GAAAyT,WAAA,CAAZzT,YAAY;MACZE,KAAK,GAAAuT,WAAA,CAALvT,KAAK;MACLC,OAAO,GAAAsT,WAAA,CAAPtT,OAAO;MACPC,YAAY,GAAAqT,WAAA,CAAZrT,YAAY;IAGd,IAAAsT,YAAA,GAAqC,IAAI,CAACzb,KAAK;MAAvCe,KAAK,GAAA0a,YAAA,CAAL1a,KAAK;MAAE8G,iBAAiB,GAAA4T,YAAA,CAAjB5T,iBAAiB;IAEhC,OAAAwB,aAAA,CAAAA,aAAA,KACKkS,eAAe,GACf,IAAI,CAACG,sBAAsB,CAC5B3a,KAAK,EACL,IAAI,CAAC4a,QAAQ,CAAC,CAAC,EACf/T,iBAAiB,EACjBpF,gBAAgB,EAChBqF,iBAAiB,EACjBC,oBAAoB,EACpBC,YAAY,EACZC,eAAe,EACfC,KAAK,EACLC,OAAO,EACPC,YAAY,EACZC,WACF,CAAC;EAEL;EAeA,IAAIwT,QAAQA,CAAA,EAAqB;IAC/B,IAAQA,QAAQ,GAAK,IAAI,CAAC5b,KAAK,CAAvB4b,QAAQ;IAChB,OAAO,IAAI,CAACC,iBAAiB,CAACD,QAAQ,CAAC;EACzC;EAEAE,gBAAgBA,CAAA,EAAgC;IAC9C,IAAQrS,aAAa,GAAK,IAAI,CAACzJ,KAAK,CAA5ByJ,aAAa;IACrB,OAAO,IAAI,CAACsS,sBAAsB,CAACtS,aAAa,CAAC;EACnD;EAEAuS,eAAeA,CACbC,WAA2B,EAC3BC,QAAwB,EAEN;IAAA,IADlBC,QAAQ,GAAAC,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,KAAK;IAEhB,IAAQrb,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQgG,EAAE,GAAKhG,KAAK,CAAZgG,EAAE;IACV,IAAMsV,WAAW,GAAG,IAAI,CAACC,cAAc,CAACL,WAAW,CAAC;IACpD,IAAMM,QAAQ,GAAG,IAAI,CAACC,WAAW,CAACN,QAAQ,CAAC;IAC3C,IAAIC,QAAQ,IAAIE,WAAW,IAAI,IAAI,IAAIE,QAAQ,IAAI,IAAI,EAAE;MACvD,IAAME,KAAK,GAAG1b,KAAK,CAAC2b,YAAY,CAACL,WAAW,EAAEE,QAAQ,CAAC;MACvD,IAAItiB,UAAU,CAAC0iB,UAAU,CAAC5b,KAAK,CAACkF,OAAO,CAACoW,WAAW,CAAC,CAACrZ,IAAI,CAAC,EAAE;QAC1D;QACA,IAAQ9B,SAAS,GAAKH,KAAK,CAAnBG,SAAS;QACjB,OAAO6F,EAAE,CAAC6V,IAAI,CAACC,cAAc,CAACC,MAAM,CAClCjd,wBAAwB,EACxB4c,KAAK,EACL1V,EAAE,CAAC6V,IAAI,CAACG,QAAQ,CAACC,WAAW,CAAC9b,SAAS,CAAC+b,QAAQ,CACjD,CAAC;MACH;MACA,OAAOR,KAAK;IACd;IACA,IAAIN,QAAQ,EAAE;MACZ,OAAO,IAAI;IACb;IACA,IAAIE,WAAW,IAAI,IAAI,IAAIE,QAAQ,IAAI,IAAI,EAAE;MAC3C,OAAOxb,KAAK,CAACmc,WAAW,CAACb,WAAW,EAAEE,QAAQ,CAAC;IACjD;IACA,OAAO,EAAE;EACX;;EAEA;AACF;AACA;AACA;AACA;EACED,cAAcA,CAACL,WAA2B,EAAiC;IACzE,IAAQzG,OAAO,GAAK,IAAI,CAACzM,KAAK,CAAtByM,OAAO;IACfrb,aAAa,CAACqb,OAAO,CAAC;IACtB,IAAQ2H,YAAY,GAAK3H,OAAO,CAAxB2H,YAAY;IACpB,IAAIA,YAAY,IAAI,IAAI,EAAE;MACxB,OAAO,IAAI;IACb;IAEA,IAAIlB,WAAW,IAAI,IAAI,IAAIA,WAAW,GAAG,CAAC,EAAE;MAC1C;MACA,OAAOA,WAAW;IACpB;IAEA,OAAOA,WAAW,IAAI,IAAI,GAAGkB,YAAY,CAACxE,GAAG,CAACsD,WAAW,CAAC,GAAG,IAAI;EACnE;EAEAO,WAAWA,CAACN,QAAwB,EAAiC;IACnE,IAAQ1G,OAAO,GAAK,IAAI,CAACzM,KAAK,CAAtByM,OAAO;IACfrb,aAAa,CAACqb,OAAO,CAAC;IACtB,IAAQ4H,SAAS,GAAK5H,OAAO,CAArB4H,SAAS;IACjB,IAAIA,SAAS,IAAI,IAAI,EAAE;MACrB,OAAO,IAAI;IACb;IAEA,OAAOlB,QAAQ,IAAI,IAAI,GAAGkB,SAAS,CAACzE,GAAG,CAACuD,QAAQ,CAAC,GAAG,IAAI;EAC1D;EAEAP,QAAQA,CAAA,EAAsB;IAAA,IAAA0B,KAAA;IAC5B,IAAAC,YAAA,GAAkC,IAAI,CAACtd,KAAK;MAApCe,KAAK,GAAAuc,YAAA,CAALvc,KAAK;MAAE4G,KAAK,GAAA2V,YAAA,CAAL3V,KAAK;MAAEgB,OAAO,GAAA2U,YAAA,CAAP3U,OAAO;IAC7B,IAAA4U,aAAA,GAAyD,IAAI,CAACC,OAAO;MAAtDhV,YAAY,GAAA+U,aAAA,CAAnB5V,KAAK;MAAyB8V,cAAc,GAAAF,aAAA,CAAvB5U,OAAO;IAEpC,OAAO,IAAI,CAAC+U,cAAc,CACxBlV,YAAY,EACZb,KAAK,GAAA0V,KAAA,GACJ3kB,mBAAmB,CAACqI,KAAK,CAAC,IAAIA,KAAK,CAAC0H,UAAU,cAAA4U,KAAA,cAAAA,KAAA,GAAK,KAAK,EACzDtc,KAAK,CAAC4c,mBAAmB,GAAG5c,KAAK,CAAC6c,sBAAsB,EACxDjV,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI8U,cACb,CAAC;EACH;EAEAI,gBAAgBA,CAACC,UAAsB,EAAgB;IACrD,IAAQjU,YAAY,GAAK,IAAI,CAACd,KAAK,CAA3Bc,YAAY;IACpB,OAAOpR,SAAS,CAACslB,eAAe,CAACD,UAAU,EAAEjU,YAAY,CAAC;EAC5D;EAEA8H,eAAeA,CACbrR,MAAqB,EACrB0d,IAAY,EACZf,QAAgB,EACe;IAC/B,IAAI;MACF,OAAO,IAAI,CAACrb,UAAU,CAAC+P,eAAe,CAACrR,MAAM,EAAE0d,IAAI,EAAEf,QAAQ,CAAC;IAChE,CAAC,CAAC,OAAOxY,GAAG,EAAE;MACZxF,GAAG,CAACyF,KAAK,CAAC,6BAA6B,EAAED,GAAG,CAAC;IAC/C;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEuU,iBAAiBA,CACfjB,YAA2B,EAElB;IAAA,IADTkG,eAAe,GAAA7B,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,KAAK;IAEvB,IAAQrb,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAAmd,YAAA,GAA0C,IAAI,CAACnV,KAAK;MAA5Cf,eAAe,GAAAkW,YAAA,CAAflW,eAAe;MAAED,YAAY,GAAAmW,YAAA,CAAZnW,YAAY;IACrC,IAAMoW,kBAAkB,GAAGF,eAAe,GACtC,IAAIrZ,GAAG,CAAC,CAAC,GACT,IAAIA,GAAG,CAACoD,eAAe,CAAC;IAC5B,IAAMoW,eAAe,GAAGH,eAAe,GAAG,IAAIrZ,GAAG,CAAC,CAAC,GAAG,IAAIA,GAAG,CAACmD,YAAY,CAAC;IAE3E,IAAIsW,wBAAwB,GAAGJ,eAAe,IAAIjW,eAAe,CAACuL,IAAI,GAAG,CAAC;IAC1E,IAAI+K,qBAAqB,GAAGL,eAAe,IAAIlW,YAAY,CAACwL,IAAI,GAAG,CAAC;IACpEwE,YAAY,CAAClT,OAAO,CAAC0Z,KAAA,IAA2B;MAAA,IAAxBnY,IAAI,GAAAmY,KAAA,CAAJnY,IAAI;QAAEpD,IAAI,GAAAub,KAAA,CAAJvb,IAAI;QAAEyZ,KAAK,GAAA8B,KAAA,CAAL9B,KAAK;MACvC,IAAMqB,UAAU,GAAG/c,KAAK,CAACkF,OAAO,CAACuY,SAAS,CACxCC,KAAA;QAAA,IAASC,UAAU,GAAAD,KAAA,CAAhBrY,IAAI;UAAoBuY,UAAU,GAAAF,KAAA,CAAhBzb,IAAI;QAAA,OACvB0b,UAAU,KAAKtY,IAAI,IAAIuY,UAAU,KAAK3b,IAAI;MAAA,CAC9C,CAAC;MACD,IAAI8a,UAAU,IAAI,CAAC,EAAE;QACnBO,wBAAwB,GACtBF,kBAAkB,CAACS,MAAM,CAACd,UAAU,CAAC,IAAIO,wBAAwB;QACnEC,qBAAqB,GACnB,IAAI,CAACO,gBAAgB,CAACf,UAAU,EAAErB,KAAK,EAAE2B,eAAe,CAAC,IACzDE,qBAAqB;MACzB,CAAC,MAAM;QACLrf,GAAG,CAACyF,KAAK,CAAC,uCAAuC,EAAE0B,IAAI,EAAEpD,IAAI,EAAEyZ,KAAK,CAAC;MACvE;IACF,CAAC,CAAC;IACF,IAAI6B,qBAAqB,EAAE;MACzB,IAAI,CAACQ,yBAAyB,CAACV,eAAe,CAAC;IACjD;IACA,IAAIC,wBAAwB,EAAE;MAC5B,IAAI,CAACtT,QAAQ,CAAC;QAAE/C,eAAe,EAAEmW;MAAmB,CAAC,CAAC;IACxD;IACA,OAAOG,qBAAqB,IAAID,wBAAwB;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEQ,gBAAgBA,CACdf,UAAsB,EACtBrB,KAAoB,EACpB1U,YAA4B,EACnB;IACT,IAAQhH,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQG,SAAS,GAAKH,KAAK,CAAnBG,SAAS;IACjB,IAAMZ,MAAM,GAAGS,KAAK,CAACkF,OAAO,CAAC6X,UAAU,CAAC;IAExC,IAAIrB,KAAK,IAAI,IAAI,IAAI,GAAAsC,MAAA,CAAGtC,KAAK,EAAGuC,IAAI,CAAC,CAAC,CAAC5U,MAAM,GAAG,CAAC,EAAE;MACjD,IAAM6U,WAAW,GAAGlX,YAAY,CAAC4Q,GAAG,CAACmF,UAAU,CAAC;MAChD,IAAImB,WAAW,IAAI,IAAI,EAAE;QACvB,IAAQjB,IAAI,GAAKiB,WAAW,CAApBjB,IAAI;QACZ,IAAIA,IAAI,KAAKvB,KAAK,EAAE;UAClBxd,GAAG,CAAC6a,MAAM,CAAC,oCAAoC,CAAC;UAChD,OAAO,KAAK;QACd;MACF;MACA/R,YAAY,CAAChD,GAAG,CAAC+Y,UAAU,EAAE;QAC3BE,IAAI,EAAEvB,KAAK;QACXpW,MAAM,EAAE,IAAI,CAACsL,eAAe,CAACrR,MAAM,EAAEmc,KAAK,EAAEvb,SAAS,CAAC+b,QAAQ;MAChE,CAAC,CAAC;MACF,OAAO,IAAI;IACb;IACA,OAAOlV,YAAY,CAAC6W,MAAM,CAACd,UAAU,CAAC;EACxC;EAEAoB,oBAAoBA,CAAClX,eAA0C,EAAQ;IACrE,IAAI,CAAC+C,QAAQ,CAAC;MAAE/C;IAAgB,CAAC,CAAC;EACpC;EAEAmX,iBAAiBA,CACfrB,UAAsB,EACtBzX,MAAqC,EACrC1E,OAA8B,EACxB;IACN1C,GAAG,CAACmI,KAAK,CAAC,yBAAyB,EAAE0W,UAAU,EAAEzX,MAAM,CAAC;IAExD,IAAI,CAAC6E,YAAY,CAAC,cAAc,EAAE;MAAE+N,WAAW,EAAE;IAAK,CAAC,CAAC;IAExD,IAAI,CAAClO,QAAQ,CAACqU,KAAA,IAAyB;MAAA,IAAtBpX,eAAe,GAAAoX,KAAA,CAAfpX,eAAe;MAC9B,IAAMmW,kBAAkB,GAAG,IAAIvZ,GAAG,CAACoD,eAAe,CAAC;MACnD,IAAI3B,MAAM,IAAI,IAAI,EAAE;QAClB8X,kBAAkB,CAACS,MAAM,CAACd,UAAU,CAAC;MACvC,CAAC,MAAM;QACLK,kBAAkB,CAACpZ,GAAG,CAAC+Y,UAAU,EAAE;UACjCzX,MAAM;UACN1E;QACF,CAAC,CAAC;MACJ;MACA,OAAO;QAAEqG,eAAe,EAAEmW;MAAmB,CAAC;IAChD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEkB,cAAcA,CACZvB,UAAsB,EACtBzX,MAAqC,EACrC2X,IAAY,EACN;IACN/e,GAAG,CAACmI,KAAK,CAAC,sBAAsB,EAAE0W,UAAU,EAAEzX,MAAM,EAAE2X,IAAI,CAAC;IAE3D,IAAQjW,YAAY,GAAK,IAAI,CAACgB,KAAK,CAA3BhB,YAAY;IACpB,IAAMqW,eAAe,GAAG,IAAIxZ,GAAG,CAACmD,YAAY,CAAC;IAC7CqW,eAAe,CAACrZ,GAAG,CAAC+Y,UAAU,EAAE;MAAEzX,MAAM;MAAE2X;IAAK,CAAC,CAAC;IACjD,IAAI,CAACc,yBAAyB,CAACV,eAAe,CAAC;EACjD;;EAEA;AACF;AACA;AACA;EACExM,YAAYA,CAAC0N,SAAoB,EAAQ;IAAA,IAAAC,sBAAA;IACvCtgB,GAAG,CAACmI,KAAK,CAAC,cAAc,EAAEkY,SAAS,CAAC;IAEpC,IAAQ7G,gBAAgB,GAAK,IAAI,CAACzY,KAAK,CAA/ByY,gBAAgB;IACxB,IAAM+G,gCAAgC,IAAAD,sBAAA,GACpC9G,gBAAgB,CAACE,GAAG,CAClB1a,oBAAoB,CAACwhB,8BACvB,CAAC,cAAAF,sBAAA,cAAAA,sBAAA,GAAI,KAAK;IACZ,IAAIC,gCAAgC,EAAE;MACpC,IAAI,CAACE,eAAe,CAAC,CAAC;IACxB;IAEA,IAAQ3e,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQgH,YAAY,GAAK,IAAI,CAACgB,KAAK,CAA3BhB,YAAY;IACpB,IAAMqW,eAA+B,GAAGoB,gCAAgC,GACpE,IAAI5a,GAAG,CAAC,CAAC,GACT,IAAIA,GAAG,CAACmD,YAAY,CAAC;IACzB,IAAIuW,qBAAqB,GAAG,KAAK;IACjCgB,SAAS,CAACza,OAAO,CAAC,CAAA8a,KAAA,EAA6BjB,UAAU,KAAK;MAAA,IAAzCC,UAAU,GAAAgB,KAAA,CAAVhB,UAAU;QAAEiB,UAAU,GAAAD,KAAA,CAAVC,UAAU;MACzC,IAAMtf,MAAM,GAAGS,KAAK,CAACkF,OAAO,CAAC4Z,IAAI,CAC/BC,CAAC,IAAIA,CAAC,CAAC1Z,IAAI,KAAKsY,UAAU,IAAIoB,CAAC,CAAC9c,IAAI,KAAK2b,UAC3C,CAAC;MACD,IAAIre,MAAM,IAAI,IAAI,EAAE;QAClB;MACF;MACA,IAAM2b,WAAW,GAAGlb,KAAK,CAACqU,oBAAoB,CAAC9U,MAAM,CAAC8F,IAAI,CAAC;MAC3DjM,aAAa,CAAC8hB,WAAW,CAAC;MAC1B,IAAM8D,YAAY,GAAGpiB,aAAa,CAACqiB,sBAAsB,CACvDrB,UAAU,EACViB,UACF,CAAC;MACD,IAAIG,YAAY,CAAC3V,MAAM,KAAK,CAAC,EAAE;QAC7BkU,qBAAqB,GACnBF,eAAe,CAACQ,MAAM,CAAC3C,WAAW,CAAC,IAAIqC,qBAAqB;MAChE,CAAC,MAAM;QACL,IAAQpd,SAAS,GAAKH,KAAK,CAAnBG,SAAS;QACjBkd,eAAe,CAACrZ,GAAG,CAACkX,WAAW,EAAE;UAC/B5V,MAAM,EAAE,IAAI,CAACsL,eAAe,CAC1BrR,MAAM,EACNyf,YAAY,EACZ7e,SAAS,CAAC+b,QACZ,CAAC;UACDe,IAAI,KAAAe,MAAA,CAAKgB,YAAY;QACvB,CAAC,CAAC;QACFzB,qBAAqB,GAAG,IAAI;MAC9B;IACF,CAAC,CAAC;IACF,IAAIA,qBAAqB,EAAE;MACzB,IAAI,CAACQ,yBAAyB,CAACV,eAAe,CAAC;IACjD;EACF;EAEA6B,kBAAkBA,CAACC,UAAyC,EAAQ;IAClE,IAAMC,UAA4B,GAAGC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,GAC1DA,UAAU,GACV,CAACA,UAAU,EAAEA,UAAU,CAAC;IAC5B,IAAAI,YAAA,GAA0C,IAAI,CAACvX,KAAK;MAA5Cf,eAAe,GAAAsY,YAAA,CAAftY,eAAe;MAAED,YAAY,GAAAuY,YAAA,CAAZvY,YAAY;IACrC,IAAQkQ,wBAAwB,GAAK,IAAI,CAACjY,KAAK,CAAvCiY,wBAAwB;IAChC,IAAMkG,kBAAkB,GAAG,IAAIvZ,GAAG,CAACoD,eAAe,CAAC;IACnD,IAAMoW,eAAe,GAAG,IAAIxZ,GAAG,CAACmD,YAAY,CAAC;IAC7CoW,kBAAkB,CAACtZ,OAAO,CAAC,CAAC0b,CAAC,EAAEjgB,MAAM,KAAK;MACxC,IAAIA,MAAM,IAAI6f,UAAU,CAAC,CAAC,CAAC,IAAI7f,MAAM,IAAI6f,UAAU,CAAC,CAAC,CAAC,EAAE;QACtDhC,kBAAkB,CAACS,MAAM,CAACte,MAAM,CAAC;MACnC;IACF,CAAC,CAAC;IACF8d,eAAe,CAACvZ,OAAO,CAAC,CAAC0b,CAAC,EAAEjgB,MAAM,KAAK;MACrC,IAAIA,MAAM,IAAI6f,UAAU,CAAC,CAAC,CAAC,IAAI7f,MAAM,IAAI6f,UAAU,CAAC,CAAC,CAAC,EAAE;QACtD/B,eAAe,CAACQ,MAAM,CAACte,MAAM,CAAC;MAChC;IACF,CAAC,CAAC;IAEF,IAAM+d,wBAAwB,GAC5BF,kBAAkB,CAAC5K,IAAI,KAAKvL,eAAe,CAACuL,IAAI;IAClD,IAAM+K,qBAAqB,GAAGF,eAAe,CAAC7K,IAAI,KAAKxL,YAAY,CAACwL,IAAI;IACxE,IAAI+K,qBAAqB,EAAE;MACzB,IAAI,CAACQ,yBAAyB,CAACV,eAAe,CAAC;IACjD;IACA,IAAIC,wBAAwB,EAAE;MAC5B,IAAI,CAACC,qBAAqB,IAAIrG,wBAAwB,EAAE;QACtD,IAAI,CAAC/M,YAAY,CAAC,cAAc,EAAE;UAAE+N,WAAW,EAAE;QAAK,CAAC,CAAC;MAC1D;MACA,IAAI,CAAClO,QAAQ,CAAC;QAAE/C,eAAe,EAAEmW;MAAmB,CAAC,CAAC;IACxD;EACF;EAEAqC,iBAAiBA,CAACnE,WAAuB,EAAQ;IAC/C,IAAQtU,YAAY,GAAK,IAAI,CAACgB,KAAK,CAA3BhB,YAAY;IACpB,IAAMqW,eAAe,GAAG,IAAIxZ,GAAG,CAACmD,YAAY,CAAC;IAC7CqW,eAAe,CAACQ,MAAM,CAACvC,WAAW,CAAC;IACnC,IAAI,CAACyC,yBAAyB,CAACV,eAAe,CAAC;EACjD;EAEAsB,eAAeA,CAAA,EAAS;IACtBzgB,GAAG,CAACmI,KAAK,CAAC,sBAAsB,CAAC;IAEjC,IAAAqZ,YAAA,GAAwD,IAAI,CAAC1X,KAAK;MAA1Df,eAAe,GAAAyY,YAAA,CAAfzY,eAAe;MAAED,YAAY,GAAA0Y,YAAA,CAAZ1Y,YAAY;MAAEO,YAAY,GAAAmY,YAAA,CAAZnY,YAAY;IACnD,IAAQ2P,wBAAwB,GAAK,IAAI,CAACjY,KAAK,CAAvCiY,wBAAwB;IAChC,IACElQ,YAAY,CAACwL,IAAI,KAAK,CAAC,IACvBvL,eAAe,CAACuL,IAAI,KAAK,CAAC,IAC1BjL,YAAY,KAAK,IAAI,EACrB;MACA;IACF;IAEA,IAAIP,YAAY,CAACwL,IAAI,GAAG,CAAC,EAAE;MACzB,IAAI,CAACuL,yBAAyB,CAACxkB,SAAS,CAAC;IAC3C;IAEA,IAAMomB,eAAe,GAAG1Y,eAAe,CAACuL,IAAI,GAAG,CAAC,IAAIjL,YAAY,IAAI,IAAI;IACxE,IAAIoY,eAAe,EAAE;MACnB,IAAI3Y,YAAY,CAACwL,IAAI,KAAK,CAAC,IAAI0E,wBAAwB,EAAE;QACvD,IAAI,CAAC/M,YAAY,CAAC,qBAAqB,EAAE;UAAE+N,WAAW,EAAE;QAAK,CAAC,CAAC;MACjE;MACA,IAAI,CAAClO,QAAQ,CAAC;QACZ/C,eAAe,EAAE,IAAIpD,GAAG,CAAC,CAAC;QAC1B+F,WAAW,EAAE,EAAE;QACfrC,YAAY,EAAExH;MAChB,CAAC,CAAC;IACJ;IAEA,IAAI,CAACmX,wBAAwB,EAAE;MAC7B,IAAI,CAACY,mBAAmB,CAAC,CAAC;IAC5B;EACF;EAEA8H,oBAAoBA,CAAA,EAAS;IAC3B1hB,GAAG,CAACmI,KAAK,CAAC,2BAA2B,CAAC;IAEtC,IAAI,CAAC2D,QAAQ,CAAC;MAAEvD,mBAAmB,EAAEhI;IAA6B,CAAC,CAAC;EACtE;EAEAsZ,qBAAqBA,CAAA,EAAS;IAC5B7Z,GAAG,CAACmI,KAAK,CAAC,8BAA8B,CAAC;IAEzC,IAAI,CAAC2D,QAAQ,CAAC;MACZJ,WAAW,EAAE,EAAE;MACfrC,YAAY,EAAExH;IAChB,CAAC,CAAC;EACJ;EAEA+X,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,IAAI,CAAClG,cAAc,CAACuI,OAAO,IAAI,IAAI,EAAE;MACvC,IAAI,CAACvI,cAAc,CAACuI,OAAO,CAAC0F,QAAQ,CAAC,EAAE,CAAC;IAC1C;EACF;;EAEA;AACF;AACA;EACEC,cAAcA,CAAA,EAAS;IACrB,IAAQ9f,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAA+f,YAAA,GAA0C,IAAI,CAAC/X,KAAK;MAA5Cf,eAAe,GAAA8Y,YAAA,CAAf9Y,eAAe;MAAED,YAAY,GAAA+Y,YAAA,CAAZ/Y,YAAY;IAErC,IAAIC,eAAe,CAACuL,IAAI,KAAK,CAAC,IAAIxL,YAAY,CAACwL,IAAI,KAAK,CAAC,EAAE;MACzDtU,GAAG,CAACmI,KAAK,CAAC,uBAAuB,CAAC;MAClC;IACF;IAEA,IAAQnB,OAAO,GAAgBlF,KAAK,CAA5BkF,OAAO;MAAE/E,SAAS,GAAKH,KAAK,CAAnBG,SAAS;IAE1BjC,GAAG,CAACmI,KAAK,CAAC,oBAAoB,CAAC;IAE/B,IAAM+W,kBAAkB,GAAG,IAAIvZ,GAAG,CAAC,CAAC;IACpC,IAAMwZ,eAAe,GAAG,IAAIxZ,GAAG,CAAC,CAAC;IAEjCoD,eAAe,CAACnD,OAAO,CAAC,CAAC4X,KAAK,EAAEsE,GAAG,KAAK;MACtC,IAAQpf,OAAO,GAAK8a,KAAK,CAAjB9a,OAAO;MACf,IAAMrB,MAAM,GAAG2F,OAAO,CAAC8a,GAAG,CAAC;MAC3B,IAAM1a,MAAM,GAAG,IAAI,CAACzE,UAAU,CAACof,kBAAkB,CAC/C1gB,MAAM,EACNqB,OAAO,EACPT,SAAS,CAAC+b,QACZ,CAAC;MACDkB,kBAAkB,CAACpZ,GAAG,CAACgc,GAAG,EAAE;QAC1Bpf,OAAO;QACP0E;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF0B,YAAY,CAAClD,OAAO,CAAC,CAAC4X,KAAK,EAAEsE,GAAG,KAAK;MACnC,IAAQ/C,IAAI,GAAKvB,KAAK,CAAduB,IAAI;MACZ,IAAM1d,MAAM,GAAG2F,OAAO,CAAC8a,GAAG,CAAC;MAC3B3C,eAAe,CAACrZ,GAAG,CAACgc,GAAG,EAAE;QACvB/C,IAAI;QACJ3X,MAAM,EAAE,IAAI,CAACsL,eAAe,CAACrR,MAAM,EAAE0d,IAAI,EAAE9c,SAAS,CAAC+b,QAAQ;MAC/D,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,IAAI,CAAC/R,YAAY,CAAC,uBAAuB,EAAE;MAAE+N,WAAW,EAAE;IAAK,CAAC,CAAC;IACjE,IAAIlR,YAAY,CAACwL,IAAI,GAAG,CAAC,EAAE;MACzB,IAAI,CAACuL,yBAAyB,CAACV,eAAe,CAAC;IACjD;IACA,IAAI,CAACrT,QAAQ,CAAC;MAAE/C,eAAe,EAAEmW;IAAmB,CAAC,CAAC;EACxD;EAEA8C,UAAUA,CAAAC,KAAA,EAGwD;IAAA,IAFhEnZ,YAAY,GAAAmZ,KAAA,CAAZnZ,YAAY;MACZC,eAAe,GAAAkZ,KAAA,CAAflZ,eAAe;IAEf,IAAI,CAAC8W,yBAAyB,CAAC/W,YAAY,CAAC;IAC5C,IAAI,CAACgD,QAAQ,CAAC;MAAE/C;IAAgB,CAAC,CAAC;EACpC;EAEAmR,uBAAuBA,CAACnB,QAAmB,EAA4B;IAAA,IAAAmJ,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IAAA,IAA1BC,WAAW,GAAArF,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,IAAI;IAC7D,IAAMnK,mBAAmB,GAAGjY,cAAc,CAAC0nB,gBAAgB,CAAC1J,QAAQ,CAAC;IACrE,IAAM2J,wBAAwB,GAC5B3nB,cAAc,CAAC4nB,2BAA2B,CAAC5J,QAAQ,CAAC;IAEtD,IAAM6J,2BAA2B,IAAAV,qBAAA,GAC/BnJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE6J,2BAA2B,cAAAV,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;IAC7C,IAAMW,2BAA2B,IAAAV,qBAAA,GAC/BpJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE8J,2BAA2B,cAAAV,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;IAC7C,IAAMhP,wBAAwB,IAAAiP,qBAAA,GAC5BrJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE5F,wBAAwB,cAAAiP,qBAAA,cAAAA,qBAAA,GAAI,KAAK;IAE7C,IAAMhP,gBAAgB,IAAAiP,qBAAA,GAAGtJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE3F,gBAAgB,cAAAiP,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IAC3D,IAAMhP,eAAe,IAAAiP,qBAAA,GAAGvJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE1F,eAAe,cAAAiP,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IACzD,IAAMhP,oBAAoB,IAAAiP,qBAAA,GAAGxJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEzF,oBAAoB,cAAAiP,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IAEnE,IAAMO,qBAAqB,GAAG,CAACrqB,SAAS,CACtC,IAAI,CAACua,mBAAmB,EACxBA,mBACF,CAAC;IACD,IAAM+P,uBAAuB,GAAG,CAACtqB,SAAS,CACxC,IAAI,CAACiqB,wBAAwB,EAC7BA,wBACF,CAAC;IACD,IAAMM,0BAA0B,GAAG,CAACvqB,SAAS,CAC3C,IAAI,CAACwa,oBAAoB,EACzB8F,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE6J,2BACZ,CAAC;IACD,IAAMK,0BAA0B,GAAG,CAACxqB,SAAS,CAC3C,IAAI,CAACya,oBAAoB,EACzB2P,2BACF,CAAC;IACD,IAAMK,wBAAwB,GAC5B,IAAI,CAAC/P,wBAAwB,KAAKA,wBAAwB;IAC5D,IAAMgQ,yBAAyB,GAC7B,IAAI,CAAC/P,gBAAgB,KAAKA,gBAAgB;IAC5C,IAAMgQ,wBAAwB,GAAG,IAAI,CAAC/P,eAAe,KAAKA,eAAe;IACzE,IAAMgQ,6BAA6B,GACjC,IAAI,CAAC/P,oBAAoB,KAAKA,oBAAoB;IAEpD,IACEwP,qBAAqB,IACrBC,uBAAuB,IACvBC,0BAA0B,IAC1BC,0BAA0B,IAC1BC,wBAAwB,IACxBC,yBAAyB,IACzBC,wBAAwB,IACxBC,6BAA6B,EAC7B;MACA,IAAI,CAACrQ,mBAAmB,GAAGA,mBAAmB;MAC9C,IAAI,CAAC0P,wBAAwB,GAAGA,wBAAwB;MACxD,IAAI,CAACzP,oBAAoB,GAAG2P,2BAA2B;MACvD,IAAI,CAAC1P,oBAAoB,GAAG2P,2BAA2B;MACvD,IAAI,CAAC1P,wBAAwB,GAAGA,wBAAwB;MACxD,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;MACxC,IAAI,CAACC,eAAe,GAAGA,eAAe;MACtC,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;MAChD,IAAI,CAACgQ,eAAe,CAAC,CAAC,CAAC,EAAEd,WAAW,CAAC;MAErC,IAAIO,uBAAuB,IAAIP,WAAW,EAAE;QAC1C,IAAI,CAACZ,cAAc,CAAC,CAAC;MACvB;IACF;EACF;EAqDA0B,eAAeA,CACbC,cAA2E,EAErE;IAAA,IAAAC,qBAAA;IAAA,IADNhB,WAAW,GAAArF,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,IAAI;IAElB,IAAQlI,qBAAqB,GAAK,IAAI,CAACnL,KAAK,CAApCmL,qBAAqB;IAC7B,IAAQnT,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAM2hB,MAAM,GAAArZ,aAAA;MACV6K;IAAqB,GAClBsO,cAAc,CAClB;IACD,IAAMG,mBAAmB,GAAG,CAC1B,KAAAF,qBAAA,GAAI,IAAI,CAACxQ,mBAAmB,cAAAwQ,qBAAA,cAAAA,qBAAA,GAAI,EAAE,CAAC,EACnC,GAAGC,MAAM,CAACxO,qBAAqB,CAAChP,MAAM,CAAC,CAAC,CACzC;IACD,IAAMhE,SAAS,GAAG,IAAInH,SAAS,CAC7BgH,KAAK,CAACgG,EAAE,EACR4b,mBAAmB,EACnB,IAAI,CAAChB,wBAAwB,EAC7B,IAAI,CAACzP,oBAAoB,EACzB,IAAI,CAACC,oBAAoB,EACzB,IAAI,CAACC,wBAAwB,EAC7B,IAAI,CAACC,gBAAgB,EACrB,IAAI,CAACC,eACP,CAAC;IAEDrT,GAAG,CAACmI,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC6K,mBAAmB,EAAE0Q,mBAAmB,CAAC;IAE3E,IAAI,CAAC5X,QAAQ,CAAA1B,aAAA,CAAAA,aAAA,KAAMqZ,MAAM;MAAExhB;IAAS,IAAI,MAAM;MAC5C,IAAIugB,WAAW,IAAI,IAAI,CAAC3P,IAAI,EAAE;QAC5B,IAAI,CAACA,IAAI,CAAC2P,WAAW,CAAC,CAAC;MACzB;IACF,CAAC,CAAC;EACJ;EAEAmB,aAAaA,CAAA,EAAS;IACpB,IAAQ5K,QAAQ,GAAK,IAAI,CAAChY,KAAK,CAAvBgY,QAAQ;IAChB,IAAI,CAACmB,uBAAuB,CAACnB,QAAQ,CAAC;EACxC;EAEAP,SAASA,CAAA,EAAS;IAChB,IAAQ1W,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAI;MACF,IAAIlD,sBAAsB,CAACkD,KAAK,CAAC,IAAIA,KAAK,CAAC8hB,mBAAmB,EAAE;QAC9D,IAAI,CAACC,mBAAmB,CAAC/hB,KAAK,CAAC;MACjC,CAAC,MAAM;QACL,IAAI,CAACgiB,cAAc,CAAC,CAAC;MACvB;IACF,CAAC,CAAC,OAAOre,KAAK,EAAE;MACd,IAAI,CAACse,oBAAoB,CAACte,KAAK,CAAC;IAClC;EACF;EAEAqe,cAAcA,CAAA,EAAS;IACrB,IAAAE,YAAA,GAWI,IAAI,CAACjjB,KAAK;MAVZkjB,uBAAuB,GAAAD,YAAA,CAAvBC,uBAAuB;MACvBnL,YAAY,GAAAkL,YAAA,CAAZlL,YAAY;MACZ9P,KAAK,GAAAgb,YAAA,CAALhb,KAAK;MACLlH,KAAK,GAAAkiB,YAAA,CAALliB,KAAK;MACLmH,OAAO,GAAA+a,YAAA,CAAP/a,OAAO;MACPib,WAAW,GAAAF,YAAA,CAAXE,WAAW;MACXtN,aAAa,GAAAoN,YAAA,CAAbpN,aAAa;MACblL,WAAW,GAAAsY,YAAA,CAAXtY,WAAW;MACXC,qBAAqB,GAAAqY,YAAA,CAArBrY,qBAAqB;MACrBC,mBAAmB,GAAAoY,YAAA,CAAnBpY,mBAAmB;IAGrB,IAAMyK,aAAa,GAAG1K,qBAAqB,aAArBA,qBAAqB,cAArBA,qBAAqB,GAAI,EAAE;IACjD,IAAMtC,YAAY,GAAG1K,iBAAiB,CAACkN,kBAAkB,CACvD/J,KAAK,CAACgG,EAAE,EACR4D,WAAW,EACX2K,aAAa,EACbvU,KAAK,CAACkF,OAAO,EACb4E,mBACF,CAAC;IAED,IAAIqY,uBAAuB,EAAE;MAC3B;MACA;MACA,IAAME,sBAAsB,GAAGrL,YAAY,CAAC1R,MAAM,CAChDiS,WAAW,IAAIA,WAAW,CAACmE,KAAK,IAAI,IACtC,CAAC;MACD,IAAI,CAACzD,iBAAiB,CAACoK,sBAAsB,CAAC;IAChD;IAEA,IAAI,CAACrY,QAAQ,CAAC;MACZ9C,KAAK;MACLC,OAAO,EAAEA,OAAO,IAAIib,WAAW,KAAKlpB,UAAU,CAACopB,YAAY,CAACC,SAAS;MACrEzN,aAAa;MACbO,OAAO,EAAE,IAAI;MACb9N;IACF,CAAC,CAAC;IACF,IAAI,CAACsa,aAAa,CAAC,CAAC;EACtB;EAEME,mBAAmBA,CAAC/hB,KAA2B,EAAiB;IAAA,IAAAwiB,KAAA;IAAA,OAAAC,iBAAA;MACpE,IAAI;QACF,IAAQlP,eAAe,GAAKiP,KAAI,CAACxa,KAAK,CAA9BuL,eAAe;QACvB,IAAI,CAACA,eAAe,EAAE;UACpBiP,KAAI,CAACrY,YAAY,CAAC,uBAAuB,EAAE;YACzCC,kBAAkB,EAAE,KAAK;YACzB8N,WAAW,EAAE;UACf,CAAC,CAAC;UACFsK,KAAI,CAACE,yBAAyB,CAAC1iB,KAAK,CAAC;QACvC;QACAwiB,KAAI,CAACxY,QAAQ,CAAC;UAAEqJ,oBAAoB,EAAE;QAAK,CAAC,EAAEmP,KAAI,CAACR,cAAc,CAAC;MACpE,CAAC,CAAC,OAAOre,KAAK,EAAE;QACd,IAAI,CAAClK,YAAY,CAACkpB,UAAU,CAAChf,KAAK,CAAC,EAAE;UACnC6e,KAAI,CAACP,oBAAoB,CAACte,KAAK,CAAC;QAClC;MACF;IAAC;EACH;;EAEA;AACF;AACA;EACQ+e,yBAAyBA,CAAC1iB,KAA2B,EAAiB;IAAA,IAAA4iB,MAAA;IAAA,OAAAH,iBAAA;MAC1E,IAAMI,QAAQ,SAASD,MAAI,CAAC3R,OAAO,CAAC6R,GAAG,CACrC9iB,KAAK,CAAC+iB,kBAAkB,CAAC,CAAC,EAC1BC,QAAQ,IAAIA,QAAQ,CAACC,KAAK,CAAC,CAC7B,CAAC;MACD,IAAQjd,EAAE,GAAKhG,KAAK,CAAZgG,EAAE;MAEV,IAAMkB,KAAK,GAAG2b,QAAQ,CAAC3d,OAAO,CAACd,GAAG,CAAC7E,MAAM,IAAIA,MAAM,CAAC+E,IAAI,CAAC,CAAC,CAAC4e,IAAI,CAAC,CAAC,CAAC;MAClEL,QAAQ,CAACM,SAAS,CAACjc,KAAK,CAAC;MACzB2b,QAAQ,CAACO,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;;MAE1B;MACA;MACAP,QAAQ,CAACQ,gBAAgB,CACvBrd,EAAE,CAACsd,KAAK,CAACC,aAAa,EACrBC,KAAwC,IAAK;QAC5C,IAAI;UACF,IAAgBC,IAAI,GAAKD,KAAK,CAAtBE,MAAM;UACd,IAAID,IAAI,CAACE,IAAI,CAACta,MAAM,KAAK,CAAC,EAAE;YAC1B;YACAuZ,MAAI,CAACgB,WAAW,CAAC,CAAC;YAClB;UACF;UACA,IAAMC,GAAG,GAAGJ,IAAI,CAACE,IAAI,CAAC,CAAC,CAAC;UACxB,IAAMxf,MAAM,GAAG0e,QAAQ,CAAC3d,OAAO,CAACd,GAAG,CAAC7E,MAAM,IAAIskB,GAAG,CAACjM,GAAG,CAACrY,MAAM,CAAC,CAAC;UAC9D,IAAMukB,YAA6B,GAAG;YACpCxQ,UAAU,EAAEnP,MAAM;YAClBuQ,IAAI,EAAE1U,KAAK,CAAC+jB,2BAA2B,GAAG,WAAW,GAAG;UAC1D,CAAC;UACDlB,QAAQ,CAACI,KAAK,CAAC,CAAC;UAChBL,MAAI,CAAC5Y,QAAQ,CAAC;YACZC,mBAAmB,EAAE,KAAK;YAC1BsJ,eAAe,EAAEuQ;UACnB,CAAC,CAAC;QACJ,CAAC,CAAC,OAAOE,CAAC,EAAE;UACVnB,QAAQ,CAACI,KAAK,CAAC,CAAC;UAChB/kB,GAAG,CAACyF,KAAK,CAAC,wCAAwC,EAAEqgB,CAAC,CAAC;QACxD;MACF,CACF,CAAC;IAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEC,2BAA2BA,CAAC9I,QAAwB,EAAQ;IAC1D,IAAQnb,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb5G,aAAa,CAAC+hB,QAAQ,CAAC;IACvB,IAAIre,sBAAsB,CAACkD,KAAK,CAAC,EAAE;MACjC,IAAMyjB,IAAI,GAAG,IAAI,CAACS,aAAa,CAAC/I,QAAQ,CAAC;MACzC,IAAMgJ,kBAAkB,GAAG,IAAIxa,GAAG,CAChC3J,KAAK,CAACokB,gBAAgB,CAAChgB,GAAG,CAAC7E,MAAM,IAAIA,MAAM,CAAC8F,IAAI,CAClD,CAAC;MACD,IAAMlB,MAAM,GAAGzF,MAAM,CAAC2lB,OAAO,CAACZ,IAAI,CAAC,CAChCne,MAAM,CAACgf,KAAA;QAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,KAAA;UAAEtE,GAAG,GAAAuE,KAAA;UAAE/E,CAAC,GAAA+E,KAAA;QAAA,OAAMJ,kBAAkB,CAACM,GAAG,CAACzE,GAAG,CAAC;MAAA,EAAC,CACjD5b,GAAG,CAACsgB,KAAA;QAAA,IAAAC,MAAA,GAAAH,cAAA,CAAAE,KAAA;UAAE1E,GAAG,GAAA2E,MAAA;UAAEC,UAAU,GAAAD,MAAA;QAAA,OAAMC,UAAU,CAAClJ,KAAK;MAAA,EAAC;MAC/C,IAAMoI,YAA6B,GAAG;QACpCxQ,UAAU,EAAEnP,MAAM;QAClBuQ,IAAI,EAAE;MACR,CAAC;MACD,IAAI,CAAC1K,QAAQ,CAAC;QACZqJ,oBAAoB,EAAE,IAAI;QAC1BE,eAAe,EAAEuQ;MACnB,CAAC,CAAC;IACJ;EACF;EAEAe,QAAQA,CACN3J,WAA2B,EAC3BC,QAAwB,EAElB;IAAA,IADNC,QAAQ,GAAAC,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,KAAK;IAEhB,IAAQvH,OAAO,GAAK,IAAI,CAAC7U,KAAK,CAAtB6U,OAAO;IACf,IAAIA,OAAO,EAAE;MACX,IAAM4H,KAAK,GAAGzX,MAAM,CAClB,IAAI,CAACgX,eAAe,CAACC,WAAW,EAAEC,QAAQ,EAAEC,QAAQ,CACtD,CAAC;MACD/hB,eAAe,CAACqiB,KAAK,CAAC,CAAChJ,KAAK,CAACsR,CAAC,IAAI9lB,GAAG,CAACyF,KAAK,CAAC,qBAAqB,EAAEqgB,CAAC,CAAC,CAAC;IACxE,CAAC,MAAM;MACL9lB,GAAG,CAACyF,KAAK,CAAC,yDAAyD,CAAC;IACtE;EACF;EAEAmhB,gBAAgBA,CAAC5J,WAA2B,EAAyB;IAAA,IAAvB6J,WAAW,GAAA1J,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,CAAC;IAC3D,IAAIH,WAAW,KAAK,IAAI,EAAE;MACxB;IACF;IACA,IAAQpH,OAAO,GAAK,IAAI,CAAC7U,KAAK,CAAtB6U,OAAO;IACf,IAAQhL,YAAY,GAAK,IAAI,CAACd,KAAK,CAA3Bc,YAAY;IAEpB,IAAIgL,OAAO,EAAE;MACX,IAAMkB,aAAa,GAAG;QACpBkG,WAAW;QACX6J,WAAW;QACXjc;MACF,CAAC;MACD,IAAI,CAACkB,QAAQ,CAAC;QAAEgL;MAAc,CAAC,CAAC;IAClC,CAAC,MAAM;MACL9W,GAAG,CAACyF,KAAK,CAAC,8DAA8D,CAAC;IAC3E;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEqhB,UAAUA,CACRC,MAA4B,EAItB;IAAA,IAHNC,cAAc,GAAA7J,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,KAAK;IAAA,IACtB8J,YAAY,GAAA9J,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,IAAI;IAAA,IACnB1X,KAAc,GAAA0X,SAAA,CAAAhS,MAAA,OAAAgS,SAAA,MAAAtb,SAAA;IAEd,IAAQC,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAMolB,OAAO,GAAG3tB,SAAS,CAAC4tB,aAAa,CACrCJ,MAAM,EACNjlB,KAAK,CAACslB,WAAW,EACjBtlB,KAAK,CAACulB,QACR,CAAC;IACD,IAAMC,SAAS,GAAG,IAAIztB,eAAe,CAACqtB,OAAO,EAAE,MAAMplB,KAAK,CAAC;IAC3D,IAAI,CAACylB,aAAa,CAACD,SAAS,EAAEN,cAAc,EAAEC,YAAY,EAAExhB,KAAK,CAAC;EACpE;EAEA8hB,aAAaA,CACXD,SAAoB,EAId;IAAA,IAHNN,cAAc,GAAA7J,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,KAAK;IAAA,IACtB8J,YAAY,GAAA9J,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,IAAI;IAAA,IACnB1X,KAAc,GAAA0X,SAAA,CAAAhS,MAAA,OAAAgS,SAAA,MAAAtb,SAAA;IAEd,IAAQ+T,OAAO,GAAK,IAAI,CAAC7U,KAAK,CAAtB6U,OAAO;IACf,IAAA4R,YAAA,GAA2C,IAAI,CAAC1d,KAAK;MAA7CnD,gBAAgB,GAAA6gB,YAAA,CAAhB7gB,gBAAgB;MAAEiE,YAAY,GAAA4c,YAAA,CAAZ5c,YAAY;IACtC,IAAMhE,gBAAgB,GAAGD,gBAAgB,CAAC8gB,mBAAmB,CAAC,CAAC;IAE/D,IAAI7R,OAAO,EAAE;MACX;MACA,IACE0R,SAAS,YAAY7oB,cAAc,IACnC6oB,SAAS,CAACI,aAAa,CAACvc,MAAM,GAAG,CAAC,EAClC;QACA;MACF;MACA,IAAM2L,aAAa,GAAG;QACpBwQ,SAAS;QACTN,cAAc;QACdC,YAAY;QACZrc,YAAY;QACZhE,gBAAgB;QAChBnB;MACF,CAAC;MACD,IAAI,CAACqG,QAAQ,CAAC;QAAEgL;MAAc,CAAC,CAAC;IAClC,CAAC,MAAM;MACL9W,GAAG,CAACyF,KAAK,CAAC,2DAA2D,CAAC;IACxE;EACF;EAEAwG,YAAYA,CACV8K,WAAmB,EAMb;IAAA,IAAA4Q,MAAA,GAAAxK,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MADF,CAAC,CAAC;MAAAyK,kBAAA,GAAAD,MAAA,CAHJ3N,WAAW;MAAXA,WAAW,GAAA4N,kBAAA,cAAG,KAAK,GAAAA,kBAAA;MAAAC,qBAAA,GAAAF,MAAA,CACnBzb,kBAAkB;MAAlBA,kBAAkB,GAAA2b,qBAAA,cAAG,IAAI,GAAAA,qBAAA;MAAAC,qBAAA,GAAAH,MAAA,CACzBxb,iBAAiB;MAAjBA,iBAAiB,GAAA2b,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAG1B,IAAI,CAAChc,QAAQ,CAAC;MAAEiL,WAAW;MAAE7K,kBAAkB;MAAEC;IAAkB,CAAC,CAAC;IAErE,IAAMzD,KAAK,GAAG,IAAI,CAACgU,QAAQ,CAAC,CAAC;IAE7B,IAAI1C,WAAW,IAAI,IAAI,CAACnH,IAAI,EAAE;MAC5B,IAAI,CAACA,IAAI,CAACkV,mBAAmB,CAAC,CAAC;MAC/B,IAAI,CAAClV,IAAI,CAACmV,YAAY,CAAC;QAAEC,GAAG,EAAE;MAAE,CAAC,EAAE,IAAI,CAAC;IAC1C;IAEA,IAAI,IAAI,CAAC5N,qBAAqB,IAAI,IAAI,EAAE;MAAA,IAAA6N,qBAAA,EAAAC,iBAAA;MACtC,IAAQC,sBAAsB,GAA6B1f,KAAK,CAAxD0f,sBAAsB;QAAEC,sBAAsB,GAAK3f,KAAK,CAAhC2f,sBAAsB;MACtDntB,aAAa,CAACktB,sBAAsB,CAAC;MACrCltB,aAAa,CAACmtB,sBAAsB,CAAC;MACrC,IAAMC,MAAM,IAAAJ,qBAAA,IAAAC,iBAAA,GAAG,IAAI,CAACtM,WAAW,cAAAsM,iBAAA,uBAAhBA,iBAAA,CAAkBI,qBAAqB,CAAC,CAAC,CAACD,MAAM,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,CAAC;MACpE,IAAMM,mBAAmB,GAAG7N,IAAI,CAACnZ,GAAG,CAClC4mB,sBAAsB,EACtBzN,IAAI,CAACC,GAAG,CAAC0N,MAAM,GAAG,CAAC,EAAED,sBAAsB,CAC7C,CAAC;MACD,IAAI,CAAChO,qBAAqB,GAAG3M,IAAI,CAACC,GAAG,CAAC,CAAC;MACvC,IAAI,CAAC2M,sBAAsB,GACzB,IAAI,CAACD,qBAAqB,GAAGmO,mBAAmB;MAClD,IAAI,CAAC1c,QAAQ,CAAC;QACZjD,oBAAoB,EAAE;MACxB,CAAC,CAAC;MACF,IAAI,CAAC0S,YAAY,GAAGkN,UAAU,CAAC,MAAM;QACnC,IAAI,CAAC3c,QAAQ,CAAC;UACZC,mBAAmB,EAAE;QACvB,CAAC,CAAC;MACJ,CAAC,EAAElL,QAAQ,CAAC6nB,mBAAmB,CAAC;IAClC;EACF;EAEAhD,WAAWA,CAAA,EAAS;IAClB,IAAI,CAAC9J,mBAAmB,CAACP,MAAM,CAAC,CAAC;IACjC,IAAI,CAAChB,qBAAqB,GAAGxY,SAAS;IACtC,IAAI,CAACyY,sBAAsB,GAAGzY,SAAS;IACvC,IAAI,CAACiK,QAAQ,CAAC;MACZiL,WAAW,EAAE,IAAI;MACjBlO,oBAAoB,EAAE,IAAI;MAC1BkD,mBAAmB,EAAE,KAAK;MAC1BG,kBAAkB,EAAE;IACtB,CAAC,CAAC;IAEF,IAAI,IAAI,CAACqP,YAAY,IAAI,IAAI,EAAE;MAC7BC,YAAY,CAAC,IAAI,CAACD,YAAY,CAAC;MAC/B,IAAI,CAACA,YAAY,GAAG1Z,SAAS;IAC/B;EACF;;EAEA;AACF;AACA;EACE8mB,QAAQA,CAAA,EAAS;IACf,IAAI,IAAI,CAAC7V,gBAAgB,EAAE;MACzB9S,GAAG,CAACmI,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC2K,gBAAgB,CAAC;MAC/D,IAAA8V,qBAAA,GAaI,IAAI,CAAC9V,gBAAgB;QAZvB/J,eAAe,GAAA6f,qBAAA,CAAf7f,eAAe;QACfR,mBAAmB,GAAAqgB,qBAAA,CAAnBrgB,mBAAmB;QACnByM,kBAAkB,GAAA4T,qBAAA,CAAlB5T,kBAAkB;QAClBiC,0BAA0B,GAAA2R,qBAAA,CAA1B3R,0BAA0B;QAC1B3K,wBAAwB,GAAAsc,qBAAA,CAAxBtc,wBAAwB;QACxBsK,aAAa,GAAAgS,qBAAA,CAAbhS,aAAa;QACb9N,YAAY,GAAA8f,qBAAA,CAAZ9f,YAAY;QACZG,OAAO,GAAA2f,qBAAA,CAAP3f,OAAO;QACPC,YAAY,GAAA0f,qBAAA,CAAZ1f,YAAY;QACZG,YAAY,GAAAuf,qBAAA,CAAZvf,YAAY;QACZsM,qBAAqB,GAAAiT,qBAAA,CAArBjT,qBAAqB;QACrB3M,KAAK,GAAA4f,qBAAA,CAAL5f,KAAK;MAGP,IAAI,CAAC8J,gBAAgB,GAAG,IAAI;MAC5B,IAAI,CAAChH,QAAQ,CAAC;QACZ/C,eAAe;QACfR,mBAAmB;QACnByM,kBAAkB;QAClBiC,0BAA0B;QAC1B3K,wBAAwB;QACxBsK,aAAa;QACb9N,YAAY;QACZG,OAAO;QACPC,YAAY;QACZG,YAAY;QACZsM,qBAAqB;QACrB3M;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACLhJ,GAAG,CAACmI,KAAK,CAAC,+CAA+C,CAAC;MAC1D,IAAI,CAAC2D,QAAQ,CAAC;QACZ/C,eAAe,EAAE,IAAIpD,GAAG,CAAC,CAAC;QAC1B4C,mBAAmB,EAAEhI,4BAA4B;QACjDyU,kBAAkB,EAAE,EAAE;QACtBiC,0BAA0B,EAAE,IAAI;QAChC3K,wBAAwB,EAAEzK,SAAS;QACnC+U,aAAa,EAAE,EAAE;QACjB9N,YAAY,EAAE,IAAInD,GAAG,CAAC,CAAC;QACvBsD,OAAO,EAAE,KAAK;QACdC,YAAY,EAAErH,SAAS;QACvB8T,qBAAqB,EAAE,EAAE;QACzB3M,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF;;EAEA;AACF;AACA;AACA;EACE6f,WAAWA,CAAA,EAAY;IACrB,OACE,IAAI,CAAC/V,gBAAgB,IAAI,IAAI,IAAI,CAACpU,aAAa,CAACoqB,aAAa,CAAC,IAAI,CAAChf,KAAK,CAAC;EAE7E;EAEA2O,cAAcA,CAAC3W,KAAoB,EAAQ;IACzCA,KAAK,CAACqjB,gBAAgB,CAAC5mB,aAAa,CAACwqB,KAAK,CAACC,OAAO,EAAE,IAAI,CAAC5Y,YAAY,CAAC;IACtEtO,KAAK,CAACqjB,gBAAgB,CACpB5mB,aAAa,CAACwqB,KAAK,CAACE,cAAc,EAClC,IAAI,CAACpZ,mBACP,CAAC;IACD/N,KAAK,CAACqjB,gBAAgB,CAAC5mB,aAAa,CAACwqB,KAAK,CAACG,OAAO,EAAE,IAAI,CAACpZ,aAAa,CAAC;IACvEhO,KAAK,CAACqjB,gBAAgB,CACpB5mB,aAAa,CAACwqB,KAAK,CAACI,eAAe,EACnC,IAAI,CAACpZ,oBACP,CAAC;IACDjO,KAAK,CAACqjB,gBAAgB,CACpB5mB,aAAa,CAACwqB,KAAK,CAACK,eAAe,EACnC,IAAI,CAACpY,0BACP,CAAC;IACDlP,KAAK,CAACqjB,gBAAgB,CACpB5mB,aAAa,CAACwqB,KAAK,CAACM,oBAAoB,EACxC,IAAI,CAACnY,wBACP,CAAC;IACDpP,KAAK,CAACqjB,gBAAgB,CACpB5mB,aAAa,CAACwqB,KAAK,CAACO,gBAAgB,EACpC,IAAI,CAACnY,qBACP,CAAC;IACDrP,KAAK,CAACqjB,gBAAgB,CACpB5mB,aAAa,CAACwqB,KAAK,CAACQ,aAAa,EACjC,IAAI,CAAClZ,kBACP,CAAC;IACDvO,KAAK,CAACqjB,gBAAgB,CACpB5mB,aAAa,CAACwqB,KAAK,CAACS,cAAc,EAClC,IAAI,CAAClZ,mBACP,CAAC;EACH;EAEA4I,aAAaA,CAACpX,KAAoB,EAAQ;IACxCA,KAAK,CAAC2nB,mBAAmB,CAAClrB,aAAa,CAACwqB,KAAK,CAACC,OAAO,EAAE,IAAI,CAAC5Y,YAAY,CAAC;IACzEtO,KAAK,CAAC2nB,mBAAmB,CACvBlrB,aAAa,CAACwqB,KAAK,CAACE,cAAc,EAClC,IAAI,CAACpZ,mBACP,CAAC;IACD/N,KAAK,CAAC2nB,mBAAmB,CAAClrB,aAAa,CAACwqB,KAAK,CAACG,OAAO,EAAE,IAAI,CAACpZ,aAAa,CAAC;IAC1EhO,KAAK,CAAC2nB,mBAAmB,CACvBlrB,aAAa,CAACwqB,KAAK,CAACI,eAAe,EACnC,IAAI,CAACpZ,oBACP,CAAC;IACDjO,KAAK,CAAC2nB,mBAAmB,CACvBlrB,aAAa,CAACwqB,KAAK,CAACK,eAAe,EACnC,IAAI,CAACpY,0BACP,CAAC;IACDlP,KAAK,CAAC2nB,mBAAmB,CACvBlrB,aAAa,CAACwqB,KAAK,CAACM,oBAAoB,EACxC,IAAI,CAACnY,wBACP,CAAC;IACDpP,KAAK,CAAC2nB,mBAAmB,CACvBlrB,aAAa,CAACwqB,KAAK,CAACO,gBAAgB,EACpC,IAAI,CAACnY,qBACP,CAAC;IACDrP,KAAK,CAAC2nB,mBAAmB,CACvBlrB,aAAa,CAACwqB,KAAK,CAACQ,aAAa,EACjC,IAAI,CAAClZ,kBACP,CAAC;IACDvO,KAAK,CAAC2nB,mBAAmB,CACvBlrB,aAAa,CAACwqB,KAAK,CAACS,cAAc,EAClC,IAAI,CAAClZ,mBACP,CAAC;EACH;EAEAoZ,KAAKA,CAAA,EAAS;IAAA,IAAAC,WAAA;IACZ,CAAAA,WAAA,OAAI,CAAC9W,IAAI,cAAA8W,WAAA,eAATA,WAAA,CAAWD,KAAK,CAAC,CAAC;EACpB;EAEAE,cAAcA,CAACvoB,MAAoB,EAAQ;IACzC,IAAQuJ,YAAY,GAAK,IAAI,CAACd,KAAK,CAA3Bc,YAAY;IACpB,IAAQ9I,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQslB,WAAW,GAAKtlB,KAAK,CAArBslB,WAAW;IACnB,IAAMhK,WAAW,GAAG5jB,SAAS,CAAC0R,aAAa,CAAC7J,MAAM,EAAEuJ,YAAY,CAAC;IAEjE,IACEvJ,MAAM,IAAI,IAAI,IACd+lB,WAAW,IAAI/lB,MAAM,IACrB,CAACS,KAAK,CAAC+nB,YAAY,CAACzM,WAAW,CAAC,EAChC;MACA,IAAI,CAACtR,QAAQ,CAAC;QAAEwK,sBAAsB,EAAE;MAAK,CAAC,CAAC;MAC/C;IACF;IAEA,IAAAwT,YAAA,GAAsC,IAAI,CAAChgB,KAAK;MAAxCnD,gBAAgB,GAAAmjB,YAAA,CAAhBnjB,gBAAgB;MAAE4P,OAAO,GAAAuT,YAAA,CAAPvT,OAAO;IACjCrb,aAAa,CAACqb,OAAO,CAAC;IACtB,IAAMwT,WAAW,GAAG,IAAI,CAAC3N,cAAc,CAAC,CAAC;IACzClhB,aAAa,CAAC6uB,WAAW,CAAC;IAE1B,IAAMC,YAAY,GAAGrjB,gBAAgB,CAACsjB,sBAAsB,CAC1D5oB,MAAM,EACN0oB,WAAW,EACXxT,OACF,CAAC;IAED,IAAIyT,YAAY,IAAI,IAAI,EAAE;MAAA,IAAAE,WAAA;MACxB,CAAAA,WAAA,OAAI,CAACrX,IAAI,cAAAqX,WAAA,eAATA,WAAA,CAAWlC,YAAY,CAAC;QAAEmC,IAAI,EAAEH,YAAY;QAAEI,UAAU,EAAE;MAAE,CAAC,EAAE,IAAI,CAAC;IACtE;IAEA,IAAI,CAACC,0BAA0B,GAAGhpB,MAAM;IACxC,IAAI,CAACyK,QAAQ,CAAC;MAAEwK,sBAAsB,EAAEjV,MAAM;MAAEkC,gBAAgB,EAAE;IAAK,CAAC,CAAC;EAC3E;EAEA+mB,wBAAwBA,CAACC,kBAAgC,EAAQ;IAAA,IAAAC,WAAA;IAC/D,IAAAC,YAAA,GAA2C,IAAI,CAAC3gB,KAAK;MAA7CnD,gBAAgB,GAAA8jB,YAAA,CAAhB9jB,gBAAgB;MAAEiE,YAAY,GAAA6f,YAAA,CAAZ7f,YAAY;IACtCjE,gBAAgB,CAAC+jB,cAAc,CAC7BlxB,SAAS,CAAC0R,aAAa,CAACqf,kBAAkB,EAAE3f,YAAY,CAAC,EACzD,CACF,CAAC;IAED,CAAA4f,WAAA,OAAI,CAAC3X,IAAI,cAAA2X,WAAA,eAATA,WAAA,CAAWhI,WAAW,CAAC,CAAC;EAC1B;EAEAmI,wBAAwBA,CAAClL,UAAsB,EAAQ;IACrD,IAAAmL,YAAA,GAAwC,IAAI,CAAC9gB,KAAK;MAA1C+L,aAAa,GAAA+U,YAAA,CAAb/U,aAAa;MAAEjL,YAAY,GAAAggB,YAAA,CAAZhgB,YAAY;IACnC,IAAQ9I,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb9B,GAAG,CAAC6a,MAAM,CAAC,iBAAiB,EAAE4E,UAAU,CAAC;IAEzC,IAAMoL,gBAAgB,GACpBhV,aAAa,IAAI,IAAI,GACjB,IAAIpK,GAAG,CAAC3J,KAAK,CAAC+T,aAAa,CAAC,GAC5B,IAAIpK,GAAG,CAACoK,aAAa,CAAC;IAE5BgV,gBAAgB,CAACjG,GAAG,CAACnF,UAAU,CAAC;IAEhC,IAAMZ,UAAU,GAAG/c,KAAK,CAACqU,oBAAoB,CAACsJ,UAAU,CAAC;IACzDvkB,aAAa,CAAC2jB,UAAU,CAAC;IACzB,IAAMiM,YAAY,GAAGtxB,SAAS,CAACslB,eAAe,CAACD,UAAU,EAAEjU,YAAY,CAAC;IACxE,IAAMmgB,eAAe,GAAGvxB,SAAS,CAACwxB,QAAQ,CACxCF,YAAY,EACZD,gBAAgB,CAACvW,IAAI,GAAG,CAAC,EACzB1J,YACF,CAAC;IAED,IAAI,CAACkB,QAAQ,CAAC;MACZ+J,aAAa,EAAE,CAAC,GAAGgV,gBAAgB,CAAC;MACpCjgB,YAAY,EAAEmgB;IAChB,CAAC,CAAC;EACJ;EAEAE,0BAA0BA,CAACxL,UAAsB,EAAQ;IACvD,IAAAyL,YAAA,GAAwC,IAAI,CAACphB,KAAK;MAA1C+L,aAAa,GAAAqV,YAAA,CAAbrV,aAAa;MAAEjL,YAAY,GAAAsgB,YAAA,CAAZtgB,YAAY;IACnC,IAAQ9I,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb9B,GAAG,CAAC6a,MAAM,CAAC,mBAAmB,EAAE4E,UAAU,CAAC;IAE3C,IAAMoL,gBAAgB,GACpBhV,aAAa,IAAI,IAAI,GACjB,IAAIpK,GAAG,CAAC3J,KAAK,CAAC+T,aAAa,CAAC,GAC5B,IAAIpK,GAAG,CAACoK,aAAa,CAAC;IAE5BgV,gBAAgB,CAAClL,MAAM,CAACF,UAAU,CAAC;IAEnC,IAAMZ,UAAU,GAAG/c,KAAK,CAACqU,oBAAoB,CAACsJ,UAAU,CAAC;IACzDvkB,aAAa,CAAC2jB,UAAU,CAAC;IACzB,IAAMiM,YAAY,GAAGtxB,SAAS,CAACslB,eAAe,CAACD,UAAU,EAAEjU,YAAY,CAAC;;IAExE;IACA,IAAMmgB,eAAe,GAAGvxB,SAAS,CAACwxB,QAAQ,CACxCF,YAAY,EACZD,gBAAgB,CAACvW,IAAI,GAAGxS,KAAK,CAACqpB,YAAY,CAAChgB,MAAM,EACjDP,YACF,CAAC;IAED,IAAI,CAACkB,QAAQ,CAAC;MACZ+J,aAAa,EAAE,CAAC,GAAGgV,gBAAgB,CAAC;MACpCjgB,YAAY,EAAEmgB;IAChB,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACEnY,0BAA0BA,CAACiD,aAAoC,EAAQ;IACrE,IAAI,CAAC/J,QAAQ,CAAC;MAAE+J;IAAc,CAAC,CAAC;EAClC;EAEAuV,kBAAkBA,CAChBvM,UAAsB,EACtBwM,iBAA2B,EACrB;IACNrrB,GAAG,CAAC6a,MAAM,CAAC,sBAAsB,EAAEgE,UAAU,CAAC;IAC9C,IAAQ/c,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAIlI,2BAA2B,CAACkI,KAAK,CAAC,IAAIA,KAAK,CAACwpB,oBAAoB,EAAE;MACpExpB,KAAK,CAACypB,iBAAiB,CACrB1M,UAAU,EACV,CAAC/c,KAAK,CAAC0pB,gBAAgB,CAAC3M,UAAU,CAAC,EACnCwM,iBACF,CAAC;IACH;EACF;EAEAI,gBAAgBA,CAAA,EAAS;IACvBzrB,GAAG,CAAC6a,MAAM,CAAC,oBAAoB,CAAC;IAChC,IAAQ/Y,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IACElI,2BAA2B,CAACkI,KAAK,CAAC,IAClCA,KAAK,CAAC4pB,2BAA2B,EACjC;MACA5pB,KAAK,CAAC2pB,gBAAgB,CAAC,CAAC;IAC1B;EACF;EAEAE,kBAAkBA,CAAA,EAAS;IACzB3rB,GAAG,CAAC6a,MAAM,CAAC,sBAAsB,CAAC;IAClC,IAAQ/Y,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IACElI,2BAA2B,CAACkI,KAAK,CAAC,IAClCA,KAAK,CAAC4pB,2BAA2B,EACjC;MACA5pB,KAAK,CAAC6pB,kBAAkB,CAAC,CAAC;IAC5B;EACF;EAEA7Z,6BAA6BA,CAC3B8Z,YAAmC,EACnCC,SAAkB,EACZ;IAAA,IAAAC,WAAA;IACN,IAAAC,YAAA,GAAsC,IAAI,CAACjiB,KAAK;MAAxCnD,gBAAgB,GAAAolB,YAAA,CAAhBplB,gBAAgB;MAAE4P,OAAO,GAAAwV,YAAA,CAAPxV,OAAO;IACjCrb,aAAa,CAACqb,OAAO,CAAC;IACtB,IAAIsV,SAAS,EAAE;MACbD,YAAY,CAAChmB,OAAO,CAACiZ,UAAU,IAAI;QACjC,IAAMmN,YAAY,GAChBrlB,gBAAgB,CAACG,mBAAmB,CAAC4S,GAAG,CAACmF,UAAU,CAAC;QACtD,IAAMoN,eAAe,GAAG1V,OAAO,CAAC2V,sBAAsB,CAACxS,GAAG,CAACmF,UAAU,CAAC;;QAEtE;QACA;QACA;QACA,IAAImN,YAAY,KAAKC,eAAe,IAAIA,eAAe,IAAI,IAAI,EAAE;UAC/DtlB,gBAAgB,CAAC+jB,cAAc,CAAC7L,UAAU,EAAEoN,eAAe,CAAC;QAC9D,CAAC,MAAM;UACLtlB,gBAAgB,CAACwlB,gBAAgB,CAACtN,UAAU,CAAC;QAC/C;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL+M,YAAY,CAAChmB,OAAO,CAACiZ,UAAU,IAAI;QACjClY,gBAAgB,CAAC+jB,cAAc,CAAC7L,UAAU,EAAE,CAAC,CAAC;MAChD,CAAC,CAAC;IACJ;IACA,CAAAiN,WAAA,OAAI,CAACjZ,IAAI,cAAAiZ,WAAA,eAATA,WAAA,CAAWtJ,WAAW,CAAC,CAAC;EAC1B;EAEAzQ,2BAA2BA,CAAA,EAAS;IAAA,IAAAqa,qBAAA,EAAAC,mBAAA;IAClC,IAAQ1lB,gBAAgB,GAAK,IAAI,CAACmD,KAAK,CAA/BnD,gBAAgB;IACxB,IAAQ7E,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb6E,gBAAgB,CAAC2lB,oBAAoB,CAAC,CAAC;IACvC,IAAI,CAACpc,yBAAyB,CAACpO,KAAK,CAACkU,mBAAmB,CAAC;IACzD,IAAI,CAAC7F,yBAAyB,CAACrO,KAAK,CAACwW,yBAAyB,CAAC;IAC/D,IAAI,CAACxM,QAAQ,CAAC;MACZ+J,aAAa,GAAAuW,qBAAA,IAAAC,mBAAA,GAAEvqB,KAAK,CAACoU,WAAW,cAAAmW,mBAAA,uBAAjBA,mBAAA,CAAmBxW,aAAa,cAAAuW,qBAAA,cAAAA,qBAAA,GAAIhxB;IACrD,CAAC,CAAC;EACJ;EAEA4W,uBAAuBA,CACrBtG,WAAmB,EACnBC,qBAA4C,EAC5CC,mBAA4B,EACtB;IACN,IAAQ9J,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAI,CAACmK,YAAY,CAAC,cAAc,CAAC;IAEjC,IAAI,CAACqP,kBAAkB,CACrB5P,WAAW,EACXC,qBAAqB,EACrB7J,KAAK,CAACkF,OAAO,EACb4E,mBACF,CAAC;IAED,IAAI,CAACE,QAAQ,CAAC;MACZJ,WAAW;MACXC,qBAAqB;MACrBC;IACF,CAAC,CAAC;EACJ;EAsBAmD,mBAAmBA,CAAA,EAAS;IAAA,IAAAwd,WAAA;IAC1B,CAAAA,WAAA,OAAI,CAAC1Z,IAAI,cAAA0Z,WAAA,eAATA,WAAA,CAAWC,YAAY,CAAC,CAAC;IAEzB,IAAI,IAAI,CAAC/Y,WAAW,EAAE;MACpB,IAAI,CAACiI,cAAc,GAAGlB,qBAAqB,CAAC,IAAI,CAACzL,mBAAmB,CAAC;IACvE;EACF;EAEAC,oBAAoBA,CAAA,EAAS;IAC3BhP,GAAG,CAAC6a,MAAM,CAAC,sBAAsB,CAAC;IAElC,IAAI,CAACpH,WAAW,GAAG,IAAI;IAEvB,IAAI,CAACiI,cAAc,GAAGlB,qBAAqB,CAAC,IAAI,CAACzL,mBAAmB,CAAC;EACvE;EAEAE,kBAAkBA,CAAA,EAAS;IACzBjP,GAAG,CAAC6a,MAAM,CAAC,oBAAoB,CAAC;IAEhC,IAAI,CAACpH,WAAW,GAAG,KAAK;EAC1B;EAEA5B,qBAAqBA,CAACwD,eAAgC,EAAQ;IAC5D,IAAI,CAACpJ,YAAY,CAAC,iBAAiB,CAAC;IACpC,IAAyBwgB,UAAU,GAAK,IAAI,CAAC3iB,KAAK,CAA1CuL,eAAe;IACvB,IAAIoX,UAAU,KAAKpX,eAAe,EAAE;MAClC,IAAI,CAACvJ,QAAQ,CAAC;QAAEuJ;MAAgB,CAAC,CAAC;IACpC;EACF;EAEA0O,oBAAoBA,CAACte,KAAc,EAAQ;IACzC,IAAIlK,YAAY,CAACkpB,UAAU,CAAChf,KAAK,CAAC,EAAE;MAClC;IACF;IAEAzF,GAAG,CAACyF,KAAK,CAACA,KAAK,CAAC;IAEhB,IAAQinB,OAAO,GAAK,IAAI,CAAC3rB,KAAK,CAAtB2rB,OAAO;IACfA,OAAO,CAACjnB,KAAK,CAAC;EAChB;EAEA0L,qBAAqBA,CAAA,EAAS;IAC5B,IAAQrP,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAA6qB,aAAA,GAA6C,IAAI,CAAC7iB,KAAK;MAA/CiN,WAAW,GAAA4V,aAAA,CAAX5V,WAAW;MAAEhL,mBAAmB,GAAA4gB,aAAA,CAAnB5gB,mBAAmB;IACxC,IAAM6gB,cAAc,GAAG,yBAAyB;;IAEhD;IACA,IAAI9qB,KAAK,CAACkK,iBAAiB,IAAI,CAACD,mBAAmB,EAAE;MACnD,IAAI,CAAC6P,mBAAmB,CAAC,CAAC;IAC5B,CAAC,MAAM,IAAI7E,WAAW,KAAK6V,cAAc,IAAI,CAAC9qB,KAAK,CAACkK,iBAAiB,EAAE;MACrE;MACA,IAAI,CAAC0Z,WAAW,CAAC,CAAC;IACpB;EACF;EAmBAmH,cAAcA,CAAA,EAAS;IAAA,IAAAC,WAAA;IACrB,IAAQnmB,gBAAgB,GAAK,IAAI,CAACmD,KAAK,CAA/BnD,gBAAgB;IACxB,IAAMC,gBAAgB,GAAGD,gBAAgB,CAAC8gB,mBAAmB,CAAC,CAAC;IAC/D,IAAMtB,OAAO,GAAG,CAAC,GAAGvf,gBAAgB,CAACuf,OAAO,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAIlb,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkb,OAAO,CAAChb,MAAM,EAAEF,CAAC,IAAI,CAAC,EAAE;MAC1C,IAAA8hB,UAAA,GAAAzG,cAAA,CAAkCH,OAAO,CAAClb,CAAC,CAAC;QAArC4T,UAAU,GAAAkO,UAAA;QAAEC,WAAW,GAAAD,UAAA;MAC9B,IAAIC,WAAW,KAAK,CAAC,EAAE;QACrBrmB,gBAAgB,CAACwlB,gBAAgB,CAACtN,UAAU,CAAC;MAC/C;IACF;IACA,CAAAiO,WAAA,OAAI,CAACja,IAAI,cAAAia,WAAA,eAATA,WAAA,CAAWtK,WAAW,CAAC,CAAC;EAC1B;;EAEA;AACF;AACA;AACA;EACEyK,aAAaA,CAAA,EAAS;IAAA,IAAAC,WAAA;IACpB,IAAI,CAACphB,QAAQ,CAAC;MACZyK,OAAO,GAAA2W,WAAA,GAAE,IAAI,CAACra,IAAI,cAAAqa,WAAA,uBAATA,WAAA,CAAWD,aAAa,CAAC;IACpC,CAAC,CAAC;EACJ;EAEAE,UAAUA,CAACnQ,WAAyB,EAAEoQ,aAAsB,EAAQ;IAClEptB,GAAG,CAACqtB,IAAI,CAAC,0BAA0B,EAAErQ,WAAW,CAAC;IAEjD,IAAQlb,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAMsb,WAAW,GAAG,IAAI,CAACC,cAAc,CAACL,WAAW,CAAC;IACpD9hB,aAAa,CAACkiB,WAAW,CAAC;IAC1B,IAAItb,KAAK,CAACwrB,gBAAgB,CAACtQ,WAAW,CAAC,EAAE;MACvC,IAAeuQ,YAAY,GAAK,IAAI,CAACzjB,KAAK,CAAlCd,KAAK;MACb,IAAMA,KAAK,GAAGhO,UAAU,CAACwyB,mBAAmB,CAC1CD,YAAY,EACZzrB,KAAK,CAACkF,OAAO,EACboW,WAAW,EACXgQ,aACF,CAAC;MAED,IAAI,CAACK,kBAAkB,CAACzkB,KAAK,CAAC;IAChC,CAAC,MAAM;MACLhJ,GAAG,CAACmI,KAAK,CAAC,8BAA8B,EAAErG,KAAK,CAACkF,OAAO,CAACgW,WAAW,CAAC,CAAC;IACvE;EACF;EAEA7C,WAAWA,CAACnR,KAAgC,EAAQ;IAAA,IAAA0kB,WAAA;IAClD,IAAI,CAACzhB,YAAY,CAAC,YAAY,CAAC;IAC/B,IAAI,CAACH,QAAQ,CAAC;MAAE9C;IAAM,CAAC,CAAC;IACxB,CAAA0kB,WAAA,OAAI,CAAC7a,IAAI,cAAA6a,WAAA,eAATA,WAAA,CAAWlL,WAAW,CAAC,CAAC;EAC1B;EAEAiL,kBAAkBA,CAACzkB,KAAgC,EAAQ;IACzD,IAAA2kB,YAAA,GAA6C,IAAI,CAAC5sB,KAAK;MAA/CkY,iBAAiB,GAAA0U,YAAA,CAAjB1U,iBAAiB;MAAE2U,aAAa,GAAAD,YAAA,CAAbC,aAAa;IACxCA,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAG5kB,KAAK,CAAC;IACtB,IAAI,CAACiQ,iBAAiB,EAAE;MACtB,IAAI,CAACkB,WAAW,CAACnR,KAAK,CAAC;IACzB;EACF;EAEAoR,kBAAkBA,CAACtR,YAA2C,EAAQ;IAAA,IAAA+kB,WAAA;IACpE,IAAsBC,mBAAmB,GAAK,IAAI,CAAChkB,KAAK,CAAhDhB,YAAY;IACpB,IAAIA,YAAY,IAAI,IAAI,EAAE;MACxB,IAAIglB,mBAAmB,CAACxZ,IAAI,KAAK,CAAC,EAAE;QAClC;MACF;IACF,CAAC,MAAM,IAAIxL,YAAY,KAAKglB,mBAAmB,EAAE;MAC/C;IACF;IAEA,IAAI,CAAC7hB,YAAY,CAAC,cAAc,EAAE;MAAE+N,WAAW,EAAE;IAAK,CAAC,CAAC;IACxD,IAAI,CAAClO,QAAQ,CAAC;MAAEhD,YAAY,EAAEA,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAIzN;IAAU,CAAC,CAAC;IAC1D,CAAAwyB,WAAA,OAAI,CAAChb,IAAI,cAAAgb,WAAA,eAATA,WAAA,CAAWrL,WAAW,CAAC,CAAC;EAC1B;EAEA3C,yBAAyBA,CAAC/W,YAAoC,EAAQ;IACpE,IAAAilB,YAAA,GAA2D,IAAI,CAAChtB,KAAK;MAA7DiY,wBAAwB,GAAA+U,YAAA,CAAxB/U,wBAAwB;MAAEgV,oBAAoB,GAAAD,YAAA,CAApBC,oBAAoB;IACtDA,oBAAoB,aAApBA,oBAAoB,eAApBA,oBAAoB,CAAGllB,YAAY,CAAC;IACpC,IAAI,CAACkQ,wBAAwB,EAAE;MAC7B,IAAI,CAACoB,kBAAkB,CAACtR,YAAY,CAAC;IACvC;EACF;EAEAmlB,UAAUA,CACR7Q,WAAuB,EAIjB;IAAA,IAHN8Q,SAAwB,GAAA/Q,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAGniB,UAAU,CAACgH,aAAa,CAACmsB,IAAI;IAAA,IACxDC,KAAK,GAAAjR,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,KAAK;IAAA,IACbiQ,aAAa,GAAAjQ,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,KAAK;IAErBjiB,aAAa,CAACkiB,WAAW,CAAC;IAC1B,IAAQtb,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAMkH,KAAK,GAAGhO,UAAU,CAACizB,UAAU,CACjCnsB,KAAK,CAACsE,IAAI,EACVtE,KAAK,CAACkF,OAAO,EACboW,WAAW,EACX8Q,SAAS,EACTE,KAAK,EACLhB,aACF,CAAC;IACD,IAAI,CAACK,kBAAkB,CAACzkB,KAAK,CAAC;EAChC;EAEAC,OAAOA,CAACA,OAAgB,EAAQ;IAAA,IAAAolB,YAAA;IAC9B,IAAI,CAACpiB,YAAY,CAAC,cAAc,CAAC;IACjC,IAAI,CAACH,QAAQ,CAAC;MAAE7C;IAAQ,CAAC,CAAC;IAC1B,CAAAolB,YAAA,OAAI,CAACxb,IAAI,cAAAwb,YAAA,eAATA,YAAA,CAAW7L,WAAW,CAAC,CAAC;EAC1B;EAEA8L,YAAYA,CAAA,EAAY;IACtB,IAAQxsB,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,OAAOA,KAAK,CAACwsB,YAAY;EAC3B;EAEAza,eAAeA,CAAA,EAAqD;IAAA,IAApD0a,UAAU,GAAApR,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,IAAI,CAACkN,0BAA0B;IAC1D,IAAM9mB,gBAAgB,GAAK,IAAI,CAACuG,KAAK,CAA/BvG,gBAAgB;IACtBA,gBAAgB,GAAG,CAACA,gBAAgB;IACpC,IAAI,CAACuI,QAAQ,CAAC;MAAEvI;IAAiB,CAAC,CAAC;IAEnC,IAAIA,gBAAgB,EAAE;MACpB,IAAIgrB,UAAU,IAAI,IAAI,EAAE;QACtB,IAAI,CAAC3E,cAAc,CAAC2E,UAAU,CAAC;MACjC,CAAC,MAAM;QACL,IAAIvR,WAAW,GAAG,CAAC;QACnB,IAAQlb,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;QACb,IAAQslB,WAAW,GAAKtlB,KAAK,CAArBslB,WAAW;QACnB,KAAK,IAAInc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmc,WAAW,EAAEnc,CAAC,IAAI,CAAC,EAAE;UACvC,IAAMmS,WAAW,GAAG,IAAI,CAACC,cAAc,CAACpS,CAAC,CAAC;UAC1C,IAAImS,WAAW,IAAI,IAAI,EAAE;YACvB,IAAM/b,MAAM,GAAGS,KAAK,CAACkF,OAAO,CAACoW,WAAW,CAAC;YACzC,IAAI/b,MAAM,IAAI,IAAI,IAAIrG,UAAU,CAACwzB,UAAU,CAACntB,MAAM,CAAC0C,IAAI,CAAC,EAAE;cACxDiZ,WAAW,GAAG/R,CAAC;cACf;YACF;UACF;QACF;QACA,IAAI,CAAC2e,cAAc,CAAC5M,WAAW,CAAC;MAClC;IACF,CAAC,MAAM;MAAA,IAAAyR,YAAA;MACL,CAAAA,YAAA,OAAI,CAAC5b,IAAI,cAAA4b,YAAA,eAATA,YAAA,CAAW/E,KAAK,CAAC,CAAC;IACpB;EACF;EAEAgF,sBAAsBA,CAAA,EAAY;IAAA,IAAAC,mBAAA,EAAAC,qBAAA,EAAAC,sBAAA;IAChC,IAAAC,YAAA,GAAmC,IAAI,CAAC/tB,KAAK;MAArCe,KAAK,GAAAgtB,YAAA,CAALhtB,KAAK;MAAE4B,eAAe,GAAAorB,YAAA,CAAfprB,eAAe;IAC9B,IAAQoE,EAAE,GAAKhG,KAAK,CAAZgG,EAAE;IACV,IAAMinB,iBAAiB,GAAGjtB,KAAK,aAALA,KAAK,gBAAA6sB,mBAAA,GAAL7sB,KAAK,CAAEoU,WAAW,cAAAyY,mBAAA,uBAAlBA,mBAAA,CAAoBI,iBAAiB;IAE/D,IAAIA,iBAAiB,OAAAH,qBAAA,GAAK9mB,EAAE,CAACknB,iBAAiB,cAAAJ,qBAAA,uBAApBA,qBAAA,CAAsBK,mBAAmB,GAAE;MACnE,OAAO,KAAK;IACd;IACA,IAAIF,iBAAiB,OAAAF,sBAAA,GAAK/mB,EAAE,CAACknB,iBAAiB,cAAAH,sBAAA,uBAApBA,sBAAA,CAAsBK,mBAAmB,GAAE;MACnE,OAAO,IAAI;IACb;IAEA,OAAOxrB,eAAe;EACxB;EAEAsQ,eAAeA,CAAA,EAAS;IACtB,IAAQxQ,aAAa,GAAK,IAAI,CAACsG,KAAK,CAA5BtG,aAAa;IACrB,IAAI,CAAC,IAAI,CAACkrB,sBAAsB,CAAC,CAAC,EAAE;MAClC;IACF;IAEA,IAAMjL,MAAM,GAAG,CAACjgB,aAAa;IAC7B,IAAI,CAACsI,QAAQ,CACX;MACEtI,aAAa,EAAEigB;IACjB,CAAC,EACD,MAAM;MAAA,IAAA0L,oBAAA;MACJ,IAAI1L,MAAM,KAAA0L,oBAAA,GAAI,IAAI,CAAC3b,cAAc,cAAA2b,oBAAA,eAAnBA,oBAAA,CAAqBlT,OAAO,EAAE;QAAA,IAAAmT,qBAAA;QAC1C,CAAAA,qBAAA,OAAI,CAAC5b,cAAc,cAAA4b,qBAAA,eAAnBA,qBAAA,CAAqBnT,OAAO,CAACyN,KAAK,CAAC,CAAC;MACtC,CAAC,MAAM;QAAA,IAAA2F,YAAA;QACL,CAAAA,YAAA,OAAI,CAACxc,IAAI,cAAAwc,YAAA,eAATA,YAAA,CAAW3F,KAAK,CAAC,CAAC;MACpB;IACF,CACF,CAAC;EACH;EAEAxV,aAAaA,CAAA,EAA8C;IAAA,IAAAob,YAAA,EAAAC,YAAA;IAAA,IAA7C5J,GAAG,GAAAxI,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,EAAE;IAAA,IAAEK,KAAK,GAAAL,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,EAAE;IAAA,IAAEsC,UAAU,GAAAtC,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,EAAE;IACjD,IAAQpF,WAAW,GAAK,IAAI,CAACjO,KAAK,CAA1BiO,WAAW;IACnB,IAAI4N,GAAG,IAAInI,KAAK,EAAE;MAAA,IAAAgS,qBAAA;MAChB;MACA,IAAI,CAAC1jB,QAAQ,CAAC;QACZiM,WAAW,EAAE,IAAI;QACjB1J,SAAS,EAAEmP,KAAK;QAChBrF,2BAA2B,EAAEsH,UAAU;QACvCxH,YAAY,EAAE,EAAE;QAChBC,cAAc,EAAE,EAAE;QAClB5J,wBAAwB,EAAE;MAC5B,CAAC,CAAC;MACF,IAAI,CAACiD,cAAc,CAACoU,GAAG,CAAC;MACxB,CAAA6J,qBAAA,OAAI,CAAC7b,UAAU,CAACsI,OAAO,cAAAuT,qBAAA,eAAvBA,qBAAA,CAAyB9F,KAAK,CAAC,CAAC;MAChC;IACF;IAEA,IAAM+F,SAAS,IAAAH,YAAA,GAAG,IAAI,CAACzc,IAAI,cAAAyc,YAAA,uBAATA,YAAA,CAAWxlB,KAAK,CAACwd,SAAS,CAACmI,SAAS;IACtD,IAAMC,YAAY,IAAAH,YAAA,GAAG,IAAI,CAAC1c,IAAI,cAAA0c,YAAA,uBAATA,YAAA,CAAWzlB,KAAK,CAACwd,SAAS,CAACoI,YAAY;IAE5D,IAAID,SAAS,IAAI,IAAI,IAAIC,YAAY,IAAI,IAAI,EAAE;MAC7C;MACA,IAAI,CAAC5jB,QAAQ,CAAC;QACZiM,WAAW,EAAE,CAACA,WAAW;QACzBC,OAAO,EAAE,EAAE;QACX3J,SAAS,EAAE,EAAE;QACb4J,YAAY,EAAE,EAAE;QAChBC,cAAc,EAAE,EAAE;QAClB5J,wBAAwB,EAAE;MAC5B,CAAC,CAAC;MACF;IACF;IACA;IACA,IAAQxM,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQqF,IAAI,GAAKrF,KAAK,CAACkF,OAAO,CAAC0oB,YAAY,CAAC,CAApCvoB,IAAI;;IAEZ;IACA,IAAM4X,IAAI,GAAGhZ,MAAM,CAAC,IAAI,CAACgX,eAAe,CAAC2S,YAAY,EAAED,SAAS,EAAE,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC3jB,QAAQ,CAAC;MACZiM,WAAW,EAAE,CAACA,WAAW;MACzBC,OAAO,KAAA8H,MAAA,CAAK2P,SAAS,GAAG,CAAC,CAAE;MAC3BphB,SAAS,EAAE0Q,IAAI;MACf5G,2BAA2B,EAAEhR,IAAI;MACjC8Q,YAAY,EAAE,EAAE;MAChBC,cAAc,EAAE,EAAE;MAClB5J,wBAAwB,EAAE;IAC5B,CAAC,CAAC;EACJ;EAEMuG,aAAaA,CAAA,EAAkB;IAAA,IAAA8a,MAAA;IAAA,OAAApL,iBAAA;MAAA,IAAAqL,SAAA;MACnC,IAAQ9tB,KAAK,GAAK6tB,MAAI,CAAC5uB,KAAK,CAApBe,KAAK;MACb,IAAI,CAACrI,mBAAmB,CAACqI,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC0H,UAAU,EAAE;QACpD,MAAM,IAAIqmB,KAAK,CAAC,oCAAoC,CAAC;MACvD;MAEA,IAAQrY,kBAAkB,GAAKmY,MAAI,CAAC7lB,KAAK,CAAjC0N,kBAAkB;MAC1B,IAAIA,kBAAkB,IAAI,IAAI,EAAE;QAC9B,MAAM,IAAIqY,KAAK,CAAC,0BAA0B,CAAC;MAC7C;MAEA,IAAMC,0BAA0B,IAAAF,SAAA,GAC9BG,QAAQ,cAAAH,SAAA,gBAAAA,SAAA,GAARA,SAAA,CAAUI,aAAa,cAAAJ,SAAA,uBAAvBA,SAAA,CAAyBK,SAAS,CAACC,QAAQ,CAAC,uBAAuB,CAAC;MACtE,IAAIJ,0BAA0B,IAAI,IAAI,IAAIA,0BAA0B,EAAE;QAAA,IAAAK,WAAA;QACpE,IACEJ,QAAQ,CAACC,aAAa,IAAI,IAAI,IAC9BD,QAAQ,CAACC,aAAa,CAACC,SAAS,CAACC,QAAQ,CAAC,OAAO,CAAC,EAClD;UACA,MAAM,IAAI10B,eAAe,CAAC,0BAA0B,CAAC;QACvD;;QAEA;QACA,CAAA20B,WAAA,GAAAR,MAAI,CAAC9c,IAAI,cAAAsd,WAAA,eAATA,WAAA,CAAWzG,KAAK,CAAC,CAAC;MACpB;MAEA,IAAM0G,qBAAqB,GAAGT,MAAI,CAAC5c,OAAO,CACvC6R,GAAG,CAAC9iB,KAAK,CAAC+S,aAAa,CAAC,CAAC,CAAC,CAC1Bwb,IAAI,CAAC,MAAM;QACVV,MAAI,CAAC7jB,QAAQ,CAAC;UAAE2L,gBAAgB,EAAE,IAAI;UAAED,kBAAkB,EAAE;QAAK,CAAC,CAAC;MACrE,CAAC,CAAC,CACDhD,KAAK,CAAChP,GAAG,IAAI;QACZ,IAAI,CAACjK,YAAY,CAACkpB,UAAU,CAACjf,GAAG,CAAC,EAAE;UACjCmqB,MAAI,CAAC7jB,QAAQ,CAAC;YAAE2L,gBAAgB,EAAEjS,GAAG;YAAEgS,kBAAkB,EAAE;UAAK,CAAC,CAAC;QACpE;MACF,CAAC,CAAC;MACJmY,MAAI,CAAC7jB,QAAQ,CAAC;QAAE0L,kBAAkB,EAAE4Y;MAAsB,CAAC,CAAC;MAC5D,OAAOA,qBAAqB;IAAC;EAC/B;EAEM7b,cAAcA,CAAA,EAAkB;IAAA,IAAA+b,MAAA;IAAA,OAAA/L,iBAAA;MACpC,IAAQ/M,kBAAkB,GAAK8Y,MAAI,CAACxmB,KAAK,CAAjC0N,kBAAkB;MAC1B,IAAIA,kBAAkB,IAAI,IAAI,EAAE;QAC9B,MAAM,IAAIqY,KAAK,CAAC,kCAAkC,CAAC;MACrD;MAEAS,MAAI,CAACxkB,QAAQ,CAAC;QACZ0L,kBAAkB,EAAE,IAAI;QACxBC,gBAAgB,EAAE,IAAI;QACtBpD,cAAc,EAAE,IAAI1O,GAAG,CAAC,CAAC;QACzBiP,iBAAiB,EAAE,IAAIjP,GAAG,CAAC;MAC7B,CAAC,CAAC;IAAC;EACL;;EAEA;AACF;AACA;AACA;EACE4qB,YAAYA,CAAClvB,MAAqB,EAAQ;IACxC,IAAQmvB,gBAAgB,GAAK,IAAI,CAACzvB,KAAK,CAA/ByvB,gBAAgB;IACxBA,gBAAgB,CAACnvB,MAAM,CAAC;EAC1B;;EAEA;AACF;AACA;EACEovB,UAAUA,CAACzT,WAAuB,EAAEC,QAAoB,EAAQ;IAC9D,IAAMyT,OAAO,GAAG,IAAI,CAAC1K,aAAa,CAAC/I,QAAQ,CAAC;IAC5C,IAAQ0T,cAAc,GAAK,IAAI,CAAC5vB,KAAK,CAA7B4vB,cAAc;IACtBA,cAAc,CAAC1T,QAAQ,EAAEyT,OAAO,CAAC;EACnC;;EAEA;AACF;AACA;AACA;AACA;EACE1K,aAAaA,CAAC/I,QAAoB,EAAc;IAAA,IAAA2T,MAAA;IAC9C,IAAQ9uB,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQkF,OAAO,GAAqBlF,KAAK,CAAjCkF,OAAO;MAAE6pB,cAAc,GAAK/uB,KAAK,CAAxB+uB,cAAc;IAC/B,IAAMH,OAAmB,GAAG,CAAC,CAAC;IAAC,IAAAI,KAAA,YAAAA,MAAA,EACa;MAC1C,IAAMzvB,MAAM,GAAG2F,OAAO,CAACiE,CAAC,CAAC;MACzB,IAAQ9D,IAAI,GAAW9F,MAAM,CAArB8F,IAAI;QAAEpD,IAAI,GAAK1C,MAAM,CAAf0C,IAAI;MAClB,IAAMyZ,KAAK,GAAG1b,KAAK,CAAC2b,YAAY,CAACxS,CAAC,EAAEgS,QAAQ,CAAC;MAC7C,IAAM8B,IAAI,GAAGjd,KAAK,CAACmc,WAAW,CAAChT,CAAC,EAAEgS,QAAQ,CAAC;MAC3C,IAAM6N,YAAY,GAAG8F,MAAI,CAAChS,gBAAgB,CAAC3T,CAAC,CAAC;MAC7C,IAAM8lB,YAAY,GAChBr3B,qBAAqB,CAACoI,KAAK,CAAC,IAAIA,KAAK,CAACkvB,eAAe,CAAC/T,QAAQ,CAAC;MACjE,IAAMgU,SAAS,GAAGJ,cAAc,CAACjQ,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC1Z,IAAI,KAAKA,IAAI,CAAC,IAAI,IAAI;MACnEupB,OAAO,CAACvpB,IAAI,CAAC,GAAG;QACdqW,KAAK;QACLuB,IAAI;QACJhb,IAAI;QACJktB,SAAS;QACTF,YAAY;QACZjG;MACF,CAAC;IACH,CAAC;IAjBD,KAAK,IAAI7f,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjE,OAAO,CAACmE,MAAM,EAAEF,CAAC,IAAI,CAAC;MAAA6lB,KAAA;IAAA;IAkB1C,OAAOJ,OAAO;EAChB;EAEAruB,0BAA0BA,CACxBhB,MAAqB,EACrB+F,MAAqC,EACrC1E,OAA8B,EACxB;IACN,IAAQZ,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAMqE,KAAK,GAAGrE,KAAK,CAACqU,oBAAoB,CAAC9U,MAAM,CAAC8F,IAAI,CAAC;IACrDjM,aAAa,CAACiL,KAAK,CAAC;IACpB,IAAI,CAAC+Z,iBAAiB,CAAC/Z,KAAK,EAAEiB,MAAM,EAAE1E,OAAO,CAAC;EAChD;EAEAH,8BAA8BA,CAC5BlB,MAAqB,EACrB6sB,SAAwB,EAElB;IAAA,IADNd,aAAa,GAAAjQ,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,KAAK;IAErB,IAAQrb,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAMkb,WAAW,GAAGlb,KAAK,CAACqU,oBAAoB,CAAC9U,MAAM,CAAC8F,IAAI,CAAC;IAC3DjM,aAAa,CAAC8hB,WAAW,CAAC;IAC1B,IAAMyC,UAAU,GAAG3d,KAAK,CAACkF,OAAO,CAACgW,WAAW,CAAC,CAAC7V,IAAI;IAClD,IAAM+pB,OAAO,GAAGl2B,UAAU,CAACm2B,gBAAgB,CAACrvB,KAAK,CAACsE,IAAI,EAAEqZ,UAAU,CAAC;IACnE,IAAI2R,OAAO,GAAG,IAAI;IAElB,IAAIF,OAAO,IAAI,IAAI,IAAIA,OAAO,CAAChD,SAAS,KAAKA,SAAS,EAAE;MACtD,IAAIA,SAAS,KAAKlzB,UAAU,CAACgH,aAAa,CAACqvB,UAAU,EAAE;QACrDD,OAAO,GAAG/vB,MAAM,CAAC+E,IAAI,CAAC,CAAC,CAAC4e,IAAI,CAAC,CAAC;MAChC,CAAC,MAAM;QACLoM,OAAO,GAAG/vB,MAAM,CAAC+E,IAAI,CAAC,CAAC,CAACkrB,GAAG,CAAC,CAAC;MAC/B;IACF;IAEA,IAAMtoB,KAAK,GAAGhO,UAAU,CAACu2B,gBAAgB,CACvCzvB,KAAK,CAACsE,IAAI,EACVqZ,UAAU,EACV2R,OAAO,EACPhE,aACF,CAAC;IACDptB,GAAG,CAACqtB,IAAI,CAAC,qBAAqB,EAAErkB,KAAK,CAAC;IAEtC,IAAI,CAACykB,kBAAkB,CAACzkB,KAAK,CAAC;EAChC;EAEAvG,wBAAwBA,CAAA,EAAS;IAAA,IAAA+uB,YAAA;IAC/B,CAAAA,YAAA,OAAI,CAAC3e,IAAI,cAAA2e,YAAA,eAATA,YAAA,CAAW9H,KAAK,CAAC,CAAC;EACpB;EAEAjoB,kCAAkCA,CAACJ,MAAsB,EAAQ;IAC/D,IAAI,CAACyK,QAAQ,CAAC2lB,MAAA;MAAA,IAAG/a,uBAAuB,GAAA+a,MAAA,CAAvB/a,uBAAuB;MAAA,OAAQ;QAC9CA,uBAAuB,EACrBA,uBAAuB,KAAKrV,MAAM,GAAG,IAAI,GAAGA;MAChD,CAAC;IAAA,CAAC,CAAC;EACL;EAEAC,wBAAwBA,CAACD,MAAsB,EAAQ;IACrD,IAAI,CAACyK,QAAQ,CAAC;MACZ2K,mBAAmB,EAAEpV,MAAM;MAC3BqV,uBAAuB,EAAE;IAC3B,CAAC,CAAC;EACJ;EAEAjI,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAAC3C,QAAQ,CAAC;MAAEiM,WAAW,EAAE,IAAI;MAAEzJ,wBAAwB,EAAE;IAAM,CAAC,CAAC;EACvE;EAEAI,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAAC5C,QAAQ,CAAC;MAAEiM,WAAW,EAAE,KAAK;MAAEzJ,wBAAwB,EAAE;IAAM,CAAC,CAAC;EACxE;EAEAK,wBAAwBA,CAACqO,WAAmB,EAAQ;IAAA,IAAA0U,oBAAA;IAClD,IAAAC,aAAA,GAAqD,IAAI,CAAC7nB,KAAK;MAAvDwM,sBAAsB,GAAAqb,aAAA,CAAtBrb,sBAAsB;MAAE/S,gBAAgB,GAAAouB,aAAA,CAAhBpuB,gBAAgB;IAChD,IACEA,gBAAgB,IAChB+S,sBAAsB,KAAK0G,WAAW,IACtC,EAAA0U,oBAAA,OAAI,CAAChe,cAAc,cAAAge,oBAAA,uBAAnBA,oBAAA,CAAqBzV,OAAO,MAAK,IAAI,EACrC;MAAA,IAAA2V,qBAAA;MACA,CAAAA,qBAAA,OAAI,CAACle,cAAc,cAAAke,qBAAA,eAAnBA,qBAAA,CAAqB3V,OAAO,CAACyN,KAAK,CAAC,CAAC;MACpC,IAAI,CAAC5d,QAAQ,CAAC;QACZ2K,mBAAmB,EAAE,IAAI;QACzBC,uBAAuB,EAAE;MAC3B,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAAC5K,QAAQ,CAAC;QACZwK,sBAAsB,EAAE,IAAI;QAC5BG,mBAAmB,EAAE,IAAI;QACzBC,uBAAuB,EAAE;MAC3B,CAAC,CAAC;IACJ;EACF;EAEAlH,YAAYA,CAAA,EAAS;IACnB,IAAI,CAACmZ,QAAQ,CAAC,CAAC;EACjB;;EAEA;EACAzZ,iBAAiBA,CAAA,EAAS;IACxB;EAAA;EAGFC,iBAAiBA,CAAC4J,QAA8B,EAAQ;IACtD,IAAA8Y,YAAA,GAAiC,IAAI,CAAC9wB,KAAK;MAAnCe,KAAK,GAAA+vB,YAAA,CAAL/vB,KAAK;MAAEgwB,aAAa,GAAAD,YAAA,CAAbC,aAAa;IAC5BA,aAAa,CAAC/Y,QAAQ,EAAEjX,KAAK,CAAC;EAChC;EAEAsN,eAAeA,CAAC3J,KAAa,EAAQ;IACnCzF,GAAG,CAAC+xB,IAAI,CAAC,YAAY,EAAEtsB,KAAK,CAAC;IAC7B,IAAI,CAACqG,QAAQ,CAAC;MACZ4L,YAAY,eAAE/X,IAAA;QAAKwO,SAAS,EAAC,eAAe;QAAAZ,QAAA,KAAAuS,MAAA,CAAKra,KAAK;MAAA,CAAQ;IAChE,CAAC,CAAC;EACJ;EAEA4J,qBAAqBA,CAACmO,KAAa,EAAQ;IACzC,IAAAwU,aAAA,GAAiD,IAAI,CAACloB,KAAK;MAAnDwM,sBAAsB,GAAA0b,aAAA,CAAtB1b,sBAAsB;MAAExN,YAAY,GAAAkpB,aAAA,CAAZlpB,YAAY;IAC5C,IAAMqW,eAAe,GAAG,IAAIxZ,GAAG,CAACmD,YAAY,CAAC;IAC7C,IAAIwN,sBAAsB,IAAI,IAAI,EAAE;MAClC,IAAMuI,UAAU,GAAG,IAAI,CAACxB,cAAc,CAAC/G,sBAAsB,CAAC;MAC9Dpb,aAAa,CAAC2jB,UAAU,CAAC;MACzB,IAAI,CAACe,gBAAgB,CAACf,UAAU,EAAErB,KAAK,EAAE2B,eAAe,CAAC;IAC3D;IACA,IAAI,CAACU,yBAAyB,CAACV,eAAe,CAAC;EACjD;EAEA7P,mBAAmBA,CAAA,EAAiD;IAAA,IAAhD2iB,YAAY,GAAA9U,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,IAAI;IAAA,IAAE+U,YAAY,GAAA/U,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,IAAI;IAC1D,IAAI8U,YAAY,EAAE;MAAA,IAAAE,YAAA;MAChB,CAAAA,YAAA,OAAI,CAACtf,IAAI,cAAAsf,YAAA,eAATA,YAAA,CAAWzI,KAAK,CAAC,CAAC;IACpB;IACA,IAAIwI,YAAY,EAAE;MAChB,IAAI,CAACpmB,QAAQ,CAAC;QAAEwK,sBAAsB,EAAE;MAAK,CAAC,CAAC;IACjD;EACF;EAEA/G,kBAAkBA,CAAC6iB,QAAiB,EAAQ;IAC1C,IAAQ9b,sBAAsB,GAAK,IAAI,CAACxM,KAAK,CAArCwM,sBAAsB;IAC9Bpb,aAAa,CAACob,sBAAsB,CAAC;IACrC,IAAI8b,QAAQ,EAAE;MACZ,IAAI,CAACxI,cAAc,CAACtT,sBAAsB,GAAG,CAAC,CAAC;IACjD,CAAC,MAAM;MACL,IAAI,CAACsT,cAAc,CAACtT,sBAAsB,GAAG,CAAC,CAAC;IACjD;EACF;EAEA9F,qBAAqBA,CACnBqO,UAAsB,EACtBwT,cAAwC,EAClC;IACN,IAAQvwB,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAMT,MAAM,GAAGS,KAAK,CAACkF,OAAO,CAAC6X,UAAU,CAAC;IACxC,IAA+ByT,yBAAyB,GAAK,IAAI,CAACxoB,KAAK,CAA/DmL,qBAAqB;IAC7B,IAAMA,qBAAqB,GAAG,IAAItP,GAAG,CAAC2sB,yBAAyB,CAAC;IAEhE,IAAID,cAAc,IAAI,IAAI,EAAE;MAC1B,IAAME,cAAc,GAAGv3B,UAAU,CAACw3B,iBAAiB,CAACnxB,MAAM,CAAC0C,IAAI,CAAC;MAChE7I,aAAa,CAACq3B,cAAc,CAAC;MAC7B,IAAME,oBAAoB,GAAG33B,SAAS,CAAC43B,wBAAwB,CAC7DH,cAAc,EACdlxB,MAAM,CAAC8F,IAAI,EACXkrB,cACF,CAAC;MAEDpd,qBAAqB,CAACnP,GAAG,CAACzE,MAAM,CAAC8F,IAAI,EAAEsrB,oBAAoB,CAAC;IAC9D,CAAC,MAAM;MACLxd,qBAAqB,CAAC0K,MAAM,CAACte,MAAM,CAAC8F,IAAI,CAAC;IAC3C;IAEA,IAAI,CAACmc,eAAe,CAAC;MAAErO;IAAsB,CAAC,CAAC;EACjD;EAEAxE,2BAA2BA,CACzBoO,UAAsB,EACtB8T,SAAiC,EAC3B;IACN,IAAQ7wB,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAMT,MAAM,GAAGS,KAAK,CAACkF,OAAO,CAAC6X,UAAU,CAAC;IAExC,IAAI,CAAC/S,QAAQ,CAAC8mB,MAAA,IAAwC;MAAA,IAAAC,qBAAA,GAAAD,MAAA,CAArC1d,kBAAkB;QAAlBA,kBAAkB,GAAA2d,qBAAA,cAAGx3B,SAAS,GAAAw3B,qBAAA;MAC7C,IAAMC,qBAAqB,GAAG,IAAIntB,GAAG,CAACuP,kBAAkB,CAAC;MACzD,IAAIyd,SAAS,IAAI,IAAI,EAAE;QACrBG,qBAAqB,CAAChtB,GAAG,CAACzE,MAAM,CAAC8F,IAAI,EAAEwrB,SAAS,CAAC;MACnD,CAAC,MAAM;QACLG,qBAAqB,CAACnT,MAAM,CAACte,MAAM,CAAC8F,IAAI,CAAC;MAC3C;MACA,OAAO;QAAE+N,kBAAkB,EAAE4d;MAAsB,CAAC;IACtD,CAAC,CAAC;EACJ;EAEArjB,UAAUA,CAACqW,CAAsC,EAAQ;IACvDA,CAAC,CAACiN,eAAe,CAAC,CAAC;IACnB,IAAI,CAACjnB,QAAQ,CAAC;MAAE3C,WAAW,EAAE;IAAK,CAAC,CAAC;EACtC;EAEAuG,eAAeA,CAAA,EAAS;IACtB,IAAI,CAAC5D,QAAQ,CAAC;MAAE3C,WAAW,EAAE,KAAK;MAAEmO,WAAW,EAAE;IAAG,CAAC,CAAC;EACxD;EAEA1H,cAAcA,CAAA,EAAS;IACrB,IAAI,CAAC9D,QAAQ,CAACknB,MAAA,IAAqB;MAAA,IAAlB1b,WAAW,GAAA0b,MAAA,CAAX1b,WAAW;MAC1B,IAAM2b,UAAU,GAAG,CAAC,GAAG3b,WAAW,CAAC;MACnC2b,UAAU,CAACC,GAAG,CAAC,CAAC;MAChB,OAAO;QAAE5b,WAAW,EAAE2b;MAAW,CAAC;IACpC,CAAC,CAAC;EACJ;EAEAtjB,gBAAgBA,CAACoL,MAAkB,EAAQ;IACzC,IAAI,CAACjP,QAAQ,CAACqnB,MAAA;MAAA,IAAG7b,WAAW,GAAA6b,MAAA,CAAX7b,WAAW;MAAA,OAAQ;QAClCA,WAAW,EAAE,CAAC,GAAGA,WAAW,EAAEyD,MAAM;MACtC,CAAC;IAAA,CAAC,CAAC;EACL;EAEAlL,mBAAmBA,CAACyV,KAAa,EAAQ;IACvC,IAAA8N,MAAA,GAA0B9N,KAAK;MAAf7f,KAAK,GAAA2tB,MAAA,CAAb5N,MAAM;IACdxlB,GAAG,CAACyF,KAAK,CAAC,iBAAiB,EAAEA,KAAK,CAAC;IACnC,IAAI,CAACigB,WAAW,CAAC,CAAC;IAClB,IAAA2N,aAAA,GAAwD,IAAI,CAACvpB,KAAK;MAA1DuL,eAAe,GAAAge,aAAA,CAAfhe,eAAe;MAAE4B,0BAA0B,GAAAoc,aAAA,CAA1Bpc,0BAA0B;IACnD,IAAI1X,uBAAuB,CAACkG,KAAK,CAAC,IAAI4P,eAAe,IAAI,IAAI,EAAE;MAC7D;MACA,IAAI,CAACpJ,YAAY,CAAC,wBAAwB,EAAE;QAAE+N,WAAW,EAAE;MAAK,CAAC,CAAC;MAClE,IAAI,CAAClO,QAAQ,CAAC;QAAEuJ,eAAe,EAAExT;MAAU,CAAC,EAAE,MAAM;QAClD,IAAI,CAAC2W,SAAS,CAAC,CAAC;MAClB,CAAC,CAAC;IACJ,CAAC,MAAM,IAAIvB,0BAA0B,KAAK,IAAI,EAAE;MAAA,IAAAqc,aAAA;MAC9C;MACA,IAAMC,YAAY,IAAAD,aAAA,GACf7tB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAgC8tB,YAAY,cAAAD,aAAA,cAAAA,aAAA,GAAIvtB,MAAM,CAACN,KAAK,CAAC;MACrE,IAAI,CAACqG,QAAQ,CAAC;QACZS,sBAAsB,EAAEgnB,YAAY;QACpCjnB,wBAAwB,EAAEzK;MAC5B,CAAC,CAAC;IACJ,CAAC,MAAM,IAAI,IAAI,CAACgnB,WAAW,CAAC,CAAC,EAAE;MAC7B,IAAI,CAAC5c,YAAY,CAAC,yBAAyB,EAAE;QAAE+N,WAAW,EAAE;MAAK,CAAC,CAAC;MACnE,IAAI,CAAC2O,QAAQ,CAAC,CAAC;IACjB,CAAC,MAAM;MACL3oB,GAAG,CAACyF,KAAK,CAAC,qCAAqC,CAAC;MAChD,IAAQinB,OAAO,GAAK,IAAI,CAAC3rB,KAAK,CAAtB2rB,OAAO;MACfA,OAAO,CAAC,IAAImD,KAAK,4BAAA/P,MAAA,CAA4Bra,KAAK,CAAE,CAAC,CAAC;IACxD;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEqK,aAAaA,CAACwV,KAAa,EAAQ;IACjC,IAAAkO,MAAA,GAAmBlO,KAAK;MAAhBE,MAAM,GAAAgO,MAAA,CAANhO,MAAM;IACd,IAAAiO,MAAA,GAA0BjO,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,CAAC,CAAC;MAA9BzG,IAAI,GAAA0U,MAAA,CAAJ1U,IAAI;MAAErc,OAAO,GAAA+wB,MAAA,CAAP/wB,OAAO;IACrB,IAAI,IAAI,CAAC2X,qBAAqB,IAAI,IAAI,EAAE;MACtC,IAAI,CAACpO,YAAY,CAAC8S,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,YAAY,EAAA3U,aAAA;QACpC8B,kBAAkB,EAAE;MAAK,GACtBxJ,OAAO,CACX,CAAC;IACJ;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEqN,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAAC2V,WAAW,CAAC,CAAC;EACpB;EAEAtV,YAAYA,CAAA,EAAS;IAAA,IAAAsjB,YAAA;IACnB1zB,GAAG,CAAC6a,MAAM,CAAC,uBAAuB,CAAC;IAEnC,IAAA8Y,aAAA,GAaI,IAAI,CAAC7pB,KAAK;MAZZf,eAAe,GAAA4qB,aAAA,CAAf5qB,eAAe;MACfR,mBAAmB,GAAAorB,aAAA,CAAnBprB,mBAAmB;MACnByM,kBAAkB,GAAA2e,aAAA,CAAlB3e,kBAAkB;MAClBiC,0BAA0B,GAAA0c,aAAA,CAA1B1c,0BAA0B;MAC1B3K,wBAAwB,GAAAqnB,aAAA,CAAxBrnB,wBAAwB;MACxBsK,aAAa,GAAA+c,aAAA,CAAb/c,aAAa;MACb9N,YAAY,GAAA6qB,aAAA,CAAZ7qB,YAAY;MACZG,OAAO,GAAA0qB,aAAA,CAAP1qB,OAAO;MACPC,YAAY,GAAAyqB,aAAA,CAAZzqB,YAAY;MACZG,YAAY,GAAAsqB,aAAA,CAAZtqB,YAAY;MACZsM,qBAAqB,GAAAge,aAAA,CAArBhe,qBAAqB;MACrB3M,KAAK,GAAA2qB,aAAA,CAAL3qB,KAAK;IAGP,IAAMV,MAAM,GAAG;MACbS,eAAe;MACfR,mBAAmB;MACnByM,kBAAkB;MAClBiC,0BAA0B;MAC1B3K,wBAAwB;MACxBsK,aAAa;MACb9N,YAAY;MACZG,OAAO;MACPC,YAAY;MACZG,YAAY;MACZsM,qBAAqB;MACrB3M;IACF,CAAC;IAED,IAAI,CAACtK,aAAa,CAACoqB,aAAa,CAACxgB,MAAM,CAAC,EAAE;MACxC,IAAI,CAACwK,gBAAgB,GAAGxK,MAAM;IAChC,CAAC,MAAM;MACL,IAAI,CAACwK,gBAAgB,GAAG,IAAI;IAC9B;IAEA,CAAA4gB,YAAA,OAAI,CAAC7gB,IAAI,cAAA6gB,YAAA,eAATA,YAAA,CAAWlR,WAAW,CAAC,CAAC;IACxB,IAAI,CAACkD,WAAW,CAAC,CAAC;EACpB;EAEArV,kBAAkBA,CAAA,EAAS;IACzB,IAAQvO,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb;IACA,IAAQuT,eAAe,GAAK,IAAI,CAACvL,KAAK,CAA9BuL,eAAe;IACvB,IAAIzW,sBAAsB,CAACkD,KAAK,CAAC,IAAI,CAAAuT,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEmB,IAAI,MAAK,MAAM,EAAE;MACrE,IAAI,CAACoL,cAAc,CAAC,CAAC;IACvB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEtR,mBAAmBA,CAAA,EAAS;IAAA,IAAAsjB,YAAA;IAC1B,IAAQ9xB,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAI,CAACgK,QAAQ,CAAC;MAAElB,YAAY,EAAE9I,KAAK,CAACkU;IAAoB,CAAC,CAAC;;IAE1D;IACA,IAAM6d,gBAAgB,IAAAD,YAAA,GAAG,IAAI,CAAC/gB,IAAI,cAAA+gB,YAAA,uBAATA,YAAA,CAAW9pB,KAAK,CAACwd,SAAS;IACnD,IAAIuM,gBAAgB,IAAI,IAAI,EAAE;IAC9B,IAAMC,YAAY,GAAGt1B,gBAAgB,CAACsD,KAAK,CAAC;IAC5C,IAAMiyB,gBAAgB,GAAGF,gBAAgB,YAAYp1B,cAAc;IACnE,IAAIq1B,YAAY,KAAKC,gBAAgB,EAAE;MAAA,IAAAC,YAAA;MACrC,CAAAA,YAAA,OAAI,CAACnhB,IAAI,cAAAmhB,YAAA,eAATA,YAAA,CAAWjM,mBAAmB,CAAC,CAAC;IAClC;EACF;EAEAxX,iBAAiBA,CAACgG,OAAqB,EAAQ;IAAA,IAAA0d,qBAAA,EAAAC,YAAA;IAC7C,IAAQpyB,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAMqyB,eAAe,IAAAF,qBAAA,IAAAC,YAAA,GAAG,IAAI,CAACrhB,IAAI,cAAAqhB,YAAA,uBAATA,YAAA,CAAWpqB,KAAK,CAACwd,SAAS,CAAC6M,eAAe,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,CAAC;IACvE,IAAI1c,eAAe,GAAG,CAAC;IACvB,IAAI9d,mBAAmB,CAACqI,KAAK,CAAC,IAAIA,KAAK,CAAC0H,UAAU,EAAE;MAClDtO,aAAa,CAACqb,OAAO,CAAC;MACtB,IAAQ6d,cAAc,GAAK7d,OAAO,CAA1B6d,cAAc;;MAEtB;MACA;MACA,IAAMC,iBAAiB,GAAGvyB,KAAK,CAACulB,QAAQ,GAAGvlB,KAAK,CAAC6c,sBAAsB;MACvE,IAAIwV,eAAe,KAAKE,iBAAiB,GAAG,CAAC,EAAE;QAC7C;QACA9c,eAAe,GAAGzV,KAAK,CAACyV,eAAe,GAAG,CAAC;MAC7C,CAAC,MAAM,IAAI4c,eAAe,KAAKE,iBAAiB,GAAG,CAAC,EAAE;QACpD;QACA9c,eAAe,GAAGzV,KAAK,CAACyV,eAAe;MACzC,CAAC,MAAM;QACL;QACAA,eAAe,GAAGoD,IAAI,CAACnZ,GAAG,CACxB,CAAC,EACD4yB,cAAc,IACXtyB,KAAK,CAACulB,QAAQ,GAAGvlB,KAAK,CAACyV,eAAe,CAAC,GACxCzV,KAAK,CAAC4c,mBAAmB,GACzB5c,KAAK,CAAC6c,sBAAsB,GAC5B,CACJ,CAAC;MACH;IACF;IAEA,IAAI,CAAC7S,QAAQ,CAAC;MAAEyK,OAAO;MAAEgB;IAAgB,CAAC,CAAC;EAC7C;;EAEA;EACAvH,sBAAsBA,CAACskB,cAAqC,EAAQ;IAClEp5B,aAAa,CAACo5B,cAAc,CAAC;IAC7B,IAAQC,kBAAkB,GAAK,IAAI,CAACxzB,KAAK,CAAjCwzB,kBAAkB;IAC1BA,kBAAkB,aAAlBA,kBAAkB,eAAlBA,kBAAkB,CAAGD,cAAc,CAAC;EACtC;EAEArkB,yBAAyBA,CAACqX,SAAoB,EAAQ;IACpD,IAAQkN,iBAAiB,GAAK,IAAI,CAACzzB,KAAK,CAAhCyzB,iBAAiB;IACzB,IAAQ1d,aAAa,GAAK,IAAI,CAAChN,KAAK,CAA5BgN,aAAa;IACrB,IAAI,CAAChL,QAAQ,CAAC;MAAE+K,aAAa,EAAEyQ;IAAU,CAAC,CAAC;IAC3C,IAAIxQ,aAAa,IAAI,IAAI,EAAE;MACzB,IAAI,CAAChL,QAAQ,CAAC;QAAEgL,aAAa,EAAE;MAAK,CAAC,CAAC;IACxC;IACA,IAAQ2Y,SAAS,GAAKnI,SAAS,CAAvBmI,SAAS;IACjB,IAAIA,SAAS,IAAI,IAAI,EAAE;MACrB,IAAI,CAAC3jB,QAAQ,CAAC;QAAEkM,OAAO,KAAA8H,MAAA,CAAK2P,SAAS,GAAG,CAAC;MAAG,CAAC,CAAC;IAChD;IACA+E,iBAAiB,aAAjBA,iBAAiB,eAAjBA,iBAAiB,CAAGlN,SAAS,CAAC;IAC9B,IACEA,SAAS,YAAY7oB,cAAc,IACnC6oB,SAAS,CAACI,aAAa,CAACvc,MAAM,GAAG,CAAC,EAClC;MACA,IAAI,CAACspB,qBAAqB,CAACnN,SAAS,CAAC;IACvC;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACQmN,qBAAqBA,CAAC1hB,OAAuB,EAAiB;IAAA,IAAA2hB,MAAA;IAAA,OAAAnQ,iBAAA;MAClE,IAAQziB,KAAK,GAAK4yB,MAAI,CAAC3zB,KAAK,CAApBe,KAAK;MACb,IAAI,CAACtD,gBAAgB,CAACsD,KAAK,CAAC,EAAE;MAC9B,IAAQ4lB,aAAa,GAAK3U,OAAO,CAAzB2U,aAAa;MACrB,IAAIA,aAAa,CAACvc,MAAM,KAAK,CAAC,EAAE;MAEhC,IAAI;QAAA,IAAAwpB,WAAA;QACF,IAAMC,SAAS,SAAS9yB,KAAK,CAAC+yB,0BAA0B,CAACnN,aAAa,CAAC;QACvE;QACA,IAAI,EAAAiN,WAAA,GAAAD,MAAI,CAAC7hB,IAAI,cAAA8hB,WAAA,uBAATA,WAAA,CAAWG,YAAY,CAAC,CAAC,MAAK/hB,OAAO,EAAE;QAC3C2hB,MAAI,CAAC7hB,IAAI,CAACkiB,YAAY,CAAChiB,OAAO,CAACiiB,OAAO,CAACJ,SAAS,CAAC,CAAC;MACpD,CAAC,CAAC,OAAO9O,CAAC,EAAE;QAAA,IAAAmP,YAAA;QACVj1B,GAAG,CAACyF,KAAK,CAAC,8BAA8B,EAAEqgB,CAAC,CAAC;QAC5C;QACA,IAAI,EAAAmP,YAAA,GAAAP,MAAI,CAAC7hB,IAAI,cAAAoiB,YAAA,uBAATA,YAAA,CAAWH,YAAY,CAAC,CAAC,MAAK/hB,OAAO,EAAE;UACzC2hB,MAAI,CAAC7hB,IAAI,CAACkiB,YAAY,CAAChiB,OAAO,CAACmiB,KAAK,CAAC,CAAC,CAAC;QACzC;MACF;IAAC;EACH;EAEAhlB,yBAAyBA,CACvBtF,YAAsC,EACtCuqB,eAA4B,EACtB;IACN,IAAI,CAACrpB,QAAQ,CAAC;MAAElB;IAAa,CAAC,EAAEuqB,eAAe,CAAC;EAClD;EAEAhlB,yBAAyBA,CACvB2F,kBAAuE,EACjE;IACN,IAAQhU,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAA4BszB,sBAAsB,GAAK,IAAI,CAACtrB,KAAK,CAAzDgM,kBAAkB;IAC1B,IAAIsf,sBAAsB,KAAKtf,kBAAkB,EAAE;MACjD;IACF;IAEA,IAAI,CAAChK,QAAQ,CACX;MACE;MACA;MACAgK,kBAAkB,EAAEA,kBAAkB,CAACuf,KAAK,CACzCC,KAAK,IACJ71B,mBAAmB,CAAC61B,KAAK,CAAC,IAAIA,KAAK,CAACC,OAAO,CAAC,CAChD,CAAC,GACGzf,kBAAkB,GAClBpX,aAAa,CAAC82B,uBAAuB,CAAC1zB,KAAK,EAAEgU,kBAAkB,CAAC,CAC7D2f;IACT,CAAC,EACD;MAAA,IAAAC,YAAA;MAAA,QAAAA,YAAA,GAAM,IAAI,CAAC7iB,IAAI,cAAA6iB,YAAA,uBAATA,YAAA,CAAWlT,WAAW,CAAC,CAAC;IAAA,CAChC,CAAC;EACH;EAEA/U,gBAAgBA,CAACkoB,OAAgB,EAAQ;IACvC;IACA,IAAIA,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,CAACC,UAAU,CAAC,CAAC;IACtB;IAEA,IAAI,CAACD,OAAO,GAAGA,OAAO;EACxB;EAEA/kB,8BAA8BA,CAC5BoE,kBAAoD,EAC9C;IACNhV,GAAG,CAACmI,KAAK,CAAC,6BAA6B,EAAE6M,kBAAkB,CAAC;IAC5D,IAAI,CAAClJ,QAAQ,CAAC;MAAEkJ;IAAmB,CAAC,CAAC;EACvC;EAEAtE,6BAA6BA,CAAA,EAAS;IACpC1Q,GAAG,CAACmI,KAAK,CAAC,+BAA+B,CAAC;IAC1C,IAAA0tB,aAAA,GAA4C,IAAI,CAAC/rB,KAAK;MAA9CwN,WAAW,GAAAue,aAAA,CAAXve,WAAW;MAAEtC,kBAAkB,GAAA6gB,aAAA,CAAlB7gB,kBAAkB;IACvC,IAAI,CAAClJ,QAAQ,CAAC;MACZwL,WAAW,EAAE,CACX,GAAGA,WAAW,EACd;QACEvT,IAAI,EAAEhG,UAAU,CAAC+3B,2BAA2B;QAC5C7xB,KAAK;MACP,CAAC,CACF;MACDgT,0BAA0B,EAAEjC,kBAAkB,CAAC7J,MAAM;MACrD;MACAmB,wBAAwB,EAAEzK;IAC5B,CAAC,CAAC;EACJ;EAEA8O,2BAA2BA,CAACxK,KAAa,EAAQ;IAC/CnG,GAAG,CAACmI,KAAK,CAAC,yBAAyB,EAAEhC,KAAK,CAAC;IAC3C,IAAA4vB,aAAA,GAA4C,IAAI,CAACjsB,KAAK;MAA9CwN,WAAW,GAAAye,aAAA,CAAXze,WAAW;MAAEtC,kBAAkB,GAAA+gB,aAAA,CAAlB/gB,kBAAkB;IACvC,IAAI,CAAClJ,QAAQ,CAAC;MACZwL,WAAW,EAAE,CACX,GAAGA,WAAW,EACd;QACEvT,IAAI,EAAEhG,UAAU,CAAC+3B,2BAA2B;QAC5C7xB,KAAK;MACP,CAAC,CACF;MACDgT,0BAA0B,EAAE9Q,KAAK;MACjC;MACAmG,wBAAwB,EAAAlC,aAAA,KAAO4K,kBAAkB,CAAC7O,KAAK,CAAC;IAC1D,CAAC,CAAC;EACJ;EAUA0K,iCAAiCA,CAACvI,MAA6B,EAAQ;IACrEtI,GAAG,CAACmI,KAAK,CAAC,iCAAiC,EAAEG,MAAM,CAAC;IACpD,IAAI,CAACwD,QAAQ,CACXhC,KAAK,IAAI;MACP,IAAIA,KAAK,CAACmN,0BAA0B,KAAK,IAAI,EAAE;QAC7CjX,GAAG,CAACmI,KAAK,CAAC,sBAAsB,CAAC;QACjC,OAAO,IAAI;MACb;MACA,IAAM6M,kBAAkB,GAAG,CAAC,GAAGlL,KAAK,CAACkL,kBAAkB,CAAC;MACxDA,kBAAkB,CAAClL,KAAK,CAACmN,0BAA0B,CAAC,GAAG3O,MAAM;MAC7D,OAAO;QAAE0M;MAAmB,CAAC;IAC/B,CAAC,EACD,MAAM;MACJ,IAAI,CAACpF,cAAc,CAAC,CAAC;IACvB,CACF,CAAC;EACH;EAEAkB,mCAAmCA,CAAA,EAAS;IAC1C,IAAI,CAAClB,cAAc,CAAC,CAAC;IACrB;IACA;IACA,IAAI,CAAC9D,QAAQ,CAAC;MACZmL,0BAA0B,EAAE,IAAI;MAChC1K,sBAAsB,EAAE;IAC1B,CAAC,CAAC;EACJ;EAEAwE,yBAAyBA,CAAC6F,aAAgC,EAAQ;IAChE5W,GAAG,CAACqtB,IAAI,+BAA+BzW,aAAa,CAAC;IAErD,IAAQ9U,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAAk0B,aAAA,GAMI,IAAI,CAAClsB,KAAK;MALZc,YAAY,GAAAorB,aAAA,CAAZprB,YAAY;MACZ5B,KAAK,GAAAgtB,aAAA,CAALhtB,KAAK;MACLF,YAAY,GAAAktB,aAAA,CAAZltB,YAAY;MACZC,eAAe,GAAAitB,aAAA,CAAfjtB,eAAe;MACf4M,qBAAqB,GAAAqgB,aAAA,CAArBrgB,qBAAqB;IAGvB,IAAQ3O,OAAO,GAAKlF,KAAK,CAAjBkF,OAAO;IACf,IAAMivB,gBAAgB,GAAGn0B,KAAK,CAAC8U,aAAa,CAAC1Q,GAAG,CAC9CgwB,YAAY,OAAApW,MAAA,CAAOoW,YAAY,CACjC,CAAC;IAED,IAAMC,kBAAkB,GAAGz3B,aAAa,CAAC03B,2BAA2B,CAClEH,gBAAgB,EAChBrf,aACF,CAAC;IACD,IAAIuf,kBAAkB,CAAChrB,MAAM,GAAG,CAAC,EAAE;MACjC,IAAMkrB,QAAQ,GAAG33B,aAAa,CAAC43B,oBAAoB,CACjDttB,KAAK,EACLmtB,kBACF,CAAC;MACD,IAAMhX,eAAe,GAAGzgB,aAAa,CAAC63B,sBAAsB,CAC1DvvB,OAAO,EACP8B,YAAY,EACZqtB,kBACF,CAAC;MACD,IAAMjX,kBAAkB,GAAGxgB,aAAa,CAAC63B,sBAAsB,CAC7DvvB,OAAO,EACP+B,eAAe,EACfotB,kBACF,CAAC;MACD,IAAMpL,eAAe,GAAGrsB,aAAa,CAAC83B,4BAA4B,CAChExvB,OAAO,EACP4D,YAAY,EACZurB,kBACF,CAAC;MACD,IAAMM,wBAAwB,GAC5B/3B,aAAa,CAACg4B,sCAAsC,CAClD/gB,qBAAqB,EACrBwgB,kBACF,CAAC;MACH,IAAIE,QAAQ,CAAClrB,MAAM,KAAKnC,KAAK,CAACmC,MAAM,EAAE;QACpCnL,GAAG,CAACmI,KAAK,CAAC,+CAA+C,CAAC;QAC1D,IAAI,CAACslB,kBAAkB,CAAC4I,QAAQ,CAAC;MACnC;MACA,IACElX,eAAe,CAAC7K,IAAI,KAAKxL,YAAY,CAACwL,IAAI,IAC1C4K,kBAAkB,CAAC5K,IAAI,KAAKvL,eAAe,CAACuL,IAAI,EAChD;QACAtU,GAAG,CAACmI,KAAK,kDAAkD,CAAC;QAC5D,IAAIgX,eAAe,CAAC7K,IAAI,KAAKxL,YAAY,CAACwL,IAAI,EAAE;UAC9C,IAAI,CAACuL,yBAAyB,CAACV,eAAe,CAAC;QACjD;QACA,IAAID,kBAAkB,CAAC5K,IAAI,KAAKvL,eAAe,CAACuL,IAAI,EAAE;UACpD,IAAI,CAACxI,QAAQ,CAAC;YAAE/C,eAAe,EAAEmW;UAAmB,CAAC,CAAC;QACxD;MACF;MACA,IAAI,CAACzmB,SAAS,CAACmS,YAAY,EAAEmgB,eAAe,CAAC,EAAE;QAC7C/qB,GAAG,CAACmI,KAAK,oDAEP4iB,eACF,CAAC;QACD,IAAI,CAACjf,QAAQ,CAAC;UAAElB,YAAY,EAAEmgB;QAAgB,CAAC,CAAC;MAClD;MACA,IAAI,CAACtyB,SAAS,CAACkd,qBAAqB,EAAE8gB,wBAAwB,CAAC,EAAE;QAC/Dz2B,GAAG,CAACmI,KAAK,6DAEP4iB,eACF,CAAC;QACD,IAAI,CAACjf,QAAQ,CAAC;UAAE6J,qBAAqB,EAAE8gB;QAAyB,CAAC,CAAC;MACpE;IACF;IAEA,IAAI,CAAC3qB,QAAQ,CAAC;MAAE8K;IAAc,CAAC,CAAC;IAChC,IAAIA,aAAa,CAACzL,MAAM,GAAG,CAAC,EAAE;MAC5B;MACA;MACA,IAAI,CAACc,YAAY,CAAC,4BAA4B,CAAC;IACjD;EACF;EAEA+E,0BAA0BA,CAAA,EAAS;IACjChR,GAAG,CAACmI,KAAK,CAAC,uBAAuB,CAAC;IAClC,IAAQgP,OAAO,GAAK,IAAI,CAACrN,KAAK,CAAtBqN,OAAO;IACf,IAAIA,OAAO,EAAE;MACX,IAAI,CAAC8V,aAAa,CAAC,CAAC;;MAEpB;MACA;MACA,IAAI,CAACvH,WAAW,CAAC,CAAC;IACpB,CAAC,MAAM;MACL,IAAI,CAAC5B,cAAc,CAAC,CAAC;IACvB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE3K,4BAA4BA,CAAA,EAAS;IAAA,IAAAwd,mBAAA;IACnC,IAAQ5gB,mBAAmB,GAAK,IAAI,CAAChV,KAAK,CAAlCgV,mBAAmB;IAC3B,IAAIA,mBAAmB,KAAK,IAAI,CAACK,2BAA2B,EAAE;IAE9D,IAAQtU,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQ8I,YAAY,GAAK,IAAI,CAACd,KAAK,CAA3Bc,YAAY;IACpB,IAAMgsB,IAAI,GAAG7gB,mBAAmB,CAAC;MAC/BnP,gBAAgB,EAAE,IAAIjB,GAAG,CAAC,CAAC;MAC3B+P,cAAc,EAAE,IAAI/P,GAAG,CAAC,CAAC;MACzBiF,YAAY;MACZ9D,mBAAmB,EAAE,IAAInB,GAAG,CAC1B7D,KAAK,aAALA,KAAK,gBAAA60B,mBAAA,GAAL70B,KAAK,CAAEoU,WAAW,cAAAygB,mBAAA,gBAAAA,mBAAA,GAAlBA,mBAAA,CAAoB5vB,aAAa,cAAA4vB,mBAAA,uBAAjCA,mBAAA,CAAmCzwB,GAAG,CAACiB,IAAI,IAAI,CAC7CrF,KAAK,CAACqU,oBAAoB,CAAChP,IAAI,CAAC,EAChC,CAAC,CACF,CACH;IACF,CAAC,CAAC;IACF,IAAI,CAACiP,2BAA2B,GAAGL,mBAAmB;IACtD/V,GAAG,CAACmI,KAAK,CAAC,4BAA4B,EAAEyuB,IAAI,CAAC;IAC7C;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC/jB,IAAI,IAAI,IAAI,EAAE;MACrB,IAAI,CAACA,IAAI,CAAClM,gBAAgB,GAAGiwB,IAAI;IACnC;IACA,IAAI,CAAC9qB,QAAQ,CAAC;MAAEnF,gBAAgB,EAAEiwB;IAAK,CAAC,CAAC;EAC3C;EAEAxlB,0BAA0BA,CAAA,EAAkB;IAC1C,OAAO,IAAI,CAACyD,aAAa,CAAC,CAAC;EAC7B;EAEAxD,2BAA2BA,CAAA,EAAkB;IAC3C,OAAO,IAAI,CAACkD,cAAc,CAAC,CAAC;EAC9B;EAEArD,wBAAwBA,CAAA,EAAS;IAAA,IAAA2lB,YAAA;IAC/B72B,GAAG,CAACmI,KAAK,CAAC,sBAAsB,CAAC;IACjC,IAAQrG,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQuS,cAAc,GAAwBvS,KAAK,CAA3CuS,cAAc;MAAEO,iBAAiB,GAAK9S,KAAK,CAA3B8S,iBAAiB;IACzC,IAAI,CAAC9I,QAAQ,CAAC;MACZuI,cAAc;MACdO,iBAAiB;MACjB6C,gBAAgB,EAAE;IACpB,CAAC,CAAC;IACF,CAAAof,YAAA,OAAI,CAAChkB,IAAI,cAAAgkB,YAAA,eAATA,YAAA,CAAWrU,WAAW,CAAC,CAAC;EAC1B;EAEAsU,kBAAkBA,CAACjY,UAAkB,EAAQ;IAAA,IAAAkY,YAAA;IAC3C,IAAAC,aAAA,GAAsC,IAAI,CAACltB,KAAK;MAAxCyM,OAAO,GAAAygB,aAAA,CAAPzgB,OAAO;MAAE5P,gBAAgB,GAAAqwB,aAAA,CAAhBrwB,gBAAgB;IACjC,IAAI,CAAC4P,OAAO,EAAE,MAAM,IAAIsZ,KAAK,CAAC,iBAAiB,CAAC;IAEhD,IAAMoH,YAAY,GAAGx7B,UAAU,CAAC8a,OAAO,CAAC2gB,mBAAmB,EAAErY,UAAU,CAAC;IAExE,IAAMsY,UAAU,GAAGxwB,gBAAgB,CAAC8gB,mBAAmB,CAAC,CAAC;IACzD,IAAI0P,UAAU,CAAC5Q,GAAG,CAAC1H,UAAU,CAAC,EAAE;MAC9BlY,gBAAgB,CAACwlB,gBAAgB,CAACtN,UAAU,CAAC;MAC7ClY,gBAAgB,CAACywB,wBAAwB,CAACvY,UAAU,EAAEoY,YAAY,CAAC;IACrE,CAAC,MAAM;MACLtwB,gBAAgB,CAAC+jB,cAAc,CAAC7L,UAAU,EAAEoY,YAAY,CAAC;IAC3D;IAEA,CAAAF,YAAA,OAAI,CAAClkB,IAAI,cAAAkkB,YAAA,eAATA,YAAA,CAAWvU,WAAW,CAAC,CAAC;EAC1B;EAEA6U,sBAAsBA,CAAA,EAAS;IAAA,IAAAC,YAAA;IAC7B,IAAAC,aAAA,GAAsC,IAAI,CAACztB,KAAK;MAAxCyM,OAAO,GAAAghB,aAAA,CAAPhhB,OAAO;MAAE5P,gBAAgB,GAAA4wB,aAAA,CAAhB5wB,gBAAgB;IACjC,IAAI,CAAC4P,OAAO,EAAE,MAAM,IAAIsZ,KAAK,CAAC,iBAAiB,CAAC;IAEhD,IAAM2H,UAAU,GAAG,CAAC,GAAGjhB,OAAO,CAACkhB,eAAe,CAACtR,OAAO,CAAC,CAAC,CAAC;IACzD,IAAMuR,cAAc,GAAGF,UAAU,CAC9BpwB,MAAM,CAACuwB,MAAA;MAAA,IAAAC,MAAA,GAAAtR,cAAA,CAAAqR,MAAA;QAAErW,CAAC,GAAAsW,MAAA;QAAEC,KAAK,GAAAD,MAAA;MAAA,OAAMC,KAAK,KAAK,CAAC;IAAA,EAAC,CACnC3xB,GAAG,CAAC4xB,MAAA;MAAA,IAAAC,MAAA,GAAAzR,cAAA,CAAAwR,MAAA;QAAEjZ,UAAU,GAAAkZ,MAAA;MAAA,OAAMlZ,UAAU;IAAA,EAAC;IAEpC,IAAMmZ,aAAa,GAAGzhB,OAAO,CAAC2gB,mBAAmB;IACjD,IAAMC,UAAU,GAAGxwB,gBAAgB,CAAC8gB,mBAAmB,CAAC,CAAC;IAEzD,IAAMwQ,aAAa,GAAGP,cAAc,CAACtwB,MAAM,CAACyX,UAAU,IACpDsY,UAAU,CAAC5Q,GAAG,CAAC1H,UAAU,CAC3B,CAAC;IAED,IAAI6Y,cAAc,CAACvsB,MAAM,KAAK8sB,aAAa,CAAC9sB,MAAM,EAAE;MAClD;MACA,KAAK,IAAIF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGysB,cAAc,CAACvsB,MAAM,EAAEF,CAAC,IAAI,CAAC,EAAE;QACjD,IAAM4T,UAAU,GAAG6Y,cAAc,CAACzsB,CAAC,CAAC;QACpC,IAAMgsB,YAAY,GAAGx7B,UAAU,CAACu8B,aAAa,EAAEnZ,UAAU,CAAC;QAC1DlY,gBAAgB,CAACwlB,gBAAgB,CAACtN,UAAU,CAAC;QAC7ClY,gBAAgB,CAACywB,wBAAwB,CAACvY,UAAU,EAAEoY,YAAY,CAAC;MACrE;IACF,CAAC,MAAM;MACL;MACA,KAAK,IAAIhsB,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGysB,cAAc,CAACvsB,MAAM,EAAEF,GAAC,IAAI,CAAC,EAAE;QACjD,IAAM4T,WAAU,GAAG6Y,cAAc,CAACzsB,GAAC,CAAC;QACpC,IAAMgsB,aAAY,GAAGx7B,UAAU,CAACu8B,aAAa,EAAEnZ,WAAU,CAAC;QAC1DlY,gBAAgB,CAAC+jB,cAAc,CAAC7L,WAAU,EAAEoY,aAAY,CAAC;MAC3D;IACF;IAEA,CAAAK,YAAA,OAAI,CAACzkB,IAAI,cAAAykB,YAAA,eAATA,YAAA,CAAW9U,WAAW,CAAC,CAAC;EAC1B;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE3T,wBAAwBA,CACtBtG,mBAAwC,EAGlC;IAAA,IAAA2vB,qBAAA,EAAAC,sBAAA;IAAA,IAFNC,KAA6B,GAAAjb,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,EAAE;IAAA,IAClCkb,OAA+B,GAAAlb,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,EAAE;IAEpCnd,GAAG,CAACmI,KAAK,CAAC,0BAA0B,EAAEI,mBAAmB,EAAE6vB,KAAK,EAAEC,OAAO,CAAC;IAC1E,IAAQnvB,YAAY,GAAK,IAAI,CAACY,KAAK,CAA3BZ,YAAY;IACpB,IAAMovB,QAAQ,GAAG,EAAAJ,qBAAA,GAAChvB,YAAY,aAAZA,YAAY,gBAAAivB,sBAAA,GAAZjvB,YAAY,CAAElC,OAAO,cAAAmxB,sBAAA,uBAArBA,sBAAA,CAAuBhtB,MAAM,cAAA+sB,qBAAA,cAAAA,qBAAA,GAAI,CAAC,IAAI,CAAC;IACzD;IACA,IAAMK,OAAO,GAAG,CAAC,GAAGH,KAAK,EAAE,GAAGC,OAAO,CAAC;IACtC,IAAMG,kBAAkB,GAAG,EACzBF,QAAQ,IACRC,OAAO,CAACptB,MAAM,GAAG,CAAC,IAClBotB,OAAO,CAAClD,KAAK,CAACoD,EAAE,IAAI76B,gBAAgB,CAAC86B,kBAAkB,CAACD,EAAE,CAAC,CAAC,CAC7D;IAED,IAAID,kBAAkB,EAAE;MACtB,IAAI,CAACvsB,YAAY,gBAAA6T,MAAA,CACAvX,mBAAmB,CAAC7H,YAAY,CAC5CwF,GAAG,CAACG,CAAC,IAAIA,CAAC,CAACmB,SAAS,CAAC,CACrBmxB,IAAI,CAAC,IAAI,CAAC,QACf,CAAC;IACH;IACA,IAAI,CAAC7sB,QAAQ,CAAC;MAAEvD;IAAoB,CAAC,CAAC;EACxC;;EAEA;AACF;AACA;AACA;EACEqG,uBAAuBA,CAACgqB,WAAwB,EAAQ;IAAA,IAAAC,sBAAA,EAAAC,sBAAA;IACtD94B,GAAG,CAACmI,KAAK,CAAC,yBAAyB,EAAEywB,WAAW,CAAC;IACjD,IAAQ1vB,YAAY,GAAK,IAAI,CAACY,KAAK,CAA3BZ,YAAY;IACpB,IAAMovB,QAAQ,GAAG,EAAAO,sBAAA,GAAC3vB,YAAY,aAAZA,YAAY,gBAAA4vB,sBAAA,GAAZ5vB,YAAY,CAAElC,OAAO,cAAA8xB,sBAAA,uBAArBA,sBAAA,CAAuB3tB,MAAM,cAAA0tB,sBAAA,cAAAA,sBAAA,GAAI,CAAC,IAAI,CAAC;IACzD;IACA,IAAML,kBAAkB,GAAG,EACzBF,QAAQ,IAAI16B,gBAAgB,CAAC86B,kBAAkB,CAACE,WAAW,CAACpxB,SAAS,CAAC,CACvE;IAED,IAAIgxB,kBAAkB,EAAE;MACtB,IAAI,CAACvsB,YAAY,gBAAA6T,MAAA,CAAgB8Y,WAAW,CAACpxB,SAAS,QAAK,CAAC;IAC9D;IAEA,IAAI,CAACsE,QAAQ,CAACitB,MAAA;MAAA,IAAGxwB,mBAAmB,GAAAwwB,MAAA,CAAnBxwB,mBAAmB;MAAA,OAAQ;QAC1C8O,mBAAmB,EAAEuhB,WAAW;QAChCrwB,mBAAmB,EAAA6B,aAAA,CAAAA,aAAA,KACd7B,mBAAmB;UACtB7H,YAAY,EAAE6H,mBAAmB,CAAC7H,YAAY,CAACwF,GAAG,CAACG,CAAC,IAClDA,CAAC,CAACmB,SAAS,KAAKoxB,WAAW,CAACpxB,SAAS,GAAGoxB,WAAW,GAAGvyB,CACxD;QAAC;MAEL,CAAC;IAAA,CAAC,CAAC;EACL;;EAEA;AACF;AACA;AACA;EACEyI,qBAAqBA,CAAC8pB,WAAwB,EAAQ;IACpD54B,GAAG,CAACmI,KAAK,CAAC,uBAAuB,EAAEywB,WAAW,CAAC;IAE/C,IAAQthB,WAAW,GAAK,IAAI,CAACxN,KAAK,CAA1BwN,WAAW;IAEnB,IAAI,CAACxL,QAAQ,CAAC;MACZwL,WAAW,EAAE,CACX,GAAGA,WAAW,EACd;QACEvT,IAAI,EAAEhG,UAAU,CAACid,gBAAgB;QACjC/W,KAAK,qBAAA6b,MAAA,CAAqB8Y,WAAW,CAACpxB,SAAS;MACjD,CAAC,CACF;MACD6P,mBAAmB,EAAEuhB;IACvB,CAAC,CAAC;EACJ;EAEA3mB,kBAAkBA,CAAC/I,YAA4B,EAAQ;IAAA,IAAA8vB,sBAAA,EAAAC,sBAAA;IACrDj5B,GAAG,CAACqtB,IAAI,CAAC,eAAe,EAAEnkB,YAAY,CAAC;;IAEvC;IACA,IAAI,CAAAA,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAElC,OAAO,KAAI,IAAI,IAAIkC,YAAY,CAAClC,OAAO,CAACmE,MAAM,GAAG,CAAC,EAAE;MACpE,IAAQxE,gBAAgB,GAAK,IAAI,CAACmD,KAAK,CAA/BnD,gBAAgB;MACxB,IAAM8O,sBAAsB,GAC1B9O,gBAAgB,CAACuyB,yBAAyB,CAAC,CAAC;MAC9ChwB,YAAY,CAAClC,OAAO,CAACpB,OAAO,CAACuB,IAAI,IAAI;QACnC,IAAIsO,sBAAsB,CAACiE,GAAG,CAACvS,IAAI,CAAC,KAAK,CAAC,EAAE;UAC1CR,gBAAgB,CAACwyB,sBAAsB,CAAChyB,IAAI,CAAC;QAC/C;MACF,CAAC,CAAC;IACJ;IAEA,IAAI,CAACiyB,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAAC3Y,eAAe,CAAC,CAAC;IAEtB,IAAI,CAACxU,YAAY,wBAAA6T,MAAA,EAAAkZ,sBAAA,GACQ9vB,YAAY,aAAZA,YAAY,gBAAA+vB,sBAAA,GAAZ/vB,YAAY,CAAElC,OAAO,cAAAiyB,sBAAA,uBAArBA,sBAAA,CAAuBN,IAAI,CAAC,IAAI,CAAC,cAAAK,sBAAA,cAAAA,sBAAA,GAAI,EAAE,QAChE,CAAC;IAED,IAAI,CAACvL,kBAAkB,CAACryB,WAAW,CAAC;;IAEpC;IACA;IACA;IACA,IAAI,CAAC0Q,QAAQ,CAAC;MACZ5C,YAAY;MACZ0B,YAAY,EAAExP,WAAW;MACzBya,aAAa,EAAEza,WAAW;MAC1B6N,OAAO,EAAE,KAAK;MACd0M,qBAAqB,EAAEva;IACzB,CAAC,CAAC;EACJ;EAEA6V,2BAA2BA,CAACooB,WAAkC,EAAQ;IACpEr5B,GAAG,CAACmI,KAAK,CAAC,uBAAuB,EAAEkxB,WAAW,CAAC;IAE/C,IAAI,CAACD,kBAAkB,CAAC,CAAC;IAEzB,IAAI,CAACvM,cAAc,CAAC,CAAC;IACrB,IAAI,CAACpM,eAAe,CAAC,CAAC;IACtB,IAAI,CAACiB,oBAAoB,CAAC,CAAC;IAE3B,IAAI,CAACzV,YAAY,iCAAA6T,MAAA,CAEbuZ,WAAW,CAACluB,MAAM,GAAG,CAAC,GAAGkuB,WAAW,CAACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAExD,CAAC;IAED,IAAI,CAAClL,kBAAkB,CAACryB,WAAW,CAAC;IAEpC,IAAI,CAAC0Q,QAAQ,CAAC;MACZ6J,qBAAqB,EAAE0jB,WAAW;MAClCzuB,YAAY,EAAE,EAAE;MAChB3B,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;EAEAwI,wBAAwBA,CAAA,EAAS;IAC/B,IAAQhO,cAAc,GAAK,IAAI,CAAC1C,KAAK,CAA7B0C,cAAc;IACtB,IAAIA,cAAc,EAAE;MAClB,IAAI,CAACqI,QAAQ,CAAC;QACZoL,kBAAkB,EAAE,IAAI;QACxB1K,qBAAqB,EAAE,CAAC;QACxBC,0BAA0B,EAAE,IAAI;QAChCC,mBAAmB,EAAEzO,gBAAgB,CAAC0O,eAAe,CAAC2sB;MACxD,CAAC,CAAC;IACJ,CAAC,MAAM;MACLt5B,GAAG,CAACyF,KAAK,CACP,iFACF,CAAC;IACH;EACF;EAEA+L,mBAAmBA,CACjB+nB,QAAgB,EAChBC,WAAyB,EACzBC,iBAAmD,EACnDC,cAAoC,EACpCC,WAAiC,EACjCC,oBAA6B,EAC7BC,oBAA6B,EACvB;IACN,IAAQp2B,cAAc,GAAK,IAAI,CAAC1C,KAAK,CAA7B0C,cAAc;IACtB,IAAIA,cAAc,EAAE;MAClBzD,GAAG,CAACqtB,IAAI,CACN,yBAAyB,EACzBkM,QAAQ,EACRC,WAAW,EACXC,iBAAiB,EACjBC,cAAc,EACdC,WAAW,EACXC,oBAAoB,EACpBC,oBACF,CAAC;MACD,IAAI,CAAC/tB,QAAQ,CAAC,MAAM;QAClB,IAAI,IAAI,CAACyH,UAAU,EAAE;UACnB,IAAI,CAACA,UAAU,CAACumB,aAAa,CAC3BP,QAAQ,EACRC,WAAW,EACXC,iBAAiB,EACjBC,cAAc,EACdC,WAAW,EACXC,oBAAoB,EACpBC,oBACF,CAAC;QACH;QACA,OAAO;UACLntB,mBAAmB,EAAEzO,gBAAgB,CAAC0O,eAAe,CAACC;QACxD,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,MAAM;MACL5M,GAAG,CAACyF,KAAK,CACP,4EACF,CAAC;IACH;EACF;;EAEA;AACF;AACA;EACEyV,uBAAuBA,CAAA,EAAS;IAC9Blb,GAAG,CAACmI,KAAK,CAAC,yBAAyB,CAAC;IAEpC,IAAI,CAAC2D,QAAQ,CAACiuB,MAAA,IAA6B;MAAA,IAA1BxxB,mBAAmB,GAAAwxB,MAAA,CAAnBxxB,mBAAmB;MAClC,IAAQ7H,YAAY,GAAK6H,mBAAmB,CAApC7H,YAAY;MACpB,IAAMs5B,eAAe,GAAGt5B,YAAY,CAAC0G,MAAM,CACzCf,CAAC,IAAIA,CAAC,CAACoB,QAAQ,CAAC0D,MAAM,GAAG,CAAC,IAAI9E,CAAC,CAACqB,MAClC,CAAC;MACD,IAAIsyB,eAAe,CAAC7uB,MAAM,KAAKzK,YAAY,CAACyK,MAAM,EAAE;QAClD,OAAO;UACLkM,mBAAmB,EAAE,IAAI;UACzB9O,mBAAmB,EAAA6B,aAAA,CAAAA,aAAA,KACd7B,mBAAmB;YACtB7H,YAAY,EAAEs5B;UAAe;QAEjC,CAAC;MACH;MACA,OAAO;QAAE3iB,mBAAmB,EAAE,IAAI;QAAE9O;MAAoB,CAAC;IAC3D,CAAC,CAAC;EACJ;EAEMiG,OAAOA,CAACyrB,WAAmB,EAAsC;IAAA,IAAAC,UAAA,GAAA/c,SAAA;MAAAgd,MAAA;IAAA,OAAA5V,iBAAA;MAAA,IAAA6V,WAAA;MAAA,IAApCC,WAAW,GAAAH,UAAA,CAAA/uB,MAAA,QAAA+uB,UAAA,QAAAr4B,SAAA,GAAAq4B,UAAA,MAAG,KAAK;MACpD,IAAAI,YAAA,GAGIH,MAAI,CAACrwB,KAAK;QAFiBywB,kBAAkB,GAAAD,YAAA,CAA/CniB,2BAA2B;QAC3BC,uBAAuB,GAAAkiB,YAAA,CAAvBliB,uBAAuB;MAEzB,IAAQtW,KAAK,GAAKq4B,MAAI,CAACp5B,KAAK,CAApBe,KAAK;MACb,IAAQgG,EAAE,GAAKhG,KAAK,CAAZgG,EAAE;MACV,IAAI,CAAChG,KAAK,CAAC04B,kBAAkB,EAAE;QAC7B;MACF;MAEA,IAAIP,WAAW,KAAK,EAAE,EAAE;QACtB;MACF;MACA,IAAMQ,cAAc,GAAG/7B,aAAa,CAACg8B,eAAe,CAClD54B,KAAK,CAACkF,OAAO,EACbuzB,kBACF,CAAC;MAED,IAAIE,cAAc,KAAK54B,SAAS,EAAE;QAChC;MACF;MAEA,IAAI84B,aAAa,IAAAP,WAAA,GAAGD,MAAI,CAACtnB,IAAI,cAAAunB,WAAA,uBAATA,WAAA,CAAWtwB,KAAK,CAACwd,SAAS,CAACmI,SAAS;MAExD,IAAIkL,aAAa,IAAI,IAAI,EAAE;QACzBA,aAAa,GAAG,CAAC;MACnB;MAEA,IAAMC,UAAU,GACdxiB,uBAAuB,KAAKzc,UAAU,CAACu0B,QAAQ,IAC/C9X,uBAAuB,KAAKzc,UAAU,CAACk/B,kBAAkB;MAC3D,IAAMC,YAAY,GAChB1iB,uBAAuB,KAAKzc,UAAU,CAAC0c,YAAY,IACnDD,uBAAuB,KAAKzc,UAAU,CAACk/B,kBAAkB;MAE3D,IAAI;QAAA,IAAAE,YAAA;QACF,IAAQ94B,SAAS,GAAKH,KAAK,CAAnBG,SAAS;QACjB,IAAM+4B,cAAc,GAAGhgC,UAAU,CAACw3B,iBAAiB,CAACiI,cAAc,CAAC12B,IAAI,CAAC;QAExE,IAAIkZ,QAAQ;QAEZ,QAAQ+d,cAAc;UACpB,KAAKhgC,UAAU,CAACigC,QAAQ,CAACC,IAAI;UAC7B,KAAKlgC,UAAU,CAACigC,QAAQ,CAACE,MAAM;YAAE;cAC/Ble,QAAQ,SAASnb,KAAK,CAAC0M,OAAO,CAC5BmsB,aAAa,EACbF,cAAc,EACd3yB,EAAE,CAACszB,SAAS,CAACD,MAAM,EACnBlB,WAAW,EACXa,YAAY,EACZF,UAAU,EACVP,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;cACD;YACF;UACA,KAAKr/B,UAAU,CAACigC,QAAQ,CAACI,QAAQ;YAAE;cACjC,IAAAC,qBAAA,GAAoBzgC,SAAS,CAAC0gC,cAAc,CAC1CzzB,EAAE,EACFmyB,WAAW,EACXh4B,SAAS,CAAC+b,QACZ,CAAC;gBAAAwd,sBAAA,GAAAlV,cAAA,CAAAgV,qBAAA;gBAJMG,SAAS,GAAAD,sBAAA;cAKhBve,QAAQ,SAASnb,KAAK,CAAC0M,OAAO,CAC5BmsB,aAAa,EACbF,cAAc,EACd3yB,EAAE,CAACszB,SAAS,CAACC,QAAQ,EACrBI,SAAS,EACT55B,SAAS,EACTA,SAAS,EACTw4B,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;cACD;YACF;UACA,KAAKr/B,UAAU,CAACigC,QAAQ,CAACS,OAAO;UAChC,KAAK1gC,UAAU,CAACigC,QAAQ,CAACU,GAAG;YAAE;cAC5B,IACE,CAAC3gC,UAAU,CAAC4gC,gBAAgB,CAACnB,cAAc,CAAC12B,IAAI,CAAC,IACjD,CAAC/I,UAAU,CAAC6gC,gBAAgB,CAACpB,cAAc,CAAC12B,IAAI,CAAC,EACjD;gBACA,IAAI+3B,UAAU,GAAGC,QAAQ,CAAC9B,WAAW,EAAE,EAAE,CAAC;gBAC1C,IAAIA,WAAW,KAAK,WAAW,EAAE;kBAC/B6B,UAAU,GAAGE,MAAM,CAACC,iBAAiB;gBACvC,CAAC,MAAM,IAAIhC,WAAW,KAAK,UAAU,EAAE;kBACrC6B,UAAU,GAAGE,MAAM,CAACE,iBAAiB;gBACvC;gBAEAjf,QAAQ,SAASnb,KAAK,CAAC0M,OAAO,CAC5BmsB,aAAa,EACbF,cAAc,EACd3yB,EAAE,CAACszB,SAAS,CAACe,MAAM,EACnBL,UAAU,EACVj6B,SAAS,EACTA,SAAS,EACTw4B,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;cACH,CAAC,MAAM;gBACLpd,QAAQ,SAASnb,KAAK,CAAC0M,OAAO,CAC5BmsB,aAAa,EACbF,cAAc,EACd3yB,EAAE,CAACszB,SAAS,CAACD,MAAM,EACnBlB,WAAW,EACXp4B,SAAS,EACTA,SAAS,EACTw4B,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;cACH;cACA;YACF;UACA;YAAS;cACPpd,QAAQ,SAASnb,KAAK,CAAC0M,OAAO,CAC5BmsB,aAAa,EACbF,cAAc,EACd3yB,EAAE,CAACszB,SAAS,CAACD,MAAM,EACnBhB,MAAI,CAACx3B,UAAU,CAACy5B,SAAS,CACvB3B,cAAc,CAAC12B,IAAI,EACnBk2B,WAAW,EACXh4B,SAAS,CAAC+b,QACZ,CAAC,EACDnc,SAAS,EACTA,SAAS,EACTw4B,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KACjB,CAAC;YACH;QACF;QAEA,CAAAU,YAAA,GAAAZ,MAAI,CAACtnB,IAAI,cAAAkoB,YAAA,eAATA,YAAA,CAAWsB,WAAW,CAACpf,QAAQ,CAAC;QAChCkd,MAAI,CAACruB,QAAQ,CAAC;UAAEoM,cAAc,EAAE;QAAG,CAAC,CAAC;MACvC,CAAC,CAAC,OAAO4N,CAAU,EAAE;QACnBqU,MAAI,CAACruB,QAAQ,CAAC;UAAEoM,cAAc,EAAE;QAAgB,CAAC,CAAC;MACpD;IAAC;EACH;EAEAxG,yBAAyBA,CAAA,EAAS;IAAA,IAAA4qB,gBAAA;IAChC,CAAAA,gBAAA,OAAI,CAAC/oB,UAAU,cAAA+oB,gBAAA,eAAfA,gBAAA,CAAiBC,cAAc,CAAC,CAAC;IACjC,IAAI,CAACzwB,QAAQ,CAAC;MAAEoL,kBAAkB,EAAE;IAAM,CAAC,CAAC;EAC9C;EAoBAtF,uBAAuBA,CAAA,EAAS;IAC9B,IAAI,CAAC9F,QAAQ,CAAC;MACZoL,kBAAkB,EAAE,KAAK;MACzB1K,qBAAqB,EAAE,GAAG;MAC1BE,mBAAmB,EAAEzO,gBAAgB,CAAC0O,eAAe,CAAC6vB;IACxD,CAAC,CAAC;EACJ;EAEA7qB,sBAAsBA,CAAA,EAAS;IAC7B,IAAI,CAAC7F,QAAQ,CAAC;MACZoL,kBAAkB,EAAE,KAAK;MACzB1K,qBAAqB,EAAE,CAAC;MACxBE,mBAAmB,EAAEzO,gBAAgB,CAAC0O,eAAe,CAAC8vB;IACxD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACEC,YAAYA,CAAC3V,MAA4B,EAAQ;IAC/C,IAAQjlB,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAI,CAACnI,oBAAoB,CAACmI,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC66B,WAAW,EAAE;MACtD,MAAM,IAAI9M,KAAK,CAAC,wCAAwC,CAAC;IAC3D;IAEA,IAAI,CAAC9c,OAAO,CAAC6R,GAAG,CAAC9iB,KAAK,CAAC6d,MAAM,CAACoH,MAAM,CAAC,CAAC,CAACvS,KAAK,CAACsR,CAAC,IAAI;MAChD,IAAI,CAACvqB,YAAY,CAACkpB,UAAU,CAACqB,CAAC,CAAC,EAAE;QAC/B9lB,GAAG,CAACyF,KAAK,CAAC,yBAAyB,EAAEshB,MAAM,EAAEjB,CAAC,CAAC;MACjD;IACF,CAAC,CAAC;EACJ;EAEA7L,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,IAAI,CAACpH,IAAI,IAAI,IAAI,EAAE;MACrB;IACF;IACA,IAAQjK,iBAAiB,GAAK,IAAI,CAAC7H,KAAK,CAAhC6H,iBAAiB;IACzB,IAAIA,iBAAiB,EAAE;MACrB,IAAQg0B,mBAAmB,GAAK,IAAI,CAAC77B,KAAK,CAAlC67B,mBAAmB;MAC3B,IAAI,CAAC/pB,IAAI,CAAC/G,QAAQ,CAAC;QAAE+wB,MAAM,EAAED;MAAoB,CAAC,CAAC;IACrD,CAAC,MAAM;MACL,IAAI,CAAC/pB,IAAI,CAAC/G,QAAQ,CAAC;QAAE+wB,MAAM,EAAE;MAAK,CAAC,CAAC;MACpC,IAAI,CAAC/wB,QAAQ,CAAC;QAAEnD,iBAAiB,EAAE;MAAK,CAAC,CAAC;IAC5C;EACF;EAEAywB,kBAAkBA,CAAA,EAA2B;IAAA,IAA1B5W,WAAW,GAAArF,SAAA,CAAAhS,MAAA,QAAAgS,SAAA,QAAAtb,SAAA,GAAAsb,SAAA,MAAG,IAAI;IACnC,IAAI,CAAC,IAAI,CAACtK,IAAI,EAAE;MACd;IACF;IAEA,IAAI,CAACA,IAAI,CAACkV,mBAAmB,CAAC,CAAC;IAC/B,IAAI,CAAClV,IAAI,CAACmV,YAAY,CACpB;MAAEmC,IAAI,EAAE,CAAC;MAAElC,GAAG,EAAE,CAAC;MAAE6U,SAAS,EAAE,CAAC;MAAE1S,UAAU,EAAE;IAAE,CAAC,EAChD5H,WACF,CAAC;EACH;EAEArH,eAAeA,CAAA,EAAS;IACtB,IAAI,CAAC,IAAI,CAACtI,IAAI,EAAE;MACd;IACF;IACA,IAAekqB,aAAa,GAAK,IAAI,CAA7BjzB,KAAK;IACb,IAAekzB,SAAS,GAAK,IAAI,CAACnqB,IAAI,CAA9B/I,KAAK;IACb,IAAQmzB,aAAa,GAAK,IAAI,CAACl8B,KAAK,CAA5Bk8B,aAAa;IAErBA,aAAa,CAACF,aAAa,EAAEC,SAAS,CAAC;EACzC;EAEA9qB,mBAAmBA,CAAA,EAAS;IAAA,IAAAgrB,YAAA;IAC1B,IAAI,CAACpxB,QAAQ,CAAC;MACZ6L,iBAAiB,EAAE;IACrB,CAAC,CAAC;IACF,CAAAulB,YAAA,OAAI,CAACrqB,IAAI,cAAAqqB,YAAA,eAATA,YAAA,CAAWxT,KAAK,CAAC,CAAC,CAAC,CAAC;EACtB;EAEAyT,gCAAgCA,CAAC5J,YAAoB,EAAQ;IAC3D,IAAI,CAACznB,QAAQ,CAAC;MACZ8L,0BAA0B,EAAE,IAAI;MAChCC,sBAAsB,EAAE0b;IAC1B,CAAC,CAAC;EACJ;EAEAphB,iCAAiCA,CAAA,EAAS;IACxC,IAAI,CAACrG,QAAQ,CAAC;MACZ8L,0BAA0B,EAAE;IAC9B,CAAC,CAAC;EACJ;EAEAxF,qBAAqBA,CAAA,EAAY;IAAA,IAAAgrB,kBAAA;IAC/B,IAAAC,aAAA,GAAwC,IAAI,CAACvzB,KAAK;MAA1CyM,OAAO,GAAA8mB,aAAA,CAAP9mB,OAAO;MAAES,kBAAkB,GAAAqmB,aAAA,CAAlBrmB,kBAAkB;IACnC9b,aAAa,CAACqb,OAAO,CAAC;IACtBrb,aAAa,CAAC8b,kBAAkB,CAAC;IACjC,IAAMsmB,QAAQ,IAAAF,kBAAA,GAAG,IAAI,CAACvhB,WAAW,cAAAuhB,kBAAA,uBAAhBA,kBAAA,CAAkB7U,qBAAqB,CAAC,CAAC;IAC1D,IAAMgV,YAAY,GAAG,EAAE;IACvBriC,aAAa,CAACoiC,QAAQ,CAAC;IACvB,IACEE,kBAAkB,GAKhBjnB,OAAO,CALTinB,kBAAkB;MAClBC,WAAW,GAITlnB,OAAO,CAJTknB,WAAW;MACXhG,eAAe,GAGblhB,OAAO,CAHTkhB,eAAe;MACfI,KAAK,GAEHthB,OAAO,CAFTshB,KAAK;MACL6F,oBAAoB,GAClBnnB,OAAO,CADTmnB,oBAAoB;IAEtB,IAAMC,OAAO,GAAGF,WAAW,CAAC/jB,GAAG,CAAC1C,kBAAkB,CAAC;IACnD,IAAMgW,WAAW,GAAGyK,eAAe,CAAC/d,GAAG,CAAC1C,kBAAkB,CAAC;IAE3D9b,aAAa,CAACyiC,OAAO,CAAC;IACtBziC,aAAa,CAAC8xB,WAAW,CAAC;IAE1B,IAAM7C,IAAI,GACRmT,QAAQ,CAACnT,IAAI,GACbruB,KAAK,CAAC6hC,OAAO,GAAG3Q,WAAW,GAAG,CAAC,EAAEuQ,YAAY,EAAE1F,KAAK,GAAG0F,YAAY,CAAC;IAEtE,OAAO;MACLtV,GAAG,EAAEqV,QAAQ,CAACrV,GAAG,GAAG,CAACyV,oBAAoB,GAAG,CAAC,IAAIF,kBAAkB;MACnErT,IAAI,EACFmT,QAAQ,CAACnT,IAAI,GACbruB,KAAK,CAAC6hC,OAAO,GAAG3Q,WAAW,GAAG,CAAC,EAAEuQ,YAAY,EAAE1F,KAAK,GAAG0F,YAAY,CAAC;MACtEK,MAAM,EAAEN,QAAQ,CAACrV,GAAG,GAAGyV,oBAAoB,GAAGF,kBAAkB;MAChEK,KAAK,EACHP,QAAQ,CAACnT,IAAI,GACbruB,KAAK,CAAC6hC,OAAO,GAAG3Q,WAAW,GAAG,CAAC,EAAEuQ,YAAY,EAAE1F,KAAK,GAAG0F,YAAY,CAAC,GACpE,CAAC;MACH1F,KAAK,EAAE,CAAC;MACRvP,MAAM,EAAEkV,kBAAkB;MAC1BM,CAAC,EAAE3T,IAAI;MACP4T,CAAC,EAAET,QAAQ,CAACrV,GAAG;MACf+V,MAAM,EAAEA,CAAA,KAAM;QACZ,MAAM,IAAInO,KAAK,CAAC,iBAAiB,CAAC;MACpC;IACF,CAAC;EACH;EAgHAve,oCAAoCA,CAAA,EAAS;IAC3C,IAAiB2sB,SAAS,GAAK,IAAI,CAACn0B,KAAK,CAAjCkO,OAAO;IACf,IAAI,CAACzG,cAAc,CAAC0sB,SAAS,CAAC;EAChC;EAEA1sB,cAAcA,CAAC0sB,SAAiB,EAAQ;IACtC,IAAQn8B,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAQulB,QAAQ,GAAKvlB,KAAK,CAAlBulB,QAAQ;IAChB,IAAI,CAACvb,QAAQ,CAAC;MAAEkM,OAAO,EAAEimB;IAAU,CAAC,CAAC;IACrC,IAAIA,SAAS,KAAK,EAAE,EAAE;MACpB,IAAI,CAACnyB,QAAQ,CAAC;QAAEmM,YAAY,EAAE,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC,CAAC;MACvD;IACF;IACA,IAAMgmB,MAAM,GAAGnC,QAAQ,CAACkC,SAAS,EAAE,EAAE,CAAC;IACtC,IAAIC,MAAM,GAAG7W,QAAQ,IAAI6W,MAAM,GAAG,CAAC7W,QAAQ,EAAE;MAC3C,IAAI,CAACvb,QAAQ,CAAC;QAAEmM,YAAY,EAAE;MAAoB,CAAC,CAAC;IACtD,CAAC,MAAM,IAAIimB,MAAM,KAAK,CAAC,EAAE;MAAA,IAAAC,YAAA;MACvB,IAAI,CAACryB,QAAQ,CAAC;QAAEmM,YAAY,EAAE,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC,CAAC;MACvD,CAAAimB,YAAA,OAAI,CAACtrB,IAAI,cAAAsrB,YAAA,eAATA,YAAA,CAAW9B,WAAW,CAAC,CAAC,CAAC;IAC3B,CAAC,MAAM,IAAI6B,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAE,YAAA;MACrB,IAAI,CAACtyB,QAAQ,CAAC;QAAEmM,YAAY,EAAE,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC,CAAC;MACvD,CAAAkmB,YAAA,OAAI,CAACvrB,IAAI,cAAAurB,YAAA,eAATA,YAAA,CAAW/B,WAAW,CAAC6B,MAAM,GAAG7W,QAAQ,CAAC;IAC3C,CAAC,MAAM;MAAA,IAAAgX,YAAA;MACL,CAAAA,YAAA,OAAI,CAACxrB,IAAI,cAAAwrB,YAAA,eAATA,YAAA,CAAWhC,WAAW,CAAC6B,MAAM,GAAG,CAAC,CAAC;MAClC,IAAI,CAACpyB,QAAQ,CAAC;QAAEmM,YAAY,EAAE,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC,CAAC;IACzD;EACF;EAEA7F,qCAAqCA,CACnCiT,KAAoC,EAC9B;IACN,IAAM2Y,SAAS,GAAG3Y,KAAK,CAACgZ,MAAM,CAAC9gB,KAAK;IACpC,IAAI,CAACjM,cAAc,CAAC0sB,SAAS,CAAC;EAChC;EAEAM,gBAAgBA,CACdzT,YAA0B,EAC1BvU,OAAoB,EACpBzU,KAAoB,EACT;IACX,IACE07B,kBAAkB,GAKhBjnB,OAAO,CALTinB,kBAAkB;MAClBE,oBAAoB,GAIlBnnB,OAAO,CAJTmnB,oBAAoB;MACpBD,WAAW,GAGTlnB,OAAO,CAHTknB,WAAW;MACXhG,eAAe,GAEblhB,OAAO,CAFTkhB,eAAe;MACfI,KAAK,GACHthB,OAAO,CADTshB,KAAK;IAEP,IAAM8F,OAAO,GAAGF,WAAW,CAAC/jB,GAAG,CAACoR,YAAY,CAAC;IAC7C,IAAMkC,WAAW,GAAGyK,eAAe,CAAC/d,GAAG,CAACoR,YAAY,CAAC;IAErD,IAAI6S,OAAO,IAAI,IAAI,IAAI3Q,WAAW,IAAI,IAAI,EAAE;MAC1C,OAAO,IAAI;IACb;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAMwR,WAAW,GAAG7jB,IAAI,CAACnZ,GAAG,CAAC,CAAC,EAAEm8B,OAAO,CAAC;IACxC,IAAIc,YAAY,GAAGzR,WAAW;IAC9B,IAAI2Q,OAAO,GAAG3Q,WAAW,GAAG6K,KAAK,EAAE;MACjC;MACA4G,YAAY,GAAG5G,KAAK,GAAG8F,OAAO;IAChC,CAAC,MAAM,IAAIA,OAAO,GAAG,CAAC,EAAE;MACtB;MACAc,YAAY,GAAGzR,WAAW,GAAGrS,IAAI,CAAC+jB,GAAG,CAACf,OAAO,CAAC;IAChD;IAEA,IAAM7wB,YAA2B,GAAG;MAClCC,QAAQ,EAAE,UAAU;MACpBkb,GAAG,EAAE,CAACyV,oBAAoB,GAAG,CAAC,IAAIF,kBAAkB;MACpDrT,IAAI,EAAEqU,WAAW;MACjB3G,KAAK,EAAE4G,YAAY;MACnBnW,MAAM,EAAEkV,kBAAkB;MAC1BxwB,aAAa,EAAE;IACjB,CAAC;;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAM2xB,gBAAiC,GAAG;MACxCC,WAAW,EAAE,CAAC;MACdC,YAAY,EAAErB,kBAAkB;MAChCjV,qBAAqB,EAAE,IAAI,CAACnW;IAC9B,CAAC;IAED,IAAMnF,aAA4B,GAAG;MACnCC,SAAS,EAAE,QAAQ;MACnBC,SAAS,EAAE;QACTC,IAAI,EAAE;UACJC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK;QAC5B;MACF;IACF,CAAC;IAED,IAAM+P,WAAW,GAAG,IAAI,CAACC,cAAc,CAACyN,YAAY,CAAC;IACrD,IAAI1N,WAAW,IAAI,IAAI,EAAE,OAAO,IAAI;IAEpC,IAAM/b,MAAM,GAAGS,KAAK,CAACkF,OAAO,CAACoW,WAAW,CAAC;IACzC,IAAI/b,MAAM,IAAI,IAAI,EAAE,OAAO,IAAI;IAE/B,oBACE1B,IAAA;MAAK2N,KAAK,EAAER,YAAa;MAAAS,QAAA,eACvB5N,IAAA,CAACzG,OAAO;QAEN4lC,OAAO,EAAE,GAAI;QACbC,WAAW;QACXr8B,OAAO,EAAEuK,aAAc;QACvBO,GAAG,EAAE,IAAI,CAACC,gBAAiB;QAC3BuxB,eAAe,EAAEL,gBAAiB;QAClCM,QAAQ,EAAEA,CAAA,KAAM;UACd,IAAI,CAACnzB,QAAQ,CAAC;YAAEkL,kBAAkB,EAAE;UAAK,CAAC,CAAC;QAC7C,CAAE;QAAAzJ,QAAA,eAEF5N,IAAA,CAACnC,gBAAgB;UACfsE,KAAK,EAAEA,KAAM;UACbT,MAAM,EAAEA,MAAO;UACf69B,YAAY,EAAEA,CAAA,KAAM;YAAA,IAAAC,aAAA;YAClB,CAAAA,aAAA,OAAI,CAACxJ,OAAO,cAAAwJ,aAAA,eAAZA,aAAA,CAAc1b,MAAM,CAAC,CAAC;UACxB;QAAE,CACH;MAAC,GAhBGpiB,MAAM,CAAC8F,IAiBL;IAAC,CACP,CAAC;EAEV;EAEAmL,wCAAwCA,CAACmN,UAAsB,EAAQ;IAAA,IAAA2f,YAAA;IACrE,IAAQt9B,KAAK,GAAK,IAAI,CAACf,KAAK,CAApBe,KAAK;IACb,IAAM2tB,SAAS,IAAA2P,YAAA,GAAG,IAAI,CAACvsB,IAAI,cAAAusB,YAAA,uBAATA,YAAA,CAAWt1B,KAAK,CAACwd,SAAS,CAACmI,SAAS;IACtD,IAAA4P,aAAA,GAGI,IAAI,CAACv1B,KAAK;MAFiBw1B,cAAc,GAAAD,aAAA,CAA3ClnB,2BAA2B;MAC3B7J,wBAAwB,GAAA+wB,aAAA,CAAxB/wB,wBAAwB;IAG1B,IAAImhB,SAAS,IAAI,IAAI,EAAE;MACrB,IAAMtpB,KAAK,GAAGrE,KAAK,CAACqU,oBAAoB,CAACsJ,UAAU,CAAC;MACpD,IAAMpe,MAAM,GAAG3C,aAAa,CAACg8B,eAAe,CAAC54B,KAAK,CAACkF,OAAO,EAAEyY,UAAU,CAAC;MACvE,IAAM8f,UAAU,GAAG7gC,aAAa,CAACg8B,eAAe,CAC9C54B,KAAK,CAACkF,OAAO,EACbs4B,cACF,CAAC;MACD,IAAIn5B,KAAK,IAAI,IAAI,IAAI9E,MAAM,IAAI,IAAI,EAAE;QACnC;MACF;MACA,IAAMmc,KAAK,GAAG1b,KAAK,CAAC2b,YAAY,CAACtX,KAAK,EAAEspB,SAAS,CAAC;MAClD,IAAM1Q,IAAI,GAAGrgB,aAAa,CAAC8gC,kBAAkB,CAAChiB,KAAK,EAAEnc,MAAM,CAAC0C,IAAI,CAAC;;MAEjE;MACA,IAAIuK,wBAAwB,IAAIjN,MAAM,CAAC0C,IAAI,MAAKw7B,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEx7B,IAAI,GAAE;QAChE,IAAI,CAAC+H,QAAQ,CAAC;UACZqM,2BAA2B,EAAEsH,UAAU;UACvCvH,cAAc,EAAE;QAClB,CAAC,CAAC;MACJ,CAAC,MAAM;QACL;QACA,IAAI,CAACpM,QAAQ,CAAC;UACZqM,2BAA2B,EAAEsH,UAAU;UACvCpR,SAAS,EAAE0Q,IAAI;UACf7G,cAAc,EAAE,EAAE;UAClB5J,wBAAwB,EAAE;QAC5B,CAAC,CAAC;MACJ;IACF;IACA,IAAI,CAACxC,QAAQ,CAAC;MACZqM,2BAA2B,EAAEsH,UAAU;MACvCvH,cAAc,EAAE;IAClB,CAAC,CAAC;EACJ;EAEA3F,oCAAoCA,CAACiL,KAAsB,EAAQ;IACjE,IAAI,CAAC1R,QAAQ,CAAC;MAAEsM,uBAAuB,EAAEoF,KAAK;MAAEtF,cAAc,EAAE;IAAG,CAAC,CAAC;EACvE;EAWAzF,wBAAwBA,CAAC4nB,WAAqB,EAAQ;IACpD,IAAQhsB,SAAS,GAAK,IAAI,CAACvE,KAAK,CAAxBuE,SAAS;IACjB,IAAI,CAACG,OAAO,CAACH,SAAS,EAAEgsB,WAAW,CAAC;EACtC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEoF,iBAAiBA,CACflpB,OAAgC,EAChC5P,gBAA0C,EAC1C2P,sBAA2C,EAC3CxN,YAAoC,EACpCC,eAA0C,EACrB;IAAA,IAAA22B,YAAA;IACrB,IAAInpB,OAAO,IAAI,IAAI,IAAID,sBAAsB,IAAI,IAAI,EAAE;MACrD,OAAO,IAAI;IACb;IAEA,IAAMyT,WAAW,GAAG,IAAI,CAAC3N,cAAc,CAAC,CAAC;IACzC,IAAI2N,WAAW,IAAI,IAAI,EAAE;MACvB,OAAO,IAAI;IACb;IAEA,IAAM4V,oBAAoB,GAAGh5B,gBAAgB,CAACi5B,yBAAyB,CACrEtpB,sBAAsB,EACtByT,WAAW,EACXxT,OACF,CAAC;IACD,IAAIopB,oBAAoB,IAAI,IAAI,EAAE;MAChC,OAAO,IAAI;IACb;IAEA,IAAME,UAAU,GAAGllB,IAAI,CAACC,GAAG,CACzBD,IAAI,CAACnZ,GAAG,CAACX,QAAQ,CAACi/B,WAAW,EAAEnlB,IAAI,CAAColB,KAAK,CAACxpB,OAAO,CAAC8Q,QAAQ,GAAG,GAAG,CAAC,CAAC,EAClExmB,QAAQ,CAACm/B,WACX,CAAC;IACD,IACElC,CAAC,GAIC6B,oBAAoB,CAJtB7B,CAAC;MACDC,CAAC,GAGC4B,oBAAoB,CAHtB5B,CAAC;MACMkC,UAAU,GAEfN,oBAAoB,CAFtB9H,KAAK;MACGqI,WAAW,GACjBP,oBAAoB,CADtBrX,MAAM;IAER,IAAQuP,KAAK,GAAKthB,OAAO,CAAjBshB,KAAK;IACb,IAAMvqB,KAAK,GAAG;MACZ2a,GAAG,EAAE8V,CAAC;MACN5T,IAAI,EAAE2T,CAAC;MACPqC,QAAQ,EAAExlB,IAAI,CAACC,GAAG,CAACqlB,UAAU,EAAEpI,KAAK,GAAGiG,CAAC,CAAC;MAAE;MAC3CxV,MAAM,EAAE4X;IACV,CAAC;IACD,IAAI1iB,KAAK,GAAG,EAAE;IACd,IAAI+X,OAAO,GAAG,IAAI;IAClB,IAAMnY,WAAW,GAAG,IAAI,CAACC,cAAc,CAAC/G,sBAAsB,CAAC;IAC/Dpb,aAAa,CAACkiB,WAAW,CAAC;IAC1B,IAAM4C,WAAW,GAAGlX,YAAY,CAAC4Q,GAAG,CAAC0D,WAAW,CAAC;IACjD,IAAMgjB,cAAc,GAAGr3B,eAAe,CAAC2Q,GAAG,CAAC0D,WAAW,CAAC;IACvD,IAAI4C,WAAW,IAAI,IAAI,EAAE;MACvBxC,KAAK,GAAGwC,WAAW,CAACjB,IAAI;MACxBwW,OAAO,GAAGvV,WAAW,CAAC5Y,MAAM,IAAI,IAAI;IACtC;IACA,IAAMi5B,aAAa,GAAGv3B,YAAY,CAACwL,IAAI,KAAK,CAAC,IAAIvL,eAAe,CAACuL,IAAI,KAAK,CAAC;IAC3E,IAAMgsB,wBAAwB,GAC5B35B,gBAAgB,CAAC45B,kCAAkC,CACjDjqB,sBAAsB,EACtByT,WAAW,EACXxT,OACF,CAAC,IAAI,IAAI;IACX,oBACE5W,IAAA,CAACzD,gBAAgB;MACfsR,GAAG,EAAE,IAAI,CAACkG,cAAe;MACzBpG,KAAK,EAAEA,KAAM;MACba,SAAS,EAAE5V,UAAU,CAAC;QACpBkN,KAAK,EAAE,CAAC8vB,OAAO;QACfiL,MAAM,EAAEhjB,KAAK,KAAK,EAAE,IAAI4iB,cAAc,IAAI,IAAI;QAC9C,sBAAsB,EAAEC;MAC1B,CAAC,CAAE;MACHC,wBAAwB,EAAEA,wBAAyB;MACnDG,mBAAmB,EAAEL,cAAc,IAAI,IAAK;MAC5CM,0BAA0B,EAAEA,CAAA,KAAM;QAChC,IAAI,CAAC50B,QAAQ,CAAC;UAAE2K,mBAAmB,EAAEH;QAAuB,CAAC,CAAC;MAChE,CAAE;MAEFrR,QAAQ,EAAE,IAAI,CAACoK,qBAAsB;MACrC7M,MAAM,EAAE,IAAI,CAAC8M,mBAAoB;MACjCqxB,KAAK,EAAE,IAAI,CAACpxB,kBAAmB;MAC/BqxB,aAAa,GAAAlB,YAAA,GAAE,IAAI,CAAC7sB,IAAI,cAAA6sB,YAAA,uBAATA,YAAA,CAAWmB,iBAAkB;MAC5ChB,UAAU,EAAEA,UAAW;MACvBriB,KAAK,EAAEA;IAAM,GANRlH,sBAON,CAAC;EAEN;EAEAwqB,MAAMA,CAAA,EAAwB;IAAA,IAAAC,sBAAA;MAAAC,sBAAA;MAAAC,MAAA;MAAAC,YAAA;MAAAC,YAAA;IAC5B,IAAAC,YAAA,GAgBI,IAAI,CAACrgC,KAAK;MAfZwM,QAAQ,GAAA6zB,YAAA,CAAR7zB,QAAQ;MACRnE,aAAa,GAAAg4B,YAAA,CAAbh4B,aAAa;MACbi4B,iBAAiB,GAAAD,YAAA,CAAjBC,iBAAiB;MACjBz4B,iBAAiB,GAAAw4B,YAAA,CAAjBx4B,iBAAiB;MACjB04B,eAAe,GAAAF,YAAA,CAAfE,eAAe;MACfC,cAAc,GAAAH,YAAA,CAAdG,cAAc;MACdz/B,KAAK,GAAAs/B,YAAA,CAALt/B,KAAK;MACLqF,IAAI,GAAAi6B,YAAA,CAAJj6B,IAAI;MACJq6B,uBAAuB,GAAAJ,YAAA,CAAvBI,uBAAuB;MACvB72B,kBAAkB,GAAAy2B,YAAA,CAAlBz2B,kBAAkB;MAClB6O,gBAAgB,GAAA4nB,YAAA,CAAhB5nB,gBAAgB;MAChBioB,wBAAwB,GAAAL,YAAA,CAAxBK,wBAAwB;MACxBh+B,cAAc,GAAA29B,YAAA,CAAd39B,cAAc;MACdquB,aAAa,GAAAsP,YAAA,CAAbtP,aAAa;MACbxsB,qBAAqB,GAAA87B,YAAA,CAArB97B,qBAAqB;IAEvB,IAAQo8B,yBAAyB,GAAK,IAAI,CAACnjB,OAAO,CAA1CmjB,yBAAyB;IACjC,IAAAC,aAAA,GA6EI,IAAI,CAAC73B,KAAK;MA5EZnD,gBAAgB,GAAAg7B,aAAA,CAAhBh7B,gBAAgB;MAChB4P,OAAO,GAAAorB,aAAA,CAAPprB,OAAO;MACPhT,gBAAgB,GAAAo+B,aAAA,CAAhBp+B,gBAAgB;MAChB4R,oBAAoB,GAAAwsB,aAAA,CAApBxsB,oBAAoB;MACpBhM,WAAW,GAAAw4B,aAAA,CAAXx4B,WAAW;MACXgO,OAAO,GAAAwqB,aAAA,CAAPxqB,OAAO;MACPL,aAAa,GAAA6qB,aAAA,CAAb7qB,aAAa;MACbR,sBAAsB,GAAAqrB,aAAA,CAAtBrrB,sBAAsB;MACtBS,WAAW,GAAA4qB,aAAA,CAAX5qB,WAAW;MACXlO,oBAAoB,GAAA84B,aAAA,CAApB94B,oBAAoB;MACpBkD,mBAAmB,GAAA41B,aAAA,CAAnB51B,mBAAmB;MACnBG,kBAAkB,GAAAy1B,aAAA,CAAlBz1B,kBAAkB;MAClBC,iBAAiB,GAAAw1B,aAAA,CAAjBx1B,iBAAiB;MACjB6K,kBAAkB,GAAA2qB,aAAA,CAAlB3qB,kBAAkB;MAClBL,mBAAmB,GAAAgrB,aAAA,CAAnBhrB,mBAAmB;MACnBF,mBAAmB,GAAAkrB,aAAA,CAAnBlrB,mBAAmB;MACnBC,uBAAuB,GAAAirB,aAAA,CAAvBjrB,uBAAuB;MACvB/N,iBAAiB,GAAAg5B,aAAA,CAAjBh5B,iBAAiB;MACjBG,YAAY,GAAA64B,aAAA,CAAZ74B,YAAY;MACZC,eAAe,GAAA44B,aAAA,CAAf54B,eAAe;MACfM,YAAY,GAAAs4B,aAAA,CAAZt4B,YAAY;MACZsM,qBAAqB,GAAAgsB,aAAA,CAArBhsB,qBAAqB;MAErB/K,YAAY,GAAA+2B,aAAA,CAAZ/2B,YAAY;MACZ4K,SAAS,GAAAmsB,aAAA,CAATnsB,SAAS;MAETvT,SAAS,GAAA0/B,aAAA,CAAT1/B,SAAS;MACT+S,kBAAkB,GAAA2sB,aAAA,CAAlB3sB,kBAAkB;MAClB1I,wBAAwB,GAAAq1B,aAAA,CAAxBr1B,wBAAwB;MACxB2K,0BAA0B,GAAA0qB,aAAA,CAA1B1qB,0BAA0B;MAC1B1K,sBAAsB,GAAAo1B,aAAA,CAAtBp1B,sBAAsB;MAEtB2I,kBAAkB,GAAAysB,aAAA,CAAlBzsB,kBAAkB;MAElBlM,KAAK,GAAA24B,aAAA,CAAL34B,KAAK;MACLC,OAAO,GAAA04B,aAAA,CAAP14B,OAAO;MACP2N,aAAa,GAAA+qB,aAAA,CAAb/qB,aAAa;MAEbC,aAAa,GAAA8qB,aAAA,CAAb9qB,aAAa;MACbK,kBAAkB,GAAAyqB,aAAA,CAAlBzqB,kBAAkB;MAClBxK,mBAAmB,GAAAi1B,aAAA,CAAnBj1B,mBAAmB;MACnBF,qBAAqB,GAAAm1B,aAAA,CAArBn1B,qBAAqB;MACrBC,0BAA0B,GAAAk1B,aAAA,CAA1Bl1B,0BAA0B;MAE1BjJ,aAAa,GAAAm+B,aAAA,CAAbn+B,aAAa;MACbkI,WAAW,GAAAi2B,aAAA,CAAXj2B,WAAW;MACXC,qBAAqB,GAAAg2B,aAAA,CAArBh2B,qBAAqB;MACrBC,mBAAmB,GAAA+1B,aAAA,CAAnB/1B,mBAAmB;MAEnBrD,mBAAmB,GAAAo5B,aAAA,CAAnBp5B,mBAAmB;MACnB8O,mBAAmB,GAAAsqB,aAAA,CAAnBtqB,mBAAmB;MACnBnO,YAAY,GAAAy4B,aAAA,CAAZz4B,YAAY;MACZoO,WAAW,GAAAqqB,aAAA,CAAXrqB,WAAW;MACXE,kBAAkB,GAAAmqB,aAAA,CAAlBnqB,kBAAkB;MAClBC,gBAAgB,GAAAkqB,aAAA,CAAhBlqB,gBAAgB;MAChBF,eAAe,GAAAoqB,aAAA,CAAfpqB,eAAe;MACf3C,iBAAiB,GAAA+sB,aAAA,CAAjB/sB,iBAAiB;MACjBP,cAAc,GAAAstB,aAAA,CAAdttB,cAAc;MACdqD,YAAY,GAAAiqB,aAAA,CAAZjqB,YAAY;MACZ7B,aAAa,GAAA8rB,aAAA,CAAb9rB,aAAa;MACbC,kBAAkB,GAAA6rB,aAAA,CAAlB7rB,kBAAkB;MAClB6B,iBAAiB,GAAAgqB,aAAA,CAAjBhqB,iBAAiB;MACjBC,0BAA0B,GAAA+pB,aAAA,CAA1B/pB,0BAA0B;MAC1BC,sBAAsB,GAAA8pB,aAAA,CAAtB9pB,sBAAsB;MACtBC,YAAY,GAAA6pB,aAAA,CAAZ7pB,YAAY;MACZjL,0BAA0B,GAAA80B,aAAA,CAA1B90B,0BAA0B;MAC1Be,sBAAsB,GAAA+zB,aAAA,CAAtB/zB,sBAAsB;MACtBK,iBAAiB,GAAA0zB,aAAA,CAAjB1zB,iBAAiB;MACjB8J,WAAW,GAAA4pB,aAAA,CAAX5pB,WAAW;MACXC,OAAO,GAAA2pB,aAAA,CAAP3pB,OAAO;MACPC,YAAY,GAAA0pB,aAAA,CAAZ1pB,YAAY;MACZC,cAAc,GAAAypB,aAAA,CAAdzpB,cAAc;MACdC,2BAA2B,GAAAwpB,aAAA,CAA3BxpB,2BAA2B;MAC3B9J,SAAS,GAAAszB,aAAA,CAATtzB,SAAS;MACT+J,uBAAuB,GAAAupB,aAAA,CAAvBvpB,uBAAuB;MACvB/C,eAAe,GAAAssB,aAAA,CAAftsB,eAAe;IAEjB,IAAI,CAAC8B,OAAO,EAAE;MACZ,OAAO,IAAI;IACb;IAEA,IAAMzO,KAAK,GAAG,IAAI,CAACgU,QAAQ,CAAC,CAAC;IAC7B,IAA4BklB,wBAAwB,GAAKl5B,KAAK,CAAtD80B,kBAAkB;IAE1B,IAAMp2B,MAAM,GAAG,IAAI,CAACy6B,eAAe,CACjCz4B,aAAa,EACbN,YAAY,EACZC,eAAe,EACfM,YACF,CAAC;IAED,IAAMzC,gBAAgB,GAAGD,gBAAgB,CAAC8gB,mBAAmB,CAAC,CAAC;IAC/D,IAAMqa,aAAa,GAAG,IAAI,CAACrlB,sBAAsB,CAC/C3a,KAAK,EACL4G,KAAK,EACLC,iBAAiB,EACjBpF,gBAAgB,EAChBqF,iBAAiB,EACjBC,oBAAoB,EACpBC,YAAY,EACZC,eAAe,EACfC,KAAK,EACLC,OAAO,EACPC,YAAY,EACZC,WACF,CAAC;IACD,IAAM8e,GAAG,GAAG1R,OAAO,GAAGA,OAAO,CAAC0R,GAAG,GAAG,CAAC;IACrC,IAAM2V,MAAM,GAAGrnB,OAAO,GAAGA,OAAO,CAAC6d,cAAc,GAAG,CAAC;IACnD,IAAIjK,IAAI,GAAG,IAAI;IACf,IAAI0T,KAAK,GAAG,IAAI;IAChB,IAAI2D,uBAAuB,EAAE;MAC3BrX,IAAI,GAAG5T,OAAO,GAAGA,OAAO,CAAC4T,IAAI,GAAG,CAAC;MACjC0T,KAAK,GAAGtnB,OAAO,GAAGA,OAAO,CAACsnB,KAAK,GAAG,CAAC;IACrC;IACA,IAAMhS,SAAS,GACbtV,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACshB,KAAK,GAAG,CAAC,IAAIthB,OAAO,CAAC+R,MAAM,GAAG,CAAC;IAC5D,IAAMgQ,QAAQ,GAAG,EAAAyI,sBAAA,GAAC73B,YAAY,aAAZA,YAAY,gBAAA83B,sBAAA,GAAZ93B,YAAY,CAAElC,OAAO,cAAAg6B,sBAAA,uBAArBA,sBAAA,CAAuB71B,MAAM,cAAA41B,sBAAA,cAAAA,sBAAA,GAAI,CAAC,IAAI,CAAC;IAEzD,IAAMgB,UAAU,GAAGx+B,gBAAgB,GAC/B,IAAI,CAACk8B,iBAAiB,CACpBlpB,OAAO,EACP5P,gBAAgB,EAChB2P,sBAAsB,EACtBxN,YAAY,EACZC,eACF,CAAC,GACD,IAAI;IAER,IAAIi5B,cAAc,GAAG,IAAI;IACzB,IAAIjrB,WAAW,IAAI,IAAI,EAAE;MACvB,IAAMkrB,aAAa,gBACjBliC,KAAA;QAAKoO,SAAS,EAAC,0BAA0B;QAAAZ,QAAA,gBACvC5N,IAAA;UACEwO,SAAS,EAAE5V,UAAU,CAAC,8BAA8B,EAAE;YACpD2pC,IAAI,EAAEn2B;UACR,CAAC,CAAE;UAAAwB,QAAA,EAEFwJ;QAAW,CACT,CAAC,eACNhX,KAAA;UACEgE,IAAI,EAAC,QAAQ;UACbo+B,OAAO,EAAE,IAAI,CAAC3yB,YAAa;UAC3BrB,SAAS,EAAE5V,UAAU,CAAC,sBAAsB,EAAE;YAC5C2pC,IAAI,EAAEh2B;UACR,CAAC,CAAE;UAAAqB,QAAA,gBAEH5N,IAAA,CAAChH,eAAe;YAACuL,IAAI,EAAEhK,OAAQ;YAACkoC,SAAS,EAAC;UAAQ,CAAE,CAAC,UAEvD;QAAA,CAAQ,CAAC;MAAA,CACN,CACN;MACD,IAAMC,KAAK,GAAG9rB,OAAO,GAAGA,OAAO,CAAC8rB,KAAK,GAAG,CAAC;MACzCL,cAAc,gBACZriC,IAAA;QACEwO,SAAS,EAAC,mBAAmB;QAC7Bb,KAAK,EAAEnB,iBAAiB,GAAG;UAAE8b,GAAG,EAAEoa;QAAM,CAAC,GAAG,CAAC,CAAE;QAAA90B,QAAA,EAE9C00B;MAAa,CACX,CACN;IACH;IAEA,IAAIK,aAA8B,GAAG,IAAI;IACzC,IAAItrB,kBAAkB,IAAI,IAAI,IAAIT,OAAO,EAAE;MAAA,IAAAgsB,cAAA;MACzCD,aAAa,GAAG,IAAI,CAAC/D,gBAAgB,CAACvnB,kBAAkB,EAAET,OAAO,EAAEzU,KAAK,CAAC;MACzE;MACA,CAAAygC,cAAA,OAAI,CAAC5M,OAAO,cAAA4M,cAAA,eAAZA,cAAA,CAAc9e,MAAM,CAAC,CAAC;IACxB;IAEA,IAAM+e,SAAS,GAAG,EAAE;IACpB,IAAIjsB,OAAO,IAAIhT,gBAAgB,EAAE;MAC/B,IAAMwmB,WAAW,GAAG,IAAI,CAAC3N,cAAc,CAAC,CAAC;;MAEzC;MACA,IAAQsb,cAAc,GAAKnhB,OAAO,CAA1BmhB,cAAc;MAAa,IAAA+K,MAAA,YAAAA,OAAA,EAEgB;QACjD,IAAMzlB,WAAW,GAAG0a,cAAc,CAACzsB,CAAC,CAAC;QACrC,IAAMmS,WAAW,GAAG6jB,MAAI,CAAC5jB,cAAc,CAACL,WAAW,CAAC;QAEpD,IAAII,WAAW,IAAI,IAAI,EAAE;UACvB,IAAMyM,YAAY,GAAG/nB,KAAK,CAAC+nB,YAAY,CAACzM,WAAW,CAAC;UACpD,IAAMslB,iBAAiB,GACrB7Y,YAAY,IAAIE,WAAW,GACvBpjB,gBAAgB,CAAC45B,kCAAkC,CACjDvjB,WAAW,EACX+M,WAAW,EACXxT,OACF,CAAC,GACD,IAAI;UACV,IAAImsB,iBAAiB,IAAI,IAAI,EAAE;YAC7B,IAAQ5E,CAAC,GAAQ4E,iBAAiB,CAA1B5E,CAAC;cAAEC,CAAC,GAAK2E,iBAAiB,CAAvB3E,CAAC;YACZ,IAAMzwB,KAAoB,GAAG;cAC3BP,QAAQ,EAAE,UAAU;cACpBkb,GAAG,EAAE8V,CAAC;cACN5T,IAAI,EAAE2T;YACR,CAAC;YACD,IAAMsC,cAAc,GAAGr3B,eAAe,CAAC2Q,GAAG,CAAC0D,WAAW,CAAC;YACvD,IAAMulB,WAAW,GAAGvC,cAAc,IAAI,IAAI;YAC1C,IAAMwC,eAAe,GACnB5lB,WAAW,KAAKrG,mBAAmB,IACnCqG,WAAW,KAAK1G,sBAAsB,IACtCqsB,WAAW;YACb,IAAME,OAAO,gBACXljC,IAAA;cACEwO,SAAS,EAAE5V,UAAU,CAAC,kCAAkC,EAAE;gBACxDuqC,MAAM,EAAE,CAACF;cACX,CAAC,CAAE;cAEHt1B,KAAK,EAAEA,KAAM;cAAAC,QAAA,EAEZq1B,eAAe,iBACdjjC,IAAA,CAACxG,MAAM;gBACL4pC,IAAI,EAAC,OAAO;gBACZ50B,SAAS,EAAE5V,UAAU,CACnB,sCAAsC,EACtC;kBACE,YAAY,EAAEoqC;gBAChB,CACF,CAAE;gBACFR,OAAO,EAAEA,CAAA,KAAM;kBACblB,MAAI,CAACn1B,QAAQ,CAAC;oBACZ2K,mBAAmB,EAAEuG,WAAW;oBAChCtG,uBAAuB,EAAE;kBAC3B,CAAC,CAAC;gBACJ,CAAE;gBACFkqB,aAAa,EAAEtb,KAAK,IAAI;kBAAA,IAAA0d,WAAA;kBACtB,CAAAA,WAAA,GAAA/B,MAAI,CAACpuB,IAAI,cAAAmwB,WAAA,eAATA,WAAA,CAAWnC,iBAAiB,CAACvb,KAAK,CAAC;gBACrC,CAAE;gBACF2d,YAAY,EAAEA,CAAA,KAAM;kBAClBhC,MAAI,CAACn1B,QAAQ,CAAC;oBAAE6K,mBAAmB,EAAEqG;kBAAY,CAAC,CAAC;gBACrD,CAAE;gBACFkmB,YAAY,EAAEA,CAAA,KAAM;kBAClBjC,MAAI,CAACn1B,QAAQ,CAAC;oBAAE6K,mBAAmB,EAAE;kBAAK,CAAC,CAAC;gBAC9C,CAAE;gBAAApJ,QAAA,eAEFxN,KAAA;kBAAKoO,SAAS,EAAC,WAAW;kBAAAZ,QAAA,gBACxB5N,IAAA,CAAChH,eAAe;oBACduL,IAAI,EAAEnK,cAAe;oBACrBoU,SAAS,EAAC;kBAAc,CACzB,CAAC,eACFxO,IAAA,CAAChH,eAAe;oBACduL,IAAI,EAAE7J,QAAS;oBACf8T,SAAS,EAAC;kBAAc,CACzB,CAAC;gBAAA,CACC;cAAC,CACA;YACT,GAvCI6O,WAwCF,CACN;YACDwlB,SAAS,CAAC1+B,IAAI,CAAC++B,OAAO,CAAC;UACzB;QACF;MACF,CAAC;MA7ED,KAAK,IAAI53B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGysB,cAAc,CAACvsB,MAAM,EAAEF,CAAC,IAAI,CAAC;QAAAw3B,MAAA;MAAA;IA8EnD;IACA,IAAMU,mBAAmB,GAAG,EAAE;IAC9B,IAAI5sB,OAAO,EAAE;MACX,IACE6sB,KAAK,GAKH7sB,OAAO,CALT6sB,KAAK;QACL1L,eAAc,GAIZnhB,OAAO,CAJTmhB,cAAc;QACd+F,WAAW,GAGTlnB,OAAO,CAHTknB,WAAW;QACXhG,eAAe,GAEblhB,OAAO,CAFTkhB,eAAe;QACf+F,kBAAkB,GAChBjnB,OAAO,CADTinB,kBAAkB;MACR,IAAA6F,MAAA,YAAAA,OAAA,EACuC;QACjD,IAAMrmB,WAAW,GAAG0a,eAAc,CAACzsB,GAAC,CAAC;QACrC,IAAM0yB,OAAO,GAAGF,WAAW,CAAC/jB,GAAG,CAACsD,WAAW,CAAC;QAC5C,IAAMgQ,WAAW,GAAGyK,eAAe,CAAC/d,GAAG,CAACsD,WAAW,CAAC;QACpD,IAAI2gB,OAAO,IAAI,IAAI,IAAI3Q,WAAW,IAAI,IAAI,IAAIA,WAAW,GAAG,CAAC,EAAE;UAC7D,IAAMsW,aAAa,GAAGF,KAAK,GAAGzF,OAAO;UACrC,IAAM4F,UAAU,GAAGH,KAAK,GAAGzF,OAAO,GAAG3Q,WAAW,GAAG,EAAE;UACrD,IAAM1f,KAAoB,GAAG/J,gBAAgB,GACzC;YACEwJ,QAAQ,EAAE,UAAU;YACpBkb,GAAG,EAAEuV,kBAAkB;YACvBrT,IAAI,EAAEoZ,UAAU;YAChB1L,KAAK,EAAE,EAAE;YACTvP,MAAM,EAAE5f,KAAK,CAAC86B;UAChB,CAAC,GACD;YACEz2B,QAAQ,EAAE,UAAU;YACpBkb,GAAG,EAAE,CAAC;YACNkC,IAAI,EAAEmZ,aAAa;YACnBzL,KAAK,EAAE7K,WAAW;YAClB1E,MAAM,EAAEkV;UACV,CAAC;UACL,IAAMpgB,WAAW,GAAG6jB,MAAI,CAAC5jB,cAAc,CAACL,WAAW,CAAC;UACpD,IAAII,WAAW,IAAI,IAAI,EAAE;YACvB,IAAM/b,MAAM,GAAGS,KAAK,CAACkF,OAAO,CAACoW,WAAW,CAAC;YACzC,IAAI/b,MAAM,IAAI,IAAI,EAAE;cAClB;cACArB,GAAG,CAAC+xB,IAAI,mCAAAjS,MAAA,CAC4B1C,WAAW,kCAAA0C,MAAA,CAA+Bhe,KAAK,CAACkF,OAAO,CAACmE,MAAM,CAClG,CAAC;cACD;cAAA;YAEF;YACA,IAAMi1B,cAAc,GAAGr3B,eAAe,CAAC2Q,GAAG,CAAC0D,WAAW,CAAC;YACvD,IAAAqmB,MAAA,GAA2CrD,cAAc,IAAI,CAAC,CAAC;cAA9Cr+B,qBAAqB,GAAA0hC,MAAA,CAA9B/gC,OAAO;YACf,IAAM0D,IAAI,GAAGpL,UAAU,CAACm2B,gBAAgB,CAACrvB,KAAK,CAACsE,IAAI,EAAE/E,MAAM,CAAC8F,IAAI,CAAC;YAEjE,IAAMnF,aAAa,GAAGoE,IAAI,GAAGA,IAAI,CAAC8nB,SAAS,GAAG,IAAI;YAClD,IAAI,CAACjzB,eAAe,CAAC+G,aAAa,CAAC,EAAE;cACnC,MAAM,IAAI6tB,KAAK,4BAAA/P,MAAA,CAA4B9d,aAAa,CAAE,CAAC;YAC7D;YAEA,IAAM6gC,OAAO,gBACXljC,IAAA;cAEEwO,SAAS,EAAC,gCAAgC;cAC1Cb,KAAK,EAAEA,KAAM;cAAAC,QAAA,eAEb5N,IAAA,CAAC3G,MAAM;gBACLmV,SAAS,EAAC,6BAA6B;gBACvCjM,WAAW,EACTuU,mBAAmB,KAAKuG,WAAW,IACnCtG,uBAAuB,KAAKsG,WAC7B;gBACD0mB,SAAS,EAAEzC,MAAI,CAAC0C,4BAA4B,CAAC3mB,WAAW,CAAE;gBAC1DiiB,QAAQ,EAAEA,CAAA,KAAM;kBACdgC,MAAI,CAACtyB,wBAAwB,CAACqO,WAAW,CAAC;gBAC5C,CAAE;gBACF4mB,OAAO,EAAEntB,mBAAmB,KAAKuG,WAAY;gBAC7C+hB,WAAW;gBACX8E,WAAW;gBACXnhC,OAAO,EAAE;kBACPohC,aAAa,EAAE;gBACjB,CAAE;gBAAAv2B,QAAA,EAED0zB,MAAI,CAAC8C,kCAAkC,CACtCjiC,KAAK,EACLT,MAAM,EACNU,qBAAqB,EACrBC,aAAa,EACbC,SAAS,EACTwU,mBAAmB,KAAKuG,WAAW,IACjCtG,uBAAuB,KAAKsG,WAAW,EACzCikB,MAAI,CAAC+C,oCAAoC,CAAChnB,WAAW,CACvD;cAAC,CACK;YAAC,GA/BJA,WAgCF,CACN;YACDmmB,mBAAmB,CAACr/B,IAAI,CAAC++B,OAAO,CAAC;UACnC;QACF;MACF,CAAC;MAjFD,KAAK,IAAI53B,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGysB,eAAc,CAACvsB,MAAM,EAAEF,GAAC,IAAI,CAAC;QAAA,IAAAo4B,MAAA,IA+BzC;MAAS;IAmDnB;IAEA,IAAMY,kBAAkB,GAAG,IAAI,CAACC,oBAAoB,CAClDpS,aAAa,KAAKjwB,SAAS,IAAIC,KAAK,CAACc,uBAAuB,EAC5Dd,KAAK,CAACe,wBAAwB,EAC9Bf,KAAK,CAACgB,wBAAwB,EAC9BhB,KAAK,CAACiB,0BAA0B,EAChCjB,KAAK,CAACkB,iBAAiB,EACvBlB,KAAK,CAACmB,iBAAiB,IAAIq1B,QAAQ,EACnCx2B,KAAK,CAACoB,yBAAyB,EAC/BpB,KAAK,CAACqB,iBAAiB,EACvB,IAAI,CAACC,qBAAqB,EAC1B,IAAI,CAACC,qBAAqB,EAC1B,IAAI,CAACC,mBAAmB,EACxBC,gBAAgB,EAChBC,aAAa,EACbC,cAAc,EACd,IAAI,CAACirB,sBAAsB,CAAC,CAAC,EAC7B3W,WAAW,EACXyB,gBAAgB,CAAClF,IAAI,GAAG,CAC1B,CAAC;IACD,IAAMzQ,WAAW,GAAG,IAAI,CAACsgC,+BAA+B,CACtDF,kBAAkB,EAClB3+B,qBACF,CAAC;IAED,IAAMyB,aAAa,GAAG,IAAI,CAACq9B,sBAAsB,CAC/Cz9B,gBAAgB,EAChBC,gBACF,CAAC;IAED,IAAMy9B,gBAAgB,GAAG/sB,WAAW,CAACpR,GAAG,CAAC6U,MAAM,IAAI;MACjD,QAAQA,MAAM,CAAChX,IAAI;QACjB,KAAKhG,UAAU,CAACiG,aAAa;UAC3B,oBACErE,IAAA,CAAC9B,YAAY;YACXiE,KAAK,EAAEA,KAAM;YACbmD,QAAQ,EAAE,IAAI,CAACiK,iBAAkB;YACjCo1B,QAAQ,EAAE,IAAI,CAACn1B;UAAkB,GAC5BpR,UAAU,CAACiG,aACjB,CAAC;QAEN,KAAKjG,UAAU,CAACqG,2BAA2B;UACzC,oBACEzE,IAAA,CAACxB,yBAAyB;YACxB2D,KAAK,EAAEA,KAAM;YACb8I,YAAY,EAAEA,YAAa;YAC3B7D,aAAa,EAAEA,aAAc;YAC7B+O,kBAAkB,EAAEA,kBAAmB;YACvCyuB,yBAAyB,EAAE,IAAI,CAACzyB,6BAA8B;YAC9D0yB,OAAO,EAAE,IAAI,CAACzyB,2BAA4B;YAC1C0yB,qBAAqB,EAAE,IAAI,CAACv0B,yBAA0B;YACtDw0B,0BAA0B,EAAE,IAAI,CAACv0B,yBAA0B;YAC3Dw0B,sBAAsB,EAAE,IAAI,CAAC/xB;UAA2B,GACnD7U,UAAU,CAACqG,2BACjB,CAAC;QAEN,KAAKrG,UAAU,CAACsG,sBAAsB;UACpC,oBACE1E,IAAA,CAACR,yBAAyB;YACxB4I,KAAK,EAAEiN,kBAAmB;YAC1B/P,QAAQ,EAAE,IAAI,CAAC2L,8BAA+B;YAC9Cg0B,QAAQ,EAAE,IAAI,CAACl0B,6BAA8B;YAC7Cm0B,QAAQ,EAAE,IAAI,CAACl0B;UAA4B,CAC5C,CAAC;QAEN,KAAK5S,UAAU,CAAC+3B,2BAA2B;UACzC56B,aAAa,CAAC4G,KAAK,CAACkF,OAAO,CAAC;UAC5B9L,aAAa,CAAC,IAAI,CAAC4pC,mCAAmC,CAAC;UACvD,oBACEnlC,IAAA,CAACP,uBAAuB;YACtB0I,EAAE,EAAEhG,KAAK,CAACgG,EAAG;YACbd,OAAO,EAAElF,KAAK,CAACkF,OAAQ;YACvB+9B,IAAI,EAAEz4B,wBAAyB;YAC/BinB,YAAY,EAAEhnB,sBAAsB,aAAtBA,sBAAsB,cAAtBA,sBAAsB,GAAI1K,SAAU;YAClDmjC,QAAQ,EAAE,IAAI,CAACF,mCAAoC;YACnDG,MAAM,EAAE,IAAI,CAACp0B,iCAAkC;YAC/Cq0B,QAAQ,EAAE,IAAI,CAACp0B;UAAoC,CACpD,CAAC;QAEN,KAAK/S,UAAU,CAACuG,qBAAqB;UACnC,oBACE3E,IAAA,CAAC7B,mBAAmB;YAClBgE,KAAK,EAAEA,KAAM;YACb8U,aAAa,EAAEA,aAAc;YAC7BquB,MAAM,EAAE,IAAI,CAACl0B,yBAA0B;YACvCm0B,QAAQ,EAAE,IAAI,CAACt1B;UAAe,GACzB7R,UAAU,CAACuG,qBACjB,CAAC;QAEN,KAAKvG,UAAU,CAACwG,WAAW;UACzB,oBACE5E,IAAA,CAAC3B,UAAU;YACT8D,KAAK,EAAEA,KAAM;YACbmD,QAAQ,EAAE,IAAI,CAACgN,kBAAmB;YAClC3J,MAAM,EAAEY;UAAa,GAChBnL,UAAU,CAACwG,WACjB,CAAC;QAEN,KAAKxG,UAAU,CAACyG,YAAY;UAC1B,oBACE7E,IAAA,CAACjC,YAAY;YACXqb,QAAQ,EAAExQ,mBAAoB;YAC9B+vB,QAAQ,EAAEA,QAAS;YACnB6M,mBAAmB,EACjB1rC,mBAAmB,CAACqI,KAAK,CAAC,IAAIA,KAAK,CAAC0H,UAAU,GAC1C,CAAC,KAAK,CAAC,GACP,CAAC,KAAK,EAAE,QAAQ,CACrB;YACDvE,QAAQ,EAAE,IAAI,CAAC4J,wBAAyB;YACxCu2B,MAAM,EAAE,IAAI,CAACt2B,qBAAsB;YACnChH,EAAE,EAAEhG,KAAK,CAACgG;UAAG,CACd,CAAC;QAEN,KAAK/J,UAAU,CAACid,gBAAgB;UAC9B,OACE3D,mBAAmB,iBACjB1X,IAAA,CAAChC,eAAe;YACdi7B,WAAW,EAAEvhB,mBAAoB;YACjCrQ,OAAO,EAAElF,KAAK,CAACuG,eAAgB;YAC/BpD,QAAQ,EAAE,IAAI,CAAC2J;UAAwB,CACxC,CACF;QAEL,KAAK7Q,UAAU,CAAC2G,cAAc;UAC5B,oBACE/E,IAAA,CAAC1B,gBAAgB;YACf6D,KAAK,EAAEA,KAAM;YACbqF,IAAI,EAAEA,IAAK;YACXP,gBAAgB,EAAEA,gBAAiB;YACnCgE,YAAY,EAAEA,YAAa;YAC3By6B,aAAa,EAAEnuB,kBAAmB;YAClCxK,mBAAmB,EAAEA,mBAAoB;YACzCF,qBAAqB,EAAEA,qBAAsB;YAC7CC,0BAA0B,EACxBA,0BAA0B,aAA1BA,0BAA0B,cAA1BA,0BAA0B,GAAI5K,SAC/B;YACDyjC,UAAU,EAAE,IAAI,CAAC9zB,mBAAoB;YACrC+zB,eAAe,EAAE,IAAI,CAAC9zB,wBAAyB;YAC/CyzB,QAAQ,EAAE,IAAI,CAACxzB,yBAA0B;YACzC4V,SAAS,EAAEzQ;UAAc,GACpB9Y,UAAU,CAAC2G,cACjB,CAAC;QAEN,KAAK3G,UAAU,CAAC0G,eAAe;UAC7B,oBACE9E,IAAA,CAACb,qBAAqB;YACpBgD,KAAK,EAAEA,KAAM;YACb6T,qBAAqB,EAAEA,qBAAsB;YAC7C1Q,QAAQ,EAAE,IAAI,CAACgM;UAA4B,CAC5C,CAAC;QAEN,KAAKlT,UAAU,CAAC4G,iBAAiB;UAC/B,oBACEhF,IAAA,CAACV,oBAAoB;YACnBoG,KAAK,EAAEmU,gBAAiB;YACxBvU,QAAQ,EAAEw8B;UAAyB,CACpC,CAAC;QAGN;UAAS;YACP;YACA;YACA;YACA;YACA;YACA,IAAM+D,UAAU,GAAGzqB,MAAM,CAAC0qB,UAAU;YACpC,IAAID,UAAU,IAAI,IAAI,EAAE;cACtB,MAAM3V,KAAK,2BAAA/P,MAAA,CAA2B/E,MAAM,CAAChX,IAAI,CAAE,CAAC;YACtD;YACA,oBACEpE,IAAA,CAACZ,+BAA+B;cAC9B2mC,QAAQ,EAAE3/B,MAAM,CAACgV,MAAM,CAAChX,IAAI,CAAE;cAAAwJ,QAAA,eAG9B5N,IAAA,CAAC6lC,UAAU;gBACT1jC,KAAK,EAAEA,KAAM;gBACb6jC,SAAS,EAAE,IAAI,CAACC,kBAAkB,CAChC,IAAI,CAACC,0BAA0B,CAAC9+B,aAAa,EAAEjF,KAAK,CAACkF,OAAO,CAC9D,CAAE;gBACF8+B,MAAM,EAAE,IAAI,CAACl2B;cAAe,CAC7B;YAAC,GARG7J,MAAM,CAACgV,MAAM,CAAChX,IAAI,CASQ,CAAC;UAEtC;MACF;IACF,CAAC,CAAC;IAEF,oBACEhE,KAAA;MAAKoO,SAAS,EAAC,WAAW;MAAC43B,IAAI,EAAC,cAAc;MAAAx4B,QAAA,gBAC5CxN,KAAA;QAAKoO,SAAS,EAAC,kBAAkB;QAAAZ,QAAA,GAC9BA,QAAQ,IAAI,IAAI,iBAAI5N,IAAA;UAAKwO,SAAS,EAAC,eAAe;UAAAZ,QAAA,EAAEA;QAAQ,CAAM,CAAC,eACpE5N,IAAA,CAACnH,aAAa;UACZwtC,EAAE,EAAE7wB,oBAAqB;UACzB2pB,OAAO,EAAE7lC,WAAW,CAACgtC,gBAAiB;UACtC1tC,UAAU,EAAC,0BAA0B;UACrC2tC,OAAO,EAAE,IAAI,CAACl3B,oBAAqB;UACnC00B,SAAS,EAAE,IAAI,CAACz0B,kBAAmB;UACnCk3B,MAAM,EAAE,IAAI,CAACn3B,oBAAqB;UAClCiwB,QAAQ,EAAE,IAAI,CAAChwB,kBAAmB;UAClCm3B,YAAY;UACZC,aAAa;UACbC,OAAO,EAAE,IAAI,CAACC,kBAAmB;UAAAh5B,QAAA,eAEjC5N,IAAA;YACE6N,GAAG,EAAE,IAAI,CAAC+4B,kBAAmB;YAC7Bp4B,SAAS,EAAC,0EAA0E;YAAAZ,QAAA,EAEnF3O,sBAAsB,CAACkD,KAAK,CAAC,IAAIA,KAAK,CAAC8hB,mBAAmB,iBACzDjkB,IAAA,CAACd,yBAAyB;cACxBiD,KAAK,EAAEA,KAAM;cACbuT,eAAe,EAAEA,eAAgB;cACjCpQ,QAAQ,EAAE,IAAI,CAAC4M;YAAsB,CACtC;UACF,CACE;QAAC,CACO,CAAC,eAChBlS,IAAA,CAACnH,aAAa;UACZwtC,EAAE,EAAExiC,aAAc;UAClBs7B,OAAO,EAAE7lC,WAAW,CAACgtC,gBAAiB;UACtC1tC,UAAU,EAAC,0BAA0B;UACrC2tC,OAAO,EAAE,IAAI,CAACl3B,oBAAqB;UACnC00B,SAAS,EAAE,IAAI,CAACz0B,kBAAmB;UACnCk3B,MAAM,EAAE,IAAI,CAACn3B,oBAAqB;UAClCiwB,QAAQ,EAAE,IAAI,CAAChwB,kBAAmB;UAClCm3B,YAAY;UACZC,aAAa;UACbC,OAAO,EAAE,IAAI,CAACE,mBAAoB;UAAAj5B,QAAA,eAElC5N,IAAA;YAAK6N,GAAG,EAAE,IAAI,CAACg5B,mBAAoB;YAACr4B,SAAS,EAAC,eAAe;YAAAZ,QAAA,eAC3D5N,IAAA,CAAChB,iBAAiB;cAChB6e,KAAK,EAAE9R,WAAY;cACnB+6B,eAAe,EAAE96B,qBAAsB;cACvC+6B,eAAe,EAAE96B,mBAAoB;cACrC3G,QAAQ,EAAE,IAAI,CAAC+M,uBAAwB;cACvChL,OAAO,EAAElF,KAAK,CAACkF,OAAQ;cACvBwG,GAAG,EAAE,IAAI,CAACgG;YAAe,CAC1B;UAAC,CACC;QAAC,CACO,CAAC,eAChBzT,KAAA,CAACzG,IAAI;UACHkU,GAAG,EAAEqF,IAAI,IAAI;YACX,IAAI,CAACA,IAAI,GAAGA,IAAI;UAClB,CAAE;UACF8zB,cAAc,EAAE,CAACltC,mBAAmB,CAACqI,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC0H,UAAW;UACjEo9B,oBAAoB,EAAE,IAAI,CAACC,6BAA6B,CACtDroC,gBAAgB,CAACsD,KAAK,CACxB,CAAE;UACFw/B,eAAe,EAAEA,eAAgB;UACjCC,cAAc,EAAEA,cAAe;UAC/B56B,gBAAgB,EAAEA,gBAAiB;UACnC7E,KAAK,EAAEA,KAAM;UACbwI,WAAW,EAAE,IAAI,CAAC4R,cAAc,CAAC,CAAE;UACnC1R,aAAa,EAAE,IAAI,CAACqS,gBAAgB,CAAC,CAAE;UACvCjS,YAAY,EAAEA,YAAa;UAC3B4K,SAAS,EAAEA,SAAU;UACrBkX,OAAO,EAAE,IAAI,CAACtd,eAAgB;UAC9B03B,aAAa,EAAE,IAAI,CAACv2B,iBAAkB;UACtCgkB,kBAAkB,EAAE,IAAI,CAACvkB,sBAAuB;UAChDwkB,iBAAiB,EAAE,IAAI,CAACvkB,yBAA0B;UAClDw0B,qBAAqB,EAAE,IAAI,CAACv0B,yBAA0B;UACtDyM,QAAQ,EAAE,IAAI,CAACA,QAAS;UACxB+kB,yBAAyB,EACvBA,yBAAyB,aAAzBA,yBAAyB,cAAzBA,yBAAyB,GAAIrjC,gBAC9B;UACDyjC,aAAa,EAAEA,aAAc;UAC7Bp5B,KAAK,EAAEA,KAAM;UAAA6E,QAAA,gBAEb5N,IAAA,CAACN,yBAAyB;YACxB0nC,MAAM,EAAEpvB,iBAAkB;YAC1BoH,IAAI,EAAEjH,YAAa;YACnBkvB,OAAO,EAAE,IAAI,CAAC90B;UAAoB,CACnC,CAAC,EACD2Z,SAAS,iBACRlsB,IAAA,CAACtC,oBAAoB;YACnByE,KAAK,EAAEA,KAAM;YACbmmB,GAAG,EAAEA,GAAI;YACT2V,MAAM,EAAEA,MAAO;YACfzT,IAAI,EAAEA,IAAK;YACX0T,KAAK,EAAEA,KAAM;YACbz2B,MAAM,EAAEA,MAAO;YACfnF,SAAS,EAAEA,SAAU;YACrBiT,kBAAkB,EAAEA,kBAAmB;YACvClM,KAAK,EAAEA,KAAM;YACbC,OAAO,EAAEA,OAAQ;YACjB2B,YAAY,EAAEA,YAAa;YAC3BgM,aAAa,EAAEA,aAAc;YAC7B7P,aAAa,EAAEA,aAAc;YAC7B4D,kBAAkB,EAAE,IAAI,CAACs8B,qBAAqB,CAC5Ct8B,kBAAkB,EAClB7I,KAAK,CAACkF,OAAO,EACb4D,YAAY,EACZ9I,KAAK,CAAC+I,uBAAuB,EAC7B/I,KAAK,CAACgJ,wBAAwB,EAC9BhJ,KAAK,GAAAo/B,YAAA,GACL,IAAI,CAACruB,IAAI,cAAAquB,YAAA,gBAAAA,YAAA,GAATA,YAAA,CAAWp3B,KAAK,CAACo9B,cAAc,cAAAhG,YAAA,uBAA/BA,YAAA,CAAiCiG,KACnC,CAAE;YACFC,aAAa,EAAE,IAAI,CAACC,6BAA6B,CAC/CvlC,KAAK,CAACgG,EAAE,EACRhG,KAAK,CAACkF,OAAO,EACbgO,kBAAkB,EAClB1I,wBAAwB;YACxB;YACA,EAAA60B,YAAA,GAAA7pB,WAAW,CAACA,WAAW,CAACnM,MAAM,GAAG,CAAC,CAAC,cAAAg2B,YAAA,uBAAnCA,YAAA,CAAqCp9B,IAAI,MACvChG,UAAU,CAAC+3B,2BAA2B,GACpC7e,0BAA0B,aAA1BA,0BAA0B,cAA1BA,0BAA0B,GAAIpV,SAAS,GACvCA,SACN,CAAE;YACFqH,YAAY,EAAE,IAAI,CAACV,oBAAoB,CACrC1G,KAAK,CAACuG,eAAe,EACrBa,YAAY,EACZX,mBACF,CAAE;YACF++B,YAAY,EAAE,IAAI,CAAC7+B,oBAAoB,CACrC3G,KAAK,CAACkF,OAAO,EACbkC,YAAY,EACZX,mBACF,CAAE;YACFoN,qBAAqB,EAAEA,qBAAsB;YAC7C4B,eAAe,EAAEA,eAAgB;YACjClD,cAAc,EAAEA,cAAe;YAC/BwB,aAAa,EAAEA,aAAc;YAC7BC,kBAAkB,EAAEA,kBAAmB;YACvCT,eAAe,EAAEA,eAAgB;YACjC/B,oBAAoB,EAAE,IAAI,CAACA;UAAqB,CACjD,CACF,EACA,CAACnK,WAAW,iBACXxJ,IAAA;YACEwO,SAAS,EAAC,sBAAsB;YAChCb,KAAK,EAAE;cACLgb,MAAM,KAAAxI,MAAA,CAAK8hB,wBAAwB,OAAI;cACvC/J,KAAK,KAAA/X,MAAA,CAAK8hB,wBAAwB;YACpC,CAAE;YAAAr0B,QAAA,eAEF5N,IAAA,CAACxG,MAAM;cACL4pC,IAAI,EAAC,OAAO;cACZ,gDAAAjjB,MAAA,CAA8C3Y,IAAI,CAAG;cACrDg7B,OAAO,EAAE,IAAI,CAAC1yB,UAAW;cACzBvL,IAAI,eAAEvE,IAAA,CAAChH,eAAe;gBAACuL,IAAI,EAAE5J,MAAO;gBAAC8nC,SAAS,EAAC;cAAM,CAAE,CAAE;cACzDzM,OAAO,EAAC;YAAe,CACxB;UAAC,CACC,CACN,EACAoM,UAAU,EACVC,cAAc,EACdQ,SAAS,EACTF,aAAa,EACba,mBAAmB,EACnBt2B,0BAA0B,IACzB,IAAI,CAAC06B,wBAAwB,CAAC16B,0BAA0B,CAAC,EAC1De,sBAAsB,IACrB,IAAI,CAAC45B,oBAAoB,CAAC55B,sBAAsB,CAAC,EAClDK,iBAAiB,IAAI,IAAI,CAACw5B,eAAe,CAACx5B,iBAAiB,CAAC;QAAA,CACzD,CAAC,eACPtO,IAAA,CAACL,OAAO;UACNkO,GAAG,EAAE,IAAI,CAACmG,UAAW;UACrB7R,KAAK,EAAEA,KAAM;UACb8hC,OAAO,EAAE7rB,WAAY;UACrBC,OAAO,EAAEA,OAAQ;UACjBC,YAAY,EAAEA,YAAa;UAC3BC,cAAc,EAAEA,cAAe;UAC/BwvB,eAAe,EAAE,IAAI,CAACp2B,oCAAqC;UAC3Dq2B,sBAAsB,EAAE,IAAI,CAACt1B,qCAAsC;UACnE20B,OAAO,EAAE,IAAI,CAACt4B,mBAAoB;UAClCk5B,UAAU,EAAE,IAAI,CAAC54B,oBAAqB;UACtC00B,SAAS,EAAE,IAAI,CAACz0B,kBAAmB;UACnC44B,SAAS,EAAEA,CAAA,KAAM;YACf,IAAI,CAAC74B,oBAAoB,CAAC,CAAC;YAC3B,IAAI,CAAC0a,KAAK,CAAC,CAAC;UACd,CAAE;UACFuV,QAAQ,EAAE,IAAI,CAAChwB,kBAAmB;UAClCkJ,2BAA2B,EAAEA,2BAA4B;UACzD9J,SAAS,EAAEA,SAAU;UACrBy5B,eAAe,EAAE1vB,uBAAwB;UACzC2vB,oCAAoC,EAClC,IAAI,CAACz1B,wCACN;UACD01B,gCAAgC,EAC9B,IAAI,CAACz1B,oCACN;UACD01B,kBAAkB,EAAE,IAAI,CAACz1B,sBAAuB;UAChD01B,iBAAiB,EAAE,IAAI,CAACz1B;QAAyB,CAClD,CAAC,eAEF9S,IAAA,CAAC3D,oBAAoB;UACnByJ,KAAK,EAAEgS,gBAAiB;UACxB0wB,QAAQ,EAAE3wB,kBAAkB,IAAI,IAAK;UACrC4wB,WAAW,aAAAtoB,MAAA,CAAa,IAAI,CAACnL,YAAY,CAAC7P,QAAQ,CAACC,cAAc,CAAC,CAAC,MAAI;UACvEsjC,cAAc,cAAAvoB,MAAA,CAAc,IAAI,CAAC1L,aAAa,CAACtP,QAAQ,CAACC,cAAc,CAAC,CAAC,MAAI;UAC5E6P,iBAAiB,EAAEA,iBAAkB;UACrCP,cAAc,EAAEA,cAAe;UAC/BuzB,UAAU,EAAE,IAAI,CAAC54B,oBAAqB;UACtC00B,SAAS,EAAE,IAAI,CAACz0B,kBAAmB;UACnC44B,SAAS,EAAE,IAAI,CAAC74B,oBAAqB;UACrCiwB,QAAQ,EAAE,IAAI,CAAChwB,kBAAmB;UAClCg2B,MAAM,EAAE,IAAI,CAAC7zB,0BAA2B;UACxCk3B,SAAS,EAAE,IAAI,CAACj3B;QAA4B,CAC7C,CAAC,eACF1R,IAAA,CAACxC,cAAc;UAAAoQ,QAAA,EAAEmK;QAAY,CAAiB,CAAC,eAC/C/X,IAAA,CAAC1D,mBAAmB;UAClB6F,KAAK,EAAEA,KAAM;UACbgV,aAAa,EAAEA,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIjV,SAAU;UAC1C+lC,UAAU,EAAE,IAAI,CAAC54B,oBAAqB;UACtC00B,SAAS,EAAE,IAAI,CAACz0B,kBAAmB;UACnC44B,SAAS,EAAE,IAAI,CAAC74B,oBAAqB;UACrCiwB,QAAQ,EAAE,IAAI,CAAChwB;QAAmB,CACnC,CAAC,eACFtP,IAAA,CAACzB,UAAU;UACT4J,EAAE,EAAEhG,KAAK,CAACgG,EAAG;UACb0F,GAAG,EAAE+F,UAAU,IAAI;YACjB,IAAI,CAACA,UAAU,GAAGA,UAAU;UAC9B,CAAE;UACF8tB,iBAAiB,EAAEA,iBAAkB;UACrCkH,mBAAmB,EAAE,IAAI,CAAC32B,uBAAwB;UAClD42B,kBAAkB,EAAE,IAAI,CAAC72B,sBAAuB;UAChD82B,wBAAwB,EAAE,IAAI,CAAChtB,4BAA6B;UAC5D4pB,aAAa,EACX34B,mBAAmB,KACnBzO,gBAAgB,CAAC0O,eAAe,CAACC,WAClC;UACD3K,SAAS,EAAEA;QAAU,CACtB,CAAC;MAAA,CACC,CAAC,eACNtC,IAAA,CAACtG,eAAe;QACd2sC,EAAE,EAAE78B,WAAY;QAChBy+B,UAAU,EAAE,IAAI,CAAC54B,oBAAqB;QACtC00B,SAAS,EAAE,IAAI,CAACz0B,kBAAmB;QACnC44B,SAAS,EAAE,IAAI,CAAC74B,oBAAqB;QACrCiwB,QAAQ,EAAE,IAAI,CAAChwB,kBAAmB;QAClCm3B,YAAY;QACZC,aAAa;QAAA94B,QAAA,eAEb5N,IAAA;UAAKwO,SAAS,EAAC,eAAe;UAAAZ,QAAA,eAC5B5N,IAAA,CAAC9G,KAAK;YAAA0U,QAAA,EACH,cACC5N,IAAA,CAAC5G,IAAI;cAEHkL,KAAK,EAAC,eAAe;cACrB+iC,OAAO,EAAE,IAAI,CAACt3B,eAAgB;cAAAnC,QAAA,eAE9B5N,IAAA,CAAC7G,IAAI;gBACH+rC,QAAQ,EAAE55B,CAAC,IAAI,IAAI,CAAC0E,gBAAgB,CAAC9L,WAAW,CAACoH,CAAC,CAAC,CAAE;gBACrD5F,KAAK,EAAExB;cAAY,CACpB;YAAC,GAPE,eAQA,CAAC,EACP,GAAGwgC,gBAAgB,CAACn+B,GAAG,CAAC,CAAC6U,MAAM,EAAE9P,CAAC,kBAChCtL,IAAA,CAAC5G,IAAI;cACHkL,KAAK,EAAEqT,WAAW,CAACrM,CAAC,CAAC,CAAChH,KAAM;cAC5B6hC,MAAM,EAAE,IAAI,CAACl2B,cAAe;cAC5Bo3B,OAAO,EAAE,IAAI,CAACt3B,eAAgB;cAAAnC,QAAA,EAG7BwN;YAAM,GAFFzD,WAAW,CAACrM,CAAC,CAAC,CAAClH,IAGhB,CACP,CAAC;UACH,CACI;QAAC,CACL;MAAC,CACS,CAAC,eAClBpE,IAAA,CAAC/G,cAAc;QAAC8vC,OAAO,EAAE,IAAI,CAAC3zB;MAAe,CAAE,CAAC,eAChDpV,IAAA,CAACH,sBAAsB;QACrBunC,MAAM,EAAEnvB,0BAA2B;QACnCovB,OAAO,EAAE,IAAI,CAAC70B,iCAAkC;QAChDohB,YAAY,EAAE1b;MAAuB,CACtC,CAAC;IAAA,CACC,CAAC;EAEV;AACF;AAAC1W,eAAA,CAtvKKN,QAAQ,iBACSvC,eAAe;AAAA6C,eAAA,CADhCN,QAAQ,iBAMS,GAAG;AAAAM,eAAA,CANpBN,QAAQ,iBAQS,GAAG;AAAAM,eAAA,CARpBN,QAAQ,yBAUiB,GAAG;AAAAM,eAAA,CAV5BN,QAAQ,kBAYU;EACpBkI,eAAe,EAAE1N,SAAS;EAC1Bme,gBAAgB,EAAEne,SAAS;EAC3BsP,kBAAkB,EAAEvP,WAAW;EAC/B4Z,kBAAkB,EAAE5Z,WAAW;EAC/B6Z,qBAAqB,EAAE5Z,SAAS;EAChC6Z,kBAAkB,EAAE7Z,SAAS;EAC7BkI,gBAAgB,EAAE,KAAK;EACvB0gB,uBAAuB,EAAE,KAAK;EAC9BrZ,YAAY,EAAExP,WAAW;EACzBoa,SAAS,EAAEpa,WAAW;EACtB0d,YAAY,EAAE1d,WAAW;EACzBgO,aAAa,EAAEhO,WAAW;EAC1B02B,aAAa,EAAEjwB,SAAS;EACxB2uB,gBAAgB,EAAEA,CAAA,KAAY3uB,SAAS;EACvC8uB,cAAc,EAAEA,CAAA,KAAY9uB,SAAS;EACrC6qB,OAAO,EAAEA,CAAA,KAAY7qB,SAAS;EAC9Bo7B,aAAa,EAAEA,CAAA,KAAYp7B,SAAS;EACpC4/B,wBAAwB,EAAEA,CAAA,KAAY5/B,SAAS;EAC/CuT,UAAU,EAAEvT,SAAS;EACrBwT,eAAe,EAAExT,SAAS;EAC1BiH,YAAY,EAAEzN,SAAS;EACvB2d,wBAAwB,EAAE,KAAK;EAC/BgV,oBAAoB,EAAEnsB,SAAS;EAC/B8T,qBAAqB,EAAEva,WAAW;EAClC4N,KAAK,EAAE5N,WAAW;EAClB6d,iBAAiB,EAAE,KAAK;EACxB2U,aAAa,EAAE/rB,SAAS;EACxBoH,OAAO,EAAE,KAAK;EACd2N,aAAa,EAAExb,WAAW;EAC1BmN,mBAAmB,EAAEhI,4BAA4B;EACjD2I,YAAY,EAAErH,SAAS;EACvB+E,gBAAgB,EAAEvL,SAAS;EAC3Boa,sBAAsB,EAAE5T,SAAS;EACjC6T,cAAc,EAAEra,SAAS;EACzBk5B,kBAAkB,EAAEA,CAAA,KAAY1yB,SAAS;EACzC2yB,iBAAiB,EAAEA,CAAA,KAAY3yB,SAAS;EACxC+G,iBAAiB,EAAE,KAAK;EACxBuM,oBAAoB,EAAE,KAAK;EAC3BmsB,eAAe,EAAE,KAAK;EACtBC,cAAc,EAAE,KAAK;EACrB3E,mBAAmB,EAAE,QAAQ;EAC7B+L,sBAAsB,EAAE,oBAAoB;EAC5CC,UAAU,EAAE,MAAM;EAClBzhC,IAAI,EAAE,OAAO;EACbq6B,uBAAuB,EAAE,IAAI;EAC7Bh+B,aAAa,EAAE,KAAK;EACpBkI,WAAW,EAAE,EAAE;EACfE,mBAAmB,EAAE,IAAI;EACzBg1B,aAAa,EAAEA,CAAA,KAA0CxlC,WAAW;EACpEiZ,cAAc,EAAEhZ,SAAS;EACzBgmC,iBAAiB,EAAEjjC,0BAA0B,CAACyqC,gBAAgB;EAC9D9vB,QAAQ,EAAE;IACRiF,QAAQ,EAAE,kBAAkB;IAC5B8qB,qBAAqB,EAAEjuC,SAAS,CAACkuC,gBAAgB;IACjDC,YAAY,EAAE,KAAK;IACnBC,cAAc,EAAE,IAAI;IACpB91B,wBAAwB,EAAE,KAAK;IAC/BC,gBAAgB,EAAE,IAAI;IACtBC,eAAe,EAAE,IAAI;IACrBC,oBAAoB,EAAE,IAAI;IAC1BrR,SAAS,EAAE7G;EACb,CAAC;EACDwa,OAAO,EAAE,IAAI;EACbnS,cAAc,EAAE,IAAI;EACpBoS,aAAa,EAAEhU,SAAS;EACxB;EACA6H,OAAO,EAAE7H,SAAS;EAClB6B,eAAe,EAAE,IAAI;EACrB8G,aAAa,EAAEpP,WAAW;EAC1BkP,WAAW,EAAElP,WAAW;EACxB2a,mBAAmB,EAAE,SAArBA,mBAAmBA,CAAA;IAAA,SAAAmzB,IAAA,GAAA/rB,SAAA,CAAAhS,MAAA,EACdg+B,IAAI,OAAAhoB,KAAA,CAAA+nB,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;MAAJD,IAAI,CAAAC,IAAA,IAAAjsB,SAAA,CAAAisB,IAAA;IAAA;IAAA,OACsB,IAAIhsC,wBAAwB,CAAC,GAAG+rC,IAAI,CAAC;EAAA;AACtE,CAAC;AAkqKH,eAAetoC,QAAQ","ignoreList":[]}
|