@prisma-next/sql-builder 0.7.0 → 0.8.0-dev.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.
@@ -1,3 +1,9 @@
1
+ import type {
2
+ AnnotationValue,
3
+ OperationKind,
4
+ ValidAnnotations,
5
+ } from '@prisma-next/framework-components/runtime';
6
+ import { assertAnnotationsApplicable } from '@prisma-next/framework-components/runtime';
1
7
  import type { StorageTable } from '@prisma-next/sql-contract/types';
2
8
  import {
3
9
  type AnyExpression as AstExpression,
@@ -30,6 +36,29 @@ import {
30
36
  import { createFieldProxy } from './field-proxy';
31
37
  import { createFunctions } from './functions';
32
38
 
39
+ /**
40
+ * Validates and merges a variadic annotations call into a builder's
41
+ * accumulated user-annotations map. Used by `.annotate(...)` on each of
42
+ * the three mutation builders (`InsertQueryImpl`, `UpdateQueryImpl`,
43
+ * `DeleteQueryImpl`); the read builders share the same logic via
44
+ * `QueryBase.annotate()` in `./query-impl.ts`.
45
+ *
46
+ * Runs `assertAnnotationsApplicable` at call time (not at `.build()`) so
47
+ * inapplicable annotations forced through casts surface immediately
48
+ * rather than at plan-construction time.
49
+ */
50
+ function mergeWriteAnnotations(
51
+ current: ReadonlyMap<string, AnnotationValue<unknown, OperationKind>>,
52
+ annotations: readonly AnnotationValue<unknown, OperationKind>[],
53
+ ): ReadonlyMap<string, AnnotationValue<unknown, OperationKind>> {
54
+ assertAnnotationsApplicable(annotations, 'write', 'sql-dsl.annotate');
55
+ const next = new Map(current);
56
+ for (const annotation of annotations) {
57
+ next.set(annotation.namespace, annotation);
58
+ }
59
+ return next;
60
+ }
61
+
33
62
  type WhereCallback = ExpressionBuilder<Scope, QueryContext>;
34
63
 
35
64
  function buildParamValues(
@@ -88,6 +117,7 @@ export class InsertQueryImpl<
88
117
  readonly #values: Record<string, unknown>;
89
118
  readonly #returningColumns: string[];
90
119
  readonly #rowFields: Record<string, ScopeField>;
120
+ readonly #annotations: ReadonlyMap<string, AnnotationValue<unknown, OperationKind>>;
91
121
 
92
122
  constructor(
93
123
  tableName: string,
@@ -97,6 +127,7 @@ export class InsertQueryImpl<
97
127
  ctx: BuilderContext,
98
128
  returningColumns: string[] = [],
99
129
  rowFields: Record<string, ScopeField> = {},
130
+ annotations: ReadonlyMap<string, AnnotationValue<unknown, OperationKind>> = new Map(),
100
131
  ) {
101
132
  super(ctx);
102
133
  this.#tableName = tableName;
@@ -105,6 +136,7 @@ export class InsertQueryImpl<
105
136
  this.#values = values;
106
137
  this.#returningColumns = returningColumns;
107
138
  this.#rowFields = rowFields;
139
+ this.#annotations = annotations;
108
140
  }
109
141
 
110
142
  returning = this._gate<ReturningCapability, string[], InsertQuery<QC, AvailableScope, never>>(
@@ -125,10 +157,36 @@ export class InsertQueryImpl<
125
157
  this.ctx,
126
158
  columns,
127
159
  newRowFields,
160
+ this.#annotations,
128
161
  ) as unknown as InsertQuery<QC, AvailableScope, never>;
129
162
  },
130
163
  );
131
164
 
165
+ /**
166
+ * Attach one or more write-typed annotations to this query plan.
167
+ * The type-level `As & ValidAnnotations<'write', As>` gate rejects
168
+ * read-only annotations at the call site; the runtime check fails
169
+ * closed for callers that bypass the type gate. See `QueryBase.annotate`
170
+ * in `./query-impl.ts` for the read-builder counterpart.
171
+ */
172
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
173
+ ...annotations: As & ValidAnnotations<'write', As>
174
+ ): InsertQuery<QC, AvailableScope, RowType> {
175
+ return new InsertQueryImpl(
176
+ this.#tableName,
177
+ this.#table,
178
+ this.#scope,
179
+ this.#values,
180
+ this.ctx,
181
+ this.#returningColumns,
182
+ this.#rowFields,
183
+ mergeWriteAnnotations(
184
+ this.#annotations,
185
+ annotations as readonly AnnotationValue<unknown, OperationKind>[],
186
+ ),
187
+ );
188
+ }
189
+
132
190
  build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {
133
191
  const paramValues = buildParamValues(
134
192
  this.#values,
@@ -149,6 +207,7 @@ export class InsertQueryImpl<
149
207
  return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(
150
208
  ast,
151
209
  this.ctx,
210
+ this.#annotations,
152
211
  );
153
212
  }
154
213
  }
@@ -168,6 +227,7 @@ export class UpdateQueryImpl<
168
227
  readonly #whereCallbacks: readonly WhereCallback[];
169
228
  readonly #returningColumns: string[];
170
229
  readonly #rowFields: Record<string, ScopeField>;
230
+ readonly #annotations: ReadonlyMap<string, AnnotationValue<unknown, OperationKind>>;
171
231
 
172
232
  constructor(
173
233
  tableName: string,
@@ -178,6 +238,7 @@ export class UpdateQueryImpl<
178
238
  whereCallbacks: readonly WhereCallback[] = [],
179
239
  returningColumns: string[] = [],
180
240
  rowFields: Record<string, ScopeField> = {},
241
+ annotations: ReadonlyMap<string, AnnotationValue<unknown, OperationKind>> = new Map(),
181
242
  ) {
182
243
  super(ctx);
183
244
  this.#tableName = tableName;
@@ -187,6 +248,7 @@ export class UpdateQueryImpl<
187
248
  this.#whereCallbacks = whereCallbacks;
188
249
  this.#returningColumns = returningColumns;
189
250
  this.#rowFields = rowFields;
251
+ this.#annotations = annotations;
190
252
  }
191
253
 
192
254
  where(expr: ExpressionBuilder<AvailableScope, QC>): UpdateQuery<QC, AvailableScope, RowType> {
@@ -199,6 +261,7 @@ export class UpdateQueryImpl<
199
261
  [...this.#whereCallbacks, expr as unknown as WhereCallback],
200
262
  this.#returningColumns,
201
263
  this.#rowFields,
264
+ this.#annotations,
202
265
  );
203
266
  }
204
267
 
@@ -221,10 +284,35 @@ export class UpdateQueryImpl<
221
284
  this.#whereCallbacks,
222
285
  columns,
223
286
  newRowFields,
287
+ this.#annotations,
224
288
  ) as unknown as UpdateQuery<QC, AvailableScope, never>;
225
289
  },
226
290
  );
227
291
 
292
+ /**
293
+ * Attach one or more write-typed annotations to this query plan.
294
+ * See `InsertQueryImpl.annotate` for semantics; the runtime check
295
+ * fails closed for callers that bypass the type-level gate.
296
+ */
297
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
298
+ ...annotations: As & ValidAnnotations<'write', As>
299
+ ): UpdateQuery<QC, AvailableScope, RowType> {
300
+ return new UpdateQueryImpl(
301
+ this.#tableName,
302
+ this.#table,
303
+ this.#scope,
304
+ this.#setValues,
305
+ this.ctx,
306
+ this.#whereCallbacks,
307
+ this.#returningColumns,
308
+ this.#rowFields,
309
+ mergeWriteAnnotations(
310
+ this.#annotations,
311
+ annotations as readonly AnnotationValue<unknown, OperationKind>[],
312
+ ),
313
+ );
314
+ }
315
+
228
316
  build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {
229
317
  const setParams = buildParamValues(
230
318
  this.#setValues,
@@ -253,6 +341,7 @@ export class UpdateQueryImpl<
253
341
  return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(
254
342
  ast,
255
343
  this.ctx,
344
+ this.#annotations,
256
345
  );
257
346
  }
258
347
  }
@@ -270,6 +359,7 @@ export class DeleteQueryImpl<
270
359
  readonly #whereCallbacks: readonly WhereCallback[];
271
360
  readonly #returningColumns: string[];
272
361
  readonly #rowFields: Record<string, ScopeField>;
362
+ readonly #annotations: ReadonlyMap<string, AnnotationValue<unknown, OperationKind>>;
273
363
 
274
364
  constructor(
275
365
  tableName: string,
@@ -278,6 +368,7 @@ export class DeleteQueryImpl<
278
368
  whereCallbacks: readonly WhereCallback[] = [],
279
369
  returningColumns: string[] = [],
280
370
  rowFields: Record<string, ScopeField> = {},
371
+ annotations: ReadonlyMap<string, AnnotationValue<unknown, OperationKind>> = new Map(),
281
372
  ) {
282
373
  super(ctx);
283
374
  this.#tableName = tableName;
@@ -285,6 +376,7 @@ export class DeleteQueryImpl<
285
376
  this.#whereCallbacks = whereCallbacks;
286
377
  this.#returningColumns = returningColumns;
287
378
  this.#rowFields = rowFields;
379
+ this.#annotations = annotations;
288
380
  }
289
381
 
290
382
  where(expr: ExpressionBuilder<AvailableScope, QC>): DeleteQuery<QC, AvailableScope, RowType> {
@@ -295,6 +387,7 @@ export class DeleteQueryImpl<
295
387
  [...this.#whereCallbacks, expr as unknown as WhereCallback],
296
388
  this.#returningColumns,
297
389
  this.#rowFields,
390
+ this.#annotations,
298
391
  );
299
392
  }
300
393
 
@@ -315,10 +408,32 @@ export class DeleteQueryImpl<
315
408
  this.#whereCallbacks,
316
409
  columns,
317
410
  newRowFields,
411
+ this.#annotations,
318
412
  ) as unknown as DeleteQuery<QC, AvailableScope, never>;
319
413
  },
320
414
  );
321
415
 
416
+ /**
417
+ * Attach one or more write-typed annotations to this query plan.
418
+ * See `InsertQueryImpl.annotate` for semantics.
419
+ */
420
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
421
+ ...annotations: As & ValidAnnotations<'write', As>
422
+ ): DeleteQuery<QC, AvailableScope, RowType> {
423
+ return new DeleteQueryImpl(
424
+ this.#tableName,
425
+ this.#scope,
426
+ this.ctx,
427
+ this.#whereCallbacks,
428
+ this.#returningColumns,
429
+ this.#rowFields,
430
+ mergeWriteAnnotations(
431
+ this.#annotations,
432
+ annotations as readonly AnnotationValue<unknown, OperationKind>[],
433
+ ),
434
+ );
435
+ }
436
+
322
437
  build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {
323
438
  const whereExpr = combineWhereExprs(
324
439
  this.#whereCallbacks.map((cb) =>
@@ -337,6 +452,7 @@ export class DeleteQueryImpl<
337
452
  return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(
338
453
  ast,
339
454
  this.ctx,
455
+ this.#annotations,
340
456
  );
341
457
  }
342
458
  }
@@ -1,3 +1,9 @@
1
+ import type {
2
+ AnnotationValue,
3
+ OperationKind,
4
+ ValidAnnotations,
5
+ } from '@prisma-next/framework-components/runtime';
6
+ import { assertAnnotationsApplicable } from '@prisma-next/framework-components/runtime';
1
7
  import { DerivedTableSource, type SelectAst } from '@prisma-next/sql-relational-core/ast';
2
8
  import type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';
3
9
  import type {
@@ -81,6 +87,38 @@ abstract class QueryBase<
81
87
  return this.clone(cloneState(this.state, { distinct: true }));
82
88
  }
83
89
 
90
+ /**
91
+ * Attach one or more annotations to this query plan.
92
+ *
93
+ * Read builders (`SelectQueryImpl`, `GroupedQueryImpl`) accept
94
+ * annotations whose declared `applicableTo` includes `'read'`.
95
+ * The type-level `As & ValidAnnotations<'read', As>` gate rejects
96
+ * write-only annotations at the call site; the runtime check below
97
+ * fails closed for callers that bypass the type gate (cast / `any`).
98
+ *
99
+ * Multiple `.annotate(...)` calls compose; duplicate namespaces use
100
+ * last-write-wins. The accumulated annotations are merged into
101
+ * `plan.meta.annotations` at `.build()` time, alongside any framework-
102
+ * internal metadata under reserved namespaces (e.g. `codecs`).
103
+ *
104
+ * Chainable in any position (before / after `.where`, `.select`,
105
+ * `.limit`, etc.); the returned builder has the same row type.
106
+ */
107
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
108
+ ...annotations: As & ValidAnnotations<'read', As>
109
+ ): this {
110
+ assertAnnotationsApplicable(
111
+ annotations as readonly AnnotationValue<unknown, OperationKind>[],
112
+ 'read',
113
+ 'sql-dsl.annotate',
114
+ );
115
+ const next = new Map(this.state.annotations);
116
+ for (const annotation of annotations as readonly AnnotationValue<unknown, OperationKind>[]) {
117
+ next.set(annotation.namespace, annotation);
118
+ }
119
+ return this.clone(cloneState(this.state, { annotations: next }));
120
+ }
121
+
84
122
  groupBy(
85
123
  ...fields: ((keyof RowType | keyof AvailableScope['topLevel']) & string)[]
86
124
  ): GroupedQuery<QC, AvailableScope, RowType>;
@@ -1,3 +1,8 @@
1
+ import type {
2
+ AnnotationValue,
3
+ OperationKind,
4
+ ValidAnnotations,
5
+ } from '@prisma-next/framework-components/runtime';
1
6
  import type {
2
7
  AggregateFunctions,
3
8
  BooleanCodecType,
@@ -19,6 +24,18 @@ export interface GroupedQuery<
19
24
  WithDistinct,
20
25
  WithAlias<RowType>,
21
26
  WithBuild<QC, RowType> {
27
+ /**
28
+ * Attach one or more read-typed annotations to this query plan.
29
+ * Annotations declare `applicableTo: ['read']` (or `['read', 'write']`)
30
+ * via `defineAnnotation`; write-only annotations fail to compile here.
31
+ * Annotations are merged into `plan.meta.annotations` at `.build()` time.
32
+ * Chainable in any position; multiple calls compose with last-write-wins
33
+ * on duplicate namespaces.
34
+ */
35
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
36
+ ...annotations: As & ValidAnnotations<'read', As>
37
+ ): GroupedQuery<QC, AvailableScope, RowType>;
38
+
22
39
  groupBy(
23
40
  ...fields: ((keyof RowType | keyof AvailableScope['topLevel']) & string)[]
24
41
  ): GroupedQuery<QC, AvailableScope, RowType>;
@@ -1,3 +1,8 @@
1
+ import type {
2
+ AnnotationValue,
3
+ OperationKind,
4
+ ValidAnnotations,
5
+ } from '@prisma-next/framework-components/runtime';
1
6
  import type { StorageTable } from '@prisma-next/sql-contract/types';
2
7
  import type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';
3
8
  import type { ExpressionBuilder, WithFields } from '../expression';
@@ -30,6 +35,17 @@ export interface InsertQuery<
30
35
  AvailableScope extends Scope,
31
36
  RowType extends Record<string, ScopeField>,
32
37
  > {
38
+ /**
39
+ * Attach one or more write-typed annotations to this query plan.
40
+ * Annotations declare `applicableTo: ['write']` (or `['read', 'write']`)
41
+ * via `defineAnnotation`; read-only annotations fail to compile here.
42
+ * Annotations are merged into `plan.meta.annotations` at `.build()` time.
43
+ * Chainable in any position; multiple calls compose with last-write-wins
44
+ * on duplicate namespaces.
45
+ */
46
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
47
+ ...annotations: As & ValidAnnotations<'write', As>
48
+ ): InsertQuery<QC, AvailableScope, RowType>;
33
49
  returning: GatedMethod<
34
50
  QC['capabilities'],
35
51
  ReturningCapability,
@@ -45,6 +61,13 @@ export interface UpdateQuery<
45
61
  AvailableScope extends Scope,
46
62
  RowType extends Record<string, ScopeField>,
47
63
  > {
64
+ /**
65
+ * Attach one or more write-typed annotations to this query plan.
66
+ * See `InsertQuery.annotate` for semantics.
67
+ */
68
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
69
+ ...annotations: As & ValidAnnotations<'write', As>
70
+ ): UpdateQuery<QC, AvailableScope, RowType>;
48
71
  where(expr: ExpressionBuilder<AvailableScope, QC>): UpdateQuery<QC, AvailableScope, RowType>;
49
72
  returning: GatedMethod<
50
73
  QC['capabilities'],
@@ -61,6 +84,13 @@ export interface DeleteQuery<
61
84
  AvailableScope extends Scope,
62
85
  RowType extends Record<string, ScopeField>,
63
86
  > {
87
+ /**
88
+ * Attach one or more write-typed annotations to this query plan.
89
+ * See `InsertQuery.annotate` for semantics.
90
+ */
91
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
92
+ ...annotations: As & ValidAnnotations<'write', As>
93
+ ): DeleteQuery<QC, AvailableScope, RowType>;
64
94
  where(expr: ExpressionBuilder<AvailableScope, QC>): DeleteQuery<QC, AvailableScope, RowType>;
65
95
  returning: GatedMethod<
66
96
  QC['capabilities'],
@@ -1,3 +1,8 @@
1
+ import type {
2
+ AnnotationValue,
3
+ OperationKind,
4
+ ValidAnnotations,
5
+ } from '@prisma-next/framework-components/runtime';
1
6
  import type {
2
7
  Expression,
3
8
  ExpressionBuilder,
@@ -20,6 +25,18 @@ export interface SelectQuery<
20
25
  WithDistinct,
21
26
  WithAlias<RowType>,
22
27
  WithBuild<QC, RowType> {
28
+ /**
29
+ * Attach one or more read-typed annotations to this query plan.
30
+ * Annotations declare `applicableTo: ['read']` (or `['read', 'write']`)
31
+ * via `defineAnnotation`; write-only annotations fail to compile here.
32
+ * Annotations are merged into `plan.meta.annotations` at `.build()` time.
33
+ * Chainable in any position; multiple calls compose with last-write-wins
34
+ * on duplicate namespaces.
35
+ */
36
+ annotate<As extends readonly AnnotationValue<unknown, OperationKind>[]>(
37
+ ...annotations: As & ValidAnnotations<'read', As>
38
+ ): SelectQuery<QC, AvailableScope, RowType>;
39
+
23
40
  where(expr: ExpressionBuilder<AvailableScope, QC>): SelectQuery<QC, AvailableScope, RowType>;
24
41
 
25
42
  orderBy(
@@ -1 +0,0 @@
1
- {"version":3,"file":"db-DkZcNekS.d.mts","names":[],"sources":["../src/scope.ts","../src/expression.ts","../src/resolve.ts","../src/types/mutation-query.ts","../src/types/joined-tables.ts","../src/types/grouped-query.ts","../src/types/select-query.ts","../src/types/shared.ts","../src/types/table-proxy.ts","../src/types/db.ts"],"mappings":";;;;;;KAMY,cAAA,GAAiB,MAAA;EAAA,SAA0B,KAAA;EAAA,SAAyB,MAAA;AAAA;AAAA,KAKpE,WAAA,mCAA8C,YAAA,SAAqB,QAAA,GAC3E,MAAA;AAAA,cAGiB,cAAA;AAAA,cACA,cAAA;AAAA,KAET,MAAA,oBAA0B,CAAA,GAAI,CAAA,CAAE,CAAA;AAAA,KAChC,QAAA,GAAW,MAAA,QAAc,UAAA;AAAA,KAEzB,UAAA,GAAa,MAAA,SAAe,UAAA;AAAA,KAE5B,KAAA;EACV,QAAA,EAAU,UAAA;EACV,UAAA,EAAY,MAAA,SAAe,UAAA;AAAA;AAAA,KAGjB,UAAA,aAAuB,UAAA;EAAA,UACvB,cAAA;IACR,QAAA,EAAU,GAAA;IACV,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,GAAA;EAAA;EAG5B,iBAAA,IAAqB,KAAA;EACrB,QAAA,IAAY,aAAA;AAAA;AAAA,KAGF,YAAA,oCAAgD,cAAA;EAC1D,QAAA,EAAU,wBAAA,CAAyB,KAAA;EACnC,UAAA,UACQ,IAAA,GAAO,wBAAA,CAAyB,KAAA;AAAA;AAAA,KAI9B,wBAAA,WAAmC,cAAA,kBACjC,CAAA;EACV,OAAA,EAAS,CAAA,YAAa,CAAA;EACtB,QAAA,EAAU,CAAA,YAAa,CAAA;AAAA;AAAA,KAIf,WAAA,WAAsB,KAAA,YAAiB,KAAA;EACjD,QAAA,EAAU,MAAA,CACR,IAAA,CAAK,CAAA,oBAAqB,CAAA,gBAAiB,IAAA,CAAK,CAAA,oBAAqB,CAAA;EAEvE,UAAA,EAAY,MAAA,CAAO,CAAA,iBAAkB,CAAA;AAAA;AAAA,KAG3B,WAAA,WAAsB,KAAA;EAChC,QAAA,EAAU,CAAA;EACV,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,CAAA,gBAAiB,MAAA,IAAU,MAAA,CAAO,MAAA,EAAQ,CAAA,eAAgB,MAAA;AAAA;AAAA,KAGxE,kBAAA,WAA6B,UAAA,kBAC3B,CAAA;EAAM,OAAA,EAAS,CAAA,CAAE,CAAA;EAAe,QAAA;AAAA;AAAA,KAGlC,aAAA,WAAwB,KAAA;EAClC,QAAA,EAAU,kBAAA,CAAmB,CAAA;EAC7B,UAAA,wBACsB,CAAA,iBAAkB,kBAAA,CAAmB,CAAA,eAAgB,SAAA;AAAA;AAAA,KAIjE,QAAA,iBAAyB,MAAA,SAAe,UAAA;EAAA,CACjD,cAAA,GAAiB,OAAA;EAClB,QAAA,IAAY,SAAA;EACZ,YAAA,IAAgB,MAAA,SAAe,UAAA;AAAA;AAAA,KAGrB,YAAA;EAAA,SACD,UAAA,EAAY,cAAA;EAAA,SACZ,YAAA,EAAc,MAAA,SAAe,MAAA;EAAA,SAC7B,mBAAA,EAAqB,uBAAA;EAAA,SACrB,yBAAA,EAA2B,MAAA;AAAA;;;KC3E1B,gBAAA;EAAqB,OAAA;EAAsB,QAAA;AAAA;AAAA,KAE3C,SAAA,uBAAgC,UAAA,0BAAoC,MAAA,CAC9E,MAAA,WAAiB,KAAA,GAAQ,KAAA;AAAA,KAGf,UAAA,2BAEQ,UAAA,kCACc,SAAA,OAC9B,MAAA,CAAO,MAAA,GAAS,IAAA,CAAK,SAAA,EAAW,OAAA;AAAA,KAExB,kBAAA,WAA6B,MAAA,SAAe,YAAA,CAAW,UAAA,oBACrD,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,YAAA,iBAA2B,UAAA,IAAc,CAAA;AAAA,KAG5D,UAAA,wBAAkC,KAAA,kBAChC,cAAA,eAA6B,YAAA,CAAW,cAAA,aAA2B,CAAA,6BAE3D,cAAA,+BACN,cAAA,eAA6B,SAAA,IAAa,YAAA,CACpD,cAAA,eAA6B,SAAA,EAAW,CAAA;AAAA,KAKlC,iBAAA,wBAAyC,KAAA,aAAkB,YAAA,KACrE,MAAA,EAAQ,UAAA,CAAW,cAAA,GACnB,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,gBAAA;AAAA,KAEJ,gBAAA;AAAA,KACA,YAAA;AAAA,KAEA,cAAA;EACV,SAAA,GAAY,gBAAA;EACZ,KAAA,GAAQ,YAAA;AAAA;AAAA,KAGE,YAAA,wBACa,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,QAAA,EAAU,MAAA,CAAO,cAAA,eAA6B,OAAA;EAC9C,UAAA,EAAY,cAAA;AAAA;AAAA,KAGT,kBAAA,YAA8B,uBAAA,kBACrB,EAAA,GAAK,EAAA,CAAG,CAAA;AAAA,KAGV,gBAAA,YAA4B,MAAA;EAAA,SAA0B,KAAA;AAAA;EAChE,EAAA,2BACE,CAAA,EAAG,eAAA,CAAgB,OAAA,WAAkB,EAAA,UACrC,CAAA,EAAG,eAAA,CAAgB,OAAA,WAAkB,EAAA,aAClC,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,UAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,aAC5B,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,MAAS,IAAA,EAAM,eAAA,uBAAsC,EAAA,QAAU,YAAA,CAAW,gBAAA;EAC1E,EAAA,MAAQ,GAAA,EAAK,eAAA,uBAAsC,EAAA,QAAU,YAAA,CAAW,gBAAA;EAExE,MAAA,GAAS,QAAA,EAAU,QAAA,CAAS,MAAA,SAAe,UAAA,OAAiB,YAAA,CAAW,gBAAA;EACvE,SAAA,GAAY,QAAA,EAAU,QAAA,CAAS,MAAA,SAAe,UAAA,OAAiB,YAAA,CAAW,gBAAA;EAE1E,EAAA;IAAA,yBAEI,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,QAAA,EAAU,QAAA,CAAS,MAAA;MAAiB,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,MACrD,YAAA,CAAW,gBAAA;IAAA,yBAEZ,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,MAAA,EAAQ,KAAA,CAAM,eAAA,CAAgB,OAAA,WAAkB,EAAA,KAC/C,YAAA,CAAW,gBAAA;EAAA;EAGhB,KAAA;IAAA,yBAEI,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,QAAA,EAAU,QAAA,CAAS,MAAA;MAAiB,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,MACrD,YAAA,CAAW,gBAAA;IAAA,yBAEZ,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,MAAA,EAAQ,KAAA,CAAM,eAAA,CAAgB,OAAA,WAAkB,EAAA,KAC/C,YAAA,CAAW,gBAAA;EAAA;AAAA;AAAA,KAIN,SAAA,YAAqB,YAAA,IAAgB,gBAAA,CAAiB,EAAA,kBAChE,kBAAA,CAAmB,EAAA;AAAA,KAET,UAAA;EAAe,OAAA;EAAsB,QAAA;AAAA;AAAA,KAErC,sBAAA;EACV,KAAA,GAAQ,IAAA,GAAO,YAAA,CAAW,UAAA,MAAgB,YAAA,CAAW,UAAA;EACrD,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;AAAA;AAAA,KAG/B,kBAAA,YAA8B,YAAA,IAAgB,SAAA,CAAU,EAAA,IAAM,sBAAA;;;KCtIrE,YAAA,WACO,UAAA,qBACS,MAAA;EAAA,SAA0B,MAAA;AAAA,MAC3C,CAAA,0BAA2B,UAAA,GAC3B,CAAA,4BACE,UAAA,CAAW,CAAA,gCACX,UAAA,CAAW,CAAA;AAAA,KAGZ,aAAA,cAA2B,UAAA,IAAc,CAAA,4BAA6B,CAAA,UAAW,CAAA;AAAA,KAE1E,UAAA,aACE,MAAA,SAAe,UAAA,sBACR,MAAA;EAAA,SAA0B,MAAA;AAAA,wBACzB,MAAA,oBAA0B,MAAA,mBAC5C,MAAA,yBACoB,GAAA,wBAA2B,WAAA,GAC7C,YAAA,CAAa,GAAA,CAAI,CAAA,GAAI,UAAA,IACrB,CAAA,eAAgB,WAAA,GACd,aAAA,CAAc,WAAA,CAAY,WAAA,CAAY,CAAA,SAAU,WAAA,IAAe,GAAA,CAAI,CAAA,KACnE,YAAA,CAAa,GAAA,CAAI,CAAA,GAAI,UAAA;;;KChBjB,mBAAA;EAAwB,GAAA;IAAO,SAAA;EAAA;AAAA;AAAA,KAG/B,YAAA,eACI,YAAA,aACH,MAAA;EAAA,SAA0B,KAAA;AAAA,oBAEzB,KAAA,eAAoB,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GACzE,EAAA,CAAG,KAAA,YAAiB,CAAA;AAAA,UAaT,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;AAAA,UAG7C,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACpF,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;AAAA,UAG7C,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACpF,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;;;UCpE7C,YAAA,YAAwB,YAAA,yBAAqC,KAAA,UACpE,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,QAAA,GACrC,QAAA,CAAS,EAAA,EAAI,cAAA,EAAgB,EAAA;;;UCOhB,YAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,WACvB,QAAA,CAAS,OAAA,GACf,cAAA,EACA,YAAA,EACA,SAAA,CAAU,OAAA,GACV,SAAA,CAAU,EAAA,EAAI,OAAA;EAChB,OAAA,IACK,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,MAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,kBAAA,CAAmB,EAAA,MACrB,YAAA,CAAW,gBAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,KAAA,SAAc,OAAA,SAAgB,cAAA,wBAC9B,OAAA,GAAU,cAAA,GACT,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,kBAAA,CAAmB,EAAA,MACrB,YAAA,CAAW,UAAA,GAChB,OAAA,GAAU,cAAA,GACT,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,UAAA,EAAY,WAAA,CACV,EAAA;IACE,QAAA;MAAY,UAAA;IAAA;EAAA;IAAA,IAGP,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;IAAA,CAElC,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAAA;AAAA;;;UCpDzB,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,WACvB,QAAA,CAAS,OAAA,GACf,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,OAAA,GAC/B,cAAA,EACA,YAAA,EACA,SAAA,CAAU,OAAA,GACV,SAAA,CAAU,EAAA,EAAI,OAAA;EAChB,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpF,OAAA,CACE,KAAA,SAAc,OAAA,SAAgB,cAAA,wBAC9B,OAAA,GAAU,cAAA,GACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEnC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,GAChB,OAAA,GAAU,cAAA,GACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEnC,OAAA,IACK,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,UAAA,EAAY,WAAA,CACV,EAAA;IACE,QAAA;MAAY,UAAA;IAAA;EAAA;IAAA,IAGP,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;IAAA,CAEjC,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAAA;AAAA;;;UChCxB,cAAA,YAA0B,YAAA,sBAAkC,KAAA;EAC3E,IAAA,eAAmB,UAAA,CAAW,UAAA,mBAC5B,KAAA,EAAO,KAAA,GACN,WAAA,CAAY,EAAA,EAAI,WAAA,CAAY,WAAA,EAAa,KAAA,QAAa,cAAA,IAAkB,QAAA;AAAA;AAAA,UAG5D,UAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,IAAc,QAAA;EAE7C,MAAA,wBAA8B,cAAA,6BACzB,OAAA,EAAS,OAAA,GACX,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,OAAA,EAAS,cAAA,cAA4B,OAAA;EAEnF,MAAA,qCAA2C,UAAA,EACzC,KAAA,EAAO,KAAA,EACP,IAAA,GAAO,MAAA,EAAQ,UAAA,CAAW,cAAA,GAAiB,GAAA,EAAK,kBAAA,CAAmB,EAAA,MAAQ,YAAA,CAAW,KAAA,IACrF,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,SAAA,CAAU,OAAA,EAAS,KAAA,EAAO,KAAA;EAE7D,MAAA,gBAAsB,MAAA,SAAe,YAAA,CAAW,UAAA,IAC9C,QAAA,GAAW,MAAA,EAAQ,UAAA,CAAW,cAAA,GAAiB,GAAA,EAAK,kBAAA,CAAmB,EAAA,MAAQ,MAAA,GAC9E,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,MAAA,CAAO,OAAA,GAAU,kBAAA,CAAmB,MAAA;AAAA;AAAA,UAGxD,QAAA,YAAoB,YAAA,yBAAqC,KAAA;EACxE,SAAA,eAAwB,UAAA,CAAW,UAAA,mBACjC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA;EAE7D,aAAA,eAA4B,UAAA,CAAW,UAAA,mBACrC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,cAAA,EAAgB,aAAA,CAAc,KAAA,QAAa,cAAA;EAE3E,cAAA,eAA6B,UAAA,CAAW,UAAA,mBACtC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,aAAA,CAAc,cAAA,GAAiB,KAAA,QAAa,cAAA;EAE5E,aAAA,eAA4B,UAAA,CAAW,UAAA,mBACrC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CACD,EAAA,EACA,WAAA,CAAY,aAAA,CAAc,cAAA,GAAiB,aAAA,CAAc,KAAA,QAAa,cAAA;EAGxE,WAAA,EAAa,WAAA,CACX,YAAA;IACE,GAAA;MAAO,OAAA;IAAA;EAAA,6CACiC,MAAA,SAAe,UAAA,GACvD,KAAA,EAAO,KAAA,EACP,OAAA,GAAU,OAAA,EAAS,cAAA,CAAe,EAAA,EAAI,cAAA,MAAoB,QAAA,CAAS,UAAA,MAChE,YAAA,CACH,EAAA,EACA,WAAA,CAAY,cAAA;IAAkB,QAAA,EAAU,UAAA;IAAY,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,UAAA;EAAA;EAIlF,gBAAA,EAAkB,WAAA,CAChB,YAAA;IACE,GAAA;MAAO,OAAA;IAAA;EAAA,6CACiC,MAAA,SAAe,UAAA,GACvD,KAAA,EAAO,KAAA,EACP,OAAA,GAAU,OAAA,EAAS,cAAA,CAAe,EAAA,EAAI,cAAA,MAAoB,QAAA,CAAS,UAAA,MAChE,YAAA,CACH,EAAA,EACA,WAAA,CACE,cAAA,EACA,aAAA;IAAgB,QAAA,EAAU,UAAA;IAAY,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,UAAA;EAAA;AAAA;AAAA,UAMvD,cAAA;EACf,KAAA,CAAM,KAAA;EACN,MAAA,CAAO,KAAA;AAAA;AAAA,UAGQ,YAAA;EACf,QAAA;AAAA;AAAA,UAGe,SAAA,iBAA0B,MAAA,SAAe,UAAA;EACxD,EAAA,uBAAyB,QAAA,EAAU,KAAA,GAAQ,UAAA,CAAW,OAAA,EAAS,KAAA;AAAA;AAAA,UAGhD,SAAA,YAAqB,YAAA,kBAA8B,MAAA,SAAe,UAAA;EACjF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;;;KCnGzD,iBAAA,gCAAiD,CAAA;EAAA,SAC3C,MAAA,uBAA6B,MAAA;IAAA,SAEzB,OAAA;MAAA,SAAoB,KAAA;IAAA;EAAA;AAAA,kBAIjB,MAAA,YAAkB,MAAA,CAAO,CAAA,8BAA+B,SAAA,GAAY,CAAA,iBAC1E,MAAA;AAAA,KAGP,kBAAA,2DAA6E,CAAA;EAAA,SACvE,MAAA,uBAA6B,MAAA;IAAA,SAEzB,OAAA;MAAA,SAAoB,MAAA,EAAQ,MAAA;QAAA,SAA0B,MAAA;MAAA;IAAA;EAAA;AAAA,IAGjE,SAAA,eAAwB,MAAA,iBAER,MAAA,CAAO,SAAA,kCACR,MAAA,CAAO,SAAA,uBAAgC,CAAA,oBAAqB,UAAA,GACnE,CAAA,iBAEE,MAAA,CAAO,SAAA;AAAA,KAIhB,mBAAA,iDAGgB,MAAA,SAAe,MAAA,2CACX,UAAA,GACrB,MAAA,kBACA,iBAAA,CAAkB,CAAA,EAAG,SAAA,2CACnB,SAAA,eAAwB,UAAA,GACtB,CAAA;EAAA,SACW,OAAA;IAAA,SAAoB,MAAA,uBAA6B,MAAA,SAAe,YAAA;EAAA;AAAA,IAEzE,SAAA,eAAwB,MAAA,uBAEF,MAAA,CAAO,SAAA,wBAAiC,kBAAA,CACxD,CAAA,EACA,SAAA,EACA,OAAA,2CAEE,SAAA,eAAwB,UAAA,CAAW,SAAA,IACjC,UAAA,CAAW,SAAA,EAAW,SAAA,0BAI9B,MAAA,kBACF,MAAA,kBACF,MAAA,kBACF,MAAA;AAAA,KAED,oBAAA,kBAEW,YAAA,uCAEH,MAAA;EAAA,SAA0B,KAAA;AAAA,wBACjB,MAAA,SAAe,MAAA,2CACZ,WAAA,GACrB,YAAA,CAAa,KAAA,EAAO,EAAA,IACpB,iBAAA,CAAkB,CAAA,EAAG,SAAA,2CACnB,SAAA,eAAwB,WAAA,iBAER,KAAA,eAAoB,kBAAA,CAC9B,CAAA,EACA,SAAA,EACA,CAAA,oDAEE,SAAA,eAAwB,WAAA,CAAY,SAAA,IAClC,KAAA,YAAiB,CAAA,6BACf,WAAA,CAAY,WAAA,CAAY,SAAA,EAAW,SAAA,YACnC,WAAA,CAAY,WAAA,CAAY,SAAA,EAAW,SAAA,KACrC,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GAC3C,EAAA,CAAG,KAAA,YAAiB,CAAA,mCAExB,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GAC3C,EAAA,CAAG,KAAA,YAAiB,CAAA,qCAG5B,YAAA,CAAa,KAAA,EAAO,EAAA,IACtB,YAAA,CAAa,KAAA,EAAO,EAAA;AAAA,KAErB,oBAAA,kBAEW,YAAA,uCAEH,MAAA;EAAA,SAA0B,KAAA;AAAA,wBACjB,MAAA,SAAe,MAAA,sBACjC,oBAAA,CAAqB,CAAA,EAAG,KAAA,EAAO,SAAA,EAAW,EAAA,EAAI,WAAA;AAAA,KAE7C,YAAA,WAAuB,kBAAA;EAAA,SACjB,UAAA,EAAY,iBAAA,CAAkB,CAAA;EAAA,SAC9B,YAAA,EAAc,CAAA;EAAA,SACd,mBAAA,EAAqB,0BAAA,CAA2B,CAAA;EAAA,SAChD,yBAAA,EAA2B,mBAAA,CAAoB,CAAA,EAAG,IAAA,EAAM,uBAAA,CAAwB,CAAA;AAAA;AAAA,UAG1E,UAAA,WACL,kBAAA,8BACkB,CAAA,8CACL,IAAA,yBACA,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,CAAA,sBAAuB,IAAA,eAC9D,YAAA,GAAe,YAAA,CAAa,CAAA,EAAG,IAAA,WAClC,UAAA,CAAW,wBAAA,CAAyB,CAAA,sBAAuB,IAAA,IAAQ,KAAA,GACzE,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,QAAA,GAC/B,QAAA,CAAS,EAAA,EAAI,cAAA,EAAgB,CAAA;EAC/B,EAAA,0BACE,QAAA,EAAU,QAAA,GACT,UAAA,CAAW,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,WAAA,CAAY,cAAA,EAAgB,KAAA,EAAO,QAAA;EAEpE,MAAA,CACE,MAAA,EAAQ,oBAAA,CACN,CAAA,EACA,CAAA,sBAAuB,IAAA,GACvB,IAAA,EACA,EAAA,gBACA,sBAAA,CAAuB,CAAA,KAExB,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;EAEnC,MAAA,CACE,GAAA,EAAK,oBAAA,CACH,CAAA,EACA,CAAA,sBAAuB,IAAA,GACvB,IAAA,EACA,EAAA,gBACA,sBAAA,CAAuB,CAAA,KAExB,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;EAEnC,MAAA,IAAU,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;AAAA;;;KCtJhC,gBAAA,GAAmB,MAAA,SAAe,MAAA;AAAA,KAElC,kBAAA;EAAA,SACD,OAAA;IAAA,SAAoB,MAAA,EAAQ,MAAA,SAAe,YAAA;EAAA;EAAA,SAC3C,YAAA,EAAc,gBAAA;AAAA;AAAA,KAGb,EAAA,WAAa,kBAAA,8BACC,CAAA,wBAAyB,UAAA,CAAW,CAAA,EAAG,IAAA"}