effect-dynamodb 1.34.1 → 1.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Aggregate.d.ts +1 -1
- package/dist/Aggregate.d.ts.map +1 -1
- package/dist/Aggregate.js +22 -6
- package/dist/Aggregate.js.map +1 -1
- package/dist/Batch.d.ts +1 -1
- package/dist/Batch.d.ts.map +1 -1
- package/dist/Batch.js +7 -5
- package/dist/Batch.js.map +1 -1
- package/dist/ConsumedCapacity.d.ts +107 -0
- package/dist/ConsumedCapacity.d.ts.map +1 -0
- package/dist/ConsumedCapacity.js +86 -0
- package/dist/ConsumedCapacity.js.map +1 -0
- package/dist/DynamoClient.d.ts.map +1 -1
- package/dist/DynamoClient.js +6 -1
- package/dist/DynamoClient.js.map +1 -1
- package/dist/Entity.d.ts +1 -1
- package/dist/Entity.d.ts.map +1 -1
- package/dist/Entity.js +76 -42
- package/dist/Entity.js.map +1 -1
- package/dist/EventStore.d.ts +78 -10
- package/dist/EventStore.d.ts.map +1 -1
- package/dist/EventStore.js +219 -35
- package/dist/EventStore.js.map +1 -1
- package/dist/Query.d.ts +15 -0
- package/dist/Query.d.ts.map +1 -1
- package/dist/Query.js +23 -8
- package/dist/Query.js.map +1 -1
- package/dist/Transaction.d.ts +1 -1
- package/dist/Transaction.d.ts.map +1 -1
- package/dist/Transaction.js +7 -5
- package/dist/Transaction.js.map +1 -1
- package/dist/change-feed/ChangeFeed.d.ts.map +1 -1
- package/dist/change-feed/ChangeFeed.js +7 -4
- package/dist/change-feed/ChangeFeed.js.map +1 -1
- package/dist/change-feed/CheckpointStore.d.ts +1 -1
- package/dist/change-feed/CheckpointStore.d.ts.map +1 -1
- package/dist/change-feed/CheckpointStore.js +11 -3
- package/dist/change-feed/CheckpointStore.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/BoundCrud.js +3 -3
- package/dist/internal/BoundCrud.js.map +1 -1
- package/dist/internal/BoundQuery.d.ts +16 -0
- package/dist/internal/BoundQuery.d.ts.map +1 -1
- package/dist/internal/BoundQuery.js +21 -4
- package/dist/internal/BoundQuery.js.map +1 -1
- package/dist/internal/BoundVectorQuery.d.ts +1 -1
- package/dist/internal/BoundVectorQuery.d.ts.map +1 -1
- package/dist/internal/BoundVectorQuery.js +4 -3
- package/dist/internal/BoundVectorQuery.js.map +1 -1
- package/dist/internal/Capacity.d.ts +254 -0
- package/dist/internal/Capacity.d.ts.map +1 -0
- package/dist/internal/Capacity.js +653 -0
- package/dist/internal/Capacity.js.map +1 -0
- package/dist/internal/EntityCombinators.d.ts.map +1 -1
- package/dist/internal/EntityCombinators.js +4 -4
- package/dist/internal/EntityCombinators.js.map +1 -1
- package/dist/internal/EntityOps.d.ts +10 -1
- package/dist/internal/EntityOps.d.ts.map +1 -1
- package/dist/internal/EntityOps.js +22 -4
- package/dist/internal/EntityOps.js.map +1 -1
- package/dist/internal/EventProjection.d.ts.map +1 -1
- package/dist/internal/EventProjection.js +12 -8
- package/dist/internal/EventProjection.js.map +1 -1
- package/dist/internal/MultiProjection.d.ts.map +1 -1
- package/dist/internal/MultiProjection.js +11 -8
- package/dist/internal/MultiProjection.js.map +1 -1
- package/dist/internal/ProjectionEngine.d.ts.map +1 -1
- package/dist/internal/ProjectionEngine.js +5 -5
- package/dist/internal/ProjectionEngine.js.map +1 -1
- package/dist/internal/TransactPlan.d.ts.map +1 -1
- package/dist/internal/TransactPlan.js +5 -3
- package/dist/internal/TransactPlan.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Consumed-capacity reporting (#174) — the choke point and the
|
|
3
|
+
* operation scopes. The public surface is `ConsumedCapacity.ts`.
|
|
4
|
+
*
|
|
5
|
+
* - {@link client} is how every library code path gets the DynamoDB client: an
|
|
6
|
+
* instrumented view ({@link instrument}) of whatever `DynamoClient` is in
|
|
7
|
+
* context — the built-in layer, a decorator, a mock. With reporting off the
|
|
8
|
+
* view calls the underlying method with the very same input and nothing else
|
|
9
|
+
* happens; with it on, each data-plane request asks for `ConsumedCapacity`
|
|
10
|
+
* and records what came back into the current operation scope.
|
|
11
|
+
* - {@link operation} / {@link operationStream} open a named scope at a
|
|
12
|
+
* library operation's entry point. Requests record into their scope and
|
|
13
|
+
* every enclosing one; the outermost (root) scope delivers one report to the
|
|
14
|
+
* observer, so reports never double count. See
|
|
15
|
+
* `docs/designs/consumed-capacity.md`.
|
|
16
|
+
*/
|
|
17
|
+
import { Context, Effect, Stream, Tracer } from "effect";
|
|
18
|
+
import { DynamoClient, type DynamoClientService } from "../DynamoClient.js";
|
|
19
|
+
/** How much detail DynamoDB is asked for. `"indexes"` adds the per-table / per-index breakdown. */
|
|
20
|
+
export type Level = "total" | "indexes";
|
|
21
|
+
/** The DynamoDB data-plane commands that can report capacity. */
|
|
22
|
+
export type Command = "GetItem" | "PutItem" | "UpdateItem" | "DeleteItem" | "Query" | "Scan" | "BatchGetItem" | "BatchWriteItem" | "TransactGetItems" | "TransactWriteItems" | "SearchVectors";
|
|
23
|
+
/** Capacity and request totals, summed over every request of an operation. */
|
|
24
|
+
export interface CapacityTotals {
|
|
25
|
+
/** Σ CapacityUnits over every request (what DynamoDB bills, in RCU + WCU). */
|
|
26
|
+
readonly capacityUnits: number;
|
|
27
|
+
/** Σ read capacity units — DynamoDB's split when it gives one, else by command kind. */
|
|
28
|
+
readonly readCapacityUnits: number;
|
|
29
|
+
/** Σ write capacity units — DynamoDB's split when it gives one, else by command kind. */
|
|
30
|
+
readonly writeCapacityUnits: number;
|
|
31
|
+
/** Data-plane requests sent, including retries of unprocessed batch items. For a read, the pages. */
|
|
32
|
+
readonly requests: number;
|
|
33
|
+
/** Requests whose outcome carried no ConsumedCapacity: failures, or a client that does not return it. */
|
|
34
|
+
readonly unreportedRequests: number;
|
|
35
|
+
}
|
|
36
|
+
/** Capacity of one table or index (level `"indexes"`). */
|
|
37
|
+
export interface IndexCapacity {
|
|
38
|
+
readonly capacityUnits: number;
|
|
39
|
+
readonly readCapacityUnits: number;
|
|
40
|
+
readonly writeCapacityUnits: number;
|
|
41
|
+
}
|
|
42
|
+
/** Per-table sums; with level `"indexes"`, also the table / per-index breakdown. */
|
|
43
|
+
export interface TableCapacity extends CapacityTotals {
|
|
44
|
+
readonly tableName: string;
|
|
45
|
+
readonly table?: IndexCapacity | undefined;
|
|
46
|
+
readonly globalSecondaryIndexes?: Readonly<Record<string, IndexCapacity>> | undefined;
|
|
47
|
+
readonly localSecondaryIndexes?: Readonly<Record<string, IndexCapacity>> | undefined;
|
|
48
|
+
}
|
|
49
|
+
/** A direct child operation of a root, grouped by name. Totals are inclusive. */
|
|
50
|
+
export interface NestedOperation extends CapacityTotals {
|
|
51
|
+
readonly operation: string;
|
|
52
|
+
readonly calls: number;
|
|
53
|
+
}
|
|
54
|
+
/** One report per root library operation. */
|
|
55
|
+
export interface OperationReport extends CapacityTotals {
|
|
56
|
+
/** `"Entity.get"`, `"EventStream.read"`, … */
|
|
57
|
+
readonly operation: string;
|
|
58
|
+
/** Low-cardinality subject: an entity type, stream, aggregate or collection name. */
|
|
59
|
+
readonly target: string | undefined;
|
|
60
|
+
/** Logical index / accessor name, for query operations. */
|
|
61
|
+
readonly index: string | undefined;
|
|
62
|
+
/** Every table a request named, sorted. */
|
|
63
|
+
readonly tables: ReadonlyArray<string>;
|
|
64
|
+
/** Requests per DynamoDB command: `{ Query: 3, GetItem: 1 }`. */
|
|
65
|
+
readonly requestsByCommand: Readonly<Partial<Record<Command, number>>>;
|
|
66
|
+
/** Per-table sums, sorted by table name. */
|
|
67
|
+
readonly byTable: ReadonlyArray<TableCapacity>;
|
|
68
|
+
/** Vector index usage (billed in bytes, not capacity units). 0 when none. */
|
|
69
|
+
readonly vectorSearchRequestBytes: number;
|
|
70
|
+
readonly vectorWriteRequestBytes: number;
|
|
71
|
+
/** Direct child operations, grouped by name. Their totals are INCLUDED above. */
|
|
72
|
+
readonly nested: ReadonlyArray<NestedOperation>;
|
|
73
|
+
readonly outcome: "success" | "failure" | "interrupted";
|
|
74
|
+
}
|
|
75
|
+
/** Options for {@link make}. */
|
|
76
|
+
export interface Options {
|
|
77
|
+
/** Default `"total"` (ReturnConsumedCapacity: TOTAL). `"indexes"` sends INDEXES. */
|
|
78
|
+
readonly level?: Level | undefined;
|
|
79
|
+
/** Default `true`: every library operation runs in a span carrying its totals. */
|
|
80
|
+
readonly spans?: boolean | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Called once per ROOT library operation, after it completes, fails or is
|
|
83
|
+
* interrupted. Library operations it runs itself are not reported. A failure
|
|
84
|
+
* or defect is logged at warning level and never changes the operation's result.
|
|
85
|
+
*/
|
|
86
|
+
readonly onOperation?: ((report: OperationReport) => Effect.Effect<void>) | undefined;
|
|
87
|
+
}
|
|
88
|
+
/** Optional subject of an operation. */
|
|
89
|
+
export interface OperationOptions {
|
|
90
|
+
/** Low-cardinality subject: an entity type, stream name, aggregate or collection name. */
|
|
91
|
+
readonly target?: string | undefined;
|
|
92
|
+
/** Logical index / accessor name, for query operations. */
|
|
93
|
+
readonly index?: string | undefined;
|
|
94
|
+
}
|
|
95
|
+
/** The resolved reporting setting. Build with {@link make}. */
|
|
96
|
+
export interface Settings {
|
|
97
|
+
readonly enabled: boolean;
|
|
98
|
+
readonly level: Level;
|
|
99
|
+
readonly spans: boolean;
|
|
100
|
+
readonly onOperation: ((report: OperationReport) => Effect.Effect<void>) | undefined;
|
|
101
|
+
}
|
|
102
|
+
/** The "off" setting — the default. */
|
|
103
|
+
export declare const off: Settings;
|
|
104
|
+
/** Build an enabled setting. */
|
|
105
|
+
export declare const make: (options?: Options) => Settings;
|
|
106
|
+
/** The reporting setting. Default: off. */
|
|
107
|
+
export declare const Reporting: Context.Reference<Settings>;
|
|
108
|
+
export declare const Attributes: {
|
|
109
|
+
/** `"aws.dynamodb"` (OTel semconv). */
|
|
110
|
+
readonly dbSystem: "db.system.name";
|
|
111
|
+
readonly operation: "effect_dynamodb.operation";
|
|
112
|
+
readonly target: "effect_dynamodb.target";
|
|
113
|
+
readonly index: "effect_dynamodb.index";
|
|
114
|
+
/** `true` when the operation runs inside another library operation. */
|
|
115
|
+
readonly nested: "effect_dynamodb.nested";
|
|
116
|
+
/** OTel semconv: every table a request named. */
|
|
117
|
+
readonly tableNames: "aws.dynamodb.table_names";
|
|
118
|
+
/** Σ capacity units — always present when reporting is on. */
|
|
119
|
+
readonly total: "aws.dynamodb.consumed_capacity.total";
|
|
120
|
+
readonly read: "aws.dynamodb.consumed_capacity.read";
|
|
121
|
+
readonly write: "aws.dynamodb.consumed_capacity.write";
|
|
122
|
+
readonly requestCount: "effect_dynamodb.request_count";
|
|
123
|
+
readonly unreportedRequests: "effect_dynamodb.unreported_requests";
|
|
124
|
+
readonly vectorSearchRequestBytes: "effect_dynamodb.vector.search_request_bytes";
|
|
125
|
+
readonly vectorWriteRequestBytes: "effect_dynamodb.vector.write_request_bytes";
|
|
126
|
+
};
|
|
127
|
+
/** Span name of an operation: `effect-dynamodb.<operation>`. */
|
|
128
|
+
export declare const spanName: (operation: string) => string;
|
|
129
|
+
interface MutableTotals {
|
|
130
|
+
capacityUnits: number;
|
|
131
|
+
readCapacityUnits: number;
|
|
132
|
+
writeCapacityUnits: number;
|
|
133
|
+
requests: number;
|
|
134
|
+
unreportedRequests: number;
|
|
135
|
+
}
|
|
136
|
+
interface MutableIndexCapacity {
|
|
137
|
+
capacityUnits: number;
|
|
138
|
+
readCapacityUnits: number;
|
|
139
|
+
writeCapacityUnits: number;
|
|
140
|
+
}
|
|
141
|
+
interface TableAccumulator extends MutableTotals {
|
|
142
|
+
table: MutableIndexCapacity | undefined;
|
|
143
|
+
gsi: Map<string, MutableIndexCapacity> | undefined;
|
|
144
|
+
lsi: Map<string, MutableIndexCapacity> | undefined;
|
|
145
|
+
}
|
|
146
|
+
/** @internal A live operation scope. */
|
|
147
|
+
export interface OperationScope {
|
|
148
|
+
readonly name: string;
|
|
149
|
+
readonly target: string | undefined;
|
|
150
|
+
readonly index: string | undefined;
|
|
151
|
+
/**
|
|
152
|
+
* The enclosing open scope. Invariant: while this scope is open, its parent
|
|
153
|
+
* is open or `undefined` — a scope that closes first hands its open children
|
|
154
|
+
* to its own parent (re-rooting them when it was the root).
|
|
155
|
+
*/
|
|
156
|
+
parent: OperationScope | undefined;
|
|
157
|
+
readonly settings: Settings;
|
|
158
|
+
closed: boolean;
|
|
159
|
+
outcome: OperationReport["outcome"];
|
|
160
|
+
readonly totals: MutableTotals;
|
|
161
|
+
readonly byCommand: Partial<Record<Command, number>>;
|
|
162
|
+
readonly tables: Map<string, TableAccumulator>;
|
|
163
|
+
vectorSearchRequestBytes: number;
|
|
164
|
+
vectorWriteRequestBytes: number;
|
|
165
|
+
readonly children: Map<string, {
|
|
166
|
+
calls: number;
|
|
167
|
+
totals: MutableTotals;
|
|
168
|
+
}>;
|
|
169
|
+
/** What was cleared from the fields above. The span carries both: it covers the scope's whole life. */
|
|
170
|
+
readonly carried: {
|
|
171
|
+
readonly totals: MutableTotals;
|
|
172
|
+
readonly tables: Set<string>;
|
|
173
|
+
vectorSearchRequestBytes: number;
|
|
174
|
+
vectorWriteRequestBytes: number;
|
|
175
|
+
};
|
|
176
|
+
/** Child scopes still open. */
|
|
177
|
+
readonly openChildren: Set<OperationScope>;
|
|
178
|
+
span: Tracer.Span | undefined;
|
|
179
|
+
}
|
|
180
|
+
/** Set only while an observer runs: everything inside it runs unreported. */
|
|
181
|
+
export declare const SUPPRESSED: "suppressed";
|
|
182
|
+
/**
|
|
183
|
+
* The operation the current fiber is inside. Never captured by a bind site
|
|
184
|
+
* ({@link detachContext}), so a bound client cannot override it.
|
|
185
|
+
*/
|
|
186
|
+
export declare const CurrentOperation: Context.Reference<OperationScope | typeof SUPPRESSED | undefined>;
|
|
187
|
+
/** @internal Build the observer report of a (closed) scope. */
|
|
188
|
+
export declare const buildReport: (scope: OperationScope) => OperationReport;
|
|
189
|
+
/**
|
|
190
|
+
* Run `effect` as the named library operation. With reporting off — or
|
|
191
|
+
* inside an observer — `effect` runs unchanged.
|
|
192
|
+
*/
|
|
193
|
+
export declare const operation: <A, E, R>(name: string, options: OperationOptions | undefined, effect: Effect.Effect<A, E, R>,
|
|
194
|
+
/**
|
|
195
|
+
* The setting a bound client captured, for an operation that composes bound
|
|
196
|
+
* calls but does not itself run inside the bound `provide` (a bound stream's
|
|
197
|
+
* command handler). It wins over the run-time one, as captured settings do.
|
|
198
|
+
*/
|
|
199
|
+
captured?: Settings | undefined) => Effect.Effect<A, E, R>;
|
|
200
|
+
/**
|
|
201
|
+
* Like {@link operation}, but only when no operation is current: a delegate
|
|
202
|
+
* (a `Query` terminal run by a library accessor) adds its requests to the
|
|
203
|
+
* accessor's scope rather than opening one of its own.
|
|
204
|
+
*/
|
|
205
|
+
export declare const delegate: <A, E, R>(name: string, options: OperationOptions | undefined, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
206
|
+
/**
|
|
207
|
+
* The stream form, as an effect to run where the stream is BUILT — inside a
|
|
208
|
+
* bound client's `provide`, so the captured setting is the one read. The
|
|
209
|
+
* returned stream decides at its start whether to open a scope (a delegate
|
|
210
|
+
* does not when an operation is already current there), opens it for that
|
|
211
|
+
* run (each run is one operation), and carries the resolved setting and
|
|
212
|
+
* scope to every page pull, which happens later from the consumer's fiber.
|
|
213
|
+
*/
|
|
214
|
+
export declare const operationStream: <A, E, R>(name: string, options: OperationOptions | undefined, stream: Stream.Stream<A, E, R>, mode?: "operation" | "delegate") => Effect.Effect<Stream.Stream<A, E, R>>;
|
|
215
|
+
/**
|
|
216
|
+
* Strip per-call state from a context captured for later use: the current
|
|
217
|
+
* operation scope and the tracer's parent span.
|
|
218
|
+
*/
|
|
219
|
+
export declare const detachContext: <R>(context: Context.Context<R>) => Context.Context<R>;
|
|
220
|
+
/**
|
|
221
|
+
* `(name, fn)` → `fn` as the operation `<prefix>.<name>` with `target`, for
|
|
222
|
+
* the methods of an object whose every method is an operation.
|
|
223
|
+
*/
|
|
224
|
+
export declare const namedOperation: (prefix: string, target: string | undefined) => <Args extends ReadonlyArray<any>, A, E, R>(name: string, fn: (...args: Args) => Effect.Effect<A, E, R>) => ((...args: Args) => Effect.Effect<A, E, R>);
|
|
225
|
+
/** The setting stored in a captured context, if one was provided there (no default). */
|
|
226
|
+
export declare const capturedSettings: (context: Context.Context<never>) => Settings | undefined;
|
|
227
|
+
/** Where a bound object keeps the setting captured at bind time. */
|
|
228
|
+
export declare const CapturedReporting: unique symbol;
|
|
229
|
+
/** Run `effect` outside any current operation (a long-lived forked fiber). */
|
|
230
|
+
export declare const detached: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
231
|
+
/** @internal Mark a client failure as local: no request reached DynamoDB. */
|
|
232
|
+
export declare const markNotSent: <A extends object>(error: A) => A;
|
|
233
|
+
/** The data-plane methods and their command names. Table management passes through. */
|
|
234
|
+
export declare const DATA_PLANE: ReadonlyArray<readonly [keyof DynamoClientService, Command]>;
|
|
235
|
+
/**
|
|
236
|
+
* The instrumented view of a client: the data-plane methods record their
|
|
237
|
+
* capacity, everything else is the client's own. Memoised per client; an
|
|
238
|
+
* already-instrumented client is returned as is.
|
|
239
|
+
*/
|
|
240
|
+
export declare const instrument: (service: DynamoClientService) => DynamoClientService;
|
|
241
|
+
/** The client every library code path uses: the instrumented view of the one in context. */
|
|
242
|
+
export declare const client: Effect.Effect<DynamoClientService, never, DynamoClient>;
|
|
243
|
+
/**
|
|
244
|
+
* Name the operation an entity op builder implements (`Entity.getVersion`
|
|
245
|
+
* on a get-shaped op). The name travels with the builder function, so the
|
|
246
|
+
* combinators that rebuild an op from its builder keep it.
|
|
247
|
+
*/
|
|
248
|
+
export declare const nameBuilder: <F extends object>(builder: F, name: string) => F;
|
|
249
|
+
/** The name {@link nameBuilder} gave a builder, if any. */
|
|
250
|
+
export declare const builderName: (builder: object) => string | undefined;
|
|
251
|
+
/** The `target` of an entity op: its entity type. */
|
|
252
|
+
export declare const entityTarget: (entity: object) => OperationOptions;
|
|
253
|
+
export {};
|
|
254
|
+
//# sourceMappingURL=Capacity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Capacity.d.ts","sourceRoot":"","sources":["../../src/internal/Capacity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAS,OAAO,EAAE,MAAM,EAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAM3E,mGAAmG;AACnG,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,SAAS,CAAA;AAEvC,iEAAiE;AACjE,MAAM,MAAM,OAAO,GACf,SAAS,GACT,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,MAAM,GACN,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,eAAe,CAAA;AAEnB,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,yFAAyF;IACzF,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,qGAAqG;IACrG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,yGAAyG;IACzG,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;CACpC;AAED,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;CACpC;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IAC1C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAA;IACrF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAA;CACrF;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,iEAAiE;IACjE,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IACtE,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IAC9C,6EAA6E;IAC7E,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAA;IACzC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAA;IACxC,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAAA;CACxD;AAED,gCAAgC;AAChC,MAAM,WAAW,OAAO;IACtB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IAClC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACpC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;CACtF;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC;AAED,+DAA+D;AAC/D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;CACrF;AAED,uCAAuC;AACvC,eAAO,MAAM,GAAG,EAAE,QAKhB,CAAA;AAEF,gCAAgC;AAChC,eAAO,MAAM,IAAI,GAAI,UAAU,OAAO,KAAG,QAKvC,CAAA;AAEF,2CAA2C;AAC3C,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAGjD,CAAA;AAMD,eAAO,MAAM,UAAU;IACrB,uCAAuC;;;;;IAKvC,uEAAuE;;IAEvE,iDAAiD;;IAEjD,8DAA8D;;;;;;;;CAQtD,CAAA;AAEV,gEAAgE;AAChE,eAAO,MAAM,QAAQ,GAAI,WAAW,MAAM,KAAG,MAAwC,CAAA;AAcrF,UAAU,aAAa;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,UAAU,gBAAiB,SAAQ,aAAa;IAC9C,KAAK,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACvC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,SAAS,CAAA;IAClD,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,SAAS,CAAA;CACnD;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC;;;;OAIG;IACH,MAAM,EAAE,cAAc,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAInC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACpD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC9C,wBAAwB,EAAE,MAAM,CAAA;IAChC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IACxE,uGAAuG;IACvG,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;QAC9B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC5B,wBAAwB,EAAE,MAAM,CAAA;QAChC,uBAAuB,EAAE,MAAM,CAAA;KAChC,CAAA;IACD,+BAA+B;IAC/B,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;IAC1C,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;CAC9B;AAED,6EAA6E;AAC7E,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAA;AAE/C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,OAAO,UAAU,GAAG,SAAS,CAI5F,CAAA;AAqHH,+DAA+D;AAC/D,eAAO,MAAM,WAAW,GAAI,OAAO,cAAc,KAAG,eAwBlD,CAAA;AAiHF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAC/B,MAAM,MAAM,EACZ,SAAS,gBAAgB,GAAG,SAAS,EACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;;;;GAIG;AACH,WAAW,QAAQ,GAAG,SAAS,KAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAOpB,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9B,MAAM,MAAM,EACZ,SAAS,gBAAgB,GAAG,SAAS,EACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAOpB,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACrC,MAAM,MAAM,EACZ,SAAS,gBAAgB,GAAG,SAAS,EACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,OAAM,WAAW,GAAG,UAAwB,KAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAiCnC,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CACE,CAAA;AAElF;;;GAGG;AACH,eAAO,MAAM,cAAc,GACxB,QAAQ,MAAM,EAAE,QAAQ,MAAM,GAAG,SAAS,MAC1C,IAAI,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACvC,MAAM,MAAM,EACZ,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5C,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAEY,CAAA;AAE3D,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAG,QAAQ,GAAG,SAClC,CAAA;AAE5C,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,EAAE,OAAO,MAEtC,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAKrF,CAAA;AAkBH,6EAA6E;AAC7E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,OAAO,CAAC,KAAG,CAGxD,CAAA;AA8MD,uFAAuF;AACvF,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,mBAAmB,EAAE,OAAO,CAAC,CAYnF,CAAA;AAiCD;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,mBAAmB,KAAG,mBAiBzD,CAAA;AAED,4FAA4F;AAC5F,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,EAAE,YAAY,CAE1E,CAAA;AAQD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,MAAM,KAAG,CAGxE,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,MAAM,GAAG,SACe,CAAA;AAEtE,qDAAqD;AACrD,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,gBAE5C,CAAA"}
|