@forgebase/sdk 0.0.1

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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +390 -0
  3. package/dist/cjs/database/client/client.d.ts +470 -0
  4. package/dist/cjs/database/client/client.d.ts.map +1 -0
  5. package/dist/cjs/database/client/client.js +812 -0
  6. package/dist/cjs/database/client/client.js.map +1 -0
  7. package/dist/cjs/database/client/index.d.ts +2 -0
  8. package/dist/cjs/database/client/index.d.ts.map +1 -0
  9. package/dist/cjs/database/client/index.js +18 -0
  10. package/dist/cjs/database/client/index.js.map +1 -0
  11. package/dist/cjs/database/examples.d.ts +70 -0
  12. package/dist/cjs/database/examples.d.ts.map +1 -0
  13. package/dist/cjs/database/examples.js +239 -0
  14. package/dist/cjs/database/examples.js.map +1 -0
  15. package/dist/cjs/database/server/index.d.ts +2 -0
  16. package/dist/cjs/database/server/index.d.ts.map +1 -0
  17. package/dist/cjs/database/server/index.js +18 -0
  18. package/dist/cjs/database/server/index.js.map +1 -0
  19. package/dist/cjs/database/server/server.d.ts +2 -0
  20. package/dist/cjs/database/server/server.d.ts.map +1 -0
  21. package/dist/cjs/database/server/server.js +6 -0
  22. package/dist/cjs/database/server/server.js.map +1 -0
  23. package/dist/cjs/index.d.ts +3 -0
  24. package/dist/cjs/index.d.ts.map +1 -0
  25. package/dist/cjs/index.js +19 -0
  26. package/dist/cjs/index.js.map +1 -0
  27. package/dist/esm/database/client/client.d.ts +470 -0
  28. package/dist/esm/database/client/client.d.ts.map +1 -0
  29. package/dist/esm/database/client/client.js +805 -0
  30. package/dist/esm/database/client/client.js.map +1 -0
  31. package/dist/esm/database/client/index.d.ts +2 -0
  32. package/dist/esm/database/client/index.d.ts.map +1 -0
  33. package/dist/esm/database/client/index.js +2 -0
  34. package/dist/esm/database/client/index.js.map +1 -0
  35. package/dist/esm/database/examples.d.ts +70 -0
  36. package/dist/esm/database/examples.d.ts.map +1 -0
  37. package/dist/esm/database/examples.js +236 -0
  38. package/dist/esm/database/examples.js.map +1 -0
  39. package/dist/esm/database/server/index.d.ts +2 -0
  40. package/dist/esm/database/server/index.d.ts.map +1 -0
  41. package/dist/esm/database/server/index.js +2 -0
  42. package/dist/esm/database/server/index.js.map +1 -0
  43. package/dist/esm/database/server/server.d.ts +2 -0
  44. package/dist/esm/database/server/server.d.ts.map +1 -0
  45. package/dist/esm/database/server/server.js +2 -0
  46. package/dist/esm/database/server/server.js.map +1 -0
  47. package/dist/esm/index.d.ts +3 -0
  48. package/dist/esm/index.d.ts.map +1 -0
  49. package/dist/esm/index.js +3 -0
  50. package/dist/esm/index.js.map +1 -0
  51. package/package.json +71 -0
@@ -0,0 +1,470 @@
1
+ import { AxiosInstance, AxiosRequestConfig } from 'axios';
2
+ type FieldKeys<T> = keyof T;
3
+ export type WhereOperator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'like' | 'in' | 'not in' | 'between' | 'is null' | 'is not null';
4
+ export type GroupOperator = 'AND' | 'OR';
5
+ export interface WhereClause<T> {
6
+ field: FieldKeys<T>;
7
+ operator: WhereOperator;
8
+ value: any;
9
+ boolean?: GroupOperator;
10
+ }
11
+ export interface WhereGroup<T> {
12
+ type: GroupOperator;
13
+ clauses: (WhereClause<T> | WhereGroup<T>)[];
14
+ }
15
+ export interface WhereBetweenClause<T> {
16
+ field: FieldKeys<T>;
17
+ operator: 'between';
18
+ value: [any, any];
19
+ boolean?: GroupOperator;
20
+ }
21
+ export interface OrderByClause<T> {
22
+ field: FieldKeys<T>;
23
+ direction?: 'asc' | 'desc';
24
+ nulls?: 'first' | 'last';
25
+ }
26
+ export interface RawExpression {
27
+ sql: string;
28
+ bindings?: any[];
29
+ }
30
+ export interface HavingClause<T> {
31
+ field: FieldKeys<T>;
32
+ operator: WhereOperator;
33
+ value: any;
34
+ }
35
+ export interface AggregateOptions<T> {
36
+ type: 'count' | 'sum' | 'avg' | 'min' | 'max';
37
+ field: FieldKeys<T>;
38
+ alias?: string;
39
+ }
40
+ export interface WindowFunction<T> {
41
+ type: 'row_number' | 'rank' | 'dense_rank' | 'lag' | 'lead' | 'first_value' | 'last_value' | 'sum' | 'avg' | 'count' | 'min' | 'max' | 'nth_value' | 'ntile';
42
+ field?: FieldKeys<T>;
43
+ alias: string;
44
+ partitionBy?: FieldKeys<T>[];
45
+ orderBy?: OrderByClause<T>[];
46
+ frameClause?: string;
47
+ }
48
+ export interface CTE<T extends Record<string, any>> {
49
+ name: string;
50
+ query: QueryBuilder<T>;
51
+ columns?: FieldKeys<T>[];
52
+ }
53
+ export interface TransformConfig<T> {
54
+ groupBy?: string[];
55
+ pivot?: {
56
+ column: string;
57
+ values: string[];
58
+ aggregate: AggregateOptions<T>;
59
+ };
60
+ flatten?: boolean;
61
+ select?: FieldKeys<T>[];
62
+ compute?: Record<string, (row: any) => any>;
63
+ }
64
+ export interface ExplainOptions {
65
+ analyze?: boolean;
66
+ verbose?: boolean;
67
+ format?: 'text' | 'json';
68
+ }
69
+ export interface RecursiveCTE<T extends Record<string, any>> extends CTE<T> {
70
+ isRecursive: true;
71
+ initialQuery: QueryBuilder<T>;
72
+ recursiveQuery: QueryBuilder<T>;
73
+ unionAll?: boolean;
74
+ }
75
+ export interface WindowFunctionAdvanced<T> extends WindowFunction<T> {
76
+ over?: {
77
+ partitionBy?: FieldKeys<T>[];
78
+ orderBy?: OrderByClause<T>[];
79
+ frame?: {
80
+ type: 'ROWS' | 'RANGE';
81
+ start: 'UNBOUNDED PRECEDING' | 'CURRENT ROW' | number;
82
+ end?: 'UNBOUNDED FOLLOWING' | 'CURRENT ROW' | number;
83
+ };
84
+ };
85
+ filter?: WhereClause<T>[];
86
+ }
87
+ export interface CacheConfig<T extends Record<string, any>> {
88
+ ttl: number;
89
+ key?: string;
90
+ tags?: string[];
91
+ condition?: (params: QueryParams<T>) => boolean;
92
+ }
93
+ export interface QueryValidation {
94
+ rules: {
95
+ maxLimit?: number;
96
+ requiredFields?: string[];
97
+ disallowedFields?: string[];
98
+ maxComplexity?: number;
99
+ };
100
+ suggestions?: boolean;
101
+ }
102
+ export interface QueryParams<T extends Record<string, any>> {
103
+ filter?: Partial<T>;
104
+ whereRaw?: WhereClause<T>[];
105
+ whereBetween?: WhereBetweenClause<T>[];
106
+ whereNull?: FieldKeys<T>[];
107
+ whereNotNull?: FieldKeys<T>[];
108
+ whereIn?: {
109
+ [K in FieldKeys<T>]?: any[];
110
+ };
111
+ whereNotIn?: {
112
+ [K in FieldKeys<T>]?: any[];
113
+ };
114
+ whereExists?: SubQueryConfig[];
115
+ whereGroups?: WhereGroup<T>[];
116
+ orderBy?: OrderByClause<T>[];
117
+ groupBy?: FieldKeys<T>[];
118
+ having?: HavingClause<T>[];
119
+ aggregates?: AggregateOptions<T>[];
120
+ limit?: number;
121
+ offset?: number;
122
+ windowFunctions?: WindowFunction<T>[];
123
+ ctes?: CTE<T>[];
124
+ transforms?: TransformConfig<T>;
125
+ explain?: ExplainOptions;
126
+ recursiveCtes?: RecursiveCTE<T>[];
127
+ advancedWindows?: WindowFunctionAdvanced<T>[];
128
+ select?: FieldKeys<T>[];
129
+ }
130
+ export interface SubQueryConfig {
131
+ tableName: string;
132
+ params: QueryParams<any>;
133
+ joinCondition?: {
134
+ leftField: string;
135
+ operator: WhereOperator;
136
+ rightField: string;
137
+ };
138
+ }
139
+ export interface QueryOptions {
140
+ execute?: boolean;
141
+ }
142
+ export interface ApiResponse<T extends Record<string, any>> {
143
+ records?: T[];
144
+ params?: QueryParams<T>;
145
+ message?: string;
146
+ error?: string;
147
+ id?: number;
148
+ }
149
+ export interface AuthInterceptors {
150
+ request: (config: any) => Promise<any> | any;
151
+ response: {
152
+ onFulfilled: (response: any) => Promise<any> | any;
153
+ onRejected: (error: any) => Promise<any> | any;
154
+ };
155
+ }
156
+ export declare class DatabaseSDK {
157
+ private baseUrl;
158
+ private axiosInstance;
159
+ /**
160
+ * Create a new DatabaseSDK instance
161
+ * @param baseUrl The base URL for API requests
162
+ * @param axiosInstance Optional custom axios instance (e.g., from ForgebaseAuth)
163
+ * @param axiosConfig Optional axios configuration
164
+ * @param authInterceptors Optional auth interceptors to apply to the axios instance
165
+ */
166
+ constructor(options: {
167
+ baseUrl: string;
168
+ axiosInstance?: AxiosInstance;
169
+ axiosConfig?: AxiosRequestConfig;
170
+ authInterceptors?: AuthInterceptors;
171
+ });
172
+ /**
173
+ * Get the base URL used for API requests
174
+ * @returns The base URL string
175
+ */
176
+ getBaseUrl(): string;
177
+ /**
178
+ * Set a new base URL for API requests
179
+ * @param baseUrl The new base URL to use
180
+ */
181
+ setBaseUrl(baseUrl: string): void;
182
+ /**
183
+ * Get the axios instance used for API requests
184
+ * @returns The axios instance
185
+ */
186
+ getAxiosInstance(): AxiosInstance;
187
+ /**
188
+ * Set a new axios instance for API requests
189
+ * @param axiosInstance The new axios instance to use
190
+ */
191
+ setAxiosInstance(axiosInstance: AxiosInstance): void;
192
+ /**
193
+ * Apply auth interceptors to the axios instance
194
+ * @param authInterceptors The auth interceptors to apply
195
+ */
196
+ applyAuthInterceptors(authInterceptors: AuthInterceptors): void;
197
+ /**
198
+ * Fetches records from a specified table with filtering and pagination
199
+ * @param tableName The name of the table to query
200
+ * @param params Query parameters including filters and pagination
201
+ * @param options Query options
202
+ * @param axiosConfig Custom axios config for this specific request
203
+ * @returns Promise containing the fetched records
204
+ */
205
+ getRecords<T extends Record<string, any>>(tableName: string, params?: QueryParams<T>, options?: QueryOptions, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<T>>;
206
+ /**
207
+ * Creates a new record in the specified table
208
+ * @param tableName The name of the table to create the record in
209
+ * @param data The data to create the record with
210
+ * @param axiosConfig Custom axios config for this specific request
211
+ * @returns Promise containing the created record
212
+ */
213
+ createRecord<T extends Record<string, any>>(tableName: string, data: T, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<T>>;
214
+ /**
215
+ * Updates a record by ID in the specified table
216
+ * @param tableName The name of the table containing the record to update
217
+ * @param id The ID of the record to update
218
+ * @param data The data to update the record with
219
+ * @param axiosConfig Custom axios config for this specific request
220
+ * @returns Promise containing the updated record
221
+ */
222
+ updateRecord<T extends Record<string, any>>(tableName: string, id: number | string, data: Partial<T>, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<T>>;
223
+ /**
224
+ * Updates records by Complex Query from the specified table
225
+ * @param tableName The name of the table containing the record to delete
226
+ * @param params Query parameters including filters and pagination
227
+ * @param options Query options
228
+ * @param data The data to update the record with
229
+ * @param axiosConfig Custom axios config for this specific request
230
+ * @returns Promise containing the result of the deletion
231
+ */
232
+ advanceUpdateRecord<T extends Record<string, any>>(tableName: string, data: Partial<T>, params?: QueryParams<T>, options?: QueryOptions, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<any>>;
233
+ /**
234
+ * Deletes a record by ID from the specified table
235
+ * @param tableName The name of the table containing the record to delete
236
+ * @param id The ID of the record to delete
237
+ * @param axiosConfig Custom axios config for this specific request
238
+ * @returns Promise containing the result of the deletion
239
+ */
240
+ deleteRecord<T extends Record<string, any>>(tableName: string, id: number | string, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<any>>;
241
+ /**
242
+ * Deletes records by Complex Query from the specified table
243
+ * @param tableName The name of the table containing the record to delete
244
+ * @param params Query parameters including filters and pagination
245
+ * @param options Query options
246
+ * @param axiosConfig Custom axios config for this specific request
247
+ * @returns Promise containing the result of the deletion
248
+ */
249
+ advanceDeleteRecord<T extends Record<string, any>>(tableName: string, params?: QueryParams<T>, options?: QueryOptions, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<any>>;
250
+ /**
251
+ * Helper method to create a query builder for fluent API usage
252
+ * @param tableName The name of the table to query
253
+ */
254
+ table<T extends Record<string, any>>(tableName: string): QueryBuilder<T>;
255
+ /**
256
+ * Validates data object
257
+ */
258
+ private validateData;
259
+ }
260
+ /**
261
+ * Query builder class for more fluent API usage
262
+ */
263
+ declare class QueryBuilder<T extends Record<string, any>> {
264
+ private sdk;
265
+ private tableName;
266
+ private params;
267
+ private currentGroup?;
268
+ private ctes;
269
+ constructor(sdk: DatabaseSDK, tableName: string);
270
+ /**
271
+ * Add a recursive CTE
272
+ */
273
+ withRecursive(name: string, initialQuery: QueryBuilder<T>, recursiveQuery: QueryBuilder<T>, options?: {
274
+ unionAll?: boolean;
275
+ columns?: string[];
276
+ }): this;
277
+ /**
278
+ * Advanced window function
279
+ */
280
+ windowAdvanced(type: WindowFunction<T>['type'], alias: string, config: Partial<WindowFunctionAdvanced<T>>): this;
281
+ /**
282
+ * Add a window function
283
+ */
284
+ window(type: WindowFunction<T>['type'], alias: string, config?: Partial<Omit<WindowFunction<T>, 'type' | 'alias'>>): this;
285
+ /**
286
+ * Add common window functions
287
+ */
288
+ rowNumber(alias: string, partitionBy?: string[], orderBy?: OrderByClause<T>[]): this;
289
+ rank(alias: string, partitionBy?: string[], orderBy?: OrderByClause<T>[]): this;
290
+ lag(field: string, alias: string, partitionBy?: string[], orderBy?: OrderByClause<T>[]): this;
291
+ lead(field: string, alias: string, partitionBy?: string[], orderBy?: OrderByClause<T>[]): this;
292
+ /**
293
+ * Add a CTE (WITH clause)
294
+ */
295
+ with(name: string, queryOrCallback: QueryBuilder<T> | ((query: QueryBuilder<T>) => void), columns?: FieldKeys<T>[]): this;
296
+ /**
297
+ * Transform the result set
298
+ */
299
+ transform(config: TransformConfig<T>): this;
300
+ /**
301
+ * Pivot the result set
302
+ */
303
+ pivot(column: string, values: string[], aggregate: AggregateOptions<T>): this;
304
+ /**
305
+ * Compute new fields from existing ones
306
+ */
307
+ compute(computations: Record<string, (row: T) => any>): this;
308
+ /**
309
+ * Add a where clause
310
+ * @param field The field to filter on
311
+ * @param operator The comparison operator
312
+ * @param value The value to compare against
313
+ * @returns The query builder instance
314
+ * @example
315
+ * db.table<User>("users").where("status", "active").execute();
316
+ * db.table<User>("users").where("age", ">", 18).execute();
317
+ * db.table<User>("users").where("role", "in", ["admin", "manager"]).execute();
318
+ * db.table<User>("users").where("created_at", "is not null").execute();
319
+ * db.table<User>("users").where("name", "like", "%doe%").execute();
320
+ * db.table<User>("users").where("id", 1).execute();
321
+ * db.table<User>("users").where({ status: "active", role: "admin" }).execute();
322
+ * db.table<User>("users").where("age", ">=", 18).where("role", "manager").execute();
323
+ * db.table<User>("users").where("age", ">=", 18).orWhere((query) => {
324
+ * query.where("role", "manager").where("department", "IT");
325
+ * }).execute();
326
+ */
327
+ where(field: FieldKeys<T>, operator: WhereOperator, value: any): this;
328
+ where(field: FieldKeys<T>, value: any): this;
329
+ where(conditions: Record<FieldKeys<T>, any>): this;
330
+ whereBetween(field: FieldKeys<T>, range: [any, any]): this;
331
+ whereIn(field: FieldKeys<T>, values: any[]): this;
332
+ whereNotIn(field: FieldKeys<T>, values: any[]): this;
333
+ whereNull(field: FieldKeys<T>): this;
334
+ whereNotNull(field: FieldKeys<T>): this;
335
+ orderBy(field: FieldKeys<T>, direction?: 'asc' | 'desc', nulls?: 'first' | 'last'): this;
336
+ orderBy(options: OrderByClause<T>): this;
337
+ limit(limit: number): this;
338
+ offset(offset: number): this;
339
+ /**
340
+ * Start an OR where group
341
+ */
342
+ orWhere(callback: (query: QueryBuilder<T>) => void): this;
343
+ /**
344
+ * Start an AND where group
345
+ */
346
+ andWhere(callback: (query: QueryBuilder<T>) => void): this;
347
+ /**
348
+ * Create a where group with the specified operator
349
+ */
350
+ private whereGroup;
351
+ /**
352
+ * Add a where exists clause using a subquery
353
+ * @param subqueryBuilder A function that returns a configured query builder for the subquery
354
+ * @returns The query builder instance
355
+ * @example
356
+ * db.table<User>("users")
357
+ * .whereExists((subquery) =>
358
+ * subquery.table("orders")
359
+ * .where("orders.user_id", "=", "users.id")
360
+ * .where("total", ">", 1000)
361
+ * )
362
+ * .execute();
363
+ */
364
+ whereExists(subqueryBuilder: (qb: DatabaseSDK) => QueryBuilder<any>): this;
365
+ /**
366
+ * Add a where exists clause with join conditions
367
+ * @param tableName The table to check for existence
368
+ * @param leftField The field from the main table
369
+ * @param rightField The field from the subquery table
370
+ * @param additionalConditions Additional conditions for the subquery
371
+ * @returns The query builder instance
372
+ * @example
373
+ * db.table<User>("users")
374
+ * .whereExistsJoin("orders", "id", "user_id", (qb) =>
375
+ * qb.where("total", ">", 1000)
376
+ * )
377
+ * .execute();
378
+ */
379
+ whereExistsJoin(tableName: string, leftField: FieldKeys<T>, rightField: string, additionalConditions?: (qb: QueryBuilder<any>) => void): this;
380
+ getTableName(): string;
381
+ getParams(): QueryParams<T>;
382
+ /**
383
+ * Group by clause
384
+ */
385
+ groupBy(...fields: string[]): this;
386
+ /**
387
+ * Having clause for grouped queries
388
+ */
389
+ having(field: string, operator: WhereOperator, value: any): this;
390
+ /**
391
+ * Add an aggregate function
392
+ */
393
+ aggregate(type: AggregateOptions<T>['type'], field: FieldKeys<T>, alias?: string): this;
394
+ /**
395
+ * Shorthand for count aggregate
396
+ */
397
+ count(field?: FieldKeys<T>, alias?: string): this;
398
+ /**
399
+ * Shorthand for sum aggregate
400
+ */
401
+ sum(field: FieldKeys<T>, alias?: string): this;
402
+ /**
403
+ * Shorthand for average aggregate
404
+ */
405
+ avg(field: FieldKeys<T>, alias?: string): this;
406
+ /**
407
+ * Shorthand for minimum aggregate
408
+ */
409
+ min(field: FieldKeys<T>, alias?: string): this;
410
+ /**
411
+ * Shorthand for maximum aggregate
412
+ */
413
+ max(field: FieldKeys<T>, alias?: string): this;
414
+ toParams(): Promise<QueryParams<T>>;
415
+ /**
416
+ * Execute with transformations
417
+ * @param axiosConfig Optional axios config to be used for this request
418
+ * @returns Promise with the query results
419
+ */
420
+ query(axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<T>>;
421
+ /**
422
+ * Create a record in the table
423
+ * @param data The data to create
424
+ * @param axiosConfig Optional axios config to be used for this request
425
+ * @returns Promise with the created record
426
+ */
427
+ create(data: T, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<T>>;
428
+ /**
429
+ * Update a record by ID
430
+ * @param id The ID of the record to update
431
+ * @param data The data to update
432
+ * @param axiosConfig Optional axios config to be used for this request
433
+ * @returns Promise with the updated record
434
+ */
435
+ update(id: number | string, data: Partial<T>, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<T>>;
436
+ /**
437
+ * Update records by Complex query
438
+ * @param data The data to update
439
+ * @param axiosConfig Optional axios config to be used for this request
440
+ * @returns Promise with the deletion result
441
+ */
442
+ advanceUpdate(data: Partial<T>, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<any>>;
443
+ /**
444
+ * Delete a record by ID
445
+ * @param id The ID of the record to delete
446
+ * @param axiosConfig Optional axios config to be used for this request
447
+ * @returns Promise with the deletion result
448
+ */
449
+ delete(id: number | string, axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<any>>;
450
+ /**
451
+ * Delete records by Complex query
452
+ * @param axiosConfig Optional axios config to be used for this request
453
+ * @returns Promise with the deletion result
454
+ */
455
+ advanceDelete(axiosConfig?: AxiosRequestConfig): Promise<ApiResponse<any>>;
456
+ private applyTransformations;
457
+ private groupResults;
458
+ private pivotResults;
459
+ /**
460
+ * Select specific fields from the table
461
+ * @param fields Fields to select
462
+ * @example
463
+ * db.table("users")
464
+ * .select("id", "name", "email")
465
+ * .execute();
466
+ */
467
+ select(...fields: string[]): this;
468
+ }
469
+ export {};
470
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/database/client/client.ts"],"names":[],"mappings":"AACA,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEjE,KAAK,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAE5B,MAAM,MAAM,aAAa,GACrB,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,MAAM,GACN,IAAI,GACJ,QAAQ,GACR,SAAS,GACT,SAAS,GACT,aAAa,CAAC;AAElB,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,IAAI,CAAC;AAEzC,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9C,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EACA,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,KAAK,GACL,MAAM,GACN,aAAa,GACb,YAAY,GACZ,KAAK,GACL,KAAK,GACL,OAAO,GACP,KAAK,GACL,KAAK,GACL,WAAW,GACX,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,CAAC;IACzE,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;YACvB,KAAK,EAAE,qBAAqB,GAAG,aAAa,GAAG,MAAM,CAAC;YACtD,GAAG,CAAC,EAAE,qBAAqB,GAAG,aAAa,GAAG,MAAM,CAAC;SACtD,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE;SAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;KAAE,CAAC;IAC1C,UAAU,CAAC,EAAE;SAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;KAAE,CAAC;IAC7C,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;CACzB;AAGD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACzB,aAAa,CAAC,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,aAAa,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACxD,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC7C,QAAQ,EAAE;QACR,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnD,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAChD,CAAC;CACH;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAgB;IAErC;;;;;;OAMG;gBACS,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,WAAW,CAAC,EAAE,kBAAkB,CAAC;QACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACrC;IAyBD;;;OAGG;IACH,UAAU,IAAI,MAAM;IAIpB;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASjC;;;OAGG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAIpD;;;OAGG;IACH,qBAAqB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI;IAW/D;;;;;;;OAOG;IACG,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5C,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,WAAW,CAAC,CAAC,CAAM,EAC3B,OAAO,GAAE,YAAgC,EACzC,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA6C1B;;;;;;OAMG;IACG,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,EACP,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAsB1B;;;;;;;OAOG;IACG,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9C,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAsB1B;;;;;;;;OAQG;IACG,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,MAAM,GAAE,WAAW,CAAC,CAAC,CAAM,EAC3B,OAAO,GAAE,YAAgC,EACzC,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAwB5B;;;;;;OAMG;IACG,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9C,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAoB5B;;;;;;;OAOG;IACG,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,WAAW,CAAC,CAAC,CAAM,EAC3B,OAAO,GAAE,YAAgC,EACzC,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAwB5B;;;OAGG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM;IAItD;;OAEG;IACH,OAAO,CAAC,YAAY;CAKrB;AAED;;GAEG;AACH,cAAM,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAKlC,OAAO,CAAC,GAAG;IAAe,OAAO,CAAC,SAAS;IAJvD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAkC;gBAE1B,GAAG,EAAE,WAAW,EAAU,SAAS,EAAE,MAAM;IAE/D;;OAEG;IACH,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,EAC/B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GACvD,IAAI;IAkBP;;OAEG;IACH,cAAc,CACZ,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,GACzC,IAAI;IAcP;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAC/B,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAM,GAC9D,IAAI;IAiBP;;OAEG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAC3B,IAAI;IAIP,IAAI,CACF,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAC3B,IAAI;IAIP,GAAG,CACD,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAC3B,IAAI;IAIP,IAAI,CACF,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAC3B,IAAI;IAIP;;OAEG;IACH,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EACrE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GACvB,IAAI;IAwBP;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAQ3C;;OAEG;IACH,KAAK,CACH,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC7B,IAAI;IAUP;;OAEG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI;IAO5D;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IACrE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAC5C,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI;IAgClD,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;IAa1D,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;IASjD,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;IASpD,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IASpC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IASvC,OAAO,CACL,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,EAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GACvB,IAAI;IACP,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAwBxC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAIzD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAI1D;;OAEG;IACH,OAAO,CAAC,UAAU;IA2ClB;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IAoB1E;;;;;;;;;;;;;OAaG;IACH,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,UAAU,EAAE,MAAM,EAClB,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,GACrD,IAAI;IA+BP,YAAY,IAAI,MAAM;IAItB,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC;IAM3B;;OAEG;IACH,OAAO,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAQlC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAQhE;;OAEG;IACH,SAAS,CACP,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EACjC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI;IAQP;;OAEG;IACH,KAAK,CAAC,KAAK,GAAE,SAAS,CAAC,CAAC,CAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAItD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAKxC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAOzC;;;;OAIG;IACG,KAAK,CAAC,WAAW,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAe1E;;;;;OAKG;IACG,MAAM,CACV,IAAI,EAAE,CAAC,EACP,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI1B;;;;;;OAMG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI1B;;;;;OAKG;IACG,aAAa,CACjB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAU5B;;;;;OAKG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAI5B;;;;OAIG;IACG,aAAa,CACjB,WAAW,GAAE,kBAAuB,GACnC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAS5B,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAQpB;;;;;;;OAOG;IACH,MAAM,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;CAOlC"}