@hatiolab/figure-model 0.9.6 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asset-types.d.ts +24 -56
- package/dist/asset-types.d.ts.map +1 -1
- package/dist/asset-types.js.map +1 -1
- package/dist/asset.d.ts +0 -7
- package/dist/asset.d.ts.map +1 -1
- package/dist/asset.js +11 -45
- package/dist/asset.js.map +1 -1
- package/dist/authoring-actions.d.ts.map +1 -1
- package/dist/authoring-actions.js +5 -27
- package/dist/authoring-actions.js.map +1 -1
- package/dist/authoring-bindings.js +1 -1
- package/dist/authoring-bindings.js.map +1 -1
- package/dist/authoring-dimensions.js +3 -3
- package/dist/authoring-nodes.d.ts +4 -4
- package/dist/authoring-nodes.d.ts.map +1 -1
- package/dist/authoring-nodes.js +7 -7
- package/dist/authoring-nodes.js.map +1 -1
- package/dist/authoring-placement.d.ts +40 -0
- package/dist/authoring-placement.d.ts.map +1 -0
- package/dist/{authoring-occupancy.js → authoring-placement.js} +114 -221
- package/dist/authoring-placement.js.map +1 -0
- package/dist/authoring-proportion.d.ts.map +1 -1
- package/dist/authoring-proportion.js +3 -4
- package/dist/authoring-proportion.js.map +1 -1
- package/dist/authoring-size.js +1 -1
- package/dist/authoring-types.d.ts +0 -57
- package/dist/authoring-types.d.ts.map +1 -1
- package/dist/body.d.ts +19 -0
- package/dist/body.d.ts.map +1 -0
- package/dist/body.js +37 -0
- package/dist/body.js.map +1 -0
- package/dist/command-preview.js +4 -4
- package/dist/command-preview.js.map +1 -1
- package/dist/contract.d.ts +0 -3
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +1 -2
- package/dist/examples.js.map +1 -1
- package/dist/face-overhang.js +2 -2
- package/dist/face-overhang.js.map +1 -1
- package/dist/fasten-place.js +7 -7
- package/dist/fasten-place.js.map +1 -1
- package/dist/gate.d.ts +15 -32
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +34 -101
- package/dist/gate.js.map +1 -1
- package/dist/graph-types.d.ts +2 -2
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +6 -67
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/joint-part-edits.d.ts +1 -10
- package/dist/joint-part-edits.d.ts.map +1 -1
- package/dist/joint-part-edits.js +6 -64
- package/dist/joint-part-edits.js.map +1 -1
- package/dist/kernel-version.d.ts +1 -1
- package/dist/kernel-version.d.ts.map +1 -1
- package/dist/kernel-version.js +1 -1
- package/dist/kernel-version.js.map +1 -1
- package/dist/part-edit.d.ts +1 -8
- package/dist/part-edit.d.ts.map +1 -1
- package/dist/part-edit.js +15 -32
- package/dist/part-edit.js.map +1 -1
- package/dist/proposal.d.ts +4 -11
- package/dist/proposal.d.ts.map +1 -1
- package/dist/proposal.js +3 -10
- package/dist/proposal.js.map +1 -1
- package/dist/recipe.js +1 -1
- package/dist/recipe.js.map +1 -1
- package/dist/release-contract.d.ts +1 -1
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +32 -29
- package/dist/release-contract.js.map +1 -1
- package/dist/release-metrics.d.ts +6 -14
- package/dist/release-metrics.d.ts.map +1 -1
- package/dist/release-metrics.js +8 -29
- package/dist/release-metrics.js.map +1 -1
- package/dist/resize-plan.d.ts +0 -5
- package/dist/resize-plan.d.ts.map +1 -1
- package/dist/resize-plan.js +4 -29
- package/dist/resize-plan.js.map +1 -1
- package/dist/robots.d.ts.map +1 -1
- package/dist/robots.js +1 -2
- package/dist/robots.js.map +1 -1
- package/dist/size-edit.js +3 -3
- package/dist/size-edit.js.map +1 -1
- package/dist/surface.js +2 -2
- package/docs/asset-persistence.md +1 -1
- package/docs/document-contract.md +0 -1
- package/docs/operator-contracts.md +3 -18
- package/docs/shape-dimension-contract.md +27 -25
- package/package.json +1 -1
- package/dist/authoring-occupancy.d.ts +0 -28
- package/dist/authoring-occupancy.d.ts.map +0 -1
- package/dist/authoring-occupancy.js.map +0 -1
- package/dist/room.d.ts +0 -53
- package/dist/room.d.ts.map +0 -1
- package/dist/room.js +0 -101
- package/dist/room.js.map +0 -1
package/dist/room.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { FigureAsset } from './asset-types.ts';
|
|
2
|
-
import type { FigureAuthoringAction } from './authoring-types.ts';
|
|
3
|
-
import { type Axis } from './words.ts';
|
|
4
|
-
type Bounds = Record<Axis, {
|
|
5
|
-
min: number;
|
|
6
|
-
max: number;
|
|
7
|
-
}>;
|
|
8
|
-
/**
|
|
9
|
-
* Design inputs the declared room reads and nothing drawn does: a part's old position or size, left when a rule took
|
|
10
|
-
* its place, which the room was measured from. They move no part; typing into one changes only the room. With `part`,
|
|
11
|
-
* only that part's own (`<part>.…`).
|
|
12
|
-
*/
|
|
13
|
-
export declare function figureRoomOnlyInputsOf(asset: FigureAsset, part?: string): string[];
|
|
14
|
-
export interface FigureRoomRefit {
|
|
15
|
-
/** The command that declares the room again from the parts, as proposed now: apply it only when the author confirms. */
|
|
16
|
-
step: Extract<FigureAuthoringAction, {
|
|
17
|
-
kind: 'declare-occupancy';
|
|
18
|
-
}>;
|
|
19
|
-
/** The room as declared and as proposed, at the authored size and, when the figure declares its size, at the largest. */
|
|
20
|
-
declared: {
|
|
21
|
-
authored: Bounds;
|
|
22
|
-
largest?: Bounds;
|
|
23
|
-
};
|
|
24
|
-
proposed: {
|
|
25
|
-
authored: Bounds;
|
|
26
|
-
largest?: Bounds;
|
|
27
|
-
};
|
|
28
|
-
/** Parts the release gate finds outside each room, and how it checked: proven over the range, or sampled. */
|
|
29
|
-
/** Inputs that confirming removes: read by nothing once the room is declared again -- a part's old position or size. */
|
|
30
|
-
drops: string[];
|
|
31
|
-
outside: {
|
|
32
|
-
declared: FigureRoomFinding;
|
|
33
|
-
proposed: FigureRoomFinding;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/** A part outside the room: on which axis, and by how much at worst. */
|
|
37
|
-
export type FigureRoomOutside = {
|
|
38
|
-
part: string;
|
|
39
|
-
axis: Axis;
|
|
40
|
-
mm: number;
|
|
41
|
-
};
|
|
42
|
-
/** The parts outside, and how the gate checked: `proven` over the whole range, or `sampled` at `states` states. */
|
|
43
|
-
export type FigureRoomFinding = {
|
|
44
|
-
parts: FigureRoomOutside[];
|
|
45
|
-
coverage: {
|
|
46
|
-
method: 'proven' | 'sampled' | 'defaults';
|
|
47
|
-
states: number;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
/** What declaring the room again would change, or undefined for a figure with no room declared. */
|
|
51
|
-
export declare function figureRoomRefitOf(asset: FigureAsset): FigureRoomRefit | undefined;
|
|
52
|
-
export {};
|
|
53
|
-
//# sourceMappingURL=room.d.ts.map
|
package/dist/room.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAMjE,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AAG5C,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAoBxD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBlF;AAED,MAAM,WAAW,eAAe;IAC9B,wHAAwH;IACxH,IAAI,EAAE,OAAO,CAAC,qBAAqB,EAAE;QAAE,IAAI,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAA;IACnE,yHAAyH;IACzH,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,6GAA6G;IAC7G,wHAAwH;IACxH,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,iBAAiB,CAAA;KAAE,CAAA;CACtE;AACD,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AACxE,mHAAmH;AACnH,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAEvI,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,SAAS,CA2CjF"}
|
package/dist/room.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* The declared room, read for the author (ADR-0097 §6): which inputs only the room still reads, and what declaring it
|
|
3
|
-
* again from the parts would change. The room is never widened or rewritten as a side effect of another command; a
|
|
4
|
-
* person sees the room as declared and as proposed, and what the gate finds outside each, before confirming.
|
|
5
|
-
*/
|
|
6
|
-
import { upgradeFigurePlacement } from "./asset.js";
|
|
7
|
-
import { applyFigureAuthoring } from "./authoring-actions.js";
|
|
8
|
-
import { proposeFigureOccupancy } from "./authoring-occupancy.js";
|
|
9
|
-
import { compileFigureGraph } from "./graph.js";
|
|
10
|
-
import { inspectFigureAsset, RESIZE_FACTOR } from "./gate.js";
|
|
11
|
-
import { FIGURE_INSTANCE_SIZE_INPUTS, figureInstanceSizeRangeOf } from "./instance-size.js";
|
|
12
|
-
import { AXES } from "./words.js";
|
|
13
|
-
const stringsIn = (value) => typeof value === 'string' ? [value] : Array.isArray(value) ? value.flatMap(stringsIn) : value && typeof value === 'object' ? Object.values(value).flatMap(stringsIn) : [];
|
|
14
|
-
/** Every value a set of references is worked out from, inputs included. */
|
|
15
|
-
function readFrom(m, from) {
|
|
16
|
-
const writers = new Map();
|
|
17
|
-
for (const n of m.nodes)
|
|
18
|
-
for (const ref of Object.values(n.outputs ?? {}))
|
|
19
|
-
writers.set(ref, n);
|
|
20
|
-
const read = new Set();
|
|
21
|
-
for (const pending = [...from]; pending.length;) {
|
|
22
|
-
const ref = pending.pop();
|
|
23
|
-
if (read.has(ref))
|
|
24
|
-
continue;
|
|
25
|
-
read.add(ref);
|
|
26
|
-
const writer = writers.get(ref);
|
|
27
|
-
if (writer)
|
|
28
|
-
pending.push(...writer.args, ...stringsIn(writer.params));
|
|
29
|
-
}
|
|
30
|
-
return read;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Design inputs the declared room reads and nothing drawn does: a part's old position or size, left when a rule took
|
|
34
|
-
* its place, which the room was measured from. They move no part; typing into one changes only the room. With `part`,
|
|
35
|
-
* only that part's own (`<part>.…`).
|
|
36
|
-
*/
|
|
37
|
-
export function figureRoomOnlyInputsOf(asset, part) {
|
|
38
|
-
asset = upgradeFigurePlacement(asset);
|
|
39
|
-
const a = asset;
|
|
40
|
-
const m = a.document.model;
|
|
41
|
-
if (!a.occupancy)
|
|
42
|
-
return [];
|
|
43
|
-
const drawn = readFrom(m, [
|
|
44
|
-
...m.nodes.filter((n) => n.op === 'place@1' || n.op === 'member@1' || n.op === 'repeat@1').flatMap((n) => n.args),
|
|
45
|
-
...stringsIn(a.appearance),
|
|
46
|
-
...stringsIn(a.document.capabilities),
|
|
47
|
-
...stringsIn(a.drivers),
|
|
48
|
-
...stringsIn(a.publicInputs),
|
|
49
|
-
...stringsIn(a.dataInterface),
|
|
50
|
-
...stringsIn(a.joints)
|
|
51
|
-
]);
|
|
52
|
-
const room = readFrom(m, stringsIn(a.occupancy));
|
|
53
|
-
return m.inputs
|
|
54
|
-
.filter((i) => i.role === 'design' && room.has(i.id) && !drawn.has(i.id) && (!part || i.id.startsWith(`${part}.`)))
|
|
55
|
-
.map((i) => i.id);
|
|
56
|
-
}
|
|
57
|
-
/** What declaring the room again would change, or undefined for a figure with no room declared. */
|
|
58
|
-
export function figureRoomRefitOf(asset) {
|
|
59
|
-
asset = upgradeFigurePlacement(asset);
|
|
60
|
-
if (!asset.occupancy)
|
|
61
|
-
return undefined;
|
|
62
|
-
const step = { kind: 'declare-occupancy', proposal: proposeFigureOccupancy(asset, { over: 'range' }) };
|
|
63
|
-
const refit = applyFigureAuthoring(asset, step);
|
|
64
|
-
const m = asset.document.model;
|
|
65
|
-
/*
|
|
66
|
-
At the largest size the release check reaches: the one the parts or the author set, and on an axis nothing limits,
|
|
67
|
-
RESIZE_FACTOR times the drawn size, as the gate samples it (ADR-0087 decision 6).
|
|
68
|
-
*/
|
|
69
|
-
const range = figureInstanceSizeRangeOf(asset);
|
|
70
|
-
const largest = AXES.every(axis => range[axis])
|
|
71
|
-
? Object.fromEntries(AXES.map(axis => {
|
|
72
|
-
const at = asset.designInputs[FIGURE_INSTANCE_SIZE_INPUTS[axis]];
|
|
73
|
-
return [FIGURE_INSTANCE_SIZE_INPUTS[axis], Number.isFinite(range[axis].max) ? range[axis].max : at * RESIZE_FACTOR];
|
|
74
|
-
}))
|
|
75
|
-
: undefined;
|
|
76
|
-
const boundsOf = (a, at = {}) => {
|
|
77
|
-
const values = compileFigureGraph(a.document.model).evaluate({ ...a.designInputs, ...a.stateDefaults, ...at }).values;
|
|
78
|
-
const b = a.occupancy.bounds;
|
|
79
|
-
return Object.fromEntries(AXES.map(axis => [axis, { min: values[b[axis].min], max: values[b[axis].max] }]));
|
|
80
|
-
};
|
|
81
|
-
/*
|
|
82
|
-
What lies outside, as the release gate finds it over the sizes and states the figure allows -- with its coverage:
|
|
83
|
-
proven over the whole range, or sampled at so many states, which is not a bound (designer 2026-09-27: a check of a
|
|
84
|
-
few corners is not a proof of the range).
|
|
85
|
-
*/
|
|
86
|
-
const outside = (a) => {
|
|
87
|
-
const report = inspectFigureAsset(a);
|
|
88
|
-
return {
|
|
89
|
-
parts: report.violations.filter(v => v.code === 'PART_OUTSIDE_OCCUPANCY').map(v => ({ part: v.part, axis: v.axis, mm: v.mm })),
|
|
90
|
-
coverage: { method: report.coverage.method, states: report.coverage.states }
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
return {
|
|
94
|
-
step,
|
|
95
|
-
drops: Object.keys(asset.designInputs).filter(id => !(id in refit.designInputs)),
|
|
96
|
-
declared: { authored: boundsOf(asset), ...(largest ? { largest: boundsOf(asset, largest) } : {}) },
|
|
97
|
-
proposed: { authored: boundsOf(refit), ...(largest ? { largest: boundsOf(refit, largest) } : {}) },
|
|
98
|
-
outside: { declared: outside(asset), proposed: outside(refit) }
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=room.js.map
|
package/dist/room.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC7D,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC3F,OAAO,EAAE,IAAI,EAAa,MAAM,YAAY,CAAA;AAK5C,MAAM,SAAS,GAAG,CAAC,KAAc,EAAY,EAAE,CAC7C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAE3K,2EAA2E;AAC3E,SAAS,QAAQ,CAAC,CAAU,EAAE,IAAc;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAA;IAC1C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAa;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1G,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,GAAI,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAG,CAAA;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACvE,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkB,EAAE,IAAa;IACtE,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,CAAC,GAAG,KAAgB,CAAA;IAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC1B,IAAI,CAAC,CAAC,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE;QACxB,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAgB,CAAC;QAC/I,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QAC1B,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;QACvB,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5B,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;QAC7B,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;KACvB,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,CAAC,MAAM;SACZ,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;SAC3H,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAY,CAAC,CAAA;AACxC,CAAC;AAkBD,mGAAmG;AACnG,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IACtC,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,sBAAsB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IAC/H,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAgB,CAAA;IACzC;;;MAGE;IACF,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACd,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAE,CAAA;YACjE,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAA;QACvH,CAAC,CAAC,CACH;QACH,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,QAAQ,GAAG,CAAC,CAAc,EAAE,KAA6B,EAAE,EAAU,EAAE;QAC3E,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAgC,CAAA;QACxJ,MAAM,CAAC,GAAG,CAAC,CAAC,SAAU,CAAC,MAA+D,CAAA;QACtF,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAE,EAAE,CAAC,CAAC,CAAW,CAAA;IACzH,CAAC,CAAA;IACD;;;;MAIE;IACF,MAAM,OAAO,GAAG,CAAC,CAAc,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA;QACpC,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAG,EAAE,CAAC,CAAC;YACjI,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;SAC7E,CAAA;IACH,CAAC,CAAA;IACD,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAChF,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClG,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClG,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;KAChE,CAAA;AACH,CAAC"}
|