@deephaven/iris-grid 0.6.3 → 0.6.4
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.
|
@@ -388,7 +388,7 @@ class IrisGridTableModel extends IrisGridModel {
|
|
|
388
388
|
}
|
|
389
389
|
|
|
390
390
|
var column = this.columns[x];
|
|
391
|
-
var hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(this.formatter, column.
|
|
391
|
+
var hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(this.formatter, column.name, column.type);
|
|
392
392
|
var formatOverride = null;
|
|
393
393
|
|
|
394
394
|
if (!hasCustomColumnFormat) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridTableModel.js"],"names":["memoize","throttle","GridRange","dh","Log","PromiseUtils","memoizeClear","TableUtils","Formatter","FormatterUtils","IrisGridModel","AggregationOperation","IrisGridUtils","MissingKeyError","log","module","SET_VIEWPORT_THROTTLE","APPLY_VIEWPORT_THROTTLE","IrisGridTableModel","constructor","table","formatter","inputTable","columns","hints","columnMap","Map","forEach","col","set","name","frontColumns","backColumns","frozenColumns","map","get","filter","Boolean","length","Error","frontColumnSet","Set","backColumnSet","frozenColumnSet","middleColumns","has","indices","i","_","index","value","columnType","columnName","formatOverride","getFormattedString","max","isCustomColumnFormatDefined","top","bottom","viewHeight","viewportTop","Math","ROW_BUFFER_PAGES","viewportBottom","pendingDataMap","keyColumnCount","row","rowIndex","data","rowData","push","handleTableDisconnect","bind","handleTableReconnect","handleTableUpdate","handleTotalsUpdate","handleRequestFailed","handleCustomColumnsChanged","setViewport","applyViewport","leading","irisFormatter","listenerCount","subscription","viewport","viewportData","formattedStringData","pendingStringData","isSaveInProgress","totalsTable","totalsTablePromise","totals","totalsDataMap","pendingNewDataMap","pendingNewRowCount","close","cancel","startListening","addEventListener","Table","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_UPDATED","Client","EVENT_REQUEST_FAILED","EVENT_CUSTOMCOLUMNSCHANGED","addTotalsListeners","stopListening","removeEventListener","removeTotalsListeners","closeSubscription","dispatchEvent","CustomEvent","EVENT","DISCONNECT","RECONNECT","event","copyViewportData","detail","UPDATED","copyTotalsData","REQUEST_FAILED","COLUMNS_CHANGED","rowCount","size","operationOrder","pendingDataErrors","getCachedPendingErrors","keyColumns","isValidIndex","columnIndex","maxPendingDataRow","PENDING_DATA_UPDATED","pendingRowCount","count","keys","columnCount","floatingBottomRowCount","showOnTop","floatingTopRowCount","isExportAvailable","freeze","isColumnStatisticsAvailable","getColumnStatistics","isValuesTableAvailable","selectDistinct","copy","isRollupAvailable","rollup","isSelectDistinctAvailable","isCustomColumnsAvailable","applyCustomColumns","isChartBuilderAvailable","isTotalsAvailable","getTotalsTable","isEditable","cacheFormattedValue","x","y","text","cachePendingValue","clearPendingValue","column","textValueForCell","undefined","valueForCell","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","type","formatForCell","formatString","displayString","textForCell","isKeyColumn","pendingRow","colorForCell","theme","dataForCell","format","color","isPendingRow","pendingTextColor","isDateType","dateColor","isNumberType","positiveNumberColor","negativeNumberColor","zeroNumberColor","errorTextColor","textColor","backgroundColorForCell","backgroundColor","textAlignForCell","textForColumnHeader","textForRowFooter","totalsRow","getColumnsWithLayoutHints","layoutHints","floatingLeftColumnCount","groupedColumns","description","totalsRowCount","operation","offset","viewportY","rows","isTotalsRow","warn","extractViewportData","totalsData","error","dataMap","defaultOperation","SUM","operationMap","c","split","findIndex","getFormat","debug2","getColumnIndexByName","getColumnIndicesByNameMap","newData","r","newRow","extractViewportRow","applyFilter","FORMATTER_UPDATED","getCachedFormattedString","sort","applySort","customColumns","totalsConfig","debug","setTotalsTable","makeCancelable","then","catch","err","isCanceled","getCachedViewportRowRange","applyBufferedViewport","snapshot","ranges","includeHeaders","formatValue","consolidated","consolidate","isValidSnapshotRanges","topFloatingRowsSet","tableRanges","bottomFloatingRowsSet","range","startRow","endRow","add","startColumn","min","endColumn","columnsFromRanges","result","topFloatingRows","rangeSet","rangeSetFromRanges","bottomFloatingRows","textSnapshot","join","isFilterRequired","isUncoalesced","hasExpandableRows","isFilterable","getCachedFilterableColumnSet","isRowExpanded","isExpanded","setRowExpanded","setExpanded","depthForRow","depth","valuesTable","export","columnStatistics","isColumnMovable","includes","isColumnFrozen","isRowMovable","isEditableRange","isBounded","isDeletableRange","isEditableRanges","every","isDeletableRanges","getTableAreaRange","getPendingAreaRange","setValueForCell","setValueForRanges","columnSet","formattedText","forEachCell","makeValue","timeZone","pendingAreaRange","pendingRanges","intersection","newDataMap","newRowData","delete","tableAreaRange","newRows","addRows","setValues","edits","edit","makeCell","rowEditMap","reduce","rowMap","dataIndex","rangeRowCount","rowEdits","info","commitPending","pendingNewDataErrors","editValueForCell","pendingRange","deleteTable","Promise","all","filters","columnFilters","filterValue","makeFilterRawValue","eq","agg","curr","and","or","isValidForCell","e"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport { GridRange } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport memoizeClear from './memoizeClear';\nimport TableUtils from './TableUtils';\nimport Formatter from './Formatter';\nimport FormatterUtils from './FormatterUtils';\nimport IrisGridModel from './IrisGridModel';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport IrisGridUtils from './IrisGridUtils';\nimport MissingKeyError from './MissingKeyError';\n\nconst log = Log.module('IrisGridTableModel');\n\nconst SET_VIEWPORT_THROTTLE = 150;\nconst APPLY_VIEWPORT_THROTTLE = 0;\n\n/**\n * Model for a grid showing an iris data table\n */\nclass IrisGridTableModel extends IrisGridModel {\n static ROW_BUFFER_PAGES = 1;\n\n static COLUMN_BUFFER_PAGES = 0;\n\n /**\n * @param {dh.Table} table Iris data table to be used in the model\n * @param {Formatter} formatter The formatter to use when getting formats\n * @param {dh.InputTable} inputTable Iris input table associated with this table\n */\n constructor(table, formatter = new Formatter(), inputTable = null) {\n super();\n\n this.handleTableDisconnect = this.handleTableDisconnect.bind(this);\n this.handleTableReconnect = this.handleTableReconnect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTotalsUpdate = this.handleTotalsUpdate.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.setViewport = throttle(\n this.setViewport.bind(this),\n SET_VIEWPORT_THROTTLE\n );\n this.applyViewport = throttle(\n this.applyViewport.bind(this),\n APPLY_VIEWPORT_THROTTLE,\n { leading: false }\n );\n\n this.irisFormatter = formatter;\n this.inputTable = inputTable;\n this.listenerCount = 0;\n this.subscription = null;\n this.table = table;\n this.viewport = null;\n this.viewportData = null;\n this.formattedStringData = [];\n this.pendingStringData = [];\n this.isSaveInProgress = false;\n\n this.totalsTable = null;\n this.totalsTablePromise = null;\n this.totals = null;\n this.totalsDataMap = null;\n\n // Map from new row index to their values. Only for input tables that can have new rows added.\n // The index of these rows start at 0, and they are appended at the end of the regular table data.\n // These rows can be sparse, so using a map instead of an array.\n this.pendingNewDataMap = new Map();\n this.pendingNewRowCount = 0;\n }\n\n close() {\n this.table.close();\n if (this.totalsTable !== null) {\n this.totalsTable.close();\n }\n if (this.totalsTablePromise !== null) {\n this.totalsTablePromise.cancel();\n }\n }\n\n startListening() {\n super.startListening();\n\n this.table.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n this.table.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.addEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.addTotalsListeners(this.totalsTable);\n }\n\n this.applyViewport();\n }\n\n stopListening() {\n super.stopListening();\n\n this.table.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n this.table.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.removeEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.closeSubscription();\n }\n\n addTotalsListeners(totalsTable) {\n totalsTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n\n // Totals table only has one row of data\n totalsTable.setViewport(0, 0);\n }\n\n removeTotalsListeners(totalsTable) {\n totalsTable.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n }\n\n handleTableDisconnect() {\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.DISCONNECT));\n }\n\n handleTableReconnect() {\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.RECONNECT));\n }\n\n handleTableUpdate(event) {\n this.copyViewportData(event.detail);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleTotalsUpdate(event) {\n this.copyTotalsData(event.detail);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleRequestFailed(event) {\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, event)\n );\n }\n\n handleCustomColumnsChanged() {\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: this.columns,\n })\n );\n }\n\n get rowCount() {\n return (\n this.table.size +\n (this.totals?.operationOrder?.length ?? 0) +\n this.pendingNewRowCount\n );\n }\n\n get pendingDataErrors() {\n return this.getCachedPendingErrors(\n this.pendingNewDataMap,\n this.columns,\n this.inputTable?.keyColumns.length ?? 0\n );\n }\n\n get pendingDataMap() {\n return this.pendingNewDataMap;\n }\n\n set pendingDataMap(map) {\n if (map === this.pendingNewDataMap) {\n return;\n }\n\n map.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error('Invalid rowIndex', rowIndex);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error('Invalid columnIndex', columnIndex);\n }\n });\n });\n\n this.pendingNewDataMap = map;\n\n this.pendingNewRowCount = Math.max(\n this.pendingNewRowCount,\n this.maxPendingDataRow\n );\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n }\n\n get pendingRowCount() {\n return this.pendingNewRowCount;\n }\n\n set pendingRowCount(count) {\n if (count === this.pendingNewRowCount) {\n return;\n }\n\n this.pendingNewRowCount = Math.max(0, count, this.maxPendingDataRow);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n get maxPendingDataRow() {\n return this.pendingNewDataMap.size > 0\n ? Math.max(...this.pendingNewDataMap.keys()) + 1\n : 0;\n }\n\n get columnCount() {\n return this.columns.length;\n }\n\n get floatingBottomRowCount() {\n return this.totals?.showOnTop\n ? 0\n : this.totals?.operationOrder?.length ?? 0;\n }\n\n get floatingTopRowCount() {\n return this.totals?.showOnTop\n ? this.totals?.operationOrder?.length ?? 0\n : 0;\n }\n\n get isExportAvailable() {\n return this.table.freeze != null;\n }\n\n get isColumnStatisticsAvailable() {\n return this.table.getColumnStatistics != null;\n }\n\n get isValuesTableAvailable() {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isRollupAvailable() {\n return this.table.rollup != null;\n }\n\n get isSelectDistinctAvailable() {\n return this.table.selectDistinct != null;\n }\n\n get isCustomColumnsAvailable() {\n return this.table.applyCustomColumns != null;\n }\n\n get isChartBuilderAvailable() {\n return true;\n }\n\n get isTotalsAvailable() {\n return this.table.getTotalsTable != null;\n }\n\n get isEditable() {\n return !this.isSaveInProgress && this.inputTable != null;\n }\n\n cacheFormattedValue(x, y, text) {\n if (this.formattedStringData[x] == null) {\n this.formattedStringData[x] = [];\n }\n this.formattedStringData[x][y] = text;\n }\n\n cachePendingValue(x, y, text) {\n if (this.pendingStringData[x] == null) {\n this.pendingStringData[x] = [];\n }\n this.pendingStringData[x][y] = text;\n }\n\n clearPendingValue(x, y) {\n const column = this.pendingStringData[x];\n if (column != null) {\n delete column[y];\n }\n }\n\n textValueForCell(x, y) {\n // First check if there's any pending values we should read from\n if (this.pendingStringData[x]?.[y] !== undefined) {\n return this.pendingStringData[x][y];\n }\n\n // Use a separate cache from memoization just for the strings that are currently displayed\n if (this.formattedStringData[x]?.[y] === undefined) {\n const value = this.valueForCell(x, y);\n if (value == null) {\n return null;\n }\n\n const column = this.columns[x];\n const hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(\n this.formatter,\n column.type,\n column.name\n );\n let formatOverride = null;\n if (!hasCustomColumnFormat) {\n const formatForCell = this.formatForCell(x, y);\n if (formatForCell?.formatString != null) {\n formatOverride = formatForCell;\n }\n }\n const text = this.displayString(\n value,\n column.type,\n column.name,\n formatOverride\n );\n this.cacheFormattedValue(x, y, text);\n }\n\n return this.formattedStringData[x][y];\n }\n\n textForCell(x, y) {\n const text = this.textValueForCell(x, y);\n if (text == null && this.isKeyColumn(x)) {\n const pendingRow = this.pendingRow(y);\n if (this.pendingDataMap.has(pendingRow)) {\n // Asterisk to show a value is required for a key column on a row that has some data entered\n return '*';\n }\n }\n return text;\n }\n\n colorForCell(x, y, theme) {\n const data = this.dataForCell(x, y);\n if (data) {\n const { format } = data;\n if (format && format.color) {\n return format.color;\n }\n\n if (this.isPendingRow(y)) {\n // Data entered in a pending row\n return theme.pendingTextColor;\n }\n\n // Fallback to formatting based on the value/type of the cell\n const { value } = data;\n if (value != null) {\n const column = this.columns[x];\n if (TableUtils.isDateType(column.type) || column.name === 'Date') {\n return theme.dateColor;\n }\n if (TableUtils.isNumberType(column.type)) {\n if (value > 0) {\n return theme.positiveNumberColor;\n }\n if (value < 0) {\n return theme.negativeNumberColor;\n }\n return theme.zeroNumberColor;\n }\n }\n } else if (this.isPendingRow(y) && this.isKeyColumn(x)) {\n return theme.errorTextColor;\n }\n\n return theme.textColor;\n }\n\n backgroundColorForCell(x, y) {\n return this.formatForCell(x, y)?.backgroundColor;\n }\n\n textAlignForCell(x) {\n const column = this.columns[x];\n const { type } = column;\n\n if (TableUtils.isNumberType(type)) {\n return 'right';\n }\n if (TableUtils.isDateType(type) || column.name === 'Date') {\n return 'center';\n }\n return 'left';\n }\n\n textForColumnHeader(x) {\n const column = this.columns[x];\n return `${column.name}`;\n }\n\n textForRowFooter(y) {\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null) {\n return this.totals.operationOrder[totalsRow];\n }\n return '';\n }\n\n getColumnsWithLayoutHints = memoize((columns, hints) => {\n if (hints) {\n const columnMap = new Map();\n columns.forEach(col => columnMap.set(col.name, col));\n\n let frontColumns = [];\n let backColumns = [];\n let frozenColumns = [];\n\n if (hints.frontColumns) {\n frontColumns = hints.frontColumns\n .map(name => columnMap.get(name))\n .filter(Boolean);\n }\n if (hints.backColumns) {\n backColumns = hints.backColumns\n .map(name => columnMap.get(name))\n .filter(Boolean);\n }\n if (hints.frozenColumns) {\n frozenColumns = hints.frozenColumns\n .map(name => columnMap.get(name))\n .filter(Boolean);\n }\n\n if (\n frontColumns.length !== (hints.frontColumns?.length ?? 0) ||\n backColumns.length !== (hints.backColumns?.length ?? 0) ||\n frozenColumns.length !== (hints.frozenColumns?.length ?? 0)\n ) {\n throw new Error(\n 'Layout hints are invalid (contain invalid column names)'\n );\n }\n\n const frontColumnSet = new Set(frontColumns);\n const backColumnSet = new Set(backColumns);\n const frozenColumnSet = new Set(frozenColumns);\n const middleColumns = columns.filter(\n col =>\n !frontColumnSet.has(col) &&\n !backColumnSet.has(col) &&\n !frozenColumnSet.has(col)\n );\n\n return [\n ...frozenColumns,\n ...frontColumns,\n ...middleColumns,\n ...backColumns,\n ];\n }\n return columns;\n });\n\n get columns() {\n return this.getColumnsWithLayoutHints(\n this.table.columns,\n this.table.layoutHints\n );\n }\n\n get layoutHints() {\n return this.table.layoutHints;\n }\n\n get floatingLeftColumnCount() {\n return this.layoutHints?.frozenColumns?.length ?? 0;\n }\n\n get groupedColumns() {\n return [];\n }\n\n get description() {\n return this.table.description;\n }\n\n row(y) {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null) {\n const operation = this.totals.operationOrder[totalsRow];\n return this.totalsDataMap?.get(operation) ?? null;\n }\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n return this.pendingNewDataMap.get(pendingRow) ?? null;\n }\n const offset = this.viewportData?.offset ?? 0;\n const viewportY = (showOnTop ? y - totalsRowCount : y) - offset;\n return this.viewportData?.rows?.[viewportY] ?? null;\n }\n\n /**\n * Translate from the row in the model to a row in the totals table.\n * If the row is not a totals row, return null\n * @param {number} y The row in the model to get the totals row for\n * @returns {number|null} The row within the totals table if it's a totals row, null otherwise\n */\n totalsRow(y) {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = showOnTop ? y : y - this.table.size;\n if (totalsRow >= 0 && totalsRow < totalsRowCount) {\n return totalsRow;\n }\n return null;\n }\n\n /**\n * Translate from the row in the model to a pending input row.\n * If the row is not a pending input row, return null\n * @param {number} y The row in the model to get the pending row for\n * @returns {number|null} The row within the pending input rows if it's a pending row, null otherwise\n */\n pendingRow(y) {\n const pendingRow = y - this.floatingTopRowCount - this.table.size;\n if (pendingRow >= 0 && pendingRow < this.pendingNewRowCount) {\n return pendingRow;\n }\n\n return null;\n }\n\n /**\n * Check if a row is a totals table row\n * @param {number} y The row in the model to check if it's a totals table row\n * @returns {boolean} True if the row is a totals row, false if not\n */\n isTotalsRow(y) {\n return this.totalsRow(y) != null;\n }\n\n /**\n * Check if a row is a pending input row\n * @param {number} y The row in the model to check if it's a pending new row\n * @returns {boolean} True if the row is a pending new row, false if not\n */\n isPendingRow(y) {\n return this.pendingRow(y) != null;\n }\n\n dataForCell(x, y) {\n return this.row(y)?.data.get(x);\n }\n\n formatForCell(x, y) {\n return this.dataForCell(x, y)?.format;\n }\n\n valueForCell(x, y) {\n return this.dataForCell(x, y)?.value;\n }\n\n copyViewportData(data) {\n if (!data) {\n log.warn('invalid data!');\n return;\n }\n\n this.viewportData = this.extractViewportData(data);\n this.formattedStringData = [];\n }\n\n copyTotalsData(totalsData) {\n if (!totalsData) {\n log.warn('invalid data!');\n return;\n }\n\n const { columns, rows } = totalsData;\n if (rows.length !== 1) {\n log.error(\n 'Unexpected number of rows received for totals table, ignoring update'\n );\n return;\n }\n\n const dataMap = new Map();\n const row = rows[0];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const operationMap = this.totals?.operationMap;\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const [\n name,\n operation = operationMap?.[name]?.[0] ?? defaultOperation,\n ] = column.name.split('__');\n if (!dataMap.has(operation)) {\n dataMap.set(operation, { data: new Map() });\n }\n const { data: rowData } = dataMap.get(operation);\n const columnIndex = this.columns.findIndex(col => col.name === name);\n rowData.set(columnIndex, {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n log.debug2('copyTotalsData', dataMap);\n\n this.totalsDataMap = dataMap;\n }\n\n /**\n * Use this as the canonical column index since things like layoutHints could have\n * changed the column order.\n */\n getColumnIndexByName(name) {\n return this.getColumnIndicesByNameMap(this.columns).get(name);\n }\n\n getColumnIndicesByNameMap = memoize(columns => {\n const indices = new Map();\n columns.forEach(({ name }, i) => indices.set(name, i));\n return indices;\n });\n\n /**\n * Copies all the viewport data into an object that we can reference later.\n * @param {ViewportData} data The data to copy from\n */\n extractViewportData(data) {\n const newData = {\n offset: data.offset,\n rows: [],\n };\n\n const { columns } = data;\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const newRow = this.extractViewportRow(row, columns);\n newData.rows.push(newRow);\n }\n\n return newData;\n }\n\n extractViewportRow(row, columns) {\n const data = new Map();\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n\n data.set(this.getColumnIndexByName(column.name), {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n return { data };\n }\n\n closeSubscription() {\n log.debug2('closeSubscription', this.subscription);\n if (this.subscription) {\n this.subscription.close();\n this.subscription = null;\n }\n\n this.setViewport.cancel();\n this.applyViewport.cancel();\n }\n\n get filter() {\n return this.table.filter;\n }\n\n set filter(filter) {\n this.closeSubscription();\n this.table.applyFilter(filter);\n this.applyViewport();\n }\n\n get formatter() {\n return this.irisFormatter;\n }\n\n set formatter(formatter) {\n this.irisFormatter = formatter;\n this.formattedStringData = [];\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.FORMATTER_UPDATED));\n }\n\n displayString(value, columnType, columnName = '', formatOverride = null) {\n return this.getCachedFormattedString(\n this.formatter,\n value,\n columnType,\n columnName,\n formatOverride\n );\n }\n\n get sort() {\n return this.table.sort;\n }\n\n set sort(sort) {\n this.closeSubscription();\n this.table.applySort(sort);\n this.applyViewport();\n }\n\n get customColumns() {\n return this.table.customColumns ?? [];\n }\n\n set customColumns(customColumns) {\n this.closeSubscription();\n this.table.applyCustomColumns(customColumns);\n this.applyViewport();\n }\n\n set totalsConfig(totalsConfig) {\n log.debug('set totalsConfig', totalsConfig);\n\n if (totalsConfig === this.totals) {\n // Totals already set, or it will be set when the next model actually gets set\n return;\n }\n\n this.totals = totalsConfig;\n this.formattedStringData = [];\n\n if (this.totalsTablePromise != null) {\n this.totalsTablePromise.cancel();\n }\n\n this.setTotalsTable(null);\n\n if (totalsConfig == null) {\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n return;\n }\n\n this.totalsTablePromise = PromiseUtils.makeCancelable(\n this.table.getTotalsTable(totalsConfig),\n table => table.close()\n );\n this.totalsTablePromise\n .then(totalsTable => {\n this.totalsTablePromise = null;\n this.setTotalsTable(totalsTable);\n })\n .catch(err => {\n if (PromiseUtils.isCanceled(err)) {\n return;\n }\n\n log.error('Unable to set next totalsTable', err);\n this.totalsTablePromise = null;\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, { detail: err })\n );\n });\n }\n\n setTotalsTable(totalsTable) {\n log.debug('setTotalsTable', totalsTable);\n\n if (this.totalsTable !== null) {\n if (this.listenerCount > 0) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.totalsTable.close();\n }\n\n this.totalsTable = totalsTable;\n\n if (this.listenerCount > 0 && this.totalsTable != null) {\n this.addTotalsListeners(totalsTable);\n }\n }\n\n setViewport(top, bottom, columns) {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n\n const { viewport } = this;\n if (\n viewport != null &&\n viewport.top === top &&\n viewport.bottom === bottom &&\n viewport.columns === columns\n ) {\n log.debug2('Ignoring duplicate viewport', viewport);\n return;\n }\n\n this.viewport = {\n top,\n bottom,\n columns,\n };\n log.debug2('setViewport', this.viewport);\n\n this.applyViewport();\n }\n\n /**\n * Applies the current viewport to the underlying table.\n */\n applyViewport() {\n if (!this.viewport) {\n return;\n }\n\n log.debug2('applyViewport', this.viewport);\n const { top, bottom, columns } = this.viewport;\n const [viewportTop, viewportBottom] = this.getCachedViewportRowRange(\n top,\n bottom\n );\n this.applyBufferedViewport(viewportTop, viewportBottom, columns);\n }\n\n applyBufferedViewport(viewportTop, viewportBottom, columns) {\n log.debug2('applyBufferedViewport', viewportTop, viewportBottom, columns);\n if (this.subscription == null) {\n log.debug2('applyBufferedViewport creating new subscription');\n this.subscription = this.table.setViewport(\n viewportTop,\n viewportBottom,\n columns\n );\n } else {\n log.debug2('applyBufferedViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }\n\n async snapshot(ranges, includeHeaders = false, formatValue = value => value) {\n if (this.subscription == null) {\n throw new Error('No subscription available');\n }\n\n const consolidated = GridRange.consolidate(ranges);\n if (!IrisGridUtils.isValidSnapshotRanges(consolidated)) {\n throw new Error('Invalid snapshot ranges', ranges);\n }\n\n // Need to separate out the floating ranges as they're from a different source\n const topFloatingRowsSet = new Set();\n const tableRanges = [];\n const bottomFloatingRowsSet = new Set();\n for (let i = 0; i < consolidated.length; i += 1) {\n const range = consolidated[i];\n\n // Get the rows that are in the top aggregations section\n for (\n let r = range.startRow;\n r <= range.endRow && r < this.floatingTopRowCount;\n r += 1\n ) {\n topFloatingRowsSet.add(r);\n }\n\n // Separate out the range that is part of the actual table (ie. not the floating ranges, not aggregations)\n if (\n range.endRow >= this.floatingTopRowCount &&\n range.startRow <= this.floatingTopRowCount + this.table.size\n ) {\n tableRanges.push(\n new GridRange(\n range.startColumn,\n Math.min(Math.max(0, range.startRow - this.floatingTopRowCount)),\n range.endColumn,\n Math.min(\n Math.max(0, range.endRow - this.floatingTopRowCount),\n this.table.size - this.floatingTopRowCount\n )\n )\n );\n }\n\n // Get the rows that are in the bottom aggregations section\n for (\n let r = Math.max(\n range.startRow,\n this.floatingTopRowCount + this.table.size\n );\n r <= range.endRow &&\n r <\n this.floatingTopRowCount +\n this.table.size +\n this.floatingBottomRowCount;\n r += 1\n ) {\n bottomFloatingRowsSet.add(r);\n }\n }\n\n const columns = IrisGridUtils.columnsFromRanges(consolidated, this.columns);\n const result = [];\n if (includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n const topFloatingRows = [...topFloatingRowsSet].sort();\n for (let i = 0; i < topFloatingRows.length; i += 1) {\n const row = topFloatingRows[i];\n const rowData = columns.map(column =>\n formatValue(\n this.valueForCell(this.getColumnIndexByName(column.name), row),\n column\n )\n );\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n if (tableRanges.length > 0) {\n const rangeSet = IrisGridUtils.rangeSetFromRanges(tableRanges);\n const snapshot = await this.subscription.snapshot(rangeSet, columns);\n result.push(\n ...snapshot.rows.map(rowData =>\n columns.map(column => formatValue(rowData.get(column), column))\n )\n );\n }\n\n const bottomFloatingRows = [...bottomFloatingRowsSet].sort();\n for (let i = 0; i < bottomFloatingRows.length; i += 1) {\n const row = bottomFloatingRows[i];\n const rowData = columns.map(column =>\n formatValue(\n this.valueForCell(this.getColumnIndexByName(column.name), row),\n column\n )\n );\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n return result;\n }\n\n /**\n * Get a text snapshot of the provided ranges\n * @param {GridRange[]} ranges The ranges to get the snapshot for\n * @param {boolean} includeHeaders Whether to include the headers in the snapshot or not\n * @param {(unknown, dh.Column) => string} formatValue Function for formatting the raw value into a string\n * @returns {string} A formatted string of all the data, columns separated by `\\t` and rows separated by `\\n`\n */\n async textSnapshot(\n ranges,\n includeHeaders = false,\n formatValue = value => `${value}`\n ) {\n log.debug2('textSnapshot', ranges, includeHeaders);\n\n const data = await this.snapshot(ranges, includeHeaders, formatValue);\n return data.map(row => row.join('\\t')).join('\\n');\n }\n\n get isFilterRequired() {\n return this.table.isUncoalesced;\n }\n\n get hasExpandableRows() {\n return false;\n }\n\n isFilterable(columnIndex) {\n return this.getCachedFilterableColumnSet(this.columns).has(columnIndex);\n }\n\n isRowExpanded(y) {\n const row = this.row(y);\n return row?.isExpanded ?? false;\n }\n\n setRowExpanded(y, isExpanded) {\n this.table.setExpanded(y, isExpanded);\n }\n\n depthForRow(y) {\n const row = this.row(y);\n return (row?.depth ?? 1) - 1;\n }\n\n async valuesTable(column) {\n let table = null;\n try {\n table = await this.table.copy();\n table.applyFilter([]);\n table.applySort([]);\n return table.selectDistinct([column]);\n } finally {\n if (table != null) {\n table.close();\n }\n }\n }\n\n async export() {\n return this.table.freeze();\n }\n\n columnStatistics(column) {\n return this.table.getColumnStatistics(column);\n }\n\n getCachedFilterableColumnSet = memoize(\n columns => new Set(columns.map((_, index) => index))\n );\n\n getCachedFormattedString = memoizeClear(\n (formatter, value, columnType, columnName, formatOverride) =>\n formatter.getFormattedString(\n value,\n columnType,\n columnName,\n formatOverride\n ),\n { max: 10000 }\n );\n\n getCachedCustomColumnFormatFlag = memoizeClear(\n FormatterUtils.isCustomColumnFormatDefined,\n { max: 10000 }\n );\n\n getCachedViewportRowRange = memoize((top, bottom) => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * IrisGridTableModel.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * IrisGridTableModel.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n });\n\n getCachedPendingErrors = memoize(\n (pendingDataMap, columns, keyColumnCount) => {\n const map = new Map();\n pendingDataMap.forEach((row, rowIndex) => {\n const { data: rowData } = row;\n for (let i = 0; i < keyColumnCount; i += 1) {\n if (!rowData.has(i)) {\n if (!map.has(rowIndex)) {\n map.set(rowIndex, []);\n }\n map\n .get(rowIndex)\n .push(new MissingKeyError(rowIndex, columns[i].name));\n }\n }\n });\n return map;\n }\n );\n\n isColumnMovable(x) {\n const columnName = this.columns[x].name;\n if (\n this.layoutHints?.frontColumns?.includes(columnName) ||\n this.layoutHints?.backColumns?.includes(columnName) ||\n this.layoutHints?.frozenColumns?.includes(columnName)\n ) {\n return false;\n }\n return !this.isKeyColumn(x);\n }\n\n isColumnFrozen(x) {\n return (\n this.layoutHints?.frozenColumns?.includes(this.columns[x].name) ?? false\n );\n }\n\n isKeyColumn(x) {\n return x < (this.inputTable?.keyColumns.length ?? 0);\n }\n\n isRowMovable() {\n return false;\n }\n\n isEditableRange(range) {\n return (\n this.inputTable != null &&\n GridRange.isBounded(range) &&\n ((this.isPendingRow(range.startRow) && this.isPendingRow(range.endRow)) ||\n (range.startColumn >= this.inputTable.keyColumns.length &&\n range.endColumn >= this.inputTable.keyColumns.length)) &&\n range.startRow >= this.floatingTopRowCount &&\n range.startRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount &&\n range.endRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n );\n }\n\n isDeletableRange(range) {\n return (\n this.inputTable != null &&\n range.startRow != null &&\n range.endRow != null &&\n range.startRow >= this.floatingTopRowCount &&\n range.startRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount &&\n range.endRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n );\n }\n\n isEditableRanges(ranges) {\n return ranges.every(range => this.isEditableRange(range));\n }\n\n isDeletableRanges(ranges) {\n return ranges.every(range => this.isDeletableRange(range));\n }\n\n /**\n * @returns {GridRange} A range corresponding to the underlying table\n */\n getTableAreaRange() {\n return new GridRange(\n null,\n this.floatingTopRowCount,\n null,\n this.floatingTopRowCount + this.table.size - 1\n );\n }\n\n /**\n * @returns {GridRange} A range corresponding to the pending new rows\n */\n getPendingAreaRange() {\n return new GridRange(\n null,\n this.floatingTopRowCount + this.table.size,\n null,\n this.floatingTopRowCount + this.table.size + this.pendingNewRowCount - 1\n );\n }\n\n /**\n * Set value in an editable table\n * @param {number} x The column to set\n * @param {number} y The row to set\n * @param {string} value The value to set\n * @returns {Promise<void>} A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForCell(x, y, text) {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n return this.setValueForRanges([new GridRange(x, y, x, y)], text);\n }\n\n /**\n * Set value in an editable table\n * @param {GridRange[]} ranges The ranges to set\n * @param {string} value The values to set\n * @returns {Promise<void>} A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForRanges(ranges, text) {\n if (!this.isEditableRanges(ranges)) {\n throw new Error('Uneditable ranges', ranges);\n }\n\n try {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n const columnSet = new Set();\n\n // Formatted text for each column\n // Since there could be different formatting for each column, but the value will be the same across rows\n const formattedText = [];\n GridRange.forEachCell(ranges, (x, y) => {\n const column = this.columns[x];\n columnSet.add(column);\n if (formattedText[x] === undefined) {\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n formattedText[x] =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n }\n this.cachePendingValue(x, y, formattedText[x]);\n });\n\n // Take care of updates to the pending new area first, as they can be updated synchronously\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range =>\n GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n )\n );\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(this.pendingNewDataMap);\n GridRange.forEachCell(pendingRanges, (columnIndex, rowIndex) => {\n if (!newDataMap.has(rowIndex)) {\n newDataMap.set(rowIndex, { data: new Map() });\n }\n\n const column = this.columns[columnIndex];\n const row = newDataMap.get(rowIndex);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n if (value != null) {\n newRowData.set(columnIndex, { value });\n } else {\n newRowData.delete(columnIndex);\n }\n if (newRowData.size > 0) {\n newDataMap.set(rowIndex, { ...row, data: newRowData });\n } else {\n newDataMap.delete(rowIndex);\n }\n });\n this.pendingDataMap = newDataMap;\n }\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(\n range => new GridRange(null, range.startRow, null, range.endRow)\n )\n );\n const newRows = data.map(row => {\n const newRow = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n\n columnSet.forEach(column => {\n newRow[column.name] = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n });\n return newRow;\n });\n\n const result = await this.inputTable.addRows(newRows);\n\n log.debug(\n 'setValueForRanges(',\n ranges,\n ',',\n text,\n ') set tableRanges',\n tableRanges,\n 'result',\n result\n );\n }\n\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n GridRange.forEachCell(ranges, (x, y) => {\n this.cacheFormattedValue(x, y, formattedText[x]);\n });\n } catch (err) {\n log.error('Unable to set ranges', ranges, text, err);\n } finally {\n GridRange.forEachCell(ranges, (x, y) => {\n this.clearPendingValue(x, y);\n });\n }\n }\n\n async setValues(edits = []) {\n log.debug('setValues(', edits, ')');\n if (\n !edits.every(edit =>\n this.isEditableRange(GridRange.makeCell(edit.x, edit.y))\n )\n ) {\n throw new Error('Uneditable ranges', edits);\n }\n\n try {\n const newDataMap = new Map(this.pendingNewDataMap);\n\n // Cache the display values\n edits.forEach(edit => {\n const { x, y, text } = edit;\n const column = this.columns[x];\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n this.cachePendingValue(x, y, formattedText);\n\n // Take care of updates to the pending new area as well, as that can be updated synchronously\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n if (!newDataMap.has(pendingRow)) {\n newDataMap.set(pendingRow, { data: new Map() });\n }\n\n const row = newDataMap.get(pendingRow);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n if (value != null) {\n newRowData.set(x, { value });\n } else {\n newRowData.delete(x);\n }\n if (newRowData.size > 0) {\n newDataMap.set(pendingRow, { ...row, data: newRowData });\n } else {\n newDataMap.delete(pendingRow);\n }\n }\n });\n\n this.pendingDataMap = newDataMap;\n\n // Send an update right after setting the pending map so the values are displayed immediately\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n\n // Need to group by row...\n const rowEditMap = edits.reduce((rowMap, edit) => {\n if (!rowMap.has(edit.y)) {\n rowMap.set(edit.y, []);\n }\n rowMap.get(edit.y).push(edit);\n return rowMap;\n }, new Map());\n\n const ranges = GridRange.consolidate(\n edits.map(edit => GridRange.makeCell(edit.x, edit.y))\n );\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(\n range => new GridRange(null, range.startRow, null, range.endRow)\n )\n );\n const newRows = data.map((row, dataIndex) => {\n let rowIndex = null;\n let r = dataIndex;\n for (let i = 0; i < tableRanges.length; i += 1) {\n const range = tableRanges[i];\n const rangeRowCount = GridRange.rowCount([range]);\n if (r < rangeRowCount) {\n rowIndex = range.startRow + r;\n break;\n }\n r -= rangeRowCount;\n }\n\n const newRow = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n\n const rowEdits = rowEditMap.get(rowIndex);\n if (rowEdits != null) {\n rowEdits.forEach(edit => {\n const column = this.columns[edit.x];\n newRow[column.name] = TableUtils.makeValue(\n column.type,\n edit.text,\n this.formatter.timeZone\n );\n });\n }\n return newRow;\n });\n\n log.info('setValues setting tableRanges', tableRanges);\n\n const result = await this.inputTable.addRows(newRows);\n\n log.info('setValues set tableRanges', tableRanges, 'SUCCESS', result);\n }\n\n // We've sent the changes to the server, but have not yet got an update with those changes committed\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n edits.forEach(edit => {\n const { x, y, text } = edit;\n const column = this.columns[x];\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n this.cacheFormattedValue(x, y, formattedText);\n });\n } finally {\n edits.forEach(edit => {\n this.clearPendingValue(edit.x, edit.y);\n });\n }\n }\n\n async commitPending() {\n if (this.pendingNewDataMap.size <= 0) {\n throw new Error('No pending changes to commit');\n }\n\n try {\n this.isSaveInProgress = true;\n\n const newRows = [];\n this.pendingNewDataMap.forEach(row => {\n const newRow = {};\n row.data.forEach(({ value }, columnIndex) => {\n const column = this.columns[columnIndex];\n newRow[column.name] = value;\n });\n newRows.push(newRow);\n });\n const result = await this.inputTable.addRows(newRows);\n\n log.debug('commitPending()', this.pendingNewDataMap, 'result', result);\n\n this.pendingNewDataMap = new Map();\n this.pendingNewDataErrors = new Map();\n this.pendingNewRowCount = Math.max(\n 0,\n (this.viewport?.bottom ?? 0) - this.table.size\n );\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n return result;\n } finally {\n this.isSaveInProgress = false;\n }\n }\n\n editValueForCell(x, y) {\n return this.textValueForCell(x, y);\n }\n\n async delete(ranges) {\n if (!this.isDeletableRanges(ranges)) {\n throw new Error('Undeletable ranges', ranges);\n }\n\n const { keyColumns } = this.inputTable;\n if (keyColumns.length === 0) {\n throw new Error('No key columns to allow deletion');\n }\n\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range =>\n GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n )\n );\n\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(this.pendingNewDataMap);\n for (let i = 0; i < pendingRanges.length; i += 1) {\n const pendingRange = pendingRanges[i];\n for (let r = pendingRange.startRow; r <= pendingRange.endRow; r += 1) {\n newDataMap.delete(r);\n }\n }\n this.pendingNewDataMap = newDataMap;\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length <= 0) {\n return null;\n }\n const [data, deleteTable] = await Promise.all([\n // Need to get the key values of each row\n this.snapshot(\n tableRanges.map(\n range =>\n new GridRange(\n 0,\n range.startRow,\n keyColumns.length - 1,\n range.endRow\n )\n )\n ),\n this.table.copy(),\n ]);\n\n // Now copy the existing table and filter it on the values in the snapshot for the key columns in the input table\n const filters = data.map(row => {\n const columnFilters = [];\n for (let c = 0; c < keyColumns.length; c += 1) {\n const column = keyColumns[c];\n const value = row[c];\n const filterValue = TableUtils.makeFilterRawValue(column.type, value);\n const filter = column.filter().eq(filterValue);\n columnFilters.push(filter);\n }\n return columnFilters.reduce((agg, curr) => (agg ? agg.and(curr) : curr));\n });\n\n const filter = filters.reduce((agg, curr) => (agg ? agg.or(curr) : curr));\n deleteTable.applyFilter([filter]);\n\n const result = await this.inputTable.deleteTable(deleteTable);\n deleteTable.close();\n return result;\n }\n\n isValidForCell(x, y, value) {\n try {\n const column = this.columns[x];\n TableUtils.makeValue(column.type, value, this.formatter.timeZone);\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n\nexport default IrisGridTableModel;\n"],"file":"IrisGridTableModel.js"}
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridTableModel.js"],"names":["memoize","throttle","GridRange","dh","Log","PromiseUtils","memoizeClear","TableUtils","Formatter","FormatterUtils","IrisGridModel","AggregationOperation","IrisGridUtils","MissingKeyError","log","module","SET_VIEWPORT_THROTTLE","APPLY_VIEWPORT_THROTTLE","IrisGridTableModel","constructor","table","formatter","inputTable","columns","hints","columnMap","Map","forEach","col","set","name","frontColumns","backColumns","frozenColumns","map","get","filter","Boolean","length","Error","frontColumnSet","Set","backColumnSet","frozenColumnSet","middleColumns","has","indices","i","_","index","value","columnType","columnName","formatOverride","getFormattedString","max","isCustomColumnFormatDefined","top","bottom","viewHeight","viewportTop","Math","ROW_BUFFER_PAGES","viewportBottom","pendingDataMap","keyColumnCount","row","rowIndex","data","rowData","push","handleTableDisconnect","bind","handleTableReconnect","handleTableUpdate","handleTotalsUpdate","handleRequestFailed","handleCustomColumnsChanged","setViewport","applyViewport","leading","irisFormatter","listenerCount","subscription","viewport","viewportData","formattedStringData","pendingStringData","isSaveInProgress","totalsTable","totalsTablePromise","totals","totalsDataMap","pendingNewDataMap","pendingNewRowCount","close","cancel","startListening","addEventListener","Table","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_UPDATED","Client","EVENT_REQUEST_FAILED","EVENT_CUSTOMCOLUMNSCHANGED","addTotalsListeners","stopListening","removeEventListener","removeTotalsListeners","closeSubscription","dispatchEvent","CustomEvent","EVENT","DISCONNECT","RECONNECT","event","copyViewportData","detail","UPDATED","copyTotalsData","REQUEST_FAILED","COLUMNS_CHANGED","rowCount","size","operationOrder","pendingDataErrors","getCachedPendingErrors","keyColumns","isValidIndex","columnIndex","maxPendingDataRow","PENDING_DATA_UPDATED","pendingRowCount","count","keys","columnCount","floatingBottomRowCount","showOnTop","floatingTopRowCount","isExportAvailable","freeze","isColumnStatisticsAvailable","getColumnStatistics","isValuesTableAvailable","selectDistinct","copy","isRollupAvailable","rollup","isSelectDistinctAvailable","isCustomColumnsAvailable","applyCustomColumns","isChartBuilderAvailable","isTotalsAvailable","getTotalsTable","isEditable","cacheFormattedValue","x","y","text","cachePendingValue","clearPendingValue","column","textValueForCell","undefined","valueForCell","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","type","formatForCell","formatString","displayString","textForCell","isKeyColumn","pendingRow","colorForCell","theme","dataForCell","format","color","isPendingRow","pendingTextColor","isDateType","dateColor","isNumberType","positiveNumberColor","negativeNumberColor","zeroNumberColor","errorTextColor","textColor","backgroundColorForCell","backgroundColor","textAlignForCell","textForColumnHeader","textForRowFooter","totalsRow","getColumnsWithLayoutHints","layoutHints","floatingLeftColumnCount","groupedColumns","description","totalsRowCount","operation","offset","viewportY","rows","isTotalsRow","warn","extractViewportData","totalsData","error","dataMap","defaultOperation","SUM","operationMap","c","split","findIndex","getFormat","debug2","getColumnIndexByName","getColumnIndicesByNameMap","newData","r","newRow","extractViewportRow","applyFilter","FORMATTER_UPDATED","getCachedFormattedString","sort","applySort","customColumns","totalsConfig","debug","setTotalsTable","makeCancelable","then","catch","err","isCanceled","getCachedViewportRowRange","applyBufferedViewport","snapshot","ranges","includeHeaders","formatValue","consolidated","consolidate","isValidSnapshotRanges","topFloatingRowsSet","tableRanges","bottomFloatingRowsSet","range","startRow","endRow","add","startColumn","min","endColumn","columnsFromRanges","result","topFloatingRows","rangeSet","rangeSetFromRanges","bottomFloatingRows","textSnapshot","join","isFilterRequired","isUncoalesced","hasExpandableRows","isFilterable","getCachedFilterableColumnSet","isRowExpanded","isExpanded","setRowExpanded","setExpanded","depthForRow","depth","valuesTable","export","columnStatistics","isColumnMovable","includes","isColumnFrozen","isRowMovable","isEditableRange","isBounded","isDeletableRange","isEditableRanges","every","isDeletableRanges","getTableAreaRange","getPendingAreaRange","setValueForCell","setValueForRanges","columnSet","formattedText","forEachCell","makeValue","timeZone","pendingAreaRange","pendingRanges","intersection","newDataMap","newRowData","delete","tableAreaRange","newRows","addRows","setValues","edits","edit","makeCell","rowEditMap","reduce","rowMap","dataIndex","rangeRowCount","rowEdits","info","commitPending","pendingNewDataErrors","editValueForCell","pendingRange","deleteTable","Promise","all","filters","columnFilters","filterValue","makeFilterRawValue","eq","agg","curr","and","or","isValidForCell","e"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport { GridRange } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport memoizeClear from './memoizeClear';\nimport TableUtils from './TableUtils';\nimport Formatter from './Formatter';\nimport FormatterUtils from './FormatterUtils';\nimport IrisGridModel from './IrisGridModel';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport IrisGridUtils from './IrisGridUtils';\nimport MissingKeyError from './MissingKeyError';\n\nconst log = Log.module('IrisGridTableModel');\n\nconst SET_VIEWPORT_THROTTLE = 150;\nconst APPLY_VIEWPORT_THROTTLE = 0;\n\n/**\n * Model for a grid showing an iris data table\n */\nclass IrisGridTableModel extends IrisGridModel {\n static ROW_BUFFER_PAGES = 1;\n\n static COLUMN_BUFFER_PAGES = 0;\n\n /**\n * @param {dh.Table} table Iris data table to be used in the model\n * @param {Formatter} formatter The formatter to use when getting formats\n * @param {dh.InputTable} inputTable Iris input table associated with this table\n */\n constructor(table, formatter = new Formatter(), inputTable = null) {\n super();\n\n this.handleTableDisconnect = this.handleTableDisconnect.bind(this);\n this.handleTableReconnect = this.handleTableReconnect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTotalsUpdate = this.handleTotalsUpdate.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.setViewport = throttle(\n this.setViewport.bind(this),\n SET_VIEWPORT_THROTTLE\n );\n this.applyViewport = throttle(\n this.applyViewport.bind(this),\n APPLY_VIEWPORT_THROTTLE,\n { leading: false }\n );\n\n this.irisFormatter = formatter;\n this.inputTable = inputTable;\n this.listenerCount = 0;\n this.subscription = null;\n this.table = table;\n this.viewport = null;\n this.viewportData = null;\n this.formattedStringData = [];\n this.pendingStringData = [];\n this.isSaveInProgress = false;\n\n this.totalsTable = null;\n this.totalsTablePromise = null;\n this.totals = null;\n this.totalsDataMap = null;\n\n // Map from new row index to their values. Only for input tables that can have new rows added.\n // The index of these rows start at 0, and they are appended at the end of the regular table data.\n // These rows can be sparse, so using a map instead of an array.\n this.pendingNewDataMap = new Map();\n this.pendingNewRowCount = 0;\n }\n\n close() {\n this.table.close();\n if (this.totalsTable !== null) {\n this.totalsTable.close();\n }\n if (this.totalsTablePromise !== null) {\n this.totalsTablePromise.cancel();\n }\n }\n\n startListening() {\n super.startListening();\n\n this.table.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n this.table.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.addEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.addTotalsListeners(this.totalsTable);\n }\n\n this.applyViewport();\n }\n\n stopListening() {\n super.stopListening();\n\n this.table.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n this.table.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.removeEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.closeSubscription();\n }\n\n addTotalsListeners(totalsTable) {\n totalsTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n\n // Totals table only has one row of data\n totalsTable.setViewport(0, 0);\n }\n\n removeTotalsListeners(totalsTable) {\n totalsTable.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n }\n\n handleTableDisconnect() {\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.DISCONNECT));\n }\n\n handleTableReconnect() {\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.RECONNECT));\n }\n\n handleTableUpdate(event) {\n this.copyViewportData(event.detail);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleTotalsUpdate(event) {\n this.copyTotalsData(event.detail);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleRequestFailed(event) {\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, event)\n );\n }\n\n handleCustomColumnsChanged() {\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: this.columns,\n })\n );\n }\n\n get rowCount() {\n return (\n this.table.size +\n (this.totals?.operationOrder?.length ?? 0) +\n this.pendingNewRowCount\n );\n }\n\n get pendingDataErrors() {\n return this.getCachedPendingErrors(\n this.pendingNewDataMap,\n this.columns,\n this.inputTable?.keyColumns.length ?? 0\n );\n }\n\n get pendingDataMap() {\n return this.pendingNewDataMap;\n }\n\n set pendingDataMap(map) {\n if (map === this.pendingNewDataMap) {\n return;\n }\n\n map.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error('Invalid rowIndex', rowIndex);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error('Invalid columnIndex', columnIndex);\n }\n });\n });\n\n this.pendingNewDataMap = map;\n\n this.pendingNewRowCount = Math.max(\n this.pendingNewRowCount,\n this.maxPendingDataRow\n );\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n }\n\n get pendingRowCount() {\n return this.pendingNewRowCount;\n }\n\n set pendingRowCount(count) {\n if (count === this.pendingNewRowCount) {\n return;\n }\n\n this.pendingNewRowCount = Math.max(0, count, this.maxPendingDataRow);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n get maxPendingDataRow() {\n return this.pendingNewDataMap.size > 0\n ? Math.max(...this.pendingNewDataMap.keys()) + 1\n : 0;\n }\n\n get columnCount() {\n return this.columns.length;\n }\n\n get floatingBottomRowCount() {\n return this.totals?.showOnTop\n ? 0\n : this.totals?.operationOrder?.length ?? 0;\n }\n\n get floatingTopRowCount() {\n return this.totals?.showOnTop\n ? this.totals?.operationOrder?.length ?? 0\n : 0;\n }\n\n get isExportAvailable() {\n return this.table.freeze != null;\n }\n\n get isColumnStatisticsAvailable() {\n return this.table.getColumnStatistics != null;\n }\n\n get isValuesTableAvailable() {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isRollupAvailable() {\n return this.table.rollup != null;\n }\n\n get isSelectDistinctAvailable() {\n return this.table.selectDistinct != null;\n }\n\n get isCustomColumnsAvailable() {\n return this.table.applyCustomColumns != null;\n }\n\n get isChartBuilderAvailable() {\n return true;\n }\n\n get isTotalsAvailable() {\n return this.table.getTotalsTable != null;\n }\n\n get isEditable() {\n return !this.isSaveInProgress && this.inputTable != null;\n }\n\n cacheFormattedValue(x, y, text) {\n if (this.formattedStringData[x] == null) {\n this.formattedStringData[x] = [];\n }\n this.formattedStringData[x][y] = text;\n }\n\n cachePendingValue(x, y, text) {\n if (this.pendingStringData[x] == null) {\n this.pendingStringData[x] = [];\n }\n this.pendingStringData[x][y] = text;\n }\n\n clearPendingValue(x, y) {\n const column = this.pendingStringData[x];\n if (column != null) {\n delete column[y];\n }\n }\n\n textValueForCell(x, y) {\n // First check if there's any pending values we should read from\n if (this.pendingStringData[x]?.[y] !== undefined) {\n return this.pendingStringData[x][y];\n }\n\n // Use a separate cache from memoization just for the strings that are currently displayed\n if (this.formattedStringData[x]?.[y] === undefined) {\n const value = this.valueForCell(x, y);\n if (value == null) {\n return null;\n }\n\n const column = this.columns[x];\n const hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(\n this.formatter,\n column.name,\n column.type\n );\n let formatOverride = null;\n if (!hasCustomColumnFormat) {\n const formatForCell = this.formatForCell(x, y);\n if (formatForCell?.formatString != null) {\n formatOverride = formatForCell;\n }\n }\n const text = this.displayString(\n value,\n column.type,\n column.name,\n formatOverride\n );\n this.cacheFormattedValue(x, y, text);\n }\n\n return this.formattedStringData[x][y];\n }\n\n textForCell(x, y) {\n const text = this.textValueForCell(x, y);\n if (text == null && this.isKeyColumn(x)) {\n const pendingRow = this.pendingRow(y);\n if (this.pendingDataMap.has(pendingRow)) {\n // Asterisk to show a value is required for a key column on a row that has some data entered\n return '*';\n }\n }\n return text;\n }\n\n colorForCell(x, y, theme) {\n const data = this.dataForCell(x, y);\n if (data) {\n const { format } = data;\n if (format && format.color) {\n return format.color;\n }\n\n if (this.isPendingRow(y)) {\n // Data entered in a pending row\n return theme.pendingTextColor;\n }\n\n // Fallback to formatting based on the value/type of the cell\n const { value } = data;\n if (value != null) {\n const column = this.columns[x];\n if (TableUtils.isDateType(column.type) || column.name === 'Date') {\n return theme.dateColor;\n }\n if (TableUtils.isNumberType(column.type)) {\n if (value > 0) {\n return theme.positiveNumberColor;\n }\n if (value < 0) {\n return theme.negativeNumberColor;\n }\n return theme.zeroNumberColor;\n }\n }\n } else if (this.isPendingRow(y) && this.isKeyColumn(x)) {\n return theme.errorTextColor;\n }\n\n return theme.textColor;\n }\n\n backgroundColorForCell(x, y) {\n return this.formatForCell(x, y)?.backgroundColor;\n }\n\n textAlignForCell(x) {\n const column = this.columns[x];\n const { type } = column;\n\n if (TableUtils.isNumberType(type)) {\n return 'right';\n }\n if (TableUtils.isDateType(type) || column.name === 'Date') {\n return 'center';\n }\n return 'left';\n }\n\n textForColumnHeader(x) {\n const column = this.columns[x];\n return `${column.name}`;\n }\n\n textForRowFooter(y) {\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null) {\n return this.totals.operationOrder[totalsRow];\n }\n return '';\n }\n\n getColumnsWithLayoutHints = memoize((columns, hints) => {\n if (hints) {\n const columnMap = new Map();\n columns.forEach(col => columnMap.set(col.name, col));\n\n let frontColumns = [];\n let backColumns = [];\n let frozenColumns = [];\n\n if (hints.frontColumns) {\n frontColumns = hints.frontColumns\n .map(name => columnMap.get(name))\n .filter(Boolean);\n }\n if (hints.backColumns) {\n backColumns = hints.backColumns\n .map(name => columnMap.get(name))\n .filter(Boolean);\n }\n if (hints.frozenColumns) {\n frozenColumns = hints.frozenColumns\n .map(name => columnMap.get(name))\n .filter(Boolean);\n }\n\n if (\n frontColumns.length !== (hints.frontColumns?.length ?? 0) ||\n backColumns.length !== (hints.backColumns?.length ?? 0) ||\n frozenColumns.length !== (hints.frozenColumns?.length ?? 0)\n ) {\n throw new Error(\n 'Layout hints are invalid (contain invalid column names)'\n );\n }\n\n const frontColumnSet = new Set(frontColumns);\n const backColumnSet = new Set(backColumns);\n const frozenColumnSet = new Set(frozenColumns);\n const middleColumns = columns.filter(\n col =>\n !frontColumnSet.has(col) &&\n !backColumnSet.has(col) &&\n !frozenColumnSet.has(col)\n );\n\n return [\n ...frozenColumns,\n ...frontColumns,\n ...middleColumns,\n ...backColumns,\n ];\n }\n return columns;\n });\n\n get columns() {\n return this.getColumnsWithLayoutHints(\n this.table.columns,\n this.table.layoutHints\n );\n }\n\n get layoutHints() {\n return this.table.layoutHints;\n }\n\n get floatingLeftColumnCount() {\n return this.layoutHints?.frozenColumns?.length ?? 0;\n }\n\n get groupedColumns() {\n return [];\n }\n\n get description() {\n return this.table.description;\n }\n\n row(y) {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null) {\n const operation = this.totals.operationOrder[totalsRow];\n return this.totalsDataMap?.get(operation) ?? null;\n }\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n return this.pendingNewDataMap.get(pendingRow) ?? null;\n }\n const offset = this.viewportData?.offset ?? 0;\n const viewportY = (showOnTop ? y - totalsRowCount : y) - offset;\n return this.viewportData?.rows?.[viewportY] ?? null;\n }\n\n /**\n * Translate from the row in the model to a row in the totals table.\n * If the row is not a totals row, return null\n * @param {number} y The row in the model to get the totals row for\n * @returns {number|null} The row within the totals table if it's a totals row, null otherwise\n */\n totalsRow(y) {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = showOnTop ? y : y - this.table.size;\n if (totalsRow >= 0 && totalsRow < totalsRowCount) {\n return totalsRow;\n }\n return null;\n }\n\n /**\n * Translate from the row in the model to a pending input row.\n * If the row is not a pending input row, return null\n * @param {number} y The row in the model to get the pending row for\n * @returns {number|null} The row within the pending input rows if it's a pending row, null otherwise\n */\n pendingRow(y) {\n const pendingRow = y - this.floatingTopRowCount - this.table.size;\n if (pendingRow >= 0 && pendingRow < this.pendingNewRowCount) {\n return pendingRow;\n }\n\n return null;\n }\n\n /**\n * Check if a row is a totals table row\n * @param {number} y The row in the model to check if it's a totals table row\n * @returns {boolean} True if the row is a totals row, false if not\n */\n isTotalsRow(y) {\n return this.totalsRow(y) != null;\n }\n\n /**\n * Check if a row is a pending input row\n * @param {number} y The row in the model to check if it's a pending new row\n * @returns {boolean} True if the row is a pending new row, false if not\n */\n isPendingRow(y) {\n return this.pendingRow(y) != null;\n }\n\n dataForCell(x, y) {\n return this.row(y)?.data.get(x);\n }\n\n formatForCell(x, y) {\n return this.dataForCell(x, y)?.format;\n }\n\n valueForCell(x, y) {\n return this.dataForCell(x, y)?.value;\n }\n\n copyViewportData(data) {\n if (!data) {\n log.warn('invalid data!');\n return;\n }\n\n this.viewportData = this.extractViewportData(data);\n this.formattedStringData = [];\n }\n\n copyTotalsData(totalsData) {\n if (!totalsData) {\n log.warn('invalid data!');\n return;\n }\n\n const { columns, rows } = totalsData;\n if (rows.length !== 1) {\n log.error(\n 'Unexpected number of rows received for totals table, ignoring update'\n );\n return;\n }\n\n const dataMap = new Map();\n const row = rows[0];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const operationMap = this.totals?.operationMap;\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const [\n name,\n operation = operationMap?.[name]?.[0] ?? defaultOperation,\n ] = column.name.split('__');\n if (!dataMap.has(operation)) {\n dataMap.set(operation, { data: new Map() });\n }\n const { data: rowData } = dataMap.get(operation);\n const columnIndex = this.columns.findIndex(col => col.name === name);\n rowData.set(columnIndex, {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n log.debug2('copyTotalsData', dataMap);\n\n this.totalsDataMap = dataMap;\n }\n\n /**\n * Use this as the canonical column index since things like layoutHints could have\n * changed the column order.\n */\n getColumnIndexByName(name) {\n return this.getColumnIndicesByNameMap(this.columns).get(name);\n }\n\n getColumnIndicesByNameMap = memoize(columns => {\n const indices = new Map();\n columns.forEach(({ name }, i) => indices.set(name, i));\n return indices;\n });\n\n /**\n * Copies all the viewport data into an object that we can reference later.\n * @param {ViewportData} data The data to copy from\n */\n extractViewportData(data) {\n const newData = {\n offset: data.offset,\n rows: [],\n };\n\n const { columns } = data;\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const newRow = this.extractViewportRow(row, columns);\n newData.rows.push(newRow);\n }\n\n return newData;\n }\n\n extractViewportRow(row, columns) {\n const data = new Map();\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n\n data.set(this.getColumnIndexByName(column.name), {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n return { data };\n }\n\n closeSubscription() {\n log.debug2('closeSubscription', this.subscription);\n if (this.subscription) {\n this.subscription.close();\n this.subscription = null;\n }\n\n this.setViewport.cancel();\n this.applyViewport.cancel();\n }\n\n get filter() {\n return this.table.filter;\n }\n\n set filter(filter) {\n this.closeSubscription();\n this.table.applyFilter(filter);\n this.applyViewport();\n }\n\n get formatter() {\n return this.irisFormatter;\n }\n\n set formatter(formatter) {\n this.irisFormatter = formatter;\n this.formattedStringData = [];\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.FORMATTER_UPDATED));\n }\n\n displayString(value, columnType, columnName = '', formatOverride = null) {\n return this.getCachedFormattedString(\n this.formatter,\n value,\n columnType,\n columnName,\n formatOverride\n );\n }\n\n get sort() {\n return this.table.sort;\n }\n\n set sort(sort) {\n this.closeSubscription();\n this.table.applySort(sort);\n this.applyViewport();\n }\n\n get customColumns() {\n return this.table.customColumns ?? [];\n }\n\n set customColumns(customColumns) {\n this.closeSubscription();\n this.table.applyCustomColumns(customColumns);\n this.applyViewport();\n }\n\n set totalsConfig(totalsConfig) {\n log.debug('set totalsConfig', totalsConfig);\n\n if (totalsConfig === this.totals) {\n // Totals already set, or it will be set when the next model actually gets set\n return;\n }\n\n this.totals = totalsConfig;\n this.formattedStringData = [];\n\n if (this.totalsTablePromise != null) {\n this.totalsTablePromise.cancel();\n }\n\n this.setTotalsTable(null);\n\n if (totalsConfig == null) {\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n return;\n }\n\n this.totalsTablePromise = PromiseUtils.makeCancelable(\n this.table.getTotalsTable(totalsConfig),\n table => table.close()\n );\n this.totalsTablePromise\n .then(totalsTable => {\n this.totalsTablePromise = null;\n this.setTotalsTable(totalsTable);\n })\n .catch(err => {\n if (PromiseUtils.isCanceled(err)) {\n return;\n }\n\n log.error('Unable to set next totalsTable', err);\n this.totalsTablePromise = null;\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, { detail: err })\n );\n });\n }\n\n setTotalsTable(totalsTable) {\n log.debug('setTotalsTable', totalsTable);\n\n if (this.totalsTable !== null) {\n if (this.listenerCount > 0) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.totalsTable.close();\n }\n\n this.totalsTable = totalsTable;\n\n if (this.listenerCount > 0 && this.totalsTable != null) {\n this.addTotalsListeners(totalsTable);\n }\n }\n\n setViewport(top, bottom, columns) {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n\n const { viewport } = this;\n if (\n viewport != null &&\n viewport.top === top &&\n viewport.bottom === bottom &&\n viewport.columns === columns\n ) {\n log.debug2('Ignoring duplicate viewport', viewport);\n return;\n }\n\n this.viewport = {\n top,\n bottom,\n columns,\n };\n log.debug2('setViewport', this.viewport);\n\n this.applyViewport();\n }\n\n /**\n * Applies the current viewport to the underlying table.\n */\n applyViewport() {\n if (!this.viewport) {\n return;\n }\n\n log.debug2('applyViewport', this.viewport);\n const { top, bottom, columns } = this.viewport;\n const [viewportTop, viewportBottom] = this.getCachedViewportRowRange(\n top,\n bottom\n );\n this.applyBufferedViewport(viewportTop, viewportBottom, columns);\n }\n\n applyBufferedViewport(viewportTop, viewportBottom, columns) {\n log.debug2('applyBufferedViewport', viewportTop, viewportBottom, columns);\n if (this.subscription == null) {\n log.debug2('applyBufferedViewport creating new subscription');\n this.subscription = this.table.setViewport(\n viewportTop,\n viewportBottom,\n columns\n );\n } else {\n log.debug2('applyBufferedViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }\n\n async snapshot(ranges, includeHeaders = false, formatValue = value => value) {\n if (this.subscription == null) {\n throw new Error('No subscription available');\n }\n\n const consolidated = GridRange.consolidate(ranges);\n if (!IrisGridUtils.isValidSnapshotRanges(consolidated)) {\n throw new Error('Invalid snapshot ranges', ranges);\n }\n\n // Need to separate out the floating ranges as they're from a different source\n const topFloatingRowsSet = new Set();\n const tableRanges = [];\n const bottomFloatingRowsSet = new Set();\n for (let i = 0; i < consolidated.length; i += 1) {\n const range = consolidated[i];\n\n // Get the rows that are in the top aggregations section\n for (\n let r = range.startRow;\n r <= range.endRow && r < this.floatingTopRowCount;\n r += 1\n ) {\n topFloatingRowsSet.add(r);\n }\n\n // Separate out the range that is part of the actual table (ie. not the floating ranges, not aggregations)\n if (\n range.endRow >= this.floatingTopRowCount &&\n range.startRow <= this.floatingTopRowCount + this.table.size\n ) {\n tableRanges.push(\n new GridRange(\n range.startColumn,\n Math.min(Math.max(0, range.startRow - this.floatingTopRowCount)),\n range.endColumn,\n Math.min(\n Math.max(0, range.endRow - this.floatingTopRowCount),\n this.table.size - this.floatingTopRowCount\n )\n )\n );\n }\n\n // Get the rows that are in the bottom aggregations section\n for (\n let r = Math.max(\n range.startRow,\n this.floatingTopRowCount + this.table.size\n );\n r <= range.endRow &&\n r <\n this.floatingTopRowCount +\n this.table.size +\n this.floatingBottomRowCount;\n r += 1\n ) {\n bottomFloatingRowsSet.add(r);\n }\n }\n\n const columns = IrisGridUtils.columnsFromRanges(consolidated, this.columns);\n const result = [];\n if (includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n const topFloatingRows = [...topFloatingRowsSet].sort();\n for (let i = 0; i < topFloatingRows.length; i += 1) {\n const row = topFloatingRows[i];\n const rowData = columns.map(column =>\n formatValue(\n this.valueForCell(this.getColumnIndexByName(column.name), row),\n column\n )\n );\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n if (tableRanges.length > 0) {\n const rangeSet = IrisGridUtils.rangeSetFromRanges(tableRanges);\n const snapshot = await this.subscription.snapshot(rangeSet, columns);\n result.push(\n ...snapshot.rows.map(rowData =>\n columns.map(column => formatValue(rowData.get(column), column))\n )\n );\n }\n\n const bottomFloatingRows = [...bottomFloatingRowsSet].sort();\n for (let i = 0; i < bottomFloatingRows.length; i += 1) {\n const row = bottomFloatingRows[i];\n const rowData = columns.map(column =>\n formatValue(\n this.valueForCell(this.getColumnIndexByName(column.name), row),\n column\n )\n );\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n return result;\n }\n\n /**\n * Get a text snapshot of the provided ranges\n * @param {GridRange[]} ranges The ranges to get the snapshot for\n * @param {boolean} includeHeaders Whether to include the headers in the snapshot or not\n * @param {(unknown, dh.Column) => string} formatValue Function for formatting the raw value into a string\n * @returns {string} A formatted string of all the data, columns separated by `\\t` and rows separated by `\\n`\n */\n async textSnapshot(\n ranges,\n includeHeaders = false,\n formatValue = value => `${value}`\n ) {\n log.debug2('textSnapshot', ranges, includeHeaders);\n\n const data = await this.snapshot(ranges, includeHeaders, formatValue);\n return data.map(row => row.join('\\t')).join('\\n');\n }\n\n get isFilterRequired() {\n return this.table.isUncoalesced;\n }\n\n get hasExpandableRows() {\n return false;\n }\n\n isFilterable(columnIndex) {\n return this.getCachedFilterableColumnSet(this.columns).has(columnIndex);\n }\n\n isRowExpanded(y) {\n const row = this.row(y);\n return row?.isExpanded ?? false;\n }\n\n setRowExpanded(y, isExpanded) {\n this.table.setExpanded(y, isExpanded);\n }\n\n depthForRow(y) {\n const row = this.row(y);\n return (row?.depth ?? 1) - 1;\n }\n\n async valuesTable(column) {\n let table = null;\n try {\n table = await this.table.copy();\n table.applyFilter([]);\n table.applySort([]);\n return table.selectDistinct([column]);\n } finally {\n if (table != null) {\n table.close();\n }\n }\n }\n\n async export() {\n return this.table.freeze();\n }\n\n columnStatistics(column) {\n return this.table.getColumnStatistics(column);\n }\n\n getCachedFilterableColumnSet = memoize(\n columns => new Set(columns.map((_, index) => index))\n );\n\n getCachedFormattedString = memoizeClear(\n (formatter, value, columnType, columnName, formatOverride) =>\n formatter.getFormattedString(\n value,\n columnType,\n columnName,\n formatOverride\n ),\n { max: 10000 }\n );\n\n getCachedCustomColumnFormatFlag = memoizeClear(\n FormatterUtils.isCustomColumnFormatDefined,\n { max: 10000 }\n );\n\n getCachedViewportRowRange = memoize((top, bottom) => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * IrisGridTableModel.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * IrisGridTableModel.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n });\n\n getCachedPendingErrors = memoize(\n (pendingDataMap, columns, keyColumnCount) => {\n const map = new Map();\n pendingDataMap.forEach((row, rowIndex) => {\n const { data: rowData } = row;\n for (let i = 0; i < keyColumnCount; i += 1) {\n if (!rowData.has(i)) {\n if (!map.has(rowIndex)) {\n map.set(rowIndex, []);\n }\n map\n .get(rowIndex)\n .push(new MissingKeyError(rowIndex, columns[i].name));\n }\n }\n });\n return map;\n }\n );\n\n isColumnMovable(x) {\n const columnName = this.columns[x].name;\n if (\n this.layoutHints?.frontColumns?.includes(columnName) ||\n this.layoutHints?.backColumns?.includes(columnName) ||\n this.layoutHints?.frozenColumns?.includes(columnName)\n ) {\n return false;\n }\n return !this.isKeyColumn(x);\n }\n\n isColumnFrozen(x) {\n return (\n this.layoutHints?.frozenColumns?.includes(this.columns[x].name) ?? false\n );\n }\n\n isKeyColumn(x) {\n return x < (this.inputTable?.keyColumns.length ?? 0);\n }\n\n isRowMovable() {\n return false;\n }\n\n isEditableRange(range) {\n return (\n this.inputTable != null &&\n GridRange.isBounded(range) &&\n ((this.isPendingRow(range.startRow) && this.isPendingRow(range.endRow)) ||\n (range.startColumn >= this.inputTable.keyColumns.length &&\n range.endColumn >= this.inputTable.keyColumns.length)) &&\n range.startRow >= this.floatingTopRowCount &&\n range.startRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount &&\n range.endRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n );\n }\n\n isDeletableRange(range) {\n return (\n this.inputTable != null &&\n range.startRow != null &&\n range.endRow != null &&\n range.startRow >= this.floatingTopRowCount &&\n range.startRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount &&\n range.endRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n );\n }\n\n isEditableRanges(ranges) {\n return ranges.every(range => this.isEditableRange(range));\n }\n\n isDeletableRanges(ranges) {\n return ranges.every(range => this.isDeletableRange(range));\n }\n\n /**\n * @returns {GridRange} A range corresponding to the underlying table\n */\n getTableAreaRange() {\n return new GridRange(\n null,\n this.floatingTopRowCount,\n null,\n this.floatingTopRowCount + this.table.size - 1\n );\n }\n\n /**\n * @returns {GridRange} A range corresponding to the pending new rows\n */\n getPendingAreaRange() {\n return new GridRange(\n null,\n this.floatingTopRowCount + this.table.size,\n null,\n this.floatingTopRowCount + this.table.size + this.pendingNewRowCount - 1\n );\n }\n\n /**\n * Set value in an editable table\n * @param {number} x The column to set\n * @param {number} y The row to set\n * @param {string} value The value to set\n * @returns {Promise<void>} A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForCell(x, y, text) {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n return this.setValueForRanges([new GridRange(x, y, x, y)], text);\n }\n\n /**\n * Set value in an editable table\n * @param {GridRange[]} ranges The ranges to set\n * @param {string} value The values to set\n * @returns {Promise<void>} A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForRanges(ranges, text) {\n if (!this.isEditableRanges(ranges)) {\n throw new Error('Uneditable ranges', ranges);\n }\n\n try {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n const columnSet = new Set();\n\n // Formatted text for each column\n // Since there could be different formatting for each column, but the value will be the same across rows\n const formattedText = [];\n GridRange.forEachCell(ranges, (x, y) => {\n const column = this.columns[x];\n columnSet.add(column);\n if (formattedText[x] === undefined) {\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n formattedText[x] =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n }\n this.cachePendingValue(x, y, formattedText[x]);\n });\n\n // Take care of updates to the pending new area first, as they can be updated synchronously\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range =>\n GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n )\n );\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(this.pendingNewDataMap);\n GridRange.forEachCell(pendingRanges, (columnIndex, rowIndex) => {\n if (!newDataMap.has(rowIndex)) {\n newDataMap.set(rowIndex, { data: new Map() });\n }\n\n const column = this.columns[columnIndex];\n const row = newDataMap.get(rowIndex);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n if (value != null) {\n newRowData.set(columnIndex, { value });\n } else {\n newRowData.delete(columnIndex);\n }\n if (newRowData.size > 0) {\n newDataMap.set(rowIndex, { ...row, data: newRowData });\n } else {\n newDataMap.delete(rowIndex);\n }\n });\n this.pendingDataMap = newDataMap;\n }\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(\n range => new GridRange(null, range.startRow, null, range.endRow)\n )\n );\n const newRows = data.map(row => {\n const newRow = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n\n columnSet.forEach(column => {\n newRow[column.name] = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n });\n return newRow;\n });\n\n const result = await this.inputTable.addRows(newRows);\n\n log.debug(\n 'setValueForRanges(',\n ranges,\n ',',\n text,\n ') set tableRanges',\n tableRanges,\n 'result',\n result\n );\n }\n\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n GridRange.forEachCell(ranges, (x, y) => {\n this.cacheFormattedValue(x, y, formattedText[x]);\n });\n } catch (err) {\n log.error('Unable to set ranges', ranges, text, err);\n } finally {\n GridRange.forEachCell(ranges, (x, y) => {\n this.clearPendingValue(x, y);\n });\n }\n }\n\n async setValues(edits = []) {\n log.debug('setValues(', edits, ')');\n if (\n !edits.every(edit =>\n this.isEditableRange(GridRange.makeCell(edit.x, edit.y))\n )\n ) {\n throw new Error('Uneditable ranges', edits);\n }\n\n try {\n const newDataMap = new Map(this.pendingNewDataMap);\n\n // Cache the display values\n edits.forEach(edit => {\n const { x, y, text } = edit;\n const column = this.columns[x];\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n this.cachePendingValue(x, y, formattedText);\n\n // Take care of updates to the pending new area as well, as that can be updated synchronously\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n if (!newDataMap.has(pendingRow)) {\n newDataMap.set(pendingRow, { data: new Map() });\n }\n\n const row = newDataMap.get(pendingRow);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n if (value != null) {\n newRowData.set(x, { value });\n } else {\n newRowData.delete(x);\n }\n if (newRowData.size > 0) {\n newDataMap.set(pendingRow, { ...row, data: newRowData });\n } else {\n newDataMap.delete(pendingRow);\n }\n }\n });\n\n this.pendingDataMap = newDataMap;\n\n // Send an update right after setting the pending map so the values are displayed immediately\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n\n // Need to group by row...\n const rowEditMap = edits.reduce((rowMap, edit) => {\n if (!rowMap.has(edit.y)) {\n rowMap.set(edit.y, []);\n }\n rowMap.get(edit.y).push(edit);\n return rowMap;\n }, new Map());\n\n const ranges = GridRange.consolidate(\n edits.map(edit => GridRange.makeCell(edit.x, edit.y))\n );\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(\n range => new GridRange(null, range.startRow, null, range.endRow)\n )\n );\n const newRows = data.map((row, dataIndex) => {\n let rowIndex = null;\n let r = dataIndex;\n for (let i = 0; i < tableRanges.length; i += 1) {\n const range = tableRanges[i];\n const rangeRowCount = GridRange.rowCount([range]);\n if (r < rangeRowCount) {\n rowIndex = range.startRow + r;\n break;\n }\n r -= rangeRowCount;\n }\n\n const newRow = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n\n const rowEdits = rowEditMap.get(rowIndex);\n if (rowEdits != null) {\n rowEdits.forEach(edit => {\n const column = this.columns[edit.x];\n newRow[column.name] = TableUtils.makeValue(\n column.type,\n edit.text,\n this.formatter.timeZone\n );\n });\n }\n return newRow;\n });\n\n log.info('setValues setting tableRanges', tableRanges);\n\n const result = await this.inputTable.addRows(newRows);\n\n log.info('setValues set tableRanges', tableRanges, 'SUCCESS', result);\n }\n\n // We've sent the changes to the server, but have not yet got an update with those changes committed\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n edits.forEach(edit => {\n const { x, y, text } = edit;\n const column = this.columns[x];\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n this.cacheFormattedValue(x, y, formattedText);\n });\n } finally {\n edits.forEach(edit => {\n this.clearPendingValue(edit.x, edit.y);\n });\n }\n }\n\n async commitPending() {\n if (this.pendingNewDataMap.size <= 0) {\n throw new Error('No pending changes to commit');\n }\n\n try {\n this.isSaveInProgress = true;\n\n const newRows = [];\n this.pendingNewDataMap.forEach(row => {\n const newRow = {};\n row.data.forEach(({ value }, columnIndex) => {\n const column = this.columns[columnIndex];\n newRow[column.name] = value;\n });\n newRows.push(newRow);\n });\n const result = await this.inputTable.addRows(newRows);\n\n log.debug('commitPending()', this.pendingNewDataMap, 'result', result);\n\n this.pendingNewDataMap = new Map();\n this.pendingNewDataErrors = new Map();\n this.pendingNewRowCount = Math.max(\n 0,\n (this.viewport?.bottom ?? 0) - this.table.size\n );\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n return result;\n } finally {\n this.isSaveInProgress = false;\n }\n }\n\n editValueForCell(x, y) {\n return this.textValueForCell(x, y);\n }\n\n async delete(ranges) {\n if (!this.isDeletableRanges(ranges)) {\n throw new Error('Undeletable ranges', ranges);\n }\n\n const { keyColumns } = this.inputTable;\n if (keyColumns.length === 0) {\n throw new Error('No key columns to allow deletion');\n }\n\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range =>\n GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n )\n );\n\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(this.pendingNewDataMap);\n for (let i = 0; i < pendingRanges.length; i += 1) {\n const pendingRange = pendingRanges[i];\n for (let r = pendingRange.startRow; r <= pendingRange.endRow; r += 1) {\n newDataMap.delete(r);\n }\n }\n this.pendingNewDataMap = newDataMap;\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length <= 0) {\n return null;\n }\n const [data, deleteTable] = await Promise.all([\n // Need to get the key values of each row\n this.snapshot(\n tableRanges.map(\n range =>\n new GridRange(\n 0,\n range.startRow,\n keyColumns.length - 1,\n range.endRow\n )\n )\n ),\n this.table.copy(),\n ]);\n\n // Now copy the existing table and filter it on the values in the snapshot for the key columns in the input table\n const filters = data.map(row => {\n const columnFilters = [];\n for (let c = 0; c < keyColumns.length; c += 1) {\n const column = keyColumns[c];\n const value = row[c];\n const filterValue = TableUtils.makeFilterRawValue(column.type, value);\n const filter = column.filter().eq(filterValue);\n columnFilters.push(filter);\n }\n return columnFilters.reduce((agg, curr) => (agg ? agg.and(curr) : curr));\n });\n\n const filter = filters.reduce((agg, curr) => (agg ? agg.or(curr) : curr));\n deleteTable.applyFilter([filter]);\n\n const result = await this.inputTable.deleteTable(deleteTable);\n deleteTable.close();\n return result;\n }\n\n isValidForCell(x, y, value) {\n try {\n const column = this.columns[x];\n TableUtils.makeValue(column.type, value, this.formatter.timeZone);\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n\nexport default IrisGridTableModel;\n"],"file":"IrisGridTableModel.js"}
|
|
@@ -331,7 +331,7 @@ export default class TableSaver extends PureComponent {
|
|
|
331
331
|
type,
|
|
332
332
|
name
|
|
333
333
|
} = this.columns[j];
|
|
334
|
-
var hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(formatter,
|
|
334
|
+
var hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(formatter, name, type);
|
|
335
335
|
var formatOverride = null;
|
|
336
336
|
|
|
337
337
|
if (!hasCustomColumnFormat) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sidebar/TableSaver.jsx"],"names":["PureComponent","PropTypes","WritableStream","ponyfillWritableStream","dh","Log","memoizeClear","PromiseUtils","Formatter","FormatterUtils","log","module","TableSaver","csvEscapeString","str","replace","constructor","props","isCustomColumnFormatDefined","max","handlePortMessage","bind","handleSnapshotResolved","handleDownloadTimeout","state","sw","port","fileWriter","table","tableSubscription","columns","fileName","chunkRows","gridRanges","gridRangeCounter","rangedSnapshotsTotal","rangedSnapshotCounter","snapshotsTotal","snapshotCounter","snapshotsBuffer","Map","currentSnapshotIndex","snapshotPending","cancelableSnapshots","window","streamTimeout","snapshotHandlerTimeout","downloadStartTime","iframes","useBlobFallback","safari","componentDidMount","getDownloadWorker","then","info","postMessage","catch","error","warn","componentWillUnmount","length","forEach","iframe","remove","clearTimeout","createWriterStream","useBlob","chunks","encode","TextEncoder","prototype","streamConfig","write","chunk","push","rows","close","blob","Blob","type","link","document","createElement","href","URL","createObjectURL","download","click","abort","cancel","end","startDownload","frozenTable","isDownloading","Date","now","encodedFileName","encodeURIComponent","escape","messageChannel","MessageChannel","port1","getWriter","writeCsvTable","port2","onmessage","finishDownload","onDownloadCompleted","resetTableSaver","cancelDownload","cancelable","onDownloadCanceled","writeTableHeader","headerString","i","name","header","startWriteTableBody","Math","floor","DOWNLOAD_CELL_CHUNK","map","range","ceil","endRow","startRow","reduce","total","snapshotCount","makeSnapshot","min","SNAPSHOT_BUFFER_SIZE","writeSnapshot","snapshotIndex","snapshotStartRow","snapshotEndRow","has","convertSnapshotIntoCsv","get","delete","updateDownloadProgress","debug2","size","onDownloadProgressUpdate","downloadProgress","estimateTime","snapshot","csvString","snapshotIterator","added","iterator","formatter","hasNext","next","value","rowIdx","j","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","formatOverride","cellFormat","getFormat","formatString","cellData","getFormattedString","getData","n","currentGridRange","makeCancelable","RangeSet","ofRange","err","val","data","readableStreamPulling","makeIframe","setTimeout","STREAM_TIMEOUT","set","SNAPSHOT_HANDLER_TIMEOUT","src","hidden","loaded","isIframe","addEventListener","body","appendChild","render","propTypes","func","bool","instanceOf","isRequired","defaultProps","Promise","reject","Error"],"mappings":"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","sourcesContent":["import { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { WritableStream as ponyfillWritableStream } from 'web-streams-polyfill/dist/ponyfill.js';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { memoizeClear } from '@deephaven/grid';\nimport { PromiseUtils } from '@deephaven/utils';\nimport Formatter from '../Formatter';\nimport FormatterUtils from '../FormatterUtils';\n\nconst log = Log.module('TableSaver');\n\nexport default class TableSaver extends PureComponent {\n static DOWNLOAD_CELL_CHUNK = 6000;\n\n static SNAPSHOT_BUFFER_SIZE = 5;\n\n static STREAM_TIMEOUT = 8000;\n\n static SNAPSHOT_HANDLER_TIMEOUT = 5;\n\n static csvEscapeString(str) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n\n constructor(props) {\n super(props);\n\n this.handlePortMessage = this.handlePortMessage.bind(this);\n this.handleSnapshotResolved = this.handleSnapshotResolved.bind(this);\n this.handleDownloadTimeout = this.handleDownloadTimeout.bind(this);\n\n this.state = {};\n\n this.sw = null;\n this.port = null;\n this.fileWriter = null;\n\n this.table = null;\n this.tableSubscription = null;\n this.columns = null;\n\n this.fileName = null;\n\n this.chunkRows = null;\n\n this.gridRanges = [];\n this.gridRangeCounter = 0;\n this.rangedSnapshotsTotal = [];\n this.rangedSnapshotCounter = 0;\n\n this.snapshotsTotal = 0;\n this.snapshotCounter = 0;\n this.snapshotsBuffer = new Map();\n\n this.currentSnapshotIndex = 0;\n this.snapshotPending = 0;\n this.cancelableSnapshots = [];\n\n // WritableStream is not supported in Firefox (also IE) yet. use ponyfillWritableStream instead\n this.WritableStream = window.WritableStream || ponyfillWritableStream;\n\n // Due to an open issue in Chromium, readableStream.cancel() is never called when a user cancel the stream from Chromium's UI and the stream goes on even it's canceled.\n // Instead, we monitor the pull() behavior from the readableStream called when the stream wants more data to write.\n // If the stream doesn't pull for long enough time, chances are the stream is already canceled, so we stop the stream.\n // Issue ticket on Chromium: https://bugs.chromium.org/p/chromium/issues/detail?id=638494\n this.streamTimeout = null;\n\n this.snapshotHandlerTimeout = null;\n\n this.downloadStartTime = null;\n\n this.iframes = [];\n\n this.useBlobFallback = !!window.safari;\n }\n\n componentDidMount() {\n const { getDownloadWorker } = this.props;\n getDownloadWorker()\n .then(sw => {\n log.info('found active service worker');\n this.sw = sw;\n this.sw.postMessage('ping'); // just to activate the service worker\n })\n .catch(error => {\n // if service worker is not available, use blob as fallback to download table csv\n log.warn('Download csv is not optimized.', error);\n this.useBlobFallback = true;\n });\n }\n\n componentWillUnmount() {\n if (this.iframes.length > 0) {\n this.iframes.forEach(iframe => {\n iframe.remove();\n });\n }\n clearTimeout(this.streamTimeout);\n clearTimeout(this.snapshotHandlerTimeout);\n }\n\n getCachedCustomColumnFormatFlag = memoizeClear(\n FormatterUtils.isCustomColumnFormatDefined,\n { max: 10000 }\n );\n\n createWriterStream(port) {\n // use blob fall back if it's safari\n const useBlob = this.useBlobFallback;\n const chunks = [];\n let encode = null;\n if (useBlob) {\n encode = TextEncoder.prototype.encode.bind(new TextEncoder());\n }\n const { fileName } = this;\n\n const streamConfig = {};\n if (useBlob) {\n streamConfig.write = chunk => {\n chunks.push(encode(chunk.rows));\n };\n streamConfig.close = () => {\n const blob = new Blob(chunks, {\n type: 'application/octet-stream; charset=utf-8',\n });\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = fileName;\n link.click();\n };\n streamConfig.abort = () => {\n port.postMessage({ cancel: true });\n port.close();\n };\n } else {\n streamConfig.write = chunk => {\n port.postMessage(chunk);\n };\n streamConfig.close = () => {\n port.postMessage({ end: true });\n port.close();\n };\n streamConfig.abort = () => {\n port.postMessage({ cancel: true });\n port.close();\n };\n }\n\n return new this.WritableStream(streamConfig);\n }\n\n startDownload(fileName, frozenTable, tableSubscription, gridRanges) {\n // don't trigger another download when a download is ongoing\n const { isDownloading } = this.props;\n if (isDownloading) {\n return;\n }\n\n this.downloadStartTime = Date.now();\n log.info(`start downloading ${fileName}`);\n\n this.table = frozenTable;\n this.columns = frozenTable.columns;\n this.tableSubscription = tableSubscription;\n this.gridRanges = gridRanges;\n\n // Make filename RFC5987 compatible\n const encodedFileName = encodeURIComponent(fileName.replace(/\\//g, ':'))\n .replace(/['()]/g, escape)\n .replace(/\\*/g, '%2A');\n\n const messageChannel = new MessageChannel();\n this.port = messageChannel.port1;\n this.fileName = fileName;\n this.fileWriter = this.createWriterStream(this.port).getWriter();\n\n // if the browser doesn't support stream or there's no active service worker, use blobs for table download\n if (this.useBlobFallback) {\n this.writeCsvTable();\n return;\n }\n\n if (this.sw) {\n // send file name and port to service worker\n this.sw.postMessage({ encodedFileName }, [messageChannel.port2]);\n }\n this.port.onmessage = this.handlePortMessage;\n }\n\n finishDownload() {\n if (this.table) {\n this.table.close();\n }\n if (this.tableSubscription) {\n this.tableSubscription.close();\n }\n if (this.fileWriter) {\n this.fileWriter.close();\n }\n\n const { onDownloadCompleted } = this.props;\n onDownloadCompleted();\n this.resetTableSaver();\n\n log.info(\n `download finished, total elapsed time ${\n (Date.now() - this.downloadStartTime) / 1000\n } seconds`\n );\n }\n\n cancelDownload() {\n if (this.table) {\n this.table.close();\n }\n if (this.tableSubscription) {\n this.tableSubscription.close();\n }\n if (this.fileWriter) {\n this.fileWriter.abort();\n }\n\n this.cancelableSnapshots.forEach(cancelable => {\n if (cancelable) {\n cancelable.catch(() => {});\n cancelable.cancel();\n }\n });\n const { onDownloadCanceled } = this.props;\n onDownloadCanceled();\n this.resetTableSaver();\n }\n\n resetTableSaver() {\n this.table = null;\n this.tableSubscription = null;\n this.columns = null;\n this.chunkRows = null;\n\n this.gridRanges = [];\n this.gridRangeCounter = 0;\n this.rangedSnapshotsTotal = [];\n this.rangedSnapshotCounter = 0;\n\n this.snapshotsTotal = 0;\n this.snapshotCounter = 0;\n this.snapshotsBuffer = new Map();\n\n this.currentSnapshotIndex = 0;\n this.snapshotPending = 0;\n this.cancelableSnapshots = [];\n\n clearTimeout(this.streamTimeout);\n clearTimeout(this.snapshotHandlerTimeout);\n this.streamTimeout = null;\n this.snapshotHandlerTimeout = null;\n }\n\n handleDownloadTimeout() {\n log.info('download canceled');\n this.cancelDownload();\n }\n\n writeTableHeader() {\n let headerString = '';\n for (let i = 0; i < this.columns.length; i += 1) {\n headerString += this.columns[i].name;\n headerString += i === this.columns.length - 1 ? '\\n' : ',';\n }\n this.fileWriter.write({ header: headerString }).then(() => {});\n }\n\n startWriteTableBody() {\n this.chunkRows = Math.floor(\n TableSaver.DOWNLOAD_CELL_CHUNK / this.columns.length\n );\n\n this.rangedSnapshotsTotal = this.gridRanges.map(range =>\n Math.ceil((range.endRow - range.startRow + 1) / this.chunkRows)\n );\n this.snapshotsTotal = this.rangedSnapshotsTotal.reduce(\n (total, snapshotCount) => total + snapshotCount\n );\n\n log.info(`start writing table, total snapshots: `, this.snapshotsTotal);\n\n this.makeSnapshot(\n Math.min(TableSaver.SNAPSHOT_BUFFER_SIZE, this.snapshotsTotal)\n );\n }\n\n writeCsvTable() {\n this.writeTableHeader();\n this.startWriteTableBody();\n }\n\n writeSnapshot(snapshotIndex, snapshotStartRow, snapshotEndRow) {\n if (this.currentSnapshotIndex === snapshotIndex && this.fileWriter) {\n while (this.snapshotsBuffer.has(this.currentSnapshotIndex)) {\n this.fileWriter.write({\n rows: this.convertSnapshotIntoCsv(\n this.snapshotsBuffer.get(this.currentSnapshotIndex),\n snapshotStartRow,\n snapshotEndRow\n ),\n });\n this.snapshotsBuffer.delete(this.currentSnapshotIndex);\n this.currentSnapshotIndex += 1;\n\n this.updateDownloadProgress(snapshotIndex);\n }\n if (this.currentSnapshotIndex >= this.snapshotsTotal) {\n this.finishDownload();\n return;\n }\n }\n\n if (this.snapshotCounter < this.snapshotsTotal) {\n log.debug2(\n `\n current range index: ${this.gridRangeCounter}, \n snapshotIndexCounter: ${this.snapshotCounter}, \n currentRangedSnapshotIndex : ${this.rangedSnapshotCounter}, \n snapshotpending: ${this.snapshotPending}, \n buffered ${this.snapshotsBuffer.size}\n making ${Math.min(\n TableSaver.SNAPSHOT_BUFFER_SIZE -\n this.snapshotsBuffer.size -\n this.snapshotPending,\n this.snapshotsTotal - this.snapshotCounter\n )} more snapshots\n `\n );\n this.makeSnapshot(\n Math.min(\n TableSaver.SNAPSHOT_BUFFER_SIZE -\n this.snapshotsBuffer.size -\n this.snapshotPending,\n this.snapshotsTotal - this.snapshotCounter\n )\n );\n }\n }\n\n updateDownloadProgress(snapshotIndex) {\n const { onDownloadProgressUpdate } = this.props;\n const downloadProgress = Math.floor(\n (snapshotIndex * 100) / this.snapshotsTotal\n );\n const estimateTime =\n snapshotIndex > 1\n ? Math.floor(\n ((Date.now() - this.downloadStartTime) *\n (this.snapshotsTotal - snapshotIndex)) /\n snapshotIndex /\n 1000\n )\n : null;\n\n onDownloadProgressUpdate(downloadProgress, estimateTime);\n }\n\n convertSnapshotIntoCsv(snapshot) {\n let csvString = '';\n const snapshotIterator = snapshot.added.iterator();\n const { formatter } = this.props;\n\n const rows = [];\n while (snapshotIterator.hasNext()) {\n rows.push(snapshotIterator.next().value);\n }\n\n for (let i = 0; i < rows.length; i += 1) {\n const rowIdx = rows[i];\n for (let j = 0; j < this.columns.length; j += 1) {\n const { type, name } = this.columns[j];\n const hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(\n formatter,\n type,\n name\n );\n let formatOverride = null;\n if (!hasCustomColumnFormat) {\n const cellFormat = snapshot.getFormat(rowIdx, this.columns[j]);\n formatOverride = cellFormat?.formatString != null ? cellFormat : null;\n }\n const cellData = formatter.getFormattedString(\n snapshot.getData(rowIdx, this.columns[j]),\n type,\n name,\n formatOverride\n );\n csvString += TableSaver.csvEscapeString(cellData);\n csvString += j === this.columns.length - 1 ? '\\n' : ',';\n }\n }\n\n return csvString;\n }\n\n makeSnapshot(n) {\n if (n <= 0) {\n return;\n }\n let i = 0;\n let currentGridRange = this.gridRanges[this.gridRangeCounter];\n while (i < n) {\n const snapshotStartRow =\n currentGridRange.startRow + this.rangedSnapshotCounter * this.chunkRows;\n const snapshotEndRow = Math.min(\n snapshotStartRow + this.chunkRows - 1,\n currentGridRange.endRow\n );\n\n const snapshotIndex = this.snapshotCounter;\n this.cancelableSnapshots.push(\n PromiseUtils.makeCancelable(\n this.tableSubscription\n .snapshot(\n dh.RangeSet.ofRange(snapshotStartRow, snapshotEndRow),\n this.columns\n )\n .then(snapshot => {\n this.handleSnapshotResolved(\n snapshot,\n snapshotIndex,\n snapshotStartRow,\n snapshotEndRow\n );\n\n return snapshotIndex;\n })\n .catch(err => {\n log.error(err);\n }),\n val => {\n log.info(`snapshot ${val} has been canceled`);\n }\n )\n );\n\n this.rangedSnapshotCounter += 1;\n this.snapshotCounter += 1;\n this.snapshotPending += 1;\n\n if (\n this.rangedSnapshotCounter >=\n this.rangedSnapshotsTotal[this.gridRangeCounter]\n ) {\n this.gridRangeCounter += 1;\n this.rangedSnapshotCounter = 0;\n currentGridRange = this.gridRanges[this.gridRangeCounter];\n }\n i += 1;\n }\n }\n\n handlePortMessage({ data }) {\n const { download, readableStreamPulling } = data;\n if (this.useBlobFallback) {\n return;\n }\n if (download) {\n this.makeIframe(`${download}`);\n this.writeCsvTable();\n }\n if (readableStreamPulling) {\n if (!this.useBlobFallback) {\n clearTimeout(this.streamTimeout);\n\n this.streamTimeout = setTimeout(\n this.handleDownloadTimeout,\n TableSaver.STREAM_TIMEOUT\n );\n }\n }\n }\n\n handleSnapshotResolved(\n snapshot,\n snapshotIndex,\n snapshotStartRow,\n snapshotEndRow\n ) {\n // use time out to break writeSnapshot into an individual task in browser with timeout, so there's window for the browser to update table in needed.\n this.snapshotHandlerTimeout = setTimeout(() => {\n this.snapshotsBuffer.set(snapshotIndex, snapshot);\n this.snapshotPending -= 1;\n this.writeSnapshot(snapshotIndex, snapshotStartRow, snapshotEndRow);\n this.cancelableSnapshots[snapshotIndex] = null;\n }, TableSaver.SNAPSHOT_HANDLER_TIMEOUT);\n }\n\n makeIframe(src) {\n // make a return value and make it static method\n const iframe = document.createElement('iframe');\n iframe.hidden = true;\n iframe.src = `download/${src}`;\n iframe.loaded = false;\n iframe.name = 'iframe';\n iframe.isIframe = true;\n iframe.addEventListener(\n 'load',\n () => {\n iframe.loaded = true;\n },\n false\n );\n document.body.appendChild(iframe);\n this.iframes.push(iframe);\n }\n\n render() {\n return null;\n }\n}\n\nTableSaver.propTypes = {\n getDownloadWorker: PropTypes.func,\n isDownloading: PropTypes.bool,\n onDownloadCompleted: PropTypes.func,\n onDownloadCanceled: PropTypes.func,\n onDownloadProgressUpdate: PropTypes.func,\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n};\n\nTableSaver.defaultProps = {\n getDownloadWorker: () =>\n Promise.reject(new Error('Download worker not provided')),\n isDownloading: false,\n onDownloadCompleted: () => {},\n onDownloadCanceled: () => {},\n onDownloadProgressUpdate: () => {},\n};\n"],"file":"TableSaver.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/sidebar/TableSaver.jsx"],"names":["PureComponent","PropTypes","WritableStream","ponyfillWritableStream","dh","Log","memoizeClear","PromiseUtils","Formatter","FormatterUtils","log","module","TableSaver","csvEscapeString","str","replace","constructor","props","isCustomColumnFormatDefined","max","handlePortMessage","bind","handleSnapshotResolved","handleDownloadTimeout","state","sw","port","fileWriter","table","tableSubscription","columns","fileName","chunkRows","gridRanges","gridRangeCounter","rangedSnapshotsTotal","rangedSnapshotCounter","snapshotsTotal","snapshotCounter","snapshotsBuffer","Map","currentSnapshotIndex","snapshotPending","cancelableSnapshots","window","streamTimeout","snapshotHandlerTimeout","downloadStartTime","iframes","useBlobFallback","safari","componentDidMount","getDownloadWorker","then","info","postMessage","catch","error","warn","componentWillUnmount","length","forEach","iframe","remove","clearTimeout","createWriterStream","useBlob","chunks","encode","TextEncoder","prototype","streamConfig","write","chunk","push","rows","close","blob","Blob","type","link","document","createElement","href","URL","createObjectURL","download","click","abort","cancel","end","startDownload","frozenTable","isDownloading","Date","now","encodedFileName","encodeURIComponent","escape","messageChannel","MessageChannel","port1","getWriter","writeCsvTable","port2","onmessage","finishDownload","onDownloadCompleted","resetTableSaver","cancelDownload","cancelable","onDownloadCanceled","writeTableHeader","headerString","i","name","header","startWriteTableBody","Math","floor","DOWNLOAD_CELL_CHUNK","map","range","ceil","endRow","startRow","reduce","total","snapshotCount","makeSnapshot","min","SNAPSHOT_BUFFER_SIZE","writeSnapshot","snapshotIndex","snapshotStartRow","snapshotEndRow","has","convertSnapshotIntoCsv","get","delete","updateDownloadProgress","debug2","size","onDownloadProgressUpdate","downloadProgress","estimateTime","snapshot","csvString","snapshotIterator","added","iterator","formatter","hasNext","next","value","rowIdx","j","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","formatOverride","cellFormat","getFormat","formatString","cellData","getFormattedString","getData","n","currentGridRange","makeCancelable","RangeSet","ofRange","err","val","data","readableStreamPulling","makeIframe","setTimeout","STREAM_TIMEOUT","set","SNAPSHOT_HANDLER_TIMEOUT","src","hidden","loaded","isIframe","addEventListener","body","appendChild","render","propTypes","func","bool","instanceOf","isRequired","defaultProps","Promise","reject","Error"],"mappings":"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","sourcesContent":["import { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { WritableStream as ponyfillWritableStream } from 'web-streams-polyfill/dist/ponyfill.js';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { memoizeClear } from '@deephaven/grid';\nimport { PromiseUtils } from '@deephaven/utils';\nimport Formatter from '../Formatter';\nimport FormatterUtils from '../FormatterUtils';\n\nconst log = Log.module('TableSaver');\n\nexport default class TableSaver extends PureComponent {\n static DOWNLOAD_CELL_CHUNK = 6000;\n\n static SNAPSHOT_BUFFER_SIZE = 5;\n\n static STREAM_TIMEOUT = 8000;\n\n static SNAPSHOT_HANDLER_TIMEOUT = 5;\n\n static csvEscapeString(str) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n\n constructor(props) {\n super(props);\n\n this.handlePortMessage = this.handlePortMessage.bind(this);\n this.handleSnapshotResolved = this.handleSnapshotResolved.bind(this);\n this.handleDownloadTimeout = this.handleDownloadTimeout.bind(this);\n\n this.state = {};\n\n this.sw = null;\n this.port = null;\n this.fileWriter = null;\n\n this.table = null;\n this.tableSubscription = null;\n this.columns = null;\n\n this.fileName = null;\n\n this.chunkRows = null;\n\n this.gridRanges = [];\n this.gridRangeCounter = 0;\n this.rangedSnapshotsTotal = [];\n this.rangedSnapshotCounter = 0;\n\n this.snapshotsTotal = 0;\n this.snapshotCounter = 0;\n this.snapshotsBuffer = new Map();\n\n this.currentSnapshotIndex = 0;\n this.snapshotPending = 0;\n this.cancelableSnapshots = [];\n\n // WritableStream is not supported in Firefox (also IE) yet. use ponyfillWritableStream instead\n this.WritableStream = window.WritableStream || ponyfillWritableStream;\n\n // Due to an open issue in Chromium, readableStream.cancel() is never called when a user cancel the stream from Chromium's UI and the stream goes on even it's canceled.\n // Instead, we monitor the pull() behavior from the readableStream called when the stream wants more data to write.\n // If the stream doesn't pull for long enough time, chances are the stream is already canceled, so we stop the stream.\n // Issue ticket on Chromium: https://bugs.chromium.org/p/chromium/issues/detail?id=638494\n this.streamTimeout = null;\n\n this.snapshotHandlerTimeout = null;\n\n this.downloadStartTime = null;\n\n this.iframes = [];\n\n this.useBlobFallback = !!window.safari;\n }\n\n componentDidMount() {\n const { getDownloadWorker } = this.props;\n getDownloadWorker()\n .then(sw => {\n log.info('found active service worker');\n this.sw = sw;\n this.sw.postMessage('ping'); // just to activate the service worker\n })\n .catch(error => {\n // if service worker is not available, use blob as fallback to download table csv\n log.warn('Download csv is not optimized.', error);\n this.useBlobFallback = true;\n });\n }\n\n componentWillUnmount() {\n if (this.iframes.length > 0) {\n this.iframes.forEach(iframe => {\n iframe.remove();\n });\n }\n clearTimeout(this.streamTimeout);\n clearTimeout(this.snapshotHandlerTimeout);\n }\n\n getCachedCustomColumnFormatFlag = memoizeClear(\n FormatterUtils.isCustomColumnFormatDefined,\n { max: 10000 }\n );\n\n createWriterStream(port) {\n // use blob fall back if it's safari\n const useBlob = this.useBlobFallback;\n const chunks = [];\n let encode = null;\n if (useBlob) {\n encode = TextEncoder.prototype.encode.bind(new TextEncoder());\n }\n const { fileName } = this;\n\n const streamConfig = {};\n if (useBlob) {\n streamConfig.write = chunk => {\n chunks.push(encode(chunk.rows));\n };\n streamConfig.close = () => {\n const blob = new Blob(chunks, {\n type: 'application/octet-stream; charset=utf-8',\n });\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = fileName;\n link.click();\n };\n streamConfig.abort = () => {\n port.postMessage({ cancel: true });\n port.close();\n };\n } else {\n streamConfig.write = chunk => {\n port.postMessage(chunk);\n };\n streamConfig.close = () => {\n port.postMessage({ end: true });\n port.close();\n };\n streamConfig.abort = () => {\n port.postMessage({ cancel: true });\n port.close();\n };\n }\n\n return new this.WritableStream(streamConfig);\n }\n\n startDownload(fileName, frozenTable, tableSubscription, gridRanges) {\n // don't trigger another download when a download is ongoing\n const { isDownloading } = this.props;\n if (isDownloading) {\n return;\n }\n\n this.downloadStartTime = Date.now();\n log.info(`start downloading ${fileName}`);\n\n this.table = frozenTable;\n this.columns = frozenTable.columns;\n this.tableSubscription = tableSubscription;\n this.gridRanges = gridRanges;\n\n // Make filename RFC5987 compatible\n const encodedFileName = encodeURIComponent(fileName.replace(/\\//g, ':'))\n .replace(/['()]/g, escape)\n .replace(/\\*/g, '%2A');\n\n const messageChannel = new MessageChannel();\n this.port = messageChannel.port1;\n this.fileName = fileName;\n this.fileWriter = this.createWriterStream(this.port).getWriter();\n\n // if the browser doesn't support stream or there's no active service worker, use blobs for table download\n if (this.useBlobFallback) {\n this.writeCsvTable();\n return;\n }\n\n if (this.sw) {\n // send file name and port to service worker\n this.sw.postMessage({ encodedFileName }, [messageChannel.port2]);\n }\n this.port.onmessage = this.handlePortMessage;\n }\n\n finishDownload() {\n if (this.table) {\n this.table.close();\n }\n if (this.tableSubscription) {\n this.tableSubscription.close();\n }\n if (this.fileWriter) {\n this.fileWriter.close();\n }\n\n const { onDownloadCompleted } = this.props;\n onDownloadCompleted();\n this.resetTableSaver();\n\n log.info(\n `download finished, total elapsed time ${\n (Date.now() - this.downloadStartTime) / 1000\n } seconds`\n );\n }\n\n cancelDownload() {\n if (this.table) {\n this.table.close();\n }\n if (this.tableSubscription) {\n this.tableSubscription.close();\n }\n if (this.fileWriter) {\n this.fileWriter.abort();\n }\n\n this.cancelableSnapshots.forEach(cancelable => {\n if (cancelable) {\n cancelable.catch(() => {});\n cancelable.cancel();\n }\n });\n const { onDownloadCanceled } = this.props;\n onDownloadCanceled();\n this.resetTableSaver();\n }\n\n resetTableSaver() {\n this.table = null;\n this.tableSubscription = null;\n this.columns = null;\n this.chunkRows = null;\n\n this.gridRanges = [];\n this.gridRangeCounter = 0;\n this.rangedSnapshotsTotal = [];\n this.rangedSnapshotCounter = 0;\n\n this.snapshotsTotal = 0;\n this.snapshotCounter = 0;\n this.snapshotsBuffer = new Map();\n\n this.currentSnapshotIndex = 0;\n this.snapshotPending = 0;\n this.cancelableSnapshots = [];\n\n clearTimeout(this.streamTimeout);\n clearTimeout(this.snapshotHandlerTimeout);\n this.streamTimeout = null;\n this.snapshotHandlerTimeout = null;\n }\n\n handleDownloadTimeout() {\n log.info('download canceled');\n this.cancelDownload();\n }\n\n writeTableHeader() {\n let headerString = '';\n for (let i = 0; i < this.columns.length; i += 1) {\n headerString += this.columns[i].name;\n headerString += i === this.columns.length - 1 ? '\\n' : ',';\n }\n this.fileWriter.write({ header: headerString }).then(() => {});\n }\n\n startWriteTableBody() {\n this.chunkRows = Math.floor(\n TableSaver.DOWNLOAD_CELL_CHUNK / this.columns.length\n );\n\n this.rangedSnapshotsTotal = this.gridRanges.map(range =>\n Math.ceil((range.endRow - range.startRow + 1) / this.chunkRows)\n );\n this.snapshotsTotal = this.rangedSnapshotsTotal.reduce(\n (total, snapshotCount) => total + snapshotCount\n );\n\n log.info(`start writing table, total snapshots: `, this.snapshotsTotal);\n\n this.makeSnapshot(\n Math.min(TableSaver.SNAPSHOT_BUFFER_SIZE, this.snapshotsTotal)\n );\n }\n\n writeCsvTable() {\n this.writeTableHeader();\n this.startWriteTableBody();\n }\n\n writeSnapshot(snapshotIndex, snapshotStartRow, snapshotEndRow) {\n if (this.currentSnapshotIndex === snapshotIndex && this.fileWriter) {\n while (this.snapshotsBuffer.has(this.currentSnapshotIndex)) {\n this.fileWriter.write({\n rows: this.convertSnapshotIntoCsv(\n this.snapshotsBuffer.get(this.currentSnapshotIndex),\n snapshotStartRow,\n snapshotEndRow\n ),\n });\n this.snapshotsBuffer.delete(this.currentSnapshotIndex);\n this.currentSnapshotIndex += 1;\n\n this.updateDownloadProgress(snapshotIndex);\n }\n if (this.currentSnapshotIndex >= this.snapshotsTotal) {\n this.finishDownload();\n return;\n }\n }\n\n if (this.snapshotCounter < this.snapshotsTotal) {\n log.debug2(\n `\n current range index: ${this.gridRangeCounter}, \n snapshotIndexCounter: ${this.snapshotCounter}, \n currentRangedSnapshotIndex : ${this.rangedSnapshotCounter}, \n snapshotpending: ${this.snapshotPending}, \n buffered ${this.snapshotsBuffer.size}\n making ${Math.min(\n TableSaver.SNAPSHOT_BUFFER_SIZE -\n this.snapshotsBuffer.size -\n this.snapshotPending,\n this.snapshotsTotal - this.snapshotCounter\n )} more snapshots\n `\n );\n this.makeSnapshot(\n Math.min(\n TableSaver.SNAPSHOT_BUFFER_SIZE -\n this.snapshotsBuffer.size -\n this.snapshotPending,\n this.snapshotsTotal - this.snapshotCounter\n )\n );\n }\n }\n\n updateDownloadProgress(snapshotIndex) {\n const { onDownloadProgressUpdate } = this.props;\n const downloadProgress = Math.floor(\n (snapshotIndex * 100) / this.snapshotsTotal\n );\n const estimateTime =\n snapshotIndex > 1\n ? Math.floor(\n ((Date.now() - this.downloadStartTime) *\n (this.snapshotsTotal - snapshotIndex)) /\n snapshotIndex /\n 1000\n )\n : null;\n\n onDownloadProgressUpdate(downloadProgress, estimateTime);\n }\n\n convertSnapshotIntoCsv(snapshot) {\n let csvString = '';\n const snapshotIterator = snapshot.added.iterator();\n const { formatter } = this.props;\n\n const rows = [];\n while (snapshotIterator.hasNext()) {\n rows.push(snapshotIterator.next().value);\n }\n\n for (let i = 0; i < rows.length; i += 1) {\n const rowIdx = rows[i];\n for (let j = 0; j < this.columns.length; j += 1) {\n const { type, name } = this.columns[j];\n const hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(\n formatter,\n name,\n type\n );\n let formatOverride = null;\n if (!hasCustomColumnFormat) {\n const cellFormat = snapshot.getFormat(rowIdx, this.columns[j]);\n formatOverride = cellFormat?.formatString != null ? cellFormat : null;\n }\n const cellData = formatter.getFormattedString(\n snapshot.getData(rowIdx, this.columns[j]),\n type,\n name,\n formatOverride\n );\n csvString += TableSaver.csvEscapeString(cellData);\n csvString += j === this.columns.length - 1 ? '\\n' : ',';\n }\n }\n\n return csvString;\n }\n\n makeSnapshot(n) {\n if (n <= 0) {\n return;\n }\n let i = 0;\n let currentGridRange = this.gridRanges[this.gridRangeCounter];\n while (i < n) {\n const snapshotStartRow =\n currentGridRange.startRow + this.rangedSnapshotCounter * this.chunkRows;\n const snapshotEndRow = Math.min(\n snapshotStartRow + this.chunkRows - 1,\n currentGridRange.endRow\n );\n\n const snapshotIndex = this.snapshotCounter;\n this.cancelableSnapshots.push(\n PromiseUtils.makeCancelable(\n this.tableSubscription\n .snapshot(\n dh.RangeSet.ofRange(snapshotStartRow, snapshotEndRow),\n this.columns\n )\n .then(snapshot => {\n this.handleSnapshotResolved(\n snapshot,\n snapshotIndex,\n snapshotStartRow,\n snapshotEndRow\n );\n\n return snapshotIndex;\n })\n .catch(err => {\n log.error(err);\n }),\n val => {\n log.info(`snapshot ${val} has been canceled`);\n }\n )\n );\n\n this.rangedSnapshotCounter += 1;\n this.snapshotCounter += 1;\n this.snapshotPending += 1;\n\n if (\n this.rangedSnapshotCounter >=\n this.rangedSnapshotsTotal[this.gridRangeCounter]\n ) {\n this.gridRangeCounter += 1;\n this.rangedSnapshotCounter = 0;\n currentGridRange = this.gridRanges[this.gridRangeCounter];\n }\n i += 1;\n }\n }\n\n handlePortMessage({ data }) {\n const { download, readableStreamPulling } = data;\n if (this.useBlobFallback) {\n return;\n }\n if (download) {\n this.makeIframe(`${download}`);\n this.writeCsvTable();\n }\n if (readableStreamPulling) {\n if (!this.useBlobFallback) {\n clearTimeout(this.streamTimeout);\n\n this.streamTimeout = setTimeout(\n this.handleDownloadTimeout,\n TableSaver.STREAM_TIMEOUT\n );\n }\n }\n }\n\n handleSnapshotResolved(\n snapshot,\n snapshotIndex,\n snapshotStartRow,\n snapshotEndRow\n ) {\n // use time out to break writeSnapshot into an individual task in browser with timeout, so there's window for the browser to update table in needed.\n this.snapshotHandlerTimeout = setTimeout(() => {\n this.snapshotsBuffer.set(snapshotIndex, snapshot);\n this.snapshotPending -= 1;\n this.writeSnapshot(snapshotIndex, snapshotStartRow, snapshotEndRow);\n this.cancelableSnapshots[snapshotIndex] = null;\n }, TableSaver.SNAPSHOT_HANDLER_TIMEOUT);\n }\n\n makeIframe(src) {\n // make a return value and make it static method\n const iframe = document.createElement('iframe');\n iframe.hidden = true;\n iframe.src = `download/${src}`;\n iframe.loaded = false;\n iframe.name = 'iframe';\n iframe.isIframe = true;\n iframe.addEventListener(\n 'load',\n () => {\n iframe.loaded = true;\n },\n false\n );\n document.body.appendChild(iframe);\n this.iframes.push(iframe);\n }\n\n render() {\n return null;\n }\n}\n\nTableSaver.propTypes = {\n getDownloadWorker: PropTypes.func,\n isDownloading: PropTypes.bool,\n onDownloadCompleted: PropTypes.func,\n onDownloadCanceled: PropTypes.func,\n onDownloadProgressUpdate: PropTypes.func,\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n};\n\nTableSaver.defaultProps = {\n getDownloadWorker: () =>\n Promise.reject(new Error('Download worker not provided')),\n isDownloading: false,\n onDownloadCompleted: () => {},\n onDownloadCanceled: () => {},\n onDownloadProgressUpdate: () => {},\n};\n"],"file":"TableSaver.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/@types/jquery/JQueryStatic.d.ts","../../../node_modules/@types/jquery/JQuery.d.ts","../../../node_modules/@types/jquery/misc.d.ts","../../../node_modules/@types/jquery/legacy.d.ts","../../../node_modules/@types/sizzle/index.d.ts","../../../node_modules/@types/jquery/index.d.ts","../../utils/dist/CanceledPromiseError.d.ts","../../utils/dist/ColorUtils.d.ts","../../utils/dist/DbNameValidator.d.ts","../../utils/dist/DOMUtils.d.ts","../../utils/dist/PromiseUtils.d.ts","../../utils/dist/Pending.d.ts","../../utils/dist/RangeUtils.d.ts","../../utils/dist/TextUtils.d.ts","../../utils/dist/TimeoutError.d.ts","../../utils/dist/TimeUtils.d.ts","../../utils/dist/InvalidMetadataError.d.ts","../../utils/dist/ValidationError.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../utils/dist/TestUtils.d.ts","../../utils/dist/index.d.ts","../../../node_modules/@types/memoizee/index.d.ts","../../../node_modules/popper.js/index.d.ts","../../components/dist/popper/Popper.d.ts","../../components/dist/popper/Tooltip.d.ts","../../components/dist/popper/index.d.ts","../../components/dist/AutoCompleteInput.d.ts","../../components/dist/AutoResizeTextarea.d.ts","../../components/dist/BasicModal.d.ts","../../../node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../../node_modules/@fortawesome/fontawesome-svg-core/index.d.ts","../../components/dist/Button.d.ts","../../components/dist/ButtonGroup.d.ts","../../components/dist/ButtonOld.d.ts","../../components/dist/CardFlip.d.ts","../../icons/dist/index.d.ts","../../components/dist/shortcuts/Shortcut.d.ts","../../components/dist/shortcuts/GlobalShortcuts.d.ts","../../components/dist/shortcuts/ShortcutRegistry.d.ts","../../components/dist/shortcuts/index.d.ts","../../components/dist/context-actions/ContextActionUtils.d.ts","../../components/dist/context-actions/ContextActions.d.ts","../../components/dist/context-actions/ContextMenuItem.d.ts","../../components/dist/context-actions/ContextMenu.d.ts","../../components/dist/context-actions/ContextMenuRoot.d.ts","../../components/dist/context-actions/index.d.ts","../../components/dist/Collapse.d.ts","../../components/dist/Checkbox.d.ts","../../components/dist/SearchInput.d.ts","../../components/dist/ComboBox.d.ts","../../components/dist/CustomTimeSelect.d.ts","../../components/dist/DebouncedSearchInput.d.ts","../../components/dist/DeephavenSpinner.d.ts","../../../node_modules/@types/react-beautiful-dnd/index.d.ts","../../../node_modules/@types/react-window/index.d.ts","../../../node_modules/@types/react-virtualized-auto-sizer/index.d.ts","../../components/dist/ItemList.d.ts","../../components/dist/DraggableItemList.d.ts","../../components/dist/DragUtils.d.ts","../../components/dist/HierarchicalCheckboxMenu.d.ts","../../components/dist/ItemListItem.d.ts","../../components/dist/LoadingOverlay.d.ts","../../components/dist/LoadingSpinner.d.ts","../../components/dist/menu-actions/Menu.d.ts","../../components/dist/menu-actions/DropdownMenu.d.ts","../../components/dist/menu-actions/index.d.ts","../../components/dist/MaskedInput.d.ts","../../components/dist/navigation/MenuItem.d.ts","../../components/dist/navigation/Menu.d.ts","../../components/dist/navigation/Page.d.ts","../../components/dist/navigation/Stack.d.ts","../../components/dist/navigation/index.d.ts","../../components/dist/Option.d.ts","../../components/dist/RadioGroup.d.ts","../../components/dist/RadioItem.d.ts","../../components/dist/Select.d.ts","../../components/dist/SelectValueList.d.ts","../../components/dist/SocketedButton.d.ts","../../components/dist/ThemeExport.d.ts","../../components/dist/TimeInput.d.ts","../../components/dist/TimeSlider.d.ts","../../components/dist/ToastNotification.d.ts","../../components/dist/UISwitch.d.ts","../../components/dist/index.d.ts","../src/IrisGridShortcuts.ts","../src/MissingKeyError.ts","../../jsapi-shim/dist/dh.d.ts","../../jsapi-shim/dist/PropTypes.d.ts","../../jsapi-shim/dist/index.d.ts","../../log/dist/Logger.d.ts","../../log/dist/DefaultLogger.d.ts","../../log/dist/Log.d.ts","../../log/dist/LogProxy.d.ts","../../log/dist/LogHistory.d.ts","../../log/dist/LoggerLevel.d.ts","../../log/dist/index.d.ts","../src/formatters/TableColumnFormatter.ts","../src/formatters/DateTimeColumnFormatter.ts","../src/formatters/DecimalColumnFormatter.ts","../src/formatters/IntegerColumnFormatter.ts","../src/formatters/BooleanColumnFormatter.js","../src/formatters/CharColumnFormatter.js","../src/formatters/DefaultColumnFormatter.js","../src/formatters/index.ts","../../grid/dist/KeyHandler.d.ts","../../grid/dist/key-handlers/SelectionKeyHandler.d.ts","../../grid/dist/key-handlers/TreeKeyHandler.d.ts","../../grid/dist/key-handlers/EditKeyHandler.d.ts","../../grid/dist/key-handlers/PasteKeyHandler.d.ts","../../grid/dist/key-handlers/index.d.ts","../../grid/dist/GridMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSelectionMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/EditMouseHandler.d.ts","../../grid/dist/mouse-handlers/index.d.ts","../../grid/dist/GridMetricCalculator.d.ts","../../../node_modules/event-target-shim/index.d.ts","../../grid/dist/GridModel.d.ts","../../grid/dist/GridRenderer.d.ts","../../grid/dist/Grid.d.ts","../../grid/dist/GridRange.d.ts","../../grid/dist/GridTestUtils.d.ts","../../grid/dist/GridTheme.d.ts","../../grid/dist/GridUtils.d.ts","../../grid/dist/MockGridModel.d.ts","../../grid/dist/MockTreeGridModel.d.ts","../../grid/dist/memoizeClear.d.ts","../../grid/dist/errors/PasteError.d.ts","../../grid/dist/errors/index.d.ts","../../grid/dist/index.d.ts","../../../node_modules/classnames/index.d.ts","../../../node_modules/@types/react-transition-group/Transition.d.ts","../../../node_modules/@types/react-transition-group/CSSTransition.d.ts","../../../node_modules/@types/react-transition-group/TransitionGroup.d.ts","../../../node_modules/@types/react-transition-group/SwitchTransition.d.ts","../../../node_modules/@types/react-transition-group/config.d.ts","../../../node_modules/@types/react-transition-group/index.d.ts","../../../node_modules/@types/deep-equal/index.d.ts","../../../node_modules/@fortawesome/react-fontawesome/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.throttle/index.d.ts","../../../node_modules/@types/lodash.debounce/index.d.ts","../../react-hooks/dist/usePrevious.d.ts","../../react-hooks/dist/useForwardedRef.d.ts","../../react-hooks/dist/index.d.ts","../src/IrisGridBottomBar.tsx","../src/PendingDataBottomBar.tsx","../src/DateUtils.js","../src/filters/FilterOperator.js","../src/filters/FilterType.js","../src/filters/index.js","../src/TableUtils.js","../src/Formatter.js","../src/IrisGridModel.js","../src/sidebar/AdvancedSettingsType.ts","../src/sidebar/AdvancedSettings.ts","../src/sidebar/aggregations/AggregationOperation.ts","../src/sidebar/aggregations/AggregationUtils.ts","../src/IrisGridUtils.js","../src/IrisGridCopyHandler.jsx","../src/FilterInputField.jsx","../src/key-handlers/CopyKeyHandler.ts","../src/key-handlers/ReverseKeyHandler.ts","../src/key-handlers/index.ts","../src/mousehandlers/IrisGridColumnSelectMouseHandler.js","../src/mousehandlers/IrisGridColumnTooltipMouseHandler.js","../src/format-context-menus/CustomFormatAction.jsx","../src/format-context-menus/FormatContextMenuUtils.jsx","../src/format-context-menus/DateTimeFormatContextMenu.js","../src/format-context-menus/DecimalFormatContextMenu.js","../src/format-context-menus/IntegerFormatContextMenu.js","../src/format-context-menus/index.js","../src/mousehandlers/IrisGridContextMenuHandler.jsx","../src/mousehandlers/IrisGridDataSelectMouseHandler.js","../src/mousehandlers/IrisGridFilterMouseHandler.js","../src/mousehandlers/IrisGridSortMouseHandler.js","../src/mousehandlers/PendingMouseHandler.js","../src/mousehandlers/index.js","../src/ToastBottomBar.tsx","../src/IrisGridMetricCalculator.js","../src/IrisGridModelUpdater.jsx","../src/IrisGridRenderer.js","../src/IrisGridTheme.js","../src/ColumnStatistics.jsx","../src/FormatterUtils.js","../../../node_modules/memoize-one/dist/memoize-one.d.ts","../src/AdvancedFilterCreatorFilterItem.jsx","../src/AdvancedFilterCreatorSelectValueList.jsx","../src/AdvancedFilterCreatorSelectValue.jsx","../src/AdvancedFilterCreator.jsx","../src/sidebar/aggregations/Aggregations.tsx","../src/sidebar/aggregations/AggregationEdit.tsx","../../../node_modules/@types/shortid/index.d.ts","../src/sidebar/icons/BarIcon.tsx","../src/sidebar/icons/HistogramIcon.tsx","../src/sidebar/icons/LineIcon.tsx","../src/sidebar/icons/PieIcon.tsx","../src/sidebar/icons/ScatterIcon.tsx","../src/sidebar/icons/index.js","../src/sidebar/ChartBuilder.jsx","../../../node_modules/monaco-editor/esm/vs/editor/editor.api.d.ts","../src/sidebar/InputEditor.jsx","../src/sidebar/CustomColumnInput.jsx","../src/sidebar/CustomColumnBuilder.jsx","../src/sidebar/OptionType.ts","../src/sidebar/RollupRows.jsx","../src/sidebar/TableCsvExporter.jsx","../src/sidebar/TableSaver.jsx","../src/sidebar/VisibilityOrderingBuilder.jsx","../src/sidebar/index.js","../src/CrossColumnSearch.jsx","../src/PartitionSelectorSearch.jsx","../src/IrisGridPartitionSelector.jsx","../src/sidebar/SelectDistinctBuilder.jsx","../src/sidebar/AdvancedSettingsMenu.tsx","../src/IrisGrid.jsx","../src/key-handlers/ClearFilterKeyHandler.ts","../src/memoizeClear.js","../src/IrisGridTableModel.js","../src/IrisGridTreeTableModel.js","../src/IrisGridProxyModel.js","../src/IrisGridModelFactory.js","../src/IrisGridTestUtils.js","../src/index.js","../src/TableViewportUpdater.jsx","../src/TreeTableViewportUpdater.jsx","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bootstrap/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/ts3.6/base.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/base.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/cheerio/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/color-convert/conversions.d.ts","../../../node_modules/@types/color-convert/route.d.ts","../../../node_modules/@types/color-convert/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/enzyme/index.d.ts","../../../node_modules/@types/enzyme-adapter-react-16/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/eslint/lib/rules/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/is-function/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/jszip/index.d.ts","../../../node_modules/@types/lodash.clamp/index.d.ts","../../../node_modules/@types/lodash.flatten/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../../node_modules/@types/overlayscrollbars/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/pouchdb-find/index.d.ts","../../../node_modules/@types/pouchdb-core/index.d.ts","../../../node_modules/@types/pouchdb-adapter-http/index.d.ts","../../../node_modules/@types/pouchdb-adapter-idb/index.d.ts","../../../node_modules/@types/pouchdb-adapter-websql/index.d.ts","../../../node_modules/@types/pouchdb-mapreduce/index.d.ts","../../../node_modules/@types/pouchdb-replication/index.d.ts","../../../node_modules/@types/pouchdb-browser/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/pretty-hrtime/index.d.ts","../../../node_modules/@types/q/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/redux/index.d.ts","../../../node_modules/@types/react-redux/index.d.ts","../../../node_modules/@types/react-syntax-highlighter/index.d.ts","../../../node_modules/@types/react-test-renderer/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/source-list-map/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/source-map/source-map.d.ts","../../../node_modules/postcss/lib/postcss.d.ts","../../../node_modules/@types/stylelint/index.d.ts","../../../node_modules/@types/tapable/index.d.ts","../../../node_modules/@types/uglify-js/index.d.ts","../../../node_modules/anymatch/index.d.ts","../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../node_modules/@types/webpack-sources/lib/Source.d.ts","../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts","../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts","../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts","../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts","../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts","../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts","../../../node_modules/@types/webpack-sources/index.d.ts","../../../node_modules/@types/webpack/index.d.ts","../../../node_modules/@types/webpack-env/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"38943ef508ccbc71691ff6c14f30e0468a85a4ec22c9e0a4eea2c9ba8ca19352","affectsGlobalScope":true},"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9",{"version":"66b1dd44bde78456344cd079a37443f90e54ffe3aa3ad5ac367a4698334a58fb","affectsGlobalScope":true},{"version":"513dfbfe04b52253f35007545694c2a99c313fdb6b836bdb8cbc9c7fb0ff6166","affectsGlobalScope":true},{"version":"a4832e26b82049fc2774c96ca6e1c17b2c204246570a62fdbe7e8ee8af2cd4d4","affectsGlobalScope":true},{"version":"6f1f78e8c2a5c7cd2c38aa9cc5da26d9c039f2bbfa753f2a0a54ce41c4dff8d0","affectsGlobalScope":true},"ec89427601297d439c961528832a75017d9356bec2ee42c1d16f2274590d9330","2b1af4170f6dfa90f43d2fe3d6c36f95b7fa121aa434a2acefb763d7be460a53","50eac108cc307665c28801910626932956adcf8dc0dc70ab1939dd0e8aeb6f28","1a68643644167daaea17e2f89d04edd9d1fec7bf881e4fa3ad4cd43d92447ce1","7255a17d460541e2ccca5f485bb58b6fa64bc750047c5e57ce7abf17cc3f4f3d","571ffdcb677c42d897370ca1a616798670d7715361dc099f713f03c067e8c988","1f8d8388b2da5785ef9c169db1493969f8c9e1ea50e1db1194a21708403f2e10","a299dcd51a18896ffb9f1249507d387a996b8d733cd1ee7c0a5fb46b86f88524","2c3d2bc00ffd291568c89e1ea920cf5c41b6b6a532cdc0bcb74e917eaf133f3b","e7857f874cbc2bd969097918305d8552156d0147d9a03a87e42f8cbd6e1729b5","0de99ed9f5d0a953aabe8de8999b0ce24944f36374d36c06abf9dca6e5567368","a756f87e33897fd95428da3288ed3061182b8678e38b48000c53e5499c7f8863","f68abba533f1aee022d1800ab3ad273e163909b97c171c8eea15fa04e3d02280","9b526aac58282b2b9c1afd1969828336c77a81ca52916214ae63a70e256a8032","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"f544c98b782364169412ac2bc65143918f9f1dd49880920302693f2eb3bd3570","e5d5ee66044d79018aadeabf3dc39d758d9c45c49c004b3a57b76a974fb346d7","d73a69ee2796e4ceb9dcb037605d8e7ac1e44aa9683b9664c68b0cd1516a3905","1873db8f2261ba4f248bde3e5bb4c79b1fdc990315054e9604fce8f41ddd1587","7fde24f7b90ddb8aef7ab8f3e2c318babe0c606b7ea5a833369475b0129a05ee","366c22193ba68d3c1ea31d37d98dd5f133fc9e234f07c46656284422bb4209fa","ff60413f9896b702b4e653cf85f6f8246e11482ad4d6859997ca9edafed9cc46","b682e653b63b5aa118887e61cd81a78fc45d4ef8fe95d8c6449742919a5638a4","bbc1e78124f19ccf50225278b700436ce64cf92b0c6b1ca15567431a28371b31","1f93a4dd7096a18c6cf99085327b467de58f3cd7f0f941a8bdc1d7ec4284b301","98edf9bdfe6c7794349a88d720af3035fd4a68480895e72beaf8ff8e758a33f5","a822e999d9c1814859735e919c2bd2a11f7d3c8633ab6656215dc386684e07bc","ae1b8ffb16f8dd0a4008ccf2534e6503af171a3c4ea17da590faeb0c41f85f3e","1cfe76cc39491c2f2059192c7486297154f0a517fe9b3bd9d223824a5f803573","acc42289b4e6d8d789b9f3a4c48fe601c23ab6fe747080f1dc99787b8e79d256","9de7ce840e4a5b95405a164d166d010eaa99fd631817ea3b0310ec4e22b98d0e","8a2395a5c1a95d05c205b791f012b120b4d02eb50a806e24d69da02c51de9d6f","65c0791093075bbb931a7e218aa03c954f634702ecff2ae0b6efc92b71cc6db9","21e1b303e758ec4a1e9f703e1e1be8c47c8dd74034c2369fd01e9bfe1da98acc","cd303995edbd7439d6232f1e7596b38f5d1cd65ec0837e009ceba781aca110f5","33cb56e3cc910266a13ca59281b907459131acc58739c2bd68dab246f8ed01fa","c6d0cb5ad7498c2c977a5340f17bcfcc151609118789bbace2336079f2d9f84a","383d4add4d2b7a9b03bb0b7b9b2f62b70c269e79616b629946b51283c14a92cf","4162810d701126188368ff58526c81e7c4c6a9a32ed26c4b763a5d3535b46748","513b7862a230ed479fb045bbe87d37f9ee91cc20fee15dd4b16c3cc74aa3e514","8ff77a6b5f0b74c681e132e9510f5576a29150ee53b1324efed33d3d7fabd736","7bdf81223f6cfae94a48484223d4b59b8ef609cf680f0fa90941d8e093ff27b0","9fbe4ad05e10d7957283cc4a3aa909e70717c62d51bdc19516ffd75a60c2eaf4","8b423ba6b1f81c80542db7deba332d1938db29f6f127fe169287903abe67fe8d","9c0a4431746ad0073026505df7a5724b4126c0e1f41b90e87c1efa6b8335711d","0ec7fb37f4303f3cac4f35819f0d5d75b3b4692990da2590c63c656729447dfe","ed6fbb1cb7cb8dc283f9d5efa68c17d5a9fc5e32fc481e2be7eccd5077d3afc0","e96e84cd79dac3fb1369911a8e9888308deda9542dcfb19d1540414e9ab64465","616ed304b4a011a969ba5d2aa5fca781d66b3f0c8f3d099e19c7158da36fa07b","163be962fa11ca0e3bc9afd1188701e16f5db0d84f904be3a5327c04bf14c1dc","f51c2abd01bb55990a6c5758c8ec34ea7802952c40c30c3941c75eea15539842","23255560340f60336ff79daf50b3b6432ec0f32f7dd19638d3a2406826a15d49","cbf272d1fef2ab8cca386524e1aa8e06caa3509eb6e724e0008ca613c05e7fdb","f8f0a01a9ec6571933c3b63b6d877d74729fbdab0be2fa87c18999b11357cf32","fca853da554cd762704a9bf8ad62cbf6d55d81c9d69b07b3c8a552367f4976d6","6b8d8f68865166b7f761ccdea7a66018f0452ddb7c6f75bf5cbaa31e6163af8f","d9cef8e439c407166963fa89b317d3ea7367e204035611447c9765786026f03b","ca888feddeab794c01fb1bec893ff46186801a30bca77c8a1aa28477f7e6f839","bb96345dfdd3b0695f5281537427e38fa85cb79449e3c6b59151bb7d753ef6f7","2561fd263d1d42554d0de99369f6fb352981090e2de0966b2e257891abf9977a","b01b764b8b1ce1376a70aa1bde2914093b36810a2a3e60cc9fd8f2741490a8f9","e6047a9c095d3b4a903aea90b49815be068476f1719e76766b7792ee21310f3a","cdcd29d866abedc194a88851871320fbb9c29e1c4868583b1f91ee2786acb818","c02107d9cae7a0c7541e8af0f4e0497650b1494e561e409e7cb90a12bc65ed09","5e62225c303695c8511d3831bca37c141931fd584e3aa1c8c5dd4b57cf01b1d0","1c3dd3b5d7eee485481470a75bd1829ee8e0388e87c8c8f8a8418f702592876a","53336c5924937a0a2a4ba1a515499f48092e4dd853386e77276c0a4ff8a1fa50","5a42225ecf779e7d42b44ff91cd7f842421835f28287e295e42622aa51aeeb6f","baab49106b672deb07dcd3e31333e4a2539970b5db9ee896aedbdba3ca2400e5","2af60becd168c31f931c6839f2cb126713bb0f556780b07959afd04b8311eade","cefdaf76e635bf0dc88bb7189c681eda7f8cc92a60faebd5ced12f416038d5a7","7181cfa9a4f05524e825271e409017810c1bc6a4b9544e05be5bd59ee76ca691","ad9afc2c60e7303174e70e6cbfc1eca63d8a770855d5fa3ddaac8769b9d93658","7e6b3017bd81ce434b27ae46cee6bdc5850db0e0d75e6a1d45c6c23e17eb135b","9304c3176830887fd3bbb010a9542ce549397b63624a51c8e7f2be032adb76e9","6c9c7d76d7f525a366d5ebdb0b42bccfab0ec7bdc0bce4db5b97573ee0970d3e","c7322d04c36fbd32b9035e07416c30073fbadf0bb6c1e855425f12c1df645aee","198c3858acc28364fb1cdf1d99d140fd9e0f3732c57ccd40a1752bcf8f318a0b","0625a691c77d71dd48fc83a59bff500dfbf3bdc1fe9c079b64bcaf078b5158d4",{"version":"662564f7dc409b31c6ad48129d12a1320c132b45bcafd3a990d0f8f545ce0529","affectsGlobalScope":true},"c30c1b997f63a82f7e93347b7978f63421126ad10c74f8d403224734deafbdc3","7e35ac912ffb1fc88557ad94721416f9b2b3f1a79263d7ab0c0c730607b3af9c","0637ca78a74b77392effa72e38c2951cce0bb5f7019276f312f85f3d308eb5ef","2b0dc274f4e10794352b468f179cf8b5a9a0203406d8185717dc93a5d7ea9136","53c520b2ebbd7c565fb533caffe747807ae5adbff2f50178a011bad4c334160c","5f34e74f9d889817c1388da54dbfdb28a36af5676c396fa3041309690bfa9ade","b0e23a13de5e00df2097f3bbc0ba67ecc18946f10222c2d4571814ba718467d7","2f89dab4002cafa419a8385e6cd54f3fd5458a024feb0f79e9967bf4c47157f7","e841f45cbf880c37dfc3279dd87523670ac8bf5477541a682ab10669ae6db0f0","4dfb0de036b79d6c4851ad323b7b8ba8d2eff92099edb928c28e2b8f151b4c73","b59fc967b467026aeb1dc3f3fc02c26b8b0b613212ade066d58cb1050b774da1","b10686e239ffd69ba14643969dd14c8be05f0fabeaff6490637efd034686474a","bf49b77e69d2575b30386dfa0cb9633da9f483144d08123507828d92e7d95580","b101a659d8bdd1c71e590eff9edfd870bfc078d1a92192872df0d7a13f9b1628","4f5236ccf12cc44a25a8255c003a29679b456d88137b14db7611af27e7b01bba","1af40226abcfdcf4544375356229346c361da0796052f60cb8cac3beeea405e4","13edbe3a9ba7eaac0c11a08a5193e3ad8e8bb5b97ba90e41383f1cfd4a2addf9","f9912c88ee5f6f82e28a873ae40149a05538f2bc7d5387d6243a7df566db3076","87773a51a8e0f517fe845943114659bf62286f1c63efc59ae236ce5ec9f074d2","44b589ca1773a9b98a44a81a142a3dad82118f0d417eee5dcbd102ad92c3e119","4e1cb04564eb20088c531c817c8f6c4db49620ef50376f35245642c67eb145ce","d3add4e7d6efaf837f6d0db385083d6b23a484c2c6079acbc8fa892c201487c7","8376014c53e41b0d5f96a78fdd2d8a8758640ad2f6ce292b5c66aebd6d088b46","03f3ca4f21862f79e971b5ca6b63805895cff6ccbd7ed31d2fd7327f19f5e028","f2b9951257d06d78828f43dc4047510ec21fe000f21cefd58684476db831ac5f","536fb1e2b80cceb77644b414e26ce29a8417f94a72f867f57e2e0c2db980a9ce","f0b0ef0ccfe0beeaa902aacd48798cc9a7f755546481cb149c4a57c7956c6d0a","2476381be38618f2937afa95c337739684aa174576a278139b7b08b6ab1f5341","c5d12b850beb2feb0369374909dc30fea794f25baaae8aa6f23ee533d80dfbac","ca8d29244d394cdc4cbfbddbbbe183bdcdb25daeb1814777bd1b988efc963bc5","685aa006f7939b593b1f39b823cedfb4f23ccb0002226988f8270b6345399aa4","0a5939cc81f0c470f3cae077943ab1a8f27bd0e0ef31fb6d9999c1099d5c1557","da1c29ce8da2803892f72c74fdb05992765ec7d5d9a6ef4dd82f3534e7d4773e","deb2c4a4f7e35965dde684402787eac08ca9143178a75b2c441d07fa7830fcbe","069d9515e3cb0d254928b11bf7da7e22afddf1d2a14f239421a128952069f898","c33ff15f5bb2ec9fe792288ee8a6e61a45210aad52007bc573d11e49a17542de","0cb0bb747f030197835fd42fab515388f3cd9745256f8b9badb0ed33477b4275","40d2b100e0cf82c6a297597f2f68f152ed9bd67533bbab359c5cc3d2d43a0e98","47c12b9b24e5bfd2879de2e2d1e921b2fd984e11c2086460ef3110408135641d","43eb52bf5a546b3f84e7da5b4eb1305f9ecfe9f5a3f41b85d620d1354a5f3646","63633f5796c4cf53210ce75f02e5d6e81b88012f5c8832af32c35d0a8b75cdde","520872f7c5dd8e4aa5eded9d68906f287f0e7e1b223caa2826120dafea9b8410","15f5b91eae3102052653d137607e564bae28611b8c4d7de7246a6ec18a6215b6","3cb00f0b39f0dbc16cf727d2c38ec9913b64b666b256fbc683a5eadd9fc767b6","0a52641f1e38e5b7a7edb7eebbd6ad06e561db7c017f397323a263d74dd58e3f","2ceab74277f8e35d481a528c74e2c992429b2b75b8f0873fcd541cab9b210f0f","e442f58a3f157713f6fe0cb7fe25dfdf9b499cceed0e126eb112451c4bda9f74","b3aaf4efcababe7229436c363719a2d6d64e66c5bf1952ad94f4e7e88d2292a0","93a239166429cef36a11b58831be7493a8b6083297819b864f64fe5a6c51769d","7202799c12b024a0ad8bb7d331a2abfa37000f7d4d4400eedaf0e8de86e9325d","ba067b9736abb326db9b0de5ff6b6a1fb2a0d4205a07f04e216578771c829695","3158f69a5641c10fa2014100c5e7f0884b6d4a0cce43d32af91009a5e8031674","752fa9ab4f022a094d6c036e556ab0cd65b8c599db46b0ab6ef20c5f541347c3","ecb4c71c2c4a1d3f04dc18e53e17f16239cc35e791b384a1c39cdbf89a70f2a4","d153cbce75b7e1621eda0a4148748f44edd71ff44cc5351bac1c7787da4d5b05","30688eab034d1aa3bbe4d8f2c7f462ddaec9f30f1a38a306a4728a9a06a58b11","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","ed3b711f533ddb3a5451f4c4bb0df3a0b95e9d0433b3b7834644dd1718d06d31","2e345cb6511f4c4c60c274df6626c94f3182939034f06cdf414bfbccc584f822","223664714d25c6eb812e3df27befa175cd431eed9c8cb6132c8fe15a1416c986","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","ca59fe42b81228a317812e95a2e72ccc8c7f1911b5f0c2a032adf41a0161ec5d","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"3ec8e373850d57f7ed3caef238f56432e75abf0ec4b10fc74de5bf4f3452730b","4607333964d422f3ce30617fa24d14c859245fb64d26ead03720820dbbe953a0","348d49a7408fc21dfe20c113e2ff1a3d7acfdbe8f44f0868f11d18b8527b0eed","829bf149cf5c572da6a2219cb2078730090e3ffe036a3550c90826e1254571d8","e337faddffbbb87bb3b5fb873ee743faec265df7fd968ec8bdfdb81cea9ab3d7","09d52c11c854becc834e06bd8dd777b7d943cd6e6be9d8e398662c2cd32e98c3","3b1f4ed7424c53a6ede57d72f9d74ebdd8819789270f3445270cf4f94533a222","f7c8cd2ee11e00b5829c2c5d0fbdda590b2f58f694d0ed24f0e68bb221fb45b8","3fa069beee69905471af85425232d34588ebad50de1f910e57759509329d351c","cb5d45cffb79d5f8fc7df2ca451acf51a243cd5a32ea9627c34435dd79da5a19","bf57ee10fe34573c66700d0d0c9e2075f423c9d3be8280b2a63209f18a1b0b3e","b821026890c16177bee10f9819c0273c46b2cbc6d9f49167250673aba3681cd7","f281456b0fa7292f00cdca1d80c33cc88f9f4d46c869c2f5910d250e2e318863","0a7922ccd4464c2a1f14a73f2e4810e806c3c56272e6436e1b27a77d23c8ff22","c346c36d81cfd458a1d775efb7f5c26d47e92ceb4171b9cd1b389d1503ac1fe9","d69b7ae8654bd76f1bcfa1786ac14e98e7a29868e392d80a1245194c3b780561","bab887382c6f4d70676c84936df9d4fa2bc97b5d03d9ca17bdc3f123ae4af60f","4315e35067240a4fd24236c146ca572c553e15bcb2c5c2406f413e3deeea2ca1","872f5dd1220d622d00058c23e4905ff359550f2a996804f443a4082ad273094e","c7c81b8497472532f1c40bad57305ed4889091bab21d337ff7506c9b506fa842","9f8b606ba3de61082c78c47b687fdbaed7155a2bc764f40a97f681d10b61852f","61374afe43cc310e2a05e77f6a1b31d460a602760aa81a92a3fbb2bf693f0050","ca0cd34b2d9e38e09abae2839414fa76b61b7d68cc8d5fa8e10b8ee14ee1a1ae","c515984eb37168cc73ac26eca677a04a37cf14add3fc71910cdb4b9e3a041df2","4351574170facdc7b8b24c34f793ae7874541549a48b929319dab3d37ab1d265","8a79f5d7153edd0dcd76f82a77d871c7da513e37cc19bb708ca461fe445a6cab","6784b5096db7203756bbc60d124696152610b32716e5d2e715bf4c6e2071ef1e","ab2870fced6ce263fd53778246f2cecc6ebd7189a8a026962cc5de96550d5360","14bd4bb68850973380bb42a07cbc36812e4883c13b2b81a115e2f78fa2694bdf","10aad26039ae6f9b668b08722463087ae53257ef8d739b8bf12c3b102f9bcd98","44d87a055792d719a48a2e8291e66d0626d1d9c3fac8cfbc4e3dc608491c7e90","f0165ae2ceb7e357fe50cc549a72ed6aff2272ab5921dce0f24ff72ce0017585","8e13bb862c9026a279f6e17b790d7c9e895b9b746f4f624ce557de2c95469190","120c79bd76a6411ce382c5ba78fcff6be5cfcff615d944e7179d485f936aded1","e5ccad39b11f03898690ff9a50c8e767efe3233114769d66eb3b0654ddc58236","37f7ac78067b6c1bfd6475fe57d8066d05bdadad3f5ca63b2839011ec2727921","a130842f0a37751c0a17ac25fc4de3ad04b144c48e22faaeac6b1ddd35019353","bcab05e9b4a9dc7069b4bc56a51cadc7dc8441792610f5a64a94286d14065679","98dc2742f08c3a168a7b4cf4d3ae9cad1efbc6edbfa5ae1f8bda7de6cd27eb5e","29e5ea414fccb5efa0e8096787a46a2c224aa4c51c73807f2b9b8484875dd3bc","a864ffba7366a342627f903db41ba4bd3a237931a9b394f1e745bf81fd531348","d876d4bfbe39087b2c01b0923c16b13d42b240436d97b3d04b44afc11f5ff75d","869142116434c35877193813e5f2155ee1d042aff86f64e09208a3430edc5f9d","93a3ab104b7340b04c769c90f454c7c70d1a2baf1cd91c8a5a248f052a4d4f94","011ce294e4f25854b9929b9cc09fcd9943293bac3e74a0aeddcb2c98a1569c55","63ea76eab54e08ce38ada84ddff0b080d6c2e360165071af684b43844b15bda7","b5bdfadbc35ca3157e214f567aacd04c4d05801bfbb4b03270011d5f9b8169e1","333fd9fba50c15d3b497acfbda36fd0f4e628bafed7a21c5ebb98c134d346974","e031fd226f4145f52025159679be5b433ae200d57836dc3c417538257a39b49c","c5a263e61f0e1018a2b7061220d837c61c60c21d3b53e2a3316b1178234fccbf","3845edd5e1c6a40a3dba6efdcd2c6d518ddace8570a4fcada4b583ff635e1ec0","f86010285edd0309ee5960328c256fee65a76160fb2e6850ac95d9a0adc556f8","30783d97bd0231ae2c4b9320043d61442a8177e81c7df826a5536b95fdd63280","83e08cffdd69f6edf96ce3e43897d6c83e0cebe07706cfbe5fac60620d114670","5d35b8f0c1ddb6fed1b346ac7f909e96f5424453e72663758dcd7ab56b1962ff","c78822515a0ea8b95783223f3914c5e7ff980e0d661924df8b3a507c19611a56","ce63e27bd9c9c6208367f559bf29d10e3dbff2268f04047b031745c11cbbc279","cc6312e724d5740af74ad33ea8f8c614e7a8c29f76a1bbfbfc1a76fb4041c204","148637a0c15bea19aaf102eb5ebb1a024670110ea953c3c3bcecf1141bdb40e0","46f3c06685e1e4ed0cdf5e46176605c873db9d209ac92a366c2de7d6327b821b",{"version":"afa5ebfe574765db96767fc8303b92f92e9111b0f1502b03cb9d4a2afb83371e","affectsGlobalScope":true},"1265ede3998a83ac47fc179d014da3785c77a9c8373db80778b38f9074316a3f","ea5ae35761c7610fffa5d1cb986e9c684fe22356a3c1e3e73011cbca582033ca","e4a4bb1c77a0ab877e6df0befd1dedf4044d3267aab3d4f04c87e77b66ccf385","b621422b8c1f61a6844322a1bcca0e21fbd2647594a420eb4ef3322a6580ea91","1fc1c42b90e612d703727de6fba4362e3284017940b116b1cb569c6539d09fd5","1cbd36f0d4b6f5eca8e99be1b57b364c25a7742d7a9b64cc75d0b8327217a287","f5997dcd44068ff239d090e95e3def12d73353f7555255085209e5e8d2c61a0e","62ce800ddd31b5205dac356bca84338866e43f5b2f74f2e9587bd15f2ea339ec","46ad5f69334493c386bf1c4f607b1676105655dd90630d3e876c641619576de5","c30f2dffad8eff0f1c50bea6a0a1369d0073ec7e724b4a9486aba607eccacc4b","0b89cec2f207dcef4a2f066941136d5dbc75932bfb43cc6a821e8d8034666285","b163fc7501ee5976ddc9c213115f56b1e3e709aa21215e454d491e2d1bb429f1","bc4428b2ac43f698676d3d22fa0c9162285e030a04b931ab7eeb02de70f233c4","9b9bbd7af4b72686ad530c8c2313b1ba6c80c06fbd5f49db7afa2f9f2f3aab1e","b0bc27c4253f5d2794987efe21998e1c7c6386f22b89bfdbeafaf0d7e6616fbb","f6d6f6b528a89bbecc2e2bfd28f79ba0bc2cf90af5ec3b558de7cf2296538c73","5123528aeb0576ef34360832e201f0caf83af67644d3bb3d2e96aa36dc4cc97b","3a057ef1168e662aaef54f7b7e72f0220fbda5d03cf13558fa12a0f49fe3b4ff","b41634f0f8c454ca8f18aa286b1af8a49246dcbc6ddf0ac16651bcac9b528af9","21e59a5d786dbd31a90ef882728eb471c79814a7546fc63367682362fb4fc5c4","de11732f2e896f06ee4e7028ba3925ddd34fb8a64ea5d4b01e0f4b54c60dcf7c","5f9c5313c914285aea4101f718043c012f47b38b74d07723a7b57acf5ba7aa28","50890598ba9d8ae0eca1a103aef8aa653166fa0e64408342a673df08b4b7cd1b","5ed5dfbbe015cbc024daaa3e39540300ae0483d7cd26a5ef60c76af858468582","4803a8e77414332293a6280b218d47d63e99f49ddb3793129c5ac2db49a88a40","c13e280d244dc0829d954089e1d0446455efdb72fb4bdc2e3f0561ffbc66c905","8dfed5c91ad36e69e6da6b7e49be929d4e19666db2b651aa839c485170a2902c","6da9e714516d081abaa435946d77c8d74dba888530412dc71601e83d2c8a512e","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","71c56bdaa82d7ce75a72d3c06c04fe10becec09bd9c4ef21776a2a055d3f428e",{"version":"596d24e4142c1894577cf2bec2d626338cf7db27a58c1836a09cb0dfd416ad60","affectsGlobalScope":true},{"version":"3e432cdf56538889e5742d388cdf03d670bfb17f4547dbbb1daf90701ec790d5","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","55cb77e6ff3d95a68568446f53d3f1dc8fca753575d7c60471a865685f08dcc3","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"dda27180d5ff550ace8378f5df0f7a26e616f0c4e310c77e94329e2355f9c255","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","12a01de318341fefb7be11f22eb4bf28478a5f137b1b4546c509156e9c158198","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","5aa2a9a778a055cd668ea419ea80ba6e195210eb37d47707a1a58886aa4d80f0","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","9e6a556cf660a94faa51f5bce6ed009b9e02373546a4c67925da909f36c039d0","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"61dd09b57a0a5cf1486c3ceb3a18ad23babfe602c323035ce3d01544c5e3e0b6","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","352104835f5c468c7d8a277f2c8c02fac239a37cd2293181fe421faa153878d3","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","a4aa075328fe61190b8547e74fae18179591a67fedb2ad274c63044a00716743","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","49daf80661034e07d919f1c716aef69324e34d18a63a282f8100f52c961b58a7",{"version":"42c1b00421aa4d5f03b85a2639c1573d32bd82533f34423bbf1f5fb2b0ddc4d8","affectsGlobalScope":true},"f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69","8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012","92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41","b1b1adc57093310531ddf3f78b21bda16c30f7319088b0981449476a6616cff3","b6167e00019a8db27428651c58358d8cfac239107f25744e608816ed04361df7",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0","3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","7d7c8ef7d48a035142c07dae60545ecc0e4af4c337742760cb09726f2f8e31db","e300bf65972ac08167a72787e19d1b43c285c5424707194d0ba64422f6b02c77","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0","3d2cd8f3047fff04a71e7037a6a4cb9f4accb28dbd8c0d83164d414811025af0","bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","70b34c8420d6226ed565d55f47fe04912d0ca0ad128825c5a06e018a3498db32","de1d6e224048139baf7494237a9231be6bab9e990fb239c7825bfd38b06d8c90","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","abc2748988e07e7e754b43cfcfadca4d45f3449eb4c0be503f13630a3f15f22b","b8433d345073734a46733f512e9861caab9d016beb693df92cfca5bfc76c8b4c","0c7dfa2ae478e512280c2a684c2365fb289475d61dcef25a984589391da000ee","9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","df38da6685578ac3d0e4ce2d20f3d59462ee53959b8263d2532ec9cec48ae098","9751247ee3bbcf1c63592f0f4dafb44559680b2b3e5736b7f0578c6a737d74c8","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","c555dd691dd05955e99cd93dd99c685a65e5287813ccb5e6bfde951183248e26",{"version":"2d2482647045d334fcfce6eefa3340db2800cb2d0814e7b58d4f3b53c274d8ec","affectsGlobalScope":true},{"version":"2e332da5d628517bf415be2851b1954512b83f6bae4a98ed9786c6d4bf837bb8","affectsGlobalScope":true},{"version":"838524a3cc660f7bbb104ffa15febad659d1ef1633dac47340bfbfcbbbffdb08","affectsGlobalScope":true},{"version":"50a03e74fae4542ecfb326b34517ec2e058aee15bcb60af5b2e41c5e2db0d079","affectsGlobalScope":true},{"version":"d252bde46b7594f8f90a45d59181b08134ee8c4919ebb2ba7088ba26056bf621","affectsGlobalScope":true},{"version":"ab07d0ccd50b935d94c4abc2d1c894c57e3c872e845ace48c155b1f7f0382138","affectsGlobalScope":true},{"version":"10e86904b516b4280894d60f6062a126601c972987f9d1bd084908b9f41f2c4c","affectsGlobalScope":true},"4d737cdd77685ed65bd61d375375cae446fb0f46f711bbb3ef3f81a350212569","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","c0a3ea3aee13c4946a6aefce3a6ab9292a40a29f6622cde0fda0b1067a1a1f5f","62b931417104c7cb35d0725e1869f51d52d7b18462fd58f32f846a314a42ba10","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","c45d6f4d3a20be54e46237608f537a8d85397f87b9c3318d68ed925c2f1d0b51",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true},"1781e7a2a01c07c7295d3ce885d5d2905bec6449725937e3b8776c9b5ab4bf5b",{"version":"cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8","affectsGlobalScope":true},"ef6cede608fc396d0ad86d0240c40989a080c6a4c5b2ac5c84072c7e0ff2942e","2880728492d6a6baa55411d14cc42fa55714a24b1d1d27ff9a8a610abd47c761","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","aec0cabbdfacf43db998d8e50ee6f1e72131d24b5018dfb84f14806717baa0a6","e32dad799d088c53cbe1da736e34cad03027d56dd2fc77d484a67100278bc4bd","3833c70307dc3d2b46cb6f2a8b6a90e4d7e7367a21ab18c481d7de0909a43e67","c6c1427ba1efa270964d61564a3d99b59c0865a51dd55e4beb9f50e5c9aa8b51","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","05d64cc1118031b29786632a9a0f6d7cf1dcacb303f27023a466cf3cdc860538","e0fff9119e1a5d2fdd46345734126cd6cb99c2d98a9debf0257047fe3937cc3f","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","e275297155ec3251200abbb334c7f5641fecc68b2a9573e40eed50dff7584762","b2f006ee835f315d01c43c0f5d9e9ad78a5870b380899877b32a33078d065dbd",{"version":"e0c29cf48f8c3f7c96d9638c60ce6a68e4e2875760eca40a6e0f314c1e6c0997","affectsGlobalScope":true},"f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","09c4b2e2d3070239d563fc690f0cc5db04a2d9b66a23e61aef8b5274e3e9910c"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"target":4},"fileIdsList":[[305],[88],[50,89],[305,306,307,308,309],[305,307],[57,81],[357],[359],[360,361],[360],[363],[365],[50,358],[367,368,369,370],[371],[323,324,357,372],[324,357],[375],[50],[380],[381],[74,76],[52,53,54,55,56],[218],[206,208,209,210,211,212,213,214,215,216,217,218],[206,207,209,210,211,212,213,214,215,216,217,218],[207,208,209,210,211,212,213,214,215,216,217,218],[206,207,208,210,211,212,213,214,215,216,217,218],[206,207,208,209,211,212,213,214,215,216,217,218],[206,207,208,209,210,212,213,214,215,216,217,218],[206,207,208,209,210,211,213,214,215,216,217,218],[206,207,208,209,210,211,212,214,215,216,217,218],[206,207,208,209,210,211,212,213,215,216,217,218],[206,207,208,209,210,211,212,213,214,216,217,218],[206,207,208,209,210,211,212,213,214,215,217,218],[206,207,208,209,210,211,212,213,214,215,216,218],[206,207,208,209,210,211,212,213,214,215,216,217],[326,346,357,389,390],[326,340,357],[354,355],[323,324,331,340],[315,323,331],[347],[319,324,332],[340],[321,323,331],[323],[323,325,340,346],[324],[331,340,346],[323,324,326,331,340,343,346],[326,343,346],[356],[346],[321,323,340],[313],[345],[338,347,349],[331],[312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353],[337],[323,325,340,346,349],[398],[398,399,400,401,402,403],[364,397],[397,398],[50,377,410],[50,412],[50,198],[198,199,200,201,202],[46,47,48,49],[419],[418],[357,425,426,427,428,429,430,431,432,433,434,435],[424,425,434],[425,434],[416,424,425,434],[425],[319,424,434],[424,425,426,427,428,429,430,431,432,433,435],[319,357,418,421,422,423,436],[439],[70,71],[70,71,72,73],[75],[48,50,80,81,84],[48,50],[48,50,80,81,84,107],[50,81,94],[50,107],[50,79,80,112,115],[50,94],[50,79,80,113,114],[50,80],[50,90],[50,94,98],[50,99],[50,79,99],[50,99,102],[99,100,101,103],[57,79,84,85,86,87,90,91,92,93,98,104,105,106,107,108,109,110,111,115,116,117,118,119,120,121,124,125,130,131,132,133,134,135,136,137,138,139,140,141],[50,81,84,99,122],[123],[50,126],[126,127,128,129],[48,50,81],[50,82],[82,83],[95],[95,96,97],[48,50,163,168,169,181,182,184,185],[183],[80],[187],[186],[184],[80,191],[194],[163,168,169,181,182,184,185,186,187,188,189,190,191,192,193,195],[163,186],[164,165,166,167],[169,186],[169],[172],[170,171,173,174,175,176,177,178,179,180],[48,50,51,79,94,142,154,197,205,229,230,231,232,264,265,267],[48,50,51,94,142,154,205,228,230],[48,50,51,197,203,230,231,266],[48,50,51,142,147,154,203,231],[48,50,51,79,94,142,147,154,197,205,232],[48,50,51,94,142,147,205,230],[51,147],[48,50,51,94,197,205,220],[51,162,230],[51,162],[48,50,51,79,80,94,142,143,147,154,196,197,203,204,205,219,220,225,226,230,231,232,233,237,238,239,242,256,257,258,259,260,261,262,263,268,288,289,291,292,293],[50,51,142,197,203],[48,50,51,79,142,154,196,197,203,224,232,237],[51,196,230],[51,147,196,231],[51,231,299],[48,50,51,147,230,231,232,237],[48,50,51,94,142,154,205,220,290],[51,79,154,204,230,231,232,297,298],[51,94,196,230],[51,142],[51,79,144,147,154,196,219,230,231,232,235,237,263,264,296],[51,147,231,299],[51],[51,264,297],[51,147,154,196,226,230,234,235,236],[48,50,51,79,142,147,154,220],[50,51,94,142,205,223,224],[51,79,147,154,226,229],[48,50,51,147,154,196,219,264],[50,51,223,224],[48,50,51,147,154,219],[51,227,228],[48,50,51,79,142],[51,162,230,246],[51,162,246],[50,51,162,245],[51,247,248,249],[51,155],[51,147,154,155],[51,155,156,157,158,159,160,161],[51,143,226,230,231,232,237,261,263,294,297,300],[51,143,196,294],[51,142,196,237,294],[51,143,196,230,294],[51,240,241,295],[51,80],[51,196],[50,51,94,142,143,147,154,162,196,205,220,230,250],[51,142,196],[51,243,244,251,252,253,254,255],[51,233],[50,51,142,233],[48,50,51,94,142,147,154,197,205,232,271,277],[48,50,51,94,112,142,197,205,232,264,271,281],[48,50,51,94,112,142,197,205,280],[48,50,51,197,279],[48,50,51,80,94,112,142,154,197,205,220,230,232],[48,50,51,94,142,154,204,205,232],[48,50,51,79,94,142,147,196,197,205,232,271],[48,50,51,79,147,154,196,231,263],[48,50,51,79,80,94,112,142,154,196,197,205,220,232],[50,51,94,142,197,203,230,236,269],[51,230,235],[50,51,94,112,142,154,197,205,235,236],[50,51],[51,272,273,274,275,276],[51,236,269,270,278,282,283,284,285,286,287],[48],[145,146],[148],[149],[151],[148,150,151,152,153],[221,222],[62],[77],[58,59,60,61,62,63,64,65,66,67,68,69,78]],"referencedMap":[[307,1],[89,2],[205,3],[310,4],[306,1],[308,5],[309,1],[311,6],[358,7],[360,8],[362,9],[361,10],[364,11],[366,12],[365,13],[371,14],[368,15],[373,16],[374,17],[376,18],[377,19],[381,20],[382,21],[77,22],[57,23],[384,7],[385,24],[220,24],[386,24],[219,24],[207,25],[208,26],[206,27],[209,28],[210,29],[211,30],[212,31],[213,32],[214,33],[215,34],[216,35],[217,36],[218,37],[387,18],[391,38],[389,39],[356,40],[315,41],[316,42],[317,43],[318,44],[319,45],[320,46],[322,47],[323,47],[324,48],[325,49],[326,50],[327,51],[328,52],[357,53],[329,47],[330,54],[331,55],[334,56],[335,57],[338,47],[339,58],[340,47],[343,59],[354,60],[345,59],[346,61],[348,45],[350,62],[351,45],[393,47],[399,63],[400,63],[401,63],[404,64],[398,65],[397,63],[402,63],[403,66],[112,19],[409,19],[411,67],[412,68],[413,19],[199,69],[201,19],[198,19],[200,69],[203,70],[114,19],[113,19],[50,71],[51,19],[414,7],[420,72],[422,73],[436,74],[435,75],[426,76],[427,77],[428,77],[429,76],[430,76],[431,76],[432,78],[425,79],[433,75],[434,80],[437,81],[440,82],[72,83],[74,84],[73,83],[419,73],[76,85],[85,86],[86,87],[87,19],[90,3],[91,87],[92,19],[93,19],[106,19],[105,87],[108,88],[109,89],[110,90],[111,19],[116,91],[118,92],[115,93],[119,19],[120,19],[121,19],[125,19],[131,19],[132,19],[133,19],[107,19],[134,19],[135,94],[136,19],[138,19],[139,19],[140,95],[141,19],[99,96],[100,97],[102,98],[101,97],[103,99],[104,100],[142,101],[123,102],[122,97],[124,103],[127,104],[126,3],[128,19],[129,19],[130,105],[82,106],[83,107],[84,108],[96,109],[95,19],[97,109],[98,110],[186,111],[184,112],[185,113],[188,114],[190,114],[163,115],[191,116],[192,117],[195,118],[196,119],[166,120],[167,120],[164,120],[165,120],[168,121],[193,113],[180,122],[171,123],[173,124],[174,123],[175,123],[176,124],[177,123],[178,123],[170,123],[172,123],[179,123],[181,125],[94,2],[268,126],[265,127],[267,128],[266,129],[262,130],[289,131],[226,132],[239,133],[231,134],[263,135],[294,136],[224,137],[238,138],[258,139],[232,140],[300,141],[259,142],[291,143],[299,144],[260,145],[143,146],[297,147],[301,148],[261,149],[298,150],[237,151],[144,149],[290,152],[225,153],[230,154],[303,155],[257,156],[304,157],[227,149],[228,149],[229,158],[245,159],[247,160],[248,161],[246,162],[249,161],[250,163],[159,164],[160,164],[156,165],[157,165],[161,164],[158,165],[155,149],[162,166],[302,167],[295,168],[240,169],[241,170],[242,171],[296,172],[243,173],[244,173],[251,174],[252,173],[253,173],[254,175],[255,173],[256,176],[234,177],[293,178],[233,149],[278,179],[282,180],[281,181],[280,182],[283,149],[284,183],[292,184],[285,185],[286,186],[287,187],[270,188],[235,149],[236,189],[269,190],[272,191],[273,191],[274,191],[275,191],[276,191],[277,192],[288,193],[146,194],[147,195],[149,196],[150,197],[152,198],[154,199],[223,200],[222,19],[63,201],[78,202],[79,203]],"exportedModulesMap":[[307,1],[89,2],[205,3],[310,4],[306,1],[308,5],[309,1],[311,6],[358,7],[360,8],[362,9],[361,10],[364,11],[366,12],[365,13],[371,14],[368,15],[373,16],[374,17],[376,18],[377,19],[381,20],[382,21],[77,22],[57,23],[384,7],[385,24],[220,24],[386,24],[219,24],[207,25],[208,26],[206,27],[209,28],[210,29],[211,30],[212,31],[213,32],[214,33],[215,34],[216,35],[217,36],[218,37],[387,18],[391,38],[389,39],[356,40],[315,41],[316,42],[317,43],[318,44],[319,45],[320,46],[322,47],[323,47],[324,48],[325,49],[326,50],[327,51],[328,52],[357,53],[329,47],[330,54],[331,55],[334,56],[335,57],[338,47],[339,58],[340,47],[343,59],[354,60],[345,59],[346,61],[348,45],[350,62],[351,45],[393,47],[399,63],[400,63],[401,63],[404,64],[398,65],[397,63],[402,63],[403,66],[112,19],[409,19],[411,67],[412,68],[413,19],[199,69],[201,19],[198,19],[200,69],[203,70],[114,19],[113,19],[50,71],[51,19],[414,7],[420,72],[422,73],[436,74],[435,75],[426,76],[427,77],[428,77],[429,76],[430,76],[431,76],[432,78],[425,79],[433,75],[434,80],[437,81],[440,82],[72,83],[74,84],[73,83],[419,73],[76,85],[85,86],[86,87],[87,19],[90,3],[91,87],[92,19],[93,19],[106,19],[105,87],[108,88],[109,89],[110,90],[111,19],[116,91],[118,92],[115,93],[119,19],[120,19],[121,19],[125,19],[131,19],[132,19],[133,19],[107,19],[134,19],[135,94],[136,19],[138,19],[139,19],[140,95],[141,19],[99,96],[100,97],[102,98],[101,97],[103,99],[104,100],[142,101],[123,102],[122,97],[124,103],[127,104],[126,3],[128,19],[129,19],[130,105],[82,106],[83,107],[84,108],[96,109],[95,19],[97,109],[98,110],[186,111],[184,112],[185,113],[188,114],[190,114],[163,115],[191,116],[192,117],[195,118],[196,119],[166,120],[167,120],[164,120],[165,120],[168,121],[193,113],[180,122],[171,123],[173,124],[174,123],[175,123],[176,124],[177,123],[178,123],[170,123],[172,123],[179,123],[181,125],[94,2],[268,126],[265,127],[267,128],[266,129],[262,130],[289,131],[226,132],[239,133],[231,134],[263,135],[294,136],[224,137],[238,138],[258,139],[232,140],[300,141],[259,142],[291,143],[299,144],[260,145],[143,146],[297,147],[301,148],[261,149],[298,150],[237,151],[144,149],[290,152],[225,153],[230,154],[303,155],[257,156],[304,157],[227,149],[228,149],[229,158],[245,159],[247,160],[248,161],[246,162],[249,161],[250,163],[159,164],[160,164],[156,165],[157,165],[161,164],[158,165],[155,149],[162,166],[302,167],[295,168],[240,169],[241,170],[242,171],[296,172],[243,173],[244,173],[251,174],[252,173],[253,173],[254,175],[255,173],[256,176],[234,177],[293,178],[233,149],[278,179],[282,180],[281,181],[280,182],[283,149],[284,183],[292,184],[285,185],[286,186],[287,187],[270,188],[235,149],[236,189],[269,190],[272,191],[273,191],[274,191],[275,191],[276,191],[277,192],[288,193],[146,194],[147,195],[149,196],[150,197],[152,198],[154,199],[223,200],[222,19],[63,201],[78,202],[79,203]],"semanticDiagnosticsPerFile":[307,305,88,89,205,310,306,308,309,311,358,360,362,361,359,364,204,366,365,367,371,368,370,373,374,376,377,378,379,380,381,382,77,53,52,57,55,54,369,383,384,385,220,386,219,207,208,206,209,210,211,212,213,214,215,216,217,218,387,80,372,388,363,390,391,389,355,313,356,314,315,316,317,318,319,320,321,322,323,324,325,312,352,326,327,328,357,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,354,345,346,347,348,349,353,350,351,392,393,394,395,396,399,400,401,404,398,397,402,403,405,406,48,407,408,112,409,411,412,413,199,201,198,200,202,203,114,113,46,50,51,414,415,49,271,56,416,417,420,421,422,375,438,436,435,426,427,428,429,430,431,432,425,433,434,424,437,439,440,423,197,47,183,70,72,74,73,71,264,279,81,419,76,75,410,418,10,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,8,42,43,44,1,9,45,85,86,87,90,91,92,93,106,105,108,109,110,111,117,116,118,115,119,120,121,125,131,132,133,107,134,135,136,137,138,139,140,141,99,100,102,101,103,104,142,123,122,124,127,126,128,129,130,82,83,84,96,95,97,98,186,182,184,169,187,185,188,189,190,163,191,192,194,195,196,166,167,164,165,168,193,180,171,173,174,175,176,177,178,170,172,179,181,94,268,265,267,266,262,289,226,239,231,263,294,224,238,258,232,300,259,291,299,260,143,297,301,261,298,237,144,290,225,230,303,257,304,227,228,229,245,247,248,246,249,250,159,160,156,157,161,158,155,162,302,295,240,241,242,296,243,244,251,252,253,254,255,256,234,293,233,278,282,281,280,283,284,292,285,286,287,270,235,236,269,272,273,274,275,276,277,288,146,145,147,149,150,152,151,148,153,154,223,222,221,58,59,61,60,68,63,62,64,78,65,67,66,69,79]},"version":"4.3.2"}
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/@types/jquery/JQueryStatic.d.ts","../../../node_modules/@types/jquery/JQuery.d.ts","../../../node_modules/@types/jquery/misc.d.ts","../../../node_modules/@types/jquery/legacy.d.ts","../../../node_modules/@types/sizzle/index.d.ts","../../../node_modules/@types/jquery/index.d.ts","../../utils/dist/CanceledPromiseError.d.ts","../../utils/dist/ColorUtils.d.ts","../../utils/dist/DbNameValidator.d.ts","../../utils/dist/DOMUtils.d.ts","../../utils/dist/PromiseUtils.d.ts","../../utils/dist/Pending.d.ts","../../utils/dist/RangeUtils.d.ts","../../utils/dist/TextUtils.d.ts","../../utils/dist/TimeoutError.d.ts","../../utils/dist/TimeUtils.d.ts","../../utils/dist/InvalidMetadataError.d.ts","../../utils/dist/ValidationError.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../utils/dist/TestUtils.d.ts","../../utils/dist/index.d.ts","../../../node_modules/@types/memoizee/index.d.ts","../../../node_modules/popper.js/index.d.ts","../../components/dist/popper/Popper.d.ts","../../components/dist/popper/Tooltip.d.ts","../../components/dist/popper/index.d.ts","../../components/dist/AutoCompleteInput.d.ts","../../components/dist/AutoResizeTextarea.d.ts","../../components/dist/BasicModal.d.ts","../../../node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../../node_modules/@fortawesome/fontawesome-svg-core/index.d.ts","../../components/dist/Button.d.ts","../../components/dist/ButtonGroup.d.ts","../../components/dist/ButtonOld.d.ts","../../components/dist/CardFlip.d.ts","../../icons/dist/index.d.ts","../../components/dist/shortcuts/Shortcut.d.ts","../../components/dist/shortcuts/GlobalShortcuts.d.ts","../../components/dist/shortcuts/ShortcutRegistry.d.ts","../../components/dist/shortcuts/index.d.ts","../../components/dist/context-actions/ContextActionUtils.d.ts","../../components/dist/context-actions/ContextActions.d.ts","../../components/dist/context-actions/ContextMenuItem.d.ts","../../components/dist/context-actions/ContextMenu.d.ts","../../components/dist/context-actions/ContextMenuRoot.d.ts","../../components/dist/context-actions/index.d.ts","../../components/dist/Collapse.d.ts","../../components/dist/Checkbox.d.ts","../../components/dist/SearchInput.d.ts","../../components/dist/ComboBox.d.ts","../../components/dist/CustomTimeSelect.d.ts","../../components/dist/DebouncedSearchInput.d.ts","../../components/dist/DeephavenSpinner.d.ts","../../../node_modules/@types/react-beautiful-dnd/index.d.ts","../../../node_modules/@types/react-window/index.d.ts","../../../node_modules/@types/react-virtualized-auto-sizer/index.d.ts","../../components/dist/ItemList.d.ts","../../components/dist/DraggableItemList.d.ts","../../components/dist/DragUtils.d.ts","../../components/dist/HierarchicalCheckboxMenu.d.ts","../../components/dist/ItemListItem.d.ts","../../components/dist/LoadingOverlay.d.ts","../../components/dist/LoadingSpinner.d.ts","../../components/dist/menu-actions/Menu.d.ts","../../components/dist/menu-actions/DropdownMenu.d.ts","../../components/dist/menu-actions/index.d.ts","../../components/dist/MaskedInput.d.ts","../../components/dist/navigation/MenuItem.d.ts","../../components/dist/navigation/Menu.d.ts","../../components/dist/navigation/Page.d.ts","../../components/dist/navigation/Stack.d.ts","../../components/dist/navigation/index.d.ts","../../components/dist/Option.d.ts","../../components/dist/RadioGroup.d.ts","../../components/dist/RadioItem.d.ts","../../components/dist/Select.d.ts","../../components/dist/SelectValueList.d.ts","../../components/dist/SocketedButton.d.ts","../../components/dist/ThemeExport.d.ts","../../components/dist/TimeInput.d.ts","../../components/dist/TimeSlider.d.ts","../../components/dist/ToastNotification.d.ts","../../components/dist/UISwitch.d.ts","../../components/dist/index.d.ts","../src/IrisGridShortcuts.ts","../src/MissingKeyError.ts","../../jsapi-shim/dist/dh.d.ts","../../jsapi-shim/dist/PropTypes.d.ts","../../jsapi-shim/dist/index.d.ts","../../log/dist/Logger.d.ts","../../log/dist/DefaultLogger.d.ts","../../log/dist/Log.d.ts","../../log/dist/LogProxy.d.ts","../../log/dist/LogHistory.d.ts","../../log/dist/LoggerLevel.d.ts","../../log/dist/index.d.ts","../src/formatters/TableColumnFormatter.ts","../src/formatters/DateTimeColumnFormatter.ts","../src/formatters/DecimalColumnFormatter.ts","../src/formatters/IntegerColumnFormatter.ts","../src/formatters/BooleanColumnFormatter.js","../src/formatters/CharColumnFormatter.js","../src/formatters/DefaultColumnFormatter.js","../src/formatters/index.ts","../../grid/dist/KeyHandler.d.ts","../../grid/dist/key-handlers/SelectionKeyHandler.d.ts","../../grid/dist/key-handlers/TreeKeyHandler.d.ts","../../grid/dist/key-handlers/EditKeyHandler.d.ts","../../grid/dist/key-handlers/PasteKeyHandler.d.ts","../../grid/dist/key-handlers/index.d.ts","../../grid/dist/GridMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSelectionMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/EditMouseHandler.d.ts","../../grid/dist/mouse-handlers/index.d.ts","../../grid/dist/GridMetricCalculator.d.ts","../../../node_modules/event-target-shim/index.d.ts","../../grid/dist/GridModel.d.ts","../../grid/dist/GridRenderer.d.ts","../../grid/dist/Grid.d.ts","../../grid/dist/GridRange.d.ts","../../grid/dist/GridTestUtils.d.ts","../../grid/dist/GridTheme.d.ts","../../grid/dist/GridUtils.d.ts","../../grid/dist/MockGridModel.d.ts","../../grid/dist/MockTreeGridModel.d.ts","../../grid/dist/memoizeClear.d.ts","../../grid/dist/errors/PasteError.d.ts","../../grid/dist/errors/index.d.ts","../../grid/dist/index.d.ts","../../../node_modules/classnames/index.d.ts","../../../node_modules/@types/react-transition-group/Transition.d.ts","../../../node_modules/@types/react-transition-group/CSSTransition.d.ts","../../../node_modules/@types/react-transition-group/TransitionGroup.d.ts","../../../node_modules/@types/react-transition-group/SwitchTransition.d.ts","../../../node_modules/@types/react-transition-group/config.d.ts","../../../node_modules/@types/react-transition-group/index.d.ts","../../../node_modules/@types/deep-equal/index.d.ts","../../../node_modules/@fortawesome/react-fontawesome/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.throttle/index.d.ts","../../../node_modules/@types/lodash.debounce/index.d.ts","../../react-hooks/dist/usePrevious.d.ts","../../react-hooks/dist/useForwardedRef.d.ts","../../react-hooks/dist/index.d.ts","../src/IrisGridBottomBar.tsx","../src/PendingDataBottomBar.tsx","../src/DateUtils.js","../src/filters/FilterOperator.js","../src/filters/FilterType.js","../src/filters/index.js","../src/TableUtils.js","../src/Formatter.js","../src/IrisGridModel.js","../src/sidebar/AdvancedSettingsType.ts","../src/sidebar/AdvancedSettings.ts","../src/sidebar/aggregations/AggregationOperation.ts","../src/sidebar/aggregations/AggregationUtils.ts","../src/IrisGridUtils.js","../src/IrisGridCopyHandler.jsx","../src/FilterInputField.jsx","../src/key-handlers/CopyKeyHandler.ts","../src/key-handlers/ReverseKeyHandler.ts","../src/key-handlers/index.ts","../src/mousehandlers/IrisGridColumnSelectMouseHandler.js","../src/mousehandlers/IrisGridColumnTooltipMouseHandler.js","../src/format-context-menus/CustomFormatAction.jsx","../src/format-context-menus/FormatContextMenuUtils.jsx","../src/format-context-menus/DateTimeFormatContextMenu.js","../src/format-context-menus/DecimalFormatContextMenu.js","../src/format-context-menus/IntegerFormatContextMenu.js","../src/format-context-menus/index.js","../src/mousehandlers/IrisGridContextMenuHandler.jsx","../src/mousehandlers/IrisGridDataSelectMouseHandler.js","../src/mousehandlers/IrisGridFilterMouseHandler.js","../src/mousehandlers/IrisGridSortMouseHandler.js","../src/mousehandlers/PendingMouseHandler.js","../src/mousehandlers/index.js","../src/ToastBottomBar.tsx","../src/IrisGridMetricCalculator.js","../src/IrisGridModelUpdater.jsx","../src/IrisGridRenderer.js","../src/IrisGridTheme.js","../src/ColumnStatistics.jsx","../src/FormatterUtils.js","../../../node_modules/memoize-one/dist/memoize-one.d.ts","../src/AdvancedFilterCreatorFilterItem.jsx","../src/AdvancedFilterCreatorSelectValueList.jsx","../src/AdvancedFilterCreatorSelectValue.jsx","../src/AdvancedFilterCreator.jsx","../src/sidebar/aggregations/Aggregations.tsx","../src/sidebar/aggregations/AggregationEdit.tsx","../../../node_modules/@types/shortid/index.d.ts","../src/sidebar/icons/BarIcon.tsx","../src/sidebar/icons/HistogramIcon.tsx","../src/sidebar/icons/LineIcon.tsx","../src/sidebar/icons/PieIcon.tsx","../src/sidebar/icons/ScatterIcon.tsx","../src/sidebar/icons/index.js","../src/sidebar/ChartBuilder.jsx","../../../node_modules/monaco-editor/esm/vs/editor/editor.api.d.ts","../src/sidebar/InputEditor.jsx","../src/sidebar/CustomColumnInput.jsx","../src/sidebar/CustomColumnBuilder.jsx","../src/sidebar/OptionType.ts","../src/sidebar/RollupRows.jsx","../src/sidebar/TableCsvExporter.jsx","../src/sidebar/TableSaver.jsx","../src/sidebar/VisibilityOrderingBuilder.jsx","../src/sidebar/index.js","../src/CrossColumnSearch.jsx","../src/PartitionSelectorSearch.jsx","../src/IrisGridPartitionSelector.jsx","../src/sidebar/SelectDistinctBuilder.jsx","../src/sidebar/AdvancedSettingsMenu.tsx","../src/IrisGrid.jsx","../src/key-handlers/ClearFilterKeyHandler.ts","../src/memoizeClear.js","../src/IrisGridTableModel.js","../src/IrisGridTreeTableModel.js","../src/IrisGridProxyModel.js","../src/IrisGridModelFactory.js","../src/IrisGridTestUtils.js","../src/index.js","../src/TableViewportUpdater.jsx","../src/TreeTableViewportUpdater.jsx","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bootstrap/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/ts3.6/base.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/base.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/cheerio/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/color-convert/conversions.d.ts","../../../node_modules/@types/color-convert/route.d.ts","../../../node_modules/@types/color-convert/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/enzyme/index.d.ts","../../../node_modules/@types/enzyme-adapter-react-16/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/eslint/lib/rules/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/is-function/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/jszip/index.d.ts","../../../node_modules/@types/lodash.clamp/index.d.ts","../../../node_modules/@types/lodash.flatten/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../../node_modules/@types/overlayscrollbars/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/pouchdb-find/index.d.ts","../../../node_modules/@types/pouchdb-core/index.d.ts","../../../node_modules/@types/pouchdb-adapter-http/index.d.ts","../../../node_modules/@types/pouchdb-adapter-idb/index.d.ts","../../../node_modules/@types/pouchdb-adapter-websql/index.d.ts","../../../node_modules/@types/pouchdb-mapreduce/index.d.ts","../../../node_modules/@types/pouchdb-replication/index.d.ts","../../../node_modules/@types/pouchdb-browser/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/pretty-hrtime/index.d.ts","../../../node_modules/@types/q/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/redux/index.d.ts","../../../node_modules/@types/react-redux/index.d.ts","../../../node_modules/@types/react-syntax-highlighter/index.d.ts","../../../node_modules/@types/react-test-renderer/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/source-list-map/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/source-map/source-map.d.ts","../../../node_modules/postcss/lib/postcss.d.ts","../../../node_modules/@types/stylelint/index.d.ts","../../../node_modules/@types/tapable/index.d.ts","../../../node_modules/@types/uglify-js/index.d.ts","../../../node_modules/anymatch/index.d.ts","../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../node_modules/@types/webpack-sources/lib/Source.d.ts","../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts","../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts","../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts","../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts","../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts","../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts","../../../node_modules/@types/webpack-sources/index.d.ts","../../../node_modules/@types/webpack/index.d.ts","../../../node_modules/@types/webpack-env/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"38943ef508ccbc71691ff6c14f30e0468a85a4ec22c9e0a4eea2c9ba8ca19352","affectsGlobalScope":true},"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9",{"version":"66b1dd44bde78456344cd079a37443f90e54ffe3aa3ad5ac367a4698334a58fb","affectsGlobalScope":true},{"version":"513dfbfe04b52253f35007545694c2a99c313fdb6b836bdb8cbc9c7fb0ff6166","affectsGlobalScope":true},{"version":"a4832e26b82049fc2774c96ca6e1c17b2c204246570a62fdbe7e8ee8af2cd4d4","affectsGlobalScope":true},{"version":"6f1f78e8c2a5c7cd2c38aa9cc5da26d9c039f2bbfa753f2a0a54ce41c4dff8d0","affectsGlobalScope":true},"ec89427601297d439c961528832a75017d9356bec2ee42c1d16f2274590d9330","2b1af4170f6dfa90f43d2fe3d6c36f95b7fa121aa434a2acefb763d7be460a53","50eac108cc307665c28801910626932956adcf8dc0dc70ab1939dd0e8aeb6f28","1a68643644167daaea17e2f89d04edd9d1fec7bf881e4fa3ad4cd43d92447ce1","7255a17d460541e2ccca5f485bb58b6fa64bc750047c5e57ce7abf17cc3f4f3d","571ffdcb677c42d897370ca1a616798670d7715361dc099f713f03c067e8c988","1f8d8388b2da5785ef9c169db1493969f8c9e1ea50e1db1194a21708403f2e10","a299dcd51a18896ffb9f1249507d387a996b8d733cd1ee7c0a5fb46b86f88524","2c3d2bc00ffd291568c89e1ea920cf5c41b6b6a532cdc0bcb74e917eaf133f3b","e7857f874cbc2bd969097918305d8552156d0147d9a03a87e42f8cbd6e1729b5","0de99ed9f5d0a953aabe8de8999b0ce24944f36374d36c06abf9dca6e5567368","a756f87e33897fd95428da3288ed3061182b8678e38b48000c53e5499c7f8863","f68abba533f1aee022d1800ab3ad273e163909b97c171c8eea15fa04e3d02280","9b526aac58282b2b9c1afd1969828336c77a81ca52916214ae63a70e256a8032","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"f544c98b782364169412ac2bc65143918f9f1dd49880920302693f2eb3bd3570","e5d5ee66044d79018aadeabf3dc39d758d9c45c49c004b3a57b76a974fb346d7","d73a69ee2796e4ceb9dcb037605d8e7ac1e44aa9683b9664c68b0cd1516a3905","1873db8f2261ba4f248bde3e5bb4c79b1fdc990315054e9604fce8f41ddd1587","7fde24f7b90ddb8aef7ab8f3e2c318babe0c606b7ea5a833369475b0129a05ee","366c22193ba68d3c1ea31d37d98dd5f133fc9e234f07c46656284422bb4209fa","ff60413f9896b702b4e653cf85f6f8246e11482ad4d6859997ca9edafed9cc46","b682e653b63b5aa118887e61cd81a78fc45d4ef8fe95d8c6449742919a5638a4","bbc1e78124f19ccf50225278b700436ce64cf92b0c6b1ca15567431a28371b31","1f93a4dd7096a18c6cf99085327b467de58f3cd7f0f941a8bdc1d7ec4284b301","98edf9bdfe6c7794349a88d720af3035fd4a68480895e72beaf8ff8e758a33f5","a822e999d9c1814859735e919c2bd2a11f7d3c8633ab6656215dc386684e07bc","ae1b8ffb16f8dd0a4008ccf2534e6503af171a3c4ea17da590faeb0c41f85f3e","1cfe76cc39491c2f2059192c7486297154f0a517fe9b3bd9d223824a5f803573","acc42289b4e6d8d789b9f3a4c48fe601c23ab6fe747080f1dc99787b8e79d256","9de7ce840e4a5b95405a164d166d010eaa99fd631817ea3b0310ec4e22b98d0e","8a2395a5c1a95d05c205b791f012b120b4d02eb50a806e24d69da02c51de9d6f","65c0791093075bbb931a7e218aa03c954f634702ecff2ae0b6efc92b71cc6db9","21e1b303e758ec4a1e9f703e1e1be8c47c8dd74034c2369fd01e9bfe1da98acc","cd303995edbd7439d6232f1e7596b38f5d1cd65ec0837e009ceba781aca110f5","33cb56e3cc910266a13ca59281b907459131acc58739c2bd68dab246f8ed01fa","c6d0cb5ad7498c2c977a5340f17bcfcc151609118789bbace2336079f2d9f84a","383d4add4d2b7a9b03bb0b7b9b2f62b70c269e79616b629946b51283c14a92cf","4162810d701126188368ff58526c81e7c4c6a9a32ed26c4b763a5d3535b46748","513b7862a230ed479fb045bbe87d37f9ee91cc20fee15dd4b16c3cc74aa3e514","8ff77a6b5f0b74c681e132e9510f5576a29150ee53b1324efed33d3d7fabd736","7bdf81223f6cfae94a48484223d4b59b8ef609cf680f0fa90941d8e093ff27b0","9fbe4ad05e10d7957283cc4a3aa909e70717c62d51bdc19516ffd75a60c2eaf4","8b423ba6b1f81c80542db7deba332d1938db29f6f127fe169287903abe67fe8d","9c0a4431746ad0073026505df7a5724b4126c0e1f41b90e87c1efa6b8335711d","0ec7fb37f4303f3cac4f35819f0d5d75b3b4692990da2590c63c656729447dfe","ed6fbb1cb7cb8dc283f9d5efa68c17d5a9fc5e32fc481e2be7eccd5077d3afc0","e96e84cd79dac3fb1369911a8e9888308deda9542dcfb19d1540414e9ab64465","616ed304b4a011a969ba5d2aa5fca781d66b3f0c8f3d099e19c7158da36fa07b","163be962fa11ca0e3bc9afd1188701e16f5db0d84f904be3a5327c04bf14c1dc","f51c2abd01bb55990a6c5758c8ec34ea7802952c40c30c3941c75eea15539842","23255560340f60336ff79daf50b3b6432ec0f32f7dd19638d3a2406826a15d49","cbf272d1fef2ab8cca386524e1aa8e06caa3509eb6e724e0008ca613c05e7fdb","f8f0a01a9ec6571933c3b63b6d877d74729fbdab0be2fa87c18999b11357cf32","fca853da554cd762704a9bf8ad62cbf6d55d81c9d69b07b3c8a552367f4976d6","6b8d8f68865166b7f761ccdea7a66018f0452ddb7c6f75bf5cbaa31e6163af8f","d9cef8e439c407166963fa89b317d3ea7367e204035611447c9765786026f03b","ca888feddeab794c01fb1bec893ff46186801a30bca77c8a1aa28477f7e6f839","bb96345dfdd3b0695f5281537427e38fa85cb79449e3c6b59151bb7d753ef6f7","2561fd263d1d42554d0de99369f6fb352981090e2de0966b2e257891abf9977a","b01b764b8b1ce1376a70aa1bde2914093b36810a2a3e60cc9fd8f2741490a8f9","e6047a9c095d3b4a903aea90b49815be068476f1719e76766b7792ee21310f3a","cdcd29d866abedc194a88851871320fbb9c29e1c4868583b1f91ee2786acb818","c02107d9cae7a0c7541e8af0f4e0497650b1494e561e409e7cb90a12bc65ed09","5e62225c303695c8511d3831bca37c141931fd584e3aa1c8c5dd4b57cf01b1d0","1c3dd3b5d7eee485481470a75bd1829ee8e0388e87c8c8f8a8418f702592876a","53336c5924937a0a2a4ba1a515499f48092e4dd853386e77276c0a4ff8a1fa50","5a42225ecf779e7d42b44ff91cd7f842421835f28287e295e42622aa51aeeb6f","baab49106b672deb07dcd3e31333e4a2539970b5db9ee896aedbdba3ca2400e5","2af60becd168c31f931c6839f2cb126713bb0f556780b07959afd04b8311eade","cefdaf76e635bf0dc88bb7189c681eda7f8cc92a60faebd5ced12f416038d5a7","7181cfa9a4f05524e825271e409017810c1bc6a4b9544e05be5bd59ee76ca691","ad9afc2c60e7303174e70e6cbfc1eca63d8a770855d5fa3ddaac8769b9d93658","7e6b3017bd81ce434b27ae46cee6bdc5850db0e0d75e6a1d45c6c23e17eb135b","9304c3176830887fd3bbb010a9542ce549397b63624a51c8e7f2be032adb76e9","6c9c7d76d7f525a366d5ebdb0b42bccfab0ec7bdc0bce4db5b97573ee0970d3e","c7322d04c36fbd32b9035e07416c30073fbadf0bb6c1e855425f12c1df645aee","198c3858acc28364fb1cdf1d99d140fd9e0f3732c57ccd40a1752bcf8f318a0b","0625a691c77d71dd48fc83a59bff500dfbf3bdc1fe9c079b64bcaf078b5158d4",{"version":"662564f7dc409b31c6ad48129d12a1320c132b45bcafd3a990d0f8f545ce0529","affectsGlobalScope":true},"c30c1b997f63a82f7e93347b7978f63421126ad10c74f8d403224734deafbdc3","7e35ac912ffb1fc88557ad94721416f9b2b3f1a79263d7ab0c0c730607b3af9c","0637ca78a74b77392effa72e38c2951cce0bb5f7019276f312f85f3d308eb5ef","2b0dc274f4e10794352b468f179cf8b5a9a0203406d8185717dc93a5d7ea9136","53c520b2ebbd7c565fb533caffe747807ae5adbff2f50178a011bad4c334160c","5f34e74f9d889817c1388da54dbfdb28a36af5676c396fa3041309690bfa9ade","b0e23a13de5e00df2097f3bbc0ba67ecc18946f10222c2d4571814ba718467d7","2f89dab4002cafa419a8385e6cd54f3fd5458a024feb0f79e9967bf4c47157f7","e841f45cbf880c37dfc3279dd87523670ac8bf5477541a682ab10669ae6db0f0","4dfb0de036b79d6c4851ad323b7b8ba8d2eff92099edb928c28e2b8f151b4c73","b59fc967b467026aeb1dc3f3fc02c26b8b0b613212ade066d58cb1050b774da1","b10686e239ffd69ba14643969dd14c8be05f0fabeaff6490637efd034686474a","bf49b77e69d2575b30386dfa0cb9633da9f483144d08123507828d92e7d95580","b101a659d8bdd1c71e590eff9edfd870bfc078d1a92192872df0d7a13f9b1628","4f5236ccf12cc44a25a8255c003a29679b456d88137b14db7611af27e7b01bba","1af40226abcfdcf4544375356229346c361da0796052f60cb8cac3beeea405e4","13edbe3a9ba7eaac0c11a08a5193e3ad8e8bb5b97ba90e41383f1cfd4a2addf9","f9912c88ee5f6f82e28a873ae40149a05538f2bc7d5387d6243a7df566db3076","87773a51a8e0f517fe845943114659bf62286f1c63efc59ae236ce5ec9f074d2","44b589ca1773a9b98a44a81a142a3dad82118f0d417eee5dcbd102ad92c3e119","4e1cb04564eb20088c531c817c8f6c4db49620ef50376f35245642c67eb145ce","d3add4e7d6efaf837f6d0db385083d6b23a484c2c6079acbc8fa892c201487c7","8376014c53e41b0d5f96a78fdd2d8a8758640ad2f6ce292b5c66aebd6d088b46","03f3ca4f21862f79e971b5ca6b63805895cff6ccbd7ed31d2fd7327f19f5e028","f2b9951257d06d78828f43dc4047510ec21fe000f21cefd58684476db831ac5f","536fb1e2b80cceb77644b414e26ce29a8417f94a72f867f57e2e0c2db980a9ce","f0b0ef0ccfe0beeaa902aacd48798cc9a7f755546481cb149c4a57c7956c6d0a","2476381be38618f2937afa95c337739684aa174576a278139b7b08b6ab1f5341","c5d12b850beb2feb0369374909dc30fea794f25baaae8aa6f23ee533d80dfbac","ca8d29244d394cdc4cbfbddbbbe183bdcdb25daeb1814777bd1b988efc963bc5","685aa006f7939b593b1f39b823cedfb4f23ccb0002226988f8270b6345399aa4","0a5939cc81f0c470f3cae077943ab1a8f27bd0e0ef31fb6d9999c1099d5c1557","da1c29ce8da2803892f72c74fdb05992765ec7d5d9a6ef4dd82f3534e7d4773e","deb2c4a4f7e35965dde684402787eac08ca9143178a75b2c441d07fa7830fcbe","069d9515e3cb0d254928b11bf7da7e22afddf1d2a14f239421a128952069f898","c33ff15f5bb2ec9fe792288ee8a6e61a45210aad52007bc573d11e49a17542de","0cb0bb747f030197835fd42fab515388f3cd9745256f8b9badb0ed33477b4275","40d2b100e0cf82c6a297597f2f68f152ed9bd67533bbab359c5cc3d2d43a0e98","47c12b9b24e5bfd2879de2e2d1e921b2fd984e11c2086460ef3110408135641d","43eb52bf5a546b3f84e7da5b4eb1305f9ecfe9f5a3f41b85d620d1354a5f3646","63633f5796c4cf53210ce75f02e5d6e81b88012f5c8832af32c35d0a8b75cdde","520872f7c5dd8e4aa5eded9d68906f287f0e7e1b223caa2826120dafea9b8410","15f5b91eae3102052653d137607e564bae28611b8c4d7de7246a6ec18a6215b6","3cb00f0b39f0dbc16cf727d2c38ec9913b64b666b256fbc683a5eadd9fc767b6","0a52641f1e38e5b7a7edb7eebbd6ad06e561db7c017f397323a263d74dd58e3f","2ceab74277f8e35d481a528c74e2c992429b2b75b8f0873fcd541cab9b210f0f","e442f58a3f157713f6fe0cb7fe25dfdf9b499cceed0e126eb112451c4bda9f74","b3aaf4efcababe7229436c363719a2d6d64e66c5bf1952ad94f4e7e88d2292a0","93a239166429cef36a11b58831be7493a8b6083297819b864f64fe5a6c51769d","7202799c12b024a0ad8bb7d331a2abfa37000f7d4d4400eedaf0e8de86e9325d","ba067b9736abb326db9b0de5ff6b6a1fb2a0d4205a07f04e216578771c829695","3158f69a5641c10fa2014100c5e7f0884b6d4a0cce43d32af91009a5e8031674","752fa9ab4f022a094d6c036e556ab0cd65b8c599db46b0ab6ef20c5f541347c3","ecb4c71c2c4a1d3f04dc18e53e17f16239cc35e791b384a1c39cdbf89a70f2a4","d153cbce75b7e1621eda0a4148748f44edd71ff44cc5351bac1c7787da4d5b05","30688eab034d1aa3bbe4d8f2c7f462ddaec9f30f1a38a306a4728a9a06a58b11","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","ed3b711f533ddb3a5451f4c4bb0df3a0b95e9d0433b3b7834644dd1718d06d31","2e345cb6511f4c4c60c274df6626c94f3182939034f06cdf414bfbccc584f822","223664714d25c6eb812e3df27befa175cd431eed9c8cb6132c8fe15a1416c986","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","ca59fe42b81228a317812e95a2e72ccc8c7f1911b5f0c2a032adf41a0161ec5d","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"3ec8e373850d57f7ed3caef238f56432e75abf0ec4b10fc74de5bf4f3452730b","4607333964d422f3ce30617fa24d14c859245fb64d26ead03720820dbbe953a0","348d49a7408fc21dfe20c113e2ff1a3d7acfdbe8f44f0868f11d18b8527b0eed","829bf149cf5c572da6a2219cb2078730090e3ffe036a3550c90826e1254571d8","e337faddffbbb87bb3b5fb873ee743faec265df7fd968ec8bdfdb81cea9ab3d7","09d52c11c854becc834e06bd8dd777b7d943cd6e6be9d8e398662c2cd32e98c3","3b1f4ed7424c53a6ede57d72f9d74ebdd8819789270f3445270cf4f94533a222","f7c8cd2ee11e00b5829c2c5d0fbdda590b2f58f694d0ed24f0e68bb221fb45b8","3fa069beee69905471af85425232d34588ebad50de1f910e57759509329d351c","cb5d45cffb79d5f8fc7df2ca451acf51a243cd5a32ea9627c34435dd79da5a19","bf57ee10fe34573c66700d0d0c9e2075f423c9d3be8280b2a63209f18a1b0b3e","b821026890c16177bee10f9819c0273c46b2cbc6d9f49167250673aba3681cd7","f281456b0fa7292f00cdca1d80c33cc88f9f4d46c869c2f5910d250e2e318863","0a7922ccd4464c2a1f14a73f2e4810e806c3c56272e6436e1b27a77d23c8ff22","c346c36d81cfd458a1d775efb7f5c26d47e92ceb4171b9cd1b389d1503ac1fe9","d69b7ae8654bd76f1bcfa1786ac14e98e7a29868e392d80a1245194c3b780561","bab887382c6f4d70676c84936df9d4fa2bc97b5d03d9ca17bdc3f123ae4af60f","4315e35067240a4fd24236c146ca572c553e15bcb2c5c2406f413e3deeea2ca1","872f5dd1220d622d00058c23e4905ff359550f2a996804f443a4082ad273094e","c7c81b8497472532f1c40bad57305ed4889091bab21d337ff7506c9b506fa842","9f8b606ba3de61082c78c47b687fdbaed7155a2bc764f40a97f681d10b61852f","61374afe43cc310e2a05e77f6a1b31d460a602760aa81a92a3fbb2bf693f0050","ca0cd34b2d9e38e09abae2839414fa76b61b7d68cc8d5fa8e10b8ee14ee1a1ae","c515984eb37168cc73ac26eca677a04a37cf14add3fc71910cdb4b9e3a041df2","4351574170facdc7b8b24c34f793ae7874541549a48b929319dab3d37ab1d265","8a79f5d7153edd0dcd76f82a77d871c7da513e37cc19bb708ca461fe445a6cab","6784b5096db7203756bbc60d124696152610b32716e5d2e715bf4c6e2071ef1e","ab2870fced6ce263fd53778246f2cecc6ebd7189a8a026962cc5de96550d5360","14bd4bb68850973380bb42a07cbc36812e4883c13b2b81a115e2f78fa2694bdf","10aad26039ae6f9b668b08722463087ae53257ef8d739b8bf12c3b102f9bcd98","44d87a055792d719a48a2e8291e66d0626d1d9c3fac8cfbc4e3dc608491c7e90","f0165ae2ceb7e357fe50cc549a72ed6aff2272ab5921dce0f24ff72ce0017585","8e13bb862c9026a279f6e17b790d7c9e895b9b746f4f624ce557de2c95469190","120c79bd76a6411ce382c5ba78fcff6be5cfcff615d944e7179d485f936aded1","e5ccad39b11f03898690ff9a50c8e767efe3233114769d66eb3b0654ddc58236","37f7ac78067b6c1bfd6475fe57d8066d05bdadad3f5ca63b2839011ec2727921","a130842f0a37751c0a17ac25fc4de3ad04b144c48e22faaeac6b1ddd35019353","bcab05e9b4a9dc7069b4bc56a51cadc7dc8441792610f5a64a94286d14065679","98dc2742f08c3a168a7b4cf4d3ae9cad1efbc6edbfa5ae1f8bda7de6cd27eb5e","29e5ea414fccb5efa0e8096787a46a2c224aa4c51c73807f2b9b8484875dd3bc","a864ffba7366a342627f903db41ba4bd3a237931a9b394f1e745bf81fd531348","d876d4bfbe39087b2c01b0923c16b13d42b240436d97b3d04b44afc11f5ff75d","869142116434c35877193813e5f2155ee1d042aff86f64e09208a3430edc5f9d","93a3ab104b7340b04c769c90f454c7c70d1a2baf1cd91c8a5a248f052a4d4f94","011ce294e4f25854b9929b9cc09fcd9943293bac3e74a0aeddcb2c98a1569c55","63ea76eab54e08ce38ada84ddff0b080d6c2e360165071af684b43844b15bda7","b5bdfadbc35ca3157e214f567aacd04c4d05801bfbb4b03270011d5f9b8169e1","333fd9fba50c15d3b497acfbda36fd0f4e628bafed7a21c5ebb98c134d346974","e031fd226f4145f52025159679be5b433ae200d57836dc3c417538257a39b49c","c5a263e61f0e1018a2b7061220d837c61c60c21d3b53e2a3316b1178234fccbf","3845edd5e1c6a40a3dba6efdcd2c6d518ddace8570a4fcada4b583ff635e1ec0","f86010285edd0309ee5960328c256fee65a76160fb2e6850ac95d9a0adc556f8","30783d97bd0231ae2c4b9320043d61442a8177e81c7df826a5536b95fdd63280","83e08cffdd69f6edf96ce3e43897d6c83e0cebe07706cfbe5fac60620d114670","5d35b8f0c1ddb6fed1b346ac7f909e96f5424453e72663758dcd7ab56b1962ff","c78822515a0ea8b95783223f3914c5e7ff980e0d661924df8b3a507c19611a56","ce63e27bd9c9c6208367f559bf29d10e3dbff2268f04047b031745c11cbbc279","cc6312e724d5740af74ad33ea8f8c614e7a8c29f76a1bbfbfc1a76fb4041c204","148637a0c15bea19aaf102eb5ebb1a024670110ea953c3c3bcecf1141bdb40e0","46f3c06685e1e4ed0cdf5e46176605c873db9d209ac92a366c2de7d6327b821b",{"version":"afa5ebfe574765db96767fc8303b92f92e9111b0f1502b03cb9d4a2afb83371e","affectsGlobalScope":true},"1265ede3998a83ac47fc179d014da3785c77a9c8373db80778b38f9074316a3f","ea5ae35761c7610fffa5d1cb986e9c684fe22356a3c1e3e73011cbca582033ca","e4a4bb1c77a0ab877e6df0befd1dedf4044d3267aab3d4f04c87e77b66ccf385","b621422b8c1f61a6844322a1bcca0e21fbd2647594a420eb4ef3322a6580ea91","1fc1c42b90e612d703727de6fba4362e3284017940b116b1cb569c6539d09fd5","1cbd36f0d4b6f5eca8e99be1b57b364c25a7742d7a9b64cc75d0b8327217a287","44e682c60d9c347e07a4047d4be08fa913be700fe76d131668293ecb58622bbf","62ce800ddd31b5205dac356bca84338866e43f5b2f74f2e9587bd15f2ea339ec","46ad5f69334493c386bf1c4f607b1676105655dd90630d3e876c641619576de5","c30f2dffad8eff0f1c50bea6a0a1369d0073ec7e724b4a9486aba607eccacc4b","0b89cec2f207dcef4a2f066941136d5dbc75932bfb43cc6a821e8d8034666285","b163fc7501ee5976ddc9c213115f56b1e3e709aa21215e454d491e2d1bb429f1","bc4428b2ac43f698676d3d22fa0c9162285e030a04b931ab7eeb02de70f233c4","9b9bbd7af4b72686ad530c8c2313b1ba6c80c06fbd5f49db7afa2f9f2f3aab1e","b0bc27c4253f5d2794987efe21998e1c7c6386f22b89bfdbeafaf0d7e6616fbb","f6d6f6b528a89bbecc2e2bfd28f79ba0bc2cf90af5ec3b558de7cf2296538c73","5123528aeb0576ef34360832e201f0caf83af67644d3bb3d2e96aa36dc4cc97b","bef6387c9d45586b40064908f23865d30a2ce6e1fd6101aa0b843ff2a9d300ea","b41634f0f8c454ca8f18aa286b1af8a49246dcbc6ddf0ac16651bcac9b528af9","21e59a5d786dbd31a90ef882728eb471c79814a7546fc63367682362fb4fc5c4","de11732f2e896f06ee4e7028ba3925ddd34fb8a64ea5d4b01e0f4b54c60dcf7c","5f9c5313c914285aea4101f718043c012f47b38b74d07723a7b57acf5ba7aa28","50890598ba9d8ae0eca1a103aef8aa653166fa0e64408342a673df08b4b7cd1b","5ed5dfbbe015cbc024daaa3e39540300ae0483d7cd26a5ef60c76af858468582","4803a8e77414332293a6280b218d47d63e99f49ddb3793129c5ac2db49a88a40","c13e280d244dc0829d954089e1d0446455efdb72fb4bdc2e3f0561ffbc66c905","8dfed5c91ad36e69e6da6b7e49be929d4e19666db2b651aa839c485170a2902c","6da9e714516d081abaa435946d77c8d74dba888530412dc71601e83d2c8a512e","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","71c56bdaa82d7ce75a72d3c06c04fe10becec09bd9c4ef21776a2a055d3f428e",{"version":"596d24e4142c1894577cf2bec2d626338cf7db27a58c1836a09cb0dfd416ad60","affectsGlobalScope":true},{"version":"3e432cdf56538889e5742d388cdf03d670bfb17f4547dbbb1daf90701ec790d5","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","55cb77e6ff3d95a68568446f53d3f1dc8fca753575d7c60471a865685f08dcc3","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"dda27180d5ff550ace8378f5df0f7a26e616f0c4e310c77e94329e2355f9c255","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","12a01de318341fefb7be11f22eb4bf28478a5f137b1b4546c509156e9c158198","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","5aa2a9a778a055cd668ea419ea80ba6e195210eb37d47707a1a58886aa4d80f0","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","9e6a556cf660a94faa51f5bce6ed009b9e02373546a4c67925da909f36c039d0","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"61dd09b57a0a5cf1486c3ceb3a18ad23babfe602c323035ce3d01544c5e3e0b6","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","352104835f5c468c7d8a277f2c8c02fac239a37cd2293181fe421faa153878d3","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","a4aa075328fe61190b8547e74fae18179591a67fedb2ad274c63044a00716743","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","49daf80661034e07d919f1c716aef69324e34d18a63a282f8100f52c961b58a7",{"version":"42c1b00421aa4d5f03b85a2639c1573d32bd82533f34423bbf1f5fb2b0ddc4d8","affectsGlobalScope":true},"f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69","8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012","92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41","b1b1adc57093310531ddf3f78b21bda16c30f7319088b0981449476a6616cff3","b6167e00019a8db27428651c58358d8cfac239107f25744e608816ed04361df7",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0","3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","7d7c8ef7d48a035142c07dae60545ecc0e4af4c337742760cb09726f2f8e31db","e300bf65972ac08167a72787e19d1b43c285c5424707194d0ba64422f6b02c77","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0","3d2cd8f3047fff04a71e7037a6a4cb9f4accb28dbd8c0d83164d414811025af0","bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","70b34c8420d6226ed565d55f47fe04912d0ca0ad128825c5a06e018a3498db32","de1d6e224048139baf7494237a9231be6bab9e990fb239c7825bfd38b06d8c90","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","abc2748988e07e7e754b43cfcfadca4d45f3449eb4c0be503f13630a3f15f22b","b8433d345073734a46733f512e9861caab9d016beb693df92cfca5bfc76c8b4c","0c7dfa2ae478e512280c2a684c2365fb289475d61dcef25a984589391da000ee","9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","df38da6685578ac3d0e4ce2d20f3d59462ee53959b8263d2532ec9cec48ae098","9751247ee3bbcf1c63592f0f4dafb44559680b2b3e5736b7f0578c6a737d74c8","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","c555dd691dd05955e99cd93dd99c685a65e5287813ccb5e6bfde951183248e26",{"version":"2d2482647045d334fcfce6eefa3340db2800cb2d0814e7b58d4f3b53c274d8ec","affectsGlobalScope":true},{"version":"2e332da5d628517bf415be2851b1954512b83f6bae4a98ed9786c6d4bf837bb8","affectsGlobalScope":true},{"version":"838524a3cc660f7bbb104ffa15febad659d1ef1633dac47340bfbfcbbbffdb08","affectsGlobalScope":true},{"version":"50a03e74fae4542ecfb326b34517ec2e058aee15bcb60af5b2e41c5e2db0d079","affectsGlobalScope":true},{"version":"d252bde46b7594f8f90a45d59181b08134ee8c4919ebb2ba7088ba26056bf621","affectsGlobalScope":true},{"version":"ab07d0ccd50b935d94c4abc2d1c894c57e3c872e845ace48c155b1f7f0382138","affectsGlobalScope":true},{"version":"10e86904b516b4280894d60f6062a126601c972987f9d1bd084908b9f41f2c4c","affectsGlobalScope":true},"4d737cdd77685ed65bd61d375375cae446fb0f46f711bbb3ef3f81a350212569","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","c0a3ea3aee13c4946a6aefce3a6ab9292a40a29f6622cde0fda0b1067a1a1f5f","62b931417104c7cb35d0725e1869f51d52d7b18462fd58f32f846a314a42ba10","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","c45d6f4d3a20be54e46237608f537a8d85397f87b9c3318d68ed925c2f1d0b51",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true},"1781e7a2a01c07c7295d3ce885d5d2905bec6449725937e3b8776c9b5ab4bf5b",{"version":"cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8","affectsGlobalScope":true},"ef6cede608fc396d0ad86d0240c40989a080c6a4c5b2ac5c84072c7e0ff2942e","2880728492d6a6baa55411d14cc42fa55714a24b1d1d27ff9a8a610abd47c761","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","aec0cabbdfacf43db998d8e50ee6f1e72131d24b5018dfb84f14806717baa0a6","e32dad799d088c53cbe1da736e34cad03027d56dd2fc77d484a67100278bc4bd","3833c70307dc3d2b46cb6f2a8b6a90e4d7e7367a21ab18c481d7de0909a43e67","c6c1427ba1efa270964d61564a3d99b59c0865a51dd55e4beb9f50e5c9aa8b51","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","05d64cc1118031b29786632a9a0f6d7cf1dcacb303f27023a466cf3cdc860538","e0fff9119e1a5d2fdd46345734126cd6cb99c2d98a9debf0257047fe3937cc3f","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","e275297155ec3251200abbb334c7f5641fecc68b2a9573e40eed50dff7584762","b2f006ee835f315d01c43c0f5d9e9ad78a5870b380899877b32a33078d065dbd",{"version":"e0c29cf48f8c3f7c96d9638c60ce6a68e4e2875760eca40a6e0f314c1e6c0997","affectsGlobalScope":true},"f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","09c4b2e2d3070239d563fc690f0cc5db04a2d9b66a23e61aef8b5274e3e9910c"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"target":4},"fileIdsList":[[305],[88],[50,89],[305,306,307,308,309],[305,307],[57,81],[357],[359],[360,361],[360],[363],[365],[50,358],[367,368,369,370],[371],[323,324,357,372],[324,357],[375],[50],[380],[381],[74,76],[52,53,54,55,56],[218],[206,208,209,210,211,212,213,214,215,216,217,218],[206,207,209,210,211,212,213,214,215,216,217,218],[207,208,209,210,211,212,213,214,215,216,217,218],[206,207,208,210,211,212,213,214,215,216,217,218],[206,207,208,209,211,212,213,214,215,216,217,218],[206,207,208,209,210,212,213,214,215,216,217,218],[206,207,208,209,210,211,213,214,215,216,217,218],[206,207,208,209,210,211,212,214,215,216,217,218],[206,207,208,209,210,211,212,213,215,216,217,218],[206,207,208,209,210,211,212,213,214,216,217,218],[206,207,208,209,210,211,212,213,214,215,217,218],[206,207,208,209,210,211,212,213,214,215,216,218],[206,207,208,209,210,211,212,213,214,215,216,217],[326,346,357,389,390],[326,340,357],[354,355],[323,324,331,340],[315,323,331],[347],[319,324,332],[340],[321,323,331],[323],[323,325,340,346],[324],[331,340,346],[323,324,326,331,340,343,346],[326,343,346],[356],[346],[321,323,340],[313],[345],[338,347,349],[331],[312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353],[337],[323,325,340,346,349],[398],[398,399,400,401,402,403],[364,397],[397,398],[50,377,410],[50,412],[50,198],[198,199,200,201,202],[46,47,48,49],[419],[418],[357,425,426,427,428,429,430,431,432,433,434,435],[424,425,434],[425,434],[416,424,425,434],[425],[319,424,434],[424,425,426,427,428,429,430,431,432,433,435],[319,357,418,421,422,423,436],[439],[70,71],[70,71,72,73],[75],[48,50,80,81,84],[48,50],[48,50,80,81,84,107],[50,81,94],[50,107],[50,79,80,112,115],[50,94],[50,79,80,113,114],[50,80],[50,90],[50,94,98],[50,99],[50,79,99],[50,99,102],[99,100,101,103],[57,79,84,85,86,87,90,91,92,93,98,104,105,106,107,108,109,110,111,115,116,117,118,119,120,121,124,125,130,131,132,133,134,135,136,137,138,139,140,141],[50,81,84,99,122],[123],[50,126],[126,127,128,129],[48,50,81],[50,82],[82,83],[95],[95,96,97],[48,50,163,168,169,181,182,184,185],[183],[80],[187],[186],[184],[80,191],[194],[163,168,169,181,182,184,185,186,187,188,189,190,191,192,193,195],[163,186],[164,165,166,167],[169,186],[169],[172],[170,171,173,174,175,176,177,178,179,180],[48,50,51,79,94,142,154,197,205,229,230,231,232,264,265,267],[48,50,51,94,142,154,205,228,230],[48,50,51,197,203,230,231,266],[48,50,51,142,147,154,203,231],[48,50,51,79,94,142,147,154,197,205,232],[48,50,51,94,142,147,205,230],[51,147],[48,50,51,94,197,205,220],[51,162,230],[51,162],[48,50,51,79,80,94,142,143,147,154,196,197,203,204,205,219,220,225,226,230,231,232,233,237,238,239,242,256,257,258,259,260,261,262,263,268,288,289,291,292,293],[50,51,142,197,203],[48,50,51,79,142,154,196,197,203,224,232,237],[51,196,230],[51,147,196,231],[51,231,299],[48,50,51,147,230,231,232,237],[48,50,51,94,142,154,205,220,290],[51,79,154,204,230,231,232,297,298],[51,94,196,230],[51,142],[51,79,144,147,154,196,219,230,231,232,235,237,263,264,296],[51,147,231,299],[51],[51,264,297],[51,147,154,196,226,230,234,235,236],[48,50,51,79,142,147,154,220],[50,51,94,142,205,223,224],[51,79,147,154,226,229],[48,50,51,147,154,196,219,264],[50,51,223,224],[48,50,51,147,154,219],[51,227,228],[48,50,51,79,142],[51,162,230,246],[51,162,246],[50,51,162,245],[51,247,248,249],[51,155],[51,147,154,155],[51,155,156,157,158,159,160,161],[51,143,226,230,231,232,237,261,263,294,297,300],[51,143,196,294],[51,142,196,237,294],[51,143,196,230,294],[51,240,241,295],[51,80],[51,196],[50,51,94,142,143,147,154,162,196,205,220,230,250],[51,142,196],[51,243,244,251,252,253,254,255],[51,233],[50,51,142,233],[48,50,51,94,142,147,154,197,205,232,271,277],[48,50,51,94,112,142,197,205,232,264,271,281],[48,50,51,94,112,142,197,205,280],[48,50,51,197,279],[48,50,51,80,94,112,142,154,197,205,220,230,232],[48,50,51,94,142,154,204,205,232],[48,50,51,79,94,142,147,196,197,205,232,271],[48,50,51,79,147,154,196,231,263],[48,50,51,79,80,94,112,142,154,196,197,205,220,232],[50,51,94,142,197,203,230,236,269],[51,230,235],[50,51,94,112,142,154,197,205,235,236],[50,51],[51,272,273,274,275,276],[51,236,269,270,278,282,283,284,285,286,287],[48],[145,146],[148],[149],[151],[148,150,151,152,153],[221,222],[62],[77],[58,59,60,61,62,63,64,65,66,67,68,69,78]],"referencedMap":[[307,1],[89,2],[205,3],[310,4],[306,1],[308,5],[309,1],[311,6],[358,7],[360,8],[362,9],[361,10],[364,11],[366,12],[365,13],[371,14],[368,15],[373,16],[374,17],[376,18],[377,19],[381,20],[382,21],[77,22],[57,23],[384,7],[385,24],[220,24],[386,24],[219,24],[207,25],[208,26],[206,27],[209,28],[210,29],[211,30],[212,31],[213,32],[214,33],[215,34],[216,35],[217,36],[218,37],[387,18],[391,38],[389,39],[356,40],[315,41],[316,42],[317,43],[318,44],[319,45],[320,46],[322,47],[323,47],[324,48],[325,49],[326,50],[327,51],[328,52],[357,53],[329,47],[330,54],[331,55],[334,56],[335,57],[338,47],[339,58],[340,47],[343,59],[354,60],[345,59],[346,61],[348,45],[350,62],[351,45],[393,47],[399,63],[400,63],[401,63],[404,64],[398,65],[397,63],[402,63],[403,66],[112,19],[409,19],[411,67],[412,68],[413,19],[199,69],[201,19],[198,19],[200,69],[203,70],[114,19],[113,19],[50,71],[51,19],[414,7],[420,72],[422,73],[436,74],[435,75],[426,76],[427,77],[428,77],[429,76],[430,76],[431,76],[432,78],[425,79],[433,75],[434,80],[437,81],[440,82],[72,83],[74,84],[73,83],[419,73],[76,85],[85,86],[86,87],[87,19],[90,3],[91,87],[92,19],[93,19],[106,19],[105,87],[108,88],[109,89],[110,90],[111,19],[116,91],[118,92],[115,93],[119,19],[120,19],[121,19],[125,19],[131,19],[132,19],[133,19],[107,19],[134,19],[135,94],[136,19],[138,19],[139,19],[140,95],[141,19],[99,96],[100,97],[102,98],[101,97],[103,99],[104,100],[142,101],[123,102],[122,97],[124,103],[127,104],[126,3],[128,19],[129,19],[130,105],[82,106],[83,107],[84,108],[96,109],[95,19],[97,109],[98,110],[186,111],[184,112],[185,113],[188,114],[190,114],[163,115],[191,116],[192,117],[195,118],[196,119],[166,120],[167,120],[164,120],[165,120],[168,121],[193,113],[180,122],[171,123],[173,124],[174,123],[175,123],[176,124],[177,123],[178,123],[170,123],[172,123],[179,123],[181,125],[94,2],[268,126],[265,127],[267,128],[266,129],[262,130],[289,131],[226,132],[239,133],[231,134],[263,135],[294,136],[224,137],[238,138],[258,139],[232,140],[300,141],[259,142],[291,143],[299,144],[260,145],[143,146],[297,147],[301,148],[261,149],[298,150],[237,151],[144,149],[290,152],[225,153],[230,154],[303,155],[257,156],[304,157],[227,149],[228,149],[229,158],[245,159],[247,160],[248,161],[246,162],[249,161],[250,163],[159,164],[160,164],[156,165],[157,165],[161,164],[158,165],[155,149],[162,166],[302,167],[295,168],[240,169],[241,170],[242,171],[296,172],[243,173],[244,173],[251,174],[252,173],[253,173],[254,175],[255,173],[256,176],[234,177],[293,178],[233,149],[278,179],[282,180],[281,181],[280,182],[283,149],[284,183],[292,184],[285,185],[286,186],[287,187],[270,188],[235,149],[236,189],[269,190],[272,191],[273,191],[274,191],[275,191],[276,191],[277,192],[288,193],[146,194],[147,195],[149,196],[150,197],[152,198],[154,199],[223,200],[222,19],[63,201],[78,202],[79,203]],"exportedModulesMap":[[307,1],[89,2],[205,3],[310,4],[306,1],[308,5],[309,1],[311,6],[358,7],[360,8],[362,9],[361,10],[364,11],[366,12],[365,13],[371,14],[368,15],[373,16],[374,17],[376,18],[377,19],[381,20],[382,21],[77,22],[57,23],[384,7],[385,24],[220,24],[386,24],[219,24],[207,25],[208,26],[206,27],[209,28],[210,29],[211,30],[212,31],[213,32],[214,33],[215,34],[216,35],[217,36],[218,37],[387,18],[391,38],[389,39],[356,40],[315,41],[316,42],[317,43],[318,44],[319,45],[320,46],[322,47],[323,47],[324,48],[325,49],[326,50],[327,51],[328,52],[357,53],[329,47],[330,54],[331,55],[334,56],[335,57],[338,47],[339,58],[340,47],[343,59],[354,60],[345,59],[346,61],[348,45],[350,62],[351,45],[393,47],[399,63],[400,63],[401,63],[404,64],[398,65],[397,63],[402,63],[403,66],[112,19],[409,19],[411,67],[412,68],[413,19],[199,69],[201,19],[198,19],[200,69],[203,70],[114,19],[113,19],[50,71],[51,19],[414,7],[420,72],[422,73],[436,74],[435,75],[426,76],[427,77],[428,77],[429,76],[430,76],[431,76],[432,78],[425,79],[433,75],[434,80],[437,81],[440,82],[72,83],[74,84],[73,83],[419,73],[76,85],[85,86],[86,87],[87,19],[90,3],[91,87],[92,19],[93,19],[106,19],[105,87],[108,88],[109,89],[110,90],[111,19],[116,91],[118,92],[115,93],[119,19],[120,19],[121,19],[125,19],[131,19],[132,19],[133,19],[107,19],[134,19],[135,94],[136,19],[138,19],[139,19],[140,95],[141,19],[99,96],[100,97],[102,98],[101,97],[103,99],[104,100],[142,101],[123,102],[122,97],[124,103],[127,104],[126,3],[128,19],[129,19],[130,105],[82,106],[83,107],[84,108],[96,109],[95,19],[97,109],[98,110],[186,111],[184,112],[185,113],[188,114],[190,114],[163,115],[191,116],[192,117],[195,118],[196,119],[166,120],[167,120],[164,120],[165,120],[168,121],[193,113],[180,122],[171,123],[173,124],[174,123],[175,123],[176,124],[177,123],[178,123],[170,123],[172,123],[179,123],[181,125],[94,2],[268,126],[265,127],[267,128],[266,129],[262,130],[289,131],[226,132],[239,133],[231,134],[263,135],[294,136],[224,137],[238,138],[258,139],[232,140],[300,141],[259,142],[291,143],[299,144],[260,145],[143,146],[297,147],[301,148],[261,149],[298,150],[237,151],[144,149],[290,152],[225,153],[230,154],[303,155],[257,156],[304,157],[227,149],[228,149],[229,158],[245,159],[247,160],[248,161],[246,162],[249,161],[250,163],[159,164],[160,164],[156,165],[157,165],[161,164],[158,165],[155,149],[162,166],[302,167],[295,168],[240,169],[241,170],[242,171],[296,172],[243,173],[244,173],[251,174],[252,173],[253,173],[254,175],[255,173],[256,176],[234,177],[293,178],[233,149],[278,179],[282,180],[281,181],[280,182],[283,149],[284,183],[292,184],[285,185],[286,186],[287,187],[270,188],[235,149],[236,189],[269,190],[272,191],[273,191],[274,191],[275,191],[276,191],[277,192],[288,193],[146,194],[147,195],[149,196],[150,197],[152,198],[154,199],[223,200],[222,19],[63,201],[78,202],[79,203]],"semanticDiagnosticsPerFile":[307,305,88,89,205,310,306,308,309,311,358,360,362,361,359,364,204,366,365,367,371,368,370,373,374,376,377,378,379,380,381,382,77,53,52,57,55,54,369,383,384,385,220,386,219,207,208,206,209,210,211,212,213,214,215,216,217,218,387,80,372,388,363,390,391,389,355,313,356,314,315,316,317,318,319,320,321,322,323,324,325,312,352,326,327,328,357,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,354,345,346,347,348,349,353,350,351,392,393,394,395,396,399,400,401,404,398,397,402,403,405,406,48,407,408,112,409,411,412,413,199,201,198,200,202,203,114,113,46,50,51,414,415,49,271,56,416,417,420,421,422,375,438,436,435,426,427,428,429,430,431,432,425,433,434,424,437,439,440,423,197,47,183,70,72,74,73,71,264,279,81,419,76,75,410,418,10,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,8,42,43,44,1,9,45,85,86,87,90,91,92,93,106,105,108,109,110,111,117,116,118,115,119,120,121,125,131,132,133,107,134,135,136,137,138,139,140,141,99,100,102,101,103,104,142,123,122,124,127,126,128,129,130,82,83,84,96,95,97,98,186,182,184,169,187,185,188,189,190,163,191,192,194,195,196,166,167,164,165,168,193,180,171,173,174,175,176,177,178,170,172,179,181,94,268,265,267,266,262,289,226,239,231,263,294,224,238,258,232,300,259,291,299,260,143,297,301,261,298,237,144,290,225,230,303,257,304,227,228,229,245,247,248,246,249,250,159,160,156,157,161,158,155,162,302,295,240,241,242,296,243,244,251,252,253,254,255,256,234,293,233,278,282,281,280,283,284,292,285,286,287,270,235,236,269,272,273,274,275,276,277,288,146,145,147,149,150,152,151,148,153,154,223,222,221,58,59,61,60,68,63,62,64,78,65,67,66,69,79]},"version":"4.3.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/iris-grid",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "Deephaven Iris Grid",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
"publishConfig": {
|
|
86
86
|
"access": "public"
|
|
87
87
|
},
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "ffbc5960c7e3ca4d35768daa6ae1c30e604a2321"
|
|
89
89
|
}
|