dolphindb 2.0.531 → 2.0.532
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser.js +6 -2
- package/browser.js.map +1 -1
- package/index.js +6 -2
- package/index.js.map +1 -1
- package/package.json +2 -2
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InspectOptions } from 'util'\n\nimport { WebSocket } from 'ws'\n\nimport dayjs from 'dayjs'\nimport DayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js'\ndayjs.extend(DayjsCustomParseFormat)\n\nimport ipaddrjs from 'ipaddr.js'\nconst { fromByteArray: buf2ipaddr } = ipaddrjs\n\nimport { connect_websocket } from 'xshell/net.js'\nimport { concat, inspect, typed_array_to_buffer } from 'xshell/utils.js'\n\n\nexport enum DdbForm {\n scalar = 0,\n vector = 1,\n pair = 2,\n matrix = 3,\n set = 4,\n dict = 5,\n table = 6,\n chart = 7,\n \n /** Node internal communication may be used, calling function execution script generally does not return this type */\n chunk = 8,\n \n /** sysobj */\n object = 9,\n}\n\n\n/** DolphinDB DataType \n 对应的 array vector 类型为 64 + 基本类型\n 对应的 extended 类型为 128 + 基本类型\n*/\nexport enum DdbType {\n void = 0,\n bool = 1,\n char = 2,\n short = 3,\n int = 4,\n long = 5,\n date = 6,\n month = 7,\n time = 8,\n minute = 9,\n second = 10,\n datetime = 11,\n timestamp = 12,\n nanotime = 13,\n nanotimestamp = 14,\n float = 15,\n double = 16,\n symbol = 17,\n string = 18,\n uuid = 19,\n functiondef = 20,\n handle = 21,\n code = 22,\n datasource = 23,\n resource = 24,\n any = 25,\n compress = 26,\n dict = 27,\n datehour = 28,\n ipaddr = 30,\n int128 = 31,\n blob = 32,\n complex = 34,\n point = 35,\n duration = 36,\n object = 37,\n \n symbol_extended = 145, // 128 + DdbType.symbol\n}\n\nexport enum DdbFunctionType {\n SystemFunc = 0,\n SystemProc = 1,\n OperatorFunc = 2,\n UserDefinedFunc = 3,\n PartialFunc = 4,\n DynamicFunc = 5,\n PiecewiseFunc = 6,\n JitFunc = 7,\n JitPartialFunc = 8,\n}\n\nexport enum DdbDurationUnit {\n ns = 0,\n us = 1,\n ms = 2,\n s = 3,\n m = 4,\n H = 5,\n d = 6,\n w = 7,\n M = 8,\n y = 9,\n B = 10\n}\n\nexport interface DdbFunctionDefValue {\n type: DdbFunctionType\n name: string\n}\n\nexport interface DdbDurationValue {\n unit: DdbDurationUnit\n \n /** int32 */\n data: number\n}\n\nexport interface DdbSymbolExtendedValue {\n base_id: number\n base: string[]\n data: Uint32Array\n}\n\nexport interface DdbArrayVectorBlock {\n unit: 1 | 2 | 4\n rows: number\n lengths: Uint8Array | Uint16Array | Uint32Array\n data: Int8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array\n}\n\nexport interface DdbMatrixValue {\n rows: DdbObj<DdbVectorValue>\n cols: DdbObj<DdbVectorValue>\n data: DdbVectorValue\n}\n\nexport type DdbDictValue = [DdbObj<DdbVectorValue>, DdbObj<DdbVectorValue>]\n\nexport enum DdbChartType {\n area = 0,\n bar = 1,\n column = 2,\n histogram = 3,\n line = 4,\n pie = 5,\n scatter = 6,\n trend = 7,\n kline = 8,\n}\n\nexport interface DdbChartValue {\n /** original: chartType */\n type: DdbChartType\n \n stacking: boolean\n \n titles: {\n chart: string\n x_axis: string\n y_axis: string\n }\n \n extras?: {\n multi_y_axes: boolean\n }\n \n data: DdbObj<DdbMatrixValue>\n}\n\nexport type DdbScalarValue = \n null | boolean | number | bigint | string |\n Uint8Array | // uuid, ipaddr, int128, blob\n [number, number] | // complex, point\n DdbFunctionDefValue |\n DdbDurationValue\n\nexport type DdbVectorValue = \n Uint8Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array | \n string[] | // string[]\n Uint8Array[] | // blob\n DdbObj[] | // any\n DdbSymbolExtendedValue | \n DdbArrayVectorBlock[]\n\nexport type DdbValue = DdbScalarValue | DdbVectorValue | DdbMatrixValue | DdbDictValue | DdbChartValue\n\n\nexport const nulls = {\n int8: -0x80, // -128\n int16: -0x80_00, // -32768\n int32: -0x80_00_00_00, // -21_4748_3648\n int64: -0x80_00_00_00_00_00_00_00n, // -922_3372_0368_5477_5808\n float32: -3.4028234663852886e+38,\n \n /** -Number.MAX_VALUE */\n double: -Number.MAX_VALUE,\n \n bytes16: Uint8Array.from(\n new Array(16).fill(0)\n )\n} as const\n\n\nexport const timezone_offset = 1000 * 60 * new Date().getTimezoneOffset()\n\n\n/** 可以表示所有 DolphinDB 数据库中的数据类型 */\nexport class DdbObj <T extends DdbValue = DdbValue> {\n static dec = new TextDecoder('utf-8')\n \n static enc = new TextEncoder()\n \n /** 维护已解析的 symbol base,比如流数据中后续的 symbol 向量可能只发送一个 base.id, base.size == 0, 依赖之前发送的 symbol base ?\n 只是暂存,如果一张表有多个 symbol 列,可能这个 symbol base 会被复用,不同的对象之间 symbol base 一般不复用\n */\n static symbol_bases: Record<number, string[]> = { }\n \n /** little endian (client) */\n static le_client = Boolean(\n new Uint8Array(\n Uint32Array.of(1).buffer\n )[0]\n )\n \n /** 是否为小端 (little endian) */\n le = DdbObj.le_client\n \n /** 数据形式 https://www.dolphindb.cn/cn/help/DataTypesandStructures/DataForms/index.html */\n form: DdbForm\n \n /** 数据类型 https://www.dolphindb.cn/cn/help/DataTypesandStructures/DataTypes/index.html */\n type: DdbType\n \n /** 占用 parse 时传入的 buf 的长度 */\n length: number\n \n /** table name / column name */\n name?: string\n \n /**\n 最低维、第 1 维\n - vector: rows = n, cols = 1\n - pair: rows = 2, cols = 1\n - matrix: rows = n, cols = m\n - set: 同 vector\n - dict: 包含 keys, values 向量\n - table: 同 matrix\n */\n rows?: number\n \n /** 第 2 维 */\n cols?: number\n \n /** 实际数据。不同的 DdbForm, DdbType 使用 DdbValue 中不同的类型来表示实际数据 */\n value: T\n \n /** 原始二进制数据,仅在 parse_object 为 false 时通过 parse_message 生成的顶层对象有这个属性 */\n buffer?: Uint8Array\n \n \n constructor (data: Partial<DdbObj> & { form: DdbForm, type: DdbType /* (parse 对象时必须设置) , length: number */ }) {\n Object.assign(this, data)\n }\n \n \n static parse (buf: Uint8Array, le: boolean) {\n if (!buf.length)\n return new this({\n le,\n form: DdbForm.scalar,\n type: DdbType.void,\n length: 0,\n value: null\n })\n \n const type = buf[0]\n const form = buf[1]\n \n if (buf.length <= 2) {\n return new this({\n le,\n form,\n type,\n length: 2,\n value: null,\n })\n }\n \n // set 里面 data 嵌套了一个 vector, 跳过 vector 的 type 和 form\n const i_data = form === DdbForm.set ? 4 : 2\n const buf_data = buf.subarray(i_data)\n \n switch (form) {\n case DdbForm.scalar: {\n const [length, value] = this.parse_scalar(buf_data, le, type)\n return new this({\n le,\n form, \n type,\n length: i_data + length,\n value,\n })\n }\n \n case DdbForm.vector:\n case DdbForm.pair:\n case DdbForm.set: {\n let vector = this.parse_vector(buf_data, le, type)\n vector.length += i_data\n vector.form = form\n return vector\n }\n \n \n case DdbForm.table: {\n // table([\n // [1, 2] as a,\n // [1, 2] as b\n // ])\n \n // <Buffer \n // 00 06 form = table\n // 02 00 00 00 02 00 00 00 rows = 2, cols = 2\n // 00 行名称\n // 61 00 62 00 列名称 a, b\n \n // 04 01 form = vector, type = int\n // 02 00 00 00 01 00 00 00 cols = 2, rows = 1\n // 01 00 00 00 02 00 00 00 \n \n // 04 01 \n // 02 00 00 00 01 00 00 00 \n // 01 00 00 00 02 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset + i_data)\n \n const rows = dv.getUint32(0, le)\n const cols = dv.getUint32(4, le)\n const i_name_tail = buf_data.indexOf(0, 8)\n const name = this.dec.decode(\n buf_data.subarray(8, i_name_tail)\n )\n \n const i_items_start = i_name_tail + 1\n \n const [len_items, colnames] = this.parse_vector_items(\n buf_data.subarray(i_items_start),\n le,\n DdbType.string,\n cols\n ) as [number, string[]]\n \n let value = new Array(cols)\n let i_start = i_items_start + len_items\n for (let i = 0; i < cols; i++) {\n const type = buf_data[i_start] as DdbType\n \n let col = this.parse_vector(\n buf_data.subarray(i_start + 2),\n le,\n type\n )\n \n col.length += 2\n \n col.name = colnames[i]\n \n value[i] = col\n \n i_start += col.length\n }\n \n return new this({\n le,\n form,\n type,\n length: i_data + i_start,\n name,\n rows,\n cols,\n value,\n })\n }\n \n \n case DdbForm.dict: \n case DdbForm.chart: {\n // <Buffer 19 05 type = any, form = dict\n // 12 01 keys.type = string, keys.form = vector\n // 03 00 00 00 01 00 00 00 keys.cols = 3, keys.rows = 1\n // 63 00 62 00 61 00 \n \n // 19 01 values.type = any, values.form = vector\n // 03 00 00 00 01 00 00 00 values.cols = 3, values.rows = 1\n // 04 00 03 00 00 00 04 00 02 00 00 00 04 00 01 00 00 00>\n \n let keys = this.parse_vector(\n buf_data.subarray(2),\n le,\n buf_data[0]\n )\n \n keys.length += 2\n \n let values = this.parse_vector(\n buf_data.subarray(keys.length + 2),\n le,\n buf_data[keys.length]\n )\n \n values.length += 2\n \n let dict = new this({\n le,\n form: DdbForm.dict,\n type,\n length: i_data + keys.length + values.length,\n rows: keys.rows,\n cols: 2,\n value: [\n keys,\n values\n ],\n })\n \n if (form === DdbForm.dict)\n return dict\n else {\n const {\n chartType: type,\n stacking,\n title: titles,\n extras,\n data,\n ... others\n } = dict.to_dict<{\n chartType: DdbObj<DdbChartType>\n stacking: DdbBool\n title: DdbVectorString\n extras?: DdbObj\n data: DdbObj<DdbMatrixValue>\n }>()\n \n const [chart, x_axis, y_axis] = titles.value\n \n dict.form = DdbForm.chart\n \n dict.value = {\n type: type.value,\n stacking: stacking.value,\n titles: {\n chart,\n x_axis,\n y_axis,\n },\n ... extras ? (() => {\n const { multiYAxes: multi_y_axes = false, ...extras_others } = extras.to_dict<{ multiYAxes: boolean }>({ strip: true })\n \n return {\n extras: {\n multi_y_axes,\n ...extras_others,\n }\n }\n })() : { },\n data,\n ...others,\n }\n \n return dict\n }\n }\n \n \n case DdbForm.matrix: {\n // rename!(\n // 1..9$3:3,\n // [1, 2, 3],\n // ['c1', 'c2', 'c3']\n // )\n \n // <Buffer 04 03 type = int, form = matrix\n // 03 has_row_label (& 0x01) = 1, has_col_label (& 0x02) = 1\n \n // row labels\n // 04 01 type = int, form = vector\n // 03 00 00 00 01 00 00 00 rows = 3, cols = 1\n // 01 00 00 00 02 00 00 00 03 00 00 00 vector values\n \n // col labels\n // 12 01 type = string, form = vector\n // 03 00 00 00 01 00 00 00 rows = 3, cols = 1\n // 63 31 00 63 32 00 63 33 00 \n \n // matrix data\n // 04 03 type = matrix.type, form = matrix\n // 03 00 00 00 03 00 00 00 rows = 3, cols = 3\n \n const dv = new DataView(buf.buffer, buf.byteOffset + i_data)\n \n const label_flags = buf_data[0]\n const has_row_labels = Boolean(label_flags & 0x01)\n const has_col_labels = Boolean(label_flags & 0x02)\n \n let row_labels: DdbObj<DdbVectorValue> | null = null\n let col_labels: DdbObj<DdbVectorValue> | null = null\n \n let offset = 1\n \n if (has_row_labels) {\n row_labels = this.parse_vector(\n buf_data.subarray(offset + 2),\n le,\n buf_data[offset] as DdbType\n )\n row_labels.length += 2\n offset += row_labels.length\n }\n \n if (has_col_labels) {\n col_labels = this.parse_vector(\n buf_data.subarray(offset + 2),\n le,\n buf_data[offset] as DdbType\n )\n col_labels.length += 2\n offset += col_labels.length\n }\n \n if (buf_data[offset] !== type)\n throw new Error('matrix.datatype !== matrix.type')\n \n const rows = dv.getUint32(offset + 2, le)\n const cols = dv.getUint32(offset + 6, le)\n \n const [len_items, data] = this.parse_vector_items(\n buf_data.subarray(offset + 10),\n le,\n type,\n rows * cols // 假设小于 2**32\n )\n \n offset += 10 + len_items\n \n return new this({\n le,\n form, \n type,\n length: i_data + offset,\n rows,\n cols,\n value: {\n rows: row_labels,\n cols: col_labels,\n data,\n },\n })\n }\n \n \n default:\n return new this({\n le,\n form,\n type,\n length: i_data + buf_data.length,\n value: buf_data\n })\n }\n }\n \n \n static parse_scalar (buf: Uint8Array, le: boolean, type: DdbType): [number, DdbScalarValue] {\n switch (type) {\n case DdbType.void:\n return [1, null]\n \n \n case DdbType.bool: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getInt8(0)\n return [1, value === nulls.int8 ? null : Boolean(value)]\n }\n \n \n case DdbType.char: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getInt8(0)\n return [1, value === nulls.int8 ? null : value]\n }\n \n \n case DdbType.short: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getInt16(0, le)\n return [2, value === nulls.int16 ? null : value]\n }\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime: \n case DdbType.datehour: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getInt32(0, le)\n return [4, value === nulls.int32 ? null : value]\n }\n \n \n case DdbType.float: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getFloat32(0, le)\n return [4, value === nulls.float32 ? null : value]\n }\n \n \n case DdbType.double: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getFloat64(0, le)\n return [8, value === nulls.double ? null : value]\n }\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getBigInt64(0, le)\n return [8, value === nulls.int64 ? null : value]\n }\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.code:\n case DdbType.handle:\n case DdbType.functiondef: {\n const i_head = type === DdbType.functiondef ? 1 : 0\n let i_zero = buf.indexOf(0, i_head)\n let i_end: number // 整个字符串(包括 0)的末尾,excluding\n if (i_zero === -1)\n i_end = i_zero = buf.length\n else\n i_end = i_zero + 1\n // 调整了 i_zero 到字符串(不包括 0)的末尾,excluding\n \n const str = this.dec.decode(\n buf.subarray(i_head, i_zero)\n )\n \n return [\n i_end,\n type === DdbType.functiondef ?\n {\n type: buf[0] as DdbFunctionType,\n name: str\n }\n :\n str\n ]\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [\n 16,\n buf.slice(0, 16)\n ]\n \n \n case DdbType.blob: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const length = dv.getUint32(0, le)\n \n return [\n 4 + length,\n buf.slice(4, 4 + length)\n ]\n }\n \n \n case DdbType.complex:\n case DdbType.point: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [\n 16,\n [\n dv.getFloat64(0, le),\n dv.getFloat64(8, le)\n ] as [number, number]\n ]\n }\n \n \n case DdbType.duration: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [\n 8,\n {\n unit: dv.getUint32(4, le),\n data: dv.getInt32(0, le)\n } as DdbDurationValue\n ]\n }\n \n default:\n throw new Error(`${DdbType[type] || type} 暂时不支持解析`)\n }\n }\n \n \n /** parse: rows, cols, items \n 返回的 ddbobj.length 不包括 vector 的 type 和 form\n */\n static parse_vector (buf: Uint8Array, le: boolean, type: DdbType): DdbObj<DdbVectorValue> {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n \n const rows = dv.getUint32(0, le)\n \n let i_items_start = 8\n \n if (type < 64 || type >= 128) {\n const [len_items, value] = this.parse_vector_items(\n buf.subarray(i_items_start),\n le,\n type,\n rows\n )\n \n return new this({\n le,\n form: DdbForm.vector,\n type,\n length: i_items_start + len_items,\n cols: 1,\n rows,\n value,\n })\n }\n \n \n // array vector\n \n // av = array(INT[], 0, 3)\n // append!(av, [1..4])\n // append!(av, [1..70000])\n // av\n \n // <Buffer 44 01 type = array vector, form = vector\n // 02 00 00 00 74 11 01 00 rows = 2, cols = 70004 (0x011174)\n \n // block 0\n // 01 00 block.rows = 1\n // 04 block.unit = 4\n // 00 reserved\n // 04 00 00 00 block.lengths = [4]\n // 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 block.data\n \n // block 1\n // 01 00 block.rows = 1\n // 04 block.unit = 4\n // 00 reserved\n // 70 11 01 00 block.lengths = [70000 (0x00011170)]\n // 01 00 00 00 02 00 00 00 ... 279992 more bytes> block.data\n \n const cols = dv.getUint32(4, le)\n \n let blocks: DdbArrayVectorBlock[] = [ ]\n \n let i_block_start = i_items_start\n \n // 解析一个 block\n for (let i_row = 0; i_row < rows; ) {\n /** 对应 array vector 中元素个数 */\n const rows = dv.getUint16(i_block_start, le)\n \n /** 每个 length 占用的字节数 */\n const unit = dv.getUint8(i_block_start + 2)\n \n /** array vector 每个元素的子元素长度 */\n let lengths: Uint32Array | Uint16Array | Uint8Array\n \n const i_lengths_start = i_block_start + 4\n const i_data_start = i_lengths_start + rows * unit\n \n const lengths_buf = buf.slice(\n i_lengths_start,\n i_data_start\n )\n \n switch (unit) {\n case 1:\n lengths = lengths_buf\n break\n \n case 2:\n lengths = new Uint16Array(lengths_buf.buffer)\n break\n \n case 4:\n lengths = new Uint32Array(lengths_buf.buffer)\n break\n \n default:\n throw new Error(`array vector 存在非法 unit = ${unit}`)\n }\n \n let total_length = 0\n for (const x of lengths)\n total_length += x\n \n const [len_items, data] = this.parse_vector_items(\n buf.subarray(i_data_start),\n le,\n type - 64,\n total_length\n )\n \n blocks.push({\n unit,\n rows,\n lengths,\n data: data as Int8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array\n })\n \n i_block_start = i_data_start + len_items\n \n i_row += rows\n }\n \n \n return new this({\n le,\n form: DdbForm.vector,\n type,\n length: i_block_start,\n cols,\n rows,\n value: blocks\n })\n }\n \n \n /** 有可能没有字节对齐,不能直接使用原有 message 的 arraybuffer, 统一复制出来,让原有 arraybuffer 被回收掉比较好 */\n static parse_vector_items (\n buf: Uint8Array, \n le: boolean,\n type: DdbType, \n length: number\n ): [\n number, \n DdbVectorValue\n ] {\n switch (type) {\n case DdbType.bool:\n case DdbType.char:\n return [\n length,\n new Int8Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + length\n )\n )\n ]\n \n case DdbType.short:\n return [\n 2 * length,\n new Int16Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 2 * length\n )\n )\n ]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n case DdbType.datehour:\n return [\n 4 * length,\n new Int32Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 4 * length\n )\n )\n ]\n \n \n case DdbType.float:\n return [\n 4 * length,\n new Float32Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 4 * length\n )\n )\n ]\n \n \n case DdbType.double:\n return [\n 8 * length,\n new Float64Array(\n buf.buffer.slice(\n buf.byteOffset, \n buf.byteOffset + 8 * length\n )\n )\n ]\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [\n 8 * length,\n new BigInt64Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 8 * length\n )\n )\n ]\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.handle:\n case DdbType.code: {\n let value = new Array<string>(length)\n let i_head = 0, i_tail = i_head\n for (let i = 0; i < length; i++) {\n i_tail = buf.indexOf(0, i_head)\n value[i] = this.dec.decode(\n buf.subarray(i_head, i_tail)\n )\n i_head = i_tail + 1\n }\n return [i_head, value]\n }\n \n \n case DdbType.symbol_extended: {\n // <Buffer 91 01 type = symbol extended, form = vector\n // 05 00 00 00 01 00 00 00 row = 5, col = 1\n \n // buf:\n // 00 00 00 00 symbol base id = 0 (uint32)\n // 02 00 00 00 symbol base size = 2\n // 00 61 61 00 以 \\0 分割的字符串\n // 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n const base_id = dv.getUint32(0, le)\n const base_size = dv.getUint32(4, le)\n \n let base_length = 0\n let base = this.symbol_bases[base_id]\n \n // base_size 为 0 时复用之前的 symbol base\n if (base_size) {\n [base_length, base] = this.parse_vector_items(\n buf.subarray(8),\n le,\n DdbType.string,\n base_size\n ) as [number, string[]]\n \n this.symbol_bases[base_id] = base\n }\n \n const value_start = 8 + base_length\n const value_end = value_start + length * 4\n \n const data = new Uint32Array(\n buf.buffer.slice(\n buf.byteOffset + value_start,\n buf.byteOffset + value_end\n )\n )\n \n return [\n value_end,\n {\n base_id,\n base,\n data\n }\n ]\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [\n 16 * length,\n new Uint8Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 16 * length\n )\n )\n ]\n \n \n case DdbType.blob: {\n // <Buffer 20 01 type = blob, form = vector\n // 02 00 00 00 01 00 00 00 cols = 2, rows = 1\n // 04 00 00 00 61 62 63 64 \n // 04 00 00 00 61 62 63 64>\n \n let value = new Array<Uint8Array>(length)\n const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n let i_head = 0\n for (let i = 0; i < length; i++) {\n const sublen = dv.getUint32(i_head, le)\n const i_blob_head = i_head + 4\n const i_blob_tail = i_blob_head + sublen\n value[i] = buf.slice(i_blob_head, i_blob_tail)\n i_head = i_blob_tail\n }\n \n return [i_head, value]\n }\n \n \n case DdbType.complex:\n case DdbType.point: \n return [\n 16 * length,\n new Float64Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 16 * length\n )\n )\n ]\n \n \n case DdbType.any: {\n // [1, 2, 'a', 'aaa']\n // any[4](<Buffer \n // 04 00 DdbType.int, DdbForm.scalar\n // 01 00 00 00 \n // 04 00 DdbType.int, DdbForm.scalar\n // 02 00 00 00 \n // 02 00 DdbType.char, DdbForm.scalar\n // 61 \n // 12 00 DdbType.string, DdbForm.scalar\n // 61 61 61 00>)\n \n \n let values = new Array<DdbObj>(length)\n let i_head = 0\n for (let i = 0; i < length; i++) {\n const obj = this.parse(\n buf.subarray(i_head),\n le\n )\n values[i] = obj\n i_head += obj.length\n }\n \n return [\n i_head,\n values\n ]\n }\n \n // case DdbType.duration: -> 实际会返回一个 any vector\n // [2y, 1M, 3d, 7H, 11m, 12s, 15ms, 16us, 17ns]\n // <Buffer 19 01 type = any, form = vector\n // 09 00 00 00 01 00 00 00 rows = 9, cols = 1\n // 24 00 type = DdbType.duration, form = scalar\n // 02 00 00 00 09 00 00 00 \n // 24 00 01 00 00 00 08 00 00 00 24 00 03 00 00 00 06 00 00 00 24 00 07 00 00 00 05 00 00 00 ... 50 more bytes>\n \n \n default:\n return [0, buf]\n }\n }\n \n \n pack (): Uint8Array {\n const { form, type, value } = this\n \n let header = new Uint8Array(2)\n header[0] = type\n header[1] = form\n \n const body = (() => {\n switch (form) {\n case DdbForm.scalar:\n switch (type) {\n case DdbType.void:\n return [Uint8Array.of(1)]\n \n case DdbType.bool:\n return [\n Int8Array.of(\n value === null ?\n nulls.int8\n :\n Number(value)\n )\n ]\n \n \n case DdbType.char:\n return [\n Int8Array.of(\n (value === null ?\n nulls.int8\n :\n value as number\n )\n )\n ]\n \n \n case DdbType.short:\n return [\n Int16Array.of(\n value === null ?\n nulls.int16\n :\n value as number\n )\n ]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n case DdbType.datehour:\n return [\n Int32Array.of(\n value === null ?\n nulls.int32\n :\n value as number\n )\n ]\n \n \n case DdbType.float:\n return [\n Float32Array.of(\n value === null ?\n nulls.float32\n :\n value as number\n )\n ]\n \n \n case DdbType.double:\n return [\n Float64Array.of(\n value === null ?\n nulls.double\n :\n value as number\n )\n ]\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [\n BigInt64Array.of(\n value === null ?\n nulls.int64\n :\n value as bigint\n )\n ]\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.code:\n case DdbType.handle:\n return [\n DdbObj.enc.encode(value as string),\n Uint8Array.of(0),\n ]\n \n case DdbType.functiondef:\n return [\n Uint8Array.of((value as DdbFunctionDefValue).type),\n DdbObj.enc.encode((value as DdbFunctionDefValue).name),\n Uint8Array.of(0)\n ]\n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [this.value as Uint8Array]\n \n \n case DdbType.blob:\n return [\n Uint32Array.of(\n (this.value as Uint8Array).byteLength\n ),\n this.value as Uint8Array\n ]\n \n \n case DdbType.complex:\n case DdbType.point:\n return [Float64Array.from(this.value as [number, number])]\n \n \n case DdbType.duration: {\n const { unit, data } = this.value as DdbDurationValue\n return [Int32Array.of(data, unit)]\n }\n \n default:\n throw new Error(`${DdbType[type] || type} 暂时不支持序列化`)\n }\n \n \n case DdbForm.vector:\n case DdbForm.pair:\n // pack array vector\n if (form === DdbForm.vector && 64 <= type && type < 128)\n return [\n Uint32Array.of(this.rows, this.cols),\n ... (this.value as DdbArrayVectorBlock[]).map(block => ([\n Uint16Array.of(block.rows),\n Uint8Array.of(block.unit, 0),\n block.lengths,\n block.data as any\n ])).flat()\n ]\n \n return [\n Uint32Array.of(this.rows, 1),\n ... DdbObj.pack_vector_body(value as DdbVectorValue, type, this.rows)\n ]\n \n \n case DdbForm.set:\n return [\n new DdbObj({\n ...this,\n form: DdbForm.vector,\n }).pack()\n ]\n \n \n case DdbForm.table:\n return [\n Uint32Array.of(this.rows, this.cols),\n DdbObj.enc.encode(this.name || ''),\n \n // column names\n Uint8Array.of(0),\n ...DdbObj.pack_vector_body(\n (this.value as DdbObj[]).map((col, i) => \n col.name || `col${i}`\n ),\n DdbType.string,\n this.cols\n ),\n \n // column vectors\n ...(this.value as DdbObj[]).map(col => \n col.pack()\n )\n ]\n \n \n case DdbForm.dict:\n return [\n (value as DdbDictValue)[0].pack(),\n (value as DdbDictValue)[1].pack(),\n ]\n \n case DdbForm.chart: {\n const {\n type,\n stacking,\n titles: {\n chart,\n x_axis,\n y_axis,\n },\n extras,\n data\n } = this.value as DdbChartValue\n \n const {\n value: [keys, values]\n } = new DdbDict({\n chartType: new DdbInt(type),\n stacking,\n title: new DdbVectorString([chart, x_axis, y_axis]),\n ... extras ? (() => {\n const { multi_y_axes, ...extras_other } = extras\n \n return {\n extras: new DdbDict({\n multiYAxes: multi_y_axes,\n ...extras_other\n })\n }\n })() : { },\n data,\n })\n \n return [\n keys.pack(),\n values.pack(),\n ]\n }\n \n case DdbForm.matrix: {\n const { rows, cols, data } = value as DdbMatrixValue\n \n return [\n Uint8Array.of(\n (rows && 0x01) | (cols && 0x02),\n ),\n ... rows ? [rows.pack()] : [ ],\n ... cols ? [cols.pack()] : [ ],\n Uint8Array.of(this.type, this.form),\n Uint32Array.of(this.rows, this.cols),\n ... DdbObj.pack_vector_body(data, this.type, this.rows * this.cols)\n ]\n }\n \n default:\n throw new Error(`${DdbForm[form]} 暂不支持序列化`)\n }\n })()\n \n \n if (!body)\n return new Uint8Array(0)\n \n return concat([\n header,\n ...body\n ])\n }\n \n \n static pack_vector_body (\n value: DdbVectorValue,\n type: DdbType,\n length: number\n ): ArrayBufferView[] {\n switch (type) {\n case DdbType.bool:\n return [value as Int8Array]\n \n \n case DdbType.char:\n return [value as Int8Array]\n \n \n case DdbType.short:\n return [value as Int16Array]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n case DdbType.datehour:\n return [value as Int32Array]\n \n \n case DdbType.float:\n return [value as Float32Array]\n \n \n case DdbType.double:\n return [value as Float64Array]\n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [value as BigInt64Array]\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.handle:\n case DdbType.code: {\n let bufs = new Array<Uint8Array>(length * 2)\n for (let i = 0; i < length; i++) {\n bufs[2 * i] = this.enc.encode((value as string[])[i])\n bufs[2 * i + 1] = Uint8Array.of(0)\n }\n return bufs\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [value as Uint8Array]\n \n \n case DdbType.blob: {\n let bufs = new Array<ArrayBufferView>(length * 2)\n for (let i = 0; i < length; i++) {\n const blob_value = (value as Uint8Array[])[i]\n bufs[2 * i] = Uint32Array.of(blob_value.length)\n bufs[2 * i + 1] = blob_value\n }\n return bufs\n }\n \n \n case DdbType.complex:\n case DdbType.point: \n return [value as Float64Array]\n \n \n case DdbType.any: {\n // [1, 2, 'a', 'aaa']\n // any[4](<Buffer \n // 04 00 DdbType.int, DdbForm.scalar\n // 01 00 00 00 \n // 04 00 DdbType.int, DdbForm.scalar\n // 02 00 00 00 \n // 02 00 DdbType.char, DdbForm.scalar\n // 61 \n // 12 00 DdbType.string, DdbForm.scalar\n // 61 61 61 00>)\n \n let bufs = new Array<Uint8Array>(length)\n for (let i = 0; i < length; i++)\n bufs[i] = (value as DdbObj[])[i].pack()\n return bufs\n }\n \n \n case DdbType.symbol_extended: {\n const { base_id, base, data } = value as DdbSymbolExtendedValue\n \n return [\n Uint32Array.of(\n base_id || 0,\n base.length,\n ),\n ...this.pack_vector_body(base, DdbType.string, base.length),\n data\n ]\n }\n \n default:\n throw new Error(`vector ${DdbType[type]} 暂不支持序列化`)\n }\n }\n \n \n [inspect.custom] (depth: number, options: InspectOptions, _inspect) {\n const type = this.inspect_type()\n \n const data = (() => {\n switch (this.form) {\n case DdbForm.scalar:\n return format(this.type, this.value, this.le, options)\n \n case DdbForm.vector:\n case DdbForm.pair:\n case DdbForm.set: {\n const form = this.form\n \n function format_array (items: string[], ellipsis: boolean) {\n const str_items = items.join(', ') + (ellipsis ? ', ...' : '')\n \n return form === DdbForm.pair ?\n str_items\n :\n str_items.bracket('square')\n }\n \n \n if (64 <= this.type && this.type < 128) { // array vector\n // 因为 array vector 目前只支持:Logical, Integral(不包括 INT128, COMPRESS 类型), Floating, Temporal\n // 都对应 TypedArray 中的一格,所以直接根据 index 去取即可\n // av = array(INT[], 0, 5)\n // append!(av, [1..1])\n // append!(av, [1..70000])\n // append!(av, [1..1])\n // append!(av, [1..500])\n // ...\n // av\n const _type = this.type - 64\n \n const limit = 10\n \n let items = new Array(\n Math.min(limit, this.rows)\n )\n \n let i_items = 0\n \n for (const { lengths, data } of this.value as DdbArrayVectorBlock[]) {\n let acc_len = 0\n \n for (const length of lengths) {\n let _items = new Array(\n Math.min(limit, length)\n )\n \n for (let i = 0; i < _items.length; i++)\n _items[i] = format(_type, data[acc_len + i], this.le, options)\n \n items[i_items++] = format_array(\n _items,\n length > limit\n )\n \n acc_len += length\n }\n \n if (i_items >= limit)\n break\n }\n \n return format_array(\n items,\n this.rows > limit\n )\n }\n \n switch (this.type) {\n case DdbType.symbol_extended: {\n const limit = 50 as const\n \n const { base, data } = this.value as DdbSymbolExtendedValue\n \n let items = new Array(\n Math.min(limit, data.length)\n )\n \n for (let i = 0; i < items.length; i++)\n items[i] = inspect(base[data[i]], options)\n \n return format_array(\n items,\n data.length > limit\n )\n }\n \n case DdbType.uuid: \n case DdbType.int128: \n case DdbType.ipaddr: {\n const limit = 10 as const\n \n const value = this.value as Uint8Array\n \n const len_data = value.length / 16\n \n let items = new Array(\n Math.min(limit, len_data)\n )\n \n for (let i = 0; i < items.length; i++)\n items[i] = format(\n this.type,\n value.subarray(16 * i, 16 * (i + 1)),\n this.le,\n options\n )\n \n return format_array(\n items,\n len_data > limit\n )\n }\n \n case DdbType.complex:\n case DdbType.point: {\n const limit = 20 as const\n \n const value = this.value as Float64Array\n \n const len_data = value.length / 2\n \n let items = new Array(\n Math.min(limit, len_data)\n )\n \n for (let i = 0; i < items.length; i++)\n items[i] = format(\n this.type,\n value.subarray(2 * i, 2 * (i + 1)),\n this.le,\n options\n )\n \n return format_array(\n items,\n len_data > limit\n )\n }\n \n default: {\n const limit = 50 as const\n \n let items = new Array(\n Math.min(limit, (this.value as any[]).length)\n )\n \n for (let i = 0; i < items.length; i++)\n items[i] = format(this.type, this.value[i], this.le, options)\n \n return format_array(\n items,\n (this.value as any[]).length > limit\n )\n }\n }\n \n }\n }\n \n if (this.value instanceof Uint8Array)\n return inspect(\n typed_array_to_buffer(this.value),\n options\n )\n \n return inspect(this.value, options)\n })()\n \n return `${options.colors ? type.blue : type}(${ this.name ? `${inspect(this.name, options)}, ` : '' }${data})`\n }\n \n \n inspect_type () {\n const tname = DdbType[this.type]\n \n switch (this.form) {\n case DdbForm.scalar:\n if (this.type === DdbType.functiondef)\n return `functiondef<${DdbFunctionType[(this.value as DdbFunctionDefValue).type]}>`\n \n return tname\n \n case DdbForm.vector:\n if (64 <= this.type && this.type < 128)\n return `${DdbType[this.type - 64]}[][${this.rows}]`\n return `${tname}[${this.rows}]`\n \n case DdbForm.pair:\n return `pair<${tname}>`\n \n case DdbForm.set:\n return `set<${tname}>[${this.rows}]`\n \n case DdbForm.table:\n return `table[${this.rows}r][${this.cols}c]`\n \n case DdbForm.dict:\n return `dict<${DdbType[(this.value[0] as DdbObj).type]}, ${DdbType[(this.value[1] as DdbObj).type]}>`\n \n case DdbForm.chart:\n return `chart<${DdbChartType[(this.value as DdbChartValue).type]}>`\n \n case DdbForm.matrix:\n return `matrix<${tname}>[${this.rows}r][${this.cols}c]`\n \n default:\n return `${DdbForm[this.form]} ${tname}`\n }\n }\n \n \n /** 自动转换 js string, boolean 为 DdbObj */\n static to_ddbobj (value: DdbObj | string | boolean): DdbObj {\n if (value && value instanceof DdbObj)\n return value\n \n const type = typeof value\n \n switch (type) {\n case 'string':\n return new DdbString(value as string)\n \n case 'boolean':\n return new DdbBool(value as boolean)\n \n default: \n throw new Error(`Cannot automatically convert ${type} to DdbObj`)\n }\n }\n \n \n /** 转换 js 数组为 DdbObj[] */\n static to_ddbobjs (values: any[]) {\n return values.map(value => \n this.to_ddbobj(value)\n )\n }\n \n \n to_rows <T extends Record<string, any> = Record<string, any>> () {\n if (this.form !== DdbForm.table)\n throw new Error('this.form is not DdbForm.table, cannot to_rows')\n \n let rows = new Array<T>(this.rows)\n \n for (let i = 0; i < this.rows; i++) {\n let row: any = { }\n for (let j = 0; j < this.cols; j++) {\n const { type, name, value: values }: DdbObj = this.value[j] // column\n \n switch (type) {\n case DdbType.bool: {\n const value = values[i]\n row[name] = value === nulls.int8 ?\n null\n :\n Boolean(value)\n break\n }\n \n case DdbType.ipaddr:\n row[name] = (values as Uint8Array).subarray(16 * i, 16 * (i + 1))\n break\n \n case DdbType.symbol_extended: {\n const { base, data } = values as DdbSymbolExtendedValue\n row[name] = base[data[i]]\n break\n }\n \n default:\n row[name] = values[i]\n }\n }\n rows[i] = row\n }\n \n return rows\n }\n \n \n /** convert dict<string, any> to js object (Record<string, any>)\n - options?:\n - strip?: `false` Whether to directly extract and strip the value in DdbObj as the value of js object (discard the rest of the information in DdbObj, only keep the value)\n - deep?: `false` Whether to convert recursively\n */\n to_dict <T extends Record<string, DdbObj> = Record<string, DdbObj>> (): T\n to_dict <T extends Record<string, any> = Record<string, any>> (options: { strip: true }): T\n to_dict <T extends Record<string, any> = Record<string, any>> (options?: { strip?: boolean, deep?: boolean }): T\n to_dict <T = Record<string, any>> ({\n strip,\n deep,\n }: {\n strip?: boolean\n deep?: boolean\n } = { }) {\n if (this.form !== DdbForm.dict)\n throw new Error('this.form is not DdbForm.dict and cannot be converted to js object')\n \n const [{ value: keys, type: key_type }, { value: values, type: value_type }] = this.value as DdbDictValue\n \n if (key_type !== DdbType.string || value_type !== DdbType.any)\n throw new Error('Not dict<string, any>, automatic conversion to js object is not supported for the time being')\n \n if (deep && !strip)\n throw new Error('strip = true must be set when deep = true')\n \n let obj = { }\n \n for (let i = 0; i < this.rows; i++) {\n let value: DdbObj = values[i]\n if (deep && value.form === DdbForm.dict)\n obj[keys[i]] = value.to_dict({ strip, deep })\n else\n obj[keys[i]] = strip ? value.value : value\n }\n \n return obj as T\n }\n}\n\n\nexport function format (type: DdbType, value: DdbValue, le: boolean, options: InspectOptions) {\n switch (type) {\n case DdbType.bool:\n return inspect(\n (value === null || value === nulls.int8) ?\n null\n :\n Boolean(value),\n options\n )\n \n case DdbType.char:\n return inspect(\n (value === null || value === nulls.int8) ?\n null\n :\n // ascii printable\n // http://facweb.cs.depaul.edu/sjost/it212/documents/ascii-pr.htm\n (32 <= (value as number) && (value as number) <= 126) ?\n String.fromCharCode(value as number)\n :\n value,\n options\n )\n \n case DdbType.short:\n return inspect(\n (value === null || value === nulls.int16) ?\n null\n :\n value,\n options\n )\n \n case DdbType.int:\n return inspect(\n (value === null || value === nulls.int32) ?\n null\n :\n value,\n options\n )\n \n case DdbType.long:\n return (value === null || value === nulls.int64) ?\n 'null'\n :\n options.colors ?\n String(value).green\n :\n String(value)\n \n case DdbType.date:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n date2str(value as number).green\n :\n date2str(value as number)\n \n case DdbType.month:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n month2str(value as number).green\n :\n month2str(value as number)\n \n case DdbType.time:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n time2str(value as number).green\n :\n time2str(value as number)\n \n case DdbType.minute:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n minute2str(value as number).green\n :\n minute2str(value as number)\n \n case DdbType.second:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n second2str(value as number).green\n :\n second2str(value as number)\n \n case DdbType.datetime:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n datetime2str(value as number).green\n :\n datetime2str(value as number)\n \n case DdbType.timestamp:\n return (value === null || value === nulls.int64) ?\n 'null'\n :\n options.colors ?\n timestamp2str(value as bigint).green\n :\n timestamp2str(value as bigint)\n \n case DdbType.nanotime:\n return (value === null || value === nulls.int64) ?\n 'null'\n :\n options.colors ?\n nanotime2str(value as bigint).green\n :\n nanotime2str(value as bigint)\n \n case DdbType.nanotimestamp:\n return (value === null || value === nulls.int64) ?\n 'null'\n :\n options.colors ?\n nanotimestamp2str(value as bigint).green\n :\n nanotimestamp2str(value as bigint)\n \n case DdbType.float:\n return (value === null || value === nulls.float32) ?\n 'null'\n :\n inspect(value as number, options)\n \n case DdbType.double:\n return (value === null || value === nulls.double) ?\n 'null'\n :\n inspect(value as number, options)\n \n case DdbType.symbol:\n case DdbType.string:\n return inspect(value as string, options)\n \n case DdbType.uuid: \n return options.colors ?\n uuid2str(value as Uint8Array, le).green\n :\n uuid2str(value as Uint8Array, le)\n \n case DdbType.functiondef:\n return inspect(\n (value as DdbFunctionDefValue).name,\n options\n )\n \n case DdbType.handle:\n case DdbType.code:\n return inspect(value as string, options)\n \n case DdbType.datehour:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n datehour2str(value as number).green\n :\n datehour2str(value as number)\n \n case DdbType.ipaddr:\n return options.colors ?\n ipaddr2str(value as Uint8Array, le).green\n :\n ipaddr2str(value as Uint8Array, le)\n \n case DdbType.int128:\n return options.colors ?\n int1282str(value as Uint8Array, le).green\n :\n int1282str(value as Uint8Array, le)\n \n case DdbType.blob:\n return inspect(\n (value as Uint8Array).length > 100 ?\n DdbObj.dec.decode(\n (value as Uint8Array).subarray(0, 98)\n ) + '…'\n :\n DdbObj.dec.decode(value as Uint8Array),\n options\n )\n \n case DdbType.point: {\n let [x, y] = value as [number, number]\n if (x === nulls.double)\n x = null\n if (y === nulls.double)\n y = null\n \n return options.colors ?\n `(${String(x).green}, ${String(y).green})`\n :\n `(${String(x)}, ${String(y)})`\n }\n \n case DdbType.complex: {\n let [x, y] = value as [number, number]\n if (x === nulls.double)\n x = null\n if (y === nulls.double)\n y = null\n \n return options.colors ?\n `${String(x).green}+${`${String(y)}i`.green}`\n :\n `${String(x)}+${String(y)}i`\n }\n \n case DdbType.duration: {\n const { data, unit } = value as DdbDurationValue\n const str = `${data}${DdbDurationUnit[unit]}`\n return options.colors ? str.green : str\n }\n \n default:\n return inspect(value, options)\n }\n}\n\n\nexport class DdbVoid extends DdbObj<undefined> {\n constructor () {\n super({\n form: DdbForm.scalar,\n type: DdbType.void,\n value: null,\n })\n }\n}\n\n\nexport class DdbBool extends DdbObj<boolean> {\n constructor (value: boolean | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.bool,\n value,\n })\n }\n}\n\nexport class DdbChar extends DdbObj<string> {\n constructor (value: string | number | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.char,\n value: typeof value === 'string' ?\n value.charCodeAt(0)\n :\n value\n })\n }\n}\n\nexport class DdbInt extends DdbObj<number> {\n constructor (value: number | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.int,\n value,\n })\n }\n}\n\nexport class DdbString extends DdbObj<string> {\n constructor (value: string) {\n super({\n form: DdbForm.scalar,\n type: DdbType.string,\n value\n })\n }\n}\n\nexport class DdbLong extends DdbObj<bigint> {\n constructor (value: bigint | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.long,\n value\n })\n }\n}\n\nexport class DdbDouble extends DdbObj<number> {\n constructor (value: number | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.double,\n value\n })\n }\n}\n\nexport class DdbDateTime extends DdbObj<number> {\n constructor (value: number | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.datetime,\n value\n })\n }\n}\n\nexport class DdbTimeStamp extends DdbObj<bigint> {\n constructor (value: bigint | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.timestamp,\n value\n })\n }\n}\n\nexport class DdbNanoTimeStamp extends DdbObj<bigint> {\n constructor (value: bigint | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.nanotimestamp,\n value\n })\n }\n}\n\nexport class DdbPair extends DdbObj<Int32Array> {\n constructor (l: number | null, r: number | null = null) {\n super({\n form: DdbForm.pair,\n type: DdbType.int,\n rows: 2,\n cols: 1,\n value: Int32Array.of(\n l === null ? nulls.int32 : l,\n r === null ? nulls.int32 : r,\n )\n })\n }\n}\n\nexport class DdbFunction extends DdbObj<DdbFunctionDefValue> {\n constructor (name: string, type: DdbFunctionType) {\n super({\n form: DdbForm.scalar,\n type: DdbType.functiondef,\n value: { type, name }\n })\n }\n}\n\n\nexport class DdbVectorInt extends DdbObj<Int32Array> {\n constructor (ints: (number | null)[] | Int32Array, name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.int,\n rows: ints.length,\n cols: 1,\n value: ints instanceof Int32Array ?\n ints\n :\n Int32Array.from(ints, v => \n v === null ?\n nulls.int32\n :\n v\n ),\n name,\n })\n }\n}\n\nexport class DdbVectorDouble extends DdbObj<Float64Array> {\n constructor (doubles: (number | null)[] | Float64Array, name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.double,\n rows: doubles.length,\n cols: 1,\n value: doubles instanceof Float64Array ?\n doubles\n :\n Float64Array.from(doubles, v => \n v === null ?\n nulls.double\n :\n v\n ),\n name,\n })\n }\n}\n\nexport class DdbVectorString extends DdbObj<string[]> {\n constructor (strings: string[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.string,\n rows: strings.length,\n cols: 1,\n value: strings,\n name,\n })\n }\n}\n\nexport class DdbVectorAny extends DdbObj {\n constructor (objs: (DdbObj | string | boolean)[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.any,\n rows: objs.length,\n cols: 1,\n value: DdbObj.to_ddbobjs(objs),\n name,\n })\n }\n}\n\nexport class DdbVectorSymbol extends DdbObj <DdbSymbolExtendedValue> {\n constructor (strings: string[], name?: string) {\n let map = new Map<string, number>([\n ['', 0]\n ])\n \n let data = new Uint32Array(strings.length)\n \n for (let i = 0; i < strings.length; i++) {\n const x = strings[i]\n \n let index = map.get(x)\n \n if (index === undefined) {\n index = map.size\n map.set(x, index)\n }\n \n data[i] = index\n }\n \n super({\n form: DdbForm.vector,\n type: DdbType.symbol_extended,\n rows: strings.length,\n cols: 1,\n value: {\n base: [...map.keys()],\n base_id: null,\n data,\n },\n name\n })\n }\n}\n\nexport class DdbSetInt extends DdbObj<Int32Array> {\n constructor (ints: (number | null)[] | Set<number> | Int32Array) {\n super({\n form: DdbForm.set,\n type: DdbType.int,\n rows: ints instanceof Set ? \n ints.size\n :\n ints.length,\n cols: 1,\n value: ints instanceof Int32Array ?\n ints\n :\n Int32Array.from(ints, v => \n v === null ?\n nulls.int32\n :\n v\n ),\n })\n }\n}\n\nexport class DdbSetDouble extends DdbObj<Float64Array> {\n constructor (doubles: (number | null)[] | Set<number> | Float64Array) {\n super({\n form: DdbForm.set,\n type: DdbType.double,\n rows: doubles instanceof Set ? \n doubles.size\n :\n doubles.length,\n cols: 1,\n value: doubles instanceof Int32Array ?\n doubles\n :\n Int32Array.from(doubles, v => \n v === null ?\n nulls.int32\n :\n v\n ),\n })\n }\n}\n\nexport class DdbSetString extends DdbObj<string[]> {\n constructor (strings: string[] | Set<string>) {\n if (strings instanceof Set)\n strings = [...strings]\n \n super({\n form: DdbForm.set,\n type: DdbType.string,\n rows: strings.length,\n cols: 1,\n value: strings\n })\n }\n}\n\n/** Constructs a DdbDict object, which supports two usages: \n - The incoming type is the keys of DdbObj<DdbVectorValue>, and the two parameters of values directly form the DdbDict of dict<keys.type, values.type>\n - Pass in js object (type is Record<string, boolean | string | DdbObj>), automatically converted to DdbDict of dict<string, any>\n*/\nexport class DdbDict extends DdbObj<DdbDictValue> {\n constructor (obj: Record<string, boolean | string | DdbObj>)\n constructor (keys: DdbObj<DdbVectorValue>, values: DdbObj<DdbVectorValue>)\n constructor (arg0: DdbObj | Record<string, boolean | string | DdbObj>, arg1?: DdbObj) {\n if (arg1)\n super({\n form: DdbForm.dict,\n type: arg1.type,\n rows: (arg0 as DdbObj).rows,\n cols: 2,\n value: [arg0 as DdbObj, arg1] as DdbDictValue\n })\n else {\n const keys = Object.keys(arg0)\n super({\n form: DdbForm.dict,\n type: DdbType.any,\n rows: keys.length,\n cols: 2,\n value: [\n new DdbVectorString(keys),\n new DdbVectorAny(\n Object.values(arg0)\n )\n ] as DdbDictValue\n })\n }\n }\n}\n\n\nexport class DdbTable extends DdbObj<DdbObj[]> {\n constructor (columns: DdbObj[], name: string = '') {\n super({\n form: DdbForm.table,\n type: DdbType.void,\n rows: columns[0].rows,\n cols: columns.length,\n name,\n value: columns,\n })\n }\n}\n\nexport function date2ms (date: number | null) {\n return (date === null || date === nulls.int32) ? \n null\n :\n timezone_offset + 1000 * 3600 * 24 * date\n}\n\nexport function date2str (date: number | null, format = 'YYYY.MM.DD') {\n return (date === null || date === nulls.int32) ? \n null\n :\n dayjs(\n date2ms(date)\n ).format(format)\n}\n\nexport function month2ms (month: number | null): number | null {\n return (month === null || month === nulls.int32) ?\n null\n :\n dayjs(\n month2str(month),\n 'YYYY.MM[M]'\n ).valueOf()\n}\n\nexport function month2str (month: number | null) {\n if (month === null || month === nulls.int32)\n return 'null'\n \n if (month < 0)\n return String(month)\n \n const _month = month % 12\n const year = Math.trunc(month / 12)\n return `${String(year).padStart(4, '0')}.${String(_month + 1).padStart(2, '0')}M`\n}\n\nexport function time2ms (time: number | null): number | null {\n return (time === null || time === nulls.int32) ?\n null\n :\n timezone_offset + time\n}\n\nexport function time2str (time: number | null, format = 'HH:mm:ss.SSS') {\n return (time === null || time === nulls.int32) ?\n null\n :\n dayjs(\n time2ms(time)\n ).format(format)\n}\n\nexport function minute2ms (minute: number | null): number | null {\n return (minute === null || minute === nulls.int32) ?\n null\n :\n timezone_offset + 60 * 1000 * minute\n}\n\nexport function minute2str (minute: number | null, format = 'HH:mm[m]') {\n return (minute === null || minute === nulls.int32) ?\n 'null'\n :\n dayjs(\n minute2ms(minute)\n ).format(format)\n}\n\nexport function second2ms (second: number | null): number | null {\n return (second === null || second === nulls.int32) ?\n null\n :\n timezone_offset + 1000 * second\n}\n\nexport function second2str (second: number | null, format = 'HH:mm:ss') {\n return (second === null || second === nulls.int32) ?\n 'null'\n :\n dayjs(\n second2ms(second)\n ).format(format)\n}\n\nexport function datetime2ms (datetime: number | null): number | null {\n return (datetime === null || datetime === nulls.int32) ?\n null\n :\n timezone_offset + 1000 * datetime\n}\n\nexport function datetime2str (datetime: number | null, format = 'YYYY.MM.DD HH:mm:ss') {\n return (datetime === null || datetime === nulls.int32) ?\n 'null'\n :\n dayjs(\n datetime2ms(datetime)\n ).format(format)\n}\n\nexport function timestamp2ms (timestamp: bigint | null): number | null {\n return (timestamp === null || timestamp === nulls.int64) ?\n null\n :\n timezone_offset + Number(timestamp)\n}\n\n/** format timestamp (bigint) to string \n - timestamp: bigint value\n - format?: \n format string, default to `YYYY.MM.DD HH:mm:ss.SSS` \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function timestamp2str (timestamp: bigint | null, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n return (timestamp === null || timestamp === nulls.int64) ?\n 'null'\n :\n dayjs(\n timestamp2ms(timestamp)\n ).format(format)\n}\n\nexport function datehour2ms (datehour: number | null): number | null {\n return (datehour === null || datehour === nulls.int32) ?\n null\n :\n timezone_offset + 1000 * 3600 * datehour\n}\n\nexport function datehour2str (datehour: number | null, format = 'YYYY.MM.DDTHH') {\n return (datehour === null || datehour === nulls.int32) ?\n 'null'\n :\n dayjs(\n timezone_offset + 1000 * 3600 * datehour\n ).format(format)\n}\n\n\n/** parse timestamp string to bigint value \n - str: timestamp string, If it is an empty string or 'null', it will return the corresponding empty value (nulls.int64)\n - format?: \n The format string corresponding to the incoming string, the default is `YYYY.MM.DD HH:mm:ss.SSS` \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function str2timestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n if (!str || str === 'null')\n return nulls.int64\n \n if (str.length !== format.length)\n throw new Error('The length of the timestamp string is not equal to the length of the format string')\n \n return BigInt(\n -timezone_offset +\n dayjs(str, format).valueOf()\n )\n}\n\nexport function nanotime2ns (nanotime: bigint | null): bigint | null {\n return nanotimestamp2ns(nanotime)\n}\n\nexport function nanotime2str (nanotime: bigint | null, format = 'HH:mm:ss.SSSSSSSSS') {\n if (nanotime === null || nanotime === nulls.int64)\n return 'null'\n \n if (nanotime < 0n)\n return String(nanotime)\n \n const i_second_start = format.indexOf('ss')\n if (i_second_start === -1)\n throw new Error('The format string must contain the format for seconds (ss)')\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n if (i_nanosecond_start === -1)\n throw new Error('The format string must contain the format for nanoseconds (SSSSSSSSS)')\n \n return (\n dayjs(\n timezone_offset + (Number(nanotime) / 1000000)\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(nanotime % 1000000000n).padStart(9, '0')\n )\n}\n\nexport function nanotimestamp2ns (nanotimestamp: bigint | null): bigint | null {\n return (nanotimestamp === null || nanotimestamp === nulls.int64) ?\n null\n :\n BigInt(timezone_offset) * 1000000n + nanotimestamp\n}\n\n/** format nanotimestamp value (bigint) to string \n - nanotimestamp: bigint value\n - format?: \n format string, default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n Seconds are in the format ss (must be included); nanoseconds are in the format SSSSSSSSS (must be included) \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function nanotimestamp2str (nanotimestamp: bigint | null, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n // tests:\n // nanotimestamp2str(0n)\n // nanotimestamp2str(-1n)\n // nanotimestamp2str(-9_9999_9999n)\n // nanotimestamp2str(-10_0000_0000n)\n // nanotimestamp2str(-10_0000_0001n)\n \n if (nanotimestamp === null || nanotimestamp === nulls.int64)\n return 'null'\n \n const i_second_start = format.indexOf('ss')\n if (i_second_start === -1)\n throw new Error('The format string must contain the format for seconds (ss)')\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n if (i_nanosecond_start === -1)\n throw new Error('The format string must contain the format for nanoseconds (SSSSSSSSS)')\n \n const remainder = nanotimestamp % 1000000000n\n const borrow = remainder < 0n\n \n return (\n dayjs(\n timezone_offset +\n // 去掉 9 位的纳秒部分,转化为毫秒\n Number(\n (nanotimestamp - remainder + (borrow ? -1000000000n : 0n)) / 1000000n\n )\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(\n borrow ?\n (remainder + 1000000000n) % 1000000000n\n :\n remainder\n ).padStart(9, '0')\n )\n}\n\n/** parse nano timestamp string to bigint value \n - str: nano timestamp string, If it is an empty string or 'null', it will return the corresponding empty value (nulls.int64)\n - format?: \n The format string corresponding to the incoming string, the default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n Seconds are in the format ss (must be included); nanoseconds are in the format SSSSSSSSS (must be included) \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function str2nanotimestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n if (!str || str === 'null')\n return nulls.int64\n \n if (str.length !== format.length)\n throw new Error('nanotimestamp string length is not equal to format string length')\n \n const i_second_start = format.indexOf('ss')\n if (i_second_start === -1)\n throw new Error('The format string must contain the format for seconds (ss)')\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n if (i_nanosecond_start === -1)\n throw new Error('Format string must contain nanosecond format (SSSSSSSSS)')\n \n return (\n BigInt(\n -timezone_offset +\n dayjs(\n str.slice(0, i_second_end),\n format.slice(0, i_second_end)\n ).valueOf()\n ) * 1000000n\n +\n BigInt(\n str.slice(i_nanosecond_start, i_nanosecond_start + 9)\n )\n )\n}\n\n\nexport function ipaddr2str (buffer: Uint8Array, le = true, ipv6?: boolean) {\n let buf = buffer\n \n if (le)\n buf = buffer.slice().reverse()\n \n const i_non_zero = buf.findIndex(x => \n x as any)\n \n if (\n ipv6 || \n i_non_zero !== -1 && i_non_zero < 12\n ) // ipv6\n return buf2ipaddr([...buf]).toString()\n else // ipv4\n return buf.subarray(12).join('.')\n}\n\nexport function uuid2str (buffer: Uint8Array, le = true) {\n const str = int1282str(buffer, le)\n return `${str.slice(0, 8)}-${str.slice(8, 12)}-${str.slice(12, 16)}-${str.slice(16, 20)}-${str.slice(20)}`\n}\n\nexport function int1282str (buffer: Uint8Array, le = true) {\n let buf = buffer\n \n if (le)\n buf = buffer.slice().reverse()\n \n return [...buf].map(x => \n x.toString(16)\n .padStart(2, '0')\n ).join('')\n}\n\nexport class DDB {\n /** 当前的 session id (http 或 tcp) */\n sid = '0'\n \n /** utf-8 text decoder */\n dec = new TextDecoder('utf-8')\n \n enc = new TextEncoder()\n \n \n /** DolphinDB WebSocket URL\n e.g. `ws://127.0.0.1:8848/`, `wss://dolphindb.com`\n */\n url: string\n \n websocket = null as WebSocket\n \n /** little endian (server) */\n le = true\n \n /** little endian (client) */\n static le_client = Boolean(\n new Uint8Array(\n Uint32Array.of(1).buffer\n )[0]\n )\n \n /** 是否在建立连接后自动登录,默认 true */\n autologin = true\n \n /** DolphinDB 登录用户名 */\n username = 'admin'\n \n /** DolphinDB 登录密码 */\n password = '123456'\n \n /** python session flag (2048) */\n python = false\n \n print_message_buffer = false\n \n print_object_buffer = false\n \n print_message = true\n \n parse_object = true\n \n /** DdbMessage listeners */\n listeners: DdbMessageListener[] = [ ]\n \n pconnect = Promise.resolve()\n \n presult = Promise.resolve(null)\n \n get connected () {\n return this.websocket?.readyState === WebSocket.OPEN\n }\n \n \n /**\n Initialize an instance of DolphinDB Client using the WebSocket URL \n (without establishing an actual network connection)\n - url: DolphinDB WebSocket URL. e.g.:`ws://127.0.0.1:8848`\n - options?:\n - autologin?: Whether to log in automatically after establishing a connection, default `true`\n - username?: DolphinDB username, default `'admin'`\n - password?: DolphinDB password, default `'123456'`\n - python?: set python session flag, default `false`\n \n @example\n let ddb = new DDB('ws://127.0.0.1:8848')\n \n // 使用 HTTPS 加密\n let ddbsecure = new DDB('wss://dolphindb.com', {\n autologin: true,\n username: 'admin',\n password: '123456',\n python: false\n })\n */\n constructor (url: string, options: {\n autologin?: boolean\n username?: string\n password?: string\n python?: boolean\n } = { }) {\n this.url = url\n \n if (options.autologin !== undefined)\n this.autologin = options.autologin\n \n if (options.username !== undefined)\n this.username = options.username\n \n if (options.password !== undefined)\n this.password = options.password\n \n if (options.python !== undefined)\n this.python = options.python\n }\n \n \n private on_message (event: { data: ArrayBuffer }) { }\n \n \n /** Establish the actual WebSocket connection to the DolphinDB corresponding to the URL\n - options?:\n - url?: DolphinDB WebSocket URL. By default, the WebSocket URL passed in when the instance is initialized is used\n - autologin?: Whether to log in automatically after establishing a connection, default `true`\n - username?: DolphinDB username, default `'admin'`\n - password?: DolphinDB password, default `'123456'`\n - python?: set python session flag, default `false`\n */\n async connect (options: {\n url?: string\n autologin?: boolean\n username?: string\n password?: string\n python?: boolean\n } = { }) {\n if (options.url !== undefined)\n this.url = options.url\n \n if (options.autologin !== undefined)\n this.autologin = options.autologin\n \n if (options.username !== undefined)\n this.username = options.username\n \n if (options.password !== undefined)\n this.password = options.password\n \n if (options.python !== undefined)\n this.python = options.python\n \n this.disconnect()\n \n await connect_websocket(this.url, {\n protocols: this.python ? ['python'] : [ ],\n \n on_open: async (event, websocket) => {\n this.websocket = websocket\n await this.rpc('connect', { })\n },\n \n on_message: event => {\n this.on_message(event)\n }\n })\n \n await this.eval(\n this.python ?\n 'def pnode_run (nodes, func_name, args, add_node_alias):\\n' +\n ' nargs = size(args)\\n' +\n ' func = funcByName(func_name)\\n' +\n ' \\n' +\n ' if not nargs:\\n' +\n ' return pnodeRun(func, nodes, add_node_alias)\\n' +\n ' \\n' +\n ' args_partial = [ ]\\n' +\n ' args_partial.append(func)\\n' +\n ' for a in args:\\n' +\n ' args_partial.append(a)\\n' +\n ' \\n' +\n ' return pnodeRun(\\n' +\n ' unifiedCall(partial, args_partial),\\n' +\n ' nodes,\\n' +\n ' add_node_alias\\n' +\n ' )\\n'\n :\n 'def pnode_run (nodes, func_name, args, add_node_alias = true) {\\n' +\n ' nargs = size(args)\\n' +\n ' func = funcByName(func_name)\\n' +\n ' \\n' +\n ' if (!nargs)\\n' +\n ' return pnodeRun(func, nodes, add_node_alias)\\n' +\n ' \\n' +\n ' args_partial = array(any, 1 + nargs, 1 + nargs)\\n' +\n ' args_partial[0] = func\\n' +\n ' args_partial[1:] = args\\n' +\n ' return pnodeRun(\\n' +\n ' unifiedCall(partial, args_partial),\\n' +\n ' nodes,\\n' +\n ' add_node_alias\\n' +\n ' )\\n' +\n '}\\n',\n { urgent: true }\n )\n \n if (this.autologin)\n if (this.python)\n await this.eval(`login(${this.username.quote('double')}, ${this.password.quote('double')})`, { urgent: true })\n else\n await this.call('login', [this.username, this.password], { urgent: true })\n }\n \n \n get_rpc_options ({\n urgent = false,\n secondary = false,\n async: _async = false,\n pickle = false,\n clear = false,\n api = false,\n compress = false,\n \n cancellable = true,\n priority = urgent ? 8 : 4,\n parallelism = 8,\n root_id = '',\n limit,\n }: {\n // --- flags ---\n urgent?: boolean\n \n /** API 提交的任务, secondary 必须为 false */\n secondary?: boolean\n \n /** 是否异步任务(不返回结果) */\n async?: boolean\n \n /** 让服务端以 pickle 协议返回数据 */\n pickle?: boolean\n \n /** 本次任务完成后 clear session memory */\n clear?: boolean\n \n /** 是否为 api client */\n api?: boolean\n \n compress?: boolean\n \n // --- flags end ---\n \n /** 任务是否可以取消 */\n cancellable?: boolean\n \n priority?: number\n \n /** `8` 0 ~ 64, 指定本任务并行度 */\n parallelism?: number\n \n /** 根任务编号,内部使用,API中固定为空 */\n root_id?: string\n \n /** 指定分块返回的块大小 */\n limit?: boolean\n } = { }) {\n let flag = 0\n if (urgent)\n flag += 1\n if (secondary)\n flag += 2\n if (_async)\n flag += 4\n if (pickle)\n flag += 8\n if (clear)\n flag += 16\n if (api)\n flag += 32\n if (compress)\n flag += 64\n \n // python session\n if (this.python)\n flag += 2048\n \n const options = [\n flag,\n cancellable ? 1 : 0,\n priority,\n parallelism,\n ... limit ? [\n root_id,\n limit,\n ] : [ ],\n ]\n \n return options.join('_')\n }\n \n \n disconnect () {\n if (this.connected)\n this.websocket.close(1000)\n this.on_message = () => { }\n this.presult = Promise.resolve(null)\n this.pconnect = Promise.resolve()\n }\n \n \n /** rpc through websocket (function/script/variable command) \n - type: API 类型: 'script' | 'function' | 'variable'\n - options:\n - urgent?: 决定 `行为标识` 那一行字符串的取值(只适用于 script 和 function)\n - vars?: type === 'variable' 时必传,variable 指令中待上传的变量名\n - listener?: 处理本次 rpc 期间的消息 (DdbMessage)\n - parse_object?: 在本次 rpc 期间设置 parse_object, 结束后恢复原有 \n 为 false 时返回的 DdbObj 仅含有 buffer 和 le,不做解析,以便后续转发、序列化\n */\n async rpc <T extends DdbObj = DdbObj> (\n type: 'script' | 'function' | 'variable' | 'connect',\n {\n script,\n func,\n args = [ ],\n vars = [ ],\n urgent,\n listener,\n parse_object,\n }: {\n script?: string\n func?: string\n args?: (DdbObj | string | boolean)[]\n vars?: string[]\n urgent?: boolean\n listener?: DdbMessageListener\n parse_object?: boolean\n }) {\n if (!this.websocket) {\n const ptail = this.pconnect\n \n let resolve: () => void\n this.pconnect = new Promise<void>((_resolve, _reject) => {\n resolve = _resolve\n })\n \n await ptail\n \n try {\n if (!this.websocket)\n await this.connect()\n } finally {\n resolve()\n }\n }\n \n \n if (!this.connected)\n throw new Error(`${this.url} is already disconnected`)\n \n // this 上的当前配置需要在 message 到达后使用,先保存起来\n const _handlers = [...this.listeners].reverse()\n \n \n // 临界区:保证多个 rpc 并发时形成 promise 链\n // ddb 世界观:需要等待上一个 rpc 结果从 server 返回之后才能发起下一个调用 \n // 违反世界观可能造成: \n // 1. 并发多个请求只返回第一个结果(阻塞,需后续请求疏通)\n // 2. windows 下 ddb server 返回多个相同的结果\n \n const ptail = this.presult\n \n let resolve: (ddbobj: T) => void\n let reject: (error: Error) => void\n const presult = this.presult = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n \n try {\n await ptail\n } catch { }\n // 临界区结束,只有一个 rpc 函数调用运行到这里,可以独占 this.on_message 然后写 WebSocket\n \n \n this.on_message = ({ data: buffer }) => {\n try {\n const buf = new Uint8Array(buffer)\n \n if (this.print_message_buffer)\n console.log(\n typed_array_to_buffer(buf)\n )\n \n const message = this.parse_message(buf, parse_object)\n \n listener?.(message, this)\n for (const listener of _handlers)\n listener(message, this)\n \n const { type, data } = message\n \n switch (type) {\n case 'print':\n if (this.print_message)\n console.log(data)\n return\n \n case 'object':\n resolve(data as T)\n return\n \n case 'error':\n reject(data)\n return\n }\n } catch (error) {\n reject(error)\n }\n }\n \n args = DdbObj.to_ddbobjs(args)\n \n const command = this.enc.encode(\n (() => {\n switch (type) {\n case 'function':\n return 'function\\n' +\n `${func}\\n` +\n `${args.length}\\n` +\n `${Number(DDB.le_client)}\\n`\n \n case 'script':\n return 'script\\n' +\n script\n \n case 'variable':\n return 'variable\\n' +\n `${vars.join(',')}\\n` +\n `${vars.length}\\n` +\n `${Number(DDB.le_client)}\\n`\n \n case 'connect':\n return 'connect\\n'\n }\n })()\n )\n \n this.websocket.send(\n concat([\n this.enc.encode(\n `API2 ${this.sid} ${command.length} / ${this.get_rpc_options({ urgent })}\\n`\n ),\n command,\n ... args.map((arg: DdbObj) =>\n arg.pack()\n )\n ])\n )\n \n return presult\n }\n \n \n /** eval script through websocket (script command) \n - script?: Script to execute\n - options?: execution options\n - urgent?: Urgent flag to ensure that submitted scripts are processed by urgent workers to prevent being blocked by other jobs\n - listener?: Process messages during this rpc (DdbMessage)\n - parse_object?: Set parse_object during this rpc, and restore the original after the end.\n When it is false, the returned DdbObj only contains buffer and le without parsing, \n so as to facilitate subsequent forwarding and serialization\n */\n async eval <T extends DdbObj> (\n script: string,\n {\n urgent,\n listener,\n parse_object,\n }: {\n urgent?: boolean\n listener?: DdbMessageListener\n parse_object?: boolean\n } = { }\n ) {\n return this.rpc<T>('script', { script, urgent, listener, parse_object })\n }\n \n \n /** call function through websocket (function command) \n - func: function name\n - args?: `[ ]` Call parameters (the incoming native string and boolean will be automatically converted to DdbObj<string> and DdbObj<boolean>)\n - options?: call options\n - urgent?: Emergency flag. Use urgent worker execution to prevent being blocked by other jobs\n - node?: When the node alias is set, it is sent to the corresponding node in the cluster for execution (using the rpc method in DolphinDB)\n - nodes?: When setting multiple node aliases, send them to the corresponding multiple nodes in the cluster for execution (using the pnodeRun method in DolphinDB)\n - func_type?: It must be passed when setting the node parameter, the function type needs to be specified, and it is not passed in other cases\n - add_node_alias?: Select to pass when setting the nodes parameter, otherwise not pass\n - listener?: Process messages during this rpc (DdbMessage)\n - parse_object?: Set parse_object during this rpc, and restore the original after the end.\n When it is false, the returned DdbObj only contains buffer and le without parsing, \n so as to facilitate subsequent forwarding and serialization\n */\n async call <T extends DdbObj> (\n func: string,\n args: (DdbObj | string | boolean)[] = [ ],\n {\n urgent,\n node,\n nodes,\n func_type,\n add_node_alias,\n listener,\n parse_object,\n }: {\n urgent?: boolean\n node?: string\n nodes?: string[]\n func_type?: DdbFunctionType\n add_node_alias?: boolean\n listener?: DdbMessageListener\n parse_object?: boolean\n } = { }\n ) {\n if (node) {\n if (typeof func_type === 'undefined')\n throw new Error('指定 node 时必须设置 func_type')\n \n args = [\n node,\n new DdbFunction(func, func_type),\n ...args\n ]\n func = 'rpc'\n }\n \n if (nodes) {\n args = [\n new DdbVectorString(nodes),\n func,\n new DdbVectorAny(args),\n ... (() => {\n if (typeof add_node_alias !== 'undefined')\n return [add_node_alias]\n \n if (this.python)\n return [true]\n \n return [ ]\n })()\n ]\n func = 'pnode_run'\n }\n \n return this.rpc<T>('function', {\n func,\n args,\n urgent,\n listener,\n parse_object\n })\n }\n \n \n /** upload variable through websocket (variable command) */\n async upload (\n /** Uploaded variables' name */\n vars: string[],\n \n /** Uploaded variables' value */\n args: (DdbObj | string | boolean)[],\n \n {\n listener,\n parse_object,\n }: {\n listener?: DdbMessageListener\n parse_object?: boolean\n } = { }\n ) {\n if (!args.length || args.length !== vars.length)\n throw new Error('variable command parameter is empty or parameter name is empty, or the number does not match')\n \n return this.rpc('variable', { vars, args, listener, parse_object })\n }\n \n \n /** 解析服务端响应报文,返回去掉 header 的 data buf */\n parse_message (buf: Uint8Array, parse_object = this.parse_object): DdbMessage {\n // MSG\\n\n // <message>\\0\n // 'M'.codePointAt(0).to_hex_str()\n if (buf[0] === 0x4d && buf[1] === 0x53 && buf[2] === 0x47 && buf[3] === 0x0a)\n return {\n type: 'print',\n data: \n this.dec.decode(\n buf.subarray(4)\n )\n }\n \n \n // '1166953221 1 1\\n'\n // 'OK\\n'\n // '\\x04\\x00\\x02\\x00\\x00\\x00'\n \n /** index of line feed 0 */\n const i_lf_0 = buf.indexOf(0x0a) // '\\n'\n \n const parts = this.dec.decode(\n buf.subarray(0, i_lf_0)\n ).split(' ')\n \n /** session id */\n const sid = parts[0]\n if (sid !== this.sid) {\n console.log(`session.id: ${this.sid} -> ${sid}`)\n this.sid = sid\n }\n \n /** 返回对象的数量 */\n const n_obj = Number(parts[1])\n \n /** 大小端: 协议中大端为 0, 小端为 1 */\n this.le = Number(parts[2]) !== 0\n \n const i_ls_1 = i_lf_0 + 1\n const i_lf_1 = buf.indexOf(0x0a, i_ls_1) // '\\n'\n /** 'OK' 表示成功,其它文本表示失败 */\n const message = this.dec.decode(\n buf.subarray(i_ls_1, i_lf_1)\n )\n \n if (message !== 'OK')\n return {\n type: 'error',\n data: new Error(message)\n }\n \n const buf_obj = buf.subarray(i_lf_1 + 1)\n \n if (this.print_object_buffer)\n console.log(\n typed_array_to_buffer(buf_obj)\n )\n \n return {\n type: 'object',\n data: parse_object ?\n DdbObj.parse(buf_obj, this.le)\n :\n new DdbObj({\n form: DdbForm.scalar,\n type: DdbType.void,\n length: 0,\n le: this.le,\n buffer: buf_obj,\n })\n }\n }\n}\n\n\nexport interface DdbMessageListener {\n (message: DdbMessage, _this: DDB): any\n}\n\n\nexport interface DdbPrintMessage {\n type: 'print'\n data: string\n}\n\nexport interface DdbObjectMessage {\n type: 'object'\n data: DdbObj\n}\n\nexport interface DdbErrorMessage {\n type: 'error',\n data: Error\n}\n\nexport type DdbMessage = DdbPrintMessage | DdbObjectMessage | DdbErrorMessage\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAE9B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,sBAAsB,MAAM,mCAAmC,CAAA;AACtE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAEpC,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAGxE,MAAM,CAAN,IAAY,OAeX;AAfD,WAAY,OAAO;IACf,yCAAU,CAAA;IACV,yCAAU,CAAA;IACV,qCAAQ,CAAA;IACR,yCAAU,CAAA;IACV,mCAAO,CAAA;IACP,qCAAQ,CAAA;IACR,uCAAS,CAAA;IACT,uCAAS,CAAA;IAET,qHAAqH;IACrH,uCAAS,CAAA;IAET,aAAa;IACb,yCAAU,CAAA;AACd,CAAC,EAfW,OAAO,GAAP,OAAO,KAAP,OAAO,QAelB;AAGD;;;EAGE;AACF,MAAM,CAAN,IAAY,OAuCX;AAvCD,WAAY,OAAO;IACf,qCAAQ,CAAA;IACR,qCAAQ,CAAA;IACR,qCAAQ,CAAA;IACR,uCAAS,CAAA;IACT,mCAAO,CAAA;IACP,qCAAQ,CAAA;IACR,qCAAQ,CAAA;IACR,uCAAS,CAAA;IACT,qCAAQ,CAAA;IACR,yCAAU,CAAA;IACV,0CAAW,CAAA;IACX,8CAAa,CAAA;IACb,gDAAc,CAAA;IACd,8CAAa,CAAA;IACb,wDAAkB,CAAA;IAClB,wCAAU,CAAA;IACV,0CAAW,CAAA;IACX,0CAAW,CAAA;IACX,0CAAW,CAAA;IACX,sCAAS,CAAA;IACT,oDAAgB,CAAA;IAChB,0CAAW,CAAA;IACX,sCAAS,CAAA;IACT,kDAAe,CAAA;IACf,8CAAa,CAAA;IACb,oCAAQ,CAAA;IACR,8CAAa,CAAA;IACb,sCAAS,CAAA;IACT,8CAAa,CAAA;IACb,0CAAW,CAAA;IACX,0CAAW,CAAA;IACX,sCAAS,CAAA;IACT,4CAAY,CAAA;IACZ,wCAAU,CAAA;IACV,8CAAa,CAAA;IACb,0CAAW,CAAA;IAEX,6DAAqB,CAAA;AACzB,CAAC,EAvCW,OAAO,GAAP,OAAO,KAAP,OAAO,QAuClB;AAED,MAAM,CAAN,IAAY,eAUX;AAVD,WAAY,eAAe;IACvB,iEAAc,CAAA;IACd,iEAAc,CAAA;IACd,qEAAgB,CAAA;IAChB,2EAAmB,CAAA;IACnB,mEAAe,CAAA;IACf,mEAAe,CAAA;IACf,uEAAiB,CAAA;IACjB,2DAAW,CAAA;IACX,yEAAkB,CAAA;AACtB,CAAC,EAVW,eAAe,GAAf,eAAe,KAAf,eAAe,QAU1B;AAED,MAAM,CAAN,IAAY,eAYX;AAZD,WAAY,eAAe;IACvB,iDAAM,CAAA;IACN,iDAAM,CAAA;IACN,iDAAM,CAAA;IACN,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,+CAAK,CAAA;IACL,gDAAM,CAAA;AACV,CAAC,EAZW,eAAe,GAAf,eAAe,KAAf,eAAe,QAY1B;AAmCD,MAAM,CAAN,IAAY,YAUX;AAVD,WAAY,YAAY;IACpB,+CAAQ,CAAA;IACR,6CAAO,CAAA;IACP,mDAAU,CAAA;IACV,yDAAa,CAAA;IACb,+CAAQ,CAAA;IACR,6CAAO,CAAA;IACP,qDAAW,CAAA;IACX,iDAAS,CAAA;IACT,iDAAS,CAAA;AACb,CAAC,EAVW,YAAY,GAAZ,YAAY,KAAZ,YAAY,QAUvB;AAuCD,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,IAAI,EAAE,CAAC,IAAI;IACX,KAAK,EAAE,CAAC,OAAO;IACf,KAAK,EAAE,CAAC,aAAa;IACrB,KAAK,EAAE,CAAC,mBAA0B;IAClC,OAAO,EAAE,CAAC,sBAAsB;IAEhC,wBAAwB;IACxB,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS;IAEzB,OAAO,EAAE,UAAU,CAAC,IAAI,CACpB,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB;CACK,CAAA;AAGV,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAA;AAGzE,iCAAiC;AACjC,MAAM,OAAO,MAAM;IACf,MAAM,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IAErC,MAAM,CAAC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAA;IAE9B;;MAEE;IACF,MAAM,CAAC,YAAY,GAA6B,EAAG,CAAA;IAEnD,6BAA6B;IAC7B,MAAM,CAAC,SAAS,GAAG,OAAO,CACtB,IAAI,UAAU,CACV,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAC3B,CAAC,CAAC,CAAC,CACP,CAAA;IAED,4BAA4B;IAC5B,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;IAErB,wFAAwF;IACxF,IAAI,CAAS;IAEb,wFAAwF;IACxF,IAAI,CAAS;IAEb,4BAA4B;IAC5B,MAAM,CAAQ;IAEd,+BAA+B;IAC/B,IAAI,CAAS;IAEb;;;;;;;;MAQE;IACF,IAAI,CAAS;IAEb,YAAY;IACZ,IAAI,CAAS;IAEb,0DAA0D;IAC1D,KAAK,CAAG;IAER,qEAAqE;IACrE,MAAM,CAAa;IAGnB,YAAa,IAA+F;QACxG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAGD,MAAM,CAAC,KAAK,CAAE,GAAe,EAAE,EAAW;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM;YACX,OAAO,IAAI,IAAI,CAAC;gBACZ,EAAE;gBACF,IAAI,EAAE,OAAO,CAAC,MAAM;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,IAAI;aACd,CAAC,CAAA;QAEN,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACnB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAEnB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;YACjB,OAAO,IAAI,IAAI,CAAC;gBACZ,EAAE;gBACF,IAAI;gBACJ,IAAI;gBACJ,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,IAAI;aACd,CAAC,CAAA;SACL;QAED,oDAAoD;QACpD,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAErC,QAAQ,IAAI,EAAE;YACV,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;gBAC7D,OAAO,IAAI,IAAI,CAAC;oBACZ,EAAE;oBACF,IAAI;oBACJ,IAAI;oBACJ,MAAM,EAAE,MAAM,GAAG,MAAM;oBACvB,KAAK;iBACR,CAAC,CAAA;aACL;YAED,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;gBACd,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;gBAClD,MAAM,CAAC,MAAM,IAAI,MAAM,CAAA;gBACvB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;gBAClB,OAAO,MAAM,CAAA;aAChB;YAGD,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChB,UAAU;gBACV,mBAAmB;gBACnB,kBAAkB;gBAClB,KAAK;gBAEL,WAAW;gBACX,qBAAqB;gBACrB,6CAA6C;gBAC7C,SAAS;gBACT,uBAAuB;gBAEvB,kCAAkC;gBAClC,6CAA6C;gBAC7C,2BAA2B;gBAE3B,SAAS;gBACT,2BAA2B;gBAC3B,2BAA2B;gBAE3B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,CAAA;gBAE5D,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAChC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CACxB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CACpC,CAAA;gBAED,MAAM,aAAa,GAAG,WAAW,GAAG,CAAC,CAAA;gBAErC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,kBAAkB,CACjD,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAChC,EAAE,EACF,OAAO,CAAC,MAAM,EACd,IAAI,CACe,CAAA;gBAEvB,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC3B,IAAI,OAAO,GAAG,aAAa,GAAG,SAAS,CAAA;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,IAAI,EAAG,CAAC,EAAE,EAAE;oBAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAY,CAAA;oBAEzC,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CACvB,QAAQ,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,EAC9B,EAAE,EACF,IAAI,CACP,CAAA;oBAED,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;oBAEf,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;oBAEtB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;oBAEd,OAAO,IAAI,GAAG,CAAC,MAAM,CAAA;iBACxB;gBAED,OAAO,IAAI,IAAI,CAAC;oBACZ,EAAE;oBACF,IAAI;oBACJ,IAAI;oBACJ,MAAM,EAAE,MAAM,GAAG,OAAO;oBACxB,IAAI;oBACJ,IAAI;oBACJ,IAAI;oBACJ,KAAK;iBACR,CAAC,CAAA;aACL;YAGD,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChB,wCAAwC;gBACxC,+CAA+C;gBAC/C,uDAAuD;gBACvD,qBAAqB;gBAErB,gDAAgD;gBAChD,2DAA2D;gBAC3D,yDAAyD;gBAEzD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CACxB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EACpB,EAAE,EACF,QAAQ,CAAC,CAAC,CAAC,CACd,CAAA;gBAED,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;gBAEhB,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAC1B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAClC,EAAE,EACF,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CACxB,CAAA;gBAED,MAAM,CAAC,MAAM,IAAI,CAAC,CAAA;gBAElB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;oBAChB,EAAE;oBACF,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,IAAI;oBACJ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;oBAC5C,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE;wBACH,IAAI;wBACJ,MAAM;qBACT;iBACJ,CAAC,CAAA;gBAEF,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI;oBACrB,OAAO,IAAI,CAAA;qBACV;oBACD,MAAM,EACF,SAAS,EAAE,IAAI,EACf,QAAQ,EACR,KAAK,EAAE,MAAM,EACb,MAAM,EACN,IAAI,EACJ,GAAI,MAAM,EACb,GAAG,IAAI,CAAC,OAAO,EAMZ,CAAA;oBAEJ,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;oBAE5C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAA;oBAEzB,IAAI,CAAC,KAAK,GAAG;wBACT,IAAI,EAAE,IAAI,CAAC,KAAK;wBAChB,QAAQ,EAAE,QAAQ,CAAC,KAAK;wBACxB,MAAM,EAAE;4BACJ,KAAK;4BACL,MAAM;4BACN,MAAM;yBACT;wBACD,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;4BACf,MAAM,EAAE,UAAU,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,CAAC,OAAO,CAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;4BAEvH,OAAO;gCACH,MAAM,EAAE;oCACJ,YAAY;oCACZ,GAAG,aAAa;iCACnB;6BACJ,CAAA;wBACL,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAG;wBACV,IAAI;wBACJ,GAAG,MAAM;qBACZ,CAAA;oBAED,OAAO,IAAI,CAAA;iBACd;aACJ;YAGD,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjB,WAAW;gBACX,gBAAgB;gBAChB,iBAAiB;gBACjB,yBAAyB;gBACzB,IAAI;gBAEJ,0CAA0C;gBAC1C,4DAA4D;gBAE5D,aAAa;gBACb,kCAAkC;gBAClC,6CAA6C;gBAC7C,oDAAoD;gBAEpD,aAAa;gBACb,qCAAqC;gBACrC,6CAA6C;gBAC7C,8BAA8B;gBAE9B,cAAc;gBACd,0CAA0C;gBAC1C,6CAA6C;gBAE7C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,CAAA;gBAE5D,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;gBAClD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;gBAElD,IAAI,UAAU,GAAkC,IAAI,CAAA;gBACpD,IAAI,UAAU,GAAkC,IAAI,CAAA;gBAEpD,IAAI,MAAM,GAAG,CAAC,CAAA;gBAEd,IAAI,cAAc,EAAE;oBAChB,UAAU,GAAG,IAAI,CAAC,YAAY,CAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAC7B,EAAE,EACF,QAAQ,CAAC,MAAM,CAAY,CAC9B,CAAA;oBACD,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;oBACtB,MAAM,IAAI,UAAU,CAAC,MAAM,CAAA;iBAC9B;gBAED,IAAI,cAAc,EAAE;oBAChB,UAAU,GAAG,IAAI,CAAC,YAAY,CAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAC7B,EAAE,EACF,QAAQ,CAAC,MAAM,CAAY,CAC9B,CAAA;oBACD,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;oBACtB,MAAM,IAAI,UAAU,CAAC,MAAM,CAAA;iBAC9B;gBAED,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI;oBACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;gBAEtD,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;gBACzC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;gBAEzC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAC7C,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,EAC9B,EAAE,EACF,IAAI,EACJ,IAAI,GAAG,IAAI,CAAE,aAAa;iBAC7B,CAAA;gBAED,MAAM,IAAI,EAAE,GAAG,SAAS,CAAA;gBAExB,OAAO,IAAI,IAAI,CAAC;oBACZ,EAAE;oBACF,IAAI;oBACJ,IAAI;oBACJ,MAAM,EAAE,MAAM,GAAG,MAAM;oBACvB,IAAI;oBACJ,IAAI;oBACJ,KAAK,EAAE;wBACH,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,UAAU;wBAChB,IAAI;qBACP;iBACJ,CAAC,CAAA;aACL;YAGD;gBACI,OAAO,IAAI,IAAI,CAAC;oBACZ,EAAE;oBACF,IAAI;oBACJ,IAAI;oBACJ,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM;oBAChC,KAAK,EAAE,QAAQ;iBAClB,CAAC,CAAA;SACT;IACL,CAAC;IAGD,MAAM,CAAC,YAAY,CAAE,GAAe,EAAE,EAAW,EAAE,IAAa;QAC5D,QAAQ,IAAI,EAAE;YACV,KAAK,OAAO,CAAC,IAAI;gBACb,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAGpB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBAC3B,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;aAC3D;YAGD,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBAC3B,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;aAClD;YAGD,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAChC,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;aACnD;YAGD,KAAK,OAAO,CAAC,GAAG,CAAC;YACjB,WAAW;YACX,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,KAAK,CAAC;YACnB,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,QAAQ,CAAC;YACtB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAChC,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;aACnD;YAGD,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAClC,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;aACrD;YAGD,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAClC,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;aACpD;YAGD,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,YAAY;YACZ,KAAK,OAAO,CAAC,SAAS,CAAC;YACvB,KAAK,OAAO,CAAC,QAAQ,CAAC;YACtB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBACnC,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;aACnD;YAGD,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,WAAW,CAAC;YAEzB,wCAAwC;YACxC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnB,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACnD,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;gBACnC,IAAI,KAAa,CAAA,CAAE,2BAA2B;gBAC9C,IAAI,MAAM,KAAK,CAAC,CAAC;oBACb,KAAK,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;;oBAE3B,KAAK,GAAG,MAAM,GAAG,CAAC,CAAA;gBACtB,sCAAsC;gBAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CACvB,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/B,CAAA;gBAED,OAAO;oBACH,KAAK;oBACL,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;wBAC1B;4BACI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAoB;4BAC/B,IAAI,EAAE,GAAG;yBACZ;wBACL,CAAC;4BACG,GAAG;iBACV,CAAA;aACJ;YAGD,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM;gBACf,OAAO;oBACH,EAAE;oBACF,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;iBACnB,CAAA;YAGL,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAElC,OAAO;oBACH,CAAC,GAAG,MAAM;oBACV,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;iBAC3B,CAAA;aACJ;YAGD,KAAK,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,OAAO;oBACH,EAAE;oBACF;wBACI,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC;wBACpB,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC;qBACH;iBACxB,CAAA;aACJ;YAGD,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,OAAO;oBACH,CAAC;oBACD;wBACI,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;wBACzB,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;qBACP;iBACxB,CAAA;aACJ;YAED;gBACI,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,CAAA;SAC1D;IACL,CAAC;IAGD;;MAEE;IACF,MAAM,CAAC,YAAY,CAAE,GAAe,EAAE,EAAW,EAAE,IAAa;QAC5D,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAEnD,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAEhC,IAAI,aAAa,GAAG,CAAC,CAAA;QAErB,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE;YAC1B,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAC9C,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC3B,EAAE,EACF,IAAI,EACJ,IAAI,CACP,CAAA;YAED,OAAO,IAAI,IAAI,CAAC;gBACZ,EAAE;gBACF,IAAI,EAAE,OAAO,CAAC,MAAM;gBACpB,IAAI;gBACJ,MAAM,EAAE,aAAa,GAAG,SAAS;gBACjC,IAAI,EAAE,CAAC;gBACP,IAAI;gBACJ,KAAK;aACR,CAAC,CAAA;SACL;QAGD,eAAe;QAEf,0BAA0B;QAC1B,sBAAsB;QACtB,0BAA0B;QAC1B,KAAK;QAEL,oDAAoD;QACpD,4DAA4D;QAE5D,UAAU;QACV,uBAAuB;QACvB,oBAAoB;QACpB,cAAc;QACd,kCAAkC;QAClC,6DAA6D;QAE7D,UAAU;QACV,uBAAuB;QACvB,oBAAoB;QACpB,cAAc;QACd,mDAAmD;QACnD,4DAA4D;QAE5D,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAEhC,IAAI,MAAM,GAA0B,EAAG,CAAA;QAEvC,IAAI,aAAa,GAAG,aAAa,CAAA;QAEjC,aAAa;QACb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,IAAI,GAAK;YAClC,4BAA4B;YAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YAE5C,uBAAuB;YACvB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;YAE3C,8BAA8B;YAC9B,IAAI,OAA+C,CAAA;YAEnD,MAAM,eAAe,GAAG,aAAa,GAAG,CAAC,CAAA;YACzC,MAAM,YAAY,GAAG,eAAe,GAAG,IAAI,GAAG,IAAI,CAAA;YAElD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CACzB,eAAe,EACf,YAAY,CACf,CAAA;YAED,QAAQ,IAAI,EAAE;gBACV,KAAK,CAAC;oBACF,OAAO,GAAG,WAAW,CAAA;oBACrB,MAAK;gBAET,KAAK,CAAC;oBACF,OAAO,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;oBAC7C,MAAK;gBAET,KAAK,CAAC;oBACF,OAAO,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;oBAC7C,MAAK;gBAET;oBACI,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAA;aAC1D;YAED,IAAI,YAAY,GAAG,CAAC,CAAA;YACpB,KAAK,MAAM,CAAC,IAAI,OAAO;gBACnB,YAAY,IAAI,CAAC,CAAA;YAErB,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAC7C,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC1B,EAAE,EACF,IAAI,GAAG,EAAE,EACT,YAAY,CACf,CAAA;YAED,MAAM,CAAC,IAAI,CAAC;gBACR,IAAI;gBACJ,IAAI;gBACJ,OAAO;gBACP,IAAI,EAAE,IAAyF;aAClG,CAAC,CAAA;YAEF,aAAa,GAAG,YAAY,GAAG,SAAS,CAAA;YAExC,KAAK,IAAI,IAAI,CAAA;SAChB;QAGD,OAAO,IAAI,IAAI,CAAC;YACZ,EAAE;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI;YACJ,MAAM,EAAE,aAAa;YACrB,IAAI;YACJ,IAAI;YACJ,KAAK,EAAE,MAAM;SAChB,CAAC,CAAA;IACN,CAAC;IAGD,+EAA+E;IAC/E,MAAM,CAAC,kBAAkB,CACrB,GAAe,EACf,EAAW,EACX,IAAa,EACb,MAAc;QAKd,QAAQ,IAAI,EAAE;YACV,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,IAAI;gBACb,OAAO;oBACH,MAAM;oBACN,IAAI,SAAS,CACT,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,GAAG,MAAM,CAC1B,CACJ;iBACJ,CAAA;YAEL,KAAK,OAAO,CAAC,KAAK;gBACd,OAAO;oBACH,CAAC,GAAG,MAAM;oBACV,IAAI,UAAU,CACV,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAC9B,CACJ;iBACJ,CAAA;YAGL,KAAK,OAAO,CAAC,GAAG,CAAC;YACjB,WAAW;YACX,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,KAAK,CAAC;YACnB,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,QAAQ,CAAC;YACtB,KAAK,OAAO,CAAC,QAAQ;gBACjB,OAAO;oBACH,CAAC,GAAG,MAAM;oBACV,IAAI,UAAU,CACV,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAC9B,CACJ;iBACJ,CAAA;YAGL,KAAK,OAAO,CAAC,KAAK;gBACd,OAAO;oBACH,CAAC,GAAG,MAAM;oBACV,IAAI,YAAY,CACZ,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAC9B,CACJ;iBACJ,CAAA;YAGL,KAAK,OAAO,CAAC,MAAM;gBACf,OAAO;oBACH,CAAC,GAAG,MAAM;oBACV,IAAI,YAAY,CACZ,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAC9B,CACJ;iBACJ,CAAA;YAGL,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,YAAY;YACZ,KAAK,OAAO,CAAC,SAAS,CAAC;YACvB,KAAK,OAAO,CAAC,QAAQ,CAAC;YACtB,KAAK,OAAO,CAAC,aAAa;gBACtB,OAAO;oBACH,CAAC,GAAG,MAAM;oBACV,IAAI,aAAa,CACb,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAC9B,CACJ;iBACJ,CAAA;YAGL,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,IAAI,KAAK,GAAG,IAAI,KAAK,CAAS,MAAM,CAAC,CAAA;gBACrC,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,MAAM,EAAG,CAAC,EAAE,EAAE;oBAC/B,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;oBAC/B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CACtB,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/B,CAAA;oBACD,MAAM,GAAG,MAAM,GAAG,CAAC,CAAA;iBACtB;gBACD,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;aACzB;YAGD,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC1B,sDAAsD;gBACtD,2CAA2C;gBAE3C,OAAO;gBACP,0CAA0C;gBAC1C,mCAAmC;gBACnC,0BAA0B;gBAC1B,+DAA+D;gBAE/D,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnE,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBACnC,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAErC,IAAI,WAAW,GAAG,CAAC,CAAA;gBACnB,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;gBAErC,mCAAmC;gBACnC,IAAI,SAAS,EAAE;oBACX,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CACzC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EACf,EAAE,EACF,OAAO,CAAC,MAAM,EACd,SAAS,CACU,CAAA;oBAEvB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;iBACpC;gBAED,MAAM,WAAW,GAAG,CAAC,GAAG,WAAW,CAAA;gBACnC,MAAM,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,CAAC,CAAA;gBAE1C,MAAM,IAAI,GAAG,IAAI,WAAW,CACxB,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,GAAG,WAAW,EAC5B,GAAG,CAAC,UAAU,GAAG,SAAS,CAC7B,CACJ,CAAA;gBAED,OAAO;oBACH,SAAS;oBACT;wBACI,OAAO;wBACP,IAAI;wBACJ,IAAI;qBACP;iBACJ,CAAA;aACJ;YAGD,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM;gBACf,OAAO;oBACH,EAAE,GAAG,MAAM;oBACX,IAAI,UAAU,CACV,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,CAC/B,CACJ;iBACJ,CAAA;YAGL,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,2CAA2C;gBAC3C,6CAA6C;gBAC7C,2BAA2B;gBAC3B,2BAA2B;gBAE3B,IAAI,KAAK,GAAG,IAAI,KAAK,CAAa,MAAM,CAAC,CAAA;gBACzC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnE,IAAI,MAAM,GAAG,CAAC,CAAA;gBACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,MAAM,EAAG,CAAC,EAAE,EAAE;oBAC/B,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;oBACvC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,CAAA;oBAC9B,MAAM,WAAW,GAAG,WAAW,GAAG,MAAM,CAAA;oBACxC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;oBAC9C,MAAM,GAAG,WAAW,CAAA;iBACvB;gBAED,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;aACzB;YAGD,KAAK,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,OAAO,CAAC,KAAK;gBACd,OAAO;oBACH,EAAE,GAAG,MAAM;oBACX,IAAI,YAAY,CACZ,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,CAC/B,CACJ;iBACJ,CAAA;YAGL,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;gBACd,qBAAqB;gBACrB,kBAAkB;gBAClB,oCAAoC;gBACpC,eAAe;gBACf,oCAAoC;gBACpC,eAAe;gBACf,qCAAqC;gBACrC,MAAM;gBACN,uCAAuC;gBACvC,gBAAgB;gBAGhB,IAAI,MAAM,GAAG,IAAI,KAAK,CAAS,MAAM,CAAC,CAAA;gBACtC,IAAI,MAAM,GAAG,CAAC,CAAA;gBACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,MAAM,EAAG,CAAC,EAAE,EAAE;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAClB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EACpB,EAAE,CACL,CAAA;oBACD,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;oBACf,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;iBACvB;gBAED,OAAO;oBACH,MAAM;oBACN,MAAM;iBACT,CAAA;aACJ;YAED,+CAA+C;YAC/C,+CAA+C;YAC/C,0CAA0C;YAC1C,6CAA6C;YAC7C,+CAA+C;YAC/C,2BAA2B;YAC3B,+GAA+G;YAG/G;gBACI,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;SACtB;IACL,CAAC;IAGD,IAAI;QACA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;QAElC,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QAChB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QAEhB,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;YACf,QAAQ,IAAI,EAAE;gBACV,KAAK,OAAO,CAAC,MAAM;oBACf,QAAQ,IAAI,EAAE;wBACV,KAAK,OAAO,CAAC,IAAI;4BACb,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;wBAE7B,KAAK,OAAO,CAAC,IAAI;4BACb,OAAO;gCACH,SAAS,CAAC,EAAE,CACR,KAAK,KAAK,IAAI,CAAC,CAAC;oCACZ,KAAK,CAAC,IAAI;oCACd,CAAC;wCACG,MAAM,CAAC,KAAK,CAAC,CACpB;6BACJ,CAAA;wBAGL,KAAK,OAAO,CAAC,IAAI;4BACb,OAAO;gCACH,SAAS,CAAC,EAAE,CACR,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;oCACb,KAAK,CAAC,IAAI;oCACd,CAAC;wCACG,KAAe,CAClB,CACJ;6BACJ,CAAA;wBAGL,KAAK,OAAO,CAAC,KAAK;4BACd,OAAO;gCACH,UAAU,CAAC,EAAE,CACT,KAAK,KAAK,IAAI,CAAC,CAAC;oCACZ,KAAK,CAAC,KAAK;oCACf,CAAC;wCACG,KAAe,CACtB;6BACJ,CAAA;wBAGL,KAAK,OAAO,CAAC,GAAG,CAAC;wBACjB,WAAW;wBACX,KAAK,OAAO,CAAC,IAAI,CAAC;wBAClB,KAAK,OAAO,CAAC,KAAK,CAAC;wBACnB,KAAK,OAAO,CAAC,IAAI,CAAC;wBAClB,KAAK,OAAO,CAAC,MAAM,CAAC;wBACpB,KAAK,OAAO,CAAC,MAAM,CAAC;wBACpB,KAAK,OAAO,CAAC,QAAQ,CAAC;wBACtB,KAAK,OAAO,CAAC,QAAQ;4BACjB,OAAO;gCACH,UAAU,CAAC,EAAE,CACT,KAAK,KAAK,IAAI,CAAC,CAAC;oCACZ,KAAK,CAAC,KAAK;oCACf,CAAC;wCACG,KAAe,CACtB;6BACJ,CAAA;wBAGL,KAAK,OAAO,CAAC,KAAK;4BACd,OAAO;gCACH,YAAY,CAAC,EAAE,CACX,KAAK,KAAK,IAAI,CAAC,CAAC;oCACZ,KAAK,CAAC,OAAO;oCACjB,CAAC;wCACG,KAAe,CACtB;6BACJ,CAAA;wBAGL,KAAK,OAAO,CAAC,MAAM;4BACf,OAAO;gCACH,YAAY,CAAC,EAAE,CACX,KAAK,KAAK,IAAI,CAAC,CAAC;oCACZ,KAAK,CAAC,MAAM;oCAChB,CAAC;wCACG,KAAe,CACtB;6BACJ,CAAA;wBAGL,KAAK,OAAO,CAAC,IAAI,CAAC;wBAClB,YAAY;wBACZ,KAAK,OAAO,CAAC,SAAS,CAAC;wBACvB,KAAK,OAAO,CAAC,QAAQ,CAAC;wBACtB,KAAK,OAAO,CAAC,aAAa;4BACtB,OAAO;gCACH,aAAa,CAAC,EAAE,CACZ,KAAK,KAAK,IAAI,CAAC,CAAC;oCACZ,KAAK,CAAC,KAAK;oCACf,CAAC;wCACG,KAAe,CACtB;6BACJ,CAAA;wBAGL,KAAK,OAAO,CAAC,MAAM,CAAC;wBACpB,KAAK,OAAO,CAAC,MAAM,CAAC;wBACpB,KAAK,OAAO,CAAC,IAAI,CAAC;wBAClB,KAAK,OAAO,CAAC,MAAM,CAAC;wBACpB,KAAK,OAAO,CAAC,QAAQ;4BACjB,OAAO;gCACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAe,CAAC;gCAClC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;6BACnB,CAAA;wBAEL,KAAK,OAAO,CAAC,WAAW;4BACpB,OAAO;gCACH,UAAU,CAAC,EAAE,CAAE,KAA6B,CAAC,IAAI,CAAC;gCAClD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAE,KAA6B,CAAC,IAAI,CAAC;gCACtD,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;6BACnB,CAAA;wBAEL,KAAK,OAAO,CAAC,IAAI,CAAC;wBAClB,KAAK,OAAO,CAAC,MAAM,CAAC;wBACpB,KAAK,OAAO,CAAC,MAAM;4BACf,OAAO,CAAC,IAAI,CAAC,KAAmB,CAAC,CAAA;wBAGrC,KAAK,OAAO,CAAC,IAAI;4BACb,OAAO;gCACH,WAAW,CAAC,EAAE,CACT,IAAI,CAAC,KAAoB,CAAC,UAAU,CACxC;gCACD,IAAI,CAAC,KAAmB;6BAC3B,CAAA;wBAGL,KAAK,OAAO,CAAC,OAAO,CAAC;wBACrB,KAAK,OAAO,CAAC,KAAK;4BACd,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC,CAAA;wBAG9D,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;4BACnB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAyB,CAAA;4BACrD,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;yBACrC;wBAED;4BACI,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,CAAA;qBAC3D;gBAGL,KAAK,OAAO,CAAC,MAAM,CAAC;gBACpB,KAAK,OAAO,CAAC,IAAI;oBACb,oBAAoB;oBACpB,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG;wBACnD,OAAO;4BACH,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;4BACpC,GAAK,IAAI,CAAC,KAA+B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gCACpD,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gCAC1B,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gCAC5B,KAAK,CAAC,OAAO;gCACb,KAAK,CAAC,IAAW;6BACpB,CAAC,CAAC,CAAC,IAAI,EAAE;yBACb,CAAA;oBAEL,OAAO;wBACH,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC5B,GAAI,MAAM,CAAC,gBAAgB,CAAC,KAAuB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;qBACxE,CAAA;gBAGL,KAAK,OAAO,CAAC,GAAG;oBACZ,OAAO;wBACH,IAAI,MAAM,CAAC;4BACP,GAAG,IAAI;4BACP,IAAI,EAAE,OAAO,CAAC,MAAM;yBACvB,CAAC,CAAC,IAAI,EAAE;qBACZ,CAAA;gBAGL,KAAK,OAAO,CAAC,KAAK;oBACd,OAAO;wBACH,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;wBACpC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;wBAElC,eAAe;wBACf,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;wBAChB,GAAG,MAAM,CAAC,gBAAgB,CACrB,IAAI,CAAC,KAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACpC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CACxB,EACD,OAAO,CAAC,MAAM,EACd,IAAI,CAAC,IAAI,CACZ;wBAED,iBAAiB;wBACjB,GAAI,IAAI,CAAC,KAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAClC,GAAG,CAAC,IAAI,EAAE,CACb;qBACJ,CAAA;gBAGL,KAAK,OAAO,CAAC,IAAI;oBACb,OAAO;wBACF,KAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBAChC,KAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;qBACpC,CAAA;gBAEL,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;oBAChB,MAAM,EACF,IAAI,EACJ,QAAQ,EACR,MAAM,EAAE,EACJ,KAAK,EACL,MAAM,EACN,MAAM,GACT,EACD,MAAM,EACN,IAAI,EACP,GAAG,IAAI,CAAC,KAAsB,CAAA;oBAE/B,MAAM,EACF,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EACxB,GAAG,IAAI,OAAO,CAAC;wBACZ,SAAS,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC;wBAC3B,QAAQ;wBACR,KAAK,EAAE,IAAI,eAAe,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;wBACnD,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;4BACf,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,CAAA;4BAEhD,OAAO;gCACH,MAAM,EAAE,IAAI,OAAO,CAAC;oCAChB,UAAU,EAAE,YAAY;oCACxB,GAAG,YAAY;iCAClB,CAAC;6BACL,CAAA;wBACL,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAG;wBACV,IAAI;qBACP,CAAC,CAAA;oBAEF,OAAO;wBACH,IAAI,CAAC,IAAI,EAAE;wBACX,MAAM,CAAC,IAAI,EAAE;qBAChB,CAAA;iBACJ;gBAED,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;oBACjB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAuB,CAAA;oBAEpD,OAAO;wBACH,UAAU,CAAC,EAAE,CACT,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAClC;wBACD,GAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAG;wBAC9B,GAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAG;wBAC9B,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;wBACnC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;wBACpC,GAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;qBACtE,CAAA;iBACJ;gBAED;oBACI,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;aAClD;QACL,CAAC,CAAC,EAAE,CAAA;QAGJ,IAAI,CAAC,IAAI;YACL,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;QAE5B,OAAO,MAAM,CAAC;YACV,MAAM;YACN,GAAG,IAAI;SACV,CAAC,CAAA;IACN,CAAC;IAGD,MAAM,CAAC,gBAAgB,CACnB,KAAqB,EACrB,IAAa,EACb,MAAc;QAEd,QAAQ,IAAI,EAAE;YACV,KAAK,OAAO,CAAC,IAAI;gBACb,OAAO,CAAC,KAAkB,CAAC,CAAA;YAG/B,KAAK,OAAO,CAAC,IAAI;gBACb,OAAO,CAAC,KAAkB,CAAC,CAAA;YAG/B,KAAK,OAAO,CAAC,KAAK;gBACd,OAAO,CAAC,KAAmB,CAAC,CAAA;YAGhC,KAAK,OAAO,CAAC,GAAG,CAAC;YACjB,WAAW;YACX,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,KAAK,CAAC;YACnB,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,QAAQ,CAAC;YACtB,KAAK,OAAO,CAAC,QAAQ;gBACjB,OAAO,CAAC,KAAmB,CAAC,CAAA;YAGhC,KAAK,OAAO,CAAC,KAAK;gBACd,OAAO,CAAC,KAAqB,CAAC,CAAA;YAGlC,KAAK,OAAO,CAAC,MAAM;gBACf,OAAO,CAAC,KAAqB,CAAC,CAAA;YAElC,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,YAAY;YACZ,KAAK,OAAO,CAAC,SAAS,CAAC;YACvB,KAAK,OAAO,CAAC,QAAQ,CAAC;YACtB,KAAK,OAAO,CAAC,aAAa;gBACtB,OAAO,CAAC,KAAsB,CAAC,CAAA;YAGnC,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,IAAI,IAAI,GAAG,IAAI,KAAK,CAAa,MAAM,GAAG,CAAC,CAAC,CAAA;gBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,MAAM,EAAG,CAAC,EAAE,EAAE;oBAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,KAAkB,CAAC,CAAC,CAAC,CAAC,CAAA;oBACrD,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;iBACrC;gBACD,OAAO,IAAI,CAAA;aACd;YAGD,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,MAAM;gBACf,OAAO,CAAC,KAAmB,CAAC,CAAA;YAGhC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,IAAI,IAAI,GAAG,IAAI,KAAK,CAAkB,MAAM,GAAG,CAAC,CAAC,CAAA;gBACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,MAAM,EAAG,CAAC,EAAE,EAAE;oBAC/B,MAAM,UAAU,GAAI,KAAsB,CAAC,CAAC,CAAC,CAAA;oBAC7C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;oBAC/C,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAA;iBAC/B;gBACD,OAAO,IAAI,CAAA;aACd;YAGD,KAAK,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,OAAO,CAAC,KAAK;gBACd,OAAO,CAAC,KAAqB,CAAC,CAAA;YAGlC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;gBACd,qBAAqB;gBACrB,kBAAkB;gBAClB,oCAAoC;gBACpC,eAAe;gBACf,oCAAoC;gBACpC,eAAe;gBACf,qCAAqC;gBACrC,MAAM;gBACN,uCAAuC;gBACvC,gBAAgB;gBAEhB,IAAI,IAAI,GAAG,IAAI,KAAK,CAAa,MAAM,CAAC,CAAA;gBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,MAAM,EAAG,CAAC,EAAE;oBAC7B,IAAI,CAAC,CAAC,CAAC,GAAI,KAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC3C,OAAO,IAAI,CAAA;aACd;YAGD,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC1B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAA+B,CAAA;gBAE/D,OAAO;oBACH,WAAW,CAAC,EAAE,CACV,OAAO,IAAI,CAAC,EACZ,IAAI,CAAC,MAAM,CACd;oBACD,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;oBAC3D,IAAI;iBACP,CAAA;aACJ;YAED;gBACI,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SACzD;IACL,CAAC;IAGD,CAAC,OAAO,CAAC,MAAM,CAAC,CAAE,KAAa,EAAE,OAAuB,EAAE,QAAQ;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAEhC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;YACf,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACf,KAAK,OAAO,CAAC,MAAM;oBACf,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;gBAE1D,KAAK,OAAO,CAAC,MAAM,CAAC;gBACpB,KAAK,OAAO,CAAC,IAAI,CAAC;gBAClB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;oBACd,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;oBAEtB,SAAS,YAAY,CAAE,KAAe,EAAE,QAAiB;wBACrD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;wBAE9D,OAAO,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;4BACtB,SAAS;4BACb,CAAC;gCACG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACvC,CAAC;oBAGD,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,EAAG,eAAe;wBACtD,uFAAuF;wBACvF,wCAAwC;wBACxC,0BAA0B;wBAC1B,sBAAsB;wBACtB,0BAA0B;wBAC1B,sBAAsB;wBACtB,wBAAwB;wBACxB,MAAM;wBACN,KAAK;wBACL,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;wBAE5B,MAAM,KAAK,GAAG,EAAE,CAAA;wBAEhB,IAAI,KAAK,GAAG,IAAI,KAAK,CACjB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAC7B,CAAA;wBAED,IAAI,OAAO,GAAG,CAAC,CAAA;wBAEf,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,KAA8B,EAAE;4BACjE,IAAI,OAAO,GAAG,CAAC,CAAA;4BAEf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gCAC1B,IAAI,MAAM,GAAG,IAAI,KAAK,CAClB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAC1B,CAAA;gCAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAG,CAAC,EAAE;oCACpC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;gCAElE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAC3B,MAAM,EACN,MAAM,GAAG,KAAK,CACjB,CAAA;gCAED,OAAO,IAAI,MAAM,CAAA;6BACpB;4BAED,IAAI,OAAO,IAAI,KAAK;gCAChB,MAAK;yBACZ;wBAED,OAAO,YAAY,CACf,KAAK,EACL,IAAI,CAAC,IAAI,GAAG,KAAK,CACpB,CAAA;qBACJ;oBAED,QAAQ,IAAI,CAAC,IAAI,EAAE;wBACf,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;4BAC1B,MAAM,KAAK,GAAG,EAAW,CAAA;4BAEzB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAA+B,CAAA;4BAE3D,IAAI,KAAK,GAAG,IAAI,KAAK,CACjB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAC/B,CAAA;4BAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAG,CAAC,EAAE;gCACnC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;4BAE9C,OAAO,YAAY,CACf,KAAK,EACL,IAAI,CAAC,MAAM,GAAG,KAAK,CACtB,CAAA;yBACJ;wBAED,KAAK,OAAO,CAAC,IAAI,CAAC;wBAClB,KAAK,OAAO,CAAC,MAAM,CAAC;wBACpB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;4BACjB,MAAM,KAAK,GAAG,EAAW,CAAA;4BAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAmB,CAAA;4BAEtC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAA;4BAElC,IAAI,KAAK,GAAG,IAAI,KAAK,CACjB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC5B,CAAA;4BAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAG,CAAC,EAAE;gCACnC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CACb,IAAI,CAAC,IAAI,EACT,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,EAAE,EACP,OAAO,CACV,CAAA;4BAEL,OAAO,YAAY,CACf,KAAK,EACL,QAAQ,GAAG,KAAK,CACnB,CAAA;yBACJ;wBAED,KAAK,OAAO,CAAC,OAAO,CAAC;wBACrB,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;4BAChB,MAAM,KAAK,GAAG,EAAW,CAAA;4BAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAqB,CAAA;4BAExC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;4BAEjC,IAAI,KAAK,GAAG,IAAI,KAAK,CACjB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC5B,CAAA;4BAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAG,CAAC,EAAE;gCACnC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CACb,IAAI,CAAC,IAAI,EACT,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAClC,IAAI,CAAC,EAAE,EACP,OAAO,CACV,CAAA;4BAEL,OAAO,YAAY,CACf,KAAK,EACL,QAAQ,GAAG,KAAK,CACnB,CAAA;yBACJ;wBAED,OAAO,CAAC,CAAC;4BACL,MAAM,KAAK,GAAG,EAAW,CAAA;4BAEzB,IAAI,KAAK,GAAG,IAAI,KAAK,CACjB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAG,IAAI,CAAC,KAAe,CAAC,MAAM,CAAC,CAChD,CAAA;4BAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAG,CAAC,EAAE;gCACnC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;4BAEjE,OAAO,YAAY,CACf,KAAK,EACJ,IAAI,CAAC,KAAe,CAAC,MAAM,GAAG,KAAK,CACvC,CAAA;yBACJ;qBACJ;iBAEJ;aACJ;YAED,IAAI,IAAI,CAAC,KAAK,YAAY,UAAU;gBAChC,OAAO,OAAO,CACV,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EACjC,OAAO,CACV,CAAA;YAEL,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC,CAAC,EAAE,CAAA;QAEJ,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAG,GAAG,IAAI,GAAG,CAAA;IAClH,CAAC;IAGD,YAAY;QACR,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,OAAO,CAAC,MAAM;gBACf,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW;oBACjC,OAAO,eAAe,eAAe,CAAE,IAAI,CAAC,KAA6B,CAAC,IAAI,CAAC,GAAG,CAAA;gBAEtF,OAAO,KAAK,CAAA;YAEhB,KAAK,OAAO,CAAC,MAAM;gBACf,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG;oBAClC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAA;gBACvD,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,GAAG,CAAA;YAEnC,KAAK,OAAO,CAAC,IAAI;gBACb,OAAO,QAAQ,KAAK,GAAG,CAAA;YAE3B,KAAK,OAAO,CAAC,GAAG;gBACZ,OAAO,OAAO,KAAK,KAAK,IAAI,CAAC,IAAI,GAAG,CAAA;YAExC,KAAK,OAAO,CAAC,KAAK;gBACd,OAAO,SAAS,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,CAAA;YAEhD,KAAK,OAAO,CAAC,IAAI;gBACb,OAAO,QAAQ,OAAO,CAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAY,CAAC,IAAI,CAAC,KAAK,OAAO,CAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAY,CAAC,IAAI,CAAC,GAAG,CAAA;YAEzG,KAAK,OAAO,CAAC,KAAK;gBACd,OAAO,SAAS,YAAY,CAAE,IAAI,CAAC,KAAuB,CAAC,IAAI,CAAC,GAAG,CAAA;YAEvE,KAAK,OAAO,CAAC,MAAM;gBACf,OAAO,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,CAAA;YAE3D;gBACI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAA;SAC9C;IACL,CAAC;IAGD,uCAAuC;IACvC,MAAM,CAAC,SAAS,CAAE,KAAgC;QAC9C,IAAI,KAAK,IAAI,KAAK,YAAY,MAAM;YAChC,OAAO,KAAK,CAAA;QAEhB,MAAM,IAAI,GAAG,OAAO,KAAK,CAAA;QAEzB,QAAQ,IAAI,EAAE;YACV,KAAK,QAAQ;gBACT,OAAO,IAAI,SAAS,CAAC,KAAe,CAAC,CAAA;YAEzC,KAAK,SAAS;gBACV,OAAO,IAAI,OAAO,CAAC,KAAgB,CAAC,CAAA;YAExC;gBACI,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,YAAY,CAAC,CAAA;SACxE;IACL,CAAC;IAGD,yBAAyB;IACzB,MAAM,CAAC,UAAU,CAAE,MAAa;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACtB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACxB,CAAA;IACL,CAAC;IAGD,OAAO;QACH,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK;YAC3B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QAErE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAG,CAAC,EAAE,EAAE;YAClC,IAAI,GAAG,GAAQ,EAAG,CAAA;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAG,CAAC,EAAE,EAAE;gBAClC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE,SAAS;gBAEtE,QAAQ,IAAI,EAAE;oBACV,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;wBACf,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;wBACvB,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC1B,IAAI;4BACR,CAAC;gCACG,OAAO,CAAC,KAAK,CAAC,CAAA;wBACtB,MAAK;qBACR;oBAED,KAAK,OAAO,CAAC,MAAM;wBACf,GAAG,CAAC,IAAI,CAAC,GAAI,MAAqB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;wBACjE,MAAK;oBAET,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;wBAC1B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAgC,CAAA;wBACvD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;wBACzB,MAAK;qBACR;oBAED;wBACI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;iBAC5B;aACJ;YACD,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;SAChB;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAWD,OAAO,CAA4B,EAC/B,KAAK,EACL,IAAI,MAIJ,EAAG;QACH,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;YAC1B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QAEzF,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,KAAqB,CAAA;QAEzG,IAAI,QAAQ,KAAK,OAAO,CAAC,MAAM,IAAI,UAAU,KAAK,OAAO,CAAC,GAAG;YACzD,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;QAEnH,IAAI,IAAI,IAAI,CAAC,KAAK;YACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAEhE,IAAI,GAAG,GAAG,EAAG,CAAA;QAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAG,CAAC,EAAE,EAAE;YAClC,IAAI,KAAK,GAAW,MAAM,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;gBACnC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;;gBAE7C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;SACjD;QAED,OAAO,GAAQ,CAAA;IACnB,CAAC;;AAIL,MAAM,UAAU,MAAM,CAAE,IAAa,EAAE,KAAe,EAAE,EAAW,EAAE,OAAuB;IACxF,QAAQ,IAAI,EAAE;QACV,KAAK,OAAO,CAAC,IAAI;YACb,OAAO,OAAO,CACV,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtC,IAAI;gBACR,CAAC;oBACG,OAAO,CAAC,KAAK,CAAC,EAClB,OAAO,CACV,CAAA;QAEL,KAAK,OAAO,CAAC,IAAI;YACb,OAAO,OAAO,CACV,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtC,IAAI;gBACR,CAAC;oBACG,kBAAkB;oBAClB,iEAAiE;oBACjE,CAAC,EAAE,IAAK,KAAgB,IAAK,KAAgB,IAAI,GAAG,CAAC,CAAC,CAAC;wBACnD,MAAM,CAAC,YAAY,CAAC,KAAe,CAAC;wBACxC,CAAC;4BACG,KAAK,EACb,OAAO,CACV,CAAA;QAEL,KAAK,OAAO,CAAC,KAAK;YACd,OAAO,OAAO,CACV,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,IAAI;gBACR,CAAC;oBACG,KAAK,EACT,OAAO,CACV,CAAA;QAEL,KAAK,OAAO,CAAC,GAAG;YACZ,OAAO,OAAO,CACV,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,IAAI;gBACR,CAAC;oBACG,KAAK,EACT,OAAO,CACV,CAAA;QAEL,KAAK,OAAO,CAAC,IAAI;YACb,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK;wBACvB,CAAC;4BACG,MAAM,CAAC,KAAK,CAAC,CAAA;QAEzB,KAAK,OAAO,CAAC,IAAI;YACb,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,QAAQ,CAAC,KAAe,CAAC,CAAC,KAAK;wBACnC,CAAC;4BACG,QAAQ,CAAC,KAAe,CAAC,CAAA;QAErC,KAAK,OAAO,CAAC,KAAK;YACd,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,SAAS,CAAC,KAAe,CAAC,CAAC,KAAK;wBACpC,CAAC;4BACG,SAAS,CAAC,KAAe,CAAC,CAAA;QAEtC,KAAK,OAAO,CAAC,IAAI;YACb,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,QAAQ,CAAC,KAAe,CAAC,CAAC,KAAK;wBACnC,CAAC;4BACG,QAAQ,CAAC,KAAe,CAAC,CAAA;QAErC,KAAK,OAAO,CAAC,MAAM;YACf,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,UAAU,CAAC,KAAe,CAAC,CAAC,KAAK;wBACrC,CAAC;4BACG,UAAU,CAAC,KAAe,CAAC,CAAA;QAEvC,KAAK,OAAO,CAAC,MAAM;YACf,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,UAAU,CAAC,KAAe,CAAC,CAAC,KAAK;wBACrC,CAAC;4BACG,UAAU,CAAC,KAAe,CAAC,CAAA;QAEvC,KAAK,OAAO,CAAC,QAAQ;YACjB,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,YAAY,CAAC,KAAe,CAAC,CAAC,KAAK;wBACvC,CAAC;4BACG,YAAY,CAAC,KAAe,CAAC,CAAA;QAEzC,KAAK,OAAO,CAAC,SAAS;YAClB,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,aAAa,CAAC,KAAe,CAAC,CAAC,KAAK;wBACxC,CAAC;4BACG,aAAa,CAAC,KAAe,CAAC,CAAA;QAE1C,KAAK,OAAO,CAAC,QAAQ;YACjB,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,YAAY,CAAC,KAAe,CAAC,CAAC,KAAK;wBACvC,CAAC;4BACG,YAAY,CAAC,KAAe,CAAC,CAAA;QAEzC,KAAK,OAAO,CAAC,aAAa;YACtB,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,iBAAiB,CAAC,KAAe,CAAC,CAAC,KAAK;wBAC5C,CAAC;4BACG,iBAAiB,CAAC,KAAe,CAAC,CAAA;QAE9C,KAAK,OAAO,CAAC,KAAK;YACd,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChD,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,KAAe,EAAE,OAAO,CAAC,CAAA;QAEzC,KAAK,OAAO,CAAC,MAAM;YACf,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,KAAe,EAAE,OAAO,CAAC,CAAA;QAEzC,KAAK,OAAO,CAAC,MAAM,CAAC;QACpB,KAAK,OAAO,CAAC,MAAM;YACf,OAAO,OAAO,CAAC,KAAe,EAAE,OAAO,CAAC,CAAA;QAE5C,KAAK,OAAO,CAAC,IAAI;YACb,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnB,QAAQ,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC,KAAK;gBAC3C,CAAC;oBACG,QAAQ,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAA;QAEzC,KAAK,OAAO,CAAC,WAAW;YACpB,OAAO,OAAO,CACT,KAA6B,CAAC,IAAI,EACnC,OAAO,CACV,CAAA;QAEL,KAAK,OAAO,CAAC,MAAM,CAAC;QACpB,KAAK,OAAO,CAAC,IAAI,CAAC;QAClB,KAAK,OAAO,CAAC,QAAQ;YACjB,OAAO,OAAO,CAAC,KAAe,EAAE,OAAO,CAAC,CAAA;QAE5C,KAAK,OAAO,CAAC,QAAQ;YACjB,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;gBACV,CAAC;oBACG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACZ,YAAY,CAAC,KAAe,CAAC,CAAC,KAAK;wBACvC,CAAC;4BACG,YAAY,CAAC,KAAe,CAAC,CAAA;QAEzC,KAAK,OAAO,CAAC,MAAM;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnB,UAAU,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC,KAAK;gBAC7C,CAAC;oBACG,UAAU,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAA;QAE3C,KAAK,OAAO,CAAC,MAAM;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnB,UAAU,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC,KAAK;gBAC7C,CAAC;oBACG,UAAU,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAA;QAE3C,KAAK,OAAO,CAAC,IAAI;YACb,OAAO,OAAO,CACT,KAAoB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;gBAChC,MAAM,CAAC,GAAG,CAAC,MAAM,CACZ,KAAoB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CACxC,GAAG,GAAG;gBACX,CAAC;oBACG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAmB,CAAC,EAC1C,OAAO,CACV,CAAA;QAEL,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAyB,CAAA;YACtC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM;gBAClB,CAAC,GAAG,IAAI,CAAA;YACZ,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM;gBAClB,CAAC,GAAG,IAAI,CAAA;YAEZ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;gBAC9C,CAAC;oBACG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;SACrC;QAED,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAyB,CAAA;YACtC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM;gBAClB,CAAC,GAAG,IAAI,CAAA;YACZ,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM;gBAClB,CAAC,GAAG,IAAI,CAAA;YAEZ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;gBACf,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;gBACjD,CAAC;oBACG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;SACvC;QAED,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAyB,CAAA;YAChD,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAA;YAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;SAC1C;QAED;YACI,OAAO,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;KACrC;AACL,CAAC;AAGD,MAAM,OAAO,OAAQ,SAAQ,MAAiB;IAC1C;QACI,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,IAAI;SACd,CAAC,CAAA;IACN,CAAC;CACJ;AAGD,MAAM,OAAO,OAAQ,SAAQ,MAAe;IACxC,YAAa,KAAqB;QAC9B,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,OAAQ,SAAQ,MAAc;IACvC,YAAa,KAA6B;QACtC,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;gBAC1B,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvB,CAAC;oBACG,KAAK;SAChB,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,MAAO,SAAQ,MAAc;IACtC,YAAa,KAAoB;QAC7B,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,SAAU,SAAQ,MAAc;IACzC,YAAa,KAAa;QACtB,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,OAAQ,SAAQ,MAAc;IACvC,YAAa,KAAoB;QAC7B,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,SAAU,SAAQ,MAAc;IACzC,YAAa,KAAoB;QAC7B,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,WAAY,SAAQ,MAAc;IAC3C,YAAa,KAAoB;QAC7B,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,MAAc;IAC5C,YAAa,KAAoB;QAC7B,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,gBAAiB,SAAQ,MAAc;IAChD,YAAa,KAAoB;QAC7B,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,aAAa;YAC3B,KAAK;SACR,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,OAAQ,SAAQ,MAAkB;IAC3C,YAAa,CAAgB,EAAE,IAAmB,IAAI;QAClD,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,UAAU,CAAC,EAAE,CAChB,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC5B,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC/B;SACJ,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,WAAY,SAAQ,MAA2B;IACxD,YAAa,IAAY,EAAE,IAAqB;QAC5C,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,WAAW;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACxB,CAAC,CAAA;IACN,CAAC;CACJ;AAGD,MAAM,OAAO,YAAa,SAAQ,MAAkB;IAChD,YAAa,IAAoC,EAAE,IAAa;QAC5D,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,IAAI,YAAY,UAAU,CAAC,CAAC;gBAC3B,IAAI;gBACR,CAAC;oBACG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CACtB,CAAC,KAAK,IAAI,CAAC,CAAC;wBACR,KAAK,CAAC,KAAK;wBACf,CAAC;4BACG,CAAC,CACR;YACT,IAAI;SACP,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,MAAoB;IACrD,YAAa,OAAyC,EAAE,IAAa;QACjE,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,OAAO,YAAY,YAAY,CAAC,CAAC;gBAChC,OAAO;gBACX,CAAC;oBACG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAC3B,CAAC,KAAK,IAAI,CAAC,CAAC;wBACR,KAAK,CAAC,MAAM;wBAChB,CAAC;4BACG,CAAC,CACR;YACT,IAAI;SACP,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,MAAgB;IACjD,YAAa,OAAiB,EAAE,IAAa;QACzC,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,OAAO;YACd,IAAI;SACP,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,MAAM;IACpC,YAAa,IAAmC,EAAE,IAAa;QAC3D,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9B,IAAI;SACP,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,MAA+B;IAChE,YAAa,OAAiB,EAAE,IAAa;QACzC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAiB;YAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;SACV,CAAC,CAAA;QAEF,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAG,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAEpB,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAEtB,IAAI,KAAK,KAAK,SAAS,EAAE;gBACrB,KAAK,GAAG,GAAG,CAAC,IAAI,CAAA;gBAChB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;aACpB;YAED,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;SAClB;QAED,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,eAAe;YAC7B,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACH,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,EAAE,IAAI;gBACb,IAAI;aACP;YACD,IAAI;SACP,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,SAAU,SAAQ,MAAkB;IAC7C,YAAa,IAAkD;QAC3D,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,IAAI;gBACb,CAAC;oBACG,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,IAAI,YAAY,UAAU,CAAC,CAAC;gBAC3B,IAAI;gBACR,CAAC;oBACG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CACtB,CAAC,KAAK,IAAI,CAAC,CAAC;wBACR,KAAK,CAAC,KAAK;wBACf,CAAC;4BACG,CAAC,CACR;SACZ,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,MAAoB;IAClD,YAAa,OAAuD;QAChE,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,YAAY,GAAG,CAAC,CAAC;gBACtB,OAAO,CAAC,IAAI;gBAChB,CAAC;oBACG,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,OAAO,YAAY,UAAU,CAAC,CAAC;gBAC9B,OAAO;gBACX,CAAC;oBACG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CACzB,CAAC,KAAK,IAAI,CAAC,CAAC;wBACR,KAAK,CAAC,KAAK;wBACf,CAAC;4BACG,CAAC,CACR;SACZ,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,MAAgB;IAC9C,YAAa,OAA+B;QACxC,IAAI,OAAO,YAAY,GAAG;YACtB,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;QAE1B,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,OAAO;SACjB,CAAC,CAAA;IACN,CAAC;CACJ;AAED;;;EAGE;AACF,MAAM,OAAO,OAAQ,SAAQ,MAAoB;IAG7C,YAAa,IAAwD,EAAE,IAAa;QAChF,IAAI,IAAI;YACJ,KAAK,CAAC;gBACF,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAG,IAAe,CAAC,IAAI;gBAC3B,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,CAAC,IAAc,EAAE,IAAI,CAAiB;aAChD,CAAC,CAAA;aACD;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,KAAK,CAAC;gBACF,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,GAAG;gBACjB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE;oBACH,IAAI,eAAe,CAAC,IAAI,CAAC;oBACzB,IAAI,YAAY,CACZ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CACtB;iBACY;aACpB,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AAGD,MAAM,OAAO,QAAS,SAAQ,MAAgB;IAC1C,YAAa,OAAiB,EAAE,OAAe,EAAE;QAC7C,KAAK,CAAC;YACF,IAAI,EAAE,OAAO,CAAC,KAAK;YACnB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YACrB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI;YACJ,KAAK,EAAE,OAAO;SACjB,CAAC,CAAA;IACN,CAAC;CACJ;AAED,MAAM,UAAU,OAAO,CAAE,IAAmB;IACxC,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI;QACR,CAAC;YACG,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAE,IAAmB,EAAE,MAAM,GAAG,YAAY;IAChE,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI;QACR,CAAC;YACG,KAAK,CACD,OAAO,CAAC,IAAI,CAAC,CAChB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAE,KAAoB;IAC1C,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,IAAI;QACR,CAAC;YACG,KAAK,CACD,SAAS,CAAC,KAAK,CAAC,EAChB,YAAY,CACf,CAAC,OAAO,EAAE,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAE,KAAoB;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK;QACvC,OAAO,MAAM,CAAA;IAEjB,IAAI,KAAK,GAAG,CAAC;QACT,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IAExB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,CAAA;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAA;IACnC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,OAAO,CAAE,IAAmB;IACxC,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI;QACR,CAAC;YACG,eAAe,GAAG,IAAI,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAE,IAAmB,EAAE,MAAM,GAAG,cAAc;IAClE,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI;QACR,CAAC;YACG,KAAK,CACD,OAAO,CAAC,IAAI,CAAC,CAChB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,SAAS,CAAE,MAAqB;IAC5C,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,IAAI;QACR,CAAC;YACG,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAE,MAAqB,EAAE,MAAM,GAAG,UAAU;IAClE,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,MAAM;QACV,CAAC;YACG,KAAK,CACD,SAAS,CAAC,MAAM,CAAC,CACpB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,SAAS,CAAE,MAAqB;IAC5C,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,IAAI;QACR,CAAC;YACG,eAAe,GAAG,IAAI,GAAG,MAAM,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,UAAU,CAAE,MAAqB,EAAE,MAAM,GAAG,UAAU;IAClE,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,MAAM;QACV,CAAC;YACG,KAAK,CACD,SAAS,CAAC,MAAM,CAAC,CACpB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAE,QAAuB;IAChD,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,IAAI;QACR,CAAC;YACG,eAAe,GAAG,IAAI,GAAG,QAAQ,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAE,QAAuB,EAAE,MAAM,GAAG,qBAAqB;IACjF,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,MAAM;QACV,CAAC;YACG,KAAK,CACD,WAAW,CAAC,QAAQ,CAAC,CACxB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,YAAY,CAAE,SAAwB;IAClD,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI;QACR,CAAC;YACG,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;EAKE;AACF,MAAM,UAAU,aAAa,CAAE,SAAwB,EAAE,MAAM,GAAG,yBAAyB;IACvF,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,MAAM;QACV,CAAC;YACG,KAAK,CACD,YAAY,CAAC,SAAS,CAAC,CAC1B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAE,QAAuB;IAChD,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,IAAI;QACR,CAAC;YACG,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,YAAY,CAAE,QAAuB,EAAE,MAAM,GAAG,eAAe;IAC3E,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,MAAM;QACV,CAAC;YACG,KAAK,CACD,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAC3C,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAGD;;;;;EAKE;AACF,MAAM,UAAU,aAAa,CAAE,GAAW,EAAE,MAAM,GAAG,yBAAyB;IAC1E,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;QACtB,OAAO,KAAK,CAAC,KAAK,CAAA;IAEtB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAC5B,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAA;IAEzG,OAAO,MAAM,CACT,CAAC,eAAe;QAChB,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAC/B,CAAA;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAE,QAAuB;IAChD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAAE,QAAuB,EAAE,MAAM,GAAG,oBAAoB;IAChF,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK;QAC7C,OAAO,MAAM,CAAA;IAEjB,IAAI,QAAQ,GAAG,EAAE;QACb,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;IAE3B,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,cAAc,KAAK,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAEjF,MAAM,YAAY,GAAG,cAAc,GAAG,CAAC,CAAA;IAEvC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACpE,IAAI,kBAAkB,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAE5F,OAAO,CACH,KAAK,CACD,eAAe,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,CACjD,CAAC,MAAM,CACJ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAChC;QACD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC;QAC9C,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAClD,CAAA;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,aAA4B;IAC1D,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,IAAI;QACR,CAAC;YACG,MAAM,CAAC,eAAe,CAAC,GAAG,QAAQ,GAAG,aAAa,CAAA;AAC1D,CAAC;AAED;;;;;;EAME;AACF,MAAM,UAAU,iBAAiB,CAAE,aAA4B,EAAE,MAAM,GAAG,+BAA+B;IACrG,SAAS;IACT,wBAAwB;IACxB,yBAAyB;IACzB,mCAAmC;IACnC,oCAAoC;IACpC,oCAAoC;IAEpC,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,KAAK,CAAC,KAAK;QACvD,OAAO,MAAM,CAAA;IAEjB,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,cAAc,KAAK,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAEjF,MAAM,YAAY,GAAG,cAAc,GAAG,CAAC,CAAA;IAEvC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACpE,IAAI,kBAAkB,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAE5F,MAAM,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;IAC7C,MAAM,MAAM,GAAG,SAAS,GAAG,EAAE,CAAA;IAE7B,OAAO,CACH,KAAK,CACD,eAAe;QACf,oBAAoB;QACpB,MAAM,CACF,CAAC,aAAa,GAAG,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CACxE,CACJ,CAAC,MAAM,CACJ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAChC;QACD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC;QAC9C,MAAM,CACF,MAAM,CAAC,CAAC;YACJ,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,WAAW;YAC3C,CAAC;gBACG,SAAS,CAChB,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACrB,CAAA;AACL,CAAC;AAED;;;;;;EAME;AACF,MAAM,UAAU,iBAAiB,CAAE,GAAW,EAAE,MAAM,GAAG,+BAA+B;IACpF,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;QACtB,OAAO,KAAK,CAAC,KAAK,CAAA;IAEtB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAC5B,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;IAEvF,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,cAAc,KAAK,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAEjF,MAAM,YAAY,GAAG,cAAc,GAAG,CAAC,CAAA;IAEvC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACpE,IAAI,kBAAkB,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;IAE/E,OAAO,CACC,MAAM,CACF,CAAC,eAAe;QAChB,KAAK,CACD,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAC1B,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAChC,CAAC,OAAO,EAAE,CACd,GAAG,QAAQ;;YAEZ,MAAM,CACF,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,CAAC,CAAC,CACxD,CACR,CAAA;AACL,CAAC;AAGD,MAAM,UAAU,UAAU,CAAE,MAAkB,EAAE,EAAE,GAAG,IAAI,EAAE,IAAc;IACrE,IAAI,GAAG,GAAG,MAAM,CAAA;IAEhB,IAAI,EAAE;QACF,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAA;IAElC,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CACjC,CAAQ,CAAC,CAAA;IAEb,IACI,IAAI;QACJ,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,GAAG,EAAE,EACtC,OAAO;QACL,OAAO,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;SACpC,OAAO;QACT,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAE,MAAkB,EAAE,EAAE,GAAG,IAAI;IACnD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAClC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;AAC9G,CAAC;AAED,MAAM,UAAU,UAAU,CAAE,MAAkB,EAAE,EAAE,GAAG,IAAI;IACrD,IAAI,GAAG,GAAG,MAAM,CAAA;IAEhB,IAAI,EAAE;QACF,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAA;IAElC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACpB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;SACT,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACxB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACd,CAAC;AAED,MAAM,OAAO,GAAG;IACZ,kCAAkC;IAClC,GAAG,GAAG,GAAG,CAAA;IAET,yBAAyB;IACzB,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IAE9B,GAAG,GAAG,IAAI,WAAW,EAAE,CAAA;IAGvB;;MAEE;IACF,GAAG,CAAQ;IAEX,SAAS,GAAG,IAAiB,CAAA;IAE7B,6BAA6B;IAC7B,EAAE,GAAG,IAAI,CAAA;IAET,6BAA6B;IAC7B,MAAM,CAAC,SAAS,GAAG,OAAO,CACtB,IAAI,UAAU,CACV,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAC3B,CAAC,CAAC,CAAC,CACP,CAAA;IAED,2BAA2B;IAC3B,SAAS,GAAG,IAAI,CAAA;IAEhB,sBAAsB;IACtB,QAAQ,GAAG,OAAO,CAAA;IAElB,qBAAqB;IACrB,QAAQ,GAAG,QAAQ,CAAA;IAEnB,iCAAiC;IACjC,MAAM,GAAG,KAAK,CAAA;IAEd,oBAAoB,GAAG,KAAK,CAAA;IAE5B,mBAAmB,GAAG,KAAK,CAAA;IAE3B,aAAa,GAAG,IAAI,CAAA;IAEpB,YAAY,GAAG,IAAI,CAAA;IAEnB,2BAA2B;IAC3B,SAAS,GAAyB,EAAG,CAAA;IAErC,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IAE5B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/B,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,CAAA;IACxD,CAAC;IAGD;;;;;;;;;;;;;;;;;;;;MAoBE;IACF,YAAa,GAAW,EAAE,UAKtB,EAAG;QACH,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QAEd,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;YAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAEtC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAEpC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAEpC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAC5B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IACpC,CAAC;IAGO,UAAU,CAAE,KAA4B,IAAI,CAAC;IAGrD;;;;;;;MAOE;IACF,KAAK,CAAC,OAAO,CAAE,UAMV,EAAG;QACJ,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;YACzB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QAE1B,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;YAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAEtC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAEpC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAEpC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAC5B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAEhC,IAAI,CAAC,UAAU,EAAE,CAAA;QAEjB,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE;YAC9B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAG;YAEzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;gBAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;gBAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAG,CAAC,CAAA;YAClC,CAAC;YAED,UAAU,EAAE,CAAC,KAA4B,EAAE,EAAE;gBACzC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAC1B,CAAC;SACJ,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,IAAI,CACX,IAAI,CAAC,MAAM,CAAC,CAAC;YACT,2DAA2D;gBAC3D,0BAA0B;gBAC1B,oCAAoC;gBACpC,QAAQ;gBACR,qBAAqB;gBACrB,wDAAwD;gBACxD,QAAQ;gBACR,0BAA0B;gBAC1B,iCAAiC;gBACjC,sBAAsB;gBACtB,kCAAkC;gBAClC,QAAQ;gBACR,wBAAwB;gBACxB,+CAA+C;gBAC/C,kBAAkB;gBAClB,0BAA0B;gBAC1B,SAAS;YACb,CAAC;gBACG,mEAAmE;oBACnE,0BAA0B;oBAC1B,oCAAoC;oBACpC,QAAQ;oBACR,mBAAmB;oBACnB,wDAAwD;oBACxD,QAAQ;oBACR,uDAAuD;oBACvD,8BAA8B;oBAC9B,+BAA+B;oBAC/B,wBAAwB;oBACxB,+CAA+C;oBAC/C,kBAAkB;oBAClB,0BAA0B;oBAC1B,SAAS;oBACT,KAAK,EACT,EAAE,MAAM,EAAE,IAAI,EAAE,CACnB,CAAA;QAED,IAAI,IAAI,CAAC,SAAS;YACd,IAAI,IAAI,CAAC,MAAM;gBACX,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;;gBAE9G,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACtF,CAAC;IAGD,eAAe,CAAE,EACb,MAAM,GAAG,KAAK,EACd,SAAS,GAAG,KAAK,EACjB,KAAK,EAAE,MAAM,GAAG,KAAK,EACrB,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,KAAK,EACb,GAAG,GAAG,KAAK,EACX,QAAQ,GAAG,KAAK,EAEhB,WAAW,GAAG,IAAI,EAClB,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACzB,WAAW,GAAG,CAAC,EACf,OAAO,GAAG,EAAE,EACZ,KAAK,MAqCL,EAAG;QACH,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,IAAI,MAAM;YACN,IAAI,IAAI,CAAC,CAAA;QACb,IAAI,SAAS;YACT,IAAI,IAAI,CAAC,CAAA;QACb,IAAI,MAAM;YACN,IAAI,IAAI,CAAC,CAAA;QACb,IAAI,MAAM;YACN,IAAI,IAAI,CAAC,CAAA;QACb,IAAI,KAAK;YACL,IAAI,IAAI,EAAE,CAAA;QACd,IAAI,GAAG;YACH,IAAI,IAAI,EAAE,CAAA;QACd,IAAI,QAAQ;YACR,IAAI,IAAI,EAAE,CAAA;QAEd,iBAAiB;QACjB,IAAI,IAAI,CAAC,MAAM;YACX,IAAI,IAAI,IAAI,CAAA;QAEhB,MAAM,OAAO,GAAG;YACZ,IAAI;YACJ,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,QAAQ;YACR,WAAW;YACX,GAAI,KAAK,CAAC,CAAC,CAAC;gBACR,OAAO;gBACP,KAAK;aACR,CAAC,CAAC,CAAC,EAAG;SACV,CAAA;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAGD,UAAU;QACN,IAAI,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAGD;;;;;;;;MAQE;IACF,KAAK,CAAC,GAAG,CACL,IAAoD,EACpD,EACI,MAAM,EACN,IAAI,EACJ,IAAI,GAAG,EAAG,EACV,IAAI,GAAG,EAAG,EACV,MAAM,EACN,QAAQ,EACR,YAAY,GASnB;QACG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAA;YAE3B,IAAI,OAAmB,CAAA;YACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;gBACpD,OAAO,GAAG,QAAQ,CAAA;YACtB,CAAC,CAAC,CAAA;YAEF,MAAM,KAAK,CAAA;YAEX,IAAI;gBACA,IAAI,CAAC,IAAI,CAAC,SAAS;oBACf,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;aAC3B;oBAAS;gBACN,OAAO,EAAE,CAAA;aACZ;SACJ;QAGD,IAAI,CAAC,IAAI,CAAC,SAAS;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,0BAA0B,CAAC,CAAA;QAE1D,qCAAqC;QACrC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;QAG/C,+BAA+B;QAC/B,iDAAiD;QACjD,eAAe;QACf,gCAAgC;QAChC,oCAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAA;QAE1B,IAAI,OAA4B,CAAA;QAChC,IAAI,MAA8B,CAAA;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;YAChE,OAAO,GAAG,QAAQ,CAAA;YAClB,MAAM,GAAG,OAAO,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,IAAI;YACA,MAAM,KAAK,CAAA;SACd;QAAC,MAAM,GAAG;QACX,8DAA8D;QAG9D,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;YACnC,IAAI;gBACA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;gBAElC,IAAI,IAAI,CAAC,oBAAoB;oBACzB,OAAO,CAAC,GAAG,CACP,qBAAqB,CAAC,GAAG,CAAC,CAC7B,CAAA;gBAEL,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;gBAErD,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBACzB,KAAK,MAAM,QAAQ,IAAI,SAAS;oBAC5B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAE3B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;gBAE9B,QAAQ,IAAI,EAAE;oBACV,KAAK,OAAO;wBACR,IAAI,IAAI,CAAC,aAAa;4BAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBACrB,OAAM;oBAEV,KAAK,QAAQ;wBACT,OAAO,CAAC,IAAS,CAAC,CAAA;wBAClB,OAAM;oBAEV,KAAK,OAAO;wBACR,MAAM,CAAC,IAAI,CAAC,CAAA;wBACZ,OAAM;iBACb;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,CAAC,KAAK,CAAC,CAAA;aAChB;QACL,CAAC,CAAA;QAED,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAC3B,CAAC,GAAG,EAAE;YACF,QAAQ,IAAI,EAAE;gBACV,KAAK,UAAU;oBACX,OAAO,YAAY;wBACf,GAAG,IAAI,IAAI;wBACX,GAAG,IAAI,CAAC,MAAM,IAAI;wBAClB,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAA;gBAEpC,KAAK,QAAQ;oBACT,OAAO,UAAU;wBACb,MAAM,CAAA;gBAEd,KAAK,UAAU;oBACX,OAAO,YAAY;wBACf,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;wBACrB,GAAG,IAAI,CAAC,MAAM,IAAI;wBAClB,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAA;gBAEpC,KAAK,SAAS;oBACV,OAAO,WAAW,CAAA;aACzB;QACL,CAAC,CAAC,EAAE,CACP,CAAA;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CACf,MAAM,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,MAAM,CACX,QAAQ,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAC/E;YACD,OAAO;YACP,GAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CACzB,GAAG,CAAC,IAAI,EAAE,CACb;SACJ,CAAC,CACL,CAAA;QAED,OAAO,OAAO,CAAA;IAClB,CAAC;IAGD;;;;;;;;MAQE;IACF,KAAK,CAAC,IAAI,CACN,MAAc,EACd,EACI,MAAM,EACN,QAAQ,EACR,YAAY,MAKZ,EAAG;QAEP,OAAO,IAAI,CAAC,GAAG,CAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;IAC5E,CAAC;IAGD;;;;;;;;;;;;;MAaE;IACF,KAAK,CAAC,IAAI,CACN,IAAY,EACZ,OAAsC,EAAG,EACzC,EACI,MAAM,EACN,IAAI,EACJ,KAAK,EACL,SAAS,EACT,cAAc,EACd,QAAQ,EACR,YAAY,MASZ,EAAG;QAEP,IAAI,IAAI,EAAE;YACN,IAAI,OAAO,SAAS,KAAK,WAAW;gBAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;YAE9C,IAAI,GAAG;gBACH,IAAI;gBACJ,IAAI,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;gBAChC,GAAG,IAAI;aACV,CAAA;YACD,IAAI,GAAG,KAAK,CAAA;SACf;QAED,IAAI,KAAK,EAAE;YACP,IAAI,GAAG;gBACH,IAAI,eAAe,CAAC,KAAK,CAAC;gBAC1B,IAAI;gBACJ,IAAI,YAAY,CAAC,IAAI,CAAC;gBACtB,GAAI,CAAC,GAAG,EAAE;oBACN,IAAI,OAAO,cAAc,KAAK,WAAW;wBACrC,OAAO,CAAC,cAAc,CAAC,CAAA;oBAE3B,IAAI,IAAI,CAAC,MAAM;wBACX,OAAO,CAAC,IAAI,CAAC,CAAA;oBAEjB,OAAO,EAAG,CAAA;gBACd,CAAC,CAAC,EAAE;aACP,CAAA;YACD,IAAI,GAAG,WAAW,CAAA;SACrB;QAED,OAAO,IAAI,CAAC,GAAG,CAAI,UAAU,EAAE;YAC3B,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,YAAY;SACf,CAAC,CAAA;IACN,CAAC;IAGD,2DAA2D;IAC3D,KAAK,CAAC,MAAM;IACR,+BAA+B;IAC/B,IAAc;IAEd,gCAAgC;IAChC,IAAmC,EAEnC,EACI,QAAQ,EACR,YAAY,MAIZ,EAAG;QAEP,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAC3C,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;QAEnH,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;IACvE,CAAC;IAGD,uCAAuC;IACvC,aAAa,CAAE,GAAe,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;QAC5D,QAAQ;QACR,cAAc;QACd,kCAAkC;QAClC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;YACxE,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,IAAI,EACA,IAAI,CAAC,GAAG,CAAC,MAAM,CACX,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClB;aACR,CAAA;QAGL,qBAAqB;QACrB,SAAS;QACT,6BAA6B;QAE7B,2BAA2B;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAE,OAAO;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CACzB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAC1B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEZ,iBAAiB;QACjB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,CAAA;YAChD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;SACjB;QAED,cAAc;QACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9B,2BAA2B;QAC3B,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEhC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAA;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA,CAAE,OAAO;QACjD,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAC3B,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/B,CAAA;QAED,IAAI,OAAO,KAAK,IAAI;YAChB,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;aAC3B,CAAA;QAEL,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAExC,IAAI,IAAI,CAAC,mBAAmB;YACxB,OAAO,CAAC,GAAG,CACP,qBAAqB,CAAC,OAAO,CAAC,CACjC,CAAA;QAEL,OAAO;YACH,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,YAAY,CAAC,CAAC;gBACZ,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;gBAClC,CAAC;oBACG,IAAI,MAAM,CAAC;wBACP,IAAI,EAAE,OAAO,CAAC,MAAM;wBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,MAAM,EAAE,CAAC;wBACT,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,MAAM,EAAE,OAAO;qBAClB,CAAC;SACb,CAAA;IACL,CAAC","sourcesContent":["import type { InspectOptions } from 'util'\n\nimport { WebSocket } from 'ws'\n\nimport dayjs from 'dayjs'\nimport DayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js'\ndayjs.extend(DayjsCustomParseFormat)\n\nimport ipaddrjs from 'ipaddr.js'\nconst { fromByteArray: buf2ipaddr } = ipaddrjs\n\nimport { connect_websocket } from 'xshell/net.js'\nimport { concat, inspect, typed_array_to_buffer } from 'xshell/utils.js'\n\n\nexport enum DdbForm {\n scalar = 0,\n vector = 1,\n pair = 2,\n matrix = 3,\n set = 4,\n dict = 5,\n table = 6,\n chart = 7,\n \n /** Node internal communication may be used, calling function execution script generally does not return this type */\n chunk = 8,\n \n /** sysobj */\n object = 9,\n}\n\n\n/** DolphinDB DataType \n 对应的 array vector 类型为 64 + 基本类型\n 对应的 extended 类型为 128 + 基本类型\n*/\nexport enum DdbType {\n void = 0,\n bool = 1,\n char = 2,\n short = 3,\n int = 4,\n long = 5,\n date = 6,\n month = 7,\n time = 8,\n minute = 9,\n second = 10,\n datetime = 11,\n timestamp = 12,\n nanotime = 13,\n nanotimestamp = 14,\n float = 15,\n double = 16,\n symbol = 17,\n string = 18,\n uuid = 19,\n functiondef = 20,\n handle = 21,\n code = 22,\n datasource = 23,\n resource = 24,\n any = 25,\n compress = 26,\n dict = 27,\n datehour = 28,\n ipaddr = 30,\n int128 = 31,\n blob = 32,\n complex = 34,\n point = 35,\n duration = 36,\n object = 37,\n \n symbol_extended = 145, // 128 + DdbType.symbol\n}\n\nexport enum DdbFunctionType {\n SystemFunc = 0,\n SystemProc = 1,\n OperatorFunc = 2,\n UserDefinedFunc = 3,\n PartialFunc = 4,\n DynamicFunc = 5,\n PiecewiseFunc = 6,\n JitFunc = 7,\n JitPartialFunc = 8,\n}\n\nexport enum DdbDurationUnit {\n ns = 0,\n us = 1,\n ms = 2,\n s = 3,\n m = 4,\n H = 5,\n d = 6,\n w = 7,\n M = 8,\n y = 9,\n B = 10\n}\n\nexport interface DdbFunctionDefValue {\n type: DdbFunctionType\n name: string\n}\n\nexport interface DdbDurationValue {\n unit: DdbDurationUnit\n \n /** int32 */\n data: number\n}\n\nexport interface DdbSymbolExtendedValue {\n base_id: number\n base: string[]\n data: Uint32Array\n}\n\nexport interface DdbArrayVectorBlock {\n unit: 1 | 2 | 4\n rows: number\n lengths: Uint8Array | Uint16Array | Uint32Array\n data: Int8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array\n}\n\nexport interface DdbMatrixValue {\n rows: DdbObj<DdbVectorValue>\n cols: DdbObj<DdbVectorValue>\n data: DdbVectorValue\n}\n\nexport type DdbDictValue = [DdbObj<DdbVectorValue>, DdbObj<DdbVectorValue>]\n\nexport enum DdbChartType {\n area = 0,\n bar = 1,\n column = 2,\n histogram = 3,\n line = 4,\n pie = 5,\n scatter = 6,\n trend = 7,\n kline = 8,\n}\n\nexport interface DdbChartValue {\n /** original: chartType */\n type: DdbChartType\n \n stacking: boolean\n \n titles: {\n chart: string\n x_axis: string\n y_axis: string\n }\n \n extras?: {\n multi_y_axes: boolean\n }\n \n data: DdbObj<DdbMatrixValue>\n}\n\nexport type DdbScalarValue = \n null | boolean | number | bigint | string |\n Uint8Array | // uuid, ipaddr, int128, blob\n [number, number] | // complex, point\n DdbFunctionDefValue |\n DdbDurationValue\n\nexport type DdbVectorValue = \n Uint8Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array | \n string[] | // string[]\n Uint8Array[] | // blob\n DdbObj[] | // any\n DdbSymbolExtendedValue | \n DdbArrayVectorBlock[]\n\nexport type DdbValue = DdbScalarValue | DdbVectorValue | DdbMatrixValue | DdbDictValue | DdbChartValue\n\n\nexport const nulls = {\n int8: -0x80, // -128\n int16: -0x80_00, // -32768\n int32: -0x80_00_00_00, // -21_4748_3648\n int64: -0x80_00_00_00_00_00_00_00n, // -922_3372_0368_5477_5808\n float32: -3.4028234663852886e+38,\n \n /** -Number.MAX_VALUE */\n double: -Number.MAX_VALUE,\n \n bytes16: Uint8Array.from(\n new Array(16).fill(0)\n )\n} as const\n\n\nexport const timezone_offset = 1000 * 60 * new Date().getTimezoneOffset()\n\n\n/** 可以表示所有 DolphinDB 数据库中的数据类型 */\nexport class DdbObj <T extends DdbValue = DdbValue> {\n static dec = new TextDecoder('utf-8')\n \n static enc = new TextEncoder()\n \n /** 维护已解析的 symbol base,比如流数据中后续的 symbol 向量可能只发送一个 base.id, base.size == 0, 依赖之前发送的 symbol base ?\n 只是暂存,如果一张表有多个 symbol 列,可能这个 symbol base 会被复用,不同的对象之间 symbol base 一般不复用\n */\n static symbol_bases: Record<number, string[]> = { }\n \n /** little endian (client) */\n static le_client = Boolean(\n new Uint8Array(\n Uint32Array.of(1).buffer\n )[0]\n )\n \n /** 是否为小端 (little endian) */\n le = DdbObj.le_client\n \n /** 数据形式 https://www.dolphindb.cn/cn/help/DataTypesandStructures/DataForms/index.html */\n form: DdbForm\n \n /** 数据类型 https://www.dolphindb.cn/cn/help/DataTypesandStructures/DataTypes/index.html */\n type: DdbType\n \n /** 占用 parse 时传入的 buf 的长度 */\n length: number\n \n /** table name / column name */\n name?: string\n \n /**\n 最低维、第 1 维\n - vector: rows = n, cols = 1\n - pair: rows = 2, cols = 1\n - matrix: rows = n, cols = m\n - set: 同 vector\n - dict: 包含 keys, values 向量\n - table: 同 matrix\n */\n rows?: number\n \n /** 第 2 维 */\n cols?: number\n \n /** 实际数据。不同的 DdbForm, DdbType 使用 DdbValue 中不同的类型来表示实际数据 */\n value: T\n \n /** 原始二进制数据,仅在 parse_object 为 false 时通过 parse_message 生成的顶层对象有这个属性 */\n buffer?: Uint8Array\n \n \n constructor (data: Partial<DdbObj> & { form: DdbForm, type: DdbType /* (parse 对象时必须设置) , length: number */ }) {\n Object.assign(this, data)\n }\n \n \n static parse (buf: Uint8Array, le: boolean) {\n if (!buf.length)\n return new this({\n le,\n form: DdbForm.scalar,\n type: DdbType.void,\n length: 0,\n value: null\n })\n \n const type = buf[0]\n const form = buf[1]\n \n if (buf.length <= 2) {\n return new this({\n le,\n form,\n type,\n length: 2,\n value: null,\n })\n }\n \n // set 里面 data 嵌套了一个 vector, 跳过 vector 的 type 和 form\n const i_data = form === DdbForm.set ? 4 : 2\n const buf_data = buf.subarray(i_data)\n \n switch (form) {\n case DdbForm.scalar: {\n const [length, value] = this.parse_scalar(buf_data, le, type)\n return new this({\n le,\n form, \n type,\n length: i_data + length,\n value,\n })\n }\n \n case DdbForm.vector:\n case DdbForm.pair:\n case DdbForm.set: {\n let vector = this.parse_vector(buf_data, le, type)\n vector.length += i_data\n vector.form = form\n return vector\n }\n \n \n case DdbForm.table: {\n // table([\n // [1, 2] as a,\n // [1, 2] as b\n // ])\n \n // <Buffer \n // 00 06 form = table\n // 02 00 00 00 02 00 00 00 rows = 2, cols = 2\n // 00 行名称\n // 61 00 62 00 列名称 a, b\n \n // 04 01 form = vector, type = int\n // 02 00 00 00 01 00 00 00 cols = 2, rows = 1\n // 01 00 00 00 02 00 00 00 \n \n // 04 01 \n // 02 00 00 00 01 00 00 00 \n // 01 00 00 00 02 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset + i_data)\n \n const rows = dv.getUint32(0, le)\n const cols = dv.getUint32(4, le)\n const i_name_tail = buf_data.indexOf(0, 8)\n const name = this.dec.decode(\n buf_data.subarray(8, i_name_tail)\n )\n \n const i_items_start = i_name_tail + 1\n \n const [len_items, colnames] = this.parse_vector_items(\n buf_data.subarray(i_items_start),\n le,\n DdbType.string,\n cols\n ) as [number, string[]]\n \n let value = new Array(cols)\n let i_start = i_items_start + len_items\n for (let i = 0; i < cols; i++) {\n const type = buf_data[i_start] as DdbType\n \n let col = this.parse_vector(\n buf_data.subarray(i_start + 2),\n le,\n type\n )\n \n col.length += 2\n \n col.name = colnames[i]\n \n value[i] = col\n \n i_start += col.length\n }\n \n return new this({\n le,\n form,\n type,\n length: i_data + i_start,\n name,\n rows,\n cols,\n value,\n })\n }\n \n \n case DdbForm.dict: \n case DdbForm.chart: {\n // <Buffer 19 05 type = any, form = dict\n // 12 01 keys.type = string, keys.form = vector\n // 03 00 00 00 01 00 00 00 keys.cols = 3, keys.rows = 1\n // 63 00 62 00 61 00 \n \n // 19 01 values.type = any, values.form = vector\n // 03 00 00 00 01 00 00 00 values.cols = 3, values.rows = 1\n // 04 00 03 00 00 00 04 00 02 00 00 00 04 00 01 00 00 00>\n \n let keys = this.parse_vector(\n buf_data.subarray(2),\n le,\n buf_data[0]\n )\n \n keys.length += 2\n \n let values = this.parse_vector(\n buf_data.subarray(keys.length + 2),\n le,\n buf_data[keys.length]\n )\n \n values.length += 2\n \n let dict = new this({\n le,\n form: DdbForm.dict,\n type,\n length: i_data + keys.length + values.length,\n rows: keys.rows,\n cols: 2,\n value: [\n keys,\n values\n ],\n })\n \n if (form === DdbForm.dict)\n return dict\n else {\n const {\n chartType: type,\n stacking,\n title: titles,\n extras,\n data,\n ... others\n } = dict.to_dict<{\n chartType: DdbObj<DdbChartType>\n stacking: DdbBool\n title: DdbVectorString\n extras?: DdbObj\n data: DdbObj<DdbMatrixValue>\n }>()\n \n const [chart, x_axis, y_axis] = titles.value\n \n dict.form = DdbForm.chart\n \n dict.value = {\n type: type.value,\n stacking: stacking.value,\n titles: {\n chart,\n x_axis,\n y_axis,\n },\n ... extras ? (() => {\n const { multiYAxes: multi_y_axes = false, ...extras_others } = extras.to_dict<{ multiYAxes: boolean }>({ strip: true })\n \n return {\n extras: {\n multi_y_axes,\n ...extras_others,\n }\n }\n })() : { },\n data,\n ...others,\n }\n \n return dict\n }\n }\n \n \n case DdbForm.matrix: {\n // rename!(\n // 1..9$3:3,\n // [1, 2, 3],\n // ['c1', 'c2', 'c3']\n // )\n \n // <Buffer 04 03 type = int, form = matrix\n // 03 has_row_label (& 0x01) = 1, has_col_label (& 0x02) = 1\n \n // row labels\n // 04 01 type = int, form = vector\n // 03 00 00 00 01 00 00 00 rows = 3, cols = 1\n // 01 00 00 00 02 00 00 00 03 00 00 00 vector values\n \n // col labels\n // 12 01 type = string, form = vector\n // 03 00 00 00 01 00 00 00 rows = 3, cols = 1\n // 63 31 00 63 32 00 63 33 00 \n \n // matrix data\n // 04 03 type = matrix.type, form = matrix\n // 03 00 00 00 03 00 00 00 rows = 3, cols = 3\n \n const dv = new DataView(buf.buffer, buf.byteOffset + i_data)\n \n const label_flags = buf_data[0]\n const has_row_labels = Boolean(label_flags & 0x01)\n const has_col_labels = Boolean(label_flags & 0x02)\n \n let row_labels: DdbObj<DdbVectorValue> | null = null\n let col_labels: DdbObj<DdbVectorValue> | null = null\n \n let offset = 1\n \n if (has_row_labels) {\n row_labels = this.parse_vector(\n buf_data.subarray(offset + 2),\n le,\n buf_data[offset] as DdbType\n )\n row_labels.length += 2\n offset += row_labels.length\n }\n \n if (has_col_labels) {\n col_labels = this.parse_vector(\n buf_data.subarray(offset + 2),\n le,\n buf_data[offset] as DdbType\n )\n col_labels.length += 2\n offset += col_labels.length\n }\n \n if (buf_data[offset] !== type)\n throw new Error('matrix.datatype !== matrix.type')\n \n const rows = dv.getUint32(offset + 2, le)\n const cols = dv.getUint32(offset + 6, le)\n \n const [len_items, data] = this.parse_vector_items(\n buf_data.subarray(offset + 10),\n le,\n type,\n rows * cols // 假设小于 2**32\n )\n \n offset += 10 + len_items\n \n return new this({\n le,\n form, \n type,\n length: i_data + offset,\n rows,\n cols,\n value: {\n rows: row_labels,\n cols: col_labels,\n data,\n },\n })\n }\n \n \n default:\n return new this({\n le,\n form,\n type,\n length: i_data + buf_data.length,\n value: buf_data\n })\n }\n }\n \n \n static parse_scalar (buf: Uint8Array, le: boolean, type: DdbType): [number, DdbScalarValue] {\n switch (type) {\n case DdbType.void:\n return [1, null]\n \n \n case DdbType.bool: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getInt8(0)\n return [1, value === nulls.int8 ? null : Boolean(value)]\n }\n \n \n case DdbType.char: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getInt8(0)\n return [1, value === nulls.int8 ? null : value]\n }\n \n \n case DdbType.short: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getInt16(0, le)\n return [2, value === nulls.int16 ? null : value]\n }\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime: \n case DdbType.datehour: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getInt32(0, le)\n return [4, value === nulls.int32 ? null : value]\n }\n \n \n case DdbType.float: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getFloat32(0, le)\n return [4, value === nulls.float32 ? null : value]\n }\n \n \n case DdbType.double: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getFloat64(0, le)\n return [8, value === nulls.double ? null : value]\n }\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const value = dv.getBigInt64(0, le)\n return [8, value === nulls.int64 ? null : value]\n }\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.code:\n case DdbType.handle:\n case DdbType.functiondef: \n \n // mysql 插件 connect 方法会返回 resource 类型的对象\n case DdbType.resource: {\n const i_head = type === DdbType.functiondef ? 1 : 0\n let i_zero = buf.indexOf(0, i_head)\n let i_end: number // 整个字符串(包括 0)的末尾,excluding\n if (i_zero === -1)\n i_end = i_zero = buf.length\n else\n i_end = i_zero + 1\n // 调整了 i_zero 到字符串(不包括 0)的末尾,excluding\n \n const str = this.dec.decode(\n buf.subarray(i_head, i_zero)\n )\n \n return [\n i_end,\n type === DdbType.functiondef ?\n {\n type: buf[0] as DdbFunctionType,\n name: str\n }\n :\n str\n ]\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [\n 16,\n buf.slice(0, 16)\n ]\n \n \n case DdbType.blob: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const length = dv.getUint32(0, le)\n \n return [\n 4 + length,\n buf.slice(4, 4 + length)\n ]\n }\n \n \n case DdbType.complex:\n case DdbType.point: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [\n 16,\n [\n dv.getFloat64(0, le),\n dv.getFloat64(8, le)\n ] as [number, number]\n ]\n }\n \n \n case DdbType.duration: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [\n 8,\n {\n unit: dv.getUint32(4, le),\n data: dv.getInt32(0, le)\n } as DdbDurationValue\n ]\n }\n \n default:\n throw new Error(`${DdbType[type] || type} 暂时不支持解析`)\n }\n }\n \n \n /** parse: rows, cols, items \n 返回的 ddbobj.length 不包括 vector 的 type 和 form\n */\n static parse_vector (buf: Uint8Array, le: boolean, type: DdbType): DdbObj<DdbVectorValue> {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n \n const rows = dv.getUint32(0, le)\n \n let i_items_start = 8\n \n if (type < 64 || type >= 128) {\n const [len_items, value] = this.parse_vector_items(\n buf.subarray(i_items_start),\n le,\n type,\n rows\n )\n \n return new this({\n le,\n form: DdbForm.vector,\n type,\n length: i_items_start + len_items,\n cols: 1,\n rows,\n value,\n })\n }\n \n \n // array vector\n \n // av = array(INT[], 0, 3)\n // append!(av, [1..4])\n // append!(av, [1..70000])\n // av\n \n // <Buffer 44 01 type = array vector, form = vector\n // 02 00 00 00 74 11 01 00 rows = 2, cols = 70004 (0x011174)\n \n // block 0\n // 01 00 block.rows = 1\n // 04 block.unit = 4\n // 00 reserved\n // 04 00 00 00 block.lengths = [4]\n // 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 block.data\n \n // block 1\n // 01 00 block.rows = 1\n // 04 block.unit = 4\n // 00 reserved\n // 70 11 01 00 block.lengths = [70000 (0x00011170)]\n // 01 00 00 00 02 00 00 00 ... 279992 more bytes> block.data\n \n const cols = dv.getUint32(4, le)\n \n let blocks: DdbArrayVectorBlock[] = [ ]\n \n let i_block_start = i_items_start\n \n // 解析一个 block\n for (let i_row = 0; i_row < rows; ) {\n /** 对应 array vector 中元素个数 */\n const rows = dv.getUint16(i_block_start, le)\n \n /** 每个 length 占用的字节数 */\n const unit = dv.getUint8(i_block_start + 2)\n \n /** array vector 每个元素的子元素长度 */\n let lengths: Uint32Array | Uint16Array | Uint8Array\n \n const i_lengths_start = i_block_start + 4\n const i_data_start = i_lengths_start + rows * unit\n \n const lengths_buf = buf.slice(\n i_lengths_start,\n i_data_start\n )\n \n switch (unit) {\n case 1:\n lengths = lengths_buf\n break\n \n case 2:\n lengths = new Uint16Array(lengths_buf.buffer)\n break\n \n case 4:\n lengths = new Uint32Array(lengths_buf.buffer)\n break\n \n default:\n throw new Error(`array vector 存在非法 unit = ${unit}`)\n }\n \n let total_length = 0\n for (const x of lengths)\n total_length += x\n \n const [len_items, data] = this.parse_vector_items(\n buf.subarray(i_data_start),\n le,\n type - 64,\n total_length\n )\n \n blocks.push({\n unit,\n rows,\n lengths,\n data: data as Int8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array\n })\n \n i_block_start = i_data_start + len_items\n \n i_row += rows\n }\n \n \n return new this({\n le,\n form: DdbForm.vector,\n type,\n length: i_block_start,\n cols,\n rows,\n value: blocks\n })\n }\n \n \n /** 有可能没有字节对齐,不能直接使用原有 message 的 arraybuffer, 统一复制出来,让原有 arraybuffer 被回收掉比较好 */\n static parse_vector_items (\n buf: Uint8Array, \n le: boolean,\n type: DdbType, \n length: number\n ): [\n number, \n DdbVectorValue\n ] {\n switch (type) {\n case DdbType.bool:\n case DdbType.char:\n return [\n length,\n new Int8Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + length\n )\n )\n ]\n \n case DdbType.short:\n return [\n 2 * length,\n new Int16Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 2 * length\n )\n )\n ]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n case DdbType.datehour:\n return [\n 4 * length,\n new Int32Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 4 * length\n )\n )\n ]\n \n \n case DdbType.float:\n return [\n 4 * length,\n new Float32Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 4 * length\n )\n )\n ]\n \n \n case DdbType.double:\n return [\n 8 * length,\n new Float64Array(\n buf.buffer.slice(\n buf.byteOffset, \n buf.byteOffset + 8 * length\n )\n )\n ]\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [\n 8 * length,\n new BigInt64Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 8 * length\n )\n )\n ]\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.handle:\n case DdbType.code: {\n let value = new Array<string>(length)\n let i_head = 0, i_tail = i_head\n for (let i = 0; i < length; i++) {\n i_tail = buf.indexOf(0, i_head)\n value[i] = this.dec.decode(\n buf.subarray(i_head, i_tail)\n )\n i_head = i_tail + 1\n }\n return [i_head, value]\n }\n \n \n case DdbType.symbol_extended: {\n // <Buffer 91 01 type = symbol extended, form = vector\n // 05 00 00 00 01 00 00 00 row = 5, col = 1\n \n // buf:\n // 00 00 00 00 symbol base id = 0 (uint32)\n // 02 00 00 00 symbol base size = 2\n // 00 61 61 00 以 \\0 分割的字符串\n // 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n const base_id = dv.getUint32(0, le)\n const base_size = dv.getUint32(4, le)\n \n let base_length = 0\n let base = this.symbol_bases[base_id]\n \n // base_size 为 0 时复用之前的 symbol base\n if (base_size) {\n [base_length, base] = this.parse_vector_items(\n buf.subarray(8),\n le,\n DdbType.string,\n base_size\n ) as [number, string[]]\n \n this.symbol_bases[base_id] = base\n }\n \n const value_start = 8 + base_length\n const value_end = value_start + length * 4\n \n const data = new Uint32Array(\n buf.buffer.slice(\n buf.byteOffset + value_start,\n buf.byteOffset + value_end\n )\n )\n \n return [\n value_end,\n {\n base_id,\n base,\n data\n }\n ]\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [\n 16 * length,\n new Uint8Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 16 * length\n )\n )\n ]\n \n \n case DdbType.blob: {\n // <Buffer 20 01 type = blob, form = vector\n // 02 00 00 00 01 00 00 00 cols = 2, rows = 1\n // 04 00 00 00 61 62 63 64 \n // 04 00 00 00 61 62 63 64>\n \n let value = new Array<Uint8Array>(length)\n const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n let i_head = 0\n for (let i = 0; i < length; i++) {\n const sublen = dv.getUint32(i_head, le)\n const i_blob_head = i_head + 4\n const i_blob_tail = i_blob_head + sublen\n value[i] = buf.slice(i_blob_head, i_blob_tail)\n i_head = i_blob_tail\n }\n \n return [i_head, value]\n }\n \n \n case DdbType.complex:\n case DdbType.point: \n return [\n 16 * length,\n new Float64Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 16 * length\n )\n )\n ]\n \n \n case DdbType.any: {\n // [1, 2, 'a', 'aaa']\n // any[4](<Buffer \n // 04 00 DdbType.int, DdbForm.scalar\n // 01 00 00 00 \n // 04 00 DdbType.int, DdbForm.scalar\n // 02 00 00 00 \n // 02 00 DdbType.char, DdbForm.scalar\n // 61 \n // 12 00 DdbType.string, DdbForm.scalar\n // 61 61 61 00>)\n \n \n let values = new Array<DdbObj>(length)\n let i_head = 0\n for (let i = 0; i < length; i++) {\n const obj = this.parse(\n buf.subarray(i_head),\n le\n )\n values[i] = obj\n i_head += obj.length\n }\n \n return [\n i_head,\n values\n ]\n }\n \n // case DdbType.duration: -> 实际会返回一个 any vector\n // [2y, 1M, 3d, 7H, 11m, 12s, 15ms, 16us, 17ns]\n // <Buffer 19 01 type = any, form = vector\n // 09 00 00 00 01 00 00 00 rows = 9, cols = 1\n // 24 00 type = DdbType.duration, form = scalar\n // 02 00 00 00 09 00 00 00 \n // 24 00 01 00 00 00 08 00 00 00 24 00 03 00 00 00 06 00 00 00 24 00 07 00 00 00 05 00 00 00 ... 50 more bytes>\n \n \n default:\n return [0, buf]\n }\n }\n \n \n pack (): Uint8Array {\n const { form, type, value } = this\n \n let header = new Uint8Array(2)\n header[0] = type\n header[1] = form\n \n const body = (() => {\n switch (form) {\n case DdbForm.scalar:\n switch (type) {\n case DdbType.void:\n return [Uint8Array.of(1)]\n \n case DdbType.bool:\n return [\n Int8Array.of(\n value === null ?\n nulls.int8\n :\n Number(value)\n )\n ]\n \n \n case DdbType.char:\n return [\n Int8Array.of(\n (value === null ?\n nulls.int8\n :\n value as number\n )\n )\n ]\n \n \n case DdbType.short:\n return [\n Int16Array.of(\n value === null ?\n nulls.int16\n :\n value as number\n )\n ]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n case DdbType.datehour:\n return [\n Int32Array.of(\n value === null ?\n nulls.int32\n :\n value as number\n )\n ]\n \n \n case DdbType.float:\n return [\n Float32Array.of(\n value === null ?\n nulls.float32\n :\n value as number\n )\n ]\n \n \n case DdbType.double:\n return [\n Float64Array.of(\n value === null ?\n nulls.double\n :\n value as number\n )\n ]\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [\n BigInt64Array.of(\n value === null ?\n nulls.int64\n :\n value as bigint\n )\n ]\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.code:\n case DdbType.handle:\n case DdbType.resource:\n return [\n DdbObj.enc.encode(value as string),\n Uint8Array.of(0),\n ]\n \n case DdbType.functiondef:\n return [\n Uint8Array.of((value as DdbFunctionDefValue).type),\n DdbObj.enc.encode((value as DdbFunctionDefValue).name),\n Uint8Array.of(0)\n ]\n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [this.value as Uint8Array]\n \n \n case DdbType.blob:\n return [\n Uint32Array.of(\n (this.value as Uint8Array).byteLength\n ),\n this.value as Uint8Array\n ]\n \n \n case DdbType.complex:\n case DdbType.point:\n return [Float64Array.from(this.value as [number, number])]\n \n \n case DdbType.duration: {\n const { unit, data } = this.value as DdbDurationValue\n return [Int32Array.of(data, unit)]\n }\n \n default:\n throw new Error(`${DdbType[type] || type} 暂时不支持序列化`)\n }\n \n \n case DdbForm.vector:\n case DdbForm.pair:\n // pack array vector\n if (form === DdbForm.vector && 64 <= type && type < 128)\n return [\n Uint32Array.of(this.rows, this.cols),\n ... (this.value as DdbArrayVectorBlock[]).map(block => ([\n Uint16Array.of(block.rows),\n Uint8Array.of(block.unit, 0),\n block.lengths,\n block.data as any\n ])).flat()\n ]\n \n return [\n Uint32Array.of(this.rows, 1),\n ... DdbObj.pack_vector_body(value as DdbVectorValue, type, this.rows)\n ]\n \n \n case DdbForm.set:\n return [\n new DdbObj({\n ...this,\n form: DdbForm.vector,\n }).pack()\n ]\n \n \n case DdbForm.table:\n return [\n Uint32Array.of(this.rows, this.cols),\n DdbObj.enc.encode(this.name || ''),\n \n // column names\n Uint8Array.of(0),\n ...DdbObj.pack_vector_body(\n (this.value as DdbObj[]).map((col, i) => \n col.name || `col${i}`\n ),\n DdbType.string,\n this.cols\n ),\n \n // column vectors\n ...(this.value as DdbObj[]).map(col => \n col.pack()\n )\n ]\n \n \n case DdbForm.dict:\n return [\n (value as DdbDictValue)[0].pack(),\n (value as DdbDictValue)[1].pack(),\n ]\n \n case DdbForm.chart: {\n const {\n type,\n stacking,\n titles: {\n chart,\n x_axis,\n y_axis,\n },\n extras,\n data\n } = this.value as DdbChartValue\n \n const {\n value: [keys, values]\n } = new DdbDict({\n chartType: new DdbInt(type),\n stacking,\n title: new DdbVectorString([chart, x_axis, y_axis]),\n ... extras ? (() => {\n const { multi_y_axes, ...extras_other } = extras\n \n return {\n extras: new DdbDict({\n multiYAxes: multi_y_axes,\n ...extras_other\n })\n }\n })() : { },\n data,\n })\n \n return [\n keys.pack(),\n values.pack(),\n ]\n }\n \n case DdbForm.matrix: {\n const { rows, cols, data } = value as DdbMatrixValue\n \n return [\n Uint8Array.of(\n (rows && 0x01) | (cols && 0x02),\n ),\n ... rows ? [rows.pack()] : [ ],\n ... cols ? [cols.pack()] : [ ],\n Uint8Array.of(this.type, this.form),\n Uint32Array.of(this.rows, this.cols),\n ... DdbObj.pack_vector_body(data, this.type, this.rows * this.cols)\n ]\n }\n \n default:\n throw new Error(`${DdbForm[form]} 暂不支持序列化`)\n }\n })()\n \n \n if (!body)\n return new Uint8Array(0)\n \n return concat([\n header,\n ...body\n ])\n }\n \n \n static pack_vector_body (\n value: DdbVectorValue,\n type: DdbType,\n length: number\n ): ArrayBufferView[] {\n switch (type) {\n case DdbType.bool:\n return [value as Int8Array]\n \n \n case DdbType.char:\n return [value as Int8Array]\n \n \n case DdbType.short:\n return [value as Int16Array]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n case DdbType.datehour:\n return [value as Int32Array]\n \n \n case DdbType.float:\n return [value as Float32Array]\n \n \n case DdbType.double:\n return [value as Float64Array]\n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [value as BigInt64Array]\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.handle:\n case DdbType.code: {\n let bufs = new Array<Uint8Array>(length * 2)\n for (let i = 0; i < length; i++) {\n bufs[2 * i] = this.enc.encode((value as string[])[i])\n bufs[2 * i + 1] = Uint8Array.of(0)\n }\n return bufs\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [value as Uint8Array]\n \n \n case DdbType.blob: {\n let bufs = new Array<ArrayBufferView>(length * 2)\n for (let i = 0; i < length; i++) {\n const blob_value = (value as Uint8Array[])[i]\n bufs[2 * i] = Uint32Array.of(blob_value.length)\n bufs[2 * i + 1] = blob_value\n }\n return bufs\n }\n \n \n case DdbType.complex:\n case DdbType.point: \n return [value as Float64Array]\n \n \n case DdbType.any: {\n // [1, 2, 'a', 'aaa']\n // any[4](<Buffer \n // 04 00 DdbType.int, DdbForm.scalar\n // 01 00 00 00 \n // 04 00 DdbType.int, DdbForm.scalar\n // 02 00 00 00 \n // 02 00 DdbType.char, DdbForm.scalar\n // 61 \n // 12 00 DdbType.string, DdbForm.scalar\n // 61 61 61 00>)\n \n let bufs = new Array<Uint8Array>(length)\n for (let i = 0; i < length; i++)\n bufs[i] = (value as DdbObj[])[i].pack()\n return bufs\n }\n \n \n case DdbType.symbol_extended: {\n const { base_id, base, data } = value as DdbSymbolExtendedValue\n \n return [\n Uint32Array.of(\n base_id || 0,\n base.length,\n ),\n ...this.pack_vector_body(base, DdbType.string, base.length),\n data\n ]\n }\n \n default:\n throw new Error(`vector ${DdbType[type]} 暂不支持序列化`)\n }\n }\n \n \n [inspect.custom] (depth: number, options: InspectOptions, _inspect) {\n const type = this.inspect_type()\n \n const data = (() => {\n switch (this.form) {\n case DdbForm.scalar:\n return format(this.type, this.value, this.le, options)\n \n case DdbForm.vector:\n case DdbForm.pair:\n case DdbForm.set: {\n const form = this.form\n \n function format_array (items: string[], ellipsis: boolean) {\n const str_items = items.join(', ') + (ellipsis ? ', ...' : '')\n \n return form === DdbForm.pair ?\n str_items\n :\n str_items.bracket('square')\n }\n \n \n if (64 <= this.type && this.type < 128) { // array vector\n // 因为 array vector 目前只支持:Logical, Integral(不包括 INT128, COMPRESS 类型), Floating, Temporal\n // 都对应 TypedArray 中的一格,所以直接根据 index 去取即可\n // av = array(INT[], 0, 5)\n // append!(av, [1..1])\n // append!(av, [1..70000])\n // append!(av, [1..1])\n // append!(av, [1..500])\n // ...\n // av\n const _type = this.type - 64\n \n const limit = 10\n \n let items = new Array(\n Math.min(limit, this.rows)\n )\n \n let i_items = 0\n \n for (const { lengths, data } of this.value as DdbArrayVectorBlock[]) {\n let acc_len = 0\n \n for (const length of lengths) {\n let _items = new Array(\n Math.min(limit, length)\n )\n \n for (let i = 0; i < _items.length; i++)\n _items[i] = format(_type, data[acc_len + i], this.le, options)\n \n items[i_items++] = format_array(\n _items,\n length > limit\n )\n \n acc_len += length\n }\n \n if (i_items >= limit)\n break\n }\n \n return format_array(\n items,\n this.rows > limit\n )\n }\n \n switch (this.type) {\n case DdbType.symbol_extended: {\n const limit = 50 as const\n \n const { base, data } = this.value as DdbSymbolExtendedValue\n \n let items = new Array(\n Math.min(limit, data.length)\n )\n \n for (let i = 0; i < items.length; i++)\n items[i] = inspect(base[data[i]], options)\n \n return format_array(\n items,\n data.length > limit\n )\n }\n \n case DdbType.uuid: \n case DdbType.int128: \n case DdbType.ipaddr: {\n const limit = 10 as const\n \n const value = this.value as Uint8Array\n \n const len_data = value.length / 16\n \n let items = new Array(\n Math.min(limit, len_data)\n )\n \n for (let i = 0; i < items.length; i++)\n items[i] = format(\n this.type,\n value.subarray(16 * i, 16 * (i + 1)),\n this.le,\n options\n )\n \n return format_array(\n items,\n len_data > limit\n )\n }\n \n case DdbType.complex:\n case DdbType.point: {\n const limit = 20 as const\n \n const value = this.value as Float64Array\n \n const len_data = value.length / 2\n \n let items = new Array(\n Math.min(limit, len_data)\n )\n \n for (let i = 0; i < items.length; i++)\n items[i] = format(\n this.type,\n value.subarray(2 * i, 2 * (i + 1)),\n this.le,\n options\n )\n \n return format_array(\n items,\n len_data > limit\n )\n }\n \n default: {\n const limit = 50 as const\n \n let items = new Array(\n Math.min(limit, (this.value as any[]).length)\n )\n \n for (let i = 0; i < items.length; i++)\n items[i] = format(this.type, this.value[i], this.le, options)\n \n return format_array(\n items,\n (this.value as any[]).length > limit\n )\n }\n }\n \n }\n }\n \n if (this.value instanceof Uint8Array)\n return inspect(\n typed_array_to_buffer(this.value),\n options\n )\n \n return inspect(this.value, options)\n })()\n \n return `${options.colors ? type.blue : type}(${ this.name ? `${inspect(this.name, options)}, ` : '' }${data})`\n }\n \n \n inspect_type () {\n const tname = DdbType[this.type]\n \n switch (this.form) {\n case DdbForm.scalar:\n if (this.type === DdbType.functiondef)\n return `functiondef<${DdbFunctionType[(this.value as DdbFunctionDefValue).type]}>`\n \n return tname\n \n case DdbForm.vector:\n if (64 <= this.type && this.type < 128)\n return `${DdbType[this.type - 64]}[][${this.rows}]`\n return `${tname}[${this.rows}]`\n \n case DdbForm.pair:\n return `pair<${tname}>`\n \n case DdbForm.set:\n return `set<${tname}>[${this.rows}]`\n \n case DdbForm.table:\n return `table[${this.rows}r][${this.cols}c]`\n \n case DdbForm.dict:\n return `dict<${DdbType[(this.value[0] as DdbObj).type]}, ${DdbType[(this.value[1] as DdbObj).type]}>`\n \n case DdbForm.chart:\n return `chart<${DdbChartType[(this.value as DdbChartValue).type]}>`\n \n case DdbForm.matrix:\n return `matrix<${tname}>[${this.rows}r][${this.cols}c]`\n \n default:\n return `${DdbForm[this.form]} ${tname}`\n }\n }\n \n \n /** 自动转换 js string, boolean 为 DdbObj */\n static to_ddbobj (value: DdbObj | string | boolean): DdbObj {\n if (value && value instanceof DdbObj)\n return value\n \n const type = typeof value\n \n switch (type) {\n case 'string':\n return new DdbString(value as string)\n \n case 'boolean':\n return new DdbBool(value as boolean)\n \n default: \n throw new Error(`Cannot automatically convert ${type} to DdbObj`)\n }\n }\n \n \n /** 转换 js 数组为 DdbObj[] */\n static to_ddbobjs (values: any[]) {\n return values.map(value => \n this.to_ddbobj(value)\n )\n }\n \n \n to_rows <T extends Record<string, any> = Record<string, any>> () {\n if (this.form !== DdbForm.table)\n throw new Error('this.form is not DdbForm.table, cannot to_rows')\n \n let rows = new Array<T>(this.rows)\n \n for (let i = 0; i < this.rows; i++) {\n let row: any = { }\n for (let j = 0; j < this.cols; j++) {\n const { type, name, value: values }: DdbObj = this.value[j] // column\n \n switch (type) {\n case DdbType.bool: {\n const value = values[i]\n row[name] = value === nulls.int8 ?\n null\n :\n Boolean(value)\n break\n }\n \n case DdbType.ipaddr:\n row[name] = (values as Uint8Array).subarray(16 * i, 16 * (i + 1))\n break\n \n case DdbType.symbol_extended: {\n const { base, data } = values as DdbSymbolExtendedValue\n row[name] = base[data[i]]\n break\n }\n \n default:\n row[name] = values[i]\n }\n }\n rows[i] = row\n }\n \n return rows\n }\n \n \n /** convert dict<string, any> to js object (Record<string, any>)\n - options?:\n - strip?: `false` Whether to directly extract and strip the value in DdbObj as the value of js object (discard the rest of the information in DdbObj, only keep the value)\n - deep?: `false` Whether to convert recursively\n */\n to_dict <T extends Record<string, DdbObj> = Record<string, DdbObj>> (): T\n to_dict <T extends Record<string, any> = Record<string, any>> (options: { strip: true }): T\n to_dict <T extends Record<string, any> = Record<string, any>> (options?: { strip?: boolean, deep?: boolean }): T\n to_dict <T = Record<string, any>> ({\n strip,\n deep,\n }: {\n strip?: boolean\n deep?: boolean\n } = { }) {\n if (this.form !== DdbForm.dict)\n throw new Error('this.form is not DdbForm.dict and cannot be converted to js object')\n \n const [{ value: keys, type: key_type }, { value: values, type: value_type }] = this.value as DdbDictValue\n \n if (key_type !== DdbType.string || value_type !== DdbType.any)\n throw new Error('Not dict<string, any>, automatic conversion to js object is not supported for the time being')\n \n if (deep && !strip)\n throw new Error('strip = true must be set when deep = true')\n \n let obj = { }\n \n for (let i = 0; i < this.rows; i++) {\n let value: DdbObj = values[i]\n if (deep && value.form === DdbForm.dict)\n obj[keys[i]] = value.to_dict({ strip, deep })\n else\n obj[keys[i]] = strip ? value.value : value\n }\n \n return obj as T\n }\n}\n\n\nexport function format (type: DdbType, value: DdbValue, le: boolean, options: InspectOptions) {\n switch (type) {\n case DdbType.bool:\n return inspect(\n (value === null || value === nulls.int8) ?\n null\n :\n Boolean(value),\n options\n )\n \n case DdbType.char:\n return inspect(\n (value === null || value === nulls.int8) ?\n null\n :\n // ascii printable\n // http://facweb.cs.depaul.edu/sjost/it212/documents/ascii-pr.htm\n (32 <= (value as number) && (value as number) <= 126) ?\n String.fromCharCode(value as number)\n :\n value,\n options\n )\n \n case DdbType.short:\n return inspect(\n (value === null || value === nulls.int16) ?\n null\n :\n value,\n options\n )\n \n case DdbType.int:\n return inspect(\n (value === null || value === nulls.int32) ?\n null\n :\n value,\n options\n )\n \n case DdbType.long:\n return (value === null || value === nulls.int64) ?\n 'null'\n :\n options.colors ?\n String(value).green\n :\n String(value)\n \n case DdbType.date:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n date2str(value as number).green\n :\n date2str(value as number)\n \n case DdbType.month:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n month2str(value as number).green\n :\n month2str(value as number)\n \n case DdbType.time:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n time2str(value as number).green\n :\n time2str(value as number)\n \n case DdbType.minute:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n minute2str(value as number).green\n :\n minute2str(value as number)\n \n case DdbType.second:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n second2str(value as number).green\n :\n second2str(value as number)\n \n case DdbType.datetime:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n datetime2str(value as number).green\n :\n datetime2str(value as number)\n \n case DdbType.timestamp:\n return (value === null || value === nulls.int64) ?\n 'null'\n :\n options.colors ?\n timestamp2str(value as bigint).green\n :\n timestamp2str(value as bigint)\n \n case DdbType.nanotime:\n return (value === null || value === nulls.int64) ?\n 'null'\n :\n options.colors ?\n nanotime2str(value as bigint).green\n :\n nanotime2str(value as bigint)\n \n case DdbType.nanotimestamp:\n return (value === null || value === nulls.int64) ?\n 'null'\n :\n options.colors ?\n nanotimestamp2str(value as bigint).green\n :\n nanotimestamp2str(value as bigint)\n \n case DdbType.float:\n return (value === null || value === nulls.float32) ?\n 'null'\n :\n inspect(value as number, options)\n \n case DdbType.double:\n return (value === null || value === nulls.double) ?\n 'null'\n :\n inspect(value as number, options)\n \n case DdbType.symbol:\n case DdbType.string:\n return inspect(value as string, options)\n \n case DdbType.uuid: \n return options.colors ?\n uuid2str(value as Uint8Array, le).green\n :\n uuid2str(value as Uint8Array, le)\n \n case DdbType.functiondef:\n return inspect(\n (value as DdbFunctionDefValue).name,\n options\n )\n \n case DdbType.handle:\n case DdbType.code:\n case DdbType.resource:\n return inspect(value as string, options)\n \n case DdbType.datehour:\n return (value === null || value === nulls.int32) ?\n 'null'\n :\n options.colors ?\n datehour2str(value as number).green\n :\n datehour2str(value as number)\n \n case DdbType.ipaddr:\n return options.colors ?\n ipaddr2str(value as Uint8Array, le).green\n :\n ipaddr2str(value as Uint8Array, le)\n \n case DdbType.int128:\n return options.colors ?\n int1282str(value as Uint8Array, le).green\n :\n int1282str(value as Uint8Array, le)\n \n case DdbType.blob:\n return inspect(\n (value as Uint8Array).length > 100 ?\n DdbObj.dec.decode(\n (value as Uint8Array).subarray(0, 98)\n ) + '…'\n :\n DdbObj.dec.decode(value as Uint8Array),\n options\n )\n \n case DdbType.point: {\n let [x, y] = value as [number, number]\n if (x === nulls.double)\n x = null\n if (y === nulls.double)\n y = null\n \n return options.colors ?\n `(${String(x).green}, ${String(y).green})`\n :\n `(${String(x)}, ${String(y)})`\n }\n \n case DdbType.complex: {\n let [x, y] = value as [number, number]\n if (x === nulls.double)\n x = null\n if (y === nulls.double)\n y = null\n \n return options.colors ?\n `${String(x).green}+${`${String(y)}i`.green}`\n :\n `${String(x)}+${String(y)}i`\n }\n \n case DdbType.duration: {\n const { data, unit } = value as DdbDurationValue\n const str = `${data}${DdbDurationUnit[unit]}`\n return options.colors ? str.green : str\n }\n \n default:\n return inspect(value, options)\n }\n}\n\n\nexport class DdbVoid extends DdbObj<undefined> {\n constructor () {\n super({\n form: DdbForm.scalar,\n type: DdbType.void,\n value: null,\n })\n }\n}\n\n\nexport class DdbBool extends DdbObj<boolean> {\n constructor (value: boolean | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.bool,\n value,\n })\n }\n}\n\nexport class DdbChar extends DdbObj<string> {\n constructor (value: string | number | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.char,\n value: typeof value === 'string' ?\n value.charCodeAt(0)\n :\n value\n })\n }\n}\n\nexport class DdbInt extends DdbObj<number> {\n constructor (value: number | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.int,\n value,\n })\n }\n}\n\nexport class DdbString extends DdbObj<string> {\n constructor (value: string) {\n super({\n form: DdbForm.scalar,\n type: DdbType.string,\n value\n })\n }\n}\n\nexport class DdbLong extends DdbObj<bigint> {\n constructor (value: bigint | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.long,\n value\n })\n }\n}\n\nexport class DdbDouble extends DdbObj<number> {\n constructor (value: number | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.double,\n value\n })\n }\n}\n\nexport class DdbDateTime extends DdbObj<number> {\n constructor (value: number | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.datetime,\n value\n })\n }\n}\n\nexport class DdbTimeStamp extends DdbObj<bigint> {\n constructor (value: bigint | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.timestamp,\n value\n })\n }\n}\n\nexport class DdbNanoTimeStamp extends DdbObj<bigint> {\n constructor (value: bigint | null) {\n super({\n form: DdbForm.scalar,\n type: DdbType.nanotimestamp,\n value\n })\n }\n}\n\nexport class DdbPair extends DdbObj<Int32Array> {\n constructor (l: number | null, r: number | null = null) {\n super({\n form: DdbForm.pair,\n type: DdbType.int,\n rows: 2,\n cols: 1,\n value: Int32Array.of(\n l === null ? nulls.int32 : l,\n r === null ? nulls.int32 : r,\n )\n })\n }\n}\n\nexport class DdbFunction extends DdbObj<DdbFunctionDefValue> {\n constructor (name: string, type: DdbFunctionType) {\n super({\n form: DdbForm.scalar,\n type: DdbType.functiondef,\n value: { type, name }\n })\n }\n}\n\n\nexport class DdbVectorInt extends DdbObj<Int32Array> {\n constructor (ints: (number | null)[] | Int32Array, name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.int,\n rows: ints.length,\n cols: 1,\n value: ints instanceof Int32Array ?\n ints\n :\n Int32Array.from(ints, v => \n v === null ?\n nulls.int32\n :\n v\n ),\n name,\n })\n }\n}\n\nexport class DdbVectorDouble extends DdbObj<Float64Array> {\n constructor (doubles: (number | null)[] | Float64Array, name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.double,\n rows: doubles.length,\n cols: 1,\n value: doubles instanceof Float64Array ?\n doubles\n :\n Float64Array.from(doubles, v => \n v === null ?\n nulls.double\n :\n v\n ),\n name,\n })\n }\n}\n\nexport class DdbVectorString extends DdbObj<string[]> {\n constructor (strings: string[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.string,\n rows: strings.length,\n cols: 1,\n value: strings,\n name,\n })\n }\n}\n\nexport class DdbVectorAny extends DdbObj {\n constructor (objs: (DdbObj | string | boolean)[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.any,\n rows: objs.length,\n cols: 1,\n value: DdbObj.to_ddbobjs(objs),\n name,\n })\n }\n}\n\nexport class DdbVectorSymbol extends DdbObj <DdbSymbolExtendedValue> {\n constructor (strings: string[], name?: string) {\n let map = new Map<string, number>([\n ['', 0]\n ])\n \n let data = new Uint32Array(strings.length)\n \n for (let i = 0; i < strings.length; i++) {\n const x = strings[i]\n \n let index = map.get(x)\n \n if (index === undefined) {\n index = map.size\n map.set(x, index)\n }\n \n data[i] = index\n }\n \n super({\n form: DdbForm.vector,\n type: DdbType.symbol_extended,\n rows: strings.length,\n cols: 1,\n value: {\n base: [...map.keys()],\n base_id: null,\n data,\n },\n name\n })\n }\n}\n\nexport class DdbSetInt extends DdbObj<Int32Array> {\n constructor (ints: (number | null)[] | Set<number> | Int32Array) {\n super({\n form: DdbForm.set,\n type: DdbType.int,\n rows: ints instanceof Set ? \n ints.size\n :\n ints.length,\n cols: 1,\n value: ints instanceof Int32Array ?\n ints\n :\n Int32Array.from(ints, v => \n v === null ?\n nulls.int32\n :\n v\n ),\n })\n }\n}\n\nexport class DdbSetDouble extends DdbObj<Float64Array> {\n constructor (doubles: (number | null)[] | Set<number> | Float64Array) {\n super({\n form: DdbForm.set,\n type: DdbType.double,\n rows: doubles instanceof Set ? \n doubles.size\n :\n doubles.length,\n cols: 1,\n value: doubles instanceof Int32Array ?\n doubles\n :\n Int32Array.from(doubles, v => \n v === null ?\n nulls.int32\n :\n v\n ),\n })\n }\n}\n\nexport class DdbSetString extends DdbObj<string[]> {\n constructor (strings: string[] | Set<string>) {\n if (strings instanceof Set)\n strings = [...strings]\n \n super({\n form: DdbForm.set,\n type: DdbType.string,\n rows: strings.length,\n cols: 1,\n value: strings\n })\n }\n}\n\n/** Constructs a DdbDict object, which supports two usages: \n - The incoming type is the keys of DdbObj<DdbVectorValue>, and the two parameters of values directly form the DdbDict of dict<keys.type, values.type>\n - Pass in js object (type is Record<string, boolean | string | DdbObj>), automatically converted to DdbDict of dict<string, any>\n*/\nexport class DdbDict extends DdbObj<DdbDictValue> {\n constructor (obj: Record<string, boolean | string | DdbObj>)\n constructor (keys: DdbObj<DdbVectorValue>, values: DdbObj<DdbVectorValue>)\n constructor (arg0: DdbObj | Record<string, boolean | string | DdbObj>, arg1?: DdbObj) {\n if (arg1)\n super({\n form: DdbForm.dict,\n type: arg1.type,\n rows: (arg0 as DdbObj).rows,\n cols: 2,\n value: [arg0 as DdbObj, arg1] as DdbDictValue\n })\n else {\n const keys = Object.keys(arg0)\n super({\n form: DdbForm.dict,\n type: DdbType.any,\n rows: keys.length,\n cols: 2,\n value: [\n new DdbVectorString(keys),\n new DdbVectorAny(\n Object.values(arg0)\n )\n ] as DdbDictValue\n })\n }\n }\n}\n\n\nexport class DdbTable extends DdbObj<DdbObj[]> {\n constructor (columns: DdbObj[], name: string = '') {\n super({\n form: DdbForm.table,\n type: DdbType.void,\n rows: columns[0].rows,\n cols: columns.length,\n name,\n value: columns,\n })\n }\n}\n\nexport function date2ms (date: number | null) {\n return (date === null || date === nulls.int32) ? \n null\n :\n timezone_offset + 1000 * 3600 * 24 * date\n}\n\nexport function date2str (date: number | null, format = 'YYYY.MM.DD') {\n return (date === null || date === nulls.int32) ? \n null\n :\n dayjs(\n date2ms(date)\n ).format(format)\n}\n\nexport function month2ms (month: number | null): number | null {\n return (month === null || month === nulls.int32) ?\n null\n :\n dayjs(\n month2str(month),\n 'YYYY.MM[M]'\n ).valueOf()\n}\n\nexport function month2str (month: number | null) {\n if (month === null || month === nulls.int32)\n return 'null'\n \n if (month < 0)\n return String(month)\n \n const _month = month % 12\n const year = Math.trunc(month / 12)\n return `${String(year).padStart(4, '0')}.${String(_month + 1).padStart(2, '0')}M`\n}\n\nexport function time2ms (time: number | null): number | null {\n return (time === null || time === nulls.int32) ?\n null\n :\n timezone_offset + time\n}\n\nexport function time2str (time: number | null, format = 'HH:mm:ss.SSS') {\n return (time === null || time === nulls.int32) ?\n null\n :\n dayjs(\n time2ms(time)\n ).format(format)\n}\n\nexport function minute2ms (minute: number | null): number | null {\n return (minute === null || minute === nulls.int32) ?\n null\n :\n timezone_offset + 60 * 1000 * minute\n}\n\nexport function minute2str (minute: number | null, format = 'HH:mm[m]') {\n return (minute === null || minute === nulls.int32) ?\n 'null'\n :\n dayjs(\n minute2ms(minute)\n ).format(format)\n}\n\nexport function second2ms (second: number | null): number | null {\n return (second === null || second === nulls.int32) ?\n null\n :\n timezone_offset + 1000 * second\n}\n\nexport function second2str (second: number | null, format = 'HH:mm:ss') {\n return (second === null || second === nulls.int32) ?\n 'null'\n :\n dayjs(\n second2ms(second)\n ).format(format)\n}\n\nexport function datetime2ms (datetime: number | null): number | null {\n return (datetime === null || datetime === nulls.int32) ?\n null\n :\n timezone_offset + 1000 * datetime\n}\n\nexport function datetime2str (datetime: number | null, format = 'YYYY.MM.DD HH:mm:ss') {\n return (datetime === null || datetime === nulls.int32) ?\n 'null'\n :\n dayjs(\n datetime2ms(datetime)\n ).format(format)\n}\n\nexport function timestamp2ms (timestamp: bigint | null): number | null {\n return (timestamp === null || timestamp === nulls.int64) ?\n null\n :\n timezone_offset + Number(timestamp)\n}\n\n/** format timestamp (bigint) to string \n - timestamp: bigint value\n - format?: \n format string, default to `YYYY.MM.DD HH:mm:ss.SSS` \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function timestamp2str (timestamp: bigint | null, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n return (timestamp === null || timestamp === nulls.int64) ?\n 'null'\n :\n dayjs(\n timestamp2ms(timestamp)\n ).format(format)\n}\n\nexport function datehour2ms (datehour: number | null): number | null {\n return (datehour === null || datehour === nulls.int32) ?\n null\n :\n timezone_offset + 1000 * 3600 * datehour\n}\n\nexport function datehour2str (datehour: number | null, format = 'YYYY.MM.DDTHH') {\n return (datehour === null || datehour === nulls.int32) ?\n 'null'\n :\n dayjs(\n timezone_offset + 1000 * 3600 * datehour\n ).format(format)\n}\n\n\n/** parse timestamp string to bigint value \n - str: timestamp string, If it is an empty string or 'null', it will return the corresponding empty value (nulls.int64)\n - format?: \n The format string corresponding to the incoming string, the default is `YYYY.MM.DD HH:mm:ss.SSS` \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function str2timestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n if (!str || str === 'null')\n return nulls.int64\n \n if (str.length !== format.length)\n throw new Error('The length of the timestamp string is not equal to the length of the format string')\n \n return BigInt(\n -timezone_offset +\n dayjs(str, format).valueOf()\n )\n}\n\nexport function nanotime2ns (nanotime: bigint | null): bigint | null {\n return nanotimestamp2ns(nanotime)\n}\n\nexport function nanotime2str (nanotime: bigint | null, format = 'HH:mm:ss.SSSSSSSSS') {\n if (nanotime === null || nanotime === nulls.int64)\n return 'null'\n \n if (nanotime < 0n)\n return String(nanotime)\n \n const i_second_start = format.indexOf('ss')\n if (i_second_start === -1)\n throw new Error('The format string must contain the format for seconds (ss)')\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n if (i_nanosecond_start === -1)\n throw new Error('The format string must contain the format for nanoseconds (SSSSSSSSS)')\n \n return (\n dayjs(\n timezone_offset + (Number(nanotime) / 1000000)\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(nanotime % 1000000000n).padStart(9, '0')\n )\n}\n\nexport function nanotimestamp2ns (nanotimestamp: bigint | null): bigint | null {\n return (nanotimestamp === null || nanotimestamp === nulls.int64) ?\n null\n :\n BigInt(timezone_offset) * 1000000n + nanotimestamp\n}\n\n/** format nanotimestamp value (bigint) to string \n - nanotimestamp: bigint value\n - format?: \n format string, default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n Seconds are in the format ss (must be included); nanoseconds are in the format SSSSSSSSS (must be included) \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function nanotimestamp2str (nanotimestamp: bigint | null, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n // tests:\n // nanotimestamp2str(0n)\n // nanotimestamp2str(-1n)\n // nanotimestamp2str(-9_9999_9999n)\n // nanotimestamp2str(-10_0000_0000n)\n // nanotimestamp2str(-10_0000_0001n)\n \n if (nanotimestamp === null || nanotimestamp === nulls.int64)\n return 'null'\n \n const i_second_start = format.indexOf('ss')\n if (i_second_start === -1)\n throw new Error('The format string must contain the format for seconds (ss)')\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n if (i_nanosecond_start === -1)\n throw new Error('The format string must contain the format for nanoseconds (SSSSSSSSS)')\n \n const remainder = nanotimestamp % 1000000000n\n const borrow = remainder < 0n\n \n return (\n dayjs(\n timezone_offset +\n // 去掉 9 位的纳秒部分,转化为毫秒\n Number(\n (nanotimestamp - remainder + (borrow ? -1000000000n : 0n)) / 1000000n\n )\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(\n borrow ?\n (remainder + 1000000000n) % 1000000000n\n :\n remainder\n ).padStart(9, '0')\n )\n}\n\n/** parse nano timestamp string to bigint value \n - str: nano timestamp string, If it is an empty string or 'null', it will return the corresponding empty value (nulls.int64)\n - format?: \n The format string corresponding to the incoming string, the default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n Seconds are in the format ss (must be included); nanoseconds are in the format SSSSSSSSS (must be included) \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function str2nanotimestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n if (!str || str === 'null')\n return nulls.int64\n \n if (str.length !== format.length)\n throw new Error('nanotimestamp string length is not equal to format string length')\n \n const i_second_start = format.indexOf('ss')\n if (i_second_start === -1)\n throw new Error('The format string must contain the format for seconds (ss)')\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n if (i_nanosecond_start === -1)\n throw new Error('Format string must contain nanosecond format (SSSSSSSSS)')\n \n return (\n BigInt(\n -timezone_offset +\n dayjs(\n str.slice(0, i_second_end),\n format.slice(0, i_second_end)\n ).valueOf()\n ) * 1000000n\n +\n BigInt(\n str.slice(i_nanosecond_start, i_nanosecond_start + 9)\n )\n )\n}\n\n\nexport function ipaddr2str (buffer: Uint8Array, le = true, ipv6?: boolean) {\n let buf = buffer\n \n if (le)\n buf = buffer.slice().reverse()\n \n const i_non_zero = buf.findIndex(x => \n x as any)\n \n if (\n ipv6 || \n i_non_zero !== -1 && i_non_zero < 12\n ) // ipv6\n return buf2ipaddr([...buf]).toString()\n else // ipv4\n return buf.subarray(12).join('.')\n}\n\nexport function uuid2str (buffer: Uint8Array, le = true) {\n const str = int1282str(buffer, le)\n return `${str.slice(0, 8)}-${str.slice(8, 12)}-${str.slice(12, 16)}-${str.slice(16, 20)}-${str.slice(20)}`\n}\n\nexport function int1282str (buffer: Uint8Array, le = true) {\n let buf = buffer\n \n if (le)\n buf = buffer.slice().reverse()\n \n return [...buf].map(x => \n x.toString(16)\n .padStart(2, '0')\n ).join('')\n}\n\nexport class DDB {\n /** 当前的 session id (http 或 tcp) */\n sid = '0'\n \n /** utf-8 text decoder */\n dec = new TextDecoder('utf-8')\n \n enc = new TextEncoder()\n \n \n /** DolphinDB WebSocket URL\n e.g. `ws://127.0.0.1:8848/`, `wss://dolphindb.com`\n */\n url: string\n \n websocket = null as WebSocket\n \n /** little endian (server) */\n le = true\n \n /** little endian (client) */\n static le_client = Boolean(\n new Uint8Array(\n Uint32Array.of(1).buffer\n )[0]\n )\n \n /** 是否在建立连接后自动登录,默认 true */\n autologin = true\n \n /** DolphinDB 登录用户名 */\n username = 'admin'\n \n /** DolphinDB 登录密码 */\n password = '123456'\n \n /** python session flag (2048) */\n python = false\n \n print_message_buffer = false\n \n print_object_buffer = false\n \n print_message = true\n \n parse_object = true\n \n /** DdbMessage listeners */\n listeners: DdbMessageListener[] = [ ]\n \n pconnect = Promise.resolve()\n \n presult = Promise.resolve(null)\n \n get connected () {\n return this.websocket?.readyState === WebSocket.OPEN\n }\n \n \n /**\n Initialize an instance of DolphinDB Client using the WebSocket URL \n (without establishing an actual network connection)\n - url: DolphinDB WebSocket URL. e.g.:`ws://127.0.0.1:8848`\n - options?:\n - autologin?: Whether to log in automatically after establishing a connection, default `true`\n - username?: DolphinDB username, default `'admin'`\n - password?: DolphinDB password, default `'123456'`\n - python?: set python session flag, default `false`\n \n @example\n let ddb = new DDB('ws://127.0.0.1:8848')\n \n // 使用 HTTPS 加密\n let ddbsecure = new DDB('wss://dolphindb.com', {\n autologin: true,\n username: 'admin',\n password: '123456',\n python: false\n })\n */\n constructor (url: string, options: {\n autologin?: boolean\n username?: string\n password?: string\n python?: boolean\n } = { }) {\n this.url = url\n \n if (options.autologin !== undefined)\n this.autologin = options.autologin\n \n if (options.username !== undefined)\n this.username = options.username\n \n if (options.password !== undefined)\n this.password = options.password\n \n if (options.python !== undefined)\n this.python = options.python\n }\n \n \n private on_message (event: { data: ArrayBuffer }) { }\n \n \n /** Establish the actual WebSocket connection to the DolphinDB corresponding to the URL\n - options?:\n - url?: DolphinDB WebSocket URL. By default, the WebSocket URL passed in when the instance is initialized is used\n - autologin?: Whether to log in automatically after establishing a connection, default `true`\n - username?: DolphinDB username, default `'admin'`\n - password?: DolphinDB password, default `'123456'`\n - python?: set python session flag, default `false`\n */\n async connect (options: {\n url?: string\n autologin?: boolean\n username?: string\n password?: string\n python?: boolean\n } = { }) {\n if (options.url !== undefined)\n this.url = options.url\n \n if (options.autologin !== undefined)\n this.autologin = options.autologin\n \n if (options.username !== undefined)\n this.username = options.username\n \n if (options.password !== undefined)\n this.password = options.password\n \n if (options.python !== undefined)\n this.python = options.python\n \n this.disconnect()\n \n await connect_websocket(this.url, {\n protocols: this.python ? ['python'] : [ ],\n \n on_open: async (event, websocket) => {\n this.websocket = websocket\n await this.rpc('connect', { })\n },\n \n on_message: (event: { data: ArrayBuffer }) => {\n this.on_message(event)\n }\n })\n \n await this.eval(\n this.python ?\n 'def pnode_run (nodes, func_name, args, add_node_alias):\\n' +\n ' nargs = size(args)\\n' +\n ' func = funcByName(func_name)\\n' +\n ' \\n' +\n ' if not nargs:\\n' +\n ' return pnodeRun(func, nodes, add_node_alias)\\n' +\n ' \\n' +\n ' args_partial = [ ]\\n' +\n ' args_partial.append(func)\\n' +\n ' for a in args:\\n' +\n ' args_partial.append(a)\\n' +\n ' \\n' +\n ' return pnodeRun(\\n' +\n ' unifiedCall(partial, args_partial),\\n' +\n ' nodes,\\n' +\n ' add_node_alias\\n' +\n ' )\\n'\n :\n 'def pnode_run (nodes, func_name, args, add_node_alias = true) {\\n' +\n ' nargs = size(args)\\n' +\n ' func = funcByName(func_name)\\n' +\n ' \\n' +\n ' if (!nargs)\\n' +\n ' return pnodeRun(func, nodes, add_node_alias)\\n' +\n ' \\n' +\n ' args_partial = array(any, 1 + nargs, 1 + nargs)\\n' +\n ' args_partial[0] = func\\n' +\n ' args_partial[1:] = args\\n' +\n ' return pnodeRun(\\n' +\n ' unifiedCall(partial, args_partial),\\n' +\n ' nodes,\\n' +\n ' add_node_alias\\n' +\n ' )\\n' +\n '}\\n',\n { urgent: true }\n )\n \n if (this.autologin)\n if (this.python)\n await this.eval(`login(${this.username.quote('double')}, ${this.password.quote('double')})`, { urgent: true })\n else\n await this.call('login', [this.username, this.password], { urgent: true })\n }\n \n \n get_rpc_options ({\n urgent = false,\n secondary = false,\n async: _async = false,\n pickle = false,\n clear = false,\n api = false,\n compress = false,\n \n cancellable = true,\n priority = urgent ? 8 : 4,\n parallelism = 8,\n root_id = '',\n limit,\n }: {\n // --- flags ---\n urgent?: boolean\n \n /** API 提交的任务, secondary 必须为 false */\n secondary?: boolean\n \n /** 是否异步任务(不返回结果) */\n async?: boolean\n \n /** 让服务端以 pickle 协议返回数据 */\n pickle?: boolean\n \n /** 本次任务完成后 clear session memory */\n clear?: boolean\n \n /** 是否为 api client */\n api?: boolean\n \n compress?: boolean\n \n // --- flags end ---\n \n /** 任务是否可以取消 */\n cancellable?: boolean\n \n priority?: number\n \n /** `8` 0 ~ 64, 指定本任务并行度 */\n parallelism?: number\n \n /** 根任务编号,内部使用,API中固定为空 */\n root_id?: string\n \n /** 指定分块返回的块大小 */\n limit?: boolean\n } = { }) {\n let flag = 0\n if (urgent)\n flag += 1\n if (secondary)\n flag += 2\n if (_async)\n flag += 4\n if (pickle)\n flag += 8\n if (clear)\n flag += 16\n if (api)\n flag += 32\n if (compress)\n flag += 64\n \n // python session\n if (this.python)\n flag += 2048\n \n const options = [\n flag,\n cancellable ? 1 : 0,\n priority,\n parallelism,\n ... limit ? [\n root_id,\n limit,\n ] : [ ],\n ]\n \n return options.join('_')\n }\n \n \n disconnect () {\n if (this.connected)\n this.websocket.close(1000)\n this.on_message = () => { }\n this.presult = Promise.resolve(null)\n this.pconnect = Promise.resolve()\n }\n \n \n /** rpc through websocket (function/script/variable command) \n - type: API 类型: 'script' | 'function' | 'variable'\n - options:\n - urgent?: 决定 `行为标识` 那一行字符串的取值(只适用于 script 和 function)\n - vars?: type === 'variable' 时必传,variable 指令中待上传的变量名\n - listener?: 处理本次 rpc 期间的消息 (DdbMessage)\n - parse_object?: 在本次 rpc 期间设置 parse_object, 结束后恢复原有 \n 为 false 时返回的 DdbObj 仅含有 buffer 和 le,不做解析,以便后续转发、序列化\n */\n async rpc <T extends DdbObj = DdbObj> (\n type: 'script' | 'function' | 'variable' | 'connect',\n {\n script,\n func,\n args = [ ],\n vars = [ ],\n urgent,\n listener,\n parse_object,\n }: {\n script?: string\n func?: string\n args?: (DdbObj | string | boolean)[]\n vars?: string[]\n urgent?: boolean\n listener?: DdbMessageListener\n parse_object?: boolean\n }) {\n if (!this.websocket) {\n const ptail = this.pconnect\n \n let resolve: () => void\n this.pconnect = new Promise<void>((_resolve, _reject) => {\n resolve = _resolve\n })\n \n await ptail\n \n try {\n if (!this.websocket)\n await this.connect()\n } finally {\n resolve()\n }\n }\n \n \n if (!this.connected)\n throw new Error(`${this.url} is already disconnected`)\n \n // this 上的当前配置需要在 message 到达后使用,先保存起来\n const _handlers = [...this.listeners].reverse()\n \n \n // 临界区:保证多个 rpc 并发时形成 promise 链\n // ddb 世界观:需要等待上一个 rpc 结果从 server 返回之后才能发起下一个调用 \n // 违反世界观可能造成: \n // 1. 并发多个请求只返回第一个结果(阻塞,需后续请求疏通)\n // 2. windows 下 ddb server 返回多个相同的结果\n \n const ptail = this.presult\n \n let resolve: (ddbobj: T) => void\n let reject: (error: Error) => void\n const presult = this.presult = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n \n try {\n await ptail\n } catch { }\n // 临界区结束,只有一个 rpc 函数调用运行到这里,可以独占 this.on_message 然后写 WebSocket\n \n \n this.on_message = ({ data: buffer }) => {\n try {\n const buf = new Uint8Array(buffer)\n \n if (this.print_message_buffer)\n console.log(\n typed_array_to_buffer(buf)\n )\n \n const message = this.parse_message(buf, parse_object)\n \n listener?.(message, this)\n for (const listener of _handlers)\n listener(message, this)\n \n const { type, data } = message\n \n switch (type) {\n case 'print':\n if (this.print_message)\n console.log(data)\n return\n \n case 'object':\n resolve(data as T)\n return\n \n case 'error':\n reject(data)\n return\n }\n } catch (error) {\n reject(error)\n }\n }\n \n args = DdbObj.to_ddbobjs(args)\n \n const command = this.enc.encode(\n (() => {\n switch (type) {\n case 'function':\n return 'function\\n' +\n `${func}\\n` +\n `${args.length}\\n` +\n `${Number(DDB.le_client)}\\n`\n \n case 'script':\n return 'script\\n' +\n script\n \n case 'variable':\n return 'variable\\n' +\n `${vars.join(',')}\\n` +\n `${vars.length}\\n` +\n `${Number(DDB.le_client)}\\n`\n \n case 'connect':\n return 'connect\\n'\n }\n })()\n )\n \n this.websocket.send(\n concat([\n this.enc.encode(\n `API2 ${this.sid} ${command.length} / ${this.get_rpc_options({ urgent })}\\n`\n ),\n command,\n ... args.map((arg: DdbObj) =>\n arg.pack()\n )\n ])\n )\n \n return presult\n }\n \n \n /** eval script through websocket (script command) \n - script?: Script to execute\n - options?: execution options\n - urgent?: Urgent flag to ensure that submitted scripts are processed by urgent workers to prevent being blocked by other jobs\n - listener?: Process messages during this rpc (DdbMessage)\n - parse_object?: Set parse_object during this rpc, and restore the original after the end.\n When it is false, the returned DdbObj only contains buffer and le without parsing, \n so as to facilitate subsequent forwarding and serialization\n */\n async eval <T extends DdbObj> (\n script: string,\n {\n urgent,\n listener,\n parse_object,\n }: {\n urgent?: boolean\n listener?: DdbMessageListener\n parse_object?: boolean\n } = { }\n ) {\n return this.rpc<T>('script', { script, urgent, listener, parse_object })\n }\n \n \n /** call function through websocket (function command) \n - func: function name\n - args?: `[ ]` Call parameters (the incoming native string and boolean will be automatically converted to DdbObj<string> and DdbObj<boolean>)\n - options?: call options\n - urgent?: Emergency flag. Use urgent worker execution to prevent being blocked by other jobs\n - node?: When the node alias is set, it is sent to the corresponding node in the cluster for execution (using the rpc method in DolphinDB)\n - nodes?: When setting multiple node aliases, send them to the corresponding multiple nodes in the cluster for execution (using the pnodeRun method in DolphinDB)\n - func_type?: It must be passed when setting the node parameter, the function type needs to be specified, and it is not passed in other cases\n - add_node_alias?: Select to pass when setting the nodes parameter, otherwise not pass\n - listener?: Process messages during this rpc (DdbMessage)\n - parse_object?: Set parse_object during this rpc, and restore the original after the end.\n When it is false, the returned DdbObj only contains buffer and le without parsing, \n so as to facilitate subsequent forwarding and serialization\n */\n async call <T extends DdbObj> (\n func: string,\n args: (DdbObj | string | boolean)[] = [ ],\n {\n urgent,\n node,\n nodes,\n func_type,\n add_node_alias,\n listener,\n parse_object,\n }: {\n urgent?: boolean\n node?: string\n nodes?: string[]\n func_type?: DdbFunctionType\n add_node_alias?: boolean\n listener?: DdbMessageListener\n parse_object?: boolean\n } = { }\n ) {\n if (node) {\n if (typeof func_type === 'undefined')\n throw new Error('指定 node 时必须设置 func_type')\n \n args = [\n node,\n new DdbFunction(func, func_type),\n ...args\n ]\n func = 'rpc'\n }\n \n if (nodes) {\n args = [\n new DdbVectorString(nodes),\n func,\n new DdbVectorAny(args),\n ... (() => {\n if (typeof add_node_alias !== 'undefined')\n return [add_node_alias]\n \n if (this.python)\n return [true]\n \n return [ ]\n })()\n ]\n func = 'pnode_run'\n }\n \n return this.rpc<T>('function', {\n func,\n args,\n urgent,\n listener,\n parse_object\n })\n }\n \n \n /** upload variable through websocket (variable command) */\n async upload (\n /** Uploaded variables' name */\n vars: string[],\n \n /** Uploaded variables' value */\n args: (DdbObj | string | boolean)[],\n \n {\n listener,\n parse_object,\n }: {\n listener?: DdbMessageListener\n parse_object?: boolean\n } = { }\n ) {\n if (!args.length || args.length !== vars.length)\n throw new Error('variable command parameter is empty or parameter name is empty, or the number does not match')\n \n return this.rpc('variable', { vars, args, listener, parse_object })\n }\n \n \n /** 解析服务端响应报文,返回去掉 header 的 data buf */\n parse_message (buf: Uint8Array, parse_object = this.parse_object): DdbMessage {\n // MSG\\n\n // <message>\\0\n // 'M'.codePointAt(0).to_hex_str()\n if (buf[0] === 0x4d && buf[1] === 0x53 && buf[2] === 0x47 && buf[3] === 0x0a)\n return {\n type: 'print',\n data: \n this.dec.decode(\n buf.subarray(4)\n )\n }\n \n \n // '1166953221 1 1\\n'\n // 'OK\\n'\n // '\\x04\\x00\\x02\\x00\\x00\\x00'\n \n /** index of line feed 0 */\n const i_lf_0 = buf.indexOf(0x0a) // '\\n'\n \n const parts = this.dec.decode(\n buf.subarray(0, i_lf_0)\n ).split(' ')\n \n /** session id */\n const sid = parts[0]\n if (sid !== this.sid) {\n console.log(`session.id: ${this.sid} -> ${sid}`)\n this.sid = sid\n }\n \n /** 返回对象的数量 */\n const n_obj = Number(parts[1])\n \n /** 大小端: 协议中大端为 0, 小端为 1 */\n this.le = Number(parts[2]) !== 0\n \n const i_ls_1 = i_lf_0 + 1\n const i_lf_1 = buf.indexOf(0x0a, i_ls_1) // '\\n'\n /** 'OK' 表示成功,其它文本表示失败 */\n const message = this.dec.decode(\n buf.subarray(i_ls_1, i_lf_1)\n )\n \n if (message !== 'OK')\n return {\n type: 'error',\n data: new Error(message)\n }\n \n const buf_obj = buf.subarray(i_lf_1 + 1)\n \n if (this.print_object_buffer)\n console.log(\n typed_array_to_buffer(buf_obj)\n )\n \n return {\n type: 'object',\n data: parse_object ?\n DdbObj.parse(buf_obj, this.le)\n :\n new DdbObj({\n form: DdbForm.scalar,\n type: DdbType.void,\n length: 0,\n le: this.le,\n buffer: buf_obj,\n })\n }\n }\n}\n\n\nexport interface DdbMessageListener {\n (message: DdbMessage, _this: DDB): any\n}\n\n\nexport interface DdbPrintMessage {\n type: 'print'\n data: string\n}\n\nexport interface DdbObjectMessage {\n type: 'object'\n data: DdbObj\n}\n\nexport interface DdbErrorMessage {\n type: 'error',\n data: Error\n}\n\nexport type DdbMessage = DdbPrintMessage | DdbObjectMessage | DdbErrorMessage\n\n\n"]}
|