@edgedev/template-engine 0.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.
@@ -0,0 +1,568 @@
1
+ import { ARRAY_BLOCK_RE, parseConfig } from './templateConfig';
2
+ import { createKvIndexClient, } from './kvIndexClient';
3
+ const isRecord = (input) => {
4
+ return !!input && typeof input === 'object' && !Array.isArray(input);
5
+ };
6
+ const getValueAtPath = (record, path) => {
7
+ if (!isRecord(record) || !path)
8
+ return undefined;
9
+ const keys = path.split('.');
10
+ let current = record;
11
+ for (const key of keys) {
12
+ if (!isRecord(current) || !(key in current))
13
+ return undefined;
14
+ current = current[key];
15
+ }
16
+ return current;
17
+ };
18
+ const normalizeLimit = (value) => {
19
+ if (value == null)
20
+ return undefined;
21
+ const num = typeof value === 'number' ? value : Number(value);
22
+ if (!Number.isFinite(num) || num <= 0)
23
+ return undefined;
24
+ return Math.floor(num);
25
+ };
26
+ const pickString = (value) => {
27
+ if (typeof value !== 'string')
28
+ return undefined;
29
+ const trimmed = value.trim();
30
+ return trimmed.length > 0 ? trimmed : undefined;
31
+ };
32
+ const normalizeSearchValue = (value) => {
33
+ if (value == null)
34
+ return undefined;
35
+ if (Array.isArray(value)) {
36
+ const normalized = value
37
+ .map((entry) => {
38
+ if (entry == null)
39
+ return undefined;
40
+ if (typeof entry === 'string')
41
+ return entry;
42
+ if (typeof entry === 'number' || typeof entry === 'boolean')
43
+ return String(entry);
44
+ if (typeof entry === 'object')
45
+ return JSON.stringify(entry);
46
+ return String(entry);
47
+ })
48
+ .filter((entry) => typeof entry === 'string' && entry.length > 0);
49
+ return normalized.length > 0 ? normalized : undefined;
50
+ }
51
+ if (typeof value === 'string')
52
+ return value;
53
+ if (typeof value === 'number' || typeof value === 'boolean')
54
+ return String(value);
55
+ if (typeof value === 'object')
56
+ return JSON.stringify(value);
57
+ return String(value);
58
+ };
59
+ const normalizeQueryItems = (input, fallbackField) => {
60
+ const items = [];
61
+ const pushItem = (key, rawValue) => {
62
+ if (typeof key !== 'string' || !key.trim())
63
+ return;
64
+ const normalizedValue = normalizeSearchValue(rawValue);
65
+ if (normalizedValue == null)
66
+ return;
67
+ items.push({
68
+ searchKey: key.trim(),
69
+ searchValue: normalizedValue,
70
+ });
71
+ };
72
+ if (!input)
73
+ return items;
74
+ if (typeof input === 'string') {
75
+ if (fallbackField)
76
+ pushItem(fallbackField, input);
77
+ return items;
78
+ }
79
+ if (Array.isArray(input)) {
80
+ const allStrings = input.every(entry => typeof entry === 'string');
81
+ if (allStrings) {
82
+ if (fallbackField) {
83
+ for (const value of input)
84
+ pushItem(fallbackField, value);
85
+ }
86
+ else {
87
+ for (let i = 0; i < input.length - 1; i += 2)
88
+ pushItem(input[i], input[i + 1]);
89
+ }
90
+ return items;
91
+ }
92
+ for (const entry of input) {
93
+ if (Array.isArray(entry)) {
94
+ const [key, value] = entry;
95
+ pushItem(key, value);
96
+ continue;
97
+ }
98
+ if (typeof entry === 'string') {
99
+ if (fallbackField)
100
+ pushItem(fallbackField, entry);
101
+ continue;
102
+ }
103
+ if (isRecord(entry)) {
104
+ let key = entry.searchKey ?? entry.field ?? entry.key;
105
+ let value = entry.searchValue ?? entry.value ?? entry.values ?? entry.options;
106
+ if ((!key || typeof key !== 'string') && value === undefined) {
107
+ const owned = Object.entries(entry);
108
+ if (owned.length === 1) {
109
+ const [derivedKey, derivedValue] = owned[0];
110
+ key = derivedKey;
111
+ value = derivedValue;
112
+ }
113
+ }
114
+ pushItem(key, value);
115
+ }
116
+ }
117
+ return items;
118
+ }
119
+ if (isRecord(input)) {
120
+ for (const [key, value] of Object.entries(input))
121
+ pushItem(key, value);
122
+ }
123
+ return items;
124
+ };
125
+ const buildApiUrl = (inputUrl, queryItems) => {
126
+ if (!inputUrl || !queryItems.length)
127
+ return inputUrl;
128
+ const hashIndex = inputUrl.indexOf('#');
129
+ const hash = hashIndex >= 0 ? inputUrl.slice(hashIndex) : '';
130
+ const beforeHash = hashIndex >= 0 ? inputUrl.slice(0, hashIndex) : inputUrl;
131
+ const queryIndex = beforeHash.indexOf('?');
132
+ const path = queryIndex >= 0 ? beforeHash.slice(0, queryIndex) : beforeHash;
133
+ const existingQuery = queryIndex >= 0 ? beforeHash.slice(queryIndex + 1) : '';
134
+ const params = new URLSearchParams(existingQuery);
135
+ for (const { searchKey, searchValue } of queryItems) {
136
+ if (!searchKey)
137
+ continue;
138
+ const values = Array.isArray(searchValue) ? searchValue : [searchValue];
139
+ if (!values.length)
140
+ continue;
141
+ params.delete(searchKey);
142
+ for (const value of values)
143
+ params.append(searchKey, value);
144
+ }
145
+ const queryString = params.toString();
146
+ if (!queryString)
147
+ return `${path}${hash}`;
148
+ return `${path}?${queryString}${hash}`;
149
+ };
150
+ const dedupeByCanonical = (records) => {
151
+ const seen = new Set();
152
+ const result = [];
153
+ for (const record of records) {
154
+ const canonical = getValueAtPath(record, 'canonical');
155
+ if (typeof canonical === 'string') {
156
+ if (seen.has(canonical))
157
+ continue;
158
+ seen.add(canonical);
159
+ }
160
+ result.push(record);
161
+ }
162
+ return result;
163
+ };
164
+ const fetchApiRecords = async (apiUrl, queryItems, options) => {
165
+ const { apiField, fetchImpl } = options;
166
+ const urlToRequest = buildApiUrl(apiUrl, queryItems);
167
+ const fetchFn = fetchImpl ?? globalThis.fetch;
168
+ if (!fetchFn) {
169
+ console.warn('[hydrateValues] No fetch implementation available for API source', { url: apiUrl });
170
+ return [];
171
+ }
172
+ try {
173
+ const response = await fetchFn(urlToRequest);
174
+ if (!response.ok) {
175
+ console.warn('[hydrateValues] API request failed', { url: urlToRequest, status: response.status });
176
+ return [];
177
+ }
178
+ const rawData = await response.json();
179
+ const resolved = apiField ? (getValueAtPath(rawData, apiField) ?? rawData) : rawData;
180
+ if (Array.isArray(resolved))
181
+ return resolved.filter(isRecord);
182
+ if (isRecord(resolved))
183
+ return [resolved];
184
+ return [];
185
+ }
186
+ catch (error) {
187
+ console.warn('[hydrateValues] Failed to fetch API source', { url: apiUrl, error });
188
+ return [];
189
+ }
190
+ };
191
+ const toComparableNumber = (value) => {
192
+ if (typeof value === 'number')
193
+ return value;
194
+ if (typeof value === 'string') {
195
+ const num = Number(value);
196
+ return Number.isFinite(num) ? num : null;
197
+ }
198
+ if (typeof value === 'boolean')
199
+ return value ? 1 : 0;
200
+ return null;
201
+ };
202
+ const compareValues = (left, right) => {
203
+ if (left == null && right == null)
204
+ return 0;
205
+ if (left == null)
206
+ return -1;
207
+ if (right == null)
208
+ return 1;
209
+ const leftNumber = toComparableNumber(left);
210
+ const rightNumber = toComparableNumber(right);
211
+ if (leftNumber != null && rightNumber != null)
212
+ return leftNumber - rightNumber;
213
+ const leftString = String(left);
214
+ const rightString = String(right);
215
+ return leftString.localeCompare(rightString, undefined, { numeric: true, sensitivity: 'base' });
216
+ };
217
+ const ensureArray = (value) => {
218
+ if (Array.isArray(value))
219
+ return value;
220
+ if (value == null)
221
+ return [];
222
+ return [value];
223
+ };
224
+ const matchesFilter = (record, filter) => {
225
+ if (!filter || typeof filter.field !== 'string')
226
+ return true;
227
+ const field = filter.field.trim();
228
+ if (!field)
229
+ return true;
230
+ const left = getValueAtPath(record, field);
231
+ const operator = (filter.operator ?? '==').toLowerCase();
232
+ const singleValue = filter.value ?? (Array.isArray(filter.values) ? filter.values[0] : undefined);
233
+ const arrayValues = Array.isArray(filter.values)
234
+ ? filter.values
235
+ : Array.isArray(filter.options)
236
+ ? ensureArray(filter.options)
237
+ : Array.isArray(filter.value)
238
+ ? ensureArray(filter.value)
239
+ : undefined;
240
+ switch (operator) {
241
+ case '==':
242
+ case '=':
243
+ case '===':
244
+ case 'eq':
245
+ return left === singleValue;
246
+ case '!=':
247
+ case '!==':
248
+ case '<>':
249
+ case 'neq':
250
+ return left !== singleValue;
251
+ case '>':
252
+ case 'gt':
253
+ return compareValues(left, singleValue) > 0;
254
+ case '>=':
255
+ case 'gte':
256
+ return compareValues(left, singleValue) >= 0;
257
+ case '<':
258
+ case 'lt':
259
+ return compareValues(left, singleValue) < 0;
260
+ case '<=':
261
+ case 'lte':
262
+ return compareValues(left, singleValue) <= 0;
263
+ case 'in': {
264
+ const candidates = arrayValues ?? ensureArray(filter.value);
265
+ return candidates.some(candidate => candidate === left);
266
+ }
267
+ case 'not-in': {
268
+ const candidates = arrayValues ?? ensureArray(filter.value);
269
+ return !candidates.some(candidate => candidate === left);
270
+ }
271
+ case 'array-contains':
272
+ case 'contains': {
273
+ if (!Array.isArray(left))
274
+ return false;
275
+ return left.some(entry => entry === singleValue);
276
+ }
277
+ case 'array-contains-any': {
278
+ if (!Array.isArray(left))
279
+ return false;
280
+ const candidates = arrayValues ?? ensureArray(filter.value);
281
+ return candidates.some(candidate => left.some(entry => entry === candidate));
282
+ }
283
+ case 'array-contains-all': {
284
+ if (!Array.isArray(left))
285
+ return false;
286
+ const candidates = arrayValues ?? ensureArray(filter.value);
287
+ return candidates.every(candidate => left.some(entry => entry === candidate));
288
+ }
289
+ case 'exists':
290
+ return left != null;
291
+ case 'not-exists':
292
+ case 'missing':
293
+ return left == null;
294
+ default:
295
+ return true;
296
+ }
297
+ };
298
+ const applyFilters = (records, filters) => {
299
+ if (!filters.length)
300
+ return records;
301
+ return records.filter(record => filters.every(filter => matchesFilter(record, filter)));
302
+ };
303
+ const applyOrdering = (records, orders) => {
304
+ if (!orders.length)
305
+ return records;
306
+ const validOrders = orders
307
+ .filter(order => order && typeof order.field === 'string' && order.field.trim().length > 0);
308
+ if (!validOrders.length)
309
+ return records;
310
+ const sorted = [...records];
311
+ sorted.sort((a, b) => {
312
+ for (const order of validOrders) {
313
+ const direction = (order.direction ?? 'asc').toLowerCase() === 'desc' ? -1 : 1;
314
+ const comparison = compareValues(getValueAtPath(a, order.field), getValueAtPath(b, order.field));
315
+ if (comparison !== 0)
316
+ return comparison * direction;
317
+ }
318
+ return 0;
319
+ });
320
+ return sorted;
321
+ };
322
+ const applyLimit = (records, limit) => {
323
+ if (!limit || limit <= 0)
324
+ return records;
325
+ return records.slice(0, limit);
326
+ };
327
+ const limitArrayValue = (value, limit) => {
328
+ if (!Array.isArray(value))
329
+ return value;
330
+ if (!limit || limit <= 0)
331
+ return [...value];
332
+ return value.slice(0, limit);
333
+ };
334
+ const resolveBaseKey = (collection, fallbackField) => {
335
+ const candidates = [
336
+ typeof collection.baseKey === 'string' ? collection.baseKey.trim() : undefined,
337
+ typeof collection.path === 'string' ? collection.path.trim() : undefined,
338
+ fallbackField,
339
+ ];
340
+ for (const candidate of candidates) {
341
+ if (candidate && candidate.length)
342
+ return candidate;
343
+ }
344
+ return null;
345
+ };
346
+ const extractTemplateConfigs = (content) => {
347
+ const configs = new Map();
348
+ if (!content)
349
+ return configs;
350
+ const arrayBlockRegex = new RegExp(ARRAY_BLOCK_RE.source, ARRAY_BLOCK_RE.flags);
351
+ for (const match of content.matchAll(arrayBlockRegex)) {
352
+ const json = match[1];
353
+ const parsed = parseConfig(json) ?? {};
354
+ if (!isRecord(parsed))
355
+ continue;
356
+ const fieldRaw = parsed.field;
357
+ if (typeof fieldRaw !== 'string' || !fieldRaw.trim())
358
+ continue;
359
+ const field = fieldRaw.trim();
360
+ const config = { field };
361
+ if (parsed.collection && isRecord(parsed.collection))
362
+ config.collection = parsed.collection;
363
+ if ('queryItems' in parsed)
364
+ config.queryItems = parsed.queryItems;
365
+ // if (Array.isArray(parsed.queryOptions))
366
+ // config.queryOptions = parsed.queryOptions as QueryFilter[]
367
+ if ('limit' in parsed)
368
+ config.limit = parsed.limit;
369
+ if (typeof parsed.api === 'string')
370
+ config.api = parsed.api;
371
+ if (typeof parsed.apiField === 'string')
372
+ config.apiField = parsed.apiField;
373
+ if ('apiQuery' in parsed)
374
+ config.apiQuery = parsed.apiQuery;
375
+ if ('value' in parsed)
376
+ config.value = parsed.value;
377
+ configs.set(field, config);
378
+ }
379
+ return configs;
380
+ };
381
+ const extractMetaConfigs = (meta) => {
382
+ const configs = new Map();
383
+ if (!meta)
384
+ return configs;
385
+ for (const [field, entry] of Object.entries(meta)) {
386
+ if (!entry)
387
+ continue;
388
+ const trimmedField = field.trim();
389
+ if (!trimmedField)
390
+ continue;
391
+ const config = { field: trimmedField };
392
+ if (entry.collection && isRecord(entry.collection))
393
+ config.collection = entry.collection;
394
+ if ('queryItems' in entry)
395
+ config.queryItems = entry.queryItems;
396
+ // if (Array.isArray(entry.queryOptions))
397
+ // config.queryOptions = entry.queryOptions as QueryFilter[]
398
+ if ('limit' in entry)
399
+ config.limit = entry.limit;
400
+ if (typeof entry.api === 'string')
401
+ config.api = entry.api;
402
+ if (typeof entry.apiField === 'string')
403
+ config.apiField = entry.apiField;
404
+ if ('apiQuery' in entry)
405
+ config.apiQuery = entry.apiQuery;
406
+ if ('value' in entry)
407
+ config.value = entry.value;
408
+ configs.set(trimmedField, config);
409
+ }
410
+ return configs;
411
+ };
412
+ const mergeCollections = (base, override) => {
413
+ if (!base && !override)
414
+ return null;
415
+ return {
416
+ path: (override?.path ?? base?.path) ?? undefined,
417
+ baseKey: (override?.baseKey ?? base?.baseKey) ?? undefined,
418
+ query: Array.isArray(override?.query)
419
+ ? override.query
420
+ : Array.isArray(base?.query)
421
+ ? base.query
422
+ : undefined,
423
+ order: Array.isArray(override?.order)
424
+ ? override.order
425
+ : Array.isArray(base?.order)
426
+ ? base.order
427
+ : undefined,
428
+ };
429
+ };
430
+ const firstOptionField = (options) => {
431
+ if (!Array.isArray(options))
432
+ return undefined;
433
+ for (const option of options) {
434
+ if (option && typeof option.field === 'string' && option.field.trim())
435
+ return option.field.trim();
436
+ }
437
+ return undefined;
438
+ };
439
+ const toValidFilters = (...sources) => {
440
+ const filters = [];
441
+ for (const source of sources) {
442
+ if (!Array.isArray(source))
443
+ continue;
444
+ for (const entry of source) {
445
+ if (entry && typeof entry.field === 'string' && entry.field.trim())
446
+ filters.push(entry);
447
+ }
448
+ }
449
+ return filters;
450
+ };
451
+ const toValidOrders = (orders) => {
452
+ if (!Array.isArray(orders))
453
+ return [];
454
+ return orders
455
+ .filter(order => order && typeof order.field === 'string' && order.field.trim())
456
+ .map(order => ({
457
+ field: order.field.trim(),
458
+ direction: order.direction,
459
+ }));
460
+ };
461
+ const buildNormalizedConfigs = (templateConfigs, metaConfigs, initialValues) => {
462
+ const fields = new Set([
463
+ ...templateConfigs.keys(),
464
+ ...metaConfigs.keys(),
465
+ ]);
466
+ const normalized = [];
467
+ for (const field of fields) {
468
+ const base = templateConfigs.get(field);
469
+ const override = metaConfigs.get(field);
470
+ const collection = mergeCollections(base?.collection, override?.collection);
471
+ const baseKey = collection ? resolveBaseKey(collection, field) ?? undefined : undefined;
472
+ const apiUrl = pickString(override?.api ?? base?.api);
473
+ const apiField = pickString(override?.apiField ?? base?.apiField);
474
+ const selectedQueryItems = override?.queryItems ?? base?.queryItems;
475
+ const fallbackField = firstOptionField(override?.queryOptions) ?? firstOptionField(base?.queryOptions);
476
+ const queryItems = normalizeQueryItems(selectedQueryItems, fallbackField);
477
+ const searchKeys = new Set(queryItems.map(item => item.searchKey));
478
+ const filters = collection && baseKey
479
+ ? toValidFilters(collection.query, override?.queryOptions ?? base?.queryOptions)
480
+ .filter(filter => !searchKeys.has(filter.field.trim()))
481
+ : [];
482
+ const orders = collection && baseKey
483
+ ? toValidOrders(collection.order)
484
+ : [];
485
+ const limit = normalizeLimit(override?.limit ?? base?.limit);
486
+ const fallbackValue = override?.value ?? base?.value ?? initialValues?.[field];
487
+ if (!baseKey && !apiUrl && fallbackValue === undefined)
488
+ continue;
489
+ normalized.push({
490
+ field,
491
+ baseKey,
492
+ apiUrl,
493
+ apiField,
494
+ queryItems,
495
+ filters,
496
+ orders,
497
+ limit,
498
+ fallbackValue,
499
+ });
500
+ }
501
+ return normalized;
502
+ };
503
+ export const hydrateValues = async (options) => {
504
+ const { content, meta, values, uniqueKey, clientOptions, } = options;
505
+ const templateConfigs = extractTemplateConfigs(content);
506
+ const metaConfigs = extractMetaConfigs(meta);
507
+ const normalizedConfigs = buildNormalizedConfigs(templateConfigs, metaConfigs, values);
508
+ const resultValues = { ...(values ?? {}) };
509
+ if (!normalizedConfigs.length)
510
+ return resultValues;
511
+ const kvClient = createKvIndexClient(clientOptions);
512
+ const apiFetch = clientOptions.fetch ?? globalThis.fetch;
513
+ for (const config of normalizedConfigs) {
514
+ const hasApiSource = !!(config.apiUrl && config.apiUrl.length);
515
+ const canQueryCollection = !!config.baseKey;
516
+ if (!hasApiSource && !canQueryCollection) {
517
+ if (config.fallbackValue !== undefined) {
518
+ resultValues[config.field] = Array.isArray(config.fallbackValue)
519
+ ? limitArrayValue(config.fallbackValue, config.limit)
520
+ : config.fallbackValue;
521
+ }
522
+ continue;
523
+ }
524
+ let records = [];
525
+ if (hasApiSource && config.apiUrl) {
526
+ records = await fetchApiRecords(config.apiUrl, config.queryItems, {
527
+ apiField: config.apiField,
528
+ fetchImpl: apiFetch,
529
+ });
530
+ }
531
+ else if (canQueryCollection && config.baseKey) {
532
+ const collected = [];
533
+ const queryTargets = config.queryItems.length
534
+ ? config.queryItems
535
+ : [undefined];
536
+ for (const item of queryTargets) {
537
+ const enrichedParams = {
538
+ baseKey: config.baseKey,
539
+ uniqueKey,
540
+ ...(item?.searchKey ? { searchKey: item.searchKey } : {}),
541
+ ...(item?.searchValue !== undefined ? { searchValue: item.searchValue } : {}),
542
+ };
543
+ const queried = await kvClient.queryIndex(enrichedParams);
544
+ if (Array.isArray(queried))
545
+ collected.push(...queried);
546
+ }
547
+ records = collected;
548
+ }
549
+ if (!records.length) {
550
+ if (config.fallbackValue !== undefined) {
551
+ resultValues[config.field] = Array.isArray(config.fallbackValue)
552
+ ? limitArrayValue(config.fallbackValue, config.limit)
553
+ : config.fallbackValue;
554
+ }
555
+ else {
556
+ resultValues[config.field] = [];
557
+ }
558
+ continue;
559
+ }
560
+ const deduped = dedupeByCanonical(records);
561
+ const filtered = applyFilters(deduped, config.filters);
562
+ const ordered = applyOrdering(filtered, config.orders);
563
+ const limited = applyLimit(ordered, config.limit);
564
+ resultValues[config.field] = limited;
565
+ }
566
+ return resultValues;
567
+ };
568
+ //# sourceMappingURL=hydrateValues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrateValues.js","sourceRoot":"","sources":["../src/hydrateValues.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { hydrateValues, type HydrateValuesOptions } from './hydrateValues';
2
+ import { unoCssFromHtml } from './unoSsr';
3
+ import type { TemplateMeta, TemplateValues } from './types';
4
+ export { hydrateValues };
5
+ export type { HydrateValuesOptions };
6
+ export type { SchemaValue, SchemaArrayEntry, SchemaMap, MetaEntry, TemplateMeta, TemplateValues, CollectionDefinition, QueryFilter, QueryOrder, QueryItemsInput, } from './types';
7
+ export { createKvIndexClient, type KvIndexClient, type KvIndexClientOptions, type KvIndexQueryParams, type KVNamespaceLike, type KvIndexRecord, } from './kvIndexClient';
8
+ export { normalizeTheme, buildCssVarsBlock, } from './unoSsr';
9
+ export { unoCssFromHtml };
10
+ export declare const renderTemplate: (content: string, values?: TemplateValues, meta?: TemplateMeta) => string;
11
+ export interface PageRenderBlock {
12
+ name?: string | null;
13
+ content: string;
14
+ values?: TemplateValues | null;
15
+ meta?: TemplateMeta | null;
16
+ }
17
+ export interface PageRenderResultBlock {
18
+ name?: string;
19
+ html: string;
20
+ }
21
+ export interface PageRenderResult {
22
+ blocks: PageRenderResultBlock[];
23
+ css: string;
24
+ }
25
+ export type PageRenderHydrateOptions = Pick<HydrateValuesOptions, 'uniqueKey' | 'clientOptions'>;
26
+ export declare const pageRender: (blocks: PageRenderBlock[], theme: Record<string, unknown> | null | undefined, extraHtml?: string | null | undefined, hydrateOptions?: PageRenderHydrateOptions | null) => Promise<PageRenderResult>;
27
+ export default renderTemplate;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAwB,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,YAAY,EAAE,oBAAoB,EAAE,CAAA;AACpC,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,SAAS,CAAA;AAEhB,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,cAAc,EAAE,CAAA;AAwGzB,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,SAAQ,cAAmB,EAC3B,OAAM,YAAiB,KACtB,MA6NF,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,qBAAqB,EAAE,CAAA;IAC/B,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,eAAe,CAAC,CAAA;AA8ChG,eAAO,MAAM,UAAU,GACrB,QAAQ,eAAe,EAAE,EACzB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACjD,YAAW,MAAM,GAAG,IAAI,GAAG,SAAc,EACzC,iBAAiB,wBAAwB,GAAG,IAAI,KAC/C,OAAO,CAAC,gBAAgB,CA6C1B,CAAA;AAED,eAAe,cAAc,CAAA"}