@adminiumjs/add-on-contracts 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/add-on-block.d.ts +6 -0
- package/dist/add-on-block.d.ts.map +1 -1
- package/dist/contracts.d.ts +9 -2
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +24 -2
- package/dist/contracts.js.map +1 -1
- package/dist/document-render.d.ts +547 -0
- package/dist/document-render.d.ts.map +1 -0
- package/dist/document-render.js +228 -0
- package/dist/document-render.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/slots.d.ts +21 -1
- package/dist/slots.d.ts.map +1 -1
- package/dist/slots.js +94 -1
- package/dist/slots.js.map +1 -1
- package/dist/testing/index.d.ts +61 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +383 -0
- package/dist/testing/index.js.map +1 -1
- package/package.json +1 -1
package/dist/testing/index.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { describe, expect, it } from 'vitest';
|
|
16
16
|
import { artworkRefSchema } from '../artwork-source.js';
|
|
17
|
+
import { documentKindSchema, documentOutlineSchema, isDocumentError, localizedTextSchema, renderedDocumentSchema, } from '../document-render.js';
|
|
17
18
|
import { personalizationSchema, } from '../product-personalizer.js';
|
|
18
19
|
import { CarrierError, rateSchema, shipmentSchema, trackEventSchema, } from '../shipping-carrier.js';
|
|
19
20
|
export function describeArtworkSource(impl, fixtures) {
|
|
@@ -88,6 +89,36 @@ export function describeShippingCarrier(impl, fixtures) {
|
|
|
88
89
|
expect(carrier.code.trim().length).toBeGreaterThan(0);
|
|
89
90
|
}
|
|
90
91
|
});
|
|
92
|
+
/*
|
|
93
|
+
* ── THE INBOUND DIRECTION (31 O4, ruled 2026-09-01) ─────────────────────
|
|
94
|
+
*
|
|
95
|
+
* The contract is direction-agnostic and these two cases are what that
|
|
96
|
+
* sentence means executably. A RETURN — a customer sending a parcel back to
|
|
97
|
+
* the business — is the same contract with the route reversed: `quote(parcel,
|
|
98
|
+
* from, to)` takes two addresses and has no opinion about which one is the
|
|
99
|
+
* shop; `book` buys a prepaid label the SENDER applies, whoever the sender
|
|
100
|
+
* is; `track` follows the parcel toward whoever is receiving it. No member
|
|
101
|
+
* changes shape, which is why this is a conformance amendment and not a
|
|
102
|
+
* version bump.
|
|
103
|
+
*
|
|
104
|
+
* The refusal is symmetric too, and that is a rule rather than a
|
|
105
|
+
* convenience: a label must carry a resolvable address at BOTH ends, so a
|
|
106
|
+
* carrier that would refuse an address as a recipient refuses it as a
|
|
107
|
+
* sender. The case reuses `rejectedTo` deliberately — the fixture is "an
|
|
108
|
+
* address the carrier refuses", and which end it sits at is not part of
|
|
109
|
+
* what makes it refusable.
|
|
110
|
+
*/
|
|
111
|
+
it('quote is direction-symmetric — the same route reversed still quotes', async () => {
|
|
112
|
+
const rates = await impl.quote(fixtures.parcel, fixtures.to, fixtures.from);
|
|
113
|
+
expect(rates.length).toBeGreaterThan(0);
|
|
114
|
+
for (const rate of rates) {
|
|
115
|
+
const parsed = rateSchema.safeParse(rate);
|
|
116
|
+
expect(parsed.success, JSON.stringify(parsed.error?.issues)).toBe(true);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
it('refuses an unserviceable sender exactly as it refuses a recipient', async () => {
|
|
120
|
+
await expect(impl.quote(fixtures.parcel, fixtures.rejectedTo, fixtures.to)).rejects.toBeInstanceOf(CarrierError);
|
|
121
|
+
});
|
|
91
122
|
it('books a shipment of the declared shape', async () => {
|
|
92
123
|
const [rate] = await impl.quote(fixtures.parcel, fixtures.from, fixtures.to);
|
|
93
124
|
expect(rate).toBeDefined();
|
|
@@ -175,4 +206,356 @@ export function describeProductPersonalizer(impl, fixtures) {
|
|
|
175
206
|
});
|
|
176
207
|
});
|
|
177
208
|
}
|
|
209
|
+
/** WinAnsi-drawable, and outside ASCII — the boundary a `coverage:'ascii'` kind must refuse. */
|
|
210
|
+
const WINANSI_SAMPLE = 'é ß ø €';
|
|
211
|
+
/** Outside WinAnsi — the boundary a `coverage:'winansi'` kind must refuse. */
|
|
212
|
+
const BEYOND_WINANSI_SAMPLE = 'مرحبا 发票';
|
|
213
|
+
const LATIN1 = new TextDecoder('latin1');
|
|
214
|
+
/** The first slot of `type`, at the top level — collection columns are not mappable on their own. */
|
|
215
|
+
function firstSlotOfType(outline, type) {
|
|
216
|
+
return outline.slots.find((slot) => slot.type === type);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* A required slot with NO `default`. A required slot that defaults to
|
|
220
|
+
* `sequence`/`now`/`connection`/`setting` is filled by the ENGINE, so deleting
|
|
221
|
+
* its value proves nothing — the provider is entitled to see it arrive empty.
|
|
222
|
+
*/
|
|
223
|
+
function firstUnsuppliedRequiredSlot(outline) {
|
|
224
|
+
return outline.slots.find((slot) => slot.required && slot.default === undefined);
|
|
225
|
+
}
|
|
226
|
+
function withField(subject, id, value) {
|
|
227
|
+
return { ...subject, fields: { ...subject.fields, [id]: value } };
|
|
228
|
+
}
|
|
229
|
+
function withoutField(subject, id) {
|
|
230
|
+
const fields = { ...subject.fields };
|
|
231
|
+
delete fields[id];
|
|
232
|
+
return { ...subject, fields };
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* `render` answered with documents — asserted, and narrowed in one step.
|
|
236
|
+
*
|
|
237
|
+
* `expect` fails by throwing, but TypeScript cannot see that, so the suite
|
|
238
|
+
* used to follow each assertion with `if (isDocumentError(outcome)) continue;`
|
|
239
|
+
* purely to narrow the union. That guard could never run: by the time it was
|
|
240
|
+
* reached the assertion had either passed or thrown. An assertion signature
|
|
241
|
+
* narrows without leaving an unreachable branch behind.
|
|
242
|
+
*/
|
|
243
|
+
function expectRendered(outcome, message) {
|
|
244
|
+
expect(isDocumentError(outcome), message).toBe(false);
|
|
245
|
+
}
|
|
246
|
+
/** `render` refused as data — the other ending, asserted and narrowed the same way. */
|
|
247
|
+
function expectRefused(outcome, message) {
|
|
248
|
+
expect(isDocumentError(outcome), message).toBe(true);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Walk a PDF's cross-reference table back to the objects it points at.
|
|
252
|
+
*
|
|
253
|
+
* This is the assertion that a hand-rolled writer cannot fake. Every offset in
|
|
254
|
+
* the table is a BYTE offset, so a writer that computed them from
|
|
255
|
+
* `String.length` over a stream containing one multi-byte character produces a
|
|
256
|
+
* file every viewer opens and every parser mis-seeks — the exact failure 34's
|
|
257
|
+
* §0.3 trap 8 sends the invoices writer over byte buffers to avoid. Seeking to
|
|
258
|
+
* each offset and requiring `<n> 0 obj` there catches it on the first render.
|
|
259
|
+
*
|
|
260
|
+
* Exported so a writer's own tests can walk its table with the same rules the
|
|
261
|
+
* suite applies, rather than re-deriving a second walker that drifts from
|
|
262
|
+
* this one. Every refusal throws an `Error` naming what it found.
|
|
263
|
+
*/
|
|
264
|
+
export function parseXrefBack(bytes) {
|
|
265
|
+
const text = LATIN1.decode(bytes);
|
|
266
|
+
const startxref = text.lastIndexOf('startxref');
|
|
267
|
+
if (startxref < 0)
|
|
268
|
+
throw new Error('no startxref in the file');
|
|
269
|
+
const tail = text.slice(startxref);
|
|
270
|
+
const declared = /startxref\s+(\d+)\s+%%EOF/.exec(tail);
|
|
271
|
+
if (declared === null)
|
|
272
|
+
throw new Error('startxref is not followed by an offset and %%EOF');
|
|
273
|
+
const at = Number(declared[1]);
|
|
274
|
+
if (!text.startsWith('xref', at)) {
|
|
275
|
+
throw new Error(`startxref points at ${String(at)}, which is not the start of an xref table`);
|
|
276
|
+
}
|
|
277
|
+
const header = /^xref\s+(\d+)\s+(\d+)\s+/.exec(text.slice(at));
|
|
278
|
+
if (header === null)
|
|
279
|
+
throw new Error('the xref table has no subsection header');
|
|
280
|
+
const first = Number(header[1]);
|
|
281
|
+
const count = Number(header[2]);
|
|
282
|
+
if (first !== 0)
|
|
283
|
+
throw new Error('the first xref subsection must start at object 0');
|
|
284
|
+
let cursor = at + header[0].length;
|
|
285
|
+
const offsets = [];
|
|
286
|
+
for (let n = 0; n < count; n += 1) {
|
|
287
|
+
// Every entry is exactly twenty bytes: nnnnnnnnnn ggggg (n|f) plus two.
|
|
288
|
+
const entry = text.slice(cursor, cursor + 20);
|
|
289
|
+
if (!/^\d{10} \d{5} [nf][\r\n ][\r\n]$/.test(entry)) {
|
|
290
|
+
throw new Error(`xref entry ${String(n)} is not twenty bytes: ${JSON.stringify(entry)}`);
|
|
291
|
+
}
|
|
292
|
+
const offset = Number(entry.slice(0, 10));
|
|
293
|
+
const free = entry[17] === 'f';
|
|
294
|
+
if (n === 0) {
|
|
295
|
+
if (!free)
|
|
296
|
+
throw new Error('object 0 must be the free-list head');
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
if (free)
|
|
300
|
+
throw new Error(`object ${String(n)} is marked free but is in use`);
|
|
301
|
+
if (!text.startsWith(`${String(n)} 0 obj`, offset)) {
|
|
302
|
+
const found = JSON.stringify(text.slice(offset, offset + 16));
|
|
303
|
+
throw new Error(`xref sends object ${String(n)} to ${String(offset)}, where ${found} is`);
|
|
304
|
+
}
|
|
305
|
+
offsets.push(offset);
|
|
306
|
+
}
|
|
307
|
+
cursor += 20;
|
|
308
|
+
}
|
|
309
|
+
return { objects: count - 1, offsets };
|
|
310
|
+
}
|
|
311
|
+
export function describeDocumentRenderer(impl, fixtures) {
|
|
312
|
+
const kinds = impl.kinds();
|
|
313
|
+
const bodyOf = (kind) => fixtures.body === undefined ? undefined : fixtures.body(kind);
|
|
314
|
+
const drawnTextSlot = (kind) => {
|
|
315
|
+
if (fixtures.textSlot !== undefined)
|
|
316
|
+
return fixtures.textSlot(kind);
|
|
317
|
+
return firstSlotOfType(impl.describe(kind.id), 'text')?.id;
|
|
318
|
+
};
|
|
319
|
+
const renderOf = async (kind, subject, formats = kind.formats) => {
|
|
320
|
+
const body = bodyOf(kind);
|
|
321
|
+
return impl.render({
|
|
322
|
+
kind: kind.id,
|
|
323
|
+
subject,
|
|
324
|
+
formats,
|
|
325
|
+
paper: kind.paper[0],
|
|
326
|
+
settings: fixtures.settings,
|
|
327
|
+
...(body === undefined ? {} : { body }),
|
|
328
|
+
});
|
|
329
|
+
};
|
|
330
|
+
describe(`document-render@1 conformance — ${impl.key}`, () => {
|
|
331
|
+
it('has a non-empty key', () => {
|
|
332
|
+
expect(impl.key).toMatch(/^[a-z][a-z0-9-]*$/);
|
|
333
|
+
});
|
|
334
|
+
it('lists at least one kind, each of the declared shape', () => {
|
|
335
|
+
expect(kinds.length).toBeGreaterThan(0);
|
|
336
|
+
for (const kind of kinds) {
|
|
337
|
+
const parsed = documentKindSchema.safeParse(kind);
|
|
338
|
+
expect(parsed.success, `${kind.id}: ${JSON.stringify(parsed.error?.issues)}`).toBe(true);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
it('labels every kind in all eight locales, with no locale left out', () => {
|
|
342
|
+
// 0.3 trap 19. A hole here is a raw slot id on somebody's screen in
|
|
343
|
+
// Studio, and `localizedTextSchema` is `.strict()` so a NINTH locale —
|
|
344
|
+
// a provider inventing `es-ES` — fails just as loudly as a missing one.
|
|
345
|
+
for (const kind of kinds) {
|
|
346
|
+
const parsed = localizedTextSchema.safeParse(kind.label);
|
|
347
|
+
expect(parsed.success, `${kind.id} label: ${JSON.stringify(parsed.error?.issues)}`).toBe(true);
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
it('describes every kind it lists, labelling every slot in all eight locales', () => {
|
|
351
|
+
for (const kind of kinds) {
|
|
352
|
+
const outline = impl.describe(kind.id);
|
|
353
|
+
const parsed = documentOutlineSchema.safeParse(outline);
|
|
354
|
+
expect(parsed.success, `${kind.id}: ${JSON.stringify(parsed.error?.issues)}`).toBe(true);
|
|
355
|
+
expect(outline.slots.length, `${kind.id} describes no slots`).toBeGreaterThan(0);
|
|
356
|
+
for (const slot of outline.slots) {
|
|
357
|
+
expect(localizedTextSchema.safeParse(slot.label).success, `${kind.id}.${slot.id} label is not complete in eight locales`).toBe(true);
|
|
358
|
+
if (slot.help !== undefined) {
|
|
359
|
+
expect(localizedTextSchema.safeParse(slot.help).success, `${kind.id}.${slot.id} help is not complete in eight locales`).toBe(true);
|
|
360
|
+
}
|
|
361
|
+
if (slot.type === 'collection') {
|
|
362
|
+
expect(slot.columns ?? [], `${kind.id}.${slot.id} is a collection with no columns`)
|
|
363
|
+
.not.toHaveLength(0);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
it('throws when asked to describe a kind it does not list', () => {
|
|
369
|
+
// `describe` returns an outline, not a union: an unknown kind here is a
|
|
370
|
+
// programming error in the CONSUMER, which has `kinds()` in its hand.
|
|
371
|
+
// The data path — a stored profile naming a kind the provider dropped in
|
|
372
|
+
// an upgrade — is `render`, and that one refuses as data. Both below.
|
|
373
|
+
expect(() => impl.describe('no-such-kind')).toThrow();
|
|
374
|
+
});
|
|
375
|
+
it('refuses an unknown kind as data, never as an exception', async () => {
|
|
376
|
+
const outcome = await impl.render({
|
|
377
|
+
kind: 'no-such-kind',
|
|
378
|
+
subject: fixtures.subject(kinds[0]),
|
|
379
|
+
formats: ['html'],
|
|
380
|
+
paper: 'a4',
|
|
381
|
+
settings: fixtures.settings,
|
|
382
|
+
});
|
|
383
|
+
expectRefused(outcome);
|
|
384
|
+
expect(outcome.code).toBe('UNSUPPORTED_KIND');
|
|
385
|
+
});
|
|
386
|
+
it('refuses a subject missing a required slot with MISSING_SLOT that names it', async () => {
|
|
387
|
+
for (const kind of kinds) {
|
|
388
|
+
const outline = impl.describe(kind.id);
|
|
389
|
+
const slot = firstUnsuppliedRequiredSlot(outline);
|
|
390
|
+
if (slot === undefined)
|
|
391
|
+
continue;
|
|
392
|
+
const outcome = await renderOf(kind, withoutField(fixtures.subject(kind), slot.id));
|
|
393
|
+
expectRefused(outcome, `${kind.id} rendered without ${slot.id}`);
|
|
394
|
+
expect(outcome.code).toBe('MISSING_SLOT');
|
|
395
|
+
// The engine puts this in front of an operator, who needs to know
|
|
396
|
+
// WHICH column they did not map.
|
|
397
|
+
expect(outcome.detail ?? '').toContain(slot.id);
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
it('is given money as integer minor units and percent as basis points', async () => {
|
|
401
|
+
// The wire law, asserted on the FIXTURE — the provider never sees a
|
|
402
|
+
// decimal, so a fixture carrying 12.5 would be testing a shape the
|
|
403
|
+
// engine does not produce. The invoice rounding law is NOT here: it is
|
|
404
|
+
// the invoices package's own (34 D20), because it is arithmetic a
|
|
405
|
+
// label-sheet renderer has no opinion about.
|
|
406
|
+
for (const kind of kinds) {
|
|
407
|
+
const outline = impl.describe(kind.id);
|
|
408
|
+
const subject = fixtures.subject(kind);
|
|
409
|
+
for (const slot of outline.slots) {
|
|
410
|
+
// A collection's rows live in `subject.collections`, never in
|
|
411
|
+
// `fields`, so this branch must come BEFORE the `fields` read below.
|
|
412
|
+
// Written after it, the `continue` on an undefined field skipped
|
|
413
|
+
// every collection, and a decimal in a line item passed.
|
|
414
|
+
if (slot.type === 'collection') {
|
|
415
|
+
const rows = subject.collections[slot.id] ?? [];
|
|
416
|
+
for (const column of slot.columns ?? []) {
|
|
417
|
+
if (column.type !== 'money' && column.type !== 'percent')
|
|
418
|
+
continue;
|
|
419
|
+
for (const row of rows) {
|
|
420
|
+
const cell = row[column.id];
|
|
421
|
+
if (cell === undefined || cell === null)
|
|
422
|
+
continue;
|
|
423
|
+
expect(Number.isInteger(cell), `${kind.id}.${slot.id}[].${column.id} is ${String(cell)}`).toBe(true);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
const value = subject.fields[slot.id];
|
|
429
|
+
if (value === undefined || value === null)
|
|
430
|
+
continue;
|
|
431
|
+
if (slot.type === 'money' || slot.type === 'percent') {
|
|
432
|
+
expect(Number.isInteger(value), `${kind.id}.${slot.id} is ${String(value)}`).toBe(true);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
it('renders every format it declares, and nothing it does not', async () => {
|
|
438
|
+
for (const kind of kinds) {
|
|
439
|
+
const outcome = await renderOf(kind, fixtures.subject(kind));
|
|
440
|
+
expectRendered(outcome, `${kind.id}: ${JSON.stringify(outcome)}`);
|
|
441
|
+
expect(outcome.map((d) => d.format).sort()).toEqual([...kind.formats].sort());
|
|
442
|
+
for (const document of outcome) {
|
|
443
|
+
const parsed = renderedDocumentSchema.safeParse(document);
|
|
444
|
+
expect(parsed.success, JSON.stringify(parsed.error?.issues)).toBe(true);
|
|
445
|
+
expect(document.bytes.byteLength).toBeGreaterThan(0);
|
|
446
|
+
expect(document.filename).not.toContain('/');
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
it('renders one subject to the same bytes twice — and so reads no clock of its own', async () => {
|
|
451
|
+
// 25 D12. Two renders separated by real time: identical bytes are the
|
|
452
|
+
// proof that `Date.now()` is not in the code path, which is why this one
|
|
453
|
+
// assertion carries the whole "byte-identical from a pinned clock" claim.
|
|
454
|
+
for (const kind of kinds) {
|
|
455
|
+
const subject = fixtures.subject(kind);
|
|
456
|
+
const first = await renderOf(kind, subject);
|
|
457
|
+
const second = await renderOf(kind, subject);
|
|
458
|
+
expectRendered(first);
|
|
459
|
+
expectRendered(second);
|
|
460
|
+
expect(second).toHaveLength(first.length);
|
|
461
|
+
for (let at = 0; at < first.length; at += 1) {
|
|
462
|
+
expect(Array.from(second[at].bytes), `${kind.id} ${first[at].format} differs between two renders of one subject`).toEqual(Array.from(first[at].bytes));
|
|
463
|
+
expect(second[at].filename).toBe(first[at].filename);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
it('never puts a script into its HTML', async () => {
|
|
468
|
+
// The engine serves these bytes back to a browser and the subject is
|
|
469
|
+
// full of customer-supplied text, so this is an escaping assertion
|
|
470
|
+
// wearing an output-format hat.
|
|
471
|
+
for (const kind of kinds) {
|
|
472
|
+
if (!kind.formats.includes('html'))
|
|
473
|
+
continue;
|
|
474
|
+
const text = drawnTextSlot(kind);
|
|
475
|
+
const subject = text === undefined
|
|
476
|
+
? fixtures.subject(kind)
|
|
477
|
+
: withField(fixtures.subject(kind), text, '<script>alert(1)</script>');
|
|
478
|
+
const outcome = await renderOf(kind, subject, ['html']);
|
|
479
|
+
expectRendered(outcome, `${kind.id}: ${JSON.stringify(outcome)}`);
|
|
480
|
+
for (const document of outcome) {
|
|
481
|
+
expect(LATIN1.decode(document.bytes).toLowerCase()).not.toContain('<script');
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
});
|
|
485
|
+
it('writes a PDF whose cross-reference table parses back to real objects', async () => {
|
|
486
|
+
for (const kind of kinds) {
|
|
487
|
+
if (!kind.formats.includes('pdf'))
|
|
488
|
+
continue;
|
|
489
|
+
const text = drawnTextSlot(kind);
|
|
490
|
+
/*
|
|
491
|
+
* Two subjects, and the SECOND one is the assertion that has teeth.
|
|
492
|
+
*
|
|
493
|
+
* A writer that collects its cross-reference offsets from
|
|
494
|
+
* `String.length` over the document text — 34 §0.3 trap 8, and the
|
|
495
|
+
* shape `barcode-labels`' scaffold is written in (`sheet.ts:441-449`)
|
|
496
|
+
* — produces a perfectly valid file for as long as every character is
|
|
497
|
+
* ASCII, because there one character is one byte. It breaks the first
|
|
498
|
+
* time a customer is called Müller. Parsing the xref back over an
|
|
499
|
+
* ASCII-only subject therefore proves nothing about the class of bug
|
|
500
|
+
* it exists to catch: this assertion passed a deliberate mutation to
|
|
501
|
+
* `String.length` on 2026-09-10 and had to be widened here.
|
|
502
|
+
*
|
|
503
|
+
* So where the kind's own coverage admits accented text, the table is
|
|
504
|
+
* walked over a subject that HAS some.
|
|
505
|
+
*/
|
|
506
|
+
const subjects = [fixtures.subject(kind)];
|
|
507
|
+
if (kind.coverage !== 'ascii' && text !== undefined) {
|
|
508
|
+
subjects.push(withField(fixtures.subject(kind), text, `Müller ${WINANSI_SAMPLE}`));
|
|
509
|
+
}
|
|
510
|
+
for (const subject of subjects) {
|
|
511
|
+
const outcome = await renderOf(kind, subject, ['pdf']);
|
|
512
|
+
expectRendered(outcome, `${kind.id}: ${JSON.stringify(outcome)}`);
|
|
513
|
+
for (const document of outcome) {
|
|
514
|
+
const decoded = LATIN1.decode(document.bytes);
|
|
515
|
+
expect(decoded.startsWith('%PDF-1.4'), `${kind.id} is not a PDF 1.4`).toBe(true);
|
|
516
|
+
expect(decoded.endsWith('%%EOF\n')).toBe(true);
|
|
517
|
+
const { objects } = parseXrefBack(document.bytes);
|
|
518
|
+
expect(objects, `${kind.id} declares no objects`).toBeGreaterThan(0);
|
|
519
|
+
expect(document.mediaType).toBe('application/pdf');
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
it('draws the glyphs its coverage claims, and refuses the ones it does not — typed', async () => {
|
|
525
|
+
for (const kind of kinds) {
|
|
526
|
+
if (!kind.formats.includes('pdf'))
|
|
527
|
+
continue;
|
|
528
|
+
const text = drawnTextSlot(kind);
|
|
529
|
+
if (text === undefined)
|
|
530
|
+
continue;
|
|
531
|
+
for (const [sample, drawable] of [
|
|
532
|
+
[WINANSI_SAMPLE, kind.coverage !== 'ascii'],
|
|
533
|
+
[BEYOND_WINANSI_SAMPLE, kind.coverage === 'all'],
|
|
534
|
+
]) {
|
|
535
|
+
const subject = withField(fixtures.subject(kind), text, sample);
|
|
536
|
+
const outcome = await renderOf(kind, subject, ['pdf']);
|
|
537
|
+
if (drawable) {
|
|
538
|
+
expect(isDocumentError(outcome), `${kind.id} claims coverage '${kind.coverage}' but refused ${sample}: ${JSON.stringify(outcome)}`).toBe(false);
|
|
539
|
+
continue;
|
|
540
|
+
}
|
|
541
|
+
// The refusal is the contract's point: a writer that silently
|
|
542
|
+
// dropped the letters would ship an invoice with a customer's name
|
|
543
|
+
// missing characters, and nothing downstream would ever know.
|
|
544
|
+
expectRefused(outcome, `${kind.id} claims coverage '${kind.coverage}' and drew ${sample} anyway`);
|
|
545
|
+
expect(outcome.code).toBe('LATIN_ONLY');
|
|
546
|
+
expect(outcome.dropped ?? [], `${kind.id} refused without naming a glyph`).not.toHaveLength(0);
|
|
547
|
+
for (const glyph of outcome.dropped ?? []) {
|
|
548
|
+
expect(sample, `${kind.id} reported '${glyph}', which is not in the subject`).toContain(glyph);
|
|
549
|
+
}
|
|
550
|
+
// And the refusal belongs to the WRITER, not to the subject: the
|
|
551
|
+
// same text in HTML, which is UTF-8, must render.
|
|
552
|
+
if (kind.formats.includes('html')) {
|
|
553
|
+
const asHtml = await renderOf(kind, subject, ['html']);
|
|
554
|
+
expect(isDocumentError(asHtml), `${kind.id} refused ${sample} in HTML too — the refusal is not the writer's`).toBe(false);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
});
|
|
559
|
+
});
|
|
560
|
+
}
|
|
178
561
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAoC,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,GAQvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,GAKtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,gBAAgB,GAKjB,MAAM,wBAAwB,CAAC;AAgBhC,MAAM,UAAU,qBAAqB,CACnC,IAAmB,EACnB,QAA+B;IAE/B,QAAQ,CAAC,kCAAkC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE;QAC1D,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS;gBAAE,OAAO;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACxD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAaD,MAAM,UAAU,uBAAuB,CACrC,IAAqB,EACrB,QAAiC;IAEjC,QAAQ,CAAC,oCAAoC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE;QAC5D,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;YAC7F,MAAM,MAAM,CACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAChE,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAEvC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACtE,MAAM,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC;YACpE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,GAAmB,CAAC;gBACpC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH;;;;;;;;;;;;;;;;;;WAkBG;QACH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,MAAM,CACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAC9D,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAcD,MAAM,UAAU,2BAA2B,CACzC,IAAyB,EACzB,QAAqC;IAErC,QAAQ,CAAC,wCAAwC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE;QAChE,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,EAAE;oBAAE,SAAS;gBACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACxD,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;gBACvD,MAAM,CACJ,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,cAAc,KAAK,QAAQ,CACpE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YACrF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YACrF,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YACrF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YACvF,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AA8CD,gGAAgG;AAChG,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,8EAA8E;AAC9E,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAEzC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEzC,qGAAqG;AACrG,SAAS,eAAe,CAAC,OAAwB,EAAE,IAAY;IAC7D,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B,CAAC,OAAwB;IAC3D,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,SAAS,CAAC,OAAwB,EAAE,EAAU,EAAE,KAAc;IACrE,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,OAAwB,EAAE,EAAU;IACxD,MAAM,MAAM,GAA4B,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9D,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,cAAc,CACrB,OAAoD,EACpD,OAAgB;IAEhB,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,uFAAuF;AACvF,SAAS,aAAa,CACpB,OAAoD,EACpD,OAAgB;IAEhB,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,SAAS,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAE3F,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,EAAE,CAAC,2CAA2C,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,MAAM,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAErF,IAAI,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,wEAAwE;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,IAAI,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;YAC9E,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAsB,EACtB,QAAkC;IAElC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,CAAC,IAAkB,EAAiD,EAAE,CACnF,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,CAAC,IAAkB,EAAsB,EAAE;QAC/D,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IAC7D,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,EACpB,IAAkB,EAClB,OAAwB,EACxB,UAAuC,IAAI,CAAC,OAAO,EACG,EAAE;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,EAAE;YACb,OAAO;YACP,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAqC;YACxD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;SACxC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,QAAQ,CAAC,mCAAmC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE;QAC3D,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACzE,oEAAoE;YACpE,uEAAuE;YACvE,wEAAwE;YACxE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACtF,IAAI,CACL,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;YAClF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACjF,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACjC,MAAM,CACJ,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EACjD,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,yCAAyC,CAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACb,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC5B,MAAM,CACJ,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAChD,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,wCAAwC,CAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACf,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,kCAAkC,CAAC;6BAChF,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,wEAAwE;YACxE,sEAAsE;YACtE,yEAAyE;YACzE,sEAAsE;YACtE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChC,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;gBACpC,OAAO,EAAE,CAAC,MAAM,CAAC;gBACjB,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ;aAC5B,CAAC,CAAC;YACH,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBAClD,IAAI,IAAI,KAAK,SAAS;oBAAE,SAAS;gBACjC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpF,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,qBAAqB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1C,kEAAkE;gBAClE,iCAAiC;gBACjC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,oEAAoE;YACpE,mEAAmE;YACnE,uEAAuE;YACvE,kEAAkE;YAClE,6CAA6C;YAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACjC,8DAA8D;oBAC9D,qEAAqE;oBACrE,iEAAiE;oBACjE,yDAAyD;oBACzD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;wBAChD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;4BACxC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gCAAE,SAAS;4BACnE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gCACvB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gCAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;oCAAE,SAAS;gCAClD,MAAM,CACJ,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EACtB,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACf,CAAC;wBACH,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;wBAAE,SAAS;oBACpD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBACrD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1F,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7D,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAClE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9E,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBACrD,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;YAC9F,sEAAsE;YACtE,yEAAyE;YACzE,0EAA0E;YAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC7C,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC5C,MAAM,CACJ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,KAAK,CAAC,EAC7B,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAE,CAAC,MAAM,6CAA6C,CAC7E,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBACxC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAE,CAAC,QAAQ,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,qEAAqE;YACrE,mEAAmE;YACnE,gCAAgC;YAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,SAAS;gBAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,OAAO,GACX,IAAI,KAAK,SAAS;oBAChB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;oBACxB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,2BAA2B,CAAC,CAAC;gBAC3E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxD,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAClE,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBAEjC;;;;;;;;;;;;;;;mBAeG;gBACH,MAAM,QAAQ,GAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7D,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACpD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,cAAc,EAAE,CAAC,CAAC,CAAC;gBACrF,CAAC;gBAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvD,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClE,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;wBAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC9C,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACjF,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAClD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;wBACrE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;YAC9F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,IAAI,KAAK,SAAS;oBAAE,SAAS;gBAEjC,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI;oBAC/B,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;oBAC3C,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC;iBACxC,EAAE,CAAC;oBACX,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oBAChE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBAEvD,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,CACJ,eAAe,CAAC,OAAO,CAAC,EACxB,GAAG,IAAI,CAAC,EAAE,qBAAqB,IAAI,CAAC,QAAQ,iBAAiB,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAClG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACd,SAAS;oBACX,CAAC;oBAED,8DAA8D;oBAC9D,mEAAmE;oBACnE,8DAA8D;oBAC9D,aAAa,CACX,OAAO,EACP,GAAG,IAAI,CAAC,EAAE,qBAAqB,IAAI,CAAC,QAAQ,cAAc,MAAM,SAAS,CAC1E,CAAC;oBACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACxC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,iCAAiC,CAAC,CAAC,GAAG,CAAC,YAAY,CACzF,CAAC,CACF,CAAC;oBACF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;wBAC1C,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,cAAc,KAAK,gCAAgC,CAAC,CAAC,SAAS,CACrF,KAAK,CACN,CAAC;oBACJ,CAAC;oBAED,iEAAiE;oBACjE,kDAAkD;oBAClD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAClC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;wBACvD,MAAM,CACJ,eAAe,CAAC,MAAM,CAAC,EACvB,GAAG,IAAI,CAAC,EAAE,YAAY,MAAM,gDAAgD,CAC7E,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|