@quereus/sync 4.4.1 → 4.6.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/README.md +2 -2
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/metadata/column-version.d.ts.map +1 -1
- package/dist/src/metadata/column-version.js +8 -9
- package/dist/src/metadata/column-version.js.map +1 -1
- package/dist/src/metadata/keys.d.ts +71 -39
- package/dist/src/metadata/keys.d.ts.map +1 -1
- package/dist/src/metadata/keys.js +181 -158
- package/dist/src/metadata/keys.js.map +1 -1
- package/dist/src/metadata/pk-identity.d.ts +19 -14
- package/dist/src/metadata/pk-identity.d.ts.map +1 -1
- package/dist/src/metadata/pk-identity.js +21 -28
- package/dist/src/metadata/pk-identity.js.map +1 -1
- package/dist/src/metadata/schema-migration.d.ts +25 -9
- package/dist/src/metadata/schema-migration.d.ts.map +1 -1
- package/dist/src/metadata/schema-migration.js +49 -15
- package/dist/src/metadata/schema-migration.js.map +1 -1
- package/dist/src/sync/change-applicator.d.ts +19 -3
- package/dist/src/sync/change-applicator.d.ts.map +1 -1
- package/dist/src/sync/change-applicator.js +194 -60
- package/dist/src/sync/change-applicator.js.map +1 -1
- package/dist/src/sync/maintenance.d.ts +8 -5
- package/dist/src/sync/maintenance.d.ts.map +1 -1
- package/dist/src/sync/maintenance.js +7 -4
- package/dist/src/sync/maintenance.js.map +1 -1
- package/dist/src/sync/manager.d.ts +23 -1
- package/dist/src/sync/manager.d.ts.map +1 -1
- package/dist/src/sync/protocol.d.ts +30 -1
- package/dist/src/sync/protocol.d.ts.map +1 -1
- package/dist/src/sync/protocol.js +38 -0
- package/dist/src/sync/protocol.js.map +1 -1
- package/dist/src/sync/snapshot-identity.d.ts.map +1 -1
- package/dist/src/sync/snapshot-identity.js +1 -9
- package/dist/src/sync/snapshot-identity.js.map +1 -1
- package/dist/src/sync/snapshot-stream.d.ts.map +1 -1
- package/dist/src/sync/snapshot-stream.js +41 -39
- package/dist/src/sync/snapshot-stream.js.map +1 -1
- package/dist/src/sync/snapshot.d.ts.map +1 -1
- package/dist/src/sync/snapshot.js +12 -30
- package/dist/src/sync/snapshot.js.map +1 -1
- package/dist/src/sync/store-adapter.d.ts +5 -4
- package/dist/src/sync/store-adapter.d.ts.map +1 -1
- package/dist/src/sync/store-adapter.js +27 -46
- package/dist/src/sync/store-adapter.js.map +1 -1
- package/dist/src/sync/sync-manager-impl.d.ts +35 -4
- package/dist/src/sync/sync-manager-impl.d.ts.map +1 -1
- package/dist/src/sync/sync-manager-impl.js +72 -40
- package/dist/src/sync/sync-manager-impl.js.map +1 -1
- package/package.json +7 -7
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* tx: - Transaction records
|
|
8
8
|
* ps: - Peer sync state (received watermark: highest HLC pulled from a peer)
|
|
9
9
|
* pt: - Peer sent state (sent watermark: highest HLC pushed to a peer and acked)
|
|
10
|
-
* sm: - Schema migrations
|
|
10
|
+
* sm: - Schema migrations (keyed by object KIND as well as name — see buildSchemaMigrationKey)
|
|
11
11
|
* si: - Site identity
|
|
12
12
|
* hc: - HLC clock state
|
|
13
13
|
* cl: - Change log (HLC-indexed for efficient delta queries)
|
|
@@ -19,6 +19,8 @@ import { serializeKeyNullGrouping } from '@quereus/quereus';
|
|
|
19
19
|
import { assertNoUnpairedSurrogate } from '@quereus/store';
|
|
20
20
|
import { siteIdToBase64, siteIdFromBase64 } from '../clock/site.js';
|
|
21
21
|
const encoder = new TextEncoder();
|
|
22
|
+
/** Shared: the parsers below run once per key across whole-prefix scans. */
|
|
23
|
+
const decoder = new TextDecoder();
|
|
22
24
|
/** Key prefix bytes for sync metadata. */
|
|
23
25
|
export const SYNC_KEY_PREFIX = {
|
|
24
26
|
COLUMN_VERSION: encoder.encode('cv:'),
|
|
@@ -37,15 +39,27 @@ export const SYNC_KEY_PREFIX = {
|
|
|
37
39
|
/**
|
|
38
40
|
* Current sync-metadata storage format version, persisted under the `fv:` key.
|
|
39
41
|
*
|
|
42
|
+
* Version 4: schema migration keys (`sm:`) carry the object KIND (`table` /
|
|
43
|
+
* `index`) alongside the object name, so a table and a same-named index no
|
|
44
|
+
* longer share one version counter and suppress each other's migrations
|
|
45
|
+
* (version 3 keyed only `(schema, name)`).
|
|
46
|
+
*
|
|
47
|
+
* Version 3: EVERY variable-length key component — schema, table, pk identity,
|
|
48
|
+
* column — is length-prefixed via {@link joinKeyParts}, so no character is
|
|
49
|
+
* reserved as a delimiter and a name containing `:` or `.` cannot shift the
|
|
50
|
+
* split (version 2 packed schema/table as `{schema}.{table}:`, which mis-parsed
|
|
51
|
+
* a table named `a:b` as table `a`) — retained in version 4.
|
|
52
|
+
*
|
|
40
53
|
* Version 2: per-row records (`cv:`/`tb:`/`cl:`) are keyed by the pk IDENTITY
|
|
41
54
|
* (collation- and semantic-transform-normalized, via {@link encodePkIdentity})
|
|
42
|
-
* and carry the raw pk in the record VALUE
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* snapshot (see docs/sync.md
|
|
55
|
+
* and carry the raw pk in the record VALUE — retained since.
|
|
56
|
+
*
|
|
57
|
+
* Older metadata is unreadable under this layout; a replica whose stored version
|
|
58
|
+
* mismatches must re-bootstrap from a peer snapshot (see docs/sync.md
|
|
59
|
+
* § Metadata format version).
|
|
46
60
|
*/
|
|
47
|
-
export const SYNC_METADATA_FORMAT_VERSION =
|
|
48
|
-
/** Separator between
|
|
61
|
+
export const SYNC_METADATA_FORMAT_VERSION = 4;
|
|
62
|
+
/** Separator between a component's length and the component itself. */
|
|
49
63
|
const SEPARATOR = ':';
|
|
50
64
|
/**
|
|
51
65
|
* Raise when any of `names` (schema/table/column identifiers) carries an unpaired
|
|
@@ -62,6 +76,58 @@ function assertKeyableIdentifiers(...names) {
|
|
|
62
76
|
assertNoUnpairedSurrogate(name, `the identifier "${name}"`);
|
|
63
77
|
}
|
|
64
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Join variable-length key components, each prefixed with its own length in
|
|
81
|
+
* string code units: `{len}:{part}{len}:{part}…`.
|
|
82
|
+
*
|
|
83
|
+
* This is the ONLY encoding used for schema names, table names, pk identities
|
|
84
|
+
* and column names in metadata keys. Every one of those is arbitrary text — a
|
|
85
|
+
* quoted SQL identifier may contain `.` or `:`, and a pk identity freely
|
|
86
|
+
* contains `:` (type tags) and `\0` (member separator) — so no separator
|
|
87
|
+
* character can be reserved, and an explicit length is the only split that
|
|
88
|
+
* cannot shift. Two distinct component tuples can therefore never produce the
|
|
89
|
+
* same key.
|
|
90
|
+
*
|
|
91
|
+
* The length is in code units of the DECODED key string, which the byte
|
|
92
|
+
* encoding preserves: `TextEncoder` folds an unpaired surrogate to U+FFFD, one
|
|
93
|
+
* code unit for one code unit, and paired surrogates survive intact.
|
|
94
|
+
*/
|
|
95
|
+
export function joinKeyParts(...parts) {
|
|
96
|
+
return parts.map(part => `${part.length}${SEPARATOR}${part}`).join('');
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Split one length-prefixed component (`{len}:{part}`) off the front of `rest`.
|
|
100
|
+
* Returns null on a malformed length or an out-of-bounds slice.
|
|
101
|
+
*/
|
|
102
|
+
function splitKeyPart(rest) {
|
|
103
|
+
const lenColon = rest.indexOf(SEPARATOR);
|
|
104
|
+
if (lenColon <= 0)
|
|
105
|
+
return null;
|
|
106
|
+
const lenStr = rest.slice(0, lenColon);
|
|
107
|
+
if (!/^\d+$/.test(lenStr))
|
|
108
|
+
return null;
|
|
109
|
+
const len = parseInt(lenStr, 10);
|
|
110
|
+
const start = lenColon + 1;
|
|
111
|
+
if (start + len > rest.length)
|
|
112
|
+
return null;
|
|
113
|
+
return { part: rest.slice(start, start + len), remainder: rest.slice(start + len) };
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Split exactly `count` length-prefixed components off the front of `rest` — the
|
|
117
|
+
* inverse of {@link joinKeyParts}. Returns null if any component is malformed.
|
|
118
|
+
*/
|
|
119
|
+
function splitKeyParts(rest, count) {
|
|
120
|
+
const parts = [];
|
|
121
|
+
let remainder = rest;
|
|
122
|
+
for (let i = 0; i < count; i++) {
|
|
123
|
+
const split = splitKeyPart(remainder);
|
|
124
|
+
if (!split)
|
|
125
|
+
return null;
|
|
126
|
+
parts.push(split.part);
|
|
127
|
+
remainder = split.remainder;
|
|
128
|
+
}
|
|
129
|
+
return { parts, remainder };
|
|
130
|
+
}
|
|
65
131
|
const IDENTITY_NORMALIZER = (s) => s;
|
|
66
132
|
/**
|
|
67
133
|
* Keying that applies NO collation and NO semantic transform — raw value
|
|
@@ -96,27 +162,21 @@ export function encodeRawPkIdentity(pk) {
|
|
|
96
162
|
}
|
|
97
163
|
/**
|
|
98
164
|
* Build a column version key.
|
|
99
|
-
* Format: cv:{schema}
|
|
165
|
+
* Format: cv:{n}:{schema}{n}:{table}{n}:{identity}{n}:{column}
|
|
100
166
|
*
|
|
101
|
-
*
|
|
102
|
-
* it freely contains `:` (type tags) and `\0` (member separator) — no separator
|
|
103
|
-
* character is guaranteed absent, so an explicit length is the only unambiguous
|
|
104
|
-
* split between identity and column.
|
|
167
|
+
* Every component is length-prefixed — see {@link joinKeyParts}.
|
|
105
168
|
*/
|
|
106
169
|
export function buildColumnVersionKey(schemaName, tableName, identity, column) {
|
|
107
170
|
assertKeyableIdentifiers(schemaName, tableName, column);
|
|
108
|
-
|
|
109
|
-
return encoder.encode(key);
|
|
171
|
+
return encoder.encode(`cv:${joinKeyParts(schemaName, tableName, identity, column)}`);
|
|
110
172
|
}
|
|
111
173
|
/**
|
|
112
174
|
* Build a tombstone key.
|
|
113
|
-
* Format: tb:{schema}
|
|
114
|
-
* (No length prefix — the identity is the final component.)
|
|
175
|
+
* Format: tb:{n}:{schema}{n}:{table}{n}:{identity}
|
|
115
176
|
*/
|
|
116
177
|
export function buildTombstoneKey(schemaName, tableName, identity) {
|
|
117
178
|
assertKeyableIdentifiers(schemaName, tableName);
|
|
118
|
-
|
|
119
|
-
return encoder.encode(key);
|
|
179
|
+
return encoder.encode(`tb:${joinKeyParts(schemaName, tableName, identity)}`);
|
|
120
180
|
}
|
|
121
181
|
/**
|
|
122
182
|
* Build a transaction record key.
|
|
@@ -146,7 +206,7 @@ export function buildPeerSentStateKey(siteId) {
|
|
|
146
206
|
* Returns null for a key outside those prefixes or with a malformed suffix.
|
|
147
207
|
*/
|
|
148
208
|
export function parsePeerStateKey(key) {
|
|
149
|
-
const keyStr =
|
|
209
|
+
const keyStr = decoder.decode(key);
|
|
150
210
|
if (!keyStr.startsWith('ps:') && !keyStr.startsWith('pt:'))
|
|
151
211
|
return null;
|
|
152
212
|
try {
|
|
@@ -156,67 +216,81 @@ export function parsePeerStateKey(key) {
|
|
|
156
216
|
return null;
|
|
157
217
|
}
|
|
158
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* The key prefix shared by every migration of one schema object:
|
|
221
|
+
* `sm:{n}:{schema}{n}:{kind}{n}:{object}`.
|
|
222
|
+
*
|
|
223
|
+
* The kind sits BEFORE the object name so one object's migrations stay a single
|
|
224
|
+
* exact prefix (and stay contiguous by version within it). Kept separate from
|
|
225
|
+
* {@link buildTablePrefix}, which the two-component `cv:`/`tb:`/`qt:`/`bl:`
|
|
226
|
+
* families share.
|
|
227
|
+
*/
|
|
228
|
+
function buildSchemaMigrationPrefix(schemaName, kind, objectName) {
|
|
229
|
+
return `sm:${joinKeyParts(schemaName, kind, objectName)}`;
|
|
230
|
+
}
|
|
159
231
|
/**
|
|
160
232
|
* Build a schema migration key.
|
|
161
|
-
* Format: sm:{schema}
|
|
233
|
+
* Format: sm:{n}:{schema}{n}:{kind}{n}:{object}{version_padded_10}
|
|
234
|
+
*
|
|
235
|
+
* `kind` distinguishes the two things `objectName` can be: for an index
|
|
236
|
+
* migration it is the INDEX name, for every other migration type the TABLE name.
|
|
237
|
+
* Without it a table `orders` and an index `orders` share one version counter,
|
|
238
|
+
* and a concurrent migration of one silently suppresses the other on the
|
|
239
|
+
* receiving replica.
|
|
240
|
+
*
|
|
241
|
+
* The version is fixed-width zero-padded (not length-prefixed) so migrations of
|
|
242
|
+
* one object sort by version within that object's prefix.
|
|
162
243
|
*/
|
|
163
|
-
export function buildSchemaMigrationKey(schemaName,
|
|
164
|
-
assertKeyableIdentifiers(schemaName,
|
|
165
|
-
|
|
244
|
+
export function buildSchemaMigrationKey(schemaName, kind, objectName, version) {
|
|
245
|
+
assertKeyableIdentifiers(schemaName, objectName);
|
|
246
|
+
const versionPart = version.toString().padStart(10, '0');
|
|
247
|
+
return encoder.encode(`${buildSchemaMigrationPrefix(schemaName, kind, objectName)}${versionPart}`);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Build a prefix over one `(schema, table)` under `prefix`. Exact: each
|
|
251
|
+
* component's length is carried by the component itself, so no other
|
|
252
|
+
* `(schema, table)` pair can share these bytes (see {@link joinKeyParts}).
|
|
253
|
+
*/
|
|
254
|
+
function buildTablePrefix(prefix, schemaName, tableName) {
|
|
255
|
+
return encoder.encode(`${prefix}${joinKeyParts(schemaName, tableName)}`);
|
|
256
|
+
}
|
|
257
|
+
/** Scan bounds over an exact byte prefix. */
|
|
258
|
+
function prefixBounds(prefix) {
|
|
259
|
+
return { gte: prefix, lt: incrementLastByte(prefix) };
|
|
166
260
|
}
|
|
167
261
|
/**
|
|
168
262
|
* Build scan bounds for all column versions of a table.
|
|
169
|
-
* Returns keys to scan cv:{schema}
|
|
263
|
+
* Returns keys to scan cv:{n}:{schema}{n}:{table}*
|
|
170
264
|
*/
|
|
171
265
|
export function buildTableColumnVersionScanBounds(schemaName, tableName) {
|
|
172
|
-
|
|
173
|
-
return {
|
|
174
|
-
gte: encoder.encode(prefix),
|
|
175
|
-
lt: incrementLastByte(encoder.encode(prefix)),
|
|
176
|
-
};
|
|
266
|
+
return prefixBounds(buildTablePrefix('cv:', schemaName, tableName));
|
|
177
267
|
}
|
|
178
268
|
/**
|
|
179
269
|
* The key prefix shared by every column version of one row:
|
|
180
|
-
* `cv:{schema}
|
|
181
|
-
*
|
|
182
|
-
* Exported so a row scan can recover each entry's column name by stripping this
|
|
183
|
-
* exact prefix, rather than splitting the key at its last `:` — the column name
|
|
184
|
-
* is the only unbounded, separator-bearing component, so only the prefix is
|
|
185
|
-
* unambiguous (see {@link parseColumnVersionKey}, which has no pk to anchor on).
|
|
270
|
+
* `cv:{n}:{schema}{n}:{table}{n}:{identity}`.
|
|
186
271
|
*/
|
|
187
|
-
|
|
188
|
-
return `cv:${schemaName
|
|
272
|
+
function buildColumnVersionRowPrefix(schemaName, tableName, identity) {
|
|
273
|
+
return `cv:${joinKeyParts(schemaName, tableName, identity)}`;
|
|
189
274
|
}
|
|
190
275
|
/**
|
|
191
276
|
* Build scan bounds for all column versions of a row.
|
|
192
|
-
* Returns keys to scan cv:{schema}
|
|
277
|
+
* Returns keys to scan cv:{n}:{schema}{n}:{table}{n}:{identity}*
|
|
193
278
|
*/
|
|
194
279
|
export function buildColumnVersionScanBounds(schemaName, tableName, identity) {
|
|
195
|
-
|
|
196
|
-
return {
|
|
197
|
-
gte: encoder.encode(prefix),
|
|
198
|
-
lt: incrementLastByte(encoder.encode(prefix)),
|
|
199
|
-
};
|
|
280
|
+
return prefixBounds(encoder.encode(buildColumnVersionRowPrefix(schemaName, tableName, identity)));
|
|
200
281
|
}
|
|
201
282
|
/**
|
|
202
283
|
* Build scan bounds for all tombstones in a table.
|
|
203
284
|
*/
|
|
204
285
|
export function buildTombstoneScanBounds(schemaName, tableName) {
|
|
205
|
-
|
|
206
|
-
return {
|
|
207
|
-
gte: encoder.encode(prefix),
|
|
208
|
-
lt: incrementLastByte(encoder.encode(prefix)),
|
|
209
|
-
};
|
|
286
|
+
return prefixBounds(buildTablePrefix('tb:', schemaName, tableName));
|
|
210
287
|
}
|
|
211
288
|
/**
|
|
212
|
-
* Build scan bounds for all schema migrations of a table
|
|
289
|
+
* Build scan bounds for all schema migrations of one object — a table's or an
|
|
290
|
+
* index's, per `kind`. A table and a same-named index have disjoint bounds.
|
|
213
291
|
*/
|
|
214
|
-
export function buildSchemaMigrationScanBounds(schemaName,
|
|
215
|
-
|
|
216
|
-
return {
|
|
217
|
-
gte: encoder.encode(prefix),
|
|
218
|
-
lt: incrementLastByte(encoder.encode(prefix)),
|
|
219
|
-
};
|
|
292
|
+
export function buildSchemaMigrationScanBounds(schemaName, kind, objectName) {
|
|
293
|
+
return prefixBounds(encoder.encode(buildSchemaMigrationPrefix(schemaName, kind, objectName)));
|
|
220
294
|
}
|
|
221
295
|
/**
|
|
222
296
|
* Increment the last byte of a key to create an exclusive upper bound.
|
|
@@ -260,101 +334,60 @@ export function buildAllSchemaMigrationsScanBounds() {
|
|
|
260
334
|
lt: incrementLastByte(SYNC_KEY_PREFIX.SCHEMA_MIGRATION),
|
|
261
335
|
};
|
|
262
336
|
}
|
|
263
|
-
/**
|
|
264
|
-
* Split a length-prefixed identity component off `rest` (the key text after the
|
|
265
|
-
* table's separator): `{identity_length}:{identity}` followed by `remainder`.
|
|
266
|
-
* Returns null on a malformed length or out-of-bounds slice.
|
|
267
|
-
*/
|
|
268
|
-
function splitLengthPrefixedIdentity(rest) {
|
|
269
|
-
const lenColon = rest.indexOf(SEPARATOR);
|
|
270
|
-
if (lenColon <= 0)
|
|
271
|
-
return null;
|
|
272
|
-
const lenStr = rest.slice(0, lenColon);
|
|
273
|
-
if (!/^\d+$/.test(lenStr))
|
|
274
|
-
return null;
|
|
275
|
-
const len = parseInt(lenStr, 10);
|
|
276
|
-
const start = lenColon + 1;
|
|
277
|
-
if (start + len > rest.length)
|
|
278
|
-
return null;
|
|
279
|
-
return { identity: rest.slice(start, start + len), remainder: rest.slice(start + len) };
|
|
280
|
-
}
|
|
281
337
|
/**
|
|
282
338
|
* Parse a column version key to extract components.
|
|
283
|
-
* Key format: cv:{schema}
|
|
339
|
+
* Key format: cv:{n}:{schema}{n}:{table}{n}:{identity}{n}:{column}
|
|
284
340
|
*
|
|
285
341
|
* Returns the pk IDENTITY string — the identity is lossy and cannot be decoded
|
|
286
342
|
* back to values; the raw pk lives in the record VALUE (`ColumnVersion.pk`).
|
|
287
|
-
* The length
|
|
288
|
-
* what characters
|
|
343
|
+
* The per-component length prefixes make every split unambiguous regardless of
|
|
344
|
+
* what characters any component contains.
|
|
289
345
|
*/
|
|
290
346
|
export function parseColumnVersionKey(key) {
|
|
291
|
-
const keyStr =
|
|
347
|
+
const keyStr = decoder.decode(key);
|
|
292
348
|
if (!keyStr.startsWith('cv:'))
|
|
293
349
|
return null;
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
const firstDot = rest.indexOf('.');
|
|
297
|
-
if (firstDot === -1)
|
|
298
|
-
return null;
|
|
299
|
-
const schema = rest.slice(0, firstDot);
|
|
300
|
-
const afterDot = rest.slice(firstDot + 1);
|
|
301
|
-
const firstColon = afterDot.indexOf(':');
|
|
302
|
-
if (firstColon === -1)
|
|
350
|
+
const split = splitKeyParts(keyStr.slice(3), 4);
|
|
351
|
+
if (!split || split.remainder.length !== 0)
|
|
303
352
|
return null;
|
|
304
|
-
const table =
|
|
305
|
-
|
|
306
|
-
if (!split || !split.remainder.startsWith(SEPARATOR))
|
|
307
|
-
return null;
|
|
308
|
-
return { schema, table, identity: split.identity, column: split.remainder.slice(1) };
|
|
353
|
+
const [schema, table, identity, column] = split.parts;
|
|
354
|
+
return { schema, table, identity, column };
|
|
309
355
|
}
|
|
310
356
|
/**
|
|
311
357
|
* Parse a tombstone key to extract components.
|
|
312
|
-
* Key format: tb:{schema}
|
|
358
|
+
* Key format: tb:{n}:{schema}{n}:{table}{n}:{identity}
|
|
313
359
|
*
|
|
314
360
|
* Returns the pk IDENTITY string; the raw pk lives in the record VALUE
|
|
315
361
|
* (`Tombstone.pk`).
|
|
316
362
|
*/
|
|
317
363
|
export function parseTombstoneKey(key) {
|
|
318
|
-
const keyStr =
|
|
364
|
+
const keyStr = decoder.decode(key);
|
|
319
365
|
if (!keyStr.startsWith('tb:'))
|
|
320
366
|
return null;
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
const firstDot = rest.indexOf('.');
|
|
324
|
-
if (firstDot === -1)
|
|
325
|
-
return null;
|
|
326
|
-
const schema = rest.slice(0, firstDot);
|
|
327
|
-
const afterDot = rest.slice(firstDot + 1);
|
|
328
|
-
const firstColon = afterDot.indexOf(':');
|
|
329
|
-
if (firstColon === -1)
|
|
367
|
+
const split = splitKeyParts(keyStr.slice(3), 3);
|
|
368
|
+
if (!split || split.remainder.length !== 0)
|
|
330
369
|
return null;
|
|
331
|
-
const table =
|
|
332
|
-
return { schema, table, identity
|
|
370
|
+
const [schema, table, identity] = split.parts;
|
|
371
|
+
return { schema, table, identity };
|
|
333
372
|
}
|
|
334
373
|
/**
|
|
335
374
|
* Parse a schema migration key to extract components.
|
|
336
|
-
* Key format: sm:{schema}
|
|
375
|
+
* Key format: sm:{n}:{schema}{n}:{kind}{n}:{object}{version_padded_10}
|
|
376
|
+
*
|
|
377
|
+
* `table` carries the object name whatever its kind — for an `index` key it is
|
|
378
|
+
* the index name, not the table the index is on (which the key never held).
|
|
337
379
|
*/
|
|
338
380
|
export function parseSchemaMigrationKey(key) {
|
|
339
|
-
const keyStr =
|
|
381
|
+
const keyStr = decoder.decode(key);
|
|
340
382
|
if (!keyStr.startsWith('sm:'))
|
|
341
383
|
return null;
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
const firstDot = rest.indexOf('.');
|
|
345
|
-
if (firstDot === -1)
|
|
346
|
-
return null;
|
|
347
|
-
const schema = rest.slice(0, firstDot);
|
|
348
|
-
const afterDot = rest.slice(firstDot + 1);
|
|
349
|
-
const firstColon = afterDot.indexOf(':');
|
|
350
|
-
if (firstColon === -1)
|
|
384
|
+
const split = splitKeyParts(keyStr.slice(3), 3);
|
|
385
|
+
if (!split || !/^\d+$/.test(split.remainder))
|
|
351
386
|
return null;
|
|
352
|
-
const table =
|
|
353
|
-
|
|
354
|
-
const version = parseInt(versionStr, 10);
|
|
355
|
-
if (isNaN(version))
|
|
387
|
+
const [schema, kind, table] = split.parts;
|
|
388
|
+
if (kind !== 'table' && kind !== 'index')
|
|
356
389
|
return null;
|
|
357
|
-
return { schema, table, version };
|
|
390
|
+
return { schema, kind, table, version: parseInt(split.remainder, 10) };
|
|
358
391
|
}
|
|
359
392
|
/**
|
|
360
393
|
* Serialize an HLC to a sortable key component (30 bytes, big-endian).
|
|
@@ -387,20 +420,22 @@ export function deserializeHLCFromKey(buffer) {
|
|
|
387
420
|
}
|
|
388
421
|
/**
|
|
389
422
|
* Build a change log key.
|
|
390
|
-
* Format: cl:{hlc_bytes}{type_byte}{schema}
|
|
423
|
+
* Format: cl:{hlc_bytes}{type_byte}{n}:{schema}{n}:{table}{n}:{identity}[{n}:{column}]
|
|
391
424
|
*
|
|
392
425
|
* The HLC comes first to enable efficient range scans by time.
|
|
393
426
|
* type_byte: 0x01 for column change, 0x02 for delete
|
|
394
|
-
*
|
|
427
|
+
* Every text component is length-prefixed — see {@link joinKeyParts}.
|
|
395
428
|
*/
|
|
396
429
|
export function buildChangeLogKey(hlc, entryType, schemaName, tableName, identity, column) {
|
|
397
430
|
assertKeyableIdentifiers(schemaName, tableName, ...(column !== undefined ? [column] : []));
|
|
398
431
|
const hlcBytes = serializeHLCForKey(hlc);
|
|
399
432
|
const typeByte = entryType === 'column' ? 0x01 : 0x02;
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
433
|
+
// `!== undefined`, not truthiness: a zero-length column name must still emit its
|
|
434
|
+
// (empty) component, or the builder would write 3 parts where `parseChangeLogKey`
|
|
435
|
+
// demands 4 for a `column` entry and the record would read back as unparseable.
|
|
436
|
+
const suffix = column !== undefined
|
|
437
|
+
? joinKeyParts(schemaName, tableName, identity, column)
|
|
438
|
+
: joinKeyParts(schemaName, tableName, identity);
|
|
404
439
|
const suffixBytes = encoder.encode(suffix);
|
|
405
440
|
// cl: (3) + hlc (30) + type (1) + suffix
|
|
406
441
|
const key = new Uint8Array(3 + 30 + 1 + suffixBytes.length);
|
|
@@ -456,40 +491,28 @@ export function parseChangeLogKey(key) {
|
|
|
456
491
|
// Minimum: cl: (3) + hlc (30) + type (1) + some suffix
|
|
457
492
|
if (key.length < 35)
|
|
458
493
|
return null;
|
|
459
|
-
const prefixStr =
|
|
494
|
+
const prefixStr = decoder.decode(key.slice(0, 3));
|
|
460
495
|
if (prefixStr !== 'cl:')
|
|
461
496
|
return null;
|
|
462
497
|
const hlcBytes = key.slice(3, 33);
|
|
463
498
|
const hlc = deserializeHLCFromKey(hlcBytes);
|
|
464
499
|
const typeByte = key[33];
|
|
465
500
|
const entryType = typeByte === 0x01 ? 'column' : 'delete';
|
|
466
|
-
const suffixStr =
|
|
467
|
-
// Parse suffix: {schema}
|
|
468
|
-
const
|
|
469
|
-
if (
|
|
470
|
-
return null;
|
|
471
|
-
const schema = suffixStr.slice(0, firstDot);
|
|
472
|
-
const afterDot = suffixStr.slice(firstDot + 1);
|
|
473
|
-
const firstColon = afterDot.indexOf(':');
|
|
474
|
-
if (firstColon === -1)
|
|
475
|
-
return null;
|
|
476
|
-
const table = afterDot.slice(0, firstColon);
|
|
477
|
-
const split = splitLengthPrefixedIdentity(afterDot.slice(firstColon + 1));
|
|
478
|
-
if (!split)
|
|
501
|
+
const suffixStr = decoder.decode(key.slice(34));
|
|
502
|
+
// Parse suffix: {n}:{schema}{n}:{table}{n}:{identity}[{n}:{column}]
|
|
503
|
+
const split = splitKeyParts(suffixStr, entryType === 'column' ? 4 : 3);
|
|
504
|
+
if (!split || split.remainder.length !== 0)
|
|
479
505
|
return null;
|
|
506
|
+
const [schema, table, identity] = split.parts;
|
|
480
507
|
if (entryType === 'column') {
|
|
481
|
-
|
|
482
|
-
return null;
|
|
483
|
-
return { hlc, entryType, schema, table, identity: split.identity, column: split.remainder.slice(1) };
|
|
508
|
+
return { hlc, entryType, schema, table, identity, column: split.parts[3] };
|
|
484
509
|
}
|
|
485
510
|
// Delete entry - no column
|
|
486
|
-
|
|
487
|
-
return null;
|
|
488
|
-
return { hlc, entryType, schema, table, identity: split.identity };
|
|
511
|
+
return { hlc, entryType, schema, table, identity };
|
|
489
512
|
}
|
|
490
513
|
/**
|
|
491
514
|
* Build a quarantine key for a held out-of-basis straggler change.
|
|
492
|
-
* Format: qt:{schema}
|
|
515
|
+
* Format: qt:{n}:{schema}{n}:{table} + hlc_bytes(30) + type_byte(1) + {n}:{raw_identity}[{n}:{column}]
|
|
493
516
|
*
|
|
494
517
|
* Unlike the change log (`cl:`), the table prefix comes BEFORE the HLC so the
|
|
495
518
|
* range scans by `(schema, table)` for operator inspection. The HLC + type + pk
|
|
@@ -507,13 +530,13 @@ export function parseChangeLogKey(key) {
|
|
|
507
530
|
*/
|
|
508
531
|
export function buildQuarantineKey(schemaName, tableName, hlc, entryType, pk, column) {
|
|
509
532
|
assertKeyableIdentifiers(schemaName, tableName, ...(column !== undefined ? [column] : []));
|
|
510
|
-
const prefixBytes =
|
|
533
|
+
const prefixBytes = buildTablePrefix('qt:', schemaName, tableName);
|
|
511
534
|
const hlcBytes = serializeHLCForKey(hlc);
|
|
512
535
|
const typeByte = entryType === 'column' ? 0x01 : 0x02;
|
|
513
536
|
const rawIdentity = encodeRawPkIdentity(pk);
|
|
514
|
-
const suffix = column
|
|
515
|
-
?
|
|
516
|
-
:
|
|
537
|
+
const suffix = column !== undefined
|
|
538
|
+
? joinKeyParts(rawIdentity, column)
|
|
539
|
+
: joinKeyParts(rawIdentity);
|
|
517
540
|
const suffixBytes = encoder.encode(suffix);
|
|
518
541
|
const key = new Uint8Array(prefixBytes.length + 30 + 1 + suffixBytes.length);
|
|
519
542
|
let offset = 0;
|
|
@@ -529,17 +552,17 @@ export function buildQuarantineKey(schemaName, tableName, hlc, entryType, pk, co
|
|
|
529
552
|
/**
|
|
530
553
|
* Build scan bounds over quarantine entries.
|
|
531
554
|
* - both `schemaName` and `tableName`: a single table's held changes.
|
|
532
|
-
* - `schemaName` only: all held changes in that schema
|
|
555
|
+
* - `schemaName` only: all held changes in that schema — `qt:{n}:{schema}` is
|
|
556
|
+
* exact, since the schema's own length prefix terminates it (a different
|
|
557
|
+
* schema differs in either that length or its text).
|
|
533
558
|
* - neither: every quarantine entry (the GC sweep).
|
|
534
559
|
*/
|
|
535
560
|
export function buildQuarantineScanBounds(schemaName, tableName) {
|
|
536
561
|
if (schemaName !== undefined && tableName !== undefined) {
|
|
537
|
-
|
|
538
|
-
return { gte: prefix, lt: incrementLastByte(prefix) };
|
|
562
|
+
return prefixBounds(buildTablePrefix('qt:', schemaName, tableName));
|
|
539
563
|
}
|
|
540
564
|
if (schemaName !== undefined) {
|
|
541
|
-
|
|
542
|
-
return { gte: prefix, lt: incrementLastByte(prefix) };
|
|
565
|
+
return prefixBounds(encoder.encode(`qt:${joinKeyParts(schemaName)}`));
|
|
543
566
|
}
|
|
544
567
|
return {
|
|
545
568
|
gte: SYNC_KEY_PREFIX.QUARANTINE,
|
|
@@ -548,7 +571,7 @@ export function buildQuarantineScanBounds(schemaName, tableName) {
|
|
|
548
571
|
}
|
|
549
572
|
/**
|
|
550
573
|
* Build a basis-table lifecycle key.
|
|
551
|
-
* Format: bl:{schema}
|
|
574
|
+
* Format: bl:{n}:{schema}{n}:{table} (both lowercased — basis relations are keyed
|
|
552
575
|
* lowercased throughout the lens deployment snapshot, so the lifecycle key
|
|
553
576
|
* matches `relationBacking` / `derivation.sourceTables` keys exactly).
|
|
554
577
|
*
|
|
@@ -558,7 +581,7 @@ export function buildQuarantineScanBounds(schemaName, tableName) {
|
|
|
558
581
|
*/
|
|
559
582
|
export function buildBasisLifecycleKey(schemaName, tableName) {
|
|
560
583
|
assertKeyableIdentifiers(schemaName, tableName);
|
|
561
|
-
return
|
|
584
|
+
return buildTablePrefix('bl:', schemaName.toLowerCase(), tableName.toLowerCase());
|
|
562
585
|
}
|
|
563
586
|
/**
|
|
564
587
|
* Build scan bounds over all basis-table lifecycle records (operator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/metadata/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAe,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGjF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACvC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACtC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;CAC7B,CAAC;AAEX;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,wCAAwC;AACxC,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAAC,GAAG,KAAe;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,IAAI,GAAG,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAcD,MAAM,mBAAmB,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAa,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAc,EAAE,MAAgB;IAC/D,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC;IACnF,OAAO,wBAAwB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CAAC,EAAc;IAChD,OAAO,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,SAAiB,EACjB,QAAgB,EAChB,MAAc;IAEd,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,EAAE,CAAC;IACtH,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,SAAiB,EACjB,QAAgB;IAEhB,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAC;IACnE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IACvD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAC/C,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAC/C,UAAkB,EAClB,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;IAC3D,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,UAAkB,EAClB,SAAiB,EACjB,QAAgB;IAEhB,OAAO,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC;AAC1G,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAkB,EAClB,SAAiB,EACjB,QAAgB;IAEhB,MAAM,MAAM,GAAG,2BAA2B,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5E,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;IAC3D,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAC5C,UAAkB,EAClB,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;IAC3D,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAe;IACxC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,MAAM;QACR,CAAC;QACD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,cAAc;QACnC,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,SAAS;QAC9B,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,SAAS,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC;IAChD,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,gBAAgB;QACrC,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,gBAAgB,CAAC;KACxD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B,CAAC,IAAY;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAe;IAMnD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,4DAA4D;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,2BAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAElE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAK/C,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,iCAAiC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAE5C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAe;IAKrD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,gCAAgC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAEzC,IAAI,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,iCAAiC;IACjC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,+BAA+B;IAC/B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,qBAAqB;IACrB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3B,iDAAiD;IACjD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAQ,EACR,SAA6B,EAC7B,UAAkB,EAClB,SAAiB,EACjB,QAAgB,EAChB,MAAe;IAEf,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,GAAG,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE;QACxE,CAAC,CAAC,GAAG,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,MAAM,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3C,yCAAyC;IACzC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5D,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IACnB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEzB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAa;IACzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,4BAA4B;IAC5B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAExC,OAAO;QACL,GAAG;QACH,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,UAAU;QAC/B,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,QAAoB;IAC7C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,MAAM;QACR,CAAC;QACD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAQ/C,uDAAuD;IACvD,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,SAAS,GAAuB,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE9E,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1D,yEAAyE;IACzE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,2BAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACvG,CAAC;IACD,2BAA2B;IAC3B,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,SAAiB,EACjB,GAAQ,EACR,SAA6B,EAC7B,EAAc,EACd,MAAe;IAEf,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,MAAM,WAAW,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,EAAE;QACnD,CAAC,CAAC,GAAG,SAAS,GAAG,WAAW,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC;IAC3D,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,IAAI,EAAE,CAAC;IACxC,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;IAAC,MAAM,IAAI,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAmB,EACnB,SAAkB;IAElB,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,UAAU,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC;QAC3E,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;QACnD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,UAAU;QAC/B,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,SAAiB;IAC1E,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,eAAe;QACpC,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC;KACvD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/metadata/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAe,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIjF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,4EAA4E;AAC5E,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACvC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACtC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;CAC7B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,uEAAuE;AACvE,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAAC,GAAG,KAAe;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,IAAI,GAAG,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAAC,GAAG,KAAe;IAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC;AAcD,MAAM,mBAAmB,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAa,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAc,EAAE,MAAgB;IAC/D,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC;IACnF,OAAO,wBAAwB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CAAC,EAAc;IAChD,OAAO,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,SAAiB,EACjB,QAAgB,EAChB,MAAc;IAEd,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACxD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,SAAiB,EACjB,QAAgB;IAEhB,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IACvD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,0BAA0B,CACjC,UAAkB,EAClB,IAAsB,EACtB,UAAkB;IAElB,OAAO,MAAM,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,IAAsB,EACtB,UAAkB,EAClB,OAAe;IAEf,wBAAwB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,0BAA0B,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC;AACrG,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,UAAkB,EAAE,SAAiB;IAC7E,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,6CAA6C;AAC7C,SAAS,YAAY,CAAC,MAAkB;IACtC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAC/C,UAAkB,EAClB,SAAiB;IAEjB,OAAO,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAClC,UAAkB,EAClB,SAAiB,EACjB,QAAgB;IAEhB,OAAO,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAkB,EAClB,SAAiB,EACjB,QAAgB;IAEhB,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,SAAiB;IAEjB,OAAO,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,UAAkB,EAClB,IAAsB,EACtB,UAAkB;IAElB,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAChG,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAe;IACxC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,MAAM;QACR,CAAC;QACD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,cAAc;QACnC,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,SAAS;QAC9B,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,SAAS,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC;IAChD,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,gBAAgB;QACrC,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,gBAAgB,CAAC;KACxD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAe;IAMnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExD,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACtD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAK/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExD,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAe;IAMrD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1D,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAEtD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC;AACzE,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,iCAAiC;IACjC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,+BAA+B;IAC/B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,qBAAqB;IACrB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3B,iDAAiD;IACjD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAQ,EACR,SAA6B,EAC7B,UAAkB,EAClB,SAAiB,EACjB,QAAgB,EAChB,MAAe;IAEf,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,iFAAiF;IACjF,kFAAkF;IAClF,gFAAgF;IAChF,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS;QACjC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;QACvD,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3C,yCAAyC;IACzC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5D,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IACnB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEzB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAa;IACzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,4BAA4B;IAC5B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAExC,OAAO;QACL,GAAG;QACH,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,UAAU;QAC/B,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,QAAoB;IAC7C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,MAAM;QACR,CAAC;QACD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAQ/C,uDAAuD;IACvD,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,SAAS,GAAuB,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE9E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhD,oEAAoE;IACpE,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExD,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC9C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,CAAC;IACD,2BAA2B;IAC3B,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,SAAiB,EACjB,GAAQ,EACR,SAA6B,EAC7B,EAAc,EACd,MAAe;IAEf,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,MAAM,WAAW,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS;QACjC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;QACnC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC;IAC3D,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,IAAI,EAAE,CAAC;IACxC,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;IAAC,MAAM,IAAI,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAmB,EACnB,SAAkB;IAElB,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACxD,OAAO,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,UAAU;QAC/B,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,SAAiB;IAC1E,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,GAAG,EAAE,eAAe,CAAC,eAAe;QACpC,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC;KACvD,CAAC;AACJ,CAAC"}
|