@elizaos/plugin-localdb 2.0.0-alpha.7 → 2.0.11-beta.7

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.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/package.json +47 -52
  4. package/dist/browser/adapter.d.ts +0 -164
  5. package/dist/browser/adapter.d.ts.map +0 -1
  6. package/dist/browser/adapter.js +0 -672
  7. package/dist/browser/adapter.js.map +0 -1
  8. package/dist/browser/generated/specs/specs.d.ts +0 -55
  9. package/dist/browser/generated/specs/specs.d.ts.map +0 -1
  10. package/dist/browser/generated/specs/specs.js +0 -35
  11. package/dist/browser/generated/specs/specs.js.map +0 -1
  12. package/dist/browser/hnsw.d.ts +0 -45
  13. package/dist/browser/hnsw.d.ts.map +0 -1
  14. package/dist/browser/hnsw.js +0 -291
  15. package/dist/browser/hnsw.js.map +0 -1
  16. package/dist/browser/index.browser.d.ts +0 -11
  17. package/dist/browser/index.browser.d.ts.map +0 -1
  18. package/dist/browser/index.browser.js +0 -42
  19. package/dist/browser/index.browser.js.map +0 -1
  20. package/dist/browser/index.d.ts +0 -2
  21. package/dist/browser/index.d.ts.map +0 -1
  22. package/dist/browser/index.js +0 -3
  23. package/dist/browser/index.js.map +0 -1
  24. package/dist/browser/index.node.d.ts +0 -11
  25. package/dist/browser/index.node.d.ts.map +0 -1
  26. package/dist/browser/index.node.js +0 -43
  27. package/dist/browser/index.node.js.map +0 -1
  28. package/dist/browser/storage-browser.d.ts +0 -23
  29. package/dist/browser/storage-browser.d.ts.map +0 -1
  30. package/dist/browser/storage-browser.js +0 -118
  31. package/dist/browser/storage-browser.js.map +0 -1
  32. package/dist/browser/storage-node.d.ts +0 -22
  33. package/dist/browser/storage-node.d.ts.map +0 -1
  34. package/dist/browser/storage-node.js +0 -156
  35. package/dist/browser/storage-node.js.map +0 -1
  36. package/dist/browser/types.d.ts +0 -52
  37. package/dist/browser/types.d.ts.map +0 -1
  38. package/dist/browser/types.js +0 -17
  39. package/dist/browser/types.js.map +0 -1
  40. package/dist/browser/vitest.config.d.ts +0 -3
  41. package/dist/browser/vitest.config.d.ts.map +0 -1
  42. package/dist/browser/vitest.config.js +0 -9
  43. package/dist/browser/vitest.config.js.map +0 -1
  44. package/dist/index.d.ts +0 -2
  45. package/dist/node/adapter.d.ts +0 -164
  46. package/dist/node/adapter.d.ts.map +0 -1
  47. package/dist/node/adapter.js +0 -672
  48. package/dist/node/adapter.js.map +0 -1
  49. package/dist/node/generated/specs/specs.d.ts +0 -55
  50. package/dist/node/generated/specs/specs.d.ts.map +0 -1
  51. package/dist/node/generated/specs/specs.js +0 -35
  52. package/dist/node/generated/specs/specs.js.map +0 -1
  53. package/dist/node/hnsw.d.ts +0 -45
  54. package/dist/node/hnsw.d.ts.map +0 -1
  55. package/dist/node/hnsw.js +0 -291
  56. package/dist/node/hnsw.js.map +0 -1
  57. package/dist/node/index.browser.d.ts +0 -11
  58. package/dist/node/index.browser.d.ts.map +0 -1
  59. package/dist/node/index.browser.js +0 -42
  60. package/dist/node/index.browser.js.map +0 -1
  61. package/dist/node/index.d.ts +0 -2
  62. package/dist/node/index.d.ts.map +0 -1
  63. package/dist/node/index.js +0 -3
  64. package/dist/node/index.js.map +0 -1
  65. package/dist/node/index.node.d.ts +0 -11
  66. package/dist/node/index.node.d.ts.map +0 -1
  67. package/dist/node/index.node.js +0 -43
  68. package/dist/node/index.node.js.map +0 -1
  69. package/dist/node/storage-browser.d.ts +0 -23
  70. package/dist/node/storage-browser.d.ts.map +0 -1
  71. package/dist/node/storage-browser.js +0 -118
  72. package/dist/node/storage-browser.js.map +0 -1
  73. package/dist/node/storage-node.d.ts +0 -22
  74. package/dist/node/storage-node.d.ts.map +0 -1
  75. package/dist/node/storage-node.js +0 -156
  76. package/dist/node/storage-node.js.map +0 -1
  77. package/dist/node/types.d.ts +0 -52
  78. package/dist/node/types.d.ts.map +0 -1
  79. package/dist/node/types.js +0 -17
  80. package/dist/node/types.js.map +0 -1
  81. package/dist/node/vitest.config.d.ts +0 -3
  82. package/dist/node/vitest.config.d.ts.map +0 -1
  83. package/dist/node/vitest.config.js +0 -9
  84. package/dist/node/vitest.config.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shaw Walters and elizaOS Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # @elizaos/plugin-localdb
2
+
3
+ Persistent local database adapter for elizaOS. Stores agent state to a JSON file on Node.js or to `localStorage` in the browser. No external database required.
4
+
5
+ ## What it does
6
+
7
+ elizaOS agents need a `DatabaseAdapter` to store memories, entities, rooms, relationships, tasks, and other runtime state. This plugin provides that adapter with local persistence:
8
+
9
+ - **Node.js:** all collections are written to a single `localdb.json` file. Data survives process restarts.
10
+ - **Browser:** all collections are written to `localStorage` under the key `elizaos:localdb:<agentId>`.
11
+
12
+ Vector search uses an in-memory HNSW index (cosine similarity). The index is rebuilt from embeddings written during the current session; it does not persist across restarts.
13
+
14
+ ## Capabilities added to an Eliza agent
15
+
16
+ - Full `IDatabaseAdapter` implementation: entities, memories (with vector search), rooms, worlds, components, relationships, participants, tasks, logs, cache, pairing requests.
17
+ - JSON-patch operations on component data (`set`, `remove`, `push`, `increment`).
18
+ - Levenshtein-based embedding cache lookup for deduplication.
19
+
20
+ ## Installation
21
+
22
+ ```bash
23
+ npm install @elizaos/plugin-localdb
24
+ ```
25
+
26
+ Add the plugin to your agent character:
27
+
28
+ ```ts
29
+ import localdbPlugin from "@elizaos/plugin-localdb";
30
+
31
+ const character = {
32
+ plugins: [localdbPlugin],
33
+ // ...
34
+ };
35
+ ```
36
+
37
+ The plugin registers itself only if no other database adapter has already been loaded. Load order matters — place it after any preferred adapter so it acts as a fallback, or first if it is the intended adapter.
38
+
39
+ ## Configuration
40
+
41
+ | Environment variable | Default | Description |
42
+ |----------------------|---------|-------------|
43
+ | `LOCALDB_DATA_DIR` | `.eliza-localdb/` (process cwd) | Directory where `localdb.json` is written. Also readable as an agent setting under the same key. |
44
+
45
+ The browser entry ignores all env vars and uses `localStorage` automatically.
46
+
47
+ ## Limitations
48
+
49
+ - **Not for high write throughput.** The file backend flushes the entire JSON document after every write.
50
+ - **Vector index is not persisted.** Semantic memory search is unavailable for data written in previous sessions until new embeddings are stored.
51
+ - **No transaction atomicity.** Concurrent writes in a single process are not isolated.
52
+ - **Designed for development and lightweight deployments.** For production agents with large memory stores, prefer a SQL-backed adapter.
package/package.json CHANGED
@@ -1,75 +1,70 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-localdb",
3
- "version": "2.0.0-alpha.7",
3
+ "version": "2.0.11-beta.7",
4
4
  "type": "module",
5
- "main": "dist/node/index.node.js",
6
- "module": "dist/node/index.node.js",
7
- "types": "dist/index.d.ts",
8
- "description": "Simple JSON-based local database storage for elizaOS - no SQL, no migrations",
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/elizaos-plugins/plugin-localdb"
12
- },
13
- "publishConfig": {
14
- "access": "public"
15
- },
16
- "browser": "dist/browser/index.browser.js",
5
+ "description": "File-backed (Node) and localStorage (browser) persistence via plugin-inmemorydb; ships compiled ESM in dist/.",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "browser": "./dist/index.browser.js",
17
10
  "exports": {
18
11
  "./package.json": "./package.json",
19
12
  ".": {
20
13
  "types": "./dist/index.d.ts",
21
14
  "browser": {
22
- "types": "./dist/browser/index.browser.d.ts",
23
- "import": "./dist/browser/index.browser.js",
24
- "default": "./dist/browser/index.browser.js"
15
+ "types": "./dist/index.browser.d.ts",
16
+ "import": "./dist/index.browser.js",
17
+ "default": "./dist/index.browser.js"
25
18
  },
26
19
  "node": {
27
- "types": "./dist/node/index.node.d.ts",
28
- "import": "./dist/node/index.node.js",
29
- "default": "./dist/node/index.node.js"
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js",
22
+ "default": "./dist/index.js"
30
23
  },
31
- "bun": {
32
- "types": "./dist/node/index.node.d.ts",
33
- "default": "./dist/node/index.node.js"
34
- },
35
- "default": "./dist/node/index.node.js"
24
+ "import": "./dist/index.js",
25
+ "default": "./dist/index.js"
26
+ },
27
+ "./*.css": "./dist/*.css",
28
+ "./*": {
29
+ "types": "./dist/*.d.ts",
30
+ "import": "./dist/*.js",
31
+ "default": "./dist/*.js"
36
32
  }
37
33
  },
38
34
  "sideEffects": false,
39
35
  "files": [
40
36
  "dist"
41
37
  ],
38
+ "scripts": {
39
+ "build": "tsup --config tsup.config.ts",
40
+ "dev": "tsup --config tsup.config.ts --watch",
41
+ "clean": "rm -rf dist .turbo",
42
+ "typecheck": "tsgo --noEmit -p tsconfig.json",
43
+ "lint": "bunx @biomejs/biome check --write --unsafe .",
44
+ "lint:check": "bunx @biomejs/biome check .",
45
+ "test": "vitest run"
46
+ },
42
47
  "dependencies": {
43
- "@elizaos/core": "2.0.0-alpha.3"
48
+ "@elizaos/core": "2.0.11-beta.7",
49
+ "@elizaos/plugin-inmemorydb": "2.0.11-beta.7"
44
50
  },
45
51
  "devDependencies": {
46
- "@biomejs/biome": "^2.3.11",
47
- "@types/node": "^25.0.3",
48
- "typescript": "^5.9.3"
52
+ "@types/node": "25.6.2",
53
+ "tsup": "8.5.1",
54
+ "typescript": "^6.0.3",
55
+ "vitest": "^4.0.18"
49
56
  },
50
- "scripts": {
51
- "dev": "bun run build.ts --watch",
52
- "typecheck": "tsc --noEmit -p tsconfig.json",
53
- "clean": "rm -rf dist .turbo node_modules .turbo-tsconfig.json *.tsbuildinfo",
54
- "format": "bunx @biomejs/biome format --write .",
55
- "format:check": "bunx @biomejs/biome format .",
56
- "test": "vitest run --config vitest.config.ts --passWithNoTests",
57
- "test:watch": "vitest --config vitest.config.ts",
58
- "lint": "bunx @biomejs/biome check --write --unsafe .",
59
- "lint:check": "bunx @biomejs/biome check .",
60
- "build": "bun run build.ts",
61
- "build:ts": "bun run build.ts"
57
+ "peerDependencies": {
58
+ "@elizaos/core": "2.0.11-beta.7",
59
+ "@elizaos/plugin-inmemorydb": "2.0.11-beta.7"
62
60
  },
63
- "gitHead": "255e37c0e4a76da0b776219db5ebb9dadf20e89f",
64
- "milady": {
65
- "platforms": [
66
- "browser",
67
- "node"
68
- ],
69
- "runtime": "both",
70
- "platformDetails": {
71
- "browser": "Browser-compatible build available via exports.browser",
72
- "node": "Node.js build available via exports.node"
73
- }
74
- }
61
+ "publishConfig": {
62
+ "access": "public"
63
+ },
64
+ "repository": {
65
+ "type": "git",
66
+ "url": "git+https://github.com/elizaos/eliza.git",
67
+ "directory": "plugins/plugin-localdb"
68
+ },
69
+ "gitHead": "cdbc876f793d96073d7eb0d09715a031ce0cd32e"
75
70
  }
@@ -1,164 +0,0 @@
1
- import { type Agent, type Component, DatabaseAdapter, type Entity, type Log, type LogBody, type Memory, type MemoryMetadata, type Metadata, type PairingAllowlistEntry, type PairingChannel, type PairingRequest, type Participant, type Relationship, type Room, type Task, type UUID, type World } from "@elizaos/core";
2
- import { type IStorage } from "./types";
3
- export declare class LocalDatabaseAdapter extends DatabaseAdapter<IStorage> {
4
- private storage;
5
- private vectorIndex;
6
- private embeddingDimension;
7
- private ready;
8
- private agentId;
9
- constructor(storage: IStorage, agentId: UUID);
10
- initialize(): Promise<void>;
11
- init(): Promise<void>;
12
- runPluginMigrations(_plugins: Array<{
13
- name: string;
14
- schema?: Record<string, unknown>;
15
- }>, _options?: {
16
- verbose?: boolean;
17
- force?: boolean;
18
- dryRun?: boolean;
19
- }): Promise<void>;
20
- isReady(): Promise<boolean>;
21
- close(): Promise<void>;
22
- getConnection(): Promise<IStorage>;
23
- getAgent(agentId: UUID): Promise<Agent | null>;
24
- getAgents(): Promise<Partial<Agent>[]>;
25
- createAgent(agent: Partial<Agent>): Promise<boolean>;
26
- updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean>;
27
- deleteAgent(agentId: UUID): Promise<boolean>;
28
- ensureEmbeddingDimension(dimension: number): Promise<void>;
29
- getEntitiesByIds(entityIds: UUID[]): Promise<Entity[] | null>;
30
- getEntitiesForRoom(roomId: UUID, includeComponents?: boolean): Promise<Entity[]>;
31
- createEntities(entities: Entity[]): Promise<boolean>;
32
- updateEntity(entity: Entity): Promise<void>;
33
- getComponent(entityId: UUID, type: string, worldId?: UUID, sourceEntityId?: UUID): Promise<Component | null>;
34
- getComponents(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]>;
35
- createComponent(component: Component): Promise<boolean>;
36
- updateComponent(component: Component): Promise<void>;
37
- deleteComponent(componentId: UUID): Promise<void>;
38
- getMemories(params: {
39
- entityId?: UUID;
40
- agentId?: UUID;
41
- count?: number;
42
- offset?: number;
43
- unique?: boolean;
44
- tableName: string;
45
- start?: number;
46
- end?: number;
47
- roomId?: UUID;
48
- worldId?: UUID;
49
- }): Promise<Memory[]>;
50
- getMemoriesByRoomIds(params: {
51
- roomIds: UUID[];
52
- tableName: string;
53
- limit?: number;
54
- }): Promise<Memory[]>;
55
- getMemoryById(id: UUID): Promise<Memory | null>;
56
- getMemoriesByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]>;
57
- getCachedEmbeddings(params: {
58
- query_table_name: string;
59
- query_threshold: number;
60
- query_input: string;
61
- query_field_name: string;
62
- query_field_sub_name: string;
63
- query_match_count: number;
64
- }): Promise<{
65
- embedding: number[];
66
- levenshtein_score: number;
67
- }[]>;
68
- private simpleStringScore;
69
- log(params: {
70
- body: LogBody;
71
- entityId: UUID;
72
- roomId: UUID;
73
- type: string;
74
- }): Promise<void>;
75
- getLogs(params: {
76
- entityId?: UUID;
77
- roomId?: UUID;
78
- type?: string;
79
- count?: number;
80
- offset?: number;
81
- }): Promise<Log[]>;
82
- deleteLog(logId: UUID): Promise<void>;
83
- searchMemories(params: {
84
- tableName: string;
85
- embedding: number[];
86
- match_threshold?: number;
87
- count?: number;
88
- unique?: boolean;
89
- query?: string;
90
- roomId?: UUID;
91
- worldId?: UUID;
92
- entityId?: UUID;
93
- }): Promise<Memory[]>;
94
- createMemory(memory: Memory, tableName: string, unique?: boolean): Promise<UUID>;
95
- updateMemory(memory: Partial<Memory> & {
96
- id: UUID;
97
- metadata?: MemoryMetadata;
98
- }): Promise<boolean>;
99
- deleteMemory(memoryId: UUID): Promise<void>;
100
- deleteManyMemories(memoryIds: UUID[]): Promise<void>;
101
- deleteAllMemories(roomId: UUID, tableName: string): Promise<void>;
102
- countMemories(roomId: UUID, unique?: boolean, tableName?: string): Promise<number>;
103
- getMemoriesByWorldId(params: {
104
- worldId: UUID;
105
- count?: number;
106
- tableName?: string;
107
- }): Promise<Memory[]>;
108
- createWorld(world: World): Promise<UUID>;
109
- getWorld(id: UUID): Promise<World | null>;
110
- removeWorld(id: UUID): Promise<void>;
111
- getAllWorlds(): Promise<World[]>;
112
- updateWorld(world: World): Promise<void>;
113
- getRoomsByIds(roomIds: UUID[]): Promise<Room[] | null>;
114
- createRooms(rooms: Room[]): Promise<UUID[]>;
115
- deleteRoom(roomId: UUID): Promise<void>;
116
- deleteRoomsByWorldId(worldId: UUID): Promise<void>;
117
- updateRoom(room: Room): Promise<void>;
118
- getRoomsForParticipant(entityId: UUID): Promise<UUID[]>;
119
- getRoomsForParticipants(userIds: UUID[]): Promise<UUID[]>;
120
- getRoomsByWorld(worldId: UUID): Promise<Room[]>;
121
- removeParticipant(entityId: UUID, roomId: UUID): Promise<boolean>;
122
- getParticipantsForEntity(entityId: UUID): Promise<Participant[]>;
123
- getParticipantsForRoom(roomId: UUID): Promise<UUID[]>;
124
- isRoomParticipant(roomId: UUID, entityId: UUID): Promise<boolean>;
125
- addParticipantsRoom(entityIds: UUID[], roomId: UUID): Promise<boolean>;
126
- getParticipantUserState(roomId: UUID, entityId: UUID): Promise<"FOLLOWED" | "MUTED" | null>;
127
- setParticipantUserState(roomId: UUID, entityId: UUID, state: "FOLLOWED" | "MUTED" | null): Promise<void>;
128
- createRelationship(params: {
129
- sourceEntityId: UUID;
130
- targetEntityId: UUID;
131
- tags?: string[];
132
- metadata?: Metadata;
133
- }): Promise<boolean>;
134
- getRelationship(params: {
135
- sourceEntityId: UUID;
136
- targetEntityId: UUID;
137
- }): Promise<Relationship | null>;
138
- getRelationships(params: {
139
- entityId: UUID;
140
- tags?: string[];
141
- }): Promise<Relationship[]>;
142
- updateRelationship(relationship: Relationship): Promise<void>;
143
- getCache<T>(key: string): Promise<T | undefined>;
144
- setCache<T>(key: string, value: T): Promise<boolean>;
145
- deleteCache(key: string): Promise<boolean>;
146
- createTask(task: Task): Promise<UUID>;
147
- getTasks(params: {
148
- roomId?: UUID;
149
- tags?: string[];
150
- entityId?: UUID;
151
- }): Promise<Task[]>;
152
- getTask(id: UUID): Promise<Task | null>;
153
- getTasksByName(name: string): Promise<Task[]>;
154
- updateTask(id: UUID, task: Partial<Task>): Promise<void>;
155
- deleteTask(id: UUID): Promise<void>;
156
- getPairingRequests(channel: PairingChannel, agentId: UUID): Promise<PairingRequest[]>;
157
- createPairingRequest(request: PairingRequest): Promise<UUID>;
158
- updatePairingRequest(request: PairingRequest): Promise<void>;
159
- deletePairingRequest(id: UUID): Promise<void>;
160
- getPairingAllowlist(channel: PairingChannel, agentId: UUID): Promise<PairingAllowlistEntry[]>;
161
- createPairingAllowlistEntry(entry: PairingAllowlistEntry): Promise<UUID>;
162
- deletePairingAllowlistEntry(id: UUID): Promise<void>;
163
- }
164
- //# sourceMappingURL=adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,SAAS,EAEd,eAAe,EACf,KAAK,MAAM,EACX,KAAK,GAAG,EACR,KAAK,OAAO,EAEZ,KAAK,MAAM,EACX,KAAK,cAAc,EAEnB,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,KAAK,EACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AA6DrD,qBAAa,oBAAqB,SAAQ,eAAe,CAAC,QAAQ,CAAC;IACjE,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,kBAAkB,CAAO;IACjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAO;gBAEV,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI;IAuBtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,mBAAmB,CACvB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,EACnE,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAClE,OAAO,CAAC,IAAI,CAAC;IAIV,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIlC,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAI9C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAItC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpD,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnE,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5C,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAS7D,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,UAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuB9E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,YAAY,CAChB,QAAQ,EAAE,IAAI,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,EACd,cAAc,CAAC,EAAE,IAAI,GACpB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAYtB,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAU1F,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAMvD,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,WAAW,CAAC,MAAM,EAAE;QACxB,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,OAAO,CAAC,EAAE,IAAI,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,IAAI,CAAC;QACd,OAAO,CAAC,EAAE,IAAI,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6Bf,oBAAoB,CAAC,MAAM,EAAE;QACjC,OAAO,EAAE,IAAI,EAAE,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBf,aAAa,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI/C,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAY1E,mBAAmB,CAAC,MAAM,EAAE;QAChC,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IA4BjE,OAAO,CAAC,iBAAiB;IASnB,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAazF,OAAO,CAAC,MAAM,EAAE;QACpB,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,MAAM,CAAC,EAAE,IAAI,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAoBZ,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,cAAc,CAAC,MAAM,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,IAAI,CAAC;QACd,OAAO,CAAC,EAAE,IAAI,CAAC;QACf,QAAQ,CAAC,EAAE,IAAI,CAAC;KACjB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBf,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B9E,YAAY,CAChB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;KAAE,GAChE,OAAO,CAAC,OAAO,CAAC;IAuBb,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,UAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAShF,oBAAoB,CAAC,MAAM,EAAE;QACjC,OAAO,EAAE,IAAI,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBf,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,QAAQ,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIzC,WAAW,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAIhC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IAStD,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAU3C,UAAU,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IASvC,oBAAoB,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IASlD,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQvD,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQzD,eAAe,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAI/C,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBjE,wBAAwB,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAmBhE,sBAAsB,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQrD,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAQjE,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBtE,uBAAuB,CAC3B,MAAM,EAAE,IAAI,EACZ,QAAQ,EAAE,IAAI,GACb,OAAO,CAAC,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC;IAYjC,uBAAuB,CAC3B,MAAM,EAAE,IAAI,EACZ,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,GACjC,OAAO,CAAC,IAAI,CAAC;IAgBV,kBAAkB,CAAC,MAAM,EAAE;QAC/B,cAAc,EAAE,IAAI,CAAC;QACrB,cAAc,EAAE,IAAI,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;KACrB,GAAG,OAAO,CAAC,OAAO,CAAC;IAed,eAAe,CAAC,MAAM,EAAE;QAC5B,cAAc,EAAE,IAAI,CAAC;QACrB,cAAc,EAAE,IAAI,CAAC;KACtB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAqB1B,gBAAgB,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAyBtF,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB7D,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAYhD,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1C,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,QAAQ,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAWtF,OAAO,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAIvC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAI7C,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnC,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAOrF,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5D,oBAAoB,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,mBAAmB,CACvB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,IAAI,GACZ,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAO7B,2BAA2B,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE,2BAA2B,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3D"}