litedbmodel 2.0.2 → 2.1.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/decorators.d.ts.map +1 -1
- package/dist/decorators.js +44 -24
- package/dist/decorators.js.map +1 -1
- package/dist/drivers/mysql.d.ts.map +1 -1
- package/dist/drivers/mysql.js +6 -0
- package/dist/drivers/mysql.js.map +1 -1
- package/dist/drivers/postgres.d.ts.map +1 -1
- package/dist/drivers/postgres.js +7 -0
- package/dist/drivers/postgres.js.map +1 -1
- package/dist/drivers/sqlite.d.ts +2 -0
- package/dist/drivers/sqlite.d.ts.map +1 -1
- package/dist/drivers/sqlite.js +37 -2
- package/dist/drivers/sqlite.js.map +1 -1
- package/dist/scp/authoring.d.ts +66 -3
- package/dist/scp/authoring.d.ts.map +1 -1
- package/dist/scp/authoring.js +194 -5
- package/dist/scp/authoring.js.map +1 -1
- package/dist/scp/catalog.d.ts +2 -1
- package/dist/scp/catalog.d.ts.map +1 -1
- package/dist/scp/catalog.js +12 -1
- package/dist/scp/catalog.js.map +1 -1
- package/dist/scp/codegen.d.ts +43 -31
- package/dist/scp/codegen.d.ts.map +1 -1
- package/dist/scp/codegen.js +279 -95
- package/dist/scp/codegen.js.map +1 -1
- package/dist/scp/coltype.d.ts +83 -0
- package/dist/scp/coltype.d.ts.map +1 -1
- package/dist/scp/coltype.js +220 -0
- package/dist/scp/coltype.js.map +1 -1
- package/dist/scp/guard.d.ts +1 -1
- package/dist/scp/guard.d.ts.map +1 -1
- package/dist/scp/guard.js +6 -0
- package/dist/scp/guard.js.map +1 -1
- package/dist/scp/index.cjs +7149 -9379
- package/dist/scp/index.d.ts +7 -6
- package/dist/scp/index.d.ts.map +1 -1
- package/dist/scp/index.js +21 -6
- package/dist/scp/index.js.map +1 -1
- package/dist/scp/index.mjs +729 -178
- package/dist/scp/makesql/authoring-compile.d.ts.map +1 -1
- package/dist/scp/makesql/authoring-compile.js +11 -0
- package/dist/scp/makesql/authoring-compile.js.map +1 -1
- package/dist/scp/makesql/index.d.ts +2 -3
- package/dist/scp/makesql/index.d.ts.map +1 -1
- package/dist/scp/makesql/index.js +6 -6
- package/dist/scp/makesql/index.js.map +1 -1
- package/dist/scp/makesql/json-batch.d.ts.map +1 -1
- package/dist/scp/makesql/json-batch.js +6 -1
- package/dist/scp/makesql/json-batch.js.map +1 -1
- package/dist/scp/makesql/outtype.d.ts +61 -6
- package/dist/scp/makesql/outtype.d.ts.map +1 -1
- package/dist/scp/makesql/outtype.js +164 -33
- package/dist/scp/makesql/outtype.js.map +1 -1
- package/dist/scp/makesql/pool-executor.d.ts +70 -0
- package/dist/scp/makesql/pool-executor.d.ts.map +1 -1
- package/dist/scp/makesql/pool-executor.js +73 -5
- package/dist/scp/makesql/pool-executor.js.map +1 -1
- package/dist/scp/makesql/static-bundle.d.ts +39 -30
- package/dist/scp/makesql/static-bundle.d.ts.map +1 -1
- package/dist/scp/makesql/static-bundle.js +269 -138
- package/dist/scp/makesql/static-bundle.js.map +1 -1
- package/dist/scp/makesql/writeouttype.d.ts +5 -6
- package/dist/scp/makesql/writeouttype.d.ts.map +1 -1
- package/dist/scp/makesql/writeouttype.js +5 -6
- package/dist/scp/makesql/writeouttype.js.map +1 -1
- package/dist/scp/relation.d.ts +15 -1
- package/dist/scp/relation.d.ts.map +1 -1
- package/dist/scp/relation.js +61 -2
- package/dist/scp/relation.js.map +1 -1
- package/dist/scp/runtime.d.ts +6 -5
- package/dist/scp/runtime.d.ts.map +1 -1
- package/dist/scp/runtime.js +27 -5
- package/dist/scp/runtime.js.map +1 -1
- package/docs/BENCHMARK.md +58 -56
- package/docs/benchmark-chart.svg +166 -166
- package/package.json +8 -2
- package/dist/scp/makesql/ir.d.ts +0 -42
- package/dist/scp/makesql/ir.d.ts.map +0 -1
- package/dist/scp/makesql/ir.js +0 -66
- package/dist/scp/makesql/ir.js.map +0 -1
package/dist/scp/codegen.js
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* concrete `HandlerNR<Comp>`/`InNR<Comp>`/`PortsNR<Comp><node>`/`RawRowNR<Comp><node>` structs,
|
|
14
14
|
* ZERO boxed `Value`/`RawValue`, ZERO IR baked into the module), the CODEGEN-ONLY lowering
|
|
15
15
|
* below ({@link lowerReadGraphForTypedNative}) makes the read's shape structurally ELIGIBLE
|
|
16
|
-
* (
|
|
17
|
-
* component's `inputPorts` from the schema) before handing it to bc. For a WRITE bundle, or a
|
|
16
|
+
* (derives each real Select-node's referenced heads from its statements → individual scalar ref
|
|
17
|
+
* ports + types the component's `inputPorts` from the schema) before handing it to bc. For a WRITE bundle, or a
|
|
18
18
|
* READ shape typed-native does not (yet) cover, codegen uses bc's existing de-interpreted
|
|
19
19
|
* STRAIGHT-LINE endpoint (`<lang>-straightline`, bc#75) — see {@link typedEmitterFor}.
|
|
20
20
|
* 2. **SQL catalog companion** — the pure-JSON STATIC makeSQL catalog (per-node statement
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
*
|
|
26
26
|
* This lowering exists SOLELY for the codegen emitter call — it builds a NEW, separate
|
|
27
27
|
* `ComponentGraphIR` from the bundle's `readGraph`; it never mutates `SqlBundle`/`ReadGraph` and
|
|
28
|
-
* never touches the shared `readGraph`/`executeReadGraph` the
|
|
29
|
-
* frozen conformance corpus) depend on. Those keep consuming the
|
|
30
|
-
*
|
|
28
|
+
* never touches the shared `readGraph`/`executeReadGraph` the native exec surface (and the
|
|
29
|
+
* frozen conformance corpus) depend on. Those keep consuming the REAL Select-node
|
|
30
|
+
* `readGraph.ir`, completely unaffected by anything in this file.
|
|
31
31
|
*
|
|
32
32
|
* ## Behavior-identical to the thin-runtime (mode-2), by construction
|
|
33
33
|
*
|
|
@@ -41,9 +41,16 @@
|
|
|
41
41
|
* ## No literal-bake / no boxed fallback
|
|
42
42
|
*
|
|
43
43
|
* typed-native fails CLOSED on an uncovered shape (a `map`/`cond` relation kind it does not cover,
|
|
44
|
-
* or an input head that cannot lower to a native
|
|
45
|
-
*
|
|
46
|
-
*
|
|
44
|
+
* or an input head that cannot lower to a native port). Such a shape is NOT silently regenerated on
|
|
45
|
+
* the boxed `-typed`/`-typed-raw` emitter — it THROWS, naming the exact gap, so it can be tracked as
|
|
46
|
+
* a bc coverage gap rather than masked.
|
|
47
|
+
*
|
|
48
|
+
* IN-list / array-bound WHERE heads (the `whereIn` `{__jsonArray:{ref:[head]},dialect}` param) are
|
|
49
|
+
* now COVERED via bc#110 (native array/list port for a componentRef input port): the lowering
|
|
50
|
+
* resolves the IN-list column's element scalar and emits a native ARRAY input port
|
|
51
|
+
* (`{type:'array', elemType}` → `Vec<ElemT>`/`[]ElemT`), so `complexWhere`/`inList` reach the
|
|
52
|
+
* zero-boxing native hot path (no serde_json/encoding-json, no boxed `Value`). They no longer
|
|
53
|
+
* fail closed as a bc#86/coverage gap.
|
|
47
54
|
*/
|
|
48
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
56
|
exports.TypedNativeCoverageError = exports.CODEGEN_EMITTER = exports.CODEGEN_LANGUAGES = void 0;
|
|
@@ -55,7 +62,6 @@ exports.generateCodegenArtifact = generateCodegenArtifact;
|
|
|
55
62
|
exports.codegenExecuteBundleForTest = codegenExecuteBundleForTest;
|
|
56
63
|
const behavior_contracts_1 = require("behavior-contracts");
|
|
57
64
|
const runtime_1 = require("./runtime");
|
|
58
|
-
const ir_1 = require("./makesql/ir");
|
|
59
65
|
const coltype_1 = require("./coltype");
|
|
60
66
|
/**
|
|
61
67
|
* The languages litedbmodel mode-3 codegen supports — exactly the set bc's shared generator
|
|
@@ -95,29 +101,23 @@ exports.CODEGEN_EMITTER = {
|
|
|
95
101
|
rust: 'rust-typed-native',
|
|
96
102
|
};
|
|
97
103
|
/**
|
|
98
|
-
* The portable {@link ComponentGraphIR} view of a §8 bundle:
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* this for a READ
|
|
103
|
-
* this
|
|
104
|
-
*
|
|
104
|
+
* The portable {@link ComponentGraphIR} view of a §8 READ bundle: `compileBehaviors`' real-node
|
|
105
|
+
* read-graph IR (the de-surrogated `Select`/`Count`/map nodes; #12) — the SAME IR the native exec
|
|
106
|
+
* surface (`executeReadGraph`) walks (via `bundle.readGraph.ir` directly). litedbmodel constructs NO
|
|
107
|
+
* `ComponentGraphIR` literal here; it returns the compiler's own output. {@link generateCodegenArtifact}
|
|
108
|
+
* does NOT use this for a typed-native READ target (that uses the codegen-only lowered form,
|
|
109
|
+
* {@link lowerReadGraphForTypedNative}); this is the portable IR for a boxed READ endpoint / fingerprint.
|
|
110
|
+
*
|
|
111
|
+
* WRITE bundles have NO portable component-graph IR (they carry a single compiled `statement`, not a
|
|
112
|
+
* component graph — and are NOT codegen-module cases: {@link generateCodegenArtifact} rejects them).
|
|
113
|
+
* There is therefore no hand-built `makeSQL` write surrogate anymore (#12) — a write bundle throws.
|
|
105
114
|
*/
|
|
106
115
|
function bundleToPortableIR(bundle) {
|
|
107
116
|
if (bundle.readGraph !== undefined)
|
|
108
117
|
return bundle.readGraph.ir;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
// `outputType` — exactly how the read graph annotates its surrogate IR. Without it, bc's typed
|
|
113
|
-
// emitters would hard-fail ("nothing to de-box"), which is the correct fail-closed signal; a
|
|
114
|
-
// resolver-less write bundle (no `outputType`) stays un-annotated (interpret/boxed only, as before).
|
|
115
|
-
if (bundle.outputType === undefined)
|
|
116
|
-
return ir;
|
|
117
|
-
const c = ir.components[0];
|
|
118
|
-
const body = c.body.map((n, i) => (i === 0 ? { ...n, outType: bundle.outputType } : n));
|
|
119
|
-
const component = { ...c, body, outputType: bundle.outputType };
|
|
120
|
-
return { ...ir, components: [component] };
|
|
118
|
+
throw new Error(`litedbmodel codegen: bundle '${bundle.name}' has no readGraph — a WRITE bundle carries a single ` +
|
|
119
|
+
`compiled makeSQL statement, not a portable component-graph IR, and is not a codegen-module case ` +
|
|
120
|
+
`(#12: the hand-built makeSQL write surrogate IR is eliminated; writes ride the write/tx exec path).`);
|
|
121
121
|
}
|
|
122
122
|
/** The STATIC makeSQL execution catalog carried alongside the generated module. */
|
|
123
123
|
function companionOf(bundle) {
|
|
@@ -132,26 +132,22 @@ function companionOf(bundle) {
|
|
|
132
132
|
return bundle.transaction === undefined ? base : { ...base, transaction: bundle.transaction };
|
|
133
133
|
}
|
|
134
134
|
// ═══════════════════════════════════════════════════════════════════════════════════════════
|
|
135
|
-
// #60 milestone 1 — CODEGEN-ONLY typed-native lowering.
|
|
135
|
+
// #60 milestone 1 — CODEGEN-ONLY typed-native lowering (#12: from the real-node read graph).
|
|
136
136
|
//
|
|
137
137
|
// bc's typed-native coverage predicate (`coverageRejectReason`, bc#86/#89) requires EVERY
|
|
138
|
-
// componentRef port to be STATICALLY resolvable to a native scalar/string-array/number-literal
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
// lets each port lower to a CONCRETE Rust/Go field instead of falling through to `Value`.
|
|
138
|
+
// componentRef port to be STATICALLY resolvable to a native scalar/string-array/number-literal.
|
|
139
|
+
// The de-surrogated read graph's real `Select`/`Count`/map nodes carry boxed authoring ports
|
|
140
|
+
// (`where:{arr:[…]}`, `table`, `select`) that are not that shape, so bc would hard-fail on them.
|
|
141
|
+
// This lowering rebuilds a NEW, CODEGEN-ONLY component whose body nodes carry ONLY individual
|
|
142
|
+
// native-scalar `{ref:[head]}` ports (one per input head the node's compiled statements bind,
|
|
143
|
+
// derived from `statementsById`) + typed `inputPorts` — the shape bc's typed-native emitter needs.
|
|
145
144
|
//
|
|
146
145
|
// This is a NEW, throwaway `ComponentGraphIR` built FROM the bundle's `readGraph` fields
|
|
147
|
-
// (`ir
|
|
148
|
-
// here) — it is never written back onto `SqlBundle`/`ReadGraph`, never serialized, and
|
|
149
|
-
//
|
|
150
|
-
//
|
|
146
|
+
// (`ir` topology + `statementsById`, both already computed by the EXISTING `compileReadGraph` —
|
|
147
|
+
// untouched here) — it is never written back onto `SqlBundle`/`ReadGraph`, never serialized, and
|
|
148
|
+
// the native exec surface (`executeReadGraph`) never sees it (it walks the real-node `readGraph.ir`
|
|
149
|
+
// directly). Purely a generation-time input to `generateModule`.
|
|
151
150
|
// ═══════════════════════════════════════════════════════════════════════════════════════════
|
|
152
|
-
/** The makeSQL surrogate node's synthetic port name (mirrors `static-bundle.ts`'s private `SCOPE_PORT`
|
|
153
|
-
* — duplicated as a literal here rather than exported, keeping this a codegen-only concern). */
|
|
154
|
-
const SCOPE_PORT = '__scope';
|
|
155
151
|
/** A head could not be typed for typed-native codegen — the read is NOT typed-native-coverable. */
|
|
156
152
|
class TypedNativeCoverageError extends Error {
|
|
157
153
|
component;
|
|
@@ -179,6 +175,12 @@ const WHERE_FRAGMENT_COLUMN = /^([A-Za-z_][A-Za-z0-9_]*)\s+(?:=|<>|<=|>=|<|>|LIK
|
|
|
179
175
|
* ` FROM <table>[ …]`; a JOIN/CTE-shaped head is out of scope for this narrow codegen deriver and
|
|
180
176
|
* reported as unresolvable rather than mis-parsed). */
|
|
181
177
|
const SELECT_FROM_TABLE = /\bFROM\s+([A-Za-z_][A-Za-z0-9_]*)\b/i;
|
|
178
|
+
/** Extract the LHS column of an IN-list / array-bound WHERE fragment — the closed set of texts
|
|
179
|
+
* {@link inListFragment} emits across dialects, all of the form `<col> IN (…)` (sqlite `json_each`,
|
|
180
|
+
* mysql `JSON_TABLE`) or `<col> = ANY(?)` (postgres). The single array param binds a `?` inside; the
|
|
181
|
+
* column names the type to resolve the ELEMENT scalar from (spec §4.1 schema SoT). Any other shape
|
|
182
|
+
* returns undefined (fail-closed). */
|
|
183
|
+
const IN_LIST_COLUMN = /^([A-Za-z_][A-Za-z0-9_]*)\s+(?:IN\s*\(|=\s*ANY\s*\()/i;
|
|
182
184
|
/**
|
|
183
185
|
* Derive each input head's bc scalar type from a read node's compiled {@link StaticStatement}s
|
|
184
186
|
* (spec §4.1 schema SoT), for bc's typed-native codegen (#60 m1). Works from the ALREADY-COMPILED
|
|
@@ -186,13 +188,25 @@ const SELECT_FROM_TABLE = /\bFROM\s+([A-Za-z_][A-Za-z0-9_]*)\b/i;
|
|
|
186
188
|
* instead of re-walking the authored component — so this lowering needs NO extra input beyond
|
|
187
189
|
* what `SqlBundle`/`ReadGraph` already expose (no change to `compileReadGraph`/`ReadGraph`).
|
|
188
190
|
*
|
|
189
|
-
* Returns
|
|
190
|
-
* bare single-segment `{ref:[head]}`
|
|
191
|
-
*
|
|
192
|
-
* `
|
|
191
|
+
* Returns three sets:
|
|
192
|
+
* - `byHead` — heads bound by a bare single-segment `{ref:[head]}` scalar param, typed to their
|
|
193
|
+
* column's bc scalar (`int`/`float`/`string`/`bool`).
|
|
194
|
+
* - `arrayHeads` — heads bound by an IN-list / array param (`whereIn`'s
|
|
195
|
+
* `{__jsonArray:{ref:[head]},dialect}`), typed to their column's ELEMENT scalar. bc#110 gives
|
|
196
|
+
* typed-native a native array port (`Vec<ElemT>`/`[]ElemT`) for such a head, so it is now
|
|
197
|
+
* COVERED (no longer fail-closed) — the caller emits it as a native array input port.
|
|
198
|
+
* - `unresolved` — heads whose owning fragment's SQL text isn't a shape this deriver covers (the
|
|
199
|
+
* closed `<col> <op> ?` scalar shape or the `<col> IN (…)`/`<col> = ANY(?)` array shape). A
|
|
200
|
+
* non-empty `unresolved` means the read is NOT typed-native-coverable (fail-closed at the caller).
|
|
201
|
+
*
|
|
202
|
+
* `elementVar` (map nodes only): the map's `as` binding (`$e0`). A param whose ref's FIRST segment
|
|
203
|
+
* is the element var (`{ref:['$e0','author_id']}`) is a map-ELEMENT field access, NOT a component
|
|
204
|
+
* input head — bc types it from the map's `over` element struct (the prior node's row), so this
|
|
205
|
+
* deriver neither types nor rejects it (it is fully covered by bc's `coveredMapNode` element typing).
|
|
193
206
|
*/
|
|
194
|
-
function deriveHeadTypesFromStatements(statements, resolveColumnType) {
|
|
207
|
+
function deriveHeadTypesFromStatements(statements, resolveColumnType, elementVar) {
|
|
195
208
|
const byHead = new Map();
|
|
209
|
+
const arrayHeads = new Map();
|
|
196
210
|
const unresolved = new Map();
|
|
197
211
|
// The head statement (`SELECT … FROM <table>`) — always statements[0] (compileSelectNode always
|
|
198
212
|
// pushes it first); its table name resolves every WHERE fragment's column type.
|
|
@@ -200,14 +214,64 @@ function deriveHeadTypesFromStatements(statements, resolveColumnType) {
|
|
|
200
214
|
const tableMatch = head === undefined ? null : SELECT_FROM_TABLE.exec(head.sql);
|
|
201
215
|
const table = tableMatch?.[1];
|
|
202
216
|
for (const stmt of statements) {
|
|
203
|
-
|
|
217
|
+
// The LIMIT clause (` LIMIT ?`) is NOT a whereFragment — its param is `coalesce(refOpt(limit), N)`
|
|
218
|
+
// (optional head + a static default). bc's typed-native emitter binds `limit` as a native scalar
|
|
219
|
+
// port (its `portIsStatic` accepts the bare ref + number-literal default), so type the head from
|
|
220
|
+
// the schema-less LIMIT contract: `limit`-family heads are always an integer row count. The
|
|
221
|
+
// element-var guard applies here too (a map child never has a LIMIT-bound element ref today, but
|
|
222
|
+
// stay uniform). Anything OTHER than the closed `coalesce([refOpt([head]), <int>])` shape is left
|
|
223
|
+
// untyped here (the surrogate-scope reconciliation below fail-closes on an un-typed referenced head).
|
|
224
|
+
if (stmt.whereFragment !== true) {
|
|
225
|
+
for (const param of stmt.params) {
|
|
226
|
+
const lh = limitHeadNameOf(param);
|
|
227
|
+
if (lh === undefined)
|
|
228
|
+
continue;
|
|
229
|
+
if (elementVar !== undefined && lh === elementVar)
|
|
230
|
+
continue;
|
|
231
|
+
const prior = byHead.get(lh);
|
|
232
|
+
if (prior !== undefined && prior !== 'int') {
|
|
233
|
+
unresolved.set(lh, `input head '${lh}' resolves to conflicting scalar types ('${prior}' vs 'int' from a LIMIT clause) across statements`);
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
byHead.set(lh, 'int');
|
|
237
|
+
}
|
|
204
238
|
continue;
|
|
239
|
+
}
|
|
205
240
|
for (const param of stmt.params) {
|
|
206
241
|
const path = refPathOf(param);
|
|
242
|
+
// A map-ELEMENT field access (`{ref:['$e0','author_id']}`, first segment = the map `as` var) is
|
|
243
|
+
// NOT a component input head — bc types it from the map's `over` element struct. Neither type
|
|
244
|
+
// nor reject it here (fully covered by bc's `coveredMapNode` element-field lowering).
|
|
245
|
+
if (path !== undefined && elementVar !== undefined && path[0] === elementVar)
|
|
246
|
+
continue;
|
|
207
247
|
if (path === undefined || path.length !== 1) {
|
|
208
|
-
//
|
|
209
|
-
//
|
|
210
|
-
//
|
|
248
|
+
// An IN-list / array-bound WHERE head — `whereIn`'s `{__jsonArray:{ref:[head]},dialect}`
|
|
249
|
+
// param (single-array param, one `?` inside the `IN (…)`/`= ANY(?)` subquery). bc#110 gives
|
|
250
|
+
// typed-native a native ARRAY port for this shape (`Vec<ElemT>`/`[]ElemT`), so resolve the
|
|
251
|
+
// column's ELEMENT scalar (spec §4.1 SoT) and record it as an array head — no longer
|
|
252
|
+
// fail-closed. Any other non-scalar/nested-literal param stays unresolved (fail-closed).
|
|
253
|
+
const arrHead = arrayHeadNameOf(param);
|
|
254
|
+
if (arrHead !== undefined) {
|
|
255
|
+
if (table === undefined) {
|
|
256
|
+
unresolved.set(arrHead, `input head '${arrHead}': could not resolve the owning table from the SELECT head SQL ('${head?.sql ?? '<none>'}')`);
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
const cm = IN_LIST_COLUMN.exec(stmt.sql.trim());
|
|
260
|
+
if (cm === null) {
|
|
261
|
+
unresolved.set(arrHead, `input head '${arrHead}': IN-list WHERE fragment SQL '${stmt.sql}' is not the closed '<col> IN (…)'/'<col> = ANY(?)' shape this codegen-only deriver covers`);
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
const elemType = (0, coltype_1.sqlTypeToBcScalar)(resolveColumnType(table, cm[1]));
|
|
265
|
+
const priorElem = arrayHeads.get(arrHead);
|
|
266
|
+
if (priorElem !== undefined && priorElem !== elemType) {
|
|
267
|
+
unresolved.set(arrHead, `input head '${arrHead}' resolves to conflicting array element scalar types ('${priorElem}' vs '${elemType}') across statements`);
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
arrayHeads.set(arrHead, elemType);
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
// Not a bare single-segment ref and not a recognized array head (e.g. a nested literal): if
|
|
274
|
+
// it names a head at all, surface it; otherwise it simply isn't head-typable here.
|
|
211
275
|
const named = headNameOf(param);
|
|
212
276
|
if (named !== undefined) {
|
|
213
277
|
unresolved.set(named, `input head '${named}' is bound by a non-scalar param shape (${JSON.stringify(param)}) — bc's ` +
|
|
@@ -236,7 +300,14 @@ function deriveHeadTypesFromStatements(statements, resolveColumnType) {
|
|
|
236
300
|
byHead.set(headName, scalar);
|
|
237
301
|
}
|
|
238
302
|
}
|
|
239
|
-
|
|
303
|
+
// A head bound BOTH as a scalar and as an array across fragments is not a coherent native port —
|
|
304
|
+
// fail-closed rather than silently pick one (never occurs for the covered shapes, defensive).
|
|
305
|
+
for (const head of arrayHeads.keys()) {
|
|
306
|
+
if (byHead.has(head)) {
|
|
307
|
+
unresolved.set(head, `input head '${head}' is bound both as a scalar and as an array param — no single native port type`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return { byHead, arrayHeads, unresolved };
|
|
240
311
|
}
|
|
241
312
|
/** A statement param's bare ref path (`{ref:[…]}`/`{refOpt:[…]}`), or undefined if it isn't one. */
|
|
242
313
|
function refPathOf(param) {
|
|
@@ -262,14 +333,76 @@ function headNameOf(param) {
|
|
|
262
333
|
}
|
|
263
334
|
return undefined;
|
|
264
335
|
}
|
|
336
|
+
/** The distinct map-ELEMENT field names a node's statements bind via `{ref:[elementVar, field]}`
|
|
337
|
+
* (first-seen order). These are the map child's element-field ports (`$e0.author_id`): bc's
|
|
338
|
+
* typed-native map lowering types each from the `over` element struct's field. Only single-field
|
|
339
|
+
* accesses (`[elementVar, field]`, length 2) are collected — a deeper element path is not a covered
|
|
340
|
+
* native port here (fail-closed downstream if one appears). */
|
|
341
|
+
function elementFieldRefs(statements, elementVar) {
|
|
342
|
+
const out = [];
|
|
343
|
+
const seen = new Set();
|
|
344
|
+
for (const stmt of statements) {
|
|
345
|
+
for (const param of stmt.params) {
|
|
346
|
+
const path = refPathOf(param);
|
|
347
|
+
if (path === undefined || path.length !== 2 || path[0] !== elementVar)
|
|
348
|
+
continue;
|
|
349
|
+
const field = path[1];
|
|
350
|
+
if (!seen.has(field)) {
|
|
351
|
+
seen.add(field);
|
|
352
|
+
out.push(field);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return out;
|
|
357
|
+
}
|
|
358
|
+
/** The head a LIMIT param (`coalesce([{refOpt:[head]}, <int-literal>])`) binds — the closed shape
|
|
359
|
+
* `compileSelectNode` emits for an optional `limit` with a static default (`coalesce(opt($.limit), N)`).
|
|
360
|
+
* Returns the head name for that exact shape, else undefined (any other shape is not a LIMIT head this
|
|
361
|
+
* deriver types). bc's typed-native emitter binds it as a native scalar port (bare ref + number literal
|
|
362
|
+
* default are both `portIsStatic`). */
|
|
363
|
+
function limitHeadNameOf(param) {
|
|
364
|
+
if (param === null || typeof param !== 'object' || Array.isArray(param))
|
|
365
|
+
return undefined;
|
|
366
|
+
const obj = param;
|
|
367
|
+
const args = obj.coalesce;
|
|
368
|
+
if (!Array.isArray(args) || args.length !== 2)
|
|
369
|
+
return undefined;
|
|
370
|
+
const [refPart, dflt] = args;
|
|
371
|
+
// The default must be a static integer literal (`coalesce(opt($.limit), 20)`).
|
|
372
|
+
if (typeof dflt !== 'number' || !Number.isInteger(dflt))
|
|
373
|
+
return undefined;
|
|
374
|
+
if (refPart === null || typeof refPart !== 'object' || Array.isArray(refPart))
|
|
375
|
+
return undefined;
|
|
376
|
+
const rp = refPart;
|
|
377
|
+
const keys = Object.keys(rp);
|
|
378
|
+
if (keys.length !== 1 || (keys[0] !== 'ref' && keys[0] !== 'refOpt'))
|
|
379
|
+
return undefined;
|
|
380
|
+
const path = rp[keys[0]];
|
|
381
|
+
if (!Array.isArray(path) || path.length !== 1 || typeof path[0] !== 'string')
|
|
382
|
+
return undefined;
|
|
383
|
+
return path[0];
|
|
384
|
+
}
|
|
385
|
+
/** The head an IN-list / array param (`{__jsonArray:{ref:[head]},dialect}`) binds — ONLY the covered
|
|
386
|
+
* single-segment `{ref:[head]}` inner shape (bc#110's native array port requires a single-segment,
|
|
387
|
+
* non-opt ref). A multi-segment / opt / non-ref inner is NOT this covered array shape → undefined
|
|
388
|
+
* (the caller then treats it as an unresolved non-scalar param, fail-closed). */
|
|
389
|
+
function arrayHeadNameOf(param) {
|
|
390
|
+
if (param === null || typeof param !== 'object' || Array.isArray(param))
|
|
391
|
+
return undefined;
|
|
392
|
+
const obj = param;
|
|
393
|
+
if (!('__jsonArray' in obj))
|
|
394
|
+
return undefined;
|
|
395
|
+
const inner = refPathOf(obj.__jsonArray);
|
|
396
|
+
return inner !== undefined && inner.length === 1 ? inner[0] : undefined;
|
|
397
|
+
}
|
|
265
398
|
/**
|
|
266
|
-
* Lower a read bundle's
|
|
267
|
-
* typed-native endpoint (#60 milestone 1):
|
|
268
|
-
* individual scalar `{ref:[head]}` ports,
|
|
269
|
-
* (via {@link deriveHeadTypesFromStatements}). Throws
|
|
270
|
-
* referenced head cannot be natively typed (e.g. an IN-list's
|
|
271
|
-
* port, NO fallback. Does NOT mutate `bundle`/`bundle.readGraph`
|
|
272
|
-
*
|
|
399
|
+
* Lower a read bundle's REAL Select-node `ComponentGraphIR` into a NEW, CODEGEN-ONLY IR eligible
|
|
400
|
+
* for bc's typed-native endpoint (#60 milestone 1): derive each node's referenced heads from its
|
|
401
|
+
* `statementsById` fragments and emit individual native-scalar `{ref:[head]}` ports, typing the
|
|
402
|
+
* component's `inputPorts` from the schema (via {@link deriveHeadTypesFromStatements}). Throws
|
|
403
|
+
* {@link TypedNativeCoverageError} if any referenced head cannot be natively typed (e.g. an IN-list's
|
|
404
|
+
* array head) — NO silent `unknown` port, NO fallback. Does NOT mutate `bundle`/`bundle.readGraph`
|
|
405
|
+
* (a fresh IR object is returned); the native `executeReadGraph` keeps consuming the real `readGraph.ir`.
|
|
273
406
|
*
|
|
274
407
|
* Scope: bc's typed-native predicate itself still governs `map`/`cond`/relationKind/policy
|
|
275
408
|
* coverage (this lowering does not special-case those — `generateModule` fails closed on them with
|
|
@@ -280,21 +413,22 @@ function lowerReadGraphForTypedNative(readGraph, resolveColumnType) {
|
|
|
280
413
|
const reasons = [];
|
|
281
414
|
const components = ir.components.map((c) => {
|
|
282
415
|
const inputPortTypes = new Map();
|
|
416
|
+
// IN-list / array-bound heads (bc#110): the head's native ELEMENT scalar (the port lowers to
|
|
417
|
+
// `Vec<ElemT>`/`[]ElemT`, fed natively — NO json.Marshal/serde_json on the hot path).
|
|
418
|
+
const inputPortElemTypes = new Map();
|
|
283
419
|
const body = c.body.map((n) => {
|
|
284
420
|
if ('cond' in n)
|
|
285
421
|
return n;
|
|
286
422
|
const isMapNode = 'map' in n;
|
|
287
|
-
const ref = isMapNode ? n.map : n;
|
|
288
|
-
const scopeVal = ref.ports[SCOPE_PORT];
|
|
289
|
-
if (scopeVal === undefined || typeof scopeVal !== 'object' || scopeVal === null || !('obj' in scopeVal)) {
|
|
290
|
-
// Not the makeSQL surrogate shape this lowering targets (defensive — every read-graph body
|
|
291
|
-
// node IS this shape by construction) — leave the node untouched; bc's own coverage check
|
|
292
|
-
// will report it if it is genuinely uncovered.
|
|
293
|
-
return n;
|
|
294
|
-
}
|
|
295
|
-
const obj = scopeVal.obj;
|
|
296
423
|
const stmts = readGraph.statementsById[n.id] ?? [];
|
|
297
|
-
|
|
424
|
+
// A map node binds an ELEMENT var (`as: '$e0'`) — its child statements reference the mapped
|
|
425
|
+
// parent row via `{ref:['$e0', <field>]}`. That is a map-element field access (bc types it from
|
|
426
|
+
// the map's `over` element struct), NOT a component input head, so hand the element var to the
|
|
427
|
+
// deriver to exclude it from head typing/rejection.
|
|
428
|
+
const elementVar = isMapNode
|
|
429
|
+
? (n.map.as ?? undefined)
|
|
430
|
+
: undefined;
|
|
431
|
+
const { byHead, arrayHeads, unresolved } = deriveHeadTypesFromStatements(stmts, resolveColumnType, elementVar);
|
|
298
432
|
for (const [, reason] of unresolved)
|
|
299
433
|
reasons.push(`node '${n.id}': ${reason}`);
|
|
300
434
|
for (const [head, scalar] of byHead) {
|
|
@@ -305,16 +439,32 @@ function lowerReadGraphForTypedNative(readGraph, resolveColumnType) {
|
|
|
305
439
|
}
|
|
306
440
|
inputPortTypes.set(head, scalar);
|
|
307
441
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
const newPorts = {};
|
|
313
|
-
for (const head of Object.keys(obj)) {
|
|
314
|
-
if (!byHead.has(head) && !unresolved.has(head)) {
|
|
315
|
-
reasons.push(`node '${n.id}': input head '${head}' referenced by the surrogate scope but not resolved by any WHERE fragment — cannot type it for native codegen`);
|
|
442
|
+
for (const [head, elem] of arrayHeads) {
|
|
443
|
+
const prior = inputPortElemTypes.get(head);
|
|
444
|
+
if (prior !== undefined && prior !== elem) {
|
|
445
|
+
reasons.push(`input head '${head}' resolves to conflicting array element scalar types ('${prior}' vs '${elem}') across nodes`);
|
|
316
446
|
continue;
|
|
317
447
|
}
|
|
448
|
+
inputPortElemTypes.set(head, elem);
|
|
449
|
+
}
|
|
450
|
+
// #12 (de-surrogated): the codegen IR is rebuilt from the real node's `statementsById`-derived
|
|
451
|
+
// head set (`byHead` ∪ `arrayHeads`) — the SAME native-scalar `{ref:[head]}` port shape bc's
|
|
452
|
+
// typed-native emitter consumes. There is no `__scope` obj to walk anymore; the referenced-head
|
|
453
|
+
// set IS what `deriveHeadTypesFromStatements` found (an `unresolved` head already pushed a
|
|
454
|
+
// reason above, fail-closed). A covered array head is emitted as the SAME single-segment
|
|
455
|
+
// `{ref:[head]}` port (bc#110's array-port lowering keys off the inputPorts array schema).
|
|
456
|
+
const newPorts = {};
|
|
457
|
+
// A map node's child statements reference the mapped parent row via `{ref:['$e0', <field>]}`.
|
|
458
|
+
// bc's typed-native map lowering types a port `{ref:['$e0', <field>]}` from the OVER element
|
|
459
|
+
// struct's FIELD (a native scalar) — so emit one native-scalar element-FIELD port per field the
|
|
460
|
+
// child statements bind (`{ref:['$e0', author_id]}` → port `author_id`). Non-element component
|
|
461
|
+
// heads (if any) are typed/emitted normally below.
|
|
462
|
+
if (isMapNode && elementVar !== undefined) {
|
|
463
|
+
const fields = elementFieldRefs(stmts, elementVar);
|
|
464
|
+
for (const field of fields)
|
|
465
|
+
newPorts[field] = { ref: [elementVar, field] };
|
|
466
|
+
}
|
|
467
|
+
for (const head of [...byHead.keys(), ...arrayHeads.keys()]) {
|
|
318
468
|
newPorts[head] = { ref: [head] };
|
|
319
469
|
}
|
|
320
470
|
return isMapNode
|
|
@@ -339,6 +489,15 @@ function lowerReadGraphForTypedNative(readGraph, resolveColumnType) {
|
|
|
339
489
|
const schema = (c.inputPorts ?? {})[name];
|
|
340
490
|
inputPorts[name] = schema === undefined ? { required: true, type: scalar } : { ...schema, type: scalar };
|
|
341
491
|
}
|
|
492
|
+
// IN-list / array-bound heads (bc#110): a native ARRAY input port carrying the ELEMENT scalar as
|
|
493
|
+
// `elemType`. bc's typed-native emitter lowers this to `Vec<ElemT>`/`[]ElemT` fed natively from
|
|
494
|
+
// the input struct field — NO boxed `Value`, NO serde_json/encoding-json on the read hot path.
|
|
495
|
+
// bc does NOT infer element types (consumer-interface C3), so litedbmodel supplies `elemType`
|
|
496
|
+
// from the schema SoT (the IN-list column's resolved scalar).
|
|
497
|
+
for (const [name, elem] of inputPortElemTypes) {
|
|
498
|
+
const schema = (c.inputPorts ?? {})[name];
|
|
499
|
+
inputPorts[name] = { ...(schema ?? { required: true }), type: 'array', elemType: elem };
|
|
500
|
+
}
|
|
342
501
|
return { ...c, body, inputPorts };
|
|
343
502
|
});
|
|
344
503
|
return { ...ir, components };
|
|
@@ -374,23 +533,39 @@ function typedEmitterFor(language, registered) {
|
|
|
374
533
|
function codegenEmitterFor(language, registered) {
|
|
375
534
|
return typedEmitterFor(language, registered);
|
|
376
535
|
}
|
|
377
|
-
/**
|
|
378
|
-
*
|
|
379
|
-
*
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
|
|
383
|
-
|
|
536
|
+
/**
|
|
537
|
+
* Every litedbmodel READ codegen endpoint consumes the SAME native-scalar-port lowering — NOT
|
|
538
|
+
* just the `-typed-native` (go/rust) ones. Rationale (#12 regression fix):
|
|
539
|
+
*
|
|
540
|
+
* Post-#12 the read graph is the REAL de-surrogated `Select`-node IR, whose `where` port array
|
|
541
|
+
* carries a fragment for EVERY authored `whereX($.col, …)` — including one whose LHS `$.col` is a
|
|
542
|
+
* WHERE COLUMN-NAME MARKER, never a bound input value (`whereGe($.created_at, $.since)` accesses
|
|
543
|
+
* `$.created_at` only to NAME the column; only `$.since` is bound). Handing that raw IR to bc's
|
|
544
|
+
* emitter emits a `ref(["created_at"], scope)` read + a `created_at` input-struct field, so the
|
|
545
|
+
* bound module throws `unknown binding: created_at` at execution (the scope has no `created_at`).
|
|
546
|
+
* The go/rust `-typed-native` path never hit this because it is fed
|
|
547
|
+
* {@link lowerReadGraphForTypedNative}, which rebuilds each node's ports from the GENUINE bound
|
|
548
|
+
* heads (`statementsById`), dropping the column-name markers. TS was on the raw IR
|
|
549
|
+
* ({@link bundleToPortableIR}) → it kept the marker → it broke.
|
|
550
|
+
*
|
|
551
|
+
* The lowering is therefore the correct input for the boxed `typescript-typed` endpoint too: it
|
|
552
|
+
* feeds bc EXACTLY the genuine bound heads (equivalent-in-spirit to what go/rust consume), and
|
|
553
|
+
* bc#110's native array port means the array-typed heads (`complexWhere`/`inList`) lower cleanly —
|
|
554
|
+
* the old "lowering would narrow TS's array coverage" concern is stale. Only WRITE bundles (no
|
|
555
|
+
* `readGraph`) never reach this path. */
|
|
556
|
+
function needsHeadLowering(_emitter) {
|
|
557
|
+
return true;
|
|
384
558
|
}
|
|
385
559
|
/**
|
|
386
|
-
* Generate the mode-3 READ codegen artifact for ONE §8 READ bundle in ONE target language.
|
|
387
|
-
*
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
*
|
|
393
|
-
*
|
|
560
|
+
* Generate the mode-3 READ codegen artifact for ONE §8 READ bundle in ONE target language. Lowers
|
|
561
|
+
* the bundle's real Select-node read graph into the native-scalar-port IR
|
|
562
|
+
* ({@link lowerReadGraphForTypedNative}) FIRST — for go/rust's typed-NATIVE endpoint (bc#77/#90,
|
|
563
|
+
* RUNTIME-FREE) AND for TS's boxed `typescript-typed` endpoint alike. Both consume the SAME
|
|
564
|
+
* genuine-bound-head shape: the lowering derives each node's ports from its compiled
|
|
565
|
+
* `statementsById` fragments, so a WHERE COLUMN-NAME MARKER head (`whereGe($.created_at, $.since)`
|
|
566
|
+
* — `$.created_at` names the column, is never bound) is EXCLUDED from the emitted ports/input
|
|
567
|
+
* struct, exactly as go/rust already handled it (#12 regression: TS previously fed the raw IR and
|
|
568
|
+
* emitted a stray `created_at` binding → `unknown binding: created_at` at execution).
|
|
394
569
|
*
|
|
395
570
|
* WRITE bundles are OUT OF SCOPE (#60 milestone 1: writes stay on the existing write/tx execution
|
|
396
571
|
* path, never a codegen module) — throws if `bundle.readGraph` is absent.
|
|
@@ -404,10 +579,19 @@ function generateCodegenArtifact(bundle, language, registeredLanguages, resolveC
|
|
|
404
579
|
const emitter = typedEmitterFor(language, registeredLanguages);
|
|
405
580
|
// The portable IR exists ONLY transiently here as the generator's input — it is NOT part of the
|
|
406
581
|
// codegen OUTPUT (no artifact field, no file, no binary; the codegen path never reads IR data).
|
|
407
|
-
|
|
582
|
+
// ALL read endpoints (go/rust typed-native AND TS boxed typescript-typed) are fed the SAME
|
|
583
|
+
// genuine-bound-head lowering (#12 regression fix — see needsHeadLowering).
|
|
584
|
+
const ir = needsHeadLowering(emitter)
|
|
408
585
|
? lowerReadGraphForTypedNative(bundle.readGraph, resolveColumnType)
|
|
409
586
|
: bundleToPortableIR(bundle);
|
|
410
|
-
|
|
587
|
+
// bc 0.8.0 (scp-only-authoring, SA3/SA7): `generateModule` fail-closes on un-tokened IR
|
|
588
|
+
// (`NON_COMPILED_IR`). This `ir` is DERIVED from `compileBehaviors`' real read graph (additively
|
|
589
|
+
// lowered/annotated), so it carries no in-process provenance token. Re-adopt it at this generation
|
|
590
|
+
// boundary via `loadCompiledIR` — the sanctioned seam that recomputes the canonical fingerprint once
|
|
591
|
+
// and mints the token (the derived graph IS the compiler's output transformed, never hand-forged raw
|
|
592
|
+
// IR). This is exactly bc's "codegen fixture / derived IR" boundary case.
|
|
593
|
+
const compiled = (0, behavior_contracts_1.loadCompiledIR)(ir);
|
|
594
|
+
const module = (0, behavior_contracts_1.generateModule)(compiled, runtimeImport === undefined ? { language: emitter } : { language: emitter, runtimeImport });
|
|
411
595
|
return { language: language, module, companion: companionOf(bundle), bundle };
|
|
412
596
|
}
|
|
413
597
|
/**
|
package/dist/scp/codegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/scp/codegen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/scp/codegen.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;;;AAyGH,gDAOC;AA8SD,oEAyFC;AAOD,0CAuBC;AAOD,8CAEC;AAwCD,0DA+BC;AAOD,kEAEC;AA5mBD,2DAAmI;AAOnI,uCAA0C;AAK1C,uCAAsF;AAEtF;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAGxF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACU,QAAA,eAAe,GAA6C;IACvE,UAAU,EAAE,kBAAkB;IAC9B,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,mBAAmB;CAC1B,CAAC;AAuCF;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAAC,MAAiB;IAClD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/D,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,IAAI,uDAAuD;QAChG,kGAAkG;QAClG,qGAAqG,CACxG,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,WAAW,CAAC,MAAiB;IACpC,MAAM,IAAI,GAAwB;QAChC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC;IACF,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;AAChG,CAAC;AAED,8FAA8F;AAC9F,6FAA6F;AAC7F,EAAE;AACF,0FAA0F;AAC1F,gGAAgG;AAChG,6FAA6F;AAC7F,iGAAiG;AACjG,8FAA8F;AAC9F,8FAA8F;AAC9F,mGAAmG;AACnG,EAAE;AACF,yFAAyF;AACzF,gGAAgG;AAChG,iGAAiG;AACjG,oGAAoG;AACpG,iEAAiE;AACjE,8FAA8F;AAE9F,mGAAmG;AACnG,MAAa,wBAAyB,SAAQ,KAAK;IAEtC;IACA;IAFX,YACW,SAAiB,EACjB,OAA0B;QAEnC,KAAK,CACH,4CAA4C,SAAS,oCAAoC;YACvF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACzC,8FAA8F;YAC9F,6FAA6F;YAC7F,2FAA2F;YAC3F,+FAA+F,CAClG,CAAC;QAVO,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAmB;QAUnC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAfD,4DAeC;AAED;;;iFAGiF;AACjF,MAAM,qBAAqB,GAAG,iEAAiE,CAAC;AAEhG;;;uDAGuD;AACvD,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AAEjE;;;;sCAIsC;AACtC,MAAM,cAAc,GAAG,uDAAuD,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,6BAA6B,CACpC,UAAsC,EACtC,iBAAqC,EACrC,UAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,gGAAgG;IAChG,gFAAgF;IAChF,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,mGAAmG;QACnG,iGAAiG;QACjG,iGAAiG;QACjG,4FAA4F;QAC5F,iGAAiG;QACjG,kGAAkG;QAClG,sGAAsG;QACtG,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,EAAE,KAAK,SAAS;oBAAE,SAAS;gBAC/B,IAAI,UAAU,KAAK,SAAS,IAAI,EAAE,KAAK,UAAU;oBAAE,SAAS;gBAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;oBAC3C,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,4CAA4C,KAAK,mDAAmD,CAAC,CAAC;oBAC1I,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9B,gGAAgG;YAChG,8FAA8F;YAC9F,sFAAsF;YACtF,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;gBAAE,SAAS;YACvF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5C,yFAAyF;gBACzF,4FAA4F;gBAC5F,2FAA2F;gBAC3F,qFAAqF;gBACrF,yFAAyF;gBACzF,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,OAAO,oEAAoE,IAAI,EAAE,GAAG,IAAI,QAAQ,IAAI,CAAC,CAAC;wBAC7I,SAAS;oBACX,CAAC;oBACD,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChD,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;wBAChB,UAAU,CAAC,GAAG,CACZ,OAAO,EACP,eAAe,OAAO,kCAAkC,IAAI,CAAC,GAAG,4FAA4F,CAC7J,CAAC;wBACF,SAAS;oBACX,CAAC;oBACD,MAAM,QAAQ,GAAG,IAAA,2BAAiB,EAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpE,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC1C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBACtD,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,OAAO,0DAA0D,SAAS,SAAS,QAAQ,sBAAsB,CAAC,CAAC;wBAC1J,SAAS;oBACX,CAAC;oBACD,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAClC,SAAS;gBACX,CAAC;gBACD,4FAA4F;gBAC5F,mFAAmF;gBACnF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,UAAU,CAAC,GAAG,CACZ,KAAK,EACL,eAAe,KAAK,2CAA2C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW;wBAC7F,2FAA2F,CAC9F,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,QAAQ,oEAAoE,IAAI,EAAE,GAAG,IAAI,QAAQ,IAAI,CAAC,CAAC;gBAC/I,SAAS;YACX,CAAC;YACD,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,UAAU,CAAC,GAAG,CACZ,QAAQ,EACR,eAAe,QAAQ,0BAA0B,IAAI,CAAC,GAAG,2EAA2E,CACrI,CAAC;gBACF,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAA,2BAAiB,EAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC5C,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,QAAQ,4CAA4C,KAAK,SAAS,MAAM,sBAAsB,CAAC,CAAC;gBACxI,SAAS;YACX,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,iGAAiG;IACjG,8FAA8F;IAC9F,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,IAAI,gFAAgF,CAAC,CAAC;QAC5H,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED,oGAAoG;AACpG,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACvF,MAAM,IAAI,GAAI,KAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7G,OAAO,IAAgB,CAAC;AAC1B,CAAC;AAED;+FAC+F;AAC/F,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1F,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;+DAI+D;AAC/D,SAAS,gBAAgB,CAAC,UAAsC,EAAE,UAAkB;IAClF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;gBAAE,SAAS;YAChF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;uCAIuC;AACvC,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1F,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,+EAA+E;IAC/E,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAChG,MAAM,EAAE,GAAG,OAAkC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACvF,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC/F,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED;;;iFAGiF;AACjF,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1F,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,4BAA4B,CAAC,SAAoB,EAAE,iBAAqC;IACtG,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IACxB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAC;QACnD,6FAA6F;QAC7F,sFAAsF;QACtF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAoB,CAAC;QACvD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5B,IAAI,MAAM,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACnD,4FAA4F;YAC5F,gGAAgG;YAChG,+FAA+F;YAC/F,oDAAoD;YACpD,MAAM,UAAU,GAAG,SAAS;gBAC1B,CAAC,CAAC,CAAE,CAAyC,CAAC,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC;gBAClE,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,6BAA6B,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;YAC/G,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC;YAC/E,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,4CAA4C,KAAK,SAAS,MAAM,iBAAiB,CAAC,CAAC;oBACnH,SAAS;gBACX,CAAC;gBACD,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC1C,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,0DAA0D,KAAK,SAAS,IAAI,iBAAiB,CAAC,CAAC;oBAC/H,SAAS;gBACX,CAAC;gBACD,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,+FAA+F;YAC/F,6FAA6F;YAC7F,gGAAgG;YAChG,2FAA2F;YAC3F,yFAAyF;YACzF,2FAA2F;YAC3F,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,8FAA8F;YAC9F,6FAA6F;YAC7F,gGAAgG;YAChG,+FAA+F;YAC/F,mDAAmD;YACnD,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBACnD,KAAK,MAAM,KAAK,IAAI,MAAM;oBAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7E,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5D,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,CAAC;YACD,OAAO,SAAS;gBACd,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,GAAI,CAAgC,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC9E,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,wBAAwB,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5E,sFAAsF;QACtF,sFAAsF;QACtF,0FAA0F;QAC1F,2FAA2F;QAC3F,2FAA2F;QAC3F,2FAA2F;QAC3F,4FAA4F;QAC5F,+FAA+F;QAC/F,4FAA4F;QAC5F,+FAA+F;QAC/F,gGAAgG;QAChG,MAAM,UAAU,GAA+B,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3G,CAAC;QACD,iGAAiG;QACjG,gGAAgG;QAChG,+FAA+F;QAC/F,8FAA8F;QAC9F,8DAA8D;QAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1F,CAAC;QACD,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAA0B,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,QAAgB,EAAE,UAA6B;IAC7E,IAAI,CAAE,yBAAuC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,kCAAkC,QAAQ,2CAA2C,yBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrH,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,uBAAe,CAAC,QAA2B,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,sDAAsD,QAAQ,mCAAmC;YAC/F,oGAAoG;YACpG,sDAAsD,MAAM,CAAC,IAAI,CAAC,uBAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;YACnG,IAAI,QAAQ,sFAAsF;YAClG,sBAAsB,CACzB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,qEAAqE,OAAO,kBAAkB,QAAQ,IAAI;YACxG,mBAAmB,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAC/G,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,QAAgB,EAAE,UAA6B;IAC/E,OAAO,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;;;;yCAmByC;AACzC,SAAS,iBAAiB,CAAC,QAAgB;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,uBAAuB,CACrC,MAAiB,EACjB,QAAgB,EAChB,mBAAsC,EACtC,iBAAqC,EACrC,aAAsB;IAEtB,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,yCAAyC,MAAM,CAAC,IAAI,6CAA6C;YAC/F,8FAA8F;YAC9F,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC/D,gGAAgG;IAChG,gGAAgG;IAChG,2FAA2F;IAC3F,4EAA4E;IAC5E,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;QACnE,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/B,wFAAwF;IACxF,iGAAiG;IACjG,mGAAmG;IACnG,qGAAqG;IACrG,qGAAqG;IACrG,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,IAAA,mCAAc,EAAC,EAAE,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAA,mCAAc,EAAC,QAAQ,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IACpI,OAAO,EAAE,QAAQ,EAAE,QAA2B,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;AACnG,CAAC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,QAAyB,EAAE,KAAY,EAAE,EAAY;IAC/F,OAAO,IAAA,uBAAa,EAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC"}
|