@johnboxcodes/boxlogger 0.2.1 → 0.3.2

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/CHANGELOG.md CHANGED
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.0] - 2026-02-03
9
+
10
+ ### Removed
11
+ - **BREAKING: SQLite provider completely removed**
12
+ - No native dependencies (better-sqlite3 removed)
13
+ - Simplified to console and memory providers only
14
+
15
+ ### Changed
16
+ - Package now works everywhere without any native dependencies
17
+ - Smaller bundle size
18
+ - Perfect for Next.js Edge runtime and browser environments
19
+
8
20
  ## [0.2.0] - 2026-02-02
9
21
 
10
22
  ### Added
package/README.md CHANGED
@@ -74,7 +74,6 @@ await Sentry.init('console', {
74
74
  ```typescript
75
75
  import * as Sentry from '@johnboxcodes/boxlogger';
76
76
 
77
- await Sentry.init('sqlite', {
78
77
  filename: './logs.db',
79
78
  service: 'my-service',
80
79
  environment: 'production',
@@ -111,7 +110,6 @@ const logger = await create(new MyCustomStore(), {
111
110
  Initialize the logger with a storage provider.
112
111
 
113
112
  ```typescript
114
- await Sentry.init('sqlite', {
115
113
  filename: './logs.db',
116
114
  service: 'my-api',
117
115
  environment: 'production',
@@ -241,33 +239,56 @@ const stats = await Sentry.getStats();
241
239
  | `beforeSend` | `function` | - | Hook to modify/filter events |
242
240
  | `beforeSendMessage` | `function` | - | Hook to modify/filter messages |
243
241
 
244
- ## Examples
245
-
246
- See the [examples](./examples) directory for complete examples:
247
- - [examples/simple.js](./examples/simple.js) - Quick start example (run with `node examples/simple.js`)
248
- - [examples/server.ts](./examples/server.ts) - Express server with error tracking
249
- - [examples/console-demo.ts](./examples/console-demo.ts) - Console provider with colorful output
250
- - [examples/nextjs-integration.tsx](./examples/nextjs-integration.tsx) - Next.js integration (server + client)
251
-
252
242
  ## Next.js Integration
253
243
 
254
- The console and memory providers work in both Next.js server and client components!
244
+ Perfect for development! Use boxlogger locally and Sentry in production with the same API.
245
+
246
+ ### Development + Production Setup
255
247
 
256
248
  ```typescript
257
- // Client component
258
- 'use client';
259
- import * as Sentry from '@johnboxcodes/boxlogger';
249
+ // sentry.server.config.ts
250
+ import * as Sentry from '@sentry/nextjs';
251
+
252
+ if (process.env.NODE_ENV === 'development') {
253
+ // Development: Use boxlogger with colorful console output
254
+ const boxlogger = await import('@johnboxcodes/boxlogger');
255
+ await boxlogger.init('console', {
256
+ service: 'my-app',
257
+ environment: 'development',
258
+ minLevel: 'debug',
259
+ });
260
+ Object.assign(Sentry, boxlogger);
261
+ } else {
262
+ // Production: Use real Sentry
263
+ Sentry.init({
264
+ dsn: process.env.SENTRY_DSN,
265
+ tracesSampleRate: 0.1,
266
+ });
267
+ }
268
+ ```
260
269
 
261
- // Works in the browser!
262
- await Sentry.init('console', {
263
- service: 'my-nextjs-app',
264
- environment: 'development'
265
- });
270
+ ### Benefits
266
271
 
267
- Sentry.captureException(error);
268
- ```
272
+ **Development:**
273
+ - Beautiful colorful console output
274
+ - No Sentry quota usage
275
+ - Works offline
276
+ - Instant feedback
269
277
 
270
- See [examples/nextjs-integration.tsx](./examples/nextjs-integration.tsx) for complete examples.
278
+ **Production:**
279
+ - Full Sentry features (alerts, dashboards, replays)
280
+ - Error aggregation and monitoring
281
+ - Same API - just change `NODE_ENV`!
282
+
283
+ See [examples/nextjs-integration.tsx](./examples/nextjs-integration.tsx) for complete setup including Edge runtime and client components.
284
+
285
+ ## Examples
286
+
287
+ See the [examples](./examples) directory for complete examples:
288
+ - [examples/simple.js](./examples/simple.js) - Quick start example (run with `node examples/simple.js`)
289
+ - [examples/server.ts](./examples/server.ts) - Express server with error tracking
290
+ - [examples/console-demo.ts](./examples/console-demo.ts) - Console provider with colorful output
291
+ - [examples/nextjs-integration.tsx](./examples/nextjs-integration.tsx) - Next.js integration (server + client)
271
292
 
272
293
  ## License
273
294
 
package/dist/browser.js CHANGED
@@ -3,5 +3,5 @@
3
3
  * Only exports console and memory providers (no SQLite)
4
4
  */
5
5
  export * from './index.js';
6
- // Note: SQLiteStoreConfig is not exported to avoid importing sqlite module
6
+ // Note: No SQLite provider - only console and memory
7
7
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAC;AA+B3B,2EAA2E"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAC;AA+B3B,qDAAqD"}
package/dist/index.d.ts CHANGED
@@ -8,10 +8,10 @@
8
8
  *
9
9
  * @example Quick Start
10
10
  * ```typescript
11
- * import * as Sentry from '@nodelogger/core';
11
+ * import * as Sentry from '@johnboxcodes/boxlogger';
12
12
  *
13
- * // Initialize with SQLite storage
14
- * await Sentry.init('sqlite', { filename: './logs.db' });
13
+ * // Initialize with Console storage
14
+ * await Sentry.init('console', { service: 'my-app' });
15
15
  *
16
16
  * // 1. captureException - The Error Workhorse
17
17
  * try {
package/dist/index.js CHANGED
@@ -8,10 +8,10 @@
8
8
  *
9
9
  * @example Quick Start
10
10
  * ```typescript
11
- * import * as Sentry from '@nodelogger/core';
11
+ * import * as Sentry from '@johnboxcodes/boxlogger';
12
12
  *
13
- * // Initialize with SQLite storage
14
- * await Sentry.init('sqlite', { filename: './logs.db' });
13
+ * // Initialize with Console storage
14
+ * await Sentry.init('console', { service: 'my-app' });
15
15
  *
16
16
  * // 1. captureException - The Error Workhorse
17
17
  * try {
package/dist/logger.d.ts CHANGED
@@ -15,14 +15,14 @@ import type { LoggerConfig, LogLevel, LogEntry, LogMetadata, Session, StoreProvi
15
15
  * - Multiple log levels (fatal, error, warn, info, debug, trace)
16
16
  * - Session tracking
17
17
  * - Structured metadata (tags, user, request, error info)
18
- * - Pluggable storage backends (SQLite, MongoDB, Memory)
18
+ * - Pluggable storage backends (Console, Memory)
19
19
  *
20
20
  * @example
21
21
  * ```typescript
22
- * import { Logger } from '@nodelogger/core';
23
- * import { SQLiteStoreProvider } from '@nodelogger/core/sqlite';
22
+ * import { Logger } from '@johnboxcodes/boxlogger';
23
+ * import { ConsoleStoreProvider } from '@johnboxcodes/boxlogger/console';
24
24
  *
25
- * const store = new SQLiteStoreProvider({ filename: './logs.db' });
25
+ * const store = new ConsoleStoreProvider();
26
26
  * await store.init();
27
27
  *
28
28
  * const logger = new Logger({
package/dist/logger.js CHANGED
@@ -48,14 +48,14 @@ const LOG_LEVEL_VALUES = {
48
48
  * - Multiple log levels (fatal, error, warn, info, debug, trace)
49
49
  * - Session tracking
50
50
  * - Structured metadata (tags, user, request, error info)
51
- * - Pluggable storage backends (SQLite, MongoDB, Memory)
51
+ * - Pluggable storage backends (Console, Memory)
52
52
  *
53
53
  * @example
54
54
  * ```typescript
55
- * import { Logger } from '@nodelogger/core';
56
- * import { SQLiteStoreProvider } from '@nodelogger/core/sqlite';
55
+ * import { Logger } from '@johnboxcodes/boxlogger';
56
+ * import { ConsoleStoreProvider } from '@johnboxcodes/boxlogger/console';
57
57
  *
58
- * const store = new SQLiteStoreProvider({ filename: './logs.db' });
58
+ * const store = new ConsoleStoreProvider();
59
59
  * await store.init();
60
60
  *
61
61
  * const logger = new Logger({
package/dist/types.d.ts CHANGED
@@ -213,7 +213,7 @@ export interface StoreProviderConfig {
213
213
  * All methods are async to support both sync and async stores.
214
214
  */
215
215
  export interface StoreProvider {
216
- /** Provider name (e.g., 'sqlite', 'mongodb', 'memory') */
216
+ /** Provider name (e.g., 'console', 'memory') */
217
217
  readonly name: string;
218
218
  /**
219
219
  * Check if the store is ready for operations
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@johnboxcodes/boxlogger",
3
- "version": "0.2.1",
3
+ "version": "0.3.2",
4
4
  "description": "Lightweight, Sentry-compatible backend logger with pluggable storage providers (SQLite, Memory) for Node.js",
5
5
  "author": "johnbox codes",
6
6
  "license": "MIT",
@@ -67,7 +67,6 @@
67
67
  "logger",
68
68
  "logging",
69
69
  "backend",
70
- "sqlite",
71
70
  "storage",
72
71
  "nodejs",
73
72
  "sentry",
@@ -1,204 +0,0 @@
1
- /**
2
- * SQLite Store Provider
3
- *
4
- * Persistent storage using better-sqlite3 - the most reliable SQLite library for Node.js.
5
- *
6
- * @module stores/sqlite
7
- * @packageDocumentation
8
- */
9
- import Database, { type Database as DatabaseType } from 'better-sqlite3';
10
- import { BaseStoreProvider } from './base.js';
11
- import type { StoreProviderConfig, LogEntry, Session, LogFilter, SessionFilter, StoreStats } from '../types.js';
12
- /**
13
- * Configuration options for SQLite store
14
- */
15
- export interface SQLiteStoreConfig extends StoreProviderConfig {
16
- /**
17
- * Path to SQLite database file
18
- * @default ':memory:' for in-memory database
19
- */
20
- filename?: string;
21
- /**
22
- * Enable WAL mode for better concurrent read performance
23
- * @default true
24
- */
25
- walMode?: boolean;
26
- /**
27
- * Cache size in KB (negative for number of pages)
28
- * @default -2000 (2000 pages)
29
- */
30
- cacheSize?: number;
31
- /**
32
- * Enable foreign keys
33
- * @default true
34
- */
35
- foreignKeys?: boolean;
36
- /**
37
- * Create indexes for common queries
38
- * @default true
39
- */
40
- createIndexes?: boolean;
41
- }
42
- /**
43
- * SQLite store provider using better-sqlite3
44
- *
45
- * @remarks
46
- * Uses synchronous better-sqlite3 for maximum performance and reliability.
47
- * Supports both file-based and in-memory databases.
48
- *
49
- * Features:
50
- * - WAL mode for concurrent reads
51
- * - Automatic schema creation and migration
52
- * - Full-text search on message field
53
- * - Efficient indexes for common query patterns
54
- * - Transaction support for bulk operations
55
- *
56
- * @example
57
- * ```typescript
58
- * import { SQLiteStoreProvider } from '@nodelogger/core/sqlite';
59
- *
60
- * // File-based persistent storage
61
- * const store = new SQLiteStoreProvider({
62
- * filename: './logs.db',
63
- * walMode: true
64
- * });
65
- * await store.init();
66
- *
67
- * // In-memory (fast, non-persistent)
68
- * const memStore = new SQLiteStoreProvider();
69
- * await memStore.init();
70
- * ```
71
- */
72
- export declare class SQLiteStoreProvider extends BaseStoreProvider {
73
- readonly name = "sqlite";
74
- private db;
75
- private sqliteConfig;
76
- constructor(config?: SQLiteStoreConfig);
77
- /**
78
- * Initialize the SQLite database
79
- */
80
- init(): Promise<void>;
81
- /**
82
- * Close the database connection
83
- */
84
- close(): Promise<void>;
85
- /**
86
- * Create database schema
87
- */
88
- private createSchema;
89
- /**
90
- * Save a log entry
91
- * @param entry - Log entry to save
92
- */
93
- saveLog(entry: LogEntry): Promise<void>;
94
- /**
95
- * Save multiple log entries in a transaction
96
- * @param entries - Log entries to save
97
- */
98
- saveLogs(entries: LogEntry[]): Promise<void>;
99
- /**
100
- * Get log entries matching filter
101
- * @param filter - Query filter
102
- * @returns Matching log entries
103
- */
104
- getLogs(filter?: LogFilter): Promise<LogEntry[]>;
105
- /**
106
- * Delete log entries matching filter
107
- * @param filter - Query filter
108
- * @returns Number of deleted entries
109
- */
110
- deleteLogs(filter?: LogFilter): Promise<number>;
111
- /**
112
- * Count log entries matching filter
113
- * @param filter - Query filter
114
- * @returns Count of matching entries
115
- */
116
- countLogs(filter?: LogFilter): Promise<number>;
117
- /**
118
- * Enforce maximum log limit by deleting oldest entries
119
- */
120
- private enforceLogLimit;
121
- /**
122
- * Create a new session
123
- * @param session - Session to create
124
- */
125
- createSession(session: Session): Promise<void>;
126
- /**
127
- * Update an existing session
128
- * @param sessionId - Session ID
129
- * @param updates - Partial session data
130
- */
131
- updateSession(sessionId: string, updates: Partial<Session>): Promise<void>;
132
- /**
133
- * Get a session by ID
134
- * @param sessionId - Session ID
135
- * @returns Session or null
136
- */
137
- getSession(sessionId: string): Promise<Session | null>;
138
- /**
139
- * Get sessions matching filter
140
- * @param filter - Query filter
141
- * @returns Matching sessions
142
- */
143
- getSessions(filter?: SessionFilter): Promise<Session[]>;
144
- /**
145
- * Delete a session and its logs
146
- * @param sessionId - Session ID
147
- */
148
- deleteSession(sessionId: string): Promise<void>;
149
- /**
150
- * Enforce maximum session limit
151
- */
152
- private enforceSessionLimit;
153
- /**
154
- * Clean up old data
155
- * @param olderThan - Delete entries older than this date
156
- * @returns Number of deleted entries
157
- */
158
- cleanup(olderThan: Date): Promise<number>;
159
- /**
160
- * Get storage statistics
161
- * @returns Storage stats
162
- */
163
- getStats(): Promise<StoreStats>;
164
- /**
165
- * Build WHERE clause from filter
166
- */
167
- private buildWhereClause;
168
- /**
169
- * Build complete SELECT query from filter
170
- */
171
- private buildLogQuery;
172
- /**
173
- * Convert SQLite row to LogEntry
174
- */
175
- private rowToLogEntry;
176
- /**
177
- * Convert SQLite row to Session
178
- */
179
- private rowToSession;
180
- /**
181
- * Execute raw SQL query
182
- * @param sql - SQL query
183
- * @param params - Query parameters
184
- * @returns Query results
185
- */
186
- query<T>(sql: string, ...params: unknown[]): T[];
187
- /**
188
- * Execute raw SQL statement
189
- * @param sql - SQL statement
190
- * @param params - Statement parameters
191
- * @returns Run result
192
- */
193
- execute(sql: string, ...params: unknown[]): Database.RunResult;
194
- /**
195
- * Run VACUUM to optimize database
196
- */
197
- vacuum(): void;
198
- /**
199
- * Get the underlying better-sqlite3 database instance
200
- * @returns Database instance or null
201
- */
202
- getDatabase(): DatabaseType | null;
203
- }
204
- //# sourceMappingURL=sqlite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/stores/sqlite.ts"],"names":[],"mappings":"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"}
@@ -1,608 +0,0 @@
1
- /**
2
- * SQLite Store Provider
3
- *
4
- * Persistent storage using better-sqlite3 - the most reliable SQLite library for Node.js.
5
- *
6
- * @module stores/sqlite
7
- * @packageDocumentation
8
- */
9
- import Database from 'better-sqlite3';
10
- import { BaseStoreProvider } from './base.js';
11
- /**
12
- * SQLite store provider using better-sqlite3
13
- *
14
- * @remarks
15
- * Uses synchronous better-sqlite3 for maximum performance and reliability.
16
- * Supports both file-based and in-memory databases.
17
- *
18
- * Features:
19
- * - WAL mode for concurrent reads
20
- * - Automatic schema creation and migration
21
- * - Full-text search on message field
22
- * - Efficient indexes for common query patterns
23
- * - Transaction support for bulk operations
24
- *
25
- * @example
26
- * ```typescript
27
- * import { SQLiteStoreProvider } from '@nodelogger/core/sqlite';
28
- *
29
- * // File-based persistent storage
30
- * const store = new SQLiteStoreProvider({
31
- * filename: './logs.db',
32
- * walMode: true
33
- * });
34
- * await store.init();
35
- *
36
- * // In-memory (fast, non-persistent)
37
- * const memStore = new SQLiteStoreProvider();
38
- * await memStore.init();
39
- * ```
40
- */
41
- export class SQLiteStoreProvider extends BaseStoreProvider {
42
- name = 'sqlite';
43
- db = null;
44
- sqliteConfig;
45
- constructor(config) {
46
- super(config);
47
- this.sqliteConfig = {
48
- maxLogs: config?.maxLogs ?? 100000,
49
- maxSessions: config?.maxSessions ?? 10000,
50
- cleanupInterval: config?.cleanupInterval ?? 0,
51
- retentionPeriod: config?.retentionPeriod ?? 30 * 24 * 60 * 60 * 1000,
52
- filename: config?.filename ?? ':memory:',
53
- walMode: config?.walMode ?? true,
54
- cacheSize: config?.cacheSize ?? -2000,
55
- foreignKeys: config?.foreignKeys ?? true,
56
- createIndexes: config?.createIndexes ?? true,
57
- };
58
- }
59
- /**
60
- * Initialize the SQLite database
61
- */
62
- async init() {
63
- this.db = new Database(this.sqliteConfig.filename);
64
- // Configure database
65
- if (this.sqliteConfig.walMode && this.sqliteConfig.filename !== ':memory:') {
66
- this.db.pragma('journal_mode = WAL');
67
- }
68
- this.db.pragma(`cache_size = ${this.sqliteConfig.cacheSize}`);
69
- if (this.sqliteConfig.foreignKeys) {
70
- this.db.pragma('foreign_keys = ON');
71
- }
72
- // Create schema
73
- this.createSchema();
74
- this._ready = true;
75
- this.startCleanupTimer();
76
- }
77
- /**
78
- * Close the database connection
79
- */
80
- async close() {
81
- this.stopCleanupTimer();
82
- if (this.db) {
83
- this.db.close();
84
- this.db = null;
85
- }
86
- this._ready = false;
87
- }
88
- /**
89
- * Create database schema
90
- */
91
- createSchema() {
92
- if (!this.db)
93
- return;
94
- // Logs table
95
- this.db.exec(`
96
- CREATE TABLE IF NOT EXISTS logs (
97
- id TEXT PRIMARY KEY,
98
- timestamp TEXT NOT NULL,
99
- level TEXT NOT NULL,
100
- message TEXT NOT NULL,
101
- logger TEXT,
102
- session_id TEXT,
103
- service TEXT,
104
- environment TEXT,
105
- release TEXT,
106
- hostname TEXT,
107
- pid INTEGER,
108
- metadata TEXT,
109
- created_at TEXT DEFAULT CURRENT_TIMESTAMP
110
- )
111
- `);
112
- // Sessions table
113
- this.db.exec(`
114
- CREATE TABLE IF NOT EXISTS sessions (
115
- id TEXT PRIMARY KEY,
116
- started_at TEXT NOT NULL,
117
- ended_at TEXT,
118
- status TEXT NOT NULL DEFAULT 'active',
119
- error_count INTEGER DEFAULT 0,
120
- duration INTEGER,
121
- user_data TEXT,
122
- attributes TEXT,
123
- created_at TEXT DEFAULT CURRENT_TIMESTAMP
124
- )
125
- `);
126
- // Create indexes for common query patterns
127
- if (this.sqliteConfig.createIndexes) {
128
- this.db.exec(`
129
- CREATE INDEX IF NOT EXISTS idx_logs_timestamp ON logs(timestamp DESC);
130
- CREATE INDEX IF NOT EXISTS idx_logs_level ON logs(level);
131
- CREATE INDEX IF NOT EXISTS idx_logs_session_id ON logs(session_id);
132
- CREATE INDEX IF NOT EXISTS idx_logs_service ON logs(service);
133
- CREATE INDEX IF NOT EXISTS idx_logs_environment ON logs(environment);
134
- CREATE INDEX IF NOT EXISTS idx_logs_level_timestamp ON logs(level, timestamp DESC);
135
-
136
- CREATE INDEX IF NOT EXISTS idx_sessions_status ON sessions(status);
137
- CREATE INDEX IF NOT EXISTS idx_sessions_started_at ON sessions(started_at DESC);
138
- `);
139
- }
140
- }
141
- // =========================================================================
142
- // Log Operations
143
- // =========================================================================
144
- /**
145
- * Save a log entry
146
- * @param entry - Log entry to save
147
- */
148
- async saveLog(entry) {
149
- this.ensureReady();
150
- const stmt = this.db.prepare(`
151
- INSERT INTO logs (id, timestamp, level, message, logger, session_id,
152
- service, environment, release, hostname, pid, metadata)
153
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
154
- `);
155
- stmt.run(entry.id || this.generateId(), entry.timestamp || this.now(), entry.level, entry.message, entry.logger ?? null, entry.sessionId ?? null, entry.service ?? null, entry.environment ?? null, entry.release ?? null, entry.hostname ?? null, entry.pid ?? null, entry.metadata ? JSON.stringify(entry.metadata) : null);
156
- // Enforce max logs limit
157
- await this.enforceLogLimit();
158
- }
159
- /**
160
- * Save multiple log entries in a transaction
161
- * @param entries - Log entries to save
162
- */
163
- async saveLogs(entries) {
164
- this.ensureReady();
165
- const stmt = this.db.prepare(`
166
- INSERT INTO logs (id, timestamp, level, message, logger, session_id,
167
- service, environment, release, hostname, pid, metadata)
168
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
169
- `);
170
- const insertMany = this.db.transaction((logs) => {
171
- for (const entry of logs) {
172
- stmt.run(entry.id || this.generateId(), entry.timestamp || this.now(), entry.level, entry.message, entry.logger ?? null, entry.sessionId ?? null, entry.service ?? null, entry.environment ?? null, entry.release ?? null, entry.hostname ?? null, entry.pid ?? null, entry.metadata ? JSON.stringify(entry.metadata) : null);
173
- }
174
- });
175
- insertMany(entries);
176
- await this.enforceLogLimit();
177
- }
178
- /**
179
- * Get log entries matching filter
180
- * @param filter - Query filter
181
- * @returns Matching log entries
182
- */
183
- async getLogs(filter) {
184
- this.ensureReady();
185
- const { sql, params } = this.buildLogQuery(filter);
186
- const stmt = this.db.prepare(sql);
187
- const rows = stmt.all(...params);
188
- return rows.map((row) => this.rowToLogEntry(row));
189
- }
190
- /**
191
- * Delete log entries matching filter
192
- * @param filter - Query filter
193
- * @returns Number of deleted entries
194
- */
195
- async deleteLogs(filter) {
196
- this.ensureReady();
197
- if (!filter) {
198
- const result = this.db.prepare('DELETE FROM logs').run();
199
- return result.changes;
200
- }
201
- const { whereClauses, params } = this.buildWhereClause(filter);
202
- const sql = `DELETE FROM logs${whereClauses ? ` WHERE ${whereClauses}` : ''}`;
203
- const result = this.db.prepare(sql).run(...params);
204
- return result.changes;
205
- }
206
- /**
207
- * Count log entries matching filter
208
- * @param filter - Query filter
209
- * @returns Count of matching entries
210
- */
211
- async countLogs(filter) {
212
- this.ensureReady();
213
- const { whereClauses, params } = this.buildWhereClause(filter);
214
- const sql = `SELECT COUNT(*) as count FROM logs${whereClauses ? ` WHERE ${whereClauses}` : ''}`;
215
- const row = this.db.prepare(sql).get(...params);
216
- return row.count;
217
- }
218
- /**
219
- * Enforce maximum log limit by deleting oldest entries
220
- */
221
- async enforceLogLimit() {
222
- const count = await this.countLogs();
223
- if (count > this.sqliteConfig.maxLogs) {
224
- const excess = count - this.sqliteConfig.maxLogs;
225
- this.db.prepare(`
226
- DELETE FROM logs WHERE id IN (
227
- SELECT id FROM logs ORDER BY timestamp ASC LIMIT ?
228
- )
229
- `).run(excess);
230
- }
231
- }
232
- // =========================================================================
233
- // Session Operations
234
- // =========================================================================
235
- /**
236
- * Create a new session
237
- * @param session - Session to create
238
- */
239
- async createSession(session) {
240
- this.ensureReady();
241
- const stmt = this.db.prepare(`
242
- INSERT INTO sessions (id, started_at, ended_at, status, error_count,
243
- duration, user_data, attributes)
244
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
245
- `);
246
- stmt.run(session.id || this.generateId(), session.startedAt || this.now(), session.endedAt ?? null, session.status || 'active', session.errorCount || 0, session.duration ?? null, session.user ? JSON.stringify(session.user) : null, session.attributes ? JSON.stringify(session.attributes) : null);
247
- // Enforce max sessions limit
248
- await this.enforceSessionLimit();
249
- }
250
- /**
251
- * Update an existing session
252
- * @param sessionId - Session ID
253
- * @param updates - Partial session data
254
- */
255
- async updateSession(sessionId, updates) {
256
- this.ensureReady();
257
- const setClauses = [];
258
- const params = [];
259
- if (updates.endedAt !== undefined) {
260
- setClauses.push('ended_at = ?');
261
- params.push(updates.endedAt);
262
- }
263
- if (updates.status !== undefined) {
264
- setClauses.push('status = ?');
265
- params.push(updates.status);
266
- }
267
- if (updates.errorCount !== undefined) {
268
- setClauses.push('error_count = ?');
269
- params.push(updates.errorCount);
270
- }
271
- if (updates.duration !== undefined) {
272
- setClauses.push('duration = ?');
273
- params.push(updates.duration);
274
- }
275
- if (updates.user !== undefined) {
276
- setClauses.push('user_data = ?');
277
- params.push(updates.user ? JSON.stringify(updates.user) : null);
278
- }
279
- if (updates.attributes !== undefined) {
280
- setClauses.push('attributes = ?');
281
- params.push(updates.attributes ? JSON.stringify(updates.attributes) : null);
282
- }
283
- if (setClauses.length === 0)
284
- return;
285
- params.push(sessionId);
286
- const sql = `UPDATE sessions SET ${setClauses.join(', ')} WHERE id = ?`;
287
- const result = this.db.prepare(sql).run(...params);
288
- if (result.changes === 0) {
289
- throw new Error(`Session not found: ${sessionId}`);
290
- }
291
- }
292
- /**
293
- * Get a session by ID
294
- * @param sessionId - Session ID
295
- * @returns Session or null
296
- */
297
- async getSession(sessionId) {
298
- this.ensureReady();
299
- const row = this.db.prepare('SELECT * FROM sessions WHERE id = ?').get(sessionId);
300
- return row ? this.rowToSession(row) : null;
301
- }
302
- /**
303
- * Get sessions matching filter
304
- * @param filter - Query filter
305
- * @returns Matching sessions
306
- */
307
- async getSessions(filter) {
308
- this.ensureReady();
309
- let sql = 'SELECT * FROM sessions';
310
- const params = [];
311
- const whereClauses = [];
312
- if (filter?.status) {
313
- const statuses = Array.isArray(filter.status) ? filter.status : [filter.status];
314
- whereClauses.push(`status IN (${statuses.map(() => '?').join(',')})`);
315
- params.push(...statuses);
316
- }
317
- if (filter?.userId !== undefined) {
318
- whereClauses.push('json_extract(user_data, "$.id") = ?');
319
- params.push(String(filter.userId));
320
- }
321
- if (filter?.startTime) {
322
- whereClauses.push('started_at >= ?');
323
- params.push(filter.startTime instanceof Date
324
- ? filter.startTime.toISOString()
325
- : filter.startTime);
326
- }
327
- if (filter?.endTime) {
328
- whereClauses.push('started_at <= ?');
329
- params.push(filter.endTime instanceof Date ? filter.endTime.toISOString() : filter.endTime);
330
- }
331
- if (whereClauses.length > 0) {
332
- sql += ` WHERE ${whereClauses.join(' AND ')}`;
333
- }
334
- sql += ' ORDER BY started_at DESC';
335
- if (filter?.limit) {
336
- sql += ' LIMIT ?';
337
- params.push(filter.limit);
338
- }
339
- if (filter?.offset) {
340
- sql += ' OFFSET ?';
341
- params.push(filter.offset);
342
- }
343
- const rows = this.db.prepare(sql).all(...params);
344
- return rows.map((row) => this.rowToSession(row));
345
- }
346
- /**
347
- * Delete a session and its logs
348
- * @param sessionId - Session ID
349
- */
350
- async deleteSession(sessionId) {
351
- this.ensureReady();
352
- const deleteAll = this.db.transaction(() => {
353
- this.db.prepare('DELETE FROM logs WHERE session_id = ?').run(sessionId);
354
- this.db.prepare('DELETE FROM sessions WHERE id = ?').run(sessionId);
355
- });
356
- deleteAll();
357
- }
358
- /**
359
- * Enforce maximum session limit
360
- */
361
- async enforceSessionLimit() {
362
- const row = this.db.prepare('SELECT COUNT(*) as count FROM sessions').get();
363
- if (row.count > this.sqliteConfig.maxSessions) {
364
- const excess = row.count - this.sqliteConfig.maxSessions;
365
- this.db.prepare(`
366
- DELETE FROM sessions WHERE id IN (
367
- SELECT id FROM sessions
368
- WHERE status != 'active'
369
- ORDER BY started_at ASC LIMIT ?
370
- )
371
- `).run(excess);
372
- }
373
- }
374
- // =========================================================================
375
- // Maintenance Operations
376
- // =========================================================================
377
- /**
378
- * Clean up old data
379
- * @param olderThan - Delete entries older than this date
380
- * @returns Number of deleted entries
381
- */
382
- async cleanup(olderThan) {
383
- this.ensureReady();
384
- const cutoff = olderThan.toISOString();
385
- let deleted = 0;
386
- const cleanupTx = this.db.transaction(() => {
387
- // Delete old logs
388
- const logsResult = this.db.prepare('DELETE FROM logs WHERE timestamp < ?').run(cutoff);
389
- deleted += logsResult.changes;
390
- // Delete old ended sessions
391
- const sessionsResult = this.db.prepare("DELETE FROM sessions WHERE status != 'active' AND ended_at < ?").run(cutoff);
392
- deleted += sessionsResult.changes;
393
- });
394
- cleanupTx();
395
- return deleted;
396
- }
397
- /**
398
- * Get storage statistics
399
- * @returns Storage stats
400
- */
401
- async getStats() {
402
- this.ensureReady();
403
- const totalLogs = this.db.prepare('SELECT COUNT(*) as count FROM logs').get()
404
- .count;
405
- const totalSessions = this.db.prepare('SELECT COUNT(*) as count FROM sessions').get().count;
406
- const activeSessions = this.db.prepare("SELECT COUNT(*) as count FROM sessions WHERE status = 'active'").get().count;
407
- // Get logs by level
408
- const levelRows = this.db.prepare('SELECT level, COUNT(*) as count FROM logs GROUP BY level').all();
409
- const logsByLevel = {
410
- fatal: 0,
411
- error: 0,
412
- warn: 0,
413
- info: 0,
414
- debug: 0,
415
- trace: 0,
416
- };
417
- for (const row of levelRows) {
418
- logsByLevel[row.level] = row.count;
419
- }
420
- // Get oldest and newest logs
421
- const oldest = this.db.prepare('SELECT timestamp FROM logs ORDER BY timestamp ASC LIMIT 1').get();
422
- const newest = this.db.prepare('SELECT timestamp FROM logs ORDER BY timestamp DESC LIMIT 1').get();
423
- // Get database size (for file-based databases)
424
- let sizeBytes;
425
- if (this.sqliteConfig.filename !== ':memory:') {
426
- try {
427
- const pageCount = this.db.pragma('page_count')[0]?.page_count;
428
- const pageSize = this.db.pragma('page_size')[0]
429
- ?.page_size;
430
- if (pageCount && pageSize) {
431
- sizeBytes = pageCount * pageSize;
432
- }
433
- }
434
- catch {
435
- // Ignore if pragma fails
436
- }
437
- }
438
- return {
439
- totalLogs,
440
- totalSessions,
441
- activeSessions,
442
- logsByLevel,
443
- sizeBytes,
444
- oldestLog: oldest?.timestamp,
445
- newestLog: newest?.timestamp,
446
- };
447
- }
448
- // =========================================================================
449
- // Query Building Helpers
450
- // =========================================================================
451
- /**
452
- * Build WHERE clause from filter
453
- */
454
- buildWhereClause(filter) {
455
- if (!filter)
456
- return { whereClauses: '', params: [] };
457
- const clauses = [];
458
- const params = [];
459
- if (filter.level) {
460
- const levels = Array.isArray(filter.level) ? filter.level : [filter.level];
461
- clauses.push(`level IN (${levels.map(() => '?').join(',')})`);
462
- params.push(...levels);
463
- }
464
- if (filter.sessionId) {
465
- clauses.push('session_id = ?');
466
- params.push(filter.sessionId);
467
- }
468
- if (filter.logger) {
469
- clauses.push('logger = ?');
470
- params.push(filter.logger);
471
- }
472
- if (filter.startTime) {
473
- clauses.push('timestamp >= ?');
474
- params.push(filter.startTime instanceof Date
475
- ? filter.startTime.toISOString()
476
- : filter.startTime);
477
- }
478
- if (filter.endTime) {
479
- clauses.push('timestamp <= ?');
480
- params.push(filter.endTime instanceof Date ? filter.endTime.toISOString() : filter.endTime);
481
- }
482
- if (filter.search) {
483
- clauses.push('message LIKE ?');
484
- params.push(`%${filter.search}%`);
485
- }
486
- if (filter.service) {
487
- clauses.push('service = ?');
488
- params.push(filter.service);
489
- }
490
- if (filter.environment) {
491
- clauses.push('environment = ?');
492
- params.push(filter.environment);
493
- }
494
- if (filter.traceId) {
495
- clauses.push('json_extract(metadata, "$.traceId") = ?');
496
- params.push(filter.traceId);
497
- }
498
- if (filter.tags && Object.keys(filter.tags).length > 0) {
499
- for (const [key, value] of Object.entries(filter.tags)) {
500
- clauses.push(`json_extract(metadata, "$.tags.${key}") = ?`);
501
- params.push(value);
502
- }
503
- }
504
- return {
505
- whereClauses: clauses.join(' AND '),
506
- params,
507
- };
508
- }
509
- /**
510
- * Build complete SELECT query from filter
511
- */
512
- buildLogQuery(filter) {
513
- const { whereClauses, params } = this.buildWhereClause(filter);
514
- let sql = 'SELECT * FROM logs';
515
- if (whereClauses) {
516
- sql += ` WHERE ${whereClauses}`;
517
- }
518
- // Ordering
519
- const orderBy = filter?.orderBy || 'timestamp';
520
- const direction = filter?.orderDirection || 'desc';
521
- sql += ` ORDER BY ${orderBy} ${direction.toUpperCase()}`;
522
- // Pagination
523
- if (filter?.limit) {
524
- sql += ' LIMIT ?';
525
- params.push(filter.limit);
526
- }
527
- if (filter?.offset) {
528
- sql += ' OFFSET ?';
529
- params.push(filter.offset);
530
- }
531
- return { sql, params };
532
- }
533
- // =========================================================================
534
- // Row Conversion Helpers
535
- // =========================================================================
536
- /**
537
- * Convert SQLite row to LogEntry
538
- */
539
- rowToLogEntry(row) {
540
- return {
541
- id: row.id,
542
- timestamp: row.timestamp,
543
- level: row.level,
544
- message: row.message,
545
- logger: row.logger ?? undefined,
546
- sessionId: row.session_id ?? undefined,
547
- service: row.service ?? undefined,
548
- environment: row.environment ?? undefined,
549
- release: row.release ?? undefined,
550
- hostname: row.hostname ?? undefined,
551
- pid: row.pid ?? undefined,
552
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
553
- };
554
- }
555
- /**
556
- * Convert SQLite row to Session
557
- */
558
- rowToSession(row) {
559
- return {
560
- id: row.id,
561
- startedAt: row.started_at,
562
- endedAt: row.ended_at ?? undefined,
563
- status: row.status,
564
- errorCount: row.error_count,
565
- duration: row.duration ?? undefined,
566
- user: row.user_data ? JSON.parse(row.user_data) : undefined,
567
- attributes: row.attributes ? JSON.parse(row.attributes) : undefined,
568
- };
569
- }
570
- // =========================================================================
571
- // Additional SQLite-Specific Methods
572
- // =========================================================================
573
- /**
574
- * Execute raw SQL query
575
- * @param sql - SQL query
576
- * @param params - Query parameters
577
- * @returns Query results
578
- */
579
- query(sql, ...params) {
580
- this.ensureReady();
581
- return this.db.prepare(sql).all(...params);
582
- }
583
- /**
584
- * Execute raw SQL statement
585
- * @param sql - SQL statement
586
- * @param params - Statement parameters
587
- * @returns Run result
588
- */
589
- execute(sql, ...params) {
590
- this.ensureReady();
591
- return this.db.prepare(sql).run(...params);
592
- }
593
- /**
594
- * Run VACUUM to optimize database
595
- */
596
- vacuum() {
597
- this.ensureReady();
598
- this.db.exec('VACUUM');
599
- }
600
- /**
601
- * Get the underlying better-sqlite3 database instance
602
- * @returns Database instance or null
603
- */
604
- getDatabase() {
605
- return this.db;
606
- }
607
- }
608
- //# sourceMappingURL=sqlite.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/stores/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,QAA2C,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA8C9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;IAC/C,IAAI,GAAG,QAAQ,CAAC;IAEjB,EAAE,GAAwB,IAAI,CAAC;IAC/B,YAAY,CAA8B;IAElD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,YAAY,GAAG;YAClB,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,MAAM;YAClC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,KAAK;YACzC,eAAe,EAAE,MAAM,EAAE,eAAe,IAAI,CAAC;YAC7C,eAAe,EAAE,MAAM,EAAE,eAAe,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YACpE,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,UAAU;YACxC,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI;YAChC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,IAAI;YACrC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI;YACxC,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,IAAI;SAC7C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEnD,qBAAqB;QACrB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC3E,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAErB,aAAa;QACb,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;KAgBZ,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;KAYZ,CAAC,CAAC;QAEH,2CAA2C;QAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;OAUZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,KAAe;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC;;;;KAI7B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAC7B,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAC7B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,GAAG,IAAI,IAAI,EACjB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CACvD,CAAC;QAEF,yBAAyB;QACzB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAmB;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC;;;;KAI7B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAG,CAAC,WAAW,CAAC,CAAC,IAAgB,EAAE,EAAE;YAC3D,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAC7B,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAC7B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,GAAG,IAAI,IAAI,EACjB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CACvD,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,MAAkB;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAmB,CAAC;QAEnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,MAAkB;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;YAC1D,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,mBAAmB,YAAY,CAAC,CAAC,CAAC,UAAU,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,MAAkB;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,qCAAqC,YAAY,CAAC,CAAC,CAAC,UAAU,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChG,MAAM,GAAG,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAsB,CAAC;QACtE,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YACjD,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC;;;;OAIhB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,qBAAqB;IACrB,4EAA4E;IAE5E;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC;;;;KAI7B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CACN,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAC/B,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAC/B,OAAO,CAAC,OAAO,IAAI,IAAI,EACvB,OAAO,CAAC,MAAM,IAAI,QAAQ,EAC1B,OAAO,CAAC,UAAU,IAAI,CAAC,EACvB,OAAO,CAAC,QAAQ,IAAI,IAAI,EACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAClD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAC/D,CAAC;QAEF,6BAA6B;QAC7B,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,OAAyB;QAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEpC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,uBAAuB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAEpD,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CACrE,SAAS,CACsB,CAAC;QAElC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,MAAsB;QACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,GAAG,GAAG,wBAAwB,CAAC;QACnC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChF,YAAY,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,SAAS,YAAY,IAAI;gBAC9B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;gBAChC,CAAC,CAAC,MAAM,CAAC,SAAS,CACrB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,OAAO,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAC/E,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,GAAG,IAAI,UAAU,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,CAAC;QAED,GAAG,IAAI,2BAA2B,CAAC;QAEnC,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,GAAG,IAAI,UAAU,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,GAAG,IAAI,WAAW,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAuB,CAAC;QACxE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAG,CAAC,WAAW,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzE,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,SAAS,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAEzE,CAAC;QAEF,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YACzD,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC;;;;;;OAMhB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,yBAAyB;IACzB,4EAA4E;IAE5E;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,SAAe;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAG,CAAC,WAAW,CAAC,GAAG,EAAE;YAC1C,kBAAkB;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CACjC,sCAAsC,CACvC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACd,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;YAE9B,4BAA4B;YAC5B,MAAM,cAAc,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CACrC,gEAAgE,CACjE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACd,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,SAAS,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,SAAS,GACZ,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAwB;aAChF,KAAK,CAAC;QAEX,MAAM,aAAa,GAEf,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAG/D,CAAC,KAAK,CAAC;QAEV,MAAM,cAAc,GAEhB,IAAI,CAAC,EAAG,CAAC,OAAO,CACd,gEAAgE,CACjE,CAAC,GAAG,EACN,CAAC,KAAK,CAAC;QAEV,oBAAoB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAChC,0DAA0D,CAC3D,CAAC,GAAG,EAA0C,CAAC;QAEhD,MAAM,WAAW,GAA6B;YAC5C,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QACrC,CAAC;QAED,6BAA6B;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAC7B,2DAA2D,CAC5D,CAAC,GAAG,EAAuC,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAC7B,4DAA4D,CAC7D,CAAC,GAAG,EAAuC,CAAC;QAE7C,+CAA+C;QAC/C,IAAI,SAA6B,CAAC;QAClC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,SAAS,GACb,IAAI,CAAC,EAAG,CAAC,MAAM,CAAC,YAAY,CAC7B,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;gBACjB,MAAM,QAAQ,GAAI,IAAI,CAAC,EAAG,CAAC,MAAM,CAAC,WAAW,CAA6B,CAAC,CAAC,CAAC;oBAC3E,EAAE,SAAS,CAAC;gBACd,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;oBAC1B,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;gBACnC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS;YACT,aAAa;YACb,cAAc;YACd,WAAW;YACX,SAAS;YACT,SAAS,EAAE,MAAM,EAAE,SAAS;YAC5B,SAAS,EAAE,MAAM,EAAE,SAAS;SAC7B,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,yBAAyB;IACzB,4EAA4E;IAE5E;;OAEG;IACK,gBAAgB,CAAC,MAAkB;QAIzC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAErD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,SAAS,YAAY,IAAI;gBAC9B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;gBAChC,CAAC,CAAC,MAAM,CAAC,SAAS,CACrB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,OAAO,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAC/E,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,QAAQ,CAAC,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO;YACL,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YACnC,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAkB;QACtC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE/D,IAAI,GAAG,GAAG,oBAAoB,CAAC;QAE/B,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,IAAI,UAAU,YAAY,EAAE,CAAC;QAClC,CAAC;QAED,WAAW;QACX,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,WAAW,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,EAAE,cAAc,IAAI,MAAM,CAAC;QACnD,GAAG,IAAI,aAAa,OAAO,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAEzD,aAAa;QACb,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,GAAG,IAAI,UAAU,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,GAAG,IAAI,WAAW,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,4EAA4E;IAC5E,yBAAyB;IACzB,4EAA4E;IAE5E;;OAEG;IACK,aAAa,CAAC,GAAiB;QACrC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,KAAiB;YAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;YAC/B,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;YACtC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YACjC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACzC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;YACnC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,SAAS;YACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,GAAqB;QACxC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;YAClC,MAAM,EAAE,GAAG,CAAC,MAA2B;YACvC,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;YACnC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3D,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,qCAAqC;IACrC,4EAA4E;IAE5E;;;;;OAKG;IACH,KAAK,CAAI,GAAW,EAAE,GAAG,MAAiB;QACxC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAQ,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,GAAW,EAAE,GAAG,MAAiB;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,EAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF"}