@elizaos/plugin-sql 1.7.1-alpha.12 → 1.7.1-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.browser.js +14 -12
- package/dist/browser/index.browser.js.map +5 -5
- package/dist/browser/tsconfig.build.tsbuildinfo +1 -1
- package/dist/node/index.node.js +11236 -2710
- package/dist/node/index.node.js.map +35 -10
- package/dist/node/tsconfig.build.node.tsbuildinfo +1 -1
- package/package.json +7 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../node_modules/drizzle-orm/entity.js", "../../../../node_modules/drizzle-orm/logger.js", "../../../../node_modules/drizzle-orm/query-promise.js", "../../../../node_modules/drizzle-orm/column.js", "../../../../node_modules/drizzle-orm/column-builder.js", "../../../../node_modules/drizzle-orm/table.utils.js", "../../../../node_modules/drizzle-orm/pg-core/foreign-keys.js", "../../../../node_modules/drizzle-orm/tracing-utils.js", "../../../../node_modules/drizzle-orm/pg-core/unique-constraint.js", "../../../../node_modules/drizzle-orm/pg-core/utils/array.js", "../../../../node_modules/drizzle-orm/pg-core/columns/common.js", "../../../../node_modules/drizzle-orm/pg-core/columns/enum.js", "../../../../node_modules/drizzle-orm/subquery.js", "../../../../node_modules/drizzle-orm/version.js", "../../../../node_modules/drizzle-orm/tracing.js", "../../../../node_modules/drizzle-orm/view-common.js", "../../../../node_modules/drizzle-orm/table.js", "../../../../node_modules/drizzle-orm/sql/sql.js", "../../../../node_modules/drizzle-orm/alias.js", "../../../../node_modules/drizzle-orm/selection-proxy.js", "../../../../node_modules/drizzle-orm/utils.js", "../../../../node_modules/drizzle-orm/pg-core/columns/int.common.js", "../../../../node_modules/drizzle-orm/pg-core/columns/bigint.js", "../../../../node_modules/drizzle-orm/pg-core/columns/bigserial.js", "../../../../node_modules/drizzle-orm/pg-core/columns/boolean.js", "../../../../node_modules/drizzle-orm/pg-core/columns/char.js", "../../../../node_modules/drizzle-orm/pg-core/columns/cidr.js", "../../../../node_modules/drizzle-orm/pg-core/columns/custom.js", "../../../../node_modules/drizzle-orm/pg-core/columns/date.common.js", "../../../../node_modules/drizzle-orm/pg-core/columns/date.js", "../../../../node_modules/drizzle-orm/pg-core/columns/double-precision.js", "../../../../node_modules/drizzle-orm/pg-core/columns/inet.js", "../../../../node_modules/drizzle-orm/pg-core/columns/integer.js", "../../../../node_modules/drizzle-orm/pg-core/columns/interval.js", "../../../../node_modules/drizzle-orm/pg-core/columns/json.js", "../../../../node_modules/drizzle-orm/pg-core/columns/jsonb.js", "../../../../node_modules/drizzle-orm/pg-core/columns/line.js", "../../../../node_modules/drizzle-orm/pg-core/columns/macaddr.js", "../../../../node_modules/drizzle-orm/pg-core/columns/macaddr8.js", "../../../../node_modules/drizzle-orm/pg-core/columns/numeric.js", "../../../../node_modules/drizzle-orm/pg-core/columns/point.js", "../../../../node_modules/drizzle-orm/pg-core/columns/postgis_extension/utils.js", "../../../../node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.js", "../../../../node_modules/drizzle-orm/pg-core/columns/real.js", "../../../../node_modules/drizzle-orm/pg-core/columns/serial.js", "../../../../node_modules/drizzle-orm/pg-core/columns/smallint.js", "../../../../node_modules/drizzle-orm/pg-core/columns/smallserial.js", "../../../../node_modules/drizzle-orm/pg-core/columns/text.js", "../../../../node_modules/drizzle-orm/pg-core/columns/time.js", "../../../../node_modules/drizzle-orm/pg-core/columns/timestamp.js", "../../../../node_modules/drizzle-orm/pg-core/columns/uuid.js", "../../../../node_modules/drizzle-orm/pg-core/columns/varchar.js", "../../../../node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.js", "../../../../node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.js", "../../../../node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.js", "../../../../node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.js", "../../../../node_modules/drizzle-orm/pg-core/columns/all.js", "../../../../node_modules/drizzle-orm/pg-core/table.js", "../../../../node_modules/drizzle-orm/pg-core/checks.js", "../../../../node_modules/drizzle-orm/pg-core/columns/index.js", "../../../../node_modules/drizzle-orm/pg-core/indexes.js", "../../../../node_modules/drizzle-orm/pg-core/policies.js", "../../../../node_modules/drizzle-orm/pg-core/primary-keys.js", "../../../../node_modules/drizzle-orm/pg-core/view-common.js", "../../../../node_modules/drizzle-orm/casing.js", "../../../../node_modules/drizzle-orm/errors.js", "../../../../node_modules/drizzle-orm/sql/expressions/conditions.js", "../../../../node_modules/drizzle-orm/sql/expressions/select.js", "../../../../node_modules/drizzle-orm/sql/expressions/index.js", "../../../../node_modules/drizzle-orm/relations.js", "../../../../node_modules/drizzle-orm/sql/functions/aggregate.js", "../../../../node_modules/drizzle-orm/sql/functions/vector.js", "../../../../node_modules/drizzle-orm/sql/functions/index.js", "../../../../node_modules/drizzle-orm/sql/index.js", "../../../../node_modules/drizzle-orm/pg-core/view-base.js", "../../../../node_modules/drizzle-orm/pg-core/dialect.js", "../../../../node_modules/drizzle-orm/query-builders/query-builder.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/select.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/query-builder.js", "../../../../node_modules/drizzle-orm/pg-core/view.js", "../../../../node_modules/drizzle-orm/pg-core/utils.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/delete.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/insert.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/update.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/index.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/count.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/query.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/raw.js", "../../../../node_modules/drizzle-orm/pg-core/db.js", "../../../../node_modules/drizzle-orm/cache/core/cache.js", "../../../../node_modules/drizzle-orm/pg-core/session.js", "../../../../node_modules/drizzle-orm/pg-core/utils/index.js", "../../../../node_modules/drizzle-orm/pg-core/index.js", "../../../../node_modules/drizzle-orm/index.js", "../../src/schema/agent.ts", "../../src/schema/server.ts", "../../src/types.ts", "../../src/runtime-migrator/storage/migration-tracker.ts", "../../src/runtime-migrator/storage/journal-storage.ts", "../../src/runtime-migrator/storage/snapshot-storage.ts", "../../src/runtime-migrator/extension-manager.ts", "../../src/runtime-migrator/drizzle-adapters/snapshot-generator.ts", "../../src/runtime-migrator/drizzle-adapters/diff-calculator.ts", "../../src/runtime-migrator/drizzle-adapters/sql-generator.ts", "../../src/runtime-migrator/schema-transformer.ts", "../../src/runtime-migrator/drizzle-adapters/database-introspector.ts", "../../src/runtime-migrator/runtime-migrator.ts", "../../src/runtime-migrator/index.ts", "../../src/migrations.ts", "../../src/rls.ts", "../../src/migration-service.ts", "../../src/index.node.ts", "../../src/pglite/adapter.ts", "../../../../node_modules/drizzle-orm/pglite/driver.js", "../../../../node_modules/drizzle-orm/pglite/session.js", "../../src/base.ts", "../../src/schema/embedding.ts", "../../src/schema/memory.ts", "../../src/schema/entity.ts", "../../src/schema/room.ts", "../../src/schema/index.ts", "../../src/schema/cache.ts", "../../src/schema/component.ts", "../../src/schema/world.ts", "../../src/schema/log.ts", "../../src/schema/participant.ts", "../../src/schema/relationship.ts", "../../src/schema/tasks.ts", "../../src/schema/messageServer.ts", "../../src/schema/channel.ts", "../../src/schema/message.ts", "../../src/schema/channelParticipant.ts", "../../src/schema/messageServerAgent.ts", "../../src/pglite/manager.ts", "../../src/pg/adapter.ts", "../../../../node_modules/drizzle-orm/node-postgres/driver.js", "../../../../node_modules/drizzle-orm/node-postgres/session.js", "../../src/pg/manager.ts", "../../src/utils.node.ts"],
|
|
3
|
+
"sources": ["../../../../node_modules/drizzle-orm/entity.js", "../../../../node_modules/drizzle-orm/logger.js", "../../../../node_modules/drizzle-orm/query-promise.js", "../../../../node_modules/drizzle-orm/column.js", "../../../../node_modules/drizzle-orm/column-builder.js", "../../../../node_modules/drizzle-orm/table.utils.js", "../../../../node_modules/drizzle-orm/pg-core/foreign-keys.js", "../../../../node_modules/drizzle-orm/tracing-utils.js", "../../../../node_modules/drizzle-orm/pg-core/unique-constraint.js", "../../../../node_modules/drizzle-orm/pg-core/utils/array.js", "../../../../node_modules/drizzle-orm/pg-core/columns/common.js", "../../../../node_modules/drizzle-orm/pg-core/columns/enum.js", "../../../../node_modules/drizzle-orm/subquery.js", "../../../../node_modules/drizzle-orm/version.js", "../../../../node_modules/drizzle-orm/tracing.js", "../../../../node_modules/drizzle-orm/view-common.js", "../../../../node_modules/drizzle-orm/table.js", "../../../../node_modules/drizzle-orm/sql/sql.js", "../../../../node_modules/drizzle-orm/alias.js", "../../../../node_modules/drizzle-orm/selection-proxy.js", "../../../../node_modules/drizzle-orm/utils.js", "../../../../node_modules/drizzle-orm/pg-core/columns/int.common.js", "../../../../node_modules/drizzle-orm/pg-core/columns/bigint.js", "../../../../node_modules/drizzle-orm/pg-core/columns/bigserial.js", "../../../../node_modules/drizzle-orm/pg-core/columns/boolean.js", "../../../../node_modules/drizzle-orm/pg-core/columns/char.js", "../../../../node_modules/drizzle-orm/pg-core/columns/cidr.js", "../../../../node_modules/drizzle-orm/pg-core/columns/custom.js", "../../../../node_modules/drizzle-orm/pg-core/columns/date.common.js", "../../../../node_modules/drizzle-orm/pg-core/columns/date.js", "../../../../node_modules/drizzle-orm/pg-core/columns/double-precision.js", "../../../../node_modules/drizzle-orm/pg-core/columns/inet.js", "../../../../node_modules/drizzle-orm/pg-core/columns/integer.js", "../../../../node_modules/drizzle-orm/pg-core/columns/interval.js", "../../../../node_modules/drizzle-orm/pg-core/columns/json.js", "../../../../node_modules/drizzle-orm/pg-core/columns/jsonb.js", "../../../../node_modules/drizzle-orm/pg-core/columns/line.js", "../../../../node_modules/drizzle-orm/pg-core/columns/macaddr.js", "../../../../node_modules/drizzle-orm/pg-core/columns/macaddr8.js", "../../../../node_modules/drizzle-orm/pg-core/columns/numeric.js", "../../../../node_modules/drizzle-orm/pg-core/columns/point.js", "../../../../node_modules/drizzle-orm/pg-core/columns/postgis_extension/utils.js", "../../../../node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.js", "../../../../node_modules/drizzle-orm/pg-core/columns/real.js", "../../../../node_modules/drizzle-orm/pg-core/columns/serial.js", "../../../../node_modules/drizzle-orm/pg-core/columns/smallint.js", "../../../../node_modules/drizzle-orm/pg-core/columns/smallserial.js", "../../../../node_modules/drizzle-orm/pg-core/columns/text.js", "../../../../node_modules/drizzle-orm/pg-core/columns/time.js", "../../../../node_modules/drizzle-orm/pg-core/columns/timestamp.js", "../../../../node_modules/drizzle-orm/pg-core/columns/uuid.js", "../../../../node_modules/drizzle-orm/pg-core/columns/varchar.js", "../../../../node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.js", "../../../../node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.js", "../../../../node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.js", "../../../../node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.js", "../../../../node_modules/drizzle-orm/pg-core/columns/all.js", "../../../../node_modules/drizzle-orm/pg-core/table.js", "../../../../node_modules/drizzle-orm/pg-core/checks.js", "../../../../node_modules/drizzle-orm/pg-core/columns/index.js", "../../../../node_modules/drizzle-orm/pg-core/indexes.js", "../../../../node_modules/drizzle-orm/pg-core/policies.js", "../../../../node_modules/drizzle-orm/pg-core/primary-keys.js", "../../../../node_modules/drizzle-orm/pg-core/view-common.js", "../../../../node_modules/drizzle-orm/casing.js", "../../../../node_modules/drizzle-orm/errors.js", "../../../../node_modules/drizzle-orm/sql/expressions/conditions.js", "../../../../node_modules/drizzle-orm/sql/expressions/select.js", "../../../../node_modules/drizzle-orm/sql/expressions/index.js", "../../../../node_modules/drizzle-orm/relations.js", "../../../../node_modules/drizzle-orm/sql/functions/aggregate.js", "../../../../node_modules/drizzle-orm/sql/functions/vector.js", "../../../../node_modules/drizzle-orm/sql/functions/index.js", "../../../../node_modules/drizzle-orm/sql/index.js", "../../../../node_modules/drizzle-orm/pg-core/view-base.js", "../../../../node_modules/drizzle-orm/pg-core/dialect.js", "../../../../node_modules/drizzle-orm/query-builders/query-builder.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/select.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/query-builder.js", "../../../../node_modules/drizzle-orm/pg-core/view.js", "../../../../node_modules/drizzle-orm/pg-core/utils.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/delete.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/insert.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/update.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/index.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/count.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/query.js", "../../../../node_modules/drizzle-orm/pg-core/query-builders/raw.js", "../../../../node_modules/drizzle-orm/pg-core/db.js", "../../../../node_modules/drizzle-orm/cache/core/cache.js", "../../../../node_modules/drizzle-orm/pg-core/session.js", "../../../../node_modules/drizzle-orm/pg-core/utils/index.js", "../../../../node_modules/drizzle-orm/pg-core/index.js", "../../../../node_modules/drizzle-orm/index.js", "../../src/schema/agent.ts", "../../src/schema/server.ts", "../../src/types.ts", "../../src/runtime-migrator/storage/migration-tracker.ts", "../../src/runtime-migrator/storage/journal-storage.ts", "../../src/runtime-migrator/storage/snapshot-storage.ts", "../../src/runtime-migrator/extension-manager.ts", "../../src/runtime-migrator/drizzle-adapters/snapshot-generator.ts", "../../src/runtime-migrator/drizzle-adapters/diff-calculator.ts", "../../src/runtime-migrator/drizzle-adapters/sql-generator.ts", "../../src/runtime-migrator/schema-transformer.ts", "../../src/runtime-migrator/drizzle-adapters/database-introspector.ts", "../../src/runtime-migrator/runtime-migrator.ts", "../../src/runtime-migrator/index.ts", "../../src/migrations.ts", "../../src/rls.ts", "../../src/migration-service.ts", "../../../../node_modules/ws/lib/constants.js", "../../../../node_modules/node-gyp-build/node-gyp-build.js", "../../../../node_modules/node-gyp-build/index.js", "../../../../node_modules/bufferutil/fallback.js", "../../../../node_modules/bufferutil/index.js", "../../../../node_modules/ws/lib/buffer-util.js", "../../../../node_modules/ws/lib/limiter.js", "../../../../node_modules/ws/lib/permessage-deflate.js", "../../../../node_modules/utf-8-validate/fallback.js", "../../../../node_modules/utf-8-validate/index.js", "../../../../node_modules/ws/lib/validation.js", "../../../../node_modules/ws/lib/receiver.js", "../../../../node_modules/ws/lib/sender.js", "../../../../node_modules/ws/lib/event-target.js", "../../../../node_modules/ws/lib/extension.js", "../../../../node_modules/ws/lib/websocket.js", "../../../../node_modules/ws/lib/stream.js", "../../../../node_modules/ws/lib/subprotocol.js", "../../../../node_modules/ws/lib/websocket-server.js", "../../src/index.node.ts", "../../src/pglite/adapter.ts", "../../../../node_modules/drizzle-orm/pglite/driver.js", "../../../../node_modules/drizzle-orm/pglite/session.js", "../../src/base.ts", "../../src/schema/embedding.ts", "../../src/schema/memory.ts", "../../src/schema/entity.ts", "../../src/schema/room.ts", "../../src/schema/index.ts", "../../src/schema/cache.ts", "../../src/schema/component.ts", "../../src/schema/world.ts", "../../src/schema/log.ts", "../../src/schema/participant.ts", "../../src/schema/relationship.ts", "../../src/schema/tasks.ts", "../../src/schema/messageServer.ts", "../../src/schema/channel.ts", "../../src/schema/message.ts", "../../src/schema/channelParticipant.ts", "../../src/schema/messageServerAgent.ts", "../../src/pglite/manager.ts", "../../src/pg/adapter.ts", "../../../../node_modules/drizzle-orm/node-postgres/driver.js", "../../../../node_modules/drizzle-orm/node-postgres/session.js", "../../src/pg/manager.ts", "../../src/neon/adapter.ts", "../../../../node_modules/@neondatabase/serverless/index.mjs", "../../../../node_modules/drizzle-orm/neon-serverless/driver.js", "../../../../node_modules/drizzle-orm/neon-serverless/session.js", "../../src/neon/manager.ts", "../../../../node_modules/ws/wrapper.mjs", "../../src/utils.node.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"const entityKind = Symbol.for(\"drizzle:entityKind\");\nconst hasOwnEntityKind = Symbol.for(\"drizzle:hasOwnEntityKind\");\nfunction is(value, type) {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n if (value instanceof type) {\n return true;\n }\n if (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n throw new Error(\n `Class \"${type.name ?? \"<unknown>\"}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`\n );\n }\n let cls = Object.getPrototypeOf(value).constructor;\n if (cls) {\n while (cls) {\n if (entityKind in cls && cls[entityKind] === type[entityKind]) {\n return true;\n }\n cls = Object.getPrototypeOf(cls);\n }\n }\n return false;\n}\nexport {\n entityKind,\n hasOwnEntityKind,\n is\n};\n//# sourceMappingURL=entity.js.map",
|
|
6
6
|
"import { entityKind } from \"./entity.js\";\nclass ConsoleLogWriter {\n static [entityKind] = \"ConsoleLogWriter\";\n write(message) {\n console.log(message);\n }\n}\nclass DefaultLogger {\n static [entityKind] = \"DefaultLogger\";\n writer;\n constructor(config) {\n this.writer = config?.writer ?? new ConsoleLogWriter();\n }\n logQuery(query, params) {\n const stringifiedParams = params.map((p) => {\n try {\n return JSON.stringify(p);\n } catch {\n return String(p);\n }\n });\n const paramsStr = stringifiedParams.length ? ` -- params: [${stringifiedParams.join(\", \")}]` : \"\";\n this.writer.write(`Query: ${query}${paramsStr}`);\n }\n}\nclass NoopLogger {\n static [entityKind] = \"NoopLogger\";\n logQuery() {\n }\n}\nexport {\n ConsoleLogWriter,\n DefaultLogger,\n NoopLogger\n};\n//# sourceMappingURL=logger.js.map",
|
|
@@ -112,13 +112,32 @@
|
|
|
112
112
|
"import { sql } from 'drizzle-orm';\nimport { logger } from '@elizaos/core';\nimport type { DrizzleDB, RuntimeMigrationOptions, SchemaSnapshot } from './types';\nimport { getRow } from '../types';\nimport { MigrationTracker } from './storage/migration-tracker';\nimport { JournalStorage } from './storage/journal-storage';\nimport { SnapshotStorage } from './storage/snapshot-storage';\nimport { ExtensionManager } from './extension-manager';\nimport { generateSnapshot, hashSnapshot, hasChanges } from './drizzle-adapters/snapshot-generator';\nimport { calculateDiff, hasDiffChanges } from './drizzle-adapters/diff-calculator';\nimport {\n generateMigrationSQL,\n checkForDataLoss,\n type DataLossCheck,\n} from './drizzle-adapters/sql-generator';\nimport { deriveSchemaName } from './schema-transformer';\nimport { DatabaseIntrospector } from './drizzle-adapters/database-introspector';\nimport { createHash } from 'crypto';\n\nexport class RuntimeMigrator {\n private migrationTracker: MigrationTracker;\n private journalStorage: JournalStorage;\n private snapshotStorage: SnapshotStorage;\n private extensionManager: ExtensionManager;\n private introspector: DatabaseIntrospector;\n\n constructor(private db: DrizzleDB) {\n this.migrationTracker = new MigrationTracker(db);\n this.journalStorage = new JournalStorage(db);\n this.snapshotStorage = new SnapshotStorage(db);\n this.extensionManager = new ExtensionManager(db);\n this.introspector = new DatabaseIntrospector(db);\n }\n\n /**\n * Get expected schema name for a plugin\n * @elizaos/plugin-sql uses 'public' schema (core application)\n * All other plugins should use namespaced schemas\n */\n private getExpectedSchemaName(pluginName: string): string {\n // Core plugin uses public schema\n if (pluginName === '@elizaos/plugin-sql') {\n return 'public';\n }\n\n // Use the schema transformer's logic for consistency\n return deriveSchemaName(pluginName);\n }\n\n /**\n * Ensure all schemas used in the snapshot exist\n */\n private async ensureSchemasExist(snapshot: SchemaSnapshot): Promise<void> {\n const schemasToCreate = new Set<string>();\n\n // Collect all schemas from tables\n for (const table of Object.values(snapshot.tables)) {\n const tableData = table as any; // Tables in snapshot have schema property\n const schema = tableData.schema || 'public';\n if (schema !== 'public') {\n schemasToCreate.add(schema);\n }\n }\n\n // Also add schemas from the snapshot's schemas object\n for (const schema of Object.keys(snapshot.schemas || {})) {\n if (schema !== 'public') {\n schemasToCreate.add(schema);\n }\n }\n\n // Create all non-public schemas\n for (const schemaName of schemasToCreate) {\n logger.debug({ src: 'plugin:sql', schemaName }, 'Ensuring schema exists');\n await this.db.execute(sql.raw(`CREATE SCHEMA IF NOT EXISTS \"${schemaName}\"`));\n }\n }\n\n /**\n * Validate schema usage and provide warnings\n */\n private validateSchemaUsage(pluginName: string, snapshot: SchemaSnapshot): void {\n const expectedSchema = this.getExpectedSchemaName(pluginName);\n const isCorePLugin = pluginName === '@elizaos/plugin-sql';\n\n for (const table of Object.values(snapshot.tables)) {\n const tableData = table as any; // Tables in snapshot have schema and name properties\n const actualSchema = tableData.schema || 'public';\n\n // Warn if non-core plugin is using public schema\n if (!isCorePLugin && actualSchema === 'public') {\n logger.warn(\n { src: 'plugin:sql', pluginName, tableName: tableData.name, expectedSchema },\n 'Plugin table is using public schema - consider using pgSchema for better isolation'\n );\n }\n\n // Warn if core plugin is not using public schema\n if (isCorePLugin && actualSchema !== 'public') {\n logger.warn(\n {\n src: 'plugin:sql',\n pluginName: '@elizaos/plugin-sql',\n tableName: tableData.name,\n actualSchema,\n },\n 'Core plugin table should use public schema'\n );\n }\n }\n }\n\n /**\n * Generate a stable advisory lock ID from plugin name\n * PostgreSQL advisory locks use bigint, so we need to hash the plugin name\n * and convert to a stable bigint value\n */\n private getAdvisoryLockId(pluginName: string): bigint {\n // Create a hash of the plugin name\n const hash = createHash('sha256').update(pluginName).digest();\n\n // Take first 8 bytes for a 64-bit integer\n const buffer = hash.slice(0, 8);\n\n // Convert to bigint\n let lockId = BigInt('0x' + buffer.toString('hex'));\n\n // Ensure the value fits in PostgreSQL's positive bigint range\n // Use a mask to keep only 63 bits (ensures positive in signed 64-bit)\n // This preserves uniqueness better than modulo and avoids collisions\n const mask63Bits = 0x7fffffffffffffffn; // 63 bits set to 1\n lockId = lockId & mask63Bits;\n\n // Ensure non-zero (extremely unlikely but handle it)\n if (lockId === 0n) {\n lockId = 1n;\n }\n\n return lockId;\n }\n\n /**\n * Validate that a value is a valid PostgreSQL bigint\n * PostgreSQL bigint range: -9223372036854775808 to 9223372036854775807\n */\n private validateBigInt(value: bigint): boolean {\n const MIN_BIGINT = -9223372036854775808n;\n const MAX_BIGINT = 9223372036854775807n;\n return value >= MIN_BIGINT && value <= MAX_BIGINT;\n }\n\n /**\n * Detect if a connection string represents a real PostgreSQL database\n * (not PGLite, in-memory, or other non-PostgreSQL databases)\n */\n private isRealPostgresDatabase(connectionUrl: string): boolean {\n if (!connectionUrl?.trim()) return false;\n\n const url = connectionUrl.trim().toLowerCase();\n\n // Exclude non-PostgreSQL databases (check schemes first)\n const nonPgSchemes = ['mysql://', 'mysqli://', 'mariadb://', 'mongodb://', 'mongodb+srv://'];\n if (nonPgSchemes.some((s) => url.startsWith(s))) return false;\n\n // Always reject :memory: databases (even with postgres:// scheme, it's not valid)\n if (url.includes(':memory:')) return false;\n\n // PostgreSQL URL schemes - check BEFORE other exclude patterns\n // (a postgres:// URL may have \"sqlite\" in the database name, that's OK)\n const pgSchemes = [\n 'postgres://',\n 'postgresql://',\n 'postgis://',\n 'pgbouncer://',\n 'pgpool://',\n 'cockroach://',\n 'cockroachdb://',\n 'redshift://',\n 'timescaledb://',\n 'yugabyte://',\n ];\n if (pgSchemes.some((s) => url.startsWith(s))) return true;\n\n // Exclude PGLite, SQLite databases (only for non-postgres:// URLs)\n const excludePatterns = ['pglite', 'sqlite'];\n const urlBase = url.split('?')[0];\n if (excludePatterns.some((p) => url.includes(p))) return false;\n if (/\\.(db|sqlite|sqlite3)$/.test(urlBase)) return false;\n\n // Local PostgreSQL (localhost, 127.0.0.1, Docker service names)\n if (url.includes('localhost') || url.includes('127.0.0.1')) return true;\n\n // PostgreSQL connection params (libpq style)\n const connParams = [\n 'host=',\n 'dbname=',\n 'sslmode=',\n 'connect_timeout=',\n 'application_name=',\n 'user=',\n 'password=',\n 'port=',\n 'options=',\n 'sslcert=',\n 'sslkey=',\n 'sslrootcert=',\n 'fallback_application_name=',\n 'keepalives=',\n 'target_session_attrs=',\n ];\n if (connParams.some((p) => url.includes(p))) return true;\n\n // user@host format with postgres keyword or port\n if (url.includes('@') && (url.includes('postgres') || /:\\d{4,5}/.test(url))) return true;\n\n // Common PostgreSQL ports\n if (/:(5432|5433|5434|6432|8432|9999|25060|26257)\\b/.test(url)) return true;\n\n // Cloud providers\n const cloudPatterns = [\n // AWS\n 'amazonaws.com',\n '.rds.',\n // Azure\n 'azure.com',\n 'database.azure.com',\n // Google Cloud\n 'googleusercontent',\n 'cloudsql',\n // Supabase\n 'supabase',\n // Neon\n 'neon.tech',\n 'neon.build',\n // Railway\n 'railway.app',\n 'railway.internal',\n // Render\n 'render.com',\n 'onrender.com',\n // Heroku\n 'heroku',\n // TimescaleDB\n 'timescale',\n '.tsdb.cloud',\n // CockroachDB\n 'cockroachlabs',\n 'cockroachdb.cloud',\n '.crdb.io',\n // DigitalOcean\n 'digitalocean',\n 'db.ondigitalocean',\n 'do-user-',\n // Aiven\n 'aiven',\n // Crunchy Data\n 'crunchydata',\n // ElephantSQL\n 'elephantsql',\n // YugabyteDB\n 'yugabyte',\n // Scaleway\n 'scaleway',\n '.rdb.fr-par.scw.cloud',\n // Vercel Postgres\n 'vercel-storage',\n // PlanetScale\n 'psdb.cloud',\n // Xata\n 'xata.sh',\n // Fly.io\n 'fly.dev',\n 'fly.io',\n ];\n if (cloudPatterns.some((p) => url.includes(p))) return true;\n\n // IP:port patterns (IPv4 and IPv6)\n if (/\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d{1,5}/.test(url)) return true;\n if (/\\[[0-9a-f:]+\\](:\\d{1,5})?/i.test(connectionUrl)) return true;\n\n // host:port/database format (Docker Compose, etc.)\n if (/^[a-z0-9_.-]+:\\d{1,5}\\/[a-z0-9_-]+/i.test(connectionUrl)) return true;\n\n logger.debug(\n { src: 'plugin:sql', urlPreview: url.substring(0, 50) },\n 'Connection string did not match any PostgreSQL patterns'\n );\n return false;\n }\n\n /**\n * Initialize migration system - create necessary tables\n * @throws Error if table creation fails\n */\n async initialize(): Promise<void> {\n logger.info({ src: 'plugin:sql' }, 'Initializing migration system');\n await this.migrationTracker.ensureTables();\n logger.info({ src: 'plugin:sql' }, 'Migration system initialized');\n }\n\n /**\n * Run migrations for a plugin/schema\n * @param pluginName - Plugin identifier\n * @param schema - Drizzle schema object\n * @param options - Migration options (verbose, force, dryRun, allowDataLoss)\n * @throws Error if destructive migrations blocked or migration fails\n */\n async migrate(\n pluginName: string,\n schema: any,\n options: RuntimeMigrationOptions = {}\n ): Promise<void> {\n const lockId = this.getAdvisoryLockId(pluginName);\n\n // Validate lockId is within PostgreSQL bigint range\n if (!this.validateBigInt(lockId)) {\n throw new Error(`Invalid advisory lock ID generated for plugin ${pluginName}`);\n }\n\n let lockAcquired = false;\n\n try {\n logger.info({ src: 'plugin:sql', pluginName }, 'Starting migration for plugin');\n\n // Ensure migration tables exist\n await this.initialize();\n\n // Only use advisory locks for real PostgreSQL databases\n // Skip for PGLite or development databases\n const postgresUrl = process.env.POSTGRES_URL || process.env.DATABASE_URL || '';\n const isRealPostgres = this.isRealPostgresDatabase(postgresUrl);\n\n if (isRealPostgres) {\n try {\n logger.debug({ src: 'plugin:sql', pluginName }, 'Using PostgreSQL advisory locks');\n\n // Convert bigint to string for SQL query\n // The sql tagged template will properly parameterize this value\n const lockIdStr = lockId.toString();\n\n const lockResult = await this.db.execute(\n sql`SELECT pg_try_advisory_lock(CAST(${lockIdStr} AS bigint)) as acquired`\n );\n\n interface LockResultRow {\n acquired: boolean;\n }\n lockAcquired = getRow<LockResultRow>(lockResult)?.acquired === true;\n\n if (!lockAcquired) {\n logger.info(\n { src: 'plugin:sql', pluginName },\n 'Migration already in progress, waiting for lock'\n );\n\n // Wait for the lock (blocking call)\n await this.db.execute(sql`SELECT pg_advisory_lock(CAST(${lockIdStr} AS bigint))`);\n lockAcquired = true;\n\n logger.info({ src: 'plugin:sql', pluginName }, 'Lock acquired');\n } else {\n logger.debug(\n { src: 'plugin:sql', pluginName, lockId: lockIdStr },\n 'Advisory lock acquired'\n );\n }\n } catch (lockError) {\n // If advisory locks fail, log but continue\n // This might happen if the PostgreSQL version doesn't support advisory locks\n logger.warn(\n {\n src: 'plugin:sql',\n pluginName,\n error: lockError instanceof Error ? lockError.message : String(lockError),\n },\n 'Failed to acquire advisory lock, continuing without lock'\n );\n lockAcquired = false;\n }\n } else {\n // For PGLite or other development databases, skip advisory locks\n logger.debug(\n { src: 'plugin:sql' },\n 'Development database detected, skipping advisory locks'\n );\n }\n\n // Install required extensions\n // pgcrypto is only needed for real PostgreSQL (PGLite uses native gen_random_uuid)\n const extensions = isRealPostgres\n ? ['vector', 'fuzzystrmatch', 'pgcrypto']\n : ['vector', 'fuzzystrmatch'];\n await this.extensionManager.installRequiredExtensions(extensions);\n\n // Generate current snapshot from schema\n const currentSnapshot = await generateSnapshot(schema);\n\n // Ensure all schemas referenced in the snapshot exist\n await this.ensureSchemasExist(currentSnapshot);\n\n // Validate schema usage and warn about potential issues\n this.validateSchemaUsage(pluginName, currentSnapshot);\n\n const currentHash = hashSnapshot(currentSnapshot);\n\n // Check if we've already run this exact migration\n // This check happens AFTER acquiring the lock to handle concurrent scenarios\n // This is critical: if we had to wait for the lock (lockAcquired was initially false),\n // another process may have completed the migration while we were waiting\n // We MUST check regardless of whether lastMigration existed before\n const lastMigration = await this.migrationTracker.getLastMigration(pluginName);\n if (lastMigration && lastMigration.hash === currentHash) {\n logger.info(\n { src: 'plugin:sql', pluginName, hash: currentHash },\n 'No changes detected, skipping migration'\n );\n return;\n }\n\n // Load previous snapshot\n let previousSnapshot = await this.snapshotStorage.getLatestSnapshot(pluginName);\n\n // If no snapshot exists but tables exist in database, introspect them\n if (!previousSnapshot && Object.keys(currentSnapshot.tables).length > 0) {\n const hasExistingTables = await this.introspector.hasExistingTables(pluginName);\n\n if (hasExistingTables) {\n logger.info(\n { src: 'plugin:sql', pluginName },\n 'No snapshot found but tables exist in database, introspecting'\n );\n\n // Determine the schema name for introspection\n const schemaName = this.getExpectedSchemaName(pluginName);\n\n // Introspect the current database state\n const introspectedSnapshot = await this.introspector.introspectSchema(schemaName);\n\n // IMPORTANT: Filter the introspected snapshot to only include tables that are\n // defined in the current schema. This prevents tables from other plugins\n // (e.g., gamification tables in 'public' schema) from being marked as \"orphans\"\n // and scheduled for deletion.\n const expectedTableNames = new Set<string>();\n for (const tableKey of Object.keys(currentSnapshot.tables)) {\n const tableData = currentSnapshot.tables[tableKey] as any;\n const tableName = tableData.name || tableKey.split('.').pop();\n expectedTableNames.add(tableName);\n }\n\n // Filter introspected tables to only those in the current schema\n const filteredTables: any = {};\n for (const tableKey of Object.keys(introspectedSnapshot.tables)) {\n const tableData = introspectedSnapshot.tables[tableKey] as any;\n const tableName = tableData.name || tableKey.split('.').pop();\n if (expectedTableNames.has(tableName)) {\n filteredTables[tableKey] = tableData;\n } else {\n logger.debug(\n { src: 'plugin:sql', pluginName, tableName },\n 'Ignoring table from introspection (not in current schema)'\n );\n }\n }\n\n // Use filtered snapshot\n const filteredSnapshot = {\n ...introspectedSnapshot,\n tables: filteredTables,\n };\n\n // Only use the introspected snapshot if it has tables\n if (Object.keys(filteredSnapshot.tables).length > 0) {\n // Save this as the initial snapshot (idx: 0)\n await this.snapshotStorage.saveSnapshot(pluginName, 0, filteredSnapshot);\n\n // Update journal to record this initial state\n await this.journalStorage.updateJournal(\n pluginName,\n 0,\n `introspected_${Date.now()}`,\n true\n );\n\n // Record this as a migration\n const filteredHash = hashSnapshot(filteredSnapshot);\n await this.migrationTracker.recordMigration(pluginName, filteredHash, Date.now());\n\n logger.info(\n { src: 'plugin:sql', pluginName },\n 'Created initial snapshot from existing database'\n );\n\n // Set this as the previous snapshot for comparison\n previousSnapshot = filteredSnapshot;\n }\n }\n }\n\n // Check if there are actual changes\n if (!hasChanges(previousSnapshot, currentSnapshot)) {\n logger.info({ src: 'plugin:sql', pluginName }, 'No schema changes');\n\n // For empty schemas, we still want to record the migration\n // to ensure idempotency and consistency\n if (!previousSnapshot && Object.keys(currentSnapshot.tables).length === 0) {\n logger.info({ src: 'plugin:sql', pluginName }, 'Recording empty schema');\n await this.migrationTracker.recordMigration(pluginName, currentHash, Date.now());\n const idx = await this.journalStorage.getNextIdx(pluginName);\n const tag = this.generateMigrationTag(idx, pluginName);\n await this.journalStorage.updateJournal(pluginName, idx, tag, true);\n await this.snapshotStorage.saveSnapshot(pluginName, idx, currentSnapshot);\n }\n\n return;\n }\n\n // Calculate diff\n const diff = await calculateDiff(previousSnapshot, currentSnapshot);\n\n // Check if diff has changes\n if (!hasDiffChanges(diff)) {\n logger.info({ src: 'plugin:sql', pluginName }, 'No actionable changes');\n return;\n }\n\n // Check for potential data loss\n const dataLossCheck = checkForDataLoss(diff);\n\n if (dataLossCheck.hasDataLoss) {\n const isProduction = process.env.NODE_ENV === 'production';\n\n // Determine if destructive migrations are allowed\n // Priority: explicit options > environment variable\n const allowDestructive =\n options.force ||\n options.allowDataLoss ||\n process.env.ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS === 'true';\n\n if (!allowDestructive) {\n // Block the migration and provide clear instructions\n logger.error(\n {\n src: 'plugin:sql',\n pluginName,\n environment: isProduction ? 'PRODUCTION' : 'DEVELOPMENT',\n warnings: dataLossCheck.warnings,\n },\n 'Destructive migration blocked - set ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS=true or use force option'\n );\n\n const errorMessage = isProduction\n ? `Destructive migration blocked in production for ${pluginName}. Set ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS=true or use drizzle-kit.`\n : `Destructive migration blocked for ${pluginName}. Set ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS=true to proceed.`;\n\n throw new Error(errorMessage);\n }\n\n // Log that we're proceeding with destructive operations\n if (dataLossCheck.requiresConfirmation) {\n logger.warn(\n { src: 'plugin:sql', pluginName, warnings: dataLossCheck.warnings },\n 'Proceeding with destructive migration'\n );\n }\n }\n\n // Generate SQL statements\n const sqlStatements = await generateMigrationSQL(previousSnapshot, currentSnapshot, diff);\n\n if (sqlStatements.length === 0) {\n logger.info({ src: 'plugin:sql', pluginName }, 'No SQL statements to execute');\n return;\n }\n\n // Log what we're about to do\n logger.info(\n { src: 'plugin:sql', pluginName, statementCount: sqlStatements.length },\n 'Executing SQL statements'\n );\n if (options.verbose) {\n sqlStatements.forEach((stmt, i) => {\n logger.debug(\n { src: 'plugin:sql', statementIndex: i + 1, statement: stmt },\n 'SQL statement'\n );\n });\n }\n\n // Dry run mode - just log what would happen\n if (options.dryRun) {\n logger.info(\n { src: 'plugin:sql', pluginName, statements: sqlStatements },\n 'DRY RUN mode - not executing statements'\n );\n return;\n }\n\n // Execute migration in transaction\n await this.executeMigration(pluginName, currentSnapshot, currentHash, sqlStatements);\n\n logger.info({ src: 'plugin:sql', pluginName }, 'Migration completed successfully');\n\n // Return a success result\n return;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n pluginName,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Migration failed'\n );\n throw error;\n } finally {\n // Always release the advisory lock if we acquired it (only for real PostgreSQL)\n const postgresUrl = process.env.POSTGRES_URL || process.env.DATABASE_URL || '';\n const isRealPostgres = this.isRealPostgresDatabase(postgresUrl);\n\n if (lockAcquired && isRealPostgres) {\n try {\n // Convert bigint to string for SQL query (same as when acquiring)\n const lockIdStr = lockId.toString();\n await this.db.execute(sql`SELECT pg_advisory_unlock(CAST(${lockIdStr} AS bigint))`);\n logger.debug({ src: 'plugin:sql', pluginName }, 'Advisory lock released');\n } catch (unlockError) {\n logger.warn(\n {\n src: 'plugin:sql',\n pluginName,\n error: unlockError instanceof Error ? unlockError.message : String(unlockError),\n },\n 'Failed to release advisory lock'\n );\n }\n }\n }\n }\n\n /**\n * Execute migration in a transaction\n */\n private async executeMigration(\n pluginName: string,\n snapshot: SchemaSnapshot,\n hash: string,\n sqlStatements: string[]\n ): Promise<void> {\n let transactionStarted = false;\n\n try {\n // Start manual transaction\n await this.db.execute(sql`BEGIN`);\n transactionStarted = true;\n\n // Execute all SQL statements\n for (const stmt of sqlStatements) {\n logger.debug({ src: 'plugin:sql', statement: stmt }, 'Executing SQL statement');\n await this.db.execute(sql.raw(stmt));\n }\n\n // Get next index for journal\n const idx = await this.journalStorage.getNextIdx(pluginName);\n\n // Record migration\n await this.migrationTracker.recordMigration(pluginName, hash, Date.now());\n\n // Update journal\n const tag = this.generateMigrationTag(idx, pluginName);\n await this.journalStorage.updateJournal(\n pluginName,\n idx,\n tag,\n true // breakpoints\n );\n\n // Store snapshot\n await this.snapshotStorage.saveSnapshot(pluginName, idx, snapshot);\n\n // Commit the transaction\n await this.db.execute(sql`COMMIT`);\n\n logger.info({ src: 'plugin:sql', pluginName, tag }, 'Recorded migration');\n } catch (error) {\n // Rollback on error if transaction was started\n if (transactionStarted) {\n try {\n await this.db.execute(sql`ROLLBACK`);\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Migration failed, rolled back'\n );\n } catch (rollbackError) {\n logger.error(\n {\n src: 'plugin:sql',\n error: rollbackError instanceof Error ? rollbackError.message : String(rollbackError),\n },\n 'Failed to rollback transaction'\n );\n }\n }\n throw error;\n }\n }\n\n /**\n * Generate migration tag (like 0000_jazzy_shard)\n */\n private generateMigrationTag(idx: number, pluginName: string): string {\n // Generate a simple tag - in production, use Drizzle's word generation\n const prefix = idx.toString().padStart(4, '0');\n const timestamp = Date.now().toString(36);\n return `${prefix}_${pluginName}_${timestamp}`;\n }\n\n /**\n * Get migration status for a plugin\n * @param pluginName - Plugin identifier\n * @returns Migration history and current state\n */\n async getStatus(pluginName: string): Promise<{\n hasRun: boolean;\n lastMigration: any;\n journal: any;\n snapshots: number;\n }> {\n const lastMigration = await this.migrationTracker.getLastMigration(pluginName);\n const journal = await this.journalStorage.loadJournal(pluginName);\n const snapshots = await this.snapshotStorage.getAllSnapshots(pluginName);\n\n return {\n hasRun: !!lastMigration,\n lastMigration,\n journal,\n snapshots: snapshots.length,\n };\n }\n\n /**\n * Reset migrations for a plugin (dangerous - for development only)\n * @param pluginName - Plugin identifier\n * @warning Deletes all migration history - use only in development\n */\n async reset(pluginName: string): Promise<void> {\n logger.warn({ src: 'plugin:sql', pluginName }, 'Resetting migrations');\n\n await this.db.execute(\n sql`DELETE FROM migrations._migrations WHERE plugin_name = ${pluginName}`\n );\n await this.db.execute(sql`DELETE FROM migrations._journal WHERE plugin_name = ${pluginName}`);\n await this.db.execute(sql`DELETE FROM migrations._snapshots WHERE plugin_name = ${pluginName}`);\n\n logger.warn({ src: 'plugin:sql', pluginName }, 'Reset complete');\n }\n\n /**\n * Check if a migration would cause data loss without executing it\n * @param pluginName - Plugin identifier\n * @param schema - Drizzle schema to check\n * @returns Data loss analysis or null if no changes\n */\n async checkMigration(pluginName: string, schema: any): Promise<DataLossCheck | null> {\n try {\n logger.info({ src: 'plugin:sql', pluginName }, 'Checking migration');\n\n // Generate current snapshot from schema\n const currentSnapshot = await generateSnapshot(schema);\n\n // Load previous snapshot\n const previousSnapshot = await this.snapshotStorage.getLatestSnapshot(pluginName);\n\n // Check if there are changes\n if (!hasChanges(previousSnapshot, currentSnapshot)) {\n logger.info({ src: 'plugin:sql', pluginName }, 'No changes detected');\n return null;\n }\n\n // Calculate diff\n const diff = await calculateDiff(previousSnapshot, currentSnapshot);\n\n // Check for data loss\n const dataLossCheck = checkForDataLoss(diff);\n\n if (dataLossCheck.hasDataLoss) {\n logger.warn({ src: 'plugin:sql', pluginName }, 'Migration would cause data loss');\n } else {\n logger.info({ src: 'plugin:sql', pluginName }, 'Migration is safe (no data loss)');\n }\n\n return dataLossCheck;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n pluginName,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to check migration'\n );\n throw error;\n }\n }\n}\n",
|
|
113
113
|
"export { RuntimeMigrator } from './runtime-migrator';\nexport * from './types';\n\n// Storage exports (if needed for advanced usage)\nexport { MigrationTracker } from './storage/migration-tracker';\nexport { JournalStorage } from './storage/journal-storage';\nexport { SnapshotStorage } from './storage/snapshot-storage';\n\n// Drizzle adapter exports (if needed for extensions)\nexport {\n generateSnapshot,\n hashSnapshot,\n createEmptySnapshot,\n hasChanges,\n} from './drizzle-adapters/snapshot-generator';\n\nexport { calculateDiff, hasDiffChanges, type SchemaDiff } from './drizzle-adapters/diff-calculator';\n\nexport {\n generateMigrationSQL,\n generateRenameTableSQL,\n generateRenameColumnSQL,\n} from './drizzle-adapters/sql-generator';\n",
|
|
114
114
|
"import { logger, type IDatabaseAdapter } from '@elizaos/core';\nimport { sql } from 'drizzle-orm';\nimport { getDb } from './types';\n\n/**\n * TEMPORARY MIGRATION: pre-1.6.5 → 1.6.5+ schema migration\n *\n * This migration runs automatically on startup and is idempotent.\n * It handles the migration from Owner RLS to Server RLS + Entity RLS, including:\n * - Disabling old RLS policies temporarily\n * - Renaming server_id → message_server_id in channels, worlds, rooms\n * - Converting TEXT → UUID where needed\n * - Dropping old server_id columns for RLS\n * - Cleaning up indexes\n *\n * @param adapter - Database adapter\n */\nexport async function migrateToEntityRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n // Detect database type - skip PostgreSQL-specific migrations for SQLite\n try {\n await db.execute(sql`SELECT 1 FROM pg_tables LIMIT 1`);\n } catch {\n // Not PostgreSQL (likely SQLite)\n logger.debug('[Migration] ⊘ Not PostgreSQL, skipping PostgreSQL-specific migrations');\n return;\n }\n\n // Check if schema migration has already been completed\n // We use the presence of snake_case columns as a marker\n let schemaAlreadyMigrated = false;\n try {\n const migrationCheck = await db.execute(sql`\n SELECT column_name FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = 'rooms'\n AND column_name = 'agent_id'\n `);\n\n if (migrationCheck.rows && migrationCheck.rows.length > 0) {\n // Migration already completed - rooms.agent_id exists (snake_case)\n schemaAlreadyMigrated = true;\n logger.debug('[Migration] ⊘ Schema already migrated (snake_case columns exist)');\n }\n } catch {\n // Table might not exist yet, continue with migration\n logger.debug('[Migration] → rooms table not found, will be created by RuntimeMigrator');\n return; // Let RuntimeMigrator create fresh tables\n }\n\n // If schema is already migrated, check if we need to clean up RLS\n // Only disable RLS if ENABLE_DATA_ISOLATION is NOT true (user disabled isolation)\n // If ENABLE_DATA_ISOLATION=true, keep RLS as-is - migration-service.ts will ensure proper config\n if (schemaAlreadyMigrated) {\n const dataIsolationEnabled = process.env.ENABLE_DATA_ISOLATION === 'true';\n\n if (dataIsolationEnabled) {\n // RLS should stay enabled - no need to disable/re-enable cycle\n // Note: migration-service.ts will ensure RLS is properly configured after this\n // via applyRLSToNewTables() and applyEntityRLSToAllTables() which are idempotent\n logger.debug('[Migration] ⊘ Schema already migrated, RLS enabled - nothing to do');\n return;\n }\n\n // User disabled data isolation - clean up RLS if it was previously enabled\n logger.debug('[Migration] → Schema migrated but RLS disabled, cleaning up...');\n\n try {\n const tablesWithRls = await db.execute(sql`\n SELECT c.relname as tablename\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = 'public'\n AND c.relkind = 'r'\n AND c.relrowsecurity = true\n ORDER BY c.relname\n `);\n\n if (tablesWithRls.rows && tablesWithRls.rows.length > 0) {\n for (const row of tablesWithRls.rows) {\n const tableName = row.tablename as string;\n try {\n await db.execute(sql.raw(`ALTER TABLE \"${tableName}\" DISABLE ROW LEVEL SECURITY`));\n } catch {\n // Ignore errors\n }\n }\n logger.debug(`[Migration] ✓ RLS cleanup completed (${tablesWithRls.rows.length} tables)`);\n } else {\n logger.debug('[Migration] ⊘ No tables with RLS to clean up');\n }\n } catch {\n logger.debug('[Migration] ⊘ Could not perform RLS cleanup');\n }\n\n return;\n }\n\n logger.info('[Migration] Starting pre-1.6.5 → 1.6.5+ schema migration...');\n\n try {\n // Clear RuntimeMigrator snapshot cache to force fresh introspection\n // This ensures the snapshot matches the current database state after our migrations\n logger.debug('[Migration] → Clearing RuntimeMigrator snapshot cache...');\n try {\n await db.execute(\n sql`DELETE FROM migrations._snapshots WHERE plugin_name = '@elizaos/plugin-sql'`\n );\n logger.debug('[Migration] ✓ Snapshot cache cleared');\n } catch (error) {\n // If migrations schema doesn't exist yet, that's fine - no cache to clear\n logger.debug('[Migration] ⊘ No snapshot cache to clear (migrations schema not yet created)');\n }\n\n // Disable RLS only on tables that have it enabled\n // RLS will be re-implemented properly later\n logger.debug('[Migration] → Checking for Row Level Security to disable...');\n try {\n const tablesWithRls = await db.execute(sql`\n SELECT c.relname as tablename\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = 'public'\n AND c.relkind = 'r'\n AND c.relrowsecurity = true\n ORDER BY c.relname\n `);\n\n if (tablesWithRls.rows && tablesWithRls.rows.length > 0) {\n for (const row of tablesWithRls.rows) {\n const tableName = row.tablename as string;\n try {\n await db.execute(sql.raw(`ALTER TABLE \"${tableName}\" DISABLE ROW LEVEL SECURITY`));\n logger.debug(`[Migration] ✓ Disabled RLS on ${tableName}`);\n } catch (error) {\n logger.debug(`[Migration] ⊘ Could not disable RLS on ${tableName}`);\n }\n }\n } else {\n logger.debug('[Migration] ⊘ No tables with RLS enabled');\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not check RLS (may not have permissions)');\n }\n\n // Special handling for tables where serverId/server_id needs to become message_server_id\n // v1.6.4 had: rooms.serverId (TEXT camelCase), worlds.serverId (TEXT camelCase), channels.server_id (UUID)\n // Current: message_server_id (UUID) in all tables\n //\n // STRATEGY: Rename serverId/server_id to message_server_id preserving data\n logger.debug('[Migration] → Handling serverId/server_id → message_server_id migrations...');\n\n const tablesToMigrate = ['channels', 'worlds', 'rooms'];\n\n for (const tableName of tablesToMigrate) {\n try {\n // Check for both camelCase (serverId) and snake_case (server_id) columns\n const columnsResult = await db.execute(sql`\n SELECT column_name, data_type, is_nullable\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = ${tableName}\n AND column_name IN ('server_id', 'serverId', 'message_server_id')\n ORDER BY column_name\n `);\n\n const columns = columnsResult.rows || [];\n const serverIdSnake = columns.find((c: any) => c.column_name === 'server_id');\n const serverIdCamel = columns.find((c: any) => c.column_name === 'serverId');\n const messageServerId = columns.find((c: any) => c.column_name === 'message_server_id');\n\n // Use whichever old column exists (prefer snake_case for channels)\n const serverId = serverIdSnake || serverIdCamel;\n const oldColumnName = serverIdSnake ? 'server_id' : 'serverId';\n\n if (serverId && !messageServerId) {\n // Old column exists → rename it to message_server_id\n logger.debug(\n `[Migration] → Renaming ${tableName}.${oldColumnName} to message_server_id...`\n );\n await db.execute(\n sql.raw(\n `ALTER TABLE \"${tableName}\" RENAME COLUMN \"${oldColumnName}\" TO \"message_server_id\"`\n )\n );\n logger.debug(`[Migration] ✓ Renamed ${tableName}.${oldColumnName} → message_server_id`);\n\n // If the column was text, try to convert to UUID (if data is UUID-compatible)\n if (serverId.data_type === 'text') {\n // CRITICAL: Drop DEFAULT constraint before type conversion\n // This prevents \"default for column cannot be cast automatically\" errors\n // Wrap in separate try-catch to ensure we continue even if no default exists\n try {\n logger.debug(\n `[Migration] → Dropping DEFAULT constraint on ${tableName}.message_server_id...`\n );\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" ALTER COLUMN \"message_server_id\" DROP DEFAULT`)\n );\n logger.debug(`[Migration] ✓ Dropped DEFAULT constraint`);\n } catch {\n logger.debug(\n `[Migration] ⊘ No DEFAULT constraint to drop on ${tableName}.message_server_id`\n );\n }\n\n try {\n logger.debug(\n `[Migration] → Converting ${tableName}.message_server_id from text to uuid...`\n );\n // Use robust conversion: valid UUIDs are cast directly, others get md5 hash\n // This handles: empty strings, non-UUID text, uppercase UUIDs, NULL values\n await db.execute(\n sql.raw(`\n ALTER TABLE \"${tableName}\"\n ALTER COLUMN \"message_server_id\" TYPE uuid\n USING CASE\n WHEN \"message_server_id\" IS NULL THEN NULL\n WHEN \"message_server_id\" = '' THEN NULL\n WHEN \"message_server_id\" ~ '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'\n THEN \"message_server_id\"::uuid\n ELSE md5(\"message_server_id\")::uuid\n END\n `)\n );\n logger.debug(`[Migration] ✓ Converted ${tableName}.message_server_id to uuid`);\n } catch (convertError) {\n logger.warn(\n `[Migration] ⚠️ Could not convert ${tableName}.message_server_id to uuid: ${convertError}`\n );\n }\n }\n\n // If the column should be NOT NULL but has NULLs, we need to handle that\n // For channels, it's NOT NULL in the new schema\n if (tableName === 'channels') {\n const nullCountResult = await db.execute(\n sql.raw(\n `SELECT COUNT(*) as count FROM \"${tableName}\" WHERE \"message_server_id\" IS NULL`\n )\n );\n const nullCount = nullCountResult.rows?.[0]?.count as string | undefined;\n if (nullCount && parseInt(nullCount, 10) > 0) {\n logger.warn(\n `[Migration] ⚠️ ${tableName} has ${nullCount} rows with NULL message_server_id - these will be deleted`\n );\n await db.execute(\n sql.raw(`DELETE FROM \"${tableName}\" WHERE \"message_server_id\" IS NULL`)\n );\n logger.debug(\n `[Migration] ✓ Deleted ${nullCount} rows with NULL message_server_id from ${tableName}`\n );\n }\n\n // Make it NOT NULL\n logger.debug(`[Migration] → Making ${tableName}.message_server_id NOT NULL...`);\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" ALTER COLUMN \"message_server_id\" SET NOT NULL`)\n );\n logger.debug(`[Migration] ✓ Set ${tableName}.message_server_id NOT NULL`);\n }\n } else if (serverId && messageServerId) {\n // Both exist → just drop the old column\n logger.debug(`[Migration] → ${tableName} has both columns, dropping ${oldColumnName}...`);\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" DROP COLUMN \"${oldColumnName}\" CASCADE`)\n );\n logger.debug(`[Migration] ✓ Dropped ${tableName}.${oldColumnName}`);\n } else if (!serverId && messageServerId) {\n // Only message_server_id exists - check if it needs type conversion from TEXT to UUID\n // This handles idempotency when migration partially ran before rollback\n if (messageServerId.data_type === 'text') {\n logger.debug(\n `[Migration] → ${tableName}.message_server_id exists but is TEXT, needs UUID conversion...`\n );\n\n // CRITICAL: Drop DEFAULT constraint before type conversion\n // This prevents \"default for column cannot be cast automatically\" errors\n logger.debug(\n `[Migration] → Dropping DEFAULT constraint on ${tableName}.message_server_id...`\n );\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" ALTER COLUMN \"message_server_id\" DROP DEFAULT`)\n );\n logger.debug(`[Migration] ✓ Dropped DEFAULT constraint`);\n\n // Convert TEXT to UUID using MD5 hash for non-UUID text values\n // This creates deterministic UUIDs from text values, preserving data\n logger.debug(\n `[Migration] → Converting ${tableName}.message_server_id from text to uuid (generating UUIDs from text)...`\n );\n await db.execute(\n sql.raw(`\n ALTER TABLE \"${tableName}\"\n ALTER COLUMN \"message_server_id\" TYPE uuid\n USING CASE\n WHEN \"message_server_id\" ~ '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'\n THEN \"message_server_id\"::uuid\n ELSE md5(\"message_server_id\")::uuid\n END\n `)\n );\n logger.debug(`[Migration] ✓ Converted ${tableName}.message_server_id to uuid`);\n } else {\n logger.debug(`[Migration] ⊘ ${tableName}.message_server_id already UUID, skipping`);\n }\n } else {\n logger.debug(`[Migration] ⊘ ${tableName} already migrated, skipping`);\n }\n } catch (error) {\n logger.warn(`[Migration] ⚠️ Error migrating ${tableName}.server_id: ${error}`);\n }\n }\n\n // Drop ALL remaining server_id columns (will be re-added by RLS after migrations)\n // This prevents RuntimeMigrator from seeing them and trying to drop them\n // EXCEPT for tables where server_id is part of the schema (like agents, server_agents)\n logger.debug('[Migration] → Dropping all remaining RLS-managed server_id columns...');\n try {\n const serverIdColumnsResult = await db.execute(sql`\n SELECT table_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND column_name = 'server_id'\n AND table_name NOT IN (\n 'servers', -- server_id is the primary key\n 'agents', -- server_id is in the schema (for RLS)\n 'channels', -- already handled above\n 'worlds', -- already handled above\n 'rooms', -- already handled above\n 'server_agents', -- server_id is part of composite key\n 'drizzle_migrations',\n '__drizzle_migrations'\n )\n ORDER BY table_name\n `);\n\n const tablesToClean = serverIdColumnsResult.rows || [];\n logger.debug(`[Migration] → Found ${tablesToClean.length} tables with server_id columns`);\n\n for (const row of tablesToClean) {\n const tableName = row.table_name as string;\n try {\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" DROP COLUMN IF EXISTS server_id CASCADE`)\n );\n logger.debug(`[Migration] ✓ Dropped server_id from ${tableName}`);\n } catch (error) {\n logger.debug(`[Migration] ⊘ Could not drop server_id from ${tableName}`);\n }\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not drop server_id columns (may not have permissions)');\n }\n\n // Special handling for agents table: rename owner_id → server_id\n // v1.6.4 had owner_id, v1.6.5 changed it to server_id\n logger.debug('[Migration] → Checking agents.owner_id → server_id rename...');\n try {\n const agentsColumnsResult = await db.execute(sql`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = 'agents'\n AND column_name IN ('owner_id', 'server_id')\n ORDER BY column_name\n `);\n\n const agentsColumns = agentsColumnsResult.rows || [];\n const hasOwnerId = agentsColumns.some((c: any) => c.column_name === 'owner_id');\n const hasServerId = agentsColumns.some((c: any) => c.column_name === 'server_id');\n\n if (hasOwnerId && !hasServerId) {\n // Rename owner_id → server_id\n logger.debug('[Migration] → Renaming agents.owner_id to server_id...');\n await db.execute(sql.raw(`ALTER TABLE \"agents\" RENAME COLUMN \"owner_id\" TO \"server_id\"`));\n logger.debug('[Migration] ✓ Renamed agents.owner_id → server_id');\n } else if (hasOwnerId && hasServerId) {\n // Both exist - drop owner_id (data should be in server_id)\n logger.debug('[Migration] → Both owner_id and server_id exist, dropping owner_id...');\n await db.execute(sql.raw(`ALTER TABLE \"agents\" DROP COLUMN \"owner_id\" CASCADE`));\n logger.debug('[Migration] ✓ Dropped agents.owner_id');\n } else {\n logger.debug('[Migration] ⊘ agents table already has server_id (or no owner_id), skipping');\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not check/migrate agents.owner_id');\n }\n\n // Migrate data from obsolete 'owners' table to 'servers' (if owners exists)\n // v1.6.4 used owners table, v1.6.5+ uses servers table\n logger.debug('[Migration] → Checking for owners → servers data migration...');\n try {\n const ownersTableResult = await db.execute(sql`\n SELECT table_name\n FROM information_schema.tables\n WHERE table_schema = 'public'\n AND table_name = 'owners'\n `);\n\n if (ownersTableResult.rows && ownersTableResult.rows.length > 0) {\n // First, ensure servers table exists\n logger.debug('[Migration] → Ensuring servers table exists...');\n await db.execute(\n sql.raw(`\n CREATE TABLE IF NOT EXISTS \"servers\" (\n \"id\" uuid PRIMARY KEY,\n \"created_at\" timestamp with time zone DEFAULT now() NOT NULL,\n \"updated_at\" timestamp with time zone DEFAULT now() NOT NULL\n )\n `)\n );\n\n // Migrate data from owners to servers (if any)\n logger.debug('[Migration] → Migrating owners data to servers...');\n await db.execute(\n sql.raw(`\n INSERT INTO \"servers\" (\"id\", \"created_at\", \"updated_at\")\n SELECT \"id\", COALESCE(\"created_at\", now()), COALESCE(\"updated_at\", now())\n FROM \"owners\"\n ON CONFLICT (\"id\") DO NOTHING\n `)\n );\n logger.debug('[Migration] ✓ Migrated owners data to servers');\n\n // Now safe to drop owners table\n logger.debug('[Migration] → Dropping obsolete owners table...');\n await db.execute(sql.raw(`DROP TABLE IF EXISTS \"owners\" CASCADE`));\n logger.debug('[Migration] ✓ Dropped obsolete owners table');\n } else {\n logger.debug('[Migration] ⊘ owners table not found, skipping');\n }\n } catch (error) {\n logger.warn(`[Migration] ⚠️ Could not migrate owners → servers: ${error}`);\n }\n\n // Special handling for server_agents → message_server_agents rename\n // This aligns with the server_id → message_server_id naming convention\n logger.debug('[Migration] → Checking server_agents table rename...');\n try {\n const tablesResult = await db.execute(sql`\n SELECT table_name\n FROM information_schema.tables\n WHERE table_schema = 'public'\n AND table_name IN ('server_agents', 'message_server_agents')\n ORDER BY table_name\n `);\n\n const tables = tablesResult.rows || [];\n const hasServerAgents = tables.some((t: any) => t.table_name === 'server_agents');\n const hasMessageServerAgents = tables.some(\n (t: any) => t.table_name === 'message_server_agents'\n );\n\n if (hasServerAgents && !hasMessageServerAgents) {\n // Rename server_agents → message_server_agents\n logger.debug('[Migration] → Renaming server_agents to message_server_agents...');\n await db.execute(sql.raw(`ALTER TABLE \"server_agents\" RENAME TO \"message_server_agents\"`));\n logger.debug('[Migration] ✓ Renamed server_agents → message_server_agents');\n\n // Now rename server_id column → message_server_id\n logger.debug(\n '[Migration] → Renaming message_server_agents.server_id to message_server_id...'\n );\n await db.execute(\n sql.raw(\n `ALTER TABLE \"message_server_agents\" RENAME COLUMN \"server_id\" TO \"message_server_id\"`\n )\n );\n logger.debug('[Migration] ✓ Renamed message_server_agents.server_id → message_server_id');\n } else if (!hasServerAgents && !hasMessageServerAgents) {\n // Neither table exists - RuntimeMigrator will create message_server_agents\n logger.debug('[Migration] ⊘ No server_agents table to migrate');\n } else if (hasMessageServerAgents) {\n // Check if it has the columns and rename if needed\n logger.debug('[Migration] → Checking message_server_agents columns...');\n const columnsResult = await db.execute(sql`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = 'message_server_agents'\n AND column_name IN ('server_id', 'message_server_id')\n ORDER BY column_name\n `);\n\n const columns = columnsResult.rows || [];\n const hasServerId = columns.some((c: any) => c.column_name === 'server_id');\n const hasMessageServerId = columns.some((c: any) => c.column_name === 'message_server_id');\n\n if (hasServerId && !hasMessageServerId) {\n // Rename server_id → message_server_id\n logger.debug(\n '[Migration] → Renaming message_server_agents.server_id to message_server_id...'\n );\n await db.execute(\n sql.raw(\n `ALTER TABLE \"message_server_agents\" RENAME COLUMN \"server_id\" TO \"message_server_id\"`\n )\n );\n logger.debug('[Migration] ✓ Renamed message_server_agents.server_id → message_server_id');\n } else if (!hasServerId && !hasMessageServerId) {\n // Table exists but doesn't have either column - truncate it\n logger.debug(\n '[Migration] → message_server_agents exists without required columns, truncating...'\n );\n await db.execute(sql`TRUNCATE TABLE message_server_agents CASCADE`);\n logger.debug('[Migration] ✓ Truncated message_server_agents');\n } else {\n logger.debug('[Migration] ⊘ message_server_agents already has correct schema');\n }\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not check/migrate server_agents table');\n }\n\n // Special handling for channel_participants: rename userId → entityId\n // This handles the migration from the old userId column to the new entityId column\n logger.debug('[Migration] → Checking channel_participants table...');\n try {\n const columnsResult = await db.execute(sql`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = 'channel_participants'\n AND column_name IN ('user_id', 'entity_id')\n ORDER BY column_name\n `);\n\n const columns = columnsResult.rows || [];\n const hasUserId = columns.some((c: any) => c.column_name === 'user_id');\n const hasEntityId = columns.some((c: any) => c.column_name === 'entity_id');\n\n if (hasUserId && !hasEntityId) {\n // Rename user_id → entity_id\n logger.debug('[Migration] → Renaming channel_participants.user_id to entity_id...');\n await db.execute(\n sql.raw(`ALTER TABLE \"channel_participants\" RENAME COLUMN \"user_id\" TO \"entity_id\"`)\n );\n logger.debug('[Migration] ✓ Renamed channel_participants.user_id → entity_id');\n } else if (!hasUserId && !hasEntityId) {\n // Table exists but has neither column - truncate it so RuntimeMigrator can add entity_id\n logger.debug(\n '[Migration] → channel_participants exists without entity_id or user_id, truncating...'\n );\n await db.execute(sql`TRUNCATE TABLE channel_participants CASCADE`);\n logger.debug('[Migration] ✓ Truncated channel_participants');\n } else {\n logger.debug('[Migration] ⊘ channel_participants already has entity_id column');\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not check/migrate channel_participants');\n }\n\n // Drop ALL regular indexes (not PK or unique constraints) to avoid conflicts\n // The RuntimeMigrator will recreate them based on the schema\n logger.debug('[Migration] → Discovering and dropping all regular indexes...');\n try {\n const indexesResult = await db.execute(sql`\n SELECT i.relname AS index_name\n FROM pg_index idx\n JOIN pg_class i ON i.oid = idx.indexrelid\n JOIN pg_class c ON c.oid = idx.indrelid\n JOIN pg_namespace n ON n.oid = c.relnamespace\n LEFT JOIN pg_constraint con ON con.conindid = idx.indexrelid\n WHERE n.nspname = 'public'\n AND NOT idx.indisprimary -- Not a primary key\n AND con.contype IS NULL -- Not a constraint (unique, etc)\n ORDER BY i.relname\n `);\n\n const indexesToDrop = indexesResult.rows || [];\n logger.debug(`[Migration] → Found ${indexesToDrop.length} indexes to drop`);\n\n for (const row of indexesToDrop) {\n const indexName = row.index_name as string;\n try {\n await db.execute(sql.raw(`DROP INDEX IF EXISTS \"${indexName}\"`));\n logger.debug(`[Migration] ✓ Dropped index ${indexName}`);\n } catch (error) {\n logger.debug(`[Migration] ⊘ Could not drop index ${indexName}`);\n }\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not drop indexes (may not have permissions)');\n }\n\n // =========================================================================\n // SMOOTH MIGRATION: camelCase → snake_case column renames\n // This ensures a non-destructive transition from v1.6.4 to v1.6.5+\n // All data is preserved through RENAME COLUMN operations\n // This section can be removed once all deployments have been migrated\n // =========================================================================\n logger.debug('[Migration] → Starting camelCase → snake_case column renames...');\n\n const columnRenames = [\n // rooms table\n { table: 'rooms', from: 'agentId', to: 'agent_id' },\n { table: 'rooms', from: 'worldId', to: 'world_id' },\n { table: 'rooms', from: 'channelId', to: 'channel_id' },\n { table: 'rooms', from: 'createdAt', to: 'created_at' },\n\n // worlds table\n { table: 'worlds', from: 'agentId', to: 'agent_id' },\n { table: 'worlds', from: 'createdAt', to: 'created_at' },\n\n // memories table\n { table: 'memories', from: 'createdAt', to: 'created_at' },\n { table: 'memories', from: 'entityId', to: 'entity_id' },\n { table: 'memories', from: 'agentId', to: 'agent_id' },\n { table: 'memories', from: 'roomId', to: 'room_id' },\n { table: 'memories', from: 'worldId', to: 'world_id' },\n\n // components table\n { table: 'components', from: 'entityId', to: 'entity_id' },\n { table: 'components', from: 'agentId', to: 'agent_id' },\n { table: 'components', from: 'roomId', to: 'room_id' },\n { table: 'components', from: 'worldId', to: 'world_id' },\n { table: 'components', from: 'sourceEntityId', to: 'source_entity_id' },\n { table: 'components', from: 'createdAt', to: 'created_at' },\n\n // participants table\n { table: 'participants', from: 'entityId', to: 'entity_id' },\n { table: 'participants', from: 'roomId', to: 'room_id' },\n { table: 'participants', from: 'agentId', to: 'agent_id' },\n { table: 'participants', from: 'roomState', to: 'room_state' },\n { table: 'participants', from: 'createdAt', to: 'created_at' },\n\n // relationships table\n { table: 'relationships', from: 'sourceEntityId', to: 'source_entity_id' },\n { table: 'relationships', from: 'targetEntityId', to: 'target_entity_id' },\n { table: 'relationships', from: 'agentId', to: 'agent_id' },\n { table: 'relationships', from: 'createdAt', to: 'created_at' },\n\n // logs table\n { table: 'logs', from: 'entityId', to: 'entity_id' },\n { table: 'logs', from: 'roomId', to: 'room_id' },\n { table: 'logs', from: 'createdAt', to: 'created_at' },\n\n // tasks table\n { table: 'tasks', from: 'roomId', to: 'room_id' },\n { table: 'tasks', from: 'worldId', to: 'world_id' },\n { table: 'tasks', from: 'entityId', to: 'entity_id' },\n { table: 'tasks', from: 'createdAt', to: 'created_at' },\n { table: 'tasks', from: 'updatedAt', to: 'updated_at' },\n\n // agents table\n { table: 'agents', from: 'createdAt', to: 'created_at' },\n { table: 'agents', from: 'updatedAt', to: 'updated_at' },\n\n // entities table\n { table: 'entities', from: 'agentId', to: 'agent_id' },\n { table: 'entities', from: 'createdAt', to: 'created_at' },\n\n // embeddings table\n { table: 'embeddings', from: 'memoryId', to: 'memory_id' },\n { table: 'embeddings', from: 'createdAt', to: 'created_at' },\n\n // cache table\n { table: 'cache', from: 'agentId', to: 'agent_id' },\n { table: 'cache', from: 'createdAt', to: 'created_at' },\n { table: 'cache', from: 'expiresAt', to: 'expires_at' },\n ];\n\n for (const rename of columnRenames) {\n try {\n // Check if table exists first\n const tableExistsResult = await db.execute(sql`\n SELECT 1 FROM information_schema.tables\n WHERE table_schema = 'public' AND table_name = ${rename.table}\n `);\n\n if (!tableExistsResult.rows || tableExistsResult.rows.length === 0) {\n // Table doesn't exist yet, skip\n continue;\n }\n\n // Check which columns exist\n const columnsResult = await db.execute(sql`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = ${rename.table}\n AND column_name IN (${rename.from}, ${rename.to})\n ORDER BY column_name\n `);\n\n const columns = columnsResult.rows || [];\n const hasOldColumn = columns.some((c: any) => c.column_name === rename.from);\n const hasNewColumn = columns.some((c: any) => c.column_name === rename.to);\n\n if (hasOldColumn && !hasNewColumn) {\n // Old column exists, new doesn't → RENAME (preserves data!)\n logger.debug(`[Migration] → Renaming ${rename.table}.${rename.from} to ${rename.to}...`);\n await db.execute(\n sql.raw(\n `ALTER TABLE \"${rename.table}\" RENAME COLUMN \"${rename.from}\" TO \"${rename.to}\"`\n )\n );\n logger.debug(`[Migration] ✓ Renamed ${rename.table}.${rename.from} → ${rename.to}`);\n } else if (hasOldColumn && hasNewColumn) {\n // Both exist → drop old (data should be in new already)\n logger.debug(\n `[Migration] → Both columns exist, dropping ${rename.table}.${rename.from}...`\n );\n await db.execute(\n sql.raw(`ALTER TABLE \"${rename.table}\" DROP COLUMN \"${rename.from}\" CASCADE`)\n );\n logger.debug(`[Migration] ✓ Dropped ${rename.table}.${rename.from}`);\n }\n // If only new column exists or neither exists, nothing to do\n } catch (error) {\n // Log but continue - table might not exist yet or column might already be renamed\n logger.debug(`[Migration] ⊘ Could not process ${rename.table}.${rename.from}: ${error}`);\n }\n }\n\n logger.debug('[Migration] ✓ Completed camelCase → snake_case column renames');\n\n logger.info('[Migration] ✓ Migration complete - pre-1.6.5 → 1.6.5+ schema migration finished');\n } catch (error) {\n // Re-throw errors to prevent RuntimeMigrator from running on broken state\n logger.error('[Migration] Migration failed:', String(error));\n throw error;\n }\n}\n",
|
|
115
|
-
"import { logger, validateUuid, type IDatabaseAdapter } from '@elizaos/core';\nimport { sql, eq } from 'drizzle-orm';\nimport { serverTable } from './schema/server';\nimport { agentTable } from './schema/agent';\nimport { getDb } from './types';\n\n/**\n * PostgreSQL Row-Level Security (RLS) for Multi-Server and Entity Isolation\n *\n * This module provides two layers of database-level security:\n *\n * 1. **Server RLS** - Multi-server isolation\n * - Isolates data between different ElizaOS server instances\n * - Uses `server_id` column added dynamically to all tables\n * - Server context set via PostgreSQL `application_name` connection parameter\n * - Prevents data leakage between different deployments/environments\n *\n * 2. **Entity RLS** - User/agent-level privacy isolation\n * - Isolates data between different users (Clients (plugins/API) users)\n * - Uses `entity_id`, `author_id`, or joins via `participants` table\n * - Entity context set via `app.entity_id` transaction-local variable\n * - Provides DM privacy and multi-user isolation within a server\n *\n * CRITICAL SECURITY REQUIREMENTS:\n * - RLS policies DO NOT apply to PostgreSQL superuser accounts\n * - Use a REGULAR (non-superuser) database user\n * - Grant only necessary permissions (CREATE, SELECT, INSERT, UPDATE, DELETE)\n * - NEVER use the 'postgres' superuser or any superuser account\n * - Superusers bypass ALL RLS policies by design, defeating the isolation mechanism\n *\n * ARCHITECTURE:\n * - Server RLS: Uses PostgreSQL `application_name` (set at connection pool level)\n * - Entity RLS: Uses `SET LOCAL app.entity_id` (set per transaction)\n * - Policies use FORCE ROW LEVEL SECURITY to enforce even for table owners\n * - Automatic index creation for performance (`server_id`, `entity_id`, `room_id`)\n *\n * @module rls\n */\n\n/**\n * Install PostgreSQL functions required for Server RLS and Entity RLS\n *\n * This function creates all necessary PostgreSQL stored procedures for both\n * Server RLS (multi-server isolation) and Entity RLS (user privacy isolation).\n *\n * **Server RLS Functions Created:**\n * - `current_server_id()` - Returns server UUID from `application_name`\n * - `add_server_isolation(schema, table)` - Adds Server RLS to a single table\n * - `apply_rls_to_all_tables()` - Applies Server RLS to all eligible tables\n *\n * **Entity RLS Functions Created:**\n * - `current_entity_id()` - Returns entity UUID from `app.entity_id` session variable\n * - `add_entity_isolation(schema, table)` - Adds Entity RLS to a single table\n * - `apply_entity_rls_to_all_tables()` - Applies Entity RLS to all eligible tables\n *\n * **Security Model:**\n * - Server RLS: Isolation between different ElizaOS instances (environments/deployments)\n * - Entity RLS: Isolation between different users within a server instance\n * - Both layers stack - a user can only see data from their server AND their accessible entities\n *\n * **Important Notes:**\n * - Must be called before `applyRLSToNewTables()` or `applyEntityRLSToAllTables()`\n * - Creates `servers` table if it doesn't exist\n * - Automatically calls `installEntityRLS()` to set up both layers\n * - Uses `%I` identifier quoting in format() to prevent SQL injection\n * - Policies use FORCE RLS to enforce even for table owners\n *\n * @param adapter - Database adapter with access to the Drizzle ORM instance\n * @returns Promise that resolves when all RLS functions are installed\n * @throws {Error} If database connection fails or SQL execution fails\n *\n * @example\n * ```typescript\n * // Install RLS functions on server startup\n * await installRLSFunctions(database);\n * await getOrCreateRlsServer(database, serverId);\n * await setServerContext(database, serverId);\n * await applyRLSToNewTables(database);\n * ```\n */\nexport async function installRLSFunctions(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n // Create servers table if it doesn't exist\n await db.execute(sql`\n CREATE TABLE IF NOT EXISTS servers (\n id UUID PRIMARY KEY,\n created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,\n updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL\n )\n `);\n\n // Function to get server_id from application_name\n // This allows multi-tenant isolation without needing superuser privileges\n // Each connection pool sets application_name = server_id\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION current_server_id() RETURNS UUID AS $$\n DECLARE\n app_name TEXT;\n BEGIN\n app_name := NULLIF(current_setting('application_name', TRUE), '');\n\n -- Return NULL if application_name is not set or not a valid UUID\n -- This allows admin queries to work without RLS restrictions\n BEGIN\n RETURN app_name::UUID;\n EXCEPTION WHEN OTHERS THEN\n RETURN NULL;\n END;\n END;\n $$ LANGUAGE plpgsql STABLE;\n `);\n\n // Function to add RLS to a table\n // SECURITY: Uses format() with %I to safely quote identifiers and prevent SQL injection\n // This function:\n // 1. Adds server_id column if it doesn't exist (with DEFAULT current_server_id())\n // 2. Backfills/reassigns orphaned data to current server\n // 3. Creates an index on server_id for query performance\n // 4. Enables FORCE ROW LEVEL SECURITY (enforces RLS even for table owners)\n // 5. Creates an isolation policy that filters rows by server_id\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION add_server_isolation(\n schema_name text,\n table_name text\n ) RETURNS void AS $$\n DECLARE\n full_table_name text;\n column_exists boolean;\n orphaned_count bigint;\n BEGIN\n full_table_name := schema_name || '.' || table_name;\n\n -- Check if server_id column already exists\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_server_isolation.table_name\n AND information_schema.columns.column_name = 'server_id'\n ) INTO column_exists;\n\n -- Add server_id column if missing (DEFAULT populates it automatically for new rows)\n IF NOT column_exists THEN\n EXECUTE format('ALTER TABLE %I.%I ADD COLUMN server_id UUID DEFAULT current_server_id()', schema_name, table_name);\n\n -- Backfill existing rows with current server_id\n -- This ensures all existing data belongs to the server instance that is enabling RLS\n EXECUTE format('UPDATE %I.%I SET server_id = current_server_id() WHERE server_id IS NULL', schema_name, table_name);\n ELSE\n -- Column already exists (RLS was previously enabled then disabled)\n -- Restore the DEFAULT clause (may have been removed during uninstallRLS)\n EXECUTE format('ALTER TABLE %I.%I ALTER COLUMN server_id SET DEFAULT current_server_id()', schema_name, table_name);\n\n -- Only backfill NULL server_id rows, do NOT steal data from other servers\n EXECUTE format('SELECT COUNT(*) FROM %I.%I WHERE server_id IS NULL', schema_name, table_name) INTO orphaned_count;\n\n IF orphaned_count > 0 THEN\n RAISE NOTICE 'Backfilling % rows with NULL server_id in %.%', orphaned_count, schema_name, table_name;\n EXECUTE format('UPDATE %I.%I SET server_id = current_server_id() WHERE server_id IS NULL', schema_name, table_name);\n END IF;\n END IF;\n\n -- Create index for efficient server_id filtering\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_server_id ON %I.%I(server_id)', table_name, schema_name, table_name);\n\n -- Enable RLS on the table\n EXECUTE format('ALTER TABLE %I.%I ENABLE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- FORCE RLS even for table owners (critical for security)\n EXECUTE format('ALTER TABLE %I.%I FORCE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- Drop existing policy if present\n EXECUTE format('DROP POLICY IF EXISTS server_isolation_policy ON %I.%I', schema_name, table_name);\n\n -- Create isolation policy: users can only see/modify rows where server_id matches current server instance\n -- No NULL clause - all rows must have a valid server_id (backfilled during column addition)\n EXECUTE format('\n CREATE POLICY server_isolation_policy ON %I.%I\n USING (server_id = current_server_id())\n WITH CHECK (server_id = current_server_id())\n ', schema_name, table_name);\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n // Function to apply RLS to all tables\n // SCHEMA COVERAGE: This function automatically applies RLS to ALL tables in the 'public' schema\n // including: agents, rooms, memories, messages, participants, channels, embeddings, relationships,\n // entities, logs, cache, components, tasks, world, message_servers, etc.\n //\n // EXCLUDED tables (not isolated):\n // - servers (contains all server instance IDs, shared for multi-tenant management)\n // - drizzle_migrations, __drizzle_migrations (migration tracking tables)\n //\n // This dynamic approach ensures plugin tables are automatically protected when added.\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION apply_rls_to_all_tables() RETURNS void AS $$\n DECLARE\n tbl record;\n BEGIN\n FOR tbl IN\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN (\n 'servers',\n 'drizzle_migrations',\n '__drizzle_migrations'\n )\n LOOP\n BEGIN\n PERFORM add_server_isolation(tbl.schemaname, tbl.tablename);\n EXCEPTION WHEN OTHERS THEN\n RAISE WARNING 'Failed to apply RLS to %.%: %', tbl.schemaname, tbl.tablename, SQLERRM;\n END;\n END LOOP;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info({ src: 'plugin:sql' }, 'RLS PostgreSQL functions installed');\n\n // Install Entity RLS functions as well (part of unified RLS system)\n await installEntityRLS(adapter);\n}\n\n/**\n * Get or create RLS server using Drizzle ORM\n */\nexport async function getOrCreateRlsServer(\n adapter: IDatabaseAdapter,\n serverId: string\n): Promise<string> {\n const db = getDb(adapter);\n\n // Use Drizzle's insert with onConflictDoNothing\n await db\n .insert(serverTable)\n .values({\n id: serverId,\n })\n .onConflictDoNothing();\n\n logger.info({ src: 'plugin:sql', serverId: serverId.slice(0, 8) }, 'RLS server registered');\n return serverId;\n}\n\n/**\n * Set RLS context on PostgreSQL connection pool\n * This function validates that the server exists and has correct UUID format\n */\nexport async function setServerContext(adapter: IDatabaseAdapter, serverId: string): Promise<void> {\n // Validate UUID format using @elizaos/core utility\n if (!validateUuid(serverId)) {\n throw new Error(`Invalid server ID format: ${serverId}. Must be a valid UUID.`);\n }\n\n // Validate server exists\n const db = getDb(adapter);\n const servers = await db.select().from(serverTable).where(eq(serverTable.id, serverId));\n\n if (servers.length === 0) {\n throw new Error(`Server ${serverId} does not exist`);\n }\n\n logger.info({ src: 'plugin:sql', serverId: serverId.slice(0, 8) }, 'RLS context configured');\n}\n\n/**\n * Assign agent to server using Drizzle ORM\n */\nexport async function assignAgentToServer(\n adapter: IDatabaseAdapter,\n agentId: string,\n serverId: string\n): Promise<void> {\n // Validate inputs\n if (!agentId || !serverId) {\n logger.warn(\n `[Data Isolation] Cannot assign agent to server: invalid agentId (${agentId}) or serverId (${serverId})`\n );\n return;\n }\n\n const db = getDb(adapter);\n\n // Check if agent exists using Drizzle\n const agents = await db.select().from(agentTable).where(eq(agentTable.id, agentId));\n\n if (agents.length > 0) {\n const agent = agents[0];\n const currentServerId = agent.server_id;\n\n if (currentServerId === serverId) {\n logger.debug(\n { src: 'plugin:sql', agentName: agent.name },\n 'Agent already assigned to correct server'\n );\n } else {\n // Update agent server using Drizzle\n await db.update(agentTable).set({ server_id: serverId }).where(eq(agentTable.id, agentId));\n\n if (currentServerId === null) {\n logger.info({ src: 'plugin:sql', agentName: agent.name }, 'Agent assigned to server');\n } else {\n logger.warn({ src: 'plugin:sql', agentName: agent.name }, 'Agent server changed');\n }\n }\n } else {\n logger.debug({ src: 'plugin:sql', agentId }, 'Agent does not exist yet');\n }\n}\n\n/**\n * Apply RLS to all tables by calling PostgreSQL function\n */\nexport async function applyRLSToNewTables(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n await db.execute(sql`SELECT apply_rls_to_all_tables()`);\n logger.info({ src: 'plugin:sql' }, 'RLS applied to all tables');\n } catch (error) {\n logger.warn({ src: 'plugin:sql', error: String(error) }, 'Failed to apply RLS to some tables');\n }\n}\n\n/**\n * Disable RLS globally\n * SIMPLE APPROACH:\n * - Disables RLS for ALL server instances\n * - Keeps server_id columns and data intact\n * - Use only in development or when migrating to single-server mode\n */\nexport async function uninstallRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n // Check if RLS is actually enabled by checking if the servers table exists\n const checkResult = await db.execute(sql`\n SELECT EXISTS (\n SELECT FROM pg_tables\n WHERE schemaname = 'public' AND tablename = 'servers'\n ) as rls_enabled\n `);\n\n const rlsEnabled = checkResult.rows?.[0]?.rls_enabled;\n\n if (!rlsEnabled) {\n logger.debug({ src: 'plugin:sql' }, 'RLS not installed, skipping cleanup');\n return;\n }\n\n logger.info(\n { src: 'plugin:sql' },\n 'Disabling RLS globally (keeping server_id columns for schema compatibility)...'\n );\n\n // First, uninstall Entity RLS (depends on Server RLS)\n try {\n await uninstallEntityRLS(adapter);\n } catch (entityRlsError) {\n logger.debug(\n { src: 'plugin:sql' },\n 'Entity RLS cleanup skipped (not installed or already cleaned)'\n );\n }\n\n // Create a temporary stored procedure to safely drop policies and disable RLS\n // Using format() with %I ensures proper identifier quoting and prevents SQL injection\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION _temp_disable_rls_on_table(\n p_schema_name text,\n p_table_name text\n ) RETURNS void AS $$\n DECLARE\n policy_rec record;\n BEGIN\n -- Drop all policies on this table\n FOR policy_rec IN\n SELECT policyname\n FROM pg_policies\n WHERE schemaname = p_schema_name AND tablename = p_table_name\n LOOP\n EXECUTE format('DROP POLICY IF EXISTS %I ON %I.%I',\n policy_rec.policyname, p_schema_name, p_table_name);\n END LOOP;\n\n -- Disable RLS\n EXECUTE format('ALTER TABLE %I.%I NO FORCE ROW LEVEL SECURITY', p_schema_name, p_table_name);\n EXECUTE format('ALTER TABLE %I.%I DISABLE ROW LEVEL SECURITY', p_schema_name, p_table_name);\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n // Get all tables in public schema\n const tablesResult = await db.execute(sql`\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN ('drizzle_migrations', '__drizzle_migrations')\n `);\n\n // Safely disable RLS on each table using the stored procedure\n for (const row of tablesResult.rows || []) {\n const schemaName = row.schemaname;\n const tableName = row.tablename;\n\n try {\n // Call stored procedure with parameterized query (safe from SQL injection)\n await db.execute(sql`SELECT _temp_disable_rls_on_table(${schemaName}, ${tableName})`);\n logger.debug({ src: 'plugin:sql', schemaName, tableName }, 'Disabled RLS on table');\n } catch (error) {\n logger.warn(\n { src: 'plugin:sql', schemaName, tableName, error: String(error) },\n 'Failed to disable RLS on table'\n );\n }\n }\n\n // Drop the temporary function\n await db.execute(sql`DROP FUNCTION IF EXISTS _temp_disable_rls_on_table(text, text)`);\n\n // 2. KEEP server_id values intact (do NOT clear them)\n // This prevents data theft when re-enabling RLS:\n // - Each row keeps its original server_id\n // - When RLS is re-enabled, only NULL rows are backfilled (new data created while RLS was off)\n // - Existing data remains owned by its original server instance\n logger.info(\n { src: 'plugin:sql' },\n 'Keeping server_id values intact (prevents data theft on re-enable)'\n );\n\n // 3. Keep the servers table structure but clear it\n // When RLS is re-enabled, servers will be re-created from server initialization\n logger.info({ src: 'plugin:sql' }, 'Clearing servers table...');\n await db.execute(sql`TRUNCATE TABLE servers`);\n\n // 4. Drop all RLS functions\n await db.execute(sql`DROP FUNCTION IF EXISTS apply_rls_to_all_tables() CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS add_server_isolation(text, text) CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS current_server_id() CASCADE`);\n logger.info({ src: 'plugin:sql' }, 'Dropped all RLS functions');\n\n logger.info({ src: 'plugin:sql' }, 'RLS disabled successfully (server_id columns preserved)');\n } catch (error) {\n logger.error({ src: 'plugin:sql', error: String(error) }, 'Failed to disable RLS');\n throw error;\n }\n}\n\n// ============================================================================\n// ENTITY RLS\n// ============================================================================\n\n/**\n * Install Entity RLS functions for user privacy isolation\n *\n * This provides database-level privacy between different entities (client users: Plugins/API)\n * interacting with agents, independent of JWT authentication.\n *\n * **How Entity RLS Works:**\n * - Each database transaction sets `app.entity_id` before querying\n * - Policies filter rows based on entity ownership or participant membership\n * - Two isolation strategies:\n * 1. Direct ownership: `entity_id` or `author_id` column matches `current_entity_id()`\n * 2. Shared access: `room_id`/`channel_id` exists in `participants` table for the entity\n *\n * **Performance Considerations:**\n * - **Subquery policies** (for `room_id`/`channel_id`) run on EVERY row access\n * - Indexes are automatically created on: `entity_id`, `author_id`, `room_id`, `channel_id`\n * - The `participants` table should have an index on `(entity_id, channel_id)`\n * - For large datasets (>1M rows), consider:\n * - Materialized views for frequently accessed entity-filtered data\n * - Partitioning large tables by date or entity_id\n *\n * **Optimization Tips:**\n * - Direct column policies (`entity_id = current_entity_id()`) are faster than subquery policies\n * - The `participants` lookup is cached per transaction but still requires index scans\n *\n * **Tables Excluded from Entity RLS:**\n * - `servers` - Server RLS table\n * - `users` - Authentication (no entity isolation)\n * - `entity_mappings` - Cross-platform entity mapping\n * - `drizzle_migrations`, `__drizzle_migrations` - Migration tracking\n *\n * @param adapter - Database adapter with access to the Drizzle ORM instance\n * @returns Promise that resolves when Entity RLS functions are installed\n * @throws {Error} If database connection fails or SQL execution fails\n *\n * @example\n * ```typescript\n * // Called automatically by installRLSFunctions()\n * await installRLSFunctions(database);\n *\n * // Or call separately if needed\n * await installEntityRLS(database);\n * await applyEntityRLSToAllTables(database);\n * ```\n */\nexport async function installEntityRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n logger.info('[Entity RLS] Installing entity RLS functions and policies...');\n\n // 1. Create current_entity_id() function - reads from app.entity_id session variable\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION current_entity_id()\n RETURNS UUID AS $$\n DECLARE\n entity_id_text TEXT;\n BEGIN\n -- Read from transaction-local variable\n entity_id_text := NULLIF(current_setting('app.entity_id', TRUE), '');\n\n IF entity_id_text IS NULL OR entity_id_text = '' THEN\n RETURN NULL;\n END IF;\n\n BEGIN\n RETURN entity_id_text::UUID;\n EXCEPTION WHEN OTHERS THEN\n RETURN NULL;\n END;\n END;\n $$ LANGUAGE plpgsql STABLE;\n `);\n\n logger.info('[Entity RLS] Created current_entity_id() function');\n\n // 2. Create add_entity_isolation() function - applies entity RLS to a single table\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION add_entity_isolation(\n schema_name text,\n table_name text,\n require_entity boolean DEFAULT false\n ) RETURNS void AS $$\n DECLARE\n full_table_name text;\n has_entity_id boolean;\n has_author_id boolean;\n has_channel_id boolean;\n has_room_id boolean;\n entity_column_name text;\n room_column_name text;\n BEGIN\n full_table_name := schema_name || '.' || table_name;\n\n -- Check which columns exist\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'entity_id'\n ) INTO has_entity_id;\n\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'author_id'\n ) INTO has_author_id;\n\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'room_id'\n ) INTO has_room_id;\n\n -- Skip if no entity-related columns\n IF NOT (has_entity_id OR has_author_id OR has_room_id) THEN\n RAISE NOTICE '[Entity RLS] Skipping %.%: no entity columns found', schema_name, table_name;\n RETURN;\n END IF;\n\n -- Determine which column to use for entity filtering\n -- Priority: room_id (shared access via participants) > entity_id/author_id (direct access)\n --\n -- SPECIAL CASE: participants table must use direct entity_id to avoid infinite recursion\n IF table_name = 'participants' AND has_entity_id THEN\n entity_column_name := 'entity_id';\n room_column_name := NULL;\n ELSIF has_room_id THEN\n room_column_name := 'room_id';\n entity_column_name := NULL;\n ELSIF has_entity_id THEN\n entity_column_name := 'entity_id';\n room_column_name := NULL;\n ELSIF has_author_id THEN\n entity_column_name := 'author_id';\n room_column_name := NULL;\n ELSE\n entity_column_name := NULL;\n room_column_name := NULL;\n END IF;\n\n -- Enable RLS on the table\n EXECUTE format('ALTER TABLE %I.%I ENABLE ROW LEVEL SECURITY', schema_name, table_name);\n EXECUTE format('ALTER TABLE %I.%I FORCE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- Drop existing entity policies if present\n EXECUTE format('DROP POLICY IF EXISTS entity_isolation_policy ON %I.%I', schema_name, table_name);\n\n -- CASE 1: Table has room_id (shared access via participants)\n IF room_column_name IS NOT NULL THEN\n -- Determine the corresponding column name in participants table\n -- If the table has room_id, look for room_id in participants.room_id\n -- participants table uses: entity_id (for participant), room_id (for room)\n -- RESTRICTIVE: Must pass BOTH server RLS AND entity RLS (combined with AND)\n\n -- Build policy with or without NULL check based on require_entity parameter\n IF require_entity THEN\n -- STRICT MODE: Entity context is REQUIRED (blocks NULL entity_id)\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NOT NULL\n AND %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n WITH CHECK (\n current_entity_id() IS NOT NULL\n AND %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n ', schema_name, table_name, room_column_name, room_column_name);\n RAISE NOTICE '[Entity RLS] Applied STRICT RESTRICTIVE to %.% (via % → participants.room_id, entity REQUIRED)', schema_name, table_name, room_column_name;\n ELSE\n -- PERMISSIVE MODE: NULL entity_id allows system/admin access\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NULL\n OR %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n WITH CHECK (\n current_entity_id() IS NULL\n OR %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n ', schema_name, table_name, room_column_name, room_column_name);\n RAISE NOTICE '[Entity RLS] Applied PERMISSIVE RESTRICTIVE to %.% (via % → participants.room_id, NULL allowed)', schema_name, table_name, room_column_name;\n END IF;\n\n -- CASE 2: Table has direct entity_id or author_id column\n ELSIF entity_column_name IS NOT NULL THEN\n -- RESTRICTIVE: Must pass BOTH server RLS AND entity RLS (combined with AND)\n\n IF require_entity THEN\n -- STRICT MODE: Entity context is REQUIRED\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NOT NULL\n AND %I = current_entity_id()\n )\n WITH CHECK (\n current_entity_id() IS NOT NULL\n AND %I = current_entity_id()\n )\n ', schema_name, table_name, entity_column_name, entity_column_name);\n RAISE NOTICE '[Entity RLS] Applied STRICT RESTRICTIVE to %.% (direct column: %, entity REQUIRED)', schema_name, table_name, entity_column_name;\n ELSE\n -- PERMISSIVE MODE: NULL entity_id allows system/admin access\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NULL\n OR %I = current_entity_id()\n )\n WITH CHECK (\n current_entity_id() IS NULL\n OR %I = current_entity_id()\n )\n ', schema_name, table_name, entity_column_name, entity_column_name);\n RAISE NOTICE '[Entity RLS] Applied PERMISSIVE RESTRICTIVE to %.% (direct column: %, NULL allowed)', schema_name, table_name, entity_column_name;\n END IF;\n END IF;\n\n -- Create indexes for efficient entity filtering\n IF room_column_name IS NOT NULL THEN\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_room ON %I.%I(%I)',\n table_name, schema_name, table_name, room_column_name);\n END IF;\n\n IF entity_column_name IS NOT NULL THEN\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_entity ON %I.%I(%I)',\n table_name, schema_name, table_name, entity_column_name);\n END IF;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info('[Entity RLS] Created add_entity_isolation() function');\n\n // 3. Create apply_entity_rls_to_all_tables() function - applies to all eligible tables\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION apply_entity_rls_to_all_tables() RETURNS void AS $$\n DECLARE\n tbl record;\n require_entity_for_table boolean;\n BEGIN\n FOR tbl IN\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN (\n 'servers', -- Server RLS table\n 'users', -- Authentication table (no entity isolation needed)\n 'entity_mappings', -- Mapping table (no entity isolation needed)\n 'drizzle_migrations', -- Migration tracking\n '__drizzle_migrations' -- Migration tracking\n )\n LOOP\n BEGIN\n -- Apply STRICT mode (require_entity=true) to sensitive user-facing tables\n -- These tables MUST have entity context set to access data\n -- STRICT tables: memories, logs, components, tasks (user data requiring isolation)\n -- NOTE: Excluded tables:\n -- - 'participants': Adding participants is a privileged operation during initialization\n IF tbl.tablename IN ('memories', 'logs', 'components', 'tasks') THEN\n require_entity_for_table := true;\n ELSE\n -- PERMISSIVE mode (require_entity=false) for system/privileged tables\n -- This includes: participants, rooms, channels, entities, etc.\n require_entity_for_table := false;\n END IF;\n\n PERFORM add_entity_isolation(tbl.schemaname, tbl.tablename, require_entity_for_table);\n EXCEPTION WHEN OTHERS THEN\n RAISE WARNING '[Entity RLS] Failed to apply to %.%: %', tbl.schemaname, tbl.tablename, SQLERRM;\n END;\n END LOOP;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info('[Entity RLS] Created apply_entity_rls_to_all_tables() function');\n\n logger.info('[Entity RLS] Entity RLS functions installed successfully');\n}\n\n/**\n * Apply Entity RLS policies to all eligible tables\n * Call this after installEntityRLS() to activate the policies\n */\nexport async function applyEntityRLSToAllTables(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n await db.execute(sql`SELECT apply_entity_rls_to_all_tables()`);\n logger.info('[Entity RLS] Applied entity RLS to all eligible tables');\n } catch (error) {\n logger.warn('[Entity RLS] Failed to apply entity RLS to some tables:', String(error));\n }\n}\n\n/**\n * Remove Entity RLS (for rollback or testing)\n * Drops entity RLS functions and policies but keeps server RLS intact\n */\nexport async function uninstallEntityRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n logger.info('[Entity RLS] Removing entity RLS policies and functions...');\n\n try {\n // First, drop all entity_isolation_policy policies from all tables\n const tablesResult = await db.execute(sql`\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN ('drizzle_migrations', '__drizzle_migrations')\n `);\n\n for (const row of tablesResult.rows || []) {\n const schemaName = row.schemaname;\n const tableName = row.tablename;\n\n try {\n // Drop entity_isolation_policy if it exists\n await db.execute(\n sql.raw(`DROP POLICY IF EXISTS entity_isolation_policy ON \"${schemaName}\".\"${tableName}\"`)\n );\n logger.debug(\n `[Entity RLS] Dropped entity_isolation_policy from ${schemaName}.${tableName}`\n );\n } catch (error) {\n logger.debug(`[Entity RLS] No entity policy on ${schemaName}.${tableName}`);\n }\n }\n\n // Drop the apply function (CASCADE will drop dependencies)\n await db.execute(sql`DROP FUNCTION IF EXISTS apply_entity_rls_to_all_tables() CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS add_entity_isolation(text, text) CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS current_entity_id() CASCADE`);\n\n logger.info('[Entity RLS] Entity RLS functions and policies removed successfully');\n } catch (error) {\n logger.error('[Entity RLS] Failed to remove entity RLS:', String(error));\n throw error;\n }\n}\n",
|
|
115
|
+
"import { logger, validateUuid, type IDatabaseAdapter } from '@elizaos/core';\nimport { sql, eq } from 'drizzle-orm';\nimport { serverTable } from './schema/server';\nimport { agentTable } from './schema/agent';\nimport { getDb } from './types';\n\n/**\n * PostgreSQL Row-Level Security (RLS) for Multi-Server and Entity Isolation\n *\n * This module provides two layers of database-level security:\n *\n * 1. **Server RLS** - Multi-server isolation\n * - Isolates data between different ElizaOS server instances\n * - Uses `server_id` column added dynamically to all tables\n * - Server context set via `SET LOCAL app.server_id` (transaction-scoped)\n * - Prevents data leakage between different deployments/environments\n *\n * 2. **Entity RLS** - User/agent-level privacy isolation\n * - Isolates data between different users (Clients (plugins/API) users)\n * - Uses `entity_id`, `author_id`, or joins via `participants` table\n * - Entity context set via `SET LOCAL app.entity_id` (transaction-scoped)\n * - Provides DM privacy and multi-user isolation within a server\n *\n * CRITICAL SECURITY REQUIREMENTS:\n * - RLS policies DO NOT apply to PostgreSQL superuser accounts\n * - Use a REGULAR (non-superuser) database user\n * - Grant only necessary permissions (CREATE, SELECT, INSERT, UPDATE, DELETE)\n * - NEVER use the 'postgres' superuser or any superuser account\n * - Superusers bypass ALL RLS policies by design, defeating the isolation mechanism\n *\n * ARCHITECTURE:\n * - Server RLS: Uses `SET LOCAL app.server_id` (set per transaction)\n * - Entity RLS: Uses `SET LOCAL app.entity_id` (set per transaction)\n * - Both contexts are set in withIsolationContext() at transaction start\n * - Uses industry-standard pattern: SET LOCAL + current_setting()\n * - Works with both pg and @neondatabase/serverless drivers\n * - Policies use FORCE ROW LEVEL SECURITY to enforce even for table owners\n * - Automatic index creation for performance (`server_id`, `entity_id`, `room_id`)\n *\n * @module rls\n */\n\n/**\n * Install PostgreSQL functions required for Server RLS and Entity RLS\n *\n * This function creates all necessary PostgreSQL stored procedures for both\n * Server RLS (multi-server isolation) and Entity RLS (user privacy isolation).\n *\n * **Server RLS Functions Created:**\n * - `current_server_id()` - Returns server UUID from `application_name`\n * - `add_server_isolation(schema, table)` - Adds Server RLS to a single table\n * - `apply_rls_to_all_tables()` - Applies Server RLS to all eligible tables\n *\n * **Entity RLS Functions Created:**\n * - `current_entity_id()` - Returns entity UUID from `app.entity_id` session variable\n * - `add_entity_isolation(schema, table)` - Adds Entity RLS to a single table\n * - `apply_entity_rls_to_all_tables()` - Applies Entity RLS to all eligible tables\n *\n * **Security Model:**\n * - Server RLS: Isolation between different ElizaOS instances (environments/deployments)\n * - Entity RLS: Isolation between different users within a server instance\n * - Both layers stack - a user can only see data from their server AND their accessible entities\n *\n * **Important Notes:**\n * - Must be called before `applyRLSToNewTables()` or `applyEntityRLSToAllTables()`\n * - Creates `servers` table if it doesn't exist\n * - Automatically calls `installEntityRLS()` to set up both layers\n * - Uses `%I` identifier quoting in format() to prevent SQL injection\n * - Policies use FORCE RLS to enforce even for table owners\n *\n * @param adapter - Database adapter with access to the Drizzle ORM instance\n * @returns Promise that resolves when all RLS functions are installed\n * @throws {Error} If database connection fails or SQL execution fails\n *\n * @example\n * ```typescript\n * // Install RLS functions on server startup\n * await installRLSFunctions(database);\n * await getOrCreateRlsServer(database, serverId);\n * await setServerContext(database, serverId);\n * await applyRLSToNewTables(database);\n * ```\n */\nexport async function installRLSFunctions(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n // Create servers table if it doesn't exist\n await db.execute(sql`\n CREATE TABLE IF NOT EXISTS servers (\n id UUID PRIMARY KEY,\n created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,\n updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL\n )\n `);\n\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION current_server_id() RETURNS UUID AS $$\n DECLARE\n server_id_text TEXT;\n BEGIN\n server_id_text := NULLIF(current_setting('app.server_id', TRUE), '');\n\n IF server_id_text IS NULL OR server_id_text = '' THEN\n RETURN NULL;\n END IF;\n\n BEGIN\n RETURN server_id_text::UUID;\n EXCEPTION WHEN OTHERS THEN\n RETURN NULL;\n END;\n END;\n $$ LANGUAGE plpgsql STABLE;\n `);\n\n // Function to add RLS to a table\n // SECURITY: Uses format() with %I to safely quote identifiers and prevent SQL injection\n // This function:\n // 1. Adds server_id column if it doesn't exist (with DEFAULT current_server_id())\n // 2. Backfills/reassigns orphaned data to current server\n // 3. Creates an index on server_id for query performance\n // 4. Enables FORCE ROW LEVEL SECURITY (enforces RLS even for table owners)\n // 5. Creates an isolation policy that filters rows by server_id\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION add_server_isolation(\n schema_name text,\n table_name text\n ) RETURNS void AS $$\n DECLARE\n full_table_name text;\n column_exists boolean;\n orphaned_count bigint;\n BEGIN\n full_table_name := schema_name || '.' || table_name;\n\n -- Check if server_id column already exists\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_server_isolation.table_name\n AND information_schema.columns.column_name = 'server_id'\n ) INTO column_exists;\n\n -- Add server_id column if missing (DEFAULT populates it automatically for new rows)\n IF NOT column_exists THEN\n EXECUTE format('ALTER TABLE %I.%I ADD COLUMN server_id UUID DEFAULT current_server_id()', schema_name, table_name);\n\n -- Backfill existing rows with current server_id\n -- This ensures all existing data belongs to the server instance that is enabling RLS\n EXECUTE format('UPDATE %I.%I SET server_id = current_server_id() WHERE server_id IS NULL', schema_name, table_name);\n ELSE\n -- Column already exists (RLS was previously enabled then disabled)\n -- Restore the DEFAULT clause (may have been removed during uninstallRLS)\n EXECUTE format('ALTER TABLE %I.%I ALTER COLUMN server_id SET DEFAULT current_server_id()', schema_name, table_name);\n\n -- Only backfill NULL server_id rows, do NOT steal data from other servers\n EXECUTE format('SELECT COUNT(*) FROM %I.%I WHERE server_id IS NULL', schema_name, table_name) INTO orphaned_count;\n\n IF orphaned_count > 0 THEN\n RAISE NOTICE 'Backfilling % rows with NULL server_id in %.%', orphaned_count, schema_name, table_name;\n EXECUTE format('UPDATE %I.%I SET server_id = current_server_id() WHERE server_id IS NULL', schema_name, table_name);\n END IF;\n END IF;\n\n -- Create index for efficient server_id filtering\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_server_id ON %I.%I(server_id)', table_name, schema_name, table_name);\n\n -- Enable RLS on the table\n EXECUTE format('ALTER TABLE %I.%I ENABLE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- FORCE RLS even for table owners (critical for security)\n EXECUTE format('ALTER TABLE %I.%I FORCE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- Drop existing policy if present\n EXECUTE format('DROP POLICY IF EXISTS server_isolation_policy ON %I.%I', schema_name, table_name);\n\n -- Create isolation policy: users can only see/modify rows where server_id matches current server instance\n -- No NULL clause - all rows must have a valid server_id (backfilled during column addition)\n EXECUTE format('\n CREATE POLICY server_isolation_policy ON %I.%I\n USING (server_id = current_server_id())\n WITH CHECK (server_id = current_server_id())\n ', schema_name, table_name);\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n // Function to apply RLS to all tables\n // SCHEMA COVERAGE: This function automatically applies RLS to ALL tables in the 'public' schema\n // including: agents, rooms, memories, messages, participants, channels, embeddings, relationships,\n // entities, logs, cache, components, tasks, world, message_servers, etc.\n //\n // EXCLUDED tables (not isolated):\n // - servers (contains all server instance IDs, shared for multi-tenant management)\n // - drizzle_migrations, __drizzle_migrations (migration tracking tables)\n //\n // This dynamic approach ensures plugin tables are automatically protected when added.\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION apply_rls_to_all_tables() RETURNS void AS $$\n DECLARE\n tbl record;\n BEGIN\n FOR tbl IN\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN (\n 'servers',\n 'drizzle_migrations',\n '__drizzle_migrations'\n )\n LOOP\n BEGIN\n PERFORM add_server_isolation(tbl.schemaname, tbl.tablename);\n EXCEPTION WHEN OTHERS THEN\n RAISE WARNING 'Failed to apply RLS to %.%: %', tbl.schemaname, tbl.tablename, SQLERRM;\n END;\n END LOOP;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info({ src: 'plugin:sql' }, 'RLS PostgreSQL functions installed');\n\n // Install Entity RLS functions as well (part of unified RLS system)\n await installEntityRLS(adapter);\n}\n\n/**\n * Get or create RLS server using Drizzle ORM\n */\nexport async function getOrCreateRlsServer(\n adapter: IDatabaseAdapter,\n serverId: string\n): Promise<string> {\n const db = getDb(adapter);\n\n // Use Drizzle's insert with onConflictDoNothing\n await db\n .insert(serverTable)\n .values({\n id: serverId,\n })\n .onConflictDoNothing();\n\n logger.info({ src: 'plugin:sql', serverId: serverId.slice(0, 8) }, 'RLS server registered');\n return serverId;\n}\n\n/**\n * Set RLS context on PostgreSQL connection pool\n * This function validates that the server exists and has correct UUID format\n */\nexport async function setServerContext(adapter: IDatabaseAdapter, serverId: string): Promise<void> {\n // Validate UUID format using @elizaos/core utility\n if (!validateUuid(serverId)) {\n throw new Error(`Invalid server ID format: ${serverId}. Must be a valid UUID.`);\n }\n\n // Validate server exists\n const db = getDb(adapter);\n const servers = await db.select().from(serverTable).where(eq(serverTable.id, serverId));\n\n if (servers.length === 0) {\n throw new Error(`Server ${serverId} does not exist`);\n }\n\n logger.info({ src: 'plugin:sql', serverId: serverId.slice(0, 8) }, 'RLS context configured');\n}\n\n/**\n * Assign agent to server using Drizzle ORM\n */\nexport async function assignAgentToServer(\n adapter: IDatabaseAdapter,\n agentId: string,\n serverId: string\n): Promise<void> {\n // Validate inputs\n if (!agentId || !serverId) {\n logger.warn(\n `[Data Isolation] Cannot assign agent to server: invalid agentId (${agentId}) or serverId (${serverId})`\n );\n return;\n }\n\n const db = getDb(adapter);\n\n // Check if agent exists using Drizzle\n const agents = await db.select().from(agentTable).where(eq(agentTable.id, agentId));\n\n if (agents.length > 0) {\n const agent = agents[0];\n const currentServerId = agent.server_id;\n\n if (currentServerId === serverId) {\n logger.debug(\n { src: 'plugin:sql', agentName: agent.name },\n 'Agent already assigned to correct server'\n );\n } else {\n // Update agent server using Drizzle\n await db.update(agentTable).set({ server_id: serverId }).where(eq(agentTable.id, agentId));\n\n if (currentServerId === null) {\n logger.info({ src: 'plugin:sql', agentName: agent.name }, 'Agent assigned to server');\n } else {\n logger.warn({ src: 'plugin:sql', agentName: agent.name }, 'Agent server changed');\n }\n }\n } else {\n logger.debug({ src: 'plugin:sql', agentId }, 'Agent does not exist yet');\n }\n}\n\n/**\n * Apply RLS to all tables by calling PostgreSQL function\n */\nexport async function applyRLSToNewTables(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n await db.execute(sql`SELECT apply_rls_to_all_tables()`);\n logger.info({ src: 'plugin:sql' }, 'RLS applied to all tables');\n } catch (error) {\n logger.warn({ src: 'plugin:sql', error: String(error) }, 'Failed to apply RLS to some tables');\n }\n}\n\n/**\n * Disable RLS globally\n * SIMPLE APPROACH:\n * - Disables RLS for ALL server instances\n * - Keeps server_id columns and data intact\n * - Use only in development or when migrating to single-server mode\n */\nexport async function uninstallRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n // Check if RLS is actually enabled by checking if the servers table exists\n const checkResult = await db.execute(sql`\n SELECT EXISTS (\n SELECT FROM pg_tables\n WHERE schemaname = 'public' AND tablename = 'servers'\n ) as rls_enabled\n `);\n\n const rlsEnabled = checkResult.rows?.[0]?.rls_enabled;\n\n if (!rlsEnabled) {\n logger.debug({ src: 'plugin:sql' }, 'RLS not installed, skipping cleanup');\n return;\n }\n\n logger.info(\n { src: 'plugin:sql' },\n 'Disabling RLS globally (keeping server_id columns for schema compatibility)...'\n );\n\n // First, uninstall Entity RLS (depends on Server RLS)\n try {\n await uninstallEntityRLS(adapter);\n } catch (entityRlsError) {\n logger.debug(\n { src: 'plugin:sql' },\n 'Entity RLS cleanup skipped (not installed or already cleaned)'\n );\n }\n\n // Create a temporary stored procedure to safely drop policies and disable RLS\n // Using format() with %I ensures proper identifier quoting and prevents SQL injection\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION _temp_disable_rls_on_table(\n p_schema_name text,\n p_table_name text\n ) RETURNS void AS $$\n DECLARE\n policy_rec record;\n BEGIN\n -- Drop all policies on this table\n FOR policy_rec IN\n SELECT policyname\n FROM pg_policies\n WHERE schemaname = p_schema_name AND tablename = p_table_name\n LOOP\n EXECUTE format('DROP POLICY IF EXISTS %I ON %I.%I',\n policy_rec.policyname, p_schema_name, p_table_name);\n END LOOP;\n\n -- Disable RLS\n EXECUTE format('ALTER TABLE %I.%I NO FORCE ROW LEVEL SECURITY', p_schema_name, p_table_name);\n EXECUTE format('ALTER TABLE %I.%I DISABLE ROW LEVEL SECURITY', p_schema_name, p_table_name);\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n // Get all tables in public schema\n const tablesResult = await db.execute(sql`\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN ('drizzle_migrations', '__drizzle_migrations')\n `);\n\n // Safely disable RLS on each table using the stored procedure\n for (const row of tablesResult.rows || []) {\n const schemaName = row.schemaname;\n const tableName = row.tablename;\n\n try {\n // Call stored procedure with parameterized query (safe from SQL injection)\n await db.execute(sql`SELECT _temp_disable_rls_on_table(${schemaName}, ${tableName})`);\n logger.debug({ src: 'plugin:sql', schemaName, tableName }, 'Disabled RLS on table');\n } catch (error) {\n logger.warn(\n { src: 'plugin:sql', schemaName, tableName, error: String(error) },\n 'Failed to disable RLS on table'\n );\n }\n }\n\n // Drop the temporary function\n await db.execute(sql`DROP FUNCTION IF EXISTS _temp_disable_rls_on_table(text, text)`);\n\n // 2. KEEP server_id values intact (do NOT clear them)\n // This prevents data theft when re-enabling RLS:\n // - Each row keeps its original server_id\n // - When RLS is re-enabled, only NULL rows are backfilled (new data created while RLS was off)\n // - Existing data remains owned by its original server instance\n logger.info(\n { src: 'plugin:sql' },\n 'Keeping server_id values intact (prevents data theft on re-enable)'\n );\n\n // 3. Keep the servers table structure but clear it\n // When RLS is re-enabled, servers will be re-created from server initialization\n logger.info({ src: 'plugin:sql' }, 'Clearing servers table...');\n await db.execute(sql`TRUNCATE TABLE servers`);\n\n // 4. Drop all RLS functions\n await db.execute(sql`DROP FUNCTION IF EXISTS apply_rls_to_all_tables() CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS add_server_isolation(text, text) CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS current_server_id() CASCADE`);\n logger.info({ src: 'plugin:sql' }, 'Dropped all RLS functions');\n\n logger.info({ src: 'plugin:sql' }, 'RLS disabled successfully (server_id columns preserved)');\n } catch (error) {\n logger.error({ src: 'plugin:sql', error: String(error) }, 'Failed to disable RLS');\n throw error;\n }\n}\n\n// ============================================================================\n// ENTITY RLS\n// ============================================================================\n\n/**\n * Install Entity RLS functions for user privacy isolation\n *\n * This provides database-level privacy between different entities (client users: Plugins/API)\n * interacting with agents, independent of JWT authentication.\n *\n * **How Entity RLS Works:**\n * - Each database transaction sets `app.entity_id` before querying\n * - Policies filter rows based on entity ownership or participant membership\n * - Two isolation strategies:\n * 1. Direct ownership: `entity_id` or `author_id` column matches `current_entity_id()`\n * 2. Shared access: `room_id`/`channel_id` exists in `participants` table for the entity\n *\n * **Performance Considerations:**\n * - **Subquery policies** (for `room_id`/`channel_id`) run on EVERY row access\n * - Indexes are automatically created on: `entity_id`, `author_id`, `room_id`, `channel_id`\n * - The `participants` table should have an index on `(entity_id, channel_id)`\n * - For large datasets (>1M rows), consider:\n * - Materialized views for frequently accessed entity-filtered data\n * - Partitioning large tables by date or entity_id\n *\n * **Optimization Tips:**\n * - Direct column policies (`entity_id = current_entity_id()`) are faster than subquery policies\n * - The `participants` lookup is cached per transaction but still requires index scans\n *\n * **Tables Excluded from Entity RLS:**\n * - `servers` - Server RLS table\n * - `users` - Authentication (no entity isolation)\n * - `entity_mappings` - Cross-platform entity mapping\n * - `drizzle_migrations`, `__drizzle_migrations` - Migration tracking\n *\n * @param adapter - Database adapter with access to the Drizzle ORM instance\n * @returns Promise that resolves when Entity RLS functions are installed\n * @throws {Error} If database connection fails or SQL execution fails\n *\n * @example\n * ```typescript\n * // Called automatically by installRLSFunctions()\n * await installRLSFunctions(database);\n *\n * // Or call separately if needed\n * await installEntityRLS(database);\n * await applyEntityRLSToAllTables(database);\n * ```\n */\nexport async function installEntityRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n logger.info('[Entity RLS] Installing entity RLS functions and policies...');\n\n // 1. Create current_entity_id() function - reads from app.entity_id session variable\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION current_entity_id()\n RETURNS UUID AS $$\n DECLARE\n entity_id_text TEXT;\n BEGIN\n -- Read from transaction-local variable\n entity_id_text := NULLIF(current_setting('app.entity_id', TRUE), '');\n\n IF entity_id_text IS NULL OR entity_id_text = '' THEN\n RETURN NULL;\n END IF;\n\n BEGIN\n RETURN entity_id_text::UUID;\n EXCEPTION WHEN OTHERS THEN\n RETURN NULL;\n END;\n END;\n $$ LANGUAGE plpgsql STABLE;\n `);\n\n logger.info('[Entity RLS] Created current_entity_id() function');\n\n // 2. Create add_entity_isolation() function - applies entity RLS to a single table\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION add_entity_isolation(\n schema_name text,\n table_name text,\n require_entity boolean DEFAULT false\n ) RETURNS void AS $$\n DECLARE\n full_table_name text;\n has_entity_id boolean;\n has_author_id boolean;\n has_channel_id boolean;\n has_room_id boolean;\n entity_column_name text;\n room_column_name text;\n BEGIN\n full_table_name := schema_name || '.' || table_name;\n\n -- Check which columns exist\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'entity_id'\n ) INTO has_entity_id;\n\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'author_id'\n ) INTO has_author_id;\n\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'room_id'\n ) INTO has_room_id;\n\n -- Skip if no entity-related columns\n IF NOT (has_entity_id OR has_author_id OR has_room_id) THEN\n RAISE NOTICE '[Entity RLS] Skipping %.%: no entity columns found', schema_name, table_name;\n RETURN;\n END IF;\n\n -- Determine which column to use for entity filtering\n -- Priority: room_id (shared access via participants) > entity_id/author_id (direct access)\n --\n -- SPECIAL CASE: participants table must use direct entity_id to avoid infinite recursion\n IF table_name = 'participants' AND has_entity_id THEN\n entity_column_name := 'entity_id';\n room_column_name := NULL;\n ELSIF has_room_id THEN\n room_column_name := 'room_id';\n entity_column_name := NULL;\n ELSIF has_entity_id THEN\n entity_column_name := 'entity_id';\n room_column_name := NULL;\n ELSIF has_author_id THEN\n entity_column_name := 'author_id';\n room_column_name := NULL;\n ELSE\n entity_column_name := NULL;\n room_column_name := NULL;\n END IF;\n\n -- Enable RLS on the table\n EXECUTE format('ALTER TABLE %I.%I ENABLE ROW LEVEL SECURITY', schema_name, table_name);\n EXECUTE format('ALTER TABLE %I.%I FORCE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- Drop existing entity policies if present\n EXECUTE format('DROP POLICY IF EXISTS entity_isolation_policy ON %I.%I', schema_name, table_name);\n\n -- CASE 1: Table has room_id (shared access via participants)\n IF room_column_name IS NOT NULL THEN\n -- Determine the corresponding column name in participants table\n -- If the table has room_id, look for room_id in participants.room_id\n -- participants table uses: entity_id (for participant), room_id (for room)\n -- RESTRICTIVE: Must pass BOTH server RLS AND entity RLS (combined with AND)\n\n -- Build policy with or without NULL check based on require_entity parameter\n IF require_entity THEN\n -- STRICT MODE: Entity context is REQUIRED (blocks NULL entity_id)\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NOT NULL\n AND %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n WITH CHECK (\n current_entity_id() IS NOT NULL\n AND %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n ', schema_name, table_name, room_column_name, room_column_name);\n RAISE NOTICE '[Entity RLS] Applied STRICT RESTRICTIVE to %.% (via % → participants.room_id, entity REQUIRED)', schema_name, table_name, room_column_name;\n ELSE\n -- PERMISSIVE MODE: NULL entity_id allows system/admin access\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NULL\n OR %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n WITH CHECK (\n current_entity_id() IS NULL\n OR %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n ', schema_name, table_name, room_column_name, room_column_name);\n RAISE NOTICE '[Entity RLS] Applied PERMISSIVE RESTRICTIVE to %.% (via % → participants.room_id, NULL allowed)', schema_name, table_name, room_column_name;\n END IF;\n\n -- CASE 2: Table has direct entity_id or author_id column\n ELSIF entity_column_name IS NOT NULL THEN\n -- RESTRICTIVE: Must pass BOTH server RLS AND entity RLS (combined with AND)\n\n IF require_entity THEN\n -- STRICT MODE: Entity context is REQUIRED\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NOT NULL\n AND %I = current_entity_id()\n )\n WITH CHECK (\n current_entity_id() IS NOT NULL\n AND %I = current_entity_id()\n )\n ', schema_name, table_name, entity_column_name, entity_column_name);\n RAISE NOTICE '[Entity RLS] Applied STRICT RESTRICTIVE to %.% (direct column: %, entity REQUIRED)', schema_name, table_name, entity_column_name;\n ELSE\n -- PERMISSIVE MODE: NULL entity_id allows system/admin access\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NULL\n OR %I = current_entity_id()\n )\n WITH CHECK (\n current_entity_id() IS NULL\n OR %I = current_entity_id()\n )\n ', schema_name, table_name, entity_column_name, entity_column_name);\n RAISE NOTICE '[Entity RLS] Applied PERMISSIVE RESTRICTIVE to %.% (direct column: %, NULL allowed)', schema_name, table_name, entity_column_name;\n END IF;\n END IF;\n\n -- Create indexes for efficient entity filtering\n IF room_column_name IS NOT NULL THEN\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_room ON %I.%I(%I)',\n table_name, schema_name, table_name, room_column_name);\n END IF;\n\n IF entity_column_name IS NOT NULL THEN\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_entity ON %I.%I(%I)',\n table_name, schema_name, table_name, entity_column_name);\n END IF;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info('[Entity RLS] Created add_entity_isolation() function');\n\n // 3. Create apply_entity_rls_to_all_tables() function - applies to all eligible tables\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION apply_entity_rls_to_all_tables() RETURNS void AS $$\n DECLARE\n tbl record;\n require_entity_for_table boolean;\n BEGIN\n FOR tbl IN\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN (\n 'servers', -- Server RLS table\n 'users', -- Authentication table (no entity isolation needed)\n 'entity_mappings', -- Mapping table (no entity isolation needed)\n 'drizzle_migrations', -- Migration tracking\n '__drizzle_migrations' -- Migration tracking\n )\n LOOP\n BEGIN\n -- Apply STRICT mode (require_entity=true) to sensitive user-facing tables\n -- These tables MUST have entity context set to access data\n -- STRICT tables: memories, logs, components, tasks (user data requiring isolation)\n -- NOTE: Excluded tables:\n -- - 'participants': Adding participants is a privileged operation during initialization\n IF tbl.tablename IN ('memories', 'logs', 'components', 'tasks') THEN\n require_entity_for_table := true;\n ELSE\n -- PERMISSIVE mode (require_entity=false) for system/privileged tables\n -- This includes: participants, rooms, channels, entities, etc.\n require_entity_for_table := false;\n END IF;\n\n PERFORM add_entity_isolation(tbl.schemaname, tbl.tablename, require_entity_for_table);\n EXCEPTION WHEN OTHERS THEN\n RAISE WARNING '[Entity RLS] Failed to apply to %.%: %', tbl.schemaname, tbl.tablename, SQLERRM;\n END;\n END LOOP;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info('[Entity RLS] Created apply_entity_rls_to_all_tables() function');\n\n logger.info('[Entity RLS] Entity RLS functions installed successfully');\n}\n\n/**\n * Apply Entity RLS policies to all eligible tables\n * Call this after installEntityRLS() to activate the policies\n */\nexport async function applyEntityRLSToAllTables(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n await db.execute(sql`SELECT apply_entity_rls_to_all_tables()`);\n logger.info('[Entity RLS] Applied entity RLS to all eligible tables');\n } catch (error) {\n logger.warn('[Entity RLS] Failed to apply entity RLS to some tables:', String(error));\n }\n}\n\n/**\n * Remove Entity RLS (for rollback or testing)\n * Drops entity RLS functions and policies but keeps server RLS intact\n */\nexport async function uninstallEntityRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n logger.info('[Entity RLS] Removing entity RLS policies and functions...');\n\n try {\n // First, drop all entity_isolation_policy policies from all tables\n const tablesResult = await db.execute(sql`\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN ('drizzle_migrations', '__drizzle_migrations')\n `);\n\n for (const row of tablesResult.rows || []) {\n const schemaName = row.schemaname;\n const tableName = row.tablename;\n\n try {\n // Drop entity_isolation_policy if it exists\n await db.execute(\n sql.raw(`DROP POLICY IF EXISTS entity_isolation_policy ON \"${schemaName}\".\"${tableName}\"`)\n );\n logger.debug(\n `[Entity RLS] Dropped entity_isolation_policy from ${schemaName}.${tableName}`\n );\n } catch (error) {\n logger.debug(`[Entity RLS] No entity policy on ${schemaName}.${tableName}`);\n }\n }\n\n // Drop the apply function (CASCADE will drop dependencies)\n await db.execute(sql`DROP FUNCTION IF EXISTS apply_entity_rls_to_all_tables() CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS add_entity_isolation(text, text) CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS current_entity_id() CASCADE`);\n\n logger.info('[Entity RLS] Entity RLS functions and policies removed successfully');\n } catch (error) {\n logger.error('[Entity RLS] Failed to remove entity RLS:', String(error));\n throw error;\n }\n}\n",
|
|
116
116
|
"import { logger, type Plugin, type IDatabaseAdapter } from '@elizaos/core';\nimport { RuntimeMigrator } from './runtime-migrator';\nimport type { DrizzleDatabase } from './types';\nimport { migrateToEntityRLS } from './migrations';\nimport { installRLSFunctions, applyRLSToNewTables, applyEntityRLSToAllTables } from './rls';\n\nexport class DatabaseMigrationService {\n private db: DrizzleDatabase | null = null;\n private registeredSchemas = new Map<string, Record<string, unknown>>();\n private migrator: RuntimeMigrator | null = null;\n\n constructor() {\n // No longer extending Service, so no need to call super\n }\n\n /**\n * Initialize service with database connection\n * @param db - Drizzle database instance\n */\n async initializeWithDatabase(db: DrizzleDatabase): Promise<void> {\n this.db = db;\n\n // TEMPORARY: Migrate from develop to feat/entity-rls (Owner RLS → Server RLS + Entity RLS)\n // This runs before the RuntimeMigrator to ensure schema compatibility\n // Can be removed after users have migrated from develop to this branch\n // migrateToEntityRLS expects IDatabaseAdapter, but we have db directly\n // Create a minimal adapter wrapper\n interface AdapterWrapper extends IDatabaseAdapter {\n db: DrizzleDatabase;\n }\n const adapterWrapper: AdapterWrapper = { db } as AdapterWrapper;\n await migrateToEntityRLS(adapterWrapper);\n\n this.migrator = new RuntimeMigrator(db);\n await this.migrator.initialize();\n logger.info({ src: 'plugin:sql' }, 'DatabaseMigrationService initialized');\n }\n\n /**\n * Auto-discover and register schemas from plugins\n * @param plugins - Array of plugins to scan for schemas\n */\n discoverAndRegisterPluginSchemas(plugins: Plugin[]): void {\n for (const plugin of plugins) {\n interface PluginWithSchema extends Plugin {\n schema?: Record<string, unknown>;\n }\n const pluginWithSchema = plugin as PluginWithSchema;\n if (pluginWithSchema.schema) {\n this.registeredSchemas.set(plugin.name, pluginWithSchema.schema);\n }\n }\n logger.info(\n {\n src: 'plugin:sql',\n schemasDiscovered: this.registeredSchemas.size,\n totalPlugins: plugins.length,\n },\n 'Plugin schemas discovered'\n );\n }\n\n /**\n * Register a schema for a specific plugin\n * @param pluginName - Plugin identifier\n * @param schema - Drizzle schema object\n */\n registerSchema(pluginName: string, schema: Record<string, unknown>): void {\n this.registeredSchemas.set(pluginName, schema);\n logger.debug({ src: 'plugin:sql', pluginName }, 'Schema registered');\n }\n\n /**\n * Run migrations for all registered plugins\n * @param options - Migration options\n * @param options.verbose - Log detailed output (default: true in dev, false in prod)\n * @param options.force - Allow destructive migrations\n * @param options.dryRun - Preview changes without applying\n * @throws Error if any migration fails or destructive changes blocked\n */\n async runAllPluginMigrations(options?: {\n verbose?: boolean;\n force?: boolean;\n dryRun?: boolean;\n }): Promise<void> {\n if (!this.db || !this.migrator) {\n throw new Error('Database or migrator not initialized in DatabaseMigrationService');\n }\n\n const isProduction = process.env.NODE_ENV === 'production';\n\n // Build migration options with sensible defaults\n const migrationOptions = {\n verbose: options?.verbose ?? !isProduction,\n force: options?.force ?? false,\n dryRun: options?.dryRun ?? false,\n };\n\n // Log migration start\n logger.info(\n {\n src: 'plugin:sql',\n environment: isProduction ? 'PRODUCTION' : 'DEVELOPMENT',\n pluginCount: this.registeredSchemas.size,\n dryRun: migrationOptions.dryRun,\n },\n 'Starting migrations'\n );\n\n let successCount = 0;\n let failureCount = 0;\n const errors: Array<{ pluginName: string; error: Error }> = [];\n\n for (const [pluginName, schema] of this.registeredSchemas) {\n try {\n await this.migrator.migrate(pluginName, schema, migrationOptions);\n successCount++;\n logger.info({ src: 'plugin:sql', pluginName }, 'Migration completed');\n } catch (error) {\n failureCount++;\n const errorMessage = (error as Error).message;\n\n // Store the error for later\n errors.push({ pluginName, error: error as Error });\n\n if (errorMessage.includes('Destructive migration blocked')) {\n // Destructive migration was blocked - this is expected behavior\n logger.error(\n { src: 'plugin:sql', pluginName },\n 'Migration blocked - destructive changes detected. Set ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS=true or use force option'\n );\n } else {\n // Unexpected error\n logger.error({ src: 'plugin:sql', pluginName, error: errorMessage }, 'Migration failed');\n }\n }\n }\n\n // Final summary\n if (failureCount === 0) {\n logger.info({ src: 'plugin:sql', successCount }, 'All migrations completed successfully');\n\n // Re-apply RLS after all migrations are complete\n // This ensures RLS is active on all tables with proper server_id columns\n // ONLY if data isolation is enabled\n const dataIsolationEnabled = process.env.ENABLE_DATA_ISOLATION === 'true';\n\n if (dataIsolationEnabled) {\n try {\n logger.info({ src: 'plugin:sql' }, 'Re-applying Row Level Security...');\n // RLS functions expect IDatabaseAdapter, create wrapper\n interface AdapterWrapper extends IDatabaseAdapter {\n db: DrizzleDatabase;\n }\n const adapterWrapper: AdapterWrapper = { db: this.db } as AdapterWrapper;\n await installRLSFunctions(adapterWrapper);\n await applyRLSToNewTables(adapterWrapper);\n await applyEntityRLSToAllTables(adapterWrapper);\n logger.info({ src: 'plugin:sql' }, 'RLS re-applied successfully');\n } catch (rlsError) {\n const errorMsg = rlsError instanceof Error ? rlsError.message : String(rlsError);\n logger.warn(\n { src: 'plugin:sql', error: errorMsg },\n 'Failed to re-apply RLS (this is OK if server_id columns are not yet in schemas)'\n );\n }\n } else {\n logger.info(\n { src: 'plugin:sql' },\n 'Skipping RLS re-application (ENABLE_DATA_ISOLATION is not true)'\n );\n }\n } else {\n logger.error({ src: 'plugin:sql', failureCount, successCount }, 'Some migrations failed');\n\n // Throw a consolidated error with details about all failures\n const errorSummary = errors.map((e) => `${e.pluginName}: ${e.error.message}`).join('\\n ');\n throw new Error(`${failureCount} migration(s) failed:\\n ${errorSummary}`);\n }\n }\n\n /**\n * Get the runtime migrator instance for advanced operations\n * @returns RuntimeMigrator instance or null if not initialized\n */\n getMigrator(): RuntimeMigrator | null {\n return this.migrator;\n }\n}\n",
|
|
117
|
-
"
|
|
118
|
-
"
|
|
117
|
+
"'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n",
|
|
118
|
+
"var fs = require('fs')\nvar path = require('path')\nvar os = require('os')\n\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY\nvar abi = process.versions.modules // TODO: support old node where this is undef\nvar runtime = isElectron() ? 'electron' : (isNwjs() ? 'node-webkit' : 'node')\n\nvar arch = process.env.npm_config_arch || os.arch()\nvar platform = process.env.npm_config_platform || os.platform()\nvar libc = process.env.LIBC || (isAlpine(platform) ? 'musl' : 'glibc')\nvar armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (process.versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n return runtimeRequire(load.resolve(dir))\n}\n\nload.resolve = load.path = function (dir) {\n dir = path.resolve(dir || '.')\n\n try {\n var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_')\n if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']\n } catch (err) {}\n\n if (!prebuildsOnly) {\n var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n if (release) return release\n\n var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n if (debug) return debug\n }\n\n var prebuild = resolve(dir)\n if (prebuild) return prebuild\n\n var nearby = resolve(path.dirname(process.execPath))\n if (nearby) return nearby\n\n var target = [\n 'platform=' + platform,\n 'arch=' + arch,\n 'runtime=' + runtime,\n 'abi=' + abi,\n 'uv=' + uv,\n armv ? 'armv=' + armv : '',\n 'libc=' + libc,\n 'node=' + process.versions.node,\n process.versions.electron ? 'electron=' + process.versions.electron : '',\n typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line\n ].filter(Boolean).join(' ')\n\n throw new Error('No native build was found for ' + target + '\\n loaded from: ' + dir + '\\n')\n\n function resolve (dir) {\n // Find matching \"prebuilds/<platform>-<arch>\" directory\n var tuples = readdirSync(path.join(dir, 'prebuilds')).map(parseTuple)\n var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]\n if (!tuple) return\n\n // Find most specific flavor first\n var prebuilds = path.join(dir, 'prebuilds', tuple.name)\n var parsed = readdirSync(prebuilds).map(parseTags)\n var candidates = parsed.filter(matchTags(runtime, abi))\n var winner = candidates.sort(compareTags(runtime))[0]\n if (winner) return path.join(prebuilds, winner.file)\n }\n}\n\nfunction readdirSync (dir) {\n try {\n return fs.readdirSync(dir)\n } catch (err) {\n return []\n }\n}\n\nfunction getFirst (dir, filter) {\n var files = readdirSync(dir).filter(filter)\n return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n return /\\.node$/.test(name)\n}\n\nfunction parseTuple (name) {\n // Example: darwin-x64+arm64\n var arr = name.split('-')\n if (arr.length !== 2) return\n\n var platform = arr[0]\n var architectures = arr[1].split('+')\n\n if (!platform) return\n if (!architectures.length) return\n if (!architectures.every(Boolean)) return\n\n return { name, platform, architectures }\n}\n\nfunction matchTuple (platform, arch) {\n return function (tuple) {\n if (tuple == null) return false\n if (tuple.platform !== platform) return false\n return tuple.architectures.includes(arch)\n }\n}\n\nfunction compareTuples (a, b) {\n // Prefer single-arch prebuilds over multi-arch\n return a.architectures.length - b.architectures.length\n}\n\nfunction parseTags (file) {\n var arr = file.split('.')\n var extension = arr.pop()\n var tags = { file: file, specificity: 0 }\n\n if (extension !== 'node') return\n\n for (var i = 0; i < arr.length; i++) {\n var tag = arr[i]\n\n if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n tags.runtime = tag\n } else if (tag === 'napi') {\n tags.napi = true\n } else if (tag.slice(0, 3) === 'abi') {\n tags.abi = tag.slice(3)\n } else if (tag.slice(0, 2) === 'uv') {\n tags.uv = tag.slice(2)\n } else if (tag.slice(0, 4) === 'armv') {\n tags.armv = tag.slice(4)\n } else if (tag === 'glibc' || tag === 'musl') {\n tags.libc = tag\n } else {\n continue\n }\n\n tags.specificity++\n }\n\n return tags\n}\n\nfunction matchTags (runtime, abi) {\n return function (tags) {\n if (tags == null) return false\n if (tags.runtime && tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n if (tags.abi && tags.abi !== abi && !tags.napi) return false\n if (tags.uv && tags.uv !== uv) return false\n if (tags.armv && tags.armv !== armv) return false\n if (tags.libc && tags.libc !== libc) return false\n\n return true\n }\n}\n\nfunction runtimeAgnostic (tags) {\n return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n return function (a, b) {\n if (a.runtime !== b.runtime) {\n return a.runtime === runtime ? -1 : 1\n } else if (a.abi !== b.abi) {\n return a.abi ? -1 : 1\n } else if (a.specificity !== b.specificity) {\n return a.specificity > b.specificity ? -1 : 1\n } else {\n return 0\n }\n }\n}\n\nfunction isNwjs () {\n return !!(process.versions && process.versions.nw)\n}\n\nfunction isElectron () {\n if (process.versions && process.versions.electron) return true\n if (process.env.ELECTRON_RUN_AS_NODE) return true\n return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isAlpine (platform) {\n return platform === 'linux' && fs.existsSync('/etc/alpine-release')\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\nload.parseTuple = parseTuple\nload.matchTuple = matchTuple\nload.compareTuples = compareTuples\n",
|
|
119
|
+
"const runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\nif (typeof runtimeRequire.addon === 'function') { // if the platform supports native resolving prefer that\n module.exports = runtimeRequire.addon.bind(runtimeRequire)\n} else { // else use the runtime version here\n module.exports = require('./node-gyp-build.js')\n}\n",
|
|
120
|
+
"'use strict';\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nconst mask = (source, mask, output, offset, length) => {\n for (var i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n};\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nconst unmask = (buffer, mask) => {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (var i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n};\n\nmodule.exports = { mask, unmask };\n",
|
|
121
|
+
"'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n",
|
|
122
|
+
"'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n",
|
|
123
|
+
"'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n",
|
|
124
|
+
"'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n",
|
|
125
|
+
"'use strict';\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0x00) { // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) { // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) { // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80 || // overlong\n buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0 // surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80 || // overlong\n buf[i] === 0xf4 && buf[i + 1] > 0x8f || buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = isValidUTF8;\n",
|
|
126
|
+
"'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n",
|
|
127
|
+
"'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n",
|
|
128
|
+
"'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n",
|
|
129
|
+
"/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n",
|
|
130
|
+
"'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n",
|
|
131
|
+
"'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n",
|
|
132
|
+
"/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n",
|
|
133
|
+
"/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n",
|
|
134
|
+
"'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n",
|
|
135
|
+
"/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n",
|
|
136
|
+
"import type { IDatabaseAdapter, UUID } from '@elizaos/core';\nimport { type IAgentRuntime, type Plugin, logger, stringToUuid } from '@elizaos/core';\nimport { mkdirSync } from 'node:fs';\nimport { PgliteDatabaseAdapter } from './pglite/adapter';\nimport { PGliteClientManager } from './pglite/manager';\nimport { PgDatabaseAdapter } from './pg/adapter';\nimport { PostgresConnectionManager } from './pg/manager';\nimport { NeonDatabaseAdapter } from './neon/adapter';\nimport { NeonConnectionManager } from './neon/manager';\nimport { resolvePgliteDir, isNeonDatabase } from './utils.node';\nimport * as schema from './schema';\n\nconst GLOBAL_SINGLETONS = Symbol.for('@elizaos/plugin-sql/global-singletons');\n\n// Union type for both manager types\ntype ConnectionManager = PostgresConnectionManager | NeonConnectionManager;\n\ninterface GlobalSingletons {\n pgLiteClientManager?: PGliteClientManager;\n // Map of connection managers by server_id (for RLS multi-tenancy)\n // Key: server_id (or 'default' for non-RLS mode)\n // Value: PostgresConnectionManager (for standard PG) or NeonConnectionManager (for Neon serverless)\n postgresConnectionManagers?: Map<string, ConnectionManager>;\n}\n\n// Type assertion needed because globalThis doesn't include symbol keys in its type definition\nconst globalSymbols = globalThis as typeof globalThis & Record<symbol, GlobalSingletons>;\nif (!globalSymbols[GLOBAL_SINGLETONS]) {\n globalSymbols[GLOBAL_SINGLETONS] = {};\n}\nconst globalSingletons = globalSymbols[GLOBAL_SINGLETONS];\n\nexport function createDatabaseAdapter(\n config: {\n dataDir?: string;\n postgresUrl?: string;\n },\n agentId: UUID\n): IDatabaseAdapter {\n if (config.postgresUrl) {\n // Detect if this is a Neon serverless database\n const useNeonDriver = isNeonDatabase(config.postgresUrl);\n\n // Determine RLS server_id if data isolation is enabled\n const dataIsolationEnabled = process.env.ENABLE_DATA_ISOLATION === 'true';\n let rlsServerId: string | undefined;\n let managerKey = 'default'; // Key for connection manager map\n\n if (dataIsolationEnabled) {\n const rlsServerIdString = process.env.ELIZA_SERVER_ID;\n if (!rlsServerIdString) {\n throw new Error(\n '[Data Isolation] ENABLE_DATA_ISOLATION=true requires ELIZA_SERVER_ID environment variable'\n );\n }\n rlsServerId = stringToUuid(rlsServerIdString);\n managerKey = rlsServerId; // Use server_id as key for multi-tenancy\n logger.debug(\n {\n src: 'plugin:sql',\n rlsServerId: rlsServerId.slice(0, 8),\n serverIdString: rlsServerIdString,\n },\n 'Using connection pool for RLS server'\n );\n }\n\n // Add driver type to manager key to avoid mixing Neon and Postgres managers\n const fullManagerKey = `${managerKey}:${useNeonDriver ? 'neon' : 'pg'}`;\n\n // Initialize connection managers map if needed\n if (!globalSingletons.postgresConnectionManagers) {\n globalSingletons.postgresConnectionManagers = new Map();\n }\n\n // Get or create connection manager for this server_id\n let manager = globalSingletons.postgresConnectionManagers.get(fullManagerKey);\n\n // Check if existing manager was closed (e.g., after adapter.close())\n // If so, we need to recreate it to avoid \"pool is closed\" errors\n if (manager && manager.isClosed()) {\n logger.debug(\n { src: 'plugin:sql', managerKey: fullManagerKey.slice(0, 16) },\n 'Existing connection pool was closed, recreating'\n );\n globalSingletons.postgresConnectionManagers.delete(fullManagerKey);\n manager = undefined;\n }\n\n if (!manager) {\n if (useNeonDriver) {\n logger.debug(\n { src: 'plugin:sql:neon', managerKey: fullManagerKey.slice(0, 16) },\n 'Creating new Neon serverless connection pool'\n );\n manager = new NeonConnectionManager(config.postgresUrl, rlsServerId);\n } else {\n logger.debug(\n { src: 'plugin:sql', managerKey: fullManagerKey.slice(0, 16) },\n 'Creating new PostgreSQL connection pool'\n );\n manager = new PostgresConnectionManager(config.postgresUrl, rlsServerId);\n }\n globalSingletons.postgresConnectionManagers.set(fullManagerKey, manager);\n }\n\n // Return the appropriate adapter based on driver type\n if (useNeonDriver) {\n return new NeonDatabaseAdapter(agentId, manager as NeonConnectionManager);\n }\n return new PgDatabaseAdapter(agentId, manager as PostgresConnectionManager);\n }\n\n const dataDir = resolvePgliteDir(config.dataDir);\n\n // Ensure the directory exists for PGLite unless it's a special URI (memory://, idb://, etc.)\n if (dataDir && !dataDir.includes('://')) {\n mkdirSync(dataDir, { recursive: true });\n }\n\n if (!globalSingletons.pgLiteClientManager) {\n globalSingletons.pgLiteClientManager = new PGliteClientManager({ dataDir });\n }\n return new PgliteDatabaseAdapter(agentId, globalSingletons.pgLiteClientManager);\n}\n\nexport const plugin: Plugin = {\n name: '@elizaos/plugin-sql',\n description: 'A plugin for SQL database access with dynamic schema migrations',\n priority: 0,\n schema: schema,\n init: async (_config, runtime: IAgentRuntime) => {\n runtime.logger.info(\n { src: 'plugin:sql', agentId: runtime.agentId },\n 'plugin-sql (node) init starting'\n );\n\n const adapterRegistered = await runtime\n .isReady()\n .then(() => true)\n .catch((error: unknown) => {\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('Database adapter not registered')) {\n // Expected on first load before the adapter is created; not a warning condition\n runtime.logger.info(\n { src: 'plugin:sql', agentId: runtime.agentId },\n 'No pre-registered database adapter detected; registering adapter'\n );\n } else {\n // Unexpected readiness error - keep as a warning with details\n runtime.logger.warn(\n { src: 'plugin:sql', agentId: runtime.agentId, error: message },\n 'Database adapter readiness check error; proceeding to register adapter'\n );\n }\n return false;\n });\n if (adapterRegistered) {\n runtime.logger.info(\n { src: 'plugin:sql', agentId: runtime.agentId },\n 'Database adapter already registered, skipping creation'\n );\n return;\n }\n\n const postgresUrl = runtime.getSetting('POSTGRES_URL');\n // Only support PGLITE_DATA_DIR going forward\n const dataDir = runtime.getSetting('PGLITE_DATA_DIR');\n\n const dbAdapter = createDatabaseAdapter(\n {\n dataDir: typeof dataDir === 'string' ? dataDir : undefined,\n postgresUrl: typeof postgresUrl === 'string' ? postgresUrl : undefined,\n },\n runtime.agentId\n );\n\n runtime.registerDatabaseAdapter(dbAdapter);\n runtime.logger.info(\n { src: 'plugin:sql', agentId: runtime.agentId },\n 'Database adapter created and registered'\n );\n },\n};\n\nexport default plugin;\n\nexport { DatabaseMigrationService } from './migration-service';\nexport {\n installRLSFunctions,\n getOrCreateRlsServer,\n setServerContext,\n assignAgentToServer,\n applyRLSToNewTables,\n uninstallRLS,\n} from './rls';\n",
|
|
137
|
+
"import { type UUID, logger, type Agent, type Entity, type Memory } from '@elizaos/core';\nimport { drizzle, type PgliteDatabase } from 'drizzle-orm/pglite';\nimport { BaseDrizzleAdapter } from '../base';\nimport { DIMENSION_MAP, type EmbeddingDimensionColumn } from '../schema/embedding';\nimport type { PGliteClientManager } from './manager';\n\n/**\n * PgliteDatabaseAdapter class represents an adapter for interacting with a PgliteDatabase.\n * Extends BaseDrizzleAdapter.\n *\n * @constructor\n * @param {UUID} agentId - The ID of the agent.\n * @param {PGliteClientManager} manager - The manager for the Pglite client.\n *\n * @method withDatabase\n * @param {() => Promise<T>} operation - The operation to perform on the database.\n * @return {Promise<T>} - The result of the operation.\n *\n * @method init\n * @return {Promise<void>} - A Promise that resolves when the initialization is complete.\n *\n * @method close\n * @return {void} - A Promise that resolves when the database is closed.\n */\nexport class PgliteDatabaseAdapter extends BaseDrizzleAdapter {\n private manager: PGliteClientManager;\n protected embeddingDimension: EmbeddingDimensionColumn = DIMENSION_MAP[384];\n\n /**\n * Constructor for creating an instance of a class.\n * @param {UUID} agentId - The unique identifier for the agent.\n * @param {PGliteClientManager} manager - The manager for the Pglite client.\n */\n constructor(agentId: UUID, manager: PGliteClientManager) {\n super(agentId);\n this.manager = manager;\n // drizzle-orm/pglite expects PGlite instance directly\n this.db = drizzle(this.manager.getConnection());\n }\n\n /**\n * Execute a callback with isolation context.\n * PGLite: No RLS support, just execute the callback in a simple transaction.\n */\n public async withIsolationContext<T>(\n _entityId: UUID | null,\n callback: (tx: PgliteDatabase) => Promise<T>\n ): Promise<T> {\n return this.db.transaction(callback);\n }\n\n // Methods required by TypeScript but not in base class\n async getEntityByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n // Delegate to the correct method name\n return this.getEntitiesByIds(entityIds);\n }\n\n async getMemoriesByServerId(_params: { serverId: UUID; count?: number }): Promise<Memory[]> {\n // This method doesn't seem to exist in the base implementation\n // Provide a basic implementation that returns empty array\n logger.warn({ src: 'plugin:sql' }, 'getMemoriesByServerId called but not implemented');\n return [];\n }\n\n async ensureAgentExists(agent: Partial<Agent>): Promise<Agent> {\n // Check if agent exists, create if not\n const existingAgent = await this.getAgent(this.agentId);\n if (existingAgent) {\n return existingAgent;\n }\n\n // Create the agent with required fields\n const newAgent: Agent = {\n id: this.agentId,\n name: agent.name || 'Unknown Agent',\n username: agent.username,\n bio: agent.bio || 'An AI agent',\n createdAt: agent.createdAt || Date.now(),\n updatedAt: agent.updatedAt || Date.now(),\n };\n\n await this.createAgent(newAgent);\n const createdAgent = await this.getAgent(this.agentId);\n if (!createdAgent) {\n throw new Error('Failed to create agent');\n }\n return createdAgent;\n }\n\n /**\n * Asynchronously runs the provided database operation while checking if the database is currently shutting down.\n * If the database is shutting down, an error is thrown to prevent operations on a closing database.\n *\n * @param {Function} operation - The database operation to be performed.\n * @returns {Promise<T>} A promise that resolves with the result of the database operation.\n * @throws {Error} If the database is shutting down.\n */\n protected async withDatabase<T>(operation: () => Promise<T>): Promise<T> {\n if (this.manager.isShuttingDown()) {\n const error = new Error('Database is shutting down - operation rejected');\n logger.warn(\n { src: 'plugin:sql', error: error.message },\n 'Database operation rejected during shutdown'\n );\n throw error;\n }\n return operation();\n }\n\n /**\n * Asynchronously initializes the database by running migrations.\n *\n * @returns {Promise<void>} A Promise that resolves when the database initialization is complete.\n */\n async init(): Promise<void> {\n logger.debug({ src: 'plugin:sql' }, 'PGliteDatabaseAdapter initialized');\n }\n\n /**\n * Checks if the database connection is ready and active.\n * For PGLite, this checks if the client is not in a shutting down state.\n * @returns {Promise<boolean>} A Promise that resolves to true if the connection is healthy.\n */\n async isReady(): Promise<boolean> {\n return !this.manager.isShuttingDown();\n }\n\n /**\n * Asynchronously closes the database.\n */\n async close() {\n await this.manager.close();\n }\n\n /**\n * Asynchronously retrieves the connection from the client.\n *\n * @returns {Promise<PGlite>} A Promise that resolves with the connection.\n */\n async getConnection() {\n return this.manager.getConnection();\n }\n}\n",
|
|
119
138
|
"import { PGlite } from \"@electric-sql/pglite\";\nimport { entityKind } from \"../entity.js\";\nimport { DefaultLogger } from \"../logger.js\";\nimport { PgDatabase } from \"../pg-core/db.js\";\nimport { PgDialect } from \"../pg-core/dialect.js\";\nimport {\n createTableRelationsHelpers,\n extractTablesRelationalConfig\n} from \"../relations.js\";\nimport { isConfig } from \"../utils.js\";\nimport { PgliteSession } from \"./session.js\";\nclass PgliteDriver {\n constructor(client, dialect, options = {}) {\n this.client = client;\n this.dialect = dialect;\n this.options = options;\n }\n static [entityKind] = \"PgliteDriver\";\n createSession(schema) {\n return new PgliteSession(this.client, this.dialect, schema, {\n logger: this.options.logger,\n cache: this.options.cache\n });\n }\n}\nclass PgliteDatabase extends PgDatabase {\n static [entityKind] = \"PgliteDatabase\";\n}\nfunction construct(client, config = {}) {\n const dialect = new PgDialect({ casing: config.casing });\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n let schema;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(\n config.schema,\n createTableRelationsHelpers\n );\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n const driver = new PgliteDriver(client, dialect, { logger, cache: config.cache });\n const session = driver.createSession(schema);\n const db = new PgliteDatabase(dialect, session, schema);\n db.$client = client;\n db.$cache = config.cache;\n if (db.$cache) {\n db.$cache[\"invalidate\"] = config.cache?.onMutate;\n }\n return db;\n}\nfunction drizzle(...params) {\n if (params[0] === void 0 || typeof params[0] === \"string\") {\n const instance = new PGlite(params[0]);\n return construct(instance, params[1]);\n }\n if (isConfig(params[0])) {\n const { connection, client, ...drizzleConfig } = params[0];\n if (client) return construct(client, drizzleConfig);\n if (typeof connection === \"object\") {\n const { dataDir, ...options } = connection;\n const instance2 = new PGlite(dataDir, options);\n return construct(instance2, drizzleConfig);\n }\n const instance = new PGlite(connection);\n return construct(instance, drizzleConfig);\n }\n return construct(params[0], params[1]);\n}\n((drizzle2) => {\n function mock(config) {\n return construct({}, config);\n }\n drizzle2.mock = mock;\n})(drizzle || (drizzle = {}));\nexport {\n PgliteDatabase,\n PgliteDriver,\n drizzle\n};\n//# sourceMappingURL=driver.js.map",
|
|
120
139
|
"import { entityKind } from \"../entity.js\";\nimport { NoopLogger } from \"../logger.js\";\nimport { PgTransaction } from \"../pg-core/index.js\";\nimport { PgPreparedQuery, PgSession } from \"../pg-core/session.js\";\nimport { fillPlaceholders, sql } from \"../sql/sql.js\";\nimport { mapResultRow } from \"../utils.js\";\nimport { types } from \"@electric-sql/pglite\";\nimport { NoopCache } from \"../cache/core/cache.js\";\nclass PglitePreparedQuery extends PgPreparedQuery {\n constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, name, _isResponseInArrayMode, customResultMapper) {\n super({ sql: queryString, params }, cache, queryMetadata, cacheConfig);\n this.client = client;\n this.queryString = queryString;\n this.params = params;\n this.logger = logger;\n this.fields = fields;\n this._isResponseInArrayMode = _isResponseInArrayMode;\n this.customResultMapper = customResultMapper;\n this.rawQueryConfig = {\n rowMode: \"object\",\n parsers: {\n [types.TIMESTAMP]: (value) => value,\n [types.TIMESTAMPTZ]: (value) => value,\n [types.INTERVAL]: (value) => value,\n [types.DATE]: (value) => value,\n // numeric[]\n [1231]: (value) => value,\n // timestamp[]\n [1115]: (value) => value,\n // timestamp with timezone[]\n [1185]: (value) => value,\n // interval[]\n [1187]: (value) => value,\n // date[]\n [1182]: (value) => value\n }\n };\n this.queryConfig = {\n rowMode: \"array\",\n parsers: {\n [types.TIMESTAMP]: (value) => value,\n [types.TIMESTAMPTZ]: (value) => value,\n [types.INTERVAL]: (value) => value,\n [types.DATE]: (value) => value,\n // numeric[]\n [1231]: (value) => value,\n // timestamp[]\n [1115]: (value) => value,\n // timestamp with timezone[]\n [1185]: (value) => value,\n // interval[]\n [1187]: (value) => value,\n // date[]\n [1182]: (value) => value\n }\n };\n }\n static [entityKind] = \"PglitePreparedQuery\";\n rawQueryConfig;\n queryConfig;\n async execute(placeholderValues = {}) {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.queryString, params);\n const { fields, client, queryConfig, joinsNotNullableMap, customResultMapper, queryString, rawQueryConfig } = this;\n if (!fields && !customResultMapper) {\n return this.queryWithCache(queryString, params, async () => {\n return await client.query(queryString, params, rawQueryConfig);\n });\n }\n const result = await this.queryWithCache(queryString, params, async () => {\n return await client.query(queryString, params, queryConfig);\n });\n return customResultMapper ? customResultMapper(result.rows) : result.rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));\n }\n all(placeholderValues = {}) {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.queryString, params);\n return this.queryWithCache(this.queryString, params, async () => {\n return await this.client.query(this.queryString, params, this.rawQueryConfig);\n }).then((result) => result.rows);\n }\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\nclass PgliteSession extends PgSession {\n constructor(client, dialect, schema, options = {}) {\n super(dialect);\n this.client = client;\n this.schema = schema;\n this.options = options;\n this.logger = options.logger ?? new NoopLogger();\n this.cache = options.cache ?? new NoopCache();\n }\n static [entityKind] = \"PgliteSession\";\n logger;\n cache;\n prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {\n return new PglitePreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n this.cache,\n queryMetadata,\n cacheConfig,\n fields,\n name,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n async transaction(transaction, config) {\n return this.client.transaction(async (client) => {\n const session = new PgliteSession(\n client,\n this.dialect,\n this.schema,\n this.options\n );\n const tx = new PgliteTransaction(this.dialect, session, this.schema);\n if (config) {\n await tx.setTransaction(config);\n }\n return transaction(tx);\n });\n }\n async count(sql2) {\n const res = await this.execute(sql2);\n return Number(\n res[\"rows\"][0][\"count\"]\n );\n }\n}\nclass PgliteTransaction extends PgTransaction {\n static [entityKind] = \"PgliteTransaction\";\n async transaction(transaction) {\n const savepointName = `sp${this.nestedIndex + 1}`;\n const tx = new PgliteTransaction(\n this.dialect,\n this.session,\n this.schema,\n this.nestedIndex + 1\n );\n await tx.execute(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = await transaction(tx);\n await tx.execute(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (err) {\n await tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n throw err;\n }\n }\n}\nexport {\n PglitePreparedQuery,\n PgliteSession,\n PgliteTransaction\n};\n//# sourceMappingURL=session.js.map",
|
|
121
|
-
"import {\n type Agent,\n ChannelType,\n type Component,\n DatabaseAdapter,\n type Entity,\n type Log,\n type LogBody,\n logger,\n type Memory,\n type MemoryMetadata,\n type Metadata,\n type Participant,\n type Relationship,\n type Room,\n RoomMetadata,\n type Task,\n TaskMetadata,\n type UUID,\n type World,\n type AgentRunSummary,\n type AgentRunSummaryResult,\n type RunStatus,\n type AgentRunCounts,\n} from '@elizaos/core';\nimport type { DatabaseMigrationService } from './migration-service';\nimport {\n and,\n cosineDistance,\n count,\n desc,\n eq,\n gte,\n inArray,\n lt,\n lte,\n or,\n SQL,\n sql,\n} from 'drizzle-orm';\nimport { v4 } from 'uuid';\nimport { DIMENSION_MAP, type EmbeddingDimensionColumn } from './schema/embedding';\nimport {\n agentTable,\n cacheTable,\n channelParticipantsTable,\n channelTable,\n componentTable,\n embeddingTable,\n entityTable,\n logTable,\n memoryTable,\n messageServerTable,\n messageTable,\n participantTable,\n relationshipTable,\n roomTable,\n messageServerAgentsTable,\n taskTable,\n worldTable,\n} from './schema/index';\nimport type { DrizzleDatabase } from './types';\n\n// Define the metadata type inline since we can't import it\n/**\n * Represents metadata information about memory.\n * @typedef {Object} MemoryMetadata\n * @property {string} type - The type of memory.\n * @property {string} [source] - The source of the memory.\n * @property {UUID} [sourceId] - The ID of the source.\n * @property {string} [scope] - The scope of the memory.\n * @property {number} [timestamp] - The timestamp of the memory.\n * @property {string[]} [tags] - The tags associated with the memory.\n * @property {UUID} [documentId] - The ID of the document associated with the memory.\n * @property {number} [position] - The position of the memory.\n */\n\n/**\n * Abstract class representing a base Drizzle adapter for working with databases.\n * This adapter provides a comprehensive set of methods for interacting with a database\n * using Drizzle ORM. It implements the DatabaseAdapter interface and handles operations\n * for various entity types including agents, entities, components, memories, rooms,\n * participants, relationships, tasks, and more.\n *\n * The adapter includes built-in retry logic for database operations, embedding dimension\n * management, and transaction support. Concrete implementations must provide the\n * withDatabase method to execute operations against their specific database.\n */\nexport abstract class BaseDrizzleAdapter extends DatabaseAdapter<any> {\n protected readonly maxRetries: number = 3;\n protected readonly baseDelay: number = 1000;\n protected readonly maxDelay: number = 10000;\n protected readonly jitterMax: number = 1000;\n protected embeddingDimension: EmbeddingDimensionColumn = DIMENSION_MAP[384];\n protected migrationService?: DatabaseMigrationService;\n\n protected abstract withDatabase<T>(operation: () => Promise<T>): Promise<T>;\n\n /**\n * Execute a callback with entity context for Entity RLS.\n * Must be implemented by concrete adapters to handle their specific RLS mechanisms.\n *\n * @param entityId - The entity UUID to set as context (or null for system operations)\n * @param callback - The database operations to execute with the entity context\n * @returns The result of the callback\n */\n public abstract withEntityContext<T>(\n entityId: UUID | null,\n callback: (tx: DrizzleDatabase) => Promise<T>\n ): Promise<T>;\n\n public abstract init(): Promise<void>;\n public abstract close(): Promise<void>;\n\n /**\n * Initialize method that can be overridden by implementations\n */\n public async initialize(): Promise<void> {\n await this.init();\n }\n\n /**\n * Run plugin schema migrations for all registered plugins\n * @param plugins Array of plugins with their schemas\n * @param options Migration options (verbose, force, dryRun, etc.)\n */\n public async runPluginMigrations(\n plugins: Array<{ name: string; schema?: Record<string, unknown> }>,\n options?: {\n verbose?: boolean;\n force?: boolean;\n dryRun?: boolean;\n }\n ): Promise<void> {\n // Initialize migration service if not already done\n if (!this.migrationService) {\n const { DatabaseMigrationService } = await import('./migration-service');\n this.migrationService = new DatabaseMigrationService();\n await this.migrationService.initializeWithDatabase(this.db);\n }\n\n // Register plugin schemas\n for (const plugin of plugins) {\n if (plugin.schema) {\n this.migrationService.registerSchema(plugin.name, plugin.schema);\n }\n }\n\n // Run migrations with options\n await this.migrationService.runAllPluginMigrations(options);\n }\n\n /**\n * Get the underlying database instance for testing purposes\n */\n public getDatabase(): unknown {\n return this.db;\n }\n\n protected agentId: UUID;\n\n /**\n * Constructor for creating a new instance of Agent with the specified agentId.\n *\n * @param {UUID} agentId - The unique identifier for the agent.\n */\n constructor(agentId: UUID) {\n super();\n this.agentId = agentId;\n }\n\n /**\n * Normalizes entity names to ensure they are always a proper array of strings.\n * Handles strings, Sets, Maps, iterables, and non-iterable values.\n * All array elements are converted to strings to prevent database errors.\n * @param {any} names - The names value to normalize\n * @returns {string[]} A proper array of string names\n * @private\n */\n private normalizeEntityNames(names: unknown): string[] {\n // Handle null/undefined\n if (names == null) {\n return [];\n }\n\n // Handle string - wrap in array\n if (typeof names === 'string') {\n return [names];\n }\n\n // Handle arrays - ensure all elements are strings\n if (Array.isArray(names)) {\n return names.map(String);\n }\n\n // Handle Sets - convert to array and ensure all elements are strings\n if (names instanceof Set) {\n return Array.from(names).map(String);\n }\n\n // Handle other iterables (including Maps) - convert to array and ensure all elements are strings\n // Maps yield [key, value] tuples, so we need to convert those to strings too\n if (typeof names === 'object' && typeof names[Symbol.iterator] === 'function') {\n return Array.from(names as Iterable<unknown>).map(String);\n }\n\n // Handle non-iterable primitives (numbers, booleans, objects)\n return [String(names)];\n }\n\n /**\n * Executes the given operation with retry logic.\n * @template T\n * @param {() => Promise<T>} operation - The operation to be executed.\n * @returns {Promise<T>} A promise that resolves with the result of the operation.\n */\n protected async withRetry<T>(operation: () => Promise<T>): Promise<T> {\n let lastError: Error = new Error('Unknown error');\n\n for (let attempt = 1; attempt <= this.maxRetries; attempt++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error as Error;\n\n if (attempt < this.maxRetries) {\n const backoffDelay = Math.min(this.baseDelay * 2 ** (attempt - 1), this.maxDelay);\n\n const jitter = Math.random() * this.jitterMax;\n const delay = backoffDelay + jitter;\n\n logger.warn(\n {\n src: 'plugin:sql',\n attempt,\n maxRetries: this.maxRetries,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Database operation failed, retrying'\n );\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n } else {\n logger.error(\n {\n src: 'plugin:sql',\n totalAttempts: attempt,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Max retry attempts reached'\n );\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n }\n\n throw lastError;\n }\n\n /**\n * Asynchronously ensures that the given embedding dimension is valid for the agent.\n *\n * @param {number} dimension - The dimension to ensure for the embedding.\n * @returns {Promise<void>} - Resolves once the embedding dimension is ensured.\n */\n async ensureEmbeddingDimension(dimension: number) {\n return this.withDatabase(async () => {\n const existingMemory = await this.db\n .select()\n .from(memoryTable)\n .innerJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(eq(memoryTable.agentId, this.agentId))\n .limit(1);\n\n if (existingMemory.length > 0) {\n // The join result includes both memoryTable and embeddingTable columns\n // Access embedding columns directly from the joined result\n interface JoinedMemoryResult {\n memories: typeof memoryTable.$inferSelect;\n embeddings: typeof embeddingTable.$inferSelect;\n }\n const joinedResult = existingMemory[0] as JoinedMemoryResult;\n Object.entries(DIMENSION_MAP).find(([_, colName]) => {\n const embeddingCol = colName as keyof typeof embeddingTable.$inferSelect;\n return joinedResult.embeddings[embeddingCol] !== null;\n });\n // We don't actually need to use usedDimension for now, but it's good to know it's there.\n }\n\n this.embeddingDimension = DIMENSION_MAP[dimension];\n });\n }\n\n /**\n * Asynchronously retrieves an agent by their ID from the database.\n * @param {UUID} agentId - The ID of the agent to retrieve.\n * @returns {Promise<Agent | null>} A promise that resolves to the retrieved agent or null if not found.\n */\n async getAgent(agentId: UUID): Promise<Agent | null> {\n return this.withDatabase(async () => {\n const rows = await this.db\n .select()\n .from(agentTable)\n .where(eq(agentTable.id, agentId))\n .limit(1);\n\n if (rows.length === 0) return null;\n\n const row = rows[0];\n return {\n ...row,\n username: row.username || '',\n id: row.id as UUID,\n system: !row.system ? undefined : row.system,\n bio: !row.bio ? '' : row.bio,\n createdAt: row.createdAt.getTime(),\n updatedAt: row.updatedAt.getTime(),\n };\n });\n }\n\n /**\n * Asynchronously retrieves a list of agents from the database.\n *\n * @returns {Promise<Partial<Agent>[]>} A Promise that resolves to an array of Agent objects.\n */\n async getAgents(): Promise<Partial<Agent>[]> {\n const result = await this.withDatabase(async () => {\n const rows = await this.db\n .select({\n id: agentTable.id,\n name: agentTable.name,\n bio: agentTable.bio,\n })\n .from(agentTable);\n return rows.map((row) => ({\n ...row,\n id: row.id as UUID,\n bio: row.bio === null ? '' : row.bio,\n }));\n });\n // Guard against null return\n return result || [];\n }\n /**\n * Asynchronously creates a new agent record in the database.\n *\n * @param {Partial<Agent>} agent The agent object to be created.\n * @returns {Promise<boolean>} A promise that resolves to a boolean indicating the success of the operation.\n */\n async createAgent(agent: Agent): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n // Check for existing agent with the same ID only (names can be duplicated)\n if (agent.id) {\n const existing = await this.db\n .select({ id: agentTable.id })\n .from(agentTable)\n .where(eq(agentTable.id, agent.id))\n .limit(1);\n\n if (existing.length > 0) {\n logger.warn(\n { src: 'plugin:sql', agentId: agent.id },\n 'Attempted to create agent with duplicate ID'\n );\n return false;\n }\n }\n\n await this.db.transaction(async (tx) => {\n await tx.insert(agentTable).values({\n ...agent,\n createdAt: new Date(agent.createdAt || Date.now()),\n updatedAt: new Date(agent.updatedAt || Date.now()),\n });\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: agent.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create agent'\n );\n return false;\n }\n });\n }\n\n /**\n * Updates an agent in the database with the provided agent ID and data.\n * @param {UUID} agentId - The unique identifier of the agent to update.\n * @param {Partial<Agent>} agent - The partial agent object containing the fields to update.\n * @returns {Promise<boolean>} - A boolean indicating if the agent was successfully updated.\n */\n async updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n if (!agentId) {\n throw new Error('Agent ID is required for update');\n }\n\n await this.db.transaction(async (tx) => {\n // Handle settings update if present\n if (agent?.settings) {\n agent.settings = await this.mergeAgentSettings(tx, agentId, agent.settings);\n }\n\n // Convert numeric timestamps to Date objects for database storage\n // The Agent interface uses numbers, but the database schema expects Date objects\n const updateData: Record<string, unknown> = { ...agent };\n\n if (updateData.createdAt) {\n if (typeof updateData.createdAt === 'number') {\n updateData.createdAt = new Date(updateData.createdAt);\n } else {\n delete updateData.createdAt; // Don't update createdAt if it's not a valid timestamp\n }\n }\n if (updateData.updatedAt) {\n if (typeof updateData.updatedAt === 'number') {\n updateData.updatedAt = new Date(updateData.updatedAt);\n } else {\n updateData.updatedAt = new Date(); // Use current time if invalid\n }\n } else {\n updateData.updatedAt = new Date(); // Always set updatedAt to current time\n }\n\n await tx.update(agentTable).set(updateData).where(eq(agentTable.id, agentId));\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to update agent'\n );\n return false;\n }\n });\n }\n\n /**\n * Merges updated agent settings with existing settings in the database,\n * with special handling for nested objects like secrets.\n * @param tx - The database transaction\n * @param agentId - The ID of the agent\n * @param updatedSettings - The settings object with updates\n * @returns The merged settings object\n * @private\n */\n private async mergeAgentSettings<T extends Record<string, unknown>>(\n tx: DrizzleDatabase,\n agentId: UUID,\n updatedSettings: T\n ): Promise<T> {\n // First get the current agent data\n const currentAgent = await tx\n .select({ settings: agentTable.settings })\n .from(agentTable)\n .where(eq(agentTable.id, agentId))\n .limit(1);\n\n const currentSettings =\n currentAgent.length > 0 && currentAgent[0].settings ? currentAgent[0].settings : {};\n\n const deepMerge = (\n target: Record<string, unknown> | unknown,\n source: Record<string, unknown>\n ): Record<string, unknown> | undefined => {\n // If source is explicitly null, it means the intention is to set this entire branch to null (or delete if top-level handled by caller).\n // For recursive calls, if a sub-object in source is null, it effectively means \"remove this sub-object from target\".\n // However, our primary deletion signal is a *property value* being null within an object.\n if (source === null) {\n // If the entire source for a given key is null, we treat it as \"delete this key from target\"\n // by returning undefined, which the caller can use to delete the key.\n return undefined;\n }\n\n // If source is an array or a primitive, it replaces the target value.\n if (Array.isArray(source) || typeof source !== 'object') {\n return source;\n }\n\n // Initialize output. If target is not an object, start with an empty one to merge source into.\n const output =\n typeof target === 'object' && target !== null && !Array.isArray(target)\n ? { ...target }\n : {};\n\n for (const key of Object.keys(source)) {\n // Iterate over source keys\n const sourceValue = source[key];\n\n if (sourceValue === null) {\n // If a value in source is null, delete the corresponding key from output.\n delete output[key];\n } else if (typeof sourceValue === 'object' && !Array.isArray(sourceValue)) {\n // If value is an object, recurse.\n const nestedMergeResult = deepMerge(output[key], sourceValue as Record<string, unknown>);\n if (nestedMergeResult === undefined) {\n // If recursive merge resulted in undefined (meaning the nested object should be deleted)\n delete output[key];\n } else {\n output[key] = nestedMergeResult;\n }\n } else {\n // Primitive or array value from source, assign it.\n output[key] = sourceValue;\n }\n }\n\n // After processing all keys from source, check if output became empty.\n // An object is empty if all its keys were deleted or resulted in undefined.\n // This is a more direct check than iterating 'output' after building it.\n if (Object.keys(output).length === 0) {\n // If the source itself was not an explicitly empty object,\n // and the merge resulted in an empty object, signal deletion.\n if (!(typeof source === 'object' && source !== null && Object.keys(source).length === 0)) {\n return undefined; // Signal to delete this (parent) key if it became empty.\n }\n }\n\n return output;\n }; // End of deepMerge\n\n const finalSettings = deepMerge(currentSettings, updatedSettings);\n // If the entire settings object becomes undefined (e.g. all keys removed),\n // return an empty object instead of undefined/null to keep the settings field present.\n return (finalSettings ?? {}) as T;\n }\n\n /**\n * Asynchronously deletes an agent with the specified UUID and all related entries.\n *\n * @param {UUID} agentId - The UUID of the agent to be deleted.\n * @returns {Promise<boolean>} - A boolean indicating if the deletion was successful.\n */\n async deleteAgent(agentId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n // Simply delete the agent - all related data will be cascade deleted\n const result = await this.db\n .delete(agentTable)\n .where(eq(agentTable.id, agentId))\n .returning();\n\n if (result.length === 0) {\n logger.warn({ src: 'plugin:sql', agentId }, 'Agent not found for deletion');\n return false;\n }\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to delete agent'\n );\n throw error;\n }\n });\n }\n\n /**\n * Count all agents in the database\n * Used primarily for maintenance and cleanup operations\n */\n /**\n * Asynchronously counts the number of agents in the database.\n * @returns {Promise<number>} A Promise that resolves to the number of agents in the database.\n */\n async countAgents(): Promise<number> {\n return this.withDatabase(async () => {\n try {\n const result = await this.db.select({ count: count() }).from(agentTable);\n\n return result[0]?.count || 0;\n } catch (error) {\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Failed to count agents'\n );\n return 0;\n }\n });\n }\n\n /**\n * Clean up the agents table by removing all agents\n * This is used during server startup to ensure no orphaned agents exist\n * from previous crashes or improper shutdowns\n */\n async cleanupAgents(): Promise<void> {\n return this.withDatabase(async () => {\n try {\n await this.db.delete(agentTable);\n } catch (error) {\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Failed to clean up agent table'\n );\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously retrieves an entity and its components by entity IDs.\n * @param {UUID[]} entityIds - The unique identifiers of the entities to retrieve.\n * @returns {Promise<Entity[] | null>} A Promise that resolves to the entity with its components if found, null otherwise.\n */\n async getEntitiesByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({\n entity: entityTable,\n components: componentTable,\n })\n .from(entityTable)\n .leftJoin(componentTable, eq(componentTable.entityId, entityTable.id))\n .where(inArray(entityTable.id, entityIds));\n\n if (result.length === 0) return [];\n\n // Group components by entity\n const entities: Record<UUID, Entity> = {};\n const entityComponents: Record<UUID, Entity['components']> = {};\n for (const e of result) {\n const key = e.entity.id;\n entities[key] = e.entity;\n if (entityComponents[key] === undefined) entityComponents[key] = [];\n if (e.components) {\n // Handle both single component and array of components\n const componentsArray = Array.isArray(e.components) ? e.components : [e.components];\n entityComponents[key] = [...entityComponents[key], ...componentsArray];\n }\n }\n for (const k of Object.keys(entityComponents)) {\n entities[k].components = entityComponents[k];\n }\n\n return Object.values(entities);\n });\n }\n\n /**\n * Asynchronously retrieves all entities for a given room, optionally including their components.\n * @param {UUID} roomId - The unique identifier of the room to get entities for\n * @param {boolean} [includeComponents] - Whether to include component data for each entity\n * @returns {Promise<Entity[]>} A Promise that resolves to an array of entities in the room\n */\n async getEntitiesForRoom(roomId: UUID, includeComponents?: boolean): Promise<Entity[]> {\n return this.withDatabase(async () => {\n const query = this.db\n .select({\n entity: entityTable,\n ...(includeComponents && { components: componentTable }),\n })\n .from(participantTable)\n .leftJoin(\n entityTable,\n and(eq(participantTable.entityId, entityTable.id), eq(entityTable.agentId, this.agentId))\n );\n\n if (includeComponents) {\n query.leftJoin(componentTable, eq(componentTable.entityId, entityTable.id));\n }\n\n const result = await query.where(eq(participantTable.roomId, roomId));\n\n // Group components by entity if includeComponents is true\n const entitiesByIdMap = new Map<UUID, Entity>();\n\n for (const row of result) {\n if (!row.entity) continue;\n\n const entityId = row.entity.id as UUID;\n if (!entitiesByIdMap.has(entityId)) {\n const entity: Entity = {\n ...row.entity,\n id: entityId,\n agentId: row.entity.agentId as UUID,\n metadata: row.entity.metadata as Record<string, unknown>,\n components: includeComponents ? [] : undefined,\n };\n entitiesByIdMap.set(entityId, entity);\n }\n\n if (includeComponents && row.components) {\n const entity = entitiesByIdMap.get(entityId);\n if (entity) {\n if (!entity.components) {\n entity.components = [];\n }\n entity.components.push(row.components);\n }\n }\n }\n\n return Array.from(entitiesByIdMap.values());\n });\n }\n\n /**\n * Asynchronously creates new entities in the database.\n * @param {Entity[]} entities - The entity objects to be created.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating the success of the operation.\n */\n async createEntities(entities: Entity[]): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n return await this.db.transaction(async (tx) => {\n // Normalize entity data to ensure names is a proper array\n const normalizedEntities = entities.map((entity) => ({\n ...entity,\n names: this.normalizeEntityNames(entity.names),\n metadata: entity.metadata || {},\n }));\n\n await tx.insert(entityTable).values(normalizedEntities);\n\n return true;\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId: entities[0]?.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create entities'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously ensures an entity exists, creating it if it doesn't\n * @param entity The entity to ensure exists\n * @returns Promise resolving to boolean indicating success\n */\n protected async ensureEntityExists(entity: Entity): Promise<boolean> {\n if (!entity.id) {\n logger.error({ src: 'plugin:sql' }, 'Entity ID is required for ensureEntityExists');\n return false;\n }\n\n try {\n const existingEntities = await this.getEntitiesByIds([entity.id]);\n\n if (!existingEntities || !existingEntities.length) {\n return await this.createEntities([entity]);\n }\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId: entity.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to ensure entity exists'\n );\n return false;\n }\n }\n\n /**\n * Asynchronously updates an entity in the database.\n * @param {Entity} entity - The entity object to be updated.\n * @returns {Promise<void>} A Promise that resolves when the entity is updated.\n */\n async updateEntity(entity: Entity): Promise<void> {\n if (!entity.id) {\n throw new Error('Entity ID is required for update');\n }\n return this.withDatabase(async () => {\n // Normalize entity data to ensure names is a proper array\n const normalizedEntity = {\n ...entity,\n names: this.normalizeEntityNames(entity.names),\n metadata: entity.metadata || {},\n };\n\n await this.db\n .update(entityTable)\n .set(normalizedEntity)\n .where(eq(entityTable.id, entity.id as string));\n });\n }\n\n /**\n * Asynchronously deletes an entity from the database based on the provided ID.\n * @param {UUID} entityId - The ID of the entity to delete.\n * @returns {Promise<void>} A Promise that resolves when the entity is deleted.\n */\n async deleteEntity(entityId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // Delete related components first\n await tx\n .delete(componentTable)\n .where(\n or(eq(componentTable.entityId, entityId), eq(componentTable.sourceEntityId, entityId))\n );\n\n // Delete the entity\n await tx.delete(entityTable).where(eq(entityTable.id, entityId));\n });\n });\n }\n\n /**\n * Asynchronously retrieves entities by their names and agentId.\n * @param {Object} params - The parameters for retrieving entities.\n * @param {string[]} params.names - The names to search for.\n * @param {UUID} params.agentId - The agent ID to filter by.\n * @returns {Promise<Entity[]>} A Promise that resolves to an array of entities.\n */\n async getEntitiesByNames(params: { names: string[]; agentId: UUID }): Promise<Entity[]> {\n return this.withDatabase(async () => {\n const { names, agentId } = params;\n\n // Build a condition to match any of the names\n const nameConditions = names.map((name) => sql`${name} = ANY(${entityTable.names})`);\n\n const query = sql`\n SELECT * FROM ${entityTable}\n WHERE ${entityTable.agentId} = ${agentId}\n AND (${sql.join(nameConditions, sql` OR `)})\n `;\n\n const result = await this.db.execute(query);\n\n return result.rows.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: row.names || [],\n metadata: row.metadata || {},\n }));\n });\n }\n\n /**\n * Asynchronously searches for entities by name with fuzzy matching.\n * @param {Object} params - The parameters for searching entities.\n * @param {string} params.query - The search query.\n * @param {UUID} params.agentId - The agent ID to filter by.\n * @param {number} params.limit - The maximum number of results to return.\n * @returns {Promise<Entity[]>} A Promise that resolves to an array of entities.\n */\n async searchEntitiesByName(params: {\n query: string;\n agentId: UUID;\n limit?: number;\n }): Promise<Entity[]> {\n return this.withDatabase(async () => {\n const { query, agentId, limit = 10 } = params;\n\n // If query is empty, return all entities up to limit\n if (!query || query.trim() === '') {\n const result = await this.db\n .select()\n .from(entityTable)\n .where(eq(entityTable.agentId, agentId))\n .limit(limit);\n\n return result.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: row.names || [],\n metadata: row.metadata || {},\n }));\n }\n\n // Otherwise, search for entities with names containing the query (case-insensitive)\n const searchQuery = sql`\n SELECT * FROM ${entityTable}\n WHERE ${entityTable.agentId} = ${agentId}\n AND EXISTS (\n SELECT 1 FROM unnest(${entityTable.names}) AS name\n WHERE LOWER(name) LIKE LOWER(${'%' + query + '%'})\n )\n LIMIT ${limit}\n `;\n\n const result = await this.db.execute(searchQuery);\n\n return result.rows.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: row.names || [],\n metadata: row.metadata || {},\n }));\n });\n }\n\n async getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n return this.withDatabase(async () => {\n const conditions = [eq(componentTable.entityId, entityId), eq(componentTable.type, type)];\n\n if (worldId) {\n conditions.push(eq(componentTable.worldId, worldId));\n }\n\n if (sourceEntityId) {\n conditions.push(eq(componentTable.sourceEntityId, sourceEntityId));\n }\n\n const result = await this.db\n .select()\n .from(componentTable)\n .where(and(...conditions));\n\n if (result.length === 0) return null;\n\n const component = result[0];\n\n return {\n ...component,\n id: component.id as UUID,\n entityId: component.entityId as UUID,\n agentId: component.agentId as UUID,\n roomId: component.roomId as UUID,\n worldId: (component.worldId ?? '') as UUID,\n sourceEntityId: (component.sourceEntityId ?? '') as UUID,\n data: component.data as Record<string, unknown>,\n createdAt: component.createdAt.getTime(),\n };\n });\n }\n\n /**\n * Asynchronously retrieves all components for a given entity, optionally filtered by world and source entity.\n * @param {UUID} entityId - The unique identifier of the entity to retrieve components for\n * @param {UUID} [worldId] - Optional world ID to filter components by\n * @param {UUID} [sourceEntityId] - Optional source entity ID to filter components by\n * @returns {Promise<Component[]>} A Promise that resolves to an array of components\n */\n async getComponents(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]> {\n return this.withDatabase(async () => {\n const conditions = [eq(componentTable.entityId, entityId)];\n\n if (worldId) {\n conditions.push(eq(componentTable.worldId, worldId));\n }\n\n if (sourceEntityId) {\n conditions.push(eq(componentTable.sourceEntityId, sourceEntityId));\n }\n\n const result = await this.db\n .select({\n id: componentTable.id,\n entityId: componentTable.entityId,\n type: componentTable.type,\n data: componentTable.data,\n worldId: componentTable.worldId,\n agentId: componentTable.agentId,\n roomId: componentTable.roomId,\n sourceEntityId: componentTable.sourceEntityId,\n createdAt: componentTable.createdAt,\n })\n .from(componentTable)\n .where(and(...conditions));\n\n if (result.length === 0) return [];\n\n const components = result.map((component) => ({\n ...component,\n id: component.id as UUID,\n entityId: component.entityId as UUID,\n agentId: component.agentId as UUID,\n roomId: component.roomId as UUID,\n worldId: (component.worldId ?? '') as UUID,\n sourceEntityId: (component.sourceEntityId ?? '') as UUID,\n data: component.data as Record<string, unknown>,\n createdAt: component.createdAt.getTime(),\n }));\n\n return components;\n });\n }\n\n /**\n * Asynchronously creates a new component in the database.\n * @param {Component} component - The component object to be created.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating the success of the operation.\n */\n async createComponent(component: Component): Promise<boolean> {\n return this.withDatabase(async () => {\n await this.db.insert(componentTable).values({\n ...component,\n createdAt: new Date(),\n });\n return true;\n });\n }\n\n /**\n * Asynchronously updates an existing component in the database.\n * @param {Component} component - The component object to be updated.\n * @returns {Promise<void>} A Promise that resolves when the component is updated.\n */\n async updateComponent(component: Component): Promise<void> {\n return this.withDatabase(async () => {\n try {\n await this.db\n .update(componentTable)\n .set({\n ...component,\n updatedAt: new Date(),\n })\n .where(eq(componentTable.id, component.id));\n } catch (e) {\n console.error('updateComponent error', e);\n }\n });\n }\n\n /**\n * Asynchronously deletes a component from the database.\n * @param {UUID} componentId - The unique identifier of the component to delete.\n * @returns {Promise<void>} A Promise that resolves when the component is deleted.\n */\n async deleteComponent(componentId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(componentTable).where(eq(componentTable.id, componentId));\n });\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID} params.roomId - The ID of the room to retrieve memories for.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {number} [params.offset] - The offset for pagination.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.tableName] - The name of the table to retrieve memories from.\n * @param {number} [params.start] - The start date to retrieve memories from.\n * @param {number} [params.end] - The end date to retrieve memories from.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemories(params: {\n entityId?: UUID;\n agentId?: UUID;\n count?: number;\n offset?: number;\n unique?: boolean;\n tableName: string;\n start?: number;\n end?: number;\n roomId?: UUID;\n worldId?: UUID;\n }): Promise<Memory[]> {\n const { entityId, agentId, roomId, worldId, tableName, unique, start, end, offset } = params;\n\n if (!tableName) throw new Error('tableName is required');\n if (offset !== undefined && offset < 0) {\n throw new Error('offset must be a non-negative number');\n }\n\n return this.withEntityContext(entityId ?? null, async (tx) => {\n const conditions = [eq(memoryTable.type, tableName)];\n\n if (start) {\n conditions.push(gte(memoryTable.createdAt, new Date(start)));\n }\n\n // Note: entityId WHERE filter removed - RLS handles access control\n // This allows seeing ALL messages in accessible rooms (user + agent responses)\n\n if (roomId) {\n conditions.push(eq(memoryTable.roomId, roomId));\n }\n\n // Add worldId condition\n if (worldId) {\n conditions.push(eq(memoryTable.worldId, worldId));\n }\n\n if (end) {\n conditions.push(lte(memoryTable.createdAt, new Date(end)));\n }\n\n if (unique) {\n conditions.push(eq(memoryTable.unique, true));\n }\n\n if (agentId) {\n conditions.push(eq(memoryTable.agentId, agentId));\n }\n\n const baseQuery = tx\n .select({\n memory: {\n id: memoryTable.id,\n type: memoryTable.type,\n createdAt: memoryTable.createdAt,\n content: memoryTable.content,\n entityId: memoryTable.entityId,\n agentId: memoryTable.agentId,\n roomId: memoryTable.roomId,\n unique: memoryTable.unique,\n metadata: memoryTable.metadata,\n },\n embedding: embeddingTable[this.embeddingDimension],\n })\n .from(memoryTable)\n .leftJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt));\n\n // Apply limit and offset for pagination\n // Build query conditionally to maintain proper types\n const rows = await (async () => {\n if (params.count && offset !== undefined && offset > 0) {\n return baseQuery.limit(params.count).offset(offset);\n } else if (params.count) {\n return baseQuery.limit(params.count);\n } else if (offset !== undefined && offset > 0) {\n return baseQuery.offset(offset);\n } else {\n return baseQuery;\n }\n })();\n\n return rows.map((row) => ({\n id: row.memory.id as UUID,\n type: row.memory.type,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ? Array.from(row.embedding) : undefined,\n }));\n });\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID[]} params.roomIds - The IDs of the rooms to retrieve memories for.\n * @param {string} params.tableName - The name of the table to retrieve memories from.\n * @param {number} [params.limit] - The maximum number of memories to retrieve.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemoriesByRoomIds(params: {\n roomIds: UUID[];\n tableName: string;\n limit?: number;\n }): Promise<Memory[]> {\n return this.withDatabase(async () => {\n if (params.roomIds.length === 0) return [];\n\n const conditions = [\n eq(memoryTable.type, params.tableName),\n inArray(memoryTable.roomId, params.roomIds),\n ];\n\n conditions.push(eq(memoryTable.agentId, this.agentId));\n\n const query = this.db\n .select({\n id: memoryTable.id,\n type: memoryTable.type,\n createdAt: memoryTable.createdAt,\n content: memoryTable.content,\n entityId: memoryTable.entityId,\n agentId: memoryTable.agentId,\n roomId: memoryTable.roomId,\n unique: memoryTable.unique,\n metadata: memoryTable.metadata,\n })\n .from(memoryTable)\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt));\n\n const rows = params.limit ? await query.limit(params.limit) : await query;\n\n return rows.map((row) => ({\n id: row.id as UUID,\n createdAt: row.createdAt.getTime(),\n content: typeof row.content === 'string' ? JSON.parse(row.content) : row.content,\n entityId: row.entityId as UUID,\n agentId: row.agentId as UUID,\n roomId: row.roomId as UUID,\n unique: row.unique,\n metadata: row.metadata,\n })) as Memory[];\n });\n }\n\n /**\n * Asynchronously retrieves a memory by its unique identifier.\n * @param {UUID} id - The unique identifier of the memory to retrieve.\n * @returns {Promise<Memory | null>} A Promise that resolves to the memory if found, null otherwise.\n */\n async getMemoryById(id: UUID): Promise<Memory | null> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({\n memory: memoryTable,\n embedding: embeddingTable[this.embeddingDimension],\n })\n .from(memoryTable)\n .leftJoin(embeddingTable, eq(memoryTable.id, embeddingTable.memoryId))\n .where(eq(memoryTable.id, id))\n .limit(1);\n\n if (result.length === 0) return null;\n\n const row = result[0];\n return {\n id: row.memory.id as UUID,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ?? undefined,\n };\n });\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID[]} params.memoryIds - The IDs of the memories to retrieve.\n * @param {string} [params.tableName] - The name of the table to retrieve memories from.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemoriesByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]> {\n return this.withDatabase(async () => {\n if (memoryIds.length === 0) return [];\n\n const conditions = [inArray(memoryTable.id, memoryIds)];\n\n if (tableName) {\n conditions.push(eq(memoryTable.type, tableName));\n }\n\n const rows = await this.db\n .select({\n memory: memoryTable,\n embedding: embeddingTable[this.embeddingDimension],\n })\n .from(memoryTable)\n .leftJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt));\n\n return rows.map((row) => ({\n id: row.memory.id as UUID,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ?? undefined,\n }));\n });\n }\n\n /**\n * Asynchronously retrieves cached embeddings from the database based on the provided parameters.\n * @param {Object} opts - The parameters for retrieving cached embeddings.\n * @param {string} opts.query_table_name - The name of the table to retrieve embeddings from.\n * @param {number} opts.query_threshold - The threshold for the levenshtein distance.\n * @param {string} opts.query_input - The input string to search for.\n * @param {string} opts.query_field_name - The name of the field to retrieve embeddings from.\n * @param {string} opts.query_field_sub_name - The name of the sub-field to retrieve embeddings from.\n * @param {number} opts.query_match_count - The maximum number of matches to retrieve.\n * @returns {Promise<{ embedding: number[]; levenshtein_score: number }[]>} A Promise that resolves to an array of cached embeddings.\n */\n async getCachedEmbeddings(opts: {\n query_table_name: string;\n query_threshold: number;\n query_input: string;\n query_field_name: string;\n query_field_sub_name: string;\n query_match_count: number;\n }): Promise<{ embedding: number[]; levenshtein_score: number }[]> {\n return this.withDatabase(async () => {\n try {\n // Drizzle database has execute method for raw SQL\n interface DrizzleDatabaseWithExecute {\n execute: (query: ReturnType<typeof sql>) => Promise<{ rows: Record<string, unknown>[] }>;\n }\n const results = await (this.db as DrizzleDatabaseWithExecute).execute(sql`\n WITH content_text AS (\n SELECT\n m.id,\n COALESCE(\n m.content->>${opts.query_field_sub_name},\n ''\n ) as content_text\n FROM memories m\n WHERE m.type = ${opts.query_table_name}\n AND m.content->>${opts.query_field_sub_name} IS NOT NULL\n ),\n embedded_text AS (\n SELECT\n ct.content_text,\n COALESCE(\n e.dim_384,\n e.dim_512,\n e.dim_768,\n e.dim_1024,\n e.dim_1536,\n e.dim_3072\n ) as embedding\n FROM content_text ct\n LEFT JOIN embeddings e ON e.memory_id = ct.id\n WHERE e.memory_id IS NOT NULL\n )\n SELECT\n embedding,\n levenshtein(${opts.query_input}, content_text) as levenshtein_score\n FROM embedded_text\n WHERE levenshtein(${opts.query_input}, content_text) <= ${opts.query_threshold}\n ORDER BY levenshtein_score\n LIMIT ${opts.query_match_count}\n `);\n\n return results.rows\n .map((row) => ({\n embedding: Array.isArray(row.embedding)\n ? row.embedding\n : typeof row.embedding === 'string'\n ? JSON.parse(row.embedding)\n : [],\n levenshtein_score: Number(row.levenshtein_score),\n }))\n .filter((row) => Array.isArray(row.embedding));\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n tableName: opts.query_table_name,\n fieldName: opts.query_field_name,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to get cached embeddings'\n );\n if (\n error instanceof Error &&\n error.message === 'levenshtein argument exceeds maximum length of 255 characters'\n ) {\n return [];\n }\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously logs an event in the database.\n * @param {Object} params - The parameters for logging an event.\n * @param {Object} params.body - The body of the event to log.\n * @param {UUID} params.entityId - The ID of the entity associated with the event.\n * @param {UUID} params.roomId - The ID of the room associated with the event.\n * @param {string} params.type - The type of the event to log.\n * @returns {Promise<void>} A Promise that resolves when the event is logged.\n */\n async log(params: {\n body: { [key: string]: unknown };\n entityId: UUID;\n roomId: UUID;\n type: string;\n }): Promise<void> {\n return this.withDatabase(async () => {\n try {\n // Sanitize JSON body to prevent Unicode escape sequence errors\n const sanitizedBody = this.sanitizeJsonObject(params.body);\n\n // Serialize to JSON string first for an additional layer of protection\n // This ensures any problematic characters are properly escaped during JSON serialization\n const jsonString = JSON.stringify(sanitizedBody);\n\n // Use withEntityContext to set Entity RLS context before inserting\n // This ensures the log entry passes STRICT Entity RLS policy\n await this.withEntityContext(params.entityId, async (tx) => {\n await tx.insert(logTable).values({\n body: sql`${jsonString}::jsonb`,\n entityId: params.entityId,\n roomId: params.roomId,\n type: params.type,\n });\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n type: params.type,\n roomId: params.roomId,\n entityId: params.entityId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create log entry'\n );\n throw error;\n }\n });\n }\n\n /**\n * Sanitizes a JSON object by replacing problematic Unicode escape sequences\n * that could cause errors during JSON serialization/storage\n *\n * @param value - The value to sanitize\n * @returns The sanitized value\n */\n private sanitizeJsonObject(value: unknown, seen: WeakSet<object> = new WeakSet()): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (typeof value === 'string') {\n // Handle multiple cases that can cause PostgreSQL/PgLite JSON parsing errors:\n // 1. Remove null bytes (U+0000) which are not allowed in PostgreSQL text fields\n // 2. Escape single backslashes that might be interpreted as escape sequences\n // 3. Fix broken Unicode escape sequences (\\u not followed by 4 hex digits)\n return value\n .replace(/\\u0000/g, '') // Remove null bytes\n .replace(/\\\\(?![\"\\\\/bfnrtu])/g, '\\\\\\\\') // Escape single backslashes not part of valid escape sequences\n .replace(/\\\\u(?![0-9a-fA-F]{4})/g, '\\\\\\\\u'); // Fix malformed Unicode escape sequences\n }\n\n if (typeof value === 'object') {\n if (seen.has(value as object)) {\n return null;\n } else {\n seen.add(value as object);\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.sanitizeJsonObject(item, seen));\n } else {\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n // Also sanitize object keys\n const sanitizedKey =\n typeof key === 'string'\n ? key.replace(/\\u0000/g, '').replace(/\\\\u(?![0-9a-fA-F]{4})/g, '\\\\\\\\u')\n : key;\n result[sanitizedKey] = this.sanitizeJsonObject(val, seen);\n }\n return result;\n }\n }\n\n return value;\n }\n\n /**\n * Asynchronously retrieves logs from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving logs.\n * @param {UUID} params.entityId - The ID of the entity associated with the logs.\n * @param {UUID} [params.roomId] - The ID of the room associated with the logs.\n * @param {string} [params.type] - The type of the logs to retrieve.\n * @param {number} [params.count] - The maximum number of logs to retrieve.\n * @param {number} [params.offset] - The offset to retrieve logs from.\n * @returns {Promise<Log[]>} A Promise that resolves to an array of logs.\n */\n async getLogs(params: {\n entityId?: UUID;\n roomId?: UUID;\n type?: string;\n count?: number;\n offset?: number;\n }): Promise<Log[]> {\n const { entityId, roomId, type, count, offset } = params;\n\n // Use withEntityContext for RLS only when entityId is provided\n // Without entityId, bypass RLS to see all logs (for non-RLS mode)\n // Note: No WHERE filter on entityId - RLS handles access control automatically\n return this.withEntityContext(entityId ?? null, async (tx) => {\n const result = await tx\n .select()\n .from(logTable)\n .where(\n and(\n roomId ? eq(logTable.roomId, roomId) : undefined,\n type ? eq(logTable.type, type) : undefined\n )\n )\n .orderBy(desc(logTable.createdAt))\n .limit(count ?? 10)\n .offset(offset ?? 0);\n\n const logs = result.map((log) => ({\n ...log,\n id: log.id as UUID,\n entityId: log.entityId as UUID,\n roomId: log.roomId as UUID,\n type: log.type as string,\n body: log.body as LogBody,\n createdAt: new Date(log.createdAt as string | number | Date),\n }));\n\n if (logs.length === 0) return [];\n\n return logs;\n });\n }\n\n async getAgentRunSummaries(\n params: {\n limit?: number;\n roomId?: UUID;\n status?: RunStatus | 'all';\n from?: number;\n to?: number;\n entityId?: UUID;\n } = {}\n ): Promise<AgentRunSummaryResult> {\n const limit = Math.min(Math.max(params.limit ?? 20, 1), 100);\n const fromDate = typeof params.from === 'number' ? new Date(params.from) : undefined;\n const toDate = typeof params.to === 'number' ? new Date(params.to) : undefined;\n\n // Use withEntityContext for RLS when entityId is provided\n return this.withEntityContext(params.entityId ?? null, async (tx) => {\n const runMap = new Map<string, AgentRunSummary>();\n\n const conditions: SQL<unknown>[] = [\n eq(logTable.type, 'run_event'),\n sql`${logTable.body} ? 'runId'`,\n eq(roomTable.agentId, this.agentId),\n ];\n\n // Note: No WHERE filter on entityId - RLS handles access control automatically\n\n if (params.roomId) {\n conditions.push(eq(logTable.roomId, params.roomId));\n }\n if (fromDate) {\n conditions.push(gte(logTable.createdAt, fromDate));\n }\n if (toDate) {\n conditions.push(lte(logTable.createdAt, toDate));\n }\n\n const whereClause = and(...conditions);\n\n const eventLimit = Math.max(limit * 20, 200);\n\n const runEventRows = await tx\n .select({\n runId: sql<string>`(${logTable.body} ->> 'runId')`,\n status: sql<string | null>`(${logTable.body} ->> 'status')`,\n messageId: sql<string | null>`(${logTable.body} ->> 'messageId')`,\n rawBody: logTable.body,\n createdAt: logTable.createdAt,\n roomId: logTable.roomId,\n entityId: logTable.entityId,\n })\n .from(logTable)\n .innerJoin(roomTable, eq(roomTable.id, logTable.roomId))\n .where(whereClause)\n .orderBy(desc(logTable.createdAt))\n .limit(eventLimit);\n\n for (const row of runEventRows) {\n const runId = row.runId;\n if (!runId) continue;\n\n const summary: AgentRunSummary = runMap.get(runId) ?? {\n runId,\n status: 'started',\n startedAt: null,\n endedAt: null,\n durationMs: null,\n messageId: undefined,\n roomId: undefined,\n entityId: undefined,\n metadata: {},\n };\n\n if (!summary.messageId && row.messageId) {\n summary.messageId = row.messageId as UUID;\n }\n if (!summary.roomId && row.roomId) {\n summary.roomId = row.roomId as UUID;\n }\n if (!summary.entityId && row.entityId) {\n summary.entityId = row.entityId as UUID;\n }\n\n const body = row.rawBody as Record<string, unknown> | undefined;\n if (body && typeof body === 'object') {\n if (!summary.roomId && typeof body.roomId === 'string') {\n summary.roomId = body.roomId as UUID;\n }\n if (!summary.entityId && typeof body.entityId === 'string') {\n summary.entityId = body.entityId as UUID;\n }\n if (!summary.messageId && typeof body.messageId === 'string') {\n summary.messageId = body.messageId as UUID;\n }\n if (!summary.metadata || Object.keys(summary.metadata).length === 0) {\n const metadata = (body.metadata as Record<string, unknown> | undefined) ?? undefined;\n summary.metadata = metadata ? { ...metadata } : {};\n }\n }\n\n const createdAt = row.createdAt instanceof Date ? row.createdAt : new Date(row.createdAt);\n const timestamp = createdAt.getTime();\n const eventStatus =\n (row.status as RunStatus | undefined) ?? (body?.status as RunStatus | undefined);\n\n if (eventStatus === 'started') {\n summary.startedAt =\n summary.startedAt === null ? timestamp : Math.min(summary.startedAt, timestamp);\n } else if (\n eventStatus === 'completed' ||\n eventStatus === 'timeout' ||\n eventStatus === 'error'\n ) {\n summary.status = eventStatus;\n summary.endedAt = timestamp;\n if (summary.startedAt !== null) {\n summary.durationMs = Math.max(timestamp - summary.startedAt, 0);\n }\n }\n\n runMap.set(runId, summary);\n }\n\n let runs = Array.from(runMap.values());\n if (params.status && params.status !== 'all') {\n runs = runs.filter((run) => run.status === params.status);\n }\n\n runs.sort((a, b) => (b.startedAt ?? 0) - (a.startedAt ?? 0));\n\n const total = runs.length;\n const limitedRuns = runs.slice(0, limit);\n const hasMore = total > limit;\n\n const runCounts = new Map<string, AgentRunCounts>();\n for (const run of limitedRuns) {\n runCounts.set(run.runId, { actions: 0, modelCalls: 0, errors: 0, evaluators: 0 });\n }\n\n const runIds = limitedRuns.map((run) => run.runId).filter(Boolean);\n\n if (runIds.length > 0) {\n const runIdArray = sql`array[${sql.join(\n runIds.map((id) => sql`${id}`),\n sql`, `\n )}]::text[]`;\n\n const actionSummary = await this.db.execute(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*)::int as \"actions\",\n SUM(CASE WHEN COALESCE(body->'result'->>'success', 'true') = 'false' THEN 1 ELSE 0 END)::int as \"errors\",\n SUM(COALESCE((body->>'promptCount')::int, 0))::int as \"modelCalls\"\n FROM ${logTable}\n WHERE type = 'action'\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const actionRows = (actionSummary.rows ?? []) as Array<{\n runId: string;\n actions: number | string;\n errors: number | string;\n modelCalls: number | string;\n }>;\n\n for (const row of actionRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.actions += Number(row.actions ?? 0);\n counts.errors += Number(row.errors ?? 0);\n counts.modelCalls += Number(row.modelCalls ?? 0);\n }\n\n const evaluatorSummary = await this.db.execute(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*)::int as \"evaluators\"\n FROM ${logTable}\n WHERE type = 'evaluator'\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const evaluatorRows = (evaluatorSummary.rows ?? []) as Array<{\n runId: string;\n evaluators: number | string;\n }>;\n\n for (const row of evaluatorRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.evaluators += Number(row.evaluators ?? 0);\n }\n\n const genericSummary = await this.db.execute(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*) FILTER (WHERE type LIKE 'useModel:%')::int as \"modelLogs\",\n COUNT(*) FILTER (WHERE type = 'embedding_event' AND body->>'status' = 'failed')::int as \"embeddingErrors\"\n FROM ${logTable}\n WHERE (type LIKE 'useModel:%' OR type = 'embedding_event')\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const genericRows = (genericSummary.rows ?? []) as Array<{\n runId: string;\n modelLogs: number | string;\n embeddingErrors: number | string;\n }>;\n\n for (const row of genericRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.modelCalls += Number(row.modelLogs ?? 0);\n counts.errors += Number(row.embeddingErrors ?? 0);\n }\n }\n\n for (const run of limitedRuns) {\n run.counts = runCounts.get(run.runId) ?? {\n actions: 0,\n modelCalls: 0,\n errors: 0,\n evaluators: 0,\n };\n }\n\n return {\n runs: limitedRuns,\n total,\n hasMore,\n } satisfies AgentRunSummaryResult;\n });\n }\n\n /**\n * Asynchronously deletes a log from the database based on the provided parameters.\n * @param {UUID} logId - The ID of the log to delete.\n * @returns {Promise<void>} A Promise that resolves when the log is deleted.\n */\n async deleteLog(logId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(logTable).where(eq(logTable.id, logId));\n });\n }\n\n /**\n * Asynchronously searches for memories in the database based on the provided parameters.\n * @param {Object} params - The parameters for searching for memories.\n * @param {string} params.tableName - The name of the table to search for memories in.\n * @param {number[]} params.embedding - The embedding to search for.\n * @param {number} [params.match_threshold] - The threshold for the cosine distance.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.query] - Optional query string for potential reranking.\n * @param {UUID} [params.roomId] - Optional room ID to filter by.\n * @param {UUID} [params.worldId] - Optional world ID to filter by.\n * @param {UUID} [params.entityId] - Optional entity ID to filter by.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async searchMemories(params: {\n tableName: string;\n embedding: number[];\n match_threshold?: number;\n count?: number;\n unique?: boolean;\n query?: string;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n }): Promise<Memory[]> {\n return await this.searchMemoriesByEmbedding(params.embedding, {\n match_threshold: params.match_threshold,\n count: params.count,\n // Pass direct scope fields down\n roomId: params.roomId,\n worldId: params.worldId,\n entityId: params.entityId,\n unique: params.unique,\n tableName: params.tableName,\n });\n }\n\n /**\n * Asynchronously searches for memories in the database based on the provided parameters.\n * @param {number[]} embedding - The embedding to search for.\n * @param {Object} params - The parameters for searching for memories.\n * @param {number} [params.match_threshold] - The threshold for the cosine distance.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {UUID} [params.roomId] - Optional room ID to filter by.\n * @param {UUID} [params.worldId] - Optional world ID to filter by.\n * @param {UUID} [params.entityId] - Optional entity ID to filter by.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.tableName] - The name of the table to search for memories in.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async searchMemoriesByEmbedding(\n embedding: number[],\n params: {\n match_threshold?: number;\n count?: number;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n unique?: boolean;\n tableName: string;\n }\n ): Promise<Memory[]> {\n return this.withDatabase(async () => {\n const cleanVector = embedding.map((n) => (Number.isFinite(n) ? Number(n.toFixed(6)) : 0));\n\n const similarity = sql<number>`1 - (${cosineDistance(\n embeddingTable[this.embeddingDimension],\n cleanVector\n )})`;\n\n const conditions = [eq(memoryTable.type, params.tableName)];\n\n if (params.unique) {\n conditions.push(eq(memoryTable.unique, true));\n }\n\n conditions.push(eq(memoryTable.agentId, this.agentId));\n\n // Add filters based on direct params\n if (params.roomId) {\n conditions.push(eq(memoryTable.roomId, params.roomId));\n }\n if (params.worldId) {\n conditions.push(eq(memoryTable.worldId, params.worldId));\n }\n if (params.entityId) {\n conditions.push(eq(memoryTable.entityId, params.entityId));\n }\n\n if (params.match_threshold) {\n conditions.push(gte(similarity, params.match_threshold));\n }\n\n const results = await this.db\n .select({\n memory: memoryTable,\n similarity,\n embedding: embeddingTable[this.embeddingDimension],\n })\n .from(embeddingTable)\n .innerJoin(memoryTable, eq(memoryTable.id, embeddingTable.memoryId))\n .where(and(...conditions))\n .orderBy(desc(similarity))\n .limit(params.count ?? 10);\n\n return results.map((row) => ({\n id: row.memory.id as UUID,\n type: row.memory.type,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n worldId: row.memory.worldId as UUID | undefined, // Include worldId\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ?? undefined,\n similarity: row.similarity,\n }));\n });\n }\n\n /**\n * Asynchronously creates a new memory in the database.\n * @param {Memory & { metadata?: MemoryMetadata }} memory - The memory object to create.\n * @param {string} tableName - The name of the table to create the memory in.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created memory.\n */\n async createMemory(\n memory: Memory & { metadata?: MemoryMetadata },\n tableName: string\n ): Promise<UUID> {\n const memoryId = memory.id ?? (v4() as UUID);\n\n const existing = await this.getMemoryById(memoryId);\n if (existing) {\n return memoryId;\n }\n\n // only do costly check if we need to\n if (memory.unique === undefined) {\n memory.unique = true; // set default\n if (memory.embedding && Array.isArray(memory.embedding)) {\n const similarMemories = await this.searchMemoriesByEmbedding(memory.embedding, {\n tableName,\n // Use the scope fields from the memory object for similarity check\n roomId: memory.roomId,\n worldId: memory.worldId,\n entityId: memory.entityId,\n match_threshold: 0.95,\n count: 1,\n });\n memory.unique = similarMemories.length === 0;\n }\n }\n\n // Ensure we always pass a JSON string to the SQL placeholder – if we pass an\n // object directly PG sees `[object Object]` and fails the `::jsonb` cast.\n const contentToInsert =\n typeof memory.content === 'string' ? memory.content : JSON.stringify(memory.content ?? {});\n\n const metadataToInsert =\n typeof memory.metadata === 'string' ? memory.metadata : JSON.stringify(memory.metadata ?? {});\n\n // Use withEntityContext to set Entity RLS context if needed\n // This delegates to the concrete adapter implementation (PostgreSQL or PGLite)\n await this.withEntityContext(memory.entityId, async (tx) => {\n await tx.insert(memoryTable).values([\n {\n id: memoryId,\n type: tableName,\n content: sql`${contentToInsert}::jsonb`,\n metadata: sql`${metadataToInsert}::jsonb`,\n entityId: memory.entityId,\n roomId: memory.roomId,\n worldId: memory.worldId, // Include worldId\n agentId: memory.agentId || this.agentId,\n unique: memory.unique,\n createdAt: memory.createdAt ? new Date(memory.createdAt) : new Date(),\n },\n ]);\n\n if (memory.embedding && Array.isArray(memory.embedding)) {\n const embeddingValues: Record<string, unknown> = {\n id: v4(),\n memoryId: memoryId,\n createdAt: memory.createdAt ? new Date(memory.createdAt) : new Date(),\n };\n\n const cleanVector = memory.embedding.map((n) =>\n Number.isFinite(n) ? Number(n.toFixed(6)) : 0\n );\n\n embeddingValues[this.embeddingDimension] = cleanVector;\n\n await tx.insert(embeddingTable).values([embeddingValues]);\n }\n });\n\n return memoryId;\n }\n\n /**\n * Updates an existing memory in the database.\n * @param memory The memory object with updated content and optional embedding\n * @returns Promise resolving to boolean indicating success\n */\n async updateMemory(\n memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata }\n ): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n await this.db.transaction(async (tx) => {\n // Update memory content if provided\n if (memory.content) {\n const contentToUpdate =\n typeof memory.content === 'string'\n ? memory.content\n : JSON.stringify(memory.content ?? {});\n\n const metadataToUpdate =\n typeof memory.metadata === 'string'\n ? memory.metadata\n : JSON.stringify(memory.metadata ?? {});\n\n await tx\n .update(memoryTable)\n .set({\n content: sql`${contentToUpdate}::jsonb`,\n ...(memory.metadata && { metadata: sql`${metadataToUpdate}::jsonb` }),\n })\n .where(eq(memoryTable.id, memory.id));\n } else if (memory.metadata) {\n // Update only metadata if content is not provided\n const metadataToUpdate =\n typeof memory.metadata === 'string'\n ? memory.metadata\n : JSON.stringify(memory.metadata ?? {});\n\n await tx\n .update(memoryTable)\n .set({\n metadata: sql`${metadataToUpdate}::jsonb`,\n })\n .where(eq(memoryTable.id, memory.id));\n }\n\n // Update embedding if provided\n if (memory.embedding && Array.isArray(memory.embedding)) {\n const cleanVector = memory.embedding.map((n) =>\n Number.isFinite(n) ? Number(n.toFixed(6)) : 0\n );\n\n // Check if embedding exists\n const existingEmbedding = await tx\n .select({ id: embeddingTable.id })\n .from(embeddingTable)\n .where(eq(embeddingTable.memoryId, memory.id))\n .limit(1);\n\n if (existingEmbedding.length > 0) {\n // Update existing embedding\n const updateValues: Record<string, unknown> = {};\n updateValues[this.embeddingDimension] = cleanVector;\n\n await tx\n .update(embeddingTable)\n .set(updateValues)\n .where(eq(embeddingTable.memoryId, memory.id));\n } else {\n // Create new embedding\n const embeddingValues: Record<string, unknown> = {\n id: v4(),\n memoryId: memory.id,\n };\n embeddingValues[this.embeddingDimension] = cleanVector;\n\n await tx.insert(embeddingTable).values([embeddingValues]);\n }\n }\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n memoryId: memory.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to update memory'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously deletes a memory from the database based on the provided parameters.\n * @param {UUID} memoryId - The ID of the memory to delete.\n * @returns {Promise<void>} A Promise that resolves when the memory is deleted.\n */\n async deleteMemory(memoryId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // See if there are any fragments that we need to delete\n await this.deleteMemoryFragments(tx, memoryId);\n\n // Then delete the embedding for the main memory\n await tx.delete(embeddingTable).where(eq(embeddingTable.memoryId, memoryId));\n\n // Finally delete the memory itself\n await tx.delete(memoryTable).where(eq(memoryTable.id, memoryId));\n });\n });\n }\n\n /**\n * Asynchronously deletes multiple memories from the database in a single batch operation.\n * @param {UUID[]} memoryIds - An array of UUIDs of the memories to delete.\n * @returns {Promise<void>} A Promise that resolves when all memories are deleted.\n */\n async deleteManyMemories(memoryIds: UUID[]): Promise<void> {\n if (memoryIds.length === 0) {\n return;\n }\n\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // Process in smaller batches to avoid query size limits\n const BATCH_SIZE = 100;\n for (let i = 0; i < memoryIds.length; i += BATCH_SIZE) {\n const batch = memoryIds.slice(i, i + BATCH_SIZE);\n\n // Delete any fragments for document memories in this batch\n await Promise.all(\n batch.map(async (memoryId) => {\n await this.deleteMemoryFragments(tx, memoryId);\n })\n );\n\n // Delete embeddings for the batch\n await tx.delete(embeddingTable).where(inArray(embeddingTable.memoryId, batch));\n\n // Delete the memories themselves\n await tx.delete(memoryTable).where(inArray(memoryTable.id, batch));\n }\n });\n });\n }\n\n /**\n * Deletes all memory fragments that reference a specific document memory\n * @param tx The database transaction\n * @param documentId The UUID of the document memory whose fragments should be deleted\n * @private\n */\n private async deleteMemoryFragments(tx: DrizzleDatabase, documentId: UUID): Promise<void> {\n const fragmentsToDelete = await this.getMemoryFragments(tx, documentId);\n\n if (fragmentsToDelete.length > 0) {\n const fragmentIds = fragmentsToDelete.map((f) => f.id) as UUID[];\n\n // Delete embeddings for fragments\n await tx.delete(embeddingTable).where(inArray(embeddingTable.memoryId, fragmentIds));\n\n // Delete the fragments\n await tx.delete(memoryTable).where(inArray(memoryTable.id, fragmentIds));\n }\n }\n\n /**\n * Retrieves all memory fragments that reference a specific document memory\n * @param tx The database transaction\n * @param documentId The UUID of the document memory whose fragments should be retrieved\n * @returns An array of memory fragments\n * @private\n */\n private async getMemoryFragments(tx: DrizzleDatabase, documentId: UUID): Promise<{ id: UUID }[]> {\n const fragments = await tx\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(\n and(\n eq(memoryTable.agentId, this.agentId),\n sql`${memoryTable.metadata}->>'documentId' = ${documentId}`\n )\n );\n\n return fragments.map((f) => ({ id: f.id as UUID }));\n }\n\n /**\n * Asynchronously deletes all memories from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to delete memories from.\n * @param {string} tableName - The name of the table to delete memories from.\n * @returns {Promise<void>} A Promise that resolves when the memories are deleted.\n */\n async deleteAllMemories(roomId: UUID, tableName: string): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // 1) fetch all memory IDs for this room + table\n const rows = await tx\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(and(eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)));\n\n const ids = rows.map((r) => r.id);\n logger.debug(\n { src: 'plugin:sql', roomId, tableName, memoryCount: ids.length },\n 'Deleting all memories'\n );\n\n if (ids.length === 0) {\n return;\n }\n\n // 2) delete any fragments for \"document\" memories & their embeddings\n await Promise.all(\n ids.map(async (memoryId) => {\n await this.deleteMemoryFragments(tx, memoryId);\n await tx.delete(embeddingTable).where(eq(embeddingTable.memoryId, memoryId));\n })\n );\n\n // 3) delete the memories themselves\n await tx\n .delete(memoryTable)\n .where(and(eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)));\n });\n });\n }\n\n /**\n * Asynchronously counts the number of memories in the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to count memories in.\n * @param {boolean} [unique] - Whether to count unique memories only.\n * @param {string} [tableName] - The name of the table to count memories in.\n * @returns {Promise<number>} A Promise that resolves to the number of memories.\n */\n async countMemories(roomId: UUID, unique = true, tableName = ''): Promise<number> {\n if (!tableName) throw new Error('tableName is required');\n\n return this.withDatabase(async () => {\n const conditions = [eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)];\n\n if (unique) {\n conditions.push(eq(memoryTable.unique, true));\n }\n\n const result = await this.db\n .select({ count: sql<number>`count(*)` })\n .from(memoryTable)\n .where(and(...conditions));\n\n return Number(result[0]?.count ?? 0);\n });\n }\n\n /**\n * Asynchronously retrieves rooms from the database based on the provided parameters.\n * @param {UUID[]} roomIds - The IDs of the rooms to retrieve.\n * @returns {Promise<Room[] | null>} A Promise that resolves to the rooms if found, null otherwise.\n */\n async getRoomsByIds(roomIds: UUID[]): Promise<Room[] | null> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({\n id: roomTable.id,\n name: roomTable.name, // Added name\n channelId: roomTable.channelId,\n agentId: roomTable.agentId,\n messageServerId: roomTable.messageServerId,\n worldId: roomTable.worldId,\n type: roomTable.type,\n source: roomTable.source,\n metadata: roomTable.metadata, // Added metadata\n })\n .from(roomTable)\n .where(and(inArray(roomTable.id, roomIds), eq(roomTable.agentId, this.agentId)));\n\n // Map the result to properly typed Room objects\n const rooms = result.map((room) => ({\n ...room,\n id: room.id as UUID,\n name: room.name ?? undefined,\n agentId: room.agentId as UUID,\n messageServerId: room.messageServerId as UUID,\n serverId: room.messageServerId as UUID, // Backward compatibility alias\n worldId: room.worldId as UUID,\n channelId: room.channelId as UUID,\n type: room.type as ChannelType,\n metadata: room.metadata as RoomMetadata,\n }));\n\n return rooms;\n });\n }\n\n /**\n * Asynchronously retrieves all rooms from the database based on the provided parameters.\n * @param {UUID} worldId - The ID of the world to retrieve rooms from.\n * @returns {Promise<Room[]>} A Promise that resolves to an array of rooms.\n */\n async getRoomsByWorld(worldId: UUID): Promise<Room[]> {\n return this.withDatabase(async () => {\n const result = await this.db.select().from(roomTable).where(eq(roomTable.worldId, worldId));\n const rooms = result.map((room) => ({\n ...room,\n id: room.id as UUID,\n name: room.name ?? undefined,\n agentId: room.agentId as UUID,\n messageServerId: room.messageServerId as UUID,\n serverId: room.messageServerId as UUID, // Backward compatibility alias\n worldId: room.worldId as UUID,\n channelId: room.channelId as UUID,\n type: room.type as ChannelType,\n metadata: room.metadata as RoomMetadata,\n }));\n return rooms;\n });\n }\n\n /**\n * Asynchronously updates a room in the database based on the provided parameters.\n * @param {Room} room - The room object to update.\n * @returns {Promise<void>} A Promise that resolves when the room is updated.\n */\n async updateRoom(room: Room): Promise<void> {\n return this.withDatabase(async () => {\n await this.db\n .update(roomTable)\n .set({ ...room, agentId: this.agentId })\n .where(eq(roomTable.id, room.id));\n });\n }\n\n /**\n * Asynchronously creates a new room in the database based on the provided parameters.\n * @param {Room} room - The room object to create.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created room.\n */\n async createRooms(rooms: Room[]): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const roomsWithIds = rooms.map((room) => ({\n ...room,\n agentId: this.agentId,\n id: room.id || v4(), // ensure each room has a unique ID\n }));\n\n const insertedRooms = await this.db\n .insert(roomTable)\n .values(roomsWithIds)\n .onConflictDoNothing()\n .returning();\n const insertedIds = insertedRooms.map((r) => r.id as UUID);\n return insertedIds;\n });\n }\n\n /**\n * Asynchronously deletes a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to delete.\n * @returns {Promise<void>} A Promise that resolves when the room is deleted.\n */\n async deleteRoom(roomId: UUID): Promise<void> {\n if (!roomId) throw new Error('Room ID is required');\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n await tx.delete(roomTable).where(eq(roomTable.id, roomId));\n });\n });\n }\n\n /**\n * Asynchronously retrieves all rooms for a participant from the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to retrieve rooms for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of room IDs.\n */\n async getRoomsForParticipant(entityId: UUID): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({ roomId: participantTable.roomId })\n .from(participantTable)\n .innerJoin(roomTable, eq(participantTable.roomId, roomTable.id))\n .where(and(eq(participantTable.entityId, entityId), eq(roomTable.agentId, this.agentId)));\n\n return result.map((row) => row.roomId as UUID);\n });\n }\n\n /**\n * Asynchronously retrieves all rooms for a list of participants from the database based on the provided parameters.\n * @param {UUID[]} entityIds - The IDs of the entities to retrieve rooms for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of room IDs.\n */\n async getRoomsForParticipants(entityIds: UUID[]): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .selectDistinct({ roomId: participantTable.roomId })\n .from(participantTable)\n .innerJoin(roomTable, eq(participantTable.roomId, roomTable.id))\n .where(\n and(inArray(participantTable.entityId, entityIds), eq(roomTable.agentId, this.agentId))\n );\n\n return result.map((row) => row.roomId as UUID);\n });\n }\n\n /**\n * Asynchronously adds a participant to a room in the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to add to the room.\n * @param {UUID} roomId - The ID of the room to add the entity to.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the participant was added successfully.\n */\n async addParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n await this.db\n .insert(participantTable)\n .values({\n entityId,\n roomId,\n agentId: this.agentId,\n })\n .onConflictDoNothing();\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId,\n roomId,\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to add participant to room'\n );\n return false;\n }\n });\n }\n\n async addParticipantsRoom(entityIds: UUID[], roomId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n const values = entityIds.map((id) => ({\n entityId: id,\n roomId,\n agentId: this.agentId,\n }));\n await this.db.insert(participantTable).values(values).onConflictDoNothing().execute();\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n roomId,\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to add participants to room'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously removes a participant from a room in the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to remove from the room.\n * @param {UUID} roomId - The ID of the room to remove the entity from.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the participant was removed successfully.\n */\n async removeParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n const result = await this.db.transaction(async (tx) => {\n return await tx\n .delete(participantTable)\n .where(\n and(eq(participantTable.entityId, entityId), eq(participantTable.roomId, roomId))\n )\n .returning();\n });\n\n const removed = result.length > 0;\n return removed;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId,\n roomId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to remove participant from room'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously retrieves all participants for an entity from the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to retrieve participants for.\n * @returns {Promise<Participant[]>} A Promise that resolves to an array of participants.\n */\n async getParticipantsForEntity(entityId: UUID): Promise<Participant[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({\n id: participantTable.id,\n entityId: participantTable.entityId,\n roomId: participantTable.roomId,\n })\n .from(participantTable)\n .where(eq(participantTable.entityId, entityId));\n\n const entities = await this.getEntitiesByIds([entityId]);\n\n if (!entities || !entities.length) {\n return [];\n }\n\n return result.map((row) => ({\n id: row.id as UUID,\n entity: entities[0],\n }));\n });\n }\n\n /**\n * Asynchronously retrieves all participants for a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to retrieve participants for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of entity IDs.\n */\n async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({ entityId: participantTable.entityId })\n .from(participantTable)\n .where(eq(participantTable.roomId, roomId));\n\n return result.map((row) => row.entityId as UUID);\n });\n }\n\n /**\n * Check if an entity is a participant in a specific room/channel.\n * More efficient than getParticipantsForRoom when only checking membership.\n * @param {UUID} roomId - The ID of the room to check.\n * @param {UUID} entityId - The ID of the entity to check.\n * @returns {Promise<boolean>} A Promise that resolves to true if entity is a participant.\n */\n async isRoomParticipant(roomId: UUID, entityId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(participantTable)\n .where(and(eq(participantTable.roomId, roomId), eq(participantTable.entityId, entityId)))\n .limit(1);\n\n return result.length > 0;\n });\n }\n\n /**\n * Asynchronously retrieves the user state for a participant in a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to retrieve the participant's user state for.\n * @param {UUID} entityId - The ID of the entity to retrieve the user state for.\n * @returns {Promise<\"FOLLOWED\" | \"MUTED\" | null>} A Promise that resolves to the participant's user state.\n */\n async getParticipantUserState(\n roomId: UUID,\n entityId: UUID\n ): Promise<'FOLLOWED' | 'MUTED' | null> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({ roomState: participantTable.roomState })\n .from(participantTable)\n .where(\n and(\n eq(participantTable.roomId, roomId),\n eq(participantTable.entityId, entityId),\n eq(participantTable.agentId, this.agentId)\n )\n )\n .limit(1);\n\n return (result[0]?.roomState as 'FOLLOWED' | 'MUTED' | null) ?? null;\n });\n }\n\n /**\n * Asynchronously sets the user state for a participant in a room in the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to set the participant's user state for.\n * @param {UUID} entityId - The ID of the entity to set the user state for.\n * @param {string} state - The state to set the participant's user state to.\n * @returns {Promise<void>} A Promise that resolves when the participant's user state is set.\n */\n async setParticipantUserState(\n roomId: UUID,\n entityId: UUID,\n state: 'FOLLOWED' | 'MUTED' | null\n ): Promise<void> {\n return this.withDatabase(async () => {\n try {\n await this.db.transaction(async (tx) => {\n await tx\n .update(participantTable)\n .set({ roomState: state })\n .where(\n and(\n eq(participantTable.roomId, roomId),\n eq(participantTable.entityId, entityId),\n eq(participantTable.agentId, this.agentId)\n )\n );\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n roomId,\n entityId,\n state,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to set participant follow state'\n );\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously creates a new relationship in the database based on the provided parameters.\n * @param {Object} params - The parameters for creating a new relationship.\n * @param {UUID} params.sourceEntityId - The ID of the source entity.\n * @param {UUID} params.targetEntityId - The ID of the target entity.\n * @param {string[]} [params.tags] - The tags for the relationship.\n * @param {Object} [params.metadata] - The metadata for the relationship.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the relationship was created successfully.\n */\n async createRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n tags?: string[];\n metadata?: { [key: string]: unknown };\n }): Promise<boolean> {\n return this.withDatabase(async () => {\n const id = v4();\n const saveParams = {\n id,\n sourceEntityId: params.sourceEntityId,\n targetEntityId: params.targetEntityId,\n agentId: this.agentId,\n tags: params.tags || [],\n metadata: params.metadata || {},\n };\n try {\n await this.db.insert(relationshipTable).values(saveParams);\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n saveParams,\n },\n 'Error creating relationship'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously updates an existing relationship in the database based on the provided parameters.\n * @param {Relationship} relationship - The relationship object to update.\n * @returns {Promise<void>} A Promise that resolves when the relationship is updated.\n */\n async updateRelationship(relationship: Relationship): Promise<void> {\n return this.withDatabase(async () => {\n try {\n await this.db\n .update(relationshipTable)\n .set({\n tags: relationship.tags || [],\n metadata: relationship.metadata || {},\n })\n .where(eq(relationshipTable.id, relationship.id));\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n relationshipId: relationship.id,\n },\n 'Error updating relationship'\n );\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously retrieves a relationship from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving a relationship.\n * @param {UUID} params.sourceEntityId - The ID of the source entity.\n * @param {UUID} params.targetEntityId - The ID of the target entity.\n * @returns {Promise<Relationship | null>} A Promise that resolves to the relationship if found, null otherwise.\n */\n async getRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n }): Promise<Relationship | null> {\n return this.withDatabase(async () => {\n const { sourceEntityId, targetEntityId } = params;\n const result = await this.db\n .select()\n .from(relationshipTable)\n .where(\n and(\n eq(relationshipTable.sourceEntityId, sourceEntityId),\n eq(relationshipTable.targetEntityId, targetEntityId)\n )\n );\n if (result.length === 0) return null;\n const relationship = result[0];\n return {\n ...relationship,\n id: relationship.id as UUID,\n sourceEntityId: relationship.sourceEntityId as UUID,\n targetEntityId: relationship.targetEntityId as UUID,\n agentId: relationship.agentId as UUID,\n tags: relationship.tags ?? [],\n metadata: (relationship.metadata as Record<string, unknown>) ?? {},\n createdAt: relationship.createdAt.toISOString(),\n };\n });\n }\n\n /**\n * Asynchronously retrieves relationships from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving relationships.\n * @param {UUID} params.entityId - The ID of the entity to retrieve relationships for.\n * @param {string[]} [params.tags] - The tags to filter relationships by.\n * @returns {Promise<Relationship[]>} A Promise that resolves to an array of relationships.\n */\n async getRelationships(params: { entityId: UUID; tags?: string[] }): Promise<Relationship[]> {\n return this.withDatabase(async () => {\n const { entityId, tags } = params;\n\n let query: SQL;\n\n if (tags && tags.length > 0) {\n query = sql`\n SELECT * FROM ${relationshipTable}\n WHERE (${relationshipTable.sourceEntityId} = ${entityId} OR ${relationshipTable.targetEntityId} = ${entityId})\n AND ${relationshipTable.tags} && CAST(ARRAY[${sql.join(tags, sql`, `)}] AS text[])\n `;\n } else {\n query = sql`\n SELECT * FROM ${relationshipTable}\n WHERE ${relationshipTable.sourceEntityId} = ${entityId} OR ${relationshipTable.targetEntityId} = ${entityId}\n `;\n }\n\n const result = await this.db.execute(query);\n\n return result.rows.map((relationship: Record<string, unknown>) => ({\n ...relationship,\n id: relationship.id as UUID,\n sourceEntityId: (relationship.source_entity_id || relationship.sourceEntityId) as UUID,\n targetEntityId: (relationship.target_entity_id || relationship.targetEntityId) as UUID,\n agentId: (relationship.agent_id || relationship.agentId) as UUID,\n tags: relationship.tags ?? [],\n metadata: (relationship.metadata as Record<string, unknown>) ?? {},\n createdAt:\n relationship.created_at || relationship.createdAt\n ? (relationship.created_at || relationship.createdAt) instanceof Date\n ? ((relationship.created_at || relationship.createdAt) as Date).toISOString()\n : new Date(\n (relationship.created_at as string) || (relationship.createdAt as string)\n ).toISOString()\n : new Date().toISOString(),\n }));\n });\n }\n\n /**\n * Asynchronously retrieves a cache value from the database based on the provided key.\n * @param {string} key - The key to retrieve the cache value for.\n * @returns {Promise<T | undefined>} A Promise that resolves to the cache value if found, undefined otherwise.\n */\n async getCache<T>(key: string): Promise<T | undefined> {\n return this.withDatabase(async () => {\n try {\n const result = await this.db\n .select({ value: cacheTable.value })\n .from(cacheTable)\n .where(and(eq(cacheTable.agentId, this.agentId), eq(cacheTable.key, key)))\n .limit(1);\n\n if (result && result.length > 0 && result[0]) {\n return result[0].value as T | undefined;\n }\n\n return undefined;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error fetching cache'\n );\n return undefined;\n }\n });\n }\n\n /**\n * Asynchronously sets a cache value in the database based on the provided key and value.\n * @param {string} key - The key to set the cache value for.\n * @param {T} value - The value to set in the cache.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the cache value was set successfully.\n */\n async setCache<T>(key: string, value: T): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n await this.db\n .insert(cacheTable)\n .values({\n key: key,\n agentId: this.agentId,\n value: value,\n })\n .onConflictDoUpdate({\n target: [cacheTable.key, cacheTable.agentId],\n set: {\n value: value,\n },\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error setting cache'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously deletes a cache value from the database based on the provided key.\n * @param {string} key - The key to delete the cache value for.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the cache value was deleted successfully.\n */\n async deleteCache(key: string): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n await this.db.transaction(async (tx) => {\n await tx\n .delete(cacheTable)\n .where(and(eq(cacheTable.agentId, this.agentId), eq(cacheTable.key, key)));\n });\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error deleting cache'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously creates a new world in the database based on the provided parameters.\n * @param {World} world - The world object to create.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created world.\n */\n async createWorld(world: World): Promise<UUID> {\n return this.withDatabase(async () => {\n const newWorldId = world.id || v4();\n await this.db.insert(worldTable).values({\n ...world,\n id: newWorldId,\n name: world.name || '',\n });\n return newWorldId;\n });\n }\n\n /**\n * Asynchronously retrieves a world from the database based on the provided parameters.\n * @param {UUID} id - The ID of the world to retrieve.\n * @returns {Promise<World | null>} A Promise that resolves to the world if found, null otherwise.\n */\n async getWorld(id: UUID): Promise<World | null> {\n return this.withDatabase(async () => {\n const result = await this.db.select().from(worldTable).where(eq(worldTable.id, id));\n return result.length > 0 ? (result[0] as World) : null;\n });\n }\n\n /**\n * Asynchronously retrieves all worlds from the database based on the provided parameters.\n * @returns {Promise<World[]>} A Promise that resolves to an array of worlds.\n */\n async getAllWorlds(): Promise<World[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(worldTable)\n .where(eq(worldTable.agentId, this.agentId));\n return result as World[];\n });\n }\n\n /**\n * Asynchronously updates an existing world in the database based on the provided parameters.\n * @param {World} world - The world object to update.\n * @returns {Promise<void>} A Promise that resolves when the world is updated.\n */\n async updateWorld(world: World): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.update(worldTable).set(world).where(eq(worldTable.id, world.id));\n });\n }\n\n /**\n * Asynchronously removes a world from the database based on the provided parameters.\n * @param {UUID} id - The ID of the world to remove.\n * @returns {Promise<void>} A Promise that resolves when the world is removed.\n */\n async removeWorld(id: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(worldTable).where(eq(worldTable.id, id));\n });\n }\n\n /**\n * Asynchronously creates a new task in the database based on the provided parameters.\n * @param {Task} task - The task object to create.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created task.\n */\n async createTask(task: Task): Promise<UUID> {\n if (!task.worldId) {\n throw new Error('worldId is required');\n }\n return this.withRetry(async () => {\n return this.withDatabase(async () => {\n const now = new Date();\n const metadata = task.metadata || {};\n\n const values = {\n id: task.id as UUID,\n name: task.name,\n description: task.description,\n roomId: task.roomId as UUID,\n worldId: task.worldId as UUID,\n tags: task.tags,\n metadata: metadata,\n createdAt: now,\n updatedAt: now,\n agentId: this.agentId as UUID,\n };\n\n const result = await this.db.insert(taskTable).values(values).returning();\n\n return result[0].id as UUID;\n });\n });\n }\n\n /**\n * Asynchronously retrieves tasks based on specified parameters.\n * @param params Object containing optional roomId, tags, and entityId to filter tasks\n * @returns Promise resolving to an array of Task objects\n */\n async getTasks(params: {\n roomId?: UUID;\n tags?: string[];\n entityId?: UUID; // Added entityId parameter\n }): Promise<Task[]> {\n return this.withRetry(async () => {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(\n and(\n eq(taskTable.agentId, this.agentId),\n ...(params.roomId ? [eq(taskTable.roomId, params.roomId)] : []),\n ...(params.tags && params.tags.length > 0\n ? [\n sql`${taskTable.tags} @> ARRAY[${sql.join(\n params.tags.map((t) => sql`${t}`),\n sql`, `\n )}]::text[]`,\n ]\n : [])\n )\n );\n\n return result.map((row) => ({\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: row.metadata as TaskMetadata,\n }));\n });\n });\n }\n\n /**\n * Asynchronously retrieves a specific task by its name.\n * @param name The name of the task to retrieve\n * @returns Promise resolving to the Task object if found, null otherwise\n */\n async getTasksByName(name: string): Promise<Task[]> {\n return this.withRetry(async () => {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(and(eq(taskTable.name, name), eq(taskTable.agentId, this.agentId)));\n\n return result.map((row) => ({\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: (row.metadata || {}) as TaskMetadata,\n }));\n });\n });\n }\n\n /**\n * Asynchronously retrieves a specific task by its ID.\n * @param id The UUID of the task to retrieve\n * @returns Promise resolving to the Task object if found, null otherwise\n */\n async getTask(id: UUID): Promise<Task | null> {\n return this.withRetry(async () => {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(and(eq(taskTable.id, id), eq(taskTable.agentId, this.agentId)))\n .limit(1);\n\n if (result.length === 0) {\n return null;\n }\n\n const row = result[0];\n return {\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: (row.metadata || {}) as TaskMetadata,\n };\n });\n });\n }\n\n /**\n * Asynchronously updates an existing task in the database.\n * @param id The UUID of the task to update\n * @param task Partial Task object containing the fields to update\n * @returns Promise resolving when the update is complete\n */\n async updateTask(id: UUID, task: Partial<Task>): Promise<void> {\n await this.withRetry(async () => {\n await this.withDatabase(async () => {\n const updateValues: Partial<Task> = {};\n\n // Add fields to update if they exist in the partial task object\n if (task.name !== undefined) updateValues.name = task.name;\n if (task.description !== undefined) updateValues.description = task.description;\n if (task.roomId !== undefined) updateValues.roomId = task.roomId;\n if (task.worldId !== undefined) updateValues.worldId = task.worldId;\n if (task.tags !== undefined) updateValues.tags = task.tags;\n\n // Always update the updatedAt timestamp as a Date\n // Note: Task interface uses number for updatedAt, but database schema uses Date\n interface TaskUpdateValues extends Partial<typeof taskTable.$inferInsert> {\n updatedAt?: Date;\n }\n const dbUpdateValues: TaskUpdateValues = {\n ...updateValues,\n updatedAt: new Date(),\n };\n\n // Handle metadata updates - just set it directly without merging\n if (task.metadata !== undefined) {\n dbUpdateValues.metadata = task.metadata;\n }\n\n await this.db\n .update(taskTable)\n // createdAt is hella borked, number / Date\n .set(dbUpdateValues)\n .where(and(eq(taskTable.id, id), eq(taskTable.agentId, this.agentId)));\n });\n });\n }\n\n /**\n * Asynchronously deletes a task from the database.\n * @param id The UUID of the task to delete\n * @returns Promise resolving when the deletion is complete\n */\n async deleteTask(id: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(taskTable).where(eq(taskTable.id, id));\n });\n }\n\n async getMemoriesByWorldId(params: {\n worldId: UUID;\n count?: number;\n tableName?: string;\n }): Promise<Memory[]> {\n return this.withDatabase(async () => {\n // First, get all rooms for the given worldId\n const rooms = await this.db\n .select({ id: roomTable.id })\n .from(roomTable)\n .where(and(eq(roomTable.worldId, params.worldId), eq(roomTable.agentId, this.agentId)));\n\n if (rooms.length === 0) {\n return [];\n }\n\n const roomIds = rooms.map((room) => room.id as UUID);\n\n const memories = await this.getMemoriesByRoomIds({\n roomIds,\n tableName: params.tableName || 'messages',\n limit: params.count,\n });\n\n return memories;\n });\n }\n\n async deleteRoomsByWorldId(worldId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n const rooms = await this.db\n .select({ id: roomTable.id })\n .from(roomTable)\n .where(and(eq(roomTable.worldId, worldId), eq(roomTable.agentId, this.agentId)));\n\n if (rooms.length === 0) {\n return;\n }\n\n const roomIds = rooms.map((room) => room.id as UUID);\n\n if (roomIds.length > 0) {\n await this.db.delete(logTable).where(inArray(logTable.roomId, roomIds));\n await this.db.delete(participantTable).where(inArray(participantTable.roomId, roomIds));\n\n const memoriesInRooms = await this.db\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(inArray(memoryTable.roomId, roomIds));\n const memoryIdsInRooms = memoriesInRooms.map((m) => m.id as UUID);\n\n if (memoryIdsInRooms.length > 0) {\n await this.db\n .delete(embeddingTable)\n .where(inArray(embeddingTable.memoryId, memoryIdsInRooms));\n await this.db.delete(memoryTable).where(inArray(memoryTable.id, memoryIdsInRooms));\n }\n\n await this.db.delete(roomTable).where(inArray(roomTable.id, roomIds));\n\n logger.debug(\n {\n src: 'plugin:sql',\n worldId,\n roomsDeleted: roomIds.length,\n memoriesDeleted: memoryIdsInRooms.length,\n },\n 'World cleanup completed'\n );\n }\n });\n }\n\n // Message Server Database Operations\n\n /**\n * Creates a new message server in the central database\n */\n async createMessageServer(data: {\n id?: UUID; // Allow passing a specific ID\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n }): Promise<{\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const newId = data.id || (v4() as UUID);\n const now = new Date();\n const serverToInsert = {\n id: newId,\n name: data.name,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n metadata: data.metadata,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.insert(messageServerTable).values(serverToInsert).onConflictDoNothing(); // In case the ID already exists\n\n // If server already existed, fetch it\n if (data.id) {\n const existing = await this.db\n .select()\n .from(messageServerTable)\n .where(eq(messageServerTable.id, data.id))\n .limit(1);\n if (existing.length > 0) {\n return {\n id: existing[0].id as UUID,\n name: existing[0].name,\n sourceType: existing[0].sourceType,\n sourceId: existing[0].sourceId || undefined,\n metadata: existing[0].metadata || undefined,\n createdAt: existing[0].createdAt,\n updatedAt: existing[0].updatedAt,\n };\n }\n }\n\n return serverToInsert;\n });\n }\n\n /**\n * Gets all message servers\n */\n async getMessageServers(): Promise<\n Array<{\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }>\n > {\n const result = await this.withDatabase(async () => {\n const results = await this.db.select().from(messageServerTable);\n return results.map((r) => ({\n id: r.id as UUID,\n name: r.name,\n sourceType: r.sourceType,\n sourceId: r.sourceId || undefined,\n metadata: r.metadata || undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n });\n // Guard against null return\n return result || [];\n }\n\n /**\n * Gets a message server by ID\n */\n async getMessageServerById(serverId: UUID): Promise<{\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n } | null> {\n return this.withDatabase(async () => {\n const results = await this.db\n .select()\n .from(messageServerTable)\n .where(eq(messageServerTable.id, serverId))\n .limit(1);\n return results.length > 0\n ? {\n id: results[0].id as UUID,\n name: results[0].name,\n sourceType: results[0].sourceType,\n sourceId: results[0].sourceId || undefined,\n metadata: results[0].metadata || undefined,\n createdAt: results[0].createdAt,\n updatedAt: results[0].updatedAt,\n }\n : null;\n });\n }\n\n /**\n * Gets a message server by RLS server_id\n * Note: server_id column only exists when RLS is enabled (added dynamically by RLS setup)\n * This is used to find the message_server linked to a specific RLS server instance\n */\n async getMessageServerByRlsServerId(rlsServerId: UUID): Promise<{\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n } | null> {\n return this.withDatabase(async () => {\n // Use raw SQL since server_id column is dynamically added by RLS and not in Drizzle schema\n const results = await this.db.execute(sql`\n SELECT id, name, source_type, source_id, metadata, created_at, updated_at\n FROM message_servers\n WHERE server_id = ${rlsServerId}\n LIMIT 1\n `);\n\n const rows = results.rows || results;\n return rows.length > 0\n ? {\n id: rows[0].id as UUID,\n name: rows[0].name,\n sourceType: rows[0].source_type,\n sourceId: rows[0].source_id || undefined,\n metadata: rows[0].metadata || undefined,\n createdAt: new Date(rows[0].created_at),\n updatedAt: new Date(rows[0].updated_at),\n }\n : null;\n });\n }\n\n /**\n * Creates a new channel\n */\n async createChannel(\n data: {\n id?: UUID; // Allow passing a specific ID\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n },\n participantIds?: UUID[]\n ): Promise<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const newId = data.id || (v4() as UUID);\n const now = new Date();\n const channelToInsert = {\n id: newId,\n messageServerId: data.messageServerId,\n name: data.name,\n type: data.type,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n topic: data.topic,\n metadata: data.metadata,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.transaction(async (tx) => {\n await tx.insert(channelTable).values(channelToInsert);\n\n if (participantIds && participantIds.length > 0) {\n const participantValues = participantIds.map((entityId) => ({\n channelId: newId,\n entityId: entityId,\n }));\n await tx.insert(channelParticipantsTable).values(participantValues).onConflictDoNothing();\n }\n });\n\n return channelToInsert;\n });\n }\n\n /**\n * Gets channels for a message server\n */\n async getChannelsForMessageServer(messageServerId: UUID): Promise<\n Array<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }>\n > {\n return this.withDatabase(async () => {\n const results = await this.db\n .select()\n .from(channelTable)\n .where(eq(channelTable.messageServerId, messageServerId));\n return results.map((r) => ({\n id: r.id as UUID,\n messageServerId: r.messageServerId as UUID,\n name: r.name,\n type: r.type,\n sourceType: r.sourceType || undefined,\n sourceId: r.sourceId || undefined,\n topic: r.topic || undefined,\n metadata: r.metadata || undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n });\n }\n\n /**\n * Gets channel details\n */\n async getChannelDetails(channelId: UUID): Promise<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n } | null> {\n return this.withDatabase(async () => {\n const results = await this.db\n .select()\n .from(channelTable)\n .where(eq(channelTable.id, channelId))\n .limit(1);\n return results.length > 0\n ? {\n id: results[0].id as UUID,\n messageServerId: results[0].messageServerId as UUID,\n name: results[0].name,\n type: results[0].type,\n sourceType: results[0].sourceType || undefined,\n sourceId: results[0].sourceId || undefined,\n topic: results[0].topic || undefined,\n metadata: results[0].metadata || undefined,\n createdAt: results[0].createdAt,\n updatedAt: results[0].updatedAt,\n }\n : null;\n });\n }\n\n /**\n * Creates a message\n */\n async createMessage(data: {\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n messageId?: UUID;\n }): Promise<{\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const newId = data.messageId || (v4() as UUID);\n const now = new Date();\n const messageToInsert = {\n id: newId,\n channelId: data.channelId,\n authorId: data.authorId,\n content: data.content,\n rawMessage: data.rawMessage,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n metadata: data.metadata,\n inReplyToRootMessageId: data.inReplyToRootMessageId,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.insert(messageTable).values(messageToInsert);\n return messageToInsert;\n });\n }\n\n async getMessageById(id: UUID): Promise<{\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const rows = await this.db\n .select()\n .from(messageTable)\n .where(eq(messageTable.id, id))\n .limit(1);\n return rows?.[0] ?? null;\n });\n }\n\n async updateMessage(\n id: UUID,\n patch: {\n content?: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n }\n ): Promise<{\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n } | null> {\n return this.withDatabase(async () => {\n const existing = await this.getMessageById(id);\n if (!existing) return null;\n\n const updatedAt = new Date();\n const next = {\n content: patch.content ?? existing.content,\n rawMessage: patch.rawMessage ?? existing.rawMessage,\n sourceType: patch.sourceType ?? existing.sourceType,\n sourceId: patch.sourceId ?? existing.sourceId,\n metadata: patch.metadata ?? existing.metadata,\n inReplyToRootMessageId: patch.inReplyToRootMessageId ?? existing.inReplyToRootMessageId,\n updatedAt,\n };\n\n await this.db.update(messageTable).set(next).where(eq(messageTable.id, id));\n\n // Return merged object\n return {\n ...existing,\n ...next,\n };\n });\n }\n\n /**\n * Gets messages for a channel\n */\n async getMessagesForChannel(\n channelId: UUID,\n limit: number = 50,\n beforeTimestamp?: Date\n ): Promise<\n Array<{\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n }>\n > {\n return this.withDatabase(async () => {\n const conditions = [eq(messageTable.channelId, channelId)];\n if (beforeTimestamp) {\n conditions.push(lt(messageTable.createdAt, beforeTimestamp));\n }\n\n const query = this.db\n .select()\n .from(messageTable)\n .where(and(...conditions))\n .orderBy(desc(messageTable.createdAt))\n .limit(limit);\n\n const results = await query;\n return results.map((r) => ({\n id: r.id as UUID,\n channelId: r.channelId as UUID,\n authorId: r.authorId as UUID,\n content: r.content,\n rawMessage: r.rawMessage || undefined,\n sourceType: r.sourceType || undefined,\n sourceId: r.sourceId || undefined,\n metadata: r.metadata || undefined,\n inReplyToRootMessageId: r.inReplyToRootMessageId as UUID | undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n });\n }\n\n /**\n * Deletes a message\n */\n async deleteMessage(messageId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(messageTable).where(eq(messageTable.id, messageId));\n });\n }\n\n /**\n * Updates a channel\n */\n async updateChannel(\n channelId: UUID,\n updates: { name?: string; participantCentralUserIds?: UUID[]; metadata?: Metadata }\n ): Promise<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const now = new Date();\n\n await this.db.transaction(async (tx) => {\n // Update channel details\n const updateData: Record<string, unknown> = { updatedAt: now };\n if (updates.name !== undefined) updateData.name = updates.name;\n if (updates.metadata !== undefined) updateData.metadata = updates.metadata;\n\n await tx.update(channelTable).set(updateData).where(eq(channelTable.id, channelId));\n\n // Update participants if provided\n if (updates.participantCentralUserIds !== undefined) {\n // Remove existing participants\n await tx\n .delete(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n // Add new participants\n if (updates.participantCentralUserIds.length > 0) {\n const participantValues = updates.participantCentralUserIds.map((entityId) => ({\n channelId: channelId,\n entityId: entityId,\n }));\n await tx\n .insert(channelParticipantsTable)\n .values(participantValues)\n .onConflictDoNothing();\n }\n }\n });\n\n // Return updated channel details\n const updatedChannel = await this.getChannelDetails(channelId);\n if (!updatedChannel) {\n throw new Error(`Channel ${channelId} not found after update`);\n }\n return updatedChannel;\n });\n }\n\n /**\n * Deletes a channel and all its associated data\n */\n async deleteChannel(channelId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // Delete all messages in the channel (cascade delete will handle this, but explicit is better)\n await tx.delete(messageTable).where(eq(messageTable.channelId, channelId));\n\n // Delete all participants (cascade delete will handle this, but explicit is better)\n await tx\n .delete(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n // Delete the channel itself\n await tx.delete(channelTable).where(eq(channelTable.id, channelId));\n });\n });\n }\n\n /**\n * Adds participants to a channel\n */\n async addChannelParticipants(channelId: UUID, entityIds: UUID[]): Promise<void> {\n return this.withDatabase(async () => {\n if (!entityIds || entityIds.length === 0) return;\n\n const participantValues = entityIds.map((entityId) => ({\n channelId: channelId,\n entityId: entityId,\n }));\n\n await this.db\n .insert(channelParticipantsTable)\n .values(participantValues)\n .onConflictDoNothing();\n });\n }\n\n /**\n * Gets participants for a channel\n */\n async getChannelParticipants(channelId: UUID): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const results = await this.db\n .select({ entityId: channelParticipantsTable.entityId })\n .from(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n return results.map((r) => r.entityId as UUID);\n });\n }\n\n /**\n * Check if an entity is a participant in a specific messaging channel.\n * @param {UUID} channelId - The ID of the channel to check.\n * @param {UUID} entityId - The ID of the entity to check.\n * @returns {Promise<boolean>} A Promise that resolves to true if entity is a participant.\n */\n async isChannelParticipant(channelId: UUID, entityId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(channelParticipantsTable)\n .where(\n and(\n eq(channelParticipantsTable.channelId, channelId),\n eq(channelParticipantsTable.entityId, entityId)\n )\n )\n .limit(1);\n\n return result.length > 0;\n });\n }\n\n /**\n * Adds an agent to a message server (Discord/Telegram server)\n */\n async addAgentToMessageServer(messageServerId: UUID, agentId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db\n .insert(messageServerAgentsTable)\n .values({\n messageServerId,\n agentId,\n })\n .onConflictDoNothing();\n });\n }\n\n /**\n * Gets agents for a message server (Discord/Telegram server)\n */\n async getAgentsForMessageServer(messageServerId: UUID): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const results = await this.db\n .select({ agentId: messageServerAgentsTable.agentId })\n .from(messageServerAgentsTable)\n .where(eq(messageServerAgentsTable.messageServerId, messageServerId));\n\n return results.map((r) => r.agentId as UUID);\n });\n }\n\n /**\n * Removes an agent from a message server (Discord/Telegram server)\n */\n async removeAgentFromMessageServer(messageServerId: UUID, agentId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db\n .delete(messageServerAgentsTable)\n .where(\n and(\n eq(messageServerAgentsTable.messageServerId, messageServerId),\n eq(messageServerAgentsTable.agentId, agentId)\n )\n );\n });\n }\n\n /**\n * Finds or creates a DM channel between two users\n */\n async findOrCreateDmChannel(\n user1Id: UUID,\n user2Id: UUID,\n messageServerId: UUID\n ): Promise<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const ids = [user1Id, user2Id].sort();\n const dmChannelName = `DM-${ids[0]}-${ids[1]}`;\n\n const existingChannels = await this.db\n .select()\n .from(channelTable)\n .where(\n and(\n eq(channelTable.type, ChannelType.DM),\n eq(channelTable.name, dmChannelName),\n eq(channelTable.messageServerId, messageServerId)\n )\n )\n .limit(1);\n\n if (existingChannels.length > 0) {\n return {\n id: existingChannels[0].id as UUID,\n messageServerId: existingChannels[0].messageServerId as UUID,\n name: existingChannels[0].name,\n type: existingChannels[0].type,\n sourceType: existingChannels[0].sourceType || undefined,\n sourceId: existingChannels[0].sourceId || undefined,\n topic: existingChannels[0].topic || undefined,\n metadata: existingChannels[0].metadata || undefined,\n createdAt: existingChannels[0].createdAt,\n updatedAt: existingChannels[0].updatedAt,\n };\n }\n\n // Create new DM channel\n return this.createChannel(\n {\n messageServerId,\n name: dmChannelName,\n type: ChannelType.DM,\n metadata: { user1: ids[0], user2: ids[1] },\n },\n ids\n );\n });\n }\n}\n\n// Import tables at the end to avoid circular dependencies\n",
|
|
140
|
+
"import {\n type Agent,\n ChannelType,\n type Component,\n DatabaseAdapter,\n type Entity,\n type Log,\n type LogBody,\n logger,\n type Memory,\n type MemoryMetadata,\n type Metadata,\n type Participant,\n type Relationship,\n type Room,\n RoomMetadata,\n type Task,\n TaskMetadata,\n type UUID,\n type World,\n type AgentRunSummary,\n type AgentRunSummaryResult,\n type RunStatus,\n type AgentRunCounts,\n} from '@elizaos/core';\nimport type { DatabaseMigrationService } from './migration-service';\nimport {\n and,\n cosineDistance,\n count,\n desc,\n eq,\n gte,\n inArray,\n lt,\n lte,\n or,\n SQL,\n sql,\n} from 'drizzle-orm';\nimport { v4 } from 'uuid';\nimport { DIMENSION_MAP, type EmbeddingDimensionColumn } from './schema/embedding';\nimport {\n agentTable,\n cacheTable,\n channelParticipantsTable,\n channelTable,\n componentTable,\n embeddingTable,\n entityTable,\n logTable,\n memoryTable,\n messageServerTable,\n messageTable,\n participantTable,\n relationshipTable,\n roomTable,\n messageServerAgentsTable,\n taskTable,\n worldTable,\n} from './schema/index';\nimport type { DrizzleDatabase } from './types';\n\n// Define the metadata type inline since we can't import it\n/**\n * Represents metadata information about memory.\n * @typedef {Object} MemoryMetadata\n * @property {string} type - The type of memory.\n * @property {string} [source] - The source of the memory.\n * @property {UUID} [sourceId] - The ID of the source.\n * @property {string} [scope] - The scope of the memory.\n * @property {number} [timestamp] - The timestamp of the memory.\n * @property {string[]} [tags] - The tags associated with the memory.\n * @property {UUID} [documentId] - The ID of the document associated with the memory.\n * @property {number} [position] - The position of the memory.\n */\n\n/**\n * Abstract class representing a base Drizzle adapter for working with databases.\n * This adapter provides a comprehensive set of methods for interacting with a database\n * using Drizzle ORM. It implements the DatabaseAdapter interface and handles operations\n * for various entity types including agents, entities, components, memories, rooms,\n * participants, relationships, tasks, and more.\n *\n * The adapter includes built-in retry logic for database operations, embedding dimension\n * management, and transaction support. Concrete implementations must provide the\n * withDatabase method to execute operations against their specific database.\n */\nexport abstract class BaseDrizzleAdapter extends DatabaseAdapter<any> {\n protected readonly maxRetries: number = 3;\n protected readonly baseDelay: number = 1000;\n protected readonly maxDelay: number = 10000;\n protected readonly jitterMax: number = 1000;\n protected embeddingDimension: EmbeddingDimensionColumn = DIMENSION_MAP[384];\n protected migrationService?: DatabaseMigrationService;\n\n protected abstract withDatabase<T>(operation: () => Promise<T>): Promise<T>;\n\n /**\n * Execute a callback with entity context for Entity RLS.\n * Must be implemented by concrete adapters to handle their specific RLS mechanisms.\n *\n * @param entityId - The entity UUID to set as context (or null for system operations)\n * @param callback - The database operations to execute with the entity context\n * @returns The result of the callback\n */\n public abstract withIsolationContext<T>(\n entityId: UUID | null,\n callback: (tx: DrizzleDatabase) => Promise<T>\n ): Promise<T>;\n\n public abstract init(): Promise<void>;\n public abstract close(): Promise<void>;\n\n /**\n * Initialize method that can be overridden by implementations\n */\n public async initialize(): Promise<void> {\n await this.init();\n }\n\n /**\n * Run plugin schema migrations for all registered plugins\n * @param plugins Array of plugins with their schemas\n * @param options Migration options (verbose, force, dryRun, etc.)\n */\n public async runPluginMigrations(\n plugins: Array<{ name: string; schema?: Record<string, unknown> }>,\n options?: {\n verbose?: boolean;\n force?: boolean;\n dryRun?: boolean;\n }\n ): Promise<void> {\n // Initialize migration service if not already done\n if (!this.migrationService) {\n const { DatabaseMigrationService } = await import('./migration-service');\n this.migrationService = new DatabaseMigrationService();\n await this.migrationService.initializeWithDatabase(this.db);\n }\n\n // Register plugin schemas\n for (const plugin of plugins) {\n if (plugin.schema) {\n this.migrationService.registerSchema(plugin.name, plugin.schema);\n }\n }\n\n // Run migrations with options\n await this.migrationService.runAllPluginMigrations(options);\n }\n\n /**\n * Get the underlying database instance for testing purposes\n */\n public getDatabase(): unknown {\n return this.db;\n }\n\n protected agentId: UUID;\n\n /**\n * Constructor for creating a new instance of Agent with the specified agentId.\n *\n * @param {UUID} agentId - The unique identifier for the agent.\n */\n constructor(agentId: UUID) {\n super();\n this.agentId = agentId;\n }\n\n /**\n * Normalizes entity names to ensure they are always a proper array of strings.\n * Handles strings, Sets, Maps, iterables, and non-iterable values.\n * All array elements are converted to strings to prevent database errors.\n * @param {any} names - The names value to normalize\n * @returns {string[]} A proper array of string names\n * @private\n */\n private normalizeEntityNames(names: unknown): string[] {\n // Handle null/undefined\n if (names == null) {\n return [];\n }\n\n // Handle string - wrap in array\n if (typeof names === 'string') {\n return [names];\n }\n\n // Handle arrays - ensure all elements are strings\n if (Array.isArray(names)) {\n return names.map(String);\n }\n\n // Handle Sets - convert to array and ensure all elements are strings\n if (names instanceof Set) {\n return Array.from(names).map(String);\n }\n\n // Handle other iterables (including Maps) - convert to array and ensure all elements are strings\n // Maps yield [key, value] tuples, so we need to convert those to strings too\n if (typeof names === 'object' && typeof names[Symbol.iterator] === 'function') {\n return Array.from(names as Iterable<unknown>).map(String);\n }\n\n // Handle non-iterable primitives (numbers, booleans, objects)\n return [String(names)];\n }\n\n /**\n * Executes the given operation with retry logic.\n * @template T\n * @param {() => Promise<T>} operation - The operation to be executed.\n * @returns {Promise<T>} A promise that resolves with the result of the operation.\n */\n protected async withRetry<T>(operation: () => Promise<T>): Promise<T> {\n let lastError: Error = new Error('Unknown error');\n\n for (let attempt = 1; attempt <= this.maxRetries; attempt++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error as Error;\n\n if (attempt < this.maxRetries) {\n const backoffDelay = Math.min(this.baseDelay * 2 ** (attempt - 1), this.maxDelay);\n\n const jitter = Math.random() * this.jitterMax;\n const delay = backoffDelay + jitter;\n\n logger.warn(\n {\n src: 'plugin:sql',\n attempt,\n maxRetries: this.maxRetries,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Database operation failed, retrying'\n );\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n } else {\n logger.error(\n {\n src: 'plugin:sql',\n totalAttempts: attempt,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Max retry attempts reached'\n );\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n }\n\n throw lastError;\n }\n\n /**\n * Asynchronously ensures that the given embedding dimension is valid for the agent.\n *\n * @param {number} dimension - The dimension to ensure for the embedding.\n * @returns {Promise<void>} - Resolves once the embedding dimension is ensured.\n */\n async ensureEmbeddingDimension(dimension: number) {\n return this.withDatabase(async () => {\n const existingMemory = await this.db\n .select()\n .from(memoryTable)\n .innerJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(eq(memoryTable.agentId, this.agentId))\n .limit(1);\n\n if (existingMemory.length > 0) {\n // The join result includes both memoryTable and embeddingTable columns\n // Access embedding columns directly from the joined result\n interface JoinedMemoryResult {\n memories: typeof memoryTable.$inferSelect;\n embeddings: typeof embeddingTable.$inferSelect;\n }\n const joinedResult = existingMemory[0] as JoinedMemoryResult;\n Object.entries(DIMENSION_MAP).find(([_, colName]) => {\n const embeddingCol = colName as keyof typeof embeddingTable.$inferSelect;\n return joinedResult.embeddings[embeddingCol] !== null;\n });\n // We don't actually need to use usedDimension for now, but it's good to know it's there.\n }\n\n this.embeddingDimension = DIMENSION_MAP[dimension];\n });\n }\n\n /**\n * Asynchronously retrieves an agent by their ID from the database.\n * @param {UUID} agentId - The ID of the agent to retrieve.\n * @returns {Promise<Agent | null>} A promise that resolves to the retrieved agent or null if not found.\n */\n async getAgent(agentId: UUID): Promise<Agent | null> {\n return this.withDatabase(async () => {\n const rows = await this.db\n .select()\n .from(agentTable)\n .where(eq(agentTable.id, agentId))\n .limit(1);\n\n if (rows.length === 0) return null;\n\n const row = rows[0];\n return {\n ...row,\n username: row.username || '',\n id: row.id as UUID,\n system: !row.system ? undefined : row.system,\n bio: !row.bio ? '' : row.bio,\n createdAt: row.createdAt.getTime(),\n updatedAt: row.updatedAt.getTime(),\n };\n });\n }\n\n /**\n * Asynchronously retrieves a list of agents from the database.\n *\n * @returns {Promise<Partial<Agent>[]>} A Promise that resolves to an array of Agent objects.\n */\n async getAgents(): Promise<Partial<Agent>[]> {\n const result = await this.withDatabase(async () => {\n const rows = await this.db\n .select({\n id: agentTable.id,\n name: agentTable.name,\n bio: agentTable.bio,\n })\n .from(agentTable);\n return rows.map((row) => ({\n ...row,\n id: row.id as UUID,\n bio: row.bio === null ? '' : row.bio,\n }));\n });\n // Guard against null return\n return result || [];\n }\n /**\n * Asynchronously creates a new agent record in the database.\n *\n * @param {Partial<Agent>} agent The agent object to be created.\n * @returns {Promise<boolean>} A promise that resolves to a boolean indicating the success of the operation.\n */\n async createAgent(agent: Agent): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n // Check for existing agent with the same ID only (names can be duplicated)\n if (agent.id) {\n const existing = await this.db\n .select({ id: agentTable.id })\n .from(agentTable)\n .where(eq(agentTable.id, agent.id))\n .limit(1);\n\n if (existing.length > 0) {\n logger.warn(\n { src: 'plugin:sql', agentId: agent.id },\n 'Attempted to create agent with duplicate ID'\n );\n return false;\n }\n }\n\n await this.db.transaction(async (tx) => {\n await tx.insert(agentTable).values({\n ...agent,\n createdAt: new Date(agent.createdAt || Date.now()),\n updatedAt: new Date(agent.updatedAt || Date.now()),\n });\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: agent.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create agent'\n );\n return false;\n }\n });\n }\n\n /**\n * Updates an agent in the database with the provided agent ID and data.\n * @param {UUID} agentId - The unique identifier of the agent to update.\n * @param {Partial<Agent>} agent - The partial agent object containing the fields to update.\n * @returns {Promise<boolean>} - A boolean indicating if the agent was successfully updated.\n */\n async updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n if (!agentId) {\n throw new Error('Agent ID is required for update');\n }\n\n await this.db.transaction(async (tx) => {\n // Handle settings update if present\n if (agent?.settings) {\n agent.settings = await this.mergeAgentSettings(tx, agentId, agent.settings);\n }\n\n // Convert numeric timestamps to Date objects for database storage\n // The Agent interface uses numbers, but the database schema expects Date objects\n const updateData: Record<string, unknown> = { ...agent };\n\n if (updateData.createdAt) {\n if (typeof updateData.createdAt === 'number') {\n updateData.createdAt = new Date(updateData.createdAt);\n } else {\n delete updateData.createdAt; // Don't update createdAt if it's not a valid timestamp\n }\n }\n if (updateData.updatedAt) {\n if (typeof updateData.updatedAt === 'number') {\n updateData.updatedAt = new Date(updateData.updatedAt);\n } else {\n updateData.updatedAt = new Date(); // Use current time if invalid\n }\n } else {\n updateData.updatedAt = new Date(); // Always set updatedAt to current time\n }\n\n await tx.update(agentTable).set(updateData).where(eq(agentTable.id, agentId));\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to update agent'\n );\n return false;\n }\n });\n }\n\n /**\n * Merges updated agent settings with existing settings in the database,\n * with special handling for nested objects like secrets.\n * @param tx - The database transaction\n * @param agentId - The ID of the agent\n * @param updatedSettings - The settings object with updates\n * @returns The merged settings object\n * @private\n */\n private async mergeAgentSettings<T extends Record<string, unknown>>(\n tx: DrizzleDatabase,\n agentId: UUID,\n updatedSettings: T\n ): Promise<T> {\n // First get the current agent data\n const currentAgent = await tx\n .select({ settings: agentTable.settings })\n .from(agentTable)\n .where(eq(agentTable.id, agentId))\n .limit(1);\n\n const currentSettings =\n currentAgent.length > 0 && currentAgent[0].settings ? currentAgent[0].settings : {};\n\n const deepMerge = (\n target: Record<string, unknown> | unknown,\n source: Record<string, unknown>\n ): Record<string, unknown> | undefined => {\n // If source is explicitly null, it means the intention is to set this entire branch to null (or delete if top-level handled by caller).\n // For recursive calls, if a sub-object in source is null, it effectively means \"remove this sub-object from target\".\n // However, our primary deletion signal is a *property value* being null within an object.\n if (source === null) {\n // If the entire source for a given key is null, we treat it as \"delete this key from target\"\n // by returning undefined, which the caller can use to delete the key.\n return undefined;\n }\n\n // If source is an array or a primitive, it replaces the target value.\n if (Array.isArray(source) || typeof source !== 'object') {\n return source;\n }\n\n // Initialize output. If target is not an object, start with an empty one to merge source into.\n const output =\n typeof target === 'object' && target !== null && !Array.isArray(target)\n ? { ...target }\n : {};\n\n for (const key of Object.keys(source)) {\n // Iterate over source keys\n const sourceValue = source[key];\n\n if (sourceValue === null) {\n // If a value in source is null, delete the corresponding key from output.\n delete output[key];\n } else if (typeof sourceValue === 'object' && !Array.isArray(sourceValue)) {\n // If value is an object, recurse.\n const nestedMergeResult = deepMerge(output[key], sourceValue as Record<string, unknown>);\n if (nestedMergeResult === undefined) {\n // If recursive merge resulted in undefined (meaning the nested object should be deleted)\n delete output[key];\n } else {\n output[key] = nestedMergeResult;\n }\n } else {\n // Primitive or array value from source, assign it.\n output[key] = sourceValue;\n }\n }\n\n // After processing all keys from source, check if output became empty.\n // An object is empty if all its keys were deleted or resulted in undefined.\n // This is a more direct check than iterating 'output' after building it.\n if (Object.keys(output).length === 0) {\n // If the source itself was not an explicitly empty object,\n // and the merge resulted in an empty object, signal deletion.\n if (!(typeof source === 'object' && source !== null && Object.keys(source).length === 0)) {\n return undefined; // Signal to delete this (parent) key if it became empty.\n }\n }\n\n return output;\n }; // End of deepMerge\n\n const finalSettings = deepMerge(currentSettings, updatedSettings);\n // If the entire settings object becomes undefined (e.g. all keys removed),\n // return an empty object instead of undefined/null to keep the settings field present.\n return (finalSettings ?? {}) as T;\n }\n\n /**\n * Asynchronously deletes an agent with the specified UUID and all related entries.\n *\n * @param {UUID} agentId - The UUID of the agent to be deleted.\n * @returns {Promise<boolean>} - A boolean indicating if the deletion was successful.\n */\n async deleteAgent(agentId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n // Simply delete the agent - all related data will be cascade deleted\n const result = await this.db\n .delete(agentTable)\n .where(eq(agentTable.id, agentId))\n .returning();\n\n if (result.length === 0) {\n logger.warn({ src: 'plugin:sql', agentId }, 'Agent not found for deletion');\n return false;\n }\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to delete agent'\n );\n throw error;\n }\n });\n }\n\n /**\n * Count all agents in the database\n * Used primarily for maintenance and cleanup operations\n */\n /**\n * Asynchronously counts the number of agents in the database.\n * @returns {Promise<number>} A Promise that resolves to the number of agents in the database.\n */\n async countAgents(): Promise<number> {\n return this.withDatabase(async () => {\n try {\n const result = await this.db.select({ count: count() }).from(agentTable);\n\n return result[0]?.count || 0;\n } catch (error) {\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Failed to count agents'\n );\n return 0;\n }\n });\n }\n\n /**\n * Clean up the agents table by removing all agents\n * This is used during server startup to ensure no orphaned agents exist\n * from previous crashes or improper shutdowns\n */\n async cleanupAgents(): Promise<void> {\n return this.withDatabase(async () => {\n try {\n await this.db.delete(agentTable);\n } catch (error) {\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Failed to clean up agent table'\n );\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously retrieves an entity and its components by entity IDs.\n * @param {UUID[]} entityIds - The unique identifiers of the entities to retrieve.\n * @returns {Promise<Entity[] | null>} A Promise that resolves to the entity with its components if found, null otherwise.\n */\n async getEntitiesByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({\n entity: entityTable,\n components: componentTable,\n })\n .from(entityTable)\n .leftJoin(componentTable, eq(componentTable.entityId, entityTable.id))\n .where(inArray(entityTable.id, entityIds));\n\n if (result.length === 0) return [];\n\n // Group components by entity\n const entities: Record<UUID, Entity> = {};\n const entityComponents: Record<UUID, Entity['components']> = {};\n for (const e of result) {\n const key = e.entity.id;\n entities[key] = e.entity;\n if (entityComponents[key] === undefined) entityComponents[key] = [];\n if (e.components) {\n // Handle both single component and array of components\n const componentsArray = Array.isArray(e.components) ? e.components : [e.components];\n entityComponents[key] = [...entityComponents[key], ...componentsArray];\n }\n }\n for (const k of Object.keys(entityComponents)) {\n entities[k].components = entityComponents[k];\n }\n\n return Object.values(entities);\n });\n }\n\n /**\n * Asynchronously retrieves all entities for a given room, optionally including their components.\n * @param {UUID} roomId - The unique identifier of the room to get entities for\n * @param {boolean} [includeComponents] - Whether to include component data for each entity\n * @returns {Promise<Entity[]>} A Promise that resolves to an array of entities in the room\n */\n async getEntitiesForRoom(roomId: UUID, includeComponents?: boolean): Promise<Entity[]> {\n return this.withDatabase(async () => {\n const query = this.db\n .select({\n entity: entityTable,\n ...(includeComponents && { components: componentTable }),\n })\n .from(participantTable)\n .leftJoin(\n entityTable,\n and(eq(participantTable.entityId, entityTable.id), eq(entityTable.agentId, this.agentId))\n );\n\n if (includeComponents) {\n query.leftJoin(componentTable, eq(componentTable.entityId, entityTable.id));\n }\n\n const result = await query.where(eq(participantTable.roomId, roomId));\n\n // Group components by entity if includeComponents is true\n const entitiesByIdMap = new Map<UUID, Entity>();\n\n for (const row of result) {\n if (!row.entity) continue;\n\n const entityId = row.entity.id as UUID;\n if (!entitiesByIdMap.has(entityId)) {\n const entity: Entity = {\n ...row.entity,\n id: entityId,\n agentId: row.entity.agentId as UUID,\n metadata: row.entity.metadata as Record<string, unknown>,\n components: includeComponents ? [] : undefined,\n };\n entitiesByIdMap.set(entityId, entity);\n }\n\n if (includeComponents && row.components) {\n const entity = entitiesByIdMap.get(entityId);\n if (entity) {\n if (!entity.components) {\n entity.components = [];\n }\n entity.components.push(row.components);\n }\n }\n }\n\n return Array.from(entitiesByIdMap.values());\n });\n }\n\n /**\n * Asynchronously creates new entities in the database.\n * @param {Entity[]} entities - The entity objects to be created.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating the success of the operation.\n */\n async createEntities(entities: Entity[]): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n return await this.db.transaction(async (tx) => {\n // Normalize entity data to ensure names is a proper array\n const normalizedEntities = entities.map((entity) => ({\n ...entity,\n names: this.normalizeEntityNames(entity.names),\n metadata: entity.metadata || {},\n }));\n\n await tx.insert(entityTable).values(normalizedEntities);\n\n return true;\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId: entities[0]?.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create entities'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously ensures an entity exists, creating it if it doesn't\n * @param entity The entity to ensure exists\n * @returns Promise resolving to boolean indicating success\n */\n protected async ensureEntityExists(entity: Entity): Promise<boolean> {\n if (!entity.id) {\n logger.error({ src: 'plugin:sql' }, 'Entity ID is required for ensureEntityExists');\n return false;\n }\n\n try {\n const existingEntities = await this.getEntitiesByIds([entity.id]);\n\n if (!existingEntities || !existingEntities.length) {\n return await this.createEntities([entity]);\n }\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId: entity.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to ensure entity exists'\n );\n return false;\n }\n }\n\n /**\n * Asynchronously updates an entity in the database.\n * @param {Entity} entity - The entity object to be updated.\n * @returns {Promise<void>} A Promise that resolves when the entity is updated.\n */\n async updateEntity(entity: Entity): Promise<void> {\n if (!entity.id) {\n throw new Error('Entity ID is required for update');\n }\n return this.withDatabase(async () => {\n // Normalize entity data to ensure names is a proper array\n const normalizedEntity = {\n ...entity,\n names: this.normalizeEntityNames(entity.names),\n metadata: entity.metadata || {},\n };\n\n await this.db\n .update(entityTable)\n .set(normalizedEntity)\n .where(eq(entityTable.id, entity.id as string));\n });\n }\n\n /**\n * Asynchronously deletes an entity from the database based on the provided ID.\n * @param {UUID} entityId - The ID of the entity to delete.\n * @returns {Promise<void>} A Promise that resolves when the entity is deleted.\n */\n async deleteEntity(entityId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // Delete related components first\n await tx\n .delete(componentTable)\n .where(\n or(eq(componentTable.entityId, entityId), eq(componentTable.sourceEntityId, entityId))\n );\n\n // Delete the entity\n await tx.delete(entityTable).where(eq(entityTable.id, entityId));\n });\n });\n }\n\n /**\n * Asynchronously retrieves entities by their names and agentId.\n * @param {Object} params - The parameters for retrieving entities.\n * @param {string[]} params.names - The names to search for.\n * @param {UUID} params.agentId - The agent ID to filter by.\n * @returns {Promise<Entity[]>} A Promise that resolves to an array of entities.\n */\n async getEntitiesByNames(params: { names: string[]; agentId: UUID }): Promise<Entity[]> {\n return this.withDatabase(async () => {\n const { names, agentId } = params;\n\n // Build a condition to match any of the names\n const nameConditions = names.map((name) => sql`${name} = ANY(${entityTable.names})`);\n\n const query = sql`\n SELECT * FROM ${entityTable}\n WHERE ${entityTable.agentId} = ${agentId}\n AND (${sql.join(nameConditions, sql` OR `)})\n `;\n\n const result = await this.db.execute(query);\n\n return result.rows.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: row.names || [],\n metadata: row.metadata || {},\n }));\n });\n }\n\n /**\n * Asynchronously searches for entities by name with fuzzy matching.\n * @param {Object} params - The parameters for searching entities.\n * @param {string} params.query - The search query.\n * @param {UUID} params.agentId - The agent ID to filter by.\n * @param {number} params.limit - The maximum number of results to return.\n * @returns {Promise<Entity[]>} A Promise that resolves to an array of entities.\n */\n async searchEntitiesByName(params: {\n query: string;\n agentId: UUID;\n limit?: number;\n }): Promise<Entity[]> {\n return this.withDatabase(async () => {\n const { query, agentId, limit = 10 } = params;\n\n // If query is empty, return all entities up to limit\n if (!query || query.trim() === '') {\n const result = await this.db\n .select()\n .from(entityTable)\n .where(eq(entityTable.agentId, agentId))\n .limit(limit);\n\n return result.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: row.names || [],\n metadata: row.metadata || {},\n }));\n }\n\n // Otherwise, search for entities with names containing the query (case-insensitive)\n const searchQuery = sql`\n SELECT * FROM ${entityTable}\n WHERE ${entityTable.agentId} = ${agentId}\n AND EXISTS (\n SELECT 1 FROM unnest(${entityTable.names}) AS name\n WHERE LOWER(name) LIKE LOWER(${'%' + query + '%'})\n )\n LIMIT ${limit}\n `;\n\n const result = await this.db.execute(searchQuery);\n\n return result.rows.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: row.names || [],\n metadata: row.metadata || {},\n }));\n });\n }\n\n async getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n return this.withDatabase(async () => {\n const conditions = [eq(componentTable.entityId, entityId), eq(componentTable.type, type)];\n\n if (worldId) {\n conditions.push(eq(componentTable.worldId, worldId));\n }\n\n if (sourceEntityId) {\n conditions.push(eq(componentTable.sourceEntityId, sourceEntityId));\n }\n\n const result = await this.db\n .select()\n .from(componentTable)\n .where(and(...conditions));\n\n if (result.length === 0) return null;\n\n const component = result[0];\n\n return {\n ...component,\n id: component.id as UUID,\n entityId: component.entityId as UUID,\n agentId: component.agentId as UUID,\n roomId: component.roomId as UUID,\n worldId: (component.worldId ?? '') as UUID,\n sourceEntityId: (component.sourceEntityId ?? '') as UUID,\n data: component.data as Record<string, unknown>,\n createdAt: component.createdAt.getTime(),\n };\n });\n }\n\n /**\n * Asynchronously retrieves all components for a given entity, optionally filtered by world and source entity.\n * @param {UUID} entityId - The unique identifier of the entity to retrieve components for\n * @param {UUID} [worldId] - Optional world ID to filter components by\n * @param {UUID} [sourceEntityId] - Optional source entity ID to filter components by\n * @returns {Promise<Component[]>} A Promise that resolves to an array of components\n */\n async getComponents(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]> {\n return this.withDatabase(async () => {\n const conditions = [eq(componentTable.entityId, entityId)];\n\n if (worldId) {\n conditions.push(eq(componentTable.worldId, worldId));\n }\n\n if (sourceEntityId) {\n conditions.push(eq(componentTable.sourceEntityId, sourceEntityId));\n }\n\n const result = await this.db\n .select({\n id: componentTable.id,\n entityId: componentTable.entityId,\n type: componentTable.type,\n data: componentTable.data,\n worldId: componentTable.worldId,\n agentId: componentTable.agentId,\n roomId: componentTable.roomId,\n sourceEntityId: componentTable.sourceEntityId,\n createdAt: componentTable.createdAt,\n })\n .from(componentTable)\n .where(and(...conditions));\n\n if (result.length === 0) return [];\n\n const components = result.map((component) => ({\n ...component,\n id: component.id as UUID,\n entityId: component.entityId as UUID,\n agentId: component.agentId as UUID,\n roomId: component.roomId as UUID,\n worldId: (component.worldId ?? '') as UUID,\n sourceEntityId: (component.sourceEntityId ?? '') as UUID,\n data: component.data as Record<string, unknown>,\n createdAt: component.createdAt.getTime(),\n }));\n\n return components;\n });\n }\n\n /**\n * Asynchronously creates a new component in the database.\n * @param {Component} component - The component object to be created.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating the success of the operation.\n */\n async createComponent(component: Component): Promise<boolean> {\n return this.withDatabase(async () => {\n await this.db.insert(componentTable).values({\n ...component,\n createdAt: new Date(),\n });\n return true;\n });\n }\n\n /**\n * Asynchronously updates an existing component in the database.\n * @param {Component} component - The component object to be updated.\n * @returns {Promise<void>} A Promise that resolves when the component is updated.\n */\n async updateComponent(component: Component): Promise<void> {\n return this.withDatabase(async () => {\n try {\n await this.db\n .update(componentTable)\n .set({\n ...component,\n updatedAt: new Date(),\n })\n .where(eq(componentTable.id, component.id));\n } catch (e) {\n console.error('updateComponent error', e);\n }\n });\n }\n\n /**\n * Asynchronously deletes a component from the database.\n * @param {UUID} componentId - The unique identifier of the component to delete.\n * @returns {Promise<void>} A Promise that resolves when the component is deleted.\n */\n async deleteComponent(componentId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(componentTable).where(eq(componentTable.id, componentId));\n });\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID} params.roomId - The ID of the room to retrieve memories for.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {number} [params.offset] - The offset for pagination.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.tableName] - The name of the table to retrieve memories from.\n * @param {number} [params.start] - The start date to retrieve memories from.\n * @param {number} [params.end] - The end date to retrieve memories from.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemories(params: {\n entityId?: UUID;\n agentId?: UUID;\n count?: number;\n offset?: number;\n unique?: boolean;\n tableName: string;\n start?: number;\n end?: number;\n roomId?: UUID;\n worldId?: UUID;\n }): Promise<Memory[]> {\n const { entityId, agentId, roomId, worldId, tableName, unique, start, end, offset } = params;\n\n if (!tableName) throw new Error('tableName is required');\n if (offset !== undefined && offset < 0) {\n throw new Error('offset must be a non-negative number');\n }\n\n return this.withIsolationContext(entityId ?? null, async (tx) => {\n const conditions = [eq(memoryTable.type, tableName)];\n\n if (start) {\n conditions.push(gte(memoryTable.createdAt, new Date(start)));\n }\n\n // Note: entityId WHERE filter removed - RLS handles access control\n // This allows seeing ALL messages in accessible rooms (user + agent responses)\n\n if (roomId) {\n conditions.push(eq(memoryTable.roomId, roomId));\n }\n\n // Add worldId condition\n if (worldId) {\n conditions.push(eq(memoryTable.worldId, worldId));\n }\n\n if (end) {\n conditions.push(lte(memoryTable.createdAt, new Date(end)));\n }\n\n if (unique) {\n conditions.push(eq(memoryTable.unique, true));\n }\n\n if (agentId) {\n conditions.push(eq(memoryTable.agentId, agentId));\n }\n\n const baseQuery = tx\n .select({\n memory: {\n id: memoryTable.id,\n type: memoryTable.type,\n createdAt: memoryTable.createdAt,\n content: memoryTable.content,\n entityId: memoryTable.entityId,\n agentId: memoryTable.agentId,\n roomId: memoryTable.roomId,\n unique: memoryTable.unique,\n metadata: memoryTable.metadata,\n },\n embedding: embeddingTable[this.embeddingDimension],\n })\n .from(memoryTable)\n .leftJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt));\n\n // Apply limit and offset for pagination\n // Build query conditionally to maintain proper types\n const rows = await (async () => {\n if (params.count && offset !== undefined && offset > 0) {\n return baseQuery.limit(params.count).offset(offset);\n } else if (params.count) {\n return baseQuery.limit(params.count);\n } else if (offset !== undefined && offset > 0) {\n return baseQuery.offset(offset);\n } else {\n return baseQuery;\n }\n })();\n\n return rows.map((row) => ({\n id: row.memory.id as UUID,\n type: row.memory.type,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ? Array.from(row.embedding) : undefined,\n }));\n });\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID[]} params.roomIds - The IDs of the rooms to retrieve memories for.\n * @param {string} params.tableName - The name of the table to retrieve memories from.\n * @param {number} [params.limit] - The maximum number of memories to retrieve.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemoriesByRoomIds(params: {\n roomIds: UUID[];\n tableName: string;\n limit?: number;\n }): Promise<Memory[]> {\n return this.withDatabase(async () => {\n if (params.roomIds.length === 0) return [];\n\n const conditions = [\n eq(memoryTable.type, params.tableName),\n inArray(memoryTable.roomId, params.roomIds),\n ];\n\n conditions.push(eq(memoryTable.agentId, this.agentId));\n\n const query = this.db\n .select({\n id: memoryTable.id,\n type: memoryTable.type,\n createdAt: memoryTable.createdAt,\n content: memoryTable.content,\n entityId: memoryTable.entityId,\n agentId: memoryTable.agentId,\n roomId: memoryTable.roomId,\n unique: memoryTable.unique,\n metadata: memoryTable.metadata,\n })\n .from(memoryTable)\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt));\n\n const rows = params.limit ? await query.limit(params.limit) : await query;\n\n return rows.map((row) => ({\n id: row.id as UUID,\n createdAt: row.createdAt.getTime(),\n content: typeof row.content === 'string' ? JSON.parse(row.content) : row.content,\n entityId: row.entityId as UUID,\n agentId: row.agentId as UUID,\n roomId: row.roomId as UUID,\n unique: row.unique,\n metadata: row.metadata,\n })) as Memory[];\n });\n }\n\n /**\n * Asynchronously retrieves a memory by its unique identifier.\n * @param {UUID} id - The unique identifier of the memory to retrieve.\n * @returns {Promise<Memory | null>} A Promise that resolves to the memory if found, null otherwise.\n */\n async getMemoryById(id: UUID): Promise<Memory | null> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({\n memory: memoryTable,\n embedding: embeddingTable[this.embeddingDimension],\n })\n .from(memoryTable)\n .leftJoin(embeddingTable, eq(memoryTable.id, embeddingTable.memoryId))\n .where(eq(memoryTable.id, id))\n .limit(1);\n\n if (result.length === 0) return null;\n\n const row = result[0];\n return {\n id: row.memory.id as UUID,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ?? undefined,\n };\n });\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID[]} params.memoryIds - The IDs of the memories to retrieve.\n * @param {string} [params.tableName] - The name of the table to retrieve memories from.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemoriesByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]> {\n return this.withDatabase(async () => {\n if (memoryIds.length === 0) return [];\n\n const conditions = [inArray(memoryTable.id, memoryIds)];\n\n if (tableName) {\n conditions.push(eq(memoryTable.type, tableName));\n }\n\n const rows = await this.db\n .select({\n memory: memoryTable,\n embedding: embeddingTable[this.embeddingDimension],\n })\n .from(memoryTable)\n .leftJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt));\n\n return rows.map((row) => ({\n id: row.memory.id as UUID,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ?? undefined,\n }));\n });\n }\n\n /**\n * Asynchronously retrieves cached embeddings from the database based on the provided parameters.\n * @param {Object} opts - The parameters for retrieving cached embeddings.\n * @param {string} opts.query_table_name - The name of the table to retrieve embeddings from.\n * @param {number} opts.query_threshold - The threshold for the levenshtein distance.\n * @param {string} opts.query_input - The input string to search for.\n * @param {string} opts.query_field_name - The name of the field to retrieve embeddings from.\n * @param {string} opts.query_field_sub_name - The name of the sub-field to retrieve embeddings from.\n * @param {number} opts.query_match_count - The maximum number of matches to retrieve.\n * @returns {Promise<{ embedding: number[]; levenshtein_score: number }[]>} A Promise that resolves to an array of cached embeddings.\n */\n async getCachedEmbeddings(opts: {\n query_table_name: string;\n query_threshold: number;\n query_input: string;\n query_field_name: string;\n query_field_sub_name: string;\n query_match_count: number;\n }): Promise<{ embedding: number[]; levenshtein_score: number }[]> {\n return this.withDatabase(async () => {\n try {\n // Drizzle database has execute method for raw SQL\n interface DrizzleDatabaseWithExecute {\n execute: (query: ReturnType<typeof sql>) => Promise<{ rows: Record<string, unknown>[] }>;\n }\n const results = await (this.db as DrizzleDatabaseWithExecute).execute(sql`\n WITH content_text AS (\n SELECT\n m.id,\n COALESCE(\n m.content->>${opts.query_field_sub_name},\n ''\n ) as content_text\n FROM memories m\n WHERE m.type = ${opts.query_table_name}\n AND m.content->>${opts.query_field_sub_name} IS NOT NULL\n ),\n embedded_text AS (\n SELECT\n ct.content_text,\n COALESCE(\n e.dim_384,\n e.dim_512,\n e.dim_768,\n e.dim_1024,\n e.dim_1536,\n e.dim_3072\n ) as embedding\n FROM content_text ct\n LEFT JOIN embeddings e ON e.memory_id = ct.id\n WHERE e.memory_id IS NOT NULL\n )\n SELECT\n embedding,\n levenshtein(${opts.query_input}, content_text) as levenshtein_score\n FROM embedded_text\n WHERE levenshtein(${opts.query_input}, content_text) <= ${opts.query_threshold}\n ORDER BY levenshtein_score\n LIMIT ${opts.query_match_count}\n `);\n\n return results.rows\n .map((row) => ({\n embedding: Array.isArray(row.embedding)\n ? row.embedding\n : typeof row.embedding === 'string'\n ? JSON.parse(row.embedding)\n : [],\n levenshtein_score: Number(row.levenshtein_score),\n }))\n .filter((row) => Array.isArray(row.embedding));\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n tableName: opts.query_table_name,\n fieldName: opts.query_field_name,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to get cached embeddings'\n );\n if (\n error instanceof Error &&\n error.message === 'levenshtein argument exceeds maximum length of 255 characters'\n ) {\n return [];\n }\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously logs an event in the database.\n * @param {Object} params - The parameters for logging an event.\n * @param {Object} params.body - The body of the event to log.\n * @param {UUID} params.entityId - The ID of the entity associated with the event.\n * @param {UUID} params.roomId - The ID of the room associated with the event.\n * @param {string} params.type - The type of the event to log.\n * @returns {Promise<void>} A Promise that resolves when the event is logged.\n */\n async log(params: {\n body: { [key: string]: unknown };\n entityId: UUID;\n roomId: UUID;\n type: string;\n }): Promise<void> {\n return this.withDatabase(async () => {\n try {\n // Sanitize JSON body to prevent Unicode escape sequence errors\n const sanitizedBody = this.sanitizeJsonObject(params.body);\n\n // Serialize to JSON string first for an additional layer of protection\n // This ensures any problematic characters are properly escaped during JSON serialization\n const jsonString = JSON.stringify(sanitizedBody);\n\n // Use withIsolationContext to set Entity RLS context before inserting\n // This ensures the log entry passes STRICT Entity RLS policy\n await this.withIsolationContext(params.entityId, async (tx) => {\n await tx.insert(logTable).values({\n body: sql`${jsonString}::jsonb`,\n entityId: params.entityId,\n roomId: params.roomId,\n type: params.type,\n });\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n type: params.type,\n roomId: params.roomId,\n entityId: params.entityId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create log entry'\n );\n throw error;\n }\n });\n }\n\n /**\n * Sanitizes a JSON object by replacing problematic Unicode escape sequences\n * that could cause errors during JSON serialization/storage\n *\n * @param value - The value to sanitize\n * @returns The sanitized value\n */\n private sanitizeJsonObject(value: unknown, seen: WeakSet<object> = new WeakSet()): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (typeof value === 'string') {\n // Handle multiple cases that can cause PostgreSQL/PgLite JSON parsing errors:\n // 1. Remove null bytes (U+0000) which are not allowed in PostgreSQL text fields\n // 2. Escape single backslashes that might be interpreted as escape sequences\n // 3. Fix broken Unicode escape sequences (\\u not followed by 4 hex digits)\n return value\n .replace(/\\u0000/g, '') // Remove null bytes\n .replace(/\\\\(?![\"\\\\/bfnrtu])/g, '\\\\\\\\') // Escape single backslashes not part of valid escape sequences\n .replace(/\\\\u(?![0-9a-fA-F]{4})/g, '\\\\\\\\u'); // Fix malformed Unicode escape sequences\n }\n\n if (typeof value === 'object') {\n if (seen.has(value as object)) {\n return null;\n } else {\n seen.add(value as object);\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.sanitizeJsonObject(item, seen));\n } else {\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n // Also sanitize object keys\n const sanitizedKey =\n typeof key === 'string'\n ? key.replace(/\\u0000/g, '').replace(/\\\\u(?![0-9a-fA-F]{4})/g, '\\\\\\\\u')\n : key;\n result[sanitizedKey] = this.sanitizeJsonObject(val, seen);\n }\n return result;\n }\n }\n\n return value;\n }\n\n /**\n * Asynchronously retrieves logs from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving logs.\n * @param {UUID} params.entityId - The ID of the entity associated with the logs.\n * @param {UUID} [params.roomId] - The ID of the room associated with the logs.\n * @param {string} [params.type] - The type of the logs to retrieve.\n * @param {number} [params.count] - The maximum number of logs to retrieve.\n * @param {number} [params.offset] - The offset to retrieve logs from.\n * @returns {Promise<Log[]>} A Promise that resolves to an array of logs.\n */\n async getLogs(params: {\n entityId?: UUID;\n roomId?: UUID;\n type?: string;\n count?: number;\n offset?: number;\n }): Promise<Log[]> {\n const { entityId, roomId, type, count, offset } = params;\n\n // Use withIsolationContext for RLS only when entityId is provided\n // Without entityId, bypass RLS to see all logs (for non-RLS mode)\n // Note: No WHERE filter on entityId - RLS handles access control automatically\n return this.withIsolationContext(entityId ?? null, async (tx) => {\n const result = await tx\n .select()\n .from(logTable)\n .where(\n and(\n roomId ? eq(logTable.roomId, roomId) : undefined,\n type ? eq(logTable.type, type) : undefined\n )\n )\n .orderBy(desc(logTable.createdAt))\n .limit(count ?? 10)\n .offset(offset ?? 0);\n\n const logs = result.map((log) => ({\n ...log,\n id: log.id as UUID,\n entityId: log.entityId as UUID,\n roomId: log.roomId as UUID,\n type: log.type as string,\n body: log.body as LogBody,\n createdAt: new Date(log.createdAt as string | number | Date),\n }));\n\n if (logs.length === 0) return [];\n\n return logs;\n });\n }\n\n async getAgentRunSummaries(\n params: {\n limit?: number;\n roomId?: UUID;\n status?: RunStatus | 'all';\n from?: number;\n to?: number;\n entityId?: UUID;\n } = {}\n ): Promise<AgentRunSummaryResult> {\n const limit = Math.min(Math.max(params.limit ?? 20, 1), 100);\n const fromDate = typeof params.from === 'number' ? new Date(params.from) : undefined;\n const toDate = typeof params.to === 'number' ? new Date(params.to) : undefined;\n\n // Use withIsolationContext for RLS when entityId is provided\n return this.withIsolationContext(params.entityId ?? null, async (tx) => {\n const runMap = new Map<string, AgentRunSummary>();\n\n const conditions: SQL<unknown>[] = [\n eq(logTable.type, 'run_event'),\n sql`${logTable.body} ? 'runId'`,\n eq(roomTable.agentId, this.agentId),\n ];\n\n // Note: No WHERE filter on entityId - RLS handles access control automatically\n\n if (params.roomId) {\n conditions.push(eq(logTable.roomId, params.roomId));\n }\n if (fromDate) {\n conditions.push(gte(logTable.createdAt, fromDate));\n }\n if (toDate) {\n conditions.push(lte(logTable.createdAt, toDate));\n }\n\n const whereClause = and(...conditions);\n\n const eventLimit = Math.max(limit * 20, 200);\n\n const runEventRows = await tx\n .select({\n runId: sql<string>`(${logTable.body} ->> 'runId')`,\n status: sql<string | null>`(${logTable.body} ->> 'status')`,\n messageId: sql<string | null>`(${logTable.body} ->> 'messageId')`,\n rawBody: logTable.body,\n createdAt: logTable.createdAt,\n roomId: logTable.roomId,\n entityId: logTable.entityId,\n })\n .from(logTable)\n .innerJoin(roomTable, eq(roomTable.id, logTable.roomId))\n .where(whereClause)\n .orderBy(desc(logTable.createdAt))\n .limit(eventLimit);\n\n for (const row of runEventRows) {\n const runId = row.runId;\n if (!runId) continue;\n\n const summary: AgentRunSummary = runMap.get(runId) ?? {\n runId,\n status: 'started',\n startedAt: null,\n endedAt: null,\n durationMs: null,\n messageId: undefined,\n roomId: undefined,\n entityId: undefined,\n metadata: {},\n };\n\n if (!summary.messageId && row.messageId) {\n summary.messageId = row.messageId as UUID;\n }\n if (!summary.roomId && row.roomId) {\n summary.roomId = row.roomId as UUID;\n }\n if (!summary.entityId && row.entityId) {\n summary.entityId = row.entityId as UUID;\n }\n\n const body = row.rawBody as Record<string, unknown> | undefined;\n if (body && typeof body === 'object') {\n if (!summary.roomId && typeof body.roomId === 'string') {\n summary.roomId = body.roomId as UUID;\n }\n if (!summary.entityId && typeof body.entityId === 'string') {\n summary.entityId = body.entityId as UUID;\n }\n if (!summary.messageId && typeof body.messageId === 'string') {\n summary.messageId = body.messageId as UUID;\n }\n if (!summary.metadata || Object.keys(summary.metadata).length === 0) {\n const metadata = (body.metadata as Record<string, unknown> | undefined) ?? undefined;\n summary.metadata = metadata ? { ...metadata } : {};\n }\n }\n\n const createdAt = row.createdAt instanceof Date ? row.createdAt : new Date(row.createdAt);\n const timestamp = createdAt.getTime();\n const eventStatus =\n (row.status as RunStatus | undefined) ?? (body?.status as RunStatus | undefined);\n\n if (eventStatus === 'started') {\n summary.startedAt =\n summary.startedAt === null ? timestamp : Math.min(summary.startedAt, timestamp);\n } else if (\n eventStatus === 'completed' ||\n eventStatus === 'timeout' ||\n eventStatus === 'error'\n ) {\n summary.status = eventStatus;\n summary.endedAt = timestamp;\n if (summary.startedAt !== null) {\n summary.durationMs = Math.max(timestamp - summary.startedAt, 0);\n }\n }\n\n runMap.set(runId, summary);\n }\n\n let runs = Array.from(runMap.values());\n if (params.status && params.status !== 'all') {\n runs = runs.filter((run) => run.status === params.status);\n }\n\n runs.sort((a, b) => (b.startedAt ?? 0) - (a.startedAt ?? 0));\n\n const total = runs.length;\n const limitedRuns = runs.slice(0, limit);\n const hasMore = total > limit;\n\n const runCounts = new Map<string, AgentRunCounts>();\n for (const run of limitedRuns) {\n runCounts.set(run.runId, { actions: 0, modelCalls: 0, errors: 0, evaluators: 0 });\n }\n\n const runIds = limitedRuns.map((run) => run.runId).filter(Boolean);\n\n if (runIds.length > 0) {\n const runIdArray = sql`array[${sql.join(\n runIds.map((id) => sql`${id}`),\n sql`, `\n )}]::text[]`;\n\n const actionSummary = await this.db.execute(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*)::int as \"actions\",\n SUM(CASE WHEN COALESCE(body->'result'->>'success', 'true') = 'false' THEN 1 ELSE 0 END)::int as \"errors\",\n SUM(COALESCE((body->>'promptCount')::int, 0))::int as \"modelCalls\"\n FROM ${logTable}\n WHERE type = 'action'\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const actionRows = (actionSummary.rows ?? []) as Array<{\n runId: string;\n actions: number | string;\n errors: number | string;\n modelCalls: number | string;\n }>;\n\n for (const row of actionRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.actions += Number(row.actions ?? 0);\n counts.errors += Number(row.errors ?? 0);\n counts.modelCalls += Number(row.modelCalls ?? 0);\n }\n\n const evaluatorSummary = await this.db.execute(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*)::int as \"evaluators\"\n FROM ${logTable}\n WHERE type = 'evaluator'\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const evaluatorRows = (evaluatorSummary.rows ?? []) as Array<{\n runId: string;\n evaluators: number | string;\n }>;\n\n for (const row of evaluatorRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.evaluators += Number(row.evaluators ?? 0);\n }\n\n const genericSummary = await this.db.execute(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*) FILTER (WHERE type LIKE 'useModel:%')::int as \"modelLogs\",\n COUNT(*) FILTER (WHERE type = 'embedding_event' AND body->>'status' = 'failed')::int as \"embeddingErrors\"\n FROM ${logTable}\n WHERE (type LIKE 'useModel:%' OR type = 'embedding_event')\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const genericRows = (genericSummary.rows ?? []) as Array<{\n runId: string;\n modelLogs: number | string;\n embeddingErrors: number | string;\n }>;\n\n for (const row of genericRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.modelCalls += Number(row.modelLogs ?? 0);\n counts.errors += Number(row.embeddingErrors ?? 0);\n }\n }\n\n for (const run of limitedRuns) {\n run.counts = runCounts.get(run.runId) ?? {\n actions: 0,\n modelCalls: 0,\n errors: 0,\n evaluators: 0,\n };\n }\n\n return {\n runs: limitedRuns,\n total,\n hasMore,\n } satisfies AgentRunSummaryResult;\n });\n }\n\n /**\n * Asynchronously deletes a log from the database based on the provided parameters.\n * @param {UUID} logId - The ID of the log to delete.\n * @returns {Promise<void>} A Promise that resolves when the log is deleted.\n */\n async deleteLog(logId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(logTable).where(eq(logTable.id, logId));\n });\n }\n\n /**\n * Asynchronously searches for memories in the database based on the provided parameters.\n * @param {Object} params - The parameters for searching for memories.\n * @param {string} params.tableName - The name of the table to search for memories in.\n * @param {number[]} params.embedding - The embedding to search for.\n * @param {number} [params.match_threshold] - The threshold for the cosine distance.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.query] - Optional query string for potential reranking.\n * @param {UUID} [params.roomId] - Optional room ID to filter by.\n * @param {UUID} [params.worldId] - Optional world ID to filter by.\n * @param {UUID} [params.entityId] - Optional entity ID to filter by.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async searchMemories(params: {\n tableName: string;\n embedding: number[];\n match_threshold?: number;\n count?: number;\n unique?: boolean;\n query?: string;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n }): Promise<Memory[]> {\n return await this.searchMemoriesByEmbedding(params.embedding, {\n match_threshold: params.match_threshold,\n count: params.count,\n // Pass direct scope fields down\n roomId: params.roomId,\n worldId: params.worldId,\n entityId: params.entityId,\n unique: params.unique,\n tableName: params.tableName,\n });\n }\n\n /**\n * Asynchronously searches for memories in the database based on the provided parameters.\n * @param {number[]} embedding - The embedding to search for.\n * @param {Object} params - The parameters for searching for memories.\n * @param {number} [params.match_threshold] - The threshold for the cosine distance.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {UUID} [params.roomId] - Optional room ID to filter by.\n * @param {UUID} [params.worldId] - Optional world ID to filter by.\n * @param {UUID} [params.entityId] - Optional entity ID to filter by.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.tableName] - The name of the table to search for memories in.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async searchMemoriesByEmbedding(\n embedding: number[],\n params: {\n match_threshold?: number;\n count?: number;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n unique?: boolean;\n tableName: string;\n }\n ): Promise<Memory[]> {\n return this.withDatabase(async () => {\n const cleanVector = embedding.map((n) => (Number.isFinite(n) ? Number(n.toFixed(6)) : 0));\n\n const similarity = sql<number>`1 - (${cosineDistance(\n embeddingTable[this.embeddingDimension],\n cleanVector\n )})`;\n\n const conditions = [eq(memoryTable.type, params.tableName)];\n\n if (params.unique) {\n conditions.push(eq(memoryTable.unique, true));\n }\n\n conditions.push(eq(memoryTable.agentId, this.agentId));\n\n // Add filters based on direct params\n if (params.roomId) {\n conditions.push(eq(memoryTable.roomId, params.roomId));\n }\n if (params.worldId) {\n conditions.push(eq(memoryTable.worldId, params.worldId));\n }\n if (params.entityId) {\n conditions.push(eq(memoryTable.entityId, params.entityId));\n }\n\n if (params.match_threshold) {\n conditions.push(gte(similarity, params.match_threshold));\n }\n\n const results = await this.db\n .select({\n memory: memoryTable,\n similarity,\n embedding: embeddingTable[this.embeddingDimension],\n })\n .from(embeddingTable)\n .innerJoin(memoryTable, eq(memoryTable.id, embeddingTable.memoryId))\n .where(and(...conditions))\n .orderBy(desc(similarity))\n .limit(params.count ?? 10);\n\n return results.map((row) => ({\n id: row.memory.id as UUID,\n type: row.memory.type,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n worldId: row.memory.worldId as UUID | undefined, // Include worldId\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ?? undefined,\n similarity: row.similarity,\n }));\n });\n }\n\n /**\n * Asynchronously creates a new memory in the database.\n * @param {Memory & { metadata?: MemoryMetadata }} memory - The memory object to create.\n * @param {string} tableName - The name of the table to create the memory in.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created memory.\n */\n async createMemory(\n memory: Memory & { metadata?: MemoryMetadata },\n tableName: string\n ): Promise<UUID> {\n const memoryId = memory.id ?? (v4() as UUID);\n\n const existing = await this.getMemoryById(memoryId);\n if (existing) {\n return memoryId;\n }\n\n // only do costly check if we need to\n if (memory.unique === undefined) {\n memory.unique = true; // set default\n if (memory.embedding && Array.isArray(memory.embedding)) {\n const similarMemories = await this.searchMemoriesByEmbedding(memory.embedding, {\n tableName,\n // Use the scope fields from the memory object for similarity check\n roomId: memory.roomId,\n worldId: memory.worldId,\n entityId: memory.entityId,\n match_threshold: 0.95,\n count: 1,\n });\n memory.unique = similarMemories.length === 0;\n }\n }\n\n // Ensure we always pass a JSON string to the SQL placeholder – if we pass an\n // object directly PG sees `[object Object]` and fails the `::jsonb` cast.\n const contentToInsert =\n typeof memory.content === 'string' ? memory.content : JSON.stringify(memory.content ?? {});\n\n const metadataToInsert =\n typeof memory.metadata === 'string' ? memory.metadata : JSON.stringify(memory.metadata ?? {});\n\n // Use withIsolationContext to set Entity RLS context if needed\n // This delegates to the concrete adapter implementation (PostgreSQL or PGLite)\n await this.withIsolationContext(memory.entityId, async (tx) => {\n await tx.insert(memoryTable).values([\n {\n id: memoryId,\n type: tableName,\n content: sql`${contentToInsert}::jsonb`,\n metadata: sql`${metadataToInsert}::jsonb`,\n entityId: memory.entityId,\n roomId: memory.roomId,\n worldId: memory.worldId, // Include worldId\n agentId: memory.agentId || this.agentId,\n unique: memory.unique,\n createdAt: memory.createdAt ? new Date(memory.createdAt) : new Date(),\n },\n ]);\n\n if (memory.embedding && Array.isArray(memory.embedding)) {\n const embeddingValues: Record<string, unknown> = {\n id: v4(),\n memoryId: memoryId,\n createdAt: memory.createdAt ? new Date(memory.createdAt) : new Date(),\n };\n\n const cleanVector = memory.embedding.map((n) =>\n Number.isFinite(n) ? Number(n.toFixed(6)) : 0\n );\n\n embeddingValues[this.embeddingDimension] = cleanVector;\n\n await tx.insert(embeddingTable).values([embeddingValues]);\n }\n });\n\n return memoryId;\n }\n\n /**\n * Updates an existing memory in the database.\n * @param memory The memory object with updated content and optional embedding\n * @returns Promise resolving to boolean indicating success\n */\n async updateMemory(\n memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata }\n ): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n await this.db.transaction(async (tx) => {\n // Update memory content if provided\n if (memory.content) {\n const contentToUpdate =\n typeof memory.content === 'string'\n ? memory.content\n : JSON.stringify(memory.content ?? {});\n\n const metadataToUpdate =\n typeof memory.metadata === 'string'\n ? memory.metadata\n : JSON.stringify(memory.metadata ?? {});\n\n await tx\n .update(memoryTable)\n .set({\n content: sql`${contentToUpdate}::jsonb`,\n ...(memory.metadata && { metadata: sql`${metadataToUpdate}::jsonb` }),\n })\n .where(eq(memoryTable.id, memory.id));\n } else if (memory.metadata) {\n // Update only metadata if content is not provided\n const metadataToUpdate =\n typeof memory.metadata === 'string'\n ? memory.metadata\n : JSON.stringify(memory.metadata ?? {});\n\n await tx\n .update(memoryTable)\n .set({\n metadata: sql`${metadataToUpdate}::jsonb`,\n })\n .where(eq(memoryTable.id, memory.id));\n }\n\n // Update embedding if provided\n if (memory.embedding && Array.isArray(memory.embedding)) {\n const cleanVector = memory.embedding.map((n) =>\n Number.isFinite(n) ? Number(n.toFixed(6)) : 0\n );\n\n // Check if embedding exists\n const existingEmbedding = await tx\n .select({ id: embeddingTable.id })\n .from(embeddingTable)\n .where(eq(embeddingTable.memoryId, memory.id))\n .limit(1);\n\n if (existingEmbedding.length > 0) {\n // Update existing embedding\n const updateValues: Record<string, unknown> = {};\n updateValues[this.embeddingDimension] = cleanVector;\n\n await tx\n .update(embeddingTable)\n .set(updateValues)\n .where(eq(embeddingTable.memoryId, memory.id));\n } else {\n // Create new embedding\n const embeddingValues: Record<string, unknown> = {\n id: v4(),\n memoryId: memory.id,\n };\n embeddingValues[this.embeddingDimension] = cleanVector;\n\n await tx.insert(embeddingTable).values([embeddingValues]);\n }\n }\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n memoryId: memory.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to update memory'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously deletes a memory from the database based on the provided parameters.\n * @param {UUID} memoryId - The ID of the memory to delete.\n * @returns {Promise<void>} A Promise that resolves when the memory is deleted.\n */\n async deleteMemory(memoryId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // See if there are any fragments that we need to delete\n await this.deleteMemoryFragments(tx, memoryId);\n\n // Then delete the embedding for the main memory\n await tx.delete(embeddingTable).where(eq(embeddingTable.memoryId, memoryId));\n\n // Finally delete the memory itself\n await tx.delete(memoryTable).where(eq(memoryTable.id, memoryId));\n });\n });\n }\n\n /**\n * Asynchronously deletes multiple memories from the database in a single batch operation.\n * @param {UUID[]} memoryIds - An array of UUIDs of the memories to delete.\n * @returns {Promise<void>} A Promise that resolves when all memories are deleted.\n */\n async deleteManyMemories(memoryIds: UUID[]): Promise<void> {\n if (memoryIds.length === 0) {\n return;\n }\n\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // Process in smaller batches to avoid query size limits\n const BATCH_SIZE = 100;\n for (let i = 0; i < memoryIds.length; i += BATCH_SIZE) {\n const batch = memoryIds.slice(i, i + BATCH_SIZE);\n\n // Delete any fragments for document memories in this batch\n await Promise.all(\n batch.map(async (memoryId) => {\n await this.deleteMemoryFragments(tx, memoryId);\n })\n );\n\n // Delete embeddings for the batch\n await tx.delete(embeddingTable).where(inArray(embeddingTable.memoryId, batch));\n\n // Delete the memories themselves\n await tx.delete(memoryTable).where(inArray(memoryTable.id, batch));\n }\n });\n });\n }\n\n /**\n * Deletes all memory fragments that reference a specific document memory\n * @param tx The database transaction\n * @param documentId The UUID of the document memory whose fragments should be deleted\n * @private\n */\n private async deleteMemoryFragments(tx: DrizzleDatabase, documentId: UUID): Promise<void> {\n const fragmentsToDelete = await this.getMemoryFragments(tx, documentId);\n\n if (fragmentsToDelete.length > 0) {\n const fragmentIds = fragmentsToDelete.map((f) => f.id) as UUID[];\n\n // Delete embeddings for fragments\n await tx.delete(embeddingTable).where(inArray(embeddingTable.memoryId, fragmentIds));\n\n // Delete the fragments\n await tx.delete(memoryTable).where(inArray(memoryTable.id, fragmentIds));\n }\n }\n\n /**\n * Retrieves all memory fragments that reference a specific document memory\n * @param tx The database transaction\n * @param documentId The UUID of the document memory whose fragments should be retrieved\n * @returns An array of memory fragments\n * @private\n */\n private async getMemoryFragments(tx: DrizzleDatabase, documentId: UUID): Promise<{ id: UUID }[]> {\n const fragments = await tx\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(\n and(\n eq(memoryTable.agentId, this.agentId),\n sql`${memoryTable.metadata}->>'documentId' = ${documentId}`\n )\n );\n\n return fragments.map((f) => ({ id: f.id as UUID }));\n }\n\n /**\n * Asynchronously deletes all memories from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to delete memories from.\n * @param {string} tableName - The name of the table to delete memories from.\n * @returns {Promise<void>} A Promise that resolves when the memories are deleted.\n */\n async deleteAllMemories(roomId: UUID, tableName: string): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // 1) fetch all memory IDs for this room + table\n const rows = await tx\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(and(eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)));\n\n const ids = rows.map((r) => r.id);\n logger.debug(\n { src: 'plugin:sql', roomId, tableName, memoryCount: ids.length },\n 'Deleting all memories'\n );\n\n if (ids.length === 0) {\n return;\n }\n\n // 2) delete any fragments for \"document\" memories & their embeddings\n await Promise.all(\n ids.map(async (memoryId) => {\n await this.deleteMemoryFragments(tx, memoryId);\n await tx.delete(embeddingTable).where(eq(embeddingTable.memoryId, memoryId));\n })\n );\n\n // 3) delete the memories themselves\n await tx\n .delete(memoryTable)\n .where(and(eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)));\n });\n });\n }\n\n /**\n * Asynchronously counts the number of memories in the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to count memories in.\n * @param {boolean} [unique] - Whether to count unique memories only.\n * @param {string} [tableName] - The name of the table to count memories in.\n * @returns {Promise<number>} A Promise that resolves to the number of memories.\n */\n async countMemories(roomId: UUID, unique = true, tableName = ''): Promise<number> {\n if (!tableName) throw new Error('tableName is required');\n\n return this.withDatabase(async () => {\n const conditions = [eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)];\n\n if (unique) {\n conditions.push(eq(memoryTable.unique, true));\n }\n\n const result = await this.db\n .select({ count: sql<number>`count(*)` })\n .from(memoryTable)\n .where(and(...conditions));\n\n return Number(result[0]?.count ?? 0);\n });\n }\n\n /**\n * Asynchronously retrieves rooms from the database based on the provided parameters.\n * @param {UUID[]} roomIds - The IDs of the rooms to retrieve.\n * @returns {Promise<Room[] | null>} A Promise that resolves to the rooms if found, null otherwise.\n */\n async getRoomsByIds(roomIds: UUID[]): Promise<Room[] | null> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({\n id: roomTable.id,\n name: roomTable.name, // Added name\n channelId: roomTable.channelId,\n agentId: roomTable.agentId,\n messageServerId: roomTable.messageServerId,\n worldId: roomTable.worldId,\n type: roomTable.type,\n source: roomTable.source,\n metadata: roomTable.metadata, // Added metadata\n })\n .from(roomTable)\n .where(and(inArray(roomTable.id, roomIds), eq(roomTable.agentId, this.agentId)));\n\n // Map the result to properly typed Room objects\n const rooms = result.map((room) => ({\n ...room,\n id: room.id as UUID,\n name: room.name ?? undefined,\n agentId: room.agentId as UUID,\n messageServerId: room.messageServerId as UUID,\n serverId: room.messageServerId as UUID, // Backward compatibility alias\n worldId: room.worldId as UUID,\n channelId: room.channelId as UUID,\n type: room.type as ChannelType,\n metadata: room.metadata as RoomMetadata,\n }));\n\n return rooms;\n });\n }\n\n /**\n * Asynchronously retrieves all rooms from the database based on the provided parameters.\n * @param {UUID} worldId - The ID of the world to retrieve rooms from.\n * @returns {Promise<Room[]>} A Promise that resolves to an array of rooms.\n */\n async getRoomsByWorld(worldId: UUID): Promise<Room[]> {\n return this.withDatabase(async () => {\n const result = await this.db.select().from(roomTable).where(eq(roomTable.worldId, worldId));\n const rooms = result.map((room) => ({\n ...room,\n id: room.id as UUID,\n name: room.name ?? undefined,\n agentId: room.agentId as UUID,\n messageServerId: room.messageServerId as UUID,\n serverId: room.messageServerId as UUID, // Backward compatibility alias\n worldId: room.worldId as UUID,\n channelId: room.channelId as UUID,\n type: room.type as ChannelType,\n metadata: room.metadata as RoomMetadata,\n }));\n return rooms;\n });\n }\n\n /**\n * Asynchronously updates a room in the database based on the provided parameters.\n * @param {Room} room - The room object to update.\n * @returns {Promise<void>} A Promise that resolves when the room is updated.\n */\n async updateRoom(room: Room): Promise<void> {\n return this.withDatabase(async () => {\n await this.db\n .update(roomTable)\n .set({ ...room, agentId: this.agentId })\n .where(eq(roomTable.id, room.id));\n });\n }\n\n /**\n * Asynchronously creates a new room in the database based on the provided parameters.\n * @param {Room} room - The room object to create.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created room.\n */\n async createRooms(rooms: Room[]): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const roomsWithIds = rooms.map((room) => ({\n ...room,\n agentId: this.agentId,\n id: room.id || v4(), // ensure each room has a unique ID\n }));\n\n const insertedRooms = await this.db\n .insert(roomTable)\n .values(roomsWithIds)\n .onConflictDoNothing()\n .returning();\n const insertedIds = insertedRooms.map((r) => r.id as UUID);\n return insertedIds;\n });\n }\n\n /**\n * Asynchronously deletes a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to delete.\n * @returns {Promise<void>} A Promise that resolves when the room is deleted.\n */\n async deleteRoom(roomId: UUID): Promise<void> {\n if (!roomId) throw new Error('Room ID is required');\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n await tx.delete(roomTable).where(eq(roomTable.id, roomId));\n });\n });\n }\n\n /**\n * Asynchronously retrieves all rooms for a participant from the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to retrieve rooms for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of room IDs.\n */\n async getRoomsForParticipant(entityId: UUID): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({ roomId: participantTable.roomId })\n .from(participantTable)\n .innerJoin(roomTable, eq(participantTable.roomId, roomTable.id))\n .where(and(eq(participantTable.entityId, entityId), eq(roomTable.agentId, this.agentId)));\n\n return result.map((row) => row.roomId as UUID);\n });\n }\n\n /**\n * Asynchronously retrieves all rooms for a list of participants from the database based on the provided parameters.\n * @param {UUID[]} entityIds - The IDs of the entities to retrieve rooms for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of room IDs.\n */\n async getRoomsForParticipants(entityIds: UUID[]): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .selectDistinct({ roomId: participantTable.roomId })\n .from(participantTable)\n .innerJoin(roomTable, eq(participantTable.roomId, roomTable.id))\n .where(\n and(inArray(participantTable.entityId, entityIds), eq(roomTable.agentId, this.agentId))\n );\n\n return result.map((row) => row.roomId as UUID);\n });\n }\n\n /**\n * Asynchronously adds a participant to a room in the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to add to the room.\n * @param {UUID} roomId - The ID of the room to add the entity to.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the participant was added successfully.\n */\n async addParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n await this.db\n .insert(participantTable)\n .values({\n entityId,\n roomId,\n agentId: this.agentId,\n })\n .onConflictDoNothing();\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId,\n roomId,\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to add participant to room'\n );\n return false;\n }\n });\n }\n\n async addParticipantsRoom(entityIds: UUID[], roomId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n const values = entityIds.map((id) => ({\n entityId: id,\n roomId,\n agentId: this.agentId,\n }));\n await this.db.insert(participantTable).values(values).onConflictDoNothing().execute();\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n roomId,\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to add participants to room'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously removes a participant from a room in the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to remove from the room.\n * @param {UUID} roomId - The ID of the room to remove the entity from.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the participant was removed successfully.\n */\n async removeParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n const result = await this.db.transaction(async (tx) => {\n return await tx\n .delete(participantTable)\n .where(\n and(eq(participantTable.entityId, entityId), eq(participantTable.roomId, roomId))\n )\n .returning();\n });\n\n const removed = result.length > 0;\n return removed;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId,\n roomId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to remove participant from room'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously retrieves all participants for an entity from the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to retrieve participants for.\n * @returns {Promise<Participant[]>} A Promise that resolves to an array of participants.\n */\n async getParticipantsForEntity(entityId: UUID): Promise<Participant[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({\n id: participantTable.id,\n entityId: participantTable.entityId,\n roomId: participantTable.roomId,\n })\n .from(participantTable)\n .where(eq(participantTable.entityId, entityId));\n\n const entities = await this.getEntitiesByIds([entityId]);\n\n if (!entities || !entities.length) {\n return [];\n }\n\n return result.map((row) => ({\n id: row.id as UUID,\n entity: entities[0],\n }));\n });\n }\n\n /**\n * Asynchronously retrieves all participants for a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to retrieve participants for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of entity IDs.\n */\n async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({ entityId: participantTable.entityId })\n .from(participantTable)\n .where(eq(participantTable.roomId, roomId));\n\n return result.map((row) => row.entityId as UUID);\n });\n }\n\n /**\n * Check if an entity is a participant in a specific room/channel.\n * More efficient than getParticipantsForRoom when only checking membership.\n * @param {UUID} roomId - The ID of the room to check.\n * @param {UUID} entityId - The ID of the entity to check.\n * @returns {Promise<boolean>} A Promise that resolves to true if entity is a participant.\n */\n async isRoomParticipant(roomId: UUID, entityId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(participantTable)\n .where(and(eq(participantTable.roomId, roomId), eq(participantTable.entityId, entityId)))\n .limit(1);\n\n return result.length > 0;\n });\n }\n\n /**\n * Asynchronously retrieves the user state for a participant in a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to retrieve the participant's user state for.\n * @param {UUID} entityId - The ID of the entity to retrieve the user state for.\n * @returns {Promise<\"FOLLOWED\" | \"MUTED\" | null>} A Promise that resolves to the participant's user state.\n */\n async getParticipantUserState(\n roomId: UUID,\n entityId: UUID\n ): Promise<'FOLLOWED' | 'MUTED' | null> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select({ roomState: participantTable.roomState })\n .from(participantTable)\n .where(\n and(\n eq(participantTable.roomId, roomId),\n eq(participantTable.entityId, entityId),\n eq(participantTable.agentId, this.agentId)\n )\n )\n .limit(1);\n\n return (result[0]?.roomState as 'FOLLOWED' | 'MUTED' | null) ?? null;\n });\n }\n\n /**\n * Asynchronously sets the user state for a participant in a room in the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to set the participant's user state for.\n * @param {UUID} entityId - The ID of the entity to set the user state for.\n * @param {string} state - The state to set the participant's user state to.\n * @returns {Promise<void>} A Promise that resolves when the participant's user state is set.\n */\n async setParticipantUserState(\n roomId: UUID,\n entityId: UUID,\n state: 'FOLLOWED' | 'MUTED' | null\n ): Promise<void> {\n return this.withDatabase(async () => {\n try {\n await this.db.transaction(async (tx) => {\n await tx\n .update(participantTable)\n .set({ roomState: state })\n .where(\n and(\n eq(participantTable.roomId, roomId),\n eq(participantTable.entityId, entityId),\n eq(participantTable.agentId, this.agentId)\n )\n );\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n roomId,\n entityId,\n state,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to set participant follow state'\n );\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously creates a new relationship in the database based on the provided parameters.\n * @param {Object} params - The parameters for creating a new relationship.\n * @param {UUID} params.sourceEntityId - The ID of the source entity.\n * @param {UUID} params.targetEntityId - The ID of the target entity.\n * @param {string[]} [params.tags] - The tags for the relationship.\n * @param {Object} [params.metadata] - The metadata for the relationship.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the relationship was created successfully.\n */\n async createRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n tags?: string[];\n metadata?: { [key: string]: unknown };\n }): Promise<boolean> {\n return this.withDatabase(async () => {\n const id = v4();\n const saveParams = {\n id,\n sourceEntityId: params.sourceEntityId,\n targetEntityId: params.targetEntityId,\n agentId: this.agentId,\n tags: params.tags || [],\n metadata: params.metadata || {},\n };\n try {\n await this.db.insert(relationshipTable).values(saveParams);\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n saveParams,\n },\n 'Error creating relationship'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously updates an existing relationship in the database based on the provided parameters.\n * @param {Relationship} relationship - The relationship object to update.\n * @returns {Promise<void>} A Promise that resolves when the relationship is updated.\n */\n async updateRelationship(relationship: Relationship): Promise<void> {\n return this.withDatabase(async () => {\n try {\n await this.db\n .update(relationshipTable)\n .set({\n tags: relationship.tags || [],\n metadata: relationship.metadata || {},\n })\n .where(eq(relationshipTable.id, relationship.id));\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n relationshipId: relationship.id,\n },\n 'Error updating relationship'\n );\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously retrieves a relationship from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving a relationship.\n * @param {UUID} params.sourceEntityId - The ID of the source entity.\n * @param {UUID} params.targetEntityId - The ID of the target entity.\n * @returns {Promise<Relationship | null>} A Promise that resolves to the relationship if found, null otherwise.\n */\n async getRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n }): Promise<Relationship | null> {\n return this.withDatabase(async () => {\n const { sourceEntityId, targetEntityId } = params;\n const result = await this.db\n .select()\n .from(relationshipTable)\n .where(\n and(\n eq(relationshipTable.sourceEntityId, sourceEntityId),\n eq(relationshipTable.targetEntityId, targetEntityId)\n )\n );\n if (result.length === 0) return null;\n const relationship = result[0];\n return {\n ...relationship,\n id: relationship.id as UUID,\n sourceEntityId: relationship.sourceEntityId as UUID,\n targetEntityId: relationship.targetEntityId as UUID,\n agentId: relationship.agentId as UUID,\n tags: relationship.tags ?? [],\n metadata: (relationship.metadata as Record<string, unknown>) ?? {},\n createdAt: relationship.createdAt.toISOString(),\n };\n });\n }\n\n /**\n * Asynchronously retrieves relationships from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving relationships.\n * @param {UUID} params.entityId - The ID of the entity to retrieve relationships for.\n * @param {string[]} [params.tags] - The tags to filter relationships by.\n * @returns {Promise<Relationship[]>} A Promise that resolves to an array of relationships.\n */\n async getRelationships(params: { entityId: UUID; tags?: string[] }): Promise<Relationship[]> {\n return this.withDatabase(async () => {\n const { entityId, tags } = params;\n\n let query: SQL;\n\n if (tags && tags.length > 0) {\n query = sql`\n SELECT * FROM ${relationshipTable}\n WHERE (${relationshipTable.sourceEntityId} = ${entityId} OR ${relationshipTable.targetEntityId} = ${entityId})\n AND ${relationshipTable.tags} && CAST(ARRAY[${sql.join(tags, sql`, `)}] AS text[])\n `;\n } else {\n query = sql`\n SELECT * FROM ${relationshipTable}\n WHERE ${relationshipTable.sourceEntityId} = ${entityId} OR ${relationshipTable.targetEntityId} = ${entityId}\n `;\n }\n\n const result = await this.db.execute(query);\n\n return result.rows.map((relationship: Record<string, unknown>) => ({\n ...relationship,\n id: relationship.id as UUID,\n sourceEntityId: (relationship.source_entity_id || relationship.sourceEntityId) as UUID,\n targetEntityId: (relationship.target_entity_id || relationship.targetEntityId) as UUID,\n agentId: (relationship.agent_id || relationship.agentId) as UUID,\n tags: relationship.tags ?? [],\n metadata: (relationship.metadata as Record<string, unknown>) ?? {},\n createdAt:\n relationship.created_at || relationship.createdAt\n ? (relationship.created_at || relationship.createdAt) instanceof Date\n ? ((relationship.created_at || relationship.createdAt) as Date).toISOString()\n : new Date(\n (relationship.created_at as string) || (relationship.createdAt as string)\n ).toISOString()\n : new Date().toISOString(),\n }));\n });\n }\n\n /**\n * Asynchronously retrieves a cache value from the database based on the provided key.\n * @param {string} key - The key to retrieve the cache value for.\n * @returns {Promise<T | undefined>} A Promise that resolves to the cache value if found, undefined otherwise.\n */\n async getCache<T>(key: string): Promise<T | undefined> {\n return this.withDatabase(async () => {\n try {\n const result = await this.db\n .select({ value: cacheTable.value })\n .from(cacheTable)\n .where(and(eq(cacheTable.agentId, this.agentId), eq(cacheTable.key, key)))\n .limit(1);\n\n if (result && result.length > 0 && result[0]) {\n return result[0].value as T | undefined;\n }\n\n return undefined;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error fetching cache'\n );\n return undefined;\n }\n });\n }\n\n /**\n * Asynchronously sets a cache value in the database based on the provided key and value.\n * @param {string} key - The key to set the cache value for.\n * @param {T} value - The value to set in the cache.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the cache value was set successfully.\n */\n async setCache<T>(key: string, value: T): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n await this.db\n .insert(cacheTable)\n .values({\n key: key,\n agentId: this.agentId,\n value: value,\n })\n .onConflictDoUpdate({\n target: [cacheTable.key, cacheTable.agentId],\n set: {\n value: value,\n },\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error setting cache'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously deletes a cache value from the database based on the provided key.\n * @param {string} key - The key to delete the cache value for.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the cache value was deleted successfully.\n */\n async deleteCache(key: string): Promise<boolean> {\n return this.withDatabase(async () => {\n try {\n await this.db.transaction(async (tx) => {\n await tx\n .delete(cacheTable)\n .where(and(eq(cacheTable.agentId, this.agentId), eq(cacheTable.key, key)));\n });\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error deleting cache'\n );\n return false;\n }\n });\n }\n\n /**\n * Asynchronously creates a new world in the database based on the provided parameters.\n * @param {World} world - The world object to create.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created world.\n */\n async createWorld(world: World): Promise<UUID> {\n return this.withDatabase(async () => {\n const newWorldId = world.id || v4();\n await this.db.insert(worldTable).values({\n ...world,\n id: newWorldId,\n name: world.name || '',\n });\n return newWorldId;\n });\n }\n\n /**\n * Asynchronously retrieves a world from the database based on the provided parameters.\n * @param {UUID} id - The ID of the world to retrieve.\n * @returns {Promise<World | null>} A Promise that resolves to the world if found, null otherwise.\n */\n async getWorld(id: UUID): Promise<World | null> {\n return this.withDatabase(async () => {\n const result = await this.db.select().from(worldTable).where(eq(worldTable.id, id));\n return result.length > 0 ? (result[0] as World) : null;\n });\n }\n\n /**\n * Asynchronously retrieves all worlds from the database based on the provided parameters.\n * @returns {Promise<World[]>} A Promise that resolves to an array of worlds.\n */\n async getAllWorlds(): Promise<World[]> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(worldTable)\n .where(eq(worldTable.agentId, this.agentId));\n return result as World[];\n });\n }\n\n /**\n * Asynchronously updates an existing world in the database based on the provided parameters.\n * @param {World} world - The world object to update.\n * @returns {Promise<void>} A Promise that resolves when the world is updated.\n */\n async updateWorld(world: World): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.update(worldTable).set(world).where(eq(worldTable.id, world.id));\n });\n }\n\n /**\n * Asynchronously removes a world from the database based on the provided parameters.\n * @param {UUID} id - The ID of the world to remove.\n * @returns {Promise<void>} A Promise that resolves when the world is removed.\n */\n async removeWorld(id: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(worldTable).where(eq(worldTable.id, id));\n });\n }\n\n /**\n * Asynchronously creates a new task in the database based on the provided parameters.\n * @param {Task} task - The task object to create.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created task.\n */\n async createTask(task: Task): Promise<UUID> {\n if (!task.worldId) {\n throw new Error('worldId is required');\n }\n return this.withRetry(async () => {\n return this.withDatabase(async () => {\n const now = new Date();\n const metadata = task.metadata || {};\n\n const values = {\n id: task.id as UUID,\n name: task.name,\n description: task.description,\n roomId: task.roomId as UUID,\n worldId: task.worldId as UUID,\n tags: task.tags,\n metadata: metadata,\n createdAt: now,\n updatedAt: now,\n agentId: this.agentId as UUID,\n };\n\n const result = await this.db.insert(taskTable).values(values).returning();\n\n return result[0].id as UUID;\n });\n });\n }\n\n /**\n * Asynchronously retrieves tasks based on specified parameters.\n * @param params Object containing optional roomId, tags, and entityId to filter tasks\n * @returns Promise resolving to an array of Task objects\n */\n async getTasks(params: {\n roomId?: UUID;\n tags?: string[];\n entityId?: UUID; // Added entityId parameter\n }): Promise<Task[]> {\n return this.withRetry(async () => {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(\n and(\n eq(taskTable.agentId, this.agentId),\n ...(params.roomId ? [eq(taskTable.roomId, params.roomId)] : []),\n ...(params.tags && params.tags.length > 0\n ? [\n sql`${taskTable.tags} @> ARRAY[${sql.join(\n params.tags.map((t) => sql`${t}`),\n sql`, `\n )}]::text[]`,\n ]\n : [])\n )\n );\n\n return result.map((row) => ({\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: row.metadata as TaskMetadata,\n }));\n });\n });\n }\n\n /**\n * Asynchronously retrieves a specific task by its name.\n * @param name The name of the task to retrieve\n * @returns Promise resolving to the Task object if found, null otherwise\n */\n async getTasksByName(name: string): Promise<Task[]> {\n return this.withRetry(async () => {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(and(eq(taskTable.name, name), eq(taskTable.agentId, this.agentId)));\n\n return result.map((row) => ({\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: (row.metadata || {}) as TaskMetadata,\n }));\n });\n });\n }\n\n /**\n * Asynchronously retrieves a specific task by its ID.\n * @param id The UUID of the task to retrieve\n * @returns Promise resolving to the Task object if found, null otherwise\n */\n async getTask(id: UUID): Promise<Task | null> {\n return this.withRetry(async () => {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(and(eq(taskTable.id, id), eq(taskTable.agentId, this.agentId)))\n .limit(1);\n\n if (result.length === 0) {\n return null;\n }\n\n const row = result[0];\n return {\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: (row.metadata || {}) as TaskMetadata,\n };\n });\n });\n }\n\n /**\n * Asynchronously updates an existing task in the database.\n * @param id The UUID of the task to update\n * @param task Partial Task object containing the fields to update\n * @returns Promise resolving when the update is complete\n */\n async updateTask(id: UUID, task: Partial<Task>): Promise<void> {\n await this.withRetry(async () => {\n await this.withDatabase(async () => {\n const updateValues: Partial<Task> = {};\n\n // Add fields to update if they exist in the partial task object\n if (task.name !== undefined) updateValues.name = task.name;\n if (task.description !== undefined) updateValues.description = task.description;\n if (task.roomId !== undefined) updateValues.roomId = task.roomId;\n if (task.worldId !== undefined) updateValues.worldId = task.worldId;\n if (task.tags !== undefined) updateValues.tags = task.tags;\n\n // Always update the updatedAt timestamp as a Date\n // Note: Task interface uses number for updatedAt, but database schema uses Date\n interface TaskUpdateValues extends Partial<typeof taskTable.$inferInsert> {\n updatedAt?: Date;\n }\n const dbUpdateValues: TaskUpdateValues = {\n ...updateValues,\n updatedAt: new Date(),\n };\n\n // Handle metadata updates - just set it directly without merging\n if (task.metadata !== undefined) {\n dbUpdateValues.metadata = task.metadata;\n }\n\n await this.db\n .update(taskTable)\n // createdAt is hella borked, number / Date\n .set(dbUpdateValues)\n .where(and(eq(taskTable.id, id), eq(taskTable.agentId, this.agentId)));\n });\n });\n }\n\n /**\n * Asynchronously deletes a task from the database.\n * @param id The UUID of the task to delete\n * @returns Promise resolving when the deletion is complete\n */\n async deleteTask(id: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(taskTable).where(eq(taskTable.id, id));\n });\n }\n\n async getMemoriesByWorldId(params: {\n worldId: UUID;\n count?: number;\n tableName?: string;\n }): Promise<Memory[]> {\n return this.withDatabase(async () => {\n // First, get all rooms for the given worldId\n const rooms = await this.db\n .select({ id: roomTable.id })\n .from(roomTable)\n .where(and(eq(roomTable.worldId, params.worldId), eq(roomTable.agentId, this.agentId)));\n\n if (rooms.length === 0) {\n return [];\n }\n\n const roomIds = rooms.map((room) => room.id as UUID);\n\n const memories = await this.getMemoriesByRoomIds({\n roomIds,\n tableName: params.tableName || 'messages',\n limit: params.count,\n });\n\n return memories;\n });\n }\n\n async deleteRoomsByWorldId(worldId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n const rooms = await this.db\n .select({ id: roomTable.id })\n .from(roomTable)\n .where(and(eq(roomTable.worldId, worldId), eq(roomTable.agentId, this.agentId)));\n\n if (rooms.length === 0) {\n return;\n }\n\n const roomIds = rooms.map((room) => room.id as UUID);\n\n if (roomIds.length > 0) {\n await this.db.delete(logTable).where(inArray(logTable.roomId, roomIds));\n await this.db.delete(participantTable).where(inArray(participantTable.roomId, roomIds));\n\n const memoriesInRooms = await this.db\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(inArray(memoryTable.roomId, roomIds));\n const memoryIdsInRooms = memoriesInRooms.map((m) => m.id as UUID);\n\n if (memoryIdsInRooms.length > 0) {\n await this.db\n .delete(embeddingTable)\n .where(inArray(embeddingTable.memoryId, memoryIdsInRooms));\n await this.db.delete(memoryTable).where(inArray(memoryTable.id, memoryIdsInRooms));\n }\n\n await this.db.delete(roomTable).where(inArray(roomTable.id, roomIds));\n\n logger.debug(\n {\n src: 'plugin:sql',\n worldId,\n roomsDeleted: roomIds.length,\n memoriesDeleted: memoryIdsInRooms.length,\n },\n 'World cleanup completed'\n );\n }\n });\n }\n\n // Message Server Database Operations\n\n /**\n * Creates a new message server in the central database\n */\n async createMessageServer(data: {\n id?: UUID; // Allow passing a specific ID\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n }): Promise<{\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const newId = data.id || (v4() as UUID);\n const now = new Date();\n const serverToInsert = {\n id: newId,\n name: data.name,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n metadata: data.metadata,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.insert(messageServerTable).values(serverToInsert).onConflictDoNothing(); // In case the ID already exists\n\n // If server already existed, fetch it\n if (data.id) {\n const existing = await this.db\n .select()\n .from(messageServerTable)\n .where(eq(messageServerTable.id, data.id))\n .limit(1);\n if (existing.length > 0) {\n return {\n id: existing[0].id as UUID,\n name: existing[0].name,\n sourceType: existing[0].sourceType,\n sourceId: existing[0].sourceId || undefined,\n metadata: existing[0].metadata || undefined,\n createdAt: existing[0].createdAt,\n updatedAt: existing[0].updatedAt,\n };\n }\n }\n\n return serverToInsert;\n });\n }\n\n /**\n * Gets all message servers\n */\n async getMessageServers(): Promise<\n Array<{\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }>\n > {\n const result = await this.withDatabase(async () => {\n const results = await this.db.select().from(messageServerTable);\n return results.map((r) => ({\n id: r.id as UUID,\n name: r.name,\n sourceType: r.sourceType,\n sourceId: r.sourceId || undefined,\n metadata: r.metadata || undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n });\n // Guard against null return\n return result || [];\n }\n\n /**\n * Gets a message server by ID\n */\n async getMessageServerById(serverId: UUID): Promise<{\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n } | null> {\n return this.withDatabase(async () => {\n const results = await this.db\n .select()\n .from(messageServerTable)\n .where(eq(messageServerTable.id, serverId))\n .limit(1);\n return results.length > 0\n ? {\n id: results[0].id as UUID,\n name: results[0].name,\n sourceType: results[0].sourceType,\n sourceId: results[0].sourceId || undefined,\n metadata: results[0].metadata || undefined,\n createdAt: results[0].createdAt,\n updatedAt: results[0].updatedAt,\n }\n : null;\n });\n }\n\n /**\n * Gets a message server by RLS server_id\n * Note: server_id column only exists when RLS is enabled (added dynamically by RLS setup)\n * This is used to find the message_server linked to a specific RLS server instance\n */\n async getMessageServerByRlsServerId(rlsServerId: UUID): Promise<{\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n } | null> {\n return this.withDatabase(async () => {\n // Use raw SQL since server_id column is dynamically added by RLS and not in Drizzle schema\n const results = await this.db.execute(sql`\n SELECT id, name, source_type, source_id, metadata, created_at, updated_at\n FROM message_servers\n WHERE server_id = ${rlsServerId}\n LIMIT 1\n `);\n\n const rows = results.rows || results;\n return rows.length > 0\n ? {\n id: rows[0].id as UUID,\n name: rows[0].name,\n sourceType: rows[0].source_type,\n sourceId: rows[0].source_id || undefined,\n metadata: rows[0].metadata || undefined,\n createdAt: new Date(rows[0].created_at),\n updatedAt: new Date(rows[0].updated_at),\n }\n : null;\n });\n }\n\n /**\n * Creates a new channel\n */\n async createChannel(\n data: {\n id?: UUID; // Allow passing a specific ID\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n },\n participantIds?: UUID[]\n ): Promise<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const newId = data.id || (v4() as UUID);\n const now = new Date();\n const channelToInsert = {\n id: newId,\n messageServerId: data.messageServerId,\n name: data.name,\n type: data.type,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n topic: data.topic,\n metadata: data.metadata,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.transaction(async (tx) => {\n await tx.insert(channelTable).values(channelToInsert);\n\n if (participantIds && participantIds.length > 0) {\n const participantValues = participantIds.map((entityId) => ({\n channelId: newId,\n entityId: entityId,\n }));\n await tx.insert(channelParticipantsTable).values(participantValues).onConflictDoNothing();\n }\n });\n\n return channelToInsert;\n });\n }\n\n /**\n * Gets channels for a message server\n */\n async getChannelsForMessageServer(messageServerId: UUID): Promise<\n Array<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }>\n > {\n return this.withDatabase(async () => {\n const results = await this.db\n .select()\n .from(channelTable)\n .where(eq(channelTable.messageServerId, messageServerId));\n return results.map((r) => ({\n id: r.id as UUID,\n messageServerId: r.messageServerId as UUID,\n name: r.name,\n type: r.type,\n sourceType: r.sourceType || undefined,\n sourceId: r.sourceId || undefined,\n topic: r.topic || undefined,\n metadata: r.metadata || undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n });\n }\n\n /**\n * Gets channel details\n */\n async getChannelDetails(channelId: UUID): Promise<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n } | null> {\n return this.withDatabase(async () => {\n const results = await this.db\n .select()\n .from(channelTable)\n .where(eq(channelTable.id, channelId))\n .limit(1);\n return results.length > 0\n ? {\n id: results[0].id as UUID,\n messageServerId: results[0].messageServerId as UUID,\n name: results[0].name,\n type: results[0].type,\n sourceType: results[0].sourceType || undefined,\n sourceId: results[0].sourceId || undefined,\n topic: results[0].topic || undefined,\n metadata: results[0].metadata || undefined,\n createdAt: results[0].createdAt,\n updatedAt: results[0].updatedAt,\n }\n : null;\n });\n }\n\n /**\n * Creates a message\n */\n async createMessage(data: {\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n messageId?: UUID;\n }): Promise<{\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const newId = data.messageId || (v4() as UUID);\n const now = new Date();\n const messageToInsert = {\n id: newId,\n channelId: data.channelId,\n authorId: data.authorId,\n content: data.content,\n rawMessage: data.rawMessage,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n metadata: data.metadata,\n inReplyToRootMessageId: data.inReplyToRootMessageId,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.insert(messageTable).values(messageToInsert);\n return messageToInsert;\n });\n }\n\n async getMessageById(id: UUID): Promise<{\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const rows = await this.db\n .select()\n .from(messageTable)\n .where(eq(messageTable.id, id))\n .limit(1);\n return rows?.[0] ?? null;\n });\n }\n\n async updateMessage(\n id: UUID,\n patch: {\n content?: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n }\n ): Promise<{\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n } | null> {\n return this.withDatabase(async () => {\n const existing = await this.getMessageById(id);\n if (!existing) return null;\n\n const updatedAt = new Date();\n const next = {\n content: patch.content ?? existing.content,\n rawMessage: patch.rawMessage ?? existing.rawMessage,\n sourceType: patch.sourceType ?? existing.sourceType,\n sourceId: patch.sourceId ?? existing.sourceId,\n metadata: patch.metadata ?? existing.metadata,\n inReplyToRootMessageId: patch.inReplyToRootMessageId ?? existing.inReplyToRootMessageId,\n updatedAt,\n };\n\n await this.db.update(messageTable).set(next).where(eq(messageTable.id, id));\n\n // Return merged object\n return {\n ...existing,\n ...next,\n };\n });\n }\n\n /**\n * Gets messages for a channel\n */\n async getMessagesForChannel(\n channelId: UUID,\n limit: number = 50,\n beforeTimestamp?: Date\n ): Promise<\n Array<{\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n }>\n > {\n return this.withDatabase(async () => {\n const conditions = [eq(messageTable.channelId, channelId)];\n if (beforeTimestamp) {\n conditions.push(lt(messageTable.createdAt, beforeTimestamp));\n }\n\n const query = this.db\n .select()\n .from(messageTable)\n .where(and(...conditions))\n .orderBy(desc(messageTable.createdAt))\n .limit(limit);\n\n const results = await query;\n return results.map((r) => ({\n id: r.id as UUID,\n channelId: r.channelId as UUID,\n authorId: r.authorId as UUID,\n content: r.content,\n rawMessage: r.rawMessage || undefined,\n sourceType: r.sourceType || undefined,\n sourceId: r.sourceId || undefined,\n metadata: r.metadata || undefined,\n inReplyToRootMessageId: r.inReplyToRootMessageId as UUID | undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n });\n }\n\n /**\n * Deletes a message\n */\n async deleteMessage(messageId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.delete(messageTable).where(eq(messageTable.id, messageId));\n });\n }\n\n /**\n * Updates a channel\n */\n async updateChannel(\n channelId: UUID,\n updates: { name?: string; participantCentralUserIds?: UUID[]; metadata?: Metadata }\n ): Promise<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const now = new Date();\n\n await this.db.transaction(async (tx) => {\n // Update channel details\n const updateData: Record<string, unknown> = { updatedAt: now };\n if (updates.name !== undefined) updateData.name = updates.name;\n if (updates.metadata !== undefined) updateData.metadata = updates.metadata;\n\n await tx.update(channelTable).set(updateData).where(eq(channelTable.id, channelId));\n\n // Update participants if provided\n if (updates.participantCentralUserIds !== undefined) {\n // Remove existing participants\n await tx\n .delete(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n // Add new participants\n if (updates.participantCentralUserIds.length > 0) {\n const participantValues = updates.participantCentralUserIds.map((entityId) => ({\n channelId: channelId,\n entityId: entityId,\n }));\n await tx\n .insert(channelParticipantsTable)\n .values(participantValues)\n .onConflictDoNothing();\n }\n }\n });\n\n // Return updated channel details\n const updatedChannel = await this.getChannelDetails(channelId);\n if (!updatedChannel) {\n throw new Error(`Channel ${channelId} not found after update`);\n }\n return updatedChannel;\n });\n }\n\n /**\n * Deletes a channel and all its associated data\n */\n async deleteChannel(channelId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db.transaction(async (tx) => {\n // Delete all messages in the channel (cascade delete will handle this, but explicit is better)\n await tx.delete(messageTable).where(eq(messageTable.channelId, channelId));\n\n // Delete all participants (cascade delete will handle this, but explicit is better)\n await tx\n .delete(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n // Delete the channel itself\n await tx.delete(channelTable).where(eq(channelTable.id, channelId));\n });\n });\n }\n\n /**\n * Adds participants to a channel\n */\n async addChannelParticipants(channelId: UUID, entityIds: UUID[]): Promise<void> {\n return this.withDatabase(async () => {\n if (!entityIds || entityIds.length === 0) return;\n\n const participantValues = entityIds.map((entityId) => ({\n channelId: channelId,\n entityId: entityId,\n }));\n\n await this.db\n .insert(channelParticipantsTable)\n .values(participantValues)\n .onConflictDoNothing();\n });\n }\n\n /**\n * Gets participants for a channel\n */\n async getChannelParticipants(channelId: UUID): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const results = await this.db\n .select({ entityId: channelParticipantsTable.entityId })\n .from(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n return results.map((r) => r.entityId as UUID);\n });\n }\n\n /**\n * Check if an entity is a participant in a specific messaging channel.\n * @param {UUID} channelId - The ID of the channel to check.\n * @param {UUID} entityId - The ID of the entity to check.\n * @returns {Promise<boolean>} A Promise that resolves to true if entity is a participant.\n */\n async isChannelParticipant(channelId: UUID, entityId: UUID): Promise<boolean> {\n return this.withDatabase(async () => {\n const result = await this.db\n .select()\n .from(channelParticipantsTable)\n .where(\n and(\n eq(channelParticipantsTable.channelId, channelId),\n eq(channelParticipantsTable.entityId, entityId)\n )\n )\n .limit(1);\n\n return result.length > 0;\n });\n }\n\n /**\n * Adds an agent to a message server (Discord/Telegram server)\n */\n async addAgentToMessageServer(messageServerId: UUID, agentId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db\n .insert(messageServerAgentsTable)\n .values({\n messageServerId,\n agentId,\n })\n .onConflictDoNothing();\n });\n }\n\n /**\n * Gets agents for a message server (Discord/Telegram server)\n */\n async getAgentsForMessageServer(messageServerId: UUID): Promise<UUID[]> {\n return this.withDatabase(async () => {\n const results = await this.db\n .select({ agentId: messageServerAgentsTable.agentId })\n .from(messageServerAgentsTable)\n .where(eq(messageServerAgentsTable.messageServerId, messageServerId));\n\n return results.map((r) => r.agentId as UUID);\n });\n }\n\n /**\n * Removes an agent from a message server (Discord/Telegram server)\n */\n async removeAgentFromMessageServer(messageServerId: UUID, agentId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n await this.db\n .delete(messageServerAgentsTable)\n .where(\n and(\n eq(messageServerAgentsTable.messageServerId, messageServerId),\n eq(messageServerAgentsTable.agentId, agentId)\n )\n );\n });\n }\n\n /**\n * Finds or creates a DM channel between two users\n */\n async findOrCreateDmChannel(\n user1Id: UUID,\n user2Id: UUID,\n messageServerId: UUID\n ): Promise<{\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n }> {\n return this.withDatabase(async () => {\n const ids = [user1Id, user2Id].sort();\n const dmChannelName = `DM-${ids[0]}-${ids[1]}`;\n\n const existingChannels = await this.db\n .select()\n .from(channelTable)\n .where(\n and(\n eq(channelTable.type, ChannelType.DM),\n eq(channelTable.name, dmChannelName),\n eq(channelTable.messageServerId, messageServerId)\n )\n )\n .limit(1);\n\n if (existingChannels.length > 0) {\n return {\n id: existingChannels[0].id as UUID,\n messageServerId: existingChannels[0].messageServerId as UUID,\n name: existingChannels[0].name,\n type: existingChannels[0].type,\n sourceType: existingChannels[0].sourceType || undefined,\n sourceId: existingChannels[0].sourceId || undefined,\n topic: existingChannels[0].topic || undefined,\n metadata: existingChannels[0].metadata || undefined,\n createdAt: existingChannels[0].createdAt,\n updatedAt: existingChannels[0].updatedAt,\n };\n }\n\n // Create new DM channel\n return this.createChannel(\n {\n messageServerId,\n name: dmChannelName,\n type: ChannelType.DM,\n metadata: { user1: ids[0], user2: ids[1] },\n },\n ids\n );\n });\n }\n}\n\n// Import tables at the end to avoid circular dependencies\n",
|
|
122
141
|
"import { sql } from 'drizzle-orm';\nimport { check, foreignKey, index, pgTable, timestamp, uuid, vector } from 'drizzle-orm/pg-core';\nimport { VECTOR_DIMS } from '@elizaos/core';\nimport { memoryTable } from './memory';\n\nexport const DIMENSION_MAP = {\n [VECTOR_DIMS.SMALL]: 'dim384',\n [VECTOR_DIMS.MEDIUM]: 'dim512',\n [VECTOR_DIMS.LARGE]: 'dim768',\n [VECTOR_DIMS.XL]: 'dim1024',\n [VECTOR_DIMS.XXL]: 'dim1536',\n [VECTOR_DIMS.XXXL]: 'dim3072',\n} as const;\n\n/**\n * Definition of the embeddings table in the database.\n * Contains columns for ID, Memory ID, Creation Timestamp, and multiple vector dimensions.\n */\nexport const embeddingTable = pgTable(\n 'embeddings',\n {\n id: uuid('id').primaryKey().defaultRandom().notNull(),\n memoryId: uuid('memory_id').references(() => memoryTable.id, { onDelete: 'cascade' }),\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n dim384: vector('dim_384', { dimensions: VECTOR_DIMS.SMALL }),\n dim512: vector('dim_512', { dimensions: VECTOR_DIMS.MEDIUM }),\n dim768: vector('dim_768', { dimensions: VECTOR_DIMS.LARGE }),\n dim1024: vector('dim_1024', { dimensions: VECTOR_DIMS.XL }),\n dim1536: vector('dim_1536', { dimensions: VECTOR_DIMS.XXL }),\n dim3072: vector('dim_3072', { dimensions: VECTOR_DIMS.XXXL }),\n },\n (table) => [\n check('embedding_source_check', sql`\"memory_id\" IS NOT NULL`),\n index('idx_embedding_memory').on(table.memoryId),\n foreignKey({\n name: 'fk_embedding_memory',\n columns: [table.memoryId],\n foreignColumns: [memoryTable.id],\n }).onDelete('cascade'),\n ]\n);\n\n/**\n * Defines the possible values for the Embedding Dimension Column.\n * It can be \"dim384\", \"dim512\", \"dim768\", \"dim1024\", \"dim1536\", or \"dim3072\".\n */\nexport type EmbeddingDimensionColumn =\n | 'dim384'\n | 'dim512'\n | 'dim768'\n | 'dim1024'\n | 'dim1536'\n | 'dim3072';\n\n/**\n * Retrieve the type of a specific column in the EmbeddingTable based on the EmbeddingDimensionColumn key.\n */\nexport type EmbeddingTableColumn = (typeof embeddingTable._.columns)[EmbeddingDimensionColumn];\n",
|
|
123
142
|
"import { relations, sql } from 'drizzle-orm';\nimport {\n boolean,\n check,\n foreignKey,\n index,\n jsonb,\n pgTable,\n text,\n timestamp,\n uuid,\n} from 'drizzle-orm/pg-core';\nimport { agentTable } from './agent';\nimport { embeddingTable } from './embedding';\nimport { entityTable } from './entity';\nimport { roomTable } from './room';\n\n/**\n * Definition of the memory table in the database.\n *\n * @param {string} tableName - The name of the table.\n * @param {object} columns - An object containing the column definitions.\n * @param {function} indexes - A function that defines the indexes for the table.\n * @returns {object} - The memory table object.\n */\nexport const memoryTable = pgTable(\n 'memories',\n {\n id: uuid('id').primaryKey().notNull(),\n type: text('type').notNull(),\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n content: jsonb('content').notNull(),\n entityId: uuid('entity_id').references(() => entityTable.id, {\n onDelete: 'cascade',\n }),\n agentId: uuid('agent_id')\n .references(() => agentTable.id, {\n onDelete: 'cascade',\n })\n .notNull(),\n roomId: uuid('room_id').references(() => roomTable.id, {\n onDelete: 'cascade',\n }),\n worldId: uuid('world_id'),\n // .references(() => worldTable.id, {\n // onDelete: 'set null',\n // }),\n unique: boolean('unique').default(true).notNull(),\n metadata: jsonb('metadata').default({}).notNull(),\n },\n (table) => [\n index('idx_memories_type_room').on(table.type, table.roomId),\n index('idx_memories_world_id').on(table.worldId),\n foreignKey({\n name: 'fk_room',\n columns: [table.roomId],\n foreignColumns: [roomTable.id],\n }).onDelete('cascade'),\n foreignKey({\n name: 'fk_user',\n columns: [table.entityId],\n foreignColumns: [entityTable.id],\n }).onDelete('cascade'),\n foreignKey({\n name: 'fk_agent',\n columns: [table.agentId],\n foreignColumns: [agentTable.id],\n }).onDelete('cascade'),\n // foreignKey({\n // name: 'fk_world',\n // columns: [table.worldId],\n // foreignColumns: [worldTable.id],\n // }).onDelete('set null'),\n index('idx_memories_metadata_type').on(sql`((metadata->>'type'))`),\n index('idx_memories_document_id').on(sql`((metadata->>'documentId'))`),\n index('idx_fragments_order').on(\n sql`((metadata->>'documentId'))`,\n sql`((metadata->>'position'))`\n ),\n check(\n 'fragment_metadata_check',\n sql`\n CASE \n WHEN metadata->>'type' = 'fragment' THEN\n metadata ? 'documentId' AND \n metadata ? 'position'\n ELSE true\n END\n `\n ),\n check(\n 'document_metadata_check',\n sql`\n CASE \n WHEN metadata->>'type' = 'document' THEN\n metadata ? 'timestamp'\n ELSE true\n END\n `\n ),\n ]\n);\n\nexport const memoryRelations = relations(memoryTable, ({ one }) => ({\n embedding: one(embeddingTable),\n}));\n",
|
|
124
143
|
"import { sql } from 'drizzle-orm';\nimport { jsonb, pgTable, text, timestamp, unique, uuid } from 'drizzle-orm/pg-core';\nimport { agentTable } from './agent';\n\n/**\n * Represents an entity table in the database.\n * Includes columns for id, agentId, createdAt, names, and metadata.\n */\nexport const entityTable = pgTable(\n 'entities',\n {\n id: uuid('id').notNull().primaryKey(),\n agentId: uuid('agent_id')\n .notNull()\n .references(() => agentTable.id, {\n onDelete: 'cascade',\n }),\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n names: text('names')\n .array()\n .default(sql`'{}'::text[]`)\n .notNull(),\n metadata: jsonb('metadata')\n .default(sql`'{}'::jsonb`)\n .notNull(),\n },\n (table) => {\n return {\n idAgentIdUnique: unique('id_agent_id_unique').on(table.id, table.agentId),\n };\n }\n);\n",
|
|
@@ -137,13 +156,19 @@
|
|
|
137
156
|
"import { pgTable, text, primaryKey } from 'drizzle-orm/pg-core';\nimport { channelTable } from './channel';\n\nexport const channelParticipantsTable = pgTable(\n 'channel_participants',\n {\n channelId: text('channel_id')\n .notNull()\n .references(() => channelTable.id, { onDelete: 'cascade' }),\n entityId: text('entity_id').notNull(), // Entity UUID (can be an agentId or a dedicated central user ID)\n },\n (table) => [primaryKey({ columns: [table.channelId, table.entityId] })]\n);\n",
|
|
138
157
|
"import { pgTable, uuid, primaryKey } from 'drizzle-orm/pg-core';\nimport { messageServerTable } from './messageServer';\nimport { agentTable } from './agent';\n\nexport const messageServerAgentsTable = pgTable(\n 'message_server_agents',\n {\n messageServerId: uuid('message_server_id')\n .notNull()\n .references(() => messageServerTable.id, { onDelete: 'cascade' }),\n agentId: uuid('agent_id')\n .notNull()\n .references(() => agentTable.id, { onDelete: 'cascade' }),\n },\n (table) => [primaryKey({ columns: [table.messageServerId, table.agentId] })]\n);\n",
|
|
139
158
|
"import { PGlite, type PGliteOptions } from '@electric-sql/pglite';\nimport { fuzzystrmatch } from '@electric-sql/pglite/contrib/fuzzystrmatch';\nimport { vector } from '@electric-sql/pglite/vector';\nimport type { IDatabaseClientManager } from '../types';\n\n/**\n * Class representing a database client manager for PGlite.\n * @implements { IDatabaseClientManager }\n */\nexport class PGliteClientManager implements IDatabaseClientManager<PGlite> {\n private client: PGlite;\n private shuttingDown = false;\n\n /**\n * Constructor for creating a new instance of PGlite with the provided options.\n * Initializes the PGlite client with additional extensions.\n * @param {PGliteOptions} options - The options to configure the PGlite client.\n */\n constructor(options: PGliteOptions) {\n this.client = new PGlite({\n ...options,\n extensions: {\n vector,\n fuzzystrmatch,\n },\n });\n this.setupShutdownHandlers();\n }\n\n public getConnection(): PGlite {\n return this.client;\n }\n\n public isShuttingDown(): boolean {\n return this.shuttingDown;\n }\n\n public async initialize(): Promise<void> {\n // Kept for backward compatibility\n }\n\n public async close(): Promise<void> {\n this.shuttingDown = true;\n // Actually close the PGLite client to release file locks and cleanup resources\n // Without this, the WAL files remain locked and deleting the data directory\n // causes ENOENT errors when subsequent tests try to access it\n if (this.client) {\n try {\n await this.client.close();\n } catch {}\n }\n }\n\n private setupShutdownHandlers() {\n // Implementation of setupShutdownHandlers method\n }\n}\n",
|
|
140
|
-
"import { type UUID, logger, Agent, Entity, Memory, Component } from '@elizaos/core';\nimport type { NodePgDatabase } from 'drizzle-orm/node-postgres';\nimport { BaseDrizzleAdapter } from '../base';\nimport { DIMENSION_MAP, type EmbeddingDimensionColumn } from '../schema/embedding';\nimport type { PostgresConnectionManager } from './manager';\n\n/**\n * Adapter class for interacting with a PostgreSQL database.\n * Extends BaseDrizzleAdapter.\n */\nexport class PgDatabaseAdapter extends BaseDrizzleAdapter {\n protected embeddingDimension: EmbeddingDimensionColumn = DIMENSION_MAP[384];\n private manager: PostgresConnectionManager;\n\n constructor(\n agentId: UUID,\n manager: PostgresConnectionManager,\n _schema?: Record<string, unknown>\n ) {\n super(agentId);\n this.manager = manager;\n this.db = manager.getDatabase();\n }\n\n getManager(): PostgresConnectionManager {\n return this.manager;\n }\n\n /**\n * Execute a callback with
|
|
159
|
+
"import { type UUID, logger, Agent, Entity, Memory, Component } from '@elizaos/core';\nimport type { NodePgDatabase } from 'drizzle-orm/node-postgres';\nimport { BaseDrizzleAdapter } from '../base';\nimport { DIMENSION_MAP, type EmbeddingDimensionColumn } from '../schema/embedding';\nimport type { PostgresConnectionManager } from './manager';\n\n/**\n * Adapter class for interacting with a PostgreSQL database.\n * Extends BaseDrizzleAdapter.\n */\nexport class PgDatabaseAdapter extends BaseDrizzleAdapter {\n protected embeddingDimension: EmbeddingDimensionColumn = DIMENSION_MAP[384];\n private manager: PostgresConnectionManager;\n\n constructor(\n agentId: UUID,\n manager: PostgresConnectionManager,\n _schema?: Record<string, unknown>\n ) {\n super(agentId);\n this.manager = manager;\n this.db = manager.getDatabase();\n }\n\n getManager(): PostgresConnectionManager {\n return this.manager;\n }\n\n /**\n * Execute a callback with full isolation context (Server RLS + Entity RLS).\n */\n public async withIsolationContext<T>(\n entityId: UUID | null,\n callback: (tx: NodePgDatabase) => Promise<T>\n ): Promise<T> {\n return await this.manager.withIsolationContext(entityId, callback);\n }\n\n // Methods required by TypeScript but not in base class\n async getEntityByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n // Delegate to the correct method name\n return this.getEntitiesByIds(entityIds);\n }\n\n async getMemoriesByServerId(_params: { serverId: UUID; count?: number }): Promise<Memory[]> {\n // This method doesn't seem to exist in the base implementation\n // Provide a basic implementation that returns empty array\n logger.warn({ src: 'plugin:sql' }, 'getMemoriesByServerId called but not implemented');\n return [];\n }\n\n async ensureAgentExists(agent: Partial<Agent>): Promise<Agent> {\n // Check if agent exists, create if not\n const existingAgent = await this.getAgent(this.agentId);\n if (existingAgent) {\n return existingAgent;\n }\n\n // Create the agent with required fields\n const newAgent: Agent = {\n id: this.agentId,\n name: agent.name || 'Unknown Agent',\n username: agent.username,\n bio: agent.bio || 'An AI agent',\n createdAt: agent.createdAt || Date.now(),\n updatedAt: agent.updatedAt || Date.now(),\n };\n\n await this.createAgent(newAgent);\n const createdAgent = await this.getAgent(this.agentId);\n if (!createdAgent) {\n throw new Error('Failed to create agent');\n }\n return createdAgent;\n }\n\n /**\n * Executes the provided operation with a database connection.\n *\n * This method uses the shared pool-based database instance from the manager.\n * The pg Pool handles connection management internally, automatically acquiring\n * and releasing connections for each query. This avoids race conditions that\n * could occur with manual client management and shared state.\n *\n * Note: The this.db instance is set once in the constructor from manager.getDatabase()\n * and is backed by a connection pool, so concurrent operations are safe.\n *\n * @template T\n * @param {() => Promise<T>} operation - The operation to be executed with the database connection.\n * @returns {Promise<T>} A promise that resolves with the result of the operation.\n */\n protected async withDatabase<T>(operation: () => Promise<T>): Promise<T> {\n return await this.withRetry(async () => {\n // Use the pool-based database instance from the manager\n // The pool handles connection acquisition/release internally for each query\n // This avoids the race condition of manually managing this.db state\n return await operation();\n });\n }\n\n /**\n * Asynchronously initializes the PgDatabaseAdapter by running migrations using the manager.\n * Logs a success message if initialization is successful, otherwise logs an error message.\n *\n * @returns {Promise<void>} A promise that resolves when initialization is complete.\n */\n async init(): Promise<void> {\n logger.debug({ src: 'plugin:sql' }, 'PgDatabaseAdapter initialized');\n }\n\n /**\n * Checks if the database connection is ready and active.\n * @returns {Promise<boolean>} A Promise that resolves to true if the connection is healthy.\n */\n async isReady(): Promise<boolean> {\n return this.manager.testConnection();\n }\n\n /**\n * Asynchronously closes the manager associated with this instance.\n *\n * @returns A Promise that resolves once the manager is closed.\n */\n async close(): Promise<void> {\n await this.manager.close();\n }\n\n /**\n * Asynchronously retrieves the connection from the manager.\n *\n * @returns {Promise<Pool>} A Promise that resolves with the connection.\n */\n async getConnection() {\n return this.manager.getConnection();\n }\n\n async createAgent(agent: Agent): Promise<boolean> {\n return super.createAgent(agent);\n }\n\n getAgent(agentId: UUID): Promise<Agent | null> {\n return super.getAgent(agentId);\n }\n\n updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n return super.updateAgent(agentId, agent);\n }\n\n deleteAgent(agentId: UUID): Promise<boolean> {\n return super.deleteAgent(agentId);\n }\n\n createEntities(entities: Entity[]): Promise<boolean> {\n return super.createEntities(entities);\n }\n\n getEntitiesByIds(entityIds: UUID[]): Promise<Entity[]> {\n return super.getEntitiesByIds(entityIds).then((result) => result || []);\n }\n\n updateEntity(entity: Entity): Promise<void> {\n return super.updateEntity(entity);\n }\n\n createMemory(memory: Memory, tableName: string): Promise<UUID> {\n return super.createMemory(memory, tableName);\n }\n\n getMemoryById(memoryId: UUID): Promise<Memory | null> {\n return super.getMemoryById(memoryId);\n }\n\n updateMemory(memory: Partial<Memory> & { id: UUID }): Promise<boolean> {\n return super.updateMemory(memory);\n }\n\n deleteMemory(memoryId: UUID): Promise<void> {\n return super.deleteMemory(memoryId);\n }\n\n createComponent(component: Component): Promise<boolean> {\n return super.createComponent(component);\n }\n\n getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n return super.getComponent(entityId, type, worldId, sourceEntityId);\n }\n\n updateComponent(component: Component): Promise<void> {\n return super.updateComponent(component);\n }\n\n deleteComponent(componentId: UUID): Promise<void> {\n return super.deleteComponent(componentId);\n }\n}\n",
|
|
141
160
|
"import pg from \"pg\";\nimport { entityKind } from \"../entity.js\";\nimport { DefaultLogger } from \"../logger.js\";\nimport { PgDatabase } from \"../pg-core/db.js\";\nimport { PgDialect } from \"../pg-core/dialect.js\";\nimport {\n createTableRelationsHelpers,\n extractTablesRelationalConfig\n} from \"../relations.js\";\nimport { isConfig } from \"../utils.js\";\nimport { NodePgSession } from \"./session.js\";\nclass NodePgDriver {\n constructor(client, dialect, options = {}) {\n this.client = client;\n this.dialect = dialect;\n this.options = options;\n }\n static [entityKind] = \"NodePgDriver\";\n createSession(schema) {\n return new NodePgSession(this.client, this.dialect, schema, {\n logger: this.options.logger,\n cache: this.options.cache\n });\n }\n}\nclass NodePgDatabase extends PgDatabase {\n static [entityKind] = \"NodePgDatabase\";\n}\nfunction construct(client, config = {}) {\n const dialect = new PgDialect({ casing: config.casing });\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n let schema;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(\n config.schema,\n createTableRelationsHelpers\n );\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n const driver = new NodePgDriver(client, dialect, { logger, cache: config.cache });\n const session = driver.createSession(schema);\n const db = new NodePgDatabase(dialect, session, schema);\n db.$client = client;\n db.$cache = config.cache;\n if (db.$cache) {\n db.$cache[\"invalidate\"] = config.cache?.onMutate;\n }\n return db;\n}\nfunction drizzle(...params) {\n if (typeof params[0] === \"string\") {\n const instance = new pg.Pool({\n connectionString: params[0]\n });\n return construct(instance, params[1]);\n }\n if (isConfig(params[0])) {\n const { connection, client, ...drizzleConfig } = params[0];\n if (client) return construct(client, drizzleConfig);\n const instance = typeof connection === \"string\" ? new pg.Pool({\n connectionString: connection\n }) : new pg.Pool(connection);\n return construct(instance, drizzleConfig);\n }\n return construct(params[0], params[1]);\n}\n((drizzle2) => {\n function mock(config) {\n return construct({}, config);\n }\n drizzle2.mock = mock;\n})(drizzle || (drizzle = {}));\nexport {\n NodePgDatabase,\n NodePgDriver,\n drizzle\n};\n//# sourceMappingURL=driver.js.map",
|
|
142
161
|
"import pg from \"pg\";\nimport { NoopCache } from \"../cache/core/index.js\";\nimport { entityKind } from \"../entity.js\";\nimport { NoopLogger } from \"../logger.js\";\nimport { PgTransaction } from \"../pg-core/index.js\";\nimport { PgPreparedQuery, PgSession } from \"../pg-core/session.js\";\nimport { fillPlaceholders, sql } from \"../sql/sql.js\";\nimport { tracer } from \"../tracing.js\";\nimport { mapResultRow } from \"../utils.js\";\nconst { Pool, types } = pg;\nconst NativePool = pg.native ? pg.native.Pool : void 0;\nclass NodePgPreparedQuery extends PgPreparedQuery {\n constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, name, _isResponseInArrayMode, customResultMapper) {\n super({ sql: queryString, params }, cache, queryMetadata, cacheConfig);\n this.client = client;\n this.queryString = queryString;\n this.params = params;\n this.logger = logger;\n this.fields = fields;\n this._isResponseInArrayMode = _isResponseInArrayMode;\n this.customResultMapper = customResultMapper;\n this.rawQueryConfig = {\n name,\n text: queryString,\n types: {\n // @ts-ignore\n getTypeParser: (typeId, format) => {\n if (typeId === types.builtins.TIMESTAMPTZ) {\n return (val) => val;\n }\n if (typeId === types.builtins.TIMESTAMP) {\n return (val) => val;\n }\n if (typeId === types.builtins.DATE) {\n return (val) => val;\n }\n if (typeId === types.builtins.INTERVAL) {\n return (val) => val;\n }\n if (typeId === 1231) {\n return (val) => val;\n }\n if (typeId === 1115) {\n return (val) => val;\n }\n if (typeId === 1185) {\n return (val) => val;\n }\n if (typeId === 1187) {\n return (val) => val;\n }\n if (typeId === 1182) {\n return (val) => val;\n }\n return types.getTypeParser(typeId, format);\n }\n }\n };\n this.queryConfig = {\n name,\n text: queryString,\n rowMode: \"array\",\n types: {\n // @ts-ignore\n getTypeParser: (typeId, format) => {\n if (typeId === types.builtins.TIMESTAMPTZ) {\n return (val) => val;\n }\n if (typeId === types.builtins.TIMESTAMP) {\n return (val) => val;\n }\n if (typeId === types.builtins.DATE) {\n return (val) => val;\n }\n if (typeId === types.builtins.INTERVAL) {\n return (val) => val;\n }\n if (typeId === 1231) {\n return (val) => val;\n }\n if (typeId === 1115) {\n return (val) => val;\n }\n if (typeId === 1185) {\n return (val) => val;\n }\n if (typeId === 1187) {\n return (val) => val;\n }\n if (typeId === 1182) {\n return (val) => val;\n }\n return types.getTypeParser(typeId, format);\n }\n }\n };\n }\n static [entityKind] = \"NodePgPreparedQuery\";\n rawQueryConfig;\n queryConfig;\n async execute(placeholderValues = {}) {\n return tracer.startActiveSpan(\"drizzle.execute\", async () => {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n const { fields, rawQueryConfig: rawQuery, client, queryConfig: query, joinsNotNullableMap, customResultMapper } = this;\n if (!fields && !customResultMapper) {\n return tracer.startActiveSpan(\"drizzle.driver.execute\", async (span) => {\n span?.setAttributes({\n \"drizzle.query.name\": rawQuery.name,\n \"drizzle.query.text\": rawQuery.text,\n \"drizzle.query.params\": JSON.stringify(params)\n });\n return this.queryWithCache(rawQuery.text, params, async () => {\n return await client.query(rawQuery, params);\n });\n });\n }\n const result = await tracer.startActiveSpan(\"drizzle.driver.execute\", (span) => {\n span?.setAttributes({\n \"drizzle.query.name\": query.name,\n \"drizzle.query.text\": query.text,\n \"drizzle.query.params\": JSON.stringify(params)\n });\n return this.queryWithCache(query.text, params, async () => {\n return await client.query(query, params);\n });\n });\n return tracer.startActiveSpan(\"drizzle.mapResponse\", () => {\n return customResultMapper ? customResultMapper(result.rows) : result.rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));\n });\n });\n }\n all(placeholderValues = {}) {\n return tracer.startActiveSpan(\"drizzle.execute\", () => {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return tracer.startActiveSpan(\"drizzle.driver.execute\", (span) => {\n span?.setAttributes({\n \"drizzle.query.name\": this.rawQueryConfig.name,\n \"drizzle.query.text\": this.rawQueryConfig.text,\n \"drizzle.query.params\": JSON.stringify(params)\n });\n return this.queryWithCache(this.rawQueryConfig.text, params, async () => {\n return this.client.query(this.rawQueryConfig, params);\n }).then((result) => result.rows);\n });\n });\n }\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\nclass NodePgSession extends PgSession {\n constructor(client, dialect, schema, options = {}) {\n super(dialect);\n this.client = client;\n this.schema = schema;\n this.options = options;\n this.logger = options.logger ?? new NoopLogger();\n this.cache = options.cache ?? new NoopCache();\n }\n static [entityKind] = \"NodePgSession\";\n logger;\n cache;\n prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {\n return new NodePgPreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n this.cache,\n queryMetadata,\n cacheConfig,\n fields,\n name,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n async transaction(transaction, config) {\n const session = this.client instanceof Pool || NativePool && this.client instanceof NativePool ? new NodePgSession(await this.client.connect(), this.dialect, this.schema, this.options) : this;\n const tx = new NodePgTransaction(this.dialect, session, this.schema);\n await tx.execute(sql`begin${config ? sql` ${tx.getTransactionConfigSQL(config)}` : void 0}`);\n try {\n const result = await transaction(tx);\n await tx.execute(sql`commit`);\n return result;\n } catch (error) {\n await tx.execute(sql`rollback`);\n throw error;\n } finally {\n if (this.client instanceof Pool || NativePool && this.client instanceof NativePool) {\n session.client.release();\n }\n }\n }\n async count(sql2) {\n const res = await this.execute(sql2);\n return Number(\n res[\"rows\"][0][\"count\"]\n );\n }\n}\nclass NodePgTransaction extends PgTransaction {\n static [entityKind] = \"NodePgTransaction\";\n async transaction(transaction) {\n const savepointName = `sp${this.nestedIndex + 1}`;\n const tx = new NodePgTransaction(\n this.dialect,\n this.session,\n this.schema,\n this.nestedIndex + 1\n );\n await tx.execute(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = await transaction(tx);\n await tx.execute(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (err) {\n await tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n throw err;\n }\n }\n}\nexport {\n NodePgPreparedQuery,\n NodePgSession,\n NodePgTransaction\n};\n//# sourceMappingURL=session.js.map",
|
|
143
|
-
"import { drizzle, type NodePgDatabase } from 'drizzle-orm/node-postgres';\nimport { Pool, type PoolClient, type PoolConfig } from 'pg';\nimport { sql } from 'drizzle-orm';\nimport { logger, type UUID, validateUuid } from '@elizaos/core';\n\nexport class PostgresConnectionManager {\n private pool: Pool;\n private db: NodePgDatabase;\n\n constructor(connectionString: string, rlsServerId?: string) {\n // Production-optimized pool configuration\n // See: https://node-postgres.com/apis/pool\n const poolConfig: PoolConfig = {\n connectionString,\n\n // Pool sizing - conservative defaults suitable for most deployments\n // For multi-instance deployments, ensure: max * instances < database connection limit\n max: 20,\n min: 2,\n\n // Timeouts\n // CRITICAL: connectionTimeoutMillis defaults to 0 (infinite) which can hang forever\n idleTimeoutMillis: 30000, // 30s - balance between cleanup and reconnection overhead\n connectionTimeoutMillis: 5000, // 5s - prevents indefinite hangs if DB is unreachable\n\n // Connection health - essential for cloud environments (Railway, AWS, Heroku, etc.)\n // Cloud load balancers/firewalls often terminate idle connections silently\n keepAlive: true,\n keepAliveInitialDelayMillis: 10000,\n };\n\n
|
|
144
|
-
"import
|
|
162
|
+
"import { drizzle, type NodePgDatabase } from 'drizzle-orm/node-postgres';\nimport { Pool, type PoolClient, type PoolConfig } from 'pg';\nimport { sql } from 'drizzle-orm';\nimport { logger, type UUID, validateUuid } from '@elizaos/core';\n\nexport class PostgresConnectionManager {\n private pool: Pool;\n private db: NodePgDatabase;\n private _closed = false;\n private readonly connectionString: string;\n private readonly rlsServerId?: string;\n\n constructor(connectionString: string, rlsServerId?: string) {\n this.connectionString = connectionString;\n this.rlsServerId = rlsServerId;\n // Production-optimized pool configuration\n // See: https://node-postgres.com/apis/pool\n const poolConfig: PoolConfig = {\n connectionString,\n\n // Pool sizing - conservative defaults suitable for most deployments\n // For multi-instance deployments, ensure: max * instances < database connection limit\n max: 20,\n min: 2,\n\n // Timeouts\n // CRITICAL: connectionTimeoutMillis defaults to 0 (infinite) which can hang forever\n idleTimeoutMillis: 30000, // 30s - balance between cleanup and reconnection overhead\n connectionTimeoutMillis: 5000, // 5s - prevents indefinite hangs if DB is unreachable\n\n // Connection health - essential for cloud environments (Railway, AWS, Heroku, etc.)\n // Cloud load balancers/firewalls often terminate idle connections silently\n keepAlive: true,\n keepAliveInitialDelayMillis: 10000,\n };\n\n this.pool = new Pool(poolConfig);\n\n // CRITICAL: Handle pool errors to prevent Node.js process crashes\n // When an idle client encounters an error (DB restart, network partition, etc.),\n // the pool emits 'error'. Without a handler, this crashes the process.\n // The pool automatically removes and replaces the failed connection.\n this.pool.on('error', (err) => {\n logger.warn(\n { src: 'plugin:sql', error: err?.message || String(err) },\n 'Pool client error (connection will be replaced)'\n );\n });\n\n this.db = drizzle(this.pool, { casing: 'snake_case' });\n }\n\n public getDatabase(): NodePgDatabase {\n return this.db;\n }\n\n public getConnection(): Pool {\n return this.pool;\n }\n\n public async getClient(): Promise<PoolClient> {\n return this.pool.connect();\n }\n\n public async testConnection(): Promise<boolean> {\n let client: PoolClient | null = null;\n try {\n client = await this.pool.connect();\n await client.query('SELECT 1');\n return true;\n } catch (error) {\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Failed to connect to the database'\n );\n return false;\n } finally {\n if (client) {\n client.release();\n }\n }\n }\n\n /**\n * Execute a query with full isolation context (Server RLS + Entity RLS).\n * Uses set_config() with parameterized queries for proper SQL injection protection.\n */\n public async withIsolationContext<T>(\n entityId: UUID | null,\n callback: (tx: NodePgDatabase) => Promise<T>\n ): Promise<T> {\n const dataIsolationEnabled = process.env.ENABLE_DATA_ISOLATION === 'true';\n\n return await this.db.transaction(async (tx) => {\n if (dataIsolationEnabled) {\n // Set server context (Server RLS) using parameterized set_config()\n if (this.rlsServerId) {\n await tx.execute(sql`SELECT set_config('app.server_id', ${this.rlsServerId}, true)`);\n }\n\n // Set entity context (Entity RLS) using parameterized set_config()\n if (entityId) {\n if (!validateUuid(entityId)) {\n throw new Error(`Invalid UUID format for entity context: ${entityId}`);\n }\n await tx.execute(sql`SELECT set_config('app.entity_id', ${entityId}, true)`);\n }\n }\n\n return await callback(tx);\n });\n }\n\n /**\n * Closes the connection pool.\n * After calling close(), the manager is unusable and isClosed() returns true.\n * The singleton pattern in index.node.ts will detect this and recreate the manager.\n * @returns {Promise<void>}\n * @memberof PostgresConnectionManager\n */\n public async close(): Promise<void> {\n if (this._closed) return;\n this._closed = true;\n await this.pool.end();\n }\n\n /**\n * Check if the connection pool has been closed.\n * Used by the singleton pattern to detect stale managers after close().\n */\n public isClosed(): boolean {\n return this._closed;\n }\n\n /**\n * Get the connection string for this manager.\n * Used when recreating a manager after it was closed.\n */\n public getConnectionString(): string {\n return this.connectionString;\n }\n\n /**\n * Get the RLS server ID for this manager.\n * Used when recreating a manager after it was closed.\n */\n public getRlsServerId(): string | undefined {\n return this.rlsServerId;\n }\n}\n",
|
|
163
|
+
"import { type UUID, logger, Agent, Entity, Memory, Component } from '@elizaos/core';\nimport type { NeonDatabase } from 'drizzle-orm/neon-serverless';\nimport { BaseDrizzleAdapter } from '../base';\nimport { DIMENSION_MAP, type EmbeddingDimensionColumn } from '../schema/embedding';\nimport type { NeonConnectionManager } from './manager';\n\n/**\n * Adapter class for interacting with a Neon Serverless database.\n * Extends BaseDrizzleAdapter and uses @neondatabase/serverless driver.\n *\n * Benefits:\n * - Optimized for serverless environments (Vercel, Cloudflare, etc.)\n * - Connection pooling handled at Neon's edge proxy\n * - Better cold start performance\n * - WebSocket-based connections\n */\nexport class NeonDatabaseAdapter extends BaseDrizzleAdapter {\n protected embeddingDimension: EmbeddingDimensionColumn = DIMENSION_MAP[384];\n private manager: NeonConnectionManager;\n\n constructor(agentId: UUID, manager: NeonConnectionManager, _schema?: Record<string, unknown>) {\n super(agentId);\n this.manager = manager;\n // Cast to any because NeonDatabase and NodePgDatabase have compatible APIs\n // but TypeScript doesn't know that\n this.db = manager.getDatabase() as any;\n }\n\n getManager(): NeonConnectionManager {\n return this.manager;\n }\n\n /**\n * Execute a callback with full isolation context (Server RLS + Entity RLS).\n */\n public async withIsolationContext<T>(\n entityId: UUID | null,\n callback: (tx: NeonDatabase) => Promise<T>\n ): Promise<T> {\n return await this.manager.withIsolationContext(entityId, callback);\n }\n\n async getEntityByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n return this.getEntitiesByIds(entityIds);\n }\n\n async getMemoriesByServerId(_params: { serverId: UUID; count?: number }): Promise<Memory[]> {\n logger.warn({ src: 'plugin:sql:neon' }, 'getMemoriesByServerId called but not implemented');\n return [];\n }\n\n async ensureAgentExists(agent: Partial<Agent>): Promise<Agent> {\n const existingAgent = await this.getAgent(this.agentId);\n if (existingAgent) {\n return existingAgent;\n }\n\n const newAgent: Agent = {\n id: this.agentId,\n name: agent.name || 'Unknown Agent',\n username: agent.username,\n bio: agent.bio || 'An AI agent',\n createdAt: agent.createdAt || Date.now(),\n updatedAt: agent.updatedAt || Date.now(),\n };\n\n await this.createAgent(newAgent);\n const createdAgent = await this.getAgent(this.agentId);\n if (!createdAgent) {\n throw new Error('Failed to create agent');\n }\n return createdAgent;\n }\n\n protected async withDatabase<T>(operation: () => Promise<T>): Promise<T> {\n return await this.withRetry(async () => {\n return await operation();\n });\n }\n\n async init(): Promise<void> {\n logger.debug({ src: 'plugin:sql:neon' }, 'NeonDatabaseAdapter initialized');\n }\n\n async isReady(): Promise<boolean> {\n return this.manager.testConnection();\n }\n\n async close(): Promise<void> {\n await this.manager.close();\n }\n\n async getConnection() {\n return this.manager.getConnection();\n }\n\n async createAgent(agent: Agent): Promise<boolean> {\n return super.createAgent(agent);\n }\n\n getAgent(agentId: UUID): Promise<Agent | null> {\n return super.getAgent(agentId);\n }\n\n updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n return super.updateAgent(agentId, agent);\n }\n\n deleteAgent(agentId: UUID): Promise<boolean> {\n return super.deleteAgent(agentId);\n }\n\n createEntities(entities: Entity[]): Promise<boolean> {\n return super.createEntities(entities);\n }\n\n getEntitiesByIds(entityIds: UUID[]): Promise<Entity[]> {\n return super.getEntitiesByIds(entityIds).then((result) => result || []);\n }\n\n updateEntity(entity: Entity): Promise<void> {\n return super.updateEntity(entity);\n }\n\n createMemory(memory: Memory, tableName: string): Promise<UUID> {\n return super.createMemory(memory, tableName);\n }\n\n getMemoryById(memoryId: UUID): Promise<Memory | null> {\n return super.getMemoryById(memoryId);\n }\n\n updateMemory(memory: Partial<Memory> & { id: UUID }): Promise<boolean> {\n return super.updateMemory(memory);\n }\n\n deleteMemory(memoryId: UUID): Promise<void> {\n return super.deleteMemory(memoryId);\n }\n\n createComponent(component: Component): Promise<boolean> {\n return super.createComponent(component);\n }\n\n getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n return super.getComponent(entityId, type, worldId, sourceEntityId);\n }\n\n updateComponent(component: Component): Promise<void> {\n return super.updateComponent(component);\n }\n\n deleteComponent(componentId: UUID): Promise<void> {\n return super.deleteComponent(componentId);\n }\n}\n",
|
|
164
|
+
"/* @ts-self-types=\"./index.d.mts\" */\nvar So=Object.create;var Ie=Object.defineProperty;var Eo=Object.getOwnPropertyDescriptor;var Ao=Object.getOwnPropertyNames;var Co=Object.getPrototypeOf,_o=Object.prototype.hasOwnProperty;var Io=(r,e,t)=>e in r?Ie(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var a=(r,e)=>Ie(r,\"name\",{value:e,configurable:!0});var G=(r,e)=>()=>(r&&(e=r(r=0)),e);var T=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ie=(r,e)=>{for(var t in e)Ie(r,t,{get:e[t],\nenumerable:!0})},Dn=(r,e,t,n)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of Ao(e))!_o.\ncall(r,i)&&i!==t&&Ie(r,i,{get:()=>e[i],enumerable:!(n=Eo(e,i))||n.enumerable});return r};var Se=(r,e,t)=>(t=r!=null?So(Co(r)):{},Dn(e||!r||!r.__esModule?Ie(t,\"default\",{value:r,enumerable:!0}):\nt,r)),O=r=>Dn(Ie({},\"__esModule\",{value:!0}),r);var E=(r,e,t)=>Io(r,typeof e!=\"symbol\"?e+\"\":e,t);var Qn=T(lt=>{\"use strict\";p();lt.byteLength=Po;lt.toByteArray=Ro;lt.fromByteArray=ko;var ae=[],te=[],\nTo=typeof Uint8Array<\"u\"?Uint8Array:Array,qt=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01\\\n23456789+/\";for(Ee=0,On=qt.length;Ee<On;++Ee)ae[Ee]=qt[Ee],te[qt.charCodeAt(Ee)]=Ee;var Ee,On;te[45]=\n62;te[95]=63;function qn(r){var e=r.length;if(e%4>0)throw new Error(\"Invalid string. Length must be \\\na multiple of 4\");var t=r.indexOf(\"=\");t===-1&&(t=e);var n=t===e?0:4-t%4;return[t,n]}a(qn,\"getLens\");\nfunction Po(r){var e=qn(r),t=e[0],n=e[1];return(t+n)*3/4-n}a(Po,\"byteLength\");function Bo(r,e,t){return(e+\nt)*3/4-t}a(Bo,\"_byteLength\");function Ro(r){var e,t=qn(r),n=t[0],i=t[1],s=new To(Bo(r,n,i)),o=0,u=i>\n0?n-4:n,c;for(c=0;c<u;c+=4)e=te[r.charCodeAt(c)]<<18|te[r.charCodeAt(c+1)]<<12|te[r.charCodeAt(c+2)]<<\n6|te[r.charCodeAt(c+3)],s[o++]=e>>16&255,s[o++]=e>>8&255,s[o++]=e&255;return i===2&&(e=te[r.charCodeAt(\nc)]<<2|te[r.charCodeAt(c+1)]>>4,s[o++]=e&255),i===1&&(e=te[r.charCodeAt(c)]<<10|te[r.charCodeAt(c+1)]<<\n4|te[r.charCodeAt(c+2)]>>2,s[o++]=e>>8&255,s[o++]=e&255),s}a(Ro,\"toByteArray\");function Lo(r){return ae[r>>\n18&63]+ae[r>>12&63]+ae[r>>6&63]+ae[r&63]}a(Lo,\"tripletToBase64\");function Fo(r,e,t){for(var n,i=[],s=e;s<\nt;s+=3)n=(r[s]<<16&16711680)+(r[s+1]<<8&65280)+(r[s+2]&255),i.push(Lo(n));return i.join(\"\")}a(Fo,\"en\\\ncodeChunk\");function ko(r){for(var e,t=r.length,n=t%3,i=[],s=16383,o=0,u=t-n;o<u;o+=s)i.push(Fo(r,o,\no+s>u?u:o+s));return n===1?(e=r[t-1],i.push(ae[e>>2]+ae[e<<4&63]+\"==\")):n===2&&(e=(r[t-2]<<8)+r[t-1],\ni.push(ae[e>>10]+ae[e>>4&63]+ae[e<<2&63]+\"=\")),i.join(\"\")}a(ko,\"fromByteArray\")});var Nn=T(Qt=>{p();Qt.read=function(r,e,t,n,i){var s,o,u=i*8-n-1,c=(1<<u)-1,l=c>>1,f=-7,y=t?i-1:0,g=t?\n-1:1,A=r[e+y];for(y+=g,s=A&(1<<-f)-1,A>>=-f,f+=u;f>0;s=s*256+r[e+y],y+=g,f-=8);for(o=s&(1<<-f)-1,s>>=\n-f,f+=n;f>0;o=o*256+r[e+y],y+=g,f-=8);if(s===0)s=1-l;else{if(s===c)return o?NaN:(A?-1:1)*(1/0);o=o+Math.\npow(2,n),s=s-l}return(A?-1:1)*o*Math.pow(2,s-n)};Qt.write=function(r,e,t,n,i,s){var o,u,c,l=s*8-i-1,\nf=(1<<l)-1,y=f>>1,g=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,A=n?0:s-1,C=n?1:-1,D=e<0||e===0&&1/e<0?\n1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,o=f):(o=Math.floor(Math.log(e)/Math.LN2),e*(c=\nMath.pow(2,-o))<1&&(o--,c*=2),o+y>=1?e+=g/c:e+=g*Math.pow(2,1-y),e*c>=2&&(o++,c/=2),o+y>=f?(u=0,o=f):\no+y>=1?(u=(e*c-1)*Math.pow(2,i),o=o+y):(u=e*Math.pow(2,y-1)*Math.pow(2,i),o=0));i>=8;r[t+A]=u&255,A+=\nC,u/=256,i-=8);for(o=o<<i|u,l+=i;l>0;r[t+A]=o&255,A+=C,o/=256,l-=8);r[t+A-C]|=D*128}});var ii=T(Re=>{\"use strict\";p();var Nt=Qn(),Pe=Nn(),Wn=typeof Symbol==\"function\"&&typeof Symbol.for==\n\"function\"?Symbol.for(\"nodejs.util.inspect.custom\"):null;Re.Buffer=h;Re.SlowBuffer=Qo;Re.INSPECT_MAX_BYTES=\n50;var ft=2147483647;Re.kMaxLength=ft;h.TYPED_ARRAY_SUPPORT=Mo();!h.TYPED_ARRAY_SUPPORT&&typeof console<\n\"u\"&&typeof console.error==\"function\"&&console.error(\"This browser lacks typed array (Uint8Array) su\\\npport which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");function Mo(){\ntry{let r=new Uint8Array(1),e={foo:a(function(){return 42},\"foo\")};return Object.setPrototypeOf(e,Uint8Array.\nprototype),Object.setPrototypeOf(r,e),r.foo()===42}catch{return!1}}a(Mo,\"typedArraySupport\");Object.\ndefineProperty(h.prototype,\"parent\",{enumerable:!0,get:a(function(){if(h.isBuffer(this))return this.\nbuffer},\"get\")});Object.defineProperty(h.prototype,\"offset\",{enumerable:!0,get:a(function(){if(h.isBuffer(\nthis))return this.byteOffset},\"get\")});function he(r){if(r>ft)throw new RangeError('The value \"'+r+'\\\n\" is invalid for option \"size\"');let e=new Uint8Array(r);return Object.setPrototypeOf(e,h.prototype),\ne}a(he,\"createBuffer\");function h(r,e,t){if(typeof r==\"number\"){if(typeof e==\"string\")throw new TypeError(\n'The \"string\" argument must be of type string. Received type number');return $t(r)}return Gn(r,e,t)}\na(h,\"Buffer\");h.poolSize=8192;function Gn(r,e,t){if(typeof r==\"string\")return Do(r,e);if(ArrayBuffer.\nisView(r))return Oo(r);if(r==null)throw new TypeError(\"The first argument must be one of type string\\\n, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof r);if(ue(r,ArrayBuffer)||\nr&&ue(r.buffer,ArrayBuffer)||typeof SharedArrayBuffer<\"u\"&&(ue(r,SharedArrayBuffer)||r&&ue(r.buffer,\nSharedArrayBuffer)))return jt(r,e,t);if(typeof r==\"number\")throw new TypeError('The \"value\" argument\\\n must not be of type number. Received type number');let n=r.valueOf&&r.valueOf();if(n!=null&&n!==r)return h.\nfrom(n,e,t);let i=qo(r);if(i)return i;if(typeof Symbol<\"u\"&&Symbol.toPrimitive!=null&&typeof r[Symbol.\ntoPrimitive]==\"function\")return h.from(r[Symbol.toPrimitive](\"string\"),e,t);throw new TypeError(\"The\\\n first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Receiv\\\ned type \"+typeof r)}a(Gn,\"from\");h.from=function(r,e,t){return Gn(r,e,t)};Object.setPrototypeOf(h.prototype,\nUint8Array.prototype);Object.setPrototypeOf(h,Uint8Array);function Vn(r){if(typeof r!=\"number\")throw new TypeError(\n'\"size\" argument must be of type number');if(r<0)throw new RangeError('The value \"'+r+'\" is invalid \\\nfor option \"size\"')}a(Vn,\"assertSize\");function Uo(r,e,t){return Vn(r),r<=0?he(r):e!==void 0?typeof t==\n\"string\"?he(r).fill(e,t):he(r).fill(e):he(r)}a(Uo,\"alloc\");h.alloc=function(r,e,t){return Uo(r,e,t)};\nfunction $t(r){return Vn(r),he(r<0?0:Gt(r)|0)}a($t,\"allocUnsafe\");h.allocUnsafe=function(r){return $t(\nr)};h.allocUnsafeSlow=function(r){return $t(r)};function Do(r,e){if((typeof e!=\"string\"||e===\"\")&&(e=\n\"utf8\"),!h.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);let t=zn(r,e)|0,n=he(t),i=n.write(\nr,e);return i!==t&&(n=n.slice(0,i)),n}a(Do,\"fromString\");function Wt(r){let e=r.length<0?0:Gt(r.length)|\n0,t=he(e);for(let n=0;n<e;n+=1)t[n]=r[n]&255;return t}a(Wt,\"fromArrayLike\");function Oo(r){if(ue(r,Uint8Array)){\nlet e=new Uint8Array(r);return jt(e.buffer,e.byteOffset,e.byteLength)}return Wt(r)}a(Oo,\"fromArrayVi\\\new\");function jt(r,e,t){if(e<0||r.byteLength<e)throw new RangeError('\"offset\" is outside of buffer b\\\nounds');if(r.byteLength<e+(t||0))throw new RangeError('\"length\" is outside of buffer bounds');let n;\nreturn e===void 0&&t===void 0?n=new Uint8Array(r):t===void 0?n=new Uint8Array(r,e):n=new Uint8Array(\nr,e,t),Object.setPrototypeOf(n,h.prototype),n}a(jt,\"fromArrayBuffer\");function qo(r){if(h.isBuffer(r)){\nlet e=Gt(r.length)|0,t=he(e);return t.length===0||r.copy(t,0,0,e),t}if(r.length!==void 0)return typeof r.\nlength!=\"number\"||zt(r.length)?he(0):Wt(r);if(r.type===\"Buffer\"&&Array.isArray(r.data))return Wt(r.data)}\na(qo,\"fromObject\");function Gt(r){if(r>=ft)throw new RangeError(\"Attempt to allocate Buffer larger t\\\nhan maximum size: 0x\"+ft.toString(16)+\" bytes\");return r|0}a(Gt,\"checked\");function Qo(r){return+r!=\nr&&(r=0),h.alloc(+r)}a(Qo,\"SlowBuffer\");h.isBuffer=a(function(e){return e!=null&&e._isBuffer===!0&&e!==\nh.prototype},\"isBuffer\");h.compare=a(function(e,t){if(ue(e,Uint8Array)&&(e=h.from(e,e.offset,e.byteLength)),\nue(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(e)||!h.isBuffer(t))throw new TypeError(\n'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let n=e.length,\ni=t.length;for(let s=0,o=Math.min(n,i);s<o;++s)if(e[s]!==t[s]){n=e[s],i=t[s];break}return n<i?-1:i<n?\n1:0},\"compare\");h.isEncoding=a(function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"\\\nutf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"\\\nutf-16le\":return!0;default:return!1}},\"isEncoding\");h.concat=a(function(e,t){if(!Array.isArray(e))throw new TypeError(\n'\"list\" argument must be an Array of Buffers');if(e.length===0)return h.alloc(0);let n;if(t===void 0)\nfor(t=0,n=0;n<e.length;++n)t+=e[n].length;let i=h.allocUnsafe(t),s=0;for(n=0;n<e.length;++n){let o=e[n];\nif(ue(o,Uint8Array))s+o.length>i.length?(h.isBuffer(o)||(o=h.from(o)),o.copy(i,s)):Uint8Array.prototype.\nset.call(i,o,s);else if(h.isBuffer(o))o.copy(i,s);else throw new TypeError('\"list\" argument must be \\\nan Array of Buffers');s+=o.length}return i},\"concat\");function zn(r,e){if(h.isBuffer(r))return r.length;\nif(ArrayBuffer.isView(r)||ue(r,ArrayBuffer))return r.byteLength;if(typeof r!=\"string\")throw new TypeError(\n'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof r);\nlet t=r.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&t===0)return 0;let i=!1;for(;;)switch(e){case\"\\\nascii\":case\"latin1\":case\"binary\":return t;case\"utf8\":case\"utf-8\":return Ht(r).length;case\"ucs2\":case\"\\\nucs-2\":case\"utf16le\":case\"utf-16le\":return t*2;case\"hex\":return t>>>1;case\"base64\":return ni(r).length;default:\nif(i)return n?-1:Ht(r).length;e=(\"\"+e).toLowerCase(),i=!0}}a(zn,\"byteLength\");h.byteLength=zn;function No(r,e,t){\nlet n=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=\n0)||(t>>>=0,e>>>=0,t<=e))return\"\";for(r||(r=\"utf8\");;)switch(r){case\"hex\":return Zo(this,e,t);case\"u\\\ntf8\":case\"utf-8\":return Yn(this,e,t);case\"ascii\":return Ko(this,e,t);case\"latin1\":case\"binary\":return Yo(\nthis,e,t);case\"base64\":return Vo(this,e,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return Jo(\nthis,e,t);default:if(n)throw new TypeError(\"Unknown encoding: \"+r);r=(r+\"\").toLowerCase(),n=!0}}a(No,\n\"slowToString\");h.prototype._isBuffer=!0;function Ae(r,e,t){let n=r[e];r[e]=r[t],r[t]=n}a(Ae,\"swap\");\nh.prototype.swap16=a(function(){let e=this.length;if(e%2!==0)throw new RangeError(\"Buffer size must \\\nbe a multiple of 16-bits\");for(let t=0;t<e;t+=2)Ae(this,t,t+1);return this},\"swap16\");h.prototype.swap32=\na(function(){let e=this.length;if(e%4!==0)throw new RangeError(\"Buffer size must be a multiple of 32\\\n-bits\");for(let t=0;t<e;t+=4)Ae(this,t,t+3),Ae(this,t+1,t+2);return this},\"swap32\");h.prototype.swap64=\na(function(){let e=this.length;if(e%8!==0)throw new RangeError(\"Buffer size must be a multiple of 64\\\n-bits\");for(let t=0;t<e;t+=8)Ae(this,t,t+7),Ae(this,t+1,t+6),Ae(this,t+2,t+5),Ae(this,t+3,t+4);return this},\n\"swap64\");h.prototype.toString=a(function(){let e=this.length;return e===0?\"\":arguments.length===0?Yn(\nthis,0,e):No.apply(this,arguments)},\"toString\");h.prototype.toLocaleString=h.prototype.toString;h.prototype.\nequals=a(function(e){if(!h.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===\ne?!0:h.compare(this,e)===0},\"equals\");h.prototype.inspect=a(function(){let e=\"\",t=Re.INSPECT_MAX_BYTES;\nreturn e=this.toString(\"hex\",0,t).replace(/(.{2})/g,\"$1 \").trim(),this.length>t&&(e+=\" ... \"),\"<Buff\\\ner \"+e+\">\"},\"inspect\");Wn&&(h.prototype[Wn]=h.prototype.inspect);h.prototype.compare=a(function(e,t,n,i,s){\nif(ue(e,Uint8Array)&&(e=h.from(e,e.offset,e.byteLength)),!h.isBuffer(e))throw new TypeError('The \"ta\\\nrget\" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=\n0),n===void 0&&(n=e?e.length:0),i===void 0&&(i=0),s===void 0&&(s=this.length),t<0||n>e.length||i<0||\ns>this.length)throw new RangeError(\"out of range index\");if(i>=s&&t>=n)return 0;if(i>=s)return-1;if(t>=\nn)return 1;if(t>>>=0,n>>>=0,i>>>=0,s>>>=0,this===e)return 0;let o=s-i,u=n-t,c=Math.min(o,u),l=this.slice(\ni,s),f=e.slice(t,n);for(let y=0;y<c;++y)if(l[y]!==f[y]){o=l[y],u=f[y];break}return o<u?-1:u<o?1:0},\"\\\ncompare\");function Kn(r,e,t,n,i){if(r.length===0)return-1;if(typeof t==\"string\"?(n=t,t=0):t>2147483647?\nt=2147483647:t<-2147483648&&(t=-2147483648),t=+t,zt(t)&&(t=i?0:r.length-1),t<0&&(t=r.length+t),t>=r.\nlength){if(i)return-1;t=r.length-1}else if(t<0)if(i)t=0;else return-1;if(typeof e==\"string\"&&(e=h.from(\ne,n)),h.isBuffer(e))return e.length===0?-1:jn(r,e,t,n,i);if(typeof e==\"number\")return e=e&255,typeof Uint8Array.\nprototype.indexOf==\"function\"?i?Uint8Array.prototype.indexOf.call(r,e,t):Uint8Array.prototype.lastIndexOf.\ncall(r,e,t):jn(r,[e],t,n,i);throw new TypeError(\"val must be string, number or Buffer\")}a(Kn,\"bidire\\\nctionalIndexOf\");function jn(r,e,t,n,i){let s=1,o=r.length,u=e.length;if(n!==void 0&&(n=String(n).toLowerCase(),\nn===\"ucs2\"||n===\"ucs-2\"||n===\"utf16le\"||n===\"utf-16le\")){if(r.length<2||e.length<2)return-1;s=2,o/=2,\nu/=2,t/=2}function c(f,y){return s===1?f[y]:f.readUInt16BE(y*s)}a(c,\"read\");let l;if(i){let f=-1;for(l=\nt;l<o;l++)if(c(r,l)===c(e,f===-1?0:l-f)){if(f===-1&&(f=l),l-f+1===u)return f*s}else f!==-1&&(l-=l-f),\nf=-1}else for(t+u>o&&(t=o-u),l=t;l>=0;l--){let f=!0;for(let y=0;y<u;y++)if(c(r,l+y)!==c(e,y)){f=!1;break}\nif(f)return l}return-1}a(jn,\"arrayIndexOf\");h.prototype.includes=a(function(e,t,n){return this.indexOf(\ne,t,n)!==-1},\"includes\");h.prototype.indexOf=a(function(e,t,n){return Kn(this,e,t,n,!0)},\"indexOf\");\nh.prototype.lastIndexOf=a(function(e,t,n){return Kn(this,e,t,n,!1)},\"lastIndexOf\");function Wo(r,e,t,n){\nt=Number(t)||0;let i=r.length-t;n?(n=Number(n),n>i&&(n=i)):n=i;let s=e.length;n>s/2&&(n=s/2);let o;for(o=\n0;o<n;++o){let u=parseInt(e.substr(o*2,2),16);if(zt(u))return o;r[t+o]=u}return o}a(Wo,\"hexWrite\");function jo(r,e,t,n){\nreturn ht(Ht(e,r.length-t),r,t,n)}a(jo,\"utf8Write\");function Ho(r,e,t,n){return ht(ra(e),r,t,n)}a(Ho,\n\"asciiWrite\");function $o(r,e,t,n){return ht(ni(e),r,t,n)}a($o,\"base64Write\");function Go(r,e,t,n){return ht(\nna(e,r.length-t),r,t,n)}a(Go,\"ucs2Write\");h.prototype.write=a(function(e,t,n,i){if(t===void 0)i=\"utf\\\n8\",n=this.length,t=0;else if(n===void 0&&typeof t==\"string\")i=t,n=this.length,t=0;else if(isFinite(t))\nt=t>>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i=\"utf8\")):(i=n,n=void 0);else throw new Error(\"Buffer.wri\\\nte(string, encoding, offset[, length]) is no longer supported\");let s=this.length-t;if((n===void 0||\nn>s)&&(n=s),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buf\\\nfer bounds\");i||(i=\"utf8\");let o=!1;for(;;)switch(i){case\"hex\":return Wo(this,e,t,n);case\"utf8\":case\"\\\nutf-8\":return jo(this,e,t,n);case\"ascii\":case\"latin1\":case\"binary\":return Ho(this,e,t,n);case\"base64\":\nreturn $o(this,e,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return Go(this,e,t,n);default:\nif(o)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),o=!0}},\"write\");h.prototype.\ntoJSON=a(function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}},\"toJSO\\\nN\");function Vo(r,e,t){return e===0&&t===r.length?Nt.fromByteArray(r):Nt.fromByteArray(r.slice(e,t))}\na(Vo,\"base64Slice\");function Yn(r,e,t){t=Math.min(r.length,t);let n=[],i=e;for(;i<t;){let s=r[i],o=null,\nu=s>239?4:s>223?3:s>191?2:1;if(i+u<=t){let c,l,f,y;switch(u){case 1:s<128&&(o=s);break;case 2:c=r[i+\n1],(c&192)===128&&(y=(s&31)<<6|c&63,y>127&&(o=y));break;case 3:c=r[i+1],l=r[i+2],(c&192)===128&&(l&192)===\n128&&(y=(s&15)<<12|(c&63)<<6|l&63,y>2047&&(y<55296||y>57343)&&(o=y));break;case 4:c=r[i+1],l=r[i+2],\nf=r[i+3],(c&192)===128&&(l&192)===128&&(f&192)===128&&(y=(s&15)<<18|(c&63)<<12|(l&63)<<6|f&63,y>65535&&\ny<1114112&&(o=y))}}o===null?(o=65533,u=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),\nn.push(o),i+=u}return zo(n)}a(Yn,\"utf8Slice\");var Hn=4096;function zo(r){let e=r.length;if(e<=Hn)return String.\nfromCharCode.apply(String,r);let t=\"\",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=\nHn));return t}a(zo,\"decodeCodePointsArray\");function Ko(r,e,t){let n=\"\";t=Math.min(r.length,t);for(let i=e;i<\nt;++i)n+=String.fromCharCode(r[i]&127);return n}a(Ko,\"asciiSlice\");function Yo(r,e,t){let n=\"\";t=Math.\nmin(r.length,t);for(let i=e;i<t;++i)n+=String.fromCharCode(r[i]);return n}a(Yo,\"latin1Slice\");function Zo(r,e,t){\nlet n=r.length;(!e||e<0)&&(e=0),(!t||t<0||t>n)&&(t=n);let i=\"\";for(let s=e;s<t;++s)i+=ia[r[s]];return i}\na(Zo,\"hexSlice\");function Jo(r,e,t){let n=r.slice(e,t),i=\"\";for(let s=0;s<n.length-1;s+=2)i+=String.\nfromCharCode(n[s]+n[s+1]*256);return i}a(Jo,\"utf16leSlice\");h.prototype.slice=a(function(e,t){let n=this.\nlength;e=~~e,t=t===void 0?n:~~t,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),t<\ne&&(t=e);let i=this.subarray(e,t);return Object.setPrototypeOf(i,h.prototype),i},\"slice\");function q(r,e,t){\nif(r%1!==0||r<0)throw new RangeError(\"offset is not uint\");if(r+e>t)throw new RangeError(\"Trying to \\\naccess beyond buffer length\")}a(q,\"checkOffset\");h.prototype.readUintLE=h.prototype.readUIntLE=a(function(e,t,n){\ne=e>>>0,t=t>>>0,n||q(e,t,this.length);let i=this[e],s=1,o=0;for(;++o<t&&(s*=256);)i+=this[e+o]*s;return i},\n\"readUIntLE\");h.prototype.readUintBE=h.prototype.readUIntBE=a(function(e,t,n){e=e>>>0,t=t>>>0,n||q(e,\nt,this.length);let i=this[e+--t],s=1;for(;t>0&&(s*=256);)i+=this[e+--t]*s;return i},\"readUIntBE\");h.\nprototype.readUint8=h.prototype.readUInt8=a(function(e,t){return e=e>>>0,t||q(e,1,this.length),this[e]},\n\"readUInt8\");h.prototype.readUint16LE=h.prototype.readUInt16LE=a(function(e,t){return e=e>>>0,t||q(e,\n2,this.length),this[e]|this[e+1]<<8},\"readUInt16LE\");h.prototype.readUint16BE=h.prototype.readUInt16BE=\na(function(e,t){return e=e>>>0,t||q(e,2,this.length),this[e]<<8|this[e+1]},\"readUInt16BE\");h.prototype.\nreadUint32LE=h.prototype.readUInt32LE=a(function(e,t){return e=e>>>0,t||q(e,4,this.length),(this[e]|\nthis[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216},\"readUInt32LE\");h.prototype.readUint32BE=h.prototype.\nreadUInt32BE=a(function(e,t){return e=e>>>0,t||q(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+\n2]<<8|this[e+3])},\"readUInt32BE\");h.prototype.readBigUInt64LE=we(a(function(e){e=e>>>0,Be(e,\"offset\");\nlet t=this[e],n=this[e+7];(t===void 0||n===void 0)&&je(e,this.length-8);let i=t+this[++e]*2**8+this[++e]*\n2**16+this[++e]*2**24,s=this[++e]+this[++e]*2**8+this[++e]*2**16+n*2**24;return BigInt(i)+(BigInt(s)<<\nBigInt(32))},\"readBigUInt64LE\"));h.prototype.readBigUInt64BE=we(a(function(e){e=e>>>0,Be(e,\"offset\");\nlet t=this[e],n=this[e+7];(t===void 0||n===void 0)&&je(e,this.length-8);let i=t*2**24+this[++e]*2**16+\nthis[++e]*2**8+this[++e],s=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+n;return(BigInt(i)<<BigInt(\n32))+BigInt(s)},\"readBigUInt64BE\"));h.prototype.readIntLE=a(function(e,t,n){e=e>>>0,t=t>>>0,n||q(e,t,\nthis.length);let i=this[e],s=1,o=0;for(;++o<t&&(s*=256);)i+=this[e+o]*s;return s*=128,i>=s&&(i-=Math.\npow(2,8*t)),i},\"readIntLE\");h.prototype.readIntBE=a(function(e,t,n){e=e>>>0,t=t>>>0,n||q(e,t,this.length);\nlet i=t,s=1,o=this[e+--i];for(;i>0&&(s*=256);)o+=this[e+--i]*s;return s*=128,o>=s&&(o-=Math.pow(2,8*\nt)),o},\"readIntBE\");h.prototype.readInt8=a(function(e,t){return e=e>>>0,t||q(e,1,this.length),this[e]&\n128?(255-this[e]+1)*-1:this[e]},\"readInt8\");h.prototype.readInt16LE=a(function(e,t){e=e>>>0,t||q(e,2,\nthis.length);let n=this[e]|this[e+1]<<8;return n&32768?n|4294901760:n},\"readInt16LE\");h.prototype.readInt16BE=\na(function(e,t){e=e>>>0,t||q(e,2,this.length);let n=this[e+1]|this[e]<<8;return n&32768?n|4294901760:\nn},\"readInt16BE\");h.prototype.readInt32LE=a(function(e,t){return e=e>>>0,t||q(e,4,this.length),this[e]|\nthis[e+1]<<8|this[e+2]<<16|this[e+3]<<24},\"readInt32LE\");h.prototype.readInt32BE=a(function(e,t){return e=\ne>>>0,t||q(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},\"readInt32BE\");h.prototype.\nreadBigInt64LE=we(a(function(e){e=e>>>0,Be(e,\"offset\");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&\nje(e,this.length-8);let i=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(n<<24);return(BigInt(i)<<BigInt(\n32))+BigInt(t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24)},\"readBigInt64LE\"));h.prototype.readBigInt64BE=\nwe(a(function(e){e=e>>>0,Be(e,\"offset\");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&je(e,this.\nlength-8);let i=(t<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(i)<<BigInt(32))+BigInt(\nthis[++e]*2**24+this[++e]*2**16+this[++e]*2**8+n)},\"readBigInt64BE\"));h.prototype.readFloatLE=a(function(e,t){\nreturn e=e>>>0,t||q(e,4,this.length),Pe.read(this,e,!0,23,4)},\"readFloatLE\");h.prototype.readFloatBE=\na(function(e,t){return e=e>>>0,t||q(e,4,this.length),Pe.read(this,e,!1,23,4)},\"readFloatBE\");h.prototype.\nreadDoubleLE=a(function(e,t){return e=e>>>0,t||q(e,8,this.length),Pe.read(this,e,!0,52,8)},\"readDoub\\\nleLE\");h.prototype.readDoubleBE=a(function(e,t){return e=e>>>0,t||q(e,8,this.length),Pe.read(this,e,\n!1,52,8)},\"readDoubleBE\");function V(r,e,t,n,i,s){if(!h.isBuffer(r))throw new TypeError('\"buffer\" ar\\\ngument must be a Buffer instance');if(e>i||e<s)throw new RangeError('\"value\" argument is out of boun\\\nds');if(t+n>r.length)throw new RangeError(\"Index out of range\")}a(V,\"checkInt\");h.prototype.writeUintLE=\nh.prototype.writeUIntLE=a(function(e,t,n,i){if(e=+e,t=t>>>0,n=n>>>0,!i){let u=Math.pow(2,8*n)-1;V(this,\ne,t,n,u,0)}let s=1,o=0;for(this[t]=e&255;++o<n&&(s*=256);)this[t+o]=e/s&255;return t+n},\"writeUIntLE\");\nh.prototype.writeUintBE=h.prototype.writeUIntBE=a(function(e,t,n,i){if(e=+e,t=t>>>0,n=n>>>0,!i){let u=Math.\npow(2,8*n)-1;V(this,e,t,n,u,0)}let s=n-1,o=1;for(this[t+s]=e&255;--s>=0&&(o*=256);)this[t+s]=e/o&255;\nreturn t+n},\"writeUIntBE\");h.prototype.writeUint8=h.prototype.writeUInt8=a(function(e,t,n){return e=\n+e,t=t>>>0,n||V(this,e,t,1,255,0),this[t]=e&255,t+1},\"writeUInt8\");h.prototype.writeUint16LE=h.prototype.\nwriteUInt16LE=a(function(e,t,n){return e=+e,t=t>>>0,n||V(this,e,t,2,65535,0),this[t]=e&255,this[t+1]=\ne>>>8,t+2},\"writeUInt16LE\");h.prototype.writeUint16BE=h.prototype.writeUInt16BE=a(function(e,t,n){return e=\n+e,t=t>>>0,n||V(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=e&255,t+2},\"writeUInt16BE\");h.prototype.\nwriteUint32LE=h.prototype.writeUInt32LE=a(function(e,t,n){return e=+e,t=t>>>0,n||V(this,e,t,4,4294967295,\n0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255,t+4},\"writeUInt32LE\");h.prototype.\nwriteUint32BE=h.prototype.writeUInt32BE=a(function(e,t,n){return e=+e,t=t>>>0,n||V(this,e,t,4,4294967295,\n0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4},\"writeUInt32BE\");function Zn(r,e,t,n,i){\nri(e,n,i,r,t,7);let s=Number(e&BigInt(4294967295));r[t++]=s,s=s>>8,r[t++]=s,s=s>>8,r[t++]=s,s=s>>8,r[t++]=\ns;let o=Number(e>>BigInt(32)&BigInt(4294967295));return r[t++]=o,o=o>>8,r[t++]=o,o=o>>8,r[t++]=o,o=o>>\n8,r[t++]=o,t}a(Zn,\"wrtBigUInt64LE\");function Jn(r,e,t,n,i){ri(e,n,i,r,t,7);let s=Number(e&BigInt(4294967295));\nr[t+7]=s,s=s>>8,r[t+6]=s,s=s>>8,r[t+5]=s,s=s>>8,r[t+4]=s;let o=Number(e>>BigInt(32)&BigInt(4294967295));\nreturn r[t+3]=o,o=o>>8,r[t+2]=o,o=o>>8,r[t+1]=o,o=o>>8,r[t]=o,t+8}a(Jn,\"wrtBigUInt64BE\");h.prototype.\nwriteBigUInt64LE=we(a(function(e,t=0){return Zn(this,e,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))},\"w\\\nriteBigUInt64LE\"));h.prototype.writeBigUInt64BE=we(a(function(e,t=0){return Jn(this,e,t,BigInt(0),BigInt(\n\"0xffffffffffffffff\"))},\"writeBigUInt64BE\"));h.prototype.writeIntLE=a(function(e,t,n,i){if(e=+e,t=t>>>\n0,!i){let c=Math.pow(2,8*n-1);V(this,e,t,n,c-1,-c)}let s=0,o=1,u=0;for(this[t]=e&255;++s<n&&(o*=256);)\ne<0&&u===0&&this[t+s-1]!==0&&(u=1),this[t+s]=(e/o>>0)-u&255;return t+n},\"writeIntLE\");h.prototype.writeIntBE=\na(function(e,t,n,i){if(e=+e,t=t>>>0,!i){let c=Math.pow(2,8*n-1);V(this,e,t,n,c-1,-c)}let s=n-1,o=1,u=0;\nfor(this[t+s]=e&255;--s>=0&&(o*=256);)e<0&&u===0&&this[t+s+1]!==0&&(u=1),this[t+s]=(e/o>>0)-u&255;return t+\nn},\"writeIntBE\");h.prototype.writeInt8=a(function(e,t,n){return e=+e,t=t>>>0,n||V(this,e,t,1,127,-128),\ne<0&&(e=255+e+1),this[t]=e&255,t+1},\"writeInt8\");h.prototype.writeInt16LE=a(function(e,t,n){return e=\n+e,t=t>>>0,n||V(this,e,t,2,32767,-32768),this[t]=e&255,this[t+1]=e>>>8,t+2},\"writeInt16LE\");h.prototype.\nwriteInt16BE=a(function(e,t,n){return e=+e,t=t>>>0,n||V(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+\n1]=e&255,t+2},\"writeInt16BE\");h.prototype.writeInt32LE=a(function(e,t,n){return e=+e,t=t>>>0,n||V(this,\ne,t,4,2147483647,-2147483648),this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},\"\\\nwriteInt32LE\");h.prototype.writeInt32BE=a(function(e,t,n){return e=+e,t=t>>>0,n||V(this,e,t,4,2147483647,\n-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,\nt+4},\"writeInt32BE\");h.prototype.writeBigInt64LE=we(a(function(e,t=0){return Zn(this,e,t,-BigInt(\"0x\\\n8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))},\"writeBigInt64LE\"));h.prototype.writeBigInt64BE=we(\na(function(e,t=0){return Jn(this,e,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))},\"w\\\nriteBigInt64BE\"));function Xn(r,e,t,n,i,s){if(t+n>r.length)throw new RangeError(\"Index out of range\");\nif(t<0)throw new RangeError(\"Index out of range\")}a(Xn,\"checkIEEE754\");function ei(r,e,t,n,i){return e=\n+e,t=t>>>0,i||Xn(r,e,t,4,34028234663852886e22,-34028234663852886e22),Pe.write(r,e,t,n,23,4),t+4}a(ei,\n\"writeFloat\");h.prototype.writeFloatLE=a(function(e,t,n){return ei(this,e,t,!0,n)},\"writeFloatLE\");h.\nprototype.writeFloatBE=a(function(e,t,n){return ei(this,e,t,!1,n)},\"writeFloatBE\");function ti(r,e,t,n,i){\nreturn e=+e,t=t>>>0,i||Xn(r,e,t,8,17976931348623157e292,-17976931348623157e292),Pe.write(r,e,t,n,52,\n8),t+8}a(ti,\"writeDouble\");h.prototype.writeDoubleLE=a(function(e,t,n){return ti(this,e,t,!0,n)},\"wr\\\niteDoubleLE\");h.prototype.writeDoubleBE=a(function(e,t,n){return ti(this,e,t,!1,n)},\"writeDoubleBE\");\nh.prototype.copy=a(function(e,t,n,i){if(!h.isBuffer(e))throw new TypeError(\"argument should be a Buf\\\nfer\");if(n||(n=0),!i&&i!==0&&(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i<n&&(i=n),i===\nn||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError(\"targetStart out of bounds\");if(n<\n0||n>=this.length)throw new RangeError(\"Index out of range\");if(i<0)throw new RangeError(\"sourceEnd \\\nout of bounds\");i>this.length&&(i=this.length),e.length-t<i-n&&(i=e.length-t+n);let s=i-n;return this===\ne&&typeof Uint8Array.prototype.copyWithin==\"function\"?this.copyWithin(t,n,i):Uint8Array.prototype.set.\ncall(e,this.subarray(n,i),t),s},\"copy\");h.prototype.fill=a(function(e,t,n,i){if(typeof e==\"string\"){\nif(typeof t==\"string\"?(i=t,t=0,n=this.length):typeof n==\"string\"&&(i=n,n=this.length),i!==void 0&&typeof i!=\n\"string\")throw new TypeError(\"encoding must be a string\");if(typeof i==\"string\"&&!h.isEncoding(i))throw new TypeError(\n\"Unknown encoding: \"+i);if(e.length===1){let o=e.charCodeAt(0);(i===\"utf8\"&&o<128||i===\"latin1\")&&(e=\no)}}else typeof e==\"number\"?e=e&255:typeof e==\"boolean\"&&(e=Number(e));if(t<0||this.length<t||this.length<\nn)throw new RangeError(\"Out of range index\");if(n<=t)return this;t=t>>>0,n=n===void 0?this.length:n>>>\n0,e||(e=0);let s;if(typeof e==\"number\")for(s=t;s<n;++s)this[s]=e;else{let o=h.isBuffer(e)?e:h.from(e,\ni),u=o.length;if(u===0)throw new TypeError('The value \"'+e+'\" is invalid for argument \"value\"');for(s=\n0;s<n-t;++s)this[s+t]=o[s%u]}return this},\"fill\");var Te={};function Vt(r,e,t){var n;Te[r]=(n=class extends t{constructor(){\nsuper(),Object.defineProperty(this,\"message\",{value:e.apply(this,arguments),writable:!0,configurable:!0}),\nthis.name=`${this.name} [${r}]`,this.stack,delete this.name}get code(){return r}set code(s){Object.defineProperty(\nthis,\"code\",{configurable:!0,enumerable:!0,value:s,writable:!0})}toString(){return`${this.name} [${r}\\\n]: ${this.message}`}},a(n,\"NodeError\"),n)}a(Vt,\"E\");Vt(\"ERR_BUFFER_OUT_OF_BOUNDS\",function(r){return r?\n`${r} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"},RangeError);Vt(\n\"ERR_INVALID_ARG_TYPE\",function(r,e){return`The \"${r}\" argument must be of type number. Received typ\\\ne ${typeof e}`},TypeError);Vt(\"ERR_OUT_OF_RANGE\",function(r,e,t){let n=`The value of \"${r}\" is out o\\\nf range.`,i=t;return Number.isInteger(t)&&Math.abs(t)>2**32?i=$n(String(t)):typeof t==\"bigint\"&&(i=String(\nt),(t>BigInt(2)**BigInt(32)||t<-(BigInt(2)**BigInt(32)))&&(i=$n(i)),i+=\"n\"),n+=` It must be ${e}. Re\\\nceived ${i}`,n},RangeError);function $n(r){let e=\"\",t=r.length,n=r[0]===\"-\"?1:0;for(;t>=n+4;t-=3)e=`\\\n_${r.slice(t-3,t)}${e}`;return`${r.slice(0,t)}${e}`}a($n,\"addNumericalSeparator\");function Xo(r,e,t){\nBe(e,\"offset\"),(r[e]===void 0||r[e+t]===void 0)&&je(e,r.length-(t+1))}a(Xo,\"checkBounds\");function ri(r,e,t,n,i,s){\nif(r>t||r<e){let o=typeof e==\"bigint\"?\"n\":\"\",u;throw s>3?e===0||e===BigInt(0)?u=`>= 0${o} and < 2${o}\\\n ** ${(s+1)*8}${o}`:u=`>= -(2${o} ** ${(s+1)*8-1}${o}) and < 2 ** ${(s+1)*8-1}${o}`:u=`>= ${e}${o} a\\\nnd <= ${t}${o}`,new Te.ERR_OUT_OF_RANGE(\"value\",u,r)}Xo(n,i,s)}a(ri,\"checkIntBI\");function Be(r,e){if(typeof r!=\n\"number\")throw new Te.ERR_INVALID_ARG_TYPE(e,\"number\",r)}a(Be,\"validateNumber\");function je(r,e,t){throw Math.\nfloor(r)!==r?(Be(r,t),new Te.ERR_OUT_OF_RANGE(t||\"offset\",\"an integer\",r)):e<0?new Te.ERR_BUFFER_OUT_OF_BOUNDS:\nnew Te.ERR_OUT_OF_RANGE(t||\"offset\",`>= ${t?1:0} and <= ${e}`,r)}a(je,\"boundsError\");var ea=/[^+/0-9A-Za-z-_]/g;\nfunction ta(r){if(r=r.split(\"=\")[0],r=r.trim().replace(ea,\"\"),r.length<2)return\"\";for(;r.length%4!==\n0;)r=r+\"=\";return r}a(ta,\"base64clean\");function Ht(r,e){e=e||1/0;let t,n=r.length,i=null,s=[];for(let o=0;o<\nn;++o){if(t=r.charCodeAt(o),t>55295&&t<57344){if(!i){if(t>56319){(e-=3)>-1&&s.push(239,191,189);continue}else if(o+\n1===n){(e-=3)>-1&&s.push(239,191,189);continue}i=t;continue}if(t<56320){(e-=3)>-1&&s.push(239,191,189),\ni=t;continue}t=(i-55296<<10|t-56320)+65536}else i&&(e-=3)>-1&&s.push(239,191,189);if(i=null,t<128){if((e-=\n1)<0)break;s.push(t)}else if(t<2048){if((e-=2)<0)break;s.push(t>>6|192,t&63|128)}else if(t<65536){if((e-=\n3)<0)break;s.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((e-=4)<0)break;s.push(t>>18|\n240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error(\"Invalid code point\")}return s}a(Ht,\"utf\\\n8ToBytes\");function ra(r){let e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t)&255);return e}a(\nra,\"asciiToBytes\");function na(r,e){let t,n,i,s=[];for(let o=0;o<r.length&&!((e-=2)<0);++o)t=r.charCodeAt(\no),n=t>>8,i=t%256,s.push(i),s.push(n);return s}a(na,\"utf16leToBytes\");function ni(r){return Nt.toByteArray(\nta(r))}a(ni,\"base64ToBytes\");function ht(r,e,t,n){let i;for(i=0;i<n&&!(i+t>=e.length||i>=r.length);++i)\ne[i+t]=r[i];return i}a(ht,\"blitBuffer\");function ue(r,e){return r instanceof e||r!=null&&r.constructor!=\nnull&&r.constructor.name!=null&&r.constructor.name===e.name}a(ue,\"isInstance\");function zt(r){return r!==\nr}a(zt,\"numberIsNaN\");var ia=function(){let r=\"0123456789abcdef\",e=new Array(256);for(let t=0;t<16;++t){\nlet n=t*16;for(let i=0;i<16;++i)e[n+i]=r[t]+r[i]}return e}();function we(r){return typeof BigInt>\"u\"?\nsa:r}a(we,\"defineBigIntMethod\");function sa(){throw new Error(\"BigInt not supported\")}a(sa,\"BufferBi\\\ngIntNotDefined\")});var b,v,x,d,m,p=G(()=>{\"use strict\";b=globalThis,v=globalThis.setImmediate??(r=>setTimeout(r,0)),x=globalThis.\nclearImmediate??(r=>clearTimeout(r)),d=typeof globalThis.Buffer==\"function\"&&typeof globalThis.Buffer.\nallocUnsafe==\"function\"?globalThis.Buffer:ii().Buffer,m=globalThis.process??{};m.env??(m.env={});try{\nm.nextTick(()=>{})}catch{let e=Promise.resolve();m.nextTick=e.then.bind(e)}});var ge=T((Rl,Kt)=>{\"use strict\";p();var Le=typeof Reflect==\"object\"?Reflect:null,si=Le&&typeof Le.apply==\n\"function\"?Le.apply:a(function(e,t,n){return Function.prototype.apply.call(e,t,n)},\"ReflectApply\"),pt;\nLe&&typeof Le.ownKeys==\"function\"?pt=Le.ownKeys:Object.getOwnPropertySymbols?pt=a(function(e){return Object.\ngetOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))},\"ReflectOwnKeys\"):pt=a(function(e){return Object.\ngetOwnPropertyNames(e)},\"ReflectOwnKeys\");function oa(r){console&&console.warn&&console.warn(r)}a(oa,\n\"ProcessEmitWarning\");var ai=Number.isNaN||a(function(e){return e!==e},\"NumberIsNaN\");function B(){B.\ninit.call(this)}a(B,\"EventEmitter\");Kt.exports=B;Kt.exports.once=la;B.EventEmitter=B;B.prototype._events=\nvoid 0;B.prototype._eventsCount=0;B.prototype._maxListeners=void 0;var oi=10;function dt(r){if(typeof r!=\n\"function\")throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof r)}\na(dt,\"checkListener\");Object.defineProperty(B,\"defaultMaxListeners\",{enumerable:!0,get:a(function(){\nreturn oi},\"get\"),set:a(function(r){if(typeof r!=\"number\"||r<0||ai(r))throw new RangeError('The valu\\\ne of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+r+\".\");oi=r},\n\"set\")});B.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&\n(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};\nB.prototype.setMaxListeners=a(function(e){if(typeof e!=\"number\"||e<0||ai(e))throw new RangeError('Th\\\ne value of \"n\" is out of range. It must be a non-negative number. Received '+e+\".\");return this._maxListeners=\ne,this},\"setMaxListeners\");function ui(r){return r._maxListeners===void 0?B.defaultMaxListeners:r._maxListeners}\na(ui,\"_getMaxListeners\");B.prototype.getMaxListeners=a(function(){return ui(this)},\"getMaxListeners\");\nB.prototype.emit=a(function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var i=e===\n\"error\",s=this._events;if(s!==void 0)i=i&&s.error===void 0;else if(!i)return!1;if(i){var o;if(t.length>\n0&&(o=t[0]),o instanceof Error)throw o;var u=new Error(\"Unhandled error.\"+(o?\" (\"+o.message+\")\":\"\"));\nthrow u.context=o,u}var c=s[e];if(c===void 0)return!1;if(typeof c==\"function\")si(c,this,t);else for(var l=c.\nlength,f=pi(c,l),n=0;n<l;++n)si(f[n],this,t);return!0},\"emit\");function ci(r,e,t,n){var i,s,o;if(dt(\nt),s=r._events,s===void 0?(s=r._events=Object.create(null),r._eventsCount=0):(s.newListener!==void 0&&\n(r.emit(\"newListener\",e,t.listener?t.listener:t),s=r._events),o=s[e]),o===void 0)o=s[e]=t,++r._eventsCount;else if(typeof o==\n\"function\"?o=s[e]=n?[t,o]:[o,t]:n?o.unshift(t):o.push(t),i=ui(r),i>0&&o.length>i&&!o.warned){o.warned=\n!0;var u=new Error(\"Possible EventEmitter memory leak detected. \"+o.length+\" \"+String(e)+\" listeners\\\n added. Use emitter.setMaxListeners() to increase limit\");u.name=\"MaxListenersExceededWarning\",u.emitter=\nr,u.type=e,u.count=o.length,oa(u)}return r}a(ci,\"_addListener\");B.prototype.addListener=a(function(e,t){\nreturn ci(this,e,t,!1)},\"addListener\");B.prototype.on=B.prototype.addListener;B.prototype.prependListener=\na(function(e,t){return ci(this,e,t,!0)},\"prependListener\");function aa(){if(!this.fired)return this.\ntarget.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.\ntarget):this.listener.apply(this.target,arguments)}a(aa,\"onceWrapper\");function li(r,e,t){var n={fired:!1,\nwrapFn:void 0,target:r,type:e,listener:t},i=aa.bind(n);return i.listener=t,n.wrapFn=i,i}a(li,\"_onceW\\\nrap\");B.prototype.once=a(function(e,t){return dt(t),this.on(e,li(this,e,t)),this},\"once\");B.prototype.\nprependOnceListener=a(function(e,t){return dt(t),this.prependListener(e,li(this,e,t)),this},\"prepend\\\nOnceListener\");B.prototype.removeListener=a(function(e,t){var n,i,s,o,u;if(dt(t),i=this._events,i===\nvoid 0)return this;if(n=i[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?\nthis._events=Object.create(null):(delete i[e],i.removeListener&&this.emit(\"removeListener\",e,n.listener||\nt));else if(typeof n!=\"function\"){for(s=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){u=n[o].\nlistener,s=o;break}if(s<0)return this;s===0?n.shift():ua(n,s),n.length===1&&(i[e]=n[0]),i.removeListener!==\nvoid 0&&this.emit(\"removeListener\",e,u||t)}return this},\"removeListener\");B.prototype.off=B.prototype.\nremoveListener;B.prototype.removeAllListeners=a(function(e){var t,n,i;if(n=this._events,n===void 0)return this;\nif(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=\n0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.\nlength===0){var s=Object.keys(n),o;for(i=0;i<s.length;++i)o=s[i],o!==\"removeListener\"&&this.removeAllListeners(\no);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=\n0,this}if(t=n[e],typeof t==\"function\")this.removeListener(e,t);else if(t!==void 0)for(i=t.length-1;i>=\n0;i--)this.removeListener(e,t[i]);return this},\"removeAllListeners\");function fi(r,e,t){var n=r._events;\nif(n===void 0)return[];var i=n[e];return i===void 0?[]:typeof i==\"function\"?t?[i.listener||i]:[i]:t?\nca(i):pi(i,i.length)}a(fi,\"_listeners\");B.prototype.listeners=a(function(e){return fi(this,e,!0)},\"l\\\nisteners\");B.prototype.rawListeners=a(function(e){return fi(this,e,!1)},\"rawListeners\");B.listenerCount=\nfunction(r,e){return typeof r.listenerCount==\"function\"?r.listenerCount(e):hi.call(r,e)};B.prototype.\nlistenerCount=hi;function hi(r){var e=this._events;if(e!==void 0){var t=e[r];if(typeof t==\"function\")\nreturn 1;if(t!==void 0)return t.length}return 0}a(hi,\"listenerCount\");B.prototype.eventNames=a(function(){\nreturn this._eventsCount>0?pt(this._events):[]},\"eventNames\");function pi(r,e){for(var t=new Array(e),\nn=0;n<e;++n)t[n]=r[n];return t}a(pi,\"arrayClone\");function ua(r,e){for(;e+1<r.length;e++)r[e]=r[e+1];\nr.pop()}a(ua,\"spliceOne\");function ca(r){for(var e=new Array(r.length),t=0;t<e.length;++t)e[t]=r[t].\nlistener||r[t];return e}a(ca,\"unwrapListeners\");function la(r,e){return new Promise(function(t,n){function i(o){\nr.removeListener(e,s),n(o)}a(i,\"errorListener\");function s(){typeof r.removeListener==\"function\"&&r.\nremoveListener(\"error\",i),t([].slice.call(arguments))}a(s,\"resolver\"),di(r,e,s,{once:!0}),e!==\"error\"&&\nfa(r,i,{once:!0})})}a(la,\"once\");function fa(r,e,t){typeof r.on==\"function\"&&di(r,\"error\",e,t)}a(fa,\n\"addErrorHandlerIfEventEmitter\");function di(r,e,t,n){if(typeof r.on==\"function\")n.once?r.once(e,t):\nr.on(e,t);else if(typeof r.addEventListener==\"function\")r.addEventListener(e,a(function i(s){n.once&&\nr.removeEventListener(e,i),t(s)},\"wrapListener\"));else throw new TypeError('The \"emitter\" argument m\\\nust be of type EventEmitter. Received type '+typeof r)}a(di,\"eventTargetAgnosticAddListener\")});var wi={};ie(wi,{Socket:()=>ce,isIP:()=>ha});function ha(r){return 0}var mi,yi,S,ce,Fe=G(()=>{\"use s\\\ntrict\";p();mi=Se(ge(),1);a(ha,\"isIP\");yi=/^[^.]+\\./,S=class S extends mi.EventEmitter{constructor(){\nsuper(...arguments);E(this,\"opts\",{});E(this,\"connecting\",!1);E(this,\"pending\",!0);E(this,\"writable\",\n!0);E(this,\"encrypted\",!1);E(this,\"authorized\",!1);E(this,\"destroyed\",!1);E(this,\"ws\",null);E(this,\"\\\nwriteBuffer\");E(this,\"tlsState\",0);E(this,\"tlsRead\");E(this,\"tlsWrite\")}static get poolQueryViaFetch(){\nreturn S.opts.poolQueryViaFetch??S.defaults.poolQueryViaFetch}static set poolQueryViaFetch(t){S.opts.\npoolQueryViaFetch=t}static get fetchEndpoint(){return S.opts.fetchEndpoint??S.defaults.fetchEndpoint}static set fetchEndpoint(t){\nS.opts.fetchEndpoint=t}static get fetchConnectionCache(){return!0}static set fetchConnectionCache(t){\nconsole.warn(\"The `fetchConnectionCache` option is deprecated (now always `true`)\")}static get fetchFunction(){\nreturn S.opts.fetchFunction??S.defaults.fetchFunction}static set fetchFunction(t){S.opts.fetchFunction=\nt}static get webSocketConstructor(){return S.opts.webSocketConstructor??S.defaults.webSocketConstructor}static set webSocketConstructor(t){\nS.opts.webSocketConstructor=t}get webSocketConstructor(){return this.opts.webSocketConstructor??S.webSocketConstructor}set webSocketConstructor(t){\nthis.opts.webSocketConstructor=t}static get wsProxy(){return S.opts.wsProxy??S.defaults.wsProxy}static set wsProxy(t){\nS.opts.wsProxy=t}get wsProxy(){return this.opts.wsProxy??S.wsProxy}set wsProxy(t){this.opts.wsProxy=\nt}static get coalesceWrites(){return S.opts.coalesceWrites??S.defaults.coalesceWrites}static set coalesceWrites(t){\nS.opts.coalesceWrites=t}get coalesceWrites(){return this.opts.coalesceWrites??S.coalesceWrites}set coalesceWrites(t){\nthis.opts.coalesceWrites=t}static get useSecureWebSocket(){return S.opts.useSecureWebSocket??S.defaults.\nuseSecureWebSocket}static set useSecureWebSocket(t){S.opts.useSecureWebSocket=t}get useSecureWebSocket(){\nreturn this.opts.useSecureWebSocket??S.useSecureWebSocket}set useSecureWebSocket(t){this.opts.useSecureWebSocket=\nt}static get forceDisablePgSSL(){return S.opts.forceDisablePgSSL??S.defaults.forceDisablePgSSL}static set forceDisablePgSSL(t){\nS.opts.forceDisablePgSSL=t}get forceDisablePgSSL(){return this.opts.forceDisablePgSSL??S.forceDisablePgSSL}set forceDisablePgSSL(t){\nthis.opts.forceDisablePgSSL=t}static get disableSNI(){return S.opts.disableSNI??S.defaults.disableSNI}static set disableSNI(t){\nS.opts.disableSNI=t}get disableSNI(){return this.opts.disableSNI??S.disableSNI}set disableSNI(t){this.\nopts.disableSNI=t}static get disableWarningInBrowsers(){return S.opts.disableWarningInBrowsers??S.defaults.\ndisableWarningInBrowsers}static set disableWarningInBrowsers(t){S.opts.disableWarningInBrowsers=t}get disableWarningInBrowsers(){\nreturn this.opts.disableWarningInBrowsers??S.disableWarningInBrowsers}set disableWarningInBrowsers(t){\nthis.opts.disableWarningInBrowsers=t}static get pipelineConnect(){return S.opts.pipelineConnect??S.defaults.\npipelineConnect}static set pipelineConnect(t){S.opts.pipelineConnect=t}get pipelineConnect(){return this.\nopts.pipelineConnect??S.pipelineConnect}set pipelineConnect(t){this.opts.pipelineConnect=t}static get subtls(){\nreturn S.opts.subtls??S.defaults.subtls}static set subtls(t){S.opts.subtls=t}get subtls(){return this.\nopts.subtls??S.subtls}set subtls(t){this.opts.subtls=t}static get pipelineTLS(){return S.opts.pipelineTLS??\nS.defaults.pipelineTLS}static set pipelineTLS(t){S.opts.pipelineTLS=t}get pipelineTLS(){return this.\nopts.pipelineTLS??S.pipelineTLS}set pipelineTLS(t){this.opts.pipelineTLS=t}static get rootCerts(){return S.\nopts.rootCerts??S.defaults.rootCerts}static set rootCerts(t){S.opts.rootCerts=t}get rootCerts(){return this.\nopts.rootCerts??S.rootCerts}set rootCerts(t){this.opts.rootCerts=t}wsProxyAddrForHost(t,n){let i=this.\nwsProxy;if(i===void 0)throw new Error(\"No WebSocket proxy is configured. Please see https://github.c\\\nom/neondatabase/serverless/blob/main/CONFIG.md#wsproxy-string--host-string-port-number--string--stri\\\nng\");return typeof i==\"function\"?i(t,n):`${i}?address=${t}:${n}`}setNoDelay(){return this}setKeepAlive(){\nreturn this}ref(){return this}unref(){return this}connect(t,n,i){this.connecting=!0,i&&this.once(\"co\\\nnnect\",i);let s=a(()=>{this.connecting=!1,this.pending=!1,this.emit(\"connect\"),this.emit(\"ready\")},\"\\\nhandleWebSocketOpen\"),o=a((c,l=!1)=>{c.binaryType=\"arraybuffer\",c.addEventListener(\"error\",f=>{this.\nemit(\"error\",f),this.emit(\"close\")}),c.addEventListener(\"message\",f=>{if(this.tlsState===0){let y=d.\nfrom(f.data);this.emit(\"data\",y)}}),c.addEventListener(\"close\",()=>{this.emit(\"close\")}),l?s():c.addEventListener(\n\"open\",s)},\"configureWebSocket\"),u;try{u=this.wsProxyAddrForHost(n,typeof t==\"string\"?parseInt(t,10):\nt)}catch(c){this.emit(\"error\",c),this.emit(\"close\");return}try{let l=(this.useSecureWebSocket?\"wss:\":\n\"ws:\")+\"//\"+u;if(this.webSocketConstructor!==void 0)this.ws=new this.webSocketConstructor(l),o(this.\nws);else try{this.ws=new WebSocket(l),o(this.ws)}catch{this.ws=new __unstable_WebSocket(l),o(this.ws)}}catch(c){\nlet f=(this.useSecureWebSocket?\"https:\":\"http:\")+\"//\"+u;fetch(f,{headers:{Upgrade:\"websocket\"}}).then(\ny=>{if(this.ws=y.webSocket,this.ws==null)throw c;this.ws.accept(),o(this.ws,!0)}).catch(y=>{this.emit(\n\"error\",new Error(`All attempts to open a WebSocket to connect to the database failed. Please refer \\\nto https://github.com/neondatabase/serverless/blob/main/CONFIG.md#websocketconstructor-typeof-websoc\\\nket--undefined. Details: ${y}`)),this.emit(\"close\")})}}async startTls(t){if(this.subtls===void 0)throw new Error(\n\"For Postgres SSL connections, you must set `neonConfig.subtls` to the subtls library. See https://g\\\nithub.com/neondatabase/serverless/blob/main/CONFIG.md for more information.\");this.tlsState=1;let n=await this.\nsubtls.TrustedCert.databaseFromPEM(this.rootCerts),i=new this.subtls.WebSocketReadQueue(this.ws),s=i.\nread.bind(i),o=this.rawWrite.bind(this),{read:u,write:c}=await this.subtls.startTls(t,n,s,o,{useSNI:!this.\ndisableSNI,expectPreData:this.pipelineTLS?new Uint8Array([83]):void 0});this.tlsRead=u,this.tlsWrite=\nc,this.tlsState=2,this.encrypted=!0,this.authorized=!0,this.emit(\"secureConnection\",this),this.tlsReadLoop()}async tlsReadLoop(){\nfor(;;){let t=await this.tlsRead();if(t===void 0)break;{let n=d.from(t);this.emit(\"data\",n)}}}rawWrite(t){\nif(!this.coalesceWrites){this.ws&&this.ws.send(t);return}if(this.writeBuffer===void 0)this.writeBuffer=\nt,setTimeout(()=>{this.ws&&this.ws.send(this.writeBuffer),this.writeBuffer=void 0},0);else{let n=new Uint8Array(\nthis.writeBuffer.length+t.length);n.set(this.writeBuffer),n.set(t,this.writeBuffer.length),this.writeBuffer=\nn}}write(t,n=\"utf8\",i=s=>{}){return t.length===0?(i(),!0):(typeof t==\"string\"&&(t=d.from(t,n)),this.\ntlsState===0?(this.rawWrite(t),i()):this.tlsState===1?this.once(\"secureConnection\",()=>{this.write(t,\nn,i)}):(this.tlsWrite(t),i()),!0)}end(t=d.alloc(0),n=\"utf8\",i=()=>{}){return this.write(t,n,()=>{this.\nws.close(),i()}),this}destroy(){return this.destroyed=!0,this.end()}};a(S,\"Socket\"),E(S,\"defaults\",{\npoolQueryViaFetch:!1,fetchEndpoint:a((t,n,i)=>{let s;return i?.jwtAuth?s=t.replace(yi,\"apiauth.\"):s=\nt.replace(yi,\"api.\"),\"https://\"+s+\"/sql\"},\"fetchEndpoint\"),fetchConnectionCache:!0,fetchFunction:void 0,\nwebSocketConstructor:void 0,wsProxy:a(t=>t+\"/v2\",\"wsProxy\"),useSecureWebSocket:!0,forceDisablePgSSL:!0,\ncoalesceWrites:!0,pipelineConnect:\"password\",subtls:void 0,rootCerts:\"\",pipelineTLS:!1,disableSNI:!1,\ndisableWarningInBrowsers:!1}),E(S,\"opts\",{});ce=S});var gi={};ie(gi,{parse:()=>Yt});function Yt(r,e=!1){let{protocol:t}=new URL(r),n=\"http:\"+r.substring(\nt.length),{username:i,password:s,host:o,hostname:u,port:c,pathname:l,search:f,searchParams:y,hash:g}=new URL(\nn);s=decodeURIComponent(s),i=decodeURIComponent(i),l=decodeURIComponent(l);let A=i+\":\"+s,C=e?Object.\nfromEntries(y.entries()):f;return{href:r,protocol:t,auth:A,username:i,password:s,host:o,hostname:u,port:c,\npathname:l,search:f,query:C,hash:g}}var Zt=G(()=>{\"use strict\";p();a(Yt,\"parse\")});var tr=T(Ai=>{\"use strict\";p();Ai.parse=function(r,e){return new er(r,e).parse()};var vt=class vt{constructor(e,t){\nthis.source=e,this.transform=t||Ca,this.position=0,this.entries=[],this.recorded=[],this.dimension=0}isEof(){\nreturn this.position>=this.source.length}nextCharacter(){var e=this.source[this.position++];return e===\n\"\\\\\"?{value:this.source[this.position++],escaped:!0}:{value:e,escaped:!1}}record(e){this.recorded.push(\ne)}newEntry(e){var t;(this.recorded.length>0||e)&&(t=this.recorded.join(\"\"),t===\"NULL\"&&!e&&(t=null),\nt!==null&&(t=this.transform(t)),this.entries.push(t),this.recorded=[])}consumeDimensions(){if(this.source[0]===\n\"[\")for(;!this.isEof();){var e=this.nextCharacter();if(e.value===\"=\")break}}parse(e){var t,n,i;for(this.\nconsumeDimensions();!this.isEof();)if(t=this.nextCharacter(),t.value===\"{\"&&!i)this.dimension++,this.\ndimension>1&&(n=new vt(this.source.substr(this.position-1),this.transform),this.entries.push(n.parse(\n!0)),this.position+=n.position-2);else if(t.value===\"}\"&&!i){if(this.dimension--,!this.dimension&&(this.\nnewEntry(),e))return this.entries}else t.value==='\"'&&!t.escaped?(i&&this.newEntry(!0),i=!i):t.value===\n\",\"&&!i?this.newEntry():this.record(t.value);if(this.dimension!==0)throw new Error(\"array dimension \\\nnot balanced\");return this.entries}};a(vt,\"ArrayParser\");var er=vt;function Ca(r){return r}a(Ca,\"ide\\\nntity\")});var rr=T((Zl,Ci)=>{p();var _a=tr();Ci.exports={create:a(function(r,e){return{parse:a(function(){return _a.\nparse(r,e)},\"parse\")}},\"create\")}});var Ti=T((ef,Ii)=>{\"use strict\";p();var Ia=/(\\d{1,})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})(\\.\\d{1,})?.*?( BC)?$/,\nTa=/^(\\d{1,})-(\\d{2})-(\\d{2})( BC)?$/,Pa=/([Z+-])(\\d{2})?:?(\\d{2})?:?(\\d{2})?/,Ba=/^-?infinity$/;Ii.\nexports=a(function(e){if(Ba.test(e))return Number(e.replace(\"i\",\"I\"));var t=Ia.exec(e);if(!t)return Ra(\ne)||null;var n=!!t[8],i=parseInt(t[1],10);n&&(i=_i(i));var s=parseInt(t[2],10)-1,o=t[3],u=parseInt(t[4],\n10),c=parseInt(t[5],10),l=parseInt(t[6],10),f=t[7];f=f?1e3*parseFloat(f):0;var y,g=La(e);return g!=null?\n(y=new Date(Date.UTC(i,s,o,u,c,l,f)),nr(i)&&y.setUTCFullYear(i),g!==0&&y.setTime(y.getTime()-g)):(y=\nnew Date(i,s,o,u,c,l,f),nr(i)&&y.setFullYear(i)),y},\"parseDate\");function Ra(r){var e=Ta.exec(r);if(e){\nvar t=parseInt(e[1],10),n=!!e[4];n&&(t=_i(t));var i=parseInt(e[2],10)-1,s=e[3],o=new Date(t,i,s);return nr(\nt)&&o.setFullYear(t),o}}a(Ra,\"getDate\");function La(r){if(r.endsWith(\"+00\"))return 0;var e=Pa.exec(r.\nsplit(\" \")[1]);if(e){var t=e[1];if(t===\"Z\")return 0;var n=t===\"-\"?-1:1,i=parseInt(e[2],10)*3600+parseInt(\ne[3]||0,10)*60+parseInt(e[4]||0,10);return i*n*1e3}}a(La,\"timeZoneOffset\");function _i(r){return-(r-\n1)}a(_i,\"bcYearToNegativeYear\");function nr(r){return r>=0&&r<100}a(nr,\"is0To99\")});var Bi=T((nf,Pi)=>{p();Pi.exports=ka;var Fa=Object.prototype.hasOwnProperty;function ka(r){for(var e=1;e<\narguments.length;e++){var t=arguments[e];for(var n in t)Fa.call(t,n)&&(r[n]=t[n])}return r}a(ka,\"ext\\\nend\")});var Fi=T((af,Li)=>{\"use strict\";p();var Ma=Bi();Li.exports=ke;function ke(r){if(!(this instanceof ke))\nreturn new ke(r);Ma(this,Va(r))}a(ke,\"PostgresInterval\");var Ua=[\"seconds\",\"minutes\",\"hours\",\"days\",\n\"months\",\"years\"];ke.prototype.toPostgres=function(){var r=Ua.filter(this.hasOwnProperty,this);return this.\nmilliseconds&&r.indexOf(\"seconds\")<0&&r.push(\"seconds\"),r.length===0?\"0\":r.map(function(e){var t=this[e]||\n0;return e===\"seconds\"&&this.milliseconds&&(t=(t+this.milliseconds/1e3).toFixed(6).replace(/\\.?0+$/,\n\"\")),t+\" \"+e},this).join(\" \")};var Da={years:\"Y\",months:\"M\",days:\"D\",hours:\"H\",minutes:\"M\",seconds:\"\\\nS\"},Oa=[\"years\",\"months\",\"days\"],qa=[\"hours\",\"minutes\",\"seconds\"];ke.prototype.toISOString=ke.prototype.\ntoISO=function(){var r=Oa.map(t,this).join(\"\"),e=qa.map(t,this).join(\"\");return\"P\"+r+\"T\"+e;function t(n){\nvar i=this[n]||0;return n===\"seconds\"&&this.milliseconds&&(i=(i+this.milliseconds/1e3).toFixed(6).replace(\n/0+$/,\"\")),i+Da[n]}};var ir=\"([+-]?\\\\d+)\",Qa=ir+\"\\\\s+years?\",Na=ir+\"\\\\s+mons?\",Wa=ir+\"\\\\s+days?\",ja=\"\\\n([+-])?([\\\\d]*):(\\\\d\\\\d):(\\\\d\\\\d)\\\\.?(\\\\d{1,6})?\",Ha=new RegExp([Qa,Na,Wa,ja].map(function(r){return\"\\\n(\"+r+\")?\"}).join(\"\\\\s*\")),Ri={years:2,months:4,days:6,hours:9,minutes:10,seconds:11,milliseconds:12},\n$a=[\"hours\",\"minutes\",\"seconds\",\"milliseconds\"];function Ga(r){var e=r+\"000000\".slice(r.length);return parseInt(\ne,10)/1e3}a(Ga,\"parseMilliseconds\");function Va(r){if(!r)return{};var e=Ha.exec(r),t=e[8]===\"-\";return Object.\nkeys(Ri).reduce(function(n,i){var s=Ri[i],o=e[s];return!o||(o=i===\"milliseconds\"?Ga(o):parseInt(o,10),\n!o)||(t&&~$a.indexOf(i)&&(o*=-1),n[i]=o),n},{})}a(Va,\"parse\")});var Mi=T((lf,ki)=>{\"use strict\";p();ki.exports=a(function(e){if(/^\\\\x/.test(e))return new d(e.substr(\n2),\"hex\");for(var t=\"\",n=0;n<e.length;)if(e[n]!==\"\\\\\")t+=e[n],++n;else if(/[0-7]{3}/.test(e.substr(n+\n1,3)))t+=String.fromCharCode(parseInt(e.substr(n+1,3),8)),n+=4;else{for(var i=1;n+i<e.length&&e[n+i]===\n\"\\\\\";)i++;for(var s=0;s<Math.floor(i/2);++s)t+=\"\\\\\";n+=Math.floor(i/2)*2}return new d(t,\"binary\")},\"\\\nparseBytea\")});var Wi=T((pf,Ni)=>{p();var Ve=tr(),ze=rr(),xt=Ti(),Di=Fi(),Oi=Mi();function St(r){return a(function(t){\nreturn t===null?t:r(t)},\"nullAllowed\")}a(St,\"allowNull\");function qi(r){return r===null?r:r===\"TRUE\"||\nr===\"t\"||r===\"true\"||r===\"y\"||r===\"yes\"||r===\"on\"||r===\"1\"}a(qi,\"parseBool\");function za(r){return r?\nVe.parse(r,qi):null}a(za,\"parseBoolArray\");function Ka(r){return parseInt(r,10)}a(Ka,\"parseBaseTenIn\\\nt\");function sr(r){return r?Ve.parse(r,St(Ka)):null}a(sr,\"parseIntegerArray\");function Ya(r){return r?\nVe.parse(r,St(function(e){return Qi(e).trim()})):null}a(Ya,\"parseBigIntegerArray\");var Za=a(function(r){\nif(!r)return null;var e=ze.create(r,function(t){return t!==null&&(t=cr(t)),t});return e.parse()},\"pa\\\nrsePointArray\"),or=a(function(r){if(!r)return null;var e=ze.create(r,function(t){return t!==null&&(t=\nparseFloat(t)),t});return e.parse()},\"parseFloatArray\"),re=a(function(r){if(!r)return null;var e=ze.\ncreate(r);return e.parse()},\"parseStringArray\"),ar=a(function(r){if(!r)return null;var e=ze.create(r,\nfunction(t){return t!==null&&(t=xt(t)),t});return e.parse()},\"parseDateArray\"),Ja=a(function(r){if(!r)\nreturn null;var e=ze.create(r,function(t){return t!==null&&(t=Di(t)),t});return e.parse()},\"parseInt\\\nervalArray\"),Xa=a(function(r){return r?Ve.parse(r,St(Oi)):null},\"parseByteAArray\"),ur=a(function(r){\nreturn parseInt(r,10)},\"parseInteger\"),Qi=a(function(r){var e=String(r);return/^\\d+$/.test(e)?e:r},\"\\\nparseBigInteger\"),Ui=a(function(r){return r?Ve.parse(r,St(JSON.parse)):null},\"parseJsonArray\"),cr=a(\nfunction(r){return r[0]!==\"(\"?null:(r=r.substring(1,r.length-1).split(\",\"),{x:parseFloat(r[0]),y:parseFloat(\nr[1])})},\"parsePoint\"),eu=a(function(r){if(r[0]!==\"<\"&&r[1]!==\"(\")return null;for(var e=\"(\",t=\"\",n=!1,\ni=2;i<r.length-1;i++){if(n||(e+=r[i]),r[i]===\")\"){n=!0;continue}else if(!n)continue;r[i]!==\",\"&&(t+=\nr[i])}var s=cr(e);return s.radius=parseFloat(t),s},\"parseCircle\"),tu=a(function(r){r(20,Qi),r(21,ur),\nr(23,ur),r(26,ur),r(700,parseFloat),r(701,parseFloat),r(16,qi),r(1082,xt),r(1114,xt),r(1184,xt),r(600,\ncr),r(651,re),r(718,eu),r(1e3,za),r(1001,Xa),r(1005,sr),r(1007,sr),r(1028,sr),r(1016,Ya),r(1017,Za),\nr(1021,or),r(1022,or),r(1231,or),r(1014,re),r(1015,re),r(1008,re),r(1009,re),r(1040,re),r(1041,re),r(\n1115,ar),r(1182,ar),r(1185,ar),r(1186,Di),r(1187,Ja),r(17,Oi),r(114,JSON.parse.bind(JSON)),r(3802,JSON.\nparse.bind(JSON)),r(199,Ui),r(3807,Ui),r(3907,re),r(2951,re),r(791,re),r(1183,re),r(1270,re)},\"init\");\nNi.exports={init:tu}});var Hi=T((mf,ji)=>{\"use strict\";p();var z=1e6;function ru(r){var e=r.readInt32BE(0),t=r.readUInt32BE(\n4),n=\"\";e<0&&(e=~e+(t===0),t=~t+1>>>0,n=\"-\");var i=\"\",s,o,u,c,l,f;{if(s=e%z,e=e/z>>>0,o=4294967296*s+\nt,t=o/z>>>0,u=\"\"+(o-z*t),t===0&&e===0)return n+u+i;for(c=\"\",l=6-u.length,f=0;f<l;f++)c+=\"0\";i=c+u+i}\n{if(s=e%z,e=e/z>>>0,o=4294967296*s+t,t=o/z>>>0,u=\"\"+(o-z*t),t===0&&e===0)return n+u+i;for(c=\"\",l=6-u.\nlength,f=0;f<l;f++)c+=\"0\";i=c+u+i}{if(s=e%z,e=e/z>>>0,o=4294967296*s+t,t=o/z>>>0,u=\"\"+(o-z*t),t===0&&\ne===0)return n+u+i;for(c=\"\",l=6-u.length,f=0;f<l;f++)c+=\"0\";i=c+u+i}return s=e%z,o=4294967296*s+t,u=\n\"\"+o%z,n+u+i}a(ru,\"readInt8\");ji.exports=ru});var Ki=T((bf,zi)=>{p();var nu=Hi(),L=a(function(r,e,t,n,i){t=t||0,n=n||!1,i=i||function(A,C,D){return A*\nMath.pow(2,D)+C};var s=t>>3,o=a(function(A){return n?~A&255:A},\"inv\"),u=255,c=8-t%8;e<c&&(u=255<<8-e&\n255,c=e),t&&(u=u>>t%8);var l=0;t%8+e>=8&&(l=i(0,o(r[s])&u,c));for(var f=e+t>>3,y=s+1;y<f;y++)l=i(l,o(\nr[y]),8);var g=(e+t)%8;return g>0&&(l=i(l,o(r[f])>>8-g,g)),l},\"parseBits\"),Vi=a(function(r,e,t){var n=Math.\npow(2,t-1)-1,i=L(r,1),s=L(r,t,1);if(s===0)return 0;var o=1,u=a(function(l,f,y){l===0&&(l=1);for(var g=1;g<=\ny;g++)o/=2,(f&1<<y-g)>0&&(l+=o);return l},\"parsePrecisionBits\"),c=L(r,e,t+1,!1,u);return s==Math.pow(\n2,t+1)-1?c===0?i===0?1/0:-1/0:NaN:(i===0?1:-1)*Math.pow(2,s-n)*c},\"parseFloatFromBits\"),iu=a(function(r){\nreturn L(r,1)==1?-1*(L(r,15,1,!0)+1):L(r,15,1)},\"parseInt16\"),$i=a(function(r){return L(r,1)==1?-1*(L(\nr,31,1,!0)+1):L(r,31,1)},\"parseInt32\"),su=a(function(r){return Vi(r,23,8)},\"parseFloat32\"),ou=a(function(r){\nreturn Vi(r,52,11)},\"parseFloat64\"),au=a(function(r){var e=L(r,16,32);if(e==49152)return NaN;for(var t=Math.\npow(1e4,L(r,16,16)),n=0,i=[],s=L(r,16),o=0;o<s;o++)n+=L(r,16,64+16*o)*t,t/=1e4;var u=Math.pow(10,L(r,\n16,48));return(e===0?1:-1)*Math.round(n*u)/u},\"parseNumeric\"),Gi=a(function(r,e){var t=L(e,1),n=L(e,\n63,1),i=new Date((t===0?1:-1)*n/1e3+9466848e5);return r||i.setTime(i.getTime()+i.getTimezoneOffset()*\n6e4),i.usec=n%1e3,i.getMicroSeconds=function(){return this.usec},i.setMicroSeconds=function(s){this.\nusec=s},i.getUTCMicroSeconds=function(){return this.usec},i},\"parseDate\"),Ke=a(function(r){for(var e=L(\nr,32),t=L(r,32,32),n=L(r,32,64),i=96,s=[],o=0;o<e;o++)s[o]=L(r,32,i),i+=32,i+=32;var u=a(function(l){\nvar f=L(r,32,i);if(i+=32,f==4294967295)return null;var y;if(l==23||l==20)return y=L(r,f*8,i),i+=f*8,\ny;if(l==25)return y=r.toString(this.encoding,i>>3,(i+=f<<3)>>3),y;console.log(\"ERROR: ElementType no\\\nt implemented: \"+l)},\"parseElement\"),c=a(function(l,f){var y=[],g;if(l.length>1){var A=l.shift();for(g=\n0;g<A;g++)y[g]=c(l,f);l.unshift(A)}else for(g=0;g<l[0];g++)y[g]=u(f);return y},\"parse\");return c(s,n)},\n\"parseArray\"),uu=a(function(r){return r.toString(\"utf8\")},\"parseText\"),cu=a(function(r){return r===null?\nnull:L(r,8)>0},\"parseBool\"),lu=a(function(r){r(20,nu),r(21,iu),r(23,$i),r(26,$i),r(1700,au),r(700,su),\nr(701,ou),r(16,cu),r(1114,Gi.bind(null,!1)),r(1184,Gi.bind(null,!0)),r(1e3,Ke),r(1007,Ke),r(1016,Ke),\nr(1008,Ke),r(1009,Ke),r(25,uu)},\"init\");zi.exports={init:lu}});var Zi=T((Sf,Yi)=>{p();Yi.exports={BOOL:16,BYTEA:17,CHAR:18,INT8:20,INT2:21,INT4:23,REGPROC:24,TEXT:25,\nOID:26,TID:27,XID:28,CID:29,JSON:114,XML:142,PG_NODE_TREE:194,SMGR:210,PATH:602,POLYGON:604,CIDR:650,\nFLOAT4:700,FLOAT8:701,ABSTIME:702,RELTIME:703,TINTERVAL:704,CIRCLE:718,MACADDR8:774,MONEY:790,MACADDR:829,\nINET:869,ACLITEM:1033,BPCHAR:1042,VARCHAR:1043,DATE:1082,TIME:1083,TIMESTAMP:1114,TIMESTAMPTZ:1184,INTERVAL:1186,\nTIMETZ:1266,BIT:1560,VARBIT:1562,NUMERIC:1700,REFCURSOR:1790,REGPROCEDURE:2202,REGOPER:2203,REGOPERATOR:2204,\nREGCLASS:2205,REGTYPE:2206,UUID:2950,TXID_SNAPSHOT:2970,PG_LSN:3220,PG_NDISTINCT:3361,PG_DEPENDENCIES:3402,\nTSVECTOR:3614,TSQUERY:3615,GTSVECTOR:3642,REGCONFIG:3734,REGDICTIONARY:3769,JSONB:3802,REGNAMESPACE:4089,\nREGROLE:4096}});var Je=T(Ze=>{p();var fu=Wi(),hu=Ki(),pu=rr(),du=Zi();Ze.getTypeParser=yu;Ze.setTypeParser=mu;Ze.arrayParser=\npu;Ze.builtins=du;var Ye={text:{},binary:{}};function Ji(r){return String(r)}a(Ji,\"noParse\");function yu(r,e){\nreturn e=e||\"text\",Ye[e]&&Ye[e][r]||Ji}a(yu,\"getTypeParser\");function mu(r,e,t){typeof e==\"function\"&&\n(t=e,e=\"text\"),Ye[e][r]=t}a(mu,\"setTypeParser\");fu.init(function(r,e){Ye.text[r]=e});hu.init(function(r,e){\nYe.binary[r]=e})});var At=T((If,Xi)=>{\"use strict\";p();var wu=Je();function Et(r){this._types=r||wu,this.text={},this.binary=\n{}}a(Et,\"TypeOverrides\");Et.prototype.getOverrides=function(r){switch(r){case\"text\":return this.text;case\"\\\nbinary\":return this.binary;default:return{}}};Et.prototype.setTypeParser=function(r,e,t){typeof e==\"\\\nfunction\"&&(t=e,e=\"text\"),this.getOverrides(e)[r]=t};Et.prototype.getTypeParser=function(r,e){return e=\ne||\"text\",this.getOverrides(e)[r]||this._types.getTypeParser(r,e)};Xi.exports=Et});function Xe(r){let e=1779033703,t=3144134277,n=1013904242,i=2773480762,s=1359893119,o=2600822924,u=528734635,\nc=1541459225,l=0,f=0,y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,\n2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,\n4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,\n3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,\n1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,\n275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,\n2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],g=a((I,w)=>I>>>w|I<<32-\nw,\"rrot\"),A=new Uint32Array(64),C=new Uint8Array(64),D=a(()=>{for(let R=0,j=0;R<16;R++,j+=4)A[R]=C[j]<<\n24|C[j+1]<<16|C[j+2]<<8|C[j+3];for(let R=16;R<64;R++){let j=g(A[R-15],7)^g(A[R-15],18)^A[R-15]>>>3,le=g(\nA[R-2],17)^g(A[R-2],19)^A[R-2]>>>10;A[R]=A[R-16]+j+A[R-7]+le|0}let I=e,w=t,Z=n,W=i,J=s,X=o,se=u,oe=c;\nfor(let R=0;R<64;R++){let j=g(J,6)^g(J,11)^g(J,25),le=J&X^~J&se,de=oe+j+le+y[R]+A[R]|0,We=g(I,2)^g(I,\n13)^g(I,22),fe=I&w^I&Z^w&Z,_e=We+fe|0;oe=se,se=X,X=J,J=W+de|0,W=Z,Z=w,w=I,I=de+_e|0}e=e+I|0,t=t+w|0,\nn=n+Z|0,i=i+W|0,s=s+J|0,o=o+X|0,u=u+se|0,c=c+oe|0,f=0},\"process\"),Y=a(I=>{typeof I==\"string\"&&(I=new TextEncoder().\nencode(I));for(let w=0;w<I.length;w++)C[f++]=I[w],f===64&&D();l+=I.length},\"add\"),P=a(()=>{if(C[f++]=\n128,f==64&&D(),f+8>64){for(;f<64;)C[f++]=0;D()}for(;f<58;)C[f++]=0;let I=l*8;C[f++]=I/1099511627776&\n255,C[f++]=I/4294967296&255,C[f++]=I>>>24,C[f++]=I>>>16&255,C[f++]=I>>>8&255,C[f++]=I&255,D();let w=new Uint8Array(\n32);return w[0]=e>>>24,w[1]=e>>>16&255,w[2]=e>>>8&255,w[3]=e&255,w[4]=t>>>24,w[5]=t>>>16&255,w[6]=t>>>\n8&255,w[7]=t&255,w[8]=n>>>24,w[9]=n>>>16&255,w[10]=n>>>8&255,w[11]=n&255,w[12]=i>>>24,w[13]=i>>>16&255,\nw[14]=i>>>8&255,w[15]=i&255,w[16]=s>>>24,w[17]=s>>>16&255,w[18]=s>>>8&255,w[19]=s&255,w[20]=o>>>24,w[21]=\no>>>16&255,w[22]=o>>>8&255,w[23]=o&255,w[24]=u>>>24,w[25]=u>>>16&255,w[26]=u>>>8&255,w[27]=u&255,w[28]=\nc>>>24,w[29]=c>>>16&255,w[30]=c>>>8&255,w[31]=c&255,w},\"digest\");return r===void 0?{add:Y,digest:P}:\n(Y(r),P())}var es=G(()=>{\"use strict\";p();a(Xe,\"sha256\")});var U,et,ts=G(()=>{\"use strict\";p();U=class U{constructor(){E(this,\"_dataLength\",0);E(this,\"_bufferL\\\nength\",0);E(this,\"_state\",new Int32Array(4));E(this,\"_buffer\",new ArrayBuffer(68));E(this,\"_buffer8\");\nE(this,\"_buffer32\");this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this.\n_buffer,0,17),this.start()}static hashByteArray(e,t=!1){return this.onePassHasher.start().appendByteArray(\ne).end(t)}static hashStr(e,t=!1){return this.onePassHasher.start().appendStr(e).end(t)}static hashAsciiStr(e,t=!1){\nreturn this.onePassHasher.start().appendAsciiStr(e).end(t)}static _hex(e){let t=U.hexChars,n=U.hexOut,\ni,s,o,u;for(u=0;u<4;u+=1)for(s=u*8,i=e[u],o=0;o<8;o+=2)n[s+1+o]=t.charAt(i&15),i>>>=4,n[s+0+o]=t.charAt(\ni&15),i>>>=4;return n.join(\"\")}static _md5cycle(e,t){let n=e[0],i=e[1],s=e[2],o=e[3];n+=(i&s|~i&o)+t[0]-\n680876936|0,n=(n<<7|n>>>25)+i|0,o+=(n&i|~n&s)+t[1]-389564586|0,o=(o<<12|o>>>20)+n|0,s+=(o&n|~o&i)+t[2]+\n606105819|0,s=(s<<17|s>>>15)+o|0,i+=(s&o|~s&n)+t[3]-1044525330|0,i=(i<<22|i>>>10)+s|0,n+=(i&s|~i&o)+\nt[4]-176418897|0,n=(n<<7|n>>>25)+i|0,o+=(n&i|~n&s)+t[5]+1200080426|0,o=(o<<12|o>>>20)+n|0,s+=(o&n|~o&\ni)+t[6]-1473231341|0,s=(s<<17|s>>>15)+o|0,i+=(s&o|~s&n)+t[7]-45705983|0,i=(i<<22|i>>>10)+s|0,n+=(i&s|\n~i&o)+t[8]+1770035416|0,n=(n<<7|n>>>25)+i|0,o+=(n&i|~n&s)+t[9]-1958414417|0,o=(o<<12|o>>>20)+n|0,s+=\n(o&n|~o&i)+t[10]-42063|0,s=(s<<17|s>>>15)+o|0,i+=(s&o|~s&n)+t[11]-1990404162|0,i=(i<<22|i>>>10)+s|0,\nn+=(i&s|~i&o)+t[12]+1804603682|0,n=(n<<7|n>>>25)+i|0,o+=(n&i|~n&s)+t[13]-40341101|0,o=(o<<12|o>>>20)+\nn|0,s+=(o&n|~o&i)+t[14]-1502002290|0,s=(s<<17|s>>>15)+o|0,i+=(s&o|~s&n)+t[15]+1236535329|0,i=(i<<22|\ni>>>10)+s|0,n+=(i&o|s&~o)+t[1]-165796510|0,n=(n<<5|n>>>27)+i|0,o+=(n&s|i&~s)+t[6]-1069501632|0,o=(o<<\n9|o>>>23)+n|0,s+=(o&i|n&~i)+t[11]+643717713|0,s=(s<<14|s>>>18)+o|0,i+=(s&n|o&~n)+t[0]-373897302|0,i=\n(i<<20|i>>>12)+s|0,n+=(i&o|s&~o)+t[5]-701558691|0,n=(n<<5|n>>>27)+i|0,o+=(n&s|i&~s)+t[10]+38016083|0,\no=(o<<9|o>>>23)+n|0,s+=(o&i|n&~i)+t[15]-660478335|0,s=(s<<14|s>>>18)+o|0,i+=(s&n|o&~n)+t[4]-405537848|\n0,i=(i<<20|i>>>12)+s|0,n+=(i&o|s&~o)+t[9]+568446438|0,n=(n<<5|n>>>27)+i|0,o+=(n&s|i&~s)+t[14]-1019803690|\n0,o=(o<<9|o>>>23)+n|0,s+=(o&i|n&~i)+t[3]-187363961|0,s=(s<<14|s>>>18)+o|0,i+=(s&n|o&~n)+t[8]+1163531501|\n0,i=(i<<20|i>>>12)+s|0,n+=(i&o|s&~o)+t[13]-1444681467|0,n=(n<<5|n>>>27)+i|0,o+=(n&s|i&~s)+t[2]-51403784|\n0,o=(o<<9|o>>>23)+n|0,s+=(o&i|n&~i)+t[7]+1735328473|0,s=(s<<14|s>>>18)+o|0,i+=(s&n|o&~n)+t[12]-1926607734|\n0,i=(i<<20|i>>>12)+s|0,n+=(i^s^o)+t[5]-378558|0,n=(n<<4|n>>>28)+i|0,o+=(n^i^s)+t[8]-2022574463|0,o=(o<<\n11|o>>>21)+n|0,s+=(o^n^i)+t[11]+1839030562|0,s=(s<<16|s>>>16)+o|0,i+=(s^o^n)+t[14]-35309556|0,i=(i<<\n23|i>>>9)+s|0,n+=(i^s^o)+t[1]-1530992060|0,n=(n<<4|n>>>28)+i|0,o+=(n^i^s)+t[4]+1272893353|0,o=(o<<11|\no>>>21)+n|0,s+=(o^n^i)+t[7]-155497632|0,s=(s<<16|s>>>16)+o|0,i+=(s^o^n)+t[10]-1094730640|0,i=(i<<23|\ni>>>9)+s|0,n+=(i^s^o)+t[13]+681279174|0,n=(n<<4|n>>>28)+i|0,o+=(n^i^s)+t[0]-358537222|0,o=(o<<11|o>>>\n21)+n|0,s+=(o^n^i)+t[3]-722521979|0,s=(s<<16|s>>>16)+o|0,i+=(s^o^n)+t[6]+76029189|0,i=(i<<23|i>>>9)+\ns|0,n+=(i^s^o)+t[9]-640364487|0,n=(n<<4|n>>>28)+i|0,o+=(n^i^s)+t[12]-421815835|0,o=(o<<11|o>>>21)+n|\n0,s+=(o^n^i)+t[15]+530742520|0,s=(s<<16|s>>>16)+o|0,i+=(s^o^n)+t[2]-995338651|0,i=(i<<23|i>>>9)+s|0,\nn+=(s^(i|~o))+t[0]-198630844|0,n=(n<<6|n>>>26)+i|0,o+=(i^(n|~s))+t[7]+1126891415|0,o=(o<<10|o>>>22)+\nn|0,s+=(n^(o|~i))+t[14]-1416354905|0,s=(s<<15|s>>>17)+o|0,i+=(o^(s|~n))+t[5]-57434055|0,i=(i<<21|i>>>\n11)+s|0,n+=(s^(i|~o))+t[12]+1700485571|0,n=(n<<6|n>>>26)+i|0,o+=(i^(n|~s))+t[3]-1894986606|0,o=(o<<10|\no>>>22)+n|0,s+=(n^(o|~i))+t[10]-1051523|0,s=(s<<15|s>>>17)+o|0,i+=(o^(s|~n))+t[1]-2054922799|0,i=(i<<\n21|i>>>11)+s|0,n+=(s^(i|~o))+t[8]+1873313359|0,n=(n<<6|n>>>26)+i|0,o+=(i^(n|~s))+t[15]-30611744|0,o=\n(o<<10|o>>>22)+n|0,s+=(n^(o|~i))+t[6]-1560198380|0,s=(s<<15|s>>>17)+o|0,i+=(o^(s|~n))+t[13]+1309151649|\n0,i=(i<<21|i>>>11)+s|0,n+=(s^(i|~o))+t[4]-145523070|0,n=(n<<6|n>>>26)+i|0,o+=(i^(n|~s))+t[11]-1120210379|\n0,o=(o<<10|o>>>22)+n|0,s+=(n^(o|~i))+t[2]+718787259|0,s=(s<<15|s>>>17)+o|0,i+=(o^(s|~n))+t[9]-343485551|\n0,i=(i<<21|i>>>11)+s|0,e[0]=n+e[0]|0,e[1]=i+e[1]|0,e[2]=s+e[2]|0,e[3]=o+e[3]|0}start(){return this._dataLength=\n0,this._bufferLength=0,this._state.set(U.stateIdentity),this}appendStr(e){let t=this._buffer8,n=this.\n_buffer32,i=this._bufferLength,s,o;for(o=0;o<e.length;o+=1){if(s=e.charCodeAt(o),s<128)t[i++]=s;else if(s<\n2048)t[i++]=(s>>>6)+192,t[i++]=s&63|128;else if(s<55296||s>56319)t[i++]=(s>>>12)+224,t[i++]=s>>>6&63|\n128,t[i++]=s&63|128;else{if(s=(s-55296)*1024+(e.charCodeAt(++o)-56320)+65536,s>1114111)throw new Error(\n\"Unicode standard supports code points up to U+10FFFF\");t[i++]=(s>>>18)+240,t[i++]=s>>>12&63|128,t[i++]=\ns>>>6&63|128,t[i++]=s&63|128}i>=64&&(this._dataLength+=64,U._md5cycle(this._state,n),i-=64,n[0]=n[16])}\nreturn this._bufferLength=i,this}appendAsciiStr(e){let t=this._buffer8,n=this._buffer32,i=this._bufferLength,\ns,o=0;for(;;){for(s=Math.min(e.length-o,64-i);s--;)t[i++]=e.charCodeAt(o++);if(i<64)break;this._dataLength+=\n64,U._md5cycle(this._state,n),i=0}return this._bufferLength=i,this}appendByteArray(e){let t=this._buffer8,\nn=this._buffer32,i=this._bufferLength,s,o=0;for(;;){for(s=Math.min(e.length-o,64-i);s--;)t[i++]=e[o++];\nif(i<64)break;this._dataLength+=64,U._md5cycle(this._state,n),i=0}return this._bufferLength=i,this}getState(){\nlet e=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this.\n_bufferLength,length:this._dataLength,state:[e[0],e[1],e[2],e[3]]}}setState(e){let t=e.buffer,n=e.state,\ni=this._state,s;for(this._dataLength=e.length,this._bufferLength=e.buflen,i[0]=n[0],i[1]=n[1],i[2]=n[2],\ni[3]=n[3],s=0;s<t.length;s+=1)this._buffer8[s]=t.charCodeAt(s)}end(e=!1){let t=this._bufferLength,n=this.\n_buffer8,i=this._buffer32,s=(t>>2)+1;this._dataLength+=t;let o=this._dataLength*8;if(n[t]=128,n[t+1]=\nn[t+2]=n[t+3]=0,i.set(U.buffer32Identity.subarray(s),s),t>55&&(U._md5cycle(this._state,i),i.set(U.buffer32Identity)),\no<=4294967295)i[14]=o;else{let u=o.toString(16).match(/(.*?)(.{0,8})$/);if(u===null)return;let c=parseInt(\nu[2],16),l=parseInt(u[1],16)||0;i[14]=c,i[15]=l}return U._md5cycle(this._state,i),e?this._state:U._hex(\nthis._state)}};a(U,\"Md5\"),E(U,\"stateIdentity\",new Int32Array([1732584193,-271733879,-1732584194,271733878])),\nE(U,\"buffer32Identity\",new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])),E(U,\"hexChars\",\"0123456789\\\nabcdef\"),E(U,\"hexOut\",[]),E(U,\"onePassHasher\",new U);et=U});var lr={};ie(lr,{createHash:()=>bu,createHmac:()=>vu,randomBytes:()=>gu});function gu(r){return crypto.\ngetRandomValues(d.alloc(r))}function bu(r){if(r===\"sha256\")return{update:a(function(e){return{digest:a(\nfunction(){return d.from(Xe(e))},\"digest\")}},\"update\")};if(r===\"md5\")return{update:a(function(e){return{\ndigest:a(function(){return typeof e==\"string\"?et.hashStr(e):et.hashByteArray(e)},\"digest\")}},\"update\")};\nthrow new Error(`Hash type '${r}' not supported`)}function vu(r,e){if(r!==\"sha256\")throw new Error(`\\\nOnly sha256 is supported (requested: '${r}')`);return{update:a(function(t){return{digest:a(function(){\ntypeof e==\"string\"&&(e=new TextEncoder().encode(e)),typeof t==\"string\"&&(t=new TextEncoder().encode(\nt));let n=e.length;if(n>64)e=Xe(e);else if(n<64){let c=new Uint8Array(64);c.set(e),e=c}let i=new Uint8Array(\n64),s=new Uint8Array(64);for(let c=0;c<64;c++)i[c]=54^e[c],s[c]=92^e[c];let o=new Uint8Array(t.length+\n64);o.set(i,0),o.set(t,64);let u=new Uint8Array(96);return u.set(s,0),u.set(Xe(o),64),d.from(Xe(u))},\n\"digest\")}},\"update\")}}var fr=G(()=>{\"use strict\";p();es();ts();a(gu,\"randomBytes\");a(bu,\"createHash\");\na(vu,\"createHmac\")});var tt=T((Qf,hr)=>{\"use strict\";p();hr.exports={host:\"localhost\",user:m.platform===\"win32\"?m.env.USERNAME:\nm.env.USER,database:void 0,password:null,connectionString:void 0,port:5432,rows:0,binary:!1,max:10,idleTimeoutMillis:3e4,\nclient_encoding:\"\",ssl:!1,application_name:void 0,fallback_application_name:void 0,options:void 0,parseInputDatesAsUTC:!1,\nstatement_timeout:!1,lock_timeout:!1,idle_in_transaction_session_timeout:!1,query_timeout:!1,connect_timeout:0,\nkeepalives:1,keepalives_idle:0};var Me=Je(),xu=Me.getTypeParser(20,\"text\"),Su=Me.getTypeParser(1016,\n\"text\");hr.exports.__defineSetter__(\"parseInt8\",function(r){Me.setTypeParser(20,\"text\",r?Me.getTypeParser(\n23,\"text\"):xu),Me.setTypeParser(1016,\"text\",r?Me.getTypeParser(1007,\"text\"):Su)})});var rt=T((Wf,ns)=>{\"use strict\";p();var Eu=(fr(),O(lr)),Au=tt();function Cu(r){var e=r.replace(/\\\\/g,\n\"\\\\\\\\\").replace(/\"/g,'\\\\\"');return'\"'+e+'\"'}a(Cu,\"escapeElement\");function rs(r){for(var e=\"{\",t=0;t<\nr.length;t++)t>0&&(e=e+\",\"),r[t]===null||typeof r[t]>\"u\"?e=e+\"NULL\":Array.isArray(r[t])?e=e+rs(r[t]):\nr[t]instanceof d?e+=\"\\\\\\\\x\"+r[t].toString(\"hex\"):e+=Cu(Ct(r[t]));return e=e+\"}\",e}a(rs,\"arrayString\");\nvar Ct=a(function(r,e){if(r==null)return null;if(r instanceof d)return r;if(ArrayBuffer.isView(r)){var t=d.\nfrom(r.buffer,r.byteOffset,r.byteLength);return t.length===r.byteLength?t:t.slice(r.byteOffset,r.byteOffset+\nr.byteLength)}return r instanceof Date?Au.parseInputDatesAsUTC?Tu(r):Iu(r):Array.isArray(r)?rs(r):typeof r==\n\"object\"?_u(r,e):r.toString()},\"prepareValue\");function _u(r,e){if(r&&typeof r.toPostgres==\"function\"){\nif(e=e||[],e.indexOf(r)!==-1)throw new Error('circular reference detected while preparing \"'+r+'\" fo\\\nr query');return e.push(r),Ct(r.toPostgres(Ct),e)}return JSON.stringify(r)}a(_u,\"prepareObject\");function N(r,e){\nfor(r=\"\"+r;r.length<e;)r=\"0\"+r;return r}a(N,\"pad\");function Iu(r){var e=-r.getTimezoneOffset(),t=r.getFullYear(),\nn=t<1;n&&(t=Math.abs(t)+1);var i=N(t,4)+\"-\"+N(r.getMonth()+1,2)+\"-\"+N(r.getDate(),2)+\"T\"+N(r.getHours(),\n2)+\":\"+N(r.getMinutes(),2)+\":\"+N(r.getSeconds(),2)+\".\"+N(r.getMilliseconds(),3);return e<0?(i+=\"-\",e*=\n-1):i+=\"+\",i+=N(Math.floor(e/60),2)+\":\"+N(e%60,2),n&&(i+=\" BC\"),i}a(Iu,\"dateToString\");function Tu(r){\nvar e=r.getUTCFullYear(),t=e<1;t&&(e=Math.abs(e)+1);var n=N(e,4)+\"-\"+N(r.getUTCMonth()+1,2)+\"-\"+N(r.\ngetUTCDate(),2)+\"T\"+N(r.getUTCHours(),2)+\":\"+N(r.getUTCMinutes(),2)+\":\"+N(r.getUTCSeconds(),2)+\".\"+N(\nr.getUTCMilliseconds(),3);return n+=\"+00:00\",t&&(n+=\" BC\"),n}a(Tu,\"dateToStringUTC\");function Pu(r,e,t){\nreturn r=typeof r==\"string\"?{text:r}:r,e&&(typeof e==\"function\"?r.callback=e:r.values=e),t&&(r.callback=\nt),r}a(Pu,\"normalizeQueryConfig\");var pr=a(function(r){return Eu.createHash(\"md5\").update(r,\"utf-8\").\ndigest(\"hex\")},\"md5\"),Bu=a(function(r,e,t){var n=pr(e+r),i=pr(d.concat([d.from(n),t]));return\"md5\"+i},\n\"postgresMd5PasswordHash\");ns.exports={prepareValue:a(function(e){return Ct(e)},\"prepareValueWrapper\"),\nnormalizeQueryConfig:Pu,postgresMd5PasswordHash:Bu,md5:pr}});var nt={};ie(nt,{default:()=>ku});var ku,it=G(()=>{\"use strict\";p();ku={}});var ds=T((th,ps)=>{\"use strict\";p();var yr=(fr(),O(lr));function Mu(r){if(r.indexOf(\"SCRAM-SHA-256\")===\n-1)throw new Error(\"SASL: Only mechanism SCRAM-SHA-256 is currently supported\");let e=yr.randomBytes(\n18).toString(\"base64\");return{mechanism:\"SCRAM-SHA-256\",clientNonce:e,response:\"n,,n=*,r=\"+e,message:\"\\\nSASLInitialResponse\"}}a(Mu,\"startSession\");function Uu(r,e,t){if(r.message!==\"SASLInitialResponse\")throw new Error(\n\"SASL: Last message was not SASLInitialResponse\");if(typeof e!=\"string\")throw new Error(\"SASL: SCRAM\\\n-SERVER-FIRST-MESSAGE: client password must be a string\");if(typeof t!=\"string\")throw new Error(\"SAS\\\nL: SCRAM-SERVER-FIRST-MESSAGE: serverData must be a string\");let n=qu(t);if(n.nonce.startsWith(r.clientNonce)){\nif(n.nonce.length===r.clientNonce.length)throw new Error(\"SASL: SCRAM-SERVER-FIRST-MESSAGE: server n\\\nonce is too short\")}else throw new Error(\"SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not st\\\nart with client nonce\");var i=d.from(n.salt,\"base64\"),s=Wu(e,i,n.iteration),o=Ue(s,\"Client Key\"),u=Nu(\no),c=\"n=*,r=\"+r.clientNonce,l=\"r=\"+n.nonce+\",s=\"+n.salt+\",i=\"+n.iteration,f=\"c=biws,r=\"+n.nonce,y=c+\n\",\"+l+\",\"+f,g=Ue(u,y),A=hs(o,g),C=A.toString(\"base64\"),D=Ue(s,\"Server Key\"),Y=Ue(D,y);r.message=\"SAS\\\nLResponse\",r.serverSignature=Y.toString(\"base64\"),r.response=f+\",p=\"+C}a(Uu,\"continueSession\");function Du(r,e){\nif(r.message!==\"SASLResponse\")throw new Error(\"SASL: Last message was not SASLResponse\");if(typeof e!=\n\"string\")throw new Error(\"SASL: SCRAM-SERVER-FINAL-MESSAGE: serverData must be a string\");let{serverSignature:t}=Qu(\ne);if(t!==r.serverSignature)throw new Error(\"SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature does\\\n not match\")}a(Du,\"finalizeSession\");function Ou(r){if(typeof r!=\"string\")throw new TypeError(\"SASL:\\\n text must be a string\");return r.split(\"\").map((e,t)=>r.charCodeAt(t)).every(e=>e>=33&&e<=43||e>=45&&\ne<=126)}a(Ou,\"isPrintableChars\");function ls(r){return/^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.\ntest(r)}a(ls,\"isBase64\");function fs(r){if(typeof r!=\"string\")throw new TypeError(\"SASL: attribute p\\\nairs text must be a string\");return new Map(r.split(\",\").map(e=>{if(!/^.=/.test(e))throw new Error(\"\\\nSASL: Invalid attribute pair entry\");let t=e[0],n=e.substring(2);return[t,n]}))}a(fs,\"parseAttribute\\\nPairs\");function qu(r){let e=fs(r),t=e.get(\"r\");if(t){if(!Ou(t))throw new Error(\"SASL: SCRAM-SERVER-\\\nFIRST-MESSAGE: nonce must only contain printable characters\")}else throw new Error(\"SASL: SCRAM-SERV\\\nER-FIRST-MESSAGE: nonce missing\");let n=e.get(\"s\");if(n){if(!ls(n))throw new Error(\"SASL: SCRAM-SERV\\\nER-FIRST-MESSAGE: salt must be base64\")}else throw new Error(\"SASL: SCRAM-SERVER-FIRST-MESSAGE: salt\\\n missing\");let i=e.get(\"i\");if(i){if(!/^[1-9][0-9]*$/.test(i))throw new Error(\"SASL: SCRAM-SERVER-FI\\\nRST-MESSAGE: invalid iteration count\")}else throw new Error(\"SASL: SCRAM-SERVER-FIRST-MESSAGE: itera\\\ntion missing\");let s=parseInt(i,10);return{nonce:t,salt:n,iteration:s}}a(qu,\"parseServerFirstMessage\");\nfunction Qu(r){let t=fs(r).get(\"v\");if(t){if(!ls(t))throw new Error(\"SASL: SCRAM-SERVER-FINAL-MESSAG\\\nE: server signature must be base64\")}else throw new Error(\"SASL: SCRAM-SERVER-FINAL-MESSAGE: server \\\nsignature is missing\");return{serverSignature:t}}a(Qu,\"parseServerFinalMessage\");function hs(r,e){if(!d.\nisBuffer(r))throw new TypeError(\"first argument must be a Buffer\");if(!d.isBuffer(e))throw new TypeError(\n\"second argument must be a Buffer\");if(r.length!==e.length)throw new Error(\"Buffer lengths must matc\\\nh\");if(r.length===0)throw new Error(\"Buffers cannot be empty\");return d.from(r.map((t,n)=>r[n]^e[n]))}\na(hs,\"xorBuffers\");function Nu(r){return yr.createHash(\"sha256\").update(r).digest()}a(Nu,\"sha256\");function Ue(r,e){\nreturn yr.createHmac(\"sha256\",r).update(e).digest()}a(Ue,\"hmacSha256\");function Wu(r,e,t){for(var n=Ue(\nr,d.concat([e,d.from([0,0,0,1])])),i=n,s=0;s<t-1;s++)n=Ue(r,n),i=hs(i,n);return i}a(Wu,\"Hi\");ps.exports=\n{startSession:Mu,continueSession:Uu,finalizeSession:Du}});var mr={};ie(mr,{join:()=>ju});function ju(...r){return r.join(\"/\")}var wr=G(()=>{\"use strict\";p();a(\nju,\"join\")});var gr={};ie(gr,{stat:()=>Hu});function Hu(r,e){e(new Error(\"No filesystem\"))}var br=G(()=>{\"use str\\\nict\";p();a(Hu,\"stat\")});var vr={};ie(vr,{default:()=>$u});var $u,xr=G(()=>{\"use strict\";p();$u={}});var ys={};ie(ys,{StringDecoder:()=>Sr});var Er,Sr,ms=G(()=>{\"use strict\";p();Er=class Er{constructor(e){\nE(this,\"td\");this.td=new TextDecoder(e)}write(e){return this.td.decode(e,{stream:!0})}end(e){return this.\ntd.decode(e)}};a(Er,\"StringDecoder\");Sr=Er});var vs=T((fh,bs)=>{\"use strict\";p();var{Transform:Gu}=(xr(),O(vr)),{StringDecoder:Vu}=(ms(),O(ys)),ve=Symbol(\n\"last\"),It=Symbol(\"decoder\");function zu(r,e,t){let n;if(this.overflow){if(n=this[It].write(r).split(\nthis.matcher),n.length===1)return t();n.shift(),this.overflow=!1}else this[ve]+=this[It].write(r),n=\nthis[ve].split(this.matcher);this[ve]=n.pop();for(let i=0;i<n.length;i++)try{gs(this,this.mapper(n[i]))}catch(s){\nreturn t(s)}if(this.overflow=this[ve].length>this.maxLength,this.overflow&&!this.skipOverflow){t(new Error(\n\"maximum buffer reached\"));return}t()}a(zu,\"transform\");function Ku(r){if(this[ve]+=this[It].end(),this[ve])\ntry{gs(this,this.mapper(this[ve]))}catch(e){return r(e)}r()}a(Ku,\"flush\");function gs(r,e){e!==void 0&&\nr.push(e)}a(gs,\"push\");function ws(r){return r}a(ws,\"noop\");function Yu(r,e,t){switch(r=r||/\\r?\\n/,e=\ne||ws,t=t||{},arguments.length){case 1:typeof r==\"function\"?(e=r,r=/\\r?\\n/):typeof r==\"object\"&&!(r instanceof\nRegExp)&&!r[Symbol.split]&&(t=r,r=/\\r?\\n/);break;case 2:typeof r==\"function\"?(t=e,e=r,r=/\\r?\\n/):typeof e==\n\"object\"&&(t=e,e=ws)}t=Object.assign({},t),t.autoDestroy=!0,t.transform=zu,t.flush=Ku,t.readableObjectMode=\n!0;let n=new Gu(t);return n[ve]=\"\",n[It]=new Vu(\"utf8\"),n.matcher=r,n.mapper=e,n.maxLength=t.maxLength,\nn.skipOverflow=t.skipOverflow||!1,n.overflow=!1,n._destroy=function(i,s){this._writableState.errorEmitted=\n!1,s(i)},n}a(Yu,\"split\");bs.exports=Yu});var Es=T((dh,pe)=>{\"use strict\";p();var xs=(wr(),O(mr)),Zu=(xr(),O(vr)).Stream,Ju=vs(),Ss=(it(),O(nt)),\nXu=5432,Tt=m.platform===\"win32\",st=m.stderr,ec=56,tc=7,rc=61440,nc=32768;function ic(r){return(r&rc)==\nnc}a(ic,\"isRegFile\");var De=[\"host\",\"port\",\"database\",\"user\",\"password\"],Ar=De.length,sc=De[Ar-1];function Cr(){\nvar r=st instanceof Zu&&st.writable===!0;if(r){var e=Array.prototype.slice.call(arguments).concat(`\n`);st.write(Ss.format.apply(Ss,e))}}a(Cr,\"warn\");Object.defineProperty(pe.exports,\"isWin\",{get:a(function(){\nreturn Tt},\"get\"),set:a(function(r){Tt=r},\"set\")});pe.exports.warnTo=function(r){var e=st;return st=\nr,e};pe.exports.getFileName=function(r){var e=r||m.env,t=e.PGPASSFILE||(Tt?xs.join(e.APPDATA||\"./\",\"\\\npostgresql\",\"pgpass.conf\"):xs.join(e.HOME||\"./\",\".pgpass\"));return t};pe.exports.usePgPass=function(r,e){\nreturn Object.prototype.hasOwnProperty.call(m.env,\"PGPASSWORD\")?!1:Tt?!0:(e=e||\"<unkn>\",ic(r.mode)?r.\nmode&(ec|tc)?(Cr('WARNING: password file \"%s\" has group or world access; permissions should be u=rw \\\n(0600) or less',e),!1):!0:(Cr('WARNING: password file \"%s\" is not a plain file',e),!1))};var oc=pe.exports.\nmatch=function(r,e){return De.slice(0,-1).reduce(function(t,n,i){return i==1&&Number(r[n]||Xu)===Number(\ne[n])?t&&!0:t&&(e[n]===\"*\"||e[n]===r[n])},!0)};pe.exports.getPassword=function(r,e,t){var n,i=e.pipe(\nJu());function s(c){var l=ac(c);l&&uc(l)&&oc(r,l)&&(n=l[sc],i.end())}a(s,\"onLine\");var o=a(function(){\ne.destroy(),t(n)},\"onEnd\"),u=a(function(c){e.destroy(),Cr(\"WARNING: error on reading file: %s\",c),t(\nvoid 0)},\"onErr\");e.on(\"error\",u),i.on(\"data\",s).on(\"end\",o).on(\"error\",u)};var ac=pe.exports.parseLine=\nfunction(r){if(r.length<11||r.match(/^\\s+#/))return null;for(var e=\"\",t=\"\",n=0,i=0,s=0,o={},u=!1,c=a(\nfunction(f,y,g){var A=r.substring(y,g);Object.hasOwnProperty.call(m.env,\"PGPASS_NO_DEESCAPE\")||(A=A.\nreplace(/\\\\([:\\\\])/g,\"$1\")),o[De[f]]=A},\"addToObj\"),l=0;l<r.length-1;l+=1){if(e=r.charAt(l+1),t=r.charAt(\nl),u=n==Ar-1,u){c(n,i);break}l>=0&&e==\":\"&&t!==\"\\\\\"&&(c(n,i,l+1),i=l+2,n+=1)}return o=Object.keys(o).\nlength===Ar?o:null,o},uc=pe.exports.isValidEntry=function(r){for(var e={0:function(o){return o.length>\n0},1:function(o){return o===\"*\"?!0:(o=Number(o),isFinite(o)&&o>0&&o<9007199254740992&&Math.floor(o)===\no)},2:function(o){return o.length>0},3:function(o){return o.length>0},4:function(o){return o.length>\n0}},t=0;t<De.length;t+=1){var n=e[t],i=r[De[t]]||\"\",s=n(i);if(!s)return!1}return!0}});var Cs=T((gh,_r)=>{\"use strict\";p();var wh=(wr(),O(mr)),As=(br(),O(gr)),Pt=Es();_r.exports=function(r,e){\nvar t=Pt.getFileName();As.stat(t,function(n,i){if(n||!Pt.usePgPass(i,t))return e(void 0);var s=As.createReadStream(\nt);Pt.getPassword(r,s,e)})};_r.exports.warnTo=Pt.warnTo});var _s={};ie(_s,{default:()=>cc});var cc,Is=G(()=>{\"use strict\";p();cc={}});var Ps=T((xh,Ts)=>{\"use strict\";p();var lc=(Zt(),O(gi)),Ir=(br(),O(gr));function Tr(r){if(r.charAt(0)===\n\"/\"){var t=r.split(\" \");return{host:t[0],database:t[1]}}var e=lc.parse(/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.\ntest(r)?encodeURI(r).replace(/\\%25(\\d\\d)/g,\"%$1\"):r,!0),t=e.query;for(var n in t)Array.isArray(t[n])&&\n(t[n]=t[n][t[n].length-1]);var i=(e.auth||\":\").split(\":\");if(t.user=i[0],t.password=i.splice(1).join(\n\":\"),t.port=e.port,e.protocol==\"socket:\")return t.host=decodeURI(e.pathname),t.database=e.query.db,t.\nclient_encoding=e.query.encoding,t;t.host||(t.host=e.hostname);var s=e.pathname;if(!t.host&&s&&/^%2f/i.\ntest(s)){var o=s.split(\"/\");t.host=decodeURIComponent(o[0]),s=o.splice(1).join(\"/\")}switch(s&&s.charAt(\n0)===\"/\"&&(s=s.slice(1)||null),t.database=s&&decodeURI(s),(t.ssl===\"true\"||t.ssl===\"1\")&&(t.ssl=!0),\nt.ssl===\"0\"&&(t.ssl=!1),(t.sslcert||t.sslkey||t.sslrootcert||t.sslmode)&&(t.ssl={}),t.sslcert&&(t.ssl.\ncert=Ir.readFileSync(t.sslcert).toString()),t.sslkey&&(t.ssl.key=Ir.readFileSync(t.sslkey).toString()),\nt.sslrootcert&&(t.ssl.ca=Ir.readFileSync(t.sslrootcert).toString()),t.sslmode){case\"disable\":{t.ssl=\n!1;break}case\"prefer\":case\"require\":case\"verify-ca\":case\"verify-full\":break;case\"no-verify\":{t.ssl.rejectUnauthorized=\n!1;break}}return t}a(Tr,\"parse\");Ts.exports=Tr;Tr.parse=Tr});var Bt=T((Ah,Ls)=>{\"use strict\";p();var fc=(Is(),O(_s)),Rs=tt(),Bs=Ps().parse,H=a(function(r,e,t){return t===\nvoid 0?t=m.env[\"PG\"+r.toUpperCase()]:t===!1||(t=m.env[t]),e[r]||t||Rs[r]},\"val\"),hc=a(function(){switch(m.\nenv.PGSSLMODE){case\"disable\":return!1;case\"prefer\":case\"require\":case\"verify-ca\":case\"verify-full\":return!0;case\"\\\nno-verify\":return{rejectUnauthorized:!1}}return Rs.ssl},\"readSSLConfigFromEnvironment\"),Oe=a(function(r){\nreturn\"'\"+(\"\"+r).replace(/\\\\/g,\"\\\\\\\\\").replace(/'/g,\"\\\\'\")+\"'\"},\"quoteParamValue\"),ne=a(function(r,e,t){\nvar n=e[t];n!=null&&r.push(t+\"=\"+Oe(n))},\"add\"),Br=class Br{constructor(e){e=typeof e==\"string\"?Bs(e):\ne||{},e.connectionString&&(e=Object.assign({},e,Bs(e.connectionString))),this.user=H(\"user\",e),this.\ndatabase=H(\"database\",e),this.database===void 0&&(this.database=this.user),this.port=parseInt(H(\"por\\\nt\",e),10),this.host=H(\"host\",e),Object.defineProperty(this,\"password\",{configurable:!0,enumerable:!1,\nwritable:!0,value:H(\"password\",e)}),this.binary=H(\"binary\",e),this.options=H(\"options\",e),this.ssl=typeof e.\nssl>\"u\"?hc():e.ssl,typeof this.ssl==\"string\"&&this.ssl===\"true\"&&(this.ssl=!0),this.ssl===\"no-verify\"&&\n(this.ssl={rejectUnauthorized:!1}),this.ssl&&this.ssl.key&&Object.defineProperty(this.ssl,\"key\",{enumerable:!1}),\nthis.client_encoding=H(\"client_encoding\",e),this.replication=H(\"replication\",e),this.isDomainSocket=\n!(this.host||\"\").indexOf(\"/\"),this.application_name=H(\"application_name\",e,\"PGAPPNAME\"),this.fallback_application_name=\nH(\"fallback_application_name\",e,!1),this.statement_timeout=H(\"statement_timeout\",e,!1),this.lock_timeout=\nH(\"lock_timeout\",e,!1),this.idle_in_transaction_session_timeout=H(\"idle_in_transaction_session_timeo\\\nut\",e,!1),this.query_timeout=H(\"query_timeout\",e,!1),e.connectionTimeoutMillis===void 0?this.connect_timeout=\nm.env.PGCONNECT_TIMEOUT||0:this.connect_timeout=Math.floor(e.connectionTimeoutMillis/1e3),e.keepAlive===\n!1?this.keepalives=0:e.keepAlive===!0&&(this.keepalives=1),typeof e.keepAliveInitialDelayMillis==\"nu\\\nmber\"&&(this.keepalives_idle=Math.floor(e.keepAliveInitialDelayMillis/1e3))}getLibpqConnectionString(e){\nvar t=[];ne(t,this,\"user\"),ne(t,this,\"password\"),ne(t,this,\"port\"),ne(t,this,\"application_name\"),ne(\nt,this,\"fallback_application_name\"),ne(t,this,\"connect_timeout\"),ne(t,this,\"options\");var n=typeof this.\nssl==\"object\"?this.ssl:this.ssl?{sslmode:this.ssl}:{};if(ne(t,n,\"sslmode\"),ne(t,n,\"sslca\"),ne(t,n,\"s\\\nslkey\"),ne(t,n,\"sslcert\"),ne(t,n,\"sslrootcert\"),this.database&&t.push(\"dbname=\"+Oe(this.database)),this.\nreplication&&t.push(\"replication=\"+Oe(this.replication)),this.host&&t.push(\"host=\"+Oe(this.host)),this.\nisDomainSocket)return e(null,t.join(\" \"));this.client_encoding&&t.push(\"client_encoding=\"+Oe(this.client_encoding)),\nfc.lookup(this.host,function(i,s){return i?e(i,null):(t.push(\"hostaddr=\"+Oe(s)),e(null,t.join(\" \")))})}};\na(Br,\"ConnectionParameters\");var Pr=Br;Ls.exports=Pr});var Ms=T((Ih,ks)=>{\"use strict\";p();var pc=Je(),Fs=/^([A-Za-z]+)(?: (\\d+))?(?: (\\d+))?/,Lr=class Lr{constructor(e,t){\nthis.command=null,this.rowCount=null,this.oid=null,this.rows=[],this.fields=[],this._parsers=void 0,\nthis._types=t,this.RowCtor=null,this.rowAsArray=e===\"array\",this.rowAsArray&&(this.parseRow=this._parseRowAsArray)}addCommandComplete(e){\nvar t;e.text?t=Fs.exec(e.text):t=Fs.exec(e.command),t&&(this.command=t[1],t[3]?(this.oid=parseInt(t[2],\n10),this.rowCount=parseInt(t[3],10)):t[2]&&(this.rowCount=parseInt(t[2],10)))}_parseRowAsArray(e){for(var t=new Array(\ne.length),n=0,i=e.length;n<i;n++){var s=e[n];s!==null?t[n]=this._parsers[n](s):t[n]=null}return t}parseRow(e){\nfor(var t={},n=0,i=e.length;n<i;n++){var s=e[n],o=this.fields[n].name;s!==null?t[o]=this._parsers[n](\ns):t[o]=null}return t}addRow(e){this.rows.push(e)}addFields(e){this.fields=e,this.fields.length&&(this.\n_parsers=new Array(e.length));for(var t=0;t<e.length;t++){var n=e[t];this._types?this._parsers[t]=this.\n_types.getTypeParser(n.dataTypeID,n.format||\"text\"):this._parsers[t]=pc.getTypeParser(n.dataTypeID,n.\nformat||\"text\")}}};a(Lr,\"Result\");var Rr=Lr;ks.exports=Rr});var qs=T((Bh,Os)=>{\"use strict\";p();var{EventEmitter:dc}=ge(),Us=Ms(),Ds=rt(),kr=class kr extends dc{constructor(e,t,n){\nsuper(),e=Ds.normalizeQueryConfig(e,t,n),this.text=e.text,this.values=e.values,this.rows=e.rows,this.\ntypes=e.types,this.name=e.name,this.binary=e.binary,this.portal=e.portal||\"\",this.callback=e.callback,\nthis._rowMode=e.rowMode,m.domain&&e.callback&&(this.callback=m.domain.bind(e.callback)),this._result=\nnew Us(this._rowMode,this.types),this._results=this._result,this.isPreparedStatement=!1,this._canceledDueToError=\n!1,this._promise=null}requiresPreparation(){return this.name||this.rows?!0:!this.text||!this.values?\n!1:this.values.length>0}_checkForMultirow(){this._result.command&&(Array.isArray(this._results)||(this.\n_results=[this._result]),this._result=new Us(this._rowMode,this.types),this._results.push(this._result))}handleRowDescription(e){\nthis._checkForMultirow(),this._result.addFields(e.fields),this._accumulateRows=this.callback||!this.\nlisteners(\"row\").length}handleDataRow(e){let t;if(!this._canceledDueToError){try{t=this._result.parseRow(\ne.fields)}catch(n){this._canceledDueToError=n;return}this.emit(\"row\",t,this._result),this._accumulateRows&&\nthis._result.addRow(t)}}handleCommandComplete(e,t){this._checkForMultirow(),this._result.addCommandComplete(\ne),this.rows&&t.sync()}handleEmptyQuery(e){this.rows&&e.sync()}handleError(e,t){if(this._canceledDueToError&&\n(e=this._canceledDueToError,this._canceledDueToError=!1),this.callback)return this.callback(e);this.\nemit(\"error\",e)}handleReadyForQuery(e){if(this._canceledDueToError)return this.handleError(this._canceledDueToError,\ne);if(this.callback)try{this.callback(null,this._results)}catch(t){m.nextTick(()=>{throw t})}this.emit(\n\"end\",this._results)}submit(e){if(typeof this.text!=\"string\"&&typeof this.name!=\"string\")return new Error(\n\"A query must have either text or a name. Supplying neither is unsupported.\");let t=e.parsedStatements[this.\nname];return this.text&&t&&this.text!==t?new Error(`Prepared statements must be unique - '${this.name}\\\n' was used for a different statement`):this.values&&!Array.isArray(this.values)?new Error(\"Query val\\\nues must be an array\"):(this.requiresPreparation()?this.prepare(e):e.query(this.text),null)}hasBeenParsed(e){\nreturn this.name&&e.parsedStatements[this.name]}handlePortalSuspended(e){this._getRows(e,this.rows)}_getRows(e,t){\ne.execute({portal:this.portal,rows:t}),t?e.flush():e.sync()}prepare(e){this.isPreparedStatement=!0,this.\nhasBeenParsed(e)||e.parse({text:this.text,name:this.name,types:this.types});try{e.bind({portal:this.\nportal,statement:this.name,values:this.values,binary:this.binary,valueMapper:Ds.prepareValue})}catch(t){\nthis.handleError(t,e);return}e.describe({type:\"P\",name:this.portal||\"\"}),this._getRows(e,this.rows)}handleCopyInResponse(e){\ne.sendCopyFail(\"No source stream defined\")}handleCopyData(e,t){}};a(kr,\"Query\");var Fr=kr;Os.exports=\nFr});var ln=T(_=>{\"use strict\";p();Object.defineProperty(_,\"__esModule\",{value:!0});_.NoticeMessage=_.DataRowMessage=\n_.CommandCompleteMessage=_.ReadyForQueryMessage=_.NotificationResponseMessage=_.BackendKeyDataMessage=\n_.AuthenticationMD5Password=_.ParameterStatusMessage=_.ParameterDescriptionMessage=_.RowDescriptionMessage=\n_.Field=_.CopyResponse=_.CopyDataMessage=_.DatabaseError=_.copyDone=_.emptyQuery=_.replicationStart=\n_.portalSuspended=_.noData=_.closeComplete=_.bindComplete=_.parseComplete=void 0;_.parseComplete={name:\"\\\nparseComplete\",length:5};_.bindComplete={name:\"bindComplete\",length:5};_.closeComplete={name:\"closeC\\\nomplete\",length:5};_.noData={name:\"noData\",length:5};_.portalSuspended={name:\"portalSuspended\",length:5};\n_.replicationStart={name:\"replicationStart\",length:4};_.emptyQuery={name:\"emptyQuery\",length:4};_.copyDone=\n{name:\"copyDone\",length:4};var Kr=class Kr extends Error{constructor(e,t,n){super(e),this.length=t,this.\nname=n}};a(Kr,\"DatabaseError\");var Mr=Kr;_.DatabaseError=Mr;var Yr=class Yr{constructor(e,t){this.length=\ne,this.chunk=t,this.name=\"copyData\"}};a(Yr,\"CopyDataMessage\");var Ur=Yr;_.CopyDataMessage=Ur;var Zr=class Zr{constructor(e,t,n,i){\nthis.length=e,this.name=t,this.binary=n,this.columnTypes=new Array(i)}};a(Zr,\"CopyResponse\");var Dr=Zr;\n_.CopyResponse=Dr;var Jr=class Jr{constructor(e,t,n,i,s,o,u){this.name=e,this.tableID=t,this.columnID=\nn,this.dataTypeID=i,this.dataTypeSize=s,this.dataTypeModifier=o,this.format=u}};a(Jr,\"Field\");var Or=Jr;\n_.Field=Or;var Xr=class Xr{constructor(e,t){this.length=e,this.fieldCount=t,this.name=\"rowDescriptio\\\nn\",this.fields=new Array(this.fieldCount)}};a(Xr,\"RowDescriptionMessage\");var qr=Xr;_.RowDescriptionMessage=\nqr;var en=class en{constructor(e,t){this.length=e,this.parameterCount=t,this.name=\"parameterDescript\\\nion\",this.dataTypeIDs=new Array(this.parameterCount)}};a(en,\"ParameterDescriptionMessage\");var Qr=en;\n_.ParameterDescriptionMessage=Qr;var tn=class tn{constructor(e,t,n){this.length=e,this.parameterName=\nt,this.parameterValue=n,this.name=\"parameterStatus\"}};a(tn,\"ParameterStatusMessage\");var Nr=tn;_.ParameterStatusMessage=\nNr;var rn=class rn{constructor(e,t){this.length=e,this.salt=t,this.name=\"authenticationMD5Password\"}};\na(rn,\"AuthenticationMD5Password\");var Wr=rn;_.AuthenticationMD5Password=Wr;var nn=class nn{constructor(e,t,n){\nthis.length=e,this.processID=t,this.secretKey=n,this.name=\"backendKeyData\"}};a(nn,\"BackendKeyDataMes\\\nsage\");var jr=nn;_.BackendKeyDataMessage=jr;var sn=class sn{constructor(e,t,n,i){this.length=e,this.\nprocessId=t,this.channel=n,this.payload=i,this.name=\"notification\"}};a(sn,\"NotificationResponseMessa\\\nge\");var Hr=sn;_.NotificationResponseMessage=Hr;var on=class on{constructor(e,t){this.length=e,this.\nstatus=t,this.name=\"readyForQuery\"}};a(on,\"ReadyForQueryMessage\");var $r=on;_.ReadyForQueryMessage=$r;\nvar an=class an{constructor(e,t){this.length=e,this.text=t,this.name=\"commandComplete\"}};a(an,\"Comma\\\nndCompleteMessage\");var Gr=an;_.CommandCompleteMessage=Gr;var un=class un{constructor(e,t){this.length=\ne,this.fields=t,this.name=\"dataRow\",this.fieldCount=t.length}};a(un,\"DataRowMessage\");var Vr=un;_.DataRowMessage=\nVr;var cn=class cn{constructor(e,t){this.length=e,this.message=t,this.name=\"notice\"}};a(cn,\"NoticeMe\\\nssage\");var zr=cn;_.NoticeMessage=zr});var Qs=T(Rt=>{\"use strict\";p();Object.defineProperty(Rt,\"__esModule\",{value:!0});Rt.Writer=void 0;var hn=class hn{constructor(e=256){\nthis.size=e,this.offset=5,this.headerPosition=0,this.buffer=d.allocUnsafe(e)}ensure(e){if(this.buffer.\nlength-this.offset<e){let n=this.buffer,i=n.length+(n.length>>1)+e;this.buffer=d.allocUnsafe(i),n.copy(\nthis.buffer)}}addInt32(e){return this.ensure(4),this.buffer[this.offset++]=e>>>24&255,this.buffer[this.\noffset++]=e>>>16&255,this.buffer[this.offset++]=e>>>8&255,this.buffer[this.offset++]=e>>>0&255,this}addInt16(e){\nreturn this.ensure(2),this.buffer[this.offset++]=e>>>8&255,this.buffer[this.offset++]=e>>>0&255,this}addCString(e){\nif(!e)this.ensure(1);else{let t=d.byteLength(e);this.ensure(t+1),this.buffer.write(e,this.offset,\"ut\\\nf-8\"),this.offset+=t}return this.buffer[this.offset++]=0,this}addString(e=\"\"){let t=d.byteLength(e);\nreturn this.ensure(t),this.buffer.write(e,this.offset),this.offset+=t,this}add(e){return this.ensure(\ne.length),e.copy(this.buffer,this.offset),this.offset+=e.length,this}join(e){if(e){this.buffer[this.\nheaderPosition]=e;let t=this.offset-(this.headerPosition+1);this.buffer.writeInt32BE(t,this.headerPosition+\n1)}return this.buffer.slice(e?0:5,this.offset)}flush(e){let t=this.join(e);return this.offset=5,this.\nheaderPosition=0,this.buffer=d.allocUnsafe(this.size),t}};a(hn,\"Writer\");var fn=hn;Rt.Writer=fn});var Ws=T(Ft=>{\"use strict\";p();Object.defineProperty(Ft,\"__esModule\",{value:!0});Ft.serialize=void 0;\nvar pn=Qs(),F=new pn.Writer,yc=a(r=>{F.addInt16(3).addInt16(0);for(let n of Object.keys(r))F.addCString(\nn).addCString(r[n]);F.addCString(\"client_encoding\").addCString(\"UTF8\");let e=F.addCString(\"\").flush(),\nt=e.length+4;return new pn.Writer().addInt32(t).add(e).flush()},\"startup\"),mc=a(()=>{let r=d.allocUnsafe(\n8);return r.writeInt32BE(8,0),r.writeInt32BE(80877103,4),r},\"requestSsl\"),wc=a(r=>F.addCString(r).flush(\n112),\"password\"),gc=a(function(r,e){return F.addCString(r).addInt32(d.byteLength(e)).addString(e),F.\nflush(112)},\"sendSASLInitialResponseMessage\"),bc=a(function(r){return F.addString(r).flush(112)},\"se\\\nndSCRAMClientFinalMessage\"),vc=a(r=>F.addCString(r).flush(81),\"query\"),Ns=[],xc=a(r=>{let e=r.name||\n\"\";e.length>63&&(console.error(\"Warning! Postgres only supports 63 characters for query names.\"),console.\nerror(\"You supplied %s (%s)\",e,e.length),console.error(\"This can cause conflicts and silent errors e\\\nxecuting queries\"));let t=r.types||Ns,n=t.length,i=F.addCString(e).addCString(r.text).addInt16(n);for(let s=0;s<\nn;s++)i.addInt32(t[s]);return F.flush(80)},\"parse\"),qe=new pn.Writer,Sc=a(function(r,e){for(let t=0;t<\nr.length;t++){let n=e?e(r[t],t):r[t];n==null?(F.addInt16(0),qe.addInt32(-1)):n instanceof d?(F.addInt16(\n1),qe.addInt32(n.length),qe.add(n)):(F.addInt16(0),qe.addInt32(d.byteLength(n)),qe.addString(n))}},\"\\\nwriteValues\"),Ec=a((r={})=>{let e=r.portal||\"\",t=r.statement||\"\",n=r.binary||!1,i=r.values||Ns,s=i.length;\nreturn F.addCString(e).addCString(t),F.addInt16(s),Sc(i,r.valueMapper),F.addInt16(s),F.add(qe.flush()),\nF.addInt16(n?1:0),F.flush(66)},\"bind\"),Ac=d.from([69,0,0,0,9,0,0,0,0,0]),Cc=a(r=>{if(!r||!r.portal&&\n!r.rows)return Ac;let e=r.portal||\"\",t=r.rows||0,n=d.byteLength(e),i=4+n+1+4,s=d.allocUnsafe(1+i);return s[0]=\n69,s.writeInt32BE(i,1),s.write(e,5,\"utf-8\"),s[n+5]=0,s.writeUInt32BE(t,s.length-4),s},\"execute\"),_c=a(\n(r,e)=>{let t=d.allocUnsafe(16);return t.writeInt32BE(16,0),t.writeInt16BE(1234,4),t.writeInt16BE(5678,\n6),t.writeInt32BE(r,8),t.writeInt32BE(e,12),t},\"cancel\"),dn=a((r,e)=>{let n=4+d.byteLength(e)+1,i=d.\nallocUnsafe(1+n);return i[0]=r,i.writeInt32BE(n,1),i.write(e,5,\"utf-8\"),i[n]=0,i},\"cstringMessage\"),\nIc=F.addCString(\"P\").flush(68),Tc=F.addCString(\"S\").flush(68),Pc=a(r=>r.name?dn(68,`${r.type}${r.name||\n\"\"}`):r.type===\"P\"?Ic:Tc,\"describe\"),Bc=a(r=>{let e=`${r.type}${r.name||\"\"}`;return dn(67,e)},\"close\"),\nRc=a(r=>F.add(r).flush(100),\"copyData\"),Lc=a(r=>dn(102,r),\"copyFail\"),Lt=a(r=>d.from([r,0,0,0,4]),\"c\\\nodeOnlyBuffer\"),Fc=Lt(72),kc=Lt(83),Mc=Lt(88),Uc=Lt(99),Dc={startup:yc,password:wc,requestSsl:mc,sendSASLInitialResponseMessage:gc,\nsendSCRAMClientFinalMessage:bc,query:vc,parse:xc,bind:Ec,execute:Cc,describe:Pc,close:Bc,flush:a(()=>Fc,\n\"flush\"),sync:a(()=>kc,\"sync\"),end:a(()=>Mc,\"end\"),copyData:Rc,copyDone:a(()=>Uc,\"copyDone\"),copyFail:Lc,\ncancel:_c};Ft.serialize=Dc});var js=T(kt=>{\"use strict\";p();Object.defineProperty(kt,\"__esModule\",{value:!0});kt.BufferReader=void 0;\nvar Oc=d.allocUnsafe(0),mn=class mn{constructor(e=0){this.offset=e,this.buffer=Oc,this.encoding=\"utf\\\n-8\"}setBuffer(e,t){this.offset=e,this.buffer=t}int16(){let e=this.buffer.readInt16BE(this.offset);return this.\noffset+=2,e}byte(){let e=this.buffer[this.offset];return this.offset++,e}int32(){let e=this.buffer.readInt32BE(\nthis.offset);return this.offset+=4,e}uint32(){let e=this.buffer.readUInt32BE(this.offset);return this.\noffset+=4,e}string(e){let t=this.buffer.toString(this.encoding,this.offset,this.offset+e);return this.\noffset+=e,t}cstring(){let e=this.offset,t=e;for(;this.buffer[t++]!==0;);return this.offset=t,this.buffer.\ntoString(this.encoding,e,t-1)}bytes(e){let t=this.buffer.slice(this.offset,this.offset+e);return this.\noffset+=e,t}};a(mn,\"BufferReader\");var yn=mn;kt.BufferReader=yn});var Gs=T(Mt=>{\"use strict\";p();Object.defineProperty(Mt,\"__esModule\",{value:!0});Mt.Parser=void 0;var k=ln(),\nqc=js(),wn=1,Qc=4,Hs=wn+Qc,$s=d.allocUnsafe(0),bn=class bn{constructor(e){if(this.buffer=$s,this.bufferLength=\n0,this.bufferOffset=0,this.reader=new qc.BufferReader,e?.mode===\"binary\")throw new Error(\"Binary mod\\\ne not supported yet\");this.mode=e?.mode||\"text\"}parse(e,t){this.mergeBuffer(e);let n=this.bufferOffset+\nthis.bufferLength,i=this.bufferOffset;for(;i+Hs<=n;){let s=this.buffer[i],o=this.buffer.readUInt32BE(\ni+wn),u=wn+o;if(u+i<=n){let c=this.handlePacket(i+Hs,s,o,this.buffer);t(c),i+=u}else break}i===n?(this.\nbuffer=$s,this.bufferLength=0,this.bufferOffset=0):(this.bufferLength=n-i,this.bufferOffset=i)}mergeBuffer(e){\nif(this.bufferLength>0){let t=this.bufferLength+e.byteLength;if(t+this.bufferOffset>this.buffer.byteLength){\nlet i;if(t<=this.buffer.byteLength&&this.bufferOffset>=this.bufferLength)i=this.buffer;else{let s=this.\nbuffer.byteLength*2;for(;t>=s;)s*=2;i=d.allocUnsafe(s)}this.buffer.copy(i,0,this.bufferOffset,this.bufferOffset+\nthis.bufferLength),this.buffer=i,this.bufferOffset=0}e.copy(this.buffer,this.bufferOffset+this.bufferLength),\nthis.bufferLength=t}else this.buffer=e,this.bufferOffset=0,this.bufferLength=e.byteLength}handlePacket(e,t,n,i){\nswitch(t){case 50:return k.bindComplete;case 49:return k.parseComplete;case 51:return k.closeComplete;case 110:\nreturn k.noData;case 115:return k.portalSuspended;case 99:return k.copyDone;case 87:return k.replicationStart;case 73:\nreturn k.emptyQuery;case 68:return this.parseDataRowMessage(e,n,i);case 67:return this.parseCommandCompleteMessage(\ne,n,i);case 90:return this.parseReadyForQueryMessage(e,n,i);case 65:return this.parseNotificationMessage(\ne,n,i);case 82:return this.parseAuthenticationResponse(e,n,i);case 83:return this.parseParameterStatusMessage(\ne,n,i);case 75:return this.parseBackendKeyData(e,n,i);case 69:return this.parseErrorMessage(e,n,i,\"e\\\nrror\");case 78:return this.parseErrorMessage(e,n,i,\"notice\");case 84:return this.parseRowDescriptionMessage(\ne,n,i);case 116:return this.parseParameterDescriptionMessage(e,n,i);case 71:return this.parseCopyInMessage(\ne,n,i);case 72:return this.parseCopyOutMessage(e,n,i);case 100:return this.parseCopyData(e,n,i);default:\nreturn new k.DatabaseError(\"received invalid response: \"+t.toString(16),n,\"error\")}}parseReadyForQueryMessage(e,t,n){\nthis.reader.setBuffer(e,n);let i=this.reader.string(1);return new k.ReadyForQueryMessage(t,i)}parseCommandCompleteMessage(e,t,n){\nthis.reader.setBuffer(e,n);let i=this.reader.cstring();return new k.CommandCompleteMessage(t,i)}parseCopyData(e,t,n){\nlet i=n.slice(e,e+(t-4));return new k.CopyDataMessage(t,i)}parseCopyInMessage(e,t,n){return this.parseCopyMessage(\ne,t,n,\"copyInResponse\")}parseCopyOutMessage(e,t,n){return this.parseCopyMessage(e,t,n,\"copyOutRespon\\\nse\")}parseCopyMessage(e,t,n,i){this.reader.setBuffer(e,n);let s=this.reader.byte()!==0,o=this.reader.\nint16(),u=new k.CopyResponse(t,i,s,o);for(let c=0;c<o;c++)u.columnTypes[c]=this.reader.int16();return u}parseNotificationMessage(e,t,n){\nthis.reader.setBuffer(e,n);let i=this.reader.int32(),s=this.reader.cstring(),o=this.reader.cstring();\nreturn new k.NotificationResponseMessage(t,i,s,o)}parseRowDescriptionMessage(e,t,n){this.reader.setBuffer(\ne,n);let i=this.reader.int16(),s=new k.RowDescriptionMessage(t,i);for(let o=0;o<i;o++)s.fields[o]=this.\nparseField();return s}parseField(){let e=this.reader.cstring(),t=this.reader.uint32(),n=this.reader.\nint16(),i=this.reader.uint32(),s=this.reader.int16(),o=this.reader.int32(),u=this.reader.int16()===0?\n\"text\":\"binary\";return new k.Field(e,t,n,i,s,o,u)}parseParameterDescriptionMessage(e,t,n){this.reader.\nsetBuffer(e,n);let i=this.reader.int16(),s=new k.ParameterDescriptionMessage(t,i);for(let o=0;o<i;o++)\ns.dataTypeIDs[o]=this.reader.int32();return s}parseDataRowMessage(e,t,n){this.reader.setBuffer(e,n);\nlet i=this.reader.int16(),s=new Array(i);for(let o=0;o<i;o++){let u=this.reader.int32();s[o]=u===-1?\nnull:this.reader.string(u)}return new k.DataRowMessage(t,s)}parseParameterStatusMessage(e,t,n){this.\nreader.setBuffer(e,n);let i=this.reader.cstring(),s=this.reader.cstring();return new k.ParameterStatusMessage(\nt,i,s)}parseBackendKeyData(e,t,n){this.reader.setBuffer(e,n);let i=this.reader.int32(),s=this.reader.\nint32();return new k.BackendKeyDataMessage(t,i,s)}parseAuthenticationResponse(e,t,n){this.reader.setBuffer(\ne,n);let i=this.reader.int32(),s={name:\"authenticationOk\",length:t};switch(i){case 0:break;case 3:s.\nlength===8&&(s.name=\"authenticationCleartextPassword\");break;case 5:if(s.length===12){s.name=\"authen\\\nticationMD5Password\";let o=this.reader.bytes(4);return new k.AuthenticationMD5Password(t,o)}break;case 10:\n{s.name=\"authenticationSASL\",s.mechanisms=[];let o;do o=this.reader.cstring(),o&&s.mechanisms.push(o);while(o)}\nbreak;case 11:s.name=\"authenticationSASLContinue\",s.data=this.reader.string(t-8);break;case 12:s.name=\n\"authenticationSASLFinal\",s.data=this.reader.string(t-8);break;default:throw new Error(\"Unknown auth\\\nenticationOk message type \"+i)}return s}parseErrorMessage(e,t,n,i){this.reader.setBuffer(e,n);let s={},\no=this.reader.string(1);for(;o!==\"\\0\";)s[o]=this.reader.cstring(),o=this.reader.string(1);let u=s.M,\nc=i===\"notice\"?new k.NoticeMessage(t,u):new k.DatabaseError(u,t,i);return c.severity=s.S,c.code=s.C,\nc.detail=s.D,c.hint=s.H,c.position=s.P,c.internalPosition=s.p,c.internalQuery=s.q,c.where=s.W,c.schema=\ns.s,c.table=s.t,c.column=s.c,c.dataType=s.d,c.constraint=s.n,c.file=s.F,c.line=s.L,c.routine=s.R,c}};\na(bn,\"Parser\");var gn=bn;Mt.Parser=gn});var vn=T(xe=>{\"use strict\";p();Object.defineProperty(xe,\"__esModule\",{value:!0});xe.DatabaseError=xe.\nserialize=xe.parse=void 0;var Nc=ln();Object.defineProperty(xe,\"DatabaseError\",{enumerable:!0,get:a(\nfunction(){return Nc.DatabaseError},\"get\")});var Wc=Ws();Object.defineProperty(xe,\"serialize\",{enumerable:!0,\nget:a(function(){return Wc.serialize},\"get\")});var jc=Gs();function Hc(r,e){let t=new jc.Parser;return r.\non(\"data\",n=>t.parse(n,e)),new Promise(n=>r.on(\"end\",()=>n()))}a(Hc,\"parse\");xe.parse=Hc});var Vs={};ie(Vs,{connect:()=>$c});function $c({socket:r,servername:e}){return r.startTls(e),r}var zs=G(\n()=>{\"use strict\";p();a($c,\"connect\")});var En=T((Xh,Zs)=>{\"use strict\";p();var Ks=(Fe(),O(wi)),Gc=ge().EventEmitter,{parse:Vc,serialize:Q}=vn(),\nYs=Q.flush(),zc=Q.sync(),Kc=Q.end(),Sn=class Sn extends Gc{constructor(e){super(),e=e||{},this.stream=\ne.stream||new Ks.Socket,this._keepAlive=e.keepAlive,this._keepAliveInitialDelayMillis=e.keepAliveInitialDelayMillis,\nthis.lastBuffer=!1,this.parsedStatements={},this.ssl=e.ssl||!1,this._ending=!1,this._emitMessage=!1;\nvar t=this;this.on(\"newListener\",function(n){n===\"message\"&&(t._emitMessage=!0)})}connect(e,t){var n=this;\nthis._connecting=!0,this.stream.setNoDelay(!0),this.stream.connect(e,t),this.stream.once(\"connect\",function(){\nn._keepAlive&&n.stream.setKeepAlive(!0,n._keepAliveInitialDelayMillis),n.emit(\"connect\")});let i=a(function(s){\nn._ending&&(s.code===\"ECONNRESET\"||s.code===\"EPIPE\")||n.emit(\"error\",s)},\"reportStreamError\");if(this.\nstream.on(\"error\",i),this.stream.on(\"close\",function(){n.emit(\"end\")}),!this.ssl)return this.attachListeners(\nthis.stream);this.stream.once(\"data\",function(s){var o=s.toString(\"utf8\");switch(o){case\"S\":break;case\"\\\nN\":return n.stream.end(),n.emit(\"error\",new Error(\"The server does not support SSL connections\"));default:\nreturn n.stream.end(),n.emit(\"error\",new Error(\"There was an error establishing an SSL connection\"))}\nvar u=(zs(),O(Vs));let c={socket:n.stream};n.ssl!==!0&&(Object.assign(c,n.ssl),\"key\"in n.ssl&&(c.key=\nn.ssl.key)),Ks.isIP(t)===0&&(c.servername=t);try{n.stream=u.connect(c)}catch(l){return n.emit(\"error\",\nl)}n.attachListeners(n.stream),n.stream.on(\"error\",i),n.emit(\"sslconnect\")})}attachListeners(e){e.on(\n\"end\",()=>{this.emit(\"end\")}),Vc(e,t=>{var n=t.name===\"error\"?\"errorMessage\":t.name;this._emitMessage&&\nthis.emit(\"message\",t),this.emit(n,t)})}requestSsl(){this.stream.write(Q.requestSsl())}startup(e){this.\nstream.write(Q.startup(e))}cancel(e,t){this._send(Q.cancel(e,t))}password(e){this._send(Q.password(e))}sendSASLInitialResponseMessage(e,t){\nthis._send(Q.sendSASLInitialResponseMessage(e,t))}sendSCRAMClientFinalMessage(e){this._send(Q.sendSCRAMClientFinalMessage(\ne))}_send(e){return this.stream.writable?this.stream.write(e):!1}query(e){this._send(Q.query(e))}parse(e){\nthis._send(Q.parse(e))}bind(e){this._send(Q.bind(e))}execute(e){this._send(Q.execute(e))}flush(){this.\nstream.writable&&this.stream.write(Ys)}sync(){this._ending=!0,this._send(Ys),this._send(zc)}ref(){this.\nstream.ref()}unref(){this.stream.unref()}end(){if(this._ending=!0,!this._connecting||!this.stream.writable){\nthis.stream.end();return}return this.stream.write(Kc,()=>{this.stream.end()})}close(e){this._send(Q.\nclose(e))}describe(e){this._send(Q.describe(e))}sendCopyFromChunk(e){this._send(Q.copyData(e))}endCopyFrom(){\nthis._send(Q.copyDone())}sendCopyFail(e){this._send(Q.copyFail(e))}};a(Sn,\"Connection\");var xn=Sn;Zs.\nexports=xn});var eo=T((np,Xs)=>{\"use strict\";p();var Yc=ge().EventEmitter,rp=(it(),O(nt)),Zc=rt(),An=ds(),Jc=Cs(),\nXc=At(),el=Bt(),Js=qs(),tl=tt(),rl=En(),Cn=class Cn extends Yc{constructor(e){super(),this.connectionParameters=\nnew el(e),this.user=this.connectionParameters.user,this.database=this.connectionParameters.database,\nthis.port=this.connectionParameters.port,this.host=this.connectionParameters.host,Object.defineProperty(\nthis,\"password\",{configurable:!0,enumerable:!1,writable:!0,value:this.connectionParameters.password}),\nthis.replication=this.connectionParameters.replication;var t=e||{};this._Promise=t.Promise||b.Promise,\nthis._types=new Xc(t.types),this._ending=!1,this._connecting=!1,this._connected=!1,this._connectionError=\n!1,this._queryable=!0,this.connection=t.connection||new rl({stream:t.stream,ssl:this.connectionParameters.\nssl,keepAlive:t.keepAlive||!1,keepAliveInitialDelayMillis:t.keepAliveInitialDelayMillis||0,encoding:this.\nconnectionParameters.client_encoding||\"utf8\"}),this.queryQueue=[],this.binary=t.binary||tl.binary,this.\nprocessID=null,this.secretKey=null,this.ssl=this.connectionParameters.ssl||!1,this.ssl&&this.ssl.key&&\nObject.defineProperty(this.ssl,\"key\",{enumerable:!1}),this._connectionTimeoutMillis=t.connectionTimeoutMillis||\n0}_errorAllQueries(e){let t=a(n=>{m.nextTick(()=>{n.handleError(e,this.connection)})},\"enqueueError\");\nthis.activeQuery&&(t(this.activeQuery),this.activeQuery=null),this.queryQueue.forEach(t),this.queryQueue.\nlength=0}_connect(e){var t=this,n=this.connection;if(this._connectionCallback=e,this._connecting||this.\n_connected){let i=new Error(\"Client has already been connected. You cannot reuse a client.\");m.nextTick(\n()=>{e(i)});return}this._connecting=!0,this.connectionTimeoutHandle,this._connectionTimeoutMillis>0&&\n(this.connectionTimeoutHandle=setTimeout(()=>{n._ending=!0,n.stream.destroy(new Error(\"timeout expir\\\ned\"))},this._connectionTimeoutMillis)),this.host&&this.host.indexOf(\"/\")===0?n.connect(this.host+\"/.\\\ns.PGSQL.\"+this.port):n.connect(this.port,this.host),n.on(\"connect\",function(){t.ssl?n.requestSsl():n.\nstartup(t.getStartupConf())}),n.on(\"sslconnect\",function(){n.startup(t.getStartupConf())}),this._attachListeners(\nn),n.once(\"end\",()=>{let i=this._ending?new Error(\"Connection terminated\"):new Error(\"Connection ter\\\nminated unexpectedly\");clearTimeout(this.connectionTimeoutHandle),this._errorAllQueries(i),this._ending||\n(this._connecting&&!this._connectionError?this._connectionCallback?this._connectionCallback(i):this.\n_handleErrorEvent(i):this._connectionError||this._handleErrorEvent(i)),m.nextTick(()=>{this.emit(\"en\\\nd\")})})}connect(e){if(e){this._connect(e);return}return new this._Promise((t,n)=>{this._connect(i=>{\ni?n(i):t()})})}_attachListeners(e){e.on(\"authenticationCleartextPassword\",this._handleAuthCleartextPassword.\nbind(this)),e.on(\"authenticationMD5Password\",this._handleAuthMD5Password.bind(this)),e.on(\"authentic\\\nationSASL\",this._handleAuthSASL.bind(this)),e.on(\"authenticationSASLContinue\",this._handleAuthSASLContinue.\nbind(this)),e.on(\"authenticationSASLFinal\",this._handleAuthSASLFinal.bind(this)),e.on(\"backendKeyDat\\\na\",this._handleBackendKeyData.bind(this)),e.on(\"error\",this._handleErrorEvent.bind(this)),e.on(\"erro\\\nrMessage\",this._handleErrorMessage.bind(this)),e.on(\"readyForQuery\",this._handleReadyForQuery.bind(this)),\ne.on(\"notice\",this._handleNotice.bind(this)),e.on(\"rowDescription\",this._handleRowDescription.bind(this)),\ne.on(\"dataRow\",this._handleDataRow.bind(this)),e.on(\"portalSuspended\",this._handlePortalSuspended.bind(\nthis)),e.on(\"emptyQuery\",this._handleEmptyQuery.bind(this)),e.on(\"commandComplete\",this._handleCommandComplete.\nbind(this)),e.on(\"parseComplete\",this._handleParseComplete.bind(this)),e.on(\"copyInResponse\",this._handleCopyInResponse.\nbind(this)),e.on(\"copyData\",this._handleCopyData.bind(this)),e.on(\"notification\",this._handleNotification.\nbind(this))}_checkPgPass(e){let t=this.connection;typeof this.password==\"function\"?this._Promise.resolve().\nthen(()=>this.password()).then(n=>{if(n!==void 0){if(typeof n!=\"string\"){t.emit(\"error\",new TypeError(\n\"Password must be a string\"));return}this.connectionParameters.password=this.password=n}else this.connectionParameters.\npassword=this.password=null;e()}).catch(n=>{t.emit(\"error\",n)}):this.password!==null?e():Jc(this.connectionParameters,\nn=>{n!==void 0&&(this.connectionParameters.password=this.password=n),e()})}_handleAuthCleartextPassword(e){\nthis._checkPgPass(()=>{this.connection.password(this.password)})}_handleAuthMD5Password(e){this._checkPgPass(\n()=>{let t=Zc.postgresMd5PasswordHash(this.user,this.password,e.salt);this.connection.password(t)})}_handleAuthSASL(e){\nthis._checkPgPass(()=>{this.saslSession=An.startSession(e.mechanisms),this.connection.sendSASLInitialResponseMessage(\nthis.saslSession.mechanism,this.saslSession.response)})}_handleAuthSASLContinue(e){An.continueSession(\nthis.saslSession,this.password,e.data),this.connection.sendSCRAMClientFinalMessage(this.saslSession.\nresponse)}_handleAuthSASLFinal(e){An.finalizeSession(this.saslSession,e.data),this.saslSession=null}_handleBackendKeyData(e){\nthis.processID=e.processID,this.secretKey=e.secretKey}_handleReadyForQuery(e){this._connecting&&(this.\n_connecting=!1,this._connected=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback&&\n(this._connectionCallback(null,this),this._connectionCallback=null),this.emit(\"connect\"));let{activeQuery:t}=this;\nthis.activeQuery=null,this.readyForQuery=!0,t&&t.handleReadyForQuery(this.connection),this._pulseQueryQueue()}_handleErrorWhileConnecting(e){\nif(!this._connectionError){if(this._connectionError=!0,clearTimeout(this.connectionTimeoutHandle),this.\n_connectionCallback)return this._connectionCallback(e);this.emit(\"error\",e)}}_handleErrorEvent(e){if(this.\n_connecting)return this._handleErrorWhileConnecting(e);this._queryable=!1,this._errorAllQueries(e),this.\nemit(\"error\",e)}_handleErrorMessage(e){if(this._connecting)return this._handleErrorWhileConnecting(e);\nlet t=this.activeQuery;if(!t){this._handleErrorEvent(e);return}this.activeQuery=null,t.handleError(e,\nthis.connection)}_handleRowDescription(e){this.activeQuery.handleRowDescription(e)}_handleDataRow(e){\nthis.activeQuery.handleDataRow(e)}_handlePortalSuspended(e){this.activeQuery.handlePortalSuspended(this.\nconnection)}_handleEmptyQuery(e){this.activeQuery.handleEmptyQuery(this.connection)}_handleCommandComplete(e){\nthis.activeQuery.handleCommandComplete(e,this.connection)}_handleParseComplete(e){this.activeQuery.name&&\n(this.connection.parsedStatements[this.activeQuery.name]=this.activeQuery.text)}_handleCopyInResponse(e){\nthis.activeQuery.handleCopyInResponse(this.connection)}_handleCopyData(e){this.activeQuery.handleCopyData(\ne,this.connection)}_handleNotification(e){this.emit(\"notification\",e)}_handleNotice(e){this.emit(\"no\\\ntice\",e)}getStartupConf(){var e=this.connectionParameters,t={user:e.user,database:e.database},n=e.application_name||\ne.fallback_application_name;return n&&(t.application_name=n),e.replication&&(t.replication=\"\"+e.replication),\ne.statement_timeout&&(t.statement_timeout=String(parseInt(e.statement_timeout,10))),e.lock_timeout&&\n(t.lock_timeout=String(parseInt(e.lock_timeout,10))),e.idle_in_transaction_session_timeout&&(t.idle_in_transaction_session_timeout=\nString(parseInt(e.idle_in_transaction_session_timeout,10))),e.options&&(t.options=e.options),t}cancel(e,t){\nif(e.activeQuery===t){var n=this.connection;this.host&&this.host.indexOf(\"/\")===0?n.connect(this.host+\n\"/.s.PGSQL.\"+this.port):n.connect(this.port,this.host),n.on(\"connect\",function(){n.cancel(e.processID,\ne.secretKey)})}else e.queryQueue.indexOf(t)!==-1&&e.queryQueue.splice(e.queryQueue.indexOf(t),1)}setTypeParser(e,t,n){\nreturn this._types.setTypeParser(e,t,n)}getTypeParser(e,t){return this._types.getTypeParser(e,t)}escapeIdentifier(e){\nreturn'\"'+e.replace(/\"/g,'\"\"')+'\"'}escapeLiteral(e){for(var t=!1,n=\"'\",i=0;i<e.length;i++){var s=e[i];\ns===\"'\"?n+=s+s:s===\"\\\\\"?(n+=s+s,t=!0):n+=s}return n+=\"'\",t===!0&&(n=\" E\"+n),n}_pulseQueryQueue(){if(this.\nreadyForQuery===!0)if(this.activeQuery=this.queryQueue.shift(),this.activeQuery){this.readyForQuery=\n!1,this.hasExecuted=!0;let e=this.activeQuery.submit(this.connection);e&&m.nextTick(()=>{this.activeQuery.\nhandleError(e,this.connection),this.readyForQuery=!0,this._pulseQueryQueue()})}else this.hasExecuted&&\n(this.activeQuery=null,this.emit(\"drain\"))}query(e,t,n){var i,s,o,u,c;if(e==null)throw new TypeError(\n\"Client was passed a null or undefined query\");return typeof e.submit==\"function\"?(o=e.query_timeout||\nthis.connectionParameters.query_timeout,s=i=e,typeof t==\"function\"&&(i.callback=i.callback||t)):(o=this.\nconnectionParameters.query_timeout,i=new Js(e,t,n),i.callback||(s=new this._Promise((l,f)=>{i.callback=\n(y,g)=>y?f(y):l(g)}))),o&&(c=i.callback,u=setTimeout(()=>{var l=new Error(\"Query read timeout\");m.nextTick(\n()=>{i.handleError(l,this.connection)}),c(l),i.callback=()=>{};var f=this.queryQueue.indexOf(i);f>-1&&\nthis.queryQueue.splice(f,1),this._pulseQueryQueue()},o),i.callback=(l,f)=>{clearTimeout(u),c(l,f)}),\nthis.binary&&!i.binary&&(i.binary=!0),i._result&&!i._result._types&&(i._result._types=this._types),this.\n_queryable?this._ending?(m.nextTick(()=>{i.handleError(new Error(\"Client was closed and is not query\\\nable\"),this.connection)}),s):(this.queryQueue.push(i),this._pulseQueryQueue(),s):(m.nextTick(()=>{i.\nhandleError(new Error(\"Client has encountered a connection error and is not queryable\"),this.connection)}),\ns)}ref(){this.connection.ref()}unref(){this.connection.unref()}end(e){if(this._ending=!0,!this.connection.\n_connecting)if(e)e();else return this._Promise.resolve();if(this.activeQuery||!this._queryable?this.\nconnection.stream.destroy():this.connection.end(),e)this.connection.once(\"end\",e);else return new this.\n_Promise(t=>{this.connection.once(\"end\",t)})}};a(Cn,\"Client\");var Ut=Cn;Ut.Query=Js;Xs.exports=Ut});var io=T((op,no)=>{\"use strict\";p();var nl=ge().EventEmitter,to=a(function(){},\"NOOP\"),ro=a((r,e)=>{\nlet t=r.findIndex(e);return t===-1?void 0:r.splice(t,1)[0]},\"removeWhere\"),Tn=class Tn{constructor(e,t,n){\nthis.client=e,this.idleListener=t,this.timeoutId=n}};a(Tn,\"IdleItem\");var _n=Tn,Pn=class Pn{constructor(e){\nthis.callback=e}};a(Pn,\"PendingItem\");var Qe=Pn;function il(){throw new Error(\"Release called on cli\\\nent which has already been released to the pool.\")}a(il,\"throwOnDoubleRelease\");function Dt(r,e){if(e)\nreturn{callback:e,result:void 0};let t,n,i=a(function(o,u){o?t(o):n(u)},\"cb\"),s=new r(function(o,u){\nn=o,t=u}).catch(o=>{throw Error.captureStackTrace(o),o});return{callback:i,result:s}}a(Dt,\"promisify\");\nfunction sl(r,e){return a(function t(n){n.client=e,e.removeListener(\"error\",t),e.on(\"error\",()=>{r.log(\n\"additional client error after disconnection due to error\",n)}),r._remove(e),r.emit(\"error\",n,e)},\"i\\\ndleListener\")}a(sl,\"makeIdleListener\");var Bn=class Bn extends nl{constructor(e,t){super(),this.options=\nObject.assign({},e),e!=null&&\"password\"in e&&Object.defineProperty(this.options,\"password\",{configurable:!0,\nenumerable:!1,writable:!0,value:e.password}),e!=null&&e.ssl&&e.ssl.key&&Object.defineProperty(this.options.\nssl,\"key\",{enumerable:!1}),this.options.max=this.options.max||this.options.poolSize||10,this.options.\nmin=this.options.min||0,this.options.maxUses=this.options.maxUses||1/0,this.options.allowExitOnIdle=\nthis.options.allowExitOnIdle||!1,this.options.maxLifetimeSeconds=this.options.maxLifetimeSeconds||0,\nthis.log=this.options.log||function(){},this.Client=this.options.Client||t||ot().Client,this.Promise=\nthis.options.Promise||b.Promise,typeof this.options.idleTimeoutMillis>\"u\"&&(this.options.idleTimeoutMillis=\n1e4),this._clients=[],this._idle=[],this._expired=new WeakSet,this._pendingQueue=[],this._endCallback=\nvoid 0,this.ending=!1,this.ended=!1}_isFull(){return this._clients.length>=this.options.max}_isAboveMin(){\nreturn this._clients.length>this.options.min}_pulseQueue(){if(this.log(\"pulse queue\"),this.ended){this.\nlog(\"pulse queue ended\");return}if(this.ending){this.log(\"pulse queue on ending\"),this._idle.length&&\nthis._idle.slice().map(t=>{this._remove(t.client)}),this._clients.length||(this.ended=!0,this._endCallback());\nreturn}if(!this._pendingQueue.length){this.log(\"no queued requests\");return}if(!this._idle.length&&this.\n_isFull())return;let e=this._pendingQueue.shift();if(this._idle.length){let t=this._idle.pop();clearTimeout(\nt.timeoutId);let n=t.client;n.ref&&n.ref();let i=t.idleListener;return this._acquireClient(n,e,i,!1)}\nif(!this._isFull())return this.newClient(e);throw new Error(\"unexpected condition\")}_remove(e){let t=ro(\nthis._idle,n=>n.client===e);t!==void 0&&clearTimeout(t.timeoutId),this._clients=this._clients.filter(\nn=>n!==e),e.end(),this.emit(\"remove\",e)}connect(e){if(this.ending){let i=new Error(\"Cannot use a poo\\\nl after calling end on the pool\");return e?e(i):this.Promise.reject(i)}let t=Dt(this.Promise,e),n=t.\nresult;if(this._isFull()||this._idle.length){if(this._idle.length&&m.nextTick(()=>this._pulseQueue()),\n!this.options.connectionTimeoutMillis)return this._pendingQueue.push(new Qe(t.callback)),n;let i=a((u,c,l)=>{\nclearTimeout(o),t.callback(u,c,l)},\"queueCallback\"),s=new Qe(i),o=setTimeout(()=>{ro(this._pendingQueue,\nu=>u.callback===i),s.timedOut=!0,t.callback(new Error(\"timeout exceeded when trying to connect\"))},this.\noptions.connectionTimeoutMillis);return o.unref&&o.unref(),this._pendingQueue.push(s),n}return this.\nnewClient(new Qe(t.callback)),n}newClient(e){let t=new this.Client(this.options);this._clients.push(\nt);let n=sl(this,t);this.log(\"checking client timeout\");let i,s=!1;this.options.connectionTimeoutMillis&&\n(i=setTimeout(()=>{this.log(\"ending client due to timeout\"),s=!0,t.connection?t.connection.stream.destroy():\nt.end()},this.options.connectionTimeoutMillis)),this.log(\"connecting new client\"),t.connect(o=>{if(i&&\nclearTimeout(i),t.on(\"error\",n),o)this.log(\"client failed to connect\",o),this._clients=this._clients.\nfilter(u=>u!==t),s&&(o=new Error(\"Connection terminated due to connection timeout\",{cause:o})),this.\n_pulseQueue(),e.timedOut||e.callback(o,void 0,to);else{if(this.log(\"new client connected\"),this.options.\nmaxLifetimeSeconds!==0){let u=setTimeout(()=>{this.log(\"ending client due to expired lifetime\"),this.\n_expired.add(t),this._idle.findIndex(l=>l.client===t)!==-1&&this._acquireClient(t,new Qe((l,f,y)=>y()),\nn,!1)},this.options.maxLifetimeSeconds*1e3);u.unref(),t.once(\"end\",()=>clearTimeout(u))}return this.\n_acquireClient(t,e,n,!0)}})}_acquireClient(e,t,n,i){i&&this.emit(\"connect\",e),this.emit(\"acquire\",e),\ne.release=this._releaseOnce(e,n),e.removeListener(\"error\",n),t.timedOut?i&&this.options.verify?this.\noptions.verify(e,e.release):e.release():i&&this.options.verify?this.options.verify(e,s=>{if(s)return e.\nrelease(s),t.callback(s,void 0,to);t.callback(void 0,e,e.release)}):t.callback(void 0,e,e.release)}_releaseOnce(e,t){\nlet n=!1;return i=>{n&&il(),n=!0,this._release(e,t,i)}}_release(e,t,n){if(e.on(\"error\",t),e._poolUseCount=\n(e._poolUseCount||0)+1,this.emit(\"release\",n,e),n||this.ending||!e._queryable||e._ending||e._poolUseCount>=\nthis.options.maxUses){e._poolUseCount>=this.options.maxUses&&this.log(\"remove expended client\"),this.\n_remove(e),this._pulseQueue();return}if(this._expired.has(e)){this.log(\"remove expired client\"),this.\n_expired.delete(e),this._remove(e),this._pulseQueue();return}let s;this.options.idleTimeoutMillis&&this.\n_isAboveMin()&&(s=setTimeout(()=>{this.log(\"remove idle client\"),this._remove(e)},this.options.idleTimeoutMillis),\nthis.options.allowExitOnIdle&&s.unref()),this.options.allowExitOnIdle&&e.unref(),this._idle.push(new _n(\ne,t,s)),this._pulseQueue()}query(e,t,n){if(typeof e==\"function\"){let s=Dt(this.Promise,e);return v(function(){\nreturn s.callback(new Error(\"Passing a function as the first parameter to pool.query is not supporte\\\nd\"))}),s.result}typeof t==\"function\"&&(n=t,t=void 0);let i=Dt(this.Promise,n);return n=i.callback,this.\nconnect((s,o)=>{if(s)return n(s);let u=!1,c=a(l=>{u||(u=!0,o.release(l),n(l))},\"onError\");o.once(\"er\\\nror\",c),this.log(\"dispatching query\");try{o.query(e,t,(l,f)=>{if(this.log(\"query dispatched\"),o.removeListener(\n\"error\",c),!u)return u=!0,o.release(l),l?n(l):n(void 0,f)})}catch(l){return o.release(l),n(l)}}),i.result}end(e){\nif(this.log(\"ending\"),this.ending){let n=new Error(\"Called end on pool more than once\");return e?e(n):\nthis.Promise.reject(n)}this.ending=!0;let t=Dt(this.Promise,e);return this._endCallback=t.callback,this.\n_pulseQueue(),t.result}get waitingCount(){return this._pendingQueue.length}get idleCount(){return this.\n_idle.length}get expiredCount(){return this._clients.reduce((e,t)=>e+(this._expired.has(t)?1:0),0)}get totalCount(){\nreturn this._clients.length}};a(Bn,\"Pool\");var In=Bn;no.exports=In});var so={};ie(so,{default:()=>ol});var ol,oo=G(()=>{\"use strict\";p();ol={}});var ao=T((lp,al)=>{al.exports={name:\"pg\",version:\"8.8.0\",description:\"PostgreSQL client - pure javas\\\ncript & libpq with the same API\",keywords:[\"database\",\"libpq\",\"pg\",\"postgre\",\"postgres\",\"postgresql\",\n\"rdbms\"],homepage:\"https://github.com/brianc/node-postgres\",repository:{type:\"git\",url:\"git://github\\\n.com/brianc/node-postgres.git\",directory:\"packages/pg\"},author:\"Brian Carlson <brian.m.carlson@gmail\\\n.com>\",main:\"./lib\",dependencies:{\"buffer-writer\":\"2.0.0\",\"packet-reader\":\"1.0.0\",\"pg-connection-str\\\ning\":\"^2.5.0\",\"pg-pool\":\"^3.5.2\",\"pg-protocol\":\"^1.5.0\",\"pg-types\":\"^2.1.0\",pgpass:\"1.x\"},devDependencies:{\nasync:\"2.6.4\",bluebird:\"3.5.2\",co:\"4.6.0\",\"pg-copy-streams\":\"0.3.0\"},peerDependencies:{\"pg-native\":\"\\\n>=3.0.1\"},peerDependenciesMeta:{\"pg-native\":{optional:!0}},scripts:{test:\"make test-all\"},files:[\"li\\\nb\",\"SPONSORS.md\"],license:\"MIT\",engines:{node:\">= 8.0.0\"},gitHead:\"c99fb2c127ddf8d712500db2c7b9a5491\\\na178655\"}});var lo=T((fp,co)=>{\"use strict\";p();var uo=ge().EventEmitter,ul=(it(),O(nt)),Rn=rt(),Ne=co.exports=function(r,e,t){\nuo.call(this),r=Rn.normalizeQueryConfig(r,e,t),this.text=r.text,this.values=r.values,this.name=r.name,\nthis.callback=r.callback,this.state=\"new\",this._arrayMode=r.rowMode===\"array\",this._emitRowEvents=!1,\nthis.on(\"newListener\",function(n){n===\"row\"&&(this._emitRowEvents=!0)}.bind(this))};ul.inherits(Ne,uo);\nvar cl={sqlState:\"code\",statementPosition:\"position\",messagePrimary:\"message\",context:\"where\",schemaName:\"\\\nschema\",tableName:\"table\",columnName:\"column\",dataTypeName:\"dataType\",constraintName:\"constraint\",sourceFile:\"\\\nfile\",sourceLine:\"line\",sourceFunction:\"routine\"};Ne.prototype.handleError=function(r){var e=this.native.\npq.resultErrorFields();if(e)for(var t in e){var n=cl[t]||t;r[n]=e[t]}this.callback?this.callback(r):\nthis.emit(\"error\",r),this.state=\"error\"};Ne.prototype.then=function(r,e){return this._getPromise().then(\nr,e)};Ne.prototype.catch=function(r){return this._getPromise().catch(r)};Ne.prototype._getPromise=function(){\nreturn this._promise?this._promise:(this._promise=new Promise(function(r,e){this._once(\"end\",r),this.\n_once(\"error\",e)}.bind(this)),this._promise)};Ne.prototype.submit=function(r){this.state=\"running\";var e=this;\nthis.native=r.native,r.native.arrayMode=this._arrayMode;var t=a(function(s,o,u){if(r.native.arrayMode=\n!1,v(function(){e.emit(\"_done\")}),s)return e.handleError(s);e._emitRowEvents&&(u.length>1?o.forEach(\n(c,l)=>{c.forEach(f=>{e.emit(\"row\",f,u[l])})}):o.forEach(function(c){e.emit(\"row\",c,u)})),e.state=\"e\\\nnd\",e.emit(\"end\",u),e.callback&&e.callback(null,u)},\"after\");if(m.domain&&(t=m.domain.bind(t)),this.\nname){this.name.length>63&&(console.error(\"Warning! Postgres only supports 63 characters for query n\\\names.\"),console.error(\"You supplied %s (%s)\",this.name,this.name.length),console.error(\"This can cau\\\nse conflicts and silent errors executing queries\"));var n=(this.values||[]).map(Rn.prepareValue);if(r.\nnamedQueries[this.name]){if(this.text&&r.namedQueries[this.name]!==this.text){let s=new Error(`Prepa\\\nred statements must be unique - '${this.name}' was used for a different statement`);return t(s)}return r.\nnative.execute(this.name,n,t)}return r.native.prepare(this.name,this.text,n.length,function(s){return s?\nt(s):(r.namedQueries[e.name]=e.text,e.native.execute(e.name,n,t))})}else if(this.values){if(!Array.isArray(\nthis.values)){let s=new Error(\"Query values must be an array\");return t(s)}var i=this.values.map(Rn.\nprepareValue);r.native.query(this.text,i,t)}else r.native.query(this.text,t)}});var yo=T((yp,po)=>{\"use strict\";p();var ll=(oo(),O(so)),fl=At(),dp=ao(),fo=ge().EventEmitter,hl=(it(),O(nt)),\npl=Bt(),ho=lo(),K=po.exports=function(r){fo.call(this),r=r||{},this._Promise=r.Promise||b.Promise,this.\n_types=new fl(r.types),this.native=new ll({types:this._types}),this._queryQueue=[],this._ending=!1,this.\n_connecting=!1,this._connected=!1,this._queryable=!0;var e=this.connectionParameters=new pl(r);this.\nuser=e.user,Object.defineProperty(this,\"password\",{configurable:!0,enumerable:!1,writable:!0,value:e.\npassword}),this.database=e.database,this.host=e.host,this.port=e.port,this.namedQueries={}};K.Query=\nho;hl.inherits(K,fo);K.prototype._errorAllQueries=function(r){let e=a(t=>{m.nextTick(()=>{t.native=this.\nnative,t.handleError(r)})},\"enqueueError\");this._hasActiveQuery()&&(e(this._activeQuery),this._activeQuery=\nnull),this._queryQueue.forEach(e),this._queryQueue.length=0};K.prototype._connect=function(r){var e=this;\nif(this._connecting){m.nextTick(()=>r(new Error(\"Client has already been connected. You cannot reuse\\\n a client.\")));return}this._connecting=!0,this.connectionParameters.getLibpqConnectionString(function(t,n){\nif(t)return r(t);e.native.connect(n,function(i){if(i)return e.native.end(),r(i);e._connected=!0,e.native.\non(\"error\",function(s){e._queryable=!1,e._errorAllQueries(s),e.emit(\"error\",s)}),e.native.on(\"notifi\\\ncation\",function(s){e.emit(\"notification\",{channel:s.relname,payload:s.extra})}),e.emit(\"connect\"),e.\n_pulseQueryQueue(!0),r()})})};K.prototype.connect=function(r){if(r){this._connect(r);return}return new this.\n_Promise((e,t)=>{this._connect(n=>{n?t(n):e()})})};K.prototype.query=function(r,e,t){var n,i,s,o,u;if(r==\nnull)throw new TypeError(\"Client was passed a null or undefined query\");if(typeof r.submit==\"functio\\\nn\")s=r.query_timeout||this.connectionParameters.query_timeout,i=n=r,typeof e==\"function\"&&(r.callback=\ne);else if(s=this.connectionParameters.query_timeout,n=new ho(r,e,t),!n.callback){let c,l;i=new this.\n_Promise((f,y)=>{c=f,l=y}),n.callback=(f,y)=>f?l(f):c(y)}return s&&(u=n.callback,o=setTimeout(()=>{var c=new Error(\n\"Query read timeout\");m.nextTick(()=>{n.handleError(c,this.connection)}),u(c),n.callback=()=>{};var l=this.\n_queryQueue.indexOf(n);l>-1&&this._queryQueue.splice(l,1),this._pulseQueryQueue()},s),n.callback=(c,l)=>{\nclearTimeout(o),u(c,l)}),this._queryable?this._ending?(n.native=this.native,m.nextTick(()=>{n.handleError(\nnew Error(\"Client was closed and is not queryable\"))}),i):(this._queryQueue.push(n),this._pulseQueryQueue(),\ni):(n.native=this.native,m.nextTick(()=>{n.handleError(new Error(\"Client has encountered a connectio\\\nn error and is not queryable\"))}),i)};K.prototype.end=function(r){var e=this;this._ending=!0,this._connected||\nthis.once(\"connect\",this.end.bind(this,r));var t;return r||(t=new this._Promise(function(n,i){r=a(s=>s?\ni(s):n(),\"cb\")})),this.native.end(function(){e._errorAllQueries(new Error(\"Connection terminated\")),\nm.nextTick(()=>{e.emit(\"end\"),r&&r()})}),t};K.prototype._hasActiveQuery=function(){return this._activeQuery&&\nthis._activeQuery.state!==\"error\"&&this._activeQuery.state!==\"end\"};K.prototype._pulseQueryQueue=function(r){\nif(this._connected&&!this._hasActiveQuery()){var e=this._queryQueue.shift();if(!e){r||this.emit(\"dra\\\nin\");return}this._activeQuery=e,e.submit(this);var t=this;e.once(\"_done\",function(){t._pulseQueryQueue()})}};\nK.prototype.cancel=function(r){this._activeQuery===r?this.native.cancel(function(){}):this._queryQueue.\nindexOf(r)!==-1&&this._queryQueue.splice(this._queryQueue.indexOf(r),1)};K.prototype.ref=function(){};\nK.prototype.unref=function(){};K.prototype.setTypeParser=function(r,e,t){return this._types.setTypeParser(\nr,e,t)};K.prototype.getTypeParser=function(r,e){return this._types.getTypeParser(r,e)}});var Ln=T((gp,mo)=>{\"use strict\";p();mo.exports=yo()});var ot=T((vp,at)=>{\"use strict\";p();var dl=eo(),yl=tt(),ml=En(),wl=io(),{DatabaseError:gl}=vn(),bl=a(\nr=>{var e;return e=class extends wl{constructor(n){super(n,r)}},a(e,\"BoundPool\"),e},\"poolFactory\"),Fn=a(\nfunction(r){this.defaults=yl,this.Client=r,this.Query=this.Client.Query,this.Pool=bl(this.Client),this.\n_pools=[],this.Connection=ml,this.types=Je(),this.DatabaseError=gl},\"PG\");typeof m.env.NODE_PG_FORCE_NATIVE<\n\"u\"?at.exports=new Fn(Ln()):(at.exports=new Fn(dl),Object.defineProperty(at.exports,\"native\",{configurable:!0,\nenumerable:!1,get(){var r=null;try{r=new Fn(Ln())}catch(e){if(e.code!==\"MODULE_NOT_FOUND\")throw e}return Object.\ndefineProperty(at.exports,\"native\",{value:r}),r}}))});p();p();Fe();Zt();p();var pa=Object.defineProperty,da=Object.defineProperties,ya=Object.getOwnPropertyDescriptors,bi=Object.\ngetOwnPropertySymbols,ma=Object.prototype.hasOwnProperty,wa=Object.prototype.propertyIsEnumerable,vi=a(\n(r,e,t)=>e in r?pa(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,\"__defNormalProp\"),\nga=a((r,e)=>{for(var t in e||(e={}))ma.call(e,t)&&vi(r,t,e[t]);if(bi)for(var t of bi(e))wa.call(e,t)&&\nvi(r,t,e[t]);return r},\"__spreadValues\"),ba=a((r,e)=>da(r,ya(e)),\"__spreadProps\"),va=1008e3,xi=new Uint8Array(\nnew Uint16Array([258]).buffer)[0]===2,xa=new TextDecoder,Jt=new TextEncoder,yt=Jt.encode(\"0123456789\\\nabcdef\"),mt=Jt.encode(\"0123456789ABCDEF\"),Sa=Jt.encode(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\\\nstuvwxyz0123456789+/\");var Si=Sa.slice();Si[62]=45;Si[63]=95;var He,wt;function Ea(r,{alphabet:e,scratchArr:t}={}){if(!He)if(He=\nnew Uint16Array(256),wt=new Uint16Array(256),xi)for(let C=0;C<256;C++)He[C]=yt[C&15]<<8|yt[C>>>4],wt[C]=\nmt[C&15]<<8|mt[C>>>4];else for(let C=0;C<256;C++)He[C]=yt[C&15]|yt[C>>>4]<<8,wt[C]=mt[C&15]|mt[C>>>4]<<\n8;r.byteOffset%4!==0&&(r=new Uint8Array(r));let n=r.length,i=n>>>1,s=n>>>2,o=t||new Uint16Array(n),u=new Uint32Array(\nr.buffer,r.byteOffset,s),c=new Uint32Array(o.buffer,o.byteOffset,i),l=e===\"upper\"?wt:He,f=0,y=0,g;if(xi)\nfor(;f<s;)g=u[f++],c[y++]=l[g>>>8&255]<<16|l[g&255],c[y++]=l[g>>>24]<<16|l[g>>>16&255];else for(;f<s;)\ng=u[f++],c[y++]=l[g>>>24]<<16|l[g>>>16&255],c[y++]=l[g>>>8&255]<<16|l[g&255];for(f<<=2;f<n;)o[f]=l[r[f++]];\nreturn xa.decode(o.subarray(0,n))}a(Ea,\"_toHex\");function Aa(r,e={}){let t=\"\",n=r.length,i=va>>>1,s=Math.\nceil(n/i),o=new Uint16Array(s>1?i:n);for(let u=0;u<s;u++){let c=u*i,l=c+i;t+=Ea(r.subarray(c,l),ba(ga(\n{},e),{scratchArr:o}))}return t}a(Aa,\"_toHexChunked\");function Ei(r,e={}){return e.alphabet!==\"upper\"&&\ntypeof r.toHex==\"function\"?r.toHex():Aa(r,e)}a(Ei,\"toHex\");p();var gt=class gt{constructor(e,t){this.strings=e;this.values=t}toParameterizedQuery(e={query:\"\",params:[]}){\nlet{strings:t,values:n}=this;for(let i=0,s=t.length;i<s;i++)if(e.query+=t[i],i<n.length){let o=n[i];\nif(o instanceof Ge)e.query+=o.sql;else if(o instanceof Ce)if(o.queryData instanceof gt)o.queryData.toParameterizedQuery(\ne);else{if(o.queryData.params?.length)throw new Error(\"This query is not composable\");e.query+=o.queryData.\nquery}else{let{params:u}=e;u.push(o),e.query+=\"$\"+u.length,(o instanceof d||ArrayBuffer.isView(o))&&\n(e.query+=\"::bytea\")}}return e}};a(gt,\"SqlTemplate\");var $e=gt,Xt=class Xt{constructor(e){this.sql=e}};\na(Xt,\"UnsafeRawSql\");var Ge=Xt;p();function bt(){typeof window<\"u\"&&typeof document<\"u\"&&typeof console<\"u\"&&typeof console.warn==\"func\\\ntion\"&&console.warn(` \n ************************************************************\n * *\n * WARNING: Running SQL directly from the browser can have *\n * security implications. Even if your database is *\n * protected by Row-Level Security (RLS), use it at your *\n * own risk. This approach is great for fast prototyping, *\n * but ensure proper safeguards are in place to prevent *\n * misuse or execution of expensive SQL queries by your *\n * end users. *\n * *\n * If you've assessed the risks, suppress this message *\n * using the disableWarningInBrowsers configuration *\n * parameter. *\n * *\n ************************************************************`)}a(bt,\"warnIfBrowser\");Fe();var as=Se(At()),us=Se(rt());var _t=class _t extends Error{constructor(t){super(t);E(this,\"name\",\"NeonDbError\");E(this,\"severity\");\nE(this,\"code\");E(this,\"detail\");E(this,\"hint\");E(this,\"position\");E(this,\"internalPosition\");E(this,\n\"internalQuery\");E(this,\"where\");E(this,\"schema\");E(this,\"table\");E(this,\"column\");E(this,\"dataType\");\nE(this,\"constraint\");E(this,\"file\");E(this,\"line\");E(this,\"routine\");E(this,\"sourceError\");\"captureS\\\ntackTrace\"in Error&&typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,_t)}};a(\n_t,\"NeonDbError\");var be=_t,is=\"transaction() expects an array of queries, or a function returning a\\\nn array of queries\",Ru=[\"severity\",\"code\",\"detail\",\"hint\",\"position\",\"internalPosition\",\"internalQue\\\nry\",\"where\",\"schema\",\"table\",\"column\",\"dataType\",\"constraint\",\"file\",\"line\",\"routine\"];function Lu(r){\nreturn r instanceof d?\"\\\\x\"+Ei(r):r}a(Lu,\"encodeBuffersAsBytea\");function ss(r){let{query:e,params:t}=r instanceof\n$e?r.toParameterizedQuery():r;return{query:e,params:t.map(n=>Lu((0,us.prepareValue)(n)))}}a(ss,\"prep\\\nareQuery\");function cs(r,{arrayMode:e,fullResults:t,fetchOptions:n,isolationLevel:i,readOnly:s,deferrable:o,\nauthToken:u,disableWarningInBrowsers:c}={}){if(!r)throw new Error(\"No database connection string was\\\n provided to `neon()`. Perhaps an environment variable has not been set?\");let l;try{l=Yt(r)}catch{throw new Error(\n\"Database connection string provided to `neon()` is not a valid URL. Connection string: \"+String(r))}\nlet{protocol:f,username:y,hostname:g,port:A,pathname:C}=l;if(f!==\"postgres:\"&&f!==\"postgresql:\"||!y||\n!g||!C)throw new Error(\"Database connection string format for `neon()` should be: postgresql://user:\\\npassword@host.tld/dbname?option=value\");function D(P,...I){if(!(Array.isArray(P)&&Array.isArray(P.raw)&&\nArray.isArray(I)))throw new Error('This function can now be called only as a tagged-template functio\\\nn: sql`SELECT ${value}`, not sql(\"SELECT $1\", [value], options). For a conventional function call wi\\\nth value placeholders ($1, $2, etc.), use sql.query(\"SELECT $1\", [value], options).');return new Ce(\nY,new $e(P,I))}a(D,\"templateFn\"),D.query=(P,I,w)=>new Ce(Y,{query:P,params:I??[]},w),D.unsafe=P=>new Ge(\nP),D.transaction=async(P,I)=>{if(typeof P==\"function\"&&(P=P(D)),!Array.isArray(P))throw new Error(is);\nP.forEach(W=>{if(!(W instanceof Ce))throw new Error(is)});let w=P.map(W=>W.queryData),Z=P.map(W=>W.opts??\n{});return Y(w,Z,I)};async function Y(P,I,w){let{fetchEndpoint:Z,fetchFunction:W}=ce,J=Array.isArray(\nP)?{queries:P.map(ee=>ss(ee))}:ss(P),X=n??{},se=e??!1,oe=t??!1,R=i,j=s,le=o;w!==void 0&&(w.fetchOptions!==\nvoid 0&&(X={...X,...w.fetchOptions}),w.arrayMode!==void 0&&(se=w.arrayMode),w.fullResults!==void 0&&\n(oe=w.fullResults),w.isolationLevel!==void 0&&(R=w.isolationLevel),w.readOnly!==void 0&&(j=w.readOnly),\nw.deferrable!==void 0&&(le=w.deferrable)),I!==void 0&&!Array.isArray(I)&&I.fetchOptions!==void 0&&(X=\n{...X,...I.fetchOptions});let de=u;!Array.isArray(I)&&I?.authToken!==void 0&&(de=I.authToken);let We=typeof Z==\n\"function\"?Z(g,A,{jwtAuth:de!==void 0}):Z,fe={\"Neon-Connection-String\":r,\"Neon-Raw-Text-Output\":\"tru\\\ne\",\"Neon-Array-Mode\":\"true\"},_e=await Fu(de);_e&&(fe.Authorization=`Bearer ${_e}`),Array.isArray(P)&&\n(R!==void 0&&(fe[\"Neon-Batch-Isolation-Level\"]=R),j!==void 0&&(fe[\"Neon-Batch-Read-Only\"]=String(j)),\nle!==void 0&&(fe[\"Neon-Batch-Deferrable\"]=String(le))),c||ce.disableWarningInBrowsers||bt();let ye;try{\nye=await(W??fetch)(We,{method:\"POST\",body:JSON.stringify(J),headers:fe,...X})}catch(ee){let M=new be(\n`Error connecting to database: ${ee}`);throw M.sourceError=ee,M}if(ye.ok){let ee=await ye.json();if(Array.\nisArray(P)){let M=ee.results;if(!Array.isArray(M))throw new be(\"Neon internal error: unexpected resu\\\nlt format\");return M.map(($,me)=>{let Ot=I[me]??{},vo=Ot.arrayMode??se,xo=Ot.fullResults??oe;return os(\n$,{arrayMode:vo,fullResults:xo,types:Ot.types})})}else{let M=I??{},$=M.arrayMode??se,me=M.fullResults??\noe;return os(ee,{arrayMode:$,fullResults:me,types:M.types})}}else{let{status:ee}=ye;if(ee===400){let M=await ye.\njson(),$=new be(M.message);for(let me of Ru)$[me]=M[me]??void 0;throw $}else{let M=await ye.text();throw new be(\n`Server error (HTTP status ${ee}): ${M}`)}}}return a(Y,\"execute\"),D}a(cs,\"neon\");var dr=class dr{constructor(e,t,n){\nthis.execute=e;this.queryData=t;this.opts=n}then(e,t){return this.execute(this.queryData,this.opts).\nthen(e,t)}catch(e){return this.execute(this.queryData,this.opts).catch(e)}finally(e){return this.execute(\nthis.queryData,this.opts).finally(e)}};a(dr,\"NeonQueryPromise\");var Ce=dr;function os(r,{arrayMode:e,\nfullResults:t,types:n}){let i=new as.default(n),s=r.fields.map(c=>c.name),o=r.fields.map(c=>i.getTypeParser(\nc.dataTypeID)),u=e===!0?r.rows.map(c=>c.map((l,f)=>l===null?null:o[f](l))):r.rows.map(c=>Object.fromEntries(\nc.map((l,f)=>[s[f],l===null?null:o[f](l)])));return t?(r.viaNeonFetch=!0,r.rowAsArray=e,r.rows=u,r._parsers=\no,r._types=i,r):u}a(os,\"processQueryResult\");async function Fu(r){if(typeof r==\"string\")return r;if(typeof r==\n\"function\")try{return await Promise.resolve(r())}catch(e){let t=new be(\"Error getting auth token.\");\nthrow e instanceof Error&&(t=new be(`Error getting auth token: ${e.message}`)),t}}a(Fu,\"getAuthToken\");p();var go=Se(ot());p();var wo=Se(ot());var kn=class kn extends wo.Client{constructor(t){super(t);this.config=t}get neonConfig(){return this.\nconnection.stream}connect(t){let{neonConfig:n}=this;n.forceDisablePgSSL&&(this.ssl=this.connection.ssl=\n!1),this.ssl&&n.useSecureWebSocket&&console.warn(\"SSL is enabled for both Postgres (e.g. ?sslmode=re\\\nquire in the connection string + forceDisablePgSSL = false) and the WebSocket tunnel (useSecureWebSo\\\ncket = true). Double encryption will increase latency and CPU usage. It may be appropriate to disabl\\\ne SSL in the Postgres connection parameters or set forceDisablePgSSL = true.\");let i=typeof this.config!=\n\"string\"&&this.config?.host!==void 0||typeof this.config!=\"string\"&&this.config?.connectionString!==\nvoid 0||m.env.PGHOST!==void 0,s=m.env.USER??m.env.USERNAME;if(!i&&this.host===\"localhost\"&&this.user===\ns&&this.database===s&&this.password===null)throw new Error(`No database host or connection string wa\\\ns set, and key parameters have default values (host: localhost, user: ${s}, db: ${s}, password: null\\\n). Is an environment variable missing? Alternatively, if you intended to connect with these paramete\\\nrs, please set the host to 'localhost' explicitly.`);let o=super.connect(t),u=n.pipelineTLS&&this.ssl,\nc=n.pipelineConnect===\"password\";if(!u&&!n.pipelineConnect)return o;let l=this.connection;if(u&&l.on(\n\"connect\",()=>l.stream.emit(\"data\",\"S\")),c){l.removeAllListeners(\"authenticationCleartextPassword\"),\nl.removeAllListeners(\"readyForQuery\"),l.once(\"readyForQuery\",()=>l.on(\"readyForQuery\",this._handleReadyForQuery.\nbind(this)));let f=this.ssl?\"sslconnect\":\"connect\";l.on(f,()=>{this.neonConfig.disableWarningInBrowsers||\nbt(),this._handleAuthCleartextPassword(),this._handleReadyForQuery()})}return o}async _handleAuthSASLContinue(t){\nif(typeof crypto>\"u\"||crypto.subtle===void 0||crypto.subtle.importKey===void 0)throw new Error(\"Cann\\\not use SASL auth when `crypto.subtle` is not defined\");let n=crypto.subtle,i=this.saslSession,s=this.\npassword,o=t.data;if(i.message!==\"SASLInitialResponse\"||typeof s!=\"string\"||typeof o!=\"string\")throw new Error(\n\"SASL: protocol error\");let u=Object.fromEntries(o.split(\",\").map(M=>{if(!/^.=/.test(M))throw new Error(\n\"SASL: Invalid attribute pair entry\");let $=M[0],me=M.substring(2);return[$,me]})),c=u.r,l=u.s,f=u.i;\nif(!c||!/^[!-+--~]+$/.test(c))throw new Error(\"SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce missing/unpri\\\nntable\");if(!l||!/^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.test(l))throw new Error(\n\"SASL: SCRAM-SERVER-FIRST-MESSAGE: salt missing/not base64\");if(!f||!/^[1-9][0-9]*$/.test(f))throw new Error(\n\"SASL: SCRAM-SERVER-FIRST-MESSAGE: missing/invalid iteration count\");if(!c.startsWith(i.clientNonce))\nthrow new Error(\"SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not start with client nonce\");if(c.\nlength===i.clientNonce.length)throw new Error(\"SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce is too\\\n short\");let y=parseInt(f,10),g=d.from(l,\"base64\"),A=new TextEncoder,C=A.encode(s),D=await n.importKey(\n\"raw\",C,{name:\"HMAC\",hash:{name:\"SHA-256\"}},!1,[\"sign\"]),Y=new Uint8Array(await n.sign(\"HMAC\",D,d.concat(\n[g,d.from([0,0,0,1])]))),P=Y;for(var I=0;I<y-1;I++)Y=new Uint8Array(await n.sign(\"HMAC\",D,Y)),P=d.from(\nP.map((M,$)=>P[$]^Y[$]));let w=P,Z=await n.importKey(\"raw\",w,{name:\"HMAC\",hash:{name:\"SHA-256\"}},!1,\n[\"sign\"]),W=new Uint8Array(await n.sign(\"HMAC\",Z,A.encode(\"Client Key\"))),J=await n.digest(\"SHA-256\",\nW),X=\"n=*,r=\"+i.clientNonce,se=\"r=\"+c+\",s=\"+l+\",i=\"+y,oe=\"c=biws,r=\"+c,R=X+\",\"+se+\",\"+oe,j=await n.importKey(\n\"raw\",J,{name:\"HMAC\",hash:{name:\"SHA-256\"}},!1,[\"sign\"]);var le=new Uint8Array(await n.sign(\"HMAC\",j,\nA.encode(R))),de=d.from(W.map((M,$)=>W[$]^le[$])),We=de.toString(\"base64\");let fe=await n.importKey(\n\"raw\",w,{name:\"HMAC\",hash:{name:\"SHA-256\"}},!1,[\"sign\"]),_e=await n.sign(\"HMAC\",fe,A.encode(\"Server \\\nKey\")),ye=await n.importKey(\"raw\",_e,{name:\"HMAC\",hash:{name:\"SHA-256\"}},!1,[\"sign\"]);var ee=d.from(\nawait n.sign(\"HMAC\",ye,A.encode(R)));i.message=\"SASLResponse\",i.serverSignature=ee.toString(\"base64\"),\ni.response=oe+\",p=\"+We,this.connection.sendSCRAMClientFinalMessage(this.saslSession.response)}};a(kn,\n\"NeonClient\");var ut=kn;Fe();var bo=Se(Bt());function vl(r,e){if(e)return{callback:e,result:void 0};let t,n,i=a(function(o,u){o?t(o):n(u)},\"cb\"),\ns=new r(function(o,u){n=o,t=u});return{callback:i,result:s}}a(vl,\"promisify\");var Un=class Un extends go.Pool{constructor(){\nsuper(...arguments);E(this,\"Client\",ut);E(this,\"hasFetchUnsupportedListeners\",!1);E(this,\"addListene\\\nr\",this.on)}on(t,n){return t!==\"error\"&&(this.hasFetchUnsupportedListeners=!0),super.on(t,n)}query(t,n,i){\nif(!ce.poolQueryViaFetch||this.hasFetchUnsupportedListeners||typeof t==\"function\")return super.query(\nt,n,i);typeof n==\"function\"&&(i=n,n=void 0);let s=vl(this.Promise,i);i=s.callback;try{let o=new bo.default(\nthis.options),u=encodeURIComponent,c=encodeURI,l=`postgresql://${u(o.user)}:${u(o.password)}@${u(o.host)}\\\n/${c(o.database)}`,f=typeof t==\"string\"?t:t.text,y=n??t.values??[];cs(l,{fullResults:!0,arrayMode:t.\nrowMode===\"array\"}).query(f,y,{types:t.types??this.options?.types}).then(A=>i(void 0,A)).catch(A=>i(\nA))}catch(o){i(o)}return s.result}};a(Un,\"NeonPool\");var Mn=Un;Fe();var ct=Se(ot()),kp=\"mjs\";var export_DatabaseError=ct.DatabaseError;var export_defaults=ct.defaults;var export_escapeIdentifier=ct.escapeIdentifier;\nvar export_escapeLiteral=ct.escapeLiteral;var export_types=ct.types;export{ut as Client,export_DatabaseError as DatabaseError,\nbe as NeonDbError,Ce as NeonQueryPromise,Mn as Pool,$e as SqlTemplate,Ge as UnsafeRawSql,kp as _bundleExt,\nexport_defaults as defaults,export_escapeIdentifier as escapeIdentifier,export_escapeLiteral as escapeLiteral,\ncs as neon,ce as neonConfig,export_types as types,bt as warnIfBrowser};\n/*! Bundled license information:\n\nieee754/index.js:\n (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\nbuffer/index.js:\n (*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n *)\n*/\n",
|
|
165
|
+
"import { neonConfig, Pool } from \"@neondatabase/serverless\";\nimport { entityKind } from \"../entity.js\";\nimport { DefaultLogger } from \"../logger.js\";\nimport { PgDatabase } from \"../pg-core/db.js\";\nimport { PgDialect } from \"../pg-core/dialect.js\";\nimport {\n createTableRelationsHelpers,\n extractTablesRelationalConfig\n} from \"../relations.js\";\nimport { isConfig } from \"../utils.js\";\nimport { NeonSession } from \"./session.js\";\nclass NeonDriver {\n constructor(client, dialect, options = {}) {\n this.client = client;\n this.dialect = dialect;\n this.options = options;\n }\n static [entityKind] = \"NeonDriver\";\n createSession(schema) {\n return new NeonSession(this.client, this.dialect, schema, {\n logger: this.options.logger,\n cache: this.options.cache\n });\n }\n}\nclass NeonDatabase extends PgDatabase {\n static [entityKind] = \"NeonServerlessDatabase\";\n}\nfunction construct(client, config = {}) {\n const dialect = new PgDialect({ casing: config.casing });\n let logger;\n if (config.logger === true) {\n logger = new DefaultLogger();\n } else if (config.logger !== false) {\n logger = config.logger;\n }\n let schema;\n if (config.schema) {\n const tablesConfig = extractTablesRelationalConfig(\n config.schema,\n createTableRelationsHelpers\n );\n schema = {\n fullSchema: config.schema,\n schema: tablesConfig.tables,\n tableNamesMap: tablesConfig.tableNamesMap\n };\n }\n const driver = new NeonDriver(client, dialect, { logger, cache: config.cache });\n const session = driver.createSession(schema);\n const db = new NeonDatabase(dialect, session, schema);\n db.$client = client;\n db.$cache = config.cache;\n if (db.$cache) {\n db.$cache[\"invalidate\"] = config.cache?.onMutate;\n }\n return db;\n}\nfunction drizzle(...params) {\n if (typeof params[0] === \"string\") {\n const instance = new Pool({\n connectionString: params[0]\n });\n return construct(instance, params[1]);\n }\n if (isConfig(params[0])) {\n const { connection, client, ws, ...drizzleConfig } = params[0];\n if (ws) {\n neonConfig.webSocketConstructor = ws;\n }\n if (client) return construct(client, drizzleConfig);\n const instance = typeof connection === \"string\" ? new Pool({\n connectionString: connection\n }) : new Pool(connection);\n return construct(instance, drizzleConfig);\n }\n return construct(params[0], params[1]);\n}\n((drizzle2) => {\n function mock(config) {\n return construct({}, config);\n }\n drizzle2.mock = mock;\n})(drizzle || (drizzle = {}));\nexport {\n NeonDatabase,\n NeonDriver,\n drizzle\n};\n//# sourceMappingURL=driver.js.map",
|
|
166
|
+
"import {\n Pool,\n types\n} from \"@neondatabase/serverless\";\nimport { NoopCache } from \"../cache/core/cache.js\";\nimport { entityKind } from \"../entity.js\";\nimport { NoopLogger } from \"../logger.js\";\nimport { PgTransaction } from \"../pg-core/index.js\";\nimport { PgPreparedQuery, PgSession } from \"../pg-core/session.js\";\nimport { fillPlaceholders, sql } from \"../sql/sql.js\";\nimport { mapResultRow } from \"../utils.js\";\nclass NeonPreparedQuery extends PgPreparedQuery {\n constructor(client, queryString, params, logger, cache, queryMetadata, cacheConfig, fields, name, _isResponseInArrayMode, customResultMapper) {\n super({ sql: queryString, params }, cache, queryMetadata, cacheConfig);\n this.client = client;\n this.params = params;\n this.logger = logger;\n this.fields = fields;\n this._isResponseInArrayMode = _isResponseInArrayMode;\n this.customResultMapper = customResultMapper;\n this.rawQueryConfig = {\n name,\n text: queryString,\n types: {\n // @ts-ignore\n getTypeParser: (typeId, format) => {\n if (typeId === types.builtins.TIMESTAMPTZ) {\n return (val) => val;\n }\n if (typeId === types.builtins.TIMESTAMP) {\n return (val) => val;\n }\n if (typeId === types.builtins.DATE) {\n return (val) => val;\n }\n if (typeId === types.builtins.INTERVAL) {\n return (val) => val;\n }\n if (typeId === 1231) {\n return (val) => val;\n }\n if (typeId === 1115) {\n return (val) => val;\n }\n if (typeId === 1185) {\n return (val) => val;\n }\n if (typeId === 1187) {\n return (val) => val;\n }\n if (typeId === 1182) {\n return (val) => val;\n }\n return types.getTypeParser(typeId, format);\n }\n }\n };\n this.queryConfig = {\n name,\n text: queryString,\n rowMode: \"array\",\n types: {\n // @ts-ignore\n getTypeParser: (typeId, format) => {\n if (typeId === types.builtins.TIMESTAMPTZ) {\n return (val) => val;\n }\n if (typeId === types.builtins.TIMESTAMP) {\n return (val) => val;\n }\n if (typeId === types.builtins.DATE) {\n return (val) => val;\n }\n if (typeId === types.builtins.INTERVAL) {\n return (val) => val;\n }\n if (typeId === 1231) {\n return (val) => val;\n }\n if (typeId === 1115) {\n return (val) => val;\n }\n if (typeId === 1185) {\n return (val) => val;\n }\n if (typeId === 1187) {\n return (val) => val;\n }\n if (typeId === 1182) {\n return (val) => val;\n }\n return types.getTypeParser(typeId, format);\n }\n }\n };\n }\n static [entityKind] = \"NeonPreparedQuery\";\n rawQueryConfig;\n queryConfig;\n async execute(placeholderValues = {}) {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n const { fields, client, rawQueryConfig: rawQuery, queryConfig: query, joinsNotNullableMap, customResultMapper } = this;\n if (!fields && !customResultMapper) {\n return await this.queryWithCache(rawQuery.text, params, async () => {\n return await client.query(rawQuery, params);\n });\n }\n const result = await this.queryWithCache(query.text, params, async () => {\n return await client.query(query, params);\n });\n return customResultMapper ? customResultMapper(result.rows) : result.rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));\n }\n all(placeholderValues = {}) {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.queryWithCache(this.rawQueryConfig.text, params, async () => {\n return await this.client.query(this.rawQueryConfig, params);\n }).then((result) => result.rows);\n }\n values(placeholderValues = {}) {\n const params = fillPlaceholders(this.params, placeholderValues);\n this.logger.logQuery(this.rawQueryConfig.text, params);\n return this.queryWithCache(this.queryConfig.text, params, async () => {\n return await this.client.query(this.queryConfig, params);\n }).then((result) => result.rows);\n }\n /** @internal */\n isResponseInArrayMode() {\n return this._isResponseInArrayMode;\n }\n}\nclass NeonSession extends PgSession {\n constructor(client, dialect, schema, options = {}) {\n super(dialect);\n this.client = client;\n this.schema = schema;\n this.options = options;\n this.logger = options.logger ?? new NoopLogger();\n this.cache = options.cache ?? new NoopCache();\n }\n static [entityKind] = \"NeonSession\";\n logger;\n cache;\n prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {\n return new NeonPreparedQuery(\n this.client,\n query.sql,\n query.params,\n this.logger,\n this.cache,\n queryMetadata,\n cacheConfig,\n fields,\n name,\n isResponseInArrayMode,\n customResultMapper\n );\n }\n async query(query, params) {\n this.logger.logQuery(query, params);\n const result = await this.client.query({\n rowMode: \"array\",\n text: query,\n values: params\n });\n return result;\n }\n async queryObjects(query, params) {\n return this.client.query(query, params);\n }\n async count(sql2) {\n const res = await this.execute(sql2);\n return Number(\n res[\"rows\"][0][\"count\"]\n );\n }\n async transaction(transaction, config = {}) {\n const session = this.client instanceof Pool ? new NeonSession(await this.client.connect(), this.dialect, this.schema, this.options) : this;\n const tx = new NeonTransaction(this.dialect, session, this.schema);\n await tx.execute(sql`begin ${tx.getTransactionConfigSQL(config)}`);\n try {\n const result = await transaction(tx);\n await tx.execute(sql`commit`);\n return result;\n } catch (error) {\n await tx.execute(sql`rollback`);\n throw error;\n } finally {\n if (this.client instanceof Pool) {\n session.client.release();\n }\n }\n }\n}\nclass NeonTransaction extends PgTransaction {\n static [entityKind] = \"NeonTransaction\";\n async transaction(transaction) {\n const savepointName = `sp${this.nestedIndex + 1}`;\n const tx = new NeonTransaction(this.dialect, this.session, this.schema, this.nestedIndex + 1);\n await tx.execute(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = await transaction(tx);\n await tx.execute(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (e) {\n await tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n throw e;\n }\n }\n}\nexport {\n NeonPreparedQuery,\n NeonSession,\n NeonTransaction\n};\n//# sourceMappingURL=session.js.map",
|
|
167
|
+
"import { drizzle, type NeonDatabase } from 'drizzle-orm/neon-serverless';\nimport { Pool, neonConfig } from '@neondatabase/serverless';\nimport { sql } from 'drizzle-orm';\nimport { logger, type UUID, validateUuid } from '@elizaos/core';\nimport ws from 'ws';\n\n/**\n * Neon Serverless Connection Manager\n *\n * Uses @neondatabase/serverless for optimal performance with Neon databases.\n * Benefits over standard pg driver:\n * - Connection pooling handled at the edge (Neon's proxy)\n * - WebSocket-based connections for serverless environments\n * - Better cold start performance\n * - No pool.end() issues (connections are ephemeral)\n */\nexport class NeonConnectionManager {\n private pool: Pool;\n private db: NeonDatabase;\n private _closed = false;\n private readonly connectionString: string;\n private readonly rlsServerId?: string;\n\n constructor(connectionString: string, rlsServerId?: string) {\n this.connectionString = connectionString;\n this.rlsServerId = rlsServerId;\n\n // Configure WebSocket for Node.js environment\n // In browser/edge environments, native WebSocket is used automatically\n if (typeof WebSocket === 'undefined') {\n neonConfig.webSocketConstructor = ws;\n }\n\n // Neon serverless pool - connection pooling is handled by Neon's proxy\n // so we don't need the same pool configuration as node-postgres\n this.pool = new Pool({\n connectionString,\n });\n\n this.db = drizzle(this.pool, { casing: 'snake_case' });\n }\n\n public getDatabase(): NeonDatabase {\n return this.db;\n }\n\n public getConnection(): Pool {\n return this.pool;\n }\n\n public async testConnection(): Promise<boolean> {\n try {\n // Neon serverless uses a simpler connection model\n await this.db.execute(sql`SELECT 1`);\n return true;\n } catch (error) {\n logger.error(\n { src: 'plugin:sql:neon', error: error instanceof Error ? error.message : String(error) },\n 'Failed to connect to Neon database'\n );\n return false;\n }\n }\n\n /**\n * Execute a query with full isolation context (Server RLS + Entity RLS).\n * Uses set_config() with parameterized queries for proper SQL injection protection.\n */\n public async withIsolationContext<T>(\n entityId: UUID | null,\n callback: (tx: NeonDatabase) => Promise<T>\n ): Promise<T> {\n const dataIsolationEnabled = process.env.ENABLE_DATA_ISOLATION === 'true';\n\n return await this.db.transaction(async (tx) => {\n if (dataIsolationEnabled) {\n // Set server context (Server RLS) using parameterized set_config()\n if (this.rlsServerId) {\n await tx.execute(sql`SELECT set_config('app.server_id', ${this.rlsServerId}, true)`);\n }\n\n // Set entity context (Entity RLS) using parameterized set_config()\n if (entityId) {\n if (!validateUuid(entityId)) {\n throw new Error(`Invalid UUID format for entity context: ${entityId}`);\n }\n await tx.execute(sql`SELECT set_config('app.entity_id', ${entityId}, true)`);\n }\n }\n\n return await callback(tx as unknown as NeonDatabase);\n });\n }\n\n /**\n * Closes the connection pool.\n * Note: With Neon serverless, this is less critical as connections\n * are managed by Neon's proxy, but we still track the closed state.\n */\n public async close(): Promise<void> {\n if (this._closed) return;\n this._closed = true;\n await this.pool.end();\n }\n\n /**\n * Check if the connection pool has been closed.\n */\n public isClosed(): boolean {\n return this._closed;\n }\n\n /**\n * Get the connection string for this manager.\n */\n public getConnectionString(): string {\n return this.connectionString;\n }\n\n /**\n * Get the RLS server ID for this manager.\n */\n public getRlsServerId(): string | undefined {\n return this.rlsServerId;\n }\n}\n",
|
|
168
|
+
"import createWebSocketStream from './lib/stream.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport { createWebSocketStream, Receiver, Sender, WebSocket, WebSocketServer };\nexport default WebSocket;\n",
|
|
169
|
+
"import dotenv from 'dotenv';\nimport { existsSync } from 'node:fs';\nimport path from 'node:path';\n\n/**\n * Node-specific utils split out for server builds.\n */\n\n/**\n * Checks if a database URL is for Neon serverless database.\n * When true, we use @neondatabase/serverless driver instead of pg.\n *\n * Neon URLs typically contain:\n * - neon.tech (Neon's main domain)\n * - neon.database (alternative domain)\n *\n * @example\n * isNeonDatabase('postgres://user:pass@ep-cool-name-123456.us-east-2.aws.neon.tech/dbname') // true\n * isNeonDatabase('postgres://user:pass@localhost:5432/dbname') // false\n */\nexport function isNeonDatabase(url: string): boolean {\n return url.includes('neon.tech') || url.includes('neon.database');\n}\n\nexport function expandTildePath(filepath: string): string {\n if (filepath && filepath.startsWith('~')) {\n return path.join(process.cwd(), filepath.slice(1));\n }\n return filepath;\n}\n\nexport function resolveEnvFile(startDir: string = process.cwd()): string {\n let currentDir = startDir;\n\n while (true) {\n const candidate = path.join(currentDir, '.env');\n if (existsSync(candidate)) {\n return candidate;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n break;\n }\n currentDir = parentDir;\n }\n\n return path.join(startDir, '.env');\n}\n\nexport function resolvePgliteDir(dir?: string, fallbackDir?: string): string {\n const envPath = resolveEnvFile();\n if (existsSync(envPath)) {\n dotenv.config({ path: envPath });\n }\n\n let monoPath;\n if (existsSync(path.join(process.cwd(), 'packages', 'core'))) {\n monoPath = process.cwd();\n } else {\n const twoUp = path.resolve(process.cwd(), '../..');\n if (existsSync(path.join(twoUp, 'packages', 'core'))) {\n monoPath = twoUp;\n }\n }\n\n const base =\n dir ??\n process.env.PGLITE_DATA_DIR ??\n fallbackDir ??\n (monoPath ? path.join(monoPath, '.eliza', '.elizadb') : undefined) ??\n path.join(process.cwd(), '.eliza', '.elizadb');\n\n const resolved = expandTildePath(base);\n const legacyPath = path.join(process.cwd(), '.elizadb');\n if (resolved === legacyPath) {\n const newPath = path.join(process.cwd(), '.eliza', '.elizadb');\n process.env.PGLITE_DATA_DIR = newPath;\n return newPath;\n }\n\n return resolved;\n}\n"
|
|
145
170
|
],
|
|
146
|
-
"mappings": "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",
|
|
147
|
-
"debugId": "
|
|
171
|
+
"mappings": "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AA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,EAC/C;AAAA,EASA,SAAS,iBAAiB,CAAC,MAAM;AAAA,IAC/B,OACG,QAAQ,QACP,QAAQ,QACR,SAAS,QACT,SAAS,QACT,SAAS,QACV,QAAQ,QAAQ,QAAQ;AAAA;AAAA,EAa7B,SAAS,YAAY,CAAC,KAAK;AAAA,IACzB,MAAM,MAAM,IAAI;AAAA,IAChB,IAAI,IAAI;AAAA,IAER,OAAO,IAAI,KAAK;AAAA,MACd,KAAK,IAAI,KAAK,SAAU,GAAG;AAAA,QAEzB;AAAA,MACF,EAAO,UAAK,IAAI,KAAK,SAAU,KAAM;AAAA,QAEnC,IACE,IAAI,MAAM,QACT,IAAI,IAAI,KAAK,SAAU,QACvB,IAAI,KAAK,SAAU,KACpB;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QAEA,KAAK;AAAA,MACP,EAAO,UAAK,IAAI,KAAK,SAAU,KAAM;AAAA,QAEnC,IACE,IAAI,KAAK,QACR,IAAI,IAAI,KAAK,SAAU,QACvB,IAAI,IAAI,KAAK,SAAU,OACvB,IAAI,OAAO,QAAS,IAAI,IAAI,KAAK,SAAU,OAC3C,IAAI,OAAO,QAAS,IAAI,IAAI,KAAK,SAAU,KAC5C;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QAEA,KAAK;AAAA,MACP,EAAO,UAAK,IAAI,KAAK,SAAU,KAAM;AAAA,QAEnC,IACE,IAAI,KAAK,QACR,IAAI,IAAI,KAAK,SAAU,QACvB,IAAI,IAAI,KAAK,SAAU,QACvB,IAAI,IAAI,KAAK,SAAU,OACvB,IAAI,OAAO,QAAS,IAAI,IAAI,KAAK,SAAU,OAC3C,IAAI,OAAO,OAAQ,IAAI,IAAI,KAAK,OACjC,IAAI,KAAK,KACT;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QAEA,KAAK;AAAA,MACP,EAAO;AAAA,QACL,OAAO;AAAA;AAAA,IAEX;AAAA,IAEA,OAAO;AAAA;AAAA,EAUT,SAAS,MAAM,CAAC,OAAO;AAAA,IACrB,OACE,WACA,OAAO,UAAU,YACjB,OAAO,MAAM,gBAAgB,cAC7B,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,WAAW,eACvB,MAAM,OAAO,iBAAiB,UAC7B,MAAM,OAAO,iBAAiB;AAAA;AAAA,EAIpC,OAAO,UAAU;AAAA,IACf;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ;AAAA,IACV,OAAO,QAAQ,cAAc,QAAS,CAAC,KAAK;AAAA,MAC1C,OAAO,IAAI,SAAS,KAAK,aAAa,GAAG,IAAI,OAAO,GAAG;AAAA;AAAA,EAE3D,EAAmC,SAAI,CAAC,QAAQ,IAAI,sBAAsB;AAAA,IACxE,IAAI;AAAA,MACF,MAAM;AAAA,MAEN,OAAO,QAAQ,cAAc,QAAS,CAAC,KAAK;AAAA,QAC1C,OAAO,IAAI,SAAS,KAAK,aAAa,GAAG,IAAI,YAAY,GAAG;AAAA;AAAA,MAE9D,OAAO,GAAG;AAAA,EAGd;AAAA;;;;ECrJA,MAAQ;AAAA,EAER,IAAM;AAAA,EACN;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAEF,MAAQ,QAAQ,eAAe;AAAA,EAC/B,MAAQ,mBAAmB;AAAA,EAE3B,IAAM,aAAa,OAAO,OAAO;AAAA,EAEjC,IAAM,WAAW;AAAA,EACjB,IAAM,wBAAwB;AAAA,EAC9B,IAAM,wBAAwB;AAAA,EAC9B,IAAM,WAAW;AAAA,EACjB,IAAM,WAAW;AAAA,EACjB,IAAM,YAAY;AAAA,EAClB,IAAM,cAAc;AAAA;AAAA,EAOpB,MAAM,iBAAiB,SAAS;AAAA,IAiB9B,WAAW,CAAC,UAAU,CAAC,GAAG;AAAA,MACxB,MAAM;AAAA,MAEN,KAAK,0BACH,QAAQ,2BAA2B,YAC/B,QAAQ,yBACR;AAAA,MACN,KAAK,cAAc,QAAQ,cAAc,aAAa;AAAA,MACtD,KAAK,cAAc,QAAQ,cAAc,CAAC;AAAA,MAC1C,KAAK,YAAY,CAAC,CAAC,QAAQ;AAAA,MAC3B,KAAK,cAAc,QAAQ,aAAa;AAAA,MACxC,KAAK,sBAAsB,CAAC,CAAC,QAAQ;AAAA,MACrC,KAAK,cAAc;AAAA,MAEnB,KAAK,iBAAiB;AAAA,MACtB,KAAK,WAAW,CAAC;AAAA,MAEjB,KAAK,cAAc;AAAA,MACnB,KAAK,iBAAiB;AAAA,MACtB,KAAK,QAAQ;AAAA,MACb,KAAK,cAAc;AAAA,MACnB,KAAK,UAAU;AAAA,MACf,KAAK,OAAO;AAAA,MACZ,KAAK,UAAU;AAAA,MAEf,KAAK,sBAAsB;AAAA,MAC3B,KAAK,iBAAiB;AAAA,MACtB,KAAK,aAAa,CAAC;AAAA,MAEnB,KAAK,WAAW;AAAA,MAChB,KAAK,QAAQ;AAAA,MACb,KAAK,SAAS;AAAA;AAAA,IAWhB,MAAM,CAAC,OAAO,UAAU,IAAI;AAAA,MAC1B,IAAI,KAAK,YAAY,KAAQ,KAAK,UAAU;AAAA,QAAU,OAAO,GAAG;AAAA,MAEhE,KAAK,kBAAkB,MAAM;AAAA,MAC7B,KAAK,SAAS,KAAK,KAAK;AAAA,MACxB,KAAK,UAAU,EAAE;AAAA;AAAA,IAUnB,OAAO,CAAC,GAAG;AAAA,MACT,KAAK,kBAAkB;AAAA,MAEvB,IAAI,MAAM,KAAK,SAAS,GAAG;AAAA,QAAQ,OAAO,KAAK,SAAS,MAAM;AAAA,MAE9D,IAAI,IAAI,KAAK,SAAS,GAAG,QAAQ;AAAA,QAC/B,MAAM,MAAM,KAAK,SAAS;AAAA,QAC1B,KAAK,SAAS,KAAK,IAAI,WACrB,IAAI,QACJ,IAAI,aAAa,GACjB,IAAI,SAAS,CACf;AAAA,QAEA,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,CAAC;AAAA,MACrD;AAAA,MAEA,MAAM,MAAM,OAAO,YAAY,CAAC;AAAA,MAEhC,GAAG;AAAA,QACD,MAAM,MAAM,KAAK,SAAS;AAAA,QAC1B,MAAM,SAAS,IAAI,SAAS;AAAA,QAE5B,IAAI,KAAK,IAAI,QAAQ;AAAA,UACnB,IAAI,IAAI,KAAK,SAAS,MAAM,GAAG,MAAM;AAAA,QACvC,EAAO;AAAA,UACL,IAAI,IAAI,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,CAAC,GAAG,MAAM;AAAA,UAC7D,KAAK,SAAS,KAAK,IAAI,WACrB,IAAI,QACJ,IAAI,aAAa,GACjB,IAAI,SAAS,CACf;AAAA;AAAA,QAGF,KAAK,IAAI;AAAA,MACX,SAAS,IAAI;AAAA,MAEb,OAAO;AAAA;AAAA,IAST,SAAS,CAAC,IAAI;AAAA,MACZ,KAAK,QAAQ;AAAA,MAEb,GAAG;AAAA,QACD,QAAQ,KAAK;AAAA,eACN;AAAA,YACH,KAAK,QAAQ,EAAE;AAAA,YACf;AAAA,eACG;AAAA,YACH,KAAK,mBAAmB,EAAE;AAAA,YAC1B;AAAA,eACG;AAAA,YACH,KAAK,mBAAmB,EAAE;AAAA,YAC1B;AAAA,eACG;AAAA,YACH,KAAK,QAAQ;AAAA,YACb;AAAA,eACG;AAAA,YACH,KAAK,QAAQ,EAAE;AAAA,YACf;AAAA,eACG;AAAA,eACA;AAAA,YACH,KAAK,QAAQ;AAAA,YACb;AAAA;AAAA,MAEN,SAAS,KAAK;AAAA,MAEd,IAAI,CAAC,KAAK;AAAA,QAAU,GAAG;AAAA;AAAA,IASzB,OAAO,CAAC,IAAI;AAAA,MACV,IAAI,KAAK,iBAAiB,GAAG;AAAA,QAC3B,KAAK,QAAQ;AAAA,QACb;AAAA,MACF;AAAA,MAEA,MAAM,MAAM,KAAK,QAAQ,CAAC;AAAA,MAE1B,KAAK,IAAI,KAAK,QAAU,GAAM;AAAA,QAC5B,MAAM,QAAQ,KAAK,YACjB,YACA,+BACA,MACA,MACA,2BACF;AAAA,QAEA,GAAG,KAAK;AAAA,QACR;AAAA,MACF;AAAA,MAEA,MAAM,cAAc,IAAI,KAAK,QAAU;AAAA,MAEvC,IAAI,cAAc,CAAC,KAAK,YAAY,kBAAkB,gBAAgB;AAAA,QACpE,MAAM,QAAQ,KAAK,YACjB,YACA,sBACA,MACA,MACA,yBACF;AAAA,QAEA,GAAG,KAAK;AAAA,QACR;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ,IAAI,KAAK,SAAU;AAAA,MAChC,KAAK,UAAU,IAAI,KAAK;AAAA,MACxB,KAAK,iBAAiB,IAAI,KAAK;AAAA,MAE/B,IAAI,KAAK,YAAY,GAAM;AAAA,QACzB,IAAI,YAAY;AAAA,UACd,MAAM,QAAQ,KAAK,YACjB,YACA,sBACA,MACA,MACA,yBACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,QAEA,IAAI,CAAC,KAAK,aAAa;AAAA,UACrB,MAAM,QAAQ,KAAK,YACjB,YACA,oBACA,MACA,MACA,uBACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,QAEA,KAAK,UAAU,KAAK;AAAA,MACtB,EAAO,SAAI,KAAK,YAAY,KAAQ,KAAK,YAAY,GAAM;AAAA,QACzD,IAAI,KAAK,aAAa;AAAA,UACpB,MAAM,QAAQ,KAAK,YACjB,YACA,kBAAkB,KAAK,WACvB,MACA,MACA,uBACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,QAEA,KAAK,cAAc;AAAA,MACrB,EAAO,SAAI,KAAK,UAAU,KAAQ,KAAK,UAAU,IAAM;AAAA,QACrD,IAAI,CAAC,KAAK,MAAM;AAAA,UACd,MAAM,QAAQ,KAAK,YACjB,YACA,mBACA,MACA,MACA,qBACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,QAEA,IAAI,YAAY;AAAA,UACd,MAAM,QAAQ,KAAK,YACjB,YACA,sBACA,MACA,MACA,yBACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,QAEA,IACE,KAAK,iBAAiB,OACrB,KAAK,YAAY,KAAQ,KAAK,mBAAmB,GAClD;AAAA,UACA,MAAM,QAAQ,KAAK,YACjB,YACA,0BAA0B,KAAK,kBAC/B,MACA,MACA,uCACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,MACF,EAAO;AAAA,QACL,MAAM,QAAQ,KAAK,YACjB,YACA,kBAAkB,KAAK,WACvB,MACA,MACA,uBACF;AAAA,QAEA,GAAG,KAAK;AAAA,QACR;AAAA;AAAA,MAGF,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK;AAAA,QAAa,KAAK,cAAc,KAAK;AAAA,MAC7D,KAAK,WAAW,IAAI,KAAK,SAAU;AAAA,MAEnC,IAAI,KAAK,WAAW;AAAA,QAClB,IAAI,CAAC,KAAK,SAAS;AAAA,UACjB,MAAM,QAAQ,KAAK,YACjB,YACA,oBACA,MACA,MACA,sBACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,MACF,EAAO,SAAI,KAAK,SAAS;AAAA,QACvB,MAAM,QAAQ,KAAK,YACjB,YACA,sBACA,MACA,MACA,wBACF;AAAA,QAEA,GAAG,KAAK;AAAA,QACR;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,mBAAmB;AAAA,QAAK,KAAK,SAAS;AAAA,MAC1C,SAAI,KAAK,mBAAmB;AAAA,QAAK,KAAK,SAAS;AAAA,MAC/C;AAAA,aAAK,WAAW,EAAE;AAAA;AAAA,IASzB,kBAAkB,CAAC,IAAI;AAAA,MACrB,IAAI,KAAK,iBAAiB,GAAG;AAAA,QAC3B,KAAK,QAAQ;AAAA,QACb;AAAA,MACF;AAAA,MAEA,KAAK,iBAAiB,KAAK,QAAQ,CAAC,EAAE,aAAa,CAAC;AAAA,MACpD,KAAK,WAAW,EAAE;AAAA;AAAA,IASpB,kBAAkB,CAAC,IAAI;AAAA,MACrB,IAAI,KAAK,iBAAiB,GAAG;AAAA,QAC3B,KAAK,QAAQ;AAAA,QACb;AAAA,MACF;AAAA,MAEA,MAAM,MAAM,KAAK,QAAQ,CAAC;AAAA,MAC1B,MAAM,MAAM,IAAI,aAAa,CAAC;AAAA,MAM9B,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG;AAAA,QAClC,MAAM,QAAQ,KAAK,YACjB,YACA,0DACA,OACA,MACA,wCACF;AAAA,QAEA,GAAG,KAAK;AAAA,QACR;AAAA,MACF;AAAA,MAEA,KAAK,iBAAiB,MAAM,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,aAAa,CAAC;AAAA,MAChE,KAAK,WAAW,EAAE;AAAA;AAAA,IASpB,UAAU,CAAC,IAAI;AAAA,MACb,IAAI,KAAK,kBAAkB,KAAK,UAAU,GAAM;AAAA,QAC9C,KAAK,uBAAuB,KAAK;AAAA,QACjC,IAAI,KAAK,sBAAsB,KAAK,eAAe,KAAK,cAAc,GAAG;AAAA,UACvE,MAAM,QAAQ,KAAK,YACjB,YACA,6BACA,OACA,MACA,mCACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,KAAK;AAAA,QAAS,KAAK,SAAS;AAAA,MAC3B;AAAA,aAAK,SAAS;AAAA;AAAA,IAQrB,OAAO,GAAG;AAAA,MACR,IAAI,KAAK,iBAAiB,GAAG;AAAA,QAC3B,KAAK,QAAQ;AAAA,QACb;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ,KAAK,QAAQ,CAAC;AAAA,MAC3B,KAAK,SAAS;AAAA;AAAA,IAShB,OAAO,CAAC,IAAI;AAAA,MACV,IAAI,OAAO;AAAA,MAEX,IAAI,KAAK,gBAAgB;AAAA,QACvB,IAAI,KAAK,iBAAiB,KAAK,gBAAgB;AAAA,UAC7C,KAAK,QAAQ;AAAA,UACb;AAAA,QACF;AAAA,QAEA,OAAO,KAAK,QAAQ,KAAK,cAAc;AAAA,QAEvC,IACE,KAAK,YACJ,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,QAAQ,GACpE;AAAA,UACA,OAAO,MAAM,KAAK,KAAK;AAAA,QACzB;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,UAAU,GAAM;AAAA,QACvB,KAAK,eAAe,MAAM,EAAE;AAAA,QAC5B;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,aAAa;AAAA,QACpB,KAAK,SAAS;AAAA,QACd,KAAK,WAAW,MAAM,EAAE;AAAA,QACxB;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,QAAQ;AAAA,QAKf,KAAK,iBAAiB,KAAK;AAAA,QAC3B,KAAK,WAAW,KAAK,IAAI;AAAA,MAC3B;AAAA,MAEA,KAAK,YAAY,EAAE;AAAA;AAAA,IAUrB,UAAU,CAAC,MAAM,IAAI;AAAA,MACnB,MAAM,oBAAoB,KAAK,YAAY,kBAAkB;AAAA,MAE7D,kBAAkB,WAAW,MAAM,KAAK,MAAM,CAAC,KAAK,QAAQ;AAAA,QAC1D,IAAI;AAAA,UAAK,OAAO,GAAG,GAAG;AAAA,QAEtB,IAAI,IAAI,QAAQ;AAAA,UACd,KAAK,kBAAkB,IAAI;AAAA,UAC3B,IAAI,KAAK,iBAAiB,KAAK,eAAe,KAAK,cAAc,GAAG;AAAA,YAClE,MAAM,QAAQ,KAAK,YACjB,YACA,6BACA,OACA,MACA,mCACF;AAAA,YAEA,GAAG,KAAK;AAAA,YACR;AAAA,UACF;AAAA,UAEA,KAAK,WAAW,KAAK,GAAG;AAAA,QAC1B;AAAA,QAEA,KAAK,YAAY,EAAE;AAAA,QACnB,IAAI,KAAK,WAAW;AAAA,UAAU,KAAK,UAAU,EAAE;AAAA,OAChD;AAAA;AAAA,IASH,WAAW,CAAC,IAAI;AAAA,MACd,IAAI,CAAC,KAAK,MAAM;AAAA,QACd,KAAK,SAAS;AAAA,QACd;AAAA,MACF;AAAA,MAEA,MAAM,gBAAgB,KAAK;AAAA,MAC3B,MAAM,YAAY,KAAK;AAAA,MAEvB,KAAK,sBAAsB;AAAA,MAC3B,KAAK,iBAAiB;AAAA,MACtB,KAAK,cAAc;AAAA,MACnB,KAAK,aAAa,CAAC;AAAA,MAEnB,IAAI,KAAK,YAAY,GAAG;AAAA,QACtB,IAAI;AAAA,QAEJ,IAAI,KAAK,gBAAgB,cAAc;AAAA,UACrC,OAAO,OAAO,WAAW,aAAa;AAAA,QACxC,EAAO,SAAI,KAAK,gBAAgB,eAAe;AAAA,UAC7C,OAAO,cAAc,OAAO,WAAW,aAAa,CAAC;AAAA,QACvD,EAAO,SAAI,KAAK,gBAAgB,QAAQ;AAAA,UACtC,OAAO,IAAI,KAAK,SAAS;AAAA,QAC3B,EAAO;AAAA,UACL,OAAO;AAAA;AAAA,QAGT,IAAI,KAAK,yBAAyB;AAAA,UAChC,KAAK,KAAK,WAAW,MAAM,IAAI;AAAA,UAC/B,KAAK,SAAS;AAAA,QAChB,EAAO;AAAA,UACL,KAAK,SAAS;AAAA,UACd,aAAa,MAAM;AAAA,YACjB,KAAK,KAAK,WAAW,MAAM,IAAI;AAAA,YAC/B,KAAK,SAAS;AAAA,YACd,KAAK,UAAU,EAAE;AAAA,WAClB;AAAA;AAAA,MAEL,EAAO;AAAA,QACL,MAAM,MAAM,OAAO,WAAW,aAAa;AAAA,QAE3C,IAAI,CAAC,KAAK,uBAAuB,CAAC,YAAY,GAAG,GAAG;AAAA,UAClD,MAAM,QAAQ,KAAK,YACjB,OACA,0BACA,MACA,MACA,qBACF;AAAA,UAEA,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,QAEA,IAAI,KAAK,WAAW,aAAa,KAAK,yBAAyB;AAAA,UAC7D,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UAC/B,KAAK,SAAS;AAAA,QAChB,EAAO;AAAA,UACL,KAAK,SAAS;AAAA,UACd,aAAa,MAAM;AAAA,YACjB,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,YAC/B,KAAK,SAAS;AAAA,YACd,KAAK,UAAU,EAAE;AAAA,WAClB;AAAA;AAAA;AAAA;AAAA,IAYP,cAAc,CAAC,MAAM,IAAI;AAAA,MACvB,IAAI,KAAK,YAAY,GAAM;AAAA,QACzB,IAAI,KAAK,WAAW,GAAG;AAAA,UACrB,KAAK,QAAQ;AAAA,UACb,KAAK,KAAK,YAAY,MAAM,YAAY;AAAA,UACxC,KAAK,IAAI;AAAA,QACX,EAAO;AAAA,UACL,MAAM,OAAO,KAAK,aAAa,CAAC;AAAA,UAEhC,IAAI,CAAC,kBAAkB,IAAI,GAAG;AAAA,YAC5B,MAAM,QAAQ,KAAK,YACjB,YACA,uBAAuB,QACvB,MACA,MACA,2BACF;AAAA,YAEA,GAAG,KAAK;AAAA,YACR;AAAA,UACF;AAAA,UAEA,MAAM,MAAM,IAAI,WACd,KAAK,QACL,KAAK,aAAa,GAClB,KAAK,SAAS,CAChB;AAAA,UAEA,IAAI,CAAC,KAAK,uBAAuB,CAAC,YAAY,GAAG,GAAG;AAAA,YAClD,MAAM,QAAQ,KAAK,YACjB,OACA,0BACA,MACA,MACA,qBACF;AAAA,YAEA,GAAG,KAAK;AAAA,YACR;AAAA,UACF;AAAA,UAEA,KAAK,QAAQ;AAAA,UACb,KAAK,KAAK,YAAY,MAAM,GAAG;AAAA,UAC/B,KAAK,IAAI;AAAA;AAAA,QAGX,KAAK,SAAS;AAAA,QACd;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,yBAAyB;AAAA,QAChC,KAAK,KAAK,KAAK,YAAY,IAAO,SAAS,QAAQ,IAAI;AAAA,QACvD,KAAK,SAAS;AAAA,MAChB,EAAO;AAAA,QACL,KAAK,SAAS;AAAA,QACd,aAAa,MAAM;AAAA,UACjB,KAAK,KAAK,KAAK,YAAY,IAAO,SAAS,QAAQ,IAAI;AAAA,UACvD,KAAK,SAAS;AAAA,UACd,KAAK,UAAU,EAAE;AAAA,SAClB;AAAA;AAAA;AAAA,IAgBL,WAAW,CAAC,WAAW,SAAS,QAAQ,YAAY,WAAW;AAAA,MAC7D,KAAK,QAAQ;AAAA,MACb,KAAK,WAAW;AAAA,MAEhB,MAAM,MAAM,IAAI,UACd,SAAS,4BAA4B,YAAY,OACnD;AAAA,MAEA,MAAM,kBAAkB,KAAK,KAAK,WAAW;AAAA,MAC7C,IAAI,OAAO;AAAA,MACX,IAAI,eAAe;AAAA,MACnB,OAAO;AAAA;AAAA,EAEX;AAAA,EAEA,OAAO,UAAU;AAAA;;;;EC7rBjB,MAAQ;AAAA,EACR,MAAQ;AAAA,EAER,IAAM;AAAA,EACN,MAAQ,cAAc,YAAY;AAAA,EAClC,MAAQ,QAAQ;AAAA,EAChB,MAAQ,MAAM,WAAW;AAAA,EAEzB,IAAM,cAAc,OAAO,aAAa;AAAA,EACxC,IAAM,aAAa,OAAO,MAAM,CAAC;AAAA,EACjC,IAAM,mBAAmB,IAAI;AAAA,EAC7B,IAAI;AAAA,EACJ,IAAI,oBAAoB;AAAA,EAExB,IAAM,UAAU;AAAA,EAChB,IAAM,YAAY;AAAA,EAClB,IAAM,gBAAgB;AAAA;AAAA,EAKtB,MAAM,OAAO;AAAA,IASX,WAAW,CAAC,QAAQ,YAAY,cAAc;AAAA,MAC5C,KAAK,cAAc,cAAc,CAAC;AAAA,MAElC,IAAI,cAAc;AAAA,QAChB,KAAK,gBAAgB;AAAA,QACrB,KAAK,cAAc,OAAO,MAAM,CAAC;AAAA,MACnC;AAAA,MAEA,KAAK,UAAU;AAAA,MAEf,KAAK,iBAAiB;AAAA,MACtB,KAAK,YAAY;AAAA,MAEjB,KAAK,iBAAiB;AAAA,MACtB,KAAK,SAAS,CAAC;AAAA,MACf,KAAK,SAAS;AAAA,MACd,KAAK,UAAU;AAAA,MACf,KAAK,cAAc;AAAA;AAAA,WAwBd,KAAK,CAAC,MAAM,SAAS;AAAA,MAC1B,IAAI;AAAA,MACJ,IAAI,QAAQ;AAAA,MACZ,IAAI,SAAS;AAAA,MACb,IAAI,cAAc;AAAA,MAElB,IAAI,QAAQ,MAAM;AAAA,QAChB,OAAO,QAAQ,cAAc;AAAA,QAE7B,IAAI,QAAQ,cAAc;AAAA,UACxB,QAAQ,aAAa,IAAI;AAAA,QAC3B,EAAO;AAAA,UACL,IAAI,sBAAsB,kBAAkB;AAAA,YAE1C,IAAI,eAAe,WAAW;AAAA,cAK5B,aAAa,OAAO,MAAM,gBAAgB;AAAA,YAC5C;AAAA,YAEA,eAAe,YAAY,GAAG,gBAAgB;AAAA,YAC9C,oBAAoB;AAAA,UACtB;AAAA,UAEA,KAAK,KAAK,WAAW;AAAA,UACrB,KAAK,KAAK,WAAW;AAAA,UACrB,KAAK,KAAK,WAAW;AAAA,UACrB,KAAK,KAAK,WAAW;AAAA;AAAA,QAGvB,eAAe,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,QAAQ;AAAA,QAC1D,SAAS;AAAA,MACX;AAAA,MAEA,IAAI;AAAA,MAEJ,IAAI,OAAO,SAAS,UAAU;AAAA,QAC5B,KACG,CAAC,QAAQ,QAAQ,gBAClB,QAAQ,iBAAiB,WACzB;AAAA,UACA,aAAa,QAAQ;AAAA,QACvB,EAAO;AAAA,UACL,OAAO,OAAO,KAAK,IAAI;AAAA,UACvB,aAAa,KAAK;AAAA;AAAA,MAEtB,EAAO;AAAA,QACL,aAAa,KAAK;AAAA,QAClB,QAAQ,QAAQ,QAAQ,QAAQ,YAAY,CAAC;AAAA;AAAA,MAG/C,IAAI,gBAAgB;AAAA,MAEpB,IAAI,cAAc,OAAO;AAAA,QACvB,UAAU;AAAA,QACV,gBAAgB;AAAA,MAClB,EAAO,SAAI,aAAa,KAAK;AAAA,QAC3B,UAAU;AAAA,QACV,gBAAgB;AAAA,MAClB;AAAA,MAEA,MAAM,SAAS,OAAO,YAAY,QAAQ,aAAa,SAAS,MAAM;AAAA,MAEtE,OAAO,KAAK,QAAQ,MAAM,QAAQ,SAAS,MAAO,QAAQ;AAAA,MAC1D,IAAI,QAAQ;AAAA,QAAM,OAAO,MAAM;AAAA,MAE/B,OAAO,KAAK;AAAA,MAEZ,IAAI,kBAAkB,KAAK;AAAA,QACzB,OAAO,cAAc,YAAY,CAAC;AAAA,MACpC,EAAO,SAAI,kBAAkB,KAAK;AAAA,QAChC,OAAO,KAAK,OAAO,KAAK;AAAA,QACxB,OAAO,YAAY,YAAY,GAAG,CAAC;AAAA,MACrC;AAAA,MAEA,IAAI,CAAC,QAAQ;AAAA,QAAM,OAAO,CAAC,QAAQ,IAAI;AAAA,MAEvC,OAAO,MAAM;AAAA,MACb,OAAO,SAAS,KAAK,KAAK;AAAA,MAC1B,OAAO,SAAS,KAAK,KAAK;AAAA,MAC1B,OAAO,SAAS,KAAK,KAAK;AAAA,MAC1B,OAAO,SAAS,KAAK,KAAK;AAAA,MAE1B,IAAI;AAAA,QAAa,OAAO,CAAC,QAAQ,IAAI;AAAA,MAErC,IAAI,OAAO;AAAA,QACT,UAAU,MAAM,MAAM,QAAQ,QAAQ,UAAU;AAAA,QAChD,OAAO,CAAC,MAAM;AAAA,MAChB;AAAA,MAEA,UAAU,MAAM,MAAM,MAAM,GAAG,UAAU;AAAA,MACzC,OAAO,CAAC,QAAQ,IAAI;AAAA;AAAA,IAYtB,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,MAC1B,IAAI;AAAA,MAEJ,IAAI,SAAS,WAAW;AAAA,QACtB,MAAM;AAAA,MACR,EAAO,SAAI,OAAO,SAAS,YAAY,CAAC,kBAAkB,IAAI,GAAG;AAAA,QAC/D,MAAM,IAAI,UAAU,kDAAkD;AAAA,MACxE,EAAO,SAAI,SAAS,aAAa,CAAC,KAAK,QAAQ;AAAA,QAC7C,MAAM,OAAO,YAAY,CAAC;AAAA,QAC1B,IAAI,cAAc,MAAM,CAAC;AAAA,MAC3B,EAAO;AAAA,QACL,MAAM,SAAS,OAAO,WAAW,IAAI;AAAA,QAErC,IAAI,SAAS,KAAK;AAAA,UAChB,MAAM,IAAI,WAAW,gDAAgD;AAAA,QACvE;AAAA,QAEA,MAAM,OAAO,YAAY,IAAI,MAAM;AAAA,QACnC,IAAI,cAAc,MAAM,CAAC;AAAA,QAEzB,IAAI,OAAO,SAAS,UAAU;AAAA,UAC5B,IAAI,MAAM,MAAM,CAAC;AAAA,QACnB,EAAO;AAAA,UACL,IAAI,IAAI,MAAM,CAAC;AAAA;AAAA;AAAA,MAInB,MAAM,UAAU;AAAA,SACb,cAAc,IAAI;AAAA,QACnB,KAAK;AAAA,QACL,cAAc,KAAK;AAAA,QACnB;AAAA,QACA,YAAY,KAAK;AAAA,QACjB,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,MAEA,IAAI,KAAK,WAAW,SAAS;AAAA,QAC3B,KAAK,QAAQ,CAAC,KAAK,UAAU,KAAK,OAAO,SAAS,EAAE,CAAC;AAAA,MACvD,EAAO;AAAA,QACL,KAAK,UAAU,OAAO,MAAM,KAAK,OAAO,GAAG,EAAE;AAAA;AAAA;AAAA,IAYjD,IAAI,CAAC,MAAM,MAAM,IAAI;AAAA,MACnB,IAAI;AAAA,MACJ,IAAI;AAAA,MAEJ,IAAI,OAAO,SAAS,UAAU;AAAA,QAC5B,aAAa,OAAO,WAAW,IAAI;AAAA,QACnC,WAAW;AAAA,MACb,EAAO,SAAI,OAAO,IAAI,GAAG;AAAA,QACvB,aAAa,KAAK;AAAA,QAClB,WAAW;AAAA,MACb,EAAO;AAAA,QACL,OAAO,SAAS,IAAI;AAAA,QACpB,aAAa,KAAK;AAAA,QAClB,WAAW,SAAS;AAAA;AAAA,MAGtB,IAAI,aAAa,KAAK;AAAA,QACpB,MAAM,IAAI,WAAW,kDAAkD;AAAA,MACzE;AAAA,MAEA,MAAM,UAAU;AAAA,SACb,cAAc;AAAA,QACf,KAAK;AAAA,QACL,cAAc,KAAK;AAAA,QACnB;AAAA,QACA,YAAY,KAAK;AAAA,QACjB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MAEA,IAAI,OAAO,IAAI,GAAG;AAAA,QAChB,IAAI,KAAK,WAAW,SAAS;AAAA,UAC3B,KAAK,QAAQ,CAAC,KAAK,aAAa,MAAM,OAAO,SAAS,EAAE,CAAC;AAAA,QAC3D,EAAO;AAAA,UACL,KAAK,YAAY,MAAM,OAAO,SAAS,EAAE;AAAA;AAAA,MAE7C,EAAO,SAAI,KAAK,WAAW,SAAS;AAAA,QAClC,KAAK,QAAQ,CAAC,KAAK,UAAU,MAAM,OAAO,SAAS,EAAE,CAAC;AAAA,MACxD,EAAO;AAAA,QACL,KAAK,UAAU,OAAO,MAAM,MAAM,OAAO,GAAG,EAAE;AAAA;AAAA;AAAA,IAYlD,IAAI,CAAC,MAAM,MAAM,IAAI;AAAA,MACnB,IAAI;AAAA,MACJ,IAAI;AAAA,MAEJ,IAAI,OAAO,SAAS,UAAU;AAAA,QAC5B,aAAa,OAAO,WAAW,IAAI;AAAA,QACnC,WAAW;AAAA,MACb,EAAO,SAAI,OAAO,IAAI,GAAG;AAAA,QACvB,aAAa,KAAK;AAAA,QAClB,WAAW;AAAA,MACb,EAAO;AAAA,QACL,OAAO,SAAS,IAAI;AAAA,QACpB,aAAa,KAAK;AAAA,QAClB,WAAW,SAAS;AAAA;AAAA,MAGtB,IAAI,aAAa,KAAK;AAAA,QACpB,MAAM,IAAI,WAAW,kDAAkD;AAAA,MACzE;AAAA,MAEA,MAAM,UAAU;AAAA,SACb,cAAc;AAAA,QACf,KAAK;AAAA,QACL,cAAc,KAAK;AAAA,QACnB;AAAA,QACA,YAAY,KAAK;AAAA,QACjB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MAEA,IAAI,OAAO,IAAI,GAAG;AAAA,QAChB,IAAI,KAAK,WAAW,SAAS;AAAA,UAC3B,KAAK,QAAQ,CAAC,KAAK,aAAa,MAAM,OAAO,SAAS,EAAE,CAAC;AAAA,QAC3D,EAAO;AAAA,UACL,KAAK,YAAY,MAAM,OAAO,SAAS,EAAE;AAAA;AAAA,MAE7C,EAAO,SAAI,KAAK,WAAW,SAAS;AAAA,QAClC,KAAK,QAAQ,CAAC,KAAK,UAAU,MAAM,OAAO,SAAS,EAAE,CAAC;AAAA,MACxD,EAAO;AAAA,QACL,KAAK,UAAU,OAAO,MAAM,MAAM,OAAO,GAAG,EAAE;AAAA;AAAA;AAAA,IAoBlD,IAAI,CAAC,MAAM,SAAS,IAAI;AAAA,MACtB,MAAM,oBAAoB,KAAK,YAAY,kBAAkB;AAAA,MAC7D,IAAI,SAAS,QAAQ,SAAS,IAAI;AAAA,MAClC,IAAI,OAAO,QAAQ;AAAA,MAEnB,IAAI;AAAA,MACJ,IAAI;AAAA,MAEJ,IAAI,OAAO,SAAS,UAAU;AAAA,QAC5B,aAAa,OAAO,WAAW,IAAI;AAAA,QACnC,WAAW;AAAA,MACb,EAAO,SAAI,OAAO,IAAI,GAAG;AAAA,QACvB,aAAa,KAAK;AAAA,QAClB,WAAW;AAAA,MACb,EAAO;AAAA,QACL,OAAO,SAAS,IAAI;AAAA,QACpB,aAAa,KAAK;AAAA,QAClB,WAAW,SAAS;AAAA;AAAA,MAGtB,IAAI,KAAK,gBAAgB;AAAA,QACvB,KAAK,iBAAiB;AAAA,QACtB,IACE,QACA,qBACA,kBAAkB,OAChB,kBAAkB,YACd,+BACA,+BAEN;AAAA,UACA,OAAO,cAAc,kBAAkB;AAAA,QACzC;AAAA,QACA,KAAK,YAAY;AAAA,MACnB,EAAO;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA;AAAA,MAGX,IAAI,QAAQ;AAAA,QAAK,KAAK,iBAAiB;AAAA,MAEvC,MAAM,OAAO;AAAA,SACV,cAAc;AAAA,QACf,KAAK,QAAQ;AAAA,QACb,cAAc,KAAK;AAAA,QACnB,MAAM,QAAQ;AAAA,QACd,YAAY,KAAK;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA,IAAI,OAAO,IAAI,GAAG;AAAA,QAChB,IAAI,KAAK,WAAW,SAAS;AAAA,UAC3B,KAAK,QAAQ,CAAC,KAAK,aAAa,MAAM,KAAK,WAAW,MAAM,EAAE,CAAC;AAAA,QACjE,EAAO;AAAA,UACL,KAAK,YAAY,MAAM,KAAK,WAAW,MAAM,EAAE;AAAA;AAAA,MAEnD,EAAO,SAAI,KAAK,WAAW,SAAS;AAAA,QAClC,KAAK,QAAQ,CAAC,KAAK,UAAU,MAAM,KAAK,WAAW,MAAM,EAAE,CAAC;AAAA,MAC9D,EAAO;AAAA,QACL,KAAK,SAAS,MAAM,KAAK,WAAW,MAAM,EAAE;AAAA;AAAA;AAAA,IA2BhD,WAAW,CAAC,MAAM,UAAU,SAAS,IAAI;AAAA,MACvC,KAAK,kBAAkB,QAAQ;AAAA,MAC/B,KAAK,SAAS;AAAA,MAEd,KACG,YAAY,EACZ,KAAK,CAAC,gBAAgB;AAAA,QACrB,IAAI,KAAK,QAAQ,WAAW;AAAA,UAC1B,MAAM,MAAM,IAAI,MACd,qDACF;AAAA,UAOA,QAAQ,SAAS,eAAe,MAAM,KAAK,EAAE;AAAA,UAC7C;AAAA,QACF;AAAA,QAEA,KAAK,kBAAkB,QAAQ;AAAA,QAC/B,MAAM,OAAO,SAAS,WAAW;AAAA,QAEjC,IAAI,CAAC,UAAU;AAAA,UACb,KAAK,SAAS;AAAA,UACd,KAAK,UAAU,OAAO,MAAM,MAAM,OAAO,GAAG,EAAE;AAAA,UAC9C,KAAK,QAAQ;AAAA,QACf,EAAO;AAAA,UACL,KAAK,SAAS,MAAM,UAAU,SAAS,EAAE;AAAA;AAAA,OAE5C,EACA,MAAM,CAAC,QAAQ;AAAA,QAKd,QAAQ,SAAS,SAAS,MAAM,KAAK,EAAE;AAAA,OACxC;AAAA;AAAA,IA0BL,QAAQ,CAAC,MAAM,UAAU,SAAS,IAAI;AAAA,MACpC,IAAI,CAAC,UAAU;AAAA,QACb,KAAK,UAAU,OAAO,MAAM,MAAM,OAAO,GAAG,EAAE;AAAA,QAC9C;AAAA,MACF;AAAA,MAEA,MAAM,oBAAoB,KAAK,YAAY,kBAAkB;AAAA,MAE7D,KAAK,kBAAkB,QAAQ;AAAA,MAC/B,KAAK,SAAS;AAAA,MACd,kBAAkB,SAAS,MAAM,QAAQ,KAAK,CAAC,GAAG,QAAQ;AAAA,QACxD,IAAI,KAAK,QAAQ,WAAW;AAAA,UAC1B,MAAM,MAAM,IAAI,MACd,uDACF;AAAA,UAEA,cAAc,MAAM,KAAK,EAAE;AAAA,UAC3B;AAAA,QACF;AAAA,QAEA,KAAK,kBAAkB,QAAQ;AAAA,QAC/B,KAAK,SAAS;AAAA,QACd,QAAQ,WAAW;AAAA,QACnB,KAAK,UAAU,OAAO,MAAM,KAAK,OAAO,GAAG,EAAE;AAAA,QAC7C,KAAK,QAAQ;AAAA,OACd;AAAA;AAAA,IAQH,OAAO,GAAG;AAAA,MACR,OAAO,KAAK,WAAW,WAAW,KAAK,OAAO,QAAQ;AAAA,QACpD,MAAM,SAAS,KAAK,OAAO,MAAM;AAAA,QAEjC,KAAK,kBAAkB,OAAO,GAAG;AAAA,QACjC,QAAQ,MAAM,OAAO,IAAI,MAAM,OAAO,MAAM,CAAC,CAAC;AAAA,MAChD;AAAA;AAAA,IASF,OAAO,CAAC,QAAQ;AAAA,MACd,KAAK,kBAAkB,OAAO,GAAG;AAAA,MACjC,KAAK,OAAO,KAAK,MAAM;AAAA;AAAA,IAUzB,SAAS,CAAC,MAAM,IAAI;AAAA,MAClB,IAAI,KAAK,WAAW,GAAG;AAAA,QACrB,KAAK,QAAQ,KAAK;AAAA,QAClB,KAAK,QAAQ,MAAM,KAAK,EAAE;AAAA,QAC1B,KAAK,QAAQ,MAAM,KAAK,IAAI,EAAE;AAAA,QAC9B,KAAK,QAAQ,OAAO;AAAA,MACtB,EAAO;AAAA,QACL,KAAK,QAAQ,MAAM,KAAK,IAAI,EAAE;AAAA;AAAA;AAAA,EAGpC;AAAA,EAEA,OAAO,UAAU;AAAA,EAUjB,SAAS,aAAa,CAAC,QAAQ,KAAK,IAAI;AAAA,IACtC,IAAI,OAAO,OAAO;AAAA,MAAY,GAAG,GAAG;AAAA,IAEpC,SAAS,IAAI,EAAG,IAAI,OAAO,OAAO,QAAQ,KAAK;AAAA,MAC7C,MAAM,SAAS,OAAO,OAAO;AAAA,MAC7B,MAAM,WAAW,OAAO,OAAO,SAAS;AAAA,MAExC,IAAI,OAAO,aAAa;AAAA,QAAY,SAAS,GAAG;AAAA,IAClD;AAAA;AAAA,EAWF,SAAS,OAAO,CAAC,QAAQ,KAAK,IAAI;AAAA,IAChC,cAAc,QAAQ,KAAK,EAAE;AAAA,IAC7B,OAAO,QAAQ,GAAG;AAAA;AAAA;;;;ECtlBpB,MAAQ,sBAAsB;AAAA,EAE9B,IAAM,QAAQ,OAAO,OAAO;AAAA,EAC5B,IAAM,QAAQ,OAAO,OAAO;AAAA,EAC5B,IAAM,SAAS,OAAO,QAAQ;AAAA,EAC9B,IAAM,WAAW,OAAO,UAAU;AAAA,EAClC,IAAM,UAAU,OAAO,SAAS;AAAA,EAChC,IAAM,UAAU,OAAO,SAAS;AAAA,EAChC,IAAM,QAAQ,OAAO,OAAO;AAAA,EAC5B,IAAM,YAAY,OAAO,WAAW;AAAA;AAAA,EAKpC,MAAM,MAAM;AAAA,IAOV,WAAW,CAAC,MAAM;AAAA,MAChB,KAAK,WAAW;AAAA,MAChB,KAAK,SAAS;AAAA;AAAA,QAMZ,MAAM,GAAG;AAAA,MACX,OAAO,KAAK;AAAA;AAAA,QAMV,IAAI,GAAG;AAAA,MACT,OAAO,KAAK;AAAA;AAAA,EAEhB;AAAA,EAEA,OAAO,eAAe,MAAM,WAAW,UAAU,EAAE,YAAY,KAAK,CAAC;AAAA,EACrE,OAAO,eAAe,MAAM,WAAW,QAAQ,EAAE,YAAY,KAAK,CAAC;AAAA;AAAA,EAOnE,MAAM,mBAAmB,MAAM;AAAA,IAc7B,WAAW,CAAC,MAAM,UAAU,CAAC,GAAG;AAAA,MAC9B,MAAM,IAAI;AAAA,MAEV,KAAK,SAAS,QAAQ,SAAS,YAAY,IAAI,QAAQ;AAAA,MACvD,KAAK,WAAW,QAAQ,WAAW,YAAY,KAAK,QAAQ;AAAA,MAC5D,KAAK,aAAa,QAAQ,aAAa,YAAY,QAAQ,QAAQ;AAAA;AAAA,QAMjE,IAAI,GAAG;AAAA,MACT,OAAO,KAAK;AAAA;AAAA,QAMV,MAAM,GAAG;AAAA,MACX,OAAO,KAAK;AAAA;AAAA,QAMV,QAAQ,GAAG;AAAA,MACb,OAAO,KAAK;AAAA;AAAA,EAEhB;AAAA,EAEA,OAAO,eAAe,WAAW,WAAW,QAAQ,EAAE,YAAY,KAAK,CAAC;AAAA,EACxE,OAAO,eAAe,WAAW,WAAW,UAAU,EAAE,YAAY,KAAK,CAAC;AAAA,EAC1E,OAAO,eAAe,WAAW,WAAW,YAAY,EAAE,YAAY,KAAK,CAAC;AAAA;AAAA,EAO5E,MAAM,mBAAmB,MAAM;AAAA,IAU7B,WAAW,CAAC,MAAM,UAAU,CAAC,GAAG;AAAA,MAC9B,MAAM,IAAI;AAAA,MAEV,KAAK,UAAU,QAAQ,UAAU,YAAY,OAAO,QAAQ;AAAA,MAC5D,KAAK,YAAY,QAAQ,YAAY,YAAY,KAAK,QAAQ;AAAA;AAAA,QAM5D,KAAK,GAAG;AAAA,MACV,OAAO,KAAK;AAAA;AAAA,QAMV,OAAO,GAAG;AAAA,MACZ,OAAO,KAAK;AAAA;AAAA,EAEhB;AAAA,EAEA,OAAO,eAAe,WAAW,WAAW,SAAS,EAAE,YAAY,KAAK,CAAC;AAAA,EACzE,OAAO,eAAe,WAAW,WAAW,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA;AAAA,EAO3E,MAAM,qBAAqB,MAAM;AAAA,IAS/B,WAAW,CAAC,MAAM,UAAU,CAAC,GAAG;AAAA,MAC9B,MAAM,IAAI;AAAA,MAEV,KAAK,SAAS,QAAQ,SAAS,YAAY,OAAO,QAAQ;AAAA;AAAA,QAMxD,IAAI,GAAG;AAAA,MACT,OAAO,KAAK;AAAA;AAAA,EAEhB;AAAA,EAEA,OAAO,eAAe,aAAa,WAAW,QAAQ,EAAE,YAAY,KAAK,CAAC;AAAA,EAQ1E,IAAM,cAAc;AAAA,IAalB,gBAAgB,CAAC,MAAM,SAAS,UAAU,CAAC,GAAG;AAAA,MAC5C,WAAW,YAAY,KAAK,UAAU,IAAI,GAAG;AAAA,QAC3C,IACE,CAAC,QAAQ,yBACT,SAAS,eAAe,WACxB,CAAC,SAAS,uBACV;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI;AAAA,MAEJ,IAAI,SAAS,WAAW;AAAA,QACtB,UAAU,SAAS,SAAS,CAAC,MAAM,UAAU;AAAA,UAC3C,MAAM,QAAQ,IAAI,aAAa,WAAW;AAAA,YACxC,MAAM,WAAW,OAAO,KAAK,SAAS;AAAA,UACxC,CAAC;AAAA,UAED,MAAM,WAAW;AAAA,UACjB,aAAa,SAAS,MAAM,KAAK;AAAA;AAAA,MAErC,EAAO,SAAI,SAAS,SAAS;AAAA,QAC3B,UAAU,SAAS,OAAO,CAAC,MAAM,SAAS;AAAA,UACxC,MAAM,QAAQ,IAAI,WAAW,SAAS;AAAA,YACpC;AAAA,YACA,QAAQ,QAAQ,SAAS;AAAA,YACzB,UAAU,KAAK,uBAAuB,KAAK;AAAA,UAC7C,CAAC;AAAA,UAED,MAAM,WAAW;AAAA,UACjB,aAAa,SAAS,MAAM,KAAK;AAAA;AAAA,MAErC,EAAO,SAAI,SAAS,SAAS;AAAA,QAC3B,UAAU,SAAS,OAAO,CAAC,OAAO;AAAA,UAChC,MAAM,QAAQ,IAAI,WAAW,SAAS;AAAA,YACpC;AAAA,YACA,SAAS,MAAM;AAAA,UACjB,CAAC;AAAA,UAED,MAAM,WAAW;AAAA,UACjB,aAAa,SAAS,MAAM,KAAK;AAAA;AAAA,MAErC,EAAO,SAAI,SAAS,QAAQ;AAAA,QAC1B,UAAU,SAAS,MAAM,GAAG;AAAA,UAC1B,MAAM,QAAQ,IAAI,MAAM,MAAM;AAAA,UAE9B,MAAM,WAAW;AAAA,UACjB,aAAa,SAAS,MAAM,KAAK;AAAA;AAAA,MAErC,EAAO;AAAA,QACL;AAAA;AAAA,MAGF,QAAQ,wBAAwB,CAAC,CAAC,QAAQ;AAAA,MAC1C,QAAQ,aAAa;AAAA,MAErB,IAAI,QAAQ,MAAM;AAAA,QAChB,KAAK,KAAK,MAAM,OAAO;AAAA,MACzB,EAAO;AAAA,QACL,KAAK,GAAG,MAAM,OAAO;AAAA;AAAA;AAAA,IAWzB,mBAAmB,CAAC,MAAM,SAAS;AAAA,MACjC,WAAW,YAAY,KAAK,UAAU,IAAI,GAAG;AAAA,QAC3C,IAAI,SAAS,eAAe,WAAW,CAAC,SAAS,uBAAuB;AAAA,UACtE,KAAK,eAAe,MAAM,QAAQ;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA,EAEA,OAAO,UAAU;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAUA,SAAS,YAAY,CAAC,UAAU,SAAS,OAAO;AAAA,IAC9C,IAAI,OAAO,aAAa,YAAY,SAAS,aAAa;AAAA,MACxD,SAAS,YAAY,KAAK,UAAU,KAAK;AAAA,IAC3C,EAAO;AAAA,MACL,SAAS,KAAK,SAAS,KAAK;AAAA;AAAA;AAAA;;;;EC/RhC,MAAQ;AAAA,EAYR,SAAS,IAAI,CAAC,MAAM,MAAM,MAAM;AAAA,IAC9B,IAAI,KAAK,UAAU;AAAA,MAAW,KAAK,QAAQ,CAAC,IAAI;AAAA,IAC3C;AAAA,WAAK,MAAM,KAAK,IAAI;AAAA;AAAA,EAU3B,SAAS,KAAK,CAAC,QAAQ;AAAA,IACrB,MAAM,SAAS,OAAO,OAAO,IAAI;AAAA,IACjC,IAAI,SAAS,OAAO,OAAO,IAAI;AAAA,IAC/B,IAAI,eAAe;AAAA,IACnB,IAAI,aAAa;AAAA,IACjB,IAAI,WAAW;AAAA,IACf,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,QAAQ;AAAA,IACZ,IAAI,OAAO;AAAA,IACX,IAAI,MAAM;AAAA,IACV,IAAI,IAAI;AAAA,IAER,MAAO,IAAI,OAAO,QAAQ,KAAK;AAAA,MAC7B,OAAO,OAAO,WAAW,CAAC;AAAA,MAE1B,IAAI,kBAAkB,WAAW;AAAA,QAC/B,IAAI,QAAQ,MAAM,WAAW,UAAU,GAAG;AAAA,UACxC,IAAI,UAAU;AAAA,YAAI,QAAQ;AAAA,QAC5B,EAAO,SACL,MAAM,MACL,SAAS,MAAkB,SAAS,IACrC;AAAA,UACA,IAAI,QAAQ,MAAM,UAAU;AAAA,YAAI,MAAM;AAAA,QACxC,EAAO,SAAI,SAAS,MAAkB,SAAS,IAAgB;AAAA,UAC7D,IAAI,UAAU,IAAI;AAAA,YAChB,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA,UAC5D;AAAA,UAEA,IAAI,QAAQ;AAAA,YAAI,MAAM;AAAA,UACtB,MAAM,OAAO,OAAO,MAAM,OAAO,GAAG;AAAA,UACpC,IAAI,SAAS,IAAM;AAAA,YACjB,KAAK,QAAQ,MAAM,MAAM;AAAA,YACzB,SAAS,OAAO,OAAO,IAAI;AAAA,UAC7B,EAAO;AAAA,YACL,gBAAgB;AAAA;AAAA,UAGlB,QAAQ,MAAM;AAAA,QAChB,EAAO;AAAA,UACL,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA;AAAA,MAE9D,EAAO,SAAI,cAAc,WAAW;AAAA,QAClC,IAAI,QAAQ,MAAM,WAAW,UAAU,GAAG;AAAA,UACxC,IAAI,UAAU;AAAA,YAAI,QAAQ;AAAA,QAC5B,EAAO,SAAI,SAAS,MAAQ,SAAS,GAAM;AAAA,UACzC,IAAI,QAAQ,MAAM,UAAU;AAAA,YAAI,MAAM;AAAA,QACxC,EAAO,SAAI,SAAS,MAAQ,SAAS,IAAM;AAAA,UACzC,IAAI,UAAU,IAAI;AAAA,YAChB,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA,UAC5D;AAAA,UAEA,IAAI,QAAQ;AAAA,YAAI,MAAM;AAAA,UACtB,KAAK,QAAQ,OAAO,MAAM,OAAO,GAAG,GAAG,IAAI;AAAA,UAC3C,IAAI,SAAS,IAAM;AAAA,YACjB,KAAK,QAAQ,eAAe,MAAM;AAAA,YAClC,SAAS,OAAO,OAAO,IAAI;AAAA,YAC3B,gBAAgB;AAAA,UAClB;AAAA,UAEA,QAAQ,MAAM;AAAA,QAChB,EAAO,SAAI,SAAS,MAAkB,UAAU,MAAM,QAAQ,IAAI;AAAA,UAChE,YAAY,OAAO,MAAM,OAAO,CAAC;AAAA,UACjC,QAAQ,MAAM;AAAA,QAChB,EAAO;AAAA,UACL,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA;AAAA,MAE9D,EAAO;AAAA,QAML,IAAI,YAAY;AAAA,UACd,IAAI,WAAW,UAAU,GAAG;AAAA,YAC1B,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA,UAC5D;AAAA,UACA,IAAI,UAAU;AAAA,YAAI,QAAQ;AAAA,UACrB,SAAI,CAAC;AAAA,YAAc,eAAe;AAAA,UACvC,aAAa;AAAA,QACf,EAAO,SAAI,UAAU;AAAA,UACnB,IAAI,WAAW,UAAU,GAAG;AAAA,YAC1B,IAAI,UAAU;AAAA,cAAI,QAAQ;AAAA,UAC5B,EAAO,SAAI,SAAS,MAAkB,UAAU,IAAI;AAAA,YAClD,WAAW;AAAA,YACX,MAAM;AAAA,UACR,EAAO,SAAI,SAAS,IAAgB;AAAA,YAClC,aAAa;AAAA,UACf,EAAO;AAAA,YACL,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA;AAAA,QAE9D,EAAO,SAAI,SAAS,MAAQ,OAAO,WAAW,IAAI,CAAC,MAAM,IAAM;AAAA,UAC7D,WAAW;AAAA,QACb,EAAO,SAAI,QAAQ,MAAM,WAAW,UAAU,GAAG;AAAA,UAC/C,IAAI,UAAU;AAAA,YAAI,QAAQ;AAAA,QAC5B,EAAO,SAAI,UAAU,OAAO,SAAS,MAAQ,SAAS,IAAO;AAAA,UAC3D,IAAI,QAAQ;AAAA,YAAI,MAAM;AAAA,QACxB,EAAO,SAAI,SAAS,MAAQ,SAAS,IAAM;AAAA,UACzC,IAAI,UAAU,IAAI;AAAA,YAChB,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA,UAC5D;AAAA,UAEA,IAAI,QAAQ;AAAA,YAAI,MAAM;AAAA,UACtB,IAAI,QAAQ,OAAO,MAAM,OAAO,GAAG;AAAA,UACnC,IAAI,cAAc;AAAA,YAChB,QAAQ,MAAM,QAAQ,OAAO,EAAE;AAAA,YAC/B,eAAe;AAAA,UACjB;AAAA,UACA,KAAK,QAAQ,WAAW,KAAK;AAAA,UAC7B,IAAI,SAAS,IAAM;AAAA,YACjB,KAAK,QAAQ,eAAe,MAAM;AAAA,YAClC,SAAS,OAAO,OAAO,IAAI;AAAA,YAC3B,gBAAgB;AAAA,UAClB;AAAA,UAEA,YAAY;AAAA,UACZ,QAAQ,MAAM;AAAA,QAChB,EAAO;AAAA,UACL,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA;AAAA;AAAA,IAGhE;AAAA,IAEA,IAAI,UAAU,MAAM,YAAY,SAAS,MAAQ,SAAS,GAAM;AAAA,MAC9D,MAAM,IAAI,YAAY,yBAAyB;AAAA,IACjD;AAAA,IAEA,IAAI,QAAQ;AAAA,MAAI,MAAM;AAAA,IACtB,MAAM,QAAQ,OAAO,MAAM,OAAO,GAAG;AAAA,IACrC,IAAI,kBAAkB,WAAW;AAAA,MAC/B,KAAK,QAAQ,OAAO,MAAM;AAAA,IAC5B,EAAO;AAAA,MACL,IAAI,cAAc,WAAW;AAAA,QAC3B,KAAK,QAAQ,OAAO,IAAI;AAAA,MAC1B,EAAO,SAAI,cAAc;AAAA,QACvB,KAAK,QAAQ,WAAW,MAAM,QAAQ,OAAO,EAAE,CAAC;AAAA,MAClD,EAAO;AAAA,QACL,KAAK,QAAQ,WAAW,KAAK;AAAA;AAAA,MAE/B,KAAK,QAAQ,eAAe,MAAM;AAAA;AAAA,IAGpC,OAAO;AAAA;AAAA,EAUT,SAAS,MAAM,CAAC,YAAY;AAAA,IAC1B,OAAO,OAAO,KAAK,UAAU,EAC1B,IAAI,CAAC,cAAc;AAAA,MAClB,IAAI,iBAAiB,WAAW;AAAA,MAChC,IAAI,CAAC,MAAM,QAAQ,cAAc;AAAA,QAAG,iBAAiB,CAAC,cAAc;AAAA,MACpE,OAAO,eACJ,IAAI,CAAC,WAAW;AAAA,QACf,OAAO,CAAC,SAAS,EACd,OACC,OAAO,KAAK,MAAM,EAAE,IAAI,CAAC,MAAM;AAAA,UAC7B,IAAI,SAAS,OAAO;AAAA,UACpB,IAAI,CAAC,MAAM,QAAQ,MAAM;AAAA,YAAG,SAAS,CAAC,MAAM;AAAA,UAC5C,OAAO,OACJ,IAAI,CAAC,OAAO,OAAM,OAAO,IAAI,GAAG,KAAK,IAAI,EACzC,KAAK,IAAI;AAAA,SACb,CACH,EACC,KAAK,IAAI;AAAA,OACb,EACA,KAAK,IAAI;AAAA,KACb,EACA,KAAK,IAAI;AAAA;AAAA,EAGd,OAAO,UAAU,EAAE,QAAQ,MAAM;AAAA;;;;ECtMjC,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,MAAQ,aAAa;AAAA,EACrB,MAAQ,QAAQ;AAAA,EAChB,MAAQ;AAAA,EAER,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,MAAQ;AAAA,EAER;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAEF;AAAA,IACE,eAAe,kBAAkB;AAAA;AAAA,EAEnC,MAAQ,QAAQ;AAAA,EAChB,MAAQ;AAAA,EAER,IAAM,WAAW,OAAO,UAAU;AAAA,EAClC,IAAM,mBAAmB,CAAC,GAAG,EAAE;AAAA,EAC/B,IAAM,cAAc,CAAC,cAAc,QAAQ,WAAW,QAAQ;AAAA,EAC9D,IAAM,mBAAmB;AAAA;AAAA,EAOzB,MAAM,mBAAkB,aAAa;AAAA,IAQnC,WAAW,CAAC,SAAS,WAAW,SAAS;AAAA,MACvC,MAAM;AAAA,MAEN,KAAK,cAAc,aAAa;AAAA,MAChC,KAAK,aAAa;AAAA,MAClB,KAAK,sBAAsB;AAAA,MAC3B,KAAK,kBAAkB;AAAA,MACvB,KAAK,gBAAgB;AAAA,MACrB,KAAK,cAAc;AAAA,MACnB,KAAK,gBAAgB;AAAA,MACrB,KAAK,cAAc,CAAC;AAAA,MACpB,KAAK,UAAU;AAAA,MACf,KAAK,YAAY;AAAA,MACjB,KAAK,cAAc,WAAU;AAAA,MAC7B,KAAK,YAAY;AAAA,MACjB,KAAK,UAAU;AAAA,MACf,KAAK,UAAU;AAAA,MAEf,IAAI,YAAY,MAAM;AAAA,QACpB,KAAK,kBAAkB;AAAA,QACvB,KAAK,YAAY;AAAA,QACjB,KAAK,aAAa;AAAA,QAElB,IAAI,cAAc,WAAW;AAAA,UAC3B,YAAY,CAAC;AAAA,QACf,EAAO,SAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAAA,UACpC,IAAI,OAAO,cAAc,YAAY,cAAc,MAAM;AAAA,YACvD,UAAU;AAAA,YACV,YAAY,CAAC;AAAA,UACf,EAAO;AAAA,YACL,YAAY,CAAC,SAAS;AAAA;AAAA,QAE1B;AAAA,QAEA,aAAa,MAAM,SAAS,WAAW,OAAO;AAAA,MAChD,EAAO;AAAA,QACL,KAAK,YAAY,QAAQ;AAAA,QACzB,KAAK,gBAAgB,QAAQ;AAAA,QAC7B,KAAK,YAAY;AAAA;AAAA;AAAA,QAUjB,UAAU,GAAG;AAAA,MACf,OAAO,KAAK;AAAA;AAAA,QAGV,UAAU,CAAC,MAAM;AAAA,MACnB,IAAI,CAAC,aAAa,SAAS,IAAI;AAAA,QAAG;AAAA,MAElC,KAAK,cAAc;AAAA,MAKnB,IAAI,KAAK;AAAA,QAAW,KAAK,UAAU,cAAc;AAAA;AAAA,QAM/C,cAAc,GAAG;AAAA,MACnB,IAAI,CAAC,KAAK;AAAA,QAAS,OAAO,KAAK;AAAA,MAE/B,OAAO,KAAK,QAAQ,eAAe,SAAS,KAAK,QAAQ;AAAA;AAAA,QAMvD,UAAU,GAAG;AAAA,MACf,OAAO,OAAO,KAAK,KAAK,WAAW,EAAE,KAAK;AAAA;AAAA,QAMxC,QAAQ,GAAG;AAAA,MACb,OAAO,KAAK;AAAA;AAAA,QAOV,OAAO,GAAG;AAAA,MACZ,OAAO;AAAA;AAAA,QAOL,OAAO,GAAG;AAAA,MACZ,OAAO;AAAA;AAAA,QAOL,MAAM,GAAG;AAAA,MACX,OAAO;AAAA;AAAA,QAOL,SAAS,GAAG;AAAA,MACd,OAAO;AAAA;AAAA,QAML,QAAQ,GAAG;AAAA,MACb,OAAO,KAAK;AAAA;AAAA,QAMV,UAAU,GAAG;AAAA,MACf,OAAO,KAAK;AAAA;AAAA,QAMV,GAAG,GAAG;AAAA,MACR,OAAO,KAAK;AAAA;AAAA,IAmBd,SAAS,CAAC,QAAQ,MAAM,SAAS;AAAA,MAC/B,MAAM,WAAW,IAAI,SAAS;AAAA,QAC5B,wBAAwB,QAAQ;AAAA,QAChC,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,YAAY,QAAQ;AAAA,QACpB,oBAAoB,QAAQ;AAAA,MAC9B,CAAC;AAAA,MAED,MAAM,SAAS,IAAI,OAAO,QAAQ,KAAK,aAAa,QAAQ,YAAY;AAAA,MAExE,KAAK,YAAY;AAAA,MACjB,KAAK,UAAU;AAAA,MACf,KAAK,UAAU;AAAA,MAEf,SAAS,cAAc;AAAA,MACvB,OAAO,cAAc;AAAA,MACrB,OAAO,cAAc;AAAA,MAErB,SAAS,GAAG,YAAY,kBAAkB;AAAA,MAC1C,SAAS,GAAG,SAAS,eAAe;AAAA,MACpC,SAAS,GAAG,SAAS,eAAe;AAAA,MACpC,SAAS,GAAG,WAAW,iBAAiB;AAAA,MACxC,SAAS,GAAG,QAAQ,cAAc;AAAA,MAClC,SAAS,GAAG,QAAQ,cAAc;AAAA,MAElC,OAAO,UAAU;AAAA,MAKjB,IAAI,OAAO;AAAA,QAAY,OAAO,WAAW,CAAC;AAAA,MAC1C,IAAI,OAAO;AAAA,QAAY,OAAO,WAAW;AAAA,MAEzC,IAAI,KAAK,SAAS;AAAA,QAAG,OAAO,QAAQ,IAAI;AAAA,MAExC,OAAO,GAAG,SAAS,aAAa;AAAA,MAChC,OAAO,GAAG,QAAQ,YAAY;AAAA,MAC9B,OAAO,GAAG,OAAO,WAAW;AAAA,MAC5B,OAAO,GAAG,SAAS,aAAa;AAAA,MAEhC,KAAK,cAAc,WAAU;AAAA,MAC7B,KAAK,KAAK,MAAM;AAAA;AAAA,IAQlB,SAAS,GAAG;AAAA,MACV,IAAI,CAAC,KAAK,SAAS;AAAA,QACjB,KAAK,cAAc,WAAU;AAAA,QAC7B,KAAK,KAAK,SAAS,KAAK,YAAY,KAAK,aAAa;AAAA,QACtD;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,YAAY,kBAAkB,gBAAgB;AAAA,QACrD,KAAK,YAAY,kBAAkB,eAAe,QAAQ;AAAA,MAC5D;AAAA,MAEA,KAAK,UAAU,mBAAmB;AAAA,MAClC,KAAK,cAAc,WAAU;AAAA,MAC7B,KAAK,KAAK,SAAS,KAAK,YAAY,KAAK,aAAa;AAAA;AAAA,IAuBxD,KAAK,CAAC,MAAM,MAAM;AAAA,MAChB,IAAI,KAAK,eAAe,WAAU;AAAA,QAAQ;AAAA,MAC1C,IAAI,KAAK,eAAe,WAAU,YAAY;AAAA,QAC5C,MAAM,MAAM;AAAA,QACZ,eAAe,MAAM,KAAK,MAAM,GAAG;AAAA,QACnC;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,eAAe,WAAU,SAAS;AAAA,QACzC,IACE,KAAK,oBACJ,KAAK,uBAAuB,KAAK,UAAU,eAAe,eAC3D;AAAA,UACA,KAAK,QAAQ,IAAI;AAAA,QACnB;AAAA,QAEA;AAAA,MACF;AAAA,MAEA,KAAK,cAAc,WAAU;AAAA,MAC7B,KAAK,QAAQ,MAAM,MAAM,MAAM,CAAC,KAAK,WAAW,CAAC,QAAQ;AAAA,QAKvD,IAAI;AAAA,UAAK;AAAA,QAET,KAAK,kBAAkB;AAAA,QAEvB,IACE,KAAK,uBACL,KAAK,UAAU,eAAe,cAC9B;AAAA,UACA,KAAK,QAAQ,IAAI;AAAA,QACnB;AAAA,OACD;AAAA,MAED,cAAc,IAAI;AAAA;AAAA,IAQpB,KAAK,GAAG;AAAA,MACN,IACE,KAAK,eAAe,WAAU,cAC9B,KAAK,eAAe,WAAU,QAC9B;AAAA,QACA;AAAA,MACF;AAAA,MAEA,KAAK,UAAU;AAAA,MACf,KAAK,QAAQ,MAAM;AAAA;AAAA,IAWrB,IAAI,CAAC,MAAM,MAAM,IAAI;AAAA,MACnB,IAAI,KAAK,eAAe,WAAU,YAAY;AAAA,QAC5C,MAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AAAA,MAEA,IAAI,OAAO,SAAS,YAAY;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,OAAO;AAAA,MAChB,EAAO,SAAI,OAAO,SAAS,YAAY;AAAA,QACrC,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,MAEA,IAAI,OAAO,SAAS;AAAA,QAAU,OAAO,KAAK,SAAS;AAAA,MAEnD,IAAI,KAAK,eAAe,WAAU,MAAM;AAAA,QACtC,eAAe,MAAM,MAAM,EAAE;AAAA,QAC7B;AAAA,MACF;AAAA,MAEA,IAAI,SAAS;AAAA,QAAW,OAAO,CAAC,KAAK;AAAA,MACrC,KAAK,QAAQ,KAAK,QAAQ,cAAc,MAAM,EAAE;AAAA;AAAA,IAWlD,IAAI,CAAC,MAAM,MAAM,IAAI;AAAA,MACnB,IAAI,KAAK,eAAe,WAAU,YAAY;AAAA,QAC5C,MAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AAAA,MAEA,IAAI,OAAO,SAAS,YAAY;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,OAAO;AAAA,MAChB,EAAO,SAAI,OAAO,SAAS,YAAY;AAAA,QACrC,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,MAEA,IAAI,OAAO,SAAS;AAAA,QAAU,OAAO,KAAK,SAAS;AAAA,MAEnD,IAAI,KAAK,eAAe,WAAU,MAAM;AAAA,QACtC,eAAe,MAAM,MAAM,EAAE;AAAA,QAC7B;AAAA,MACF;AAAA,MAEA,IAAI,SAAS;AAAA,QAAW,OAAO,CAAC,KAAK;AAAA,MACrC,KAAK,QAAQ,KAAK,QAAQ,cAAc,MAAM,EAAE;AAAA;AAAA,IAQlD,MAAM,GAAG;AAAA,MACP,IACE,KAAK,eAAe,WAAU,cAC9B,KAAK,eAAe,WAAU,QAC9B;AAAA,QACA;AAAA,MACF;AAAA,MAEA,KAAK,UAAU;AAAA,MACf,IAAI,CAAC,KAAK,UAAU,eAAe;AAAA,QAAW,KAAK,QAAQ,OAAO;AAAA;AAAA,IAkBpE,IAAI,CAAC,MAAM,SAAS,IAAI;AAAA,MACtB,IAAI,KAAK,eAAe,WAAU,YAAY;AAAA,QAC5C,MAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AAAA,MAEA,IAAI,OAAO,YAAY,YAAY;AAAA,QACjC,KAAK;AAAA,QACL,UAAU,CAAC;AAAA,MACb;AAAA,MAEA,IAAI,OAAO,SAAS;AAAA,QAAU,OAAO,KAAK,SAAS;AAAA,MAEnD,IAAI,KAAK,eAAe,WAAU,MAAM;AAAA,QACtC,eAAe,MAAM,MAAM,EAAE;AAAA,QAC7B;AAAA,MACF;AAAA,MAEA,MAAM,OAAO;AAAA,QACX,QAAQ,OAAO,SAAS;AAAA,QACxB,MAAM,CAAC,KAAK;AAAA,QACZ,UAAU;AAAA,QACV,KAAK;AAAA,WACF;AAAA,MACL;AAAA,MAEA,IAAI,CAAC,KAAK,YAAY,kBAAkB,gBAAgB;AAAA,QACtD,KAAK,WAAW;AAAA,MAClB;AAAA,MAEA,KAAK,QAAQ,KAAK,QAAQ,cAAc,MAAM,EAAE;AAAA;AAAA,IAQlD,SAAS,GAAG;AAAA,MACV,IAAI,KAAK,eAAe,WAAU;AAAA,QAAQ;AAAA,MAC1C,IAAI,KAAK,eAAe,WAAU,YAAY;AAAA,QAC5C,MAAM,MAAM;AAAA,QACZ,eAAe,MAAM,KAAK,MAAM,GAAG;AAAA,QACnC;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,SAAS;AAAA,QAChB,KAAK,cAAc,WAAU;AAAA,QAC7B,KAAK,QAAQ,QAAQ;AAAA,MACvB;AAAA;AAAA,EAEJ;AAAA,EAMA,OAAO,eAAe,YAAW,cAAc;AAAA,IAC7C,YAAY;AAAA,IACZ,OAAO,YAAY,QAAQ,YAAY;AAAA,EACzC,CAAC;AAAA,EAMD,OAAO,eAAe,WAAU,WAAW,cAAc;AAAA,IACvD,YAAY;AAAA,IACZ,OAAO,YAAY,QAAQ,YAAY;AAAA,EACzC,CAAC;AAAA,EAMD,OAAO,eAAe,YAAW,QAAQ;AAAA,IACvC,YAAY;AAAA,IACZ,OAAO,YAAY,QAAQ,MAAM;AAAA,EACnC,CAAC;AAAA,EAMD,OAAO,eAAe,WAAU,WAAW,QAAQ;AAAA,IACjD,YAAY;AAAA,IACZ,OAAO,YAAY,QAAQ,MAAM;AAAA,EACnC,CAAC;AAAA,EAMD,OAAO,eAAe,YAAW,WAAW;AAAA,IAC1C,YAAY;AAAA,IACZ,OAAO,YAAY,QAAQ,SAAS;AAAA,EACtC,CAAC;AAAA,EAMD,OAAO,eAAe,WAAU,WAAW,WAAW;AAAA,IACpD,YAAY;AAAA,IACZ,OAAO,YAAY,QAAQ,SAAS;AAAA,EACtC,CAAC;AAAA,EAMD,OAAO,eAAe,YAAW,UAAU;AAAA,IACzC,YAAY;AAAA,IACZ,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACrC,CAAC;AAAA,EAMD,OAAO,eAAe,WAAU,WAAW,UAAU;AAAA,IACnD,YAAY;AAAA,IACZ,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACrC,CAAC;AAAA,EAED;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,QAAQ,CAAC,aAAa;AAAA,IACtB,OAAO,eAAe,WAAU,WAAW,UAAU,EAAE,YAAY,KAAK,CAAC;AAAA,GAC1E;AAAA,EAMD,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,QAAQ,CAAC,WAAW;AAAA,IACxD,OAAO,eAAe,WAAU,WAAW,KAAK,UAAU;AAAA,MACxD,YAAY;AAAA,MACZ,GAAG,GAAG;AAAA,QACJ,WAAW,YAAY,KAAK,UAAU,MAAM,GAAG;AAAA,UAC7C,IAAI,SAAS;AAAA,YAAuB,OAAO,SAAS;AAAA,QACtD;AAAA,QAEA,OAAO;AAAA;AAAA,MAET,GAAG,CAAC,SAAS;AAAA,QACX,WAAW,YAAY,KAAK,UAAU,MAAM,GAAG;AAAA,UAC7C,IAAI,SAAS,uBAAuB;AAAA,YAClC,KAAK,eAAe,QAAQ,QAAQ;AAAA,YACpC;AAAA,UACF;AAAA,QACF;AAAA,QAEA,IAAI,OAAO,YAAY;AAAA,UAAY;AAAA,QAEnC,KAAK,iBAAiB,QAAQ,SAAS;AAAA,WACpC,uBAAuB;AAAA,QAC1B,CAAC;AAAA;AAAA,IAEL,CAAC;AAAA,GACF;AAAA,EAED,WAAU,UAAU,mBAAmB;AAAA,EACvC,WAAU,UAAU,sBAAsB;AAAA,EAE1C,OAAO,UAAU;AAAA,EAsCjB,SAAS,YAAY,CAAC,WAAW,SAAS,WAAW,SAAS;AAAA,IAC5D,MAAM,OAAO;AAAA,MACX,wBAAwB;AAAA,MACxB,UAAU;AAAA,MACV,cAAc;AAAA,MACd,iBAAiB,iBAAiB;AAAA,MAClC,YAAY,MAAM,OAAO;AAAA,MACzB,oBAAoB;AAAA,MACpB,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,MACjB,cAAc;AAAA,SACX;AAAA,MACH,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,IAEA,UAAU,YAAY,KAAK;AAAA,IAC3B,UAAU,gBAAgB,KAAK;AAAA,IAE/B,IAAI,CAAC,iBAAiB,SAAS,KAAK,eAAe,GAAG;AAAA,MACpD,MAAM,IAAI,WACR,iCAAiC,KAAK,qBACpC,wBAAwB,iBAAiB,KAAK,IAAI,IACtD;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,IAEJ,IAAI,mBAAmB,MAAK;AAAA,MAC1B,YAAY;AAAA,IACd,EAAO;AAAA,MACL,IAAI;AAAA,QACF,YAAY,IAAI,KAAI,OAAO;AAAA,QAC3B,OAAO,GAAG;AAAA,QACV,MAAM,IAAI,YAAY,gBAAgB,SAAS;AAAA;AAAA;AAAA,IAInD,IAAI,UAAU,aAAa,SAAS;AAAA,MAClC,UAAU,WAAW;AAAA,IACvB,EAAO,SAAI,UAAU,aAAa,UAAU;AAAA,MAC1C,UAAU,WAAW;AAAA,IACvB;AAAA,IAEA,UAAU,OAAO,UAAU;AAAA,IAE3B,MAAM,WAAW,UAAU,aAAa;AAAA,IACxC,MAAM,WAAW,UAAU,aAAa;AAAA,IACxC,IAAI;AAAA,IAEJ,IAAI,UAAU,aAAa,SAAS,CAAC,YAAY,CAAC,UAAU;AAAA,MAC1D,oBACE,sDACA;AAAA,IACJ,EAAO,SAAI,YAAY,CAAC,UAAU,UAAU;AAAA,MAC1C,oBAAoB;AAAA,IACtB,EAAO,SAAI,UAAU,MAAM;AAAA,MACzB,oBAAoB;AAAA,IACtB;AAAA,IAEA,IAAI,mBAAmB;AAAA,MACrB,MAAM,MAAM,IAAI,YAAY,iBAAiB;AAAA,MAE7C,IAAI,UAAU,eAAe,GAAG;AAAA,QAC9B,MAAM;AAAA,MACR,EAAO;AAAA,QACL,kBAAkB,WAAW,GAAG;AAAA,QAChC;AAAA;AAAA,IAEJ;AAAA,IAEA,MAAM,cAAc,WAAW,MAAM;AAAA,IACrC,MAAM,MAAM,YAAY,EAAE,EAAE,SAAS,QAAQ;AAAA,IAC7C,MAAM,UAAU,WAAW,MAAM,UAAU,KAAK;AAAA,IAChD,MAAM,cAAc,IAAI;AAAA,IACxB,IAAI;AAAA,IAEJ,KAAK,mBACH,KAAK,qBAAqB,WAAW,aAAa;AAAA,IACpD,KAAK,cAAc,KAAK,eAAe;AAAA,IACvC,KAAK,OAAO,UAAU,QAAQ;AAAA,IAC9B,KAAK,OAAO,UAAU,SAAS,WAAW,GAAG,IACzC,UAAU,SAAS,MAAM,GAAG,EAAE,IAC9B,UAAU;AAAA,IACd,KAAK,UAAU;AAAA,SACV,KAAK;AAAA,MACR,yBAAyB,KAAK;AAAA,MAC9B,qBAAqB;AAAA,MACrB,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,KAAK,OAAO,UAAU,WAAW,UAAU;AAAA,IAC3C,KAAK,UAAU,KAAK;AAAA,IAEpB,IAAI,KAAK,mBAAmB;AAAA,MAC1B,oBAAoB,IAAI,kBACtB,KAAK,sBAAsB,OAAO,KAAK,oBAAoB,CAAC,GAC5D,OACA,KAAK,UACP;AAAA,MACA,KAAK,QAAQ,8BAA8B,OAAO;AAAA,SAC/C,kBAAkB,gBAAgB,kBAAkB,MAAM;AAAA,MAC7D,CAAC;AAAA,IACH;AAAA,IACA,IAAI,UAAU,QAAQ;AAAA,MACpB,WAAW,YAAY,WAAW;AAAA,QAChC,IACE,OAAO,aAAa,YACpB,CAAC,iBAAiB,KAAK,QAAQ,KAC/B,YAAY,IAAI,QAAQ,GACxB;AAAA,UACA,MAAM,IAAI,YACR,oDACF;AAAA,QACF;AAAA,QAEA,YAAY,IAAI,QAAQ;AAAA,MAC1B;AAAA,MAEA,KAAK,QAAQ,4BAA4B,UAAU,KAAK,GAAG;AAAA,IAC7D;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,IAAI,KAAK,kBAAkB,IAAI;AAAA,QAC7B,KAAK,QAAQ,0BAA0B,KAAK;AAAA,MAC9C,EAAO;AAAA,QACL,KAAK,QAAQ,SAAS,KAAK;AAAA;AAAA,IAE/B;AAAA,IACA,IAAI,UAAU,YAAY,UAAU,UAAU;AAAA,MAC5C,KAAK,OAAO,GAAG,UAAU,YAAY,UAAU;AAAA,IACjD;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,MAAM,QAAQ,KAAK,KAAK,MAAM,GAAG;AAAA,MAEjC,KAAK,aAAa,MAAM;AAAA,MACxB,KAAK,OAAO,MAAM;AAAA,IACpB;AAAA,IAEA,IAAI;AAAA,IAEJ,IAAI,KAAK,iBAAiB;AAAA,MACxB,IAAI,UAAU,eAAe,GAAG;AAAA,QAC9B,UAAU,eAAe;AAAA,QACzB,UAAU,kBAAkB;AAAA,QAC5B,UAAU,4BAA4B,WAClC,KAAK,aACL,UAAU;AAAA,QAEd,MAAM,UAAU,WAAW,QAAQ;AAAA,QAMnC,UAAU,KAAK,SAAS,SAAS,CAAC,EAAE;AAAA,QAEpC,IAAI,SAAS;AAAA,UACX,YAAY,MAAK,UAAU,OAAO,QAAQ,OAAO,GAAG;AAAA,YAClD,QAAQ,QAAQ,KAAI,YAAY,KAAK;AAAA,UACvC;AAAA,QACF;AAAA,MACF,EAAO,SAAI,UAAU,cAAc,UAAU,MAAM,GAAG;AAAA,QACpD,MAAM,aAAa,WACf,UAAU,eACR,KAAK,eAAe,UAAU,4BAC9B,QACF,UAAU,eACR,QACA,UAAU,SAAS,UAAU;AAAA,QAEnC,IAAI,CAAC,cAAe,UAAU,mBAAmB,CAAC,UAAW;AAAA,UAK3D,OAAO,KAAK,QAAQ;AAAA,UACpB,OAAO,KAAK,QAAQ;AAAA,UAEpB,IAAI,CAAC;AAAA,YAAY,OAAO,KAAK,QAAQ;AAAA,UAErC,KAAK,OAAO;AAAA,QACd;AAAA,MACF;AAAA,MAOA,IAAI,KAAK,QAAQ,CAAC,QAAQ,QAAQ,eAAe;AAAA,QAC/C,QAAQ,QAAQ,gBACd,WAAW,OAAO,KAAK,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,MACvD;AAAA,MAEA,MAAM,UAAU,OAAO,QAAQ,IAAI;AAAA,MAEnC,IAAI,UAAU,YAAY;AAAA,QAUxB,UAAU,KAAK,YAAY,UAAU,KAAK,GAAG;AAAA,MAC/C;AAAA,IACF,EAAO;AAAA,MACL,MAAM,UAAU,OAAO,QAAQ,IAAI;AAAA;AAAA,IAGrC,IAAI,KAAK,SAAS;AAAA,MAChB,IAAI,GAAG,WAAW,MAAM;AAAA,QACtB,eAAe,WAAW,KAAK,iCAAiC;AAAA,OACjE;AAAA,IACH;AAAA,IAEA,IAAI,GAAG,SAAS,CAAC,QAAQ;AAAA,MACvB,IAAI,QAAQ,QAAQ,IAAI;AAAA,QAAW;AAAA,MAEnC,MAAM,UAAU,OAAO;AAAA,MACvB,kBAAkB,WAAW,GAAG;AAAA,KACjC;AAAA,IAED,IAAI,GAAG,YAAY,CAAC,QAAQ;AAAA,MAC1B,MAAM,WAAW,IAAI,QAAQ;AAAA,MAC7B,MAAM,aAAa,IAAI;AAAA,MAEvB,IACE,YACA,KAAK,mBACL,cAAc,OACd,aAAa,KACb;AAAA,QACA,IAAI,EAAE,UAAU,aAAa,KAAK,cAAc;AAAA,UAC9C,eAAe,WAAW,KAAK,4BAA4B;AAAA,UAC3D;AAAA,QACF;AAAA,QAEA,IAAI,MAAM;AAAA,QAEV,IAAI;AAAA,QAEJ,IAAI;AAAA,UACF,OAAO,IAAI,KAAI,UAAU,OAAO;AAAA,UAChC,OAAO,GAAG;AAAA,UACV,MAAM,MAAM,IAAI,YAAY,gBAAgB,UAAU;AAAA,UACtD,kBAAkB,WAAW,GAAG;AAAA,UAChC;AAAA;AAAA,QAGF,aAAa,WAAW,MAAM,WAAW,OAAO;AAAA,MAClD,EAAO,SAAI,CAAC,UAAU,KAAK,uBAAuB,KAAK,GAAG,GAAG;AAAA,QAC3D,eACE,WACA,KACA,+BAA+B,IAAI,YACrC;AAAA,MACF;AAAA,KACD;AAAA,IAED,IAAI,GAAG,WAAW,CAAC,KAAK,QAAQ,SAAS;AAAA,MACvC,UAAU,KAAK,WAAW,GAAG;AAAA,MAM7B,IAAI,UAAU,eAAe,WAAU;AAAA,QAAY;AAAA,MAEnD,MAAM,UAAU,OAAO;AAAA,MAEvB,MAAM,UAAU,IAAI,QAAQ;AAAA,MAE5B,IAAI,YAAY,aAAa,QAAQ,YAAY,MAAM,aAAa;AAAA,QAClE,eAAe,WAAW,QAAQ,wBAAwB;AAAA,QAC1D;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,YAAW,MAAM,EAC7B,OAAO,MAAM,IAAI,EACjB,OAAO,QAAQ;AAAA,MAElB,IAAI,IAAI,QAAQ,4BAA4B,QAAQ;AAAA,QAClD,eAAe,WAAW,QAAQ,qCAAqC;AAAA,QACvE;AAAA,MACF;AAAA,MAEA,MAAM,aAAa,IAAI,QAAQ;AAAA,MAC/B,IAAI;AAAA,MAEJ,IAAI,eAAe,WAAW;AAAA,QAC5B,IAAI,CAAC,YAAY,MAAM;AAAA,UACrB,YAAY;AAAA,QACd,EAAO,SAAI,CAAC,YAAY,IAAI,UAAU,GAAG;AAAA,UACvC,YAAY;AAAA,QACd;AAAA,MACF,EAAO,SAAI,YAAY,MAAM;AAAA,QAC3B,YAAY;AAAA,MACd;AAAA,MAEA,IAAI,WAAW;AAAA,QACb,eAAe,WAAW,QAAQ,SAAS;AAAA,QAC3C;AAAA,MACF;AAAA,MAEA,IAAI;AAAA,QAAY,UAAU,YAAY;AAAA,MAEtC,MAAM,yBAAyB,IAAI,QAAQ;AAAA,MAE3C,IAAI,2BAA2B,WAAW;AAAA,QACxC,IAAI,CAAC,mBAAmB;AAAA,UACtB,MAAM,UACJ,oEACA;AAAA,UACF,eAAe,WAAW,QAAQ,OAAO;AAAA,UACzC;AAAA,QACF;AAAA,QAEA,IAAI;AAAA,QAEJ,IAAI;AAAA,UACF,aAAa,MAAM,sBAAsB;AAAA,UACzC,OAAO,KAAK;AAAA,UACZ,MAAM,UAAU;AAAA,UAChB,eAAe,WAAW,QAAQ,OAAO;AAAA,UACzC;AAAA;AAAA,QAGF,MAAM,iBAAiB,OAAO,KAAK,UAAU;AAAA,QAE7C,IACE,eAAe,WAAW,KAC1B,eAAe,OAAO,kBAAkB,eACxC;AAAA,UACA,MAAM,UAAU;AAAA,UAChB,eAAe,WAAW,QAAQ,OAAO;AAAA,UACzC;AAAA,QACF;AAAA,QAEA,IAAI;AAAA,UACF,kBAAkB,OAAO,WAAW,kBAAkB,cAAc;AAAA,UACpE,OAAO,KAAK;AAAA,UACZ,MAAM,UAAU;AAAA,UAChB,eAAe,WAAW,QAAQ,OAAO;AAAA,UACzC;AAAA;AAAA,QAGF,UAAU,YAAY,kBAAkB,iBACtC;AAAA,MACJ;AAAA,MAEA,UAAU,UAAU,QAAQ,MAAM;AAAA,QAChC,wBAAwB,KAAK;AAAA,QAC7B,cAAc,KAAK;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,oBAAoB,KAAK;AAAA,MAC3B,CAAC;AAAA,KACF;AAAA,IAED,IAAI,KAAK,eAAe;AAAA,MACtB,KAAK,cAAc,KAAK,SAAS;AAAA,IACnC,EAAO;AAAA,MACL,IAAI,IAAI;AAAA;AAAA;AAAA,EAWZ,SAAS,iBAAiB,CAAC,WAAW,KAAK;AAAA,IACzC,UAAU,cAAc,WAAU;AAAA,IAKlC,UAAU,gBAAgB;AAAA,IAC1B,UAAU,KAAK,SAAS,GAAG;AAAA,IAC3B,UAAU,UAAU;AAAA;AAAA,EAUtB,SAAS,UAAU,CAAC,SAAS;AAAA,IAC3B,QAAQ,OAAO,QAAQ;AAAA,IACvB,OAAO,IAAI,QAAQ,OAAO;AAAA;AAAA,EAU5B,SAAS,UAAU,CAAC,SAAS;AAAA,IAC3B,QAAQ,OAAO;AAAA,IAEf,IAAI,CAAC,QAAQ,cAAc,QAAQ,eAAe,IAAI;AAAA,MACpD,QAAQ,aAAa,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ;AAAA,IAC7D;AAAA,IAEA,OAAO,IAAI,QAAQ,OAAO;AAAA;AAAA,EAY5B,SAAS,cAAc,CAAC,WAAW,QAAQ,SAAS;AAAA,IAClD,UAAU,cAAc,WAAU;AAAA,IAElC,MAAM,MAAM,IAAI,MAAM,OAAO;AAAA,IAC7B,MAAM,kBAAkB,KAAK,cAAc;AAAA,IAE3C,IAAI,OAAO,WAAW;AAAA,MACpB,OAAO,YAAY;AAAA,MACnB,OAAO,MAAM;AAAA,MAEb,IAAI,OAAO,UAAU,CAAC,OAAO,OAAO,WAAW;AAAA,QAM7C,OAAO,OAAO,QAAQ;AAAA,MACxB;AAAA,MAEA,QAAQ,SAAS,mBAAmB,WAAW,GAAG;AAAA,IACpD,EAAO;AAAA,MACL,OAAO,QAAQ,GAAG;AAAA,MAClB,OAAO,KAAK,SAAS,UAAU,KAAK,KAAK,WAAW,OAAO,CAAC;AAAA,MAC5D,OAAO,KAAK,SAAS,UAAU,UAAU,KAAK,SAAS,CAAC;AAAA;AAAA;AAAA,EAa5D,SAAS,cAAc,CAAC,WAAW,MAAM,IAAI;AAAA,IAC3C,IAAI,MAAM;AAAA,MACR,MAAM,SAAS,OAAO,IAAI,IAAI,KAAK,OAAO,SAAS,IAAI,EAAE;AAAA,MAQzD,IAAI,UAAU;AAAA,QAAS,UAAU,QAAQ,kBAAkB;AAAA,MACtD;AAAA,kBAAU,mBAAmB;AAAA,IACpC;AAAA,IAEA,IAAI,IAAI;AAAA,MACN,MAAM,MAAM,IAAI,MACd,qCAAqC,UAAU,gBAC7C,IAAI,YAAY,UAAU,cAC9B;AAAA,MACA,QAAQ,SAAS,IAAI,GAAG;AAAA,IAC1B;AAAA;AAAA,EAUF,SAAS,kBAAkB,CAAC,MAAM,QAAQ;AAAA,IACxC,MAAM,YAAY,KAAK;AAAA,IAEvB,UAAU,sBAAsB;AAAA,IAChC,UAAU,gBAAgB;AAAA,IAC1B,UAAU,aAAa;AAAA,IAEvB,IAAI,UAAU,QAAQ,gBAAgB;AAAA,MAAW;AAAA,IAEjD,UAAU,QAAQ,eAAe,QAAQ,YAAY;AAAA,IACrD,QAAQ,SAAS,QAAQ,UAAU,OAAO;AAAA,IAE1C,IAAI,SAAS;AAAA,MAAM,UAAU,MAAM;AAAA,IAC9B;AAAA,gBAAU,MAAM,MAAM,MAAM;AAAA;AAAA,EAQnC,SAAS,eAAe,GAAG;AAAA,IACzB,MAAM,YAAY,KAAK;AAAA,IAEvB,IAAI,CAAC,UAAU;AAAA,MAAU,UAAU,QAAQ,OAAO;AAAA;AAAA,EASpD,SAAS,eAAe,CAAC,KAAK;AAAA,IAC5B,MAAM,YAAY,KAAK;AAAA,IAEvB,IAAI,UAAU,QAAQ,gBAAgB,WAAW;AAAA,MAC/C,UAAU,QAAQ,eAAe,QAAQ,YAAY;AAAA,MAMrD,QAAQ,SAAS,QAAQ,UAAU,OAAO;AAAA,MAE1C,UAAU,MAAM,IAAI,YAAY;AAAA,IAClC;AAAA,IAEA,IAAI,CAAC,UAAU,eAAe;AAAA,MAC5B,UAAU,gBAAgB;AAAA,MAC1B,UAAU,KAAK,SAAS,GAAG;AAAA,IAC7B;AAAA;AAAA,EAQF,SAAS,gBAAgB,GAAG;AAAA,IAC1B,KAAK,YAAY,UAAU;AAAA;AAAA,EAU7B,SAAS,iBAAiB,CAAC,MAAM,UAAU;AAAA,IACzC,KAAK,YAAY,KAAK,WAAW,MAAM,QAAQ;AAAA;AAAA,EASjD,SAAS,cAAc,CAAC,MAAM;AAAA,IAC5B,MAAM,YAAY,KAAK;AAAA,IAEvB,IAAI,UAAU;AAAA,MAAW,UAAU,KAAK,MAAM,CAAC,KAAK,WAAW,IAAI;AAAA,IACnE,UAAU,KAAK,QAAQ,IAAI;AAAA;AAAA,EAS7B,SAAS,cAAc,CAAC,MAAM;AAAA,IAC5B,KAAK,YAAY,KAAK,QAAQ,IAAI;AAAA;AAAA,EASpC,SAAS,MAAM,CAAC,QAAQ;AAAA,IACtB,OAAO,OAAO;AAAA;AAAA,EAShB,SAAS,aAAa,CAAC,KAAK;AAAA,IAC1B,MAAM,YAAY,KAAK;AAAA,IAEvB,IAAI,UAAU,eAAe,WAAU;AAAA,MAAQ;AAAA,IAC/C,IAAI,UAAU,eAAe,WAAU,MAAM;AAAA,MAC3C,UAAU,cAAc,WAAU;AAAA,MAClC,cAAc,SAAS;AAAA,IACzB;AAAA,IAOA,KAAK,QAAQ,IAAI;AAAA,IAEjB,IAAI,CAAC,UAAU,eAAe;AAAA,MAC5B,UAAU,gBAAgB;AAAA,MAC1B,UAAU,KAAK,SAAS,GAAG;AAAA,IAC7B;AAAA;AAAA,EASF,SAAS,aAAa,CAAC,WAAW;AAAA,IAChC,UAAU,cAAc,WACtB,UAAU,QAAQ,QAAQ,KAAK,UAAU,OAAO,GAChD,UAAU,aACZ;AAAA;AAAA,EAQF,SAAS,aAAa,GAAG;AAAA,IACvB,MAAM,YAAY,KAAK;AAAA,IAEvB,KAAK,eAAe,SAAS,aAAa;AAAA,IAC1C,KAAK,eAAe,QAAQ,YAAY;AAAA,IACxC,KAAK,eAAe,OAAO,WAAW;AAAA,IAEtC,UAAU,cAAc,WAAU;AAAA,IAWlC,IACE,CAAC,KAAK,eAAe,cACrB,CAAC,UAAU,uBACX,CAAC,UAAU,UAAU,eAAe,gBACpC,KAAK,eAAe,WAAW,GAC/B;AAAA,MACA,MAAM,QAAQ,KAAK,KAAK,KAAK,eAAe,MAAM;AAAA,MAElD,UAAU,UAAU,MAAM,KAAK;AAAA,IACjC;AAAA,IAEA,UAAU,UAAU,IAAI;AAAA,IAExB,KAAK,cAAc;AAAA,IAEnB,aAAa,UAAU,WAAW;AAAA,IAElC,IACE,UAAU,UAAU,eAAe,YACnC,UAAU,UAAU,eAAe,cACnC;AAAA,MACA,UAAU,UAAU;AAAA,IACtB,EAAO;AAAA,MACL,UAAU,UAAU,GAAG,SAAS,gBAAgB;AAAA,MAChD,UAAU,UAAU,GAAG,UAAU,gBAAgB;AAAA;AAAA;AAAA,EAUrD,SAAS,YAAY,CAAC,OAAO;AAAA,IAC3B,IAAI,CAAC,KAAK,YAAY,UAAU,MAAM,KAAK,GAAG;AAAA,MAC5C,KAAK,MAAM;AAAA,IACb;AAAA;AAAA,EAQF,SAAS,WAAW,GAAG;AAAA,IACrB,MAAM,YAAY,KAAK;AAAA,IAEvB,UAAU,cAAc,WAAU;AAAA,IAClC,UAAU,UAAU,IAAI;AAAA,IACxB,KAAK,IAAI;AAAA;AAAA,EAQX,SAAS,aAAa,GAAG;AAAA,IACvB,MAAM,YAAY,KAAK;AAAA,IAEvB,KAAK,eAAe,SAAS,aAAa;AAAA,IAC1C,KAAK,GAAG,SAAS,IAAI;AAAA,IAErB,IAAI,WAAW;AAAA,MACb,UAAU,cAAc,WAAU;AAAA,MAClC,KAAK,QAAQ;AAAA,IACf;AAAA;AAAA;;;;EC52CF,IAAM;AAAA,EACN,MAAQ;AAAA,EAQR,SAAS,SAAS,CAAC,QAAQ;AAAA,IACzB,OAAO,KAAK,OAAO;AAAA;AAAA,EAQrB,SAAS,WAAW,GAAG;AAAA,IACrB,IAAI,CAAC,KAAK,aAAa,KAAK,eAAe,UAAU;AAAA,MACnD,KAAK,QAAQ;AAAA,IACf;AAAA;AAAA,EASF,SAAS,aAAa,CAAC,KAAK;AAAA,IAC1B,KAAK,eAAe,SAAS,aAAa;AAAA,IAC1C,KAAK,QAAQ;AAAA,IACb,IAAI,KAAK,cAAc,OAAO,MAAM,GAAG;AAAA,MAErC,KAAK,KAAK,SAAS,GAAG;AAAA,IACxB;AAAA;AAAA,EAWF,SAAS,qBAAqB,CAAC,IAAI,SAAS;AAAA,IAC1C,IAAI,qBAAqB;AAAA,IAEzB,MAAM,SAAS,IAAI,OAAO;AAAA,SACrB;AAAA,MACH,aAAa;AAAA,MACb,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,oBAAoB;AAAA,IACtB,CAAC;AAAA,IAED,GAAG,GAAG,WAAW,SAAS,OAAO,CAAC,KAAK,UAAU;AAAA,MAC/C,MAAM,OACJ,CAAC,YAAY,OAAO,eAAe,aAAa,IAAI,SAAS,IAAI;AAAA,MAEnE,IAAI,CAAC,OAAO,KAAK,IAAI;AAAA,QAAG,GAAG,MAAM;AAAA,KAClC;AAAA,IAED,GAAG,KAAK,SAAS,SAAS,KAAK,CAAC,KAAK;AAAA,MACnC,IAAI,OAAO;AAAA,QAAW;AAAA,MAWtB,qBAAqB;AAAA,MACrB,OAAO,QAAQ,GAAG;AAAA,KACnB;AAAA,IAED,GAAG,KAAK,SAAS,SAAS,KAAK,GAAG;AAAA,MAChC,IAAI,OAAO;AAAA,QAAW;AAAA,MAEtB,OAAO,KAAK,IAAI;AAAA,KACjB;AAAA,IAED,OAAO,WAAW,QAAS,CAAC,KAAK,UAAU;AAAA,MACzC,IAAI,GAAG,eAAe,GAAG,QAAQ;AAAA,QAC/B,SAAS,GAAG;AAAA,QACZ,QAAQ,SAAS,WAAW,MAAM;AAAA,QAClC;AAAA,MACF;AAAA,MAEA,IAAI,SAAS;AAAA,MAEb,GAAG,KAAK,SAAS,SAAS,KAAK,CAAC,MAAK;AAAA,QACnC,SAAS;AAAA,QACT,SAAS,IAAG;AAAA,OACb;AAAA,MAED,GAAG,KAAK,SAAS,SAAS,KAAK,GAAG;AAAA,QAChC,IAAI,CAAC;AAAA,UAAQ,SAAS,GAAG;AAAA,QACzB,QAAQ,SAAS,WAAW,MAAM;AAAA,OACnC;AAAA,MAED,IAAI;AAAA,QAAoB,GAAG,UAAU;AAAA;AAAA,IAGvC,OAAO,SAAS,QAAS,CAAC,UAAU;AAAA,MAClC,IAAI,GAAG,eAAe,GAAG,YAAY;AAAA,QACnC,GAAG,KAAK,QAAQ,SAAS,IAAI,GAAG;AAAA,UAC9B,OAAO,OAAO,QAAQ;AAAA,SACvB;AAAA,QACD;AAAA,MACF;AAAA,MAMA,IAAI,GAAG,YAAY;AAAA,QAAM;AAAA,MAEzB,IAAI,GAAG,QAAQ,eAAe,UAAU;AAAA,QACtC,SAAS;AAAA,QACT,IAAI,OAAO,eAAe;AAAA,UAAY,OAAO,QAAQ;AAAA,MACvD,EAAO;AAAA,QACL,GAAG,QAAQ,KAAK,UAAU,SAAS,MAAM,GAAG;AAAA,UAI1C,SAAS;AAAA,SACV;AAAA,QACD,GAAG,MAAM;AAAA;AAAA;AAAA,IAIb,OAAO,QAAQ,QAAS,GAAG;AAAA,MACzB,IAAI,GAAG;AAAA,QAAU,GAAG,OAAO;AAAA;AAAA,IAG7B,OAAO,SAAS,QAAS,CAAC,OAAO,UAAU,UAAU;AAAA,MACnD,IAAI,GAAG,eAAe,GAAG,YAAY;AAAA,QACnC,GAAG,KAAK,QAAQ,SAAS,IAAI,GAAG;AAAA,UAC9B,OAAO,OAAO,OAAO,UAAU,QAAQ;AAAA,SACxC;AAAA,QACD;AAAA,MACF;AAAA,MAEA,GAAG,KAAK,OAAO,QAAQ;AAAA;AAAA,IAGzB,OAAO,GAAG,OAAO,WAAW;AAAA,IAC5B,OAAO,GAAG,SAAS,aAAa;AAAA,IAChC,OAAO;AAAA;AAAA,EAGT,OAAO,UAAU;AAAA;;;;EC9JjB,MAAQ;AAAA,EASR,SAAS,KAAK,CAAC,QAAQ;AAAA,IACrB,MAAM,YAAY,IAAI;AAAA,IACtB,IAAI,QAAQ;AAAA,IACZ,IAAI,MAAM;AAAA,IACV,IAAI,IAAI;AAAA,IAER,KAAK,EAAG,IAAI,OAAO,QAAQ,KAAK;AAAA,MAC9B,MAAM,OAAO,OAAO,WAAW,CAAC;AAAA,MAEhC,IAAI,QAAQ,MAAM,WAAW,UAAU,GAAG;AAAA,QACxC,IAAI,UAAU;AAAA,UAAI,QAAQ;AAAA,MAC5B,EAAO,SACL,MAAM,MACL,SAAS,MAAkB,SAAS,IACrC;AAAA,QACA,IAAI,QAAQ,MAAM,UAAU;AAAA,UAAI,MAAM;AAAA,MACxC,EAAO,SAAI,SAAS,IAAgB;AAAA,QAClC,IAAI,UAAU,IAAI;AAAA,UAChB,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA,QAC5D;AAAA,QAEA,IAAI,QAAQ;AAAA,UAAI,MAAM;AAAA,QAEtB,MAAM,YAAW,OAAO,MAAM,OAAO,GAAG;AAAA,QAExC,IAAI,UAAU,IAAI,SAAQ,GAAG;AAAA,UAC3B,MAAM,IAAI,YAAY,QAAQ,sCAAqC;AAAA,QACrE;AAAA,QAEA,UAAU,IAAI,SAAQ;AAAA,QACtB,QAAQ,MAAM;AAAA,MAChB,EAAO;AAAA,QACL,MAAM,IAAI,YAAY,iCAAiC,GAAG;AAAA;AAAA,IAE9D;AAAA,IAEA,IAAI,UAAU,MAAM,QAAQ,IAAI;AAAA,MAC9B,MAAM,IAAI,YAAY,yBAAyB;AAAA,IACjD;AAAA,IAEA,MAAM,WAAW,OAAO,MAAM,OAAO,CAAC;AAAA,IAEtC,IAAI,UAAU,IAAI,QAAQ,GAAG;AAAA,MAC3B,MAAM,IAAI,YAAY,QAAQ,qCAAqC;AAAA,IACrE;AAAA,IAEA,UAAU,IAAI,QAAQ;AAAA,IACtB,OAAO;AAAA;AAAA,EAGT,OAAO,UAAU,EAAE,MAAM;AAAA;;;;ECzDzB,IAAM;AAAA,EACN,IAAM;AAAA,EACN,MAAQ;AAAA,EACR,MAAQ;AAAA,EAER,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,MAAQ,eAAe,MAAM;AAAA,EAE7B,IAAM,WAAW;AAAA,EAEjB,IAAM,UAAU;AAAA,EAChB,IAAM,UAAU;AAAA,EAChB,IAAM,SAAS;AAAA;AAAA,EAOf,MAAM,wBAAwB,aAAa;AAAA,IAmCzC,WAAW,CAAC,SAAS,UAAU;AAAA,MAC7B,MAAM;AAAA,MAEN,UAAU;AAAA,QACR,wBAAwB;AAAA,QACxB,UAAU;AAAA,QACV,YAAY,MAAM,OAAO;AAAA,QACzB,oBAAoB;AAAA,QACpB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,cAAc;AAAA,QACd,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,WACG;AAAA,MACL;AAAA,MAEA,IACG,QAAQ,QAAQ,QAAQ,CAAC,QAAQ,UAAU,CAAC,QAAQ,YACpD,QAAQ,QAAQ,SAAS,QAAQ,UAAU,QAAQ,aACnD,QAAQ,UAAU,QAAQ,UAC3B;AAAA,QACA,MAAM,IAAI,UACR,qEACE,mBACJ;AAAA,MACF;AAAA,MAEA,IAAI,QAAQ,QAAQ,MAAM;AAAA,QACxB,KAAK,UAAU,KAAK,aAAa,CAAC,KAAK,QAAQ;AAAA,UAC7C,MAAM,OAAO,KAAK,aAAa;AAAA,UAE/B,IAAI,UAAU,KAAK;AAAA,YACjB,kBAAkB,KAAK;AAAA,YACvB,gBAAgB;AAAA,UAClB,CAAC;AAAA,UACD,IAAI,IAAI,IAAI;AAAA,SACb;AAAA,QACD,KAAK,QAAQ,OACX,QAAQ,MACR,QAAQ,MACR,QAAQ,SACR,QACF;AAAA,MACF,EAAO,SAAI,QAAQ,QAAQ;AAAA,QACzB,KAAK,UAAU,QAAQ;AAAA,MACzB;AAAA,MAEA,IAAI,KAAK,SAAS;AAAA,QAChB,MAAM,iBAAiB,KAAK,KAAK,KAAK,MAAM,YAAY;AAAA,QAExD,KAAK,mBAAmB,aAAa,KAAK,SAAS;AAAA,UACjD,WAAW,KAAK,KAAK,KAAK,MAAM,WAAW;AAAA,UAC3C,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO;AAAA,UACnC,SAAS,CAAC,KAAK,QAAQ,SAAS;AAAA,YAC9B,KAAK,cAAc,KAAK,QAAQ,MAAM,cAAc;AAAA;AAAA,QAExD,CAAC;AAAA,MACH;AAAA,MAEA,IAAI,QAAQ,sBAAsB;AAAA,QAAM,QAAQ,oBAAoB,CAAC;AAAA,MACrE,IAAI,QAAQ,gBAAgB;AAAA,QAC1B,KAAK,UAAU,IAAI;AAAA,QACnB,KAAK,mBAAmB;AAAA,MAC1B;AAAA,MAEA,KAAK,UAAU;AAAA,MACf,KAAK,SAAS;AAAA;AAAA,IAYhB,OAAO,GAAG;AAAA,MACR,IAAI,KAAK,QAAQ,UAAU;AAAA,QACzB,MAAM,IAAI,MAAM,4CAA4C;AAAA,MAC9D;AAAA,MAEA,IAAI,CAAC,KAAK;AAAA,QAAS,OAAO;AAAA,MAC1B,OAAO,KAAK,QAAQ,QAAQ;AAAA;AAAA,IAU9B,KAAK,CAAC,IAAI;AAAA,MACR,IAAI,KAAK,WAAW,QAAQ;AAAA,QAC1B,IAAI,IAAI;AAAA,UACN,KAAK,KAAK,SAAS,MAAM;AAAA,YACvB,GAAG,IAAI,MAAM,2BAA2B,CAAC;AAAA,WAC1C;AAAA,QACH;AAAA,QAEA,QAAQ,SAAS,WAAW,IAAI;AAAA,QAChC;AAAA,MACF;AAAA,MAEA,IAAI;AAAA,QAAI,KAAK,KAAK,SAAS,EAAE;AAAA,MAE7B,IAAI,KAAK,WAAW;AAAA,QAAS;AAAA,MAC7B,KAAK,SAAS;AAAA,MAEd,IAAI,KAAK,QAAQ,YAAY,KAAK,QAAQ,QAAQ;AAAA,QAChD,IAAI,KAAK,SAAS;AAAA,UAChB,KAAK,iBAAiB;AAAA,UACtB,KAAK,mBAAmB,KAAK,UAAU;AAAA,QACzC;AAAA,QAEA,IAAI,KAAK,SAAS;AAAA,UAChB,IAAI,CAAC,KAAK,QAAQ,MAAM;AAAA,YACtB,QAAQ,SAAS,WAAW,IAAI;AAAA,UAClC,EAAO;AAAA,YACL,KAAK,mBAAmB;AAAA;AAAA,QAE5B,EAAO;AAAA,UACL,QAAQ,SAAS,WAAW,IAAI;AAAA;AAAA,MAEpC,EAAO;AAAA,QACL,MAAM,SAAS,KAAK;AAAA,QAEpB,KAAK,iBAAiB;AAAA,QACtB,KAAK,mBAAmB,KAAK,UAAU;AAAA,QAMvC,OAAO,MAAM,MAAM;AAAA,UACjB,UAAU,IAAI;AAAA,SACf;AAAA;AAAA;AAAA,IAWL,YAAY,CAAC,KAAK;AAAA,MAChB,IAAI,KAAK,QAAQ,MAAM;AAAA,QACrB,MAAM,SAAQ,IAAI,IAAI,QAAQ,GAAG;AAAA,QACjC,MAAM,WAAW,WAAU,KAAK,IAAI,IAAI,MAAM,GAAG,MAAK,IAAI,IAAI;AAAA,QAE9D,IAAI,aAAa,KAAK,QAAQ;AAAA,UAAM,OAAO;AAAA,MAC7C;AAAA,MAEA,OAAO;AAAA;AAAA,IAYT,aAAa,CAAC,KAAK,QAAQ,MAAM,IAAI;AAAA,MACnC,OAAO,GAAG,SAAS,aAAa;AAAA,MAEhC,MAAM,MAAM,IAAI,QAAQ;AAAA,MACxB,MAAM,UAAU,IAAI,QAAQ;AAAA,MAC5B,MAAM,WAAU,CAAC,IAAI,QAAQ;AAAA,MAE7B,IAAI,IAAI,WAAW,OAAO;AAAA,QACxB,MAAM,UAAU;AAAA,QAChB,kCAAkC,MAAM,KAAK,QAAQ,KAAK,OAAO;AAAA,QACjE;AAAA,MACF;AAAA,MAEA,IAAI,YAAY,aAAa,QAAQ,YAAY,MAAM,aAAa;AAAA,QAClE,MAAM,UAAU;AAAA,QAChB,kCAAkC,MAAM,KAAK,QAAQ,KAAK,OAAO;AAAA,QACjE;AAAA,MACF;AAAA,MAEA,IAAI,QAAQ,aAAa,CAAC,SAAS,KAAK,GAAG,GAAG;AAAA,QAC5C,MAAM,UAAU;AAAA,QAChB,kCAAkC,MAAM,KAAK,QAAQ,KAAK,OAAO;AAAA,QACjE;AAAA,MACF;AAAA,MAEA,IAAI,aAAY,MAAM,aAAY,GAAG;AAAA,QACnC,MAAM,UAAU;AAAA,QAChB,kCAAkC,MAAM,KAAK,QAAQ,KAAK,SAAS;AAAA,UACjE,yBAAyB;AAAA,QAC3B,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MAEA,IAAI,CAAC,KAAK,aAAa,GAAG,GAAG;AAAA,QAC3B,eAAe,QAAQ,GAAG;AAAA,QAC1B;AAAA,MACF;AAAA,MAEA,MAAM,uBAAuB,IAAI,QAAQ;AAAA,MACzC,IAAI,YAAY,IAAI;AAAA,MAEpB,IAAI,yBAAyB,WAAW;AAAA,QACtC,IAAI;AAAA,UACF,YAAY,YAAY,MAAM,oBAAoB;AAAA,UAClD,OAAO,KAAK;AAAA,UACZ,MAAM,UAAU;AAAA,UAChB,kCAAkC,MAAM,KAAK,QAAQ,KAAK,OAAO;AAAA,UACjE;AAAA;AAAA,MAEJ;AAAA,MAEA,MAAM,yBAAyB,IAAI,QAAQ;AAAA,MAC3C,MAAM,aAAa,CAAC;AAAA,MAEpB,IACE,KAAK,QAAQ,qBACb,2BAA2B,WAC3B;AAAA,QACA,MAAM,oBAAoB,IAAI,kBAC5B,KAAK,QAAQ,mBACb,MACA,KAAK,QAAQ,UACf;AAAA,QAEA,IAAI;AAAA,UACF,MAAM,SAAS,UAAU,MAAM,sBAAsB;AAAA,UAErD,IAAI,OAAO,kBAAkB,gBAAgB;AAAA,YAC3C,kBAAkB,OAAO,OAAO,kBAAkB,cAAc;AAAA,YAChE,WAAW,kBAAkB,iBAAiB;AAAA,UAChD;AAAA,UACA,OAAO,KAAK;AAAA,UACZ,MAAM,UACJ;AAAA,UACF,kCAAkC,MAAM,KAAK,QAAQ,KAAK,OAAO;AAAA,UACjE;AAAA;AAAA,MAEJ;AAAA,MAKA,IAAI,KAAK,QAAQ,cAAc;AAAA,QAC7B,MAAM,OAAO;AAAA,UACX,QACE,IAAI,QAAQ,GAAG,aAAY,IAAI,yBAAyB;AAAA,UAC1D,QAAQ,CAAC,EAAE,IAAI,OAAO,cAAc,IAAI,OAAO;AAAA,UAC/C;AAAA,QACF;AAAA,QAEA,IAAI,KAAK,QAAQ,aAAa,WAAW,GAAG;AAAA,UAC1C,KAAK,QAAQ,aAAa,MAAM,CAAC,UAAU,MAAM,SAAS,YAAY;AAAA,YACpE,IAAI,CAAC,UAAU;AAAA,cACb,OAAO,eAAe,QAAQ,QAAQ,KAAK,SAAS,OAAO;AAAA,YAC7D;AAAA,YAEA,KAAK,gBACH,YACA,KACA,WACA,KACA,QACA,MACA,EACF;AAAA,WACD;AAAA,UACD;AAAA,QACF;AAAA,QAEA,IAAI,CAAC,KAAK,QAAQ,aAAa,IAAI;AAAA,UAAG,OAAO,eAAe,QAAQ,GAAG;AAAA,MACzE;AAAA,MAEA,KAAK,gBAAgB,YAAY,KAAK,WAAW,KAAK,QAAQ,MAAM,EAAE;AAAA;AAAA,IAgBxE,eAAe,CAAC,YAAY,KAAK,WAAW,KAAK,QAAQ,MAAM,IAAI;AAAA,MAIjE,IAAI,CAAC,OAAO,YAAY,CAAC,OAAO;AAAA,QAAU,OAAO,OAAO,QAAQ;AAAA,MAEhE,IAAI,OAAO,aAAa;AAAA,QACtB,MAAM,IAAI,MACR,oEACE,4CACJ;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,SAAS;AAAA,QAAS,OAAO,eAAe,QAAQ,GAAG;AAAA,MAE5D,MAAM,SAAS,YAAW,MAAM,EAC7B,OAAO,MAAM,IAAI,EACjB,OAAO,QAAQ;AAAA,MAElB,MAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA,yBAAyB;AAAA,MAC3B;AAAA,MAEA,MAAM,KAAK,IAAI,KAAK,QAAQ,UAAU,MAAM,WAAW,KAAK,OAAO;AAAA,MAEnE,IAAI,UAAU,MAAM;AAAA,QAIlB,MAAM,WAAW,KAAK,QAAQ,kBAC1B,KAAK,QAAQ,gBAAgB,WAAW,GAAG,IAC3C,UAAU,OAAO,EAAE,KAAK,EAAE;AAAA,QAE9B,IAAI,UAAU;AAAA,UACZ,QAAQ,KAAK,2BAA2B,UAAU;AAAA,UAClD,GAAG,YAAY;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,IAAI,WAAW,kBAAkB,gBAAgB;AAAA,QAC/C,MAAM,SAAS,WAAW,kBAAkB,eAAe;AAAA,QAC3D,MAAM,QAAQ,UAAU,OAAO;AAAA,WAC5B,kBAAkB,gBAAgB,CAAC,MAAM;AAAA,QAC5C,CAAC;AAAA,QACD,QAAQ,KAAK,6BAA6B,OAAO;AAAA,QACjD,GAAG,cAAc;AAAA,MACnB;AAAA,MAKA,KAAK,KAAK,WAAW,SAAS,GAAG;AAAA,MAEjC,OAAO,MAAM,QAAQ,OAAO;AAAA,CAAM,EAAE,KAAK;AAAA,CAAM,CAAC;AAAA,MAChD,OAAO,eAAe,SAAS,aAAa;AAAA,MAE5C,GAAG,UAAU,QAAQ,MAAM;AAAA,QACzB,wBAAwB,KAAK,QAAQ;AAAA,QACrC,YAAY,KAAK,QAAQ;AAAA,QACzB,oBAAoB,KAAK,QAAQ;AAAA,MACnC,CAAC;AAAA,MAED,IAAI,KAAK,SAAS;AAAA,QAChB,KAAK,QAAQ,IAAI,EAAE;AAAA,QACnB,GAAG,GAAG,SAAS,MAAM;AAAA,UACnB,KAAK,QAAQ,OAAO,EAAE;AAAA,UAEtB,IAAI,KAAK,oBAAoB,CAAC,KAAK,QAAQ,MAAM;AAAA,YAC/C,QAAQ,SAAS,WAAW,IAAI;AAAA,UAClC;AAAA,SACD;AAAA,MACH;AAAA,MAEA,GAAG,IAAI,GAAG;AAAA;AAAA,EAEd;AAAA,EAEA,OAAO,UAAU;AAAA,EAYjB,SAAS,YAAY,CAAC,QAAQ,KAAK;AAAA,IACjC,WAAW,SAAS,OAAO,KAAK,GAAG;AAAA,MAAG,OAAO,GAAG,OAAO,IAAI,MAAM;AAAA,IAEjE,OAAO,SAAS,eAAe,GAAG;AAAA,MAChC,WAAW,SAAS,OAAO,KAAK,GAAG,GAAG;AAAA,QACpC,OAAO,eAAe,OAAO,IAAI,MAAM;AAAA,MACzC;AAAA;AAAA;AAAA,EAUJ,SAAS,SAAS,CAAC,QAAQ;AAAA,IACzB,OAAO,SAAS;AAAA,IAChB,OAAO,KAAK,OAAO;AAAA;AAAA,EAQrB,SAAS,aAAa,GAAG;AAAA,IACvB,KAAK,QAAQ;AAAA;AAAA,EAYf,SAAS,cAAc,CAAC,QAAQ,MAAM,SAAS,SAAS;AAAA,IAStD,UAAU,WAAW,KAAK,aAAa;AAAA,IACvC,UAAU;AAAA,MACR,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,kBAAkB,OAAO,WAAW,OAAO;AAAA,SACxC;AAAA,IACL;AAAA,IAEA,OAAO,KAAK,UAAU,OAAO,OAAO;AAAA,IAEpC,OAAO,IACL,YAAY,QAAQ,KAAK,aAAa;AAAA,IACpC,OAAO,KAAK,OAAO,EAChB,IAAI,CAAC,MAAM,GAAG,MAAM,QAAQ,IAAI,EAChC,KAAK;AAAA,CAAM,IACd;AAAA;AAAA,IACA,OACJ;AAAA;AAAA,EAeF,SAAS,iCAAiC,CACxC,QACA,KACA,QACA,MACA,SACA,SACA;AAAA,IACA,IAAI,OAAO,cAAc,eAAe,GAAG;AAAA,MACzC,MAAM,MAAM,IAAI,MAAM,OAAO;AAAA,MAC7B,MAAM,kBAAkB,KAAK,iCAAiC;AAAA,MAE9D,OAAO,KAAK,iBAAiB,KAAK,QAAQ,GAAG;AAAA,IAC/C,EAAO;AAAA,MACL,eAAe,QAAQ,MAAM,SAAS,OAAO;AAAA;AAAA;AAAA;;;ACtiBjD,mBAA0C;AAC1C;;;ACFA,mBAAoB;;;ACCpB;AACA;AACA;AACA;AACA;AAIA;AATA;;;ACAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAAA;AAEA,MAAM,4BAA4B,gBAAgB;AAAA,EAChD,WAAW,CAAC,QAAQ,aAAa,QAAQ,QAAQ,OAAO,eAAe,aAAa,QAAQ,MAAM,wBAAwB,oBAAoB;AAAA,IAC5I,MAAM,EAAE,KAAK,aAAa,OAAO,GAAG,OAAO,eAAe,WAAW;AAAA,IACrE,KAAK,SAAS;AAAA,IACd,KAAK,cAAc;AAAA,IACnB,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,yBAAyB;AAAA,IAC9B,KAAK,qBAAqB;AAAA,IAC1B,KAAK,iBAAiB;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,SACN,MAAM,YAAY,CAAC,UAAU;AAAA,SAC7B,MAAM,cAAc,CAAC,UAAU;AAAA,SAC/B,MAAM,WAAW,CAAC,UAAU;AAAA,SAC5B,MAAM,OAAO,CAAC,UAAU;AAAA,SAExB,OAAO,CAAC,UAAU;AAAA,SAElB,OAAO,CAAC,UAAU;AAAA,SAElB,OAAO,CAAC,UAAU;AAAA,SAElB,OAAO,CAAC,UAAU;AAAA,SAElB,OAAO,CAAC,UAAU;AAAA,MACrB;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AAAA,MACjB,SAAS;AAAA,MACT,SAAS;AAAA,SACN,MAAM,YAAY,CAAC,UAAU;AAAA,SAC7B,MAAM,cAAc,CAAC,UAAU;AAAA,SAC/B,MAAM,WAAW,CAAC,UAAU;AAAA,SAC5B,MAAM,OAAO,CAAC,UAAU;AAAA,SAExB,OAAO,CAAC,UAAU;AAAA,SAElB,OAAO,CAAC,UAAU;AAAA,SAElB,OAAO,CAAC,UAAU;AAAA,SAElB,OAAO,CAAC,UAAU;AAAA,SAElB,OAAO,CAAC,UAAU;AAAA,MACrB;AAAA,IACF;AAAA;AAAA,UAEM,cAAc;AAAA,EACtB;AAAA,EACA;AAAA,OACM,QAAO,CAAC,oBAAoB,CAAC,GAAG;AAAA,IACpC,MAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAAA,IAC9D,KAAK,OAAO,SAAS,KAAK,aAAa,MAAM;AAAA,IAC7C,QAAQ,QAAQ,QAAQ,aAAa,qBAAqB,oBAAoB,aAAa,mBAAmB;AAAA,IAC9G,IAAI,CAAC,UAAU,CAAC,oBAAoB;AAAA,MAClC,OAAO,KAAK,eAAe,aAAa,QAAQ,YAAY;AAAA,QAC1D,OAAO,MAAM,OAAO,MAAM,aAAa,QAAQ,cAAc;AAAA,OAC9D;AAAA,IACH;AAAA,IACA,MAAM,SAAS,MAAM,KAAK,eAAe,aAAa,QAAQ,YAAY;AAAA,MACxE,OAAO,MAAM,OAAO,MAAM,aAAa,QAAQ,WAAW;AAAA,KAC3D;AAAA,IACD,OAAO,qBAAqB,mBAAmB,OAAO,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,aAAa,QAAQ,KAAK,mBAAmB,CAAC;AAAA;AAAA,EAEvI,GAAG,CAAC,oBAAoB,CAAC,GAAG;AAAA,IAC1B,MAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAAA,IAC9D,KAAK,OAAO,SAAS,KAAK,aAAa,MAAM;AAAA,IAC7C,OAAO,KAAK,eAAe,KAAK,aAAa,QAAQ,YAAY;AAAA,MAC/D,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK,aAAa,QAAQ,KAAK,cAAc;AAAA,KAC7E,EAAE,KAAK,CAAC,WAAW,OAAO,IAAI;AAAA;AAAA,EAGjC,qBAAqB,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA;AAEhB;AAAA;AACA,MAAM,sBAAsB,UAAU;AAAA,EACpC,WAAW,CAAC,QAAQ,UAAS,SAAQ,UAAU,CAAC,GAAG;AAAA,IACjD,MAAM,QAAO;AAAA,IACb,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,SAAS,QAAQ,UAAU,IAAI;AAAA,IACpC,KAAK,QAAQ,QAAQ,SAAS,IAAI;AAAA;AAAA,UAE5B,cAAc;AAAA,EACtB;AAAA,EACA;AAAA,EACA,YAAY,CAAC,OAAO,QAAQ,MAAM,uBAAuB,oBAAoB,eAAe,aAAa;AAAA,IACvG,OAAO,IAAI,oBACT,KAAK,QACL,MAAM,KACN,MAAM,QACN,KAAK,QACL,KAAK,OACL,eACA,aACA,QACA,MACA,uBACA,kBACF;AAAA;AAAA,OAEI,YAAW,CAAC,aAAa,QAAQ;AAAA,IACrC,OAAO,KAAK,OAAO,YAAY,OAAO,WAAW;AAAA,MAC/C,MAAM,WAAU,IAAI,cAClB,QACA,KAAK,SACL,KAAK,QACL,KAAK,OACP;AAAA,MACA,MAAM,KAAK,IAAI,kBAAkB,KAAK,SAAS,UAAS,KAAK,MAAM;AAAA,MACnE,IAAI,QAAQ;AAAA,QACV,MAAM,GAAG,eAAe,MAAM;AAAA,MAChC;AAAA,MACA,OAAO,YAAY,EAAE;AAAA,KACtB;AAAA;AAAA,OAEG,MAAK,CAAC,OAAM;AAAA,IAChB,MAAM,MAAM,MAAM,KAAK,QAAQ,KAAI;AAAA,IACnC,OAAO,OACL,IAAI,QAAQ,GAAG,QACjB;AAAA;AAEJ;AAAA;AACA,MAAM,0BAA0B,cAAc;AAAA,UACpC,cAAc;AAAA,OAChB,YAAW,CAAC,aAAa;AAAA,IAC7B,MAAM,gBAAgB,KAAK,KAAK,cAAc;AAAA,IAC9C,MAAM,KAAK,IAAI,kBACb,KAAK,SACL,KAAK,SACL,KAAK,QACL,KAAK,cAAc,CACrB;AAAA,IACA,MAAM,GAAG,QAAQ,IAAI,IAAI,aAAa,eAAe,CAAC;AAAA,IACtD,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,YAAY,EAAE;AAAA,MACnC,MAAM,GAAG,QAAQ,IAAI,IAAI,qBAAqB,eAAe,CAAC;AAAA,MAC9D,OAAO;AAAA,MACP,OAAO,KAAK;AAAA,MACZ,MAAM,GAAG,QAAQ,IAAI,IAAI,yBAAyB,eAAe,CAAC;AAAA,MAClE,MAAM;AAAA;AAAA;AAGZ;;;ADhJA,MAAM,aAAa;AAAA,EACjB,WAAW,CAAC,QAAQ,UAAS,UAAU,CAAC,GAAG;AAAA,IACzC,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA;AAAA,UAET,cAAc;AAAA,EACtB,aAAa,CAAC,SAAQ;AAAA,IACpB,OAAO,IAAI,cAAc,KAAK,QAAQ,KAAK,SAAS,SAAQ;AAAA,MAC1D,QAAQ,KAAK,QAAQ;AAAA,MACrB,OAAO,KAAK,QAAQ;AAAA,IACtB,CAAC;AAAA;AAEL;AAAA;AACA,MAAM,uBAAuB,WAAW;AAAA,UAC9B,cAAc;AACxB;AACA,SAAS,SAAS,CAAC,QAAQ,SAAS,CAAC,GAAG;AAAA,EACtC,MAAM,WAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AAAA,EACvD,IAAI;AAAA,EACJ,IAAI,OAAO,WAAW,MAAM;AAAA,IAC1B,SAAS,IAAI;AAAA,EACf,EAAO,SAAI,OAAO,WAAW,OAAO;AAAA,IAClC,SAAS,OAAO;AAAA,EAClB;AAAA,EACA,IAAI;AAAA,EACJ,IAAI,OAAO,QAAQ;AAAA,IACjB,MAAM,eAAe,8BACnB,OAAO,QACP,2BACF;AAAA,IACA,UAAS;AAAA,MACP,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,MAAM,SAAS,IAAI,aAAa,QAAQ,UAAS,EAAE,QAAQ,OAAO,OAAO,MAAM,CAAC;AAAA,EAChF,MAAM,WAAU,OAAO,cAAc,OAAM;AAAA,EAC3C,MAAM,MAAK,IAAI,eAAe,UAAS,UAAS,OAAM;AAAA,EACtD,IAAG,UAAU;AAAA,EACb,IAAG,SAAS,OAAO;AAAA,EACnB,IAAI,IAAG,QAAQ;AAAA,IACb,IAAG,OAAO,gBAAgB,OAAO,OAAO;AAAA,EAC1C;AAAA,EACA,OAAO;AAAA;AAET,SAAS,OAAO,IAAI,QAAQ;AAAA,EAC1B,IAAI,OAAO,OAAY,aAAK,OAAO,OAAO,OAAO,UAAU;AAAA,IACzD,MAAM,WAAW,IAAI,OAAO,OAAO,EAAE;AAAA,IACrC,OAAO,UAAU,UAAU,OAAO,EAAE;AAAA,EACtC;AAAA,EACA,IAAI,SAAS,OAAO,EAAE,GAAG;AAAA,IACvB,QAAQ,YAAY,WAAW,kBAAkB,OAAO;AAAA,IACxD,IAAI;AAAA,MAAQ,OAAO,UAAU,QAAQ,aAAa;AAAA,IAClD,IAAI,OAAO,eAAe,UAAU;AAAA,MAClC,QAAQ,YAAY,YAAY;AAAA,MAChC,MAAM,YAAY,IAAI,OAAO,SAAS,OAAO;AAAA,MAC7C,OAAO,UAAU,WAAW,aAAa;AAAA,IAC3C;AAAA,IACA,MAAM,WAAW,IAAI,OAAO,UAAU;AAAA,IACtC,OAAO,UAAU,UAAU,aAAa;AAAA,EAC1C;AAAA,EACA,OAAO,UAAU,OAAO,IAAI,OAAO,EAAE;AAAA;AAAA,CAEtC,CAAC,aAAa;AAAA,EACb,SAAS,IAAI,CAAC,QAAQ;AAAA,IACpB,OAAO,UAAU,CAAC,GAAG,MAAM;AAAA;AAAA,EAE7B,SAAS,OAAO;AAAA,GACf,YAAY,UAAU,CAAC,EAAE;;;AEvD5B;AA1BA;AAAA;AAAA;AAAA,YAQE;AAAA;AAgCF;;;ACxCA;AACA;AACA;;;ACFA;AACA;AAWA;;;ACZA;AACA;AACA;AAMO,IAAM,cAAc,QACzB,YACA;AAAA,EACE,IAAI,KAAK,IAAI,EAAE,QAAQ,EAAE,WAAW;AAAA,EACpC,SAAS,KAAK,UAAU,EACrB,QAAQ,EACR,WAAW,MAAM,WAAW,IAAI;AAAA,IAC/B,UAAU;AAAA,EACZ,CAAC;AAAA,EACH,WAAW,UAAU,YAAY,EAC9B,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,OAAO,KAAK,OAAO,EAChB,MAAM,EACN,QAAQ,iBAAiB,EACzB,QAAQ;AAAA,EACX,UAAU,MAAM,UAAU,EACvB,QAAQ,gBAAgB,EACxB,QAAQ;AACb,GACA,CAAC,WAAU;AAAA,EACT,OAAO;AAAA,IACL,iBAAiB,OAAO,oBAAoB,EAAE,GAAG,OAAM,IAAI,OAAM,OAAO;AAAA,EAC1E;AAAA,CAEJ;;;ACjCA;AACA;AACA;AAiBO,IAAM,YAAY,QAAQ,SAAS;AAAA,EACxC,IAAI,KAAK,IAAI,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,sBAAsB;AAAA,EACjC,SAAS,KAAK,UAAU,EAAE,WAAW,MAAM,WAAW,IAAI;AAAA,IACxD,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,QAAQ,KAAK,QAAQ,EAAE,QAAQ;AAAA,EAC/B,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,iBAAiB,KAAK,mBAAmB;AAAA,EACzC,SAAS,KAAK,UAAU;AAAA,EAIxB,MAAM,KAAK,MAAM;AAAA,EACjB,UAAU,MAAM,UAAU;AAAA,EAC1B,WAAW,KAAK,YAAY;AAAA,EAC5B,WAAW,UAAU,YAAY,EAC9B,QAAQ,UAAU,EAClB,QAAQ;AACb,CAAC;;;AFfM,IAAM,cAAc,QACzB,YACA;AAAA,EACE,IAAI,KAAK,IAAI,EAAE,WAAW,EAAE,QAAQ;AAAA,EACpC,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,WAAW,UAAU,YAAY,EAC9B,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,SAAS,MAAM,SAAS,EAAE,QAAQ;AAAA,EAClC,UAAU,KAAK,WAAW,EAAE,WAAW,MAAM,YAAY,IAAI;AAAA,IAC3D,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,SAAS,KAAK,UAAU,EACrB,WAAW,MAAM,WAAW,IAAI;AAAA,IAC/B,UAAU;AAAA,EACZ,CAAC,EACA,QAAQ;AAAA,EACX,QAAQ,KAAK,SAAS,EAAE,WAAW,MAAM,UAAU,IAAI;AAAA,IACrD,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,SAAS,KAAK,UAAU;AAAA,EAIxB,QAAQ,QAAQ,QAAQ,EAAE,QAAQ,IAAI,EAAE,QAAQ;AAAA,EAChD,UAAU,MAAM,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ;AAClD,GACA,CAAC,WAAU;AAAA,EACT,MAAM,wBAAwB,EAAE,GAAG,OAAM,MAAM,OAAM,MAAM;AAAA,EAC3D,MAAM,uBAAuB,EAAE,GAAG,OAAM,OAAO;AAAA,EAC/C,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,MAAM;AAAA,IACtB,gBAAgB,CAAC,UAAU,EAAE;AAAA,EAC/B,CAAC,EAAE,SAAS,SAAS;AAAA,EACrB,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,QAAQ;AAAA,IACxB,gBAAgB,CAAC,YAAY,EAAE;AAAA,EACjC,CAAC,EAAE,SAAS,SAAS;AAAA,EACrB,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,OAAO;AAAA,IACvB,gBAAgB,CAAC,WAAW,EAAE;AAAA,EAChC,CAAC,EAAE,SAAS,SAAS;AAAA,EAMrB,MAAM,4BAA4B,EAAE,GAAG,0BAA0B;AAAA,EACjE,MAAM,0BAA0B,EAAE,GAAG,gCAAgC;AAAA,EACrE,MAAM,qBAAqB,EAAE,GAC3B,kCACA,8BACF;AAAA,EACA,MACE,2BACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAQF;AAAA,EACA,MACE,2BACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAOF;AACF,CACF;AAEO,IAAM,kBAAkB,UAAU,aAAa,GAAG,WAAW;AAAA,EAClE,WAAW,IAAI,cAAc;AAC/B,EAAE;;;ADtGK,IAAM,gBAAgB;AAAA,GAC1B,YAAY,QAAQ;AAAA,GACpB,YAAY,SAAS;AAAA,GACrB,YAAY,QAAQ;AAAA,GACpB,YAAY,KAAK;AAAA,GACjB,YAAY,MAAM;AAAA,GAClB,YAAY,OAAO;AACtB;AAMO,IAAM,iBAAiB,QAC5B,cACA;AAAA,EACE,IAAI,KAAK,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ;AAAA,EACpD,UAAU,KAAK,WAAW,EAAE,WAAW,MAAM,YAAY,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EACpF,WAAW,UAAU,YAAY,EAC9B,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,QAAQ,OAAO,WAAW,EAAE,YAAY,YAAY,MAAM,CAAC;AAAA,EAC3D,QAAQ,OAAO,WAAW,EAAE,YAAY,YAAY,OAAO,CAAC;AAAA,EAC5D,QAAQ,OAAO,WAAW,EAAE,YAAY,YAAY,MAAM,CAAC;AAAA,EAC3D,SAAS,OAAO,YAAY,EAAE,YAAY,YAAY,GAAG,CAAC;AAAA,EAC1D,SAAS,OAAO,YAAY,EAAE,YAAY,YAAY,IAAI,CAAC;AAAA,EAC3D,SAAS,OAAO,YAAY,EAAE,YAAY,YAAY,KAAK,CAAC;AAC9D,GACA,CAAC,WAAU;AAAA,EACT,MAAM,0BAA0B,4BAA4B;AAAA,EAC5D,MAAM,sBAAsB,EAAE,GAAG,OAAM,QAAQ;AAAA,EAC/C,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,QAAQ;AAAA,IACxB,gBAAgB,CAAC,YAAY,EAAE;AAAA,EACjC,CAAC,EAAE,SAAS,SAAS;AACvB,CACF;;;AI1CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AACA;AACA;AAOO,IAAM,aAAa,QACxB,SACA;AAAA,EACE,KAAK,KAAK,KAAK,EAAE,QAAQ;AAAA,EACzB,SAAS,KAAK,UAAU,EACrB,QAAQ,EACR,WAAW,MAAM,WAAW,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC1D,OAAO,MAAM,OAAO,EAAE,QAAQ;AAAA,EAC9B,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EACtD,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC;AAC3D,GACA,CAAC,WAAU,CAAC,WAAW,EAAE,SAAS,CAAC,OAAM,KAAK,OAAM,OAAO,EAAE,CAAC,CAAC,CACjE;;ACvBA;AACA;AACA;;;ACFA;AACA;AACA;AAQO,IAAM,aAAa,QAAQ,UAAU;AAAA,EAC1C,IAAI,KAAK,IAAI,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,sBAAsB;AAAA,EACjC,SAAS,KAAK,UAAU,EACrB,QAAQ,EACR,WAAW,MAAM,WAAW,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC1D,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,UAAU,MAAM,UAAU;AAAA,EAC1B,iBAAiB,KAAK,mBAAmB;AAAA,EACzC,WAAW,UAAU,YAAY,EAC9B,QAAQ,UAAU,EAClB,QAAQ;AACb,CAAC;;;ADdM,IAAM,iBAAiB,QAAQ,cAAc;AAAA,EAClD,IAAI,KAAK,IAAI,EACV,WAAW,EACX,QAAQ,sBAAsB,EAC9B,QAAQ;AAAA,EAGX,UAAU,KAAK,WAAW,EACvB,WAAW,MAAM,YAAY,IAAI,EAAE,UAAU,UAAU,CAAC,EACxD,QAAQ;AAAA,EACX,SAAS,KAAK,UAAU,EACrB,WAAW,MAAM,WAAW,IAAI,EAAE,UAAU,UAAU,CAAC,EACvD,QAAQ;AAAA,EACX,QAAQ,KAAK,SAAS,EACnB,WAAW,MAAM,UAAU,IAAI,EAAE,UAAU,UAAU,CAAC,EACtD,QAAQ;AAAA,EACX,SAAS,KAAK,UAAU,EAAE,WAAW,MAAM,WAAW,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EACjF,gBAAgB,KAAK,kBAAkB,EAAE,WAAW,MAAM,YAAY,IAAI;AAAA,IACxE,UAAU;AAAA,EACZ,CAAC;AAAA,EAGD,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,MAAM,MAAM,MAAM,EAAE,QAAQ,gBAAgB;AAAA,EAG5C,WAAW,UAAU,YAAY,EAC9B,QAAQ,UAAU,EAClB,QAAQ;AACb,CAAC;;AEvCD;AACA;AAUO,IAAM,WAAW,QACtB,QACA;AAAA,EACE,IAAI,KAAK,IAAI,EAAE,cAAc,EAAE,QAAQ;AAAA,EACvC,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EACtD,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,UAAU,KAAK,WAAW,EACvB,QAAQ,EACR,WAAW,MAAM,YAAY,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC3D,MAAM,MAAM,MAAM,EAAE,QAAQ;AAAA,EAC5B,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,QAAQ,KAAK,SAAS,EACnB,QAAQ,EACR,WAAW,MAAM,UAAU,IAAI,EAAE,UAAU,UAAU,CAAC;AAC3D,GACA,CAAC,WAAU;AAAA,EACT,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,MAAM;AAAA,IACtB,gBAAgB,CAAC,UAAU,EAAE;AAAA,EAC/B,CAAC,EAAE,SAAS,SAAS;AAAA,EACrB,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,QAAQ;AAAA,IACxB,gBAAgB,CAAC,YAAY,EAAE;AAAA,EACjC,CAAC,EAAE,SAAS,SAAS;AACvB,CACF;;;AJhCA;;;AKPA;AACA;AACA;AASO,IAAM,mBAAmB,QAC9B,gBACA;AAAA,EACE,IAAI,KAAK,IAAI,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,sBAAsB;AAAA,EACjC,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EACtD,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,UAAU,KAAK,WAAW,EAAE,WAAW,MAAM,YAAY,IAAI;AAAA,IAC3D,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,QAAQ,KAAK,SAAS,EAAE,WAAW,MAAM,UAAU,IAAI;AAAA,IACrD,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,SAAS,KAAK,UAAU,EAAE,WAAW,MAAM,WAAW,IAAI;AAAA,IACxD,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,WAAW,KAAK,YAAY;AAC9B,GACA,CAAC,WAAU;AAAA,EAET,MAAM,uBAAuB,EAAE,GAAG,OAAM,QAAQ;AAAA,EAChD,MAAM,uBAAuB,EAAE,GAAG,OAAM,MAAM;AAAA,EAC9C,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,MAAM;AAAA,IACtB,gBAAgB,CAAC,UAAU,EAAE;AAAA,EAC/B,CAAC,EAAE,SAAS,SAAS;AAAA,EACrB,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,QAAQ;AAAA,IACxB,gBAAgB,CAAC,YAAY,EAAE;AAAA,EACjC,CAAC,EAAE,SAAS,SAAS;AACvB,CACF;;AC/CA;AACA;AAUA;AAOO,IAAM,oBAAoB,QAC/B,iBACA;AAAA,EACE,IAAI,KAAK,IAAI,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,sBAAsB;AAAA,EACjC,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EACtD,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,gBAAgB,KAAK,kBAAkB,EACpC,QAAQ,EACR,WAAW,MAAM,YAAY,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC3D,gBAAgB,KAAK,kBAAkB,EACpC,QAAQ,EACR,WAAW,MAAM,YAAY,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC3D,SAAS,KAAK,UAAU,EACrB,QAAQ,EACR,WAAW,MAAM,WAAW,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC1D,MAAM,KAAK,MAAM,EAAE,MAAM;AAAA,EACzB,UAAU,MAAM,UAAU;AAC5B,GACA,CAAC,WAAU;AAAA,EACT,MAAM,yBAAyB,EAAE,GAAG,OAAM,gBAAgB,OAAM,cAAc;AAAA,EAC9E,OAAO,qBAAqB,EAAE,GAAG,OAAM,gBAAgB,OAAM,gBAAgB,OAAM,OAAO;AAAA,EAC1F,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,cAAc;AAAA,IAC9B,gBAAgB,CAAC,YAAY,EAAE;AAAA,EACjC,CAAC,EAAE,SAAS,SAAS;AAAA,EACrB,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,OAAM,cAAc;AAAA,IAC9B,gBAAgB,CAAC,YAAY,EAAE;AAAA,EACjC,CAAC,EAAE,SAAS,SAAS;AACvB,CACF;;ACtDA;AACA;AACA;AAOO,IAAM,YAAY,QAAQ,SAAS;AAAA,EACxC,IAAI,KAAK,IAAI,EAAE,WAAW,EAAE,cAAc;AAAA,EAC1C,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,aAAa,KAAK,aAAa;AAAA,EAC/B,QAAQ,KAAK,SAAS;AAAA,EACtB,SAAS,KAAK,UAAU;AAAA,EACxB,UAAU,KAAK,WAAW;AAAA,EAC1B,SAAS,KAAK,UAAU,EACrB,QAAQ,EACR,WAAW,MAAM,WAAW,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC1D,MAAM,KAAK,MAAM,EACd,MAAM,EACN,QAAQ,iBAAiB;AAAA,EAC5B,UAAU,MAAM,UAAU,EAAE,QAAQ,gBAAgB;AAAA,EACpD,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,WAAW;AAAA,EACtE,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,WAAW;AACxE,CAAC;;ACzBD;AACA;AAEO,IAAM,qBAAqB,QAAQ,mBAAmB;AAAA,EAC3D,IAAI,KAAK,IAAI,EAAE,WAAW;AAAA,EAC1B,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,YAAY,KAAK,aAAa,EAAE,QAAQ;AAAA,EACxC,UAAU,KAAK,WAAW;AAAA,EAC1B,UAAU,MAAM,UAAU;AAAA,EAC1B,WAAW,UAAU,cAAc,EAAE,MAAM,OAAO,CAAC,EAChD,QAAQ,sBAAsB,EAC9B,QAAQ;AAAA,EACX,WAAW,UAAU,cAAc,EAAE,MAAM,OAAO,CAAC,EAChD,QAAQ,sBAAsB,EAC9B,QAAQ;AACb,CAAC;;ACfD;AACA;AAGO,IAAM,eAAe,QAAQ,YAAY;AAAA,EAC9C,IAAI,KAAK,IAAI,EAAE,WAAW;AAAA,EAC1B,iBAAiB,KAAK,mBAAmB,EACtC,QAAQ,EACR,WAAW,MAAM,mBAAmB,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAClE,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA,EAC3B,YAAY,KAAK,aAAa;AAAA,EAC9B,UAAU,KAAK,WAAW;AAAA,EAC1B,OAAO,KAAK,OAAO;AAAA,EACnB,UAAU,MAAM,UAAU;AAAA,EAE1B,WAAW,UAAU,cAAc,EAAE,MAAM,OAAO,CAAC,EAChD,QAAQ,sBAAsB,EAC9B,QAAQ;AAAA,EACX,WAAW,UAAU,cAAc,EAAE,MAAM,OAAO,CAAC,EAChD,QAAQ,sBAAsB,EAC9B,QAAQ;AACb,CAAC;;ACtBD;AACA;AAGO,IAAM,eAAe,QAAQ,oBAAoB;AAAA,EACtD,IAAI,KAAK,IAAI,EAAE,WAAW;AAAA,EAC1B,WAAW,KAAK,YAAY,EACzB,QAAQ,EACR,WAAW,MAAM,aAAa,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC5D,UAAU,KAAK,WAAW,EAAE,QAAQ;AAAA,EACpC,SAAS,KAAK,SAAS,EAAE,QAAQ;AAAA,EACjC,YAAY,MAAM,aAAa;AAAA,EAC/B,wBAAwB,KAAK,6BAA6B,EAAE,WAAW,MAAM,aAAa,IAAI;AAAA,IAC5F,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,YAAY,KAAK,aAAa;AAAA,EAC9B,UAAU,KAAK,WAAW;AAAA,EAC1B,UAAU,MAAM,UAAU;AAAA,EAC1B,WAAW,UAAU,cAAc,EAAE,MAAM,OAAO,CAAC,EAChD,QAAQ,sBAAsB,EAC9B,QAAQ;AAAA,EACX,WAAW,UAAU,cAAc,EAAE,MAAM,OAAO,CAAC,EAChD,QAAQ,sBAAsB,EAC9B,QAAQ;AACb,CAAC;;ACxBD;AAGO,IAAM,2BAA2B,QACtC,wBACA;AAAA,EACE,WAAW,KAAK,YAAY,EACzB,QAAQ,EACR,WAAW,MAAM,aAAa,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAC5D,UAAU,KAAK,WAAW,EAAE,QAAQ;AACtC,GACA,CAAC,WAAU,CAAC,WAAW,EAAE,SAAS,CAAC,OAAM,WAAW,OAAM,QAAQ,EAAE,CAAC,CAAC,CACxE;;ACZA;AAEA;AAEO,IAAM,2BAA2B,QACtC,yBACA;AAAA,EACE,iBAAiB,KAAK,mBAAmB,EACtC,QAAQ,EACR,WAAW,MAAM,mBAAmB,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA,EAClE,SAAS,KAAK,UAAU,EACrB,QAAQ,EACR,WAAW,MAAM,WAAW,IAAI,EAAE,UAAU,UAAU,CAAC;AAC5D,GACA,CAAC,WAAU,CAAC,WAAW,EAAE,SAAS,CAAC,OAAM,iBAAiB,OAAM,OAAO,EAAE,CAAC,CAAC,CAC7E;;AjByEO,MAAe,2BAA2B,gBAAqB;AAAA,EACjD,aAAqB;AAAA,EACrB,YAAoB;AAAA,EACpB,WAAmB;AAAA,EACnB,YAAoB;AAAA,EAC7B,qBAA+C,cAAc;AAAA,EAC7D;AAAA,OAuBG,WAAU,GAAkB;AAAA,IACvC,MAAM,KAAK,KAAK;AAAA;AAAA,OAQL,oBAAmB,CAC9B,SACA,SAKe;AAAA,IAEf,IAAI,CAAC,KAAK,kBAAkB;AAAA,MAC1B,QAAQ,wDAA6B;AAAA,MACrC,KAAK,mBAAmB,IAAI;AAAA,MAC5B,MAAM,KAAK,iBAAiB,uBAAuB,KAAK,EAAE;AAAA,IAC5D;AAAA,IAGA,WAAW,UAAU,SAAS;AAAA,MAC5B,IAAI,OAAO,QAAQ;AAAA,QACjB,KAAK,iBAAiB,eAAe,OAAO,MAAM,OAAO,MAAM;AAAA,MACjE;AAAA,IACF;AAAA,IAGA,MAAM,KAAK,iBAAiB,uBAAuB,OAAO;AAAA;AAAA,EAMrD,WAAW,GAAY;AAAA,IAC5B,OAAO,KAAK;AAAA;AAAA,EAGJ;AAAA,EAOV,WAAW,CAAC,SAAe;AAAA,IACzB,MAAM;AAAA,IACN,KAAK,UAAU;AAAA;AAAA,EAWT,oBAAoB,CAAC,OAA0B;AAAA,IAErD,IAAI,SAAS,MAAM;AAAA,MACjB,OAAO,CAAC;AAAA,IACV;AAAA,IAGA,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,OAAO,CAAC,KAAK;AAAA,IACf;AAAA,IAGA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,OAAO,MAAM,IAAI,MAAM;AAAA,IACzB;AAAA,IAGA,IAAI,iBAAiB,KAAK;AAAA,MACxB,OAAO,MAAM,KAAK,KAAK,EAAE,IAAI,MAAM;AAAA,IACrC;AAAA,IAIA,IAAI,OAAO,UAAU,YAAY,OAAO,MAAM,OAAO,cAAc,YAAY;AAAA,MAC7E,OAAO,MAAM,KAAK,KAA0B,EAAE,IAAI,MAAM;AAAA,IAC1D;AAAA,IAGA,OAAO,CAAC,OAAO,KAAK,CAAC;AAAA;AAAA,OASP,UAAY,CAAC,WAAyC;AAAA,IACpE,IAAI,YAAmB,IAAI,MAAM,eAAe;AAAA,IAEhD,SAAS,UAAU,EAAG,WAAW,KAAK,YAAY,WAAW;AAAA,MAC3D,IAAI;AAAA,QACF,OAAO,MAAM,UAAU;AAAA,QACvB,OAAO,OAAO;AAAA,QACd,YAAY;AAAA,QAEZ,IAAI,UAAU,KAAK,YAAY;AAAA,UAC7B,MAAM,eAAe,KAAK,IAAI,KAAK,YAAY,MAAM,UAAU,IAAI,KAAK,QAAQ;AAAA,UAEhF,MAAM,SAAS,KAAK,OAAO,IAAI,KAAK;AAAA,UACpC,MAAM,QAAQ,eAAe;AAAA,UAE7B,SAAO,KACL;AAAA,YACE,KAAK;AAAA,YACL;AAAA,YACA,YAAY,KAAK;AAAA,YACjB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC9D,GACA,qCACF;AAAA,UAEA,MAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,KAAK,CAAC;AAAA,QAC3D,EAAO;AAAA,UACL,SAAO,MACL;AAAA,YACE,KAAK;AAAA,YACL,eAAe;AAAA,YACf,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC9D,GACA,4BACF;AAAA,UACA,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA;AAAA,IAGpE;AAAA,IAEA,MAAM;AAAA;AAAA,OASF,yBAAwB,CAAC,WAAmB;AAAA,IAChD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,iBAAiB,MAAM,KAAK,GAC/B,OAAO,EACP,KAAK,WAAW,EAChB,UAAU,gBAAgB,GAAG,eAAe,UAAU,YAAY,EAAE,CAAC,EACrE,MAAM,GAAG,YAAY,SAAS,KAAK,OAAO,CAAC,EAC3C,MAAM,CAAC;AAAA,MAEV,IAAI,eAAe,SAAS,GAAG;AAAA,QAO7B,MAAM,eAAe,eAAe;AAAA,QACpC,OAAO,QAAQ,aAAa,EAAE,KAAK,EAAE,GAAG,aAAa;AAAA,UACnD,MAAM,eAAe;AAAA,UACrB,OAAO,aAAa,WAAW,kBAAkB;AAAA,SAClD;AAAA,MAEH;AAAA,MAEA,KAAK,qBAAqB,cAAc;AAAA,KACzC;AAAA;AAAA,OAQG,SAAQ,CAAC,SAAsC;AAAA,IACnD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,OAAO,MAAM,KAAK,GACrB,OAAO,EACP,KAAK,UAAU,EACf,MAAM,GAAG,WAAW,IAAI,OAAO,CAAC,EAChC,MAAM,CAAC;AAAA,MAEV,IAAI,KAAK,WAAW;AAAA,QAAG,OAAO;AAAA,MAE9B,MAAM,MAAM,KAAK;AAAA,MACjB,OAAO;AAAA,WACF;AAAA,QACH,UAAU,IAAI,YAAY;AAAA,QAC1B,IAAI,IAAI;AAAA,QACR,QAAQ,CAAC,IAAI,SAAS,YAAY,IAAI;AAAA,QACtC,KAAK,CAAC,IAAI,MAAM,KAAK,IAAI;AAAA,QACzB,WAAW,IAAI,UAAU,QAAQ;AAAA,QACjC,WAAW,IAAI,UAAU,QAAQ;AAAA,MACnC;AAAA,KACD;AAAA;AAAA,OAQG,UAAS,GAA8B;AAAA,IAC3C,MAAM,SAAS,MAAM,KAAK,aAAa,YAAY;AAAA,MACjD,MAAM,OAAO,MAAM,KAAK,GACrB,OAAO;AAAA,QACN,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,KAAK,WAAW;AAAA,MAClB,CAAC,EACA,KAAK,UAAU;AAAA,MAClB,OAAO,KAAK,IAAI,CAAC,SAAS;AAAA,WACrB;AAAA,QACH,IAAI,IAAI;AAAA,QACR,KAAK,IAAI,QAAQ,OAAO,KAAK,IAAI;AAAA,MACnC,EAAE;AAAA,KACH;AAAA,IAED,OAAO,UAAU,CAAC;AAAA;AAAA,OAQd,YAAW,CAAC,OAAgC;AAAA,IAChD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QAEF,IAAI,MAAM,IAAI;AAAA,UACZ,MAAM,WAAW,MAAM,KAAK,GACzB,OAAO,EAAE,IAAI,WAAW,GAAG,CAAC,EAC5B,KAAK,UAAU,EACf,MAAM,GAAG,WAAW,IAAI,MAAM,EAAE,CAAC,EACjC,MAAM,CAAC;AAAA,UAEV,IAAI,SAAS,SAAS,GAAG;AAAA,YACvB,SAAO,KACL,EAAE,KAAK,cAAc,SAAS,MAAM,GAAG,GACvC,6CACF;AAAA,YACA,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QAEA,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,UACtC,MAAM,GAAG,OAAO,UAAU,EAAE,OAAO;AAAA,eAC9B;AAAA,YACH,WAAW,IAAI,KAAK,MAAM,aAAa,KAAK,IAAI,CAAC;AAAA,YACjD,WAAW,IAAI,KAAK,MAAM,aAAa,KAAK,IAAI,CAAC;AAAA,UACnD,CAAC;AAAA,SACF;AAAA,QAED,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,SAAS,MAAM;AAAA,UACf,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,wBACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OASG,YAAW,CAAC,SAAe,OAAyC;AAAA,IACxE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,MAAM,iCAAiC;AAAA,QACnD;AAAA,QAEA,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,UAEtC,IAAI,OAAO,UAAU;AAAA,YACnB,MAAM,WAAW,MAAM,KAAK,mBAAmB,IAAI,SAAS,MAAM,QAAQ;AAAA,UAC5E;AAAA,UAIA,MAAM,aAAsC,KAAK,MAAM;AAAA,UAEvD,IAAI,WAAW,WAAW;AAAA,YACxB,IAAI,OAAO,WAAW,cAAc,UAAU;AAAA,cAC5C,WAAW,YAAY,IAAI,KAAK,WAAW,SAAS;AAAA,YACtD,EAAO;AAAA,cACL,OAAO,WAAW;AAAA;AAAA,UAEtB;AAAA,UACA,IAAI,WAAW,WAAW;AAAA,YACxB,IAAI,OAAO,WAAW,cAAc,UAAU;AAAA,cAC5C,WAAW,YAAY,IAAI,KAAK,WAAW,SAAS;AAAA,YACtD,EAAO;AAAA,cACL,WAAW,YAAY,IAAI;AAAA;AAAA,UAE/B,EAAO;AAAA,YACL,WAAW,YAAY,IAAI;AAAA;AAAA,UAG7B,MAAM,GAAG,OAAO,UAAU,EAAE,IAAI,UAAU,EAAE,MAAM,GAAG,WAAW,IAAI,OAAO,CAAC;AAAA,SAC7E;AAAA,QAED,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL;AAAA,UACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,wBACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAYW,mBAAqD,CACjE,IACA,SACA,iBACY;AAAA,IAEZ,MAAM,eAAe,MAAM,GACxB,OAAO,EAAE,UAAU,WAAW,SAAS,CAAC,EACxC,KAAK,UAAU,EACf,MAAM,GAAG,WAAW,IAAI,OAAO,CAAC,EAChC,MAAM,CAAC;AAAA,IAEV,MAAM,kBACJ,aAAa,SAAS,KAAK,aAAa,GAAG,WAAW,aAAa,GAAG,WAAW,CAAC;AAAA,IAEpF,MAAM,YAAY,CAChB,QACA,WACwC;AAAA,MAIxC,IAAI,WAAW,MAAM;AAAA,QAGnB;AAAA,MACF;AAAA,MAGA,IAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,UAAU;AAAA,QACvD,OAAO;AAAA,MACT;AAAA,MAGA,MAAM,SACJ,OAAO,WAAW,YAAY,WAAW,QAAQ,CAAC,MAAM,QAAQ,MAAM,IAClE,KAAK,OAAO,IACZ,CAAC;AAAA,MAEP,WAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AAAA,QAErC,MAAM,cAAc,OAAO;AAAA,QAE3B,IAAI,gBAAgB,MAAM;AAAA,UAExB,OAAO,OAAO;AAAA,QAChB,EAAO,SAAI,OAAO,gBAAgB,YAAY,CAAC,MAAM,QAAQ,WAAW,GAAG;AAAA,UAEzE,MAAM,oBAAoB,UAAU,OAAO,MAAM,WAAsC;AAAA,UACvF,IAAI,sBAAsB,WAAW;AAAA,YAEnC,OAAO,OAAO;AAAA,UAChB,EAAO;AAAA,YACL,OAAO,OAAO;AAAA;AAAA,QAElB,EAAO;AAAA,UAEL,OAAO,OAAO;AAAA;AAAA,MAElB;AAAA,MAKA,IAAI,OAAO,KAAK,MAAM,EAAE,WAAW,GAAG;AAAA,QAGpC,IAAI,EAAE,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,KAAK,MAAM,EAAE,WAAW,IAAI;AAAA,UACxF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,OAAO;AAAA;AAAA,IAGT,MAAM,gBAAgB,UAAU,iBAAiB,eAAe;AAAA,IAGhE,OAAQ,iBAAiB,CAAC;AAAA;AAAA,OAStB,YAAW,CAAC,SAAiC;AAAA,IACjD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QAEF,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,UAAU,EACjB,MAAM,GAAG,WAAW,IAAI,OAAO,CAAC,EAChC,UAAU;AAAA,QAEb,IAAI,OAAO,WAAW,GAAG;AAAA,UACvB,SAAO,KAAK,EAAE,KAAK,cAAc,QAAQ,GAAG,8BAA8B;AAAA,UAC1E,OAAO;AAAA,QACT;AAAA,QAEA,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL;AAAA,UACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,wBACF;AAAA,QACA,MAAM;AAAA;AAAA,KAET;AAAA;AAAA,OAWG,YAAW,GAAoB;AAAA,IACnC,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,SAAS,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC,EAAE,KAAK,UAAU;AAAA,QAEvE,OAAO,OAAO,IAAI,SAAS;AAAA,QAC3B,OAAO,OAAO;AAAA,QACd,SAAO,MACL,EAAE,KAAK,cAAc,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GACnF,wBACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAQG,cAAa,GAAkB;AAAA,IACnC,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,KAAK,GAAG,OAAO,UAAU;AAAA,QAC/B,OAAO,OAAO;AAAA,QACd,SAAO,MACL,EAAE,KAAK,cAAc,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GACnF,gCACF;AAAA,QACA,MAAM;AAAA;AAAA,KAET;AAAA;AAAA,OAQG,iBAAgB,CAAC,WAA6C;AAAA,IAClE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO;AAAA,QACN,QAAQ;AAAA,QACR,YAAY;AAAA,MACd,CAAC,EACA,KAAK,WAAW,EAChB,SAAS,gBAAgB,GAAG,eAAe,UAAU,YAAY,EAAE,CAAC,EACpE,MAAM,QAAQ,YAAY,IAAI,SAAS,CAAC;AAAA,MAE3C,IAAI,OAAO,WAAW;AAAA,QAAG,OAAO,CAAC;AAAA,MAGjC,MAAM,WAAiC,CAAC;AAAA,MACxC,MAAM,mBAAuD,CAAC;AAAA,MAC9D,WAAW,KAAK,QAAQ;AAAA,QACtB,MAAM,MAAM,EAAE,OAAO;AAAA,QACrB,SAAS,OAAO,EAAE;AAAA,QAClB,IAAI,iBAAiB,SAAS;AAAA,UAAW,iBAAiB,OAAO,CAAC;AAAA,QAClE,IAAI,EAAE,YAAY;AAAA,UAEhB,MAAM,kBAAkB,MAAM,QAAQ,EAAE,UAAU,IAAI,EAAE,aAAa,CAAC,EAAE,UAAU;AAAA,UAClF,iBAAiB,OAAO,CAAC,GAAG,iBAAiB,MAAM,GAAG,eAAe;AAAA,QACvE;AAAA,MACF;AAAA,MACA,WAAW,KAAK,OAAO,KAAK,gBAAgB,GAAG;AAAA,QAC7C,SAAS,GAAG,aAAa,iBAAiB;AAAA,MAC5C;AAAA,MAEA,OAAO,OAAO,OAAO,QAAQ;AAAA,KAC9B;AAAA;AAAA,OASG,mBAAkB,CAAC,QAAc,mBAAgD;AAAA,IACrF,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,QAAQ,KAAK,GAChB,OAAO;AAAA,QACN,QAAQ;AAAA,WACJ,qBAAqB,EAAE,YAAY,eAAe;AAAA,MACxD,CAAC,EACA,KAAK,gBAAgB,EACrB,SACC,aACA,IAAI,GAAG,iBAAiB,UAAU,YAAY,EAAE,GAAG,GAAG,YAAY,SAAS,KAAK,OAAO,CAAC,CAC1F;AAAA,MAEF,IAAI,mBAAmB;AAAA,QACrB,MAAM,SAAS,gBAAgB,GAAG,eAAe,UAAU,YAAY,EAAE,CAAC;AAAA,MAC5E;AAAA,MAEA,MAAM,SAAS,MAAM,MAAM,MAAM,GAAG,iBAAiB,QAAQ,MAAM,CAAC;AAAA,MAGpE,MAAM,kBAAkB,IAAI;AAAA,MAE5B,WAAW,OAAO,QAAQ;AAAA,QACxB,IAAI,CAAC,IAAI;AAAA,UAAQ;AAAA,QAEjB,MAAM,WAAW,IAAI,OAAO;AAAA,QAC5B,IAAI,CAAC,gBAAgB,IAAI,QAAQ,GAAG;AAAA,UAClC,MAAM,UAAiB;AAAA,eAClB,IAAI;AAAA,YACP,IAAI;AAAA,YACJ,SAAS,IAAI,OAAO;AAAA,YACpB,UAAU,IAAI,OAAO;AAAA,YACrB,YAAY,oBAAoB,CAAC,IAAI;AAAA,UACvC;AAAA,UACA,gBAAgB,IAAI,UAAU,OAAM;AAAA,QACtC;AAAA,QAEA,IAAI,qBAAqB,IAAI,YAAY;AAAA,UACvC,MAAM,UAAS,gBAAgB,IAAI,QAAQ;AAAA,UAC3C,IAAI,SAAQ;AAAA,YACV,IAAI,CAAC,QAAO,YAAY;AAAA,cACtB,QAAO,aAAa,CAAC;AAAA,YACvB;AAAA,YACA,QAAO,WAAW,KAAK,IAAI,UAAU;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,OAAO,MAAM,KAAK,gBAAgB,OAAO,CAAC;AAAA,KAC3C;AAAA;AAAA,OAQG,eAAc,CAAC,UAAsC;AAAA,IACzD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,OAAO,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,UAE7C,MAAM,qBAAqB,SAAS,IAAI,CAAC,aAAY;AAAA,eAChD;AAAA,YACH,OAAO,KAAK,qBAAqB,QAAO,KAAK;AAAA,YAC7C,UAAU,QAAO,YAAY,CAAC;AAAA,UAChC,EAAE;AAAA,UAEF,MAAM,GAAG,OAAO,WAAW,EAAE,OAAO,kBAAkB;AAAA,UAEtD,OAAO;AAAA,SACR;AAAA,QACD,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,UAAU,SAAS,IAAI;AAAA,UACvB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,2BACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAQa,mBAAkB,CAAC,SAAkC;AAAA,IACnE,IAAI,CAAC,QAAO,IAAI;AAAA,MACd,SAAO,MAAM,EAAE,KAAK,aAAa,GAAG,8CAA8C;AAAA,MAClF,OAAO;AAAA,IACT;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,mBAAmB,MAAM,KAAK,iBAAiB,CAAC,QAAO,EAAE,CAAC;AAAA,MAEhE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,QAAQ;AAAA,QACjD,OAAO,MAAM,KAAK,eAAe,CAAC,OAAM,CAAC;AAAA,MAC3C;AAAA,MAEA,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,SAAO,MACL;AAAA,QACE,KAAK;AAAA,QACL,UAAU,QAAO;AAAA,QACjB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC9D,GACA,gCACF;AAAA,MACA,OAAO;AAAA;AAAA;AAAA,OASL,aAAY,CAAC,SAA+B;AAAA,IAChD,IAAI,CAAC,QAAO,IAAI;AAAA,MACd,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,OAAO,KAAK,aAAa,YAAY;AAAA,MAEnC,MAAM,mBAAmB;AAAA,WACpB;AAAA,QACH,OAAO,KAAK,qBAAqB,QAAO,KAAK;AAAA,QAC7C,UAAU,QAAO,YAAY,CAAC;AAAA,MAChC;AAAA,MAEA,MAAM,KAAK,GACR,OAAO,WAAW,EAClB,IAAI,gBAAgB,EACpB,MAAM,GAAG,YAAY,IAAI,QAAO,EAAY,CAAC;AAAA,KACjD;AAAA;AAAA,OAQG,aAAY,CAAC,UAA+B;AAAA,IAChD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,QAEtC,MAAM,GACH,OAAO,cAAc,EACrB,MACC,GAAG,GAAG,eAAe,UAAU,QAAQ,GAAG,GAAG,eAAe,gBAAgB,QAAQ,CAAC,CACvF;AAAA,QAGF,MAAM,GAAG,OAAO,WAAW,EAAE,MAAM,GAAG,YAAY,IAAI,QAAQ,CAAC;AAAA,OAChE;AAAA,KACF;AAAA;AAAA,OAUG,mBAAkB,CAAC,QAA+D;AAAA,IACtF,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,QAAQ,OAAO,YAAY;AAAA,MAG3B,MAAM,iBAAiB,MAAM,IAAI,CAAC,SAAS,MAAM,cAAc,YAAY,QAAQ;AAAA,MAEnF,MAAM,QAAQ;AAAA,wBACI;AAAA,gBACR,YAAY,aAAa;AAAA,eAC1B,IAAI,KAAK,gBAAgB,SAAS;AAAA;AAAA,MAG3C,MAAM,SAAS,MAAM,KAAK,GAAG,QAAQ,KAAK;AAAA,MAE1C,OAAO,OAAO,KAAK,IAAI,CAAC,SAAkC;AAAA,QACxD,IAAI,IAAI;AAAA,QACR,SAAS,IAAI;AAAA,QACb,OAAO,IAAI,SAAS,CAAC;AAAA,QACrB,UAAU,IAAI,YAAY,CAAC;AAAA,MAC7B,EAAE;AAAA,KACH;AAAA;AAAA,OAWG,qBAAoB,CAAC,QAIL;AAAA,IACpB,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,QAAQ,OAAO,SAAS,QAAQ,OAAO;AAAA,MAGvC,IAAI,CAAC,SAAS,MAAM,KAAK,MAAM,IAAI;AAAA,QACjC,MAAM,UAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,WAAW,EAChB,MAAM,GAAG,YAAY,SAAS,OAAO,CAAC,EACtC,MAAM,KAAK;AAAA,QAEd,OAAO,QAAO,IAAI,CAAC,SAAkC;AAAA,UACnD,IAAI,IAAI;AAAA,UACR,SAAS,IAAI;AAAA,UACb,OAAO,IAAI,SAAS,CAAC;AAAA,UACrB,UAAU,IAAI,YAAY,CAAC;AAAA,QAC7B,EAAE;AAAA,MACJ;AAAA,MAGA,MAAM,cAAc;AAAA,wBACF;AAAA,gBACR,YAAY,aAAa;AAAA;AAAA,iCAER,YAAY;AAAA,yCACJ,MAAM,QAAQ;AAAA;AAAA,gBAEvC;AAAA;AAAA,MAGV,MAAM,SAAS,MAAM,KAAK,GAAG,QAAQ,WAAW;AAAA,MAEhD,OAAO,OAAO,KAAK,IAAI,CAAC,SAAkC;AAAA,QACxD,IAAI,IAAI;AAAA,QACR,SAAS,IAAI;AAAA,QACb,OAAO,IAAI,SAAS,CAAC;AAAA,QACrB,UAAU,IAAI,YAAY,CAAC;AAAA,MAC7B,EAAE;AAAA,KACH;AAAA;AAAA,OAGG,aAAY,CAChB,UACA,MACA,SACA,gBAC2B;AAAA,IAC3B,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,cAAa,CAAC,GAAG,eAAe,UAAU,QAAQ,GAAG,GAAG,eAAe,MAAM,IAAI,CAAC;AAAA,MAExF,IAAI,SAAS;AAAA,QACX,YAAW,KAAK,GAAG,eAAe,SAAS,OAAO,CAAC;AAAA,MACrD;AAAA,MAEA,IAAI,gBAAgB;AAAA,QAClB,YAAW,KAAK,GAAG,eAAe,gBAAgB,cAAc,CAAC;AAAA,MACnE;AAAA,MAEA,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,cAAc,EACnB,MAAM,IAAI,GAAG,WAAU,CAAC;AAAA,MAE3B,IAAI,OAAO,WAAW;AAAA,QAAG,OAAO;AAAA,MAEhC,MAAM,YAAY,OAAO;AAAA,MAEzB,OAAO;AAAA,WACF;AAAA,QACH,IAAI,UAAU;AAAA,QACd,UAAU,UAAU;AAAA,QACpB,SAAS,UAAU;AAAA,QACnB,QAAQ,UAAU;AAAA,QAClB,SAAU,UAAU,WAAW;AAAA,QAC/B,gBAAiB,UAAU,kBAAkB;AAAA,QAC7C,MAAM,UAAU;AAAA,QAChB,WAAW,UAAU,UAAU,QAAQ;AAAA,MACzC;AAAA,KACD;AAAA;AAAA,OAUG,cAAa,CAAC,UAAgB,SAAgB,gBAA6C;AAAA,IAC/F,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,cAAa,CAAC,GAAG,eAAe,UAAU,QAAQ,CAAC;AAAA,MAEzD,IAAI,SAAS;AAAA,QACX,YAAW,KAAK,GAAG,eAAe,SAAS,OAAO,CAAC;AAAA,MACrD;AAAA,MAEA,IAAI,gBAAgB;AAAA,QAClB,YAAW,KAAK,GAAG,eAAe,gBAAgB,cAAc,CAAC;AAAA,MACnE;AAAA,MAEA,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO;AAAA,QACN,IAAI,eAAe;AAAA,QACnB,UAAU,eAAe;AAAA,QACzB,MAAM,eAAe;AAAA,QACrB,MAAM,eAAe;AAAA,QACrB,SAAS,eAAe;AAAA,QACxB,SAAS,eAAe;AAAA,QACxB,QAAQ,eAAe;AAAA,QACvB,gBAAgB,eAAe;AAAA,QAC/B,WAAW,eAAe;AAAA,MAC5B,CAAC,EACA,KAAK,cAAc,EACnB,MAAM,IAAI,GAAG,WAAU,CAAC;AAAA,MAE3B,IAAI,OAAO,WAAW;AAAA,QAAG,OAAO,CAAC;AAAA,MAEjC,MAAM,aAAa,OAAO,IAAI,CAAC,eAAe;AAAA,WACzC;AAAA,QACH,IAAI,UAAU;AAAA,QACd,UAAU,UAAU;AAAA,QACpB,SAAS,UAAU;AAAA,QACnB,QAAQ,UAAU;AAAA,QAClB,SAAU,UAAU,WAAW;AAAA,QAC/B,gBAAiB,UAAU,kBAAkB;AAAA,QAC7C,MAAM,UAAU;AAAA,QAChB,WAAW,UAAU,UAAU,QAAQ;AAAA,MACzC,EAAE;AAAA,MAEF,OAAO;AAAA,KACR;AAAA;AAAA,OAQG,gBAAe,CAAC,WAAwC;AAAA,IAC5D,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,OAAO,cAAc,EAAE,OAAO;AAAA,WACvC;AAAA,QACH,WAAW,IAAI;AAAA,MACjB,CAAC;AAAA,MACD,OAAO;AAAA,KACR;AAAA;AAAA,OAQG,gBAAe,CAAC,WAAqC;AAAA,IACzD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,KAAK,GACR,OAAO,cAAc,EACrB,IAAI;AAAA,aACA;AAAA,UACH,WAAW,IAAI;AAAA,QACjB,CAAC,EACA,MAAM,GAAG,eAAe,IAAI,UAAU,EAAE,CAAC;AAAA,QAC5C,OAAO,GAAG;AAAA,QACV,QAAQ,MAAM,yBAAyB,CAAC;AAAA;AAAA,KAE3C;AAAA;AAAA,OAQG,gBAAe,CAAC,aAAkC;AAAA,IACtD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,OAAO,cAAc,EAAE,MAAM,GAAG,eAAe,IAAI,WAAW,CAAC;AAAA,KAC9E;AAAA;AAAA,OAeG,YAAW,CAAC,QAWI;AAAA,IACpB,QAAQ,UAAU,SAAS,QAAQ,SAAS,WAAW,iBAAQ,OAAO,KAAK,WAAW;AAAA,IAEtF,IAAI,CAAC;AAAA,MAAW,MAAM,IAAI,MAAM,uBAAuB;AAAA,IACvD,IAAI,WAAW,aAAa,SAAS,GAAG;AAAA,MACtC,MAAM,IAAI,MAAM,sCAAsC;AAAA,IACxD;AAAA,IAEA,OAAO,KAAK,qBAAqB,YAAY,MAAM,OAAO,OAAO;AAAA,MAC/D,MAAM,cAAa,CAAC,GAAG,YAAY,MAAM,SAAS,CAAC;AAAA,MAEnD,IAAI,OAAO;AAAA,QACT,YAAW,KAAK,IAAI,YAAY,WAAW,IAAI,KAAK,KAAK,CAAC,CAAC;AAAA,MAC7D;AAAA,MAKA,IAAI,QAAQ;AAAA,QACV,YAAW,KAAK,GAAG,YAAY,QAAQ,MAAM,CAAC;AAAA,MAChD;AAAA,MAGA,IAAI,SAAS;AAAA,QACX,YAAW,KAAK,GAAG,YAAY,SAAS,OAAO,CAAC;AAAA,MAClD;AAAA,MAEA,IAAI,KAAK;AAAA,QACP,YAAW,KAAK,IAAI,YAAY,WAAW,IAAI,KAAK,GAAG,CAAC,CAAC;AAAA,MAC3D;AAAA,MAEA,IAAI,SAAQ;AAAA,QACV,YAAW,KAAK,GAAG,YAAY,QAAQ,IAAI,CAAC;AAAA,MAC9C;AAAA,MAEA,IAAI,SAAS;AAAA,QACX,YAAW,KAAK,GAAG,YAAY,SAAS,OAAO,CAAC;AAAA,MAClD;AAAA,MAEA,MAAM,YAAY,GACf,OAAO;AAAA,QACN,QAAQ;AAAA,UACN,IAAI,YAAY;AAAA,UAChB,MAAM,YAAY;AAAA,UAClB,WAAW,YAAY;AAAA,UACvB,SAAS,YAAY;AAAA,UACrB,UAAU,YAAY;AAAA,UACtB,SAAS,YAAY;AAAA,UACrB,QAAQ,YAAY;AAAA,UACpB,QAAQ,YAAY;AAAA,UACpB,UAAU,YAAY;AAAA,QACxB;AAAA,QACA,WAAW,eAAe,KAAK;AAAA,MACjC,CAAC,EACA,KAAK,WAAW,EAChB,SAAS,gBAAgB,GAAG,eAAe,UAAU,YAAY,EAAE,CAAC,EACpE,MAAM,IAAI,GAAG,WAAU,CAAC,EACxB,QAAQ,KAAK,YAAY,SAAS,CAAC;AAAA,MAItC,MAAM,OAAO,OAAO,YAAY;AAAA,QAC9B,IAAI,OAAO,SAAS,WAAW,aAAa,SAAS,GAAG;AAAA,UACtD,OAAO,UAAU,MAAM,OAAO,KAAK,EAAE,OAAO,MAAM;AAAA,QACpD,EAAO,SAAI,OAAO,OAAO;AAAA,UACvB,OAAO,UAAU,MAAM,OAAO,KAAK;AAAA,QACrC,EAAO,SAAI,WAAW,aAAa,SAAS,GAAG;AAAA,UAC7C,OAAO,UAAU,OAAO,MAAM;AAAA,QAChC,EAAO;AAAA,UACL,OAAO;AAAA;AAAA,SAER;AAAA,MAEH,OAAO,KAAK,IAAI,CAAC,SAAS;AAAA,QACxB,IAAI,IAAI,OAAO;AAAA,QACf,MAAM,IAAI,OAAO;AAAA,QACjB,WAAW,IAAI,OAAO,UAAU,QAAQ;AAAA,QACxC,SACE,OAAO,IAAI,OAAO,YAAY,WAC1B,KAAK,MAAM,IAAI,OAAO,OAAO,IAC7B,IAAI,OAAO;AAAA,QACjB,UAAU,IAAI,OAAO;AAAA,QACrB,SAAS,IAAI,OAAO;AAAA,QACpB,QAAQ,IAAI,OAAO;AAAA,QACnB,QAAQ,IAAI,OAAO;AAAA,QACnB,UAAU,IAAI,OAAO;AAAA,QACrB,WAAW,IAAI,YAAY,MAAM,KAAK,IAAI,SAAS,IAAI;AAAA,MACzD,EAAE;AAAA,KACH;AAAA;AAAA,OAWG,qBAAoB,CAAC,QAIL;AAAA,IACpB,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI,OAAO,QAAQ,WAAW;AAAA,QAAG,OAAO,CAAC;AAAA,MAEzC,MAAM,cAAa;AAAA,QACjB,GAAG,YAAY,MAAM,OAAO,SAAS;AAAA,QACrC,QAAQ,YAAY,QAAQ,OAAO,OAAO;AAAA,MAC5C;AAAA,MAEA,YAAW,KAAK,GAAG,YAAY,SAAS,KAAK,OAAO,CAAC;AAAA,MAErD,MAAM,QAAQ,KAAK,GAChB,OAAO;AAAA,QACN,IAAI,YAAY;AAAA,QAChB,MAAM,YAAY;AAAA,QAClB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,UAAU,YAAY;AAAA,QACtB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,QACpB,UAAU,YAAY;AAAA,MACxB,CAAC,EACA,KAAK,WAAW,EAChB,MAAM,IAAI,GAAG,WAAU,CAAC,EACxB,QAAQ,KAAK,YAAY,SAAS,CAAC;AAAA,MAEtC,MAAM,OAAO,OAAO,QAAQ,MAAM,MAAM,MAAM,OAAO,KAAK,IAAI,MAAM;AAAA,MAEpE,OAAO,KAAK,IAAI,CAAC,SAAS;AAAA,QACxB,IAAI,IAAI;AAAA,QACR,WAAW,IAAI,UAAU,QAAQ;AAAA,QACjC,SAAS,OAAO,IAAI,YAAY,WAAW,KAAK,MAAM,IAAI,OAAO,IAAI,IAAI;AAAA,QACzE,UAAU,IAAI;AAAA,QACd,SAAS,IAAI;AAAA,QACb,QAAQ,IAAI;AAAA,QACZ,QAAQ,IAAI;AAAA,QACZ,UAAU,IAAI;AAAA,MAChB,EAAE;AAAA,KACH;AAAA;AAAA,OAQG,cAAa,CAAC,IAAkC;AAAA,IACpD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO;AAAA,QACN,QAAQ;AAAA,QACR,WAAW,eAAe,KAAK;AAAA,MACjC,CAAC,EACA,KAAK,WAAW,EAChB,SAAS,gBAAgB,GAAG,YAAY,IAAI,eAAe,QAAQ,CAAC,EACpE,MAAM,GAAG,YAAY,IAAI,EAAE,CAAC,EAC5B,MAAM,CAAC;AAAA,MAEV,IAAI,OAAO,WAAW;AAAA,QAAG,OAAO;AAAA,MAEhC,MAAM,MAAM,OAAO;AAAA,MACnB,OAAO;AAAA,QACL,IAAI,IAAI,OAAO;AAAA,QACf,WAAW,IAAI,OAAO,UAAU,QAAQ;AAAA,QACxC,SACE,OAAO,IAAI,OAAO,YAAY,WAC1B,KAAK,MAAM,IAAI,OAAO,OAAO,IAC7B,IAAI,OAAO;AAAA,QACjB,UAAU,IAAI,OAAO;AAAA,QACrB,SAAS,IAAI,OAAO;AAAA,QACpB,QAAQ,IAAI,OAAO;AAAA,QACnB,QAAQ,IAAI,OAAO;AAAA,QACnB,UAAU,IAAI,OAAO;AAAA,QACrB,WAAW,IAAI,aAAa;AAAA,MAC9B;AAAA,KACD;AAAA;AAAA,OAUG,iBAAgB,CAAC,WAAmB,WAAuC;AAAA,IAC/E,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI,UAAU,WAAW;AAAA,QAAG,OAAO,CAAC;AAAA,MAEpC,MAAM,cAAa,CAAC,QAAQ,YAAY,IAAI,SAAS,CAAC;AAAA,MAEtD,IAAI,WAAW;AAAA,QACb,YAAW,KAAK,GAAG,YAAY,MAAM,SAAS,CAAC;AAAA,MACjD;AAAA,MAEA,MAAM,OAAO,MAAM,KAAK,GACrB,OAAO;AAAA,QACN,QAAQ;AAAA,QACR,WAAW,eAAe,KAAK;AAAA,MACjC,CAAC,EACA,KAAK,WAAW,EAChB,SAAS,gBAAgB,GAAG,eAAe,UAAU,YAAY,EAAE,CAAC,EACpE,MAAM,IAAI,GAAG,WAAU,CAAC,EACxB,QAAQ,KAAK,YAAY,SAAS,CAAC;AAAA,MAEtC,OAAO,KAAK,IAAI,CAAC,SAAS;AAAA,QACxB,IAAI,IAAI,OAAO;AAAA,QACf,WAAW,IAAI,OAAO,UAAU,QAAQ;AAAA,QACxC,SACE,OAAO,IAAI,OAAO,YAAY,WAC1B,KAAK,MAAM,IAAI,OAAO,OAAO,IAC7B,IAAI,OAAO;AAAA,QACjB,UAAU,IAAI,OAAO;AAAA,QACrB,SAAS,IAAI,OAAO;AAAA,QACpB,QAAQ,IAAI,OAAO;AAAA,QACnB,QAAQ,IAAI,OAAO;AAAA,QACnB,UAAU,IAAI,OAAO;AAAA,QACrB,WAAW,IAAI,aAAa;AAAA,MAC9B,EAAE;AAAA,KACH;AAAA;AAAA,OAcG,oBAAmB,CAAC,MAOwC;AAAA,IAChE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QAKF,MAAM,UAAU,MAAO,KAAK,GAAkC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,8CAKhC,KAAK;AAAA;AAAA;AAAA;AAAA,yCAIV,KAAK;AAAA,8CACA,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAmBb,KAAK;AAAA;AAAA,wCAEH,KAAK,iCAAiC,KAAK;AAAA;AAAA,4BAEvD,KAAK;AAAA,iBAChB;AAAA,QAET,OAAO,QAAQ,KACZ,IAAI,CAAC,SAAS;AAAA,UACb,WAAW,MAAM,QAAQ,IAAI,SAAS,IAClC,IAAI,YACJ,OAAO,IAAI,cAAc,WACvB,KAAK,MAAM,IAAI,SAAS,IACxB,CAAC;AAAA,UACP,mBAAmB,OAAO,IAAI,iBAAiB;AAAA,QACjD,EAAE,EACD,OAAO,CAAC,QAAQ,MAAM,QAAQ,IAAI,SAAS,CAAC;AAAA,QAC/C,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,WAAW,KAAK;AAAA,UAChB,WAAW,KAAK;AAAA,UAChB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,iCACF;AAAA,QACA,IACE,iBAAiB,SACjB,MAAM,YAAY,iEAClB;AAAA,UACA,OAAO,CAAC;AAAA,QACV;AAAA,QACA,MAAM;AAAA;AAAA,KAET;AAAA;AAAA,OAYG,IAAG,CAAC,QAKQ;AAAA,IAChB,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QAEF,MAAM,gBAAgB,KAAK,mBAAmB,OAAO,IAAI;AAAA,QAIzD,MAAM,aAAa,KAAK,UAAU,aAAa;AAAA,QAI/C,MAAM,KAAK,qBAAqB,OAAO,UAAU,OAAO,OAAO;AAAA,UAC7D,MAAM,GAAG,OAAO,QAAQ,EAAE,OAAO;AAAA,YAC/B,MAAM,MAAM;AAAA,YACZ,UAAU,OAAO;AAAA,YACjB,QAAQ,OAAO;AAAA,YACf,MAAM,OAAO;AAAA,UACf,CAAC;AAAA,SACF;AAAA,QACD,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,MAAM,OAAO;AAAA,UACb,QAAQ,OAAO;AAAA,UACf,UAAU,OAAO;AAAA,UACjB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,4BACF;AAAA,QACA,MAAM;AAAA;AAAA,KAET;AAAA;AAAA,EAUK,kBAAkB,CAAC,OAAgB,OAAwB,IAAI,SAAoB;AAAA,IACzF,IAAI,UAAU,QAAQ,UAAU,WAAW;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,OAAO,UAAU,UAAU;AAAA,MAK7B,OAAO,MACJ,QAAQ,WAAW,EAAE,EACrB,QAAQ,uBAAuB,MAAM,EACrC,QAAQ,0BAA0B,OAAO;AAAA,IAC9C;AAAA,IAEA,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,IAAI,KAAK,IAAI,KAAe,GAAG;AAAA,QAC7B,OAAO;AAAA,MACT,EAAO;AAAA,QACL,KAAK,IAAI,KAAe;AAAA;AAAA,MAG1B,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QACxB,OAAO,MAAM,IAAI,CAAC,SAAS,KAAK,mBAAmB,MAAM,IAAI,CAAC;AAAA,MAChE,EAAO;AAAA,QACL,MAAM,SAAkC,CAAC;AAAA,QACzC,YAAY,KAAK,QAAQ,OAAO,QAAQ,KAAK,GAAG;AAAA,UAE9C,MAAM,eACJ,OAAO,QAAQ,WACX,IAAI,QAAQ,WAAW,EAAE,EAAE,QAAQ,0BAA0B,OAAO,IACpE;AAAA,UACN,OAAO,gBAAgB,KAAK,mBAAmB,KAAK,IAAI;AAAA,QAC1D;AAAA,QACA,OAAO;AAAA;AAAA,IAEX;AAAA,IAEA,OAAO;AAAA;AAAA,OAaH,QAAO,CAAC,QAMK;AAAA,IACjB,QAAQ,UAAU,QAAQ,MAAM,eAAO,WAAW;AAAA,IAKlD,OAAO,KAAK,qBAAqB,YAAY,MAAM,OAAO,OAAO;AAAA,MAC/D,MAAM,SAAS,MAAM,GAClB,OAAO,EACP,KAAK,QAAQ,EACb,MACC,IACE,SAAS,GAAG,SAAS,QAAQ,MAAM,IAAI,WACvC,OAAO,GAAG,SAAS,MAAM,IAAI,IAAI,SACnC,CACF,EACC,QAAQ,KAAK,SAAS,SAAS,CAAC,EAChC,MAAM,UAAS,EAAE,EACjB,OAAO,UAAU,CAAC;AAAA,MAErB,MAAM,OAAO,OAAO,IAAI,CAAC,SAAS;AAAA,WAC7B;AAAA,QACH,IAAI,IAAI;AAAA,QACR,UAAU,IAAI;AAAA,QACd,QAAQ,IAAI;AAAA,QACZ,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,WAAW,IAAI,KAAK,IAAI,SAAmC;AAAA,MAC7D,EAAE;AAAA,MAEF,IAAI,KAAK,WAAW;AAAA,QAAG,OAAO,CAAC;AAAA,MAE/B,OAAO;AAAA,KACR;AAAA;AAAA,OAGG,qBAAoB,CACxB,SAOI,CAAC,GAC2B;AAAA,IAChC,MAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,OAAO,SAAS,IAAI,CAAC,GAAG,GAAG;AAAA,IAC3D,MAAM,WAAW,OAAO,OAAO,SAAS,WAAW,IAAI,KAAK,OAAO,IAAI,IAAI;AAAA,IAC3E,MAAM,SAAS,OAAO,OAAO,OAAO,WAAW,IAAI,KAAK,OAAO,EAAE,IAAI;AAAA,IAGrE,OAAO,KAAK,qBAAqB,OAAO,YAAY,MAAM,OAAO,OAAO;AAAA,MACtE,MAAM,SAAS,IAAI;AAAA,MAEnB,MAAM,cAA6B;AAAA,QACjC,GAAG,SAAS,MAAM,WAAW;AAAA,QAC7B,MAAM,SAAS;AAAA,QACf,GAAG,UAAU,SAAS,KAAK,OAAO;AAAA,MACpC;AAAA,MAIA,IAAI,OAAO,QAAQ;AAAA,QACjB,YAAW,KAAK,GAAG,SAAS,QAAQ,OAAO,MAAM,CAAC;AAAA,MACpD;AAAA,MACA,IAAI,UAAU;AAAA,QACZ,YAAW,KAAK,IAAI,SAAS,WAAW,QAAQ,CAAC;AAAA,MACnD;AAAA,MACA,IAAI,QAAQ;AAAA,QACV,YAAW,KAAK,IAAI,SAAS,WAAW,MAAM,CAAC;AAAA,MACjD;AAAA,MAEA,MAAM,cAAc,IAAI,GAAG,WAAU;AAAA,MAErC,MAAM,aAAa,KAAK,IAAI,QAAQ,IAAI,GAAG;AAAA,MAE3C,MAAM,eAAe,MAAM,GACxB,OAAO;AAAA,QACN,OAAO,OAAe,SAAS;AAAA,QAC/B,QAAQ,OAAsB,SAAS;AAAA,QACvC,WAAW,OAAsB,SAAS;AAAA,QAC1C,SAAS,SAAS;AAAA,QAClB,WAAW,SAAS;AAAA,QACpB,QAAQ,SAAS;AAAA,QACjB,UAAU,SAAS;AAAA,MACrB,CAAC,EACA,KAAK,QAAQ,EACb,UAAU,WAAW,GAAG,UAAU,IAAI,SAAS,MAAM,CAAC,EACtD,MAAM,WAAW,EACjB,QAAQ,KAAK,SAAS,SAAS,CAAC,EAChC,MAAM,UAAU;AAAA,MAEnB,WAAW,OAAO,cAAc;AAAA,QAC9B,MAAM,QAAQ,IAAI;AAAA,QAClB,IAAI,CAAC;AAAA,UAAO;AAAA,QAEZ,MAAM,UAA2B,OAAO,IAAI,KAAK,KAAK;AAAA,UACpD;AAAA,UACA,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,UAAU,CAAC;AAAA,QACb;AAAA,QAEA,IAAI,CAAC,QAAQ,aAAa,IAAI,WAAW;AAAA,UACvC,QAAQ,YAAY,IAAI;AAAA,QAC1B;AAAA,QACA,IAAI,CAAC,QAAQ,UAAU,IAAI,QAAQ;AAAA,UACjC,QAAQ,SAAS,IAAI;AAAA,QACvB;AAAA,QACA,IAAI,CAAC,QAAQ,YAAY,IAAI,UAAU;AAAA,UACrC,QAAQ,WAAW,IAAI;AAAA,QACzB;AAAA,QAEA,MAAM,OAAO,IAAI;AAAA,QACjB,IAAI,QAAQ,OAAO,SAAS,UAAU;AAAA,UACpC,IAAI,CAAC,QAAQ,UAAU,OAAO,KAAK,WAAW,UAAU;AAAA,YACtD,QAAQ,SAAS,KAAK;AAAA,UACxB;AAAA,UACA,IAAI,CAAC,QAAQ,YAAY,OAAO,KAAK,aAAa,UAAU;AAAA,YAC1D,QAAQ,WAAW,KAAK;AAAA,UAC1B;AAAA,UACA,IAAI,CAAC,QAAQ,aAAa,OAAO,KAAK,cAAc,UAAU;AAAA,YAC5D,QAAQ,YAAY,KAAK;AAAA,UAC3B;AAAA,UACA,IAAI,CAAC,QAAQ,YAAY,OAAO,KAAK,QAAQ,QAAQ,EAAE,WAAW,GAAG;AAAA,YACnE,MAAM,WAAY,KAAK,YAAoD;AAAA,YAC3E,QAAQ,WAAW,WAAW,KAAK,SAAS,IAAI,CAAC;AAAA,UACnD;AAAA,QACF;AAAA,QAEA,MAAM,YAAY,IAAI,qBAAqB,OAAO,IAAI,YAAY,IAAI,KAAK,IAAI,SAAS;AAAA,QACxF,MAAM,aAAY,UAAU,QAAQ;AAAA,QACpC,MAAM,cACH,IAAI,UAAqC,MAAM;AAAA,QAElD,IAAI,gBAAgB,WAAW;AAAA,UAC7B,QAAQ,YACN,QAAQ,cAAc,OAAO,aAAY,KAAK,IAAI,QAAQ,WAAW,UAAS;AAAA,QAClF,EAAO,SACL,gBAAgB,eAChB,gBAAgB,aAChB,gBAAgB,SAChB;AAAA,UACA,QAAQ,SAAS;AAAA,UACjB,QAAQ,UAAU;AAAA,UAClB,IAAI,QAAQ,cAAc,MAAM;AAAA,YAC9B,QAAQ,aAAa,KAAK,IAAI,aAAY,QAAQ,WAAW,CAAC;AAAA,UAChE;AAAA,QACF;AAAA,QAEA,OAAO,IAAI,OAAO,OAAO;AAAA,MAC3B;AAAA,MAEA,IAAI,OAAO,MAAM,KAAK,OAAO,OAAO,CAAC;AAAA,MACrC,IAAI,OAAO,UAAU,OAAO,WAAW,OAAO;AAAA,QAC5C,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,WAAW,OAAO,MAAM;AAAA,MAC1D;AAAA,MAEA,KAAK,KAAK,CAAC,GAAG,OAAO,EAAE,aAAa,MAAM,EAAE,aAAa,EAAE;AAAA,MAE3D,MAAM,QAAQ,KAAK;AAAA,MACnB,MAAM,cAAc,KAAK,MAAM,GAAG,KAAK;AAAA,MACvC,MAAM,UAAU,QAAQ;AAAA,MAExB,MAAM,YAAY,IAAI;AAAA,MACtB,WAAW,OAAO,aAAa;AAAA,QAC7B,UAAU,IAAI,IAAI,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,EAAE,CAAC;AAAA,MAClF;AAAA,MAEA,MAAM,SAAS,YAAY,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,OAAO,OAAO;AAAA,MAEjE,IAAI,OAAO,SAAS,GAAG;AAAA,QACrB,MAAM,aAAa,YAAY,IAAI,KACjC,OAAO,IAAI,CAAC,OAAO,MAAM,IAAI,GAC7B,OACF;AAAA,QAEA,MAAM,gBAAgB,MAAM,KAAK,GAAG,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAMnC;AAAA;AAAA,uCAEsB;AAAA;AAAA,SAE9B;AAAA,QAED,MAAM,aAAc,cAAc,QAAQ,CAAC;AAAA,QAO3C,WAAW,OAAO,YAAY;AAAA,UAC5B,MAAM,SAAS,UAAU,IAAI,IAAI,KAAK;AAAA,UACtC,IAAI,CAAC;AAAA,YAAQ;AAAA,UACb,OAAO,WAAW,OAAO,IAAI,WAAW,CAAC;AAAA,UACzC,OAAO,UAAU,OAAO,IAAI,UAAU,CAAC;AAAA,UACvC,OAAO,cAAc,OAAO,IAAI,cAAc,CAAC;AAAA,QACjD;AAAA,QAEA,MAAM,mBAAmB,MAAM,KAAK,GAAG,QAAQ;AAAA;AAAA;AAAA;AAAA,iBAItC;AAAA;AAAA,uCAEsB;AAAA;AAAA,SAE9B;AAAA,QAED,MAAM,gBAAiB,iBAAiB,QAAQ,CAAC;AAAA,QAKjD,WAAW,OAAO,eAAe;AAAA,UAC/B,MAAM,SAAS,UAAU,IAAI,IAAI,KAAK;AAAA,UACtC,IAAI,CAAC;AAAA,YAAQ;AAAA,UACb,OAAO,cAAc,OAAO,IAAI,cAAc,CAAC;AAAA,QACjD;AAAA,QAEA,MAAM,iBAAiB,MAAM,KAAK,GAAG,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKpC;AAAA;AAAA,uCAEsB;AAAA;AAAA,SAE9B;AAAA,QAED,MAAM,cAAe,eAAe,QAAQ,CAAC;AAAA,QAM7C,WAAW,OAAO,aAAa;AAAA,UAC7B,MAAM,SAAS,UAAU,IAAI,IAAI,KAAK;AAAA,UACtC,IAAI,CAAC;AAAA,YAAQ;AAAA,UACb,OAAO,cAAc,OAAO,IAAI,aAAa,CAAC;AAAA,UAC9C,OAAO,UAAU,OAAO,IAAI,mBAAmB,CAAC;AAAA,QAClD;AAAA,MACF;AAAA,MAEA,WAAW,OAAO,aAAa;AAAA,QAC7B,IAAI,SAAS,UAAU,IAAI,IAAI,KAAK,KAAK;AAAA,UACvC,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,YAAY;AAAA,QACd;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,KACD;AAAA;AAAA,OAQG,UAAS,CAAC,OAA4B;AAAA,IAC1C,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,OAAO,QAAQ,EAAE,MAAM,GAAG,SAAS,IAAI,KAAK,CAAC;AAAA,KAC5D;AAAA;AAAA,OAiBG,eAAc,CAAC,QAUC;AAAA,IACpB,OAAO,MAAM,KAAK,0BAA0B,OAAO,WAAW;AAAA,MAC5D,iBAAiB,OAAO;AAAA,MACxB,OAAO,OAAO;AAAA,MAEd,QAAQ,OAAO;AAAA,MACf,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO;AAAA,MACf,WAAW,OAAO;AAAA,IACpB,CAAC;AAAA;AAAA,OAgBG,0BAAyB,CAC7B,WACA,QASmB;AAAA,IACnB,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,cAAc,UAAU,IAAI,CAAC,MAAO,OAAO,SAAS,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAE;AAAA,MAExF,MAAM,aAAa,WAAmB,eACpC,eAAe,KAAK,qBACpB,WACF;AAAA,MAEA,MAAM,cAAa,CAAC,GAAG,YAAY,MAAM,OAAO,SAAS,CAAC;AAAA,MAE1D,IAAI,OAAO,QAAQ;AAAA,QACjB,YAAW,KAAK,GAAG,YAAY,QAAQ,IAAI,CAAC;AAAA,MAC9C;AAAA,MAEA,YAAW,KAAK,GAAG,YAAY,SAAS,KAAK,OAAO,CAAC;AAAA,MAGrD,IAAI,OAAO,QAAQ;AAAA,QACjB,YAAW,KAAK,GAAG,YAAY,QAAQ,OAAO,MAAM,CAAC;AAAA,MACvD;AAAA,MACA,IAAI,OAAO,SAAS;AAAA,QAClB,YAAW,KAAK,GAAG,YAAY,SAAS,OAAO,OAAO,CAAC;AAAA,MACzD;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QACnB,YAAW,KAAK,GAAG,YAAY,UAAU,OAAO,QAAQ,CAAC;AAAA,MAC3D;AAAA,MAEA,IAAI,OAAO,iBAAiB;AAAA,QAC1B,YAAW,KAAK,IAAI,YAAY,OAAO,eAAe,CAAC;AAAA,MACzD;AAAA,MAEA,MAAM,UAAU,MAAM,KAAK,GACxB,OAAO;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,QACA,WAAW,eAAe,KAAK;AAAA,MACjC,CAAC,EACA,KAAK,cAAc,EACnB,UAAU,aAAa,GAAG,YAAY,IAAI,eAAe,QAAQ,CAAC,EAClE,MAAM,IAAI,GAAG,WAAU,CAAC,EACxB,QAAQ,KAAK,UAAU,CAAC,EACxB,MAAM,OAAO,SAAS,EAAE;AAAA,MAE3B,OAAO,QAAQ,IAAI,CAAC,SAAS;AAAA,QAC3B,IAAI,IAAI,OAAO;AAAA,QACf,MAAM,IAAI,OAAO;AAAA,QACjB,WAAW,IAAI,OAAO,UAAU,QAAQ;AAAA,QACxC,SACE,OAAO,IAAI,OAAO,YAAY,WAC1B,KAAK,MAAM,IAAI,OAAO,OAAO,IAC7B,IAAI,OAAO;AAAA,QACjB,UAAU,IAAI,OAAO;AAAA,QACrB,SAAS,IAAI,OAAO;AAAA,QACpB,QAAQ,IAAI,OAAO;AAAA,QACnB,SAAS,IAAI,OAAO;AAAA,QACpB,QAAQ,IAAI,OAAO;AAAA,QACnB,UAAU,IAAI,OAAO;AAAA,QACrB,WAAW,IAAI,aAAa;AAAA,QAC5B,YAAY,IAAI;AAAA,MAClB,EAAE;AAAA,KACH;AAAA;AAAA,OASG,aAAY,CAChB,QACA,WACe;AAAA,IACf,MAAM,WAAW,OAAO,MAAO,GAAG;AAAA,IAElC,MAAM,WAAW,MAAM,KAAK,cAAc,QAAQ;AAAA,IAClD,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,OAAO,WAAW,WAAW;AAAA,MAC/B,OAAO,SAAS;AAAA,MAChB,IAAI,OAAO,aAAa,MAAM,QAAQ,OAAO,SAAS,GAAG;AAAA,QACvD,MAAM,kBAAkB,MAAM,KAAK,0BAA0B,OAAO,WAAW;AAAA,UAC7E;AAAA,UAEA,QAAQ,OAAO;AAAA,UACf,SAAS,OAAO;AAAA,UAChB,UAAU,OAAO;AAAA,UACjB,iBAAiB;AAAA,UACjB,OAAO;AAAA,QACT,CAAC;AAAA,QACD,OAAO,SAAS,gBAAgB,WAAW;AAAA,MAC7C;AAAA,IACF;AAAA,IAIA,MAAM,kBACJ,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU,KAAK,UAAU,OAAO,WAAW,CAAC,CAAC;AAAA,IAE3F,MAAM,mBACJ,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW,KAAK,UAAU,OAAO,YAAY,CAAC,CAAC;AAAA,IAI9F,MAAM,KAAK,qBAAqB,OAAO,UAAU,OAAO,OAAO;AAAA,MAC7D,MAAM,GAAG,OAAO,WAAW,EAAE,OAAO;AAAA,QAClC;AAAA,UACE,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,SAAS,MAAM;AAAA,UACf,UAAU,MAAM;AAAA,UAChB,UAAU,OAAO;AAAA,UACjB,QAAQ,OAAO;AAAA,UACf,SAAS,OAAO;AAAA,UAChB,SAAS,OAAO,WAAW,KAAK;AAAA,UAChC,QAAQ,OAAO;AAAA,UACf,WAAW,OAAO,YAAY,IAAI,KAAK,OAAO,SAAS,IAAI,IAAI;AAAA,QACjE;AAAA,MACF,CAAC;AAAA,MAED,IAAI,OAAO,aAAa,MAAM,QAAQ,OAAO,SAAS,GAAG;AAAA,QACvD,MAAM,kBAA2C;AAAA,UAC/C,IAAI,GAAG;AAAA,UACP;AAAA,UACA,WAAW,OAAO,YAAY,IAAI,KAAK,OAAO,SAAS,IAAI,IAAI;AAAA,QACjE;AAAA,QAEA,MAAM,cAAc,OAAO,UAAU,IAAI,CAAC,MACxC,OAAO,SAAS,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC9C;AAAA,QAEA,gBAAgB,KAAK,sBAAsB;AAAA,QAE3C,MAAM,GAAG,OAAO,cAAc,EAAE,OAAO,CAAC,eAAe,CAAC;AAAA,MAC1D;AAAA,KACD;AAAA,IAED,OAAO;AAAA;AAAA,OAQH,aAAY,CAChB,QACkB;AAAA,IAClB,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,UAEtC,IAAI,OAAO,SAAS;AAAA,YAClB,MAAM,kBACJ,OAAO,OAAO,YAAY,WACtB,OAAO,UACP,KAAK,UAAU,OAAO,WAAW,CAAC,CAAC;AAAA,YAEzC,MAAM,mBACJ,OAAO,OAAO,aAAa,WACvB,OAAO,WACP,KAAK,UAAU,OAAO,YAAY,CAAC,CAAC;AAAA,YAE1C,MAAM,GACH,OAAO,WAAW,EAClB,IAAI;AAAA,cACH,SAAS,MAAM;AAAA,iBACX,OAAO,YAAY,EAAE,UAAU,MAAM,0BAA0B;AAAA,YACrE,CAAC,EACA,MAAM,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC;AAAA,UACxC,EAAO,SAAI,OAAO,UAAU;AAAA,YAE1B,MAAM,mBACJ,OAAO,OAAO,aAAa,WACvB,OAAO,WACP,KAAK,UAAU,OAAO,YAAY,CAAC,CAAC;AAAA,YAE1C,MAAM,GACH,OAAO,WAAW,EAClB,IAAI;AAAA,cACH,UAAU,MAAM;AAAA,YAClB,CAAC,EACA,MAAM,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC;AAAA,UACxC;AAAA,UAGA,IAAI,OAAO,aAAa,MAAM,QAAQ,OAAO,SAAS,GAAG;AAAA,YACvD,MAAM,cAAc,OAAO,UAAU,IAAI,CAAC,MACxC,OAAO,SAAS,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC9C;AAAA,YAGA,MAAM,oBAAoB,MAAM,GAC7B,OAAO,EAAE,IAAI,eAAe,GAAG,CAAC,EAChC,KAAK,cAAc,EACnB,MAAM,GAAG,eAAe,UAAU,OAAO,EAAE,CAAC,EAC5C,MAAM,CAAC;AAAA,YAEV,IAAI,kBAAkB,SAAS,GAAG;AAAA,cAEhC,MAAM,eAAwC,CAAC;AAAA,cAC/C,aAAa,KAAK,sBAAsB;AAAA,cAExC,MAAM,GACH,OAAO,cAAc,EACrB,IAAI,YAAY,EAChB,MAAM,GAAG,eAAe,UAAU,OAAO,EAAE,CAAC;AAAA,YACjD,EAAO;AAAA,cAEL,MAAM,kBAA2C;AAAA,gBAC/C,IAAI,GAAG;AAAA,gBACP,UAAU,OAAO;AAAA,cACnB;AAAA,cACA,gBAAgB,KAAK,sBAAsB;AAAA,cAE3C,MAAM,GAAG,OAAO,cAAc,EAAE,OAAO,CAAC,eAAe,CAAC;AAAA;AAAA,UAE5D;AAAA,SACD;AAAA,QAED,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,UAAU,OAAO;AAAA,UACjB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,yBACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAQG,aAAY,CAAC,UAA+B;AAAA,IAChD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,QAEtC,MAAM,KAAK,sBAAsB,IAAI,QAAQ;AAAA,QAG7C,MAAM,GAAG,OAAO,cAAc,EAAE,MAAM,GAAG,eAAe,UAAU,QAAQ,CAAC;AAAA,QAG3E,MAAM,GAAG,OAAO,WAAW,EAAE,MAAM,GAAG,YAAY,IAAI,QAAQ,CAAC;AAAA,OAChE;AAAA,KACF;AAAA;AAAA,OAQG,mBAAkB,CAAC,WAAkC;AAAA,IACzD,IAAI,UAAU,WAAW,GAAG;AAAA,MAC1B;AAAA,IACF;AAAA,IAEA,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,QAEtC,MAAM,aAAa;AAAA,QACnB,SAAS,IAAI,EAAG,IAAI,UAAU,QAAQ,KAAK,YAAY;AAAA,UACrD,MAAM,QAAQ,UAAU,MAAM,GAAG,IAAI,UAAU;AAAA,UAG/C,MAAM,QAAQ,IACZ,MAAM,IAAI,OAAO,aAAa;AAAA,YAC5B,MAAM,KAAK,sBAAsB,IAAI,QAAQ;AAAA,WAC9C,CACH;AAAA,UAGA,MAAM,GAAG,OAAO,cAAc,EAAE,MAAM,QAAQ,eAAe,UAAU,KAAK,CAAC;AAAA,UAG7E,MAAM,GAAG,OAAO,WAAW,EAAE,MAAM,QAAQ,YAAY,IAAI,KAAK,CAAC;AAAA,QACnE;AAAA,OACD;AAAA,KACF;AAAA;AAAA,OASW,sBAAqB,CAAC,IAAqB,YAAiC;AAAA,IACxF,MAAM,oBAAoB,MAAM,KAAK,mBAAmB,IAAI,UAAU;AAAA,IAEtE,IAAI,kBAAkB,SAAS,GAAG;AAAA,MAChC,MAAM,cAAc,kBAAkB,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA,MAGrD,MAAM,GAAG,OAAO,cAAc,EAAE,MAAM,QAAQ,eAAe,UAAU,WAAW,CAAC;AAAA,MAGnF,MAAM,GAAG,OAAO,WAAW,EAAE,MAAM,QAAQ,YAAY,IAAI,WAAW,CAAC;AAAA,IACzE;AAAA;AAAA,OAUY,mBAAkB,CAAC,IAAqB,YAA2C;AAAA,IAC/F,MAAM,YAAY,MAAM,GACrB,OAAO,EAAE,IAAI,YAAY,GAAG,CAAC,EAC7B,KAAK,WAAW,EAChB,MACC,IACE,GAAG,YAAY,SAAS,KAAK,OAAO,GACpC,MAAM,YAAY,6BAA6B,YACjD,CACF;AAAA,IAEF,OAAO,UAAU,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAW,EAAE;AAAA;AAAA,OAS9C,kBAAiB,CAAC,QAAc,WAAkC;AAAA,IACtE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,QAEtC,MAAM,OAAO,MAAM,GAChB,OAAO,EAAE,IAAI,YAAY,GAAG,CAAC,EAC7B,KAAK,WAAW,EAChB,MAAM,IAAI,GAAG,YAAY,QAAQ,MAAM,GAAG,GAAG,YAAY,MAAM,SAAS,CAAC,CAAC;AAAA,QAE7E,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA,QAChC,SAAO,MACL,EAAE,KAAK,cAAc,QAAQ,WAAW,aAAa,IAAI,OAAO,GAChE,uBACF;AAAA,QAEA,IAAI,IAAI,WAAW,GAAG;AAAA,UACpB;AAAA,QACF;AAAA,QAGA,MAAM,QAAQ,IACZ,IAAI,IAAI,OAAO,aAAa;AAAA,UAC1B,MAAM,KAAK,sBAAsB,IAAI,QAAQ;AAAA,UAC7C,MAAM,GAAG,OAAO,cAAc,EAAE,MAAM,GAAG,eAAe,UAAU,QAAQ,CAAC;AAAA,SAC5E,CACH;AAAA,QAGA,MAAM,GACH,OAAO,WAAW,EAClB,MAAM,IAAI,GAAG,YAAY,QAAQ,MAAM,GAAG,GAAG,YAAY,MAAM,SAAS,CAAC,CAAC;AAAA,OAC9E;AAAA,KACF;AAAA;AAAA,OAUG,cAAa,CAAC,QAAc,UAAS,MAAM,YAAY,IAAqB;AAAA,IAChF,IAAI,CAAC;AAAA,MAAW,MAAM,IAAI,MAAM,uBAAuB;AAAA,IAEvD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,cAAa,CAAC,GAAG,YAAY,QAAQ,MAAM,GAAG,GAAG,YAAY,MAAM,SAAS,CAAC;AAAA,MAEnF,IAAI,SAAQ;AAAA,QACV,YAAW,KAAK,GAAG,YAAY,QAAQ,IAAI,CAAC;AAAA,MAC9C;AAAA,MAEA,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EAAE,OAAO,cAAsB,CAAC,EACvC,KAAK,WAAW,EAChB,MAAM,IAAI,GAAG,WAAU,CAAC;AAAA,MAE3B,OAAO,OAAO,OAAO,IAAI,SAAS,CAAC;AAAA,KACpC;AAAA;AAAA,OAQG,cAAa,CAAC,SAAyC;AAAA,IAC3D,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO;AAAA,QACN,IAAI,UAAU;AAAA,QACd,MAAM,UAAU;AAAA,QAChB,WAAW,UAAU;AAAA,QACrB,SAAS,UAAU;AAAA,QACnB,iBAAiB,UAAU;AAAA,QAC3B,SAAS,UAAU;AAAA,QACnB,MAAM,UAAU;AAAA,QAChB,QAAQ,UAAU;AAAA,QAClB,UAAU,UAAU;AAAA,MACtB,CAAC,EACA,KAAK,SAAS,EACd,MAAM,IAAI,QAAQ,UAAU,IAAI,OAAO,GAAG,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC,CAAC;AAAA,MAGjF,MAAM,QAAQ,OAAO,IAAI,CAAC,UAAU;AAAA,WAC/B;AAAA,QACH,IAAI,KAAK;AAAA,QACT,MAAM,KAAK,QAAQ;AAAA,QACnB,SAAS,KAAK;AAAA,QACd,iBAAiB,KAAK;AAAA,QACtB,UAAU,KAAK;AAAA,QACf,SAAS,KAAK;AAAA,QACd,WAAW,KAAK;AAAA,QAChB,MAAM,KAAK;AAAA,QACX,UAAU,KAAK;AAAA,MACjB,EAAE;AAAA,MAEF,OAAO;AAAA,KACR;AAAA;AAAA,OAQG,gBAAe,CAAC,SAAgC;AAAA,IACpD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,GAAG,UAAU,SAAS,OAAO,CAAC;AAAA,MAC1F,MAAM,QAAQ,OAAO,IAAI,CAAC,UAAU;AAAA,WAC/B;AAAA,QACH,IAAI,KAAK;AAAA,QACT,MAAM,KAAK,QAAQ;AAAA,QACnB,SAAS,KAAK;AAAA,QACd,iBAAiB,KAAK;AAAA,QACtB,UAAU,KAAK;AAAA,QACf,SAAS,KAAK;AAAA,QACd,WAAW,KAAK;AAAA,QAChB,MAAM,KAAK;AAAA,QACX,UAAU,KAAK;AAAA,MACjB,EAAE;AAAA,MACF,OAAO;AAAA,KACR;AAAA;AAAA,OAQG,WAAU,CAAC,MAA2B;AAAA,IAC1C,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GACR,OAAO,SAAS,EAChB,IAAI,KAAK,MAAM,SAAS,KAAK,QAAQ,CAAC,EACtC,MAAM,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC;AAAA,KACnC;AAAA;AAAA,OAQG,YAAW,CAAC,OAAgC;AAAA,IAChD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,eAAe,MAAM,IAAI,CAAC,UAAU;AAAA,WACrC;AAAA,QACH,SAAS,KAAK;AAAA,QACd,IAAI,KAAK,MAAM,GAAG;AAAA,MACpB,EAAE;AAAA,MAEF,MAAM,gBAAgB,MAAM,KAAK,GAC9B,OAAO,SAAS,EAChB,OAAO,YAAY,EACnB,oBAAoB,EACpB,UAAU;AAAA,MACb,MAAM,cAAc,cAAc,IAAI,CAAC,MAAM,EAAE,EAAU;AAAA,MACzD,OAAO;AAAA,KACR;AAAA;AAAA,OAQG,WAAU,CAAC,QAA6B;AAAA,IAC5C,IAAI,CAAC;AAAA,MAAQ,MAAM,IAAI,MAAM,qBAAqB;AAAA,IAClD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,QACtC,MAAM,GAAG,OAAO,SAAS,EAAE,MAAM,GAAG,UAAU,IAAI,MAAM,CAAC;AAAA,OAC1D;AAAA,KACF;AAAA;AAAA,OAQG,uBAAsB,CAAC,UAAiC;AAAA,IAC5D,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EAAE,QAAQ,iBAAiB,OAAO,CAAC,EAC1C,KAAK,gBAAgB,EACrB,UAAU,WAAW,GAAG,iBAAiB,QAAQ,UAAU,EAAE,CAAC,EAC9D,MAAM,IAAI,GAAG,iBAAiB,UAAU,QAAQ,GAAG,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC,CAAC;AAAA,MAE1F,OAAO,OAAO,IAAI,CAAC,QAAQ,IAAI,MAAc;AAAA,KAC9C;AAAA;AAAA,OAQG,wBAAuB,CAAC,WAAoC;AAAA,IAChE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,eAAe,EAAE,QAAQ,iBAAiB,OAAO,CAAC,EAClD,KAAK,gBAAgB,EACrB,UAAU,WAAW,GAAG,iBAAiB,QAAQ,UAAU,EAAE,CAAC,EAC9D,MACC,IAAI,QAAQ,iBAAiB,UAAU,SAAS,GAAG,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC,CACxF;AAAA,MAEF,OAAO,OAAO,IAAI,CAAC,QAAQ,IAAI,MAAc;AAAA,KAC9C;AAAA;AAAA,OASG,eAAc,CAAC,UAAgB,QAAgC;AAAA,IACnE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,KAAK,GACR,OAAO,gBAAgB,EACvB,OAAO;AAAA,UACN;AAAA,UACA;AAAA,UACA,SAAS,KAAK;AAAA,QAChB,CAAC,EACA,oBAAoB;AAAA,QACvB,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,SAAS,KAAK;AAAA,UACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,mCACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAGG,oBAAmB,CAAC,WAAmB,QAAgC;AAAA,IAC3E,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,SAAS,UAAU,IAAI,CAAC,QAAQ;AAAA,UACpC,UAAU;AAAA,UACV;AAAA,UACA,SAAS,KAAK;AAAA,QAChB,EAAE;AAAA,QACF,MAAM,KAAK,GAAG,OAAO,gBAAgB,EAAE,OAAO,MAAM,EAAE,oBAAoB,EAAE,QAAQ;AAAA,QACpF,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL;AAAA,UACA,SAAS,KAAK;AAAA,UACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,oCACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OASG,kBAAiB,CAAC,UAAgB,QAAgC;AAAA,IACtE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,UACrD,OAAO,MAAM,GACV,OAAO,gBAAgB,EACvB,MACC,IAAI,GAAG,iBAAiB,UAAU,QAAQ,GAAG,GAAG,iBAAiB,QAAQ,MAAM,CAAC,CAClF,EACC,UAAU;AAAA,SACd;AAAA,QAED,MAAM,UAAU,OAAO,SAAS;AAAA,QAChC,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,wCACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAQG,yBAAwB,CAAC,UAAwC;AAAA,IACrE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO;AAAA,QACN,IAAI,iBAAiB;AAAA,QACrB,UAAU,iBAAiB;AAAA,QAC3B,QAAQ,iBAAiB;AAAA,MAC3B,CAAC,EACA,KAAK,gBAAgB,EACrB,MAAM,GAAG,iBAAiB,UAAU,QAAQ,CAAC;AAAA,MAEhD,MAAM,WAAW,MAAM,KAAK,iBAAiB,CAAC,QAAQ,CAAC;AAAA,MAEvD,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ;AAAA,QACjC,OAAO,CAAC;AAAA,MACV;AAAA,MAEA,OAAO,OAAO,IAAI,CAAC,SAAS;AAAA,QAC1B,IAAI,IAAI;AAAA,QACR,QAAQ,SAAS;AAAA,MACnB,EAAE;AAAA,KACH;AAAA;AAAA,OAQG,uBAAsB,CAAC,QAA+B;AAAA,IAC1D,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EAAE,UAAU,iBAAiB,SAAS,CAAC,EAC9C,KAAK,gBAAgB,EACrB,MAAM,GAAG,iBAAiB,QAAQ,MAAM,CAAC;AAAA,MAE5C,OAAO,OAAO,IAAI,CAAC,QAAQ,IAAI,QAAgB;AAAA,KAChD;AAAA;AAAA,OAUG,kBAAiB,CAAC,QAAc,UAAkC;AAAA,IACtE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,gBAAgB,EACrB,MAAM,IAAI,GAAG,iBAAiB,QAAQ,MAAM,GAAG,GAAG,iBAAiB,UAAU,QAAQ,CAAC,CAAC,EACvF,MAAM,CAAC;AAAA,MAEV,OAAO,OAAO,SAAS;AAAA,KACxB;AAAA;AAAA,OASG,wBAAuB,CAC3B,QACA,UACsC;AAAA,IACtC,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EAAE,WAAW,iBAAiB,UAAU,CAAC,EAChD,KAAK,gBAAgB,EACrB,MACC,IACE,GAAG,iBAAiB,QAAQ,MAAM,GAClC,GAAG,iBAAiB,UAAU,QAAQ,GACtC,GAAG,iBAAiB,SAAS,KAAK,OAAO,CAC3C,CACF,EACC,MAAM,CAAC;AAAA,MAEV,OAAQ,OAAO,IAAI,aAA6C;AAAA,KACjE;AAAA;AAAA,OAUG,wBAAuB,CAC3B,QACA,UACA,OACe;AAAA,IACf,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,UACtC,MAAM,GACH,OAAO,gBAAgB,EACvB,IAAI,EAAE,WAAW,MAAM,CAAC,EACxB,MACC,IACE,GAAG,iBAAiB,QAAQ,MAAM,GAClC,GAAG,iBAAiB,UAAU,QAAQ,GACtC,GAAG,iBAAiB,SAAS,KAAK,OAAO,CAC3C,CACF;AAAA,SACH;AAAA,QACD,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,GACA,wCACF;AAAA,QACA,MAAM;AAAA;AAAA,KAET;AAAA;AAAA,OAYG,mBAAkB,CAAC,QAKJ;AAAA,IACnB,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG;AAAA,MACd,MAAM,aAAa;AAAA,QACjB;AAAA,QACA,gBAAgB,OAAO;AAAA,QACvB,gBAAgB,OAAO;AAAA,QACvB,SAAS,KAAK;AAAA,QACd,MAAM,OAAO,QAAQ,CAAC;AAAA,QACtB,UAAU,OAAO,YAAY,CAAC;AAAA,MAChC;AAAA,MACA,IAAI;AAAA,QACF,MAAM,KAAK,GAAG,OAAO,iBAAiB,EAAE,OAAO,UAAU;AAAA,QACzD,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,SAAS,KAAK;AAAA,UACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC5D;AAAA,QACF,GACA,6BACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAQG,mBAAkB,CAAC,cAA2C;AAAA,IAClE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,KAAK,GACR,OAAO,iBAAiB,EACxB,IAAI;AAAA,UACH,MAAM,aAAa,QAAQ,CAAC;AAAA,UAC5B,UAAU,aAAa,YAAY,CAAC;AAAA,QACtC,CAAC,EACA,MAAM,GAAG,kBAAkB,IAAI,aAAa,EAAE,CAAC;AAAA,QAClD,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,SAAS,KAAK;AAAA,UACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC5D,gBAAgB,aAAa;AAAA,QAC/B,GACA,6BACF;AAAA,QACA,MAAM;AAAA;AAAA,KAET;AAAA;AAAA,OAUG,gBAAe,CAAC,QAGW;AAAA,IAC/B,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,QAAQ,gBAAgB,mBAAmB;AAAA,MAC3C,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,iBAAiB,EACtB,MACC,IACE,GAAG,kBAAkB,gBAAgB,cAAc,GACnD,GAAG,kBAAkB,gBAAgB,cAAc,CACrD,CACF;AAAA,MACF,IAAI,OAAO,WAAW;AAAA,QAAG,OAAO;AAAA,MAChC,MAAM,eAAe,OAAO;AAAA,MAC5B,OAAO;AAAA,WACF;AAAA,QACH,IAAI,aAAa;AAAA,QACjB,gBAAgB,aAAa;AAAA,QAC7B,gBAAgB,aAAa;AAAA,QAC7B,SAAS,aAAa;AAAA,QACtB,MAAM,aAAa,QAAQ,CAAC;AAAA,QAC5B,UAAW,aAAa,YAAwC,CAAC;AAAA,QACjE,WAAW,aAAa,UAAU,YAAY;AAAA,MAChD;AAAA,KACD;AAAA;AAAA,OAUG,iBAAgB,CAAC,QAAsE;AAAA,IAC3F,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,QAAQ,UAAU,SAAS;AAAA,MAE3B,IAAI;AAAA,MAEJ,IAAI,QAAQ,KAAK,SAAS,GAAG;AAAA,QAC3B,QAAQ;AAAA,0BACU;AAAA,mBACP,kBAAkB,oBAAoB,eAAe,kBAAkB,oBAAoB;AAAA,gBAC9F,kBAAkB,sBAAsB,IAAI,KAAK,MAAM,OAAO;AAAA;AAAA,MAExE,EAAO;AAAA,QACL,QAAQ;AAAA,0BACU;AAAA,kBACR,kBAAkB,oBAAoB,eAAe,kBAAkB,oBAAoB;AAAA;AAAA;AAAA,MAIvG,MAAM,SAAS,MAAM,KAAK,GAAG,QAAQ,KAAK;AAAA,MAE1C,OAAO,OAAO,KAAK,IAAI,CAAC,kBAA2C;AAAA,WAC9D;AAAA,QACH,IAAI,aAAa;AAAA,QACjB,gBAAiB,aAAa,oBAAoB,aAAa;AAAA,QAC/D,gBAAiB,aAAa,oBAAoB,aAAa;AAAA,QAC/D,SAAU,aAAa,YAAY,aAAa;AAAA,QAChD,MAAM,aAAa,QAAQ,CAAC;AAAA,QAC5B,UAAW,aAAa,YAAwC,CAAC;AAAA,QACjE,WACE,aAAa,cAAc,aAAa,aACnC,aAAa,cAAc,aAAa,sBAAsB,QAC3D,aAAa,cAAc,aAAa,WAAoB,YAAY,IAC1E,IAAI,KACD,aAAa,cAA0B,aAAa,SACvD,EAAE,YAAY,IAChB,IAAI,KAAK,EAAE,YAAY;AAAA,MAC/B,EAAE;AAAA,KACH;AAAA;AAAA,OAQG,SAAW,CAAC,KAAqC;AAAA,IACrD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EAAE,OAAO,WAAW,MAAM,CAAC,EAClC,KAAK,UAAU,EACf,MAAM,IAAI,GAAG,WAAW,SAAS,KAAK,OAAO,GAAG,GAAG,WAAW,KAAK,GAAG,CAAC,CAAC,EACxE,MAAM,CAAC;AAAA,QAEV,IAAI,UAAU,OAAO,SAAS,KAAK,OAAO,IAAI;AAAA,UAC5C,OAAO,OAAO,GAAG;AAAA,QACnB;AAAA,QAEA;AAAA,QACA,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,SAAS,KAAK;AAAA,UACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC5D;AAAA,QACF,GACA,sBACF;AAAA,QACA;AAAA;AAAA,KAEH;AAAA;AAAA,OASG,SAAW,CAAC,KAAa,OAA4B;AAAA,IACzD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,KAAK,GACR,OAAO,UAAU,EACjB,OAAO;AAAA,UACN;AAAA,UACA,SAAS,KAAK;AAAA,UACd;AAAA,QACF,CAAC,EACA,mBAAmB;AAAA,UAClB,QAAQ,CAAC,WAAW,KAAK,WAAW,OAAO;AAAA,UAC3C,KAAK;AAAA,YACH;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QAEH,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,SAAS,KAAK;AAAA,UACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC5D;AAAA,QACF,GACA,qBACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAQG,YAAW,CAAC,KAA+B;AAAA,IAC/C,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI;AAAA,QACF,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,UACtC,MAAM,GACH,OAAO,UAAU,EACjB,MAAM,IAAI,GAAG,WAAW,SAAS,KAAK,OAAO,GAAG,GAAG,WAAW,KAAK,GAAG,CAAC,CAAC;AAAA,SAC5E;AAAA,QACD,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL,SAAS,KAAK;AAAA,UACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC5D;AAAA,QACF,GACA,sBACF;AAAA,QACA,OAAO;AAAA;AAAA,KAEV;AAAA;AAAA,OAQG,YAAW,CAAC,OAA6B;AAAA,IAC7C,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,aAAa,MAAM,MAAM,GAAG;AAAA,MAClC,MAAM,KAAK,GAAG,OAAO,UAAU,EAAE,OAAO;AAAA,WACnC;AAAA,QACH,IAAI;AAAA,QACJ,MAAM,MAAM,QAAQ;AAAA,MACtB,CAAC;AAAA,MACD,OAAO;AAAA,KACR;AAAA;AAAA,OAQG,SAAQ,CAAC,IAAiC;AAAA,IAC9C,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,GAAG,WAAW,IAAI,EAAE,CAAC;AAAA,MAClF,OAAO,OAAO,SAAS,IAAK,OAAO,KAAe;AAAA,KACnD;AAAA;AAAA,OAOG,aAAY,GAAqB;AAAA,IACrC,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,UAAU,EACf,MAAM,GAAG,WAAW,SAAS,KAAK,OAAO,CAAC;AAAA,MAC7C,OAAO;AAAA,KACR;AAAA;AAAA,OAQG,YAAW,CAAC,OAA6B;AAAA,IAC7C,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,OAAO,UAAU,EAAE,IAAI,KAAK,EAAE,MAAM,GAAG,WAAW,IAAI,MAAM,EAAE,CAAC;AAAA,KAC9E;AAAA;AAAA,OAQG,YAAW,CAAC,IAAyB;AAAA,IACzC,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,OAAO,UAAU,EAAE,MAAM,GAAG,WAAW,IAAI,EAAE,CAAC;AAAA,KAC7D;AAAA;AAAA,OAQG,WAAU,CAAC,MAA2B;AAAA,IAC1C,IAAI,CAAC,KAAK,SAAS;AAAA,MACjB,MAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAAA,IACA,OAAO,KAAK,UAAU,YAAY;AAAA,MAChC,OAAO,KAAK,aAAa,YAAY;AAAA,QACnC,MAAM,MAAM,IAAI;AAAA,QAChB,MAAM,WAAW,KAAK,YAAY,CAAC;AAAA,QAEnC,MAAM,SAAS;AAAA,UACb,IAAI,KAAK;AAAA,UACT,MAAM,KAAK;AAAA,UACX,aAAa,KAAK;AAAA,UAClB,QAAQ,KAAK;AAAA,UACb,SAAS,KAAK;AAAA,UACd,MAAM,KAAK;AAAA,UACX;AAAA,UACA,WAAW;AAAA,UACX,WAAW;AAAA,UACX,SAAS,KAAK;AAAA,QAChB;AAAA,QAEA,MAAM,SAAS,MAAM,KAAK,GAAG,OAAO,SAAS,EAAE,OAAO,MAAM,EAAE,UAAU;AAAA,QAExE,OAAO,OAAO,GAAG;AAAA,OAClB;AAAA,KACF;AAAA;AAAA,OAQG,SAAQ,CAAC,QAIK;AAAA,IAClB,OAAO,KAAK,UAAU,YAAY;AAAA,MAChC,OAAO,KAAK,aAAa,YAAY;AAAA,QACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,SAAS,EACd,MACC,IACE,GAAG,UAAU,SAAS,KAAK,OAAO,GAClC,GAAI,OAAO,SAAS,CAAC,GAAG,UAAU,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,GAC7D,GAAI,OAAO,QAAQ,OAAO,KAAK,SAAS,IACpC;AAAA,UACE,MAAM,UAAU,iBAAiB,IAAI,KACnC,OAAO,KAAK,IAAI,CAAC,MAAM,MAAM,GAAG,GAChC,OACF;AAAA,QACF,IACA,CAAC,CACP,CACF;AAAA,QAEF,OAAO,OAAO,IAAI,CAAC,SAAS;AAAA,UAC1B,IAAI,IAAI;AAAA,UACR,MAAM,IAAI;AAAA,UACV,aAAa,IAAI,eAAe;AAAA,UAChC,QAAQ,IAAI;AAAA,UACZ,SAAS,IAAI;AAAA,UACb,MAAM,IAAI,QAAQ,CAAC;AAAA,UACnB,UAAU,IAAI;AAAA,QAChB,EAAE;AAAA,OACH;AAAA,KACF;AAAA;AAAA,OAQG,eAAc,CAAC,MAA+B;AAAA,IAClD,OAAO,KAAK,UAAU,YAAY;AAAA,MAChC,OAAO,KAAK,aAAa,YAAY;AAAA,QACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,SAAS,EACd,MAAM,IAAI,GAAG,UAAU,MAAM,IAAI,GAAG,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC,CAAC;AAAA,QAE3E,OAAO,OAAO,IAAI,CAAC,SAAS;AAAA,UAC1B,IAAI,IAAI;AAAA,UACR,MAAM,IAAI;AAAA,UACV,aAAa,IAAI,eAAe;AAAA,UAChC,QAAQ,IAAI;AAAA,UACZ,SAAS,IAAI;AAAA,UACb,MAAM,IAAI,QAAQ,CAAC;AAAA,UACnB,UAAW,IAAI,YAAY,CAAC;AAAA,QAC9B,EAAE;AAAA,OACH;AAAA,KACF;AAAA;AAAA,OAQG,QAAO,CAAC,IAAgC;AAAA,IAC5C,OAAO,KAAK,UAAU,YAAY;AAAA,MAChC,OAAO,KAAK,aAAa,YAAY;AAAA,QACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,SAAS,EACd,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,GAAG,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC,CAAC,EACpE,MAAM,CAAC;AAAA,QAEV,IAAI,OAAO,WAAW,GAAG;AAAA,UACvB,OAAO;AAAA,QACT;AAAA,QAEA,MAAM,MAAM,OAAO;AAAA,QACnB,OAAO;AAAA,UACL,IAAI,IAAI;AAAA,UACR,MAAM,IAAI;AAAA,UACV,aAAa,IAAI,eAAe;AAAA,UAChC,QAAQ,IAAI;AAAA,UACZ,SAAS,IAAI;AAAA,UACb,MAAM,IAAI,QAAQ,CAAC;AAAA,UACnB,UAAW,IAAI,YAAY,CAAC;AAAA,QAC9B;AAAA,OACD;AAAA,KACF;AAAA;AAAA,OASG,WAAU,CAAC,IAAU,MAAoC;AAAA,IAC7D,MAAM,KAAK,UAAU,YAAY;AAAA,MAC/B,MAAM,KAAK,aAAa,YAAY;AAAA,QAClC,MAAM,eAA8B,CAAC;AAAA,QAGrC,IAAI,KAAK,SAAS;AAAA,UAAW,aAAa,OAAO,KAAK;AAAA,QACtD,IAAI,KAAK,gBAAgB;AAAA,UAAW,aAAa,cAAc,KAAK;AAAA,QACpE,IAAI,KAAK,WAAW;AAAA,UAAW,aAAa,SAAS,KAAK;AAAA,QAC1D,IAAI,KAAK,YAAY;AAAA,UAAW,aAAa,UAAU,KAAK;AAAA,QAC5D,IAAI,KAAK,SAAS;AAAA,UAAW,aAAa,OAAO,KAAK;AAAA,QAOtD,MAAM,iBAAmC;AAAA,aACpC;AAAA,UACH,WAAW,IAAI;AAAA,QACjB;AAAA,QAGA,IAAI,KAAK,aAAa,WAAW;AAAA,UAC/B,eAAe,WAAW,KAAK;AAAA,QACjC;AAAA,QAEA,MAAM,KAAK,GACR,OAAO,SAAS,EAEhB,IAAI,cAAc,EAClB,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,GAAG,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC,CAAC;AAAA,OACxE;AAAA,KACF;AAAA;AAAA,OAQG,WAAU,CAAC,IAAyB;AAAA,IACxC,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,OAAO,SAAS,EAAE,MAAM,GAAG,UAAU,IAAI,EAAE,CAAC;AAAA,KAC3D;AAAA;AAAA,OAGG,qBAAoB,CAAC,QAIL;AAAA,IACpB,OAAO,KAAK,aAAa,YAAY;AAAA,MAEnC,MAAM,QAAQ,MAAM,KAAK,GACtB,OAAO,EAAE,IAAI,UAAU,GAAG,CAAC,EAC3B,KAAK,SAAS,EACd,MAAM,IAAI,GAAG,UAAU,SAAS,OAAO,OAAO,GAAG,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC,CAAC;AAAA,MAExF,IAAI,MAAM,WAAW,GAAG;AAAA,QACtB,OAAO,CAAC;AAAA,MACV;AAAA,MAEA,MAAM,UAAU,MAAM,IAAI,CAAC,SAAS,KAAK,EAAU;AAAA,MAEnD,MAAM,WAAW,MAAM,KAAK,qBAAqB;AAAA,QAC/C;AAAA,QACA,WAAW,OAAO,aAAa;AAAA,QAC/B,OAAO,OAAO;AAAA,MAChB,CAAC;AAAA,MAED,OAAO;AAAA,KACR;AAAA;AAAA,OAGG,qBAAoB,CAAC,SAA8B;AAAA,IACvD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,QAAQ,MAAM,KAAK,GACtB,OAAO,EAAE,IAAI,UAAU,GAAG,CAAC,EAC3B,KAAK,SAAS,EACd,MAAM,IAAI,GAAG,UAAU,SAAS,OAAO,GAAG,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC,CAAC;AAAA,MAEjF,IAAI,MAAM,WAAW,GAAG;AAAA,QACtB;AAAA,MACF;AAAA,MAEA,MAAM,UAAU,MAAM,IAAI,CAAC,SAAS,KAAK,EAAU;AAAA,MAEnD,IAAI,QAAQ,SAAS,GAAG;AAAA,QACtB,MAAM,KAAK,GAAG,OAAO,QAAQ,EAAE,MAAM,QAAQ,SAAS,QAAQ,OAAO,CAAC;AAAA,QACtE,MAAM,KAAK,GAAG,OAAO,gBAAgB,EAAE,MAAM,QAAQ,iBAAiB,QAAQ,OAAO,CAAC;AAAA,QAEtF,MAAM,kBAAkB,MAAM,KAAK,GAChC,OAAO,EAAE,IAAI,YAAY,GAAG,CAAC,EAC7B,KAAK,WAAW,EAChB,MAAM,QAAQ,YAAY,QAAQ,OAAO,CAAC;AAAA,QAC7C,MAAM,mBAAmB,gBAAgB,IAAI,CAAC,MAAM,EAAE,EAAU;AAAA,QAEhE,IAAI,iBAAiB,SAAS,GAAG;AAAA,UAC/B,MAAM,KAAK,GACR,OAAO,cAAc,EACrB,MAAM,QAAQ,eAAe,UAAU,gBAAgB,CAAC;AAAA,UAC3D,MAAM,KAAK,GAAG,OAAO,WAAW,EAAE,MAAM,QAAQ,YAAY,IAAI,gBAAgB,CAAC;AAAA,QACnF;AAAA,QAEA,MAAM,KAAK,GAAG,OAAO,SAAS,EAAE,MAAM,QAAQ,UAAU,IAAI,OAAO,CAAC;AAAA,QAEpE,SAAO,MACL;AAAA,UACE,KAAK;AAAA,UACL;AAAA,UACA,cAAc,QAAQ;AAAA,UACtB,iBAAiB,iBAAiB;AAAA,QACpC,GACA,yBACF;AAAA,MACF;AAAA,KACD;AAAA;AAAA,OAQG,oBAAmB,CAAC,MAcvB;AAAA,IACD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,QAAQ,KAAK,MAAO,GAAG;AAAA,MAC7B,MAAM,MAAM,IAAI;AAAA,MAChB,MAAM,iBAAiB;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM,KAAK;AAAA,QACX,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,UAAU,KAAK;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MAEA,MAAM,KAAK,GAAG,OAAO,kBAAkB,EAAE,OAAO,cAAc,EAAE,oBAAoB;AAAA,MAGpF,IAAI,KAAK,IAAI;AAAA,QACX,MAAM,WAAW,MAAM,KAAK,GACzB,OAAO,EACP,KAAK,kBAAkB,EACvB,MAAM,GAAG,mBAAmB,IAAI,KAAK,EAAE,CAAC,EACxC,MAAM,CAAC;AAAA,QACV,IAAI,SAAS,SAAS,GAAG;AAAA,UACvB,OAAO;AAAA,YACL,IAAI,SAAS,GAAG;AAAA,YAChB,MAAM,SAAS,GAAG;AAAA,YAClB,YAAY,SAAS,GAAG;AAAA,YACxB,UAAU,SAAS,GAAG,YAAY;AAAA,YAClC,UAAU,SAAS,GAAG,YAAY;AAAA,YAClC,WAAW,SAAS,GAAG;AAAA,YACvB,WAAW,SAAS,GAAG;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,KACR;AAAA;AAAA,OAMG,kBAAiB,GAUrB;AAAA,IACA,MAAM,SAAS,MAAM,KAAK,aAAa,YAAY;AAAA,MACjD,MAAM,UAAU,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,kBAAkB;AAAA,MAC9D,OAAO,QAAQ,IAAI,CAAC,OAAO;AAAA,QACzB,IAAI,EAAE;AAAA,QACN,MAAM,EAAE;AAAA,QACR,YAAY,EAAE;AAAA,QACd,UAAU,EAAE,YAAY;AAAA,QACxB,UAAU,EAAE,YAAY;AAAA,QACxB,WAAW,EAAE;AAAA,QACb,WAAW,EAAE;AAAA,MACf,EAAE;AAAA,KACH;AAAA,IAED,OAAO,UAAU,CAAC;AAAA;AAAA,OAMd,qBAAoB,CAAC,UAQjB;AAAA,IACR,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,UAAU,MAAM,KAAK,GACxB,OAAO,EACP,KAAK,kBAAkB,EACvB,MAAM,GAAG,mBAAmB,IAAI,QAAQ,CAAC,EACzC,MAAM,CAAC;AAAA,MACV,OAAO,QAAQ,SAAS,IACpB;AAAA,QACE,IAAI,QAAQ,GAAG;AAAA,QACf,MAAM,QAAQ,GAAG;AAAA,QACjB,YAAY,QAAQ,GAAG;AAAA,QACvB,UAAU,QAAQ,GAAG,YAAY;AAAA,QACjC,UAAU,QAAQ,GAAG,YAAY;AAAA,QACjC,WAAW,QAAQ,GAAG;AAAA,QACtB,WAAW,QAAQ,GAAG;AAAA,MACxB,IACA;AAAA,KACL;AAAA;AAAA,OAQG,8BAA6B,CAAC,aAQ1B;AAAA,IACR,OAAO,KAAK,aAAa,YAAY;AAAA,MAEnC,MAAM,UAAU,MAAM,KAAK,GAAG,QAAQ;AAAA;AAAA;AAAA,4BAGhB;AAAA;AAAA,OAErB;AAAA,MAED,MAAM,OAAO,QAAQ,QAAQ;AAAA,MAC7B,OAAO,KAAK,SAAS,IACjB;AAAA,QACE,IAAI,KAAK,GAAG;AAAA,QACZ,MAAM,KAAK,GAAG;AAAA,QACd,YAAY,KAAK,GAAG;AAAA,QACpB,UAAU,KAAK,GAAG,aAAa;AAAA,QAC/B,UAAU,KAAK,GAAG,YAAY;AAAA,QAC9B,WAAW,IAAI,KAAK,KAAK,GAAG,UAAU;AAAA,QACtC,WAAW,IAAI,KAAK,KAAK,GAAG,UAAU;AAAA,MACxC,IACA;AAAA,KACL;AAAA;AAAA,OAMG,cAAa,CACjB,MAUA,gBAYC;AAAA,IACD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,QAAQ,KAAK,MAAO,GAAG;AAAA,MAC7B,MAAM,MAAM,IAAI;AAAA,MAChB,MAAM,kBAAkB;AAAA,QACtB,IAAI;AAAA,QACJ,iBAAiB,KAAK;AAAA,QACtB,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,OAAO,KAAK;AAAA,QACZ,UAAU,KAAK;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MAEA,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,QACtC,MAAM,GAAG,OAAO,YAAY,EAAE,OAAO,eAAe;AAAA,QAEpD,IAAI,kBAAkB,eAAe,SAAS,GAAG;AAAA,UAC/C,MAAM,oBAAoB,eAAe,IAAI,CAAC,cAAc;AAAA,YAC1D,WAAW;AAAA,YACX;AAAA,UACF,EAAE;AAAA,UACF,MAAM,GAAG,OAAO,wBAAwB,EAAE,OAAO,iBAAiB,EAAE,oBAAoB;AAAA,QAC1F;AAAA,OACD;AAAA,MAED,OAAO;AAAA,KACR;AAAA;AAAA,OAMG,4BAA2B,CAAC,iBAahC;AAAA,IACA,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,UAAU,MAAM,KAAK,GACxB,OAAO,EACP,KAAK,YAAY,EACjB,MAAM,GAAG,aAAa,iBAAiB,eAAe,CAAC;AAAA,MAC1D,OAAO,QAAQ,IAAI,CAAC,OAAO;AAAA,QACzB,IAAI,EAAE;AAAA,QACN,iBAAiB,EAAE;AAAA,QACnB,MAAM,EAAE;AAAA,QACR,MAAM,EAAE;AAAA,QACR,YAAY,EAAE,cAAc;AAAA,QAC5B,UAAU,EAAE,YAAY;AAAA,QACxB,OAAO,EAAE,SAAS;AAAA,QAClB,UAAU,EAAE,YAAY;AAAA,QACxB,WAAW,EAAE;AAAA,QACb,WAAW,EAAE;AAAA,MACf,EAAE;AAAA,KACH;AAAA;AAAA,OAMG,kBAAiB,CAAC,WAWd;AAAA,IACR,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,UAAU,MAAM,KAAK,GACxB,OAAO,EACP,KAAK,YAAY,EACjB,MAAM,GAAG,aAAa,IAAI,SAAS,CAAC,EACpC,MAAM,CAAC;AAAA,MACV,OAAO,QAAQ,SAAS,IACpB;AAAA,QACE,IAAI,QAAQ,GAAG;AAAA,QACf,iBAAiB,QAAQ,GAAG;AAAA,QAC5B,MAAM,QAAQ,GAAG;AAAA,QACjB,MAAM,QAAQ,GAAG;AAAA,QACjB,YAAY,QAAQ,GAAG,cAAc;AAAA,QACrC,UAAU,QAAQ,GAAG,YAAY;AAAA,QACjC,OAAO,QAAQ,GAAG,SAAS;AAAA,QAC3B,UAAU,QAAQ,GAAG,YAAY;AAAA,QACjC,WAAW,QAAQ,GAAG;AAAA,QACtB,WAAW,QAAQ,GAAG;AAAA,MACxB,IACA;AAAA,KACL;AAAA;AAAA,OAMG,cAAa,CAAC,MAsBjB;AAAA,IACD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,QAAQ,KAAK,aAAc,GAAG;AAAA,MACpC,MAAM,MAAM,IAAI;AAAA,MAChB,MAAM,kBAAkB;AAAA,QACtB,IAAI;AAAA,QACJ,WAAW,KAAK;AAAA,QAChB,UAAU,KAAK;AAAA,QACf,SAAS,KAAK;AAAA,QACd,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,UAAU,KAAK;AAAA,QACf,wBAAwB,KAAK;AAAA,QAC7B,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MAEA,MAAM,KAAK,GAAG,OAAO,YAAY,EAAE,OAAO,eAAe;AAAA,MACzD,OAAO;AAAA,KACR;AAAA;AAAA,OAGG,eAAc,CAAC,IAYlB;AAAA,IACD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,OAAO,MAAM,KAAK,GACrB,OAAO,EACP,KAAK,YAAY,EACjB,MAAM,GAAG,aAAa,IAAI,EAAE,CAAC,EAC7B,MAAM,CAAC;AAAA,MACV,OAAO,OAAO,MAAM;AAAA,KACrB;AAAA;AAAA,OAGG,cAAa,CACjB,IACA,OAoBQ;AAAA,IACR,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,WAAW,MAAM,KAAK,eAAe,EAAE;AAAA,MAC7C,IAAI,CAAC;AAAA,QAAU,OAAO;AAAA,MAEtB,MAAM,YAAY,IAAI;AAAA,MACtB,MAAM,OAAO;AAAA,QACX,SAAS,MAAM,WAAW,SAAS;AAAA,QACnC,YAAY,MAAM,cAAc,SAAS;AAAA,QACzC,YAAY,MAAM,cAAc,SAAS;AAAA,QACzC,UAAU,MAAM,YAAY,SAAS;AAAA,QACrC,UAAU,MAAM,YAAY,SAAS;AAAA,QACrC,wBAAwB,MAAM,0BAA0B,SAAS;AAAA,QACjE;AAAA,MACF;AAAA,MAEA,MAAM,KAAK,GAAG,OAAO,YAAY,EAAE,IAAI,IAAI,EAAE,MAAM,GAAG,aAAa,IAAI,EAAE,CAAC;AAAA,MAG1E,OAAO;AAAA,WACF;AAAA,WACA;AAAA,MACL;AAAA,KACD;AAAA;AAAA,OAMG,sBAAqB,CACzB,WACA,QAAgB,IAChB,iBAeA;AAAA,IACA,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,cAAa,CAAC,GAAG,aAAa,WAAW,SAAS,CAAC;AAAA,MACzD,IAAI,iBAAiB;AAAA,QACnB,YAAW,KAAK,GAAG,aAAa,WAAW,eAAe,CAAC;AAAA,MAC7D;AAAA,MAEA,MAAM,QAAQ,KAAK,GAChB,OAAO,EACP,KAAK,YAAY,EACjB,MAAM,IAAI,GAAG,WAAU,CAAC,EACxB,QAAQ,KAAK,aAAa,SAAS,CAAC,EACpC,MAAM,KAAK;AAAA,MAEd,MAAM,UAAU,MAAM;AAAA,MACtB,OAAO,QAAQ,IAAI,CAAC,OAAO;AAAA,QACzB,IAAI,EAAE;AAAA,QACN,WAAW,EAAE;AAAA,QACb,UAAU,EAAE;AAAA,QACZ,SAAS,EAAE;AAAA,QACX,YAAY,EAAE,cAAc;AAAA,QAC5B,YAAY,EAAE,cAAc;AAAA,QAC5B,UAAU,EAAE,YAAY;AAAA,QACxB,UAAU,EAAE,YAAY;AAAA,QACxB,wBAAwB,EAAE;AAAA,QAC1B,WAAW,EAAE;AAAA,QACb,WAAW,EAAE;AAAA,MACf,EAAE;AAAA,KACH;AAAA;AAAA,OAMG,cAAa,CAAC,WAAgC;AAAA,IAClD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,OAAO,YAAY,EAAE,MAAM,GAAG,aAAa,IAAI,SAAS,CAAC;AAAA,KACxE;AAAA;AAAA,OAMG,cAAa,CACjB,WACA,SAYC;AAAA,IACD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,MAAM,IAAI;AAAA,MAEhB,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,QAEtC,MAAM,aAAsC,EAAE,WAAW,IAAI;AAAA,QAC7D,IAAI,QAAQ,SAAS;AAAA,UAAW,WAAW,OAAO,QAAQ;AAAA,QAC1D,IAAI,QAAQ,aAAa;AAAA,UAAW,WAAW,WAAW,QAAQ;AAAA,QAElE,MAAM,GAAG,OAAO,YAAY,EAAE,IAAI,UAAU,EAAE,MAAM,GAAG,aAAa,IAAI,SAAS,CAAC;AAAA,QAGlF,IAAI,QAAQ,8BAA8B,WAAW;AAAA,UAEnD,MAAM,GACH,OAAO,wBAAwB,EAC/B,MAAM,GAAG,yBAAyB,WAAW,SAAS,CAAC;AAAA,UAG1D,IAAI,QAAQ,0BAA0B,SAAS,GAAG;AAAA,YAChD,MAAM,oBAAoB,QAAQ,0BAA0B,IAAI,CAAC,cAAc;AAAA,cAC7E;AAAA,cACA;AAAA,YACF,EAAE;AAAA,YACF,MAAM,GACH,OAAO,wBAAwB,EAC/B,OAAO,iBAAiB,EACxB,oBAAoB;AAAA,UACzB;AAAA,QACF;AAAA,OACD;AAAA,MAGD,MAAM,iBAAiB,MAAM,KAAK,kBAAkB,SAAS;AAAA,MAC7D,IAAI,CAAC,gBAAgB;AAAA,QACnB,MAAM,IAAI,MAAM,WAAW,kCAAkC;AAAA,MAC/D;AAAA,MACA,OAAO;AAAA,KACR;AAAA;AAAA,OAMG,cAAa,CAAC,WAAgC;AAAA,IAClD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,QAEtC,MAAM,GAAG,OAAO,YAAY,EAAE,MAAM,GAAG,aAAa,WAAW,SAAS,CAAC;AAAA,QAGzE,MAAM,GACH,OAAO,wBAAwB,EAC/B,MAAM,GAAG,yBAAyB,WAAW,SAAS,CAAC;AAAA,QAG1D,MAAM,GAAG,OAAO,YAAY,EAAE,MAAM,GAAG,aAAa,IAAI,SAAS,CAAC;AAAA,OACnE;AAAA,KACF;AAAA;AAAA,OAMG,uBAAsB,CAAC,WAAiB,WAAkC;AAAA,IAC9E,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,IAAI,CAAC,aAAa,UAAU,WAAW;AAAA,QAAG;AAAA,MAE1C,MAAM,oBAAoB,UAAU,IAAI,CAAC,cAAc;AAAA,QACrD;AAAA,QACA;AAAA,MACF,EAAE;AAAA,MAEF,MAAM,KAAK,GACR,OAAO,wBAAwB,EAC/B,OAAO,iBAAiB,EACxB,oBAAoB;AAAA,KACxB;AAAA;AAAA,OAMG,uBAAsB,CAAC,WAAkC;AAAA,IAC7D,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,UAAU,MAAM,KAAK,GACxB,OAAO,EAAE,UAAU,yBAAyB,SAAS,CAAC,EACtD,KAAK,wBAAwB,EAC7B,MAAM,GAAG,yBAAyB,WAAW,SAAS,CAAC;AAAA,MAE1D,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,QAAgB;AAAA,KAC7C;AAAA;AAAA,OASG,qBAAoB,CAAC,WAAiB,UAAkC;AAAA,IAC5E,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,KAAK,GACvB,OAAO,EACP,KAAK,wBAAwB,EAC7B,MACC,IACE,GAAG,yBAAyB,WAAW,SAAS,GAChD,GAAG,yBAAyB,UAAU,QAAQ,CAChD,CACF,EACC,MAAM,CAAC;AAAA,MAEV,OAAO,OAAO,SAAS;AAAA,KACxB;AAAA;AAAA,OAMG,wBAAuB,CAAC,iBAAuB,SAA8B;AAAA,IACjF,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GACR,OAAO,wBAAwB,EAC/B,OAAO;AAAA,QACN;AAAA,QACA;AAAA,MACF,CAAC,EACA,oBAAoB;AAAA,KACxB;AAAA;AAAA,OAMG,0BAAyB,CAAC,iBAAwC;AAAA,IACtE,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,UAAU,MAAM,KAAK,GACxB,OAAO,EAAE,SAAS,yBAAyB,QAAQ,CAAC,EACpD,KAAK,wBAAwB,EAC7B,MAAM,GAAG,yBAAyB,iBAAiB,eAAe,CAAC;AAAA,MAEtE,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAe;AAAA,KAC5C;AAAA;AAAA,OAMG,6BAA4B,CAAC,iBAAuB,SAA8B;AAAA,IACtF,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,KAAK,GACR,OAAO,wBAAwB,EAC/B,MACC,IACE,GAAG,yBAAyB,iBAAiB,eAAe,GAC5D,GAAG,yBAAyB,SAAS,OAAO,CAC9C,CACF;AAAA,KACH;AAAA;AAAA,OAMG,sBAAqB,CACzB,SACA,SACA,iBAYC;AAAA,IACD,OAAO,KAAK,aAAa,YAAY;AAAA,MACnC,MAAM,MAAM,CAAC,SAAS,OAAO,EAAE,KAAK;AAAA,MACpC,MAAM,gBAAgB,MAAM,IAAI,MAAM,IAAI;AAAA,MAE1C,MAAM,mBAAmB,MAAM,KAAK,GACjC,OAAO,EACP,KAAK,YAAY,EACjB,MACC,IACE,GAAG,aAAa,MAAM,YAAY,EAAE,GACpC,GAAG,aAAa,MAAM,aAAa,GACnC,GAAG,aAAa,iBAAiB,eAAe,CAClD,CACF,EACC,MAAM,CAAC;AAAA,MAEV,IAAI,iBAAiB,SAAS,GAAG;AAAA,QAC/B,OAAO;AAAA,UACL,IAAI,iBAAiB,GAAG;AAAA,UACxB,iBAAiB,iBAAiB,GAAG;AAAA,UACrC,MAAM,iBAAiB,GAAG;AAAA,UAC1B,MAAM,iBAAiB,GAAG;AAAA,UAC1B,YAAY,iBAAiB,GAAG,cAAc;AAAA,UAC9C,UAAU,iBAAiB,GAAG,YAAY;AAAA,UAC1C,OAAO,iBAAiB,GAAG,SAAS;AAAA,UACpC,UAAU,iBAAiB,GAAG,YAAY;AAAA,UAC1C,WAAW,iBAAiB,GAAG;AAAA,UAC/B,WAAW,iBAAiB,GAAG;AAAA,QACjC;AAAA,MACF;AAAA,MAGA,OAAO,KAAK,cACV;AAAA,QACE;AAAA,QACA,MAAM;AAAA,QACN,MAAM,YAAY;AAAA,QAClB,UAAU,EAAE,OAAO,IAAI,IAAI,OAAO,IAAI,GAAG;AAAA,MAC3C,GACA,GACF;AAAA,KACD;AAAA;AAEL;;;AHn0HO,MAAM,8BAA8B,mBAAmB;AAAA,EACpD;AAAA,EACE,qBAA+C,cAAc;AAAA,EAOvE,WAAW,CAAC,SAAe,SAA8B;AAAA,IACvD,MAAM,OAAO;AAAA,IACb,KAAK,UAAU;AAAA,IAEf,KAAK,KAAK,QAAQ,KAAK,QAAQ,cAAc,CAAC;AAAA;AAAA,OAOnC,qBAAuB,CAClC,WACA,UACY;AAAA,IACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;AAAA;AAAA,OAI/B,eAAc,CAAC,WAA6C;AAAA,IAEhE,OAAO,KAAK,iBAAiB,SAAS;AAAA;AAAA,OAGlC,sBAAqB,CAAC,SAAgE;AAAA,IAG1F,SAAO,KAAK,EAAE,KAAK,aAAa,GAAG,kDAAkD;AAAA,IACrF,OAAO,CAAC;AAAA;AAAA,OAGJ,kBAAiB,CAAC,OAAuC;AAAA,IAE7D,MAAM,gBAAgB,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,IACtD,IAAI,eAAe;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,WAAkB;AAAA,MACtB,IAAI,KAAK;AAAA,MACT,MAAM,MAAM,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,MAChB,KAAK,MAAM,OAAO;AAAA,MAClB,WAAW,MAAM,aAAa,KAAK,IAAI;AAAA,MACvC,WAAW,MAAM,aAAa,KAAK,IAAI;AAAA,IACzC;AAAA,IAEA,MAAM,KAAK,YAAY,QAAQ;AAAA,IAC/B,MAAM,eAAe,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,IACrD,IAAI,CAAC,cAAc;AAAA,MACjB,MAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA;AAAA,OAWO,aAAe,CAAC,WAAyC;AAAA,IACvE,IAAI,KAAK,QAAQ,eAAe,GAAG;AAAA,MACjC,MAAM,QAAQ,IAAI,MAAM,gDAAgD;AAAA,MACxE,SAAO,KACL,EAAE,KAAK,cAAc,OAAO,MAAM,QAAQ,GAC1C,6CACF;AAAA,MACA,MAAM;AAAA,IACR;AAAA,IACA,OAAO,UAAU;AAAA;AAAA,OAQb,KAAI,GAAkB;AAAA,IAC1B,SAAO,MAAM,EAAE,KAAK,aAAa,GAAG,mCAAmC;AAAA;AAAA,OAQnE,QAAO,GAAqB;AAAA,IAChC,OAAO,CAAC,KAAK,QAAQ,eAAe;AAAA;AAAA,OAMhC,MAAK,GAAG;AAAA,IACZ,MAAM,KAAK,QAAQ,MAAM;AAAA;AAAA,OAQrB,cAAa,GAAG;AAAA,IACpB,OAAO,KAAK,QAAQ,cAAc;AAAA;AAEtC;;;AqB9IA,mBAAS;AACT;AACA,mBAAS;AAAA;AAOF,MAAM,oBAA8D;AAAA,EACjE;AAAA,EACA,eAAe;AAAA,EAOvB,WAAW,CAAC,SAAwB;AAAA,IAClC,KAAK,SAAS,IAAI,QAAO;AAAA,SACpB;AAAA,MACH,YAAY;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IACD,KAAK,sBAAsB;AAAA;AAAA,EAGtB,aAAa,GAAW;AAAA,IAC7B,OAAO,KAAK;AAAA;AAAA,EAGP,cAAc,GAAY;AAAA,IAC/B,OAAO,KAAK;AAAA;AAAA,OAGD,WAAU,GAAkB;AAAA,OAI5B,MAAK,GAAkB;AAAA,IAClC,KAAK,eAAe;AAAA,IAIpB,IAAI,KAAK,QAAQ;AAAA,MACf,IAAI;AAAA,QACF,MAAM,KAAK,OAAO,MAAM;AAAA,QACxB,MAAM;AAAA,IACV;AAAA;AAAA,EAGM,qBAAqB,GAAG;AAGlC;;;ACxDA,mBAAoB;AAUb,MAAM,0BAA0B,mBAAmB;AAAA,EAC9C,qBAA+C,cAAc;AAAA,EAC/D;AAAA,EAER,WAAW,CACT,SACA,SACA,SACA;AAAA,IACA,MAAM,OAAO;AAAA,IACb,KAAK,UAAU;AAAA,IACf,KAAK,KAAK,QAAQ,YAAY;AAAA;AAAA,EAGhC,UAAU,GAA8B;AAAA,IACtC,OAAO,KAAK;AAAA;AAAA,OAMD,qBAAuB,CAClC,UACA,UACY;AAAA,IACZ,OAAO,MAAM,KAAK,QAAQ,qBAAqB,UAAU,QAAQ;AAAA;AAAA,OAI7D,eAAc,CAAC,WAA6C;AAAA,IAEhE,OAAO,KAAK,iBAAiB,SAAS;AAAA;AAAA,OAGlC,sBAAqB,CAAC,SAAgE;AAAA,IAG1F,SAAO,KAAK,EAAE,KAAK,aAAa,GAAG,kDAAkD;AAAA,IACrF,OAAO,CAAC;AAAA;AAAA,OAGJ,kBAAiB,CAAC,OAAuC;AAAA,IAE7D,MAAM,gBAAgB,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,IACtD,IAAI,eAAe;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,WAAkB;AAAA,MACtB,IAAI,KAAK;AAAA,MACT,MAAM,MAAM,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,MAChB,KAAK,MAAM,OAAO;AAAA,MAClB,WAAW,MAAM,aAAa,KAAK,IAAI;AAAA,MACvC,WAAW,MAAM,aAAa,KAAK,IAAI;AAAA,IACzC;AAAA,IAEA,MAAM,KAAK,YAAY,QAAQ;AAAA,IAC/B,MAAM,eAAe,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,IACrD,IAAI,CAAC,cAAc;AAAA,MACjB,MAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA;AAAA,OAkBO,aAAe,CAAC,WAAyC;AAAA,IACvE,OAAO,MAAM,KAAK,UAAU,YAAY;AAAA,MAItC,OAAO,MAAM,UAAU;AAAA,KACxB;AAAA;AAAA,OASG,KAAI,GAAkB;AAAA,IAC1B,SAAO,MAAM,EAAE,KAAK,aAAa,GAAG,+BAA+B;AAAA;AAAA,OAO/D,QAAO,GAAqB;AAAA,IAChC,OAAO,KAAK,QAAQ,eAAe;AAAA;AAAA,OAQ/B,MAAK,GAAkB;AAAA,IAC3B,MAAM,KAAK,QAAQ,MAAM;AAAA;AAAA,OAQrB,cAAa,GAAG;AAAA,IACpB,OAAO,KAAK,QAAQ,cAAc;AAAA;AAAA,OAG9B,YAAW,CAAC,OAAgC;AAAA,IAChD,OAAO,MAAM,YAAY,KAAK;AAAA;AAAA,EAGhC,QAAQ,CAAC,SAAsC;AAAA,IAC7C,OAAO,MAAM,SAAS,OAAO;AAAA;AAAA,EAG/B,WAAW,CAAC,SAAe,OAAyC;AAAA,IAClE,OAAO,MAAM,YAAY,SAAS,KAAK;AAAA;AAAA,EAGzC,WAAW,CAAC,SAAiC;AAAA,IAC3C,OAAO,MAAM,YAAY,OAAO;AAAA;AAAA,EAGlC,cAAc,CAAC,UAAsC;AAAA,IACnD,OAAO,MAAM,eAAe,QAAQ;AAAA;AAAA,EAGtC,gBAAgB,CAAC,WAAsC;AAAA,IACrD,OAAO,MAAM,iBAAiB,SAAS,EAAE,KAAK,CAAC,WAAW,UAAU,CAAC,CAAC;AAAA;AAAA,EAGxE,YAAY,CAAC,SAA+B;AAAA,IAC1C,OAAO,MAAM,aAAa,OAAM;AAAA;AAAA,EAGlC,YAAY,CAAC,QAAgB,WAAkC;AAAA,IAC7D,OAAO,MAAM,aAAa,QAAQ,SAAS;AAAA;AAAA,EAG7C,aAAa,CAAC,UAAwC;AAAA,IACpD,OAAO,MAAM,cAAc,QAAQ;AAAA;AAAA,EAGrC,YAAY,CAAC,QAA0D;AAAA,IACrE,OAAO,MAAM,aAAa,MAAM;AAAA;AAAA,EAGlC,YAAY,CAAC,UAA+B;AAAA,IAC1C,OAAO,MAAM,aAAa,QAAQ;AAAA;AAAA,EAGpC,eAAe,CAAC,WAAwC;AAAA,IACtD,OAAO,MAAM,gBAAgB,SAAS;AAAA;AAAA,EAGxC,YAAY,CACV,UACA,MACA,SACA,gBAC2B;AAAA,IAC3B,OAAO,MAAM,aAAa,UAAU,MAAM,SAAS,cAAc;AAAA;AAAA,EAGnE,eAAe,CAAC,WAAqC;AAAA,IACnD,OAAO,MAAM,gBAAgB,SAAS;AAAA;AAAA,EAGxC,eAAe,CAAC,aAAkC;AAAA,IAChD,OAAO,MAAM,gBAAgB,WAAW;AAAA;AAE5C;;;ACvMA;AACA;AACA;AACA;AACA;AAIA;AATA;;;ACAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAQ,MAAM,kBAAU;AACxB,IAAM,aAAa,GAAG,SAAS,GAAG,OAAO,OAAY;AAAA;AACrD,MAAM,4BAA4B,gBAAgB;AAAA,EAChD,WAAW,CAAC,QAAQ,aAAa,QAAQ,UAAQ,OAAO,eAAe,aAAa,QAAQ,MAAM,wBAAwB,oBAAoB;AAAA,IAC5I,MAAM,EAAE,KAAK,aAAa,OAAO,GAAG,OAAO,eAAe,WAAW;AAAA,IACrE,KAAK,SAAS;AAAA,IACd,KAAK,cAAc;AAAA,IACnB,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,yBAAyB;AAAA,IAC9B,KAAK,qBAAqB;AAAA,IAC1B,KAAK,iBAAiB;AAAA,MACpB;AAAA,MACA,MAAM;AAAA,MACN,OAAO;AAAA,QAEL,eAAe,CAAC,QAAQ,WAAW;AAAA,UACjC,IAAI,WAAW,OAAM,SAAS,aAAa;AAAA,YACzC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,OAAM,SAAS,WAAW;AAAA,YACvC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,OAAM,SAAS,MAAM;AAAA,YAClC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,OAAM,SAAS,UAAU;AAAA,YACtC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,OAAO,OAAM,cAAc,QAAQ,MAAM;AAAA;AAAA,MAE7C;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AAAA,MACjB;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,QAEL,eAAe,CAAC,QAAQ,WAAW;AAAA,UACjC,IAAI,WAAW,OAAM,SAAS,aAAa;AAAA,YACzC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,OAAM,SAAS,WAAW;AAAA,YACvC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,OAAM,SAAS,MAAM;AAAA,YAClC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,OAAM,SAAS,UAAU;AAAA,YACtC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,OAAO,OAAM,cAAc,QAAQ,MAAM;AAAA;AAAA,MAE7C;AAAA,IACF;AAAA;AAAA,UAEM,cAAc;AAAA,EACtB;AAAA,EACA;AAAA,OACM,QAAO,CAAC,oBAAoB,CAAC,GAAG;AAAA,IACpC,OAAO,OAAO,gBAAgB,mBAAmB,YAAY;AAAA,MAC3D,MAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAAA,MAC9D,KAAK,OAAO,SAAS,KAAK,eAAe,MAAM,MAAM;AAAA,MACrD,QAAQ,QAAQ,gBAAgB,UAAU,QAAQ,aAAa,OAAO,qBAAqB,uBAAuB;AAAA,MAClH,IAAI,CAAC,UAAU,CAAC,oBAAoB;AAAA,QAClC,OAAO,OAAO,gBAAgB,0BAA0B,OAAO,SAAS;AAAA,UACtE,MAAM,cAAc;AAAA,YAClB,sBAAsB,SAAS;AAAA,YAC/B,sBAAsB,SAAS;AAAA,YAC/B,wBAAwB,KAAK,UAAU,MAAM;AAAA,UAC/C,CAAC;AAAA,UACD,OAAO,KAAK,eAAe,SAAS,MAAM,QAAQ,YAAY;AAAA,YAC5D,OAAO,MAAM,OAAO,MAAM,UAAU,MAAM;AAAA,WAC3C;AAAA,SACF;AAAA,MACH;AAAA,MACA,MAAM,SAAS,MAAM,OAAO,gBAAgB,0BAA0B,CAAC,SAAS;AAAA,QAC9E,MAAM,cAAc;AAAA,UAClB,sBAAsB,MAAM;AAAA,UAC5B,sBAAsB,MAAM;AAAA,UAC5B,wBAAwB,KAAK,UAAU,MAAM;AAAA,QAC/C,CAAC;AAAA,QACD,OAAO,KAAK,eAAe,MAAM,MAAM,QAAQ,YAAY;AAAA,UACzD,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM;AAAA,SACxC;AAAA,OACF;AAAA,MACD,OAAO,OAAO,gBAAgB,uBAAuB,MAAM;AAAA,QACzD,OAAO,qBAAqB,mBAAmB,OAAO,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,aAAa,QAAQ,KAAK,mBAAmB,CAAC;AAAA,OACtI;AAAA,KACF;AAAA;AAAA,EAEH,GAAG,CAAC,oBAAoB,CAAC,GAAG;AAAA,IAC1B,OAAO,OAAO,gBAAgB,mBAAmB,MAAM;AAAA,MACrD,MAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAAA,MAC9D,KAAK,OAAO,SAAS,KAAK,eAAe,MAAM,MAAM;AAAA,MACrD,OAAO,OAAO,gBAAgB,0BAA0B,CAAC,SAAS;AAAA,QAChE,MAAM,cAAc;AAAA,UAClB,sBAAsB,KAAK,eAAe;AAAA,UAC1C,sBAAsB,KAAK,eAAe;AAAA,UAC1C,wBAAwB,KAAK,UAAU,MAAM;AAAA,QAC/C,CAAC;AAAA,QACD,OAAO,KAAK,eAAe,KAAK,eAAe,MAAM,QAAQ,YAAY;AAAA,UACvE,OAAO,KAAK,OAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,SACrD,EAAE,KAAK,CAAC,WAAW,OAAO,IAAI;AAAA,OAChC;AAAA,KACF;AAAA;AAAA,EAGH,qBAAqB,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA;AAEhB;AAAA;AACA,MAAM,sBAAsB,UAAU;AAAA,EACpC,WAAW,CAAC,QAAQ,UAAS,SAAQ,UAAU,CAAC,GAAG;AAAA,IACjD,MAAM,QAAO;AAAA,IACb,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,SAAS,QAAQ,UAAU,IAAI;AAAA,IACpC,KAAK,QAAQ,QAAQ,SAAS,IAAI;AAAA;AAAA,UAE5B,cAAc;AAAA,EACtB;AAAA,EACA;AAAA,EACA,YAAY,CAAC,OAAO,QAAQ,MAAM,uBAAuB,oBAAoB,eAAe,aAAa;AAAA,IACvG,OAAO,IAAI,oBACT,KAAK,QACL,MAAM,KACN,MAAM,QACN,KAAK,QACL,KAAK,OACL,eACA,aACA,QACA,MACA,uBACA,kBACF;AAAA;AAAA,OAEI,YAAW,CAAC,aAAa,QAAQ;AAAA,IACrC,MAAM,WAAU,KAAK,kBAAkB,QAAQ,cAAc,KAAK,kBAAkB,aAAa,IAAI,cAAc,MAAM,KAAK,OAAO,QAAQ,GAAG,KAAK,SAAS,KAAK,QAAQ,KAAK,OAAO,IAAI;AAAA,IAC3L,MAAM,KAAK,IAAI,kBAAkB,KAAK,SAAS,UAAS,KAAK,MAAM;AAAA,IACnE,MAAM,GAAG,QAAQ,WAAW,SAAS,OAAO,GAAG,wBAAwB,MAAM,MAAW,WAAG;AAAA,IAC3F,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,YAAY,EAAE;AAAA,MACnC,MAAM,GAAG,QAAQ,WAAW;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,MAAM,GAAG,QAAQ,aAAa;AAAA,MAC9B,MAAM;AAAA,cACN;AAAA,MACA,IAAI,KAAK,kBAAkB,QAAQ,cAAc,KAAK,kBAAkB,YAAY;AAAA,QAClF,SAAQ,OAAO,QAAQ;AAAA,MACzB;AAAA;AAAA;AAAA,OAGE,MAAK,CAAC,OAAM;AAAA,IAChB,MAAM,MAAM,MAAM,KAAK,QAAQ,KAAI;AAAA,IACnC,OAAO,OACL,IAAI,QAAQ,GAAG,QACjB;AAAA;AAEJ;AAAA;AACA,MAAM,0BAA0B,cAAc;AAAA,UACpC,cAAc;AAAA,OAChB,YAAW,CAAC,aAAa;AAAA,IAC7B,MAAM,gBAAgB,KAAK,KAAK,cAAc;AAAA,IAC9C,MAAM,KAAK,IAAI,kBACb,KAAK,SACL,KAAK,SACL,KAAK,QACL,KAAK,cAAc,CACrB;AAAA,IACA,MAAM,GAAG,QAAQ,IAAI,IAAI,aAAa,eAAe,CAAC;AAAA,IACtD,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,YAAY,EAAE;AAAA,MACnC,MAAM,GAAG,QAAQ,IAAI,IAAI,qBAAqB,eAAe,CAAC;AAAA,MAC9D,OAAO;AAAA,MACP,OAAO,KAAK;AAAA,MACZ,MAAM,GAAG,QAAQ,IAAI,IAAI,yBAAyB,eAAe,CAAC;AAAA,MAClE,MAAM;AAAA;AAAA;AAGZ;;;ADrNA,MAAM,aAAa;AAAA,EACjB,WAAW,CAAC,QAAQ,UAAS,UAAU,CAAC,GAAG;AAAA,IACzC,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA;AAAA,UAET,cAAc;AAAA,EACtB,aAAa,CAAC,SAAQ;AAAA,IACpB,OAAO,IAAI,cAAc,KAAK,QAAQ,KAAK,SAAS,SAAQ;AAAA,MAC1D,QAAQ,KAAK,QAAQ;AAAA,MACrB,OAAO,KAAK,QAAQ;AAAA,IACtB,CAAC;AAAA;AAEL;AAAA;AACA,MAAM,uBAAuB,WAAW;AAAA,UAC9B,cAAc;AACxB;AACA,SAAS,UAAS,CAAC,QAAQ,SAAS,CAAC,GAAG;AAAA,EACtC,MAAM,WAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AAAA,EACvD,IAAI;AAAA,EACJ,IAAI,OAAO,WAAW,MAAM;AAAA,IAC1B,WAAS,IAAI;AAAA,EACf,EAAO,SAAI,OAAO,WAAW,OAAO;AAAA,IAClC,WAAS,OAAO;AAAA,EAClB;AAAA,EACA,IAAI;AAAA,EACJ,IAAI,OAAO,QAAQ;AAAA,IACjB,MAAM,eAAe,8BACnB,OAAO,QACP,2BACF;AAAA,IACA,UAAS;AAAA,MACP,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,MAAM,SAAS,IAAI,aAAa,QAAQ,UAAS,EAAE,kBAAQ,OAAO,OAAO,MAAM,CAAC;AAAA,EAChF,MAAM,WAAU,OAAO,cAAc,OAAM;AAAA,EAC3C,MAAM,MAAK,IAAI,eAAe,UAAS,UAAS,OAAM;AAAA,EACtD,IAAG,UAAU;AAAA,EACb,IAAG,SAAS,OAAO;AAAA,EACnB,IAAI,IAAG,QAAQ;AAAA,IACb,IAAG,OAAO,gBAAgB,OAAO,OAAO;AAAA,EAC1C;AAAA,EACA,OAAO;AAAA;AAET,SAAS,QAAO,IAAI,QAAQ;AAAA,EAC1B,IAAI,OAAO,OAAO,OAAO,UAAU;AAAA,IACjC,MAAM,WAAW,IAAI,IAAG,KAAK;AAAA,MAC3B,kBAAkB,OAAO;AAAA,IAC3B,CAAC;AAAA,IACD,OAAO,WAAU,UAAU,OAAO,EAAE;AAAA,EACtC;AAAA,EACA,IAAI,SAAS,OAAO,EAAE,GAAG;AAAA,IACvB,QAAQ,YAAY,WAAW,kBAAkB,OAAO;AAAA,IACxD,IAAI;AAAA,MAAQ,OAAO,WAAU,QAAQ,aAAa;AAAA,IAClD,MAAM,WAAW,OAAO,eAAe,WAAW,IAAI,IAAG,KAAK;AAAA,MAC5D,kBAAkB;AAAA,IACpB,CAAC,IAAI,IAAI,IAAG,KAAK,UAAU;AAAA,IAC3B,OAAO,WAAU,UAAU,aAAa;AAAA,EAC1C;AAAA,EACA,OAAO,WAAU,OAAO,IAAI,OAAO,EAAE;AAAA;AAAA,CAEtC,CAAC,cAAa;AAAA,EACb,SAAS,IAAI,CAAC,QAAQ;AAAA,IACpB,OAAO,WAAU,CAAC,GAAG,MAAM;AAAA;AAAA,EAE7B,UAAS,OAAO;AAAA,GACf,aAAY,WAAU,CAAC,EAAE;;;AE9E5B;AADA,iBAAS;AAET,mBAAS,0BAAmB;AAAA;AAErB,MAAM,0BAA0B;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACD;AAAA,EACA;AAAA,EAEjB,WAAW,CAAC,kBAA0B,aAAsB;AAAA,IAC1D,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA,IAGnB,MAAM,aAAyB;AAAA,MAC7B;AAAA,MAIA,KAAK;AAAA,MACL,KAAK;AAAA,MAIL,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,MAIzB,WAAW;AAAA,MACX,6BAA6B;AAAA,IAC/B;AAAA,IAEA,KAAK,OAAO,IAAI,MAAK,UAAU;AAAA,IAM/B,KAAK,KAAK,GAAG,SAAS,CAAC,QAAQ;AAAA,MAC7B,SAAO,KACL,EAAE,KAAK,cAAc,OAAO,KAAK,WAAW,OAAO,GAAG,EAAE,GACxD,iDACF;AAAA,KACD;AAAA,IAED,KAAK,KAAK,SAAQ,KAAK,MAAM,EAAE,QAAQ,aAAa,CAAC;AAAA;AAAA,EAGhD,WAAW,GAAmB;AAAA,IACnC,OAAO,KAAK;AAAA;AAAA,EAGP,aAAa,GAAS;AAAA,IAC3B,OAAO,KAAK;AAAA;AAAA,OAGD,UAAS,GAAwB;AAAA,IAC5C,OAAO,KAAK,KAAK,QAAQ;AAAA;AAAA,OAGd,eAAc,GAAqB;AAAA,IAC9C,IAAI,SAA4B;AAAA,IAChC,IAAI;AAAA,MACF,SAAS,MAAM,KAAK,KAAK,QAAQ;AAAA,MACjC,MAAM,OAAO,MAAM,UAAU;AAAA,MAC7B,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,SAAO,MACL,EAAE,KAAK,cAAc,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GACnF,mCACF;AAAA,MACA,OAAO;AAAA,cACP;AAAA,MACA,IAAI,QAAQ;AAAA,QACV,OAAO,QAAQ;AAAA,MACjB;AAAA;AAAA;AAAA,OAQS,qBAAuB,CAClC,UACA,UACY;AAAA,IACZ,MAAM,uBAAuB,QAAQ,IAAI,0BAA0B;AAAA,IAEnE,OAAO,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,MAC7C,IAAI,sBAAsB;AAAA,QAExB,IAAI,KAAK,aAAa;AAAA,UACpB,MAAM,GAAG,QAAQ,yCAAyC,KAAK,oBAAoB;AAAA,QACrF;AAAA,QAGA,IAAI,UAAU;AAAA,UACZ,IAAI,CAAC,cAAa,QAAQ,GAAG;AAAA,YAC3B,MAAM,IAAI,MAAM,2CAA2C,UAAU;AAAA,UACvE;AAAA,UACA,MAAM,GAAG,QAAQ,yCAAyC,iBAAiB;AAAA,QAC7E;AAAA,MACF;AAAA,MAEA,OAAO,MAAM,SAAS,EAAE;AAAA,KACzB;AAAA;AAAA,OAUU,MAAK,GAAkB;AAAA,IAClC,IAAI,KAAK;AAAA,MAAS;AAAA,IAClB,KAAK,UAAU;AAAA,IACf,MAAM,KAAK,KAAK,IAAI;AAAA;AAAA,EAOf,QAAQ,GAAY;AAAA,IACzB,OAAO,KAAK;AAAA;AAAA,EAOP,mBAAmB,GAAW;AAAA,IACnC,OAAO,KAAK;AAAA;AAAA,EAOP,cAAc,GAAuB;AAAA,IAC1C,OAAO,KAAK;AAAA;AAEhB;;;ACrJA,mBAAoB;AAgBb,MAAM,4BAA4B,mBAAmB;AAAA,EAChD,qBAA+C,cAAc;AAAA,EAC/D;AAAA,EAER,WAAW,CAAC,SAAe,SAAgC,SAAmC;AAAA,IAC5F,MAAM,OAAO;AAAA,IACb,KAAK,UAAU;AAAA,IAGf,KAAK,KAAK,QAAQ,YAAY;AAAA;AAAA,EAGhC,UAAU,GAA0B;AAAA,IAClC,OAAO,KAAK;AAAA;AAAA,OAMD,qBAAuB,CAClC,UACA,UACY;AAAA,IACZ,OAAO,MAAM,KAAK,QAAQ,qBAAqB,UAAU,QAAQ;AAAA;AAAA,OAG7D,eAAc,CAAC,WAA6C;AAAA,IAChE,OAAO,KAAK,iBAAiB,SAAS;AAAA;AAAA,OAGlC,sBAAqB,CAAC,SAAgE;AAAA,IAC1F,SAAO,KAAK,EAAE,KAAK,kBAAkB,GAAG,kDAAkD;AAAA,IAC1F,OAAO,CAAC;AAAA;AAAA,OAGJ,kBAAiB,CAAC,OAAuC;AAAA,IAC7D,MAAM,gBAAgB,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,IACtD,IAAI,eAAe;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,WAAkB;AAAA,MACtB,IAAI,KAAK;AAAA,MACT,MAAM,MAAM,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,MAChB,KAAK,MAAM,OAAO;AAAA,MAClB,WAAW,MAAM,aAAa,KAAK,IAAI;AAAA,MACvC,WAAW,MAAM,aAAa,KAAK,IAAI;AAAA,IACzC;AAAA,IAEA,MAAM,KAAK,YAAY,QAAQ;AAAA,IAC/B,MAAM,eAAe,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,IACrD,IAAI,CAAC,cAAc;AAAA,MACjB,MAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA;AAAA,OAGO,aAAe,CAAC,WAAyC;AAAA,IACvE,OAAO,MAAM,KAAK,UAAU,YAAY;AAAA,MACtC,OAAO,MAAM,UAAU;AAAA,KACxB;AAAA;AAAA,OAGG,KAAI,GAAkB;AAAA,IAC1B,SAAO,MAAM,EAAE,KAAK,kBAAkB,GAAG,iCAAiC;AAAA;AAAA,OAGtE,QAAO,GAAqB;AAAA,IAChC,OAAO,KAAK,QAAQ,eAAe;AAAA;AAAA,OAG/B,MAAK,GAAkB;AAAA,IAC3B,MAAM,KAAK,QAAQ,MAAM;AAAA;AAAA,OAGrB,cAAa,GAAG;AAAA,IACpB,OAAO,KAAK,QAAQ,cAAc;AAAA;AAAA,OAG9B,YAAW,CAAC,OAAgC;AAAA,IAChD,OAAO,MAAM,YAAY,KAAK;AAAA;AAAA,EAGhC,QAAQ,CAAC,SAAsC;AAAA,IAC7C,OAAO,MAAM,SAAS,OAAO;AAAA;AAAA,EAG/B,WAAW,CAAC,SAAe,OAAyC;AAAA,IAClE,OAAO,MAAM,YAAY,SAAS,KAAK;AAAA;AAAA,EAGzC,WAAW,CAAC,SAAiC;AAAA,IAC3C,OAAO,MAAM,YAAY,OAAO;AAAA;AAAA,EAGlC,cAAc,CAAC,UAAsC;AAAA,IACnD,OAAO,MAAM,eAAe,QAAQ;AAAA;AAAA,EAGtC,gBAAgB,CAAC,WAAsC;AAAA,IACrD,OAAO,MAAM,iBAAiB,SAAS,EAAE,KAAK,CAAC,WAAW,UAAU,CAAC,CAAC;AAAA;AAAA,EAGxE,YAAY,CAAC,SAA+B;AAAA,IAC1C,OAAO,MAAM,aAAa,OAAM;AAAA;AAAA,EAGlC,YAAY,CAAC,QAAgB,WAAkC;AAAA,IAC7D,OAAO,MAAM,aAAa,QAAQ,SAAS;AAAA;AAAA,EAG7C,aAAa,CAAC,UAAwC;AAAA,IACpD,OAAO,MAAM,cAAc,QAAQ;AAAA;AAAA,EAGrC,YAAY,CAAC,QAA0D;AAAA,IACrE,OAAO,MAAM,aAAa,MAAM;AAAA;AAAA,EAGlC,YAAY,CAAC,UAA+B;AAAA,IAC1C,OAAO,MAAM,aAAa,QAAQ;AAAA;AAAA,EAGpC,eAAe,CAAC,WAAwC;AAAA,IACtD,OAAO,MAAM,gBAAgB,SAAS;AAAA;AAAA,EAGxC,YAAY,CACV,UACA,MACA,SACA,gBAC2B;AAAA,IAC3B,OAAO,MAAM,aAAa,UAAU,MAAM,SAAS,cAAc;AAAA;AAAA,EAGnE,eAAe,CAAC,WAAqC;AAAA,IACnD,OAAO,MAAM,gBAAgB,SAAS;AAAA;AAAA,EAGxC,eAAe,CAAC,aAAkC;AAAA,IAChD,OAAO,MAAM,gBAAgB,WAAW;AAAA;AAE5C;;;AC/JA,IAAI,KAAG,OAAO;AAAO,IAAI,KAAG,OAAO;AAAe,IAAI,KAAG,OAAO;AAAyB,IAAI,KAAG,OAAO;AAAoB,IAAI,KAAG,OAAO;AAAd,IAA6B,KAAG,OAAO,UAAU;AAAe,IAAI,KAAG,CAAC,GAAE,GAAE,OAAI,KAAK,KAAE,GAAG,GAAE,GAAE,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,IAAE,EAAE,KAAG;AAAE,IAAI,IAAE,CAAC,GAAE,MAAI,GAAG,GAAE,QAAO,EAAC,OAAM,GAAE,cAAa,KAAE,CAAC;AAAE,IAAI,IAAE,CAAC,GAAE,MAAI,OAAK,MAAI,IAAE,EAAE,IAAE,CAAC,IAAG;AAAG,IAAI,IAAE,CAAC,GAAE,MAAI,OAAK,KAAG,GAAG,IAAE,EAAC,SAAQ,CAAC,EAAC,GAAG,SAAQ,CAAC,GAAE,EAAE;AAArD,IAA8D,KAAG,CAAC,GAAE,MAAI;AAAA,EAAC,SAAQ,KAAK;AAAA,IAAE,GAAG,GAAE,GAAE;AAAA,MAAC,KAAI,EAAE;AAAA,MACld,YAAW;AAAA,IAAE,CAAC;AAAA;AAD8V,IAC3V,KAAG,CAAC,GAAE,GAAE,GAAE,MAAI;AAAA,EAAC,IAAG,KAAG,OAAO,KAAG,YAAU,OAAO,KAAG;AAAA,IAAW,SAAQ,KAAK,GAAG,CAAC;AAAA,MAAE,CAAC,GACnG,KAAK,GAAE,CAAC,KAAG,MAAI,KAAG,GAAG,GAAE,GAAE,EAAC,KAAI,MAAI,EAAE,IAAG,YAAW,EAAE,IAAE,GAAG,GAAE,CAAC,MAAI,EAAE,WAAU,CAAC;AAAA,EAAE,OAAO;AAAA;AAAG,IAAI,KAAG,CAAC,GAAE,GAAE,OAAK,IAAE,KAAG,OAAK,GAAG,GAAG,CAAC,CAAC,IAAE,CAAC,GAAE,GAAG,KAAG,CAAC,KAAG,CAAC,EAAE,aAAW,GAAG,GAAE,WAAU,EAAC,OAAM,GAAE,YAAW,KAAE,CAAC,IAC/L,GAAE,CAAC;AADsF,IACnF,IAAE,OAAG,GAAG,GAAG,CAAC,GAAE,cAAa,EAAC,OAAM,KAAE,CAAC,GAAE,CAAC;AAAE,IAAI,IAAE,CAAC,GAAE,GAAE,MAAI,GAAG,GAAE,OAAO,KAAG,WAAS,IAAE,KAAG,GAAE,CAAC;AAAE,IAAI,KAAG,EAAE,SAAI;AAAA,EAAc,EAAE;AAAA,EAAE,IAAG,aAAW;AAAA,EAAG,IAAG,cAAY;AAAA,EAAG,IAAG,gBAAc;AAAA,EAAG,IAAI,KAAG,CAAC,GAAE,KAAG,CAAC,GACrM,KAAG,OAAO,aAAW,MAAI,aAAW,OAAM,KAAG;AAAA,EACjC,KAAI,KAAG,GAAE,KAAG,GAAG,OAAO,KAAG,IAAG,EAAE;AAAA,IAAG,GAAG,MAAI,GAAG,KAAI,GAAG,GAAG,WAAW,EAAE,KAAG;AAAA,EAAG,IAAI,IAAG;AAAA,EAAG,GAAG,MACjG;AAAA,EAAG,GAAG,MAAI;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE;AAAA,IAAO,IAAG,IAAE,IAAE;AAAA,MAAE,MAAM,IAAI,MAAM,gDACpD;AAAA,IAAE,IAAI,IAAE,EAAE,QAAQ,GAAG;AAAA,IAAE,MAAI,OAAK,IAAE;AAAA,IAAG,IAAI,IAAE,MAAI,IAAE,IAAE,IAAE,IAAE;AAAA,IAAE,OAAM,CAAC,GAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,SAAS;AAAA,EACnG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,GAAG,CAAC,GAAE,IAAE,EAAE,IAAG,IAAE,EAAE;AAAA,IAAG,QAAO,IAAE,KAAG,IAAE,IAAE;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,QAAO,IACxG,KAAG,IAAE,IAAE;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,GAAE,IAAE,GAAG,CAAC,GAAE,IAAE,EAAE,IAAG,IAAE,EAAE,IAAG,IAAE,IAAI,GAAG,GAAG,GAAE,GAAE,CAAC,CAAC,GAAE,IAAE,GAAE,IAAE,IAClG,IAAE,IAAE,IAAE,GAAE;AAAA,IAAE,KAAI,IAAE,EAAE,IAAE,GAAE,KAAG;AAAA,MAAE,IAAE,GAAG,EAAE,WAAW,CAAC,MAAI,KAAG,GAAG,EAAE,WAAW,IAAE,CAAC,MAAI,KAAG,GAAG,EAAE,WAAW,IAAE,CAAC,MAClG,IAAE,GAAG,EAAE,WAAW,IAAE,CAAC,IAAG,EAAE,OAAK,KAAG,KAAG,KAAI,EAAE,OAAK,KAAG,IAAE,KAAI,EAAE,OAAK,IAAE;AAAA,IAAI,OAAO,MAAI,MAAI,IAAE,GAAG,EAAE,WAC5F,CAAC,MAAI,IAAE,GAAG,EAAE,WAAW,IAAE,CAAC,MAAI,GAAE,EAAE,OAAK,IAAE,MAAK,MAAI,MAAI,IAAE,GAAG,EAAE,WAAW,CAAC,MAAI,KAAG,GAAG,EAAE,WAAW,IAAE,CAAC,MACnG,IAAE,GAAG,EAAE,WAAW,IAAE,CAAC,MAAI,GAAE,EAAE,OAAK,KAAG,IAAE,KAAI,EAAE,OAAK,IAAE,MAAK;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,KACxG,KAAG,MAAI,GAAG,KAAG,KAAG,MAAI,GAAG,KAAG,IAAE,MAAI,GAAG,IAAE;AAAA;AAAA,EAAI,EAAE,IAAG,iBAAiB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,SAAQ,GAAE,IAAE,CAAC,GAAE,IAAE,EAAE,IACvG,GAAE,KAAG;AAAA,MAAE,KAAG,EAAE,MAAI,KAAG,aAAW,EAAE,IAAE,MAAI,IAAE,UAAQ,EAAE,IAAE,KAAG,MAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA,IAAE,OAAO,EAAE,KAAK,EAAE;AAAA;AAAA,EAAE,EAAE,IAAG,aACvF;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,SAAQ,GAAE,IAAE,EAAE,QAAO,IAAE,IAAE,GAAE,IAAE,CAAC,GAAE,IAAE,OAAM,IAAE,GAAE,IAAE,IAAE,EAAE,IAAE,GAAE,KAAG;AAAA,MAAE,EAAE,KAAK,GAAG,GAAE,GAClG,IAAE,IAAE,IAAE,IAAE,IAAE,CAAC,CAAC;AAAA,IAAE,OAAO,MAAI,KAAG,IAAE,EAAE,IAAE,IAAG,EAAE,KAAK,GAAG,KAAG,KAAG,GAAG,KAAG,IAAE,MAAI,IAAI,KAAG,MAAI,MAAI,KAAG,EAAE,IAAE,MAAI,KAAG,EAAE,IAAE,IAClG,EAAE,KAAK,GAAG,KAAG,MAAI,GAAG,KAAG,IAAE,MAAI,GAAG,KAAG,IAAE,MAAI,GAAG,IAAG,EAAE,KAAK,EAAE;AAAA;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAC,EAAE;AAAA,EAAE,GAAG,OAAK,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,GAAE,GAAE,IAAE,IAAE,IAAE,IAAE,GAAE,KAAG,KAAG,KAAG,GAAE,IAAE,KAAG,GAAE,IAAE,IAAG,IAAE,IAAE,IAAE,IAAE,GAAE,IAAE,IACrL,KAAG,GAAE,IAAE,EAAE,IAAE;AAAA,IAAG,KAAI,KAAG,GAAE,IAAE,KAAG,KAAG,CAAC,KAAG,GAAE,MAAI,CAAC,GAAE,KAAG,EAAE,IAAE,GAAE,IAAE,IAAE,MAAI,EAAE,IAAE,IAAG,KAAG,GAAE,KAAG;AAAA;AAAA,IAAG,KAAI,IAAE,KAAG,KAAG,CAAC,KAAG,GAAE,MACjG,CAAC,GAAE,KAAG,EAAE,IAAE,GAAE,IAAE,IAAE,MAAI,EAAE,IAAE,IAAG,KAAG,GAAE,KAAG;AAAA;AAAA,IAAG,IAAG,MAAI;AAAA,MAAE,IAAE,IAAE;AAAA,IAAM;AAAA,MAAC,IAAG,MAAI;AAAA,QAAE,OAAO,IAAE,OAAK,IAAE,KAAG,MAAI,IAAE;AAAA,MAAG,IAAE,IAAE,KACnG,IAAI,GAAE,CAAC,GAAE,IAAE,IAAE;AAAA;AAAA,IAAE,QAAO,IAAE,KAAG,KAAG,IAAE,KAAK,IAAI,GAAE,IAAE,CAAC;AAAA;AAAA,EAAG,GAAG,QAAM,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,GAAE,GAAE,GAAE,IAAE,IAAE,IAAE,IAAE,GAClG,KAAG,KAAG,KAAG,GAAE,IAAE,KAAG,GAAE,IAAE,MAAI,KAAG,KAAK,IAAI,GAAE,GAAG,IAAE,KAAK,IAAI,GAAE,GAAG,IAAE,GAAE,IAAE,IAAE,IAAE,IAAE,GAAE,IAAE,IAAE,IAAE,IAAG,IAAE,IAAE,KAAG,MAAI,KAAG,IAAE,IAAE,IAClG,IAAE;AAAA,IAAE,KAAI,IAAE,KAAK,IAAI,CAAC,GAAE,MAAM,CAAC,KAAG,MAAI,IAAE,KAAG,IAAE,MAAM,CAAC,IAAE,IAAE,GAAE,IAAE,MAAI,IAAE,KAAK,MAAM,KAAK,IAAI,CAAC,IAAE,KAAK,GAAG,GAAE,KAAG,IACpG,KAAK,IAAI,GAAE,CAAC,CAAC,KAAG,MAAI,KAAI,KAAG,IAAG,IAAE,KAAG,IAAE,KAAG,IAAE,IAAE,KAAG,IAAE,KAAK,IAAI,GAAE,IAAE,CAAC,GAAE,IAAE,KAAG,MAAI,KAAI,KAAG,IAAG,IAAE,KAAG,KAAG,IAAE,GAAE,IAAE,KAClG,IAAE,KAAG,KAAG,KAAG,IAAE,IAAE,KAAG,KAAK,IAAI,GAAE,CAAC,GAAE,IAAE,IAAE,MAAI,IAAE,IAAE,KAAK,IAAI,GAAE,IAAE,CAAC,IAAE,KAAK,IAAI,GAAE,CAAC,GAAE,IAAE,IAAI,KAAG,GAAE,EAAE,IAAE,KAAG,IAAE,KAAI,KAClG,GAAE,KAAG,KAAI,KAAG;AAAA;AAAA,IAAG,KAAI,IAAE,KAAG,IAAE,GAAE,KAAG,EAAE,IAAE,GAAE,EAAE,IAAE,KAAG,IAAE,KAAI,KAAG,GAAE,KAAG,KAAI,KAAG;AAAA;AAAA,IAAG,EAAE,IAAE,IAAE,MAAI,IAAE;AAAA;AAAA,CAAK;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,OAAO,UAAQ,cAAY,OAAO,OAAO,OACtL,aAAW,OAAO,IAAI,4BAA4B,IAAE;AAAA,EAAK,GAAG,SAAO;AAAA,EAAE,GAAG,aAAW;AAAA,EAAG,GAAG,oBACzF;AAAA,EAAG,IAAI,KAAG;AAAA,EAAW,GAAG,aAAW;AAAA,EAAG,EAAE,sBAAoB,GAAG;AAAA,EAAE,CAAC,EAAE,uBAAqB,OAAO,UAChG,OAAK,OAAO,QAAQ,SAAO,cAAY,QAAQ,MAAM,+IAC2C;AAAA,EAAE,SAAS,EAAE,GAAE;AAAA,IAC/G,IAAG;AAAA,MAAC,IAAI,IAAE,IAAI,WAAW,CAAC,GAAE,IAAE,EAAC,KAAI,EAAE,QAAQ,GAAE;AAAA,QAAC,OAAO;AAAA,SAAI,KAAK,EAAC;AAAA,MAAE,OAAO,OAAO,eAAe,GAAE,WAClG,SAAS,GAAE,OAAO,eAAe,GAAE,CAAC,GAAE,EAAE,IAAI,MAAI;AAAA,MAAG,MAAK;AAAA,MAAC,OAAM;AAAA;AAAA;AAAA,EAAI,EAAE,IAAG,mBAAmB;AAAA,EAAE,OAC7F,eAAe,EAAE,WAAU,UAAS,EAAC,YAAW,MAAG,KAAI,EAAE,QAAQ,GAAE;AAAA,IAAC,IAAG,EAAE,SAAS,IAAI;AAAA,MAAE,OAAO,KAC/F;AAAA,KAAQ,KAAK,EAAC,CAAC;AAAA,EAAE,OAAO,eAAe,EAAE,WAAU,UAAS,EAAC,YAAW,MAAG,KAAI,EAAE,QAAQ,GAAE;AAAA,IAAC,IAAG,EAAE,SACjG,IAAI;AAAA,MAAE,OAAO,KAAK;AAAA,KAAY,KAAK,EAAC,CAAC;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,IAAE;AAAA,MAAG,MAAM,IAAI,WAAW,gBAAc,IAAE,gCACpE;AAAA,IAAE,IAAI,IAAE,IAAI,WAAW,CAAC;AAAA,IAAE,OAAO,OAAO,eAAe,GAAE,EAAE,SAAS,GACnG;AAAA;AAAA,EAAE,EAAE,IAAG,cAAc;AAAA,EAAE,SAAS,CAAC,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,OAAO,KAAG,UAAS;AAAA,MAAC,IAAG,OAAO,KAAG;AAAA,QAAS,MAAM,IAAI,UAChG,oEAAoE;AAAA,MAAE,OAAO,GAAG,CAAC;AAAA,IAAC;AAAA,IAAC,OAAO,GAAG,GAAE,GAAE,CAAC;AAAA;AAAA,EAClG,EAAE,GAAE,QAAQ;AAAA,EAAE,EAAE,WAAS;AAAA,EAAK,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,OAAO,KAAG;AAAA,MAAS,OAAO,GAAG,GAAE,CAAC;AAAA,IAAE,IAAG,YACzF,OAAO,CAAC;AAAA,MAAE,OAAO,GAAG,CAAC;AAAA,IAAE,IAAG,KAAG;AAAA,MAAK,MAAM,IAAI,UAAU,oHACc,OAAO,CAAC;AAAA,IAAE,IAAG,GAAG,GAAE,WAAW,KACjG,KAAG,GAAG,EAAE,QAAO,WAAW,KAAG,OAAO,oBAAkB,QAAM,GAAG,GAAE,iBAAiB,KAAG,KAAG,GAAG,EAAE,QAC7F,iBAAiB;AAAA,MAAG,OAAO,GAAG,GAAE,GAAE,CAAC;AAAA,IAAE,IAAG,OAAO,KAAG;AAAA,MAAS,MAAM,IAAI,UAAU,uEAC7B;AAAA,IAAE,IAAI,IAAE,EAAE,WAAS,EAAE,QAAQ;AAAA,IAAE,IAAG,KAAG,QAAM,MAAI;AAAA,MAAE,OAAO,EAC1G,KAAK,GAAE,GAAE,CAAC;AAAA,IAAE,IAAI,IAAE,GAAG,CAAC;AAAA,IAAE,IAAG;AAAA,MAAE,OAAO;AAAA,IAAE,IAAG,OAAO,SAAO,OAAK,OAAO,eAAa,QAAM,OAAO,EAAE,OAC/F,gBAAc;AAAA,MAAW,OAAO,EAAE,KAAK,EAAE,OAAO,aAAa,QAAQ,GAAE,GAAE,CAAC;AAAA,IAAE,MAAM,IAAI,UAAU,oHAEtF,OAAO,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,EAAE,EAAE,OAAK,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,GAAE,GAAE,CAAC;AAAA;AAAA,EAAG,OAAO,eAAe,EAAE,WAClG,WAAW,SAAS;AAAA,EAAE,OAAO,eAAe,GAAE,UAAU;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,OAAO,KAAG;AAAA,MAAS,MAAM,IAAI,UACzG,wCAAwC;AAAA,IAAE,IAAG,IAAE;AAAA,MAAE,MAAM,IAAI,WAAW,gBAAc,IAAE,gCACpE;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,CAAC,GAAE,KAAG,IAAE,GAAG,CAAC,IAAE,MAAS,YAAE,OAAO,KACpG,WAAS,GAAG,CAAC,EAAE,KAAK,GAAE,CAAC,IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,IAAE,GAAG,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,EAAE,EAAE,QAAM,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,GAAE,GAAE,CAAC;AAAA;AAAA,EAClG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,CAAC,GAAE,GAAG,IAAE,IAAE,IAAE,GAAG,CAAC,IAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,EAAE,cAAY,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,GACnG,CAAC;AAAA;AAAA,EAAG,EAAE,kBAAgB,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,CAAC;AAAA;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,KAAI,OAAO,KAAG,YAAU,MAAI,QAAM,IACnG,SAAQ,CAAC,EAAE,WAAW,CAAC;AAAA,MAAE,MAAM,IAAI,UAAU,uBAAqB,CAAC;AAAA,IAAE,IAAI,IAAE,GAAG,GAAE,CAAC,IAAE,GAAE,IAAE,GAAG,CAAC,GAAE,IAAE,EAAE,MACjG,GAAE,CAAC;AAAA,IAAE,OAAO,MAAI,MAAI,IAAE,EAAE,MAAM,GAAE,CAAC,IAAG;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE,SAAO,IAAE,IAAE,GAAG,EAAE,MAAM,IACtG,GAAE,IAAE,GAAG,CAAC;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,GAAE,KAAG;AAAA,MAAE,EAAE,KAAG,EAAE,KAAG;AAAA,IAAI,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,GAAG,GAAE,UAAU,GAAE;AAAA,MAC/G,IAAI,IAAE,IAAI,WAAW,CAAC;AAAA,MAAE,OAAO,GAAG,EAAE,QAAO,EAAE,YAAW,EAAE,UAAU;AAAA,IAAC;AAAA,IAAC,OAAO,GAAG,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,eACrF;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,IAAE,KAAG,EAAE,aAAW;AAAA,MAAE,MAAM,IAAI,WAAW,sCAC9D;AAAA,IAAE,IAAG,EAAE,aAAW,KAAG,KAAG;AAAA,MAAG,MAAM,IAAI,WAAW,sCAAsC;AAAA,IAAE,IAAI;AAAA,IAClG,OAAO,MAAS,aAAG,MAAS,YAAE,IAAE,IAAI,WAAW,CAAC,IAAE,MAAS,YAAE,IAAE,IAAI,WAAW,GAAE,CAAC,IAAE,IAAE,IAAI,WACzF,GAAE,GAAE,CAAC,GAAE,OAAO,eAAe,GAAE,EAAE,SAAS,GAAE;AAAA;AAAA,EAAE,EAAE,IAAG,iBAAiB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,EAAE,SAAS,CAAC,GAAE;AAAA,MACtG,IAAI,IAAE,GAAG,EAAE,MAAM,IAAE,GAAE,IAAE,GAAG,CAAC;AAAA,MAAE,OAAO,EAAE,WAAS,KAAG,EAAE,KAAK,GAAE,GAAE,GAAE,CAAC,GAAE;AAAA,IAAC;AAAA,IAAC,IAAG,EAAE,WAAc;AAAA,MAAE,OAAO,OAAO,EACvG,UAAQ,YAAU,GAAG,EAAE,MAAM,IAAE,GAAG,CAAC,IAAE,GAAG,CAAC;AAAA,IAAE,IAAG,EAAE,SAAO,YAAU,MAAM,QAAQ,EAAE,IAAI;AAAA,MAAE,OAAO,GAAG,EAAE,IAAI;AAAA;AAAA,EACvG,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,KAAG;AAAA,MAAG,MAAM,IAAI,WAAW,4DAC1C,GAAG,SAAS,EAAE,IAAE,QAAQ;AAAA,IAAE,OAAO,IAAE;AAAA;AAAA,EAAE,EAAE,IAAG,SAAS;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAM,CAAC,KACjG,MAAI,IAAE,IAAG,EAAE,MAAM,CAAC,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,EAAE,WAAS,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,KAAG,QAAM,EAAE,cAAY,QAAI,MACnG,EAAE;AAAA,KAAW,UAAU;AAAA,EAAE,EAAE,UAAQ,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG,GAAG,GAAE,UAAU,MAAI,IAAE,EAAE,KAAK,GAAE,EAAE,QAAO,EAAE,UAAU,IACzG,GAAG,GAAE,UAAU,MAAI,IAAE,EAAE,KAAK,GAAE,EAAE,QAAO,EAAE,UAAU,IAAG,CAAC,EAAE,SAAS,CAAC,KAAG,CAAC,EAAE,SAAS,CAAC;AAAA,MAAE,MAAM,IAAI,UAC/F,uEAAuE;AAAA,IAAE,IAAG,MAAI;AAAA,MAAE,OAAO;AAAA,IAAE,IAAI,IAAE,EAAE,QACnG,IAAE,EAAE;AAAA,IAAO,SAAQ,IAAE,GAAE,IAAE,KAAK,IAAI,GAAE,CAAC,EAAE,IAAE,GAAE,EAAE;AAAA,MAAE,IAAG,EAAE,OAAK,EAAE,IAAG;AAAA,QAAC,IAAE,EAAE,IAAG,IAAE,EAAE;AAAA,QAAG;AAAA,MAAK;AAAA,IAAC,OAAO,IAAE,IAAE,KAAG,IAAE,IACnG,IAAE;AAAA,KAAG,SAAS;AAAA,EAAE,EAAE,aAAW,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,QAAO,OAAO,CAAC,EAAE,YAAY;AAAA,WAAO;AAAA,WAAU;AAAA,WAAW;AAAA,WACzF;AAAA,WAAY;AAAA,WAAa;AAAA,WAAa;AAAA,WAAa;AAAA,WAAW;AAAA,WAAY;AAAA,WAAc;AAAA,QACzF,OAAM;AAAA;AAAA,QAAW,OAAM;AAAA;AAAA,KAAK,YAAY;AAAA,EAAE,EAAE,SAAO,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG,CAAC,MAAM,QAAQ,CAAC;AAAA,MAAE,MAAM,IAAI,UAC5G,6CAA6C;AAAA,IAAE,IAAG,EAAE,WAAS;AAAA,MAAE,OAAO,EAAE,MAAM,CAAC;AAAA,IAAE,IAAI;AAAA,IAAE,IAAG,MAAS;AAAA,MACnG,KAAI,IAAE,GAAE,IAAE,EAAE,IAAE,EAAE,QAAO,EAAE;AAAA,QAAE,KAAG,EAAE,GAAG;AAAA,IAAO,IAAI,IAAE,EAAE,YAAY,CAAC,GAAE,IAAE;AAAA,IAAE,KAAI,IAAE,EAAE,IAAE,EAAE,QAAO,EAAE,GAAE;AAAA,MAAC,IAAI,IAAE,EAAE;AAAA,MACrG,IAAG,GAAG,GAAE,UAAU;AAAA,QAAE,IAAE,EAAE,SAAO,EAAE,UAAQ,EAAE,SAAS,CAAC,MAAI,IAAE,EAAE,KAAK,CAAC,IAAG,EAAE,KAAK,GAAE,CAAC,KAAG,WAAW,UAC9F,IAAI,KAAK,GAAE,GAAE,CAAC;AAAA,MAAO,SAAG,EAAE,SAAS,CAAC;AAAA,QAAE,EAAE,KAAK,GAAE,CAAC;AAAA,MAAO;AAAA,cAAM,IAAI,UAAU,6CACvD;AAAA,MAAE,KAAG,EAAE;AAAA,IAAM;AAAA,IAAC,OAAO;AAAA,KAAG,QAAQ;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG,EAAE,SAAS,CAAC;AAAA,MAAE,OAAO,EAAE;AAAA,IACjG,IAAG,YAAY,OAAO,CAAC,KAAG,GAAG,GAAE,WAAW;AAAA,MAAE,OAAO,EAAE;AAAA,IAAW,IAAG,OAAO,KAAG;AAAA,MAAS,MAAM,IAAI,UAChG,6FAA2F,OAAO,CAAC;AAAA,IACnG,IAAI,IAAE,EAAE,QAAO,IAAE,UAAU,SAAO,KAAG,UAAU,OAAK;AAAA,IAAG,IAAG,CAAC,KAAG,MAAI;AAAA,MAAE,OAAO;AAAA,IAAE,IAAI,IAAE;AAAA,IAAG;AAAA,MAAO,QAAO;AAAA,aAAO;AAAA,aAChG;AAAA,aAAa;AAAA,UAAS,OAAO;AAAA,aAAM;AAAA,aAAW;AAAA,UAAQ,OAAO,GAAG,CAAC,EAAE;AAAA,aAAW;AAAA,aAAW;AAAA,aACzF;AAAA,aAAc;AAAA,UAAW,OAAO,IAAE;AAAA,aAAM;AAAA,UAAM,OAAO,MAAI;AAAA,aAAM;AAAA,UAAS,OAAO,GAAG,CAAC,EAAE;AAAA;AAAA,UAChG,IAAG;AAAA,YAAE,OAAO,IAAE,KAAG,GAAG,CAAC,EAAE;AAAA,UAAO,KAAG,KAAG,GAAG,YAAY,GAAE,IAAE;AAAA;AAAA;AAAA,EAAI,EAAE,IAAG,YAAY;AAAA,EAAE,EAAE,aAAW;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAChH,IAAI,IAAE;AAAA,IAAG,KAAI,MAAS,aAAG,IAAE,OAAK,IAAE,IAAG,IAAE,KAAK,YAAU,MAAS,aAAG,IAAE,KAAK,YAAU,IAAE,KAAK,SAAQ,KAClG,OAAK,OAAK,GAAE,OAAK,GAAE,KAAG;AAAA,MAAG,OAAM;AAAA,IAAG,KAAI,MAAI,IAAE;AAAA,MAAU,QAAO;AAAA,aAAO;AAAA,UAAM,OAAO,GAAG,MAAK,GAAE,CAAC;AAAA,aAAM;AAAA,aACzF;AAAA,UAAQ,OAAO,GAAG,MAAK,GAAE,CAAC;AAAA,aAAM;AAAA,UAAQ,OAAO,GAAG,MAAK,GAAE,CAAC;AAAA,aAAM;AAAA,aAAa;AAAA,UAAS,OAAO,GACtG,MAAK,GAAE,CAAC;AAAA,aAAM;AAAA,UAAS,OAAO,GAAG,MAAK,GAAE,CAAC;AAAA,aAAM;AAAA,aAAW;AAAA,aAAY;AAAA,aAAc;AAAA,UAAW,OAAO,GACtG,MAAK,GAAE,CAAC;AAAA;AAAA,UAAU,IAAG;AAAA,YAAE,MAAM,IAAI,UAAU,uBAAqB,CAAC;AAAA,UAAE,KAAG,IAAE,IAAI,YAAY,GAAE,IAAE;AAAA;AAAA;AAAA,EAAI,EAAE,IAClG,cAAc;AAAA,EAAE,EAAE,UAAU,YAAU;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE;AAAA,IAAG,EAAE,KAAG,EAAE,IAAG,EAAE,KAAG;AAAA;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,EACnG,EAAE,UAAU,SAAO,EAAE,QAAQ,GAAE;AAAA,IAAC,IAAI,IAAE,KAAK;AAAA,IAAO,IAAG,IAAE,MAAI;AAAA,MAAE,MAAM,IAAI,WAAW,2CACzD;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,GAAE,KAAG;AAAA,MAAE,GAAG,MAAK,GAAE,IAAE,CAAC;AAAA,IAAE,OAAO;AAAA,KAAM,QAAQ;AAAA,EAAE,EAAE,UAAU,SAClG,EAAE,QAAQ,GAAE;AAAA,IAAC,IAAI,IAAE,KAAK;AAAA,IAAO,IAAG,IAAE,MAAI;AAAA,MAAE,MAAM,IAAI,WAAW,2CACzD;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,GAAE,KAAG;AAAA,MAAE,GAAG,MAAK,GAAE,IAAE,CAAC,GAAE,GAAG,MAAK,IAAE,GAAE,IAAE,CAAC;AAAA,IAAE,OAAO;AAAA,KAAM,QAAQ;AAAA,EAAE,EAAE,UAAU,SAChG,EAAE,QAAQ,GAAE;AAAA,IAAC,IAAI,IAAE,KAAK;AAAA,IAAO,IAAG,IAAE,MAAI;AAAA,MAAE,MAAM,IAAI,WAAW,2CACzD;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,GAAE,KAAG;AAAA,MAAE,GAAG,MAAK,GAAE,IAAE,CAAC,GAAE,GAAG,MAAK,IAAE,GAAE,IAAE,CAAC,GAAE,GAAG,MAAK,IAAE,GAAE,IAAE,CAAC,GAAE,GAAG,MAAK,IAAE,GAAE,IAAE,CAAC;AAAA,IAAE,OAAO;AAAA,KACtG,QAAQ;AAAA,EAAE,EAAE,UAAU,WAAS,EAAE,QAAQ,GAAE;AAAA,IAAC,IAAI,IAAE,KAAK;AAAA,IAAO,OAAO,MAAI,IAAE,KAAG,UAAU,WAAS,IAAE,GACnG,MAAK,GAAE,CAAC,IAAE,GAAG,MAAM,MAAK,SAAS;AAAA,KAAG,UAAU;AAAA,EAAE,EAAE,UAAU,iBAAe,EAAE,UAAU;AAAA,EAAS,EAAE,UAClG,SAAO,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,CAAC,EAAE,SAAS,CAAC;AAAA,MAAE,MAAM,IAAI,UAAU,2BAA2B;AAAA,IAAE,OAAO,SAC/F,IAAE,OAAG,EAAE,QAAQ,MAAK,CAAC,MAAI;AAAA,KAAG,QAAQ;AAAA,EAAE,EAAE,UAAU,UAAQ,EAAE,QAAQ,GAAE;AAAA,IAAC,IAAI,IAAE,IAAG,IAAE,GAAG;AAAA,IACrF,OAAO,IAAE,KAAK,SAAS,OAAM,GAAE,CAAC,EAAE,QAAQ,WAAU,KAAK,EAAE,KAAK,GAAE,KAAK,SAAO,MAAI,KAAG,UAAS,aACzF,IAAE;AAAA,KAAK,SAAS;AAAA,EAAE,OAAK,EAAE,UAAU,MAAI,EAAE,UAAU;AAAA,EAAS,EAAE,UAAU,UAAQ,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAC1G,IAAG,GAAG,GAAE,UAAU,MAAI,IAAE,EAAE,KAAK,GAAE,EAAE,QAAO,EAAE,UAAU,IAAG,CAAC,EAAE,SAAS,CAAC;AAAA,MAAE,MAAM,IAAI,UAAU,mFACnB,OAAO,CAAC;AAAA,IAAE,IAAG,MAAS,cAAI,IACnG,IAAG,MAAS,cAAI,IAAE,IAAE,EAAE,SAAO,IAAG,MAAS,cAAI,IAAE,IAAG,MAAS,cAAI,IAAE,KAAK,SAAQ,IAAE,KAAG,IAAE,EAAE,UAAQ,IAAE,KACjG,IAAE,KAAK;AAAA,MAAO,MAAM,IAAI,WAAW,oBAAoB;AAAA,IAAE,IAAG,KAAG,KAAG,KAAG;AAAA,MAAE,OAAO;AAAA,IAAE,IAAG,KAAG;AAAA,MAAE,OAAM;AAAA,IAAG,IAAG,KACpG;AAAA,MAAE,OAAO;AAAA,IAAE,IAAG,OAAK,GAAE,OAAK,GAAE,OAAK,GAAE,OAAK,GAAE,SAAO;AAAA,MAAE,OAAO;AAAA,IAAE,IAAI,IAAE,IAAE,GAAE,IAAE,IAAE,GAAE,IAAE,KAAK,IAAI,GAAE,CAAC,GAAE,IAAE,KAAK,MACnG,GAAE,CAAC,GAAE,IAAE,EAAE,MAAM,GAAE,CAAC;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,GAAE,EAAE;AAAA,MAAE,IAAG,EAAE,OAAK,EAAE,IAAG;AAAA,QAAC,IAAE,EAAE,IAAG,IAAE,EAAE;AAAA,QAAG;AAAA,MAAK;AAAA,IAAC,OAAO,IAAE,IAAE,KAAG,IAAE,IAAE,IAAE;AAAA,KAAG,SAC3F;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,EAAE,WAAS;AAAA,MAAE,OAAM;AAAA,IAAG,IAAG,OAAO,KAAG,YAAU,IAAE,GAAE,IAAE,KAAG,IAAE,aAC5F,IAAE,aAAW,IAAE,gBAAc,IAAE,cAAa,IAAE,CAAC,GAAE,GAAG,CAAC,MAAI,IAAE,IAAE,IAAE,EAAE,SAAO,IAAG,IAAE,MAAI,IAAE,EAAE,SAAO,IAAG,KAAG,EAClG,QAAO;AAAA,MAAC,IAAG;AAAA,QAAE,OAAM;AAAA,MAAG,IAAE,EAAE,SAAO;AAAA,IAAC,EAAM,SAAG,IAAE;AAAA,MAAE,IAAG;AAAA,QAAE,IAAE;AAAA,MAAO;AAAA,eAAM;AAAA,IAAG,IAAG,OAAO,KAAG,aAAW,IAAE,EAAE,KAClG,GAAE,CAAC,IAAG,EAAE,SAAS,CAAC;AAAA,MAAE,OAAO,EAAE,WAAS,IAAE,KAAG,GAAG,GAAE,GAAE,GAAE,GAAE,CAAC;AAAA,IAAE,IAAG,OAAO,KAAG;AAAA,MAAS,OAAO,IAAE,IAAE,KAAI,OAAO,WACrG,UAAU,WAAS,aAAW,IAAE,WAAW,UAAU,QAAQ,KAAK,GAAE,GAAE,CAAC,IAAE,WAAW,UAAU,YAC9F,KAAK,GAAE,GAAE,CAAC,IAAE,GAAG,GAAE,CAAC,CAAC,GAAE,GAAE,GAAE,CAAC;AAAA,IAAE,MAAM,IAAI,UAAU,sCAAsC;AAAA;AAAA,EAAE,EAAE,IAAG,sBAC9E;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,GAAE,IAAE,EAAE,QAAO,IAAE,EAAE;AAAA,IAAO,IAAG,MAAS,cAAI,IAAE,OAAO,CAAC,EAAE,YAAY,GAC9G,MAAI,UAAQ,MAAI,WAAS,MAAI,aAAW,MAAI,aAAY;AAAA,MAAC,IAAG,EAAE,SAAO,KAAG,EAAE,SAAO;AAAA,QAAE,OAAM;AAAA,MAAG,IAAE,GAAE,KAAG,GACnG,KAAG,GAAE,KAAG;AAAA,IAAC;AAAA,IAAC,SAAS,CAAC,CAAC,GAAE,GAAE;AAAA,MAAC,OAAO,MAAI,IAAE,EAAE,KAAG,EAAE,aAAa,IAAE,CAAC;AAAA;AAAA,IAAE,EAAE,GAAE,MAAM;AAAA,IAAE,IAAI;AAAA,IAAE,IAAG,GAAE;AAAA,MAAC,IAAI,IAAE;AAAA,MAAG,KAAI,IACrG,EAAE,IAAE,GAAE;AAAA,QAAI,IAAG,EAAE,GAAE,CAAC,MAAI,EAAE,GAAE,MAAI,KAAG,IAAE,IAAE,CAAC,GAAE;AAAA,UAAC,IAAG,MAAI,OAAK,IAAE,IAAG,IAAE,IAAE,MAAI;AAAA,YAAE,OAAO,IAAE;AAAA,QAAC,EAAM;AAAA,gBAAI,OAAK,KAAG,IAAE,IAClG,IAAE;AAAA,IAAE,EAAM;AAAA,WAAI,IAAE,IAAE,MAAI,IAAE,IAAE,IAAG,IAAE,EAAE,KAAG,GAAE,KAAI;AAAA,QAAC,IAAI,IAAE;AAAA,QAAG,SAAQ,IAAE,EAAE,IAAE,GAAE;AAAA,UAAI,IAAG,EAAE,GAAE,IAAE,CAAC,MAAI,EAAE,GAAE,CAAC,GAAE;AAAA,YAAC,IAAE;AAAA,YAAG;AAAA,UAAK;AAAA,QACxG,IAAG;AAAA,UAAE,OAAO;AAAA,MAAC;AAAA,IAAC,OAAM;AAAA;AAAA,EAAG,EAAE,IAAG,cAAc;AAAA,EAAE,EAAE,UAAU,WAAS,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,QAC/F,GAAE,GAAE,CAAC,MAAI;AAAA,KAAI,UAAU;AAAA,EAAE,EAAE,UAAU,UAAQ,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,GAAE,IAAE;AAAA,KAAG,SAAS;AAAA,EAClG,EAAE,UAAU,cAAY,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,GAAE,KAAE;AAAA,KAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IACvG,IAAE,OAAO,CAAC,KAAG;AAAA,IAAE,IAAI,IAAE,EAAE,SAAO;AAAA,IAAE,KAAG,IAAE,OAAO,CAAC,GAAE,IAAE,MAAI,IAAE,MAAI,IAAE;AAAA,IAAE,IAAI,IAAE,EAAE;AAAA,IAAO,IAAE,IAAE,MAAI,IAAE,IAAE;AAAA,IAAG,IAAI;AAAA,IAAE,KAAI,IACvG,EAAE,IAAE,GAAE,EAAE,GAAE;AAAA,MAAC,IAAI,IAAE,SAAS,EAAE,OAAO,IAAE,GAAE,CAAC,GAAE,EAAE;AAAA,MAAE,IAAG,GAAG,CAAC;AAAA,QAAE,OAAO;AAAA,MAAE,EAAE,IAAE,KAAG;AAAA,IAAC;AAAA,IAAC,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,UAAU;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IACvH,OAAO,GAAG,GAAG,GAAE,EAAE,SAAO,CAAC,GAAE,GAAE,GAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,WAAW;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,GAAG,CAAC,GAAE,GAAE,GAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IAClG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,GAAG,CAAC,GAAE,GAAE,GAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAC1G,GAAG,GAAE,EAAE,SAAO,CAAC,GAAE,GAAE,GAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,WAAW;AAAA,EAAE,EAAE,UAAU,QAAM,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,MAAS;AAAA,MAAE,IAAE,QAC7F,IAAE,KAAK,QAAO,IAAE;AAAA,IAAO,SAAG,MAAS,aAAG,OAAO,KAAG;AAAA,MAAS,IAAE,GAAE,IAAE,KAAK,QAAO,IAAE;AAAA,IAAO,SAAG,SAAS,CAAC;AAAA,MACpG,IAAE,MAAI,GAAE,SAAS,CAAC,KAAG,IAAE,MAAI,GAAE,MAAS,cAAI,IAAE,YAAU,IAAE,GAAE,IAAO;AAAA,IAAQ;AAAA,YAAM,IAAI,MAAM,yEAC3B;AAAA,IAAE,IAAI,IAAE,KAAK,SAAO;AAAA,IAAE,KAAI,MAAS,aACjG,IAAE,OAAK,IAAE,IAAG,EAAE,SAAO,MAAI,IAAE,KAAG,IAAE,MAAI,IAAE,KAAK;AAAA,MAAO,MAAM,IAAI,WAAW,wCAC5D;AAAA,IAAE,MAAI,IAAE;AAAA,IAAQ,IAAI,IAAE;AAAA,IAAG;AAAA,MAAO,QAAO;AAAA,aAAO;AAAA,UAAM,OAAO,GAAG,MAAK,GAAE,GAAE,CAAC;AAAA,aAAM;AAAA,aAAW;AAAA,UAC7F,OAAO,GAAG,MAAK,GAAE,GAAE,CAAC;AAAA,aAAM;AAAA,aAAY;AAAA,aAAa;AAAA,UAAS,OAAO,GAAG,MAAK,GAAE,GAAE,CAAC;AAAA,aAAM;AAAA,UAC7F,OAAO,GAAG,MAAK,GAAE,GAAE,CAAC;AAAA,aAAM;AAAA,aAAW;AAAA,aAAY;AAAA,aAAc;AAAA,UAAW,OAAO,GAAG,MAAK,GAAE,GAAE,CAAC;AAAA;AAAA,UAC9F,IAAG;AAAA,YAAE,MAAM,IAAI,UAAU,uBAAqB,CAAC;AAAA,UAAE,KAAG,KAAG,GAAG,YAAY,GAAE,IAAE;AAAA;AAAA,KAAK,OAAO;AAAA,EAAE,EAAE,UAC1F,SAAO,EAAE,QAAQ,GAAE;AAAA,IAAC,OAAM,EAAC,MAAK,UAAS,MAAK,MAAM,UAAU,MAAM,KAAK,KAAK,QAAM,MAAK,CAAC,EAAC;AAAA,KAAG,QAC5F;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,MAAI,KAAG,MAAI,EAAE,SAAO,GAAG,cAAc,CAAC,IAAE,GAAG,cAAc,EAAE,MAAM,GAAE,CAAC,CAAC;AAAA;AAAA,EACnG,EAAE,IAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAE,KAAK,IAAI,EAAE,QAAO,CAAC;AAAA,IAAE,IAAI,IAAE,CAAC,GAAE,IAAE;AAAA,IAAE,MAAK,IAAE,KAAG;AAAA,MAAC,IAAI,IAAE,EAAE,IAAG,IAAE,MACnG,IAAE,IAAE,MAAI,IAAE,IAAE,MAAI,IAAE,IAAE,MAAI,IAAE;AAAA,MAAE,IAAG,IAAE,KAAG,GAAE;AAAA,QAAC,IAAI,GAAE,GAAE,GAAE;AAAA,QAAE,QAAO;AAAA,eAAQ;AAAA,YAAE,IAAE,QAAM,IAAE;AAAA,YAAG;AAAA,eAAW;AAAA,YAAE,IAAE,EAAE,IAClG,KAAI,IAAE,SAAO,QAAM,KAAG,IAAE,OAAK,IAAE,IAAE,IAAG,IAAE,QAAM,IAAE;AAAA,YAAI;AAAA,eAAW;AAAA,YAAE,IAAE,EAAE,IAAE,IAAG,IAAE,EAAE,IAAE,KAAI,IAAE,SAAO,QAAM,IAAE,SACnG,QAAM,KAAG,IAAE,OAAK,MAAI,IAAE,OAAK,IAAE,IAAE,IAAG,IAAE,SAAO,IAAE,SAAO,IAAE,WAAS,IAAE;AAAA,YAAI;AAAA,eAAW;AAAA,YAAE,IAAE,EAAE,IAAE,IAAG,IAAE,EAAE,IAAE,IACjG,IAAE,EAAE,IAAE,KAAI,IAAE,SAAO,QAAM,IAAE,SAAO,QAAM,IAAE,SAAO,QAAM,KAAG,IAAE,OAAK,MAAI,IAAE,OAAK,MAAI,IAAE,OAAK,IAAE,IAAE,IAAG,IAAE,SAChG,IAAE,YAAU,IAAE;AAAA;AAAA,MAAI;AAAA,MAAC,MAAI,QAAM,IAAE,OAAM,IAAE,KAAG,IAAE,UAAQ,KAAG,OAAM,EAAE,KAAK,MAAI,KAAG,OAAK,KAAK,GAAE,IAAE,QAAM,IAAE,OACjG,EAAE,KAAK,CAAC,GAAE,KAAG;AAAA,IAAC;AAAA,IAAC,OAAO,GAAG,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,WAAW;AAAA,EAAE,IAAI,KAAG;AAAA,EAAK,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE;AAAA,IAAO,IAAG,KAAG;AAAA,MAAG,OAAO,OACxG,aAAa,MAAM,QAAO,CAAC;AAAA,IAAE,IAAI,IAAE,IAAG,IAAE;AAAA,IAAE,MAAK,IAAE;AAAA,MAAG,KAAG,OAAO,aAAa,MAAM,QAAO,EAAE,MAAM,GAAE,KAClG,EAAE,CAAC;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,uBAAuB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE;AAAA,IAAG,IAAE,KAAK,IAAI,EAAE,QAAO,CAAC;AAAA,IAAE,SAAQ,IAAE,EAAE,IAC3G,GAAE,EAAE;AAAA,MAAE,KAAG,OAAO,aAAa,EAAE,KAAG,GAAG;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE;AAAA,IAAG,IAAE,KACjG,IAAI,EAAE,QAAO,CAAC;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,GAAE,EAAE;AAAA,MAAE,KAAG,OAAO,aAAa,EAAE,EAAE;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAChH,IAAI,IAAE,EAAE;AAAA,KAAQ,CAAC,KAAG,IAAE,OAAK,IAAE,KAAI,CAAC,KAAG,IAAE,KAAG,IAAE,OAAK,IAAE;AAAA,IAAG,IAAI,IAAE;AAAA,IAAG,SAAQ,IAAE,EAAE,IAAE,GAAE,EAAE;AAAA,MAAE,KAAG,GAAG,EAAE;AAAA,IAAI,OAAO;AAAA;AAAA,EACtG,EAAE,IAAG,UAAU;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE,MAAM,GAAE,CAAC,GAAE,IAAE;AAAA,IAAG,SAAQ,IAAE,EAAE,IAAE,EAAE,SAAO,GAAE,KAAG;AAAA,MAAE,KAAG,OAC7F,aAAa,EAAE,KAAG,EAAE,IAAE,KAAG,GAAG;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,cAAc;AAAA,EAAE,EAAE,UAAU,QAAM,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,KACpG;AAAA,IAAO,IAAE,CAAC,CAAC,GAAE,IAAE,MAAS,YAAE,IAAE,CAAC,CAAC,GAAE,IAAE,KAAG,KAAG,GAAE,IAAE,MAAI,IAAE,MAAI,IAAE,MAAI,IAAE,IAAG,IAAE,KAAG,KAAG,GAAE,IAAE,MAAI,IAAE,MAAI,IAAE,MAAI,IAAE,IAAG,IAClG,MAAI,IAAE;AAAA,IAAG,IAAI,IAAE,KAAK,SAAS,GAAE,CAAC;AAAA,IAAE,OAAO,OAAO,eAAe,GAAE,EAAE,SAAS,GAAE;AAAA,KAAG,OAAO;AAAA,EAAE,SAAS,CAAC,CAAC,GAAE,GAAE,GAAE;AAAA,IAC3G,IAAG,IAAE,MAAI,KAAG,IAAE;AAAA,MAAE,MAAM,IAAI,WAAW,oBAAoB;AAAA,IAAE,IAAG,IAAE,IAAE;AAAA,MAAE,MAAM,IAAI,WAAW,uCAC7D;AAAA;AAAA,EAAE,EAAE,GAAE,aAAa;AAAA,EAAE,EAAE,UAAU,aAAW,EAAE,UAAU,aAAW,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAChH,IAAE,MAAI,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM;AAAA,IAAE,IAAI,IAAE,KAAK,IAAG,IAAE,GAAE,IAAE;AAAA,IAAE,MAAK,EAAE,IAAE,MAAI,KAAG;AAAA,MAAM,KAAG,KAAK,IAAE,KAAG;AAAA,IAAE,OAAO;AAAA,KACxG,YAAY;AAAA,EAAE,EAAE,UAAU,aAAW,EAAE,UAAU,aAAW,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,GACnG,GAAE,KAAK,MAAM;AAAA,IAAE,IAAI,IAAE,KAAK,IAAE,EAAE,IAAG,IAAE;AAAA,IAAE,MAAK,IAAE,MAAI,KAAG;AAAA,MAAM,KAAG,KAAK,IAAE,EAAE,KAAG;AAAA,IAAE,OAAO;AAAA,KAAG,YAAY;AAAA,EAAE,EAClG,UAAU,YAAU,EAAE,UAAU,YAAU,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,KAAK;AAAA,KACpG,WAAW;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GACnG,GAAE,KAAK,MAAM,GAAE,KAAK,KAAG,KAAK,IAAE,MAAI;AAAA,KAAG,cAAc;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,UAAU,eAC1F,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,KAAK,MAAI,IAAE,KAAK,IAAE;AAAA,KAAI,cAAc;AAAA,EAAE,EAAE,UAC7F,eAAa,EAAE,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,IAAG,KAAK,KACjG,KAAK,IAAE,MAAI,IAAE,KAAK,IAAE,MAAI,MAAI,KAAK,IAAE,KAAG;AAAA,KAAU,cAAc;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,UAC3F,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,KAAK,KAAG,YAAU,KAAK,IAAE,MAAI,KAAG,KAAK,IACvG,MAAI,IAAE,KAAK,IAAE;AAAA,KAAK,cAAc;AAAA,EAAE,EAAE,UAAU,kBAAgB,GAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,GAAG,GAAE,QAAQ;AAAA,IACpG,IAAI,IAAE,KAAK,IAAG,IAAE,KAAK,IAAE;AAAA,KAAI,MAAS,aAAG,MAAS,cAAI,GAAG,GAAE,KAAK,SAAO,CAAC;AAAA,IAAE,IAAI,IAAE,IAAE,KAAK,EAAE,KAAG,KAAG,IAAE,KAAK,EAAE,KACtG,KAAG,KAAG,KAAK,EAAE,KAAG,KAAG,IAAG,IAAE,KAAK,EAAE,KAAG,KAAK,EAAE,KAAG,KAAG,IAAE,KAAK,EAAE,KAAG,KAAG,KAAG,IAAE,KAAG;AAAA,IAAG,OAAO,OAAO,CAAC,KAAG,OAAO,CAAC,KACnG,OAAO,EAAE;AAAA,KAAI,iBAAiB,CAAC;AAAA,EAAE,EAAE,UAAU,kBAAgB,GAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,GAAG,GAAE,QAAQ;AAAA,IACnG,IAAI,IAAE,KAAK,IAAG,IAAE,KAAK,IAAE;AAAA,KAAI,MAAS,aAAG,MAAS,cAAI,GAAG,GAAE,KAAK,SAAO,CAAC;AAAA,IAAE,IAAI,IAAE,IAAE,KAAG,KAAG,KAAK,EAAE,KAAG,KAAG,KACnG,KAAK,EAAE,KAAG,KAAG,IAAE,KAAK,EAAE,IAAG,IAAE,KAAK,EAAE,KAAG,KAAG,KAAG,KAAK,EAAE,KAAG,KAAG,KAAG,KAAK,EAAE,KAAG,KAAG,IAAE;AAAA,IAAE,QAAO,OAAO,CAAC,KAAG,OAC9F,EAAE,KAAG,OAAO,CAAC;AAAA,KAAG,iBAAiB,CAAC;AAAA,EAAE,EAAE,UAAU,YAAU,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GACnG,KAAK,MAAM;AAAA,IAAE,IAAI,IAAE,KAAK,IAAG,IAAE,GAAE,IAAE;AAAA,IAAE,MAAK,EAAE,IAAE,MAAI,KAAG;AAAA,MAAM,KAAG,KAAK,IAAE,KAAG;AAAA,IAAE,OAAO,KAAG,KAAI,KAAG,MAAI,KAAG,KAChG,IAAI,GAAE,IAAE,CAAC,IAAG;AAAA,KAAG,WAAW;AAAA,EAAE,EAAE,UAAU,YAAU,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM;AAAA,IACxG,IAAI,IAAE,GAAE,IAAE,GAAE,IAAE,KAAK,IAAE,EAAE;AAAA,IAAG,MAAK,IAAE,MAAI,KAAG;AAAA,MAAM,KAAG,KAAK,IAAE,EAAE,KAAG;AAAA,IAAE,OAAO,KAAG,KAAI,KAAG,MAAI,KAAG,KAAK,IAAI,GAAE,IAClG,CAAC,IAAG;AAAA,KAAG,WAAW;AAAA,EAAE,EAAE,UAAU,WAAS,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,KAAK,KACnG,OAAK,MAAI,KAAK,KAAG,KAAG,KAAG,KAAK;AAAA,KAAI,UAAU;AAAA,EAAE,EAAE,UAAU,cAAY,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GACnG,KAAK,MAAM;AAAA,IAAE,IAAI,IAAE,KAAK,KAAG,KAAK,IAAE,MAAI;AAAA,IAAE,OAAO,IAAE,QAAM,IAAE,aAAW;AAAA,KAAG,aAAa;AAAA,EAAE,EAAE,UAAU,cAClG,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM;AAAA,IAAE,IAAI,IAAE,KAAK,IAAE,KAAG,KAAK,MAAI;AAAA,IAAE,OAAO,IAAE,QAAM,IAAE,aAC1F;AAAA,KAAG,aAAa;AAAA,EAAE,EAAE,UAAU,cAAY,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,KAAK,KACpG,KAAK,IAAE,MAAI,IAAE,KAAK,IAAE,MAAI,KAAG,KAAK,IAAE,MAAI;AAAA,KAAI,aAAa;AAAA,EAAE,EAAE,UAAU,cAAY,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IACxG,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,KAAK,MAAI,KAAG,KAAK,IAAE,MAAI,KAAG,KAAK,IAAE,MAAI,IAAE,KAAK,IAAE;AAAA,KAAI,aAAa;AAAA,EAAE,EAAE,UAC/F,iBAAe,GAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,GAAG,GAAE,QAAQ;AAAA,IAAE,IAAI,IAAE,KAAK,IAAG,IAAE,KAAK,IAAE;AAAA,KAAI,MAAS,aAAG,MAAS,cACvG,GAAG,GAAE,KAAK,SAAO,CAAC;AAAA,IAAE,IAAI,IAAE,KAAK,IAAE,KAAG,KAAK,IAAE,KAAG,KAAG,IAAE,KAAK,IAAE,KAAG,KAAG,MAAI,KAAG;AAAA,IAAI,QAAO,OAAO,CAAC,KAAG,OAC7F,EAAE,KAAG,OAAO,IAAE,KAAK,EAAE,KAAG,KAAG,IAAE,KAAK,EAAE,KAAG,KAAG,KAAG,KAAK,EAAE,KAAG,KAAG,EAAE;AAAA,KAAG,gBAAgB,CAAC;AAAA,EAAE,EAAE,UAAU,iBAC9F,GAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAE,MAAI,GAAE,GAAG,GAAE,QAAQ;AAAA,IAAE,IAAI,IAAE,KAAK,IAAG,IAAE,KAAK,IAAE;AAAA,KAAI,MAAS,aAAG,MAAS,cAAI,GAAG,GAAE,KACjG,SAAO,CAAC;AAAA,IAAE,IAAI,KAAG,KAAG,MAAI,KAAK,EAAE,KAAG,KAAG,KAAG,KAAK,EAAE,KAAG,KAAG,IAAE,KAAK,EAAE;AAAA,IAAG,QAAO,OAAO,CAAC,KAAG,OAAO,EAAE,KAAG,OAC/F,KAAK,EAAE,KAAG,KAAG,KAAG,KAAK,EAAE,KAAG,KAAG,KAAG,KAAK,EAAE,KAAG,KAAG,IAAE,CAAC;AAAA,KAAG,gBAAgB,CAAC;AAAA,EAAE,EAAE,UAAU,cAAY,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAC7G,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,GAAG,KAAK,MAAK,GAAE,MAAG,IAAG,CAAC;AAAA,KAAG,aAAa;AAAA,EAAE,EAAE,UAAU,cACzF,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,GAAG,KAAK,MAAK,GAAE,OAAG,IAAG,CAAC;AAAA,KAAG,aAAa;AAAA,EAAE,EAAE,UAC/F,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,GAAG,KAAK,MAAK,GAAE,MAAG,IAAG,CAAC;AAAA,KAAG,cACtF;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,MAAI,GAAE,KAAG,EAAE,GAAE,GAAE,KAAK,MAAM,GAAE,GAAG,KAAK,MAAK,GAClG,OAAG,IAAG,CAAC;AAAA,KAAG,cAAc;AAAA,EAAE,SAAS,CAAC,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,CAAC,EAAE,SAAS,CAAC;AAAA,MAAE,MAAM,IAAI,UAAU,6CACvD;AAAA,IAAE,IAAG,IAAE,KAAG,IAAE;AAAA,MAAE,MAAM,IAAI,WAAW,mCACjE;AAAA,IAAE,IAAG,IAAE,IAAE,EAAE;AAAA,MAAO,MAAM,IAAI,WAAW,oBAAoB;AAAA;AAAA,EAAE,EAAE,GAAE,UAAU;AAAA,EAAE,EAAE,UAAU,cAC5F,EAAE,UAAU,cAAY,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,IAAE,MAAI,GAAE,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,IAAI,GAAE,IAAE,CAAC,IAAE;AAAA,MAAE,EAAE,MAClG,GAAE,GAAE,GAAE,GAAE,CAAC;AAAA,IAAC;AAAA,IAAC,IAAI,IAAE,GAAE,IAAE;AAAA,IAAE,KAAI,KAAK,KAAG,IAAE,IAAI,EAAE,IAAE,MAAI,KAAG;AAAA,MAAM,KAAK,IAAE,KAAG,IAAE,IAAE;AAAA,IAAI,OAAO,IAAE;AAAA,KAAG,aAAa;AAAA,EACrG,EAAE,UAAU,cAAY,EAAE,UAAU,cAAY,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,IAAE,MAAI,GAAE,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KACtG,IAAI,GAAE,IAAE,CAAC,IAAE;AAAA,MAAE,EAAE,MAAK,GAAE,GAAE,GAAE,GAAE,CAAC;AAAA,IAAC;AAAA,IAAC,IAAI,IAAE,IAAE,GAAE,IAAE;AAAA,IAAE,KAAI,KAAK,IAAE,KAAG,IAAE,IAAI,EAAE,KAAG,MAAI,KAAG;AAAA,MAAM,KAAK,IAAE,KAAG,IAAE,IAAE;AAAA,IACjG,OAAO,IAAE;AAAA,KAAG,aAAa;AAAA,EAAE,EAAE,UAAU,aAAW,EAAE,UAAU,aAAW,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IAClG,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,KAAI,CAAC,GAAE,KAAK,KAAG,IAAE,KAAI,IAAE;AAAA,KAAG,YAAY;AAAA,EAAE,EAAE,UAAU,gBAAc,EAAE,UAC/F,gBAAc,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,OAAM,CAAC,GAAE,KAAK,KAAG,IAAE,KAAI,KAAK,IAAE,KAClG,MAAI,GAAE,IAAE;AAAA,KAAG,eAAe;AAAA,EAAE,EAAE,UAAU,gBAAc,EAAE,UAAU,gBAAc,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IACzG,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,OAAM,CAAC,GAAE,KAAK,KAAG,MAAI,GAAE,KAAK,IAAE,KAAG,IAAE,KAAI,IAAE;AAAA,KAAG,eAAe;AAAA,EAAE,EAAE,UAC1F,gBAAc,EAAE,UAAU,gBAAc,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,YAC9F,CAAC,GAAE,KAAK,IAAE,KAAG,MAAI,IAAG,KAAK,IAAE,KAAG,MAAI,IAAG,KAAK,IAAE,KAAG,MAAI,GAAE,KAAK,KAAG,IAAE,KAAI,IAAE;AAAA,KAAG,eAAe;AAAA,EAAE,EAAE,UAC3F,gBAAc,EAAE,UAAU,gBAAc,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,YAC9F,CAAC,GAAE,KAAK,KAAG,MAAI,IAAG,KAAK,IAAE,KAAG,MAAI,IAAG,KAAK,IAAE,KAAG,MAAI,GAAE,KAAK,IAAE,KAAG,IAAE,KAAI,IAAE;AAAA,KAAG,eAAe;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAC/G,GAAG,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC;AAAA,IAAE,IAAI,IAAE,OAAO,IAAE,OAAO,UAAU,CAAC;AAAA,IAAE,EAAE,OAAK,GAAE,IAAE,KAAG,GAAE,EAAE,OAAK,GAAE,IAAE,KAAG,GAAE,EAAE,OAAK,GAAE,IAAE,KAAG,GAAE,EAAE,OACrG;AAAA,IAAE,IAAI,IAAE,OAAO,KAAG,OAAO,EAAE,IAAE,OAAO,UAAU,CAAC;AAAA,IAAE,OAAO,EAAE,OAAK,GAAE,IAAE,KAAG,GAAE,EAAE,OAAK,GAAE,IAAE,KAAG,GAAE,EAAE,OAAK,GAAE,IAAE,KACnG,GAAE,EAAE,OAAK,GAAE;AAAA;AAAA,EAAE,EAAE,IAAG,gBAAgB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,GAAG,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC;AAAA,IAAE,IAAI,IAAE,OAAO,IAAE,OAAO,UAAU,CAAC;AAAA,IAC5G,EAAE,IAAE,KAAG,GAAE,IAAE,KAAG,GAAE,EAAE,IAAE,KAAG,GAAE,IAAE,KAAG,GAAE,EAAE,IAAE,KAAG,GAAE,IAAE,KAAG,GAAE,EAAE,IAAE,KAAG;AAAA,IAAE,IAAI,IAAE,OAAO,KAAG,OAAO,EAAE,IAAE,OAAO,UAAU,CAAC;AAAA,IACtG,OAAO,EAAE,IAAE,KAAG,GAAE,IAAE,KAAG,GAAE,EAAE,IAAE,KAAG,GAAE,IAAE,KAAG,GAAE,EAAE,IAAE,KAAG,GAAE,IAAE,KAAG,GAAE,EAAE,KAAG,GAAE,IAAE;AAAA;AAAA,EAAE,EAAE,IAAG,gBAAgB;AAAA,EAAE,EAAE,UAC3F,mBAAiB,GAAG,EAAE,QAAQ,CAAC,GAAE,IAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,OAAO,CAAC,GAAE,OAAO,oBAAoB,CAAC;AAAA,KAAG,kBAClF,CAAC;AAAA,EAAE,EAAE,UAAU,mBAAiB,GAAG,EAAE,QAAQ,CAAC,GAAE,IAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,OAAO,CAAC,GAAE,OAClG,oBAAoB,CAAC;AAAA,KAAG,kBAAkB,CAAC;AAAA,EAAE,EAAE,UAAU,aAAW,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,IAAE,CAAC,GAAE,IAAE,MAClG,GAAE,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,IAAI,GAAE,IAAE,IAAE,CAAC;AAAA,MAAE,EAAE,MAAK,GAAE,GAAE,GAAE,IAAE,GAAE,CAAC,CAAC;AAAA,IAAC;AAAA,IAAC,IAAI,IAAE,GAAE,IAAE,GAAE,IAAE;AAAA,IAAE,KAAI,KAAK,KAAG,IAAE,IAAI,EAAE,IAAE,MAAI,KAAG;AAAA,MAChG,IAAE,KAAG,MAAI,KAAG,KAAK,IAAE,IAAE,OAAK,MAAI,IAAE,IAAG,KAAK,IAAE,MAAI,IAAE,KAAG,KAAG,IAAE;AAAA,IAAI,OAAO,IAAE;AAAA,KAAG,YAAY;AAAA,EAAE,EAAE,UAAU,aAClG,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,IAAI,GAAE,IAAE,IAAE,CAAC;AAAA,MAAE,EAAE,MAAK,GAAE,GAAE,GAAE,IAAE,GAAE,CAAC,CAAC;AAAA,IAAC;AAAA,IAAC,IAAI,IAAE,IAAE,GAAE,IAAE,GAAE,IAAE;AAAA,IACrG,KAAI,KAAK,IAAE,KAAG,IAAE,IAAI,EAAE,KAAG,MAAI,KAAG;AAAA,MAAM,IAAE,KAAG,MAAI,KAAG,KAAK,IAAE,IAAE,OAAK,MAAI,IAAE,IAAG,KAAK,IAAE,MAAI,IAAE,KAAG,KAAG,IAAE;AAAA,IAAI,OAAO,IACzG;AAAA,KAAG,YAAY;AAAA,EAAE,EAAE,UAAU,YAAU,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,KAAI,IAAI,GACrG,IAAE,MAAI,IAAE,MAAI,IAAE,IAAG,KAAK,KAAG,IAAE,KAAI,IAAE;AAAA,KAAG,WAAW;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IACnG,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,OAAM,MAAM,GAAE,KAAK,KAAG,IAAE,KAAI,KAAK,IAAE,KAAG,MAAI,GAAE,IAAE;AAAA,KAAG,cAAc;AAAA,EAAE,EAAE,UAC9F,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,OAAM,MAAM,GAAE,KAAK,KAAG,MAAI,GAAE,KAAK,IACpG,KAAG,IAAE,KAAI,IAAE;AAAA,KAAG,cAAc;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAClG,GAAE,GAAE,GAAE,YAAW,WAAW,GAAE,KAAK,KAAG,IAAE,KAAI,KAAK,IAAE,KAAG,MAAI,GAAE,KAAK,IAAE,KAAG,MAAI,IAAG,KAAK,IAAE,KAAG,MAAI,IAAG,IAAE;AAAA,KAAG,cACtF;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,EAAE,MAAK,GAAE,GAAE,GAAE,YAC9F,WAAW,GAAE,IAAE,MAAI,IAAE,aAAW,IAAE,IAAG,KAAK,KAAG,MAAI,IAAG,KAAK,IAAE,KAAG,MAAI,IAAG,KAAK,IAAE,KAAG,MAAI,GAAE,KAAK,IAAE,KAAG,IAAE,KACjG,IAAE;AAAA,KAAG,cAAc;AAAA,EAAE,EAAE,UAAU,kBAAgB,GAAG,EAAE,QAAQ,CAAC,GAAE,IAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,CAAC,OAAO,oBAChF,GAAE,OAAO,oBAAoB,CAAC;AAAA,KAAG,iBAAiB,CAAC;AAAA,EAAE,EAAE,UAAU,kBAAgB,GAClG,EAAE,QAAQ,CAAC,GAAE,IAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,CAAC,OAAO,oBAAoB,GAAE,OAAO,oBAAoB,CAAC;AAAA,KAAG,iBACnF,CAAC;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,IAAE,IAAE,EAAE;AAAA,MAAO,MAAM,IAAI,WAAW,oBAAoB;AAAA,IACpG,IAAG,IAAE;AAAA,MAAE,MAAM,IAAI,WAAW,oBAAoB;AAAA;AAAA,EAAE,EAAE,IAAG,cAAc;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,IACrG,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,GAAG,GAAE,GAAE,GAAE,GAAE,yCAAqB,wCAAqB,GAAE,GAAG,MAAM,GAAE,GAAE,GAAE,GAAE,IAAG,CAAC,GAAE,IAAE;AAAA;AAAA,EAAE,EAAE,IAClG,YAAY;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,MAAG,CAAC;AAAA,KAAG,cAAc;AAAA,EAAE,EACnG,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,OAAG,CAAC;AAAA,KAAG,cAAc;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IACzG,OAAO,IAAE,CAAC,GAAE,IAAE,MAAI,GAAE,KAAG,GAAG,GAAE,GAAE,GAAE,GAAE,uTAAsB,sTAAsB,GAAE,GAAG,MAAM,GAAE,GAAE,GAAE,GAAE,IACjG,CAAC,GAAE,IAAE;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,EAAE,UAAU,gBAAc,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,MAAG,CAAC;AAAA,KAAG,eACrF;AAAA,EAAE,EAAE,UAAU,gBAAc,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,OAAG,CAAC;AAAA,KAAG,eAAe;AAAA,EACnG,EAAE,UAAU,OAAK,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,CAAC,EAAE,SAAS,CAAC;AAAA,MAAE,MAAM,IAAI,UAAU,6BACvE;AAAA,IAAE,IAAG,MAAI,IAAE,IAAG,CAAC,KAAG,MAAI,MAAI,IAAE,KAAK,SAAQ,KAAG,EAAE,WAAS,IAAE,EAAE,SAAQ,MAAI,IAAE,IAAG,IAAE,KAAG,IAAE,MAAI,IAAE,IAAG,MAChG,KAAG,EAAE,WAAS,KAAG,KAAK,WAAS;AAAA,MAAE,OAAO;AAAA,IAAE,IAAG,IAAE;AAAA,MAAE,MAAM,IAAI,WAAW,2BAA2B;AAAA,IAAE,IAAG,IACtG,KAAG,KAAG,KAAK;AAAA,MAAO,MAAM,IAAI,WAAW,oBAAoB;AAAA,IAAE,IAAG,IAAE;AAAA,MAAE,MAAM,IAAI,WAAW,yBAC3E;AAAA,IAAE,IAAE,KAAK,WAAS,IAAE,KAAK,SAAQ,EAAE,SAAO,IAAE,IAAE,MAAI,IAAE,EAAE,SAAO,IAAE;AAAA,IAAG,IAAI,IAAE,IAAE;AAAA,IAAE,OAAO,SACjG,KAAG,OAAO,WAAW,UAAU,cAAY,aAAW,KAAK,WAAW,GAAE,GAAE,CAAC,IAAE,WAAW,UAAU,IAClG,KAAK,GAAE,KAAK,SAAS,GAAE,CAAC,GAAE,CAAC,GAAE;AAAA,KAAG,MAAM;AAAA,EAAE,EAAE,UAAU,OAAK,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,OAAO,KAAG,UAAS;AAAA,MACnG,IAAG,OAAO,KAAG,YAAU,IAAE,GAAE,IAAE,GAAE,IAAE,KAAK,UAAQ,OAAO,KAAG,aAAW,IAAE,GAAE,IAAE,KAAK,SAAQ,MAAS,aAAG,OAAO,KACzG;AAAA,QAAS,MAAM,IAAI,UAAU,2BAA2B;AAAA,MAAE,IAAG,OAAO,KAAG,YAAU,CAAC,EAAE,WAAW,CAAC;AAAA,QAAE,MAAM,IAAI,UAC5G,uBAAqB,CAAC;AAAA,MAAE,IAAG,EAAE,WAAS,GAAE;AAAA,QAAC,IAAI,IAAE,EAAE,WAAW,CAAC;AAAA,SAAG,MAAI,UAAQ,IAAE,OAAK,MAAI,cAAY,IACnG;AAAA,MAAE;AAAA,IAAC,EAAM;AAAA,aAAO,KAAG,WAAS,IAAE,IAAE,MAAI,OAAO,KAAG,cAAY,IAAE,OAAO,CAAC;AAAA,IAAG,IAAG,IAAE,KAAG,KAAK,SAAO,KAAG,KAAK,SACnG;AAAA,MAAE,MAAM,IAAI,WAAW,oBAAoB;AAAA,IAAE,IAAG,KAAG;AAAA,MAAE,OAAO;AAAA,IAAK,IAAE,MAAI,GAAE,IAAE,MAAS,YAAE,KAAK,SAAO,MAClG,GAAE,MAAI,IAAE;AAAA,IAAG,IAAI;AAAA,IAAE,IAAG,OAAO,KAAG;AAAA,MAAS,KAAI,IAAE,EAAE,IAAE,GAAE,EAAE;AAAA,QAAE,KAAK,KAAG;AAAA,IAAM;AAAA,MAAC,IAAI,IAAE,EAAE,SAAS,CAAC,IAAE,IAAE,EAAE,KAAK,GACnG,CAAC,GAAE,IAAE,EAAE;AAAA,MAAO,IAAG,MAAI;AAAA,QAAE,MAAM,IAAI,UAAU,gBAAc,IAAE,mCAAmC;AAAA,MAAE,KAAI,IACpG,EAAE,IAAE,IAAE,GAAE,EAAE;AAAA,QAAE,KAAK,IAAE,KAAG,EAAE,IAAE;AAAA;AAAA,IAAG,OAAO;AAAA,KAAM,MAAM;AAAA,EAAE,IAAI,KAAG,CAAC;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI;AAAA,IAAE,GAAG,MAAI,IAAE,cAAc,EAAC;AAAA,MAAC,WAAW,GAAE;AAAA,QAC3H,MAAM,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,OAAM,EAAE,MAAM,MAAK,SAAS,GAAE,UAAS,MAAG,cAAa,KAAE,CAAC,GACxG,KAAK,OAAK,GAAG,KAAK,SAAS,MAAK,KAAK,OAAM,OAAO,KAAK;AAAA;AAAA,UAAS,IAAI,GAAE;AAAA,QAAC,OAAO;AAAA;AAAA,UAAM,IAAI,CAAC,GAAE;AAAA,QAAC,OAAO,eACnG,MAAK,QAAO,EAAC,cAAa,MAAG,YAAW,MAAG,OAAM,GAAE,UAAS,KAAE,CAAC;AAAA;AAAA,MAAE,QAAQ,GAAE;AAAA,QAAC,OAAM,GAAG,KAAK,SAAS,OAC9F,KAAK;AAAA;AAAA,IAAU,GAAE,EAAE,GAAE,WAAW,GAAE;AAAA;AAAA,EAAG,EAAE,IAAG,GAAG;AAAA,EAAE,GAAG,4BAA2B,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,IACrG,GAAG,kCAAgC;AAAA,KAAkD,UAAU;AAAA,EAAE,GACjG,wBAAuB,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAM,QAAQ,qDAC/C,OAAO;AAAA,KAAK,SAAS;AAAA,EAAE,GAAG,oBAAmB,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,iBAAiB,uBAC9E,IAAE;AAAA,IAAE,OAAO,OAAO,UAAU,CAAC,KAAG,KAAK,IAAI,CAAC,IAAE,KAAG,KAAG,IAAE,GAAG,OAAO,CAAC,CAAC,IAAE,OAAO,KAAG,aAAW,IAAE,OACnG,CAAC,IAAG,IAAE,OAAO,CAAC,KAAG,OAAO,EAAE,KAAG,IAAE,EAAE,OAAO,CAAC,KAAG,OAAO,EAAE,QAAM,IAAE,GAAG,CAAC,IAAG,KAAG,MAAK,KAAG,eAAe,eACrF,KAAI;AAAA,KAAG,UAAU;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,IAAG,IAAE,EAAE,QAAO,IAAE,EAAE,OAAK,MAAI,IAAE;AAAA,IAAE,MAAK,KAAG,IAAE,GAAE,KAAG;AAAA,MAAE,IAAE,IAChG,EAAE,MAAM,IAAE,GAAE,CAAC,IAAI;AAAA,IAAI,OAAM,GAAG,EAAE,MAAM,GAAE,CAAC,IAAI;AAAA;AAAA,EAAI,EAAE,IAAG,uBAAuB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IACpG,GAAG,GAAE,QAAQ,IAAG,EAAE,OAAU,aAAG,EAAE,IAAE,OAAU,cAAI,GAAG,GAAE,EAAE,UAAQ,IAAE,EAAE;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAClH,IAAG,IAAE,KAAG,IAAE,GAAE;AAAA,MAAC,IAAI,IAAE,OAAO,KAAG,WAAS,MAAI,IAAG;AAAA,MAAE,MAAM,IAAE,IAAE,MAAI,KAAG,MAAI,OAAO,CAAC,IAAE,IAAE,OAAO,YAAY,SAC5F,IAAE,KAAG,IAAI,MAAI,IAAE,SAAS,SAAS,IAAE,KAAG,IAAE,IAAI,kBAAkB,IAAE,KAAG,IAAE,IAAI,MAAI,IAAE,MAAM,IAAI,YACxF,IAAI,KAAI,IAAI,GAAG,iBAAiB,SAAQ,GAAE,CAAC;AAAA,IAAC;AAAA,IAAC,GAAG,GAAE,GAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG,OAAO,KAC7G;AAAA,MAAS,MAAM,IAAI,GAAG,qBAAqB,GAAE,UAAS,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,gBAAgB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,MAAM,KACzG,MAAM,CAAC,MAAI,KAAG,GAAG,GAAE,CAAC,GAAE,IAAI,GAAG,iBAAiB,KAAG,UAAS,cAAa,CAAC,KAAG,IAAE,IAAE,IAAI,GAAG,2BACtF,IAAI,GAAG,iBAAiB,KAAG,UAAS,MAAM,IAAE,IAAE,YAAY,KAAI,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,IAAI,KAAG;AAAA,EAC5F,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,IAAE,EAAE,MAAM,GAAG,EAAE,IAAG,IAAE,EAAE,KAAK,EAAE,QAAQ,IAAG,EAAE,GAAE,EAAE,SAAO;AAAA,MAAE,OAAM;AAAA,IAAG,MAAK,EAAE,SAAO,MAChG;AAAA,MAAG,IAAE,IAAE;AAAA,IAAI,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,IAAE,KAAG,IAAE;AAAA,IAAE,IAAI,GAAE,IAAE,EAAE,QAAO,IAAE,MAAK,IAAE,CAAC;AAAA,IAAE,SAAQ,IAAE,EAAE,IAC3G,GAAE,EAAE,GAAE;AAAA,MAAC,IAAG,IAAE,EAAE,WAAW,CAAC,GAAE,IAAE,SAAO,IAAE,OAAM;AAAA,QAAC,IAAG,CAAC,GAAE;AAAA,UAAC,IAAG,IAAE,OAAM;AAAA,aAAE,KAAG,KAAG,MAAI,EAAE,KAAK,KAAI,KAAI,GAAG;AAAA,YAAE;AAAA,UAAQ,EAAM,SAAG,IACjH,MAAI,GAAE;AAAA,aAAE,KAAG,KAAG,MAAI,EAAE,KAAK,KAAI,KAAI,GAAG;AAAA,YAAE;AAAA,UAAQ;AAAA,UAAC,IAAE;AAAA,UAAE;AAAA,QAAQ;AAAA,QAAC,IAAG,IAAE,OAAM;AAAA,WAAE,KAAG,KAAG,MAAI,EAAE,KAAK,KAAI,KAAI,GAAG,GACrG,IAAE;AAAA,UAAE;AAAA,QAAQ;AAAA,QAAC,KAAG,IAAE,SAAO,KAAG,IAAE,SAAO;AAAA,MAAK,EAAM;AAAA,cAAI,KAAG,KAAG,MAAI,EAAE,KAAK,KAAI,KAAI,GAAG;AAAA,MAAE,IAAG,IAAE,MAAK,IAAE,KAAI;AAAA,QAAC,KAAI,KACvG,KAAG;AAAA,UAAE;AAAA,QAAM,EAAE,KAAK,CAAC;AAAA,MAAC,EAAM,SAAG,IAAE,MAAK;AAAA,QAAC,KAAI,KAAG,KAAG;AAAA,UAAE;AAAA,QAAM,EAAE,KAAK,KAAG,IAAE,KAAI,IAAE,KAAG,GAAG;AAAA,MAAC,EAAM,SAAG,IAAE,OAAM;AAAA,QAAC,KAAI,KACtG,KAAG;AAAA,UAAE;AAAA,QAAM,EAAE,KAAK,KAAG,KAAG,KAAI,KAAG,IAAE,KAAG,KAAI,IAAE,KAAG,GAAG;AAAA,MAAC,EAAM,SAAG,IAAE,SAAQ;AAAA,QAAC,KAAI,KAAG,KAAG;AAAA,UAAE;AAAA,QAAM,EAAE,KAAK,KAAG,KACjG,KAAI,KAAG,KAAG,KAAG,KAAI,KAAG,IAAE,KAAG,KAAI,IAAE,KAAG,GAAG;AAAA,MAAC,EAAM;AAAA,cAAM,IAAI,MAAM,oBAAoB;AAAA,IAAC;AAAA,IAAC,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,aACvF;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,CAAC;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,EAAE,QAAO,EAAE;AAAA,MAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAE,GAAG;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EACnG,IAAG,cAAc;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,IAAI,GAAE,GAAE,GAAE,IAAE,CAAC;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,EAAE,UAAQ,GAAG,KAAG,KAAG,IAAG,EAAE;AAAA,MAAE,IAAE,EAAE,WAC/F,CAAC,GAAE,IAAE,KAAG,GAAE,IAAE,IAAE,KAAI,EAAE,KAAK,CAAC,GAAE,EAAE,KAAK,CAAC;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,gBAAgB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,YAC/F,GAAG,CAAC,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI;AAAA,IAAE,KAAI,IAAE,EAAE,IAAE,KAAG,EAAE,IAAE,KAAG,EAAE,UAAQ,KAAG,EAAE,SAAQ,EAAE;AAAA,MACrG,EAAE,IAAE,KAAG,EAAE;AAAA,IAAG,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,aAAa,KAAG,KAAG,QAAM,EAAE,eAC3F,QAAM,EAAE,YAAY,QAAM,QAAM,EAAE,YAAY,SAAO,EAAE;AAAA;AAAA,EAAK,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,MACrG;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,IAAI,KAAG,QAAQ,GAAE;AAAA,IAAC,IAAI,IAAE,oBAAmB,IAAE,IAAI,MAAM,GAAG;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,IAAG,EAAE,GAAE;AAAA,MACvG,IAAI,IAAE,IAAE;AAAA,MAAG,SAAQ,IAAE,EAAE,IAAE,IAAG,EAAE;AAAA,QAAE,EAAE,IAAE,KAAG,EAAE,KAAG,EAAE;AAAA,IAAE;AAAA,IAAC,OAAO;AAAA,IAAG;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,OAAO,SAAO,MACjG,KAAG;AAAA;AAAA,EAAE,EAAE,IAAG,oBAAoB;AAAA,EAAE,SAAS,EAAE,GAAE;AAAA,IAAC,MAAM,IAAI,MAAM,sBAAsB;AAAA;AAAA,EAAE,EAAE,IAAG,wBAC5E;AAAA,CAAE;AAAE,IAAI;AAAJ,IAAM;AAAN,IAAQ;AAAR,IAAU;AAAV,IAAY;AAAZ,IAAc,IAAE,EAAE,MAAI;AAAA,EAAc,IAAE,YAAW,IAAE,WAAW,iBAAe,OAAG,WAAW,GAAE,CAAC,IAAG,IAAE,WACtH,mBAAiB,OAAG,aAAa,CAAC,IAAG,IAAE,OAAO,WAAW,UAAQ,cAAY,OAAO,WAAW,OAC/F,eAAa,aAAW,WAAW,SAAO,GAAG,EAAE,QAAO,IAAE,WAAW,WAAS,CAAC;AAAA,EAAE,EAAE,QAAM,EAAE,MAAI,CAAC;AAAA,EAAG,IAAG;AAAA,IACpG,EAAE,SAAS,MAAI,EAAE;AAAA,IAAE,MAAK;AAAA,IAAC,IAAI,IAAE,QAAQ,QAAQ;AAAA,IAAE,EAAE,WAAS,EAAE,KAAK,KAAK,CAAC;AAAA;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,OAAO,WAAS,WAAS,UAAQ,MAAK,KAAG,MAAI,OAAO,GAAG,SAChL,aAAW,GAAG,QAAM,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,SAAS,UAAU,MAAM,KAAK,GAAE,GAAE,CAAC;AAAA,KAAG,cAAc,GAAE;AAAA,EACnG,MAAI,OAAO,GAAG,WAAS,aAAW,KAAG,GAAG,UAAQ,OAAO,wBAAsB,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,OACrG,oBAAoB,CAAC,EAAE,OAAO,OAAO,sBAAsB,CAAC,CAAC;AAAA,KAAG,gBAAgB,IAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,OAC1G,oBAAoB,CAAC;AAAA,KAAG,gBAAgB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,WAAS,QAAQ,QAAM,QAAQ,KAAK,CAAC;AAAA;AAAA,EAAE,EAAE,IAClG,oBAAoB;AAAA,EAAE,IAAI,KAAG,OAAO,SAAO,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,MAAI;AAAA,KAAG,aAAa;AAAA,EAAE,SAAS,CAAC,GAAE;AAAA,IAAC,EACnG,KAAK,KAAK,IAAI;AAAA;AAAA,EAAE,EAAE,GAAE,cAAc;AAAA,EAAE,GAAG,UAAQ;AAAA,EAAE,GAAG,QAAQ,OAAK;AAAA,EAAG,EAAE,eAAa;AAAA,EAAE,EAAE,UAAU,UAC5F;AAAA,EAAE,EAAE,UAAU,eAAa;AAAA,EAAE,EAAE,UAAU,gBAAmB;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,OAAO,KACtG;AAAA,MAAW,MAAM,IAAI,UAAU,qEAAmE,OAAO,CAAC;AAAA;AAAA,EAC1G,EAAE,IAAG,eAAe;AAAA,EAAE,OAAO,eAAe,GAAE,uBAAsB,EAAC,YAAW,MAAG,KAAI,EAAE,QAAQ,GAAE;AAAA,IACnG,OAAO;AAAA,KAAI,KAAK,GAAE,KAAI,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,OAAO,KAAG,YAAU,IAAE,KAAG,GAAG,CAAC;AAAA,MAAE,MAAM,IAAI,WAAW,oGACF,IAAE,GAAG;AAAA,IAAE,KAAG;AAAA,KACnG,KAAK,EAAC,CAAC;AAAA,EAAE,EAAE,OAAK,QAAQ,GAAE;AAAA,KAAE,KAAK,YAAe,aAAG,KAAK,YAAU,OAAO,eAAe,IAAI,EAAE,aAC7F,KAAK,UAAQ,OAAO,OAAO,IAAI,GAAE,KAAK,eAAa,IAAG,KAAK,gBAAc,KAAK,iBAAoB;AAAA;AAAA,EACnG,EAAE,UAAU,kBAAgB,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,OAAO,KAAG,YAAU,IAAE,KAAG,GAAG,CAAC;AAAA,MAAE,MAAM,IAAI,WAAW,kFACpB,IAAE,GAAG;AAAA,IAAE,OAAO,KAAK,gBAChG,GAAE;AAAA,KAAM,iBAAiB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,EAAE,kBAAqB,YAAE,EAAE,sBAAoB,EAAE;AAAA;AAAA,EAClG,EAAE,IAAG,kBAAkB;AAAA,EAAE,EAAE,UAAU,kBAAgB,EAAE,QAAQ,GAAE;AAAA,IAAC,OAAO,GAAG,IAAI;AAAA,KAAG,iBAAiB;AAAA,EACpG,EAAE,UAAU,OAAK,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,SAAQ,IAAE,CAAC,GAAE,IAAE,EAAE,IAAE,UAAU,QAAO;AAAA,MAAI,EAAE,KAAK,UAAU,EAAE;AAAA,IAAE,IAAI,IAAE,MAClG,SAAQ,IAAE,KAAK;AAAA,IAAQ,IAAG,MAAS;AAAA,MAAE,IAAE,KAAG,EAAE,UAAa;AAAA,IAAO,SAAG,CAAC;AAAA,MAAE,OAAM;AAAA,IAAG,IAAG,GAAE;AAAA,MAAC,IAAI;AAAA,MAAE,IAAG,EAAE,SAChG,MAAI,IAAE,EAAE,KAAI,aAAa;AAAA,QAAM,MAAM;AAAA,MAAE,IAAI,IAAE,IAAI,MAAM,sBAAoB,IAAE,OAAK,EAAE,UAAQ,MAAI,GAAG;AAAA,MACnG,MAAM,EAAE,UAAQ,GAAE;AAAA,IAAC;AAAA,IAAC,IAAI,IAAE,EAAE;AAAA,IAAG,IAAG,MAAS;AAAA,MAAE,OAAM;AAAA,IAAG,IAAG,OAAO,KAAG;AAAA,MAAW,GAAG,GAAE,MAAK,CAAC;AAAA,IAAO;AAAA,eAAQ,IAAE,EAC1G,QAAO,IAAE,GAAG,GAAE,CAAC,GAAE,IAAE,EAAE,IAAE,GAAE,EAAE;AAAA,QAAE,GAAG,EAAE,IAAG,MAAK,CAAC;AAAA,IAAE,OAAM;AAAA,KAAI,MAAM;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,GAAE,GAAE;AAAA,IAAE,IAAG,GACjG,CAAC,GAAE,IAAE,EAAE,SAAQ,MAAS,aAAG,IAAE,EAAE,UAAQ,OAAO,OAAO,IAAI,GAAE,EAAE,eAAa,MAAI,EAAE,gBAAmB,cAClG,EAAE,KAAK,eAAc,GAAE,EAAE,WAAS,EAAE,WAAS,CAAC,GAAE,IAAE,EAAE,UAAS,IAAE,EAAE,KAAI,MAAS;AAAA,MAAE,IAAE,EAAE,KAAG,GAAE,EAAE,EAAE;AAAA,IAAkB,SAAG,OAAO,KAC1H,aAAW,IAAE,EAAE,KAAG,IAAE,CAAC,GAAE,CAAC,IAAE,CAAC,GAAE,CAAC,IAAE,IAAE,EAAE,QAAQ,CAAC,IAAE,EAAE,KAAK,CAAC,GAAE,IAAE,GAAG,CAAC,GAAE,IAAE,KAAG,EAAE,SAAO,KAAG,CAAC,EAAE,QAAO;AAAA,MAAC,EAAE,SAC/F;AAAA,MAAG,IAAI,IAAE,IAAI,MAAM,iDAA+C,EAAE,SAAO,MAAI,OAAO,CAAC,IAAE,mEACjC;AAAA,MAAE,EAAE,OAAK,+BAA8B,EAAE,UACjG,GAAE,EAAE,OAAK,GAAE,EAAE,QAAM,EAAE,QAAO,GAAG,CAAC;AAAA,IAAC;AAAA,IAAC,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,cAAc;AAAA,EAAE,EAAE,UAAU,cAAY,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IACvG,OAAO,GAAG,MAAK,GAAE,GAAE,KAAE;AAAA,KAAG,aAAa;AAAA,EAAE,EAAE,UAAU,KAAG,EAAE,UAAU;AAAA,EAAY,EAAE,UAAU,kBAC1F,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,GAAE,IAAE;AAAA,KAAG,iBAAiB;AAAA,EAAE,SAAS,EAAE,GAAE;AAAA,IAAC,IAAG,CAAC,KAAK;AAAA,MAAM,OAAO,KAC/F,OAAO,eAAe,KAAK,MAAK,KAAK,MAAM,GAAE,KAAK,QAAM,MAAG,UAAU,WAAS,IAAE,KAAK,SAAS,KAAK,KACnG,MAAM,IAAE,KAAK,SAAS,MAAM,KAAK,QAAO,SAAS;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE;AAAA,MAAC,OAAM;AAAA,MACvG,QAAY;AAAA,MAAE,QAAO;AAAA,MAAE,MAAK;AAAA,MAAE,UAAS;AAAA,IAAC,GAAE,IAAE,GAAG,KAAK,CAAC;AAAA,IAAE,OAAO,EAAE,WAAS,GAAE,EAAE,SAAO,GAAE;AAAA;AAAA,EAAE,EAAE,IAAG,WACzF;AAAA,EAAE,EAAE,UAAU,OAAK,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,CAAC,GAAE,KAAK,GAAG,GAAE,GAAG,MAAK,GAAE,CAAC,CAAC,GAAE;AAAA,KAAM,MAAM;AAAA,EAAE,EAAE,UAC5F,sBAAoB,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,CAAC,GAAE,KAAK,gBAAgB,GAAE,GAAG,MAAK,GAAE,CAAC,CAAC,GAAE;AAAA,KAAM,qBAC/E;AAAA,EAAE,EAAE,UAAU,iBAAe,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAI,GAAE,GAAE,GAAE,GAAE;AAAA,IAAE,IAAG,GAAG,CAAC,GAAE,IAAE,KAAK,SAAQ,MAC3F;AAAA,MAAE,OAAO;AAAA,IAAK,IAAG,IAAE,EAAE,IAAG,MAAS;AAAA,MAAE,OAAO;AAAA,IAAK,IAAG,MAAI,KAAG,EAAE,aAAW;AAAA,MAAE,EAAE,KAAK,iBAAe,IACnG,KAAK,UAAQ,OAAO,OAAO,IAAI,KAAG,OAAO,EAAE,IAAG,EAAE,kBAAgB,KAAK,KAAK,kBAAiB,GAAE,EAAE,YAC/F,CAAC;AAAA,IAAQ,SAAG,OAAO,KAAG,YAAW;AAAA,MAAC,KAAI,IAAE,IAAG,IAAE,EAAE,SAAO,EAAE,KAAG,GAAE;AAAA,QAAI,IAAG,EAAE,OAAK,KAAG,EAAE,GAAG,aAAW,GAAE;AAAA,UAAC,IAAE,EAAE,GACrG,UAAS,IAAE;AAAA,UAAE;AAAA,QAAK;AAAA,MAAC,IAAG,IAAE;AAAA,QAAE,OAAO;AAAA,MAAK,MAAI,IAAE,EAAE,MAAM,IAAE,GAAG,GAAE,CAAC,GAAE,EAAE,WAAS,MAAI,EAAE,KAAG,EAAE,KAAI,EAAE,mBACrF,aAAG,KAAK,KAAK,kBAAiB,GAAE,KAAG,CAAC;AAAA,IAAC;AAAA,IAAC,OAAO;AAAA,KAAM,gBAAgB;AAAA,EAAE,EAAE,UAAU,MAAI,EAAE,UAC5F;AAAA,EAAe,EAAE,UAAU,qBAAmB,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,GAAE,GAAE;AAAA,IAAE,IAAG,IAAE,KAAK,SAAQ,MAAS;AAAA,MAAE,OAAO;AAAA,IAC1G,IAAG,EAAE,mBAAsB;AAAA,MAAE,OAAO,UAAU,WAAS,KAAG,KAAK,UAAQ,OAAO,OAAO,IAAI,GAAE,KAAK,eAChG,KAAG,EAAE,OAAU,cAAI,EAAE,KAAK,iBAAe,IAAE,KAAK,UAAQ,OAAO,OAAO,IAAI,IAAE,OAAO,EAAE,KAAI;AAAA,IAAK,IAAG,UACjG,WAAS,GAAE;AAAA,MAAC,IAAI,IAAE,OAAO,KAAK,CAAC,GAAE;AAAA,MAAE,KAAI,IAAE,EAAE,IAAE,EAAE,QAAO,EAAE;AAAA,QAAE,IAAE,EAAE,IAAG,MAAI,oBAAkB,KAAK,mBAC5F,CAAC;AAAA,MAAE,OAAO,KAAK,mBAAmB,gBAAgB,GAAE,KAAK,UAAQ,OAAO,OAAO,IAAI,GAAE,KAAK,eAC1F,GAAE;AAAA,IAAI;AAAA,IAAC,IAAG,IAAE,EAAE,IAAG,OAAO,KAAG;AAAA,MAAW,KAAK,eAAe,GAAE,CAAC;AAAA,IAAO,SAAG,MAAS;AAAA,MAAE,KAAI,IAAE,EAAE,SAAO,EAAE,KACnG,GAAE;AAAA,QAAI,KAAK,eAAe,GAAE,EAAE,EAAE;AAAA,IAAE,OAAO;AAAA,KAAM,oBAAoB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE;AAAA,IAChG,IAAG,MAAS;AAAA,MAAE,OAAM,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE;AAAA,IAAG,OAAO,MAAS,YAAE,CAAC,IAAE,OAAO,KAAG,aAAW,IAAE,CAAC,EAAE,YAAU,CAAC,IAAE,CAAC,CAAC,IAAE,IAClG,GAAG,CAAC,IAAE,GAAG,GAAE,EAAE,MAAM;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,EAAE,UAAU,YAAU,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,IAAE;AAAA,KAAG,WACzF;AAAA,EAAE,EAAE,UAAU,eAAa,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,MAAK,GAAE,KAAE;AAAA,KAAG,cAAc;AAAA,EAAE,EAAE,gBAC1F,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,OAAO,EAAE,iBAAe,aAAW,EAAE,cAAc,CAAC,IAAE,GAAG,KAAK,GAAE,CAAC;AAAA;AAAA,EAAG,EAAE,UAC3F,gBAAc;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,KAAK;AAAA,IAAQ,IAAG,MAAS,WAAE;AAAA,MAAC,IAAI,IAAE,EAAE;AAAA,MAAG,IAAG,OAAO,KAAG;AAAA,QAC1F,OAAO;AAAA,MAAE,IAAG,MAAS;AAAA,QAAE,OAAO,EAAE;AAAA,IAAM;AAAA,IAAC,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,EAAE,EAAE,UAAU,aAAW,EAAE,QAAQ,GAAE;AAAA,IACzG,OAAO,KAAK,eAAa,IAAE,GAAG,KAAK,OAAO,IAAE,CAAC;AAAA,KAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,SAAQ,IAAE,IAAI,MAAM,CAAC,GACpG,IAAE,EAAE,IAAE,GAAE,EAAE;AAAA,MAAE,EAAE,KAAG,EAAE;AAAA,IAAG,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,MAAK,IAAE,IAAE,EAAE,QAAO;AAAA,MAAI,EAAE,KAAG,EAAE,IAAE;AAAA,IAClG,EAAE,IAAI;AAAA;AAAA,EAAE,EAAE,IAAG,WAAW;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,SAAQ,IAAE,IAAI,MAAM,EAAE,MAAM,GAAE,IAAE,EAAE,IAAE,EAAE,QAAO,EAAE;AAAA,MAAE,EAAE,KAAG,EAAE,GACjG,YAAU,EAAE;AAAA,IAAG,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,iBAAiB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAI,QAAQ,QAAQ,CAAC,GAAE,GAAE;AAAA,MAAC,SAAS,CAAC,CAAC,GAAE;AAAA,QAC/G,EAAE,eAAe,GAAE,CAAC,GAAE,EAAE,CAAC;AAAA;AAAA,MAAE,EAAE,GAAE,eAAe;AAAA,MAAE,SAAS,CAAC,GAAE;AAAA,QAAC,OAAO,EAAE,kBAAgB,cAAY,EAClG,eAAe,SAAQ,CAAC,GAAE,EAAE,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC;AAAA;AAAA,MAAE,EAAE,GAAE,UAAU,GAAE,GAAG,GAAE,GAAE,GAAE,EAAC,MAAK,KAAE,CAAC,GAAE,MAAI,WAC9F,GAAG,GAAE,GAAE,EAAC,MAAK,KAAE,CAAC;AAAA,KAAE;AAAA;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,EAAE,MAAI,cAAY,GAAG,GAAE,SAAQ,GAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IACjG,+BAA+B;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,OAAO,EAAE,MAAI;AAAA,MAAW,EAAE,OAAK,EAAE,KAAK,GAAE,CAAC,IAClG,EAAE,GAAG,GAAE,CAAC;AAAA,IAAO,SAAG,OAAO,EAAE,oBAAkB;AAAA,MAAW,EAAE,iBAAiB,GAAE,EAAE,SAAS,CAAC,CAAC,GAAE;AAAA,QAAC,EAAE,QAC/F,EAAE,oBAAoB,GAAE,CAAC,GAAE,EAAE,CAAC;AAAA,SAAG,cAAc,CAAC;AAAA,IAAO;AAAA,YAAM,IAAI,UAAU,wEAC9B,OAAO,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,gCAAgC;AAAA,CAAE;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,QAAO,MAAI,IAAG,MAAK,MAAI,GAAE,CAAC;AAAE,SAAS,EAAE,CAAC,GAAE;AAAA,EAAC,OAAO;AAAA;AAAE,IAAI;AAAJ,IAAO;AAAP,IAAU;AAAV,IAAY;AAAZ,IAAe,KAAG,EAAE,MAAI;AAAA,EACtL,EAAE;AAAA,EAAE,KAAG,GAAG,GAAG,GAAE,CAAC;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,EAAE,KAAG,YAAW,IAAE,MAAM,WAAU,GAAG,aAAY;AAAA,IAAC,WAAW,GAAE;AAAA,MACnG,MAAM,GAAG,SAAS;AAAA,MAAE,EAAE,MAAK,QAAO,CAAC,CAAC;AAAA,MAAE,EAAE,MAAK,cAAa,KAAE;AAAA,MAAE,EAAE,MAAK,WAAU,IAAE;AAAA,MAAE,EAAE,MAAK,YAC1F,IAAE;AAAA,MAAE,EAAE,MAAK,aAAY,KAAE;AAAA,MAAE,EAAE,MAAK,cAAa,KAAE;AAAA,MAAE,EAAE,MAAK,aAAY,KAAE;AAAA,MAAE,EAAE,MAAK,MAAK,IAAI;AAAA,MAAE,EAAE,MAAK,aACvF;AAAA,MAAE,EAAE,MAAK,YAAW,CAAC;AAAA,MAAE,EAAE,MAAK,SAAS;AAAA,MAAE,EAAE,MAAK,UAAU;AAAA;AAAA,eAAa,iBAAiB,GAAE;AAAA,MACtG,OAAO,GAAE,KAAK,qBAAmB,GAAE,SAAS;AAAA;AAAA,eAA6B,iBAAiB,CAAC,GAAE;AAAA,MAAC,GAAE,KAChG,oBAAkB;AAAA;AAAA,eAAa,aAAa,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,iBAAe,GAAE,SAAS;AAAA;AAAA,eAAyB,aAAa,CAAC,GAAE;AAAA,MAChI,GAAE,KAAK,gBAAc;AAAA;AAAA,eAAa,oBAAoB,GAAE;AAAA,MAAC,OAAM;AAAA;AAAA,eAAc,oBAAoB,CAAC,GAAE;AAAA,MACpG,QAAQ,KAAK,qEAAqE;AAAA;AAAA,eAAa,aAAa,GAAE;AAAA,MAC9G,OAAO,GAAE,KAAK,iBAAe,GAAE,SAAS;AAAA;AAAA,eAAyB,aAAa,CAAC,GAAE;AAAA,MAAC,GAAE,KAAK,gBACzF;AAAA;AAAA,eAAa,oBAAoB,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,wBAAsB,GAAE,SAAS;AAAA;AAAA,eAAgC,oBAAoB,CAAC,GAAE;AAAA,MAC1I,GAAE,KAAK,uBAAqB;AAAA;AAAA,QAAM,oBAAoB,GAAE;AAAA,MAAC,OAAO,KAAK,KAAK,wBAAsB,GAAE;AAAA;AAAA,QAAyB,oBAAoB,CAAC,GAAE;AAAA,MAClJ,KAAK,KAAK,uBAAqB;AAAA;AAAA,eAAa,OAAO,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,WAAS,GAAE,SAAS;AAAA;AAAA,eAAmB,OAAO,CAAC,GAAE;AAAA,MACrH,GAAE,KAAK,UAAQ;AAAA;AAAA,QAAM,OAAO,GAAE;AAAA,MAAC,OAAO,KAAK,KAAK,WAAS,GAAE;AAAA;AAAA,QAAY,OAAO,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,UAC5F;AAAA;AAAA,eAAa,cAAc,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,kBAAgB,GAAE,SAAS;AAAA;AAAA,eAA0B,cAAc,CAAC,GAAE;AAAA,MAClH,GAAE,KAAK,iBAAe;AAAA;AAAA,QAAM,cAAc,GAAE;AAAA,MAAC,OAAO,KAAK,KAAK,kBAAgB,GAAE;AAAA;AAAA,QAAmB,cAAc,CAAC,GAAE;AAAA,MACpH,KAAK,KAAK,iBAAe;AAAA;AAAA,eAAa,kBAAkB,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,sBAAoB,GAAE,SAC/F;AAAA;AAAA,eAA8B,kBAAkB,CAAC,GAAE;AAAA,MAAC,GAAE,KAAK,qBAAmB;AAAA;AAAA,QAAM,kBAAkB,GAAE;AAAA,MACxG,OAAO,KAAK,KAAK,sBAAoB,GAAE;AAAA;AAAA,QAAuB,kBAAkB,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,qBAC9F;AAAA;AAAA,eAAa,iBAAiB,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,qBAAmB,GAAE,SAAS;AAAA;AAAA,eAA6B,iBAAiB,CAAC,GAAE;AAAA,MAC9H,GAAE,KAAK,oBAAkB;AAAA;AAAA,QAAM,iBAAiB,GAAE;AAAA,MAAC,OAAO,KAAK,KAAK,qBAAmB,GAAE;AAAA;AAAA,QAAsB,iBAAiB,CAAC,GAAE;AAAA,MACnI,KAAK,KAAK,oBAAkB;AAAA;AAAA,eAAa,UAAU,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,cAAY,GAAE,SAAS;AAAA;AAAA,eAAsB,UAAU,CAAC,GAAE;AAAA,MAC9H,GAAE,KAAK,aAAW;AAAA;AAAA,QAAM,UAAU,GAAE;AAAA,MAAC,OAAO,KAAK,KAAK,cAAY,GAAE;AAAA;AAAA,QAAe,UAAU,CAAC,GAAE;AAAA,MAAC,KACjG,KAAK,aAAW;AAAA;AAAA,eAAa,wBAAwB,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,4BAA0B,GAAE,SAClG;AAAA;AAAA,eAAoC,wBAAwB,CAAC,GAAE;AAAA,MAAC,GAAE,KAAK,2BAAyB;AAAA;AAAA,QAAM,wBAAwB,GAAE;AAAA,MAChI,OAAO,KAAK,KAAK,4BAA0B,GAAE;AAAA;AAAA,QAA6B,wBAAwB,CAAC,GAAE;AAAA,MACrG,KAAK,KAAK,2BAAyB;AAAA;AAAA,eAAa,eAAe,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,mBAAiB,GAAE,SACnG;AAAA;AAAA,eAA2B,eAAe,CAAC,GAAE;AAAA,MAAC,GAAE,KAAK,kBAAgB;AAAA;AAAA,QAAM,eAAe,GAAE;AAAA,MAAC,OAAO,KACpG,KAAK,mBAAiB,GAAE;AAAA;AAAA,QAAoB,eAAe,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,kBAAgB;AAAA;AAAA,eAAa,MAAM,GAAE;AAAA,MAC9G,OAAO,GAAE,KAAK,UAAQ,GAAE,SAAS;AAAA;AAAA,eAAkB,MAAM,CAAC,GAAE;AAAA,MAAC,GAAE,KAAK,SAAO;AAAA;AAAA,QAAM,MAAM,GAAE;AAAA,MAAC,OAAO,KACjG,KAAK,UAAQ,GAAE;AAAA;AAAA,QAAW,MAAM,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,SAAO;AAAA;AAAA,eAAa,WAAW,GAAE;AAAA,MAAC,OAAO,GAAE,KAAK,eAC9F,GAAE,SAAS;AAAA;AAAA,eAAuB,WAAW,CAAC,GAAE;AAAA,MAAC,GAAE,KAAK,cAAY;AAAA;AAAA,QAAM,WAAW,GAAE;AAAA,MAAC,OAAO,KAC/F,KAAK,eAAa,GAAE;AAAA;AAAA,QAAgB,WAAW,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,cAAY;AAAA;AAAA,eAAa,SAAS,GAAE;AAAA,MAAC,OAAO,GACzG,KAAK,aAAW,GAAE,SAAS;AAAA;AAAA,eAAqB,SAAS,CAAC,GAAE;AAAA,MAAC,GAAE,KAAK,YAAU;AAAA;AAAA,QAAM,SAAS,GAAE;AAAA,MAAC,OAAO,KACvG,KAAK,aAAW,GAAE;AAAA;AAAA,QAAc,SAAS,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,YAAU;AAAA;AAAA,IAAE,kBAAkB,CAAC,GAAE,GAAE;AAAA,MAAC,IAAI,IAAE,KACjG;AAAA,MAAQ,IAAG,MAAS;AAAA,QAAE,MAAM,IAAI,MAAM,qKAEnC;AAAA,MAAE,OAAO,OAAO,KAAG,aAAW,EAAE,GAAE,CAAC,IAAE,GAAG,aAAa,KAAK;AAAA;AAAA,IAAI,UAAU,GAAE;AAAA,MAAC,OAAO;AAAA;AAAA,IAAK,YAAY,GAAE;AAAA,MACxG,OAAO;AAAA;AAAA,IAAK,GAAG,GAAE;AAAA,MAAC,OAAO;AAAA;AAAA,IAAK,KAAK,GAAE;AAAA,MAAC,OAAO;AAAA;AAAA,IAAK,OAAO,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,aAAW,MAAG,KAAG,KAAK,KAAK,WAC1F,CAAC;AAAA,MAAE,IAAI,IAAE,EAAE,MAAI;AAAA,QAAC,KAAK,aAAW,OAAG,KAAK,UAAQ,OAAG,KAAK,KAAK,SAAS,GAAE,KAAK,KAAK,OAAO;AAAA,SAAG,qBAC/E,GAAE,IAAE,EAAE,CAAC,GAAE,IAAE,UAAK;AAAA,QAAC,EAAE,aAAW,eAAc,EAAE,iBAAiB,SAAQ,OAAG;AAAA,UAAC,KAC/F,KAAK,SAAQ,CAAC,GAAE,KAAK,KAAK,OAAO;AAAA,SAAE,GAAE,EAAE,iBAAiB,WAAU,OAAG;AAAA,UAAC,IAAG,KAAK,aAAW,GAAE;AAAA,YAAC,IAAI,IAAE,EAClG,KAAK,EAAE,IAAI;AAAA,YAAE,KAAK,KAAK,QAAO,CAAC;AAAA,UAAC;AAAA,SAAE,GAAE,EAAE,iBAAiB,SAAQ,MAAI;AAAA,UAAC,KAAK,KAAK,OAAO;AAAA,SAAE,GAAE,IAAE,EAAE,IAAE,EAAE,iBACjG,QAAO,CAAC;AAAA,SAAG,oBAAoB,GAAE;AAAA,MAAE,IAAG;AAAA,QAAC,IAAE,KAAK,mBAAmB,GAAE,OAAO,KAAG,WAAS,SAAS,GAAE,EAAE,IACnG,CAAC;AAAA,QAAE,OAAM,GAAE;AAAA,QAAC,KAAK,KAAK,SAAQ,CAAC,GAAE,KAAK,KAAK,OAAO;AAAA,QAAE;AAAA;AAAA,MAAO,IAAG;AAAA,QAAC,IAAI,KAAG,KAAK,qBAAmB,SAC9F,SAAO,OAAK;AAAA,QAAE,IAAG,KAAK,yBAA4B;AAAA,UAAE,KAAK,KAAG,IAAI,KAAK,qBAAqB,CAAC,GAAE,EAAE,KAC/F,EAAE;AAAA,QAAO;AAAA,cAAG;AAAA,YAAC,KAAK,KAAG,IAAI,UAAU,CAAC,GAAE,EAAE,KAAK,EAAE;AAAA,YAAE,MAAK;AAAA,YAAC,KAAK,KAAG,IAAI,qBAAqB,CAAC,GAAE,EAAE,KAAK,EAAE;AAAA;AAAA,QAAG,OAAM,GAAE;AAAA,QAC/G,IAAI,KAAG,KAAK,qBAAmB,WAAS,WAAS,OAAK;AAAA,QAAE,MAAM,GAAE,EAAC,SAAQ,EAAC,SAAQ,YAAW,EAAC,CAAC,EAAE,KACjG,OAAG;AAAA,UAAC,IAAG,KAAK,KAAG,EAAE,WAAU,KAAK,MAAI;AAAA,YAAK,MAAM;AAAA,UAAE,KAAK,GAAG,OAAO,GAAE,EAAE,KAAK,IAAG,IAAE;AAAA,SAAE,EAAE,MAAM,OAAG;AAAA,UAAC,KAAK,KACjG,SAAQ,IAAI,MAAM,iNAES,GAAG,CAAC,GAAE,KAAK,KAAK,OAAO;AAAA,SAAE;AAAA;AAAA;AAAA,SAAS,SAAQ,CAAC,GAAE;AAAA,MAAC,IAAG,KAAK,WAAc;AAAA,QAAE,MAAM,IAAI,MAC3G,gLAC4E;AAAA,MAAE,KAAK,WAAS;AAAA,MAAE,IAAI,IAAE,MAAM,KAC1G,OAAO,YAAY,gBAAgB,KAAK,SAAS,GAAE,IAAE,IAAI,KAAK,OAAO,mBAAmB,KAAK,EAAE,GAAE,IAAE,EACnG,KAAK,KAAK,CAAC,GAAE,IAAE,KAAK,SAAS,KAAK,IAAI,KAAG,MAAK,GAAE,OAAM,MAAG,MAAM,KAAK,OAAO,SAAS,GAAE,GAAE,GAAE,GAAE,EAAC,QAAO,CAAC,KACrG,YAAW,eAAc,KAAK,cAAY,IAAI,WAAW,CAAC,EAAE,CAAC,IAAO,UAAC,CAAC;AAAA,MAAE,KAAK,UAAQ,GAAE,KAAK,WAC5F,GAAE,KAAK,WAAS,GAAE,KAAK,YAAU,MAAG,KAAK,aAAW,MAAG,KAAK,KAAK,oBAAmB,IAAI,GAAE,KAAK,YAAY;AAAA;AAAA,SAAQ,YAAW,GAAE;AAAA,MAChI,UAAO;AAAA,QAAC,IAAI,IAAE,MAAM,KAAK,QAAQ;AAAA,QAAE,IAAG,MAAS;AAAA,UAAE;AAAA,QAAM;AAAA,UAAC,IAAI,IAAE,EAAE,KAAK,CAAC;AAAA,UAAE,KAAK,KAAK,QAAO,CAAC;AAAA,QAAC;AAAA,MAAC;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE;AAAA,MACzG,IAAG,CAAC,KAAK,gBAAe;AAAA,QAAC,KAAK,MAAI,KAAK,GAAG,KAAK,CAAC;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,IAAG,KAAK,gBAAmB;AAAA,QAAE,KAAK,cAC3F,GAAE,WAAW,MAAI;AAAA,UAAC,KAAK,MAAI,KAAK,GAAG,KAAK,KAAK,WAAW,GAAE,KAAK,cAAiB;AAAA,WAAG,CAAC;AAAA,MAAM;AAAA,QAAC,IAAI,IAAE,IAAI,WACrG,KAAK,YAAY,SAAO,EAAE,MAAM;AAAA,QAAE,EAAE,IAAI,KAAK,WAAW,GAAE,EAAE,IAAI,GAAE,KAAK,YAAY,MAAM,GAAE,KAAK,cAChG;AAAA;AAAA;AAAA,IAAG,KAAK,CAAC,GAAE,IAAE,QAAO,IAAE,OAAG,IAAG;AAAA,MAAC,OAAO,EAAE,WAAS,KAAG,EAAE,GAAE,SAAK,OAAO,KAAG,aAAW,IAAE,EAAE,KAAK,GAAE,CAAC,IAAG,KAC/F,aAAW,KAAG,KAAK,SAAS,CAAC,GAAE,EAAE,KAAG,KAAK,aAAW,IAAE,KAAK,KAAK,oBAAmB,MAAI;AAAA,QAAC,KAAK,MAAM,GACnG,GAAE,CAAC;AAAA,OAAE,KAAG,KAAK,SAAS,CAAC,GAAE,EAAE,IAAG;AAAA;AAAA,IAAI,GAAG,CAAC,IAAE,EAAE,MAAM,CAAC,GAAE,IAAE,QAAO,IAAE,MAAI,IAAG;AAAA,MAAC,OAAO,KAAK,MAAM,GAAE,GAAE,MAAI;AAAA,QAAC,KACjG,GAAG,MAAM,GAAE,EAAE;AAAA,OAAE,GAAE;AAAA;AAAA,IAAK,OAAO,GAAE;AAAA,MAAC,OAAO,KAAK,YAAU,MAAG,KAAK,IAAI;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,GAAE,QAAQ,GAAE,EAAE,GAAE,YAAW;AAAA,IACnG,mBAAkB;AAAA,IAAG,eAAc,EAAE,CAAC,GAAE,GAAE,MAAI;AAAA,MAAC,IAAI;AAAA,MAAE,OAAO,GAAG,UAAQ,IAAE,EAAE,QAAQ,IAAG,UAAU,IAAE,IAClG,EAAE,QAAQ,IAAG,MAAM,GAAE,aAAW,IAAE;AAAA,OAAQ,eAAe;AAAA,IAAE,sBAAqB;AAAA,IAAG,eAAmB;AAAA,IACtG,sBAA0B;AAAA,IAAE,SAAQ,EAAE,OAAG,IAAE,OAAM,SAAS;AAAA,IAAE,oBAAmB;AAAA,IAAG,mBAAkB;AAAA,IACpG,gBAAe;AAAA,IAAG,iBAAgB;AAAA,IAAW,QAAY;AAAA,IAAE,WAAU;AAAA,IAAG,aAAY;AAAA,IAAG,YAAW;AAAA,IAClG,0BAAyB;AAAA,EAAE,CAAC,GAAE,EAAE,GAAE,QAAO,CAAC,CAAC;AAAA,EAAE,KAAG;AAAA,CAAE;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,OAAM,MAAI,GAAE,CAAC;AAAE,SAAS,EAAE,CAAC,GAAE,IAAE,OAAG;AAAA,EAAC,MAAI,UAAS,MAAG,IAAI,IAAI,CAAC,GAAE,IAAE,UAAQ,EAAE,UAC/I,EAAE,MAAM,KAAG,UAAS,GAAE,UAAS,GAAE,MAAK,GAAE,UAAS,GAAE,MAAK,GAAE,UAAS,GAAE,QAAO,GAAE,cAAa,GAAE,MAAK,MAAG,IAAI,IACzG,CAAC;AAAA,EAAE,IAAE,mBAAmB,CAAC,GAAE,IAAE,mBAAmB,CAAC,GAAE,IAAE,mBAAmB,CAAC;AAAA,EAAE,IAAI,IAAE,IAAE,MAAI,GAAE,IAAE,IAAE,OAC7F,YAAY,EAAE,QAAQ,CAAC,IAAE;AAAA,EAAE,OAAM;AAAA,IAAC,MAAK;AAAA,IAAE,UAAS;AAAA,IAAE,MAAK;AAAA,IAAE,UAAS;AAAA,IAAE,UAAS;AAAA,IAAE,MAAK;AAAA,IAAE,UAAS;AAAA,IAAE,MAAK;AAAA,IACxG,UAAS;AAAA,IAAE,QAAO;AAAA,IAAE,OAAM;AAAA,IAAE,MAAK;AAAA,EAAC;AAAA;AAAE,IAAI,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAc,EAAE;AAAA,EAAE,GAAG,QAAM,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IAAI,GAAG,GAAE,CAAC,EAAE,MAAM;AAAA;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MACrM,KAAK,SAAO,GAAE,KAAK,YAAU,KAAG,IAAG,KAAK,WAAS,GAAE,KAAK,UAAQ,CAAC,GAAE,KAAK,WAAS,CAAC,GAAE,KAAK,YAAU;AAAA;AAAA,IAAE,KAAK,GAAE;AAAA,MAC5G,OAAO,KAAK,YAAU,KAAK,OAAO;AAAA;AAAA,IAAO,aAAa,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,KAAK;AAAA,MAAY,OAAO,MACnG,OAAK,EAAC,OAAM,KAAK,OAAO,KAAK,aAAY,SAAQ,KAAE,IAAE,EAAC,OAAM,GAAE,SAAQ,MAAE;AAAA;AAAA,IAAE,MAAM,CAAC,GAAE;AAAA,MAAC,KAAK,SAAS,KAClG,CAAC;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,IAAI;AAAA,OAAG,KAAK,SAAS,SAAO,KAAG,OAAK,IAAE,KAAK,SAAS,KAAK,EAAE,GAAE,MAAI,UAAQ,CAAC,MAAI,IAAE,OAC/F,MAAI,SAAO,IAAE,KAAK,UAAU,CAAC,IAAG,KAAK,QAAQ,KAAK,CAAC,GAAE,KAAK,WAAS,CAAC;AAAA;AAAA,IAAG,iBAAiB,GAAE;AAAA,MAAC,IAAG,KAAK,OAAO,OAC1G;AAAA,QAAI,MAAK,CAAC,KAAK,MAAM,KAAG;AAAA,UAAC,IAAI,IAAE,KAAK,cAAc;AAAA,UAAE,IAAG,EAAE,UAAQ;AAAA,YAAI;AAAA,QAAK;AAAA;AAAA,IAAE,KAAK,CAAC,GAAE;AAAA,MAAC,IAAI,GAAE,GAAE;AAAA,MAAE,KAAI,KACnG,kBAAkB,EAAE,CAAC,KAAK,MAAM;AAAA,QAAG,IAAG,IAAE,KAAK,cAAc,GAAE,EAAE,UAAQ,OAAK,CAAC;AAAA,UAAE,KAAK,aAAY,KAChG,YAAU,MAAI,IAAE,IAAI,IAAG,KAAK,OAAO,OAAO,KAAK,WAAS,CAAC,GAAE,KAAK,SAAS,GAAE,KAAK,QAAQ,KAAK,EAAE,MAC/F,IAAE,CAAC,GAAE,KAAK,YAAU,EAAE,WAAS;AAAA,QAAQ,SAAG,EAAE,UAAQ,OAAK,CAAC,GAAE;AAAA,UAAC,IAAG,KAAK,aAAY,CAAC,KAAK,cAAY,KACnG,SAAS,GAAE;AAAA,YAAG,OAAO,KAAK;AAAA,QAAO,EAAM;AAAA,YAAE,UAAQ,OAAK,CAAC,EAAE,WAAS,KAAG,KAAK,SAAS,IAAE,GAAE,IAAE,CAAC,KAAG,EAAE,UAC/F,OAAK,CAAC,IAAE,KAAK,SAAS,IAAE,KAAK,OAAO,EAAE,KAAK;AAAA,MAAE,IAAG,KAAK,cAAY;AAAA,QAAE,MAAM,IAAI,MAAM,8BACtE;AAAA,MAAE,OAAO,KAAK;AAAA;AAAA,EAAQ;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,UAC1F;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAC,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG;AAAA,EAAE,GAAG,UAAQ,EAAC,QAAO,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAM,EAAC,OAAM,EAAE,QAAQ,GAAE;AAAA,MAAC,OAAO,GACjH,MAAM,GAAE,CAAC;AAAA,OAAG,OAAO,EAAC;AAAA,KAAG,QAAQ,EAAC;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,yEAC/E,KAAG,oCAAmC,KAAG,uCAAsC,KAAG;AAAA,EAAe,GACjG,UAAQ,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,GAAG,KAAK,CAAC;AAAA,MAAE,OAAO,OAAO,EAAE,QAAQ,KAAI,GAAG,CAAC;AAAA,IAAE,IAAI,IAAE,GAAG,KAAK,CAAC;AAAA,IAAE,IAAG,CAAC;AAAA,MAAE,OAAO,GACpG,CAAC,KAAG;AAAA,IAAK,IAAI,IAAE,CAAC,CAAC,EAAE,IAAG,IAAE,SAAS,EAAE,IAAG,EAAE;AAAA,IAAE,MAAI,IAAE,GAAG,CAAC;AAAA,IAAG,IAAI,IAAE,SAAS,EAAE,IAAG,EAAE,IAAE,GAAE,IAAE,EAAE,IAAG,IAAE,SAAS,EAAE,IACrG,EAAE,GAAE,IAAE,SAAS,EAAE,IAAG,EAAE,GAAE,IAAE,SAAS,EAAE,IAAG,EAAE,GAAE,IAAE,EAAE;AAAA,IAAG,IAAE,IAAE,OAAI,WAAW,CAAC,IAAE;AAAA,IAAE,IAAI,GAAE,IAAE,GAAG,CAAC;AAAA,IAAE,OAAO,KAAG,QAClG,IAAE,IAAI,KAAK,KAAK,IAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,CAAC,GAAE,GAAG,CAAC,KAAG,EAAE,eAAe,CAAC,GAAE,MAAI,KAAG,EAAE,QAAQ,EAAE,QAAQ,IAAE,CAAC,MAAI,IAClG,IAAI,KAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,GAAE,GAAG,CAAC,KAAG,EAAE,YAAY,CAAC,IAAG;AAAA,KAAG,WAAW;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,GAAG,KAAK,CAAC;AAAA,IAAE,IAAG,GAAE;AAAA,MACtG,IAAI,IAAE,SAAS,EAAE,IAAG,EAAE,GAAE,IAAE,CAAC,CAAC,EAAE;AAAA,MAAG,MAAI,IAAE,GAAG,CAAC;AAAA,MAAG,IAAI,IAAE,SAAS,EAAE,IAAG,EAAE,IAAE,GAAE,IAAE,EAAE,IAAG,IAAE,IAAI,KAAK,GAAE,GAAE,CAAC;AAAA,MAAE,OAAO,GACxG,CAAC,KAAG,EAAE,YAAY,CAAC,GAAE;AAAA,IAAC;AAAA;AAAA,EAAE,EAAE,IAAG,SAAS;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,EAAE,SAAS,KAAK;AAAA,MAAE,OAAO;AAAA,IAAE,IAAI,IAAE,GAAG,KAAK,EACnG,MAAM,GAAG,EAAE,EAAE;AAAA,IAAE,IAAG,GAAE;AAAA,MAAC,IAAI,IAAE,EAAE;AAAA,MAAG,IAAG,MAAI;AAAA,QAAI,OAAO;AAAA,MAAE,IAAI,IAAE,MAAI,MAAI,KAAG,GAAE,IAAE,SAAS,EAAE,IAAG,EAAE,IAAE,OAAK,SAChG,EAAE,MAAI,GAAE,EAAE,IAAE,KAAG,SAAS,EAAE,MAAI,GAAE,EAAE;AAAA,MAAE,OAAO,IAAE,IAAE;AAAA,IAAG;AAAA;AAAA,EAAE,EAAE,IAAG,gBAAgB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAM,EAAE,IAClG;AAAA;AAAA,EAAG,EAAE,IAAG,sBAAsB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,KAAG,KAAG,IAAE;AAAA;AAAA,EAAI,EAAE,IAAG,SAAS;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAC,EAAE;AAAA,EAAE,GAAG,UAAQ;AAAA,EAAG,IAAI,KAAG,OAAO,UAAU;AAAA,EAAe,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,SAAQ,IAAE,EAAE,IAC3L,UAAU,QAAO,KAAI;AAAA,MAAC,IAAI,IAAE,UAAU;AAAA,MAAG,SAAQ,KAAK;AAAA,QAAE,GAAG,KAAK,GAAE,CAAC,MAAI,EAAE,KAAG,EAAE;AAAA,IAAG;AAAA,IAAC,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,QAC5F;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG;AAAA,EAAE,GAAG,UAAQ;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,EAAE,gBAAgB;AAAA,MAC1G,OAAO,IAAI,GAAG,CAAC;AAAA,IAAE,GAAG,MAAK,GAAG,CAAC,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,kBAAkB;AAAA,EAAE,IAAI,KAAG;AAAA,IAAC;AAAA,IAAU;AAAA,IAAU;AAAA,IAAQ;AAAA,IAC7F;AAAA,IAAS;AAAA,EAAO;AAAA,EAAE,GAAG,UAAU,aAAW,QAAQ,GAAE;AAAA,IAAC,IAAI,IAAE,GAAG,OAAO,KAAK,gBAAe,IAAI;AAAA,IAAE,OAAO,KACtG,gBAAc,EAAE,QAAQ,SAAS,IAAE,KAAG,EAAE,KAAK,SAAS,GAAE,EAAE,WAAS,IAAE,MAAI,EAAE,IAAI,QAAQ,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,MACtG;AAAA,MAAE,OAAO,MAAI,aAAW,KAAK,iBAAe,KAAG,IAAE,KAAK,eAAa,MAAK,QAAQ,CAAC,EAAE,QAAQ,UAC3F,EAAE,IAAG,IAAE,MAAI;AAAA,OAAG,IAAI,EAAE,KAAK,GAAG;AAAA;AAAA,EAAG,IAAI,KAAG,EAAC,OAAM,KAAI,QAAO,KAAI,MAAK,KAAI,OAAM,KAAI,SAAQ,KAAI,SAAQ,IACjG,GAAE,KAAG,CAAC,SAAQ,UAAS,MAAM,GAAE,KAAG,CAAC,SAAQ,WAAU,SAAS;AAAA,EAAE,GAAG,UAAU,cAAY,GAAG,UAC9F,QAAM,QAAQ,GAAE;AAAA,IAAC,IAAI,IAAE,GAAG,IAAI,GAAE,IAAI,EAAE,KAAK,EAAE,GAAE,IAAE,GAAG,IAAI,GAAE,IAAI,EAAE,KAAK,EAAE;AAAA,IAAE,OAAM,MAAI,IAAE,MAAI;AAAA,IAAE,SAAS,CAAC,CAAC,GAAE;AAAA,MACxG,IAAI,IAAE,KAAK,MAAI;AAAA,MAAE,OAAO,MAAI,aAAW,KAAK,iBAAe,KAAG,IAAE,KAAK,eAAa,MAAK,QAAQ,CAAC,EAAE,QAClG,OAAM,EAAE,IAAG,IAAE,GAAG;AAAA;AAAA;AAAA,EAAK,IAAI,KAAG,eAAc,KAAG,KAAG,cAAa,KAAG,KAAG,aAAY,KAAG,KAAG,aAAY,KAAG,oDAClD,KAAG,IAAI,OAAO,CAAC,IAAG,IAAG,IAAG,EAAE,EAAE,IAAI,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAM,MACjG,IAAE;AAAA,GAAK,EAAE,KAAK,MAAM,CAAC,GAAE,KAAG,EAAC,OAAM,GAAE,QAAO,GAAE,MAAK,GAAE,OAAM,GAAE,SAAQ,IAAG,SAAQ,IAAG,cAAa,GAAE,GACnG,KAAG,CAAC,SAAQ,WAAU,WAAU,cAAc;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,IAAE,SAAS,MAAM,EAAE,MAAM;AAAA,IAAE,OAAO,SACvG,GAAE,EAAE,IAAE;AAAA;AAAA,EAAI,EAAE,IAAG,mBAAmB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,CAAC;AAAA,MAAE,OAAM,CAAC;AAAA,IAAE,IAAI,IAAE,GAAG,KAAK,CAAC,GAAE,IAAE,EAAE,OAAK;AAAA,IAAI,OAAO,OACvG,KAAK,EAAE,EAAE,OAAO,QAAQ,CAAC,GAAE,GAAE;AAAA,MAAC,IAAI,IAAE,GAAG,IAAG,IAAE,EAAE;AAAA,MAAG,OAAM,CAAC,MAAI,IAAE,MAAI,iBAAe,GAAG,CAAC,IAAE,SAAS,GAAE,EAAE,GACpG,CAAC,OAAK,KAAG,CAAC,GAAG,QAAQ,CAAC,MAAI,KAAG,KAAI,EAAE,KAAG,IAAG;AAAA,OAAG,CAAC,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,GAAG,UAAQ,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,OAAO,KAAK,CAAC;AAAA,MAAE,OAAO,IAAI,EAAE,EAAE,OAC9J,CAAC,GAAE,KAAK;AAAA,IAAE,SAAQ,IAAE,IAAG,IAAE,EAAE,IAAE,EAAE;AAAA,MAAQ,IAAG,EAAE,OAAK;AAAA,QAAK,KAAG,EAAE,IAAG,EAAE;AAAA,MAAO,SAAG,WAAW,KAAK,EAAE,OAAO,IACnG,GAAE,CAAC,CAAC;AAAA,QAAE,KAAG,OAAO,aAAa,SAAS,EAAE,OAAO,IAAE,GAAE,CAAC,GAAE,CAAC,CAAC,GAAE,KAAG;AAAA,MAAM;AAAA,QAAC,SAAQ,IAAE,EAAE,IAAE,IAAE,EAAE,UAAQ,EAAE,IAAE,OAClG;AAAA,UAAM;AAAA,QAAI,SAAQ,IAAE,EAAE,IAAE,KAAK,MAAM,IAAE,CAAC,GAAE,EAAE;AAAA,UAAE,KAAG;AAAA,QAAK,KAAG,KAAK,MAAM,IAAE,CAAC,IAAE;AAAA;AAAA,IAAE,OAAO,IAAI,EAAE,GAAE,QAAQ;AAAA,KAAG,YACxF;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAC,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,EAAE,QAAQ,CAAC,GAAE;AAAA,MACrH,OAAO,MAAI,OAAK,IAAE,EAAE,CAAC;AAAA,OAAG,aAAa;AAAA;AAAA,EAAE,EAAE,IAAG,WAAW;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,MAAI,OAAK,IAAE,MAAI,UAC9F,MAAI,OAAK,MAAI,UAAQ,MAAI,OAAK,MAAI,SAAO,MAAI,QAAM,MAAI;AAAA;AAAA,EAAI,EAAE,IAAG,WAAW;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,IACnG,GAAG,MAAM,GAAE,EAAE,IAAE;AAAA;AAAA,EAAK,EAAE,IAAG,gBAAgB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,SAAS,GAAE,EAAE;AAAA;AAAA,EAAE,EAAE,IAAG,iBACnF;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,IAAE,GAAG,MAAM,GAAE,GAAG,EAAE,CAAC,IAAE;AAAA;AAAA,EAAK,EAAE,IAAG,mBAAmB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,IACpG,GAAG,MAAM,GAAE,GAAG,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,GAAG,CAAC,EAAE,KAAK;AAAA,KAAE,CAAC,IAAE;AAAA;AAAA,EAAK,EAAE,IAAG,sBAAsB;AAAA,EAAE,IAAI,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IACvG,IAAG,CAAC;AAAA,MAAE,OAAO;AAAA,IAAK,IAAI,IAAE,GAAG,OAAO,GAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,MAAI,SAAO,IAAE,GAAG,CAAC,IAAG;AAAA,KAAE;AAAA,IAAE,OAAO,EAAE,MAAM;AAAA,KAAG,iBACnF,GAAE,MAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,CAAC;AAAA,MAAE,OAAO;AAAA,IAAK,IAAI,IAAE,GAAG,OAAO,GAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,MAAI,SAAO,IACnG,WAAW,CAAC,IAAG;AAAA,KAAE;AAAA,IAAE,OAAO,EAAE,MAAM;AAAA,KAAG,iBAAiB,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,CAAC;AAAA,MAAE,OAAO;AAAA,IAAK,IAAI,IAAE,GACjG,OAAO,CAAC;AAAA,IAAE,OAAO,EAAE,MAAM;AAAA,KAAG,kBAAkB,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,CAAC;AAAA,MAAE,OAAO;AAAA,IAAK,IAAI,IAAE,GAAG,OAAO,GACnG,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,MAAI,SAAO,IAAE,GAAG,CAAC,IAAG;AAAA,KAAE;AAAA,IAAE,OAAO,EAAE,MAAM;AAAA,KAAG,gBAAgB,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,CAAC;AAAA,MACpG,OAAO;AAAA,IAAK,IAAI,IAAE,GAAG,OAAO,GAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,MAAI,SAAO,IAAE,GAAG,CAAC,IAAG;AAAA,KAAE;AAAA,IAAE,OAAO,EAAE,MAAM;AAAA,KAAG,oBAChF,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,IAAE,GAAG,MAAM,GAAE,GAAG,EAAE,CAAC,IAAE;AAAA,KAAM,iBAAiB,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IACnG,OAAO,SAAS,GAAE,EAAE;AAAA,KAAG,cAAc,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,OAAO,CAAC;AAAA,IAAE,OAAM,QAAQ,KAAK,CAAC,IAAE,IAAE;AAAA,KAAG,iBACnF,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,IAAE,GAAG,MAAM,GAAE,GAAG,KAAK,KAAK,CAAC,IAAE;AAAA,KAAM,gBAAgB,GAAE,KAAG,EAClG,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,EAAE,OAAK,MAAI,QAAM,IAAE,EAAE,UAAU,GAAE,EAAE,SAAO,CAAC,EAAE,MAAM,GAAG,GAAE,EAAC,GAAE,WAAW,EAAE,EAAE,GAAE,GAAE,WACjG,EAAE,EAAE,EAAC;AAAA,KAAI,YAAY,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,EAAE,OAAK,OAAK,EAAE,OAAK;AAAA,MAAI,OAAO;AAAA,IAAK,SAAQ,IAAE,KAAI,IAAE,IAAG,IAAE,OACnG,IAAE,EAAE,IAAE,EAAE,SAAO,GAAE,KAAI;AAAA,MAAC,IAAG,MAAI,KAAG,EAAE,KAAI,EAAE,OAAK,KAAI;AAAA,QAAC,IAAE;AAAA,QAAG;AAAA,MAAQ,EAAM,SAAG,CAAC;AAAA,QAAE;AAAA,MAAS,EAAE,OAAK,QAAM,KACjG,EAAE;AAAA,IAAG;AAAA,IAAC,IAAI,IAAE,GAAG,CAAC;AAAA,IAAE,OAAO,EAAE,SAAO,WAAW,CAAC,GAAE;AAAA,KAAG,aAAa,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,EAAE,IAAG,EAAE,GAAE,EAAE,IAAG,EAAE,GACnG,EAAE,IAAG,EAAE,GAAE,EAAE,IAAG,EAAE,GAAE,EAAE,KAAI,UAAU,GAAE,EAAE,KAAI,UAAU,GAAE,EAAE,IAAG,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,KAClG,EAAE,GAAE,EAAE,KAAI,EAAE,GAAE,EAAE,KAAI,EAAE,GAAE,EAAE,MAAI,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAClG,EAAE,MAAK,GAAE,GAAE,EAAE,MAAK,GAAE,GAAE,EAAE,MAAK,GAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EACnG,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,IAAG,EAAE,GAAE,EAAE,KAAI,KAAK,MAAM,KAAK,IAAI,CAAC,GAAE,EAAE,MAAK,KAClG,MAAM,KAAK,IAAI,CAAC,GAAE,EAAE,KAAI,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,KAAI,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE;AAAA,KAAG,MAAM;AAAA,EACpG,GAAG,UAAQ,EAAC,MAAK,GAAE;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,IAAE;AAAA,EAAI,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE,YAAY,CAAC,GAAE,IAAE,EAAE,aAC/G,CAAC,GAAE,IAAE;AAAA,IAAG,IAAE,MAAI,IAAE,CAAC,KAAG,MAAI,IAAG,IAAE,CAAC,IAAE,MAAI,GAAE,IAAE;AAAA,IAAK,IAAI,IAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAE;AAAA,MAAC,IAAG,IAAE,IAAE,GAAE,IAAE,IAAE,MAAI,GAAE,IAAE,aAAW,IACnG,GAAE,IAAE,IAAE,MAAI,GAAE,IAAE,MAAI,IAAE,IAAE,IAAG,MAAI,KAAG,MAAI;AAAA,QAAE,OAAO,IAAE,IAAE;AAAA,MAAE,KAAI,IAAE,IAAG,IAAE,IAAE,EAAE,QAAO,IAAE,EAAE,IAAE,GAAE;AAAA,QAAI,KAAG;AAAA,MAAI,IAAE,IAAE,IAAE;AAAA,IAAC;AAAA,IACnG;AAAA,MAAC,IAAG,IAAE,IAAE,GAAE,IAAE,IAAE,MAAI,GAAE,IAAE,aAAW,IAAE,GAAE,IAAE,IAAE,MAAI,GAAE,IAAE,MAAI,IAAE,IAAE,IAAG,MAAI,KAAG,MAAI;AAAA,QAAE,OAAO,IAAE,IAAE;AAAA,MAAE,KAAI,IAAE,IAAG,IAAE,IAAE,EACnG,QAAO,IAAE,EAAE,IAAE,GAAE;AAAA,QAAI,KAAG;AAAA,MAAI,IAAE,IAAE,IAAE;AAAA,IAAC;AAAA,IAAC;AAAA,MAAC,IAAG,IAAE,IAAE,GAAE,IAAE,IAAE,MAAI,GAAE,IAAE,aAAW,IAAE,GAAE,IAAE,IAAE,MAAI,GAAE,IAAE,MAAI,IAAE,IAAE,IAAG,MAAI,KAClG,MAAI;AAAA,QAAE,OAAO,IAAE,IAAE;AAAA,MAAE,KAAI,IAAE,IAAG,IAAE,IAAE,EAAE,QAAO,IAAE,EAAE,IAAE,GAAE;AAAA,QAAI,KAAG;AAAA,MAAI,IAAE,IAAE,IAAE;AAAA,IAAC;AAAA,IAAC,OAAO,IAAE,IAAE,GAAE,IAAE,aAAW,IAAE,GAAE,IAClG,KAAG,IAAE,GAAE,IAAE,IAAE;AAAA;AAAA,EAAE,EAAE,IAAG,UAAU;AAAA,EAAE,GAAG,UAAQ;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAC,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,GAAE,IAAE,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAE,KAAG,GAAE,IAAE,KAAG,OAAG,IAAE,KAAG,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,OAAO,IACpJ,KAAK,IAAI,GAAE,CAAC,IAAE;AAAA;AAAA,IAAG,IAAI,IAAE,KAAG,GAAE,IAAE,EAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,IAAE,CAAC,IAAE,MAAI;AAAA,OAAG,KAAK,GAAE,IAAE,KAAI,IAAE,IAAE,IAAE;AAAA,IAAE,IAAE,MAAI,IAAE,OAAK,IAAE,IACnG,KAAI,IAAE,IAAG,MAAI,IAAE,KAAG,IAAE;AAAA,IAAG,IAAI,IAAE;AAAA,IAAE,IAAE,IAAE,KAAG,MAAI,IAAE,EAAE,GAAE,EAAE,EAAE,EAAE,IAAE,GAAE,CAAC;AAAA,IAAG,SAAQ,IAAE,IAAE,KAAG,GAAE,IAAE,IAAE,EAAE,IAAE,GAAE;AAAA,MAAI,IAAE,EAAE,GAAE,EACnG,EAAE,EAAE,GAAE,CAAC;AAAA,IAAE,IAAI,KAAG,IAAE,KAAG;AAAA,IAAE,OAAO,IAAE,MAAI,IAAE,EAAE,GAAE,EAAE,EAAE,EAAE,KAAG,IAAE,GAAE,CAAC,IAAG;AAAA,KAAG,WAAW,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,KACtG,IAAI,GAAE,IAAE,CAAC,IAAE,GAAE,IAAE,EAAE,GAAE,CAAC,GAAE,IAAE,EAAE,GAAE,GAAE,CAAC;AAAA,IAAE,IAAG,MAAI;AAAA,MAAE,OAAO;AAAA,IAAE,IAAI,IAAE,GAAE,IAAE,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,MAAI,MAAI,IAAE;AAAA,MAAG,SAAQ,IAAE,EAAE,KACxG,GAAE;AAAA,QAAI,KAAG,IAAG,IAAE,KAAG,IAAE,KAAG,MAAI,KAAG;AAAA,MAAG,OAAO;AAAA,OAAG,oBAAoB,GAAE,IAAE,EAAE,GAAE,GAAE,IAAE,GAAE,OAAG,CAAC;AAAA,IAAE,OAAO,KAAG,KAAK,IACjG,GAAE,IAAE,CAAC,IAAE,IAAE,MAAI,IAAE,MAAI,IAAE,IAAE,IAAE,KAAG,IAAE,OAAK,MAAI,IAAE,IAAE,MAAI,KAAK,IAAI,GAAE,IAAE,CAAC,IAAE;AAAA,KAAG,oBAAoB,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IACxG,OAAO,EAAE,GAAE,CAAC,KAAG,IAAE,MAAI,EAAE,GAAE,IAAG,GAAE,IAAE,IAAE,KAAG,EAAE,GAAE,IAAG,CAAC;AAAA,KAAG,YAAY,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,EAAE,GAAE,CAAC,KAAG,IAAE,MAAI,EACpG,GAAE,IAAG,GAAE,IAAE,IAAE,KAAG,EAAE,GAAE,IAAG,CAAC;AAAA,KAAG,YAAY,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,GAAE,IAAG,CAAC;AAAA,KAAG,cAAc,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAC3G,OAAO,GAAG,GAAE,IAAG,EAAE;AAAA,KAAG,cAAc,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE,GAAE,IAAG,EAAE;AAAA,IAAE,IAAG,KAAG;AAAA,MAAM,OAAO;AAAA,IAAI,SAAQ,IAAE,KACvG,IAAI,KAAI,EAAE,GAAE,IAAG,EAAE,CAAC,GAAE,IAAE,GAAE,IAAE,CAAC,GAAE,IAAE,EAAE,GAAE,EAAE,GAAE,IAAE,EAAE,IAAE,GAAE;AAAA,MAAI,KAAG,EAAE,GAAE,IAAG,KAAG,KAAG,CAAC,IAAE,GAAE,KAAG;AAAA,IAAI,IAAI,IAAE,KAAK,IAAI,IAAG,EAAE,GACnG,IAAG,EAAE,CAAC;AAAA,IAAE,QAAO,MAAI,IAAE,IAAE,MAAI,KAAK,MAAM,IAAE,CAAC,IAAE;AAAA,KAAG,cAAc,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE,GAAE,CAAC,GAAE,IAAE,EAAE,GAClG,IAAG,CAAC,GAAE,IAAE,IAAI,MAAM,MAAI,IAAE,IAAE,MAAI,IAAE,OAAI,YAAS;AAAA,IAAE,OAAO,KAAG,EAAE,QAAQ,EAAE,QAAQ,IAAE,EAAE,kBAAkB,IACnG,KAAG,GAAE,EAAE,OAAK,IAAE,MAAI,EAAE,kBAAgB,QAAQ,GAAE;AAAA,MAAC,OAAO,KAAK;AAAA,OAAM,EAAE,kBAAgB,QAAQ,CAAC,GAAE;AAAA,MAAC,KAC/F,OAAK;AAAA,OAAG,EAAE,qBAAmB,QAAQ,GAAE;AAAA,MAAC,OAAO,KAAK;AAAA,OAAM;AAAA,KAAG,WAAW,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,SAAQ,IAAE,EACrG,GAAE,EAAE,GAAE,IAAE,EAAE,GAAE,IAAG,EAAE,GAAE,IAAE,EAAE,GAAE,IAAG,EAAE,GAAE,IAAE,IAAG,IAAE,CAAC,GAAE,IAAE,EAAE,IAAE,GAAE;AAAA,MAAI,EAAE,KAAG,EAAE,GAAE,IAAG,CAAC,GAAE,KAAG,IAAG,KAAG;AAAA,IAAG,IAAI,IAAE,EAAE,QAAQ,CAAC,GAAE;AAAA,MACpG,IAAI,IAAE,EAAE,GAAE,IAAG,CAAC;AAAA,MAAE,IAAG,KAAG,IAAG,KAAG;AAAA,QAAW,OAAO;AAAA,MAAK,IAAI;AAAA,MAAE,IAAG,KAAG,MAAI,KAAG;AAAA,QAAG,OAAO,IAAE,EAAE,GAAE,IAAE,GAAE,CAAC,GAAE,KAAG,IAAE,GAClG;AAAA,MAAE,IAAG,KAAG;AAAA,QAAG,OAAO,IAAE,EAAE,SAAS,KAAK,UAAS,KAAG,IAAG,KAAG,KAAG,MAAI,CAAC,GAAE;AAAA,MAAE,QAAQ,IAAI,yCAC7D,CAAC;AAAA,OAAG,cAAc,GAAE,IAAE,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,MAAC,IAAI,IAAE,CAAC,GAAE;AAAA,MAAE,IAAG,EAAE,SAAO,GAAE;AAAA,QAAC,IAAI,IAAE,EAAE,MAAM;AAAA,QAAE,KAAI,IACrG,EAAE,IAAE,GAAE;AAAA,UAAI,EAAE,KAAG,EAAE,GAAE,CAAC;AAAA,QAAE,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAM;AAAA,aAAI,IAAE,EAAE,IAAE,EAAE,IAAG;AAAA,UAAI,EAAE,KAAG,EAAE,CAAC;AAAA,MAAE,OAAO;AAAA,OAAG,OAAO;AAAA,IAAE,OAAO,EAAE,GAAE,CAAC;AAAA,KACpG,YAAY,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,EAAE,SAAS,MAAM;AAAA,KAAG,WAAW,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,MAAI,OACnG,OAAK,EAAE,GAAE,CAAC,IAAE;AAAA,KAAG,WAAW,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,EAAE,IAAG,EAAE,GAAE,EAAE,IAAG,EAAE,GAAE,EAAE,IAAG,EAAE,GAAE,EAAE,IAAG,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,KAAI,EAAE,GACpG,EAAE,KAAI,EAAE,GAAE,EAAE,IAAG,EAAE,GAAE,EAAE,MAAK,GAAG,KAAK,MAAK,KAAE,CAAC,GAAE,EAAE,MAAK,GAAG,KAAK,MAAK,IAAE,CAAC,GAAE,EAAE,MAAI,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GACnG,EAAE,MAAK,EAAE,GAAE,EAAE,MAAK,EAAE,GAAE,EAAE,IAAG,EAAE;AAAA,KAAG,MAAM;AAAA,EAAE,GAAG,UAAQ,EAAC,MAAK,GAAE;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAC,EAAE;AAAA,EAAE,GAAG,UAAQ;AAAA,IAAC,MAAK;AAAA,IAAG,OAAM;AAAA,IAAG,MAAK;AAAA,IAAG,MAAK;AAAA,IAAG,MAAK;AAAA,IAAG,MAAK;AAAA,IAAG,SAAQ;AAAA,IAAG,MAAK;AAAA,IACnK,KAAI;AAAA,IAAG,KAAI;AAAA,IAAG,KAAI;AAAA,IAAG,KAAI;AAAA,IAAG,MAAK;AAAA,IAAI,KAAI;AAAA,IAAI,cAAa;AAAA,IAAI,MAAK;AAAA,IAAI,MAAK;AAAA,IAAI,SAAQ;AAAA,IAAI,MAAK;AAAA,IACjG,QAAO;AAAA,IAAI,QAAO;AAAA,IAAI,SAAQ;AAAA,IAAI,SAAQ;AAAA,IAAI,WAAU;AAAA,IAAI,QAAO;AAAA,IAAI,UAAS;AAAA,IAAI,OAAM;AAAA,IAAI,SAAQ;AAAA,IACtG,MAAK;AAAA,IAAI,SAAQ;AAAA,IAAK,QAAO;AAAA,IAAK,SAAQ;AAAA,IAAK,MAAK;AAAA,IAAK,MAAK;AAAA,IAAK,WAAU;AAAA,IAAK,aAAY;AAAA,IAAK,UAAS;AAAA,IAC5G,QAAO;AAAA,IAAK,KAAI;AAAA,IAAK,QAAO;AAAA,IAAK,SAAQ;AAAA,IAAK,WAAU;AAAA,IAAK,cAAa;AAAA,IAAK,SAAQ;AAAA,IAAK,aAAY;AAAA,IACxG,UAAS;AAAA,IAAK,SAAQ;AAAA,IAAK,MAAK;AAAA,IAAK,eAAc;AAAA,IAAK,QAAO;AAAA,IAAK,cAAa;AAAA,IAAK,iBAAgB;AAAA,IACtG,UAAS;AAAA,IAAK,SAAQ;AAAA,IAAK,WAAU;AAAA,IAAK,WAAU;AAAA,IAAK,eAAc;AAAA,IAAK,OAAM;AAAA,IAAK,cAAa;AAAA,IACpG,SAAQ;AAAA,EAAI;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAC,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG;AAAA,EAAE,GAAG,gBAAc;AAAA,EAAG,GAAG,gBAAc;AAAA,EAAG,GAAG,cACjH;AAAA,EAAG,GAAG,WAAS;AAAA,EAAG,IAAI,KAAG,EAAC,MAAK,CAAC,GAAE,QAAO,CAAC,EAAC;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,OAAO,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,SAAS;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAC7G,OAAO,IAAE,KAAG,QAAO,GAAG,MAAI,GAAG,GAAG,MAAI;AAAA;AAAA,EAAG,EAAE,IAAG,eAAe;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAG,eACzF,IAAE,GAAE,IAAE,SAAQ,GAAG,GAAG,KAAG;AAAA;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,EAAE,GAAG,KAAK,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,GAAG,KAAK,KAAG;AAAA,GAAE;AAAA,EAAE,GAAG,KAAK,QAAQ,CAAC,GAAE,GAAE;AAAA,IAC1G,GAAG,OAAO,KAAG;AAAA,GAAE;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,KAAK,SAAO,KAAG,IAAG,KAAK,OAAK,CAAC,GAAE,KAAK,SACtH,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,EAAE,GAAG,UAAU,eAAa,QAAQ,CAAC,GAAE;AAAA,IAAC,QAAO;AAAA,WAAO;AAAA,QAAO,OAAO,KAAK;AAAA,WAAS;AAAA,QACjG,OAAO,KAAK;AAAA;AAAA,QAAe,OAAM,CAAC;AAAA;AAAA;AAAA,EAAI,GAAG,UAAU,gBAAc,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAG,eACvF,IAAE,GAAE,IAAE,SAAQ,KAAK,aAAa,CAAC,EAAE,KAAG;AAAA;AAAA,EAAG,GAAG,UAAU,gBAAc,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,IACrG,KAAG,QAAO,KAAK,aAAa,CAAC,EAAE,MAAI,KAAK,OAAO,cAAc,GAAE,CAAC;AAAA;AAAA,EAAG,GAAG,UAAQ;AAAA,CAAG;AAAE,SAAS,EAAE,CAAC,GAAE;AAAA,EAAC,IAAI,IAAE,YAAW,IAAE,YAAW,IAAE,YAAW,IAAE,YAAW,IAAE,YAAW,IAAE,YAAW,IAAE,WACtL,IAAE,YAAW,IAAE,GAAE,IAAE,GAAE,IAAE;AAAA,IAAC;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAU;AAAA,IAAW;AAAA,IACzF;AAAA,IAAW;AAAA,IAAW;AAAA,IAAU;AAAA,IAAU;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IACjG;AAAA,IAAW;AAAA,IAAU;AAAA,IAAU;AAAA,IAAU;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAChG;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAU;AAAA,IAAU;AAAA,IAAU;AAAA,IAAU;AAAA,IAAW;AAAA,IAAW;AAAA,IAC/F;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IACnG;AAAA,IAAU;AAAA,IAAU;AAAA,IAAU;AAAA,IAAU;AAAA,IAAU;AAAA,IAAU;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAC7F;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,EAAU,GAAE,IAAE,EAAE,CAAC,GAAE,MAAI,MAAI,IAAE,KAAG,KAClG,GAAE,MAAM,GAAE,IAAE,IAAI,YAAY,EAAE,GAAE,IAAE,IAAI,WAAW,EAAE,GAAE,IAAE,EAAE,MAAI;AAAA,IAAC,SAAQ,IAAE,GAAE,IAAE,EAAE,IAAE,IAAG,KAAI,KAAG;AAAA,MAAE,EAAE,KAAG,EAAE,MACnG,KAAG,EAAE,IAAE,MAAI,KAAG,EAAE,IAAE,MAAI,IAAE,EAAE,IAAE;AAAA,IAAG,SAAQ,IAAE,GAAG,IAAE,IAAG,KAAI;AAAA,MAAC,IAAI,IAAE,EAAE,EAAE,IAAE,KAAI,CAAC,IAAE,EAAE,EAAE,IAAE,KAAI,EAAE,IAAE,EAAE,IAAE,QAAM,GAAE,KAAG,EACtG,EAAE,IAAE,IAAG,EAAE,IAAE,EAAE,EAAE,IAAE,IAAG,EAAE,IAAE,EAAE,IAAE,OAAK;AAAA,MAAG,EAAE,KAAG,EAAE,IAAE,MAAI,IAAE,EAAE,IAAE,KAAG,KAAG;AAAA,IAAC;AAAA,IAAC,IAAI,IAAE,GAAE,IAAE,GAAE,IAAE,GAAE,IAAE,GAAE,IAAE,GAAE,IAAE,GAAE,KAAG,GAAE,KAAG;AAAA,IACnG,SAAQ,IAAE,EAAE,IAAE,IAAG,KAAI;AAAA,MAAC,IAAI,IAAE,EAAE,GAAE,CAAC,IAAE,EAAE,GAAE,EAAE,IAAE,EAAE,GAAE,EAAE,GAAE,KAAG,IAAE,IAAE,CAAC,IAAE,IAAG,KAAG,KAAG,IAAE,KAAG,EAAE,KAAG,EAAE,KAAG,GAAE,KAAG,EAAE,GAAE,CAAC,IAAE,EAAE,GACnG,EAAE,IAAE,EAAE,GAAE,EAAE,GAAE,KAAG,IAAE,IAAE,IAAE,IAAE,IAAE,GAAE,KAAG,KAAG,KAAG;AAAA,MAAE,KAAG,IAAG,KAAG,GAAE,IAAE,GAAE,IAAE,IAAE,KAAG,GAAE,IAAE,GAAE,IAAE,GAAE,IAAE,GAAE,IAAE,KAAG,KAAG;AAAA,IAAC;AAAA,IAAC,IAAE,IAAE,IAAE,GAAE,IAAE,IAAE,IAAE,GAClG,IAAE,IAAE,IAAE,GAAE,IAAE,IAAE,IAAE,GAAE,IAAE,IAAE,IAAE,GAAE,IAAE,IAAE,IAAE,GAAE,IAAE,IAAE,KAAG,GAAE,IAAE,IAAE,KAAG,GAAE,IAAE;AAAA,KAAG,SAAS,GAAE,IAAE,EAAE,OAAG;AAAA,IAAC,OAAO,KAAG,aAAW,IAAE,IAAI,YAAY,EACjH,OAAO,CAAC;AAAA,IAAG,SAAQ,IAAE,EAAE,IAAE,EAAE,QAAO;AAAA,MAAI,EAAE,OAAK,EAAE,IAAG,MAAI,MAAI,EAAE;AAAA,IAAE,KAAG,EAAE;AAAA,KAAQ,KAAK,GAAE,IAAE,EAAE,MAAI;AAAA,IAAC,IAAG,EAAE,OAChG,KAAI,KAAG,MAAI,EAAE,GAAE,IAAE,IAAE,IAAG;AAAA,MAAC,MAAK,IAAE;AAAA,QAAI,EAAE,OAAK;AAAA,MAAE,EAAE;AAAA,IAAC;AAAA,IAAC,MAAK,IAAE;AAAA,MAAI,EAAE,OAAK;AAAA,IAAE,IAAI,IAAE,IAAE;AAAA,IAAE,EAAE,OAAK,IAAE,gBACtF,KAAI,EAAE,OAAK,IAAE,aAAW,KAAI,EAAE,OAAK,MAAI,IAAG,EAAE,OAAK,MAAI,KAAG,KAAI,EAAE,OAAK,MAAI,IAAE,KAAI,EAAE,OAAK,IAAE,KAAI,EAAE;AAAA,IAAE,IAAI,IAAE,IAAI,WACxG,EAAE;AAAA,IAAE,OAAO,EAAE,KAAG,MAAI,IAAG,EAAE,KAAG,MAAI,KAAG,KAAI,EAAE,KAAG,MAAI,IAAE,KAAI,EAAE,KAAG,IAAE,KAAI,EAAE,KAAG,MAAI,IAAG,EAAE,KAAG,MAAI,KAAG,KAAI,EAAE,KAAG,MAClG,IAAE,KAAI,EAAE,KAAG,IAAE,KAAI,EAAE,KAAG,MAAI,IAAG,EAAE,KAAG,MAAI,KAAG,KAAI,EAAE,MAAI,MAAI,IAAE,KAAI,EAAE,MAAI,IAAE,KAAI,EAAE,MAAI,MAAI,IAAG,EAAE,MAAI,MAAI,KAAG,KACnG,EAAE,MAAI,MAAI,IAAE,KAAI,EAAE,MAAI,IAAE,KAAI,EAAE,MAAI,MAAI,IAAG,EAAE,MAAI,MAAI,KAAG,KAAI,EAAE,MAAI,MAAI,IAAE,KAAI,EAAE,MAAI,IAAE,KAAI,EAAE,MAAI,MAAI,IAAG,EAAE,MACrG,MAAI,KAAG,KAAI,EAAE,MAAI,MAAI,IAAE,KAAI,EAAE,MAAI,IAAE,KAAI,EAAE,MAAI,MAAI,IAAG,EAAE,MAAI,MAAI,KAAG,KAAI,EAAE,MAAI,MAAI,IAAE,KAAI,EAAE,MAAI,IAAE,KAAI,EAAE,MACnG,MAAI,IAAG,EAAE,MAAI,MAAI,KAAG,KAAI,EAAE,MAAI,MAAI,IAAE,KAAI,EAAE,MAAI,IAAE,KAAI;AAAA,KAAG,QAAQ;AAAA,EAAE,OAAO,MAAS,YAAE,EAAC,KAAI,GAAE,QAAO,EAAC,KACjG,EAAE,CAAC,GAAE,EAAE;AAAA;AAAG,IAAI,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,EAAE,IAAG,QAAQ;AAAA,CAAE;AAAE,IAAI;AAAJ,IAAM;AAAN,IAAS,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,IAAE,MAAM,GAAC;AAAA,IAAC,WAAW,GAAE;AAAA,MAAC,EAAE,MAAK,eAAc,CAAC;AAAA,MAAE,EAAE,MAAK,iBAC/I,CAAC;AAAA,MAAE,EAAE,MAAK,UAAS,IAAI,WAAW,CAAC,CAAC;AAAA,MAAE,EAAE,MAAK,WAAU,IAAI,YAAY,EAAE,CAAC;AAAA,MAAE,EAAE,MAAK,UAAU;AAAA,MACpG,EAAE,MAAK,WAAW;AAAA,MAAE,KAAK,WAAS,IAAI,WAAW,KAAK,SAAQ,GAAE,EAAE,GAAE,KAAK,YAAU,IAAI,YAAY,KACnG,SAAQ,GAAE,EAAE,GAAE,KAAK,MAAM;AAAA;AAAA,WAAS,aAAa,CAAC,GAAE,IAAE,OAAG;AAAA,MAAC,OAAO,KAAK,cAAc,MAAM,EAAE,gBAC1F,CAAC,EAAE,IAAI,CAAC;AAAA;AAAA,WAAS,OAAO,CAAC,GAAE,IAAE,OAAG;AAAA,MAAC,OAAO,KAAK,cAAc,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC;AAAA;AAAA,WAAS,YAAY,CAAC,GAAE,IAAE,OAAG;AAAA,MAClH,OAAO,KAAK,cAAc,MAAM,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC;AAAA;AAAA,WAAS,IAAI,CAAC,GAAE;AAAA,MAAC,MAAQ,UAAJ,GAAiB,QAAJ,MAAE,IAC7F,GAAE,GAAE,GAAE;AAAA,MAAE,KAAI,IAAE,EAAE,IAAE,GAAE,KAAG;AAAA,QAAE,KAAI,IAAE,IAAE,GAAE,IAAE,EAAE,IAAG,IAAE,EAAE,IAAE,GAAE,KAAG;AAAA,UAAE,EAAE,IAAE,IAAE,KAAG,EAAE,OAAO,IAAE,EAAE,GAAE,OAAK,GAAE,EAAE,IAAE,IAAE,KAAG,EAAE,OACjG,IAAE,EAAE,GAAE,OAAK;AAAA,MAAE,OAAO,EAAE,KAAK,EAAE;AAAA;AAAA,WAAS,SAAS,CAAC,GAAE,GAAE;AAAA,MAAC,IAAI,IAAE,EAAE,IAAG,IAAE,EAAE,IAAG,IAAE,EAAE,IAAG,IAAE,EAAE;AAAA,MAAG,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,KACrG,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,KACpG,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KACjG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IACnG,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,KAAG,WAAS,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IACnG,CAAC,IAAE,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAChG,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,MAAI,QAAM,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAClG,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,MAAI,WAAS,GAAE,KAAG,KAAG,KAAG,MAAI,MACjG,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,CAAC,IAAE,KAAG,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,KACjG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAClG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,MAAI,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,YAAU,GAAE,KACjG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,MAAI,WAAS,GACnG,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,MAAI,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,YAC5F,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,MAAI,aAC9F,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,aAC7F,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,WAC/F,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,IAAE,CAAC,KAAG,EAAE,MAAI,aAC/F,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,SAAO,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KACpG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,MAAI,WAAS,GAAE,KAAG,KACjG,KAAG,MAAI,KAAG,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KAClG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,KACjG,MAAI,KAAG,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,MAAI,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,KAAG,MACjG,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,WAAS,GAAE,KAAG,KAAG,KAAG,MAAI,KACjG,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,MAAI,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAClG,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,MAAI,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,IAAE,IAAE,KAAG,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,KAAG,IAAE,GAClG,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAChG,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,WAAS,GAAE,KAAG,KAAG,KAAG,MACjG,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,MAAI,aAAW,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KACnG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,MAAI,UAAQ,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,aAAW,GAAE,KAAG,KAClG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,MAAI,WAAS,GAAE,KACjG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,aAAW,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,MAAI,aAC5F,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,IAAE,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,MAAI,aAC9F,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,YAAU,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,MAAI,KAAG,IAAE,CAAC,MAAI,EAAE,KAAG,YAC9F,GAAE,KAAG,KAAG,KAAG,MAAI,MAAI,IAAE,GAAE,EAAE,KAAG,IAAE,EAAE,KAAG,GAAE,EAAE,KAAG,IAAE,EAAE,KAAG,GAAE,EAAE,KAAG,IAAE,EAAE,KAAG,GAAE,EAAE,KAAG,IAAE,EAAE,KAAG;AAAA;AAAA,IAAE,KAAK,GAAE;AAAA,MAAC,OAAO,KAAK,cACnG,GAAE,KAAK,gBAAc,GAAE,KAAK,OAAO,IAAI,GAAE,aAAa,GAAE;AAAA;AAAA,IAAK,SAAS,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,UAAS,IAAE,KAChG,WAAU,IAAE,KAAK,eAAc,GAAE;AAAA,MAAE,KAAI,IAAE,EAAE,IAAE,EAAE,QAAO,KAAG,GAAE;AAAA,QAAC,IAAG,IAAE,EAAE,WAAW,CAAC,GAAE,IAAE;AAAA,UAAI,EAAE,OAAK;AAAA,QAAO,SAAG,IACxG;AAAA,UAAK,EAAE,QAAM,MAAI,KAAG,KAAI,EAAE,OAAK,IAAE,KAAG;AAAA,QAAS,SAAG,IAAE,SAAO,IAAE;AAAA,UAAM,EAAE,QAAM,MAAI,MAAI,KAAI,EAAE,OAAK,MAAI,IAAE,KAClG,KAAI,EAAE,OAAK,IAAE,KAAG;AAAA,QAAQ;AAAA,UAAC,IAAG,KAAG,IAAE,SAAO,QAAM,EAAE,WAAW,EAAE,CAAC,IAAE,SAAO,OAAM,IAAE;AAAA,YAAQ,MAAM,IAAI,MACjG,sDAAsD;AAAA,UAAE,EAAE,QAAM,MAAI,MAAI,KAAI,EAAE,OAAK,MAAI,KAAG,KAAG,KAAI,EAAE,OACnG,MAAI,IAAE,KAAG,KAAI,EAAE,OAAK,IAAE,KAAG;AAAA;AAAA,QAAI,KAAG,OAAK,KAAK,eAAa,IAAG,GAAE,UAAU,KAAK,QAAO,CAAC,GAAE,KAAG,IAAG,EAAE,KAAG,EAAE;AAAA,MAAI;AAAA,MACtG,OAAO,KAAK,gBAAc,GAAE;AAAA;AAAA,IAAK,cAAc,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,UAAS,IAAE,KAAK,WAAU,IAAE,KAAK,eAC/F,GAAE,IAAE;AAAA,MAAE,UAAO;AAAA,QAAC,KAAI,IAAE,KAAK,IAAI,EAAE,SAAO,GAAE,KAAG,CAAC,EAAE;AAAA,UAAK,EAAE,OAAK,EAAE,WAAW,GAAG;AAAA,QAAE,IAAG,IAAE;AAAA,UAAG;AAAA,QAAM,KAAK,eAC/F,IAAG,GAAE,UAAU,KAAK,QAAO,CAAC,GAAE,IAAE;AAAA,MAAC;AAAA,MAAC,OAAO,KAAK,gBAAc,GAAE;AAAA;AAAA,IAAK,eAAe,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,UACjG,IAAE,KAAK,WAAU,IAAE,KAAK,eAAc,GAAE,IAAE;AAAA,MAAE,UAAO;AAAA,QAAC,KAAI,IAAE,KAAK,IAAI,EAAE,SAAO,GAAE,KAAG,CAAC,EAAE;AAAA,UAAK,EAAE,OAAK,EAAE;AAAA,QAClG,IAAG,IAAE;AAAA,UAAG;AAAA,QAAM,KAAK,eAAa,IAAG,GAAE,UAAU,KAAK,QAAO,CAAC,GAAE,IAAE;AAAA,MAAC;AAAA,MAAC,OAAO,KAAK,gBAAc,GAAE;AAAA;AAAA,IAAK,QAAQ,GAAE;AAAA,MAC7G,IAAI,IAAE,KAAK;AAAA,MAAO,OAAM,EAAC,QAAO,OAAO,aAAa,MAAM,MAAK,MAAM,KAAK,KAAK,QAAQ,CAAC,GAAE,QAAO,KACjG,eAAc,QAAO,KAAK,aAAY,OAAM,CAAC,EAAE,IAAG,EAAE,IAAG,EAAE,IAAG,EAAE,EAAE,EAAC;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,MAAQ,QAAJ,GAAe,OAAJ,MAAE,GAChG,IAAE,KAAK,QAAO;AAAA,MAAE,KAAI,KAAK,cAAY,EAAE,QAAO,KAAK,gBAAc,EAAE,QAAO,EAAE,KAAG,EAAE,IAAG,EAAE,KAAG,EAAE,IAAG,EAAE,KAAG,EAAE,IACrG,EAAE,KAAG,EAAE,IAAG,IAAE,EAAE,IAAE,EAAE,QAAO,KAAG;AAAA,QAAE,KAAK,SAAS,KAAG,EAAE,WAAW,CAAC;AAAA;AAAA,IAAE,GAAG,CAAC,IAAE,OAAG;AAAA,MAAC,IAAI,IAAE,KAAK,eAAc,IAAE,KACpG,UAAS,IAAE,KAAK,WAAU,KAAG,KAAG,KAAG;AAAA,MAAE,KAAK,eAAa;AAAA,MAAE,IAAI,IAAE,KAAK,cAAY;AAAA,MAAE,IAAG,EAAE,KAAG,KAAI,EAAE,IAAE,KAClG,EAAE,IAAE,KAAG,EAAE,IAAE,KAAG,GAAE,EAAE,IAAI,GAAE,iBAAiB,SAAS,CAAC,GAAE,CAAC,GAAE,IAAE,OAAK,GAAE,UAAU,KAAK,QAAO,CAAC,GAAE,EAAE,IAAI,GAAE,gBAAgB,IAClH,KAAG;AAAA,QAAW,EAAE,MAAI;AAAA,MAAM;AAAA,QAAC,IAAI,IAAE,EAAE,SAAS,EAAE,EAAE,MAAM,gBAAgB;AAAA,QAAE,IAAG,MAAI;AAAA,UAAK;AAAA,QAAO,IAAI,IAAE,SACjG,EAAE,IAAG,EAAE,GAAE,IAAE,SAAS,EAAE,IAAG,EAAE,KAAG;AAAA,QAAE,EAAE,MAAI,GAAE,EAAE,MAAI;AAAA;AAAA,MAAE,OAAO,GAAE,UAAU,KAAK,QAAO,CAAC,GAAE,IAAE,KAAK,SAAO,GAAE,KAClG,KAAK,MAAM;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,GAAE,KAAK,GAAE,EAAE,GAAE,iBAAgB,IAAI,WAAW,CAAC,YAAW,YAAW,aAAY,SAAS,CAAC,CAAC,GAC3G,EAAE,GAAE,oBAAmB,IAAI,WAAW,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,CAAC,CAAC,GAAE,EAAE,GAAE,YAAW,kBAClF,GAAE,EAAE,GAAE,UAAS,CAAC,CAAC,GAAE,EAAE,GAAE,iBAAgB,IAAI,CAAC;AAAA,EAAE,KAAG;AAAA,CAAE;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,YAAW,MAAI,IAAG,YAAW,MAAI,IAAG,aAAY,MAAI,GAAE,CAAC;AAAE,SAAS,EAAE,CAAC,GAAE;AAAA,EAAC,OAAO,OAC5J,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAAA;AAAE,SAAS,EAAE,CAAC,GAAE;AAAA,EAAC,IAAG,MAAI;AAAA,IAAS,OAAM,EAAC,QAAO,EAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAM,EAAC,QAAO,EACrG,QAAQ,GAAE;AAAA,QAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA,SAAG,QAAQ,EAAC;AAAA,OAAG,QAAQ,EAAC;AAAA,EAAE,IAAG,MAAI;AAAA,IAAM,OAAM,EAAC,QAAO,EAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAM;AAAA,QACvG,QAAO,EAAE,QAAQ,GAAE;AAAA,UAAC,OAAO,OAAO,KAAG,WAAS,GAAG,QAAQ,CAAC,IAAE,GAAG,cAAc,CAAC;AAAA,WAAG,QAAQ;AAAA,MAAC;AAAA,OAAG,QAAQ,EAAC;AAAA,EACtG,MAAM,IAAI,MAAM,cAAc,kBAAkB;AAAA;AAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,EAAC,IAAG,MAAI;AAAA,IAAS,MAAM,IAAI,MAAM,yCAC3D,KAAK;AAAA,EAAE,OAAM,EAAC,QAAO,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAM,EAAC,QAAO,EAAE,QAAQ,GAAE;AAAA,MACrG,OAAO,KAAG,aAAW,IAAE,IAAI,YAAY,EAAE,OAAO,CAAC,IAAG,OAAO,KAAG,aAAW,IAAE,IAAI,YAAY,EAAE,OAC7F,CAAC;AAAA,MAAG,IAAI,IAAE,EAAE;AAAA,MAAO,IAAG,IAAE;AAAA,QAAG,IAAE,GAAG,CAAC;AAAA,MAAO,SAAG,IAAE,IAAG;AAAA,QAAC,IAAI,IAAE,IAAI,WAAW,EAAE;AAAA,QAAE,EAAE,IAAI,CAAC,GAAE,IAAE;AAAA,MAAC;AAAA,MAAC,IAAI,IAAE,IAAI,WACjG,EAAE,GAAE,IAAE,IAAI,WAAW,EAAE;AAAA,MAAE,SAAQ,IAAE,EAAE,IAAE,IAAG;AAAA,QAAI,EAAE,KAAG,KAAG,EAAE,IAAG,EAAE,KAAG,KAAG,EAAE;AAAA,MAAG,IAAI,IAAE,IAAI,WAAW,EAAE,SAC/F,EAAE;AAAA,MAAE,EAAE,IAAI,GAAE,CAAC,GAAE,EAAE,IAAI,GAAE,EAAE;AAAA,MAAE,IAAI,IAAE,IAAI,WAAW,EAAE;AAAA,MAAE,OAAO,EAAE,IAAI,GAAE,CAAC,GAAE,EAAE,IAAI,GAAG,CAAC,GAAE,EAAE,GAAE,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA,OAClG,QAAQ,EAAC;AAAA,KAAG,QAAQ,EAAC;AAAA;AAAE,IAAI,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,GAAG;AAAA,EAAE,GAAG;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EACrG,EAAE,IAAG,YAAY;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,GAAG,UAAQ;AAAA,IAAC,MAAK;AAAA,IAAY,MAAK,EAAE,aAAW,UAAQ,EAAE,IAAI,WACtH,EAAE,IAAI;AAAA,IAAK,UAAc;AAAA,IAAE,UAAS;AAAA,IAAK,kBAAsB;AAAA,IAAE,MAAK;AAAA,IAAK,MAAK;AAAA,IAAE,QAAO;AAAA,IAAG,KAAI;AAAA,IAAG,mBAAkB;AAAA,IACrH,iBAAgB;AAAA,IAAG,KAAI;AAAA,IAAG,kBAAsB;AAAA,IAAE,2BAA+B;AAAA,IAAE,SAAa;AAAA,IAAE,sBAAqB;AAAA,IACvH,mBAAkB;AAAA,IAAG,cAAa;AAAA,IAAG,qCAAoC;AAAA,IAAG,eAAc;AAAA,IAAG,iBAAgB;AAAA,IAC7G,YAAW;AAAA,IAAE,iBAAgB;AAAA,EAAC;AAAA,EAAE,IAAI,KAAG,GAAG,GAAE,KAAG,GAAG,cAAc,IAAG,MAAM,GAAE,KAAG,GAAG,cAAc,MAC/F,MAAM;AAAA,EAAE,GAAG,QAAQ,iBAAiB,aAAY,QAAQ,CAAC,GAAE;AAAA,IAAC,GAAG,cAAc,IAAG,QAAO,IAAE,GAAG,cAC5F,IAAG,MAAM,IAAE,EAAE,GAAE,GAAG,cAAc,MAAK,QAAO,IAAE,GAAG,cAAc,MAAK,MAAM,IAAE,EAAE;AAAA,GAAE;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,KAAG,GAAG;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE,QAAQ,OACnL,MAAM,EAAE,QAAQ,MAAK,MAAK;AAAA,IAAE,OAAM,MAAI,IAAE;AAAA;AAAA,EAAI,EAAE,IAAG,eAAe;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,SAAQ,IAAE,KAAI,IAAE,EAAE,IACnG,EAAE,QAAO;AAAA,MAAI,IAAE,MAAI,IAAE,IAAE,MAAK,EAAE,OAAK,QAAM,OAAO,EAAE,KAAG,MAAI,IAAE,IAAE,SAAO,MAAM,QAAQ,EAAE,EAAE,IAAE,IAAE,IAAE,GAAG,EAAE,EAAE,IACnG,EAAE,cAAa,IAAE,KAAG,UAAQ,EAAE,GAAG,SAAS,KAAK,IAAE,KAAG,GAAG,GAAG,EAAE,EAAE,CAAC;AAAA,IAAE,OAAO,IAAE,IAAE,KAAI;AAAA;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EACpG,IAAI,KAAG,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG,KAAG;AAAA,MAAK,OAAO;AAAA,IAAK,IAAG,aAAa;AAAA,MAAE,OAAO;AAAA,IAAE,IAAG,YAAY,OAAO,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,EACzG,KAAK,EAAE,QAAO,EAAE,YAAW,EAAE,UAAU;AAAA,MAAE,OAAO,EAAE,WAAS,EAAE,aAAW,IAAE,EAAE,MAAM,EAAE,YAAW,EAAE,aACjG,EAAE,UAAU;AAAA,IAAC;AAAA,IAAC,OAAO,aAAa,OAAK,GAAG,uBAAqB,GAAG,CAAC,IAAE,GAAG,CAAC,IAAE,MAAM,QAAQ,CAAC,IAAE,GAAG,CAAC,IAAE,OAAO,KACzG,WAAS,GAAG,GAAE,CAAC,IAAE,EAAE,SAAS;AAAA,KAAG,cAAc;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG,KAAG,OAAO,EAAE,cAAY,YAAW;AAAA,MACtG,IAAG,IAAE,KAAG,CAAC,GAAE,EAAE,QAAQ,CAAC,MAAI;AAAA,QAAG,MAAM,IAAI,MAAM,kDAAgD,IAAE,aACvF;AAAA,MAAE,OAAO,EAAE,KAAK,CAAC,GAAE,GAAG,EAAE,WAAW,EAAE,GAAE,CAAC;AAAA,IAAC;AAAA,IAAC,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,EAAE,SAAS,CAAC,CAAC,GAAE,GAAE;AAAA,IAChH,KAAI,IAAE,KAAG,EAAE,EAAE,SAAO;AAAA,MAAG,IAAE,MAAI;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EAAE,GAAE,KAAK;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,CAAC,EAAE,kBAAkB,GAAE,IAAE,EAAE,YAAY,GAC/G,IAAE,IAAE;AAAA,IAAE,MAAI,IAAE,KAAK,IAAI,CAAC,IAAE;AAAA,IAAG,IAAI,IAAE,EAAE,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,SAAS,IAAE,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,QAAQ,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,SAAS,GACtG,CAAC,IAAE,MAAI,EAAE,EAAE,WAAW,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,WAAW,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,gBAAgB,GAAE,CAAC;AAAA,IAAE,OAAO,IAAE,KAAG,KAAG,KAAI,KACnG,MAAI,KAAG,KAAI,KAAG,EAAE,KAAK,MAAM,IAAE,EAAE,GAAE,CAAC,IAAE,MAAI,EAAE,IAAE,IAAG,CAAC,GAAE,MAAI,KAAG,QAAO;AAAA;AAAA,EAAE,EAAE,IAAG,cAAc;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IACrG,IAAI,IAAE,EAAE,eAAe,GAAE,IAAE,IAAE;AAAA,IAAE,MAAI,IAAE,KAAK,IAAI,CAAC,IAAE;AAAA,IAAG,IAAI,IAAE,EAAE,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,YAAY,IAAE,GAAE,CAAC,IAAE,MAAI,EAAE,EAClG,WAAW,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,YAAY,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,cAAc,GAAE,CAAC,IAAE,MAAI,EAAE,EAAE,cAAc,GAAE,CAAC,IAAE,MAAI,EACnG,EAAE,mBAAmB,GAAE,CAAC;AAAA,IAAE,OAAO,KAAG,UAAS,MAAI,KAAG,QAAO;AAAA;AAAA,EAAE,EAAE,IAAG,iBAAiB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IACvG,OAAO,IAAE,OAAO,KAAG,WAAS,EAAC,MAAK,EAAC,IAAE,GAAE,MAAI,OAAO,KAAG,aAAW,EAAE,WAAS,IAAE,EAAE,SAAO,IAAG,MAAI,EAAE,WAC/F,IAAG;AAAA;AAAA,EAAE,EAAE,IAAG,sBAAsB;AAAA,EAAE,IAAI,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,WAAW,KAAK,EAAE,OAAO,GAAE,OAAO,EACnG,OAAO,KAAK;AAAA,KAAG,KAAK,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,GAAG,IAAE,CAAC,GAAE,IAAE,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,GAAE,CAAC,CAAC,CAAC;AAAA,IAAE,OAAM,QAAM;AAAA,KACnG,yBAAyB;AAAA,EAAE,GAAG,UAAQ;AAAA,IAAC,cAAa,EAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,GAAG,CAAC;AAAA,OAAG,qBAAqB;AAAA,IACrG,sBAAqB;AAAA,IAAG,yBAAwB;AAAA,IAAG,KAAI;AAAA,EAAE;AAAA,CAAE;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,SAAQ,MAAI,GAAE,CAAC;AAAE,IAAI;AAAJ,IAAO,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,KAAG,CAAC;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,MAAI,GAAG,GAAE,EAAE,EAAE;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,EAAE,QAAQ,eAAe,MAC5O;AAAA,MAAG,MAAM,IAAI,MAAM,2DAA2D;AAAA,IAAE,IAAI,IAAE,GAAG,YACzF,EAAE,EAAE,SAAS,QAAQ;AAAA,IAAE,OAAM,EAAC,WAAU,iBAAgB,aAAY,GAAE,UAAS,cAAY,GAAE,SAAQ,sBACjF;AAAA;AAAA,EAAE,EAAE,IAAG,cAAc;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAG,EAAE,YAAU;AAAA,MAAsB,MAAM,IAAI,MAC7G,gDAAgD;AAAA,IAAE,IAAG,OAAO,KAAG;AAAA,MAAS,MAAM,IAAI,MAAM,oEAChC;AAAA,IAAE,IAAG,OAAO,KAAG;AAAA,MAAS,MAAM,IAAI,MAAM,+DACrC;AAAA,IAAE,IAAI,IAAE,GAAG,CAAC;AAAA,IAAE,IAAG,EAAE,MAAM,WAAW,EAAE,WAAW,GAAE;AAAA,MAC9G,IAAG,EAAE,MAAM,WAAS,EAAE,YAAY;AAAA,QAAO,MAAM,IAAI,MAAM,6DACvC;AAAA,IAAC,EAAM;AAAA,YAAM,IAAI,MAAM,iFACnB;AAAA,IAAE,IAAI,IAAE,EAAE,KAAK,EAAE,MAAK,QAAQ,GAAE,IAAE,GAAG,GAAE,GAAE,EAAE,SAAS,GAAE,IAAE,GAAG,GAAE,YAAY,GAAE,IAAE,GACnG,CAAC,GAAE,IAAE,WAAS,EAAE,aAAY,IAAE,OAAK,EAAE,QAAM,QAAM,EAAE,OAAK,QAAM,EAAE,WAAU,IAAE,cAAY,EAAE,OAAM,IAAE,IAClG,MAAI,IAAE,MAAI,GAAE,IAAE,GAAG,GAAE,CAAC,GAAE,IAAE,GAAG,GAAE,CAAC,GAAE,IAAE,EAAE,SAAS,QAAQ,GAAE,IAAE,GAAG,GAAE,YAAY,GAAE,IAAE,GAAG,GAAE,CAAC;AAAA,IAAE,EAAE,UAAQ,gBACrF,EAAE,kBAAgB,EAAE,SAAS,QAAQ,GAAE,EAAE,WAAS,IAAE,QAAM;AAAA;AAAA,EAAE,EAAE,IAAG,iBAAiB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAC/G,IAAG,EAAE,YAAU;AAAA,MAAe,MAAM,IAAI,MAAM,yCAAyC;AAAA,IAAE,IAAG,OAAO,KACnG;AAAA,MAAS,MAAM,IAAI,MAAM,+DAA+D;AAAA,IAAE,MAAI,iBAAgB,MAAG,GACjH,CAAC;AAAA,IAAE,IAAG,MAAI,EAAE;AAAA,MAAgB,MAAM,IAAI,MAAM,mEACjC;AAAA;AAAA,EAAE,EAAE,IAAG,iBAAiB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,OAAO,KAAG;AAAA,MAAS,MAAM,IAAI,UAAU,6BACvE;AAAA,IAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,GAAE,MAAI,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,OAAG,KAAG,MAAI,KAAG,MAAI,KAAG,MAClG,KAAG,GAAG;AAAA;AAAA,EAAE,EAAE,IAAG,kBAAkB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAM,mEACtD,KAAK,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,UAAU;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,OAAO,KAAG;AAAA,MAAS,MAAM,IAAI,UAAU,6CACvD;AAAA,IAAE,OAAO,IAAI,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,OAAG;AAAA,MAAC,IAAG,CAAC,MAAM,KAAK,CAAC;AAAA,QAAE,MAAM,IAAI,MAAM,oCAChE;AAAA,MAAE,IAAI,IAAE,EAAE,IAAG,IAAE,EAAE,UAAU,CAAC;AAAA,MAAE,OAAM,CAAC,GAAE,CAAC;AAAA,KAAE,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,qBAC/E;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,GAAG,CAAC,GAAE,IAAE,EAAE,IAAI,GAAG;AAAA,IAAE,IAAG,GAAE;AAAA,MAAC,IAAG,CAAC,GAAG,CAAC;AAAA,QAAE,MAAM,IAAI,MAAM,gFACpB;AAAA,IAAC,EAAM;AAAA,YAAM,IAAI,MAAM,iDACnD;AAAA,IAAE,IAAI,IAAE,EAAE,IAAI,GAAG;AAAA,IAAE,IAAG,GAAE;AAAA,MAAC,IAAG,CAAC,GAAG,CAAC;AAAA,QAAE,MAAM,IAAI,MAAM,uDAC7C;AAAA,IAAC,EAAM;AAAA,YAAM,IAAI,MAAM,gDACpD;AAAA,IAAE,IAAI,IAAE,EAAE,IAAI,GAAG;AAAA,IAAE,IAAG,GAAE;AAAA,MAAC,IAAG,CAAC,gBAAgB,KAAK,CAAC;AAAA,QAAE,MAAM,IAAI,MAAM,2DACzC;AAAA,IAAC,EAAM;AAAA,YAAM,IAAI,MAAM,qDAC/C;AAAA,IAAE,IAAI,IAAE,SAAS,GAAE,EAAE;AAAA,IAAE,OAAM,EAAC,OAAM,GAAE,MAAK,GAAE,WAAU,EAAC;AAAA;AAAA,EAAE,EAAE,IAAG,yBAAyB;AAAA,EACrG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,GAAG,CAAC,EAAE,IAAI,GAAG;AAAA,IAAE,IAAG,GAAE;AAAA,MAAC,IAAG,CAAC,GAAG,CAAC;AAAA,QAAE,MAAM,IAAI,MAAM,mEACjC;AAAA,IAAC,EAAM;AAAA,YAAM,IAAI,MAAM,+DACrC;AAAA,IAAE,OAAM,EAAC,iBAAgB,EAAC;AAAA;AAAA,EAAE,EAAE,IAAG,yBAAyB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG,CAAC,EACtG,SAAS,CAAC;AAAA,MAAE,MAAM,IAAI,UAAU,iCAAiC;AAAA,IAAE,IAAG,CAAC,EAAE,SAAS,CAAC;AAAA,MAAE,MAAM,IAAI,UAC/F,kCAAkC;AAAA,IAAE,IAAG,EAAE,WAAS,EAAE;AAAA,MAAO,MAAM,IAAI,MAAM,2BACzE;AAAA,IAAE,IAAG,EAAE,WAAS;AAAA,MAAE,MAAM,IAAI,MAAM,yBAAyB;AAAA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAE,MAAI,EAAE,KAAG,EAAE,EAAE,CAAC;AAAA;AAAA,EACpG,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO,GAAG,WAAW,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,QAAQ;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IACnH,OAAO,GAAG,WAAW,UAAS,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,SAAQ,IAAE,GACpG,GAAE,EAAE,OAAO,CAAC,GAAE,EAAE,KAAK,CAAC,GAAE,GAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,IAAE,GAAE,IAAE,EAAE,IAAE,IAAE,GAAE;AAAA,MAAI,IAAE,GAAG,GAAE,CAAC,GAAE,IAAE,GAAG,GAAE,CAAC;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,IAAI;AAAA,EAAE,GAAG,UAChG,EAAC,cAAa,IAAG,iBAAgB,IAAG,iBAAgB,GAAE;AAAA,CAAE;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,MAAK,MAAI,GAAE,CAAC;AAAE,SAAS,EAAE,IAAI,GAAE;AAAA,EAAC,OAAO,EAAE,KAAK,GAAG;AAAA;AAAE,IAAI,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,EAC7J,IAAG,MAAM;AAAA,CAAE;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,MAAK,MAAI,GAAE,CAAC;AAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,EAAC,EAAE,IAAI,MAAM,eAAe,CAAC;AAAA;AAAE,IAAI,KAAG,EAAE,MAAI;AAAA,EACnG,EAAE;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,CAAE;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,SAAQ,MAAI,GAAE,CAAC;AAAE,IAAI;AAAJ,IAAO,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,KAAG,CAAC;AAAA,CAAE;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,eAAc,MAAI,GAAE,CAAC;AAAE,IAAI;AAAJ,IAAO;AAAP,IAAU,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE;AAAA,MAC3M,EAAE,MAAK,IAAI;AAAA,MAAE,KAAK,KAAG,IAAI,YAAY,CAAC;AAAA;AAAA,IAAE,KAAK,CAAC,GAAE;AAAA,MAAC,OAAO,KAAK,GAAG,OAAO,GAAE,EAAC,QAAO,KAAE,CAAC;AAAA;AAAA,IAAE,GAAG,CAAC,GAAE;AAAA,MAAC,OAAO,KACpG,GAAG,OAAO,CAAC;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,EAAE,KAAG;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,MAAI,WAAU,QAAK,GAAG,GAAE,EAAE,EAAE,MAAI,eAAc,QAAK,GAAG,GAAE,EAAE,EAAE,IAAG,KAAG,OACnJ,MAAM,GAAE,KAAG,OAAO,SAAS;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI;AAAA,IAAE,IAAG,KAAK,UAAS;AAAA,MAAC,IAAG,IAAE,KAAK,IAAI,MAAM,CAAC,EAAE,MAC/F,KAAK,OAAO,GAAE,EAAE,WAAS;AAAA,QAAE,OAAO,EAAE;AAAA,MAAE,EAAE,MAAM,GAAE,KAAK,WAAS;AAAA,IAAE,EAAM;AAAA,WAAK,OAAK,KAAK,IAAI,MAAM,CAAC,GAAE,IAClG,KAAK,IAAI,MAAM,KAAK,OAAO;AAAA,IAAE,KAAK,MAAI,EAAE,IAAI;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,EAAE,QAAO;AAAA,MAAI,IAAG;AAAA,QAAC,GAAG,MAAK,KAAK,OAAO,EAAE,EAAE,CAAC;AAAA,QAAE,OAAM,GAAE;AAAA,QAChH,OAAO,EAAE,CAAC;AAAA;AAAA,IAAE,IAAG,KAAK,WAAS,KAAK,IAAI,SAAO,KAAK,WAAU,KAAK,YAAU,CAAC,KAAK,cAAa;AAAA,MAAC,EAAE,IAAI,MACrG,wBAAwB,CAAC;AAAA,MAAE;AAAA,IAAM;AAAA,IAAC,EAAE;AAAA;AAAA,EAAE,EAAE,IAAG,WAAW;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,KAAK,OAAK,KAAK,IAAI,IAAI,GAAE,KAAK;AAAA,MACxG,IAAG;AAAA,QAAC,GAAG,MAAK,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,QAAE,OAAM,GAAE;AAAA,QAAC,OAAO,EAAE,CAAC;AAAA;AAAA,IAAE,EAAE;AAAA;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,MAAS,aACpG,EAAE,KAAK,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,QAAO,IAAE,KAAG,SAAQ,IACnG,KAAG,IAAG,IAAE,KAAG,CAAC,GAAE,UAAU;AAAA,WAAa;AAAA,QAAE,OAAO,KAAG,cAAY,IAAE,GAAE,IAAE,WAAS,OAAO,KAAG,YAAU,EAAE,aAClG,WAAS,CAAC,EAAE,OAAO,WAAS,IAAE,GAAE,IAAE;AAAA,QAAS;AAAA,WAAW;AAAA,QAAE,OAAO,KAAG,cAAY,IAAE,GAAE,IAAE,GAAE,IAAE,WAAS,OAAO,KACxG,aAAW,IAAE,GAAE,IAAE;AAAA;AAAA,IAAI,IAAE,OAAO,OAAO,CAAC,GAAE,CAAC,GAAE,EAAE,cAAY,MAAG,EAAE,YAAU,IAAG,EAAE,QAAM,IAAG,EAAE,qBACxF;AAAA,IAAG,IAAI,IAAE,IAAI,GAAG,CAAC;AAAA,IAAE,OAAO,EAAE,MAAI,IAAG,EAAE,MAAI,IAAI,GAAG,MAAM,GAAE,EAAE,UAAQ,GAAE,EAAE,SAAO,GAAE,EAAE,YAAU,EAAE,WAC7F,EAAE,eAAa,EAAE,gBAAc,OAAG,EAAE,WAAS,OAAG,EAAE,WAAS,QAAQ,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,eAAe,eAC7F,OAAG,EAAE,CAAC;AAAA,OAAG;AAAA;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,EAAE,GAAG,UAAQ;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,MAAI,GAAG,GAAE,EAAE,EAAE,GAAG,QAAO,KAAG,GAAG,GAAE,MAAI,GAAG,GAAE,EAAE,EAAE,IAC7I,KAAG,MAAK,KAAG,EAAE,aAAW,SAAQ,KAAG,EAAE,QAAO,KAAG,IAAG,KAAG,GAAE,KAAG,OAAM,KAAG;AAAA,EAAM,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,QAAO,IAAE,OACjG;AAAA;AAAA,EAAG,EAAE,IAAG,WAAW;AAAA,EAAE,IAAI,KAAG,CAAC,QAAO,QAAO,YAAW,QAAO,UAAU,GAAE,KAAG,GAAG,QAAO,KAAG,GAAG,KAAG;AAAA,EAAG,SAAS,EAAE,GAAE;AAAA,IAC/G,IAAI,IAAE,cAAc,MAAI,GAAG,aAAW;AAAA,IAAG,IAAG,GAAE;AAAA,MAAC,IAAI,IAAE,MAAM,UAAU,MAAM,KAAK,SAAS,EAAE,OAAO;AAAA,CACjG;AAAA,MAAE,GAAG,MAAM,GAAG,OAAO,MAAM,IAAG,CAAC,CAAC;AAAA,IAAC;AAAA;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,EAAE,OAAO,eAAe,GAAG,SAAQ,SAAQ,EAAC,KAAI,EAAE,QAAQ,GAAE;AAAA,IAC3G,OAAO;AAAA,KAAI,KAAK,GAAE,KAAI,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,KAAG;AAAA,KAAG,KAAK,EAAC,CAAC;AAAA,EAAE,GAAG,QAAQ,SAAO,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE;AAAA,IAAG,OAAO,KACjG,GAAE;AAAA;AAAA,EAAG,GAAG,QAAQ,cAAY,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,KAAG,EAAE,KAAI,IAAE,EAAE,eAAa,KAAG,GAAG,KAAK,EAAE,WAAS,MAAK,cACvF,aAAa,IAAE,GAAG,KAAK,EAAE,QAAM,MAAK,SAAS;AAAA,IAAG,OAAO;AAAA;AAAA,EAAG,GAAG,QAAQ,YAAU,QAAQ,CAAC,GAAE,GAAE;AAAA,IACxG,OAAO,OAAO,UAAU,eAAe,KAAK,EAAE,KAAI,YAAY,IAAE,QAAG,KAAG,QAAI,IAAE,KAAG,UAAS,GAAG,EAAE,IAAI,IAAE,EACnG,QAAM,KAAG,OAAK,GAAG,oGACD,CAAC,GAAE,SAAI,QAAI,GAAG,mDAAkD,CAAC,GAAE;AAAA;AAAA,EAAM,IAAI,KAAG,GAAG,QACnG,QAAM,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,GAAG,MAAM,GAAE,EAAE,EAAE,OAAO,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,OAAO,KAAG,KAAG,OAAO,EAAE,MAAI,EAAE,MAAI,OACjG,EAAE,EAAE,IAAE,KAAG,OAAG,MAAI,EAAE,OAAK,OAAK,EAAE,OAAK,EAAE;AAAA,OAAK,IAAE;AAAA;AAAA,EAAG,GAAG,QAAQ,cAAY,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,GAAE,IAAE,EAAE,KAChG,GAAG,CAAC;AAAA,IAAE,SAAS,CAAC,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,GAAG,CAAC;AAAA,MAAE,KAAG,GAAG,CAAC,KAAG,GAAG,GAAE,CAAC,MAAI,IAAE,EAAE,KAAI,EAAE,IAAI;AAAA;AAAA,IAAG,EAAE,GAAE,QAAQ;AAAA,IAAE,IAAI,IAAE,EAAE,QAAQ,GAAE;AAAA,MACrG,EAAE,QAAQ,GAAE,EAAE,CAAC;AAAA,OAAG,OAAO,GAAE,IAAE,EAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,EAAE,QAAQ,GAAE,GAAG,sCAAqC,CAAC,GAAE,EAC7F,SAAC;AAAA,OAAG,OAAO;AAAA,IAAE,EAAE,GAAG,SAAQ,CAAC,GAAE,EAAE,GAAG,QAAO,CAAC,EAAE,GAAG,OAAM,CAAC,EAAE,GAAG,SAAQ,CAAC;AAAA;AAAA,EAAG,IAAI,KAAG,GAAG,QAAQ,YAC9F,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,EAAE,SAAO,MAAI,EAAE,MAAM,OAAO;AAAA,MAAE,OAAO;AAAA,IAAK,SAAQ,IAAE,IAAG,IAAE,IAAG,IAAE,GAAE,IAAE,GAAE,IAAE,GAAE,IAAE,CAAC,GAAE,IAAE,OAAG,IAAE,EACnG,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,IAAI,IAAE,EAAE,UAAU,GAAE,CAAC;AAAA,MAAE,OAAO,eAAe,KAAK,EAAE,KAAI,oBAAoB,MAAI,IAAE,EAClG,QAAQ,cAAa,IAAI,IAAG,EAAE,GAAG,MAAI;AAAA,OAAG,UAAU,GAAE,IAAE,EAAE,IAAE,EAAE,SAAO,GAAE,KAAG,GAAE;AAAA,MAAC,IAAG,IAAE,EAAE,OAAO,IAAE,CAAC,GAAE,IAAE,EAAE,OAClG,CAAC,GAAE,IAAE,KAAG,KAAG,GAAE,GAAE;AAAA,QAAC,EAAE,GAAE,CAAC;AAAA,QAAE;AAAA,MAAK;AAAA,MAAC,KAAG,KAAG,KAAG,OAAK,MAAI,SAAO,EAAE,GAAE,GAAE,IAAE,CAAC,GAAE,IAAE,IAAE,GAAE,KAAG;AAAA,IAAE;AAAA,IAAC,OAAO,IAAE,OAAO,KAAK,CAAC,EACnG,WAAS,KAAG,IAAE,MAAK;AAAA,KAAG,KAAG,GAAG,QAAQ,eAAa,QAAQ,CAAC,GAAE;AAAA,IAAC,SAAQ,IAAE,EAAC,GAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,EAAE,SAC/F;AAAA,OAAG,GAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,MAAI,MAAI,QAAI,IAAE,OAAO,CAAC,GAAE,SAAS,CAAC,KAAG,IAAE,KAAG,IAAE,oBAAkB,KAAK,MAAM,CAAC,MAClG;AAAA,OAAI,GAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,EAAE,SAAO;AAAA,OAAG,GAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,EAAE,SAAO;AAAA,OAAG,GAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,EAAE,SAC7F;AAAA,MAAE,GAAE,IAAE,EAAE,IAAE,GAAG,QAAO,KAAG,GAAE;AAAA,MAAC,IAAI,IAAE,EAAE,IAAG,IAAE,EAAE,GAAG,OAAK,IAAG,IAAE,EAAE,CAAC;AAAA,MAAE,IAAG,CAAC;AAAA,QAAE,OAAM;AAAA,IAAE;AAAA,IAAC,OAAM;AAAA;AAAA,CAAI;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,KAAG,GAAG;AAAA,EAAE,GAAG,UAAQ,QAAQ,CAAC,GAAE,GAAE;AAAA,IAC9L,IAAI,IAAE,GAAG,YAAY;AAAA,IAAE,GAAG,KAAK,GAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,MAAC,IAAG,KAAG,CAAC,GAAG,UAAU,GAAE,CAAC;AAAA,QAAE,OAAO,EAAO,SAAC;AAAA,MAAE,IAAI,IAAE,GAAG,iBAClG,CAAC;AAAA,MAAE,GAAG,YAAY,GAAE,GAAE,CAAC;AAAA,KAAE;AAAA;AAAA,EAAG,GAAG,QAAQ,SAAO,GAAG;AAAA,CAAO;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,SAAQ,MAAI,GAAE,CAAC;AAAE,IAAI;AAAJ,IAAO,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,KAAG,CAAC;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,MAAI,GAAG,GAAE,EAAE,EAAE;AAAA,EAAG,SAAS,EAAE,CAAC,GAAE;AAAA,IAAC,IAAG,EAAE,OAAO,CAAC,MAC1O,KAAI;AAAA,MAAC,IAAI,IAAE,EAAE,MAAM,GAAG;AAAA,MAAE,OAAM,EAAC,MAAK,EAAE,IAAG,UAAS,EAAE,GAAE;AAAA,IAAC;AAAA,IAAC,IAAI,IAAE,GAAG,MAAM,mCACvE,KAAK,CAAC,IAAE,UAAU,CAAC,EAAE,QAAQ,eAAc,KAAK,IAAE,GAAE,IAAE,GAAE,IAAE,EAAE;AAAA,IAAM,SAAQ,KAAK;AAAA,MAAE,MAAM,QAAQ,EAAE,EAAE,MAClG,EAAE,KAAG,EAAE,GAAG,EAAE,GAAG,SAAO;AAAA,IAAI,IAAI,KAAG,EAAE,QAAM,KAAK,MAAM,GAAG;AAAA,IAAE,IAAG,EAAE,OAAK,EAAE,IAAG,EAAE,WAAS,EAAE,OAAO,CAAC,EAAE,KAChG,GAAG,GAAE,EAAE,OAAK,EAAE,MAAK,EAAE,YAAU;AAAA,MAAU,OAAO,EAAE,OAAK,UAAU,EAAE,QAAQ,GAAE,EAAE,WAAS,EAAE,MAAM,IAAG,EACnG,kBAAgB,EAAE,MAAM,UAAS;AAAA,IAAE,EAAE,SAAO,EAAE,OAAK,EAAE;AAAA,IAAU,IAAI,IAAE,EAAE;AAAA,IAAS,IAAG,CAAC,EAAE,QAAM,KAAG,QAC/F,KAAK,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,EAAE,MAAM,GAAG;AAAA,MAAE,EAAE,OAAK,mBAAmB,EAAE,EAAE,GAAE,IAAE,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG;AAAA,IAAC;AAAA,IAAC,QAAO,KAAG,EAAE,OAChG,CAAC,MAAI,QAAM,IAAE,EAAE,MAAM,CAAC,KAAG,OAAM,EAAE,WAAS,KAAG,UAAU,CAAC,IAAG,EAAE,QAAM,UAAQ,EAAE,QAAM,SAAO,EAAE,MAAI,OAChG,EAAE,QAAM,QAAM,EAAE,MAAI,SAAK,EAAE,WAAS,EAAE,UAAQ,EAAE,eAAa,EAAE,aAAW,EAAE,MAAI,CAAC,IAAG,EAAE,YAAU,EAAE,IAClG,OAAK,GAAG,aAAa,EAAE,OAAO,EAAE,SAAS,IAAG,EAAE,WAAS,EAAE,IAAI,MAAI,GAAG,aAAa,EAAE,MAAM,EAAE,SAAS,IACpG,EAAE,gBAAc,EAAE,IAAI,KAAG,GAAG,aAAa,EAAE,WAAW,EAAE,SAAS,IAAG,EAAE;AAAA,WAAa,WAAU;AAAA,QAAC,EAAE,MAChG;AAAA,QAAG;AAAA,MAAK;AAAA,WAAK;AAAA,WAAa;AAAA,WAAc;AAAA,WAAgB;AAAA,QAAc;AAAA,WAAU,aAAY;AAAA,QAAC,EAAE,IAAI,qBACnG;AAAA,QAAG;AAAA,MAAK;AAAA;AAAA,IAAE,OAAO;AAAA;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,EAAE,GAAG,UAAQ;AAAA,EAAG,GAAG,QAAM;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,KAAG,GAAG,GAAE,KAAG,GAAG,EAAE,OAAM,IAAE,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,MACjK,YAAE,IAAE,EAAE,IAAI,OAAK,EAAE,YAAY,KAAG,MAAI,UAAK,IAAE,EAAE,IAAI,KAAI,EAAE,MAAI,KAAG,GAAG;AAAA,KAAI,KAAK,GAAE,KAAG,EAAE,QAAQ,GAAE;AAAA,IAAC,QAAO,EACxG,IAAI;AAAA,WAAe;AAAA,QAAU,OAAM;AAAA,WAAO;AAAA,WAAa;AAAA,WAAc;AAAA,WAAgB;AAAA,QAAc,OAAM;AAAA,WAAO;AAAA,QACrG,OAAM,EAAC,oBAAmB,MAAE;AAAA;AAAA,IAAE,OAAO,GAAG;AAAA,KAAK,8BAA8B,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IACxG,OAAM,OAAK,KAAG,GAAG,QAAQ,OAAM,MAAM,EAAE,QAAQ,MAAK,KAAK,IAAE;AAAA,KAAK,iBAAiB,GAAE,MAAG,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IACvG,IAAI,IAAE,EAAE;AAAA,IAAG,KAAG,QAAM,EAAE,KAAK,IAAE,MAAI,GAAG,CAAC,CAAC;AAAA,KAAG,KAAK,GAAE,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE;AAAA,MAAC,IAAE,OAAO,KAAG,WAAS,GAAG,CAAC,IACpG,KAAG,CAAC,GAAE,EAAE,qBAAmB,IAAE,OAAO,OAAO,CAAC,GAAE,GAAE,GAAG,EAAE,gBAAgB,CAAC,IAAG,KAAK,OAAK,EAAE,QAAO,CAAC,GAAE,KAC/F,WAAS,EAAE,YAAW,CAAC,GAAE,KAAK,aAAgB,cAAI,KAAK,WAAS,KAAK,OAAM,KAAK,OAAK,SAAS,EAAE,QAC7F,CAAC,GAAE,EAAE,GAAE,KAAK,OAAK,EAAE,QAAO,CAAC,GAAE,OAAO,eAAe,MAAK,YAAW;AAAA,QAAC,cAAa;AAAA,QAAG,YAAW;AAAA,QAClG,UAAS;AAAA,QAAG,OAAM,EAAE,YAAW,CAAC;AAAA,MAAC,CAAC,GAAE,KAAK,SAAO,EAAE,UAAS,CAAC,GAAE,KAAK,UAAQ,EAAE,WAAU,CAAC,GAAE,KAAK,MAAI,OAAO,EAC1G,MAAI,MAAI,GAAG,IAAE,EAAE,KAAI,OAAO,KAAK,OAAK,YAAU,KAAK,QAAM,WAAS,KAAK,MAAI,OAAI,KAAK,QAAM,gBACzF,KAAK,MAAI,EAAC,oBAAmB,MAAE,IAAG,KAAK,OAAK,KAAK,IAAI,OAAK,OAAO,eAAe,KAAK,KAAI,OAAM,EAAC,YAAW,MAAE,CAAC,GAC/G,KAAK,kBAAgB,EAAE,mBAAkB,CAAC,GAAE,KAAK,cAAY,EAAE,eAAc,CAAC,GAAE,KAAK,iBACrF,EAAE,KAAK,QAAM,IAAI,QAAQ,GAAG,GAAE,KAAK,mBAAiB,EAAE,oBAAmB,GAAE,WAAW,GAAE,KAAK,4BAC7F,EAAE,6BAA4B,GAAE,KAAE,GAAE,KAAK,oBAAkB,EAAE,qBAAoB,GAAE,KAAE,GAAE,KAAK,eAC5F,EAAE,gBAAe,GAAE,KAAE,GAAE,KAAK,sCAAoC,EAAE,uCAC9D,GAAE,KAAE,GAAE,KAAK,gBAAc,EAAE,iBAAgB,GAAE,KAAE,GAAE,EAAE,4BAA+B,YAAE,KAAK,kBAC7F,EAAE,IAAI,qBAAmB,IAAE,KAAK,kBAAgB,KAAK,MAAM,EAAE,0BAAwB,IAAG,GAAE,EAAE,cAC5F,QAAG,KAAK,aAAW,IAAE,EAAE,cAAY,SAAK,KAAK,aAAW,IAAG,OAAO,EAAE,+BAA6B,aACzF,KAAK,kBAAgB,KAAK,MAAM,EAAE,8BAA4B,IAAG;AAAA;AAAA,IAAG,wBAAwB,CAAC,GAAE;AAAA,MACvG,IAAI,IAAE,CAAC;AAAA,MAAE,IAAG,GAAE,MAAK,MAAM,GAAE,IAAG,GAAE,MAAK,UAAU,GAAE,IAAG,GAAE,MAAK,MAAM,GAAE,IAAG,GAAE,MAAK,kBAAkB,GAAE,IACjG,GAAE,MAAK,2BAA2B,GAAE,IAAG,GAAE,MAAK,iBAAiB,GAAE,IAAG,GAAE,MAAK,SAAS;AAAA,MAAE,IAAI,IAAE,OAAO,KACnG,OAAK,WAAS,KAAK,MAAI,KAAK,MAAI,EAAC,SAAQ,KAAK,IAAG,IAAE,CAAC;AAAA,MAAE,IAAG,IAAG,GAAE,GAAE,SAAS,GAAE,IAAG,GAAE,GAAE,OAAO,GAAE,IAAG,GAAE,GAAE,QAC5F,GAAE,IAAG,GAAE,GAAE,SAAS,GAAE,IAAG,GAAE,GAAE,aAAa,GAAE,KAAK,YAAU,EAAE,KAAK,YAAU,GAAG,KAAK,QAAQ,CAAC,GAAE,KACnG,eAAa,EAAE,KAAK,iBAAe,GAAG,KAAK,WAAW,CAAC,GAAE,KAAK,QAAM,EAAE,KAAK,UAAQ,GAAG,KAAK,IAAI,CAAC,GAAE,KAClG;AAAA,QAAe,OAAO,EAAE,MAAK,EAAE,KAAK,GAAG,CAAC;AAAA,MAAE,KAAK,mBAAiB,EAAE,KAAK,qBAAmB,GAAG,KAAK,eAAe,CAAC,GAClH,GAAG,OAAO,KAAK,MAAK,QAAQ,CAAC,GAAE,GAAE;AAAA,QAAC,OAAO,IAAE,EAAE,GAAE,IAAI,KAAG,EAAE,KAAK,cAAY,GAAG,CAAC,CAAC,GAAE,EAAE,MAAK,EAAE,KAAK,GAAG,CAAC;AAAA,OAAG;AAAA;AAAA,EAAE;AAAA,EACvG,EAAE,IAAG,sBAAsB;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAAG,UAAQ;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,GAAE,KAAG,sCAAqC,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAC3K,KAAK,UAAQ,MAAK,KAAK,WAAS,MAAK,KAAK,MAAI,MAAK,KAAK,OAAK,CAAC,GAAE,KAAK,SAAO,CAAC,GAAE,KAAK,WAAc,WAClG,KAAK,SAAO,GAAE,KAAK,UAAQ,MAAK,KAAK,aAAW,MAAI,SAAQ,KAAK,eAAa,KAAK,WAAS,KAAK;AAAA;AAAA,IAAkB,kBAAkB,CAAC,GAAE;AAAA,MACxI,IAAI;AAAA,MAAE,EAAE,OAAK,IAAE,GAAG,KAAK,EAAE,IAAI,IAAE,IAAE,GAAG,KAAK,EAAE,OAAO,GAAE,MAAI,KAAK,UAAQ,EAAE,IAAG,EAAE,MAAI,KAAK,MAAI,SAAS,EAAE,IACpG,EAAE,GAAE,KAAK,WAAS,SAAS,EAAE,IAAG,EAAE,KAAG,EAAE,OAAK,KAAK,WAAS,SAAS,EAAE,IAAG,EAAE;AAAA;AAAA,IAAI,gBAAgB,CAAC,GAAE;AAAA,MAAC,SAAQ,IAAE,IAAI,MAChH,EAAE,MAAM,GAAE,IAAE,GAAE,IAAE,EAAE,OAAO,IAAE,GAAE,KAAI;AAAA,QAAC,IAAI,IAAE,EAAE;AAAA,QAAG,MAAI,OAAK,EAAE,KAAG,KAAK,SAAS,GAAG,CAAC,IAAE,EAAE,KAAG;AAAA,MAAI;AAAA,MAAC,OAAO;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE;AAAA,MAC7G,SAAQ,IAAE,CAAC,GAAE,IAAE,GAAE,IAAE,EAAE,OAAO,IAAE,GAAE,KAAI;AAAA,QAAC,IAAI,IAAE,EAAE,IAAG,IAAE,KAAK,OAAO,GAAG;AAAA,QAAK,MAAI,OAAK,EAAE,KAAG,KAAK,SAAS,GAClG,CAAC,IAAE,EAAE,KAAG;AAAA,MAAI;AAAA,MAAC,OAAO;AAAA;AAAA,IAAE,MAAM,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,KAAK,CAAC;AAAA;AAAA,IAAE,SAAS,CAAC,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,OAAO,WAAS,KAClG,WAAS,IAAI,MAAM,EAAE,MAAM;AAAA,MAAG,SAAQ,IAAE,EAAE,IAAE,EAAE,QAAO,KAAI;AAAA,QAAC,IAAI,IAAE,EAAE;AAAA,QAAG,KAAK,SAAO,KAAK,SAAS,KAAG,KAClG,OAAO,cAAc,EAAE,YAAW,EAAE,UAAQ,MAAM,IAAE,KAAK,SAAS,KAAG,GAAG,cAAc,EAAE,YAAW,EACnG,UAAQ,MAAM;AAAA,MAAC;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,QAAQ;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAAG,UAAQ;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,MAAI,cAAa,OAAI,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,MAAM,YAAW,GAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,MACnL,MAAM,GAAE,IAAE,GAAG,qBAAqB,GAAE,GAAE,CAAC,GAAE,KAAK,OAAK,EAAE,MAAK,KAAK,SAAO,EAAE,QAAO,KAAK,OAAK,EAAE,MAAK,KAChG,QAAM,EAAE,OAAM,KAAK,OAAK,EAAE,MAAK,KAAK,SAAO,EAAE,QAAO,KAAK,SAAO,EAAE,UAAQ,IAAG,KAAK,WAAS,EAAE,UAC7F,KAAK,WAAS,EAAE,SAAQ,EAAE,UAAQ,EAAE,aAAW,KAAK,WAAS,EAAE,OAAO,KAAK,EAAE,QAAQ,IAAG,KAAK,UAC7F,IAAI,GAAG,KAAK,UAAS,KAAK,KAAK,GAAE,KAAK,WAAS,KAAK,SAAQ,KAAK,sBAAoB,OAAG,KAAK,sBAC7F,OAAG,KAAK,WAAS;AAAA;AAAA,IAAK,mBAAmB,GAAE;AAAA,MAAC,OAAO,KAAK,QAAM,KAAK,OAAK,OAAG,CAAC,KAAK,QAAM,CAAC,KAAK,SAC7F,QAAG,KAAK,OAAO,SAAO;AAAA;AAAA,IAAE,iBAAiB,GAAE;AAAA,MAAC,KAAK,QAAQ,YAAU,MAAM,QAAQ,KAAK,QAAQ,MAAI,KAClG,WAAS,CAAC,KAAK,OAAO,IAAG,KAAK,UAAQ,IAAI,GAAG,KAAK,UAAS,KAAK,KAAK,GAAE,KAAK,SAAS,KAAK,KAAK,OAAO;AAAA;AAAA,IAAG,oBAAoB,CAAC,GAAE;AAAA,MAChI,KAAK,kBAAkB,GAAE,KAAK,QAAQ,UAAU,EAAE,MAAM,GAAE,KAAK,kBAAgB,KAAK,YAAU,CAAC,KAC/F,UAAU,KAAK,EAAE;AAAA;AAAA,IAAO,aAAa,CAAC,GAAE;AAAA,MAAC,IAAI;AAAA,MAAE,IAAG,CAAC,KAAK,qBAAoB;AAAA,QAAC,IAAG;AAAA,UAAC,IAAE,KAAK,QAAQ,SAChG,EAAE,MAAM;AAAA,UAAE,OAAM,GAAE;AAAA,UAAC,KAAK,sBAAoB;AAAA,UAAE;AAAA;AAAA,QAAO,KAAK,KAAK,OAAM,GAAE,KAAK,OAAO,GAAE,KAAK,mBAC1F,KAAK,QAAQ,OAAO,CAAC;AAAA,MAAC;AAAA;AAAA,IAAE,qBAAqB,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,kBAAkB,GAAE,KAAK,QAAQ,mBACzF,CAAC,GAAE,KAAK,QAAM,EAAE,KAAK;AAAA;AAAA,IAAE,gBAAgB,CAAC,GAAE;AAAA,MAAC,KAAK,QAAM,EAAE,KAAK;AAAA;AAAA,IAAE,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,IAAG,KAAK,wBACvF,IAAE,KAAK,qBAAoB,KAAK,sBAAoB,QAAI,KAAK;AAAA,QAAS,OAAO,KAAK,SAAS,CAAC;AAAA,MAAE,KAC/F,KAAK,SAAQ,CAAC;AAAA;AAAA,IAAE,mBAAmB,CAAC,GAAE;AAAA,MAAC,IAAG,KAAK;AAAA,QAAoB,OAAO,KAAK,YAAY,KAAK,qBAChG,CAAC;AAAA,MAAE,IAAG,KAAK;AAAA,QAAS,IAAG;AAAA,UAAC,KAAK,SAAS,MAAK,KAAK,QAAQ;AAAA,UAAE,OAAM,GAAE;AAAA,UAAC,EAAE,SAAS,MAAI;AAAA,YAAC,MAAM;AAAA,WAAE;AAAA;AAAA,MAAE,KAAK,KAClG,OAAM,KAAK,QAAQ;AAAA;AAAA,IAAE,MAAM,CAAC,GAAE;AAAA,MAAC,IAAG,OAAO,KAAK,QAAM,YAAU,OAAO,KAAK,QAAM;AAAA,QAAS,OAAO,IAAI,MACpG,4EAA4E;AAAA,MAAE,IAAI,IAAE,EAAE,iBAAiB,KACvG;AAAA,MAAM,OAAO,KAAK,QAAM,KAAG,KAAK,SAAO,IAAE,IAAI,MAAM,yCAAyC,KAAK,0CAC5D,IAAE,KAAK,UAAQ,CAAC,MAAM,QAAQ,KAAK,MAAM,IAAE,IAAI,MAAM,+BACrE,KAAG,KAAK,oBAAoB,IAAE,KAAK,QAAQ,CAAC,IAAE,EAAE,MAAM,KAAK,IAAI,GAAE;AAAA;AAAA,IAAM,aAAa,CAAC,GAAE;AAAA,MAC5G,OAAO,KAAK,QAAM,EAAE,iBAAiB,KAAK;AAAA;AAAA,IAAM,qBAAqB,CAAC,GAAE;AAAA,MAAC,KAAK,SAAS,GAAE,KAAK,IAAI;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,MACjH,EAAE,QAAQ,EAAC,QAAO,KAAK,QAAO,MAAK,EAAC,CAAC,GAAE,IAAE,EAAE,MAAM,IAAE,EAAE,KAAK;AAAA;AAAA,IAAE,OAAO,CAAC,GAAE;AAAA,MAAC,KAAK,sBAAoB,MAAG,KACnG,cAAc,CAAC,KAAG,EAAE,MAAM,EAAC,MAAK,KAAK,MAAK,MAAK,KAAK,MAAK,OAAM,KAAK,MAAK,CAAC;AAAA,MAAE,IAAG;AAAA,QAAC,EAAE,KAAK,EAAC,QAAO,KAC/F,QAAO,WAAU,KAAK,MAAK,QAAO,KAAK,QAAO,QAAO,KAAK,QAAO,aAAY,GAAG,aAAY,CAAC;AAAA,QAAE,OAAM,GAAE;AAAA,QACvG,KAAK,YAAY,GAAE,CAAC;AAAA,QAAE;AAAA;AAAA,MAAO,EAAE,SAAS,EAAC,MAAK,KAAI,MAAK,KAAK,UAAQ,GAAE,CAAC,GAAE,KAAK,SAAS,GAAE,KAAK,IAAI;AAAA;AAAA,IAAE,oBAAoB,CAAC,GAAE;AAAA,MAC3H,EAAE,aAAa,0BAA0B;AAAA;AAAA,IAAE,cAAc,CAAC,GAAE,GAAE;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAAG,UAC7F;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,OAAG;AAAA,EAAc,EAAE;AAAA,EAAE,OAAO,eAAe,GAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,EAAE,EAAE,gBAAc,EAAE,iBACtG,EAAE,yBAAuB,EAAE,uBAAqB,EAAE,8BAA4B,EAAE,wBAChF,EAAE,4BAA0B,EAAE,yBAAuB,EAAE,8BAA4B,EAAE,wBACrF,EAAE,QAAM,EAAE,eAAa,EAAE,kBAAgB,EAAE,gBAAc,EAAE,WAAS,EAAE,aAAW,EAAE,mBACnF,EAAE,kBAAgB,EAAE,SAAO,EAAE,gBAAc,EAAE,eAAa,EAAE,gBAAmB;AAAA,EAAE,EAAE,gBAAc,EAAC,MAAK,iBACxF,QAAO,EAAC;AAAA,EAAE,EAAE,eAAa,EAAC,MAAK,gBAAe,QAAO,EAAC;AAAA,EAAE,EAAE,gBAAc,EAAC,MAAK,iBACpF,QAAO,EAAC;AAAA,EAAE,EAAE,SAAO,EAAC,MAAK,UAAS,QAAO,EAAC;AAAA,EAAE,EAAE,kBAAgB,EAAC,MAAK,mBAAkB,QAAO,EAAC;AAAA,EACvG,EAAE,mBAAiB,EAAC,MAAK,oBAAmB,QAAO,EAAC;AAAA,EAAE,EAAE,aAAW,EAAC,MAAK,cAAa,QAAO,EAAC;AAAA,EAAE,EAAE,WAClG,EAAC,MAAK,YAAW,QAAO,EAAC;AAAA,EAAE,IAAI,KAAG,MAAM,YAAW,MAAK;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,MAAM,CAAC,GAAE,KAAK,SAAO,GAAE,KACnG,OAAK;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,eAAe;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,gBAAc;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAClG,GAAE,KAAK,QAAM,GAAE,KAAK,OAAK;AAAA;AAAA,EAAW;AAAA,EAAE,EAAE,IAAG,iBAAiB;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,kBAAgB;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,MACjI,KAAK,SAAO,GAAE,KAAK,OAAK,GAAE,KAAK,SAAO,GAAE,KAAK,cAAY,IAAI,MAAM,CAAC;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,cAAc;AAAA,EAAE,IAAI,KAAG;AAAA,EACpG,EAAE,eAAa;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,OAAK,GAAE,KAAK,UAAQ,GAAE,KAAK,WAC7F,GAAE,KAAK,aAAW,GAAE,KAAK,eAAa,GAAE,KAAK,mBAAiB,GAAE,KAAK,SAAO;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,EAAE,IAAI,KAAG;AAAA,EACrG,EAAE,QAAM;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,aAAW,GAAE,KAAK,OAAK,kBACnF,KAAK,SAAO,IAAI,MAAM,KAAK,UAAU;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,uBAAuB;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,wBACtF;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,iBAAe,GAAE,KAAK,OAAK,wBAC7E,KAAK,cAAY,IAAI,MAAM,KAAK,cAAc;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,6BAA6B;AAAA,EAAE,IAAI,KAAG;AAAA,EAClG,EAAE,8BAA4B;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,gBACvF,GAAE,KAAK,iBAAe,GAAE,KAAK,OAAK;AAAA;AAAA,EAAkB;AAAA,EAAE,EAAE,IAAG,wBAAwB;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,yBACjG;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,OAAK,GAAE,KAAK,OAAK;AAAA;AAAA,EAA4B;AAAA,EACpG,EAAE,IAAG,2BAA2B;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,4BAA0B;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,MAC7G,KAAK,SAAO,GAAE,KAAK,YAAU,GAAE,KAAK,YAAU,GAAE,KAAK,OAAK;AAAA;AAAA,EAAiB;AAAA,EAAE,EAAE,IAAG,uBAC7E;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,wBAAsB;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAC/F,YAAU,GAAE,KAAK,UAAQ,GAAE,KAAK,UAAQ,GAAE,KAAK,OAAK;AAAA;AAAA,EAAe;AAAA,EAAE,EAAE,IAAG,6BACvE;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,8BAA4B;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAC/F,SAAO,GAAE,KAAK,OAAK;AAAA;AAAA,EAAgB;AAAA,EAAE,EAAE,IAAG,sBAAsB;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,uBAAqB;AAAA,EACnG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,OAAK,GAAE,KAAK,OAAK;AAAA;AAAA,EAAkB;AAAA,EAAE,EAAE,IAAG,wBAC5E;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,yBAAuB;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAChG,GAAE,KAAK,SAAO,GAAE,KAAK,OAAK,WAAU,KAAK,aAAW,EAAE;AAAA;AAAA,EAAO;AAAA,EAAE,EAAE,IAAG,gBAAgB;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,iBAClG;AAAA,EAAG,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,UAAQ,GAAE,KAAK,OAAK;AAAA;AAAA,EAAS;AAAA,EAAE,EAAE,IAAG,eACrF;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,EAAE,gBAAc;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAc,EAAE;AAAA,EAAE,OAAO,eAAe,IAAG,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,EAAE,GAAG,SAAY;AAAA,EAAE,IAAI,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,IAAE,KAAI;AAAA,MAC3K,KAAK,OAAK,GAAE,KAAK,SAAO,GAAE,KAAK,iBAAe,GAAE,KAAK,SAAO,EAAE,YAAY,CAAC;AAAA;AAAA,IAAE,MAAM,CAAC,GAAE;AAAA,MAAC,IAAG,KAAK,OAC/F,SAAO,KAAK,SAAO,GAAE;AAAA,QAAC,IAAI,IAAE,KAAK,QAAO,IAAE,EAAE,UAAQ,EAAE,UAAQ,KAAG;AAAA,QAAE,KAAK,SAAO,EAAE,YAAY,CAAC,GAAE,EAAE,KAClG,KAAK,MAAM;AAAA,MAAC;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,OAAO,KAAK,OAAO,CAAC,GAAE,KAAK,OAAO,KAAK,YAAU,MAAI,KAAG,KAAI,KAAK,OAAO,KAClG,YAAU,MAAI,KAAG,KAAI,KAAK,OAAO,KAAK,YAAU,MAAI,IAAE,KAAI,KAAK,OAAO,KAAK,YAAU,MAAI,IAAE,KAAI;AAAA;AAAA,IAAK,QAAQ,CAAC,GAAE;AAAA,MAC/G,OAAO,KAAK,OAAO,CAAC,GAAE,KAAK,OAAO,KAAK,YAAU,MAAI,IAAE,KAAI,KAAK,OAAO,KAAK,YAAU,MAAI,IAAE,KAAI;AAAA;AAAA,IAAK,UAAU,CAAC,GAAE;AAAA,MAClH,IAAG,CAAC;AAAA,QAAE,KAAK,OAAO,CAAC;AAAA,MAAM;AAAA,QAAC,IAAI,IAAE,EAAE,WAAW,CAAC;AAAA,QAAE,KAAK,OAAO,IAAE,CAAC,GAAE,KAAK,OAAO,MAAM,GAAE,KAAK,QAAO,OAC7F,GAAE,KAAK,UAAQ;AAAA;AAAA,MAAE,OAAO,KAAK,OAAO,KAAK,YAAU,GAAE;AAAA;AAAA,IAAK,SAAS,CAAC,IAAE,IAAG;AAAA,MAAC,IAAI,IAAE,EAAE,WAAW,CAAC;AAAA,MAClG,OAAO,KAAK,OAAO,CAAC,GAAE,KAAK,OAAO,MAAM,GAAE,KAAK,MAAM,GAAE,KAAK,UAAQ,GAAE;AAAA;AAAA,IAAK,GAAG,CAAC,GAAE;AAAA,MAAC,OAAO,KAAK,OAC9F,EAAE,MAAM,GAAE,EAAE,KAAK,KAAK,QAAO,KAAK,MAAM,GAAE,KAAK,UAAQ,EAAE,QAAO;AAAA;AAAA,IAAK,IAAI,CAAC,GAAE;AAAA,MAAC,IAAG,GAAE;AAAA,QAAC,KAAK,OAAO,KAC/F,kBAAgB;AAAA,QAAE,IAAI,IAAE,KAAK,UAAQ,KAAK,iBAAe;AAAA,QAAG,KAAK,OAAO,aAAa,GAAE,KAAK,iBAC5F,CAAC;AAAA,MAAC;AAAA,MAAC,OAAO,KAAK,OAAO,MAAM,IAAE,IAAE,GAAE,KAAK,MAAM;AAAA;AAAA,IAAE,KAAK,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,KAAK,CAAC;AAAA,MAAE,OAAO,KAAK,SAAO,GAAE,KAChG,iBAAe,GAAE,KAAK,SAAO,EAAE,YAAY,KAAK,IAAI,GAAE;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,QAAQ;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAAG,SAAO;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAc,EAAE;AAAA,EAAE,OAAO,eAAe,IAAG,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,EAAE,GAAG,YAAe;AAAA,EACrM,IAAI,KAAG,GAAG,GAAE,IAAE,IAAI,GAAG,QAAO,KAAG,EAAE,OAAG;AAAA,IAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC;AAAA,IAAE,SAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,MAAE,EAAE,WAC7F,CAAC,EAAE,WAAW,EAAE,EAAE;AAAA,IAAE,EAAE,WAAW,iBAAiB,EAAE,WAAW,MAAM;AAAA,IAAE,IAAI,IAAE,EAAE,WAAW,EAAE,EAAE,MAAM,GACpG,IAAE,EAAE,SAAO;AAAA,IAAE,OAAO,IAAI,GAAG,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM;AAAA,KAAG,SAAS,GAAE,KAAG,EAAE,MAAI;AAAA,IAAC,IAAI,IAAE,EAAE,YAC7F,CAAC;AAAA,IAAE,OAAO,EAAE,aAAa,GAAE,CAAC,GAAE,EAAE,aAAa,UAAS,CAAC,GAAE;AAAA,KAAG,YAAY,GAAE,KAAG,EAAE,OAAG,EAAE,WAAW,CAAC,EAAE,MAClG,GAAG,GAAE,UAAU,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,GAAE,EAClG,MAAM,GAAG;AAAA,KAAG,gCAAgC,GAAE,KAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG;AAAA,KAAG,6BACvE,GAAE,KAAG,EAAE,OAAG,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAE,OAAO,GAAE,KAAG,CAAC,GAAE,KAAG,EAAE,OAAG;AAAA,IAAC,IAAI,IAAE,EAAE,QAC9F;AAAA,IAAG,EAAE,SAAO,OAAK,QAAQ,MAAM,gEAAgE,GAAE,QACjG,MAAM,wBAAuB,GAAE,EAAE,MAAM,GAAE,QAAQ,MAAM,8DACtC;AAAA,IAAG,IAAI,IAAE,EAAE,SAAO,IAAG,IAAE,EAAE,QAAO,IAAE,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC;AAAA,IAAE,SAAQ,IAAE,EAAE,IAC9G,GAAE;AAAA,MAAI,EAAE,SAAS,EAAE,EAAE;AAAA,IAAE,OAAO,EAAE,MAAM,EAAE;AAAA,KAAG,OAAO,GAAE,KAAG,IAAI,GAAG,QAAO,KAAG,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,SAAQ,IAAE,EAAE,IACpG,EAAE,QAAO,KAAI;AAAA,MAAC,IAAI,IAAE,IAAE,EAAE,EAAE,IAAG,CAAC,IAAE,EAAE;AAAA,MAAG,KAAG,QAAM,EAAE,SAAS,CAAC,GAAE,GAAG,SAAS,EAAE,KAAG,aAAa,KAAG,EAAE,SAC/F,CAAC,GAAE,GAAG,SAAS,EAAE,MAAM,GAAE,GAAG,IAAI,CAAC,MAAI,EAAE,SAAS,CAAC,GAAE,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,GAAE,GAAG,UAAU,CAAC;AAAA,IAAE;AAAA,KAAG,aACvF,GAAE,KAAG,EAAE,CAAC,IAAE,CAAC,MAAI;AAAA,IAAC,IAAI,IAAE,EAAE,UAAQ,IAAG,IAAE,EAAE,aAAW,IAAG,IAAE,EAAE,UAAQ,OAAG,IAAE,EAAE,UAAQ,IAAG,IAAE,EAAE;AAAA,IACnG,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,GAAE,EAAE,SAAS,CAAC,GAAE,GAAG,GAAE,EAAE,WAAW,GAAE,EAAE,SAAS,CAAC,GAAE,EAAE,IAAI,GAAG,MAAM,CAAC,GACrG,EAAE,SAAS,IAAE,IAAE,CAAC,GAAE,EAAE,MAAM,EAAE;AAAA,KAAG,MAAM,GAAE,KAAG,EAAE,KAAK,CAAC,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,CAAC,GAAE,KAAG,EAAE,OAAG;AAAA,IAAC,IAAG,CAAC,KAAG,CAAC,EAAE,UAC5F,CAAC,EAAE;AAAA,MAAK,OAAO;AAAA,IAAG,IAAI,IAAE,EAAE,UAAQ,IAAG,IAAE,EAAE,QAAM,GAAE,IAAE,EAAE,WAAW,CAAC,GAAE,IAAE,IAAE,IAAE,IAAE,GAAE,IAAE,EAAE,YAAY,IAAE,CAAC;AAAA,IAAE,OAAO,EAAE,KAC3G,IAAG,EAAE,aAAa,GAAE,CAAC,GAAE,EAAE,MAAM,GAAE,GAAE,OAAO,GAAE,EAAE,IAAE,KAAG,GAAE,EAAE,cAAc,GAAE,EAAE,SAAO,CAAC,GAAE;AAAA,KAAG,SAAS,GAAE,KAAG,EACpG,CAAC,GAAE,MAAI;AAAA,IAAC,IAAI,IAAE,EAAE,YAAY,EAAE;AAAA,IAAE,OAAO,EAAE,aAAa,IAAG,CAAC,GAAE,EAAE,aAAa,MAAK,CAAC,GAAE,EAAE,aAAa,MAClG,CAAC,GAAE,EAAE,aAAa,GAAE,CAAC,GAAE,EAAE,aAAa,GAAE,EAAE,GAAE;AAAA,KAAG,QAAQ,GAAE,KAAG,EAAE,CAAC,GAAE,MAAI;AAAA,IAAC,IAAI,IAAE,IAAE,EAAE,WAAW,CAAC,IAAE,GAAE,IAAE,EAClG,YAAY,IAAE,CAAC;AAAA,IAAE,OAAO,EAAE,KAAG,GAAE,EAAE,aAAa,GAAE,CAAC,GAAE,EAAE,MAAM,GAAE,GAAE,OAAO,GAAE,EAAE,KAAG,GAAE;AAAA,KAAG,gBAAgB,GAClG,KAAG,EAAE,WAAW,GAAG,EAAE,MAAM,EAAE,GAAE,KAAG,EAAE,WAAW,GAAG,EAAE,MAAM,EAAE,GAAE,KAAG,EAAE,OAAG,EAAE,OAAK,GAAG,IAAG,GAAG,EAAE,OAAO,EAAE,QACjG,IAAI,IAAE,EAAE,SAAO,MAAI,KAAG,IAAG,UAAU,GAAE,KAAG,EAAE,OAAG;AAAA,IAAC,IAAI,IAAE,GAAG,EAAE,OAAO,EAAE,QAAM;AAAA,IAAK,OAAO,GAAG,IAAG,CAAC;AAAA,KAAG,OAAO,GACrG,KAAG,EAAE,OAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAE,UAAU,GAAE,KAAG,EAAE,OAAG,GAAG,KAAI,CAAC,GAAE,UAAU,GAAE,KAAG,EAAE,OAAG,EAAE,KAAK,CAAC,GAAE,GAAE,GAAE,GAAE,CAAC,CAAC,GAAE,gBACpF,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG;AAAA,IAAC,SAAQ;AAAA,IAAG,UAAS;AAAA,IAAG,YAAW;AAAA,IAAG,gCAA+B;AAAA,IAChI,6BAA4B;AAAA,IAAG,OAAM;AAAA,IAAG,OAAM;AAAA,IAAG,MAAK;AAAA,IAAG,SAAQ;AAAA,IAAG,UAAS;AAAA,IAAG,OAAM;AAAA,IAAG,OAAM,EAAE,MAAI,IACrG,OAAO;AAAA,IAAE,MAAK,EAAE,MAAI,IAAG,MAAM;AAAA,IAAE,KAAI,EAAE,MAAI,IAAG,KAAK;AAAA,IAAE,UAAS;AAAA,IAAG,UAAS,EAAE,MAAI,IAAG,UAAU;AAAA,IAAE,UAAS;AAAA,IACtG,QAAO;AAAA,EAAE;AAAA,EAAE,GAAG,YAAU;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAc,EAAE;AAAA,EAAE,OAAO,eAAe,IAAG,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,EAAE,GAAG,eAAkB;AAAA,EACnI,IAAI,KAAG,EAAE,YAAY,CAAC,GAAE,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,IAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,SAAO,IAAG,KAAK,WAAS;AAAA;AAAA,IAC5F,SAAS,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,SAAO,GAAE,KAAK,SAAO;AAAA;AAAA,IAAE,KAAK,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,YAAY,KAAK,MAAM;AAAA,MAAE,OAAO,KACzG,UAAQ,GAAE;AAAA;AAAA,IAAE,IAAI,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,KAAK;AAAA,MAAQ,OAAO,KAAK,UAAS;AAAA;AAAA,IAAE,KAAK,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,YACnG,KAAK,MAAM;AAAA,MAAE,OAAO,KAAK,UAAQ,GAAE;AAAA;AAAA,IAAE,MAAM,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,aAAa,KAAK,MAAM;AAAA,MAAE,OAAO,KACjG,UAAQ,GAAE;AAAA;AAAA,IAAE,MAAM,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,SAAS,KAAK,UAAS,KAAK,QAAO,KAAK,SAAO,CAAC;AAAA,MAAE,OAAO,KACjG,UAAQ,GAAE;AAAA;AAAA,IAAE,OAAO,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,QAAO,IAAE;AAAA,MAAE,MAAK,KAAK,OAAO,SAAO;AAAA;AAAA,MAAI,OAAO,KAAK,SAAO,GAAE,KAAK,OAClG,SAAS,KAAK,UAAS,GAAE,IAAE,CAAC;AAAA;AAAA,IAAE,KAAK,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,MAAM,KAAK,QAAO,KAAK,SAAO,CAAC;AAAA,MAAE,OAAO,KACjG,UAAQ,GAAE;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,cAAc;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAAG,eAAa;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAc,EAAE;AAAA,EAAE,OAAO,eAAe,IAAG,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,EAAE,GAAG,SAAY;AAAA,EAAE,IAAI,IAAE,GAAG,GAC7K,KAAG,GAAG,GAAE,KAAG,GAAE,KAAG,GAAE,KAAG,KAAG,IAAG,KAAG,EAAE,YAAY,CAAC,GAAE,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE;AAAA,MAAC,IAAG,KAAK,SAAO,IAAG,KAAK,eACjG,GAAE,KAAK,eAAa,GAAE,KAAK,SAAO,IAAI,GAAG,cAAa,GAAG,SAAO;AAAA,QAAS,MAAM,IAAI,MAAM,+BACrE;AAAA,MAAE,KAAK,OAAK,GAAG,QAAM;AAAA;AAAA,IAAO,KAAK,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,YAAY,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,eAC1F,KAAK,cAAa,IAAE,KAAK;AAAA,MAAa,MAAK,IAAE,MAAI,KAAG;AAAA,QAAC,IAAI,IAAE,KAAK,OAAO,IAAG,IAAE,KAAK,OAAO,aACxF,IAAE,EAAE,GAAE,IAAE,KAAG;AAAA,QAAE,IAAG,IAAE,KAAG,GAAE;AAAA,UAAC,IAAI,IAAE,KAAK,aAAa,IAAE,IAAG,GAAE,GAAE,KAAK,MAAM;AAAA,UAAE,EAAE,CAAC,GAAE,KAAG;AAAA,QAAC,EAAM;AAAA;AAAA,MAAK;AAAA,MAAC,MAAI,KAAG,KAClG,SAAO,IAAG,KAAK,eAAa,GAAE,KAAK,eAAa,MAAI,KAAK,eAAa,IAAE,GAAE,KAAK,eAAa;AAAA;AAAA,IAAG,WAAW,CAAC,GAAE;AAAA,MAC7G,IAAG,KAAK,eAAa,GAAE;AAAA,QAAC,IAAI,IAAE,KAAK,eAAa,EAAE;AAAA,QAAW,IAAG,IAAE,KAAK,eAAa,KAAK,OAAO,YAAW;AAAA,UAC3G,IAAI;AAAA,UAAE,IAAG,KAAG,KAAK,OAAO,cAAY,KAAK,gBAAc,KAAK;AAAA,YAAa,IAAE,KAAK;AAAA,UAAW;AAAA,YAAC,IAAI,IAAE,KAClG,OAAO,aAAW;AAAA,YAAE,MAAK,KAAG;AAAA,cAAG,KAAG;AAAA,YAAE,IAAE,EAAE,YAAY,CAAC;AAAA;AAAA,UAAE,KAAK,OAAO,KAAK,GAAE,GAAE,KAAK,cAAa,KAAK,eACnG,KAAK,YAAY,GAAE,KAAK,SAAO,GAAE,KAAK,eAAa;AAAA,QAAC;AAAA,QAAC,EAAE,KAAK,KAAK,QAAO,KAAK,eAAa,KAAK,YAAY,GAC3G,KAAK,eAAa;AAAA,MAAC,EAAM;AAAA,aAAK,SAAO,GAAE,KAAK,eAAa,GAAE,KAAK,eAAa,EAAE;AAAA;AAAA,IAAW,YAAY,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,MAC/G,QAAO;AAAA,aAAQ;AAAA,UAAG,OAAO,EAAE;AAAA,aAAkB;AAAA,UAAG,OAAO,EAAE;AAAA,aAAmB;AAAA,UAAG,OAAO,EAAE;AAAA,aAAmB;AAAA,UAC3G,OAAO,EAAE;AAAA,aAAY;AAAA,UAAI,OAAO,EAAE;AAAA,aAAqB;AAAA,UAAG,OAAO,EAAE;AAAA,aAAc;AAAA,UAAG,OAAO,EAAE;AAAA,aAAsB;AAAA,UACnH,OAAO,EAAE;AAAA,aAAgB;AAAA,UAAG,OAAO,KAAK,oBAAoB,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,4BACvF,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,0BAA0B,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,yBAChF,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,4BAA4B,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,4BAClF,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,oBAAoB,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,kBAAkB,GAAE,GAAE,GAAE,OAC7F;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,kBAAkB,GAAE,GAAE,GAAE,QAAQ;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,2BACjF,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAI,OAAO,KAAK,iCAAiC,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,mBACxF,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAG,OAAO,KAAK,oBAAoB,GAAE,GAAE,CAAC;AAAA,aAAO;AAAA,UAAI,OAAO,KAAK,cAAc,GAAE,GAAE,CAAC;AAAA;AAAA,UAC9F,OAAO,IAAI,EAAE,cAAc,gCAA8B,EAAE,SAAS,EAAE,GAAE,GAAE,OAAO;AAAA;AAAA;AAAA,IAAG,yBAAyB,CAAC,GAAE,GAAE,GAAE;AAAA,MACpH,KAAK,OAAO,UAAU,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,OAAO,CAAC;AAAA,MAAE,OAAO,IAAI,EAAE,qBAAqB,GAAE,CAAC;AAAA;AAAA,IAAE,2BAA2B,CAAC,GAAE,GAAE,GAAE;AAAA,MAChI,KAAK,OAAO,UAAU,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,QAAQ;AAAA,MAAE,OAAO,IAAI,EAAE,uBAAuB,GAAE,CAAC;AAAA;AAAA,IAAE,aAAa,CAAC,GAAE,GAAE,GAAE;AAAA,MACpH,IAAI,IAAE,EAAE,MAAM,GAAE,KAAG,IAAE,EAAE;AAAA,MAAE,OAAO,IAAI,EAAE,gBAAgB,GAAE,CAAC;AAAA;AAAA,IAAE,kBAAkB,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,OAAO,KAAK,iBACjG,GAAE,GAAE,GAAE,gBAAgB;AAAA;AAAA,IAAE,mBAAmB,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,OAAO,KAAK,iBAAiB,GAAE,GAAE,GAAE,iBACnF;AAAA;AAAA,IAAE,gBAAgB,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,OAAO,UAAU,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,KAAK,MAAI,GAAE,IAAE,KAAK,OAC9F,MAAM,GAAE,IAAE,IAAI,EAAE,aAAa,GAAE,GAAE,GAAE,CAAC;AAAA,MAAE,SAAQ,IAAE,EAAE,IAAE,GAAE;AAAA,QAAI,EAAE,YAAY,KAAG,KAAK,OAAO,MAAM;AAAA,MAAE,OAAO;AAAA;AAAA,IAAE,wBAAwB,CAAC,GAAE,GAAE,GAAE;AAAA,MACvI,KAAK,OAAO,UAAU,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,MAAM,GAAE,IAAE,KAAK,OAAO,QAAQ,GAAE,IAAE,KAAK,OAAO,QAAQ;AAAA,MACnG,OAAO,IAAI,EAAE,4BAA4B,GAAE,GAAE,GAAE,CAAC;AAAA;AAAA,IAAE,0BAA0B,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,OAAO,UAChG,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,MAAM,GAAE,IAAE,IAAI,EAAE,sBAAsB,GAAE,CAAC;AAAA,MAAE,SAAQ,IAAE,EAAE,IAAE,GAAE;AAAA,QAAI,EAAE,OAAO,KAAG,KAClG,WAAW;AAAA,MAAE,OAAO;AAAA;AAAA,IAAE,UAAU,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,QAAQ,GAAE,IAAE,KAAK,OAAO,OAAO,GAAE,IAAE,KAAK,OAC7F,MAAM,GAAE,IAAE,KAAK,OAAO,OAAO,GAAE,IAAE,KAAK,OAAO,MAAM,GAAE,IAAE,KAAK,OAAO,MAAM,GAAE,IAAE,KAAK,OAAO,MAAM,MAAI,IACnG,SAAO;AAAA,MAAS,OAAO,IAAI,EAAE,MAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC;AAAA;AAAA,IAAE,gCAAgC,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,OAC/F,UAAU,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,MAAM,GAAE,IAAE,IAAI,EAAE,4BAA4B,GAAE,CAAC;AAAA,MAAE,SAAQ,IAAE,EAAE,IAAE,GAAE;AAAA,QAClG,EAAE,YAAY,KAAG,KAAK,OAAO,MAAM;AAAA,MAAE,OAAO;AAAA;AAAA,IAAE,mBAAmB,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,OAAO,UAAU,GAAE,CAAC;AAAA,MAClG,IAAI,IAAE,KAAK,OAAO,MAAM,GAAE,IAAE,IAAI,MAAM,CAAC;AAAA,MAAE,SAAQ,IAAE,EAAE,IAAE,GAAE,KAAI;AAAA,QAAC,IAAI,IAAE,KAAK,OAAO,MAAM;AAAA,QAAE,EAAE,KAAG,MAAI,KACjG,OAAK,KAAK,OAAO,OAAO,CAAC;AAAA,MAAC;AAAA,MAAC,OAAO,IAAI,EAAE,eAAe,GAAE,CAAC;AAAA;AAAA,IAAE,2BAA2B,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,KAC/F,OAAO,UAAU,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,QAAQ,GAAE,IAAE,KAAK,OAAO,QAAQ;AAAA,MAAE,OAAO,IAAI,EAAE,uBACvF,GAAE,GAAE,CAAC;AAAA;AAAA,IAAE,mBAAmB,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,OAAO,UAAU,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,MAAM,GAAE,IAAE,KAAK,OAC9F,MAAM;AAAA,MAAE,OAAO,IAAI,EAAE,sBAAsB,GAAE,GAAE,CAAC;AAAA;AAAA,IAAE,2BAA2B,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,OAAO,UACjG,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,OAAO,MAAM,GAAE,IAAE,EAAC,MAAK,oBAAmB,QAAO,EAAC;AAAA,MAAE,QAAO;AAAA,aAAQ;AAAA,UAAE;AAAA,aAAW;AAAA,UAAE,EAClG,WAAS,MAAI,EAAE,OAAK;AAAA,UAAmC;AAAA,aAAW;AAAA,UAAE,IAAG,EAAE,WAAS,IAAG;AAAA,YAAC,EAAE,OAAK;AAAA,YACxE,IAAI,IAAE,KAAK,OAAO,MAAM,CAAC;AAAA,YAAE,OAAO,IAAI,EAAE,0BAA0B,GAAE,CAAC;AAAA,UAAC;AAAA,UAAC;AAAA,aAAW;AAAA,UACvG;AAAA,YAAC,EAAE,OAAK,sBAAqB,EAAE,aAAW,CAAC;AAAA,YAAE,IAAI;AAAA,YAAE;AAAA,cAAG,IAAE,KAAK,OAAO,QAAQ,GAAE,KAAG,EAAE,WAAW,KAAK,CAAC;AAAA,mBAAQ;AAAA,UAAE;AAAA,UAC9G;AAAA,aAAW;AAAA,UAAG,EAAE,OAAK,8BAA6B,EAAE,OAAK,KAAK,OAAO,OAAO,IAAE,CAAC;AAAA,UAAE;AAAA,aAAW;AAAA,UAAG,EAAE,OACjG,2BAA0B,EAAE,OAAK,KAAK,OAAO,OAAO,IAAE,CAAC;AAAA,UAAE;AAAA;AAAA,UAAc,MAAM,IAAI,MAAM,2CAC3D,CAAC;AAAA;AAAA,MAAE,OAAO;AAAA;AAAA,IAAE,iBAAiB,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,MAAC,KAAK,OAAO,UAAU,GAAE,CAAC;AAAA,MAAE,IAAI,IAAE,CAAC,GACrG,IAAE,KAAK,OAAO,OAAO,CAAC;AAAA,MAAE,MAAK,MAAI;AAAA,QAAM,EAAE,KAAG,KAAK,OAAO,QAAQ,GAAE,IAAE,KAAK,OAAO,OAAO,CAAC;AAAA,MAAE,IAAI,IAAE,EAAE,GAClG,IAAE,MAAI,WAAS,IAAI,EAAE,cAAc,GAAE,CAAC,IAAE,IAAI,EAAE,cAAc,GAAE,GAAE,CAAC;AAAA,MAAE,OAAO,EAAE,WAAS,EAAE,GAAE,EAAE,OAAK,EAAE,GAClG,EAAE,SAAO,EAAE,GAAE,EAAE,OAAK,EAAE,GAAE,EAAE,WAAS,EAAE,GAAE,EAAE,mBAAiB,EAAE,GAAE,EAAE,gBAAc,EAAE,GAAE,EAAE,QAAM,EAAE,GAAE,EAAE,SAChG,EAAE,GAAE,EAAE,QAAM,EAAE,GAAE,EAAE,SAAO,EAAE,GAAE,EAAE,WAAS,EAAE,GAAE,EAAE,aAAW,EAAE,GAAE,EAAE,OAAK,EAAE,GAAE,EAAE,OAAK,EAAE,GAAE,EAAE,UAAQ,EAAE,GAAE;AAAA;AAAA,EAAE;AAAA,EACnG,EAAE,IAAG,QAAQ;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAAG,SAAO;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,QAAI;AAAA,EAAc,EAAE;AAAA,EAAE,OAAO,eAAe,IAAG,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,EAAE,GAAG,gBAAc,GAC1I,YAAU,GAAG,QAAW;AAAA,EAAE,IAAI,KAAG,GAAG;AAAA,EAAE,OAAO,eAAe,IAAG,iBAAgB,EAAC,YAAW,MAAG,KAAI,EAClG,QAAQ,GAAE;AAAA,IAAC,OAAO,GAAG;AAAA,KAAe,KAAK,EAAC,CAAC;AAAA,EAAE,IAAI,KAAG,GAAG;AAAA,EAAE,OAAO,eAAe,IAAG,aAAY;AAAA,IAAC,YAAW;AAAA,IAC1G,KAAI,EAAE,QAAQ,GAAE;AAAA,MAAC,OAAO,GAAG;AAAA,OAAW,KAAK;AAAA,EAAC,CAAC;AAAA,EAAE,IAAI,KAAG,GAAG;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI,GAAG;AAAA,IAAO,OAAO,EACvG,GAAG,QAAO,OAAG,EAAE,MAAM,GAAE,CAAC,CAAC,GAAE,IAAI,QAAQ,OAAG,EAAE,GAAG,OAAM,MAAI,EAAE,CAAC,CAAC;AAAA;AAAA,EAAE,EAAE,IAAG,OAAO;AAAA,EAAE,GAAG,QAAM;AAAA,CAAG;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,SAAQ,MAAI,GAAE,CAAC;AAAE,SAAS,EAAE,GAAE,QAAO,GAAE,YAAW,KAAG;AAAA,EAAC,OAAO,EAAE,SAAS,CAAC,GAAE;AAAA;AAAE,IAAI,KAAG,EAChM,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,EAAE,IAAG,SAAS;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,KAAG,GAAG,EAAE,gBAAc,OAAM,IAAG,WAAU,MAAG,GAAG,GAC/I,KAAG,EAAE,MAAM,GAAE,KAAG,EAAE,KAAK,GAAE,KAAG,EAAE,IAAI,GAAE,KAAG,MAAM,YAAW,GAAE;AAAA,IAAC,WAAW,CAAC,GAAE;AAAA,MAAC,MAAM,GAAE,IAAE,KAAG,CAAC,GAAE,KAAK,SAC/F,EAAE,UAAQ,IAAI,GAAG,QAAO,KAAK,aAAW,EAAE,WAAU,KAAK,+BAA6B,EAAE,6BACxF,KAAK,aAAW,OAAG,KAAK,mBAAiB,CAAC,GAAE,KAAK,MAAI,EAAE,OAAK,OAAG,KAAK,UAAQ,OAAG,KAAK,eAAa;AAAA,MACjG,IAAI,IAAE;AAAA,MAAK,KAAK,GAAG,eAAc,QAAQ,CAAC,GAAE;AAAA,QAAC,MAAI,cAAY,EAAE,eAAa;AAAA,OAAI;AAAA;AAAA,IAAE,OAAO,CAAC,GAAE,GAAE;AAAA,MAAC,IAAI,IAAE;AAAA,MACrG,KAAK,cAAY,MAAG,KAAK,OAAO,WAAW,IAAE,GAAE,KAAK,OAAO,QAAQ,GAAE,CAAC,GAAE,KAAK,OAAO,KAAK,WAAU,QAAQ,GAAE;AAAA,QAC7G,EAAE,cAAY,EAAE,OAAO,aAAa,MAAG,EAAE,4BAA4B,GAAE,EAAE,KAAK,SAAS;AAAA,OAAE;AAAA,MAAE,IAAI,IAAE,EAAE,QAAQ,CAAC,GAAE;AAAA,QAC9G,EAAE,YAAU,EAAE,SAAO,gBAAc,EAAE,SAAO,YAAU,EAAE,KAAK,SAAQ,CAAC;AAAA,SAAG,mBAAmB;AAAA,MAAE,IAAG,KACjG,OAAO,GAAG,SAAQ,CAAC,GAAE,KAAK,OAAO,GAAG,SAAQ,QAAQ,GAAE;AAAA,QAAC,EAAE,KAAK,KAAK;AAAA,OAAE,GAAE,CAAC,KAAK;AAAA,QAAI,OAAO,KAAK,gBAC7F,KAAK,MAAM;AAAA,MAAE,KAAK,OAAO,KAAK,QAAO,QAAQ,CAAC,GAAE;AAAA,QAAC,IAAI,IAAE,EAAE,SAAS,MAAM;AAAA,QAAE,QAAO;AAAA,eAAO;AAAA,YAAI;AAAA,eAAU;AAAA,YACnG,OAAO,EAAE,OAAO,IAAI,GAAE,EAAE,KAAK,SAAQ,IAAI,MAAM,6CAA6C,CAAC;AAAA;AAAA,YAChG,OAAO,EAAE,OAAO,IAAI,GAAE,EAAE,KAAK,SAAQ,IAAI,MAAM,mDAAmD,CAAC;AAAA;AAAA,QACnG,IAAI,KAAG,GAAG,GAAE,EAAE,EAAE;AAAA,QAAG,IAAI,IAAE,EAAC,QAAO,EAAE,OAAM;AAAA,QAAE,EAAE,QAAM,SAAK,OAAO,OAAO,GAAE,EAAE,GAAG,IAAE,SAAQ,EAAE,SAAM,EAAE,MACjG,EAAE,IAAI,OAAM,GAAG,KAAK,CAAC,MAAI,MAAI,EAAE,aAAW;AAAA,QAAG,IAAG;AAAA,UAAC,EAAE,SAAO,EAAE,QAAQ,CAAC;AAAA,UAAE,OAAM,GAAE;AAAA,UAAC,OAAO,EAAE,KAAK,SAC9F,CAAC;AAAA;AAAA,QAAE,EAAE,gBAAgB,EAAE,MAAM,GAAE,EAAE,OAAO,GAAG,SAAQ,CAAC,GAAE,EAAE,KAAK,YAAY;AAAA,OAAE;AAAA;AAAA,IAAE,eAAe,CAAC,GAAE;AAAA,MAAC,EAAE,GAClG,OAAM,MAAI;AAAA,QAAC,KAAK,KAAK,KAAK;AAAA,OAAE,GAAE,GAAG,GAAE,OAAG;AAAA,QAAC,IAAI,IAAE,EAAE,SAAO,UAAQ,iBAAe,EAAE;AAAA,QAAK,KAAK,gBACzF,KAAK,KAAK,WAAU,CAAC,GAAE,KAAK,KAAK,GAAE,CAAC;AAAA,OAAE;AAAA;AAAA,IAAE,UAAU,GAAE;AAAA,MAAC,KAAK,OAAO,MAAM,EAAE,WAAW,CAAC;AAAA;AAAA,IAAE,OAAO,CAAC,GAAE;AAAA,MAAC,KAClG,OAAO,MAAM,EAAE,QAAQ,CAAC,CAAC;AAAA;AAAA,IAAE,MAAM,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,OAAO,GAAE,CAAC,CAAC;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC;AAAA;AAAA,IAAE,8BAA8B,CAAC,GAAE,GAAE;AAAA,MAC1I,KAAK,MAAM,EAAE,+BAA+B,GAAE,CAAC,CAAC;AAAA;AAAA,IAAE,2BAA2B,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,4BAC9F,CAAC,CAAC;AAAA;AAAA,IAAE,KAAK,CAAC,GAAE;AAAA,MAAC,OAAO,KAAK,OAAO,WAAS,KAAK,OAAO,MAAM,CAAC,IAAE;AAAA;AAAA,IAAG,KAAK,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;AAAA;AAAA,IAAE,KAAK,CAAC,GAAE;AAAA,MACzG,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;AAAA;AAAA,IAAE,IAAI,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC;AAAA;AAAA,IAAE,OAAO,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,QAAQ,CAAC,CAAC;AAAA;AAAA,IAAE,KAAK,GAAE;AAAA,MAAC,KACjG,OAAO,YAAU,KAAK,OAAO,MAAM,EAAE;AAAA;AAAA,IAAE,IAAI,GAAE;AAAA,MAAC,KAAK,UAAQ,MAAG,KAAK,MAAM,EAAE,GAAE,KAAK,MAAM,EAAE;AAAA;AAAA,IAAE,GAAG,GAAE;AAAA,MAAC,KAClG,OAAO,IAAI;AAAA;AAAA,IAAE,KAAK,GAAE;AAAA,MAAC,KAAK,OAAO,MAAM;AAAA;AAAA,IAAE,GAAG,GAAE;AAAA,MAAC,IAAG,KAAK,UAAQ,MAAG,CAAC,KAAK,eAAa,CAAC,KAAK,OAAO,UAAS;AAAA,QAC3G,KAAK,OAAO,IAAI;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,OAAO,KAAK,OAAO,MAAM,IAAG,MAAI;AAAA,QAAC,KAAK,OAAO,IAAI;AAAA,OAAE;AAAA;AAAA,IAAE,KAAK,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAClG,MAAM,CAAC,CAAC;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC;AAAA;AAAA,IAAE,iBAAiB,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC;AAAA;AAAA,IAAE,WAAW,GAAE;AAAA,MAC5G,KAAK,MAAM,EAAE,SAAS,CAAC;AAAA;AAAA,IAAE,YAAY,CAAC,GAAE;AAAA,MAAC,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,YAAY;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAClG,UAAQ;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,EAAE,cAAa,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAChH,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,MAAM,YAAW,GAAE;AAAA,IAAC,WAAW,CAAC,GAAE;AAAA,MAAC,MAAM,GAAE,KAAK,uBAC3F,IAAI,GAAG,CAAC,GAAE,KAAK,OAAK,KAAK,qBAAqB,MAAK,KAAK,WAAS,KAAK,qBAAqB,UAC3F,KAAK,OAAK,KAAK,qBAAqB,MAAK,KAAK,OAAK,KAAK,qBAAqB,MAAK,OAAO,eACzF,MAAK,YAAW,EAAC,cAAa,MAAG,YAAW,OAAG,UAAS,MAAG,OAAM,KAAK,qBAAqB,SAAQ,CAAC,GACpG,KAAK,cAAY,KAAK,qBAAqB;AAAA,MAAY,IAAI,IAAE,KAAG,CAAC;AAAA,MAAE,KAAK,WAAS,EAAE,WAAS,EAAE,SAC9F,KAAK,SAAO,IAAI,GAAG,EAAE,KAAK,GAAE,KAAK,UAAQ,OAAG,KAAK,cAAY,OAAG,KAAK,aAAW,OAAG,KAAK,mBACxF,OAAG,KAAK,aAAW,MAAG,KAAK,aAAW,EAAE,cAAY,IAAI,GAAG,EAAC,QAAO,EAAE,QAAO,KAAI,KAAK,qBACrF,KAAI,WAAU,EAAE,aAAW,OAAG,6BAA4B,EAAE,+BAA6B,GAAE,UAAS,KACpG,qBAAqB,mBAAiB,OAAM,CAAC,GAAE,KAAK,aAAW,CAAC,GAAE,KAAK,SAAO,EAAE,UAAQ,GAAG,QAAO,KAClG,YAAU,MAAK,KAAK,YAAU,MAAK,KAAK,MAAI,KAAK,qBAAqB,OAAK,OAAG,KAAK,OAAK,KAAK,IAAI,OACjG,OAAO,eAAe,KAAK,KAAI,OAAM,EAAC,YAAW,MAAE,CAAC,GAAE,KAAK,2BAAyB,EAAE,2BACtF;AAAA;AAAA,IAAE,gBAAgB,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,EAAE,OAAG;AAAA,QAAC,EAAE,SAAS,MAAI;AAAA,UAAC,EAAE,YAAY,GAAE,KAAK,UAAU;AAAA,SAAE;AAAA,SAAG,cAAc;AAAA,MACpG,KAAK,gBAAc,EAAE,KAAK,WAAW,GAAE,KAAK,cAAY,OAAM,KAAK,WAAW,QAAQ,CAAC,GAAE,KAAK,WAC9F,SAAO;AAAA;AAAA,IAAE,QAAQ,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,MAAK,IAAE,KAAK;AAAA,MAAW,IAAG,KAAK,sBAAoB,GAAE,KAAK,eAAa,KAClG,YAAW;AAAA,QAAC,IAAI,IAAE,IAAI,MAAM,+DAA+D;AAAA,QAAE,EAAE,SAC/F,MAAI;AAAA,UAAC,EAAE,CAAC;AAAA,SAAE;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,KAAK,cAAY,MAAG,KAAK,yBAAwB,KAAK,2BAAyB,MACjG,KAAK,0BAAwB,WAAW,MAAI;AAAA,QAAC,EAAE,UAAQ,MAAG,EAAE,OAAO,QAAQ,IAAI,MAAM,iBACnF,CAAC;AAAA,SAAG,KAAK,wBAAwB,IAAG,KAAK,QAAM,KAAK,KAAK,QAAQ,GAAG,MAAI,IAAE,EAAE,QAAQ,KAAK,OAAK,eACvF,KAAK,IAAI,IAAE,EAAE,QAAQ,KAAK,MAAK,KAAK,IAAI,GAAE,EAAE,GAAG,WAAU,QAAQ,GAAE;AAAA,QAAC,EAAE,MAAI,EAAE,WAAW,IAAE,EACnG,QAAQ,EAAE,eAAe,CAAC;AAAA,OAAE,GAAE,EAAE,GAAG,cAAa,QAAQ,GAAE;AAAA,QAAC,EAAE,QAAQ,EAAE,eAAe,CAAC;AAAA,OAAE,GAAE,KAAK,iBAChG,CAAC,GAAE,EAAE,KAAK,OAAM,MAAI;AAAA,QAAC,IAAI,IAAE,KAAK,UAAQ,IAAI,MAAM,uBAAuB,IAAE,IAAI,MAAM,oCAChE;AAAA,QAAE,aAAa,KAAK,uBAAuB,GAAE,KAAK,iBAAiB,CAAC,GAAE,KAAK,YAC/F,KAAK,eAAa,CAAC,KAAK,mBAAiB,KAAK,sBAAoB,KAAK,oBAAoB,CAAC,IAAE,KAC/F,kBAAkB,CAAC,IAAE,KAAK,oBAAkB,KAAK,kBAAkB,CAAC,IAAG,EAAE,SAAS,MAAI;AAAA,UAAC,KAAK,KAAK,KAC/F;AAAA,SAAE;AAAA,OAAE;AAAA;AAAA,IAAE,OAAO,CAAC,GAAE;AAAA,MAAC,IAAG,GAAE;AAAA,QAAC,KAAK,SAAS,CAAC;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,OAAO,IAAI,KAAK,SAAS,CAAC,GAAE,MAAI;AAAA,QAAC,KAAK,SAAS,OAAG;AAAA,UACnG,IAAE,EAAE,CAAC,IAAE,EAAE;AAAA,SAAE;AAAA,OAAE;AAAA;AAAA,IAAE,gBAAgB,CAAC,GAAE;AAAA,MAAC,EAAE,GAAG,mCAAkC,KAAK,6BAC/E,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,6BAA4B,KAAK,uBAAuB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,sBAC/E,KAAK,gBAAgB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,8BAA6B,KAAK,wBACnF,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,2BAA0B,KAAK,qBAAqB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,kBACnF,KAAK,sBAAsB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,SAAQ,KAAK,kBAAkB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,gBACrF,KAAK,oBAAoB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,iBAAgB,KAAK,qBAAqB,KAAK,IAAI,CAAC,GACxG,EAAE,GAAG,UAAS,KAAK,cAAc,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,kBAAiB,KAAK,sBAAsB,KAAK,IAAI,CAAC,GACxG,EAAE,GAAG,WAAU,KAAK,eAAe,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,mBAAkB,KAAK,uBAAuB,KAClG,IAAI,CAAC,GAAE,EAAE,GAAG,cAAa,KAAK,kBAAkB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,mBAAkB,KAAK,uBACxF,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,iBAAgB,KAAK,qBAAqB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,kBAAiB,KAAK,sBAClG,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,YAAW,KAAK,gBAAgB,KAAK,IAAI,CAAC,GAAE,EAAE,GAAG,gBAAe,KAAK,oBACtF,KAAK,IAAI,CAAC;AAAA;AAAA,IAAE,YAAY,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK;AAAA,MAAW,OAAO,KAAK,YAAU,aAAW,KAAK,SAAS,QAAQ,EACzG,KAAK,MAAI,KAAK,SAAS,CAAC,EAAE,KAAK,OAAG;AAAA,QAAC,IAAG,MAAS,WAAE;AAAA,UAAC,IAAG,OAAO,KAAG,UAAS;AAAA,YAAC,EAAE,KAAK,SAAQ,IAAI,UAC5F,2BAA2B,CAAC;AAAA,YAAE;AAAA,UAAM;AAAA,UAAC,KAAK,qBAAqB,WAAS,KAAK,WAAS;AAAA,QAAC,EAAM;AAAA,eAAK,qBAClG,WAAS,KAAK,WAAS;AAAA,QAAK,EAAE;AAAA,OAAE,EAAE,MAAM,OAAG;AAAA,QAAC,EAAE,KAAK,SAAQ,CAAC;AAAA,OAAE,IAAE,KAAK,aAAW,OAAK,EAAE,IAAE,GAAG,KAAK,sBACjG,OAAG;AAAA,QAAC,MAAS,cAAI,KAAK,qBAAqB,WAAS,KAAK,WAAS,IAAG,EAAE;AAAA,OAAE;AAAA;AAAA,IAAE,4BAA4B,CAAC,GAAE;AAAA,MAC1G,KAAK,aAAa,MAAI;AAAA,QAAC,KAAK,WAAW,SAAS,KAAK,QAAQ;AAAA,OAAE;AAAA;AAAA,IAAE,sBAAsB,CAAC,GAAE;AAAA,MAAC,KAAK,aAChG,MAAI;AAAA,QAAC,IAAI,IAAE,GAAG,wBAAwB,KAAK,MAAK,KAAK,UAAS,EAAE,IAAI;AAAA,QAAE,KAAK,WAAW,SAAS,CAAC;AAAA,OAAE;AAAA;AAAA,IAAE,eAAe,CAAC,GAAE;AAAA,MACtH,KAAK,aAAa,MAAI;AAAA,QAAC,KAAK,cAAY,GAAG,aAAa,EAAE,UAAU,GAAE,KAAK,WAAW,+BACtF,KAAK,YAAY,WAAU,KAAK,YAAY,QAAQ;AAAA,OAAE;AAAA;AAAA,IAAE,uBAAuB,CAAC,GAAE;AAAA,MAAC,GAAG,gBACtF,KAAK,aAAY,KAAK,UAAS,EAAE,IAAI,GAAE,KAAK,WAAW,4BAA4B,KAAK,YACxF,QAAQ;AAAA;AAAA,IAAE,oBAAoB,CAAC,GAAE;AAAA,MAAC,GAAG,gBAAgB,KAAK,aAAY,EAAE,IAAI,GAAE,KAAK,cAAY;AAAA;AAAA,IAAK,qBAAqB,CAAC,GAAE;AAAA,MAC5H,KAAK,YAAU,EAAE,WAAU,KAAK,YAAU,EAAE;AAAA;AAAA,IAAU,oBAAoB,CAAC,GAAE;AAAA,MAAC,KAAK,gBAAc,KACjG,cAAY,OAAG,KAAK,aAAW,MAAG,aAAa,KAAK,uBAAuB,GAAE,KAAK,wBACjF,KAAK,oBAAoB,MAAK,IAAI,GAAE,KAAK,sBAAoB,OAAM,KAAK,KAAK,SAAS;AAAA,MAAG,MAAI,aAAY,MAAG;AAAA,MAC7G,KAAK,cAAY,MAAK,KAAK,gBAAc,MAAG,KAAG,EAAE,oBAAoB,KAAK,UAAU,GAAE,KAAK,iBAAiB;AAAA;AAAA,IAAE,2BAA2B,CAAC,GAAE;AAAA,MAC5I,IAAG,CAAC,KAAK,kBAAiB;AAAA,QAAC,IAAG,KAAK,mBAAiB,MAAG,aAAa,KAAK,uBAAuB,GAAE,KAClG;AAAA,UAAoB,OAAO,KAAK,oBAAoB,CAAC;AAAA,QAAE,KAAK,KAAK,SAAQ,CAAC;AAAA,MAAC;AAAA;AAAA,IAAE,iBAAiB,CAAC,GAAE;AAAA,MAAC,IAAG,KACrG;AAAA,QAAY,OAAO,KAAK,4BAA4B,CAAC;AAAA,MAAE,KAAK,aAAW,OAAG,KAAK,iBAAiB,CAAC,GAAE,KACnG,KAAK,SAAQ,CAAC;AAAA;AAAA,IAAE,mBAAmB,CAAC,GAAE;AAAA,MAAC,IAAG,KAAK;AAAA,QAAY,OAAO,KAAK,4BAA4B,CAAC;AAAA,MACpG,IAAI,IAAE,KAAK;AAAA,MAAY,IAAG,CAAC,GAAE;AAAA,QAAC,KAAK,kBAAkB,CAAC;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,KAAK,cAAY,MAAK,EAAE,YAAY,GACnG,KAAK,UAAU;AAAA;AAAA,IAAE,qBAAqB,CAAC,GAAE;AAAA,MAAC,KAAK,YAAY,qBAAqB,CAAC;AAAA;AAAA,IAAE,cAAc,CAAC,GAAE;AAAA,MACpG,KAAK,YAAY,cAAc,CAAC;AAAA;AAAA,IAAE,sBAAsB,CAAC,GAAE;AAAA,MAAC,KAAK,YAAY,sBAAsB,KACnG,UAAU;AAAA;AAAA,IAAE,iBAAiB,CAAC,GAAE;AAAA,MAAC,KAAK,YAAY,iBAAiB,KAAK,UAAU;AAAA;AAAA,IAAE,sBAAsB,CAAC,GAAE;AAAA,MAC7G,KAAK,YAAY,sBAAsB,GAAE,KAAK,UAAU;AAAA;AAAA,IAAE,oBAAoB,CAAC,GAAE;AAAA,MAAC,KAAK,YAAY,SAClG,KAAK,WAAW,iBAAiB,KAAK,YAAY,QAAM,KAAK,YAAY;AAAA;AAAA,IAAM,qBAAqB,CAAC,GAAE;AAAA,MACxG,KAAK,YAAY,qBAAqB,KAAK,UAAU;AAAA;AAAA,IAAE,eAAe,CAAC,GAAE;AAAA,MAAC,KAAK,YAAY,eAC3F,GAAE,KAAK,UAAU;AAAA;AAAA,IAAE,mBAAmB,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,gBAAe,CAAC;AAAA;AAAA,IAAE,aAAa,CAAC,GAAE;AAAA,MAAC,KAAK,KAAK,UAC3F,CAAC;AAAA;AAAA,IAAE,cAAc,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,sBAAqB,IAAE,EAAC,MAAK,EAAE,MAAK,UAAS,EAAE,SAAQ,GAAE,IAAE,EAAE,oBAClG,EAAE;AAAA,MAA0B,OAAO,MAAI,EAAE,mBAAiB,IAAG,EAAE,gBAAc,EAAE,cAAY,KAAG,EAAE,cAChG,EAAE,sBAAoB,EAAE,oBAAkB,OAAO,SAAS,EAAE,mBAAkB,EAAE,CAAC,IAAG,EAAE,iBACrF,EAAE,eAAa,OAAO,SAAS,EAAE,cAAa,EAAE,CAAC,IAAG,EAAE,wCAAsC,EAAE,sCAC/F,OAAO,SAAS,EAAE,qCAAoC,EAAE,CAAC,IAAG,EAAE,YAAU,EAAE,UAAQ,EAAE,UAAS;AAAA;AAAA,IAAE,MAAM,CAAC,GAAE,GAAE;AAAA,MAC1G,IAAG,EAAE,gBAAc,GAAE;AAAA,QAAC,IAAI,IAAE,KAAK;AAAA,QAAW,KAAK,QAAM,KAAK,KAAK,QAAQ,GAAG,MAAI,IAAE,EAAE,QAAQ,KAAK,OACjG,eAAa,KAAK,IAAI,IAAE,EAAE,QAAQ,KAAK,MAAK,KAAK,IAAI,GAAE,EAAE,GAAG,WAAU,QAAQ,GAAE;AAAA,UAAC,EAAE,OAAO,EAAE,WAC5F,EAAE,SAAS;AAAA,SAAE;AAAA,MAAC,EAAM;AAAA,UAAE,WAAW,QAAQ,CAAC,MAAI,MAAI,EAAE,WAAW,OAAO,EAAE,WAAW,QAAQ,CAAC,GAAE,CAAC;AAAA;AAAA,IAAE,aAAa,CAAC,GAAE,GAAE,GAAE;AAAA,MACrH,OAAO,KAAK,OAAO,cAAc,GAAE,GAAE,CAAC;AAAA;AAAA,IAAE,aAAa,CAAC,GAAE,GAAE;AAAA,MAAC,OAAO,KAAK,OAAO,cAAc,GAAE,CAAC;AAAA;AAAA,IAAE,gBAAgB,CAAC,GAAE;AAAA,MACpH,OAAM,MAAI,EAAE,QAAQ,MAAK,IAAI,IAAE;AAAA;AAAA,IAAI,aAAa,CAAC,GAAE;AAAA,MAAC,SAAQ,IAAE,OAAG,IAAE,KAAI,IAAE,EAAE,IAAE,EAAE,QAAO,KAAI;AAAA,QAAC,IAAI,IAAE,EAAE;AAAA,QACnG,MAAI,MAAI,KAAG,IAAE,IAAE,MAAI,QAAM,KAAG,IAAE,GAAE,IAAE,QAAI,KAAG;AAAA,MAAC;AAAA,MAAC,OAAO,KAAG,KAAI,MAAI,SAAK,IAAE,OAAK,IAAG;AAAA;AAAA,IAAE,gBAAgB,GAAE;AAAA,MAAC,IAAG,KACpG,kBAAgB;AAAA,QAAG,IAAG,KAAK,cAAY,KAAK,WAAW,MAAM,GAAE,KAAK,aAAY;AAAA,UAAC,KAAK,gBACtF,OAAG,KAAK,cAAY;AAAA,UAAG,IAAI,IAAE,KAAK,YAAY,OAAO,KAAK,UAAU;AAAA,UAAE,KAAG,EAAE,SAAS,MAAI;AAAA,YAAC,KAAK,YAC9F,YAAY,GAAE,KAAK,UAAU,GAAE,KAAK,gBAAc,MAAG,KAAK,iBAAiB;AAAA,WAAE;AAAA,QAAC,EAAM;AAAA,eAAK,gBACxF,KAAK,cAAY,MAAK,KAAK,KAAK,OAAO;AAAA;AAAA,IAAG,KAAK,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,IAAI,GAAE,GAAE,GAAE,GAAE;AAAA,MAAE,IAAG,KAAG;AAAA,QAAK,MAAM,IAAI,UAC3F,6CAA6C;AAAA,MAAE,OAAO,OAAO,EAAE,UAAQ,cAAY,IAAE,EAAE,iBACvF,KAAK,qBAAqB,eAAc,IAAE,IAAE,GAAE,OAAO,KAAG,eAAa,EAAE,WAAS,EAAE,YAAU,OAAK,IAAE,KACnG,qBAAqB,eAAc,IAAE,IAAI,GAAG,GAAE,GAAE,CAAC,GAAE,EAAE,aAAW,IAAE,IAAI,KAAK,SAAS,CAAC,GAAE,MAAI;AAAA,QAAC,EAAE,WAC9F,CAAC,GAAE,MAAI,IAAE,EAAE,CAAC,IAAE,EAAE,CAAC;AAAA,OAAE,KAAI,MAAI,IAAE,EAAE,UAAS,IAAE,WAAW,MAAI;AAAA,QAAC,IAAI,IAAE,IAAI,MAAM,oBAAoB;AAAA,QAAE,EAAE,SAClG,MAAI;AAAA,UAAC,EAAE,YAAY,GAAE,KAAK,UAAU;AAAA,SAAE,GAAE,EAAE,CAAC,GAAE,EAAE,WAAS,MAAI;AAAA,QAAG,IAAI,IAAE,KAAK,WAAW,QAAQ,CAAC;AAAA,QAAE,IAAE,MAClG,KAAK,WAAW,OAAO,GAAE,CAAC,GAAE,KAAK,iBAAiB;AAAA,SAAG,CAAC,GAAE,EAAE,WAAS,CAAC,GAAE,MAAI;AAAA,QAAC,aAAa,CAAC,GAAE,EAAE,GAAE,CAAC;AAAA,UAChG,KAAK,UAAQ,CAAC,EAAE,WAAS,EAAE,SAAO,OAAI,EAAE,WAAS,CAAC,EAAE,QAAQ,WAAS,EAAE,QAAQ,SAAO,KAAK,SAAQ,KACnG,aAAW,KAAK,WAAS,EAAE,SAAS,MAAI;AAAA,QAAC,EAAE,YAAY,IAAI,MAAM,wCAC5D,GAAE,KAAK,UAAU;AAAA,OAAE,GAAE,MAAI,KAAK,WAAW,KAAK,CAAC,GAAE,KAAK,iBAAiB,GAAE,MAAI,EAAE,SAAS,MAAI;AAAA,QAAC,EAClG,YAAY,IAAI,MAAM,gEAAgE,GAAE,KAAK,UAAU;AAAA,OAAE,GACzG;AAAA;AAAA,IAAG,GAAG,GAAE;AAAA,MAAC,KAAK,WAAW,IAAI;AAAA;AAAA,IAAE,KAAK,GAAE;AAAA,MAAC,KAAK,WAAW,MAAM;AAAA;AAAA,IAAE,GAAG,CAAC,GAAE;AAAA,MAAC,IAAG,KAAK,UAAQ,MAAG,CAAC,KAAK,WAC/F;AAAA,QAAY,IAAG;AAAA,UAAE,EAAE;AAAA,QAAO;AAAA,iBAAO,KAAK,SAAS,QAAQ;AAAA,MAAE,IAAG,KAAK,eAAa,CAAC,KAAK,aAAW,KAC/F,WAAW,OAAO,QAAQ,IAAE,KAAK,WAAW,IAAI,GAAE;AAAA,QAAE,KAAK,WAAW,KAAK,OAAM,CAAC;AAAA,MAAO;AAAA,eAAO,IAAI,KAClG,SAAS,OAAG;AAAA,UAAC,KAAK,WAAW,KAAK,OAAM,CAAC;AAAA,SAAE;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,QAAQ;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAAG,QAAM;AAAA,EAAG,GAAG,UAAQ;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,EAAE,cAAa,KAAG,EAAE,QAAQ,GAAE,IAAG,MAAM,GAAE,KAAG,EAAE,CAAC,GAAE,MAAI;AAAA,IACvM,IAAI,IAAE,EAAE,UAAU,CAAC;AAAA,IAAE,OAAO,MAAI,KAAQ,YAAE,EAAE,OAAO,GAAE,CAAC,EAAE;AAAA,KAAI,aAAa,GAAE,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,MACzG,KAAK,SAAO,GAAE,KAAK,eAAa,GAAE,KAAK,YAAU;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,UAAU;AAAA,EAAE,IAAI,KAAG,IAAG,KAAG,MAAM,IAAE;AAAA,IAAC,WAAW,CAAC,GAAE;AAAA,MAC1G,KAAK,WAAS;AAAA;AAAA,EAAE;AAAA,EAAE,EAAE,IAAG,aAAa;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,SAAS,EAAE,GAAE;AAAA,IAAC,MAAM,IAAI,MAAM,uEAC7B;AAAA;AAAA,EAAE,EAAE,IAAG,sBAAsB;AAAA,EAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,IAAG;AAAA,MACpG,OAAM,EAAC,UAAS,GAAE,QAAY,UAAC;AAAA,IAAE,IAAI,GAAE,GAAE,IAAE,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,MAAC,IAAE,EAAE,CAAC,IAAE,EAAE,CAAC;AAAA,OAAG,IAAI,GAAE,IAAE,IAAI,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,MACnG,IAAE,GAAE,IAAE;AAAA,KAAE,EAAE,MAAM,OAAG;AAAA,MAAC,MAAM,MAAM,kBAAkB,CAAC,GAAE;AAAA,KAAE;AAAA,IAAE,OAAM,EAAC,UAAS,GAAE,QAAO,EAAC;AAAA;AAAA,EAAE,EAAE,IAAG,WAAW;AAAA,EACrG,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,EAAE,SAAS,CAAC,CAAC,GAAE;AAAA,MAAC,EAAE,SAAO,GAAE,EAAE,eAAe,SAAQ,CAAC,GAAE,EAAE,GAAG,SAAQ,MAAI;AAAA,QAAC,EAAE,IACnG,4DAA2D,CAAC;AAAA,OAAE,GAAE,EAAE,QAAQ,CAAC,GAAE,EAAE,KAAK,SAAQ,GAAE,CAAC;AAAA,OAAG,cACtF;AAAA;AAAA,EAAE,EAAE,IAAG,kBAAkB;AAAA,EAAE,IAAI,KAAG,MAAM,YAAW,GAAE;AAAA,IAAC,WAAW,CAAC,GAAE,GAAE;AAAA,MAAC,MAAM,GAAE,KAAK,UAChG,OAAO,OAAO,CAAC,GAAE,CAAC,GAAE,KAAG,QAAM,cAAa,KAAG,OAAO,eAAe,KAAK,SAAQ,YAAW;AAAA,QAAC,cAAa;AAAA,QACzG,YAAW;AAAA,QAAG,UAAS;AAAA,QAAG,OAAM,EAAE;AAAA,MAAQ,CAAC,GAAE,KAAG,QAAM,EAAE,OAAK,EAAE,IAAI,OAAK,OAAO,eAAe,KAAK,QACnG,KAAI,OAAM,EAAC,YAAW,MAAE,CAAC,GAAE,KAAK,QAAQ,MAAI,KAAK,QAAQ,OAAK,KAAK,QAAQ,YAAU,IAAG,KAAK,QAC7F,MAAI,KAAK,QAAQ,OAAK,GAAE,KAAK,QAAQ,UAAQ,KAAK,QAAQ,WAAS,IAAE,GAAE,KAAK,QAAQ,kBACpF,KAAK,QAAQ,mBAAiB,OAAG,KAAK,QAAQ,qBAAmB,KAAK,QAAQ,sBAAoB,GAClG,KAAK,MAAI,KAAK,QAAQ,OAAK,QAAQ,GAAE,IAAG,KAAK,SAAO,KAAK,QAAQ,UAAQ,KAAG,GAAG,EAAE,QAAO,KAAK,UAC7F,KAAK,QAAQ,WAAS,EAAE,SAAQ,OAAO,KAAK,QAAQ,oBAAkB,QAAM,KAAK,QAAQ,oBACzF,MAAK,KAAK,WAAS,CAAC,GAAE,KAAK,QAAM,CAAC,GAAE,KAAK,WAAS,IAAI,SAAQ,KAAK,gBAAc,CAAC,GAAE,KAAK,eACpF,WAAE,KAAK,SAAO,OAAG,KAAK,QAAM;AAAA;AAAA,IAAG,OAAO,GAAE;AAAA,MAAC,OAAO,KAAK,SAAS,UAAQ,KAAK,QAAQ;AAAA;AAAA,IAAI,WAAW,GAAE;AAAA,MACzG,OAAO,KAAK,SAAS,SAAO,KAAK,QAAQ;AAAA;AAAA,IAAI,WAAW,GAAE;AAAA,MAAC,IAAG,KAAK,IAAI,aAAa,GAAE,KAAK,OAAM;AAAA,QAAC,KAClG,IAAI,mBAAmB;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,IAAG,KAAK,QAAO;AAAA,QAAC,KAAK,IAAI,uBAAuB,GAAE,KAAK,MAAM,UAC7F,KAAK,MAAM,MAAM,EAAE,IAAI,OAAG;AAAA,UAAC,KAAK,QAAQ,EAAE,MAAM;AAAA,SAAE,GAAE,KAAK,SAAS,WAAS,KAAK,QAAM,MAAG,KAAK,aAAa;AAAA,QAC3G;AAAA,MAAM;AAAA,MAAC,IAAG,CAAC,KAAK,cAAc,QAAO;AAAA,QAAC,KAAK,IAAI,oBAAoB;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,IAAG,CAAC,KAAK,MAAM,UAAQ,KACnG,QAAQ;AAAA,QAAE;AAAA,MAAO,IAAI,IAAE,KAAK,cAAc,MAAM;AAAA,MAAE,IAAG,KAAK,MAAM,QAAO;AAAA,QAAC,IAAI,IAAE,KAAK,MAAM,IAAI;AAAA,QAAE,aAC/F,EAAE,SAAS;AAAA,QAAE,IAAI,IAAE,EAAE;AAAA,QAAO,EAAE,OAAK,EAAE,IAAI;AAAA,QAAE,IAAI,IAAE,EAAE;AAAA,QAAa,OAAO,KAAK,eAAe,GAAE,GAAE,GAAE,KAAE;AAAA,MAAC;AAAA,MACpG,IAAG,CAAC,KAAK,QAAQ;AAAA,QAAE,OAAO,KAAK,UAAU,CAAC;AAAA,MAAE,MAAM,IAAI,MAAM,sBAAsB;AAAA;AAAA,IAAE,OAAO,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,GACrG,KAAK,OAAM,OAAG,EAAE,WAAS,CAAC;AAAA,MAAE,MAAS,aAAG,aAAa,EAAE,SAAS,GAAE,KAAK,WAAS,KAAK,SAAS,OAC9F,OAAG,MAAI,CAAC,GAAE,EAAE,IAAI,GAAE,KAAK,KAAK,UAAS,CAAC;AAAA;AAAA,IAAE,OAAO,CAAC,GAAE;AAAA,MAAC,IAAG,KAAK,QAAO;AAAA,QAAC,IAAI,IAAE,IAAI,MAAM,iDACnD;AAAA,QAAE,OAAO,IAAE,EAAE,CAAC,IAAE,KAAK,QAAQ,OAAO,CAAC;AAAA,MAAC;AAAA,MAAC,IAAI,IAAE,GAAG,KAAK,SAAQ,CAAC,GAAE,IAAE,EAClG;AAAA,MAAO,IAAG,KAAK,QAAQ,KAAG,KAAK,MAAM,QAAO;AAAA,QAAC,IAAG,KAAK,MAAM,UAAQ,EAAE,SAAS,MAAI,KAAK,YAAY,CAAC,GACpG,CAAC,KAAK,QAAQ;AAAA,UAAwB,OAAO,KAAK,cAAc,KAAK,IAAI,GAAG,EAAE,QAAQ,CAAC,GAAE;AAAA,QAAE,IAAI,IAAE,EAAE,CAAC,GAAE,GAAE,MAAI;AAAA,UAC5G,aAAa,CAAC,GAAE,EAAE,SAAS,GAAE,GAAE,CAAC;AAAA,WAAG,eAAe,GAAE,IAAE,IAAI,GAAG,CAAC,GAAE,IAAE,WAAW,MAAI;AAAA,UAAC,GAAG,KAAK,eAC1F,OAAG,EAAE,aAAW,CAAC,GAAE,EAAE,WAAS,MAAG,EAAE,SAAS,IAAI,MAAM,yCAAyC,CAAC;AAAA,WAAG,KACnG,QAAQ,uBAAuB;AAAA,QAAE,OAAO,EAAE,SAAO,EAAE,MAAM,GAAE,KAAK,cAAc,KAAK,CAAC,GAAE;AAAA,MAAC;AAAA,MAAC,OAAO,KAC/F,UAAU,IAAI,GAAG,EAAE,QAAQ,CAAC,GAAE;AAAA;AAAA,IAAE,SAAS,CAAC,GAAE;AAAA,MAAC,IAAI,IAAE,IAAI,KAAK,OAAO,KAAK,OAAO;AAAA,MAAE,KAAK,SAAS,KAC/F,CAAC;AAAA,MAAE,IAAI,IAAE,GAAG,MAAK,CAAC;AAAA,MAAE,KAAK,IAAI,yBAAyB;AAAA,MAAE,IAAI,GAAE,IAAE;AAAA,MAAG,KAAK,QAAQ,4BAC/E,IAAE,WAAW,MAAI;AAAA,QAAC,KAAK,IAAI,8BAA8B,GAAE,IAAE,MAAG,EAAE,aAAW,EAAE,WAAW,OAAO,QAAQ,IAC1G,EAAE,IAAI;AAAA,SAAG,KAAK,QAAQ,uBAAuB,IAAG,KAAK,IAAI,uBAAuB,GAAE,EAAE,QAAQ,OAAG;AAAA,QAAC,IAAG,KACnG,aAAa,CAAC,GAAE,EAAE,GAAG,SAAQ,CAAC,GAAE;AAAA,UAAE,KAAK,IAAI,4BAA2B,CAAC,GAAE,KAAK,WAAS,KAAK,SAC5F,OAAO,OAAG,MAAI,CAAC,GAAE,MAAI,IAAE,IAAI,MAAM,mDAAkD,EAAC,OAAM,EAAC,CAAC,IAAG,KAC/F,YAAY,GAAE,EAAE,YAAU,EAAE,SAAS,GAAO,WAAE,EAAE;AAAA,QAAM;AAAA,UAAC,IAAG,KAAK,IAAI,sBAAsB,GAAE,KAAK,QAChG,uBAAqB,GAAE;AAAA,YAAC,IAAI,IAAE,WAAW,MAAI;AAAA,cAAC,KAAK,IAAI,uCAAuC,GAAE,KAChG,SAAS,IAAI,CAAC,GAAE,KAAK,MAAM,UAAU,OAAG,EAAE,WAAS,CAAC,MAAI,MAAI,KAAK,eAAe,GAAE,IAAI,GAAG,CAAC,GAAE,GAAE,MAAI,EAAE,CAAC,GACrG,GAAE,KAAE;AAAA,eAAG,KAAK,QAAQ,qBAAmB,IAAG;AAAA,YAAE,EAAE,MAAM,GAAE,EAAE,KAAK,OAAM,MAAI,aAAa,CAAC,CAAC;AAAA,UAAC;AAAA,UAAC,OAAO,KAC/F,eAAe,GAAE,GAAE,GAAE,IAAE;AAAA;AAAA,OAAG;AAAA;AAAA,IAAE,cAAc,CAAC,GAAE,GAAE,GAAE,GAAE;AAAA,MAAC,KAAG,KAAK,KAAK,WAAU,CAAC,GAAE,KAAK,KAAK,WAAU,CAAC,GACnG,EAAE,UAAQ,KAAK,aAAa,GAAE,CAAC,GAAE,EAAE,eAAe,SAAQ,CAAC,GAAE,EAAE,WAAS,KAAG,KAAK,QAAQ,SAAO,KAC/F,QAAQ,OAAO,GAAE,EAAE,OAAO,IAAE,EAAE,QAAQ,IAAE,KAAG,KAAK,QAAQ,SAAO,KAAK,QAAQ,OAAO,GAAE,OAAG;AAAA,QAAC,IAAG;AAAA,UAAE,OAAO,EACrG,QAAQ,CAAC,GAAE,EAAE,SAAS,GAAO,WAAE,EAAE;AAAA,QAAE,EAAE,SAAc,WAAE,GAAE,EAAE,OAAO;AAAA,OAAE,IAAE,EAAE,SAAc,WAAE,GAAE,EAAE,OAAO;AAAA;AAAA,IAAE,YAAY,CAAC,GAAE,GAAE;AAAA,MACpH,IAAI,IAAE;AAAA,MAAG,OAAO,OAAG;AAAA,QAAC,KAAG,GAAG,GAAE,IAAE,MAAG,KAAK,SAAS,GAAE,GAAE,CAAC;AAAA;AAAA;AAAA,IAAG,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,IAAG,EAAE,GAAG,SAAQ,CAAC,GAAE,EAAE,iBAC3F,EAAE,iBAAe,KAAG,GAAE,KAAK,KAAK,WAAU,GAAE,CAAC,GAAE,KAAG,KAAK,UAAQ,CAAC,EAAE,cAAY,EAAE,WAAS,EAAE,iBAC5F,KAAK,QAAQ,SAAQ;AAAA,QAAC,EAAE,iBAAe,KAAK,QAAQ,WAAS,KAAK,IAAI,wBAAwB,GAAE,KAChG,QAAQ,CAAC,GAAE,KAAK,YAAY;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,IAAG,KAAK,SAAS,IAAI,CAAC,GAAE;AAAA,QAAC,KAAK,IAAI,uBAAuB,GAAE,KAChG,SAAS,OAAO,CAAC,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,YAAY;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,IAAI;AAAA,MAAE,KAAK,QAAQ,qBAAmB,KACnG,YAAY,MAAI,IAAE,WAAW,MAAI;AAAA,QAAC,KAAK,IAAI,oBAAoB,GAAE,KAAK,QAAQ,CAAC;AAAA,SAAG,KAAK,QAAQ,iBAAiB,GAChH,KAAK,QAAQ,mBAAiB,EAAE,MAAM,IAAG,KAAK,QAAQ,mBAAiB,EAAE,MAAM,GAAE,KAAK,MAAM,KAAK,IAAI,GACrG,GAAE,GAAE,CAAC,CAAC,GAAE,KAAK,YAAY;AAAA;AAAA,IAAE,KAAK,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,IAAG,OAAO,KAAG,YAAW;AAAA,QAAC,IAAI,IAAE,GAAG,KAAK,SAAQ,CAAC;AAAA,QAAE,OAAO,EAAE,QAAQ,GAAE;AAAA,UAC7G,OAAO,EAAE,SAAS,IAAI,MAAM,0EAC1B,CAAC;AAAA,SAAE,GAAE,EAAE;AAAA,MAAM;AAAA,MAAC,OAAO,KAAG,eAAa,IAAE,GAAE,IAAO;AAAA,MAAG,IAAI,IAAE,GAAG,KAAK,SAAQ,CAAC;AAAA,MAAE,OAAO,IAAE,EAAE,UAAS,KAClG,QAAQ,CAAC,GAAE,MAAI;AAAA,QAAC,IAAG;AAAA,UAAE,OAAO,EAAE,CAAC;AAAA,QAAE,IAAI,IAAE,OAAG,IAAE,EAAE,OAAG;AAAA,UAAC,MAAI,IAAE,MAAG,EAAE,QAAQ,CAAC,GAAE,EAAE,CAAC;AAAA,WAAI,SAAS;AAAA,QAAE,EAAE,KAAK,SAC5F,CAAC,GAAE,KAAK,IAAI,mBAAmB;AAAA,QAAE,IAAG;AAAA,UAAC,EAAE,MAAM,GAAE,GAAE,CAAC,GAAE,MAAI;AAAA,YAAC,IAAG,KAAK,IAAI,kBAAkB,GAAE,EAAE,eAChG,SAAQ,CAAC,GAAE,CAAC;AAAA,cAAE,OAAO,IAAE,MAAG,EAAE,QAAQ,CAAC,GAAE,IAAE,EAAE,CAAC,IAAE,EAAO,WAAE,CAAC;AAAA,WAAE;AAAA,UAAE,OAAM,GAAE;AAAA,UAAC,OAAO,EAAE,QAAQ,CAAC,GAAE,EAAE,CAAC;AAAA;AAAA,OAAG,GAAE,EAAE;AAAA;AAAA,IAAO,GAAG,CAAC,GAAE;AAAA,MAChH,IAAG,KAAK,IAAI,QAAQ,GAAE,KAAK,QAAO;AAAA,QAAC,IAAI,IAAE,IAAI,MAAM,mCAAmC;AAAA,QAAE,OAAO,IAAE,EAAE,CAAC,IACpG,KAAK,QAAQ,OAAO,CAAC;AAAA,MAAC;AAAA,MAAC,KAAK,SAAO;AAAA,MAAG,IAAI,IAAE,GAAG,KAAK,SAAQ,CAAC;AAAA,MAAE,OAAO,KAAK,eAAa,EAAE,UAAS,KACnG,YAAY,GAAE,EAAE;AAAA;AAAA,QAAW,YAAY,GAAE;AAAA,MAAC,OAAO,KAAK,cAAc;AAAA;AAAA,QAAW,SAAS,GAAE;AAAA,MAAC,OAAO,KAClG,MAAM;AAAA;AAAA,QAAW,YAAY,GAAE;AAAA,MAAC,OAAO,KAAK,SAAS,OAAO,CAAC,GAAE,MAAI,KAAG,KAAK,SAAS,IAAI,CAAC,IAAE,IAAE,IAAG,CAAC;AAAA;AAAA,QAAM,UAAU,GAAE;AAAA,MACnH,OAAO,KAAK,SAAS;AAAA;AAAA,EAAO;AAAA,EAAE,EAAE,IAAG,MAAM;AAAA,EAAE,IAAI,KAAG;AAAA,EAAG,GAAG,UAAQ;AAAA,CAAG;AAAE,IAAI,KAAG,CAAC;AAAE,GAAG,IAAG,EAAC,SAAQ,MAAI,GAAE,CAAC;AAAE,IAAI;AAAJ,IAAO,KAAG,EAAE,MAAI;AAAA,EAAc,EAAE;AAAA,EAAE,KAAG,CAAC;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAC,GAAG,UAAQ,EAAC,MAAK,MAAK,SAAQ,SAAQ,aAAY,iEACrL,UAAS;AAAA,IAAC;AAAA,IAAW;AAAA,IAAQ;AAAA,IAAK;AAAA,IAAU;AAAA,IAAW;AAAA,IACxF;AAAA,EAAO,GAAE,UAAS,2CAA0C,YAAW,EAAC,MAAK,OAAM,KAAI,6CACxD,WAAU,cAAa,GAAE,QAAO,6CACxD,MAAK,SAAQ,cAAa,EAAC,iBAAgB,SAAQ,iBAAgB,SAAQ,wBAC7E,UAAS,WAAU,UAAS,eAAc,UAAS,YAAW,UAAS,QAAO,MAAK,GAAE,iBAAgB;AAAA,IAC1G,OAAM;AAAA,IAAQ,UAAS;AAAA,IAAQ,IAAG;AAAA,IAAQ,mBAAkB;AAAA,EAAO,GAAE,kBAAiB,EAAC,aAAY,UAC3F,GAAE,sBAAqB,EAAC,aAAY,EAAC,UAAS,KAAE,EAAC,GAAE,SAAQ,EAAC,MAAK,gBAAe,GAAE,OAAM,CAAC,OAC9F,aAAa,GAAE,SAAQ,OAAM,SAAQ,EAAC,MAAK,WAAU,GAAE,SAAQ,2CAC1D;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,EAAE,cAAa,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,KAAG,GAAG,GAAE,KAAG,GAAG,UAAQ,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAC9H,GAAG,KAAK,IAAI,GAAE,IAAE,GAAG,qBAAqB,GAAE,GAAE,CAAC,GAAE,KAAK,OAAK,EAAE,MAAK,KAAK,SAAO,EAAE,QAAO,KAAK,OAAK,EAAE,MACjG,KAAK,WAAS,EAAE,UAAS,KAAK,QAAM,OAAM,KAAK,aAAW,EAAE,YAAU,SAAQ,KAAK,iBAAe,OAClG,KAAK,GAAG,eAAc,QAAQ,CAAC,GAAE;AAAA,MAAC,MAAI,UAAQ,KAAK,iBAAe;AAAA,MAAK,KAAK,IAAI,CAAC;AAAA;AAAA,EAAG,GAAG,SAAS,IAAG,EAAE;AAAA,EACrG,IAAI,KAAG,EAAC,UAAS,QAAO,mBAAkB,YAAW,gBAAe,WAAU,SAAQ,SAAQ,YAAW,UACjG,WAAU,SAAQ,YAAW,UAAS,cAAa,YAAW,gBAAe,cAAa,YAAW,QACvG,YAAW,QAAO,gBAAe,UAAS;AAAA,EAAE,GAAG,UAAU,cAAY,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,KAAK,OAClG,GAAG,kBAAkB;AAAA,IAAE,IAAG;AAAA,MAAE,SAAQ,KAAK,GAAE;AAAA,QAAC,IAAI,IAAE,GAAG,MAAI;AAAA,QAAE,EAAE,KAAG,EAAE;AAAA,MAAE;AAAA,IAAC,KAAK,WAAS,KAAK,SAAS,CAAC,IAClG,KAAK,KAAK,SAAQ,CAAC,GAAE,KAAK,QAAM;AAAA;AAAA,EAAS,GAAG,UAAU,OAAK,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,YAAY,EAAE,KACnG,GAAE,CAAC;AAAA;AAAA,EAAG,GAAG,UAAU,QAAM,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,KAAK,YAAY,EAAE,MAAM,CAAC;AAAA;AAAA,EAAG,GAAG,UAAU,cAAY,QAAQ,GAAE;AAAA,IAC5G,OAAO,KAAK,WAAS,KAAK,YAAU,KAAK,WAAS,IAAI,QAAQ,QAAQ,CAAC,GAAE,GAAE;AAAA,MAAC,KAAK,MAAM,OAAM,CAAC,GAAE,KAChG,MAAM,SAAQ,CAAC;AAAA,MAAG,KAAK,IAAI,CAAC,GAAE,KAAK;AAAA;AAAA,EAAW,GAAG,UAAU,SAAO,QAAQ,CAAC,GAAE;AAAA,IAAC,KAAK,QAAM;AAAA,IAAU,IAAI,IAAE;AAAA,IACzG,KAAK,SAAO,EAAE,QAAO,EAAE,OAAO,YAAU,KAAK;AAAA,IAAW,IAAI,IAAE,EAAE,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,MAAC,IAAG,EAAE,OAAO,YAC5F,OAAG,EAAE,QAAQ,GAAE;AAAA,QAAC,EAAE,KAAK,OAAO;AAAA,OAAE,GAAE;AAAA,QAAE,OAAO,EAAE,YAAY,CAAC;AAAA,MAAE,EAAE,mBAAiB,EAAE,SAAO,IAAE,EAAE,QAC5F,CAAC,GAAE,MAAI;AAAA,QAAC,EAAE,QAAQ,OAAG;AAAA,UAAC,EAAE,KAAK,OAAM,GAAE,EAAE,EAAE;AAAA,SAAE;AAAA,OAAE,IAAE,EAAE,QAAQ,QAAQ,CAAC,GAAE;AAAA,QAAC,EAAE,KAAK,OAAM,GAAE,CAAC;AAAA,OAAE,IAAG,EAAE,QAAM,OAC9F,EAAE,KAAK,OAAM,CAAC,GAAE,EAAE,YAAU,EAAE,SAAS,MAAK,CAAC;AAAA,OAAG,OAAO;AAAA,IAAE,IAAG,EAAE,WAAS,IAAE,EAAE,OAAO,KAAK,CAAC,IAAG,KAC/F,MAAK;AAAA,MAAC,KAAK,KAAK,SAAO,OAAK,QAAQ,MAAM,gEACpC,GAAE,QAAQ,MAAM,wBAAuB,KAAK,MAAK,KAAK,KAAK,MAAM,GAAE,QAAQ,MAAM,8DACtC;AAAA,MAAG,IAAI,KAAG,KAAK,UAAQ,CAAC,GAAG,IAAI,GAAG,YAAY;AAAA,MAAE,IAAG,EACpG,aAAa,KAAK,OAAM;AAAA,QAAC,IAAG,KAAK,QAAM,EAAE,aAAa,KAAK,UAAQ,KAAK,MAAK;AAAA,UAAC,IAAI,IAAE,IAAI,MAAM,yCAC3D,KAAK,0CAA0C;AAAA,UAAE,OAAO,EAAE,CAAC;AAAA,QAAC;AAAA,QAAC,OAAO,EACvG,OAAO,QAAQ,KAAK,MAAK,GAAE,CAAC;AAAA,MAAC;AAAA,MAAC,OAAO,EAAE,OAAO,QAAQ,KAAK,MAAK,KAAK,MAAK,EAAE,QAAO,QAAQ,CAAC,GAAE;AAAA,QAAC,OAAO,IACtG,EAAE,CAAC,KAAG,EAAE,aAAa,EAAE,QAAM,EAAE,MAAK,EAAE,OAAO,QAAQ,EAAE,MAAK,GAAE,CAAC;AAAA,OAAG;AAAA,IAAC,EAAM,SAAG,KAAK,QAAO;AAAA,MAAC,IAAG,CAAC,MAAM,QACnG,KAAK,MAAM,GAAE;AAAA,QAAC,IAAI,IAAE,IAAI,MAAM,+BAA+B;AAAA,QAAE,OAAO,EAAE,CAAC;AAAA,MAAC;AAAA,MAAC,IAAI,IAAE,KAAK,OAAO,IAAI,GACjG,YAAY;AAAA,MAAE,EAAE,OAAO,MAAM,KAAK,MAAK,GAAE,CAAC;AAAA,IAAC,EAAM;AAAA,QAAE,OAAO,MAAM,KAAK,MAAK,CAAC;AAAA;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,MAAI,GAAG,GAAE,EAAE,EAAE,IAAG,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,EAAE,cAAa,MAAI,GAAG,GAAE,EAAE,EAAE,IAC1L,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,IAAE,GAAG,UAAQ,QAAQ,CAAC,GAAE;AAAA,IAAC,GAAG,KAAK,IAAI,GAAE,IAAE,KAAG,CAAC,GAAE,KAAK,WAAS,EAAE,WAAS,EAAE,SAAQ,KAClG,SAAO,IAAI,GAAG,EAAE,KAAK,GAAE,KAAK,SAAO,IAAI,GAAG,EAAC,OAAM,KAAK,OAAM,CAAC,GAAE,KAAK,cAAY,CAAC,GAAE,KAAK,UAAQ,OAAG,KACnG,cAAY,OAAG,KAAK,aAAW,OAAG,KAAK,aAAW;AAAA,IAAG,IAAI,IAAE,KAAK,uBAAqB,IAAI,GAAG,CAAC;AAAA,IAAE,KAC/F,OAAK,EAAE,MAAK,OAAO,eAAe,MAAK,YAAW,EAAC,cAAa,MAAG,YAAW,OAAG,UAAS,MAAG,OAAM,EACnG,SAAQ,CAAC,GAAE,KAAK,WAAS,EAAE,UAAS,KAAK,OAAK,EAAE,MAAK,KAAK,OAAK,EAAE,MAAK,KAAK,eAAa,CAAC;AAAA;AAAA,EAAG,EAAE,QAC9F;AAAA,EAAG,GAAG,SAAS,GAAE,EAAE;AAAA,EAAE,EAAE,UAAU,mBAAiB,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE,OAAG;AAAA,MAAC,EAAE,SAAS,MAAI;AAAA,QAAC,EAAE,SAAO,KACnG,QAAO,EAAE,YAAY,CAAC;AAAA,OAAE;AAAA,OAAG,cAAc;AAAA,IAAE,KAAK,gBAAgB,MAAI,EAAE,KAAK,YAAY,GAAE,KAAK,eAC9F,OAAM,KAAK,YAAY,QAAQ,CAAC,GAAE,KAAK,YAAY,SAAO;AAAA;AAAA,EAAG,EAAE,UAAU,WAAS,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE;AAAA,IACpG,IAAG,KAAK,aAAY;AAAA,MAAC,EAAE,SAAS,MAAI,EAAE,IAAI,MAAM,+DACrC,CAAC,CAAC;AAAA,MAAE;AAAA,IAAM;AAAA,IAAC,KAAK,cAAY,MAAG,KAAK,qBAAqB,yBAAyB,QAAQ,CAAC,GAAE,GAAE;AAAA,MAC1G,IAAG;AAAA,QAAE,OAAO,EAAE,CAAC;AAAA,MAAE,EAAE,OAAO,QAAQ,GAAE,QAAQ,CAAC,GAAE;AAAA,QAAC,IAAG;AAAA,UAAE,OAAO,EAAE,OAAO,IAAI,GAAE,EAAE,CAAC;AAAA,QAAE,EAAE,aAAW,MAAG,EAAE,OAClG,GAAG,SAAQ,QAAQ,CAAC,GAAE;AAAA,UAAC,EAAE,aAAW,OAAG,EAAE,iBAAiB,CAAC,GAAE,EAAE,KAAK,SAAQ,CAAC;AAAA,SAAE,GAAE,EAAE,OAAO,GAAG,gBACrF,QAAQ,CAAC,GAAE;AAAA,UAAC,EAAE,KAAK,gBAAe,EAAC,SAAQ,EAAE,SAAQ,SAAQ,EAAE,MAAK,CAAC;AAAA,SAAE,GAAE,EAAE,KAAK,SAAS,GAAE,EACnG,iBAAiB,IAAE,GAAE,EAAE;AAAA,OAAE;AAAA,KAAE;AAAA;AAAA,EAAG,EAAE,UAAU,UAAQ,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAG,GAAE;AAAA,MAAC,KAAK,SAAS,CAAC;AAAA,MAAE;AAAA,IAAM;AAAA,IAAC,OAAO,IAAI,KACvG,SAAS,CAAC,GAAE,MAAI;AAAA,MAAC,KAAK,SAAS,OAAG;AAAA,QAAC,IAAE,EAAE,CAAC,IAAE,EAAE;AAAA,OAAE;AAAA,KAAE;AAAA;AAAA,EAAG,EAAE,UAAU,QAAM,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,GAAE,GAAE,GAAE,GAAE;AAAA,IAAE,IAAG,KACtG;AAAA,MAAK,MAAM,IAAI,UAAU,6CAA6C;AAAA,IAAE,IAAG,OAAO,EAAE,UAAQ;AAAA,MACzF,IAAE,EAAE,iBAAe,KAAK,qBAAqB,eAAc,IAAE,IAAE,GAAE,OAAO,KAAG,eAAa,EAAE,WAC7F;AAAA,IAAQ,SAAG,IAAE,KAAK,qBAAqB,eAAc,IAAE,IAAI,GAAG,GAAE,GAAE,CAAC,GAAE,CAAC,EAAE,UAAS;AAAA,MAAC,IAAI,GAAE;AAAA,MAAE,IAAE,IAAI,KAChG,SAAS,CAAC,GAAE,MAAI;AAAA,QAAC,IAAE,GAAE,IAAE;AAAA,OAAE,GAAE,EAAE,WAAS,CAAC,GAAE,MAAI,IAAE,EAAE,CAAC,IAAE,EAAE,CAAC;AAAA,IAAC;AAAA,IAAC,OAAO,MAAI,IAAE,EAAE,UAAS,IAAE,WAAW,MAAI;AAAA,MAAC,IAAI,IAAE,IAAI,MAC7G,oBAAoB;AAAA,MAAE,EAAE,SAAS,MAAI;AAAA,QAAC,EAAE,YAAY,GAAE,KAAK,UAAU;AAAA,OAAE,GAAE,EAAE,CAAC,GAAE,EAAE,WAAS,MAAI;AAAA,MAAG,IAAI,IAAE,KACtG,YAAY,QAAQ,CAAC;AAAA,MAAE,IAAE,MAAI,KAAK,YAAY,OAAO,GAAE,CAAC,GAAE,KAAK,iBAAiB;AAAA,OAAG,CAAC,GAAE,EAAE,WAAS,CAAC,GAAE,MAAI;AAAA,MACxG,aAAa,CAAC,GAAE,EAAE,GAAE,CAAC;AAAA,QAAI,KAAK,aAAW,KAAK,WAAS,EAAE,SAAO,KAAK,QAAO,EAAE,SAAS,MAAI;AAAA,MAAC,EAAE,YAC9F,IAAI,MAAM,wCAAwC,CAAC;AAAA,KAAE,GAAE,MAAI,KAAK,YAAY,KAAK,CAAC,GAAE,KAAK,iBAAiB,GAC1G,MAAI,EAAE,SAAO,KAAK,QAAO,EAAE,SAAS,MAAI;AAAA,MAAC,EAAE,YAAY,IAAI,MAAM,gEACpC,CAAC;AAAA,KAAE,GAAE;AAAA;AAAA,EAAI,EAAE,UAAU,MAAI,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE;AAAA,IAAK,KAAK,UAAQ,MAAG,KAAK,cAClG,KAAK,KAAK,WAAU,KAAK,IAAI,KAAK,MAAK,CAAC,CAAC;AAAA,IAAE,IAAI;AAAA,IAAE,OAAO,MAAI,IAAE,IAAI,KAAK,SAAS,QAAQ,CAAC,GAAE,GAAE;AAAA,MAAC,IAAE,EAAE,OAAG,IACrG,EAAE,CAAC,IAAE,EAAE,GAAE,IAAI;AAAA,KAAE,IAAG,KAAK,OAAO,IAAI,QAAQ,GAAE;AAAA,MAAC,EAAE,iBAAiB,IAAI,MAAM,uBAAuB,CAAC,GAClG,EAAE,SAAS,MAAI;AAAA,QAAC,EAAE,KAAK,KAAK,GAAE,KAAG,EAAE;AAAA,OAAE;AAAA,KAAE,GAAE;AAAA;AAAA,EAAG,EAAE,UAAU,kBAAgB,QAAQ,GAAE;AAAA,IAAC,OAAO,KAAK,gBAC/F,KAAK,aAAa,UAAQ,WAAS,KAAK,aAAa,UAAQ;AAAA;AAAA,EAAO,EAAE,UAAU,mBAAiB,QAAQ,CAAC,GAAE;AAAA,IAC5G,IAAG,KAAK,cAAY,CAAC,KAAK,gBAAgB,GAAE;AAAA,MAAC,IAAI,IAAE,KAAK,YAAY,MAAM;AAAA,MAAE,IAAG,CAAC,GAAE;AAAA,QAAC,KAAG,KAAK,KAAK,OAC7F;AAAA,QAAE;AAAA,MAAM;AAAA,MAAC,KAAK,eAAa,GAAE,EAAE,OAAO,IAAI;AAAA,MAAE,IAAI,IAAE;AAAA,MAAK,EAAE,KAAK,SAAQ,QAAQ,GAAE;AAAA,QAAC,EAAE,iBAAiB;AAAA,OAAE;AAAA,IAAC;AAAA;AAAA,EAC1G,EAAE,UAAU,SAAO,QAAQ,CAAC,GAAE;AAAA,IAAC,KAAK,iBAAe,IAAE,KAAK,OAAO,OAAO,QAAQ,GAAE,EAAE,IAAE,KAAK,YAC3F,QAAQ,CAAC,MAAI,MAAI,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,CAAC,GAAE,CAAC;AAAA;AAAA,EAAG,EAAE,UAAU,MAAI,QAAQ,GAAE;AAAA,EACnG,EAAE,UAAU,QAAM,QAAQ,GAAE;AAAA,EAAG,EAAE,UAAU,gBAAc,QAAQ,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,cAC5F,GAAE,GAAE,CAAC;AAAA;AAAA,EAAG,EAAE,UAAU,gBAAc,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,cAAc,GAAE,CAAC;AAAA;AAAA,CAAG;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,GAAG,UAAQ,GAAG;AAAA,CAAE;AAAE,IAAI,KAAG,EAAE,CAAC,IAAG,OAAK;AAAA,EAAc,EAAE;AAAA,EAAE,IAAI,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,GAAE,KAAG,GAAG,KAAG,eAAc,OAAI,GAAG,GAAE,KAAG,EAClP,OAAG;AAAA,IAAC,IAAI;AAAA,IAAE,OAAO,IAAE,cAAc,GAAE;AAAA,MAAC,WAAW,CAAC,GAAE;AAAA,QAAC,MAAM,GAAE,CAAC;AAAA;AAAA,IAAE,GAAE,EAAE,GAAE,WAAW,GAAE;AAAA,KAAG,aAAa,GAAE,KAAG,EACtG,QAAQ,CAAC,GAAE;AAAA,IAAC,KAAK,WAAS,IAAG,KAAK,SAAO,GAAE,KAAK,QAAM,KAAK,OAAO,OAAM,KAAK,OAAK,GAAG,KAAK,MAAM,GAAE,KAClG,SAAO,CAAC,GAAE,KAAK,aAAW,IAAG,KAAK,QAAM,GAAG,GAAE,KAAK,gBAAc;AAAA,KAAI,IAAI;AAAA,EAAE,OAAO,EAAE,IAAI,uBACvF,MAAI,GAAG,UAAQ,IAAI,GAAG,GAAG,CAAC,KAAG,GAAG,UAAQ,IAAI,GAAG,EAAE,GAAE,OAAO,eAAe,GAAG,SAAQ,UAAS;AAAA,IAAC,cAAa;AAAA,IAC3G,YAAW;AAAA,IAAG,GAAG,GAAE;AAAA,MAAC,IAAI,IAAE;AAAA,MAAK,IAAG;AAAA,QAAC,IAAE,IAAI,GAAG,GAAG,CAAC;AAAA,QAAE,OAAM,GAAE;AAAA,QAAC,IAAG,EAAE,SAAO;AAAA,UAAmB,MAAM;AAAA;AAAA,MAAE,OAAO,OACzG,eAAe,GAAG,SAAQ,UAAS,EAAC,OAAM,EAAC,CAAC,GAAE;AAAA;AAAA,EAAE,CAAC;AAAA,CAAG;AAAE,EAAE;AAAE,EAAE;AAAE,GAAG;AAAE,GAAG;AAAE,EAAE;AAAE,IAAI,KAAG,OAAO;AAAd,IAA6B,KAAG,OAAO;AAAvC,IAAwD,KAAG,OAAO;AAAlE,IAA4F,KAAG,OAC3K;AAD4E,IACtD,KAAG,OAAO,UAAU;AADkC,IACnB,KAAG,OAAO,UAAU;AADD,IACsB,KAAG,EACrG,CAAC,GAAE,GAAE,OAAI,KAAK,KAAE,GAAG,GAAE,GAAE,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,IAAE,EAAE,KAAG,GAAE,iBAAiB;AAFxB,IAG5E,KAAG,EAAE,CAAC,GAAE,MAAI;AAAA,EAAC,SAAQ,KAAK,MAAI,IAAE,CAAC;AAAA,IAAG,GAAG,KAAK,GAAE,CAAC,KAAG,GAAG,GAAE,GAAE,EAAE,EAAE;AAAA,EAAE,IAAG;AAAA,IAAG,SAAQ,KAAK,GAAG,CAAC;AAAA,MAAE,GAAG,KAAK,GAAE,CAAC,KACnG,GAAG,GAAE,GAAE,EAAE,EAAE;AAAA,EAAE,OAAO;AAAA,GAAG,gBAAgB;AAJqC,IAInC,KAAG,EAAE,CAAC,GAAE,MAAI,GAAG,GAAE,GAAG,CAAC,CAAC,GAAE,eAAe;AAJJ,IAIM,KAAG;AAJT,IAIgB,KAAG,IAAI,WACnG,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAK;AALwC,IAKtC,KAAG,IAAI;AAL+B,IAKnB,KAAG,IAAI;AALY,IAKA,KAAG,GAAG,OAAO,kBAClF;AANqE,IAMnE,KAAG,GAAG,OAAO,kBAAkB;AANoC,IAMlC,KAAG,GAAG,OAAO,kEAClC;AAAE,IAAI,KAAG,GAAG,MAAM;AAAE,GAAG,MAAI;AAAG,GAAG,MAAI;AAAG,IAAI;AAAJ,IAAO;AAAG,SAAS,EAAE,CAAC,KAAG,UAAS,GAAE,YAAW,MAAG,CAAC,GAAE;AAAA,EAAC,IAAG,CAAC;AAAA,IAAG,IAAG,KAC7H,IAAI,YAAY,GAAG,GAAE,KAAG,IAAI,YAAY,GAAG,GAAE;AAAA,MAAG,SAAQ,IAAE,EAAE,IAAE,KAAI;AAAA,QAAI,GAAG,KAAG,GAAG,IAAE,OAAK,IAAE,GAAG,MAAI,IAAG,GAAG,KACrG,GAAG,IAAE,OAAK,IAAE,GAAG,MAAI;AAAA,IAAQ;AAAA,eAAQ,IAAE,EAAE,IAAE,KAAI;AAAA,QAAI,GAAG,KAAG,GAAG,IAAE,MAAI,GAAG,MAAI,MAAI,GAAE,GAAG,KAAG,GAAG,IAAE,MAAI,GAAG,MAAI,MACnG;AAAA,EAAE,EAAE,aAAW,MAAI,MAAI,IAAE,IAAI,WAAW,CAAC;AAAA,EAAG,IAAI,IAAE,EAAE,QAAO,IAAE,MAAI,GAAE,IAAE,MAAI,GAAE,IAAE,KAAG,IAAI,YAAY,CAAC,GAAE,IAAE,IAAI,YACzG,EAAE,QAAO,EAAE,YAAW,CAAC,GAAE,IAAE,IAAI,YAAY,EAAE,QAAO,EAAE,YAAW,CAAC,GAAE,IAAE,MAAI,UAAQ,KAAG,IAAG,IAAE,GAAE,IAAE,GAAE;AAAA,EAAE,IAAG;AAAA,IACrG,MAAK,IAAE;AAAA,MAAG,IAAE,EAAE,MAAK,EAAE,OAAK,EAAE,MAAI,IAAE,QAAM,KAAG,EAAE,IAAE,MAAK,EAAE,OAAK,EAAE,MAAI,OAAK,KAAG,EAAE,MAAI,KAAG;AAAA,EAAU;AAAA,UAAK,IAAE;AAAA,MACnG,IAAE,EAAE,MAAK,EAAE,OAAK,EAAE,MAAI,OAAK,KAAG,EAAE,MAAI,KAAG,MAAK,EAAE,OAAK,EAAE,MAAI,IAAE,QAAM,KAAG,EAAE,IAAE;AAAA,EAAK,KAAI,MAAI,EAAE,IAAE;AAAA,IAAG,EAAE,KAAG,EAAE,EAAE;AAAA,EACrG,OAAO,GAAG,OAAO,EAAE,SAAS,GAAE,CAAC,CAAC;AAAA;AAAE,EAAE,IAAG,QAAQ;AAAE,SAAS,EAAE,CAAC,GAAE,IAAE,CAAC,GAAE;AAAA,EAAC,IAAI,IAAE,IAAG,IAAE,EAAE,QAAO,IAAE,OAAK,GAAE,IAAE,KACpG,KAAK,IAAE,CAAC,GAAE,IAAE,IAAI,YAAY,IAAE,IAAE,IAAE,CAAC;AAAA,EAAE,SAAQ,IAAE,EAAE,IAAE,GAAE,KAAI;AAAA,IAAC,IAAI,IAAE,IAAE,GAAE,IAAE,IAAE;AAAA,IAAE,KAAG,GAAG,EAAE,SAAS,GAAE,CAAC,GAAE,GAAG,GACnG,CAAC,GAAE,CAAC,GAAE,EAAC,YAAW,EAAC,CAAC,CAAC;AAAA,EAAC;AAAA,EAAC,OAAO;AAAA;AAAE,EAAE,IAAG,eAAe;AAAE,SAAS,EAAE,CAAC,GAAE,IAAE,CAAC,GAAE;AAAA,EAAC,OAAO,EAAE,aAAW,WAC9F,OAAO,EAAE,SAAO,aAAW,EAAE,MAAM,IAAE,GAAG,GAAE,CAAC;AAAA;AAAE,EAAE,IAAG,OAAO;AAAE,EAAE;AAAE,IAAI,MAAG,MAAM,IAAE;AAAA,EAAC,WAAW,CAAC,GAAE,GAAE;AAAA,IAAC,KAAK,UAAQ;AAAA,IAAE,KAAK,SAAO;AAAA;AAAA,EAAE,oBAAoB,CAAC,IAAE,EAAC,OAAM,IAAG,QAAO,CAAC,EAAC,GAAE;AAAA,IACzK,MAAI,SAAQ,GAAE,QAAO,MAAG;AAAA,IAAK,SAAQ,IAAE,GAAE,IAAE,EAAE,OAAO,IAAE,GAAE;AAAA,MAAI,IAAG,EAAE,SAAO,EAAE,IAAG,IAAE,EAAE,QAAO;AAAA,QAAC,IAAI,IAAE,EAAE;AAAA,QACjG,IAAG,aAAa;AAAA,UAAG,EAAE,SAAO,EAAE;AAAA,QAAS,SAAG,aAAa;AAAA,UAAG,IAAG,EAAE,qBAAqB;AAAA,YAAG,EAAE,UAAU,qBACnG,CAAC;AAAA,UAAM;AAAA,YAAC,IAAG,EAAE,UAAU,QAAQ;AAAA,cAAO,MAAM,IAAI,MAAM,8BAA8B;AAAA,YAAE,EAAE,SAAO,EAAE,UACjG;AAAA;AAAA,QAAU;AAAA,UAAC,MAAI,QAAO,MAAG;AAAA,UAAE,EAAE,KAAK,CAAC,GAAE,EAAE,SAAO,MAAI,EAAE,SAAQ,aAAa,KAAG,YAAY,OAAO,CAAC,OAC/F,EAAE,SAAO;AAAA;AAAA,MAAW;AAAA,IAAC,OAAO;AAAA;AAAE;AAAE,EAAE,KAAG,aAAa;AAAE,IAAI,KAAG;AAAP,IAAU,KAAG,MAAM,IAAE;AAAA,EAAC,WAAW,CAAC,GAAE;AAAA,IAAC,KAAK,MAAI;AAAA;AAAE;AACrG,EAAE,IAAG,cAAc;AAAE,IAAI,KAAG;AAAG,EAAE;AAAE,SAAS,EAAE,GAAE;AAAA,EAAC,OAAO,SAAO,OAAK,OAAO,WAAS,OAAK,OAAO,UAAQ,OAAK,OAAO,QAAQ,QAAM,cAC3H,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qEAeiD;AAAA;AAAE,EAAE,IAAG,eAAe;AAAE,GAAG;AAAE,IAAI,KAAG,GAAG,GAAG,CAAC;AAAd,IAAgB,KAAG,GAAG,GAAG,CAAC;AAAE,IAAI,KAAG,MAAM,YAAW,MAAK;AAAA,EAAC,WAAW,CAAC,GAAE;AAAA,IAAC,MAAM,CAAC;AAAA,IAAE,EAAE,MAAK,QAAO,aAAa;AAAA,IAAE,EAAE,MAAK,UAAU;AAAA,IAClO,EAAE,MAAK,MAAM;AAAA,IAAE,EAAE,MAAK,QAAQ;AAAA,IAAE,EAAE,MAAK,MAAM;AAAA,IAAE,EAAE,MAAK,UAAU;AAAA,IAAE,EAAE,MAAK,kBAAkB;AAAA,IAAE,EAAE,MAC/F,eAAe;AAAA,IAAE,EAAE,MAAK,OAAO;AAAA,IAAE,EAAE,MAAK,QAAQ;AAAA,IAAE,EAAE,MAAK,OAAO;AAAA,IAAE,EAAE,MAAK,QAAQ;AAAA,IAAE,EAAE,MAAK,UAAU;AAAA,IACpG,EAAE,MAAK,YAAY;AAAA,IAAE,EAAE,MAAK,MAAM;AAAA,IAAE,EAAE,MAAK,MAAM;AAAA,IAAE,EAAE,MAAK,SAAS;AAAA,IAAE,EAAE,MAAK,aAAa;AAAA,IAAE,uBAC9E,SAAO,OAAO,MAAM,qBAAmB,cAAY,MAAM,kBAAkB,MAAK,GAAE;AAAA;AAAE;AAAE,EACnG,IAAG,aAAa;AAAE,IAAI,KAAG;AAAP,IAAU,MAAG;AAAb,IACE,KAAG,CAAC,YAAW,QAAO,UAAS,QAAO,YAAW,oBAAmB,iBACpF,SAAQ,UAAS,SAAQ,UAAS,YAAW,cAAa,QAAO,QAAO,SAAS;AAAE,SAAS,EAAE,CAAC,GAAE;AAAA,EACrG,OAAO,aAAa,IAAE,QAAM,GAAG,CAAC,IAAE;AAAA;AAAE,EAAE,IAAG,sBAAsB;AAAE,SAAS,EAAE,CAAC,GAAE;AAAA,EAAC,MAAI,OAAM,GAAE,QAAO,MAAG,aACtG,KAAG,EAAE,qBAAqB,IAAE;AAAA,EAAE,OAAM,EAAC,OAAM,GAAE,QAAO,EAAE,IAAI,OAAG,IAAI,GAAE,GAAG,cAAc,CAAC,CAAC,CAAC,EAAC;AAAA;AAAE,EAAE,IAAG,cACtF;AAAE,SAAS,EAAE,CAAC;AAAA,EAAG,WAAU;AAAA,EAAE,aAAY;AAAA,EAAE,cAAa;AAAA,EAAE,gBAAe;AAAA,EAAE,UAAS;AAAA,EAAE,YAAW;AAAA,EAC1G,WAAU;AAAA,EAAE,0BAAyB;AAAA,IAAG,CAAC,GAAE;AAAA,EAAC,IAAG,CAAC;AAAA,IAAE,MAAM,IAAI,MAAM,2GACO;AAAA,EAAE,IAAI;AAAA,EAAE,IAAG;AAAA,IAAC,IAAE,GAAG,CAAC;AAAA,IAAE,MAAK;AAAA,IAAC,MAAM,IAAI,MAC7G,4FAA0F,OAAO,CAAC,CAAC;AAAA;AAAA,EACnG,MAAI,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,MAAK,GAAE,UAAS,MAAG;AAAA,EAAE,IAAG,MAAI,eAAa,MAAI,iBAAe,CAAC,KAClG,CAAC,KAAG,CAAC;AAAA,IAAE,MAAM,IAAI,MAAM,mHACe;AAAA,EAAE,SAAS,CAAC,CAAC,MAAK,GAAE;AAAA,IAAC,IAAG,EAAE,MAAM,QAAQ,CAAC,KAAG,MAAM,QAAQ,EAAE,GAAG,KACrG,MAAM,QAAQ,CAAC;AAAA,MAAG,MAAM,IAAI,MAAM,0PAEkD;AAAA,IAAE,OAAO,IAAI,GACjG,GAAE,IAAI,GAAG,GAAE,CAAC,CAAC;AAAA;AAAA,EAAE,EAAE,GAAE,YAAY,GAAE,EAAE,QAAM,CAAC,GAAE,GAAE,MAAI,IAAI,GAAG,GAAE,EAAC,OAAM,GAAE,QAAO,KAAG,CAAC,EAAC,GAAE,CAAC,GAAE,EAAE,SAAO,OAAG,IAAI,GACrG,CAAC,GAAE,EAAE,cAAY,OAAM,GAAE,MAAI;AAAA,IAAC,IAAG,OAAO,KAAG,eAAa,IAAE,EAAE,CAAC,IAAG,CAAC,MAAM,QAAQ,CAAC;AAAA,MAAE,MAAM,IAAI,MAAM,GAAE;AAAA,IACpG,EAAE,QAAQ,OAAG;AAAA,MAAC,IAAG,EAAE,aAAa;AAAA,QAAI,MAAM,IAAI,MAAM,GAAE;AAAA,KAAE;AAAA,IAAE,IAAI,IAAE,EAAE,IAAI,OAAG,EAAE,SAAS,GAAE,IAAE,EAAE,IAAI,OAAG,EAAE,QACnG,CAAC,CAAC;AAAA,IAAE,OAAO,EAAE,GAAE,GAAE,CAAC;AAAA;AAAA,EAAG,eAAe,CAAC,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,MAAI,eAAc,GAAE,eAAc,MAAG,IAAG,IAAE,MAAM,QAC7F,CAAC,IAAE,EAAC,SAAQ,EAAE,IAAI,QAAI,GAAG,EAAE,CAAC,EAAC,IAAE,GAAG,CAAC,GAAE,IAAE,KAAG,CAAC,GAAE,KAAG,KAAG,OAAG,KAAG,KAAG,OAAG,IAAE,GAAE,IAAE,GAAE,KAAG;AAAA,IAAE,MAAS,cAAI,EAAE,iBACtF,cAAI,IAAE,KAAI,MAAK,EAAE,aAAY,IAAG,EAAE,cAAiB,cAAI,KAAG,EAAE,YAAW,EAAE,gBAAmB,cAChG,KAAG,EAAE,cAAa,EAAE,mBAAsB,cAAI,IAAE,EAAE,iBAAgB,EAAE,aAAgB,cAAI,IAAE,EAAE,WAC7F,EAAE,eAAkB,cAAI,KAAG,EAAE,cAAa,MAAS,aAAG,CAAC,MAAM,QAAQ,CAAC,KAAG,EAAE,iBAAoB,cAAI,IACnG,KAAI,MAAK,EAAE,aAAY;AAAA,IAAG,IAAI,KAAG;AAAA,IAAE,CAAC,MAAM,QAAQ,CAAC,KAAG,GAAG,cAAiB,cAAI,KAAG,EAAE;AAAA,IAAW,IAAI,KAAG,OAAO,KAC5G,aAAW,EAAE,GAAE,GAAE,EAAC,SAAQ,OAAU,UAAC,CAAC,IAAE,GAAE,KAAG,EAAC,0BAAyB,GAAE,wBAAuB,QAC7F,mBAAkB,OAAM,GAAE,KAAG,MAAM,GAAG,EAAE;AAAA,IAAE,OAAK,GAAG,gBAAc,UAAU,OAAM,MAAM,QAAQ,CAAC,MACjG,MAAS,cAAI,GAAG,gCAA8B,IAAG,MAAS,cAAI,GAAG,0BAAwB,OAAO,CAAC,IAClG,OAAU,cAAI,GAAG,2BAAyB,OAAO,EAAE,KAAI,KAAG,GAAG,4BAA0B,GAAG;AAAA,IAAE,IAAI;AAAA,IAAG,IAAG;AAAA,MACtG,KAAG,OAAM,KAAG,OAAO,IAAG,EAAC,QAAO,QAAO,MAAK,KAAK,UAAU,CAAC,GAAE,SAAQ,OAAM,EAAC,CAAC;AAAA,MAAE,OAAM,IAAG;AAAA,MAAC,IAAI,IAAE,IAAI,GAClG,iCAAiC,IAAI;AAAA,MAAE,MAAM,EAAE,cAAY,IAAG;AAAA;AAAA,IAAE,IAAG,GAAG,IAAG;AAAA,MAAC,IAAI,KAAG,MAAM,GAAG,KAAK;AAAA,MAAE,IAAG,MACpG,QAAQ,CAAC,GAAE;AAAA,QAAC,IAAI,IAAE,GAAG;AAAA,QAAQ,IAAG,CAAC,MAAM,QAAQ,CAAC;AAAA,UAAE,MAAM,IAAI,GAAG,+CACrD;AAAA,QAAE,OAAO,EAAE,IAAI,CAAC,GAAE,OAAK;AAAA,UAAC,IAAI,KAAG,EAAE,OAAK,CAAC,GAAE,KAAG,GAAG,aAAW,IAAG,KAAG,GAAG,eAAa;AAAA,UAAG,OAAO,GACpG,GAAE,EAAC,WAAU,IAAG,aAAY,IAAG,OAAM,GAAG,MAAK,CAAC;AAAA,SAAE;AAAA,MAAC,EAAK;AAAA,QAAC,IAAI,IAAE,KAAG,CAAC,GAAE,IAAE,EAAE,aAAW,IAAG,KAAG,EAAE,eAC1F;AAAA,QAAG,OAAO,GAAG,IAAG,EAAC,WAAU,GAAE,aAAY,IAAG,OAAM,EAAE,MAAK,CAAC;AAAA;AAAA,IAAE,EAAK;AAAA,MAAC,MAAI,QAAO,OAAI;AAAA,MAAG,IAAG,OAAK,KAAI;AAAA,QAAC,IAAI,IAAE,MAAM,GAC7G,KAAK,GAAE,IAAE,IAAI,GAAG,EAAE,OAAO;AAAA,QAAE,SAAQ,MAAM;AAAA,UAAG,EAAE,MAAI,EAAE,OAAU;AAAA,QAAE,MAAM;AAAA,MAAC,EAAK;AAAA,QAAC,IAAI,IAAE,MAAM,GAAG,KAAK;AAAA,QAAE,MAAM,IAAI,GAC7G,6BAA6B,QAAQ,GAAG;AAAA;AAAA;AAAA;AAAA,EAAI,OAAO,EAAE,GAAE,SAAS,GAAE;AAAA;AAAE,EAAE,IAAG,MAAM;AAAE,IAAI,KAAG,MAAM,IAAE;AAAA,EAAC,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,IACnH,KAAK,UAAQ;AAAA,IAAE,KAAK,YAAU;AAAA,IAAE,KAAK,OAAK;AAAA;AAAA,EAAE,IAAI,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,QAAQ,KAAK,WAAU,KAAK,IAAI,EAClG,KAAK,GAAE,CAAC;AAAA;AAAA,EAAE,KAAK,CAAC,GAAE;AAAA,IAAC,OAAO,KAAK,QAAQ,KAAK,WAAU,KAAK,IAAI,EAAE,MAAM,CAAC;AAAA;AAAA,EAAE,OAAO,CAAC,GAAE;AAAA,IAAC,OAAO,KAAK,QACjG,KAAK,WAAU,KAAK,IAAI,EAAE,QAAQ,CAAC;AAAA;AAAE;AAAE,EAAE,IAAG,kBAAkB;AAAE,IAAI,KAAG;AAAG,SAAS,EAAE,CAAC;AAAA,EAAG,WAAU;AAAA,EACnG,aAAY;AAAA,EAAE,OAAM;AAAA,GAAG;AAAA,EAAC,IAAI,IAAE,IAAI,GAAG,QAAQ,CAAC,GAAE,IAAE,EAAE,OAAO,IAAI,OAAG,EAAE,IAAI,GAAE,IAAE,EAAE,OAAO,IAAI,OAAG,EAAE,cAC9F,EAAE,UAAU,CAAC,GAAE,IAAE,MAAI,OAAG,EAAE,KAAK,IAAI,OAAG,EAAE,IAAI,CAAC,GAAE,MAAI,MAAI,OAAK,OAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAE,EAAE,KAAK,IAAI,OAAG,OAAO,YAChG,EAAE,IAAI,CAAC,GAAE,MAAI,CAAC,EAAE,IAAG,MAAI,OAAK,OAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,EAAE,OAAO,KAAG,EAAE,eAAa,MAAG,EAAE,aAAW,GAAE,EAAE,OAAK,GAAE,EAAE,WACnG,GAAE,EAAE,SAAO,GAAE,KAAG;AAAA;AAAE,EAAE,IAAG,oBAAoB;AAAE,eAAe,EAAE,CAAC,GAAE;AAAA,EAAC,IAAG,OAAO,KAAG;AAAA,IAAS,OAAO;AAAA,EAAE,IAAG,OAAO,KAC3G;AAAA,IAAW,IAAG;AAAA,MAAC,OAAO,MAAM,QAAQ,QAAQ,EAAE,CAAC;AAAA,MAAE,OAAM,GAAE;AAAA,MAAC,IAAI,IAAE,IAAI,GAAG,2BAA2B;AAAA,MAClG,MAAM,aAAa,UAAQ,IAAE,IAAI,GAAG,6BAA6B,EAAE,SAAS,IAAG;AAAA;AAAA;AAAG,EAAE,IAAG,cAAc;AAAE,EAAE;AAAE,IAAI,KAAG,GAAG,GAAG,CAAC;AAAE,EAAE;AAAE,IAAI,KAAG,GAAG,GAAG,CAAC;AAAE,IAAI,KAAG,MAAM,YAAW,GAAG,OAAM;AAAA,EAAC,WAAW,CAAC,GAAE;AAAA,IAAC,MAAM,CAAC;AAAA,IAAE,KAAK,SAAO;AAAA;AAAA,MAAM,UAAU,GAAE;AAAA,IAAC,OAAO,KAC/O,WAAW;AAAA;AAAA,EAAO,OAAO,CAAC,GAAE;AAAA,IAAC,MAAI,YAAW,MAAG;AAAA,IAAK,EAAE,sBAAoB,KAAK,MAAI,KAAK,WAAW,MACnG,QAAI,KAAK,OAAK,EAAE,sBAAoB,QAAQ,KAAK,wUAG4B;AAAA,IAAE,IAAI,IAAE,OAAO,KAAK,UACjG,YAAU,KAAK,QAAQ,SAAY,aAAG,OAAO,KAAK,UAAQ,YAAU,KAAK,QAAQ,qBAC5E,aAAG,EAAE,IAAI,WAAc,WAAE,IAAE,EAAE,IAAI,QAAM,EAAE,IAAI;AAAA,IAAS,IAAG,CAAC,KAAG,KAAK,SAAO,eAAa,KAAK,SAChG,KAAG,KAAK,aAAW,KAAG,KAAK,aAAW;AAAA,MAAK,MAAM,IAAI,MAAM,iHACa,UAAU,yKAE/B;AAAA,IAAE,IAAI,IAAE,MAAM,QAAQ,CAAC,GAAE,IAAE,EAAE,eAAa,KAAK,KAClG,IAAE,EAAE,oBAAkB;AAAA,IAAW,IAAG,CAAC,KAAG,CAAC,EAAE;AAAA,MAAgB,OAAO;AAAA,IAAE,IAAI,IAAE,KAAK;AAAA,IAAW,IAAG,KAAG,EAAE,GAClG,WAAU,MAAI,EAAE,OAAO,KAAK,QAAO,GAAG,CAAC,GAAE,GAAE;AAAA,MAAC,EAAE,mBAAmB,iCAAiC,GAClG,EAAE,mBAAmB,eAAe,GAAE,EAAE,KAAK,iBAAgB,MAAI,EAAE,GAAG,iBAAgB,KAAK,qBAC3F,KAAK,IAAI,CAAC,CAAC;AAAA,MAAE,IAAI,IAAE,KAAK,MAAI,eAAa;AAAA,MAAU,EAAE,GAAG,GAAE,MAAI;AAAA,QAAC,KAAK,WAAW,4BAC/E,GAAG,GAAE,KAAK,6BAA6B,GAAE,KAAK,qBAAqB;AAAA,OAAE;AAAA,IAAC;AAAA,IAAC,OAAO;AAAA;AAAA,OAAQ,wBAAuB,CAAC,GAAE;AAAA,IAChH,IAAG,OAAO,SAAO,OAAK,OAAO,WAAc,aAAG,OAAO,OAAO,cAAiB;AAAA,MAAE,MAAM,IAAI,MAAM,0DAC1C;AAAA,IAAE,IAAI,IAAE,OAAO,QAAO,IAAE,KAAK,aAAY,IAAE,KAChG,UAAS,IAAE,EAAE;AAAA,IAAK,IAAG,EAAE,YAAU,yBAAuB,OAAO,KAAG,YAAU,OAAO,KAAG;AAAA,MAAS,MAAM,IAAI,MACzG,sBAAsB;AAAA,IAAE,IAAI,IAAE,OAAO,YAAY,EAAE,MAAM,GAAG,EAAE,IAAI,OAAG;AAAA,MAAC,IAAG,CAAC,MAAM,KAAK,CAAC;AAAA,QAAE,MAAM,IAAI,MAClG,oCAAoC;AAAA,MAAE,IAAI,IAAE,EAAE,IAAG,KAAG,EAAE,UAAU,CAAC;AAAA,MAAE,OAAM,CAAC,GAAE,EAAE;AAAA,KAAE,CAAC,GAAE,IAAE,EAAE,GAAE,IAAE,EAAE,GAAE,IAAE,EAAE;AAAA,IACnG,IAAG,CAAC,KAAG,CAAC,cAAc,KAAK,CAAC;AAAA,MAAE,MAAM,IAAI,MAAM,6DACvC;AAAA,IAAE,IAAG,CAAC,KAAG,CAAC,mEAAmE,KAAK,CAAC;AAAA,MAAE,MAAM,IAAI,MACtG,2DAA2D;AAAA,IAAE,IAAG,CAAC,KAAG,CAAC,gBAAgB,KAAK,CAAC;AAAA,MAAE,MAAM,IAAI,MACvG,mEAAmE;AAAA,IAAE,IAAG,CAAC,EAAE,WAAW,EAAE,WAAW;AAAA,MACnG,MAAM,IAAI,MAAM,iFAAiF;AAAA,IAAE,IAAG,EACtG,WAAS,EAAE,YAAY;AAAA,MAAO,MAAM,IAAI,MAAM,6DACvC;AAAA,IAAE,IAAI,IAAE,SAAS,GAAE,EAAE,GAAE,IAAE,EAAE,KAAK,GAAE,QAAQ,GAAE,IAAE,IAAI,aAAY,IAAE,EAAE,OAAO,CAAC,GAAE,IAAE,MAAM,EAAE,UAC7F,OAAM,GAAE,EAAC,MAAK,QAAO,MAAK,EAAC,MAAK,UAAS,EAAC,GAAE,OAAG,CAAC,MAAM,CAAC,GAAE,IAAE,IAAI,WAAW,MAAM,EAAE,KAAK,QAAO,GAAE,EAAE,OAClG,CAAC,GAAE,EAAE,KAAK,CAAC,GAAE,GAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,IAAE;AAAA,IAAE,SAAQ,IAAE,EAAE,IAAE,IAAE,GAAE;AAAA,MAAI,IAAE,IAAI,WAAW,MAAM,EAAE,KAAK,QAAO,GAAE,CAAC,CAAC,GAAE,IAAE,EAAE,KAClG,EAAE,IAAI,CAAC,GAAE,MAAI,EAAE,KAAG,EAAE,EAAE,CAAC;AAAA,IAAE,IAAI,IAAE,GAAE,IAAE,MAAM,EAAE,UAAU,OAAM,GAAE,EAAC,MAAK,QAAO,MAAK,EAAC,MAAK,UAAS,EAAC,GAAE,OACjG,CAAC,MAAM,CAAC,GAAE,IAAE,IAAI,WAAW,MAAM,EAAE,KAAK,QAAO,GAAE,EAAE,OAAO,YAAY,CAAC,CAAC,GAAE,IAAE,MAAM,EAAE,OAAO,WAC3F,CAAC,GAAE,IAAE,WAAS,EAAE,aAAY,KAAG,OAAK,IAAE,QAAM,IAAE,QAAM,GAAE,KAAG,cAAY,GAAE,IAAE,IAAE,MAAI,KAAG,MAAI,IAAG,IAAE,MAAM,EAAE,UACnG,OAAM,GAAE,EAAC,MAAK,QAAO,MAAK,EAAC,MAAK,UAAS,EAAC,GAAE,OAAG,CAAC,MAAM,CAAC;AAAA,IAAE,IAAI,KAAG,IAAI,WAAW,MAAM,EAAE,KAAK,QAAO,GACnG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAE,KAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAE,MAAI,EAAE,KAAG,GAAG,EAAE,CAAC,GAAE,KAAG,GAAG,SAAS,QAAQ;AAAA,IAAE,IAAI,KAAG,MAAM,EAAE,UAC1F,OAAM,GAAE,EAAC,MAAK,QAAO,MAAK,EAAC,MAAK,UAAS,EAAC,GAAE,OAAG,CAAC,MAAM,CAAC,GAAE,KAAG,MAAM,EAAE,KAAK,QAAO,IAAG,EAAE,OAAO,YACxF,CAAC,GAAE,KAAG,MAAM,EAAE,UAAU,OAAM,IAAG,EAAC,MAAK,QAAO,MAAK,EAAC,MAAK,UAAS,EAAC,GAAE,OAAG,CAAC,MAAM,CAAC;AAAA,IAAE,IAAI,KAAG,EAAE,KAC/F,MAAM,EAAE,KAAK,QAAO,IAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAAA,IAAE,EAAE,UAAQ,gBAAe,EAAE,kBAAgB,GAAG,SAAS,QAAQ,GACpG,EAAE,WAAS,KAAG,QAAM,IAAG,KAAK,WAAW,4BAA4B,KAAK,YAAY,QAAQ;AAAA;AAAE;AAAE,EAAE,IAClG,YAAY;AAAE,IAAI,KAAG;AAAG,GAAG;AAAE,IAAI,KAAG,GAAG,GAAG,CAAC;AAAE,SAAS,EAAE,CAAC,GAAE,GAAE;AAAA,EAAC,IAAG;AAAA,IAAE,OAAM,EAAC,UAAS,GAAE,QAAY,UAAC;AAAA,EAAE,IAAI,GAAE,GAAE,IAAE,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAE,EAAE,CAAC,IAAE,EAAE,CAAC;AAAA,KAAG,IAAI,GAC/I,IAAE,IAAI,EAAE,QAAQ,CAAC,GAAE,GAAE;AAAA,IAAC,IAAE,GAAE,IAAE;AAAA,GAAE;AAAA,EAAE,OAAM,EAAC,UAAS,GAAE,QAAO,EAAC;AAAA;AAAE,EAAE,IAAG,WAAW;AAAE,IAAI,KAAG,MAAM,YAAW,GAAG,KAAI;AAAA,EAAC,WAAW,GAAE;AAAA,IAC3H,MAAM,GAAG,SAAS;AAAA,IAAE,EAAE,MAAK,UAAS,EAAE;AAAA,IAAE,EAAE,MAAK,gCAA+B,KAAE;AAAA,IAAE,EAAE,MAAK,eACtF,KAAK,EAAE;AAAA;AAAA,EAAE,EAAE,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,MAAI,YAAU,KAAK,+BAA6B,OAAI,MAAM,GAAG,GAAE,CAAC;AAAA;AAAA,EAAE,KAAK,CAAC,GAAE,GAAE,GAAE;AAAA,IACzG,IAAG,CAAC,GAAG,qBAAmB,KAAK,gCAA8B,OAAO,KAAG;AAAA,MAAW,OAAO,MAAM,MAC/F,GAAE,GAAE,CAAC;AAAA,IAAE,OAAO,KAAG,eAAa,IAAE,GAAE,IAAO;AAAA,IAAG,IAAI,IAAE,GAAG,KAAK,SAAQ,CAAC;AAAA,IAAE,IAAE,EAAE;AAAA,IAAS,IAAG;AAAA,MAAC,IAAI,IAAE,IAAI,GAAG,QACnG,KAAK,OAAO,GAAE,IAAE,oBAAmB,IAAE,WAAU,IAAE,gBAAgB,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE,EAAE,IAAI,KACpG,EAAE,EAAE,QAAQ,KAAI,IAAE,OAAO,KAAG,WAAS,IAAE,EAAE,MAAK,IAAE,KAAG,EAAE,UAAQ,CAAC;AAAA,MAAE,GAAG,GAAE,EAAC,aAAY,MAAG,WAAU,EAClG,YAAU,QAAO,CAAC,EAAE,MAAM,GAAE,GAAE,EAAC,OAAM,EAAE,SAAO,KAAK,SAAS,MAAK,CAAC,EAAE,KAAK,OAAG,EAAO,WAAE,CAAC,CAAC,EAAE,MAAM,OAAG,EAClG,CAAC,CAAC;AAAA,MAAE,OAAM,GAAE;AAAA,MAAC,EAAE,CAAC;AAAA;AAAA,IAAE,OAAO,EAAE;AAAA;AAAO;AAAE,EAAE,IAAG,UAAU;AAAE,IAAI,KAAG;AAAG,GAAG;AAAE,IAAI,KAAG,GAAG,GAAG,CAAC;AAAW,IAAI,uBAAqB,GAAG;AAAc,IAAI,kBAAgB,GAAG;AAAS,IAAI,0BAAwB,GAAG;AACtM,IAAI,uBAAqB,GAAG;AAAc,IAAI,eAAa,GAAG;AAiB9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC71CA;AACA;AACA;AACA;AACA;AAIA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA,MAAM,0BAA0B,gBAAgB;AAAA,EAC9C,WAAW,CAAC,QAAQ,aAAa,QAAQ,UAAQ,OAAO,eAAe,aAAa,QAAQ,MAAM,wBAAwB,oBAAoB;AAAA,IAC5I,MAAM,EAAE,KAAK,aAAa,OAAO,GAAG,OAAO,eAAe,WAAW;AAAA,IACrE,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,yBAAyB;AAAA,IAC9B,KAAK,qBAAqB;AAAA,IAC1B,KAAK,iBAAiB;AAAA,MACpB;AAAA,MACA,MAAM;AAAA,MACN,OAAO;AAAA,QAEL,eAAe,CAAC,QAAQ,WAAW;AAAA,UACjC,IAAI,WAAW,aAAM,SAAS,aAAa;AAAA,YACzC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,aAAM,SAAS,WAAW;AAAA,YACvC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,aAAM,SAAS,MAAM;AAAA,YAClC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,aAAM,SAAS,UAAU;AAAA,YACtC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,OAAO,aAAM,cAAc,QAAQ,MAAM;AAAA;AAAA,MAE7C;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AAAA,MACjB;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,QAEL,eAAe,CAAC,QAAQ,WAAW;AAAA,UACjC,IAAI,WAAW,aAAM,SAAS,aAAa;AAAA,YACzC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,aAAM,SAAS,WAAW;AAAA,YACvC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,aAAM,SAAS,MAAM;AAAA,YAClC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,aAAM,SAAS,UAAU;AAAA,YACtC,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,IAAI,WAAW,MAAM;AAAA,YACnB,OAAO,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA,OAAO,aAAM,cAAc,QAAQ,MAAM;AAAA;AAAA,MAE7C;AAAA,IACF;AAAA;AAAA,UAEM,cAAc;AAAA,EACtB;AAAA,EACA;AAAA,OACM,QAAO,CAAC,oBAAoB,CAAC,GAAG;AAAA,IACpC,MAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAAA,IAC9D,KAAK,OAAO,SAAS,KAAK,eAAe,MAAM,MAAM;AAAA,IACrD,QAAQ,QAAQ,QAAQ,gBAAgB,UAAU,aAAa,OAAO,qBAAqB,uBAAuB;AAAA,IAClH,IAAI,CAAC,UAAU,CAAC,oBAAoB;AAAA,MAClC,OAAO,MAAM,KAAK,eAAe,SAAS,MAAM,QAAQ,YAAY;AAAA,QAClE,OAAO,MAAM,OAAO,MAAM,UAAU,MAAM;AAAA,OAC3C;AAAA,IACH;AAAA,IACA,MAAM,SAAS,MAAM,KAAK,eAAe,MAAM,MAAM,QAAQ,YAAY;AAAA,MACvE,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM;AAAA,KACxC;AAAA,IACD,OAAO,qBAAqB,mBAAmB,OAAO,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,aAAa,QAAQ,KAAK,mBAAmB,CAAC;AAAA;AAAA,EAEvI,GAAG,CAAC,oBAAoB,CAAC,GAAG;AAAA,IAC1B,MAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAAA,IAC9D,KAAK,OAAO,SAAS,KAAK,eAAe,MAAM,MAAM;AAAA,IACrD,OAAO,KAAK,eAAe,KAAK,eAAe,MAAM,QAAQ,YAAY;AAAA,MACvE,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,KAC3D,EAAE,KAAK,CAAC,WAAW,OAAO,IAAI;AAAA;AAAA,EAEjC,MAAM,CAAC,oBAAoB,CAAC,GAAG;AAAA,IAC7B,MAAM,SAAS,iBAAiB,KAAK,QAAQ,iBAAiB;AAAA,IAC9D,KAAK,OAAO,SAAS,KAAK,eAAe,MAAM,MAAM;AAAA,IACrD,OAAO,KAAK,eAAe,KAAK,YAAY,MAAM,QAAQ,YAAY;AAAA,MACpE,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK,aAAa,MAAM;AAAA,KACxD,EAAE,KAAK,CAAC,WAAW,OAAO,IAAI;AAAA;AAAA,EAGjC,qBAAqB,GAAG;AAAA,IACtB,OAAO,KAAK;AAAA;AAEhB;AAAA;AACA,MAAM,oBAAoB,UAAU;AAAA,EAClC,WAAW,CAAC,QAAQ,UAAS,SAAQ,UAAU,CAAC,GAAG;AAAA,IACjD,MAAM,QAAO;AAAA,IACb,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,SAAS,QAAQ,UAAU,IAAI;AAAA,IACpC,KAAK,QAAQ,QAAQ,SAAS,IAAI;AAAA;AAAA,UAE5B,cAAc;AAAA,EACtB;AAAA,EACA;AAAA,EACA,YAAY,CAAC,OAAO,QAAQ,MAAM,uBAAuB,oBAAoB,eAAe,aAAa;AAAA,IACvG,OAAO,IAAI,kBACT,KAAK,QACL,MAAM,KACN,MAAM,QACN,KAAK,QACL,KAAK,OACL,eACA,aACA,QACA,MACA,uBACA,kBACF;AAAA;AAAA,OAEI,MAAK,CAAC,OAAO,QAAQ;AAAA,IACzB,KAAK,OAAO,SAAS,OAAO,MAAM;AAAA,IAClC,MAAM,SAAS,MAAM,KAAK,OAAO,MAAM;AAAA,MACrC,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,OAEH,aAAY,CAAC,OAAO,QAAQ;AAAA,IAChC,OAAO,KAAK,OAAO,MAAM,OAAO,MAAM;AAAA;AAAA,OAElC,MAAK,CAAC,OAAM;AAAA,IAChB,MAAM,MAAM,MAAM,KAAK,QAAQ,KAAI;AAAA,IACnC,OAAO,OACL,IAAI,QAAQ,GAAG,QACjB;AAAA;AAAA,OAEI,YAAW,CAAC,aAAa,SAAS,CAAC,GAAG;AAAA,IAC1C,MAAM,WAAU,KAAK,kBAAkB,KAAO,IAAI,YAAY,MAAM,KAAK,OAAO,QAAQ,GAAG,KAAK,SAAS,KAAK,QAAQ,KAAK,OAAO,IAAI;AAAA,IACtI,MAAM,KAAK,IAAI,gBAAgB,KAAK,SAAS,UAAS,KAAK,MAAM;AAAA,IACjE,MAAM,GAAG,QAAQ,YAAY,GAAG,wBAAwB,MAAM,GAAG;AAAA,IACjE,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,YAAY,EAAE;AAAA,MACnC,MAAM,GAAG,QAAQ,WAAW;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,MAAM,GAAG,QAAQ,aAAa;AAAA,MAC9B,MAAM;AAAA,cACN;AAAA,MACA,IAAI,KAAK,kBAAkB,IAAM;AAAA,QAC/B,SAAQ,OAAO,QAAQ;AAAA,MACzB;AAAA;AAAA;AAGN;AAAA;AACA,MAAM,wBAAwB,cAAc;AAAA,UAClC,cAAc;AAAA,OAChB,YAAW,CAAC,aAAa;AAAA,IAC7B,MAAM,gBAAgB,KAAK,KAAK,cAAc;AAAA,IAC9C,MAAM,KAAK,IAAI,gBAAgB,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,KAAK,cAAc,CAAC;AAAA,IAC5F,MAAM,GAAG,QAAQ,IAAI,IAAI,aAAa,eAAe,CAAC;AAAA,IACtD,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,YAAY,EAAE;AAAA,MACnC,MAAM,GAAG,QAAQ,IAAI,IAAI,qBAAqB,eAAe,CAAC;AAAA,MAC9D,OAAO;AAAA,MACP,OAAO,GAAG;AAAA,MACV,MAAM,GAAG,QAAQ,IAAI,IAAI,yBAAyB,eAAe,CAAC;AAAA,MAClE,MAAM;AAAA;AAAA;AAGZ;;;ADvMA,MAAM,WAAW;AAAA,EACf,WAAW,CAAC,QAAQ,UAAS,UAAU,CAAC,GAAG;AAAA,IACzC,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA;AAAA,UAET,cAAc;AAAA,EACtB,aAAa,CAAC,SAAQ;AAAA,IACpB,OAAO,IAAI,YAAY,KAAK,QAAQ,KAAK,SAAS,SAAQ;AAAA,MACxD,QAAQ,KAAK,QAAQ;AAAA,MACrB,OAAO,KAAK,QAAQ;AAAA,IACtB,CAAC;AAAA;AAEL;AAAA;AACA,MAAM,qBAAqB,WAAW;AAAA,UAC5B,cAAc;AACxB;AACA,SAAS,UAAS,CAAC,QAAQ,SAAS,CAAC,GAAG;AAAA,EACtC,MAAM,WAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AAAA,EACvD,IAAI;AAAA,EACJ,IAAI,OAAO,WAAW,MAAM;AAAA,IAC1B,WAAS,IAAI;AAAA,EACf,EAAO,SAAI,OAAO,WAAW,OAAO;AAAA,IAClC,WAAS,OAAO;AAAA,EAClB;AAAA,EACA,IAAI;AAAA,EACJ,IAAI,OAAO,QAAQ;AAAA,IACjB,MAAM,eAAe,8BACnB,OAAO,QACP,2BACF;AAAA,IACA,UAAS;AAAA,MACP,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,MAAM,SAAS,IAAI,WAAW,QAAQ,UAAS,EAAE,kBAAQ,OAAO,OAAO,MAAM,CAAC;AAAA,EAC9E,MAAM,WAAU,OAAO,cAAc,OAAM;AAAA,EAC3C,MAAM,MAAK,IAAI,aAAa,UAAS,UAAS,OAAM;AAAA,EACpD,IAAG,UAAU;AAAA,EACb,IAAG,SAAS,OAAO;AAAA,EACnB,IAAI,IAAG,QAAQ;AAAA,IACb,IAAG,OAAO,gBAAgB,OAAO,OAAO;AAAA,EAC1C;AAAA,EACA,OAAO;AAAA;AAET,SAAS,QAAO,IAAI,QAAQ;AAAA,EAC1B,IAAI,OAAO,OAAO,OAAO,UAAU;AAAA,IACjC,MAAM,WAAW,IAAI,GAAK;AAAA,MACxB,kBAAkB,OAAO;AAAA,IAC3B,CAAC;AAAA,IACD,OAAO,WAAU,UAAU,OAAO,EAAE;AAAA,EACtC;AAAA,EACA,IAAI,SAAS,OAAO,EAAE,GAAG;AAAA,IACvB,QAAQ,YAAY,QAAQ,OAAO,kBAAkB,OAAO;AAAA,IAC5D,IAAI,IAAI;AAAA,MACN,GAAW,uBAAuB;AAAA,IACpC;AAAA,IACA,IAAI;AAAA,MAAQ,OAAO,WAAU,QAAQ,aAAa;AAAA,IAClD,MAAM,WAAW,OAAO,eAAe,WAAW,IAAI,GAAK;AAAA,MACzD,kBAAkB;AAAA,IACpB,CAAC,IAAI,IAAI,GAAK,UAAU;AAAA,IACxB,OAAO,WAAU,UAAU,aAAa;AAAA,EAC1C;AAAA,EACA,OAAO,WAAU,OAAO,IAAI,OAAO,EAAE;AAAA;AAAA,CAEtC,CAAC,cAAa;AAAA,EACb,SAAS,IAAI,CAAC,QAAQ;AAAA,IACpB,OAAO,WAAU,CAAC,GAAG,MAAM;AAAA;AAAA,EAE7B,UAAS,OAAO;AAAA,GACf,aAAY,WAAU,CAAC,EAAE;;;AEjF5B;AACA,mBAAS,0BAAmB;;;ACH5B;AACA;AACA;AACA;AACA;AAGA,IAAe;;;ADSR,MAAM,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACD;AAAA,EACA;AAAA,EAEjB,WAAW,CAAC,kBAA0B,aAAsB;AAAA,IAC1D,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA,IAInB,IAAI,OAAO,cAAc,aAAa;AAAA,MACpC,GAAW,uBAAuB;AAAA,IACpC;AAAA,IAIA,KAAK,OAAO,IAAI,GAAK;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,IAED,KAAK,KAAK,SAAQ,KAAK,MAAM,EAAE,QAAQ,aAAa,CAAC;AAAA;AAAA,EAGhD,WAAW,GAAiB;AAAA,IACjC,OAAO,KAAK;AAAA;AAAA,EAGP,aAAa,GAAS;AAAA,IAC3B,OAAO,KAAK;AAAA;AAAA,OAGD,eAAc,GAAqB;AAAA,IAC9C,IAAI;AAAA,MAEF,MAAM,KAAK,GAAG,QAAQ,aAAa;AAAA,MACnC,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,SAAO,MACL,EAAE,KAAK,mBAAmB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GACxF,oCACF;AAAA,MACA,OAAO;AAAA;AAAA;AAAA,OAQE,qBAAuB,CAClC,UACA,UACY;AAAA,IACZ,MAAM,uBAAuB,QAAQ,IAAI,0BAA0B;AAAA,IAEnE,OAAO,MAAM,KAAK,GAAG,YAAY,OAAO,OAAO;AAAA,MAC7C,IAAI,sBAAsB;AAAA,QAExB,IAAI,KAAK,aAAa;AAAA,UACpB,MAAM,GAAG,QAAQ,yCAAyC,KAAK,oBAAoB;AAAA,QACrF;AAAA,QAGA,IAAI,UAAU;AAAA,UACZ,IAAI,CAAC,cAAa,QAAQ,GAAG;AAAA,YAC3B,MAAM,IAAI,MAAM,2CAA2C,UAAU;AAAA,UACvE;AAAA,UACA,MAAM,GAAG,QAAQ,yCAAyC,iBAAiB;AAAA,QAC7E;AAAA,MACF;AAAA,MAEA,OAAO,MAAM,SAAS,EAA6B;AAAA,KACpD;AAAA;AAAA,OAQU,MAAK,GAAkB;AAAA,IAClC,IAAI,KAAK;AAAA,MAAS;AAAA,IAClB,KAAK,UAAU;AAAA,IACf,MAAM,KAAK,KAAK,IAAI;AAAA;AAAA,EAMf,QAAQ,GAAY;AAAA,IACzB,OAAO,KAAK;AAAA;AAAA,EAMP,mBAAmB,GAAW;AAAA,IACnC,OAAO,KAAK;AAAA;AAAA,EAMP,cAAc,GAAuB;AAAA,IAC1C,OAAO,KAAK;AAAA;AAEhB;;;AE7HA;AACA;AACA;AAkBO,SAAS,cAAc,CAAC,KAAsB;AAAA,EACnD,OAAO,IAAI,SAAS,WAAW,KAAK,IAAI,SAAS,eAAe;AAAA;AAG3D,SAAS,eAAe,CAAC,UAA0B;AAAA,EACxD,IAAI,YAAY,SAAS,WAAW,GAAG,GAAG;AAAA,IACxC,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,SAAS,MAAM,CAAC,CAAC;AAAA,EACnD;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,cAAc,CAAC,WAAmB,QAAQ,IAAI,GAAW;AAAA,EACvE,IAAI,aAAa;AAAA,EAEjB,OAAO,MAAM;AAAA,IACX,MAAM,YAAY,KAAK,KAAK,YAAY,MAAM;AAAA,IAC9C,IAAI,WAAW,SAAS,GAAG;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,YAAY,KAAK,QAAQ,UAAU;AAAA,IACzC,IAAI,cAAc,YAAY;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EAEA,OAAO,KAAK,KAAK,UAAU,MAAM;AAAA;AAG5B,SAAS,gBAAgB,CAAC,KAAc,aAA8B;AAAA,EAC3E,MAAM,UAAU,eAAe;AAAA,EAC/B,IAAI,WAAW,OAAO,GAAG;AAAA,IACvB,OAAO,OAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,EACjC;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI,WAAW,KAAK,KAAK,QAAQ,IAAI,GAAG,YAAY,MAAM,CAAC,GAAG;AAAA,IAC5D,WAAW,QAAQ,IAAI;AAAA,EACzB,EAAO;AAAA,IACL,MAAM,QAAQ,KAAK,QAAQ,QAAQ,IAAI,GAAG,OAAO;AAAA,IACjD,IAAI,WAAW,KAAK,KAAK,OAAO,YAAY,MAAM,CAAC,GAAG;AAAA,MACpD,WAAW;AAAA,IACb;AAAA;AAAA,EAGF,MAAM,OACJ,OACA,QAAQ,IAAI,mBACZ,gBACC,WAAW,KAAK,KAAK,UAAU,UAAU,UAAU,IAAI,cACxD,KAAK,KAAK,QAAQ,IAAI,GAAG,UAAU,UAAU;AAAA,EAE/C,MAAM,WAAW,gBAAgB,IAAI;AAAA,EACrC,MAAM,aAAa,KAAK,KAAK,QAAQ,IAAI,GAAG,UAAU;AAAA,EACtD,IAAI,aAAa,YAAY;AAAA,IAC3B,MAAM,UAAU,KAAK,KAAK,QAAQ,IAAI,GAAG,UAAU,UAAU;AAAA,IAC7D,QAAQ,IAAI,kBAAkB;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;;;AjC0GT;AACA;AAhLA,IAAM,oBAAoB,OAAO,IAAI,uCAAuC;AAc5E,IAAM,gBAAgB;AACtB,IAAI,CAAC,cAAc,oBAAoB;AAAA,EACrC,cAAc,qBAAqB,CAAC;AACtC;AACA,IAAM,mBAAmB,cAAc;AAEhC,SAAS,qBAAqB,CACnC,QAIA,SACkB;AAAA,EAClB,IAAI,OAAO,aAAa;AAAA,IAEtB,MAAM,gBAAgB,eAAe,OAAO,WAAW;AAAA,IAGvD,MAAM,uBAAuB,QAAQ,IAAI,0BAA0B;AAAA,IACnE,IAAI;AAAA,IACJ,IAAI,aAAa;AAAA,IAEjB,IAAI,sBAAsB;AAAA,MACxB,MAAM,oBAAoB,QAAQ,IAAI;AAAA,MACtC,IAAI,CAAC,mBAAmB;AAAA,QACtB,MAAM,IAAI,MACR,2FACF;AAAA,MACF;AAAA,MACA,cAAc,aAAa,iBAAiB;AAAA,MAC5C,aAAa;AAAA,MACb,SAAO,MACL;AAAA,QACE,KAAK;AAAA,QACL,aAAa,YAAY,MAAM,GAAG,CAAC;AAAA,QACnC,gBAAgB;AAAA,MAClB,GACA,sCACF;AAAA,IACF;AAAA,IAGA,MAAM,iBAAiB,GAAG,cAAc,gBAAgB,SAAS;AAAA,IAGjE,IAAI,CAAC,iBAAiB,4BAA4B;AAAA,MAChD,iBAAiB,6BAA6B,IAAI;AAAA,IACpD;AAAA,IAGA,IAAI,UAAU,iBAAiB,2BAA2B,IAAI,cAAc;AAAA,IAI5E,IAAI,WAAW,QAAQ,SAAS,GAAG;AAAA,MACjC,SAAO,MACL,EAAE,KAAK,cAAc,YAAY,eAAe,MAAM,GAAG,EAAE,EAAE,GAC7D,iDACF;AAAA,MACA,iBAAiB,2BAA2B,OAAO,cAAc;AAAA,MACjE,UAAU;AAAA,IACZ;AAAA,IAEA,IAAI,CAAC,SAAS;AAAA,MACZ,IAAI,eAAe;AAAA,QACjB,SAAO,MACL,EAAE,KAAK,mBAAmB,YAAY,eAAe,MAAM,GAAG,EAAE,EAAE,GAClE,8CACF;AAAA,QACA,UAAU,IAAI,sBAAsB,OAAO,aAAa,WAAW;AAAA,MACrE,EAAO;AAAA,QACL,SAAO,MACL,EAAE,KAAK,cAAc,YAAY,eAAe,MAAM,GAAG,EAAE,EAAE,GAC7D,yCACF;AAAA,QACA,UAAU,IAAI,0BAA0B,OAAO,aAAa,WAAW;AAAA;AAAA,MAEzE,iBAAiB,2BAA2B,IAAI,gBAAgB,OAAO;AAAA,IACzE;AAAA,IAGA,IAAI,eAAe;AAAA,MACjB,OAAO,IAAI,oBAAoB,SAAS,OAAgC;AAAA,IAC1E;AAAA,IACA,OAAO,IAAI,kBAAkB,SAAS,OAAoC;AAAA,EAC5E;AAAA,EAEA,MAAM,UAAU,iBAAiB,OAAO,OAAO;AAAA,EAG/C,IAAI,WAAW,CAAC,QAAQ,SAAS,KAAK,GAAG;AAAA,IACvC,UAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EACxC;AAAA,EAEA,IAAI,CAAC,iBAAiB,qBAAqB;AAAA,IACzC,iBAAiB,sBAAsB,IAAI,oBAAoB,EAAE,QAAQ,CAAC;AAAA,EAC5E;AAAA,EACA,OAAO,IAAI,sBAAsB,SAAS,iBAAiB,mBAAmB;AAAA;AAGzE,IAAM,SAAiB;AAAA,EAC5B,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM,OAAO,SAAS,YAA2B;AAAA,IAC/C,QAAQ,OAAO,KACb,EAAE,KAAK,cAAc,SAAS,QAAQ,QAAQ,GAC9C,iCACF;AAAA,IAEA,MAAM,oBAAoB,MAAM,QAC7B,QAAQ,EACR,KAAK,MAAM,IAAI,EACf,MAAM,CAAC,UAAmB;AAAA,MACzB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MACrE,IAAI,QAAQ,SAAS,iCAAiC,GAAG;AAAA,QAEvD,QAAQ,OAAO,KACb,EAAE,KAAK,cAAc,SAAS,QAAQ,QAAQ,GAC9C,kEACF;AAAA,MACF,EAAO;AAAA,QAEL,QAAQ,OAAO,KACb,EAAE,KAAK,cAAc,SAAS,QAAQ,SAAS,OAAO,QAAQ,GAC9D,wEACF;AAAA;AAAA,MAEF,OAAO;AAAA,KACR;AAAA,IACH,IAAI,mBAAmB;AAAA,MACrB,QAAQ,OAAO,KACb,EAAE,KAAK,cAAc,SAAS,QAAQ,QAAQ,GAC9C,wDACF;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,cAAc,QAAQ,WAAW,cAAc;AAAA,IAErD,MAAM,UAAU,QAAQ,WAAW,iBAAiB;AAAA,IAEpD,MAAM,YAAY,sBAChB;AAAA,MACE,SAAS,OAAO,YAAY,WAAW,UAAU;AAAA,MACjD,aAAa,OAAO,gBAAgB,WAAW,cAAc;AAAA,IAC/D,GACA,QAAQ,OACV;AAAA,IAEA,QAAQ,wBAAwB,SAAS;AAAA,IACzC,QAAQ,OAAO,KACb,EAAE,KAAK,cAAc,SAAS,QAAQ,QAAQ,GAC9C,yCACF;AAAA;AAEJ;AAEA,IAAe;",
|
|
172
|
+
"debugId": "E4C1FB1BD2EABD5064756E2164756E21",
|
|
148
173
|
"names": []
|
|
149
174
|
}
|