@hozu/devtools 0.16.0 → 0.17.1

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,303 @@
1
+ import { h } from './dom.js';
2
+ const json = async (url) => {
3
+ const res = await fetch(url, { cache: 'no-store' }).catch(() => null);
4
+ return res?.ok ? (await res.json()) : null;
5
+ };
6
+ /** The default, each variant value on its own, then the named previews (ADR 0058 G). */
7
+ export function tilesOf(c) {
8
+ const children = c.children ? { children: c.name } : {};
9
+ const tiles = [{ label: 'Default', use: { variant: {}, ...children }, preview: false }];
10
+ for (const [dim, values] of Object.entries(c.variants))
11
+ for (const value of values)
12
+ if (value !== c.defaults[dim])
13
+ tiles.push({
14
+ label: `${dim}: ${value}`,
15
+ use: { variant: { [dim]: value }, ...children },
16
+ preview: false,
17
+ });
18
+ for (const p of c.previews)
19
+ tiles.push({ label: p.name, use: { ...children, ...p.use }, preview: true });
20
+ return tiles;
21
+ }
22
+ const schemaRows = (props) => Object.entries((props.properties ?? {})).map(([k, s]) => [k, Array.isArray(s.enum) ? s.enum.map(String).join(' | ') : String(s.type ?? 'any')]);
23
+ export function assetsBoard(host) {
24
+ const board = h('div', { class: 'assets', hidden: true, role: 'dialog', 'aria-label': 'Assets' });
25
+ for (const type of ['pointerdown', 'pointermove', 'mousedown', 'click', 'dragstart'])
26
+ board.addEventListener(type, (event) => event.stopPropagation());
27
+ let tab = 'components';
28
+ let catalog = [];
29
+ let screens = { pages: [] };
30
+ let query = '';
31
+ let detail = null;
32
+ const watched = new IntersectionObserver((entries) => {
33
+ for (const e of entries)
34
+ if (e.isIntersecting) {
35
+ watched.unobserve(e.target);
36
+ void fill(e.target);
37
+ }
38
+ });
39
+ const fill = async (frame) => {
40
+ const id = frame.dataset.id ?? '';
41
+ const use = frame.dataset.use ?? '{}';
42
+ const out = await json(`/_hozu/dev/component?id=${encodeURIComponent(id)}&use=${encodeURIComponent(use)}`);
43
+ if (!out?.ok) {
44
+ frame.replaceWith(h('div', { class: 'tile-problem' }, [out?.problems.join('; ') || 'Could not render this use']));
45
+ return;
46
+ }
47
+ const links = host
48
+ .stylesheets()
49
+ .map((href) => `<link rel="stylesheet" href="${href.replace(/"/g, '&quot;')}">`)
50
+ .join('');
51
+ const fit = () => {
52
+ const body = frame.contentDocument?.body;
53
+ if (body)
54
+ frame.style.height = `${Math.min(320, Math.max(72, body.scrollHeight))}px`;
55
+ };
56
+ frame.addEventListener('load', () => {
57
+ const doc = frame.contentDocument;
58
+ const tile = frame.closest('.tile');
59
+ if (doc && tile && doc.documentElement.scrollWidth > frame.clientWidth + 2) {
60
+ tile.classList.add('wide');
61
+ requestAnimationFrame(fit);
62
+ }
63
+ fit();
64
+ });
65
+ frame.srcdoc = `<!doctype html><html><head><meta charset="utf-8">${links}<style>html,body{margin:0;background:transparent}body{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:16px;min-height:72px;box-sizing:border-box}</style></head><body>${out.html}</body></html>`;
66
+ };
67
+ const frameFor = (c, t) => {
68
+ const frame = h('iframe', {
69
+ class: 'tile-frame',
70
+ sandbox: 'allow-same-origin',
71
+ title: `${c.id} · ${t.label}`,
72
+ 'data-id': c.id,
73
+ 'data-use': JSON.stringify(t.use),
74
+ });
75
+ watched.observe(frame);
76
+ return frame;
77
+ };
78
+ const pagesOf = (c) => [
79
+ ...new Map(c.uses.flatMap((u) => u.pages).map((p) => [p.route, p])).values(),
80
+ ];
81
+ const where = (c) => {
82
+ const pages = pagesOf(c);
83
+ return pages.length
84
+ ? pages.map((p) => h('span', { class: 'chip' }, [p.path]))
85
+ : [h('span', { class: 'hint-text' }, ['Not used on a page yet'])];
86
+ };
87
+ const cards = new Map();
88
+ const card = (c) => {
89
+ const kept = cards.get(c.id);
90
+ if (kept)
91
+ return kept;
92
+ const made = cardOf(c);
93
+ cards.set(c.id, made);
94
+ return made;
95
+ };
96
+ const cardOf = (c) => h('section', { class: 'asset', 'data-component': c.id }, [
97
+ h('div', { class: 'asset-head' }, [
98
+ h('button', {
99
+ class: 'asset-name',
100
+ type: 'button',
101
+ onclick: () => {
102
+ detail = c;
103
+ void render();
104
+ },
105
+ }, [h('b', {}, [c.name]), host.plain ? '' : h('code', {}, [` ${c.id}`])]),
106
+ h('span', { class: 'asset-uses' }, [
107
+ `${c.places} ${c.places === 1 ? 'place' : 'places'}`,
108
+ ` · ${pagesOf(c).length} ${pagesOf(c).length === 1 ? 'page' : 'pages'}`,
109
+ c.client ? ' · runs in the browser (shown as its server render)' : '',
110
+ ]),
111
+ ]),
112
+ h('div', { class: 'tiles' }, tilesOf(c).map((t) => h('figure', { class: t.preview ? 'tile preview' : 'tile' }, [
113
+ frameFor(c, t),
114
+ h('figcaption', {}, [t.preview ? `★ ${t.label}` : t.label]),
115
+ ]))),
116
+ ]);
117
+ const detailView = (c) => {
118
+ const note = h('textarea', {
119
+ rows: '3',
120
+ placeholder: c.uses.length ? `What should change in every ${c.name}?` : 'Not used on a page yet',
121
+ 'aria-label': `Change the main component ${c.name}`,
122
+ disabled: c.uses.length === 0,
123
+ oninput: (e) => {
124
+ const add = e.target.parentElement?.querySelector('[data-add]');
125
+ if (add)
126
+ add.disabled = !e.target.value.trim();
127
+ },
128
+ });
129
+ return h('aside', { class: 'asset-detail' }, [
130
+ h('button', {
131
+ class: 'link',
132
+ type: 'button',
133
+ onclick: () => {
134
+ detail = null;
135
+ void render();
136
+ },
137
+ }, ['← All assets']),
138
+ h('h2', {}, [c.name]),
139
+ h('p', { class: 'hint-text' }, [
140
+ `${c.owner.kind === 'kit' ? 'Kit' : 'Feature'} ${c.owner.id}`,
141
+ c.location ? ` · ${c.location.file}:${c.location.line}` : '',
142
+ ]),
143
+ h('div', { class: 'label' }, ['Variants']),
144
+ ...(Object.keys(c.variants).length
145
+ ? Object.entries(c.variants).map(([k, v]) => h('p', {}, [h('b', {}, [k]), `: ${v.join(', ')}`]))
146
+ : [h('p', { class: 'hint-text' }, ['None'])]),
147
+ h('div', { class: 'label' }, ['Properties']),
148
+ ...(schemaRows(c.props).length
149
+ ? schemaRows(c.props).map(([k, t]) => h('p', {}, [h('code', {}, [k]), ` ${t}`]))
150
+ : [h('p', { class: 'hint-text' }, ['None'])]),
151
+ c.slots.length ? h('p', {}, [h('b', {}, ['Slots']), `: ${c.slots.join(', ')}`]) : null,
152
+ h('div', { class: 'label' }, ['Where used']),
153
+ h('div', { class: 'chips' }, where(c)),
154
+ c.uses.length
155
+ ? h('button', { class: 'act', type: 'button', onclick: () => host.show(c) }, ['Show the instances'])
156
+ : null,
157
+ h('div', { class: 'label' }, ['Change the main component']),
158
+ note,
159
+ h('button', {
160
+ class: 'primary',
161
+ type: 'button',
162
+ disabled: true,
163
+ 'data-add': true,
164
+ onclick: () => {
165
+ if (note.value.trim())
166
+ host.change(c, note.value.trim());
167
+ },
168
+ }, ['Add to the request']),
169
+ ]);
170
+ };
171
+ const styles = async () => {
172
+ const t = await host.theme();
173
+ if (!t)
174
+ return h('p', { class: 'hint-text' }, ['No theme found']);
175
+ const own = t.own.length ? t.own : Object.keys(t.colors).slice(0, 16);
176
+ const sorted = (table) => Object.entries(table).sort((a, b) => a[1] - b[1]);
177
+ return h('div', { class: 'styles' }, [
178
+ h('div', { class: 'label' }, ['Colours']),
179
+ h('div', { class: 'swatches' }, own.map((name) => {
180
+ const sw = h('span', { class: 'big-swatch' });
181
+ sw.style.background = t.colors[name] ?? '';
182
+ return h('figure', { class: 'colour' }, [
183
+ sw,
184
+ h('figcaption', {}, [h('b', {}, [name]), ` ${t.colors[name]}`]),
185
+ ]);
186
+ })),
187
+ h('div', { class: 'label' }, ['Text sizes']),
188
+ h('div', { class: 'type-rows' }, sorted(t.text).map(([name, px]) => {
189
+ const sample = h('span', { class: 'type-sample' }, ['Aa']);
190
+ sample.style.fontSize = `${Math.min(px, 64)}px`;
191
+ return h('div', { class: 'type-row' }, [sample, h('code', {}, [`${name} · ${px}px`])]);
192
+ })),
193
+ h('div', { class: 'label' }, ['Corner radius']),
194
+ h('div', { class: 'swatches' }, sorted(t.radius).map(([name, px]) => {
195
+ const box = h('span', { class: 'radius-box' });
196
+ box.style.borderRadius = `${px}px`;
197
+ return h('figure', { class: 'colour' }, [box, h('figcaption', {}, [`${name} · ${px}px`])]);
198
+ })),
199
+ h('div', { class: 'label' }, ['Shadows']),
200
+ h('div', { class: 'swatches' }, Object.entries(t.shadow).map(([name, value]) => {
201
+ const box = h('span', { class: 'shadow-box' });
202
+ box.style.boxShadow = value;
203
+ return h('figure', { class: 'colour' }, [box, h('figcaption', {}, [name])]);
204
+ })),
205
+ h('p', { class: 'hint-text' }, [`Spacing unit ${t.spacing}px: p-4 is ${t.spacing * 4}px.`]),
206
+ ]);
207
+ };
208
+ const screensView = () => screens.pages.some((p) => p.previews.length)
209
+ ? h('div', { class: 'screens' }, [
210
+ h('div', { class: 'label' }, ['Screens']),
211
+ ...screens.pages.flatMap((p) => p.previews.map((s) => h('div', { class: 'screen' }, [
212
+ h('code', {}, [p.path]),
213
+ h('b', {}, [s.name]),
214
+ p.path.includes(':')
215
+ ? h('span', { class: 'hint-text' }, ['open the page, then Layers → Previews'])
216
+ : h('button', { class: 'act', type: 'button', onclick: () => host.screen(p.route, p.path, s.name) }, ['Open']),
217
+ ]))),
218
+ ])
219
+ : null;
220
+ const listBody = () => {
221
+ const q = query.trim().toLowerCase();
222
+ const shown = catalog.filter((c) => !q || c.id.toLowerCase().includes(q));
223
+ const owners = [...new Set(shown.map((c) => c.owner.id))];
224
+ return h('div', { class: 'assets-body' }, [
225
+ ...owners.map((o) => h('div', { class: 'owner' }, [
226
+ h('div', { class: 'label' }, [`${o} · ${shown.filter((c) => c.owner.id === o).length}`]),
227
+ ...shown.filter((c) => c.owner.id === o).map(card),
228
+ ])),
229
+ shown.length ? null : h('p', { class: 'hint-text' }, ['No components match']),
230
+ q ? null : screensView(),
231
+ ]);
232
+ };
233
+ const search = h('input', {
234
+ type: 'search',
235
+ class: 'outcome',
236
+ placeholder: 'Find a component…',
237
+ 'aria-label': 'Find a component',
238
+ oninput: (e) => {
239
+ query = e.target.value;
240
+ board.querySelector(':scope > .assets-body')?.replaceWith(listBody());
241
+ },
242
+ });
243
+ const render = async () => {
244
+ search.value = query;
245
+ const head = h('header', { class: 'assets-head' }, [
246
+ h('b', {}, ['Assets']),
247
+ h('div', { class: 'seg' }, [
248
+ h('button', {
249
+ class: 'mode',
250
+ type: 'button',
251
+ 'aria-pressed': String(tab === 'components'),
252
+ onclick: () => {
253
+ tab = 'components';
254
+ void render();
255
+ },
256
+ }, ['Components']),
257
+ h('button', {
258
+ class: 'mode',
259
+ type: 'button',
260
+ 'aria-pressed': String(tab === 'styles'),
261
+ onclick: () => {
262
+ tab = 'styles';
263
+ void render();
264
+ },
265
+ }, ['Styles']),
266
+ ]),
267
+ tab === 'components' && !detail ? search : null,
268
+ h('button', { class: 'act', type: 'button', onclick: () => close() }, ['Close']),
269
+ ]);
270
+ if (tab === 'styles') {
271
+ board.replaceChildren(head, h('div', { class: 'assets-body' }, [await styles()]));
272
+ return;
273
+ }
274
+ if (detail) {
275
+ board.replaceChildren(head, h('div', { class: 'assets-body detail' }, [
276
+ h('div', { class: 'assets-main' }, [card(detail)]),
277
+ detailView(detail),
278
+ ]));
279
+ return;
280
+ }
281
+ board.replaceChildren(head, listBody());
282
+ };
283
+ const open = async () => {
284
+ board.hidden = false;
285
+ board.replaceChildren(h('p', { class: 'hint-text' }, ['Loading the components…']));
286
+ catalog = (await json('/_hozu/dev/components')) ?? [];
287
+ cards.clear();
288
+ screens = (await json('/_hozu/dev/previews')) ?? { pages: [] };
289
+ await render();
290
+ };
291
+ const close = () => {
292
+ board.hidden = true;
293
+ detail = null;
294
+ };
295
+ return {
296
+ board,
297
+ open,
298
+ close,
299
+ isOpen: () => !board.hidden,
300
+ catalog: () => json('/_hozu/dev/components'),
301
+ };
302
+ }
303
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/overlay/assets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAA;AA4B5B,MAAM,IAAI,GAAG,KAAK,EAAK,GAAW,EAAqB,EAAE;IACvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACrE,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC,CAAA;AAED,wFAAwF;AACxF,MAAM,UAAU,OAAO,CAAC,CAAa;IACnC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,MAAM,KAAK,GAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/F,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,MAAM;YACxB,IAAI,KAAK,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE;oBACzB,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAE;oBAC/C,OAAO,EAAE,KAAK;iBACf,CAAC,CAAA;IACR,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACxG,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,KAA0B,EAAE,EAAE,CAChD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAyD,CAAC,CAAC,GAAG,CAClG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAClG,CAAA;AAEH,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAA;IACjG,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC;QAClF,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;IAClE,IAAI,GAAG,GAA4B,YAAY,CAAA;IAC/C,IAAI,OAAO,GAAiB,EAAE,CAAA;IAC9B,IAAI,OAAO,GAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IACpC,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,MAAM,GAAsB,IAAI,CAAA;IACpC,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,EAAE;QACnD,KAAK,MAAM,CAAC,IAAI,OAAO;YACrB,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;gBACrB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;gBAC3B,KAAK,IAAI,CAAC,CAAC,CAAC,MAA2B,CAAC,CAAA;YAC1C,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,KAAK,EAAE,KAAwB,EAAE,EAAE;QAC9C,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAA;QACjC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAA;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,2BAA2B,kBAAkB,CAAC,EAAE,CAAC,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE,CACnF,CAAA;QACD,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;YACb,KAAK,CAAC,WAAW,CACf,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC,CAC/F,CAAA;YACD,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,IAAI;aACf,WAAW,EAAE;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gCAAgC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;aAC/E,IAAI,CAAC,EAAE,CAAC,CAAA;QACX,MAAM,GAAG,GAAG,GAAG,EAAE;YACf,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,EAAE,IAAI,CAAA;YACxC,IAAI,IAAI;gBAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAA;QACtF,CAAC,CAAA;QACD,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAA;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACnC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,eAAe,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC3E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;YACD,GAAG,EAAE,CAAA;QACP,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,GAAG,oDAAoD,KAAK,+MAA+M,GAAG,CAAC,IAAI,gBAAgB,CAAA;IACjT,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,CAAa,EAAE,CAAO,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE;YACxB,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,mBAAmB;YAC5B,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;YAC7B,SAAS,EAAE,CAAC,CAAC,EAAE;YACf,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;SAClC,CAAsB,CAAA;QACvB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC;QACjC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;KAC7E,CAAA;IACD,MAAM,KAAK,GAAG,CAAC,CAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACxB,OAAO,KAAK,CAAC,MAAM;YACjB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAA;IACrE,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC5C,MAAM,IAAI,GAAG,CAAC,CAAa,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC5B,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,CAAa,EAAE,EAAE,CAC/B,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;QACvD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;YAChC,CAAC,CACC,QAAQ,EACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,GAAG,CAAC,CAAA;oBACV,KAAK,MAAM,EAAE,CAAA;gBACf,CAAC;aACF,EACD,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACtE;YACD,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;gBACjC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACpD,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;gBACvE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,EAAE;aACtE,CAAC;SACH,CAAC;QACF,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,OAAO,EAAE,EAClB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnB,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1D,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;YACd,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC5D,CAAC,CACH,CACF;KACF,CAAC,CAAA;IAEJ,MAAM,UAAU,GAAG,CAAC,CAAa,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE;YACzB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,wBAAwB;YAChG,YAAY,EAAE,6BAA6B,CAAC,CAAC,IAAI,EAAE;YACnD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,GAAG,GAAI,CAAC,CAAC,MAAsB,CAAC,aAAa,EAAE,aAAa,CAAoB,YAAY,CAAC,CAAA;gBACnG,IAAI,GAAG;oBAAE,GAAG,CAAC,QAAQ,GAAG,CAAE,CAAC,CAAC,MAA8B,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YACzE,CAAC;SACF,CAAwB,CAAA;QACzB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;YAC3C,CAAC,CACC,QAAQ,EACR;gBACE,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,GAAG,IAAI,CAAA;oBACb,KAAK,MAAM,EAAE,CAAA;gBACf,CAAC;aACF,EACD,CAAC,cAAc,CAAC,CACjB;YACD,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;gBAC7B,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;gBAC7D,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;aAC7D,CAAC;YACF,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;gBAChC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YAC5C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;gBAC5B,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjF,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACtF,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,MAAM;gBACX,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC;gBACpG,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,2BAA2B,CAAC,CAAC;YAC3D,IAAI;YACJ,CAAC,CACC,QAAQ,EACR;gBACE,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC1D,CAAC;aACF,EACD,CAAC,oBAAoB,CAAC,CACvB;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;QACjE,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACrE,MAAM,MAAM,GAAG,CAAC,KAA6B,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACnG,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACnC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,UAAU,EAAE,EACrB,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACf,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;gBAC7C,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;gBAC1C,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;oBACtC,EAAE;oBACF,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAChE,CAAC,CAAA;YACJ,CAAC,CAAC,CACH;YACD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,WAAW,EAAE,EACtB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;gBAChC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC1D,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA;gBAC/C,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACxF,CAAC,CAAC,CACH;YACD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC;YAC/C,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,UAAU,EAAE,EACrB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;gBAC9C,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,EAAE,IAAI,CAAA;gBAClC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5F,CAAC,CAAC,CACH;YACD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,UAAU,EAAE,EACrB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;gBAC9C,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAA;gBAC3B,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7E,CAAC,CAAC,CACH;YACD,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;SAC5F,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,GAAG,EAAE,CACvB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC7B,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YACzC,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnB,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC5B,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAClB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,uCAAuC,CAAC,CAAC;oBAC9E,CAAC,CAAC,CAAC,CACC,QAAQ,EACR,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EACrF,CAAC,MAAM,CAAC,CACT;aACN,CAAC,CACH,CACF;SACF,CAAC;QACJ,CAAC,CAAC,IAAI,CAAA;IAEV,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACzE,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACzD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;YACxC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAClB,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBAC3B,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxF,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;aACnD,CAAC,CACH;YACD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;SACzB,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,kBAAkB;QAChC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAA;YAC5C,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvE,CAAC;KACF,CAAqB,CAAA;IAEtB,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;YACjD,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACzB,CAAC,CACC,QAAQ,EACR;oBACE,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,QAAQ;oBACd,cAAc,EAAE,MAAM,CAAC,GAAG,KAAK,YAAY,CAAC;oBAC5C,OAAO,EAAE,GAAG,EAAE;wBACZ,GAAG,GAAG,YAAY,CAAA;wBAClB,KAAK,MAAM,EAAE,CAAA;oBACf,CAAC;iBACF,EACD,CAAC,YAAY,CAAC,CACf;gBACD,CAAC,CACC,QAAQ,EACR;oBACE,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,QAAQ;oBACd,cAAc,EAAE,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC;oBACxC,OAAO,EAAE,GAAG,EAAE;wBACZ,GAAG,GAAG,QAAQ,CAAA;wBACd,KAAK,MAAM,EAAE,CAAA;oBACf,CAAC;iBACF,EACD,CAAC,QAAQ,CAAC,CACX;aACF,CAAC;YACF,GAAG,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC/C,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;SACjF,CAAC,CAAA;QACF,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;YACjF,OAAM;QACR,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,eAAe,CACnB,IAAI,EACJ,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE;gBACxC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClD,UAAU,CAAC,MAAM,CAAC;aACnB,CAAC,CACH,CAAA;YACD,OAAM;QACR,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAA;QACpB,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAA;QAClF,OAAO,GAAG,CAAC,MAAM,IAAI,CAAe,uBAAuB,CAAC,CAAC,IAAI,EAAE,CAAA;QACnE,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,OAAO,GAAG,CAAC,MAAM,IAAI,CAAU,qBAAqB,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;QACvE,MAAM,MAAM,EAAE,CAAA;IAChB,CAAC,CAAA;IACD,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;QACnB,MAAM,GAAG,IAAI,CAAA;IACf,CAAC,CAAA;IACD,OAAO;QACL,KAAK;QACL,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;QAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAe,uBAAuB,CAAC;KAC3D,CAAA;AACH,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import type { StyleChange } from '../prompt.ts';
2
2
  import { type StyleProp, type Theme } from '../theme.ts';
3
- export declare function current(el: Element, prop: StyleProp): string;
3
+ /** Figma's Design panel, in its order (ADR 0058 B1). */
4
+ export declare const groups: [string, StyleProp[]][];
5
+ export declare function current(el: Element, prop: StyleProp, theme?: Theme | null): string;
4
6
  export declare function preview(el: Element | null, changes: StyleChange[]): void;
5
7
  export declare function lookSection(el: Element | null, changes: StyleChange[], theme: Theme | null, plain: boolean, onChange: (changes: StyleChange[]) => void): HTMLElement;
6
8
  //# sourceMappingURL=look.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"look.d.ts","sourceRoot":"","sources":["../../src/overlay/look.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AA0BnE,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAO5D;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAKjE;AAyBD,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,GAAG,IAAI,EAClB,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,GACzC,WAAW,CAyDb"}
1
+ {"version":3,"file":"look.d.ts","sourceRoot":"","sources":["../../src/overlay/look.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,KAAK,EAGX,MAAM,aAAa,CAAA;AAqCpB,wDAAwD;AACxD,eAAO,MAAM,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAQzC,CAAA;AAOD,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,GAAE,KAAK,GAAG,IAAW,GAAG,MAAM,CAiBxF;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QASjE;AAyDD,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,GAAG,IAAI,EAClB,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,GACzC,WAAW,CAwEb"}
@@ -1,35 +1,75 @@
1
- import { normalHex } from '../theme.js';
1
+ import { borderSteps, currentUtility, normalHex, utilityFor, utilityValue, } from '../theme.js';
2
2
  import { h } from './dom.js';
3
3
  const css = {
4
+ width: 'width',
5
+ height: 'height',
6
+ borderRadius: 'border-radius',
7
+ gap: 'gap',
8
+ paddingInline: 'padding-inline',
9
+ paddingBlock: 'padding-block',
10
+ opacity: 'opacity',
11
+ backgroundColor: 'background-color',
12
+ borderWidth: 'border-width',
13
+ borderColor: 'border-color',
14
+ boxShadow: 'box-shadow',
4
15
  fontSize: 'font-size',
5
16
  fontWeight: 'font-weight',
6
17
  color: 'color',
7
- backgroundColor: 'background-color',
8
- paddingInline: 'padding-inline',
9
- paddingBlock: 'padding-block',
10
- borderRadius: 'border-radius',
11
18
  };
12
- const plainNames = {
13
- fontSize: 'Text size',
14
- fontWeight: 'Boldness',
19
+ const figmaNames = {
20
+ width: 'W',
21
+ height: 'H',
22
+ borderRadius: 'Corner radius',
23
+ gap: 'Gap',
24
+ paddingInline: 'Horizontal padding',
25
+ paddingBlock: 'Vertical padding',
26
+ opacity: 'Opacity',
27
+ backgroundColor: 'Fill',
28
+ borderWidth: 'Stroke weight',
29
+ borderColor: 'Stroke',
30
+ boxShadow: 'Drop shadow',
31
+ fontSize: 'Font size',
32
+ fontWeight: 'Weight',
15
33
  color: 'Text colour',
16
- backgroundColor: 'Background',
17
- paddingInline: 'Space at the sides',
18
- paddingBlock: 'Space above and below',
19
- borderRadius: 'Corners',
20
34
  };
21
- const props = Object.keys(css);
35
+ /** Figma's Design panel, in its order (ADR 0058 B1). */
36
+ export const groups = [
37
+ ['Frame', ['width', 'height', 'borderRadius']],
38
+ ['Auto layout', ['gap', 'paddingInline', 'paddingBlock']],
39
+ ['Layer', ['opacity']],
40
+ ['Fill', ['backgroundColor']],
41
+ ['Stroke', ['borderWidth', 'borderColor']],
42
+ ['Effects', ['boxShadow']],
43
+ ['Text', ['fontSize', 'fontWeight', 'color']],
44
+ ];
45
+ const props = groups.flatMap(([, list]) => list);
46
+ const colours = ['color', 'backgroundColor', 'borderColor'];
22
47
  const steps = [0, 0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10, 12, 16];
23
- export function current(el, prop) {
48
+ const sizes = [0, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64, 72, 80, 96];
49
+ export function current(el, prop, theme = null) {
50
+ const own = theme ? currentUtility(prop, el.getAttribute('class') ?? '', theme) : null;
51
+ const fromClass = own && theme ? utilityValue(prop, own, theme) : null;
52
+ if (fromClass !== null)
53
+ return fromClass;
24
54
  const s = (el.ownerDocument.defaultView ?? window).getComputedStyle(el);
25
- if (prop === 'color' || prop === 'backgroundColor')
26
- return normalHex(s[prop]) ?? s[prop];
55
+ if (colours.includes(prop)) {
56
+ const v = prop === 'borderColor' ? s.borderTopColor : s[prop];
57
+ if (v === 'transparent' || /^rgba\(.*,\s*0\)$/.test(v))
58
+ return 'transparent';
59
+ return normalHex(v) ?? v;
60
+ }
27
61
  if (prop === 'paddingInline')
28
62
  return s.paddingLeft;
29
63
  if (prop === 'paddingBlock')
30
64
  return s.paddingTop;
31
65
  if (prop === 'borderRadius')
32
66
  return s.borderTopLeftRadius;
67
+ if (prop === 'borderWidth')
68
+ return s.borderTopStyle === 'none' ? '0px' : s.borderTopWidth;
69
+ if (prop === 'gap')
70
+ return s.columnGap === 'normal' ? '0px' : s.columnGap;
71
+ if (prop === 'width' || prop === 'height')
72
+ return `${Math.round(el.getBoundingClientRect()[prop])}px`;
33
73
  return s[prop];
34
74
  }
35
75
  export function preview(el, changes) {
@@ -38,14 +78,20 @@ export function preview(el, changes) {
38
78
  const style = el.style;
39
79
  for (const prop of props)
40
80
  style.removeProperty(css[prop]);
41
- for (const c of changes)
81
+ style.removeProperty('border-style');
82
+ for (const c of changes) {
42
83
  style.setProperty(css[c.prop], c.to, 'important');
84
+ if (c.prop === 'borderWidth' && c.to !== '0px')
85
+ style.setProperty('border-style', 'solid', 'important');
86
+ }
43
87
  }
44
88
  function options(prop, theme) {
45
89
  const t = theme;
46
- const sorted = (table, unit, prefix) => Object.entries(table)
90
+ const unit = t?.spacing ?? 4;
91
+ const sorted = (table, suffix, prefix) => Object.entries(table)
47
92
  .sort((a, b) => a[1] - b[1])
48
- .map(([name, v]) => [`${v}${unit}`, `${prefix}${name} · ${v}${unit}`]);
93
+ .map(([name, v]) => [`${v}${suffix}`, name, `${prefix}${name}`]);
94
+ const scale = (list, prefix) => list.map((n) => [`${n * unit}px`, null, `${prefix}-${n}`]);
49
95
  if (prop === 'fontSize')
50
96
  return t ? sorted(t.text, 'px', 'text-') : [];
51
97
  if (prop === 'fontWeight')
@@ -53,33 +99,64 @@ function options(prop, theme) {
53
99
  if (prop === 'borderRadius')
54
100
  return t
55
101
  ? [
56
- ['0px', 'rounded-none · 0px'],
102
+ ['0px', 'none', 'rounded-none'],
57
103
  ...sorted(t.radius, 'px', 'rounded-'),
58
- ['9999px', 'rounded-full · round'],
104
+ ['9999px', 'full', 'rounded-full'],
59
105
  ]
60
106
  : [];
61
- if (prop === 'paddingInline' || prop === 'paddingBlock') {
62
- const p = prop === 'paddingInline' ? 'px' : 'py';
63
- return steps.map((n) => [`${n * (t?.spacing ?? 4)}px`, `${p}-${n} · ${n * (t?.spacing ?? 4)}px`]);
107
+ if (prop === 'paddingInline')
108
+ return scale(steps, 'px');
109
+ if (prop === 'paddingBlock')
110
+ return scale(steps, 'py');
111
+ if (prop === 'gap')
112
+ return scale(steps, 'gap');
113
+ if (prop === 'width' || prop === 'height') {
114
+ const p = prop === 'width' ? 'w' : 'h';
115
+ return [['auto', 'auto', `${p}-auto`], ['100%', 'fill', `${p}-full`], ...scale(sizes, p)];
64
116
  }
117
+ if (prop === 'opacity')
118
+ return Array.from({ length: 21 }, (_, i) => [`${i / 20}`, `${i * 5}%`, `opacity-${i * 5}`]);
119
+ if (prop === 'borderWidth')
120
+ return borderSteps.map((n) => [`${n}px`, null, n === 1 ? 'border' : `border-${n}`]);
121
+ if (prop === 'boxShadow')
122
+ return t
123
+ ? [
124
+ ['none', 'none', 'shadow-none'],
125
+ ...Object.entries(t.shadow).map(([n, v]) => [v, n, `shadow-${n}`]),
126
+ ]
127
+ : [];
65
128
  return [];
66
129
  }
130
+ /** Builder reads the token first (`2xl · 24px`), Developer the class (`text-2xl · 24px`) (ADR 0058 B2). */
131
+ const optionText = (prop, [value, token, utility], plain) => {
132
+ const shown = prop === 'boxShadow' ? (token === 'none' ? 'none' : 'shadow') : value;
133
+ if (!plain)
134
+ return `${utility} · ${shown}`;
135
+ return token && token !== shown ? `${token} · ${shown}` : shown;
136
+ };
137
+ const tokenOf = (prop, value, theme) => {
138
+ if (!theme || !/^#[0-9a-f]{6}$/.test(value))
139
+ return null;
140
+ const u = utilityFor(prop, value, theme);
141
+ return u.exact ? u.utility.replace(/^(text|bg|border)-/, '') : null;
142
+ };
67
143
  export function lookSection(el, changes, theme, plain, onChange) {
68
144
  const set = (prop, to) => {
69
- const from = changes.find((c) => c.prop === prop)?.from ?? (el ? current(el, prop) : '');
145
+ const from = changes.find((c) => c.prop === prop)?.from ?? (el ? current(el, prop, theme) : '');
70
146
  const next = changes.filter((c) => c.prop !== prop);
71
147
  if (to !== from)
72
148
  next.push({ prop, from, to });
73
149
  onChange(next);
74
150
  };
151
+ const nameOf = (prop) => (plain ? figmaNames[prop] : css[prop]);
75
152
  const row = (prop) => {
76
- const now = changes.find((c) => c.prop === prop)?.to ?? (el ? current(el, prop) : '');
77
- const label = h('span', { class: 'what' }, [plain ? plainNames[prop] : css[prop]]);
78
- if (prop === 'color' || prop === 'backgroundColor') {
153
+ const now = changes.find((c) => c.prop === prop)?.to ?? (el ? current(el, prop, theme) : '');
154
+ const label = h('span', { class: 'what' }, [nameOf(prop)]);
155
+ if (colours.includes(prop)) {
79
156
  const input = h('input', {
80
157
  type: 'color',
81
158
  value: /^#[0-9a-f]{6}$/.test(now) ? now : '#000000',
82
- 'aria-label': plainNames[prop],
159
+ 'aria-label': figmaNames[prop],
83
160
  onchange: (e) => set(prop, e.target.value),
84
161
  });
85
162
  const swatches = (theme?.own ?? []).slice(0, 8).map((name) => h('button', {
@@ -92,22 +169,34 @@ export function lookSection(el, changes, theme, plain, onChange) {
92
169
  }));
93
170
  for (const s of swatches)
94
171
  s.style.background = s.getAttribute('data-color') ?? '';
172
+ const token = plain ? tokenOf(prop, now, theme) : null;
95
173
  return h('div', { class: 'look' }, [
96
174
  label,
97
- h('div', { class: 'pick' }, [input, h('code', {}, [now]), ...swatches]),
175
+ h('div', { class: 'pick' }, [
176
+ input,
177
+ h('code', {}, [now === 'transparent' ? 'none' : token ? `${token} · ${now}` : now]),
178
+ ...swatches,
179
+ ]),
98
180
  ]);
99
181
  }
100
182
  const list = options(prop, theme);
101
183
  const known = list.some(([v]) => v === now);
102
- const select = h('select', { 'aria-label': plainNames[prop], onchange: (e) => set(prop, e.target.value) }, [
103
- known ? null : h('option', { value: now, selected: true }, [`${now} (now)`]),
104
- ...list.map(([v, text]) => h('option', { value: v, selected: v === now }, [plain ? text.split(' · ')[1] : text])),
184
+ const select = h('select', { 'aria-label': figmaNames[prop], onchange: (e) => set(prop, e.target.value) }, [
185
+ known
186
+ ? null
187
+ : h('option', { value: now, selected: true }, [
188
+ `${prop === 'boxShadow' && now !== 'none' ? 'shadow' : now} (now)`,
189
+ ]),
190
+ ...list.map((o) => h('option', { value: o[0], selected: o[0] === now }, [optionText(prop, o, plain)])),
105
191
  ]);
106
192
  return h('div', { class: 'look' }, [label, select]);
107
193
  };
108
194
  return h('div', { class: 'sec' }, [
109
- h('div', { class: 'label' }, [plain ? 'Look' : 'Style (preview)']),
110
- ...props.map(row),
195
+ h('div', { class: 'label' }, [plain ? 'Design' : 'Style (preview)']),
196
+ ...groups.map(([title, list]) => h('div', { class: 'look-group', 'data-group': title }, [
197
+ h('div', { class: 'look-title' }, [title]),
198
+ ...list.map(row),
199
+ ])),
111
200
  h('div', { class: 'row-end' }, [
112
201
  h('span', { class: 'hint-text' }, ['Preview only: the agent makes the real change.']),
113
202
  changes.length
@@ -1 +1 @@
1
- {"version":3,"file":"look.js","sourceRoot":"","sources":["../../src/overlay/look.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"look.js","sourceRoot":"","sources":["../../src/overlay/look.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EAGT,UAAU,EACV,YAAY,GACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAA;AAE5B,MAAM,GAAG,GAA8B;IACrC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,eAAe;IAC7B,GAAG,EAAE,KAAK;IACV,aAAa,EAAE,gBAAgB;IAC/B,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,kBAAkB;IACnC,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,cAAc;IAC3B,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,aAAa;IACzB,KAAK,EAAE,OAAO;CACf,CAAA;AAED,MAAM,UAAU,GAA8B;IAC5C,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,eAAe;IAC7B,GAAG,EAAE,KAAK;IACV,aAAa,EAAE,oBAAoB;IACnC,YAAY,EAAE,kBAAkB;IAChC,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,aAAa;CACrB,CAAA;AAED,wDAAwD;AACxD,MAAM,CAAC,MAAM,MAAM,GAA4B;IAC7C,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC9C,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IACzD,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC7B,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC1C,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;CAC9C,CAAA;AAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;AAChD,MAAM,OAAO,GAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAA;AACxE,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AACjE,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAE9E,MAAM,UAAU,OAAO,CAAC,EAAW,EAAE,IAAe,EAAE,KAAK,GAAiB,IAAI;IAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtF,MAAM,SAAS,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtE,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACxC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;IACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAe,CAAC,CAAA;QACxE,IAAI,CAAC,KAAK,aAAa,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,aAAa,CAAA;QAC5E,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,CAAC,CAAC,WAAW,CAAA;IAClD,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,CAAC,CAAC,UAAU,CAAA;IAChD,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,CAAC,CAAC,mBAAmB,CAAA;IACzD,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAA;IACzF,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzE,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;IACrG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAkB,EAAE,OAAsB;IAChE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAAE,OAAM;IACnC,MAAM,KAAK,GAAI,EAAkB,CAAC,KAAK,CAAA;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;IACpC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK;YAAE,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IACzG,CAAC;AACH,CAAC;AAID,SAAS,OAAO,CAAC,IAAe,EAAE,KAAmB;IACnD,MAAM,CAAC,GAAG,KAAK,CAAA;IACf,MAAM,IAAI,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,CAAA;IAC5B,MAAM,MAAM,GAAG,CAAC,KAA6B,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE,CAC/E,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE,CAAW,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,CAAC,IAAc,EAAE,MAAc,EAAE,EAAE,CAC/C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAW,CAAC,CAAA;IACtE,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACxE,IAAI,IAAI,KAAK,cAAc;QACzB,OAAO,CAAC;YACN,CAAC,CAAC;gBACE,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC;gBAC/B,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;gBACrC,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC;aACnC;YACH,CAAC,CAAC,EAAE,CAAA;IACR,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACvD,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACtD,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC9C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACtC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3F,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAW,CAAC,CAAA;IACvG,IAAI,IAAI,KAAK,aAAa;QACxB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAW,CAAC,CAAA;IAC/F,IAAI,IAAI,KAAK,WAAW;QACtB,OAAO,CAAC;YACN,CAAC,CAAC;gBACE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC;gBAC/B,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAW,CAAC;aAC7E;YACH,CAAC,CAAC,EAAE,CAAA;IACR,OAAO,EAAE,CAAA;AACX,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,GAAG,CAAC,IAAe,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAS,EAAE,KAAc,EAAE,EAAE;IACtF,MAAM,KAAK,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACnF,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,OAAO,MAAM,KAAK,EAAE,CAAA;IAC1C,OAAO,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;AACjE,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,IAAe,EAAE,KAAa,EAAE,KAAmB,EAAE,EAAE;IACtE,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxD,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACxC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACrE,CAAC,CAAA;AAED,MAAM,UAAU,WAAW,CACzB,EAAkB,EAClB,OAAsB,EACtB,KAAmB,EACnB,KAAc,EACd,QAA0C;IAE1C,MAAM,GAAG,GAAG,CAAC,IAAe,EAAE,EAAU,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC/F,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACnD,IAAI,EAAE,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9C,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,IAAe,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1E,MAAM,GAAG,GAAG,CAAC,IAAe,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC5F,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1D,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE;gBACvB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;gBACnD,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC;gBAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;aACjE,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3D,CAAC,CAAC,QAAQ,EAAE;gBACV,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,IAAI;gBACX,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAM,CAAC,MAAM,CAAC,IAAI,CAAE;gBAClC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAM,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;aAC/C,CAAC,CACH,CAAA;YACD,KAAK,MAAM,CAAC,IAAI,QAAQ;gBAAE,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;YACjF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACtD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACjC,KAAK;gBACL,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;oBAC1B,KAAK;oBACL,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnF,GAAG,QAAQ;iBACZ,CAAC;aACH,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA;QAC3C,MAAM,MAAM,GAAG,CAAC,CACd,QAAQ,EACR,EAAE,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAG,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC,EAAE,EACrG;YACE,KAAK;gBACH,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;oBAC1C,GAAG,IAAI,KAAK,WAAW,IAAI,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ;iBACnE,CAAC;YACN,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChB,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CACnF;SACF,CACF,CAAA;QACD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IACrD,CAAC,CAAA;IACD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAChC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACpE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAC9B,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE;YACrD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC1C,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;SACjB,CAAC,CACH;QACD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC7B,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,gDAAgD,CAAC,CAAC;YACrF,OAAO,CAAC,MAAM;gBACZ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;gBACxF,CAAC,CAAC,IAAI;SACT,CAAC;KACH,CAAC,CAAA;AACJ,CAAC"}