@elaraai/e3-ui 1.0.84 → 1.0.85
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/src/bind/data.d.ts +4 -3
- package/dist/src/bind/data.d.ts.map +1 -1
- package/dist/src/bind/data.js +4 -3
- package/dist/src/bind/data.js.map +1 -1
- package/dist/src/bind/record.d.ts +5 -2
- package/dist/src/bind/record.d.ts.map +1 -1
- package/dist/src/bind/record.js +5 -2
- package/dist/src/bind/record.js.map +1 -1
- package/dist/src/bind/sources.d.ts +148 -0
- package/dist/src/bind/sources.d.ts.map +1 -0
- package/dist/src/bind/sources.js +116 -0
- package/dist/src/bind/sources.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +2 -0
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +6 -0
- package/dist/src/internal.js.map +1 -1
- package/dist/src/query/builder.d.ts +3257 -0
- package/dist/src/query/builder.d.ts.map +1 -0
- package/dist/src/query/builder.js +126 -0
- package/dist/src/query/builder.js.map +1 -0
- package/dist/src/query/index.d.ts +108 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/index.js +76 -0
- package/dist/src/query/index.js.map +1 -0
- package/dist/src/query/library.d.ts +3241 -0
- package/dist/src/query/library.d.ts.map +1 -0
- package/dist/src/query/library.js +114 -0
- package/dist/src/query/library.js.map +1 -0
- package/dist/src/query/queries.d.ts +4696 -0
- package/dist/src/query/queries.d.ts.map +1 -0
- package/dist/src/query/queries.js +129 -0
- package/dist/src/query/queries.js.map +1 -0
- package/dist/src/query/saved.d.ts +72 -0
- package/dist/src/query/saved.d.ts.map +1 -0
- package/dist/src/query/saved.js +84 -0
- package/dist/src/query/saved.js.map +1 -0
- package/dist/src/query/steps.d.ts +613 -0
- package/dist/src/query/steps.d.ts.map +1 -0
- package/dist/src/query/steps.js +316 -0
- package/dist/src/query/steps.js.map +1 -0
- package/dist/src/query/types.d.ts +444 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/types.js +113 -0
- package/dist/src/query/types.js.map +1 -0
- package/dist/src/ui.d.ts +16 -3
- package/dist/src/ui.d.ts.map +1 -1
- package/dist/src/ui.js +21 -1
- package/dist/src/ui.js.map +1 -1
- package/dist/test/bind/data/data.examples.d.ts +76 -1
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +176 -3
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/dist/test/bind/func/func.examples.d.ts +8 -0
- package/dist/test/bind/func/func.examples.d.ts.map +1 -1
- package/dist/test/bind/func/func.examples.js +4 -3
- package/dist/test/bind/func/func.examples.js.map +1 -1
- package/dist/test/query/query.examples.d.ts +5022 -0
- package/dist/test/query/query.examples.d.ts.map +1 -0
- package/dist/test/query/query.examples.js +467 -0
- package/dist/test/query/query.examples.js.map +1 -0
- package/package.json +9 -9
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The query builder's steps (#933) — a query as the builder edits it: a data
|
|
7
|
+
* source and the steps that read it, in plain words.
|
|
8
|
+
*
|
|
9
|
+
* Steps are a projection of a query's jq program: each step prints as a
|
|
10
|
+
* canonical form of jq (`Query Editor Spec.md` §4.7), and a program made of
|
|
11
|
+
* canonical forms parses back into its steps. They are East values, because
|
|
12
|
+
* the builder's edits are drafts of the shared editing session, which holds,
|
|
13
|
+
* compares and diffs its entries as East values. The functions over them —
|
|
14
|
+
* printing, parsing, checking, editing and counting — are e3-ui-components'.
|
|
15
|
+
*
|
|
16
|
+
* A field is named by a string: `"total"`, `"status"` (a variant's case) or
|
|
17
|
+
* `"status.shipped.date"` (a field of a case's payload).
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
21
|
+
import { ArrayType, BooleanType, DictType, FloatType, NullType, OptionType, RecursiveType, StringType, StructType, VariantType, } from "@elaraai/east";
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Values
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* A value a step compares with or fills in.
|
|
27
|
+
*
|
|
28
|
+
* @property text - Text, a case's name, or a date written as ISO text ("2026-03-01")
|
|
29
|
+
* @property number - A number; a whole one prints as an Integer
|
|
30
|
+
* @property boolean - Yes or no
|
|
31
|
+
* @property null - Nothing
|
|
32
|
+
*/
|
|
33
|
+
export const QueryStepValueType = VariantType({
|
|
34
|
+
text: StringType,
|
|
35
|
+
number: FloatType,
|
|
36
|
+
boolean: BooleanType,
|
|
37
|
+
null: NullType,
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* A count or a bound a step takes: a number, or the text typed when it is not
|
|
41
|
+
* one, which the check reports.
|
|
42
|
+
*
|
|
43
|
+
* @property number - The number
|
|
44
|
+
* @property text - The text as typed
|
|
45
|
+
*/
|
|
46
|
+
export const QueryStepInputType = VariantType({
|
|
47
|
+
number: FloatType,
|
|
48
|
+
text: StringType,
|
|
49
|
+
});
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// Conditions
|
|
52
|
+
// ============================================================================
|
|
53
|
+
/**
|
|
54
|
+
* How a step's or a group's conditions combine.
|
|
55
|
+
*
|
|
56
|
+
* @property all - Every condition holds
|
|
57
|
+
* @property any - At least one holds
|
|
58
|
+
*/
|
|
59
|
+
export const QueryMatchType = VariantType({
|
|
60
|
+
all: NullType,
|
|
61
|
+
any: NullType,
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* How a condition compares a field. The builder gives each its words ("is at
|
|
65
|
+
* least"); the field's kind decides which apply.
|
|
66
|
+
*
|
|
67
|
+
* @property eq - Is
|
|
68
|
+
* @property ne - Is not
|
|
69
|
+
* @property ge - Is at least
|
|
70
|
+
* @property le - Is at most
|
|
71
|
+
* @property gt - Is more than
|
|
72
|
+
* @property lt - Is less than
|
|
73
|
+
* @property contains - Contains, for text
|
|
74
|
+
* @property startsWith - Starts with, for text
|
|
75
|
+
* @property missing - Is missing, for an optional field
|
|
76
|
+
* @property present - Has a value, for an optional field
|
|
77
|
+
* @property yes - Is yes
|
|
78
|
+
* @property no - Is no
|
|
79
|
+
* @property inYear - Is in a year, for a date
|
|
80
|
+
* @property inMonth - Is in a month ("2026-03"), for a date
|
|
81
|
+
* @property onOrAfter - Is on or after a day, for a date
|
|
82
|
+
* @property before - Is before a day, for a date
|
|
83
|
+
* @property lengthAtLeast - Has at least a number of items, for a list
|
|
84
|
+
* @property anyWhere - Has an item where an inner condition holds, for a list
|
|
85
|
+
*/
|
|
86
|
+
export const QueryComparisonType = VariantType({
|
|
87
|
+
eq: NullType,
|
|
88
|
+
ne: NullType,
|
|
89
|
+
ge: NullType,
|
|
90
|
+
le: NullType,
|
|
91
|
+
gt: NullType,
|
|
92
|
+
lt: NullType,
|
|
93
|
+
contains: NullType,
|
|
94
|
+
startsWith: NullType,
|
|
95
|
+
missing: NullType,
|
|
96
|
+
present: NullType,
|
|
97
|
+
yes: NullType,
|
|
98
|
+
no: NullType,
|
|
99
|
+
inYear: NullType,
|
|
100
|
+
inMonth: NullType,
|
|
101
|
+
onOrAfter: NullType,
|
|
102
|
+
before: NullType,
|
|
103
|
+
lengthAtLeast: NullType,
|
|
104
|
+
anyWhere: NullType,
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* A condition of a Keep rows where step: one test of a field, or a group of
|
|
108
|
+
* conditions with its own match.
|
|
109
|
+
*
|
|
110
|
+
* @property test - A field compared: `id` names it for the editing session;
|
|
111
|
+
* `field`, `cmp` and `value` are its slots, empty until chosen; `inner` is
|
|
112
|
+
* the condition on each item of a list (`anyWhere`); `whole` compares a
|
|
113
|
+
* variant as a whole value rather than its case, which the check refuses
|
|
114
|
+
* @property group - Conditions with their own match: `id` names it, `match`
|
|
115
|
+
* combines `conds`
|
|
116
|
+
*/
|
|
117
|
+
export const QueryConditionType = RecursiveType(condition => VariantType({
|
|
118
|
+
test: StructType({
|
|
119
|
+
id: StringType,
|
|
120
|
+
field: OptionType(StringType),
|
|
121
|
+
cmp: OptionType(QueryComparisonType),
|
|
122
|
+
value: OptionType(QueryStepValueType),
|
|
123
|
+
inner: OptionType(condition),
|
|
124
|
+
whole: BooleanType,
|
|
125
|
+
}),
|
|
126
|
+
group: StructType({
|
|
127
|
+
id: StringType,
|
|
128
|
+
match: QueryMatchType,
|
|
129
|
+
conds: ArrayType(condition),
|
|
130
|
+
}),
|
|
131
|
+
}));
|
|
132
|
+
// ============================================================================
|
|
133
|
+
// The parts of steps
|
|
134
|
+
// ============================================================================
|
|
135
|
+
/**
|
|
136
|
+
* What a Group and total step totals with.
|
|
137
|
+
*
|
|
138
|
+
* @property count - How many rows
|
|
139
|
+
* @property sum - Adds up a number
|
|
140
|
+
* @property mean - Averages a number
|
|
141
|
+
* @property min - The lowest
|
|
142
|
+
* @property max - The highest
|
|
143
|
+
* @property distinct - How many different values
|
|
144
|
+
*/
|
|
145
|
+
export const QueryAggregateFunctionType = VariantType({
|
|
146
|
+
count: NullType,
|
|
147
|
+
sum: NullType,
|
|
148
|
+
mean: NullType,
|
|
149
|
+
min: NullType,
|
|
150
|
+
max: NullType,
|
|
151
|
+
distinct: NullType,
|
|
152
|
+
});
|
|
153
|
+
/**
|
|
154
|
+
* One total of a Group and total step.
|
|
155
|
+
*
|
|
156
|
+
* @property id - Names it for the editing session
|
|
157
|
+
* @property fn - What it totals with
|
|
158
|
+
* @property field - The field it totals; `none` for a count, and until chosen
|
|
159
|
+
* @property as - The name of the field it makes. While it is the name the
|
|
160
|
+
* builder gives the total (`count`, the field's, `max_cost`), it follows the
|
|
161
|
+
* total and its field; the jq holds no more than the name, so that is all a
|
|
162
|
+
* total keeps.
|
|
163
|
+
*/
|
|
164
|
+
export const QueryAggregateType = StructType({
|
|
165
|
+
id: StringType,
|
|
166
|
+
fn: QueryAggregateFunctionType,
|
|
167
|
+
field: OptionType(StringType),
|
|
168
|
+
as: StringType,
|
|
169
|
+
});
|
|
170
|
+
/**
|
|
171
|
+
* What a Group and total step groups by.
|
|
172
|
+
*
|
|
173
|
+
* @property field - One group per value of a field
|
|
174
|
+
* @property all - All rows together, as one group
|
|
175
|
+
*/
|
|
176
|
+
export const QueryGroupByType = VariantType({
|
|
177
|
+
field: StringType,
|
|
178
|
+
all: NullType,
|
|
179
|
+
});
|
|
180
|
+
/**
|
|
181
|
+
* Which way a Sort step orders.
|
|
182
|
+
*
|
|
183
|
+
* @property asc - Lowest, earliest or A first
|
|
184
|
+
* @property desc - Highest, latest or Z first
|
|
185
|
+
*/
|
|
186
|
+
export const QuerySortDirectionType = VariantType({
|
|
187
|
+
asc: NullType,
|
|
188
|
+
desc: NullType,
|
|
189
|
+
});
|
|
190
|
+
/**
|
|
191
|
+
* The part a Take part of a date step takes.
|
|
192
|
+
*
|
|
193
|
+
* @property year - The year, a whole number
|
|
194
|
+
* @property month - The month, as text ("2026-03")
|
|
195
|
+
* @property weekday - The day of the week, as text ("Monday")
|
|
196
|
+
*/
|
|
197
|
+
export const QueryDatePartType = VariantType({
|
|
198
|
+
year: NullType,
|
|
199
|
+
month: NullType,
|
|
200
|
+
weekday: NullType,
|
|
201
|
+
});
|
|
202
|
+
/**
|
|
203
|
+
* One field a Show only fields step shows.
|
|
204
|
+
*
|
|
205
|
+
* @property id - Names it for the editing session
|
|
206
|
+
* @property field - The field shown; `none` until chosen
|
|
207
|
+
* @property as - The name it is shown under
|
|
208
|
+
*/
|
|
209
|
+
export const QueryPickFieldType = StructType({
|
|
210
|
+
id: StringType,
|
|
211
|
+
field: OptionType(StringType),
|
|
212
|
+
as: StringType,
|
|
213
|
+
});
|
|
214
|
+
// ============================================================================
|
|
215
|
+
// Steps
|
|
216
|
+
// ============================================================================
|
|
217
|
+
/**
|
|
218
|
+
* One step of a query. Each has an `id`, which names it for the editing
|
|
219
|
+
* session; a slot that is `none` is not chosen yet, and a step with an empty
|
|
220
|
+
* slot it needs is unfinished, and left out of the program.
|
|
221
|
+
*
|
|
222
|
+
* @property filter - Keep rows where: `conds`, combined by `match`
|
|
223
|
+
* @property lookup - Look up from another dataset: the bound `dataset` keyed
|
|
224
|
+
* by `key`, a field of the rows; `fields` are its values' fields brought in
|
|
225
|
+
* @property group - Group and total: `by` a field or all rows together, with
|
|
226
|
+
* `aggs` its totals
|
|
227
|
+
* @property sort - Sort by a `field` in a direction
|
|
228
|
+
* @property limit - Keep the first `n` rows
|
|
229
|
+
* @property count - Count the rows
|
|
230
|
+
* @property pick - Show only these `fields`, each under its name
|
|
231
|
+
* @property fill - Fill in missing values: where `field` is missing, use `value`
|
|
232
|
+
* @property drill - Open each list: one row per item of the list `field`
|
|
233
|
+
* @property datepart - Take part of a date `field`, as a field named `as`
|
|
234
|
+
* @property walk - List every part in the tree, through its list of parts `via`
|
|
235
|
+
* @property tabulate - Try the model over a range: the input `over` from
|
|
236
|
+
* `from` to `to` every `step`, the other inputs `fixed`, the result named `as`
|
|
237
|
+
* @property jq - A jq step: its `text`, checked but not shown as words
|
|
238
|
+
*/
|
|
239
|
+
export const QueryStepType = VariantType({
|
|
240
|
+
filter: StructType({
|
|
241
|
+
id: StringType,
|
|
242
|
+
match: QueryMatchType,
|
|
243
|
+
conds: ArrayType(QueryConditionType),
|
|
244
|
+
}),
|
|
245
|
+
lookup: StructType({
|
|
246
|
+
id: StringType,
|
|
247
|
+
dataset: OptionType(StringType),
|
|
248
|
+
key: OptionType(StringType),
|
|
249
|
+
fields: ArrayType(StringType),
|
|
250
|
+
}),
|
|
251
|
+
group: StructType({
|
|
252
|
+
id: StringType,
|
|
253
|
+
by: OptionType(QueryGroupByType),
|
|
254
|
+
aggs: ArrayType(QueryAggregateType),
|
|
255
|
+
}),
|
|
256
|
+
sort: StructType({
|
|
257
|
+
id: StringType,
|
|
258
|
+
field: OptionType(StringType),
|
|
259
|
+
dir: QuerySortDirectionType,
|
|
260
|
+
}),
|
|
261
|
+
limit: StructType({
|
|
262
|
+
id: StringType,
|
|
263
|
+
n: QueryStepInputType,
|
|
264
|
+
}),
|
|
265
|
+
count: StructType({
|
|
266
|
+
id: StringType,
|
|
267
|
+
}),
|
|
268
|
+
pick: StructType({
|
|
269
|
+
id: StringType,
|
|
270
|
+
fields: ArrayType(QueryPickFieldType),
|
|
271
|
+
}),
|
|
272
|
+
fill: StructType({
|
|
273
|
+
id: StringType,
|
|
274
|
+
field: OptionType(StringType),
|
|
275
|
+
value: OptionType(QueryStepValueType),
|
|
276
|
+
}),
|
|
277
|
+
drill: StructType({
|
|
278
|
+
id: StringType,
|
|
279
|
+
field: OptionType(StringType),
|
|
280
|
+
}),
|
|
281
|
+
datepart: StructType({
|
|
282
|
+
id: StringType,
|
|
283
|
+
field: OptionType(StringType),
|
|
284
|
+
part: QueryDatePartType,
|
|
285
|
+
as: StringType,
|
|
286
|
+
}),
|
|
287
|
+
walk: StructType({
|
|
288
|
+
id: StringType,
|
|
289
|
+
via: OptionType(StringType),
|
|
290
|
+
}),
|
|
291
|
+
tabulate: StructType({
|
|
292
|
+
id: StringType,
|
|
293
|
+
over: StringType,
|
|
294
|
+
from: QueryStepInputType,
|
|
295
|
+
to: QueryStepInputType,
|
|
296
|
+
step: QueryStepInputType,
|
|
297
|
+
fixed: DictType(StringType, QueryStepValueType),
|
|
298
|
+
as: StringType,
|
|
299
|
+
}),
|
|
300
|
+
jq: StructType({
|
|
301
|
+
id: StringType,
|
|
302
|
+
text: StringType,
|
|
303
|
+
}),
|
|
304
|
+
});
|
|
305
|
+
/**
|
|
306
|
+
* A query as steps: the data source it starts from — a field of the root,
|
|
307
|
+
* `orders` for `.orders` — and its steps, in order.
|
|
308
|
+
*
|
|
309
|
+
* @property source - The data source it starts from
|
|
310
|
+
* @property steps - Its steps
|
|
311
|
+
*/
|
|
312
|
+
export const QueryStepsType = StructType({
|
|
313
|
+
source: StringType,
|
|
314
|
+
steps: ArrayType(QueryStepType),
|
|
315
|
+
});
|
|
316
|
+
//# sourceMappingURL=steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../src/query/steps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACH,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,UAAU,EACV,WAAW,GACd,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAC1C,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,QAAQ;CACjB,CAAC,CAAC;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAC1C,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,UAAU;CACnB,CAAC,CAAC;AAKH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;IACtC,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;CAChB,CAAC,CAAC;AAKH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;IAC3C,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,QAAQ;IACb,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,QAAQ;IACvB,QAAQ,EAAE,QAAQ;CACrB,CAAC,CAAC;AAKH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC;IACrE,IAAI,EAAE,UAAU,CAAC;QACb,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;QAC7B,GAAG,EAAE,UAAU,CAAC,mBAAmB,CAAC;QACpC,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC;QACrC,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC;QAC5B,KAAK,EAAE,WAAW;KACrB,CAAC;IACF,KAAK,EAAE,UAAU,CAAC;QACd,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;KAC9B,CAAC;CACL,CAAC,CAAC,CAAC;AAKJ,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;IAClD,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,QAAQ,EAAE,QAAQ;CACrB,CAAC,CAAC;AAKH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IACzC,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,0BAA0B;IAC9B,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;IAC7B,EAAE,EAAE,UAAU;CACjB,CAAC,CAAC;AAKH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;IACxC,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,QAAQ;CAChB,CAAC,CAAC;AAKH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;IAC9C,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,QAAQ;CACjB,CAAC,CAAC;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACzC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,QAAQ;CACpB,CAAC,CAAC;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IACzC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;IAC7B,EAAE,EAAE,UAAU;CACjB,CAAC,CAAC;AAKH,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;IACrC,MAAM,EAAE,UAAU,CAAC;QACf,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC;KACvC,CAAC;IACF,MAAM,EAAE,UAAU,CAAC;QACf,EAAE,EAAE,UAAU;QACd,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC;QAC/B,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC;QAC3B,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC;KAChC,CAAC;IACF,KAAK,EAAE,UAAU,CAAC;QACd,EAAE,EAAE,UAAU;QACd,EAAE,EAAE,UAAU,CAAC,gBAAgB,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,kBAAkB,CAAC;KACtC,CAAC;IACF,IAAI,EAAE,UAAU,CAAC;QACb,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;QAC7B,GAAG,EAAE,sBAAsB;KAC9B,CAAC;IACF,KAAK,EAAE,UAAU,CAAC;QACd,EAAE,EAAE,UAAU;QACd,CAAC,EAAE,kBAAkB;KACxB,CAAC;IACF,KAAK,EAAE,UAAU,CAAC;QACd,EAAE,EAAE,UAAU;KACjB,CAAC;IACF,IAAI,EAAE,UAAU,CAAC;QACb,EAAE,EAAE,UAAU;QACd,MAAM,EAAE,SAAS,CAAC,kBAAkB,CAAC;KACxC,CAAC;IACF,IAAI,EAAE,UAAU,CAAC;QACb,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;QAC7B,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC;KACxC,CAAC;IACF,KAAK,EAAE,UAAU,CAAC;QACd,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;KAChC,CAAC;IACF,QAAQ,EAAE,UAAU,CAAC;QACjB,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;QAC7B,IAAI,EAAE,iBAAiB;QACvB,EAAE,EAAE,UAAU;KACjB,CAAC;IACF,IAAI,EAAE,UAAU,CAAC;QACb,EAAE,EAAE,UAAU;QACd,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE,UAAU,CAAC;QACjB,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,kBAAkB;QACxB,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;QAC/C,EAAE,EAAE,UAAU;KACjB,CAAC;IACF,EAAE,EAAE,UAAU,CAAC;QACX,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;KACnB,CAAC;CACL,CAAC,CAAC;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACrC,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC;CAClC,CAAC,CAAC"}
|