{"version":3,"file":"node.cjs","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/sql-builder/dialect/postgresDialect.ts","../../../src/sql-builder/utils/escape.ts","../../../src/sql-builder/compile/inlineParameters.ts","../../../src/sql-builder/utils/operator.ts","../../../src/sql-builder/builders/where.ts","../../../src/sql-builder/builders/groupBy.ts","../../../src/sql-builder/builders/having.ts","../../../src/sql-builder/builders/limit.ts","../../../src/sql-builder/builders/order.ts","../../../src/sql-builder/utils/guards.ts","../../../src/sql-builder/builders/select.ts","../../../src/sql-builder/dslToSQL.ts","../../../src/dataset/constants.ts","../../../src/dataset/dataset.ts","../../../src/utils/url.ts","../../../src/data-source-builder/dataSourceBuilder.ts","../../../src/adapters/storage-adapter/inmemoryAdapter.ts","../../../src/adapters/query-adapter/duckdbNodeAdapter.ts","../../../src/VQuery.ts","../../../src/vquery-node.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n        if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n            Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n        }\n    }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { Dialect, DummyDriver } from 'kysely'\nimport { PostgresQueryCompiler } from 'kysely'\nimport { PostgresAdapter } from 'kysely'\nimport { Kysely } from 'kysely'\nimport type {\n  DatabaseIntrospector,\n  SchemaMetadata,\n  TableMetadata,\n  DatabaseMetadata,\n  DatabaseMetadataOptions,\n} from 'kysely'\n\nexport class PostgresDialect implements Dialect {\n  createDriver() {\n    return new DummyDriver()\n  }\n  createQueryCompiler() {\n    return new PostgresQueryCompiler()\n  }\n  createAdapter() {\n    return new PostgresAdapter()\n  }\n  createIntrospector<DB = unknown>(db: Kysely<DB>): DatabaseIntrospector {\n    void db\n    class NullIntrospector implements DatabaseIntrospector {\n      async getSchemas(): Promise<SchemaMetadata[]> {\n        return []\n      }\n      async getTables(options?: DatabaseMetadataOptions): Promise<TableMetadata[]> {\n        void options?.withInternalKyselyTables\n        return []\n      }\n      async getMetadata(options?: DatabaseMetadataOptions): Promise<DatabaseMetadata> {\n        void options?.withInternalKyselyTables\n        return { tables: [] }\n      }\n    }\n    return new NullIntrospector()\n  }\n}\n","export const escapeValue = (value: unknown): string => {\n  if (value === null) return 'null'\n  if (typeof value === 'string') return `'${value.replace(/'/g, \"''\")}'`\n  if (typeof value === 'number') return `${value}`\n  if (typeof value === 'boolean') return value ? 'TRUE' : 'FALSE'\n  return `'${String(value).replace(/'/g, \"''\")}'`\n}\n","import { escapeValue } from '../utils'\n\nexport const inlineParameters = (sql: string, params: readonly unknown[]): string => {\n  if (params.length === 0) return sql\n  if (sql.includes('?')) {\n    let out = sql\n    for (const p of params) {\n      out = out.replace(/\\?/, escapeValue(p))\n    }\n    return out\n  }\n  if (/\\$\\d+/.test(sql)) {\n    return sql.replace(/\\$(\\d+)/g, (_, idx) => {\n      const i = Number(idx) - 1\n      const v = params[i]\n      return escapeValue(v)\n    })\n  }\n  return sql\n}\n","/**\n * SQL operator mapping from VBI DSL operators to SQL operators\n */\nexport const OPERATOR_MAP: Record<string, string> = {\n  gt: '>',\n  gte: '>=',\n  lt: '<',\n  lte: '<=',\n  eq: '=',\n  neq: '!=',\n}\n\nexport const toSqlOperator = (op: string): string => {\n  return OPERATOR_MAP[op] ?? op\n}\n","import { Where, WhereClause } from '../../types'\nimport { sql } from 'kysely'\nimport type { RawBuilder, SelectQueryBuilder } from 'kysely'\nimport { toSqlOperator } from '../utils'\n\nexport const applyWhere = <DB, TB extends keyof DB & string, O, T>(\n  qb: SelectQueryBuilder<DB, TB, O>,\n  where?: Where<T> | WhereClause<T>,\n): SelectQueryBuilder<DB, TB, O> => {\n  if (!where) {\n    return qb\n  }\n\n  const toRaw = (w: Where<T> | WhereClause<T>): RawBuilder<boolean> => {\n    if ('op' in w && 'conditions' in w) {\n      const parts: RawBuilder<boolean>[] = (w.conditions as Array<WhereClause<T>>).map((c) => toRaw(c))\n      const sep: RawBuilder<unknown> = sql` ${sql.raw(w.op)} `\n      return sql<boolean>`(${sql.join(parts, sep)})`\n    }\n    const leaf = w as unknown as { field: Extract<keyof T, string>; op: string; value?: unknown }\n    const field = leaf.field\n    const value = leaf.value\n    const sqlOp = toSqlOperator(leaf.op)\n    switch (leaf.op) {\n      case 'is null':\n        return sql<boolean>`${sql.ref(field)} is null`\n      case 'is not null':\n        return sql<boolean>`${sql.ref(field)} is not null`\n      case 'in': {\n        const items = Array.isArray(value) ? (value as unknown[]) : [value]\n        return sql<boolean>`${sql.ref(field)} in (${sql.join(items.map((v) => sql.val(v)))})`\n      }\n      case 'not in': {\n        const items = Array.isArray(value) ? (value as unknown[]) : [value]\n        return sql<boolean>`not ${sql.ref(field)} in (${sql.join(items.map((v) => sql.val(v)))})`\n      }\n      case 'between': {\n        const [a, b] = value as [unknown, unknown]\n        return sql<boolean>`${sql.ref(field)} between ${sql.val(a)} and ${sql.val(b)}`\n      }\n      case 'not between': {\n        const [a, b] = value as [unknown, unknown]\n        return sql<boolean>`${sql.ref(field)} not between ${sql.val(a)} and ${sql.val(b)}`\n      }\n      default:\n        return sql<boolean>`${sql.ref(field)} ${sql.raw(sqlOp)} ${sql.val(value)}`\n    }\n  }\n  return qb.where(toRaw(where))\n}\n","import { sql } from 'kysely'\nimport type { SelectQueryBuilder } from 'kysely'\n\nexport const applyGroupBy = <DB, TB extends keyof DB & string, O>(\n  qb: SelectQueryBuilder<DB, TB, O>,\n  fields?: Array<string>,\n) => {\n  if (fields && fields.length > 0) {\n    const exprs = fields.map((f) => sql.id(f))\n    type GroupByParam = Parameters<SelectQueryBuilder<DB, TB, O>['groupBy']>[0]\n    qb = qb.groupBy(exprs as GroupByParam)\n  }\n  return qb\n}\n","import type { RawBuilder, SelectQueryBuilder } from 'kysely'\nimport type { Having, HavingAggregation, HavingClause } from '../../types'\nimport { sql } from 'kysely'\nimport { toSqlOperator } from '../utils'\n\nconst AGGREGATE_FUNCTIONS = [\n  'sum',\n  'avg',\n  'count',\n  'count_distinct',\n  'min',\n  'max',\n  'variance',\n  'variance_pop',\n  'stddev',\n  'median',\n  'quantile',\n] as const\n\nconst isAggregateFunction = (func: string): boolean => {\n  return AGGREGATE_FUNCTIONS.includes(func as (typeof AGGREGATE_FUNCTIONS)[number])\n}\n\nconst toAggregateExpression = (func: string, field: string, aggr?: HavingAggregation): RawBuilder<unknown> => {\n  switch (func) {\n    case 'count':\n      return sql`count(${sql.ref(field)})`\n    case 'count_distinct':\n      return sql`count(distinct ${sql.ref(field)})`\n    case 'variance':\n      return sql`var_samp(${sql.ref(field)})`\n    case 'variance_pop':\n      return sql`var_pop(${sql.ref(field)})`\n    case 'quantile':\n      return sql`quantile(${sql.ref(field)}, ${aggr?.quantile ?? 0.5})`\n    default:\n      return sql`${sql.raw(func)}(${sql.ref(field)})`\n  }\n}\n\nexport const applyHaving = <DB, TB extends keyof DB & string, O, T>(\n  qb: SelectQueryBuilder<DB, TB, O>,\n  having?: Having<T> | HavingClause<T>,\n): SelectQueryBuilder<DB, TB, O> => {\n  if (!having) {\n    return qb\n  }\n\n  const toRaw = (h: Having<T> | HavingClause<T>): RawBuilder<boolean> => {\n    if ('op' in h && 'conditions' in h) {\n      const parts: RawBuilder<boolean>[] = (h.conditions as Array<HavingClause<T>>).map((c) => toRaw(c))\n      const sep: RawBuilder<unknown> = sql` ${sql.raw(h.op)} `\n      return sql<boolean>`(${sql.join(parts, sep)})`\n    }\n    const leaf = h as unknown as {\n      field: Extract<keyof T, string>\n      op: string\n      value?: unknown\n      aggr: HavingAggregation\n    }\n    const field = leaf.field\n    const value = leaf.value\n    if (!leaf.aggr?.func || !isAggregateFunction(leaf.aggr.func)) {\n      throw new Error(`Invalid having clause for field \"${String(field)}\": aggr.func is required`)\n    }\n    const compareOp = toSqlOperator(leaf.op.trim().toLowerCase())\n    const leftExpr: RawBuilder<unknown> = toAggregateExpression(leaf.aggr.func, field, leaf.aggr)\n\n    switch (compareOp) {\n      case 'is null':\n        return sql<boolean>`${leftExpr} is null`\n      case 'is not null':\n        return sql<boolean>`${leftExpr} is not null`\n      case 'in': {\n        const items = Array.isArray(value) ? (value as unknown[]) : [value]\n        return sql<boolean>`${leftExpr} in (${sql.join(items.map((v) => sql.val(v)))})`\n      }\n      case 'not in': {\n        const items = Array.isArray(value) ? (value as unknown[]) : [value]\n        return sql<boolean>`not ${leftExpr} in (${sql.join(items.map((v) => sql.val(v)))})`\n      }\n      case 'between': {\n        const [a, b] = value as [unknown, unknown]\n        return sql<boolean>`${leftExpr} between ${sql.val(a)} and ${sql.val(b)}`\n      }\n      case 'not between': {\n        const [a, b] = value as [unknown, unknown]\n        return sql<boolean>`${leftExpr} not between ${sql.val(a)} and ${sql.val(b)}`\n      }\n      default:\n        return sql<boolean>`${leftExpr} ${sql.raw(compareOp)} ${sql.val(value)}`\n    }\n  }\n  return qb.having(toRaw(having))\n}\n","import type { SelectQueryBuilder } from 'kysely'\n\nexport const applyLimit = <DB, TB extends keyof DB & string, O>(qb: SelectQueryBuilder<DB, TB, O>, limit?: number) => {\n  if (limit && typeof limit === 'number') {\n    qb = qb.limit(limit)\n  }\n  return qb\n}\n","import type { SelectQueryBuilder } from 'kysely'\n\ntype OrderByItem = {\n  field: string\n  order?: 'asc' | 'desc'\n}\n\nexport const applyOrder = <DB, TB extends keyof DB & string, O>(\n  qb: SelectQueryBuilder<DB, TB, O>,\n  orderBy?: Array<OrderByItem>,\n) => {\n  if (orderBy && orderBy.length > 0) {\n    orderBy.forEach((o) => {\n      // @ts-expect-error - Kysely orderBy type complexity\n      qb = qb.orderBy(o.field, o.order ?? 'asc')\n    })\n  }\n  return qb\n}\n","import { SelectItem } from '../../types/dsl/Select'\n\nexport const isSelectItem = <T>(item: keyof T | SelectItem<T>): item is SelectItem<T> => {\n  return typeof item === 'object' && 'field' in item\n}\n","import { SelectItem } from '../../types/dsl/Select'\nimport { isSelectItem } from '../utils'\nimport { sql } from 'kysely'\nimport type { SelectQueryBuilder } from 'kysely'\n\nconst DATE_FORMAT_MAP: Record<string, string> = {\n  year: '%Y',\n  month: '%Y-%m',\n  day: '%Y-%m-%d',\n  week: '%Y-W%W',\n  hour: '%Y-%m-%d %H',\n  minute: '%Y-%m-%d %H:%M',\n  second: '%Y-%m-%d %H:%M:%S',\n}\n\nexport const applySelect = <DB, TB extends keyof DB & string, O, T>(\n  qb: SelectQueryBuilder<DB, TB, O>,\n  select?: Array<keyof T | SelectItem<T>>,\n) => {\n  if (select && select.length > 0) {\n    return qb.select((eb) =>\n      select.map((item) => {\n        if (isSelectItem(item)) {\n          const field = item.field as Extract<keyof T, string>\n          const expression = eb.ref(field as any)\n          // 优先使用用户提供的 alias，其次使用 field，保证唯一性\n          const alias = item.alias ?? field\n\n          if (item.aggr) {\n            const { func } = item.aggr\n            if (['avg', 'sum', 'min', 'max', 'variance', 'variance_pop', 'stddev', 'median'].includes(func)) {\n              if (func === 'variance') {\n                return sql`var_samp(${expression})`.as(alias)\n              }\n              if (func === 'variance_pop') {\n                return sql`var_pop(${expression})`.as(alias)\n              }\n              return sql`${sql.raw(func)}(${expression})`.as(alias)\n            } else if (func === 'count') {\n              return sql`CAST(count(${expression}) AS INTEGER)`.as(alias)\n            } else if (func === 'quantile') {\n              const q = item.aggr.quantile ?? 0.5\n              return sql`quantile(${expression}, ${q})`.as(alias)\n            } else if (func === 'count_distinct') {\n              return sql`CAST(count(distinct ${expression}) AS INTEGER)`.as(alias)\n            } else if (func.startsWith('to_')) {\n              const dateTrunc = func.replace('to_', '')\n              const format = DATE_FORMAT_MAP[dateTrunc]\n              if (format) {\n                return sql`strftime(CAST(${expression} AS TIMESTAMP), ${format})`.as(alias)\n              }\n              if (dateTrunc === 'quarter') {\n                return sql`strftime(CAST(${expression} AS TIMESTAMP), '%Y') || '-Q' || date_part('quarter', CAST(${expression} AS TIMESTAMP))`.as(\n                  alias,\n                )\n              }\n            }\n          }\n          // 优先使用用户提供的 alias，其次使用 field\n          return expression.as(alias)\n        }\n        return item as any\n      }),\n    )\n  } else {\n    return qb.selectAll()\n  }\n}\n","import type { QueryDSL, VQueryDSL } from '../types'\nimport { Kysely } from 'kysely'\nimport { PostgresDialect } from './dialect'\nimport { inlineParameters } from './compile'\nimport { applyWhere, applyGroupBy, applyHaving, applyLimit, applyOrder, applySelect } from './builders'\n\nexport const convertDSLToSQL = <T, TableName extends string>(\n  dsl: QueryDSL<T> | VQueryDSL<T>,\n  tableName: TableName,\n): string => {\n  const db = new Kysely<Record<TableName, T>>({\n    dialect: new PostgresDialect(),\n  })\n\n  let qb = db.selectFrom(tableName)\n\n  qb = applySelect(qb, dsl.select)\n  qb = applyWhere(qb, dsl.where)\n  qb = applyGroupBy(qb, dsl.groupBy as string[] | undefined)\n  qb = applyHaving(qb, dsl.having)\n  qb = applyOrder(qb, dsl.orderBy as Array<{ field: string; order?: 'asc' | 'desc' }> | undefined)\n  qb = applyLimit(qb, dsl.limit)\n\n  const { sql, parameters } = qb.compile()\n  return inlineParameters(sql, parameters)\n}\n","import { DatasetSourceType, DataType } from '../types'\n\nexport const READ_FUNCTION_MAP: Record<DatasetSourceType, string> = {\n  csv: 'read_csv_auto',\n  json: 'read_json_auto',\n  parquet: 'read_parquet',\n}\n\nexport const DATA_TYPE_MAP: Record<DataType, string> = {\n  number: 'DOUBLE',\n  string: 'VARCHAR',\n  date: 'DATE',\n  datetime: 'TIMESTAMP',\n  timestamp: 'TIMESTAMP',\n}\n\nexport const buildColumnsStruct = (columns: { name: string; type: DataType }[]): string => {\n  const columnDefs = columns.map((c) => {\n    const duckDBType = DATA_TYPE_MAP[c.type] || 'VARCHAR'\n    return `'${c.name}': '${duckDBType}'`\n  })\n  return `{${columnDefs.join(', ')}}`\n}\n","import { DatasetColumn, DatasetSource, QueryDSL, QueryAdapter, StorageAdapter, VQueryDSL } from '../types'\nimport { convertDSLToSQL } from '../sql-builder'\nimport { READ_FUNCTION_MAP, buildColumnsStruct } from './constants'\n\nexport class Dataset {\n  private queryAdapter: QueryAdapter\n  private storageAdapter: StorageAdapter\n  private _datasetId: string\n\n  constructor(queryAdapter: QueryAdapter, storageAdapter: StorageAdapter, datasetId: string) {\n    this.queryAdapter = queryAdapter\n    this.storageAdapter = storageAdapter\n    this._datasetId = datasetId\n  }\n\n  public async init(temporaryColumns?: DatasetColumn[], temporaryDatasetSource?: DatasetSource) {\n    const datasetInfo = await this.storageAdapter.readDataset(this._datasetId)\n    if (!datasetInfo) {\n      throw new Error(`Dataset ${this._datasetId} not found`)\n    }\n\n    const columns = temporaryColumns ?? datasetInfo.datasetSchema.columns\n    const datasetSource = temporaryDatasetSource ?? datasetInfo.datasetSource\n\n    if (columns.length > 0 && datasetSource) {\n      await this.createOrReplaceView(columns, datasetSource)\n    }\n  }\n\n  public async createOrReplaceView(columns: DatasetColumn[], datasetSource: DatasetSource) {\n    if (!datasetSource) {\n      return\n    }\n\n    const readFunction = READ_FUNCTION_MAP[datasetSource.type]\n    if (!readFunction) {\n      throw new Error(`Unsupported dataSource type: ${datasetSource.type}`)\n    }\n\n    await this.queryAdapter.writeFile(this._datasetId, datasetSource.blob)\n\n    const columnsStruct = buildColumnsStruct(columns)\n    const columnNames = columns.map((c) => `\"${c.name}\"`).join(', ')\n\n    let readSql = `${readFunction}('${this._datasetId}')`\n    if (datasetSource.type === 'csv' || datasetSource.type === 'json') {\n      readSql = `${readFunction}('${this._datasetId}', columns=${columnsStruct})`\n    }\n\n    const createViewSql = `CREATE OR REPLACE VIEW \"${this._datasetId}\" AS SELECT ${columnNames} FROM ${readSql}`\n    await this.queryAdapter.query(createViewSql)\n  }\n\n  public async query<T extends Record<string, number | string>>(queryDSL: QueryDSL<T> | VQueryDSL<T>) {\n    const sql = convertDSLToSQL(queryDSL, this.datasetId)\n    return this.queryBySQL(sql)\n  }\n\n  public async queryBySQL(sql: string) {\n    const start = performance?.now?.() ?? Date.now()\n    const result = await this.queryAdapter.query(sql)\n    const end = performance?.now?.() ?? Date.now()\n\n    return {\n      ...result,\n      performance: {\n        startAt: start.toFixed(3),\n        endAt: end.toFixed(3),\n        duration: end - start,\n      },\n    }\n  }\n\n  public async disconnect() {\n    await this.queryAdapter.query(`DROP VIEW IF EXISTS \"${this._datasetId}\"`)\n  }\n\n  get datasetId() {\n    return this._datasetId\n  }\n}\n","export const isUrl = (url: string) => {\n  return isHttpUrl(url) || isBase64Url(url)\n}\nexport const isHttpUrl = (url: string) => {\n  return url.startsWith('http://') || url.startsWith('https://')\n}\n\nexport const isBase64Url = (url: string) => {\n  return url.startsWith('data:')\n}\n","import { isUrl } from '../utils'\nimport { DatasetSourceType, DatasetSourceValue, RawDatasetSource } from '../types'\n\nconst MIME_TYPES: Record<DatasetSourceType, string> = {\n  csv: 'text/csv',\n  json: 'application/json',\n  parquet: 'application/parquet',\n}\n\nexport class DatasetSourceBuilder {\n  private type: DatasetSourceType\n  private value: DatasetSourceValue\n\n  constructor(raw: RawDatasetSource) {\n    this.type = raw.type\n    this.value = raw.rawDataset\n  }\n\n  public static from(raw: RawDatasetSource): DatasetSourceBuilder {\n    return new DatasetSourceBuilder(raw)\n  }\n\n  public async build() {\n    const blob = await this.convertToBlob(this.type, this.value)\n\n    return {\n      type: this.type,\n      blob: blob,\n    }\n  }\n\n  /**\n   * Convert different types of data to Blob\n   */\n  private async convertToBlob(type: DatasetSourceType, value: DatasetSourceValue): Promise<Blob> {\n    if (value instanceof Blob) {\n      return value\n    }\n\n    if (typeof value === 'string' && isUrl(value)) {\n      const response = await fetch(value)\n      return await response.blob()\n    }\n\n    const mimeType = MIME_TYPES[type] || 'text/plain'\n\n    if (value instanceof ArrayBuffer) {\n      return new Blob([value], { type: mimeType })\n    }\n\n    // For TidyDatum[] or other objects, we stringify.\n    // For strings, we use as is (fixing the issue where strings were double-stringified in original code).\n    const content = typeof value === 'object' ? JSON.stringify(value) : String(value)\n\n    return new Blob([content], { type: mimeType })\n  }\n}\n","import { DatasetSource, StorageAdapter } from '../../types'\nimport { DatasetSchema } from '../../types/DataSet'\n\n// 为了代码清晰，定义一个内部存储记录的类型\ntype StoredDataset = {\n  datasetId: string\n  datasetSchema: DatasetSchema\n  datasetSource?: DatasetSource\n}\n\nexport class InMemoryAdapter implements StorageAdapter {\n  private datasets: Map<string, StoredDataset> = new Map()\n  private isOpen = false\n\n  constructor() {}\n\n  public open = async () => {\n    this.isOpen = true\n    this.datasets = new Map()\n  }\n\n  public close = async () => {\n    this.isOpen = false\n    this.datasets.clear()\n  }\n\n  public writeDataset = (\n    datasetId: string,\n    datasetSchema: DatasetSchema,\n    datasetSource?: DatasetSource,\n  ): Promise<void> => {\n    return new Promise((resolve) => {\n      const record: StoredDataset = { datasetId, datasetSchema, datasetSource }\n      this.datasets.set(datasetId, record)\n      resolve()\n    })\n  }\n\n  public readDataset = (\n    datasetId: string,\n  ): Promise<{ datasetSource?: DatasetSource; datasetSchema: DatasetSchema } | null> => {\n    return new Promise((resolve) => {\n      const record = this.datasets.get(datasetId)\n      if (record) {\n        resolve(record)\n      } else {\n        resolve(null)\n      }\n    })\n  }\n\n  public deleteDataset = (datasetId: string): Promise<void> => {\n    return new Promise((resolve) => {\n      this.datasets.delete(datasetId)\n      resolve()\n    })\n  }\n\n  public listDatasets = (): Promise<StoredDataset[]> => {\n    return new Promise((resolve) => {\n      // Array.from(this.datasets.values()) 将 Map 中的所有值转换为数组\n      resolve(Array.from(this.datasets.values()))\n    })\n  }\n}\n","import type { DuckDBBundles } from '@duckdb/duckdb-wasm/blocking'\nimport { createDuckDB, ConsoleLogger, NODE_RUNTIME, DuckDBConnection } from '@duckdb/duckdb-wasm/blocking'\nimport { createRequire } from 'node:module'\nimport { QueryAdapter } from '../../types'\nimport { QueryResult } from '../../types/DataSet'\n\nexport class DuckDBNodeQueryAdapter implements QueryAdapter {\n  private bindings: any | null = null\n  private connection: DuckDBConnection | null = null\n\n  constructor() {}\n\n  open = async () => {\n    const require = createRequire(import.meta.url)\n    const MANUAL_BUNDLES: DuckDBBundles = {\n      mvp: {\n        mainModule: require.resolve('@duckdb/duckdb-wasm/dist/duckdb-mvp.wasm'),\n        mainWorker: '',\n      },\n      eh: {\n        mainModule: require.resolve('@duckdb/duckdb-wasm/dist/duckdb-eh.wasm'),\n        mainWorker: '',\n      },\n    }\n\n    const logger = new ConsoleLogger()\n    this.bindings = await createDuckDB(MANUAL_BUNDLES, logger, NODE_RUNTIME)\n    await this.bindings.instantiate(() => {})\n    this.bindings.open({})\n    this.connection = this.bindings.connect()\n  }\n\n  close = async () => {\n    if (this.connection) {\n      this.connection.close()\n      this.connection = null\n    }\n    if (this.bindings) {\n      this.bindings.reset()\n      this.bindings = null\n    }\n  }\n\n  writeFile = async <T extends Blob>(fileName: string, source: T) => {\n    if (!this.bindings) {\n      throw new Error('bindings is null')\n    }\n    let uint8Array: Uint8Array\n\n    if (source instanceof Blob) {\n      // blob object\n      const buffer = await source.arrayBuffer()\n      uint8Array = new Uint8Array(buffer)\n    } else {\n      throw new Error('Unsupported source type')\n    }\n\n    await this.bindings.registerFileBuffer(fileName, uint8Array)\n  }\n\n  query = async (sql: string) => {\n    if (!this.connection) {\n      throw new Error('connection is null')\n    }\n    const table = await this.connection.query(sql)\n    const dataset = table.toArray().map((row: any) => row.toJSON())\n    return {\n      dataset,\n      table,\n    } as { dataset: any[]; table: any }\n  }\n\n  getSchema = async (fileName: string) => {\n    if (!this.connection) {\n      throw new Error('connection is null')\n    }\n\n    const result = await this.connection.query(`PRAGMA table_info('${fileName}')`)\n    return result.toArray().map((row: any) => row.toJSON()) as QueryResult\n  }\n}\n","import { Dataset } from './dataset/dataset'\nimport { RawDatasetSource, DatasetColumn, QueryAdapter, StorageAdapter } from './types'\nimport { DatasetSourceBuilder } from './data-source-builder'\n\nexport class VQuery {\n  protected queryAdapter: QueryAdapter\n  protected storageAdapter: StorageAdapter\n  private isInitialized: boolean = false\n\n  constructor(queryAdapter: QueryAdapter, storageAdapter: StorageAdapter) {\n    this.queryAdapter = queryAdapter\n    this.storageAdapter = storageAdapter\n  }\n\n  private async checkInitialized() {\n    if (!this.isInitialized) {\n      await this.queryAdapter.open()\n      await this.storageAdapter.open()\n      this.isInitialized = true\n    }\n  }\n\n  private async checkDatasetExists(datasetId: string) {\n    if (!(await this.hasDataset(datasetId))) {\n      throw new Error(`dataset ${datasetId} not exists, please create it first`)\n    }\n  }\n\n  public async createDataset(datasetId: string, columns: DatasetColumn[] = [], rawDatasetSource?: RawDatasetSource) {\n    await this.checkInitialized()\n\n    const datasetSource = rawDatasetSource ? await DatasetSourceBuilder.from(rawDatasetSource).build() : undefined\n\n    if (await this.hasDataset(datasetId)) {\n      throw new Error(`dataset ${datasetId} already exists`)\n    }\n\n    const datasetSchema = { datasetId, datasetAlias: datasetId, columns }\n    await this.storageAdapter.writeDataset(datasetId, datasetSchema, datasetSource)\n  }\n\n  public async updateDatasetSource(\n    datasetId: string,\n    columns: DatasetColumn[] = [],\n    rawDatasetSource?: RawDatasetSource,\n  ) {\n    await this.checkInitialized()\n    await this.checkDatasetExists(datasetId)\n\n    const datasetSource = rawDatasetSource ? await DatasetSourceBuilder.from(rawDatasetSource).build() : undefined\n\n    const datasetSchema = { datasetId, datasetAlias: datasetId, columns }\n    await this.storageAdapter.writeDataset(datasetId, datasetSchema, datasetSource)\n  }\n\n  public async dropDataset(datasetId: string) {\n    await this.checkInitialized()\n    await this.checkDatasetExists(datasetId)\n    await this.storageAdapter.deleteDataset(datasetId)\n  }\n\n  public async connectDataset(\n    datasetId: string,\n    temporaryColumns?: DatasetColumn[],\n    temporaryRawDatasetSource?: RawDatasetSource,\n  ): Promise<Dataset> {\n    await this.checkInitialized()\n    await this.checkDatasetExists(datasetId)\n\n    const dataset = new Dataset(this.queryAdapter, this.storageAdapter, datasetId)\n    const temporaryDatasetSource = temporaryRawDatasetSource\n      ? await DatasetSourceBuilder.from(temporaryRawDatasetSource).build()\n      : undefined\n\n    await dataset.init(temporaryColumns, temporaryDatasetSource)\n    return dataset\n  }\n\n  public async hasDataset(datasetId: string) {\n    await this.checkInitialized()\n    const datasets = await this.storageAdapter.listDatasets()\n    return datasets.some((item) => item.datasetId === datasetId)\n  }\n\n  public async listDatasets() {\n    await this.checkInitialized()\n    return this.storageAdapter.listDatasets()\n  }\n\n  public async close() {\n    await this.checkInitialized()\n    await this.queryAdapter.close()\n    await this.storageAdapter.close()\n  }\n}\n","import { InMemoryAdapter } from './adapters'\nimport { DuckDBNodeQueryAdapter } from './adapters/query-adapter/duckdbNodeAdapter'\nimport { VQuery as VQueryCore } from './VQuery'\n\nexport class VQuery extends VQueryCore {\n  constructor() {\n    super(new DuckDBNodeQueryAdapter(), new InMemoryAdapter())\n  }\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","PostgresDialect","DummyDriver","PostgresQueryCompiler","PostgresAdapter","db","NullIntrospector","options","escapeValue","value","String","inlineParameters","sql","params","out","p","_","idx","i","Number","v","OPERATOR_MAP","toSqlOperator","op","applyWhere","qb","where","toRaw","w","parts","c","sep","leaf","field","sqlOp","items","Array","a","b","applyGroupBy","fields","exprs","f","AGGREGATE_FUNCTIONS","isAggregateFunction","func","toAggregateExpression","aggr","applyHaving","having","h","Error","compareOp","leftExpr","applyLimit","limit","applyOrder","orderBy","o","isSelectItem","item","DATE_FORMAT_MAP","applySelect","select","eb","expression","alias","q","dateTrunc","format","convertDSLToSQL","dsl","tableName","Kysely","parameters","READ_FUNCTION_MAP","DATA_TYPE_MAP","buildColumnsStruct","columns","columnDefs","duckDBType","Dataset","queryAdapter","storageAdapter","datasetId","temporaryColumns","temporaryDatasetSource","datasetInfo","datasetSource","readFunction","columnsStruct","columnNames","readSql","createViewSql","queryDSL","start","performance","Date","result","end","isUrl","url","isHttpUrl","isBase64Url","MIME_TYPES","DatasetSourceBuilder","raw","blob","type","Blob","response","fetch","mimeType","ArrayBuffer","content","JSON","InMemoryAdapter","Map","datasetSchema","Promise","resolve","record","DuckDBNodeQueryAdapter","require","createRequire","MANUAL_BUNDLES","logger","ConsoleLogger","createDuckDB","NODE_RUNTIME","fileName","source","uint8Array","buffer","Uint8Array","table","dataset","row","VQuery","rawDatasetSource","undefined","temporaryRawDatasetSource","datasets","VQueryCore"],"mappings":";;;;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;;;;ACMO,MAAMI;IACX,eAAe;QACb,OAAO,IAAIC,gCAAAA,WAAWA;IACxB;IACA,sBAAsB;QACpB,OAAO,IAAIC,gCAAAA,qBAAqBA;IAClC;IACA,gBAAgB;QACd,OAAO,IAAIC,gCAAAA,eAAeA;IAC5B;IACA,mBAAiCC,EAAc,EAAwB;QAErE,MAAMC;YACJ,MAAM,aAAwC;gBAC5C,OAAO,EAAE;YACX;YACA,MAAM,UAAUC,OAAiC,EAA4B;gBACtEA,SAAS;gBACd,OAAO,EAAE;YACX;YACA,MAAM,YAAYA,OAAiC,EAA6B;gBACzEA,SAAS;gBACd,OAAO;oBAAE,QAAQ,EAAE;gBAAC;YACtB;QACF;QACA,OAAO,IAAID;IACb;AACF;ACvCO,MAAME,cAAc,CAACC;IAC1B,IAAIA,AAAU,SAAVA,OAAgB,OAAO;IAC3B,IAAI,AAAiB,YAAjB,OAAOA,OAAoB,OAAO,CAAC,CAAC,EAAEA,MAAM,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;IACtE,IAAI,AAAiB,YAAjB,OAAOA,OAAoB,OAAO,GAAGA,OAAO;IAChD,IAAI,AAAiB,aAAjB,OAAOA,OAAqB,OAAOA,QAAQ,SAAS;IACxD,OAAO,CAAC,CAAC,EAAEC,OAAOD,OAAO,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;AACjD;ACJO,MAAME,mBAAmB,CAACC,KAAaC;IAC5C,IAAIA,AAAkB,MAAlBA,OAAO,MAAM,EAAQ,OAAOD;IAChC,IAAIA,IAAI,QAAQ,CAAC,MAAM;QACrB,IAAIE,MAAMF;QACV,KAAK,MAAMG,KAAKF,OACdC,MAAMA,IAAI,OAAO,CAAC,MAAMN,YAAYO;QAEtC,OAAOD;IACT;IACA,IAAI,QAAQ,IAAI,CAACF,MACf,OAAOA,IAAI,OAAO,CAAC,YAAY,CAACI,GAAGC;QACjC,MAAMC,IAAIC,OAAOF,OAAO;QACxB,MAAMG,IAAIP,MAAM,CAACK,EAAE;QACnB,OAAOV,YAAYY;IACrB;IAEF,OAAOR;AACT;AChBO,MAAMS,eAAuC;IAClD,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;AACP;AAEO,MAAMC,gBAAgB,CAACC,KACrBF,YAAY,CAACE,GAAG,IAAIA;ACRtB,MAAMC,aAAa,CACxBC,IACAC;IAEA,IAAI,CAACA,OACH,OAAOD;IAGT,MAAME,QAAQ,CAACC;QACb,IAAI,QAAQA,KAAK,gBAAgBA,GAAG;YAClC,MAAMC,QAAgCD,EAAE,UAAU,CAA2B,GAAG,CAAC,CAACE,IAAMH,MAAMG;YAC9F,MAAMC,MAA2BnB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACgB,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,OAAOhB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,IAAQ,CAACiB,OAAOE,KAAK,CAAC,CAAC;QAChD;QACA,MAAMC,OAAOJ;QACb,MAAMK,QAAQD,KAAK,KAAK;QACxB,MAAMvB,QAAQuB,KAAK,KAAK;QACxB,MAAME,QAAQZ,cAAcU,KAAK,EAAE;QACnC,OAAQA,KAAK,EAAE;YACb,KAAK;gBACH,OAAOpB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,QAAQ,CAAC;YAChD,KAAK;gBACH,OAAOrB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,YAAY,CAAC;YACpD,KAAK;gBAAM;oBACT,MAAME,QAAQC,MAAM,OAAO,CAAC3B,SAAUA,QAAsB;wBAACA;qBAAM;oBACnE,OAAOG,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,KAAK,EAAErB,gCAAAA,GAAAA,CAAAA,IAAQ,CAACuB,MAAM,GAAG,CAAC,CAACf,IAAMR,gCAAAA,GAAAA,CAAAA,GAAO,CAACQ,KAAK,CAAC,CAAC;gBACvF;YACA,KAAK;gBAAU;oBACb,MAAMe,QAAQC,MAAM,OAAO,CAAC3B,SAAUA,QAAsB;wBAACA;qBAAM;oBACnE,OAAOG,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,IAAI,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,KAAK,EAAErB,gCAAAA,GAAAA,CAAAA,IAAQ,CAACuB,MAAM,GAAG,CAAC,CAACf,IAAMR,gCAAAA,GAAAA,CAAAA,GAAO,CAACQ,KAAK,CAAC,CAAC;gBAC3F;YACA,KAAK;gBAAW;oBACd,MAAM,CAACiB,GAAGC,EAAE,GAAG7B;oBACf,OAAOG,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,SAAS,EAAErB,gCAAAA,GAAAA,CAAAA,GAAO,CAACyB,GAAG,KAAK,EAAEzB,gCAAAA,GAAAA,CAAAA,GAAO,CAAC0B,GAAG,CAAC;gBAChF;YACA,KAAK;gBAAe;oBAClB,MAAM,CAACD,GAAGC,EAAE,GAAG7B;oBACf,OAAOG,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,aAAa,EAAErB,gCAAAA,GAAAA,CAAAA,GAAO,CAACyB,GAAG,KAAK,EAAEzB,gCAAAA,GAAAA,CAAAA,GAAO,CAAC0B,GAAG,CAAC;gBACpF;YACA;gBACE,OAAO1B,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,CAAC,EAAErB,gCAAAA,GAAAA,CAAAA,GAAO,CAACsB,OAAO,CAAC,EAAEtB,gCAAAA,GAAAA,CAAAA,GAAO,CAACH,OAAO,CAAC;QAC9E;IACF;IACA,OAAOgB,GAAG,KAAK,CAACE,MAAMD;AACxB;AC9CO,MAAMa,eAAe,CAC1Bd,IACAe;IAEA,IAAIA,UAAUA,OAAO,MAAM,GAAG,GAAG;QAC/B,MAAMC,QAAQD,OAAO,GAAG,CAAC,CAACE,IAAM9B,gCAAAA,GAAAA,CAAAA,EAAM,CAAC8B;QAEvCjB,KAAKA,GAAG,OAAO,CAACgB;IAClB;IACA,OAAOhB;AACT;ACRA,MAAMkB,sBAAsB;IAC1B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,sBAAsB,CAACC,OACpBF,oBAAoB,QAAQ,CAACE;AAGtC,MAAMC,wBAAwB,CAACD,MAAcZ,OAAec;IAC1D,OAAQF;QACN,KAAK;YACH,OAAOjC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,MAAM,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,CAAC,CAAC;QACtC,KAAK;YACH,OAAOrB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,eAAe,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,CAAC,CAAC;QAC/C,KAAK;YACH,OAAOrB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,SAAS,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,CAAC,CAAC;QACzC,KAAK;YACH,OAAOrB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,QAAQ,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,CAAC,CAAC;QACxC,KAAK;YACH,OAAOrB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,SAAS,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,EAAE,EAAEc,MAAM,YAAY,IAAI,CAAC,CAAC;QACnE;YACE,OAAOnC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACiC,MAAM,CAAC,EAAEjC,gCAAAA,GAAAA,CAAAA,GAAO,CAACqB,OAAO,CAAC,CAAC;IACnD;AACF;AAEO,MAAMe,cAAc,CACzBvB,IACAwB;IAEA,IAAI,CAACA,QACH,OAAOxB;IAGT,MAAME,QAAQ,CAACuB;QACb,IAAI,QAAQA,KAAK,gBAAgBA,GAAG;YAClC,MAAMrB,QAAgCqB,EAAE,UAAU,CAA4B,GAAG,CAAC,CAACpB,IAAMH,MAAMG;YAC/F,MAAMC,MAA2BnB,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACsC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,OAAOtC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,IAAQ,CAACiB,OAAOE,KAAK,CAAC,CAAC;QAChD;QACA,MAAMC,OAAOkB;QAMb,MAAMjB,QAAQD,KAAK,KAAK;QACxB,MAAMvB,QAAQuB,KAAK,KAAK;QACxB,IAAI,CAACA,KAAK,IAAI,EAAE,QAAQ,CAACY,oBAAoBZ,KAAK,IAAI,CAAC,IAAI,GACzD,MAAM,IAAImB,MAAM,CAAC,iCAAiC,EAAEzC,OAAOuB,OAAO,wBAAwB,CAAC;QAE7F,MAAMmB,YAAY9B,cAAcU,KAAK,EAAE,CAAC,IAAI,GAAG,WAAW;QAC1D,MAAMqB,WAAgCP,sBAAsBd,KAAK,IAAI,CAAC,IAAI,EAAEC,OAAOD,KAAK,IAAI;QAE5F,OAAQoB;YACN,KAAK;gBACH,OAAOxC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEyC,SAAS,QAAQ,CAAC;YAC1C,KAAK;gBACH,OAAOzC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEyC,SAAS,YAAY,CAAC;YAC9C,KAAK;gBAAM;oBACT,MAAMlB,QAAQC,MAAM,OAAO,CAAC3B,SAAUA,QAAsB;wBAACA;qBAAM;oBACnE,OAAOG,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEyC,SAAS,KAAK,EAAEzC,gCAAAA,GAAAA,CAAAA,IAAQ,CAACuB,MAAM,GAAG,CAAC,CAACf,IAAMR,gCAAAA,GAAAA,CAAAA,GAAO,CAACQ,KAAK,CAAC,CAAC;gBACjF;YACA,KAAK;gBAAU;oBACb,MAAMe,QAAQC,MAAM,OAAO,CAAC3B,SAAUA,QAAsB;wBAACA;qBAAM;oBACnE,OAAOG,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,IAAI,EAAEyC,SAAS,KAAK,EAAEzC,gCAAAA,GAAAA,CAAAA,IAAQ,CAACuB,MAAM,GAAG,CAAC,CAACf,IAAMR,gCAAAA,GAAAA,CAAAA,GAAO,CAACQ,KAAK,CAAC,CAAC;gBACrF;YACA,KAAK;gBAAW;oBACd,MAAM,CAACiB,GAAGC,EAAE,GAAG7B;oBACf,OAAOG,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEyC,SAAS,SAAS,EAAEzC,gCAAAA,GAAAA,CAAAA,GAAO,CAACyB,GAAG,KAAK,EAAEzB,gCAAAA,GAAAA,CAAAA,GAAO,CAAC0B,GAAG,CAAC;gBAC1E;YACA,KAAK;gBAAe;oBAClB,MAAM,CAACD,GAAGC,EAAE,GAAG7B;oBACf,OAAOG,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEyC,SAAS,aAAa,EAAEzC,gCAAAA,GAAAA,CAAAA,GAAO,CAACyB,GAAG,KAAK,EAAEzB,gCAAAA,GAAAA,CAAAA,GAAO,CAAC0B,GAAG,CAAC;gBAC9E;YACA;gBACE,OAAO1B,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAY,CAAC,EAAEyC,SAAS,CAAC,EAAEzC,gCAAAA,GAAAA,CAAAA,GAAO,CAACwC,WAAW,CAAC,EAAExC,gCAAAA,GAAAA,CAAAA,GAAO,CAACH,OAAO,CAAC;QAC5E;IACF;IACA,OAAOgB,GAAG,MAAM,CAACE,MAAMsB;AACzB;AC5FO,MAAMK,aAAa,CAAsC7B,IAAmC8B;IACjG,IAAIA,SAAS,AAAiB,YAAjB,OAAOA,OAClB9B,KAAKA,GAAG,KAAK,CAAC8B;IAEhB,OAAO9B;AACT;ACAO,MAAM+B,aAAa,CACxB/B,IACAgC;IAEA,IAAIA,WAAWA,QAAQ,MAAM,GAAG,GAC9BA,QAAQ,OAAO,CAAC,CAACC;QAEfjC,KAAKA,GAAG,OAAO,CAACiC,EAAE,KAAK,EAAEA,EAAE,KAAK,IAAI;IACtC;IAEF,OAAOjC;AACT;AChBO,MAAMkC,eAAe,CAAIC,OACvB,AAAgB,YAAhB,OAAOA,QAAqB,WAAWA;ACEhD,MAAMC,kBAA0C;IAC9C,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;AACV;AAEO,MAAMC,cAAc,CACzBrC,IACAsC;IAEA,IAAIA,UAAUA,OAAO,MAAM,GAAG,GAC5B,OAAOtC,GAAG,MAAM,CAAC,CAACuC,KAChBD,OAAO,GAAG,CAAC,CAACH;YACV,IAAID,aAAaC,OAAO;gBACtB,MAAM3B,QAAQ2B,KAAK,KAAK;gBACxB,MAAMK,aAAaD,GAAG,GAAG,CAAC/B;gBAE1B,MAAMiC,QAAQN,KAAK,KAAK,IAAI3B;gBAE5B,IAAI2B,KAAK,IAAI,EAAE;oBACb,MAAM,EAAEf,IAAI,EAAE,GAAGe,KAAK,IAAI;oBAC1B,IAAI;wBAAC;wBAAO;wBAAO;wBAAO;wBAAO;wBAAY;wBAAgB;wBAAU;qBAAS,CAAC,QAAQ,CAACf,OAAO;wBAC/F,IAAIA,AAAS,eAATA,MACF,OAAOjC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,SAAS,EAAEqD,WAAW,CAAC,CAAC,CAAC,EAAE,CAACC;wBAEzC,IAAIrB,AAAS,mBAATA,MACF,OAAOjC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,QAAQ,EAAEqD,WAAW,CAAC,CAAC,CAAC,EAAE,CAACC;wBAExC,OAAOtD,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,EAAEA,gCAAAA,GAAAA,CAAAA,GAAO,CAACiC,MAAM,CAAC,EAAEoB,WAAW,CAAC,CAAC,CAAC,EAAE,CAACC;oBACjD;oBAAO,IAAIrB,AAAS,YAATA,MACT,OAAOjC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,WAAW,EAAEqD,WAAW,aAAa,CAAC,CAAC,EAAE,CAACC;oBAChD,IAAIrB,AAAS,eAATA,MAAqB;wBAC9B,MAAMsB,IAAIP,KAAK,IAAI,CAAC,QAAQ,IAAI;wBAChC,OAAOhD,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,SAAS,EAAEqD,WAAW,EAAE,EAAEE,EAAE,CAAC,CAAC,CAAC,EAAE,CAACD;oBAC/C,OAAO,IAAIrB,AAAS,qBAATA,MACT,OAAOjC,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,oBAAoB,EAAEqD,WAAW,aAAa,CAAC,CAAC,EAAE,CAACC;yBACzD,IAAIrB,KAAK,UAAU,CAAC,QAAQ;wBACjC,MAAMuB,YAAYvB,KAAK,OAAO,CAAC,OAAO;wBACtC,MAAMwB,SAASR,eAAe,CAACO,UAAU;wBACzC,IAAIC,QACF,OAAOzD,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,cAAc,EAAEqD,WAAW,gBAAgB,EAAEI,OAAO,CAAC,CAAC,CAAC,EAAE,CAACH;wBAEvE,IAAIE,AAAc,cAAdA,WACF,OAAOxD,AAAAA,IAAAA,gCAAAA,GAAAA,AAAAA,CAAG,CAAC,cAAc,EAAEqD,WAAW,2DAA2D,EAAEA,WAAW,eAAe,CAAC,CAAC,EAAE,CAC/HC;oBAGN;gBACF;gBAEA,OAAOD,WAAW,EAAE,CAACC;YACvB;YACA,OAAON;QACT;IAGF,OAAOnC,GAAG,SAAS;AAEvB;AC7DO,MAAM6C,kBAAkB,CAC7BC,KACAC;IAEA,MAAMnE,KAAK,IAAIoE,gCAAAA,MAAMA,CAAuB;QAC1C,SAAS,IAAIxE;IACf;IAEA,IAAIwB,KAAKpB,GAAG,UAAU,CAACmE;IAEvB/C,KAAKqC,YAAYrC,IAAI8C,IAAI,MAAM;IAC/B9C,KAAKD,WAAWC,IAAI8C,IAAI,KAAK;IAC7B9C,KAAKc,aAAad,IAAI8C,IAAI,OAAO;IACjC9C,KAAKuB,YAAYvB,IAAI8C,IAAI,MAAM;IAC/B9C,KAAK+B,WAAW/B,IAAI8C,IAAI,OAAO;IAC/B9C,KAAK6B,WAAW7B,IAAI8C,IAAI,KAAK;IAE7B,MAAM,EAAE3D,GAAG,EAAE8D,UAAU,EAAE,GAAGjD,GAAG,OAAO;IACtC,OAAOd,iBAAiBC,KAAK8D;AAC/B;ACvBO,MAAMC,oBAAuD;IAClE,KAAK;IACL,MAAM;IACN,SAAS;AACX;AAEO,MAAMC,gBAA0C;IACrD,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,UAAU;IACV,WAAW;AACb;AAEO,MAAMC,qBAAqB,CAACC;IACjC,MAAMC,aAAaD,QAAQ,GAAG,CAAC,CAAChD;QAC9B,MAAMkD,aAAaJ,aAAa,CAAC9C,EAAE,IAAI,CAAC,IAAI;QAC5C,OAAO,CAAC,CAAC,EAAEA,EAAE,IAAI,CAAC,IAAI,EAAEkD,WAAW,CAAC,CAAC;IACvC;IACA,OAAO,CAAC,CAAC,EAAED,WAAW,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC;AClBO,MAAME;IACH,aAA0B;IAC1B,eAA8B;IAC9B,WAAkB;IAE1B,YAAYC,YAA0B,EAAEC,cAA8B,EAAEC,SAAiB,CAAE;QACzF,IAAI,CAAC,YAAY,GAAGF;QACpB,IAAI,CAAC,cAAc,GAAGC;QACtB,IAAI,CAAC,UAAU,GAAGC;IACpB;IAEA,MAAa,KAAKC,gBAAkC,EAAEC,sBAAsC,EAAE;QAC5F,MAAMC,cAAc,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;QACzE,IAAI,CAACA,aACH,MAAM,IAAIpC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAGxD,MAAM2B,UAAUO,oBAAoBE,YAAY,aAAa,CAAC,OAAO;QACrE,MAAMC,gBAAgBF,0BAA0BC,YAAY,aAAa;QAEzE,IAAIT,QAAQ,MAAM,GAAG,KAAKU,eACxB,MAAM,IAAI,CAAC,mBAAmB,CAACV,SAASU;IAE5C;IAEA,MAAa,oBAAoBV,OAAwB,EAAEU,aAA4B,EAAE;QACvF,IAAI,CAACA,eACH;QAGF,MAAMC,eAAed,iBAAiB,CAACa,cAAc,IAAI,CAAC;QAC1D,IAAI,CAACC,cACH,MAAM,IAAItC,MAAM,CAAC,6BAA6B,EAAEqC,cAAc,IAAI,EAAE;QAGtE,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAEA,cAAc,IAAI;QAErE,MAAME,gBAAgBb,mBAAmBC;QACzC,MAAMa,cAAcb,QAAQ,GAAG,CAAC,CAAChD,IAAM,CAAC,CAAC,EAAEA,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QAE3D,IAAI8D,UAAU,GAAGH,aAAa,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,IAAID,AAAuB,UAAvBA,cAAc,IAAI,IAAcA,AAAuB,WAAvBA,cAAc,IAAI,EACpDI,UAAU,GAAGH,aAAa,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAEC,cAAc,CAAC,CAAC;QAG7E,MAAMG,gBAAgB,CAAC,wBAAwB,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,EAAEF,YAAY,MAAM,EAAEC,SAAS;QAC5G,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAACC;IAChC;IAEA,MAAa,MAAiDC,QAAoC,EAAE;QAClG,MAAMlF,MAAM0D,gBAAgBwB,UAAU,IAAI,CAAC,SAAS;QACpD,OAAO,IAAI,CAAC,UAAU,CAAClF;IACzB;IAEA,MAAa,WAAWA,GAAW,EAAE;QACnC,MAAMmF,QAAQC,aAAa,WAAWC,KAAK,GAAG;QAC9C,MAAMC,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAACtF;QAC7C,MAAMuF,MAAMH,aAAa,WAAWC,KAAK,GAAG;QAE5C,OAAO;YACL,GAAGC,MAAM;YACT,aAAa;gBACX,SAASH,MAAM,OAAO,CAAC;gBACvB,OAAOI,IAAI,OAAO,CAAC;gBACnB,UAAUA,MAAMJ;YAClB;QACF;IACF;IAEA,MAAa,aAAa;QACxB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E;IAEA,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU;IACxB;AACF;AChFO,MAAMK,QAAQ,CAACC,MACbC,UAAUD,QAAQE,YAAYF;AAEhC,MAAMC,YAAY,CAACD,MACjBA,IAAI,UAAU,CAAC,cAAcA,IAAI,UAAU,CAAC;AAG9C,MAAME,cAAc,CAACF,MACnBA,IAAI,UAAU,CAAC;ACLxB,MAAMG,aAAgD;IACpD,KAAK;IACL,MAAM;IACN,SAAS;AACX;AAEO,MAAMC;IACH,KAAuB;IACvB,MAAyB;IAEjC,YAAYC,GAAqB,CAAE;QACjC,IAAI,CAAC,IAAI,GAAGA,IAAI,IAAI;QACpB,IAAI,CAAC,KAAK,GAAGA,IAAI,UAAU;IAC7B;IAEA,OAAc,KAAKA,GAAqB,EAAwB;QAC9D,OAAO,IAAID,qBAAqBC;IAClC;IAEA,MAAa,QAAQ;QACnB,MAAMC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;QAE3D,OAAO;YACL,MAAM,IAAI,CAAC,IAAI;YACf,MAAMA;QACR;IACF;IAKA,MAAc,cAAcC,IAAuB,EAAEnG,KAAyB,EAAiB;QAC7F,IAAIA,iBAAiBoG,MACnB,OAAOpG;QAGT,IAAI,AAAiB,YAAjB,OAAOA,SAAsB2F,MAAM3F,QAAQ;YAC7C,MAAMqG,WAAW,MAAMC,MAAMtG;YAC7B,OAAO,MAAMqG,SAAS,IAAI;QAC5B;QAEA,MAAME,WAAWR,UAAU,CAACI,KAAK,IAAI;QAErC,IAAInG,iBAAiBwG,aACnB,OAAO,IAAIJ,KAAK;YAACpG;SAAM,EAAE;YAAE,MAAMuG;QAAS;QAK5C,MAAME,UAAU,AAAiB,YAAjB,OAAOzG,QAAqB0G,KAAK,SAAS,CAAC1G,SAASC,OAAOD;QAE3E,OAAO,IAAIoG,KAAK;YAACK;SAAQ,EAAE;YAAE,MAAMF;QAAS;IAC9C;AACF;AC9CO,MAAMI;IACH,WAAuC,IAAIC,MAAK;IAChD,SAAS,MAAK;IAIf,OAAO;QACZ,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,QAAQ,GAAG,IAAIA;IACtB,EAAC;IAEM,QAAQ;QACb,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,QAAQ,CAAC,KAAK;IACrB,EAAC;IAEM,eAAe,CACpBjC,WACAkC,eACA9B,gBAEO,IAAI+B,QAAQ,CAACC;YAClB,MAAMC,SAAwB;gBAAErC;gBAAWkC;gBAAe9B;YAAc;YACxE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACJ,WAAWqC;YAC7BD;QACF,GACD;IAEM,cAAc,CACnBpC,YAEO,IAAImC,QAAQ,CAACC;YAClB,MAAMC,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACrC;YAE/BoC,QAAQC,AADNA,SACMA,SAEA;QAEZ,GACD;IAEM,gBAAgB,CAACrC,YACf,IAAImC,QAAQ,CAACC;YAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAACpC;YACrBoC;QACF,GACD;IAEM,eAAe,IACb,IAAID,QAAQ,CAACC;YAElBA,QAAQpF,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;QACzC,GACD;AACH;;;AC1DO,MAAMsF;IACH,WAAuB,KAAI;IAC3B,aAAsC,KAAI;IAIlD,OAAO;QACL,MAAMC,WAAUC,AAAAA,IAAAA,qCAAAA,aAAAA,AAAAA,EAAc;QAC9B,MAAMC,iBAAgC;YACpC,KAAK;gBACH,YAAYF,SAAQ,OAAO,CAAC;gBAC5B,YAAY;YACd;YACA,IAAI;gBACF,YAAYA,SAAQ,OAAO,CAAC;gBAC5B,YAAY;YACd;QACF;QAEA,MAAMG,SAAS,IAAIC,yBAAAA,aAAaA;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAMC,AAAAA,IAAAA,yBAAAA,YAAAA,AAAAA,EAAaH,gBAAgBC,QAAQG,yBAAAA,YAAYA;QACvE,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAO;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;IACzC,EAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,KAAK;YACrB,IAAI,CAAC,UAAU,GAAG;QACpB;QACA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,KAAK;YACnB,IAAI,CAAC,QAAQ,GAAG;QAClB;IACF,EAAC;IAED,YAAY,OAAuBC,UAAkBC;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAChB,MAAM,IAAIhF,MAAM;QAElB,IAAIiF;QAEJ,IAAID,kBAAkBtB,MAAM;YAE1B,MAAMwB,SAAS,MAAMF,OAAO,WAAW;YACvCC,aAAa,IAAIE,WAAWD;QAC9B,OACE,MAAM,IAAIlF,MAAM;QAGlB,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC+E,UAAUE;IACnD,EAAC;IAED,QAAQ,OAAOxH;QACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAClB,MAAM,IAAIuC,MAAM;QAElB,MAAMoF,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC3H;QAC1C,MAAM4H,UAAUD,MAAM,OAAO,GAAG,GAAG,CAAC,CAACE,MAAaA,IAAI,MAAM;QAC5D,OAAO;YACLD;YACAD;QACF;IACF,EAAC;IAED,YAAY,OAAOL;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAClB,MAAM,IAAI/E,MAAM;QAGlB,MAAM+C,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAEgC,SAAS,EAAE,CAAC;QAC7E,OAAOhC,OAAO,OAAO,GAAG,GAAG,CAAC,CAACuC,MAAaA,IAAI,MAAM;IACtD,EAAC;AACH;AC5EO,MAAMC;IACD,aAA0B;IAC1B,eAA8B;IAChC,gBAAyB,MAAK;IAEtC,YAAYxD,YAA0B,EAAEC,cAA8B,CAAE;QACtE,IAAI,CAAC,YAAY,GAAGD;QACpB,IAAI,CAAC,cAAc,GAAGC;IACxB;IAEA,MAAc,mBAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI;YAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI;YAC9B,IAAI,CAAC,aAAa,GAAG;QACvB;IACF;IAEA,MAAc,mBAAmBC,SAAiB,EAAE;QAClD,IAAI,CAAE,MAAM,IAAI,CAAC,UAAU,CAACA,YAC1B,MAAM,IAAIjC,MAAM,CAAC,QAAQ,EAAEiC,UAAU,mCAAmC,CAAC;IAE7E;IAEA,MAAa,cAAcA,SAAiB,EAAEN,UAA2B,EAAE,EAAE6D,gBAAmC,EAAE;QAChH,MAAM,IAAI,CAAC,gBAAgB;QAE3B,MAAMnD,gBAAgBmD,mBAAmB,MAAMlC,qBAAqB,IAAI,CAACkC,kBAAkB,KAAK,KAAKC;QAErG,IAAI,MAAM,IAAI,CAAC,UAAU,CAACxD,YACxB,MAAM,IAAIjC,MAAM,CAAC,QAAQ,EAAEiC,UAAU,eAAe,CAAC;QAGvD,MAAMkC,gBAAgB;YAAElC;YAAW,cAAcA;YAAWN;QAAQ;QACpE,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAACM,WAAWkC,eAAe9B;IACnE;IAEA,MAAa,oBACXJ,SAAiB,EACjBN,UAA2B,EAAE,EAC7B6D,gBAAmC,EACnC;QACA,MAAM,IAAI,CAAC,gBAAgB;QAC3B,MAAM,IAAI,CAAC,kBAAkB,CAACvD;QAE9B,MAAMI,gBAAgBmD,mBAAmB,MAAMlC,qBAAqB,IAAI,CAACkC,kBAAkB,KAAK,KAAKC;QAErG,MAAMtB,gBAAgB;YAAElC;YAAW,cAAcA;YAAWN;QAAQ;QACpE,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAACM,WAAWkC,eAAe9B;IACnE;IAEA,MAAa,YAAYJ,SAAiB,EAAE;QAC1C,MAAM,IAAI,CAAC,gBAAgB;QAC3B,MAAM,IAAI,CAAC,kBAAkB,CAACA;QAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAACA;IAC1C;IAEA,MAAa,eACXA,SAAiB,EACjBC,gBAAkC,EAClCwD,yBAA4C,EAC1B;QAClB,MAAM,IAAI,CAAC,gBAAgB;QAC3B,MAAM,IAAI,CAAC,kBAAkB,CAACzD;QAE9B,MAAMoD,UAAU,IAAIvD,QAAQ,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAEG;QACpE,MAAME,yBAAyBuD,4BAC3B,MAAMpC,qBAAqB,IAAI,CAACoC,2BAA2B,KAAK,KAChED;QAEJ,MAAMJ,QAAQ,IAAI,CAACnD,kBAAkBC;QACrC,OAAOkD;IACT;IAEA,MAAa,WAAWpD,SAAiB,EAAE;QACzC,MAAM,IAAI,CAAC,gBAAgB;QAC3B,MAAM0D,WAAW,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY;QACvD,OAAOA,SAAS,IAAI,CAAC,CAAClF,OAASA,KAAK,SAAS,KAAKwB;IACpD;IAEA,MAAa,eAAe;QAC1B,MAAM,IAAI,CAAC,gBAAgB;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY;IACzC;IAEA,MAAa,QAAQ;QACnB,MAAM,IAAI,CAAC,gBAAgB;QAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK;QAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK;IACjC;AACF;AC1FO,MAAMsD,2BAAeK;IAC1B,aAAc;QACZ,KAAK,CAAC,IAAIrB,0BAA0B,IAAIN;IAC1C;AACF"}