@xeonr/platform-ui 0.5.12 → 0.5.13
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/kit/Graph.d.ts +91 -0
- package/dist/kit/Graph.d.ts.map +1 -0
- package/dist/kit/Graph.js +503 -0
- package/dist/kit/Graph.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -46,6 +46,7 @@ export { Board, BoardCardLine, BoardCardTitle, BoardCardFoot, type BoardLane } f
|
|
|
46
46
|
export { EditableTitle } from "./kit/Editable.tsx";
|
|
47
47
|
export { Tooltip, type TooltipProps } from "./kit/Tooltip.tsx";
|
|
48
48
|
export { Sparkline, SparkRow, type SparklineProps } from "./kit/Sparkline.tsx";
|
|
49
|
+
export { Graph, type GraphProps, type GraphNode, type GraphEdge, type GraphPort, type GraphTone } from "./kit/Graph.tsx";
|
|
49
50
|
export { ApiKeys, keyHint, type ApiKeysProps, type ApiKeyRow, type ApiKeyBindingRow, type ApiKeyOwnerKind, type ApiKeyResourceMode, type ApiKeyScopePreset, type ApiKeyResourceTypeSpec, type ApiKeyCreateInput, type ApiKeyUpdateInput, } from "./kit/ApiKeys.tsx";
|
|
50
51
|
export { RouteTabs, QueryTabs, LocalTabs, useQueryTab, useTabActions, type RouteTabsProps, type QueryTabsProps, type LocalTabsProps } from "./kit/TabStrip.tsx";
|
|
51
52
|
export { Forbidden, ParentBar } from "./kit/Forbidden.tsx";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -80,6 +80,10 @@ export { EditableTitle } from "./kit/Editable.js";
|
|
|
80
80
|
// every list of entities-with-a-trend wants.
|
|
81
81
|
export { Tooltip } from "./kit/Tooltip.js";
|
|
82
82
|
export { Sparkline, SparkRow } from "./kit/Sparkline.js";
|
|
83
|
+
// Added for the Storage console's pipeline editor (2026-10-15, UPL-125): the
|
|
84
|
+
// wired graph — nodes with ports, edges between them — drawn in the kit's own
|
|
85
|
+
// SVG so the colours are the tokens and the layout is the caller's order.
|
|
86
|
+
export { Graph } from "./kit/Graph.js";
|
|
83
87
|
// Added for centralised API keys (2026-10-13, CON-23): the one keys screen
|
|
84
88
|
// every product shows for the keys auth holds on its behalf, and the portal's
|
|
85
89
|
// read-only view across products. API-agnostic — the host maps its wire type
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type Tone } from "./Badge.tsx";
|
|
3
|
+
export type GraphTone = Tone;
|
|
4
|
+
export interface GraphPort {
|
|
5
|
+
/** unique within the node; the thing edges name */
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
/** what kind of thing passes through it — `kv`, `blob`, `metadata` */
|
|
9
|
+
sub?: string | undefined;
|
|
10
|
+
/** drawn bold with a star: the node cannot run without it */
|
|
11
|
+
required?: boolean | undefined;
|
|
12
|
+
/** a literal the input holds, shown under the label (an input that is not wired) */
|
|
13
|
+
value?: string | undefined;
|
|
14
|
+
/** hover text — the full reference an edge stands for */
|
|
15
|
+
hint?: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface GraphNode {
|
|
18
|
+
id: string;
|
|
19
|
+
title: ReactNode;
|
|
20
|
+
/** a small mono tag before the title — the node's kind */
|
|
21
|
+
kind?: string | undefined;
|
|
22
|
+
/** the right-hand side of the header — a status pill on a run page */
|
|
23
|
+
badge?: ReactNode | undefined;
|
|
24
|
+
/** the line under the ports — the ref the node runs, a version */
|
|
25
|
+
sub?: ReactNode | undefined;
|
|
26
|
+
/** a line in the danger tone under `sub` — the failure message */
|
|
27
|
+
note?: ReactNode | undefined;
|
|
28
|
+
inputs?: GraphPort[] | undefined;
|
|
29
|
+
outputs?: GraphPort[] | undefined;
|
|
30
|
+
/** the border and header colour: the status the node reached (default `mut`) */
|
|
31
|
+
tone?: GraphTone | undefined;
|
|
32
|
+
/** dashed and unselectable: a trigger, a built-in step — context, not content */
|
|
33
|
+
dim?: boolean | undefined;
|
|
34
|
+
/** contiguous nodes sharing a group get a labelled band above them */
|
|
35
|
+
group?: string | undefined;
|
|
36
|
+
/** px (default 220) */
|
|
37
|
+
width?: number | undefined;
|
|
38
|
+
}
|
|
39
|
+
export interface GraphEdge {
|
|
40
|
+
id: string;
|
|
41
|
+
from: {
|
|
42
|
+
node: string;
|
|
43
|
+
port: string;
|
|
44
|
+
};
|
|
45
|
+
to: {
|
|
46
|
+
node: string;
|
|
47
|
+
port: string;
|
|
48
|
+
};
|
|
49
|
+
/** the curve's colour (default `brand`); `crit` with a `label` is a wiring the caller rejects */
|
|
50
|
+
tone?: GraphTone | undefined;
|
|
51
|
+
/** a short label at the curve's midpoint — why it is wrong */
|
|
52
|
+
label?: string | undefined;
|
|
53
|
+
/** a moving dash: data is passing right now */
|
|
54
|
+
animated?: boolean | undefined;
|
|
55
|
+
}
|
|
56
|
+
export interface GraphProps {
|
|
57
|
+
nodes: GraphNode[];
|
|
58
|
+
edges: GraphEdge[];
|
|
59
|
+
/** `view` selects nodes; `edit` also wires ports and removes edges (default `view`) */
|
|
60
|
+
mode?: "view" | "edit" | undefined;
|
|
61
|
+
selected?: string | null | undefined;
|
|
62
|
+
onSelect?: ((id: string | null) => void) | undefined;
|
|
63
|
+
/** edit: an output was dropped on an input (or the reverse) */
|
|
64
|
+
onConnect?: ((from: {
|
|
65
|
+
node: string;
|
|
66
|
+
port: string;
|
|
67
|
+
}, to: {
|
|
68
|
+
node: string;
|
|
69
|
+
port: string;
|
|
70
|
+
}) => void) | undefined;
|
|
71
|
+
/** edit: the person removed an edge */
|
|
72
|
+
onDisconnect?: ((edge: GraphEdge) => void) | undefined;
|
|
73
|
+
/** draw the dashed run-order chain between consecutive nodes (default true) */
|
|
74
|
+
flow?: boolean | undefined;
|
|
75
|
+
/** px; the surface grows with its tallest node and scrolls sideways (default 200) */
|
|
76
|
+
minHeight?: number | undefined;
|
|
77
|
+
/** shown in place of the surface when there are no nodes */
|
|
78
|
+
empty?: ReactNode | undefined;
|
|
79
|
+
/** accessible description of the surface */
|
|
80
|
+
label?: string | undefined;
|
|
81
|
+
className?: string | undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Graph: nodes with ports and the edges between them, in the caller's order.
|
|
85
|
+
*
|
|
86
|
+
* Reach for it where the wiring is the content — which step feeds which, and
|
|
87
|
+
* with what. A list of steps whose connections are not the point is a
|
|
88
|
+
* `Steps` walkthrough or a `RowList`; a tree is a `RowList` with `depth`.
|
|
89
|
+
*/
|
|
90
|
+
export declare function Graph({ nodes, edges, mode, selected, onSelect, onConnect, onDisconnect, flow, minHeight, empty, label, className, }: GraphProps): import("react").JSX.Element;
|
|
91
|
+
//# sourceMappingURL=Graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../src/kit/Graph.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import styled, { css, keyframes } from "styled-components";
|
|
4
|
+
import { v } from "../theme/tokens.js";
|
|
5
|
+
import { Tag } from "./Badge.js";
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Geometry
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
const NODE_W = 220;
|
|
10
|
+
const GAP = 44;
|
|
11
|
+
const PAD = 18;
|
|
12
|
+
const BAND_H = 24;
|
|
13
|
+
const DOT = 9;
|
|
14
|
+
const portKey = (node, port, side) => `${side}|${node}|${port}`;
|
|
15
|
+
const TONE_STROKE = {
|
|
16
|
+
brand: v.brand, ok: v.success, warn: v.warning, crit: v.danger, info: v.info, run: v.running, mut: v.faint, data: v.data,
|
|
17
|
+
};
|
|
18
|
+
const TONE_BG = {
|
|
19
|
+
brand: v.brand08, ok: v.successBg, warn: v.warningBg, crit: v.dangerBg, info: v.infoBg, run: v.runningBg, mut: v.hover, data: v.dataBg,
|
|
20
|
+
};
|
|
21
|
+
/** A cubic from an output dot to an input dot; loops back when the input is behind. */
|
|
22
|
+
function curve(a, b) {
|
|
23
|
+
const dx = Math.max(40, Math.abs(b.x - a.x) / 2);
|
|
24
|
+
return `M${a.x},${a.y} C${a.x + dx},${a.y} ${b.x - dx},${b.y} ${b.x},${b.y}`;
|
|
25
|
+
}
|
|
26
|
+
function midpoint(a, b) {
|
|
27
|
+
// The midpoint of the cubic above, which for symmetric control points is the
|
|
28
|
+
// average of the ends.
|
|
29
|
+
return { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 };
|
|
30
|
+
}
|
|
31
|
+
const LANE_H = 12;
|
|
32
|
+
const CORNER = 8;
|
|
33
|
+
const STUB = 14;
|
|
34
|
+
/**
|
|
35
|
+
* An edge between nodes that are not neighbours goes under the row rather
|
|
36
|
+
* than through whatever sits between them: out of the port, down to its lane,
|
|
37
|
+
* across, and up into the input. Two edges share a lane when their spans do
|
|
38
|
+
* not overlap.
|
|
39
|
+
*/
|
|
40
|
+
function laned(a, b, laneY) {
|
|
41
|
+
const x1 = a.x + STUB;
|
|
42
|
+
const x2 = b.x - STUB;
|
|
43
|
+
const r = CORNER;
|
|
44
|
+
return `M${a.x},${a.y} H${x1 - r} Q${x1},${a.y} ${x1},${a.y + r} V${laneY - r} Q${x1},${laneY} ${x1 + r},${laneY}`
|
|
45
|
+
+ ` H${x2 - r} Q${x2},${laneY} ${x2},${laneY - r} V${b.y + r} Q${x2},${b.y} ${x2 + r},${b.y} H${b.x}`;
|
|
46
|
+
}
|
|
47
|
+
/** Which edges go under the row, and in which lane. */
|
|
48
|
+
function assignLanes(nodes, edges) {
|
|
49
|
+
const order = new Map(nodes.map((n, i) => [n.id, i]));
|
|
50
|
+
const spans = [];
|
|
51
|
+
for (const e of edges) {
|
|
52
|
+
const i = order.get(e.from.node);
|
|
53
|
+
const j = order.get(e.to.node);
|
|
54
|
+
if (i === undefined || j === undefined || j === i + 1)
|
|
55
|
+
continue;
|
|
56
|
+
spans.push({ id: e.id, i: Math.min(i, j), j: Math.max(i, j) });
|
|
57
|
+
}
|
|
58
|
+
// The shortest span takes the lane nearest the row, so an edge's stubs cross
|
|
59
|
+
// as few other lanes as the shared source allows.
|
|
60
|
+
spans.sort((p, q) => p.i - q.i || p.j - q.j);
|
|
61
|
+
const lanes = [];
|
|
62
|
+
const out = new Map();
|
|
63
|
+
for (const sp of spans) {
|
|
64
|
+
let lane = lanes.findIndex((last) => last <= sp.i);
|
|
65
|
+
if (lane === -1) {
|
|
66
|
+
lane = lanes.length;
|
|
67
|
+
lanes.push(sp.j);
|
|
68
|
+
}
|
|
69
|
+
else
|
|
70
|
+
lanes[lane] = sp.j;
|
|
71
|
+
out.set(sp.id, lane);
|
|
72
|
+
}
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Styles
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
const Surface = styled.div `
|
|
79
|
+
position: relative;
|
|
80
|
+
overflow: auto;
|
|
81
|
+
border: 1px solid ${v.line};
|
|
82
|
+
border-radius: ${v.rPanel};
|
|
83
|
+
background-color: ${v.surface2};
|
|
84
|
+
background-image: radial-gradient(${v.line} 1px, transparent 1px);
|
|
85
|
+
background-size: 16px 16px;
|
|
86
|
+
`;
|
|
87
|
+
const Content = styled.div `
|
|
88
|
+
position: relative;
|
|
89
|
+
display: inline-flex;
|
|
90
|
+
align-items: flex-start;
|
|
91
|
+
gap: ${GAP}px;
|
|
92
|
+
padding: ${(p) => (p.$band ? PAD + BAND_H : PAD)}px ${PAD}px ${(p) => PAD + (p.$lanes ? 6 + p.$lanes * LANE_H : 0)}px;
|
|
93
|
+
min-width: 100%;
|
|
94
|
+
`;
|
|
95
|
+
const Band = styled.div `
|
|
96
|
+
position: absolute;
|
|
97
|
+
height: ${BAND_H - 6}px;
|
|
98
|
+
padding: 0 8px;
|
|
99
|
+
display: flex;
|
|
100
|
+
align-items: center;
|
|
101
|
+
gap: 6px;
|
|
102
|
+
border: 1px dashed ${v.brand55};
|
|
103
|
+
border-radius: 5px;
|
|
104
|
+
background: ${v.brand08};
|
|
105
|
+
color: ${v.brand};
|
|
106
|
+
font-size: 10.5px;
|
|
107
|
+
font-weight: 600;
|
|
108
|
+
white-space: nowrap;
|
|
109
|
+
overflow: hidden;
|
|
110
|
+
pointer-events: none;
|
|
111
|
+
code { font-family: ${v.mono}; font-weight: 500; }
|
|
112
|
+
`;
|
|
113
|
+
const NodeBox = styled.div `
|
|
114
|
+
position: relative;
|
|
115
|
+
flex: none;
|
|
116
|
+
width: ${(p) => p.$w}px;
|
|
117
|
+
border-radius: 10px;
|
|
118
|
+
background: ${(p) => (p.$dim ? v.surface2 : v.surface)};
|
|
119
|
+
border: ${(p) => (p.$dim ? "1px dashed" : "1.5px solid")} ${(p) => (p.$selected ? v.brand : p.$dim ? v.line2 : TONE_STROKE[p.$tone] === v.faint ? v.line2 : TONE_STROKE[p.$tone])};
|
|
120
|
+
box-shadow: ${(p) => (p.$selected ? `0 0 0 3px ${v.brand22}` : "none")};
|
|
121
|
+
color: ${v.text};
|
|
122
|
+
cursor: ${(p) => (p.$selectable ? "pointer" : "default")};
|
|
123
|
+
outline: none;
|
|
124
|
+
${(p) => p.$selectable && css `&:hover { border-color: ${v.brand}; }`}
|
|
125
|
+
&:focus-visible { box-shadow: ${v.ring}; }
|
|
126
|
+
`;
|
|
127
|
+
const Head = styled.div `
|
|
128
|
+
display: flex;
|
|
129
|
+
align-items: center;
|
|
130
|
+
justify-content: space-between;
|
|
131
|
+
gap: 6px;
|
|
132
|
+
padding: 6px 10px;
|
|
133
|
+
border-bottom: 1px solid ${v.line};
|
|
134
|
+
border-radius: 9px 9px 0 0;
|
|
135
|
+
background: ${(p) => (p.$dim || p.$tone === "mut" ? "transparent" : TONE_BG[p.$tone])};
|
|
136
|
+
min-width: 0;
|
|
137
|
+
& > .title { display: flex; align-items: center; gap: 6px; min-width: 0; font-weight: 600; font-size: 12.5px; }
|
|
138
|
+
& > .title > strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
|
|
139
|
+
& > .badge { flex: none; display: inline-flex; }
|
|
140
|
+
`;
|
|
141
|
+
const Body = styled.div `
|
|
142
|
+
display: flex;
|
|
143
|
+
align-items: flex-start;
|
|
144
|
+
gap: 4px;
|
|
145
|
+
padding: 6px 0;
|
|
146
|
+
min-height: 34px;
|
|
147
|
+
& > div { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
148
|
+
`;
|
|
149
|
+
const PortRow = styled.div `
|
|
150
|
+
position: relative;
|
|
151
|
+
min-height: 20px;
|
|
152
|
+
min-width: 0;
|
|
153
|
+
padding: ${(p) => (p.$side === "in" ? "1px 4px 1px 14px" : "1px 14px 1px 4px")};
|
|
154
|
+
text-align: ${(p) => (p.$side === "in" ? "left" : "right")};
|
|
155
|
+
font-size: 11.5px;
|
|
156
|
+
line-height: 18px;
|
|
157
|
+
& > .label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
158
|
+
& > .label > .sub { color: ${v.faint}; }
|
|
159
|
+
& > .label.required { font-weight: 600; }
|
|
160
|
+
& > .value { color: ${v.faint}; font-family: ${v.mono}; font-size: 10.5px; line-height: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
161
|
+
`;
|
|
162
|
+
const Dot = styled.span `
|
|
163
|
+
position: absolute;
|
|
164
|
+
top: 5px;
|
|
165
|
+
${(p) => (p.$side === "in" ? "left" : "right")}: -${DOT / 2 + 1}px;
|
|
166
|
+
width: ${DOT}px;
|
|
167
|
+
height: ${DOT}px;
|
|
168
|
+
border-radius: 50%;
|
|
169
|
+
background: ${(p) => (p.$target ? v.success : v.brand)};
|
|
170
|
+
border: 1.5px solid ${v.surface};
|
|
171
|
+
box-sizing: border-box;
|
|
172
|
+
${(p) => p.$live && css `cursor: crosshair; &:hover { transform: scale(1.35); }`}
|
|
173
|
+
${(p) => p.$target && css `transform: scale(1.5); box-shadow: 0 0 0 3px ${v.successBg};`}
|
|
174
|
+
transition: transform 80ms ease;
|
|
175
|
+
`;
|
|
176
|
+
const NoPorts = styled.div `
|
|
177
|
+
color: ${v.faint};
|
|
178
|
+
font-size: 11px;
|
|
179
|
+
padding: 1px 8px;
|
|
180
|
+
`;
|
|
181
|
+
const Foot = styled.div `
|
|
182
|
+
padding: 4px 10px 6px;
|
|
183
|
+
border-top: 1px solid ${v.line};
|
|
184
|
+
font-size: 11px;
|
|
185
|
+
color: ${v.faint};
|
|
186
|
+
min-width: 0;
|
|
187
|
+
& > div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
188
|
+
& > .note { color: ${v.danger}; }
|
|
189
|
+
`;
|
|
190
|
+
const march = keyframes `to { stroke-dashoffset: -20; }`;
|
|
191
|
+
const Overlay = styled.svg `
|
|
192
|
+
position: absolute;
|
|
193
|
+
top: 0;
|
|
194
|
+
left: 0;
|
|
195
|
+
pointer-events: none;
|
|
196
|
+
overflow: visible;
|
|
197
|
+
.hit { fill: none; stroke: transparent; stroke-width: 14px; pointer-events: stroke; cursor: pointer; }
|
|
198
|
+
.hit.static { pointer-events: none; cursor: default; }
|
|
199
|
+
.edge { fill: none; stroke-width: 1.5px; }
|
|
200
|
+
.edge.animated { stroke-dasharray: 6 4; animation: ${march} 0.8s linear infinite; }
|
|
201
|
+
.edge.picked { stroke-width: 2.5px; }
|
|
202
|
+
.flow { fill: none; stroke: ${v.faint}; stroke-width: 1.25px; stroke-dasharray: 5 4; opacity: 0.7; }
|
|
203
|
+
.draft { fill: none; stroke: ${v.brand}; stroke-width: 1.5px; stroke-dasharray: 4 3; }
|
|
204
|
+
`;
|
|
205
|
+
const EdgeLabel = styled.div `
|
|
206
|
+
position: absolute;
|
|
207
|
+
transform: translate(-50%, -50%);
|
|
208
|
+
padding: 1px 6px;
|
|
209
|
+
border-radius: 4px;
|
|
210
|
+
font-size: 10px;
|
|
211
|
+
font-weight: 600;
|
|
212
|
+
white-space: nowrap;
|
|
213
|
+
color: ${(p) => TONE_STROKE[p.$tone]};
|
|
214
|
+
background: ${(p) => TONE_BG[p.$tone]};
|
|
215
|
+
border: 1px solid ${(p) => TONE_STROKE[p.$tone]};
|
|
216
|
+
pointer-events: none;
|
|
217
|
+
`;
|
|
218
|
+
const Remove = styled.button `
|
|
219
|
+
position: absolute;
|
|
220
|
+
transform: translate(-50%, -50%);
|
|
221
|
+
width: 20px;
|
|
222
|
+
height: 20px;
|
|
223
|
+
border-radius: 50%;
|
|
224
|
+
display: inline-flex;
|
|
225
|
+
align-items: center;
|
|
226
|
+
justify-content: center;
|
|
227
|
+
background: ${v.surface};
|
|
228
|
+
border: 1px solid ${v.danger};
|
|
229
|
+
color: ${v.danger};
|
|
230
|
+
font-size: 13px;
|
|
231
|
+
line-height: 1;
|
|
232
|
+
box-shadow: 0 1px 2px ${v.scrim};
|
|
233
|
+
&:hover { background: ${v.dangerBg}; }
|
|
234
|
+
`;
|
|
235
|
+
const Empty = styled.div `
|
|
236
|
+
padding: 22px;
|
|
237
|
+
text-align: center;
|
|
238
|
+
color: ${v.faint};
|
|
239
|
+
font-size: 12px;
|
|
240
|
+
`;
|
|
241
|
+
// ---------------------------------------------------------------------------
|
|
242
|
+
// Component
|
|
243
|
+
// ---------------------------------------------------------------------------
|
|
244
|
+
/**
|
|
245
|
+
* Graph: nodes with ports and the edges between them, in the caller's order.
|
|
246
|
+
*
|
|
247
|
+
* Reach for it where the wiring is the content — which step feeds which, and
|
|
248
|
+
* with what. A list of steps whose connections are not the point is a
|
|
249
|
+
* `Steps` walkthrough or a `RowList`; a tree is a `RowList` with `depth`.
|
|
250
|
+
*/
|
|
251
|
+
export function Graph({ nodes, edges, mode = "view", selected = null, onSelect, onConnect, onDisconnect, flow = true, minHeight = 200, empty, label, className, }) {
|
|
252
|
+
const content = useRef(null);
|
|
253
|
+
const portEls = useRef(new Map());
|
|
254
|
+
const nodeEls = useRef(new Map());
|
|
255
|
+
const [m, setM] = useState(null);
|
|
256
|
+
const [picked, setPicked] = useState(null);
|
|
257
|
+
const [draft, setDraft] = useState(null);
|
|
258
|
+
// A drag that started on a port ends with a click on the node it sits in;
|
|
259
|
+
// that click is the drag's, not a selection.
|
|
260
|
+
const dragged = useRef(false);
|
|
261
|
+
const editing = mode === "edit";
|
|
262
|
+
const hasBand = nodes.some((n) => n.group);
|
|
263
|
+
const lanes = useMemo(() => assignLanes(nodes, edges), [nodes, edges]);
|
|
264
|
+
const laneCount = lanes.size ? Math.max(...lanes.values()) + 1 : 0;
|
|
265
|
+
// Measure every port dot and node box relative to the content's origin, and
|
|
266
|
+
// keep the measurement when nothing moved — a state change here re-renders,
|
|
267
|
+
// and a re-render that measures the same numbers must not loop.
|
|
268
|
+
const measure = useCallback(() => {
|
|
269
|
+
const root = content.current;
|
|
270
|
+
if (!root)
|
|
271
|
+
return;
|
|
272
|
+
const origin = root.getBoundingClientRect();
|
|
273
|
+
const ports = {};
|
|
274
|
+
for (const [key, el] of portEls.current) {
|
|
275
|
+
const r = el.getBoundingClientRect();
|
|
276
|
+
ports[key] = { x: r.left - origin.left + r.width / 2, y: r.top - origin.top + r.height / 2 };
|
|
277
|
+
}
|
|
278
|
+
const boxes = {};
|
|
279
|
+
for (const [id, el] of nodeEls.current) {
|
|
280
|
+
const r = el.getBoundingClientRect();
|
|
281
|
+
boxes[id] = { x: r.left - origin.left, y: r.top - origin.top, w: r.width, h: r.height };
|
|
282
|
+
}
|
|
283
|
+
const next = { ports, boxes, w: root.scrollWidth, h: root.scrollHeight };
|
|
284
|
+
setM((prev) => (prev && sameMeasure(prev, next) ? prev : next));
|
|
285
|
+
}, []);
|
|
286
|
+
useLayoutEffect(() => { measure(); });
|
|
287
|
+
useEffect(() => {
|
|
288
|
+
const root = content.current;
|
|
289
|
+
if (!root || typeof ResizeObserver === "undefined")
|
|
290
|
+
return;
|
|
291
|
+
const ro = new ResizeObserver(() => measure());
|
|
292
|
+
ro.observe(root);
|
|
293
|
+
for (const el of nodeEls.current.values())
|
|
294
|
+
ro.observe(el);
|
|
295
|
+
return () => ro.disconnect();
|
|
296
|
+
}, [measure, nodes.length]);
|
|
297
|
+
// A picked edge that the caller removed, or that stopped existing, is forgotten.
|
|
298
|
+
useEffect(() => { if (picked && !edges.some((e) => e.id === picked))
|
|
299
|
+
setPicked(null); }, [edges, picked]);
|
|
300
|
+
useEffect(() => { if (!editing)
|
|
301
|
+
setPicked(null); }, [editing]);
|
|
302
|
+
const register = useCallback((key) => (el) => {
|
|
303
|
+
if (el)
|
|
304
|
+
portEls.current.set(key, el);
|
|
305
|
+
else
|
|
306
|
+
portEls.current.delete(key);
|
|
307
|
+
}, []);
|
|
308
|
+
const registerNode = useCallback((id) => (el) => {
|
|
309
|
+
if (el)
|
|
310
|
+
nodeEls.current.set(id, el);
|
|
311
|
+
else
|
|
312
|
+
nodeEls.current.delete(id);
|
|
313
|
+
}, []);
|
|
314
|
+
// --- wiring by drag ---------------------------------------------------
|
|
315
|
+
const toLocal = useCallback((e) => {
|
|
316
|
+
const origin = content.current?.getBoundingClientRect();
|
|
317
|
+
return origin ? { x: e.clientX - origin.left, y: e.clientY - origin.top } : { x: 0, y: 0 };
|
|
318
|
+
}, []);
|
|
319
|
+
const startDrag = (node, port, side) => (e) => {
|
|
320
|
+
if (!editing || !onConnect)
|
|
321
|
+
return;
|
|
322
|
+
e.preventDefault();
|
|
323
|
+
e.stopPropagation();
|
|
324
|
+
e.currentTarget.setPointerCapture(e.pointerId);
|
|
325
|
+
setDraft({ from: { node, port, side }, at: toLocal(e), over: null });
|
|
326
|
+
dragged.current = true;
|
|
327
|
+
};
|
|
328
|
+
const moveDrag = (e) => {
|
|
329
|
+
if (!draft)
|
|
330
|
+
return;
|
|
331
|
+
const over = portUnder(e.clientX, e.clientY, draft.from.side === "out" ? "in" : "out");
|
|
332
|
+
setDraft({ ...draft, at: toLocal(e), over: over && over.node !== draft.from.node ? over : null });
|
|
333
|
+
};
|
|
334
|
+
const endDrag = (e) => {
|
|
335
|
+
if (!draft)
|
|
336
|
+
return;
|
|
337
|
+
e.currentTarget.releasePointerCapture(e.pointerId);
|
|
338
|
+
const over = portUnder(e.clientX, e.clientY, draft.from.side === "out" ? "in" : "out");
|
|
339
|
+
if (over && over.node !== draft.from.node && onConnect) {
|
|
340
|
+
const a = { node: draft.from.node, port: draft.from.port };
|
|
341
|
+
if (draft.from.side === "out")
|
|
342
|
+
onConnect(a, over);
|
|
343
|
+
else
|
|
344
|
+
onConnect(over, a);
|
|
345
|
+
}
|
|
346
|
+
setDraft(null);
|
|
347
|
+
};
|
|
348
|
+
const remove = (edge) => { onDisconnect?.(edge); setPicked(null); };
|
|
349
|
+
const onKey = (e) => {
|
|
350
|
+
if (!editing || !picked)
|
|
351
|
+
return;
|
|
352
|
+
if (e.key === "Delete" || e.key === "Backspace") {
|
|
353
|
+
const edge = edges.find((x) => x.id === picked);
|
|
354
|
+
if (edge) {
|
|
355
|
+
e.preventDefault();
|
|
356
|
+
remove(edge);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
if (e.key === "Escape")
|
|
360
|
+
setPicked(null);
|
|
361
|
+
};
|
|
362
|
+
// --- group bands --------------------------------------------------------
|
|
363
|
+
const bands = useMemo(() => {
|
|
364
|
+
if (!m || !hasBand)
|
|
365
|
+
return [];
|
|
366
|
+
const out = [];
|
|
367
|
+
let cur = null;
|
|
368
|
+
const flush = () => {
|
|
369
|
+
if (!cur)
|
|
370
|
+
return;
|
|
371
|
+
const a = m.boxes[cur.first];
|
|
372
|
+
const b = m.boxes[cur.last];
|
|
373
|
+
if (a && b && cur.count > 1)
|
|
374
|
+
out.push({ key: `${cur.label}:${cur.first}`, label: cur.label, count: cur.count, x: a.x - 6, w: b.x + b.w - a.x + 12 });
|
|
375
|
+
cur = null;
|
|
376
|
+
};
|
|
377
|
+
for (const n of nodes) {
|
|
378
|
+
if (n.group && cur && cur.label === n.group) {
|
|
379
|
+
cur.last = n.id;
|
|
380
|
+
cur.count++;
|
|
381
|
+
continue;
|
|
382
|
+
}
|
|
383
|
+
flush();
|
|
384
|
+
if (n.group)
|
|
385
|
+
cur = { label: n.group, first: n.id, last: n.id, count: 1 };
|
|
386
|
+
}
|
|
387
|
+
flush();
|
|
388
|
+
return out;
|
|
389
|
+
}, [m, nodes, hasBand]);
|
|
390
|
+
if (nodes.length === 0) {
|
|
391
|
+
return _jsx(Surface, { className: className, style: { minHeight }, children: _jsx(Empty, { children: empty ?? "Nothing to draw yet." }) });
|
|
392
|
+
}
|
|
393
|
+
const tonesUsed = new Set(["mut"]);
|
|
394
|
+
for (const e of edges)
|
|
395
|
+
tonesUsed.add(e.tone ?? "brand");
|
|
396
|
+
return (_jsx(Surface, { className: className, style: { minHeight }, ...(label ? { role: "group", "aria-label": label } : {}), tabIndex: editing ? 0 : undefined, onKeyDown: onKey, onClick: () => setPicked(null), children: _jsxs(Content, { ref: content, "$band": hasBand, "$lanes": laneCount, children: [bands.map((b) => (_jsxs(Band, { style: { left: b.x, top: PAD - 2, width: b.w }, children: ["inlined ", _jsx("code", { children: b.label }), " \u00B7 ", b.count, " step", b.count === 1 ? "" : "s"] }, b.key))), nodes.map((n) => {
|
|
397
|
+
const selectable = !n.dim && !!onSelect;
|
|
398
|
+
const tone = n.tone ?? "mut";
|
|
399
|
+
const open = () => { if (selectable)
|
|
400
|
+
onSelect?.(n.id === selected ? null : n.id); };
|
|
401
|
+
const ins = n.inputs ?? [];
|
|
402
|
+
const outs = n.outputs ?? [];
|
|
403
|
+
return (_jsxs(NodeBox, { ref: registerNode(n.id), "$w": n.width ?? NODE_W, "$tone": tone, "$dim": !!n.dim, "$selected": selected === n.id, "$selectable": selectable, "data-node": n.id, ...(selectable ? { role: "button", tabIndex: 0, "aria-pressed": selected === n.id } : {}), onClick: (e) => { e.stopPropagation(); if (dragged.current) {
|
|
404
|
+
dragged.current = false;
|
|
405
|
+
return;
|
|
406
|
+
} setPicked(null); open(); }, onKeyDown: (e) => { if (selectable && (e.key === "Enter" || e.key === " ")) {
|
|
407
|
+
e.preventDefault();
|
|
408
|
+
open();
|
|
409
|
+
} }, children: [_jsxs(Head, { "$tone": tone, "$dim": !!n.dim, children: [_jsxs("span", { className: "title", children: [n.kind ? _jsx(Tag, { "$tone": n.dim ? "mut" : "brand", children: n.kind }) : null, _jsx("strong", { children: n.title })] }), n.badge ? _jsx("span", { className: "badge", children: n.badge }) : null] }), ins.length === 0 && outs.length === 0 && !n.sub && !n.note ? null : (_jsxs(Body, { children: [_jsx("div", { children: ins.length === 0 ? (n.dim ? null : _jsx(NoPorts, { children: "no inputs" })) : ins.map((p) => (_jsxs(PortRow, { "$side": "in", "data-port-row": true, title: p.hint ?? `${p.label}${p.sub ? ` · ${p.sub}` : ""}`, children: [_jsx(Dot, { ref: register(portKey(n.id, p.id, "in")), "$side": "in", "$live": editing && !!onConnect, "$target": !!draft && draft.over?.node === n.id && draft.over.port === p.id, "data-port": p.id, "data-port-node": n.id, "data-port-side": "in", onPointerDown: startDrag(n.id, p.id, "in"), onPointerMove: moveDrag, onPointerUp: endDrag }), _jsxs("div", { className: `label${p.required ? " required" : ""}`, children: [p.label, p.required ? "*" : "", p.sub ? _jsxs("span", { className: "sub", children: [" \u00B7 ", p.sub] }) : null] }), p.value ? _jsxs("div", { className: "value", children: ["= ", p.value] }) : null] }, p.id))) }), _jsx("div", { children: outs.length === 0 ? (n.dim ? null : _jsx(NoPorts, { style: { textAlign: "right" }, children: "no outputs" })) : outs.map((p) => (_jsxs(PortRow, { "$side": "out", "data-port-row": true, title: p.hint ?? `${p.label}${p.sub ? ` · ${p.sub}` : ""}`, children: [_jsx(Dot, { ref: register(portKey(n.id, p.id, "out")), "$side": "out", "$live": editing && !!onConnect, "$target": !!draft && draft.over?.node === n.id && draft.over.port === p.id, "data-port": p.id, "data-port-node": n.id, "data-port-side": "out", onPointerDown: startDrag(n.id, p.id, "out"), onPointerMove: moveDrag, onPointerUp: endDrag }), _jsxs("div", { className: `label${p.required ? " required" : ""}`, children: [p.label, p.sub ? _jsxs("span", { className: "sub", children: [" \u00B7 ", p.sub] }) : null] })] }, p.id))) })] })), n.sub || n.note ? (_jsxs(Foot, { children: [n.sub ? _jsx("div", { children: n.sub }) : null, n.note ? _jsx("div", { className: "note", children: n.note }) : null] })) : null] }, n.id));
|
|
410
|
+
}), m ? (() => {
|
|
411
|
+
const floor = Math.max(0, ...Object.values(m.boxes).map((b) => b.y + b.h));
|
|
412
|
+
const laneY = (lane) => floor + 10 + lane * LANE_H;
|
|
413
|
+
const geometry = (e) => {
|
|
414
|
+
const a = m.ports[portKey(e.from.node, e.from.port, "out")];
|
|
415
|
+
const b = m.ports[portKey(e.to.node, e.to.port, "in")];
|
|
416
|
+
if (!a || !b)
|
|
417
|
+
return null;
|
|
418
|
+
const lane = lanes.get(e.id);
|
|
419
|
+
if (lane === undefined)
|
|
420
|
+
return { d: curve(a, b), mid: midpoint(a, b) };
|
|
421
|
+
const y = laneY(lane);
|
|
422
|
+
return { d: laned(a, b, y), mid: { x: (a.x + STUB + b.x - STUB) / 2, y } };
|
|
423
|
+
};
|
|
424
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Overlay, { width: m.w, height: m.h, "aria-hidden": true, children: [_jsx("defs", { children: [...tonesUsed].map((t) => (_jsx("marker", { id: `x-graph-arrow-${t}`, viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "7", markerHeight: "7", orient: "auto-start-reverse", children: _jsx("path", { d: "M0,0 L10,5 L0,10 z", fill: TONE_STROKE[t] }) }, t))) }), flow ? nodes.slice(0, -1).map((n, i) => {
|
|
425
|
+
const a = m.boxes[n.id];
|
|
426
|
+
const b = m.boxes[nodes[i + 1].id];
|
|
427
|
+
if (!a || !b)
|
|
428
|
+
return null;
|
|
429
|
+
// Through the headers, which every node has at the same height.
|
|
430
|
+
const from = { x: a.x + a.w, y: a.y + 17 };
|
|
431
|
+
const to = { x: b.x, y: b.y + 17 };
|
|
432
|
+
return _jsx("path", { className: "flow", d: curve(from, to), markerEnd: "url(#x-graph-arrow-mut)" }, `flow:${n.id}`);
|
|
433
|
+
}) : null, edges.map((e) => {
|
|
434
|
+
const g = geometry(e);
|
|
435
|
+
if (!g)
|
|
436
|
+
return null;
|
|
437
|
+
const tone = e.tone ?? "brand";
|
|
438
|
+
const d = g.d;
|
|
439
|
+
return (_jsxs("g", { children: [_jsx("path", { className: `edge${e.animated ? " animated" : ""}${picked === e.id ? " picked" : ""}`, d: d, stroke: TONE_STROKE[tone], markerEnd: `url(#x-graph-arrow-${tone})` }), _jsx("path", { className: `hit${editing && onDisconnect ? "" : " static"}`, d: d, onClick: (ev) => { ev.stopPropagation(); setPicked(picked === e.id ? null : e.id); } })] }, e.id));
|
|
440
|
+
}), draft ? (() => {
|
|
441
|
+
const a = m.ports[portKey(draft.from.node, draft.from.port, draft.from.side)];
|
|
442
|
+
if (!a)
|
|
443
|
+
return null;
|
|
444
|
+
const b = draft.over ? m.ports[portKey(draft.over.node, draft.over.port, draft.from.side === "out" ? "in" : "out")] ?? draft.at : draft.at;
|
|
445
|
+
return _jsx("path", { className: "draft", d: draft.from.side === "out" ? curve(a, b) : curve(b, a) });
|
|
446
|
+
})() : null] }), edges.map((e) => {
|
|
447
|
+
const g = geometry(e);
|
|
448
|
+
if (!g)
|
|
449
|
+
return null;
|
|
450
|
+
const mid = g.mid;
|
|
451
|
+
if (editing && onDisconnect && picked === e.id) {
|
|
452
|
+
return _jsx(Remove, { type: "button", "aria-label": "Remove this connection", title: "Remove this connection", style: { left: mid.x, top: mid.y }, onClick: (ev) => { ev.stopPropagation(); remove(e); }, children: "\u00D7" }, `rm:${e.id}`);
|
|
453
|
+
}
|
|
454
|
+
return e.label ? _jsx(EdgeLabel, { "$tone": e.tone ?? "brand", style: { left: mid.x, top: mid.y }, children: e.label }, `lb:${e.id}`) : null;
|
|
455
|
+
})] }));
|
|
456
|
+
})() : null] }) }));
|
|
457
|
+
}
|
|
458
|
+
function sameMeasure(a, b) {
|
|
459
|
+
if (a.w !== b.w || a.h !== b.h)
|
|
460
|
+
return false;
|
|
461
|
+
const ak = Object.keys(a.ports);
|
|
462
|
+
const bk = Object.keys(b.ports);
|
|
463
|
+
if (ak.length !== bk.length)
|
|
464
|
+
return false;
|
|
465
|
+
for (const k of bk) {
|
|
466
|
+
const p = a.ports[k];
|
|
467
|
+
const q = b.ports[k];
|
|
468
|
+
if (!p || Math.abs(p.x - q.x) > 0.5 || Math.abs(p.y - q.y) > 0.5)
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
471
|
+
const an = Object.keys(a.boxes);
|
|
472
|
+
const bn = Object.keys(b.boxes);
|
|
473
|
+
if (an.length !== bn.length)
|
|
474
|
+
return false;
|
|
475
|
+
for (const k of bn) {
|
|
476
|
+
const p = a.boxes[k];
|
|
477
|
+
const q = b.boxes[k];
|
|
478
|
+
if (!p || Math.abs(p.x - q.x) > 0.5 || Math.abs(p.y - q.y) > 0.5 || Math.abs(p.w - q.w) > 0.5 || Math.abs(p.h - q.h) > 0.5)
|
|
479
|
+
return false;
|
|
480
|
+
}
|
|
481
|
+
return true;
|
|
482
|
+
}
|
|
483
|
+
/** The port dot under a point, of the side a drag can land on; the dot is tiny, so its row counts too. */
|
|
484
|
+
function portUnder(x, y, side) {
|
|
485
|
+
if (typeof document === "undefined")
|
|
486
|
+
return null;
|
|
487
|
+
let el = document.elementFromPoint(x, y);
|
|
488
|
+
while (el && !(el instanceof HTMLElement && el.dataset.port !== undefined)) {
|
|
489
|
+
if (el instanceof HTMLElement && el.dataset.node !== undefined)
|
|
490
|
+
break;
|
|
491
|
+
el = el.parentElement;
|
|
492
|
+
}
|
|
493
|
+
if (el instanceof HTMLElement && el.dataset.port !== undefined && el.dataset.portSide === side && el.dataset.portNode) {
|
|
494
|
+
return { node: el.dataset.portNode, port: el.dataset.port };
|
|
495
|
+
}
|
|
496
|
+
// Not on a dot: the row the dot sits in also takes the drop.
|
|
497
|
+
const row = document.elementFromPoint(x, y)?.closest("[data-port-row]");
|
|
498
|
+
const dot = row?.querySelector(`[data-port-side="${side}"]`);
|
|
499
|
+
if (dot?.dataset.portNode && dot.dataset.port !== undefined)
|
|
500
|
+
return { node: dot.dataset.portNode, port: dot.dataset.port };
|
|
501
|
+
return null;
|
|
502
|
+
}
|
|
503
|
+
//# sourceMappingURL=Graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../src/kit/Graph.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA8E,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvK,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAa,MAAM,YAAa,CAAC;AAgG7C,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,MAAM,GAAG,GAAG,CAAC;AACnB,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,MAAM,GAAG,GAAG,CAAC,CAAC;AAId,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,IAAU,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;AAWtF,MAAM,WAAW,GAA8B;IAC7C,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;CACzH,CAAC;AACF,MAAM,OAAO,GAA8B;IACzC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM;CACvI,CAAC;AAEF,uFAAuF;AACvF,SAAS,KAAK,CAAC,CAAK,EAAE,CAAK;IACzB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AACD,SAAS,QAAQ,CAAC,CAAK,EAAE,CAAK;IAC5B,6EAA6E;IAC7E,uBAAuB;IACvB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,MAAM,IAAI,GAAG,EAAE,CAAC;AAEhB;;;;;GAKG;AACH,SAAS,KAAK,CAAC,CAAK,EAAE,CAAK,EAAE,KAAa;IACxC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,MAAM,CAAC;IACjB,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;UAC9G,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1G,CAAC;AAED,uDAAuD;AACvD,SAAS,WAAW,CAAC,KAAkB,EAAE,KAAkB;IACzD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,KAAK,GAA2C,EAAE,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,SAAS;QAChE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,6EAA6E;IAC7E,kDAAkD;IAClD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;;YAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpF,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;sBAGJ,CAAC,CAAC,IAAI;mBACT,CAAC,CAAC,MAAM;sBACL,CAAC,CAAC,QAAQ;sCACM,CAAC,CAAC,IAAI;;CAE3C,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAoC;;;;SAIrD,GAAG;aACC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;CAEnH,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;YAEX,MAAM,GAAG,CAAC;;;;;uBAKC,CAAC,CAAC,OAAO;;gBAEhB,CAAC,CAAC,OAAO;WACd,CAAC,CAAC,KAAK;;;;;;wBAMM,CAAC,CAAC,IAAI;CAC7B,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAA2F;;;WAG1G,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;;gBAEN,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACnK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;WAC7D,CAAC,CAAC,IAAI;YACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;;IAEtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAA,2BAA2B,CAAC,CAAC,KAAK,KAAK;kCACpC,CAAC,CAAC,IAAI;CACvC,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAqC;;;;;;6BAM/B,CAAC,CAAC,IAAI;;gBAEnB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;;;;CAKtF,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;CAOtB,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAiB;;;;aAI9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC;gBAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;;;;+BAI7B,CAAC,CAAC,KAAK;;wBAEd,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,IAAI;CACtD,CAAC;AAEF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAmD;;;IAGtE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;WACtD,GAAG;YACF,GAAG;;gBAEC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAChC,CAAC,CAAC,OAAO;;IAE7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAA,wDAAwD;IAC7E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAA,gDAAgD,CAAC,CAAC,SAAS,GAAG;;CAExF,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;WACf,CAAC,CAAC,KAAK;;;CAGjB,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;0BAEG,CAAC,CAAC,IAAI;;WAErB,CAAC,CAAC,KAAK;;;uBAGK,CAAC,CAAC,MAAM;CAC9B,CAAC;AAEF,MAAM,KAAK,GAAG,SAAS,CAAA,gCAAgC,CAAC;AAExD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;uDAS6B,KAAK;;gCAE5B,CAAC,CAAC,KAAK;iCACN,CAAC,CAAC,KAAK;CACvC,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAsB;;;;;;;;WAQvC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;gBACtB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;sBACjB,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;;CAEhD,CAAC;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;;gBASZ,CAAC,CAAC,OAAO;sBACH,CAAC,CAAC,MAAM;WACnB,CAAC,CAAC,MAAM;;;0BAGO,CAAC,CAAC,KAAK;0BACP,CAAC,CAAC,QAAQ;CACnC,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;WAGb,CAAC,CAAC,KAAK;;CAEjB,CAAC;AAEF,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,EACpB,KAAK,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAC3H;IACX,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,EAAwB,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,EAAuB,CAAC,CAAC;IACvD,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmH,IAAI,CAAC,CAAC;IAC3J,0EAA0E;IAC1E,6CAA6C;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,KAAK,MAAM,CAAC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,4EAA4E;IAC5E,4EAA4E;IAC5E,gEAAgE;IAChE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;YACrC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/F,CAAC;QACD,MAAM,KAAK,GAAsB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;YACrC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1F,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QACzE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,eAAe,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO;QAC3D,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,iFAAiF;IACjF,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;QAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1G,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO;QAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC,EAAsB,EAAE,EAAE;QACxE,IAAI,EAAE;YAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;;YAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAsB,EAAE,EAAE;QAC1E,IAAI,EAAE;YAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;;YAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,yEAAyE;IACzE,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAuC,EAAM,EAAE;QAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7F,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,IAAU,EAAE,EAAE,CAAC,CAAC,CAAiC,EAAE,EAAE;QAClG,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;YAAE,OAAO;QACnC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/C,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACzB,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,CAAiC,EAAE,EAAE;QACrD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvF,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpG,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,CAAiC,EAAE,EAAE;QACpD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,CAAC,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvF,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3D,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;gBAAE,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;;gBAAM,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,IAAe,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,CAAC,CAAgC,EAAE,EAAE;QACjD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;YAAE,OAAO;QAChC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAAC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;YAAC,IAAI,IAAI,EAAE,CAAC;gBAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;QAAC,CAAC;QACrJ,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,2EAA2E;IAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,GAA0E,EAAE,CAAC;QACtF,IAAI,GAAG,GAAyE,IAAI,CAAC;QACrF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACrJ,GAAG,GAAG,IAAI,CAAC;QACb,CAAC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;gBAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACxF,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,CAAC,KAAK;gBAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3E,CAAC;QACD,KAAK,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAExB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAC,OAAO,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,YAAE,KAAC,KAAK,cAAE,KAAK,IAAI,sBAAsB,GAAS,GAAU,CAAC;IACzH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;IAExD,OAAO,CACL,KAAC,OAAO,IACN,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,SAAS,EAAE,KAChB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACzD,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACjC,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAE9B,MAAC,OAAO,IAAC,GAAG,EAAE,OAAO,WAAS,OAAO,YAAU,SAAS,aACrD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB,MAAC,IAAI,IAAa,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,yBACtD,yBAAO,CAAC,CAAC,KAAK,GAAQ,cAAI,CAAC,CAAC,KAAK,WAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAD/D,CAAC,CAAC,GAAG,CAET,CACR,CAAC,EAED,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACf,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC;oBACxC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;oBAC7B,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,UAAU;wBAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpF,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;oBAC7B,OAAO,CACL,MAAC,OAAO,IAEN,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,QACnB,CAAC,CAAC,KAAK,IAAI,MAAM,WACd,IAAI,UACL,CAAC,CAAC,CAAC,CAAC,GAAG,eACF,QAAQ,KAAK,CAAC,CAAC,EAAE,iBACf,UAAU,eACZ,CAAC,CAAC,EAAE,KACX,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAE,QAAQ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1F,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;4BAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;4BAAC,OAAO;wBAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAC3H,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;4BAAC,CAAC,CAAC,cAAc,EAAE,CAAC;4BAAC,IAAI,EAAE,CAAC;wBAAC,CAAC,CAAC,CAAC,aAE7G,MAAC,IAAI,aAAQ,IAAI,UAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,aAC9B,gBAAM,SAAS,EAAC,OAAO,aACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,GAAG,aAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,YAAG,CAAC,CAAC,IAAI,GAAO,CAAC,CAAC,CAAC,IAAI,EACpE,2BAAS,CAAC,CAAC,KAAK,GAAU,IACrB,EACN,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,OAAO,YAAE,CAAC,CAAC,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,IACrD,EACN,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnE,MAAC,IAAI,eACH,wBACG,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,OAAO,4BAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjF,MAAC,OAAO,aAAkB,IAAI,yBAAe,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,aACrG,KAAC,GAAG,IACF,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,WAClC,IAAI,WACH,OAAO,IAAI,CAAC,CAAC,SAAS,aACpB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,eAC9D,CAAC,CAAC,EAAE,oBACC,CAAC,CAAC,EAAE,oBACL,IAAI,EACnB,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAC1C,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,OAAO,GACpB,EACF,eAAK,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,aAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAM,SAAS,EAAC,KAAK,yBAAK,CAAC,CAAC,GAAG,IAAQ,CAAC,CAAC,CAAC,IAAI,IAAO,EACtJ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,OAAO,mBAAI,CAAC,CAAC,KAAK,IAAO,CAAC,CAAC,CAAC,IAAI,KAd9C,CAAC,CAAC,EAAE,CAeR,CACX,CAAC,GACE,EACN,wBACG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,2BAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACnH,MAAC,OAAO,aAAkB,KAAK,yBAAe,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,aACtG,KAAC,GAAG,IACF,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,WACnC,KAAK,WACJ,OAAO,IAAI,CAAC,CAAC,SAAS,aACpB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,eAC9D,CAAC,CAAC,EAAE,oBACC,CAAC,CAAC,EAAE,oBACL,KAAK,EACpB,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAC3C,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,OAAO,GACpB,EACF,eAAK,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,aAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAM,SAAS,EAAC,KAAK,yBAAK,CAAC,CAAC,GAAG,IAAQ,CAAC,CAAC,CAAC,IAAI,IAAO,KAbpH,CAAC,CAAC,EAAE,CAcR,CACX,CAAC,GACE,IACD,CACR,EACA,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjB,MAAC,IAAI,eACF,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAM,CAAC,CAAC,GAAG,GAAO,CAAC,CAAC,CAAC,IAAI,EACjC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,MAAM,YAAE,CAAC,CAAC,IAAI,GAAO,CAAC,CAAC,CAAC,IAAI,IAChD,CACR,CAAC,CAAC,CAAC,IAAI,KAnEH,CAAC,CAAC,EAAE,CAoED,CACX,CAAC;gBACJ,CAAC,CAAC,EAED,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;oBACT,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3E,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC;oBAC3D,MAAM,QAAQ,GAAG,CAAC,CAAY,EAAiC,EAAE;wBAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;wBAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;wBACvD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;4BAAE,OAAO,IAAI,CAAC;wBAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC7B,IAAI,IAAI,KAAK,SAAS;4BAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBACvE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;wBACtB,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7E,CAAC,CAAC;oBACF,OAAO,CACP,8BACE,MAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,kCAC9B,yBACG,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACzB,iBAAgB,EAAE,EAAE,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,WAAW,EAAC,GAAG,EAAC,YAAY,EAAC,GAAG,EAAC,MAAM,EAAC,oBAAoB,YAC1I,eAAM,CAAC,EAAC,oBAAoB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAI,IAD1C,CAAC,CAEL,CACV,CAAC,GACG,EACN,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wCACtC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wCAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC;wCAC7D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;4CAAE,OAAO,IAAI,CAAC;wCAC1B,gEAAgE;wCAChE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;wCAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;wCACnC,OAAO,eAA2B,SAAS,EAAC,MAAM,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,SAAS,EAAC,yBAAyB,IAAxF,QAAQ,CAAC,CAAC,EAAE,EAAE,CAA6E,CAAC;oCAChH,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EACR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wCACf,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;wCACtB,IAAI,CAAC,CAAC;4CAAE,OAAO,IAAI,CAAC;wCACpB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;wCAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wCACd,OAAO,CACL,wBACE,eAAM,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,sBAAsB,IAAI,GAAG,GAAI,EACzK,eAAM,SAAS,EAAE,MAAM,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAI,KAF3J,CAAC,CAAC,EAAE,CAGR,CACL,CAAC;oCACJ,CAAC,CAAC,EACD,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;wCACb,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wCAC9E,IAAI,CAAC,CAAC;4CAAE,OAAO,IAAI,CAAC;wCACpB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;wCAC3I,OAAO,eAAM,SAAS,EAAC,OAAO,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAI,CAAC;oCAC9F,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IACH,EACT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gCACf,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gCACtB,IAAI,CAAC,CAAC;oCAAE,OAAO,IAAI,CAAC;gCACpB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;gCAClB,IAAI,OAAO,IAAI,YAAY,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;oCAC/C,OAAO,KAAC,MAAM,IAAoB,IAAI,EAAC,QAAQ,gBAAY,wBAAwB,EAAC,KAAK,EAAC,wBAAwB,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAxL,MAAM,CAAC,CAAC,EAAE,EAAE,CAAwL,CAAC;gCAC3N,CAAC;gCACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAC,SAAS,aAA2B,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,YAAG,CAAC,CAAC,KAAK,IAApF,MAAM,CAAC,CAAC,EAAE,EAAE,CAAqF,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC5I,CAAC,CAAC,IACD,CACF,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IACH,GACF,CACX,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,CAAW,EAAE,CAAW;IAC3C,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC;IAAC,CAAC;IACpJ,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC;IAAC,CAAC;IAC9M,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0GAA0G;AAC1G,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,IAAU;IACjD,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,EAAE,GAAmB,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,WAAW,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;QAC3E,IAAI,EAAE,YAAY,WAAW,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM;QACtE,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC;IACxB,CAAC;IACD,IAAI,EAAE,YAAY,WAAW,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtH,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9D,CAAC;IACD,6DAA6D;IAC7D,MAAM,GAAG,GAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAwB,EAAE,OAAO,CAAc,iBAAiB,CAAC,CAAC;IAC7G,MAAM,GAAG,GAAG,GAAG,EAAE,aAAa,CAAc,oBAAoB,IAAI,IAAI,CAAC,CAAC;IAC1E,IAAI,GAAG,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3H,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED