@numa-tech/numa 1.14.7 → 1.14.8
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/README.md +20 -29
- package/dist/chatgpt-desktop.d.ts +4 -29
- package/dist/chatgpt-desktop.js +18 -376
- package/dist/chatgpt-desktop.js.map +1 -1
- package/dist/cli.js +20 -7
- package/dist/cli.js.map +1 -1
- package/dist/codex-module.js +2 -6
- package/dist/codex-module.js.map +1 -1
- package/dist/command-catalog.js +126 -6
- package/dist/command-catalog.js.map +1 -1
- package/dist/integration-bootstrap/client.d.ts +31 -4
- package/dist/integration-bootstrap/client.js +161 -35
- package/dist/integration-bootstrap/client.js.map +1 -1
- package/dist/integration-bootstrap/commands.d.ts +28 -5
- package/dist/integration-bootstrap/commands.js +399 -47
- package/dist/integration-bootstrap/commands.js.map +1 -1
- package/dist/integration-bootstrap/schemas.d.ts +408 -43
- package/dist/integration-bootstrap/schemas.js +373 -93
- package/dist/integration-bootstrap/schemas.js.map +1 -1
- package/dist/teams/client.d.ts +119 -0
- package/dist/teams/client.js +177 -0
- package/dist/teams/client.js.map +1 -0
- package/dist/teams/commands.d.ts +6 -0
- package/dist/teams/commands.js +190 -0
- package/dist/teams/commands.js.map +1 -0
- package/dist/teams/errors.d.ts +10 -0
- package/dist/teams/errors.js +56 -0
- package/dist/teams/errors.js.map +1 -0
- package/dist/teams/schemas.d.ts +171 -0
- package/dist/teams/schemas.js +81 -0
- package/dist/teams/schemas.js.map +1 -0
- package/package.json +4 -4
- package/skills/numa-cli/SKILL.md +2 -1
- package/skills/numa-cli/references/pipeline-release.md +2 -0
- package/skills/numa-local-flux-deploy/SKILL.md +24 -0
- package/skills/numa-local-flux-deploy/agents/openai.yaml +4 -0
- package/skills/numa-local-flux-deploy/evals/evals.json +35 -0
- package/skills/numa-local-flux-deploy/references/local-flux-release.md +172 -0
|
@@ -4,8 +4,9 @@ import open from "open";
|
|
|
4
4
|
import { loadAppConfig } from "../app-config.js";
|
|
5
5
|
import { loadConfig } from "../config.js";
|
|
6
6
|
import { PipelineError, sanitizePipelineOutput } from "../pipeline/errors.js";
|
|
7
|
-
import { IntegrationBootstrapClient, integrationBootstrapIdempotencyKey } from "./client.js";
|
|
8
|
-
const
|
|
7
|
+
import { IntegrationBootstrapClient, integrationBootstrapClientRequestId, integrationBootstrapIdempotencyKey, integrationBootstrapRunNo } from "./client.js";
|
|
8
|
+
const PLAN_TERMINAL = new Set(["SUCCEEDED", "FAILED", "EXPIRED"]);
|
|
9
|
+
const ACTION_TERMINAL = new Set(["UNKNOWN", "SUCCEEDED", "FAILED", "EXPIRED"]);
|
|
9
10
|
function snake(key) {
|
|
10
11
|
return key.replace(/([a-z0-9])([A-Z])/gu, "$1_$2").toLowerCase();
|
|
11
12
|
}
|
|
@@ -43,44 +44,302 @@ function planLine(plan) {
|
|
|
43
44
|
function sessionLine(session) {
|
|
44
45
|
if (session.plan != null)
|
|
45
46
|
return planLine(session.plan);
|
|
46
|
-
const error = session.errorCode == null
|
|
47
|
-
? ""
|
|
48
|
-
: `\n${session.errorCode}: ${session.errorSummary ?? "-"}`;
|
|
47
|
+
const error = session.errorCode == null ? "" : `\n${session.errorCode}: ${session.errorSummary ?? "-"}`;
|
|
49
48
|
return `${session.sessionNo}\t${session.status}${error}`;
|
|
50
49
|
}
|
|
51
|
-
function
|
|
52
|
-
return
|
|
50
|
+
function runLine(run) {
|
|
51
|
+
return `${run.runNo}\t${run.state}\tv${run.version}\t${run.step}\t${run.disposition ?? "-"}`;
|
|
53
52
|
}
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
function actionLine(action) {
|
|
54
|
+
return `${action.actionNo}\t${action.kind}\t${action.state}\t${action.disposition ?? "-"}`;
|
|
55
|
+
}
|
|
56
|
+
function startMayHaveCommitted(error) {
|
|
57
|
+
return error instanceof PipelineError
|
|
58
|
+
&& (error.code === "INTEGRATION_BOOTSTRAP_START_RESULT_UNKNOWN"
|
|
59
|
+
|| error.code === "INTEGRATION_BOOTSTRAP_CONFLICT");
|
|
60
|
+
}
|
|
61
|
+
function unknown(message, error) {
|
|
62
|
+
return new PipelineError(message, "INTEGRATION_BOOTSTRAP_RESULT_UNKNOWN", error instanceof PipelineError ? error.status : undefined, error instanceof PipelineError ? error.requestId : undefined);
|
|
63
|
+
}
|
|
64
|
+
function identityMismatch(message) {
|
|
65
|
+
return new PipelineError(message, "INTEGRATION_BOOTSTRAP_IDENTITY_MISMATCH", 409);
|
|
66
|
+
}
|
|
67
|
+
function expectedVersion(value) {
|
|
68
|
+
if (!/^(?:0|[1-9][0-9]*)$/u.test(value)) {
|
|
69
|
+
throw new PipelineError("expected-run-version must be a canonical non-negative 32-bit integer.", "INTEGRATION_BOOTSTRAP_INPUT_INVALID");
|
|
70
|
+
}
|
|
71
|
+
const parsed = Number(value);
|
|
72
|
+
if (!Number.isSafeInteger(parsed) || parsed < 0 || parsed > 2_147_483_647) {
|
|
73
|
+
throw new PipelineError("expected-run-version must be a non-negative 32-bit integer.", "INTEGRATION_BOOTSTRAP_INPUT_INVALID");
|
|
74
|
+
}
|
|
75
|
+
return parsed;
|
|
76
|
+
}
|
|
77
|
+
function requireConfirmation(value, action) {
|
|
78
|
+
if (!value) {
|
|
79
|
+
throw new PipelineError(`${action} requires --yes.`, "INTEGRATION_BOOTSTRAP_CONFIRMATION_REQUIRED");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function openAuthorization(url, label, openBrowser, notify) {
|
|
83
|
+
notify(`正在打开一次性 Keycloak 管理员授权(${label})…\n`);
|
|
84
|
+
try {
|
|
85
|
+
await openBrowser(url);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
notify(`无法自动打开浏览器,请手动打开:\n${url}\n`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function deadline(expiresAt) {
|
|
92
|
+
return Date.parse(expiresAt) + 15_000;
|
|
93
|
+
}
|
|
94
|
+
async function pollPlan(api, sessionNo, expiresAt, sleep) {
|
|
95
|
+
let expires = deadline(expiresAt);
|
|
56
96
|
for (;;) {
|
|
57
|
-
const session = await
|
|
58
|
-
if (
|
|
97
|
+
const session = await api.getPlanSession(sessionNo);
|
|
98
|
+
if (PLAN_TERMINAL.has(session.status))
|
|
59
99
|
return session;
|
|
60
|
-
|
|
61
|
-
if (Number.isFinite(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
100
|
+
expires = Math.max(expires, deadline(session.expiresAt));
|
|
101
|
+
if (!Number.isFinite(expires) || Date.now() >= expires) {
|
|
102
|
+
throw unknown("Integration bootstrap plan authorization expired before a durable terminal result was observed.");
|
|
103
|
+
}
|
|
104
|
+
await sleep(1_000);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async function pollAction(api, actionNo, expiresAt, sleep) {
|
|
108
|
+
const expires = deadline(expiresAt);
|
|
109
|
+
for (;;) {
|
|
110
|
+
const action = await api.getAction(actionNo);
|
|
111
|
+
if (ACTION_TERMINAL.has(action.state))
|
|
112
|
+
return action;
|
|
113
|
+
if (!Number.isFinite(expires) || Date.now() >= expires) {
|
|
114
|
+
throw unknown("Integration bootstrap authorization expired before a durable action result was observed.");
|
|
65
115
|
}
|
|
66
116
|
await sleep(1_000);
|
|
67
117
|
}
|
|
68
118
|
}
|
|
119
|
+
function exactPlanSession(session, clientRequestId) {
|
|
120
|
+
if (session.clientRequestId !== clientRequestId) {
|
|
121
|
+
throw identityMismatch("Resolved integration bootstrap plan session does not match the original client-request-id.");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function exactRun(run, input) {
|
|
125
|
+
if (run.clientRequestId !== input.clientRequestId || run.planSessionNo !== input.planSessionNo
|
|
126
|
+
|| run.planDigest !== input.planDigest) {
|
|
127
|
+
throw identityMismatch("Resolved integration bootstrap run does not match the original immutable apply request.");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function exactAction(action, runNo, kind, input) {
|
|
131
|
+
if (action.clientRequestId !== input.clientRequestId || action.runNo !== runNo
|
|
132
|
+
|| action.kind !== kind || action.expectedRunVersion !== input.expectedRunVersion) {
|
|
133
|
+
throw identityMismatch("Resolved integration bootstrap action does not match the original immutable request.");
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function isExactAction(action, runNo, kind, input) {
|
|
137
|
+
return action != null && action.clientRequestId === input.clientRequestId
|
|
138
|
+
&& action.runNo === runNo && action.kind === kind
|
|
139
|
+
&& action.expectedRunVersion === input.expectedRunVersion;
|
|
140
|
+
}
|
|
141
|
+
async function resolvePlanAfterStart(api, options, error) {
|
|
142
|
+
let session;
|
|
143
|
+
try {
|
|
144
|
+
session = await api.resolvePlanSession(options.clientRequestId);
|
|
145
|
+
}
|
|
146
|
+
catch (resolveError) {
|
|
147
|
+
throw unknown("Integration bootstrap plan result is unknown. Retry the same plan command with the original client-request-id and idempotency-key; do not choose new values.", resolveError instanceof PipelineError ? resolveError : error);
|
|
148
|
+
}
|
|
149
|
+
exactPlanSession(session, options.clientRequestId);
|
|
150
|
+
if (session.status !== "AWAITING_AUTHORIZATION")
|
|
151
|
+
return { session };
|
|
152
|
+
try {
|
|
153
|
+
return { start: await api.startPlanSession(options.clientRequestId, options.idempotencyKey) };
|
|
154
|
+
}
|
|
155
|
+
catch (replayError) {
|
|
156
|
+
throw unknown("The actor-scoped plan session is awaiting authorization, but its one-time URL could not be recovered. Retry the exact same plan command and keys.", replayError);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
69
159
|
export async function executeIntegrationBootstrapPlan(api, options, openBrowser, sleep, notify = (message) => process.stderr.write(message)) {
|
|
160
|
+
const normalized = {
|
|
161
|
+
...options,
|
|
162
|
+
clientRequestId: integrationBootstrapClientRequestId(options.clientRequestId),
|
|
163
|
+
idempotencyKey: integrationBootstrapIdempotencyKey(options.idempotencyKey)
|
|
164
|
+
};
|
|
165
|
+
let result;
|
|
166
|
+
try {
|
|
167
|
+
result = { start: await api.startPlanSession(normalized.clientRequestId, normalized.idempotencyKey) };
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
if (!startMayHaveCommitted(error))
|
|
171
|
+
throw error;
|
|
172
|
+
result = await resolvePlanAfterStart(api, normalized, error);
|
|
173
|
+
}
|
|
174
|
+
if (result.session != null) {
|
|
175
|
+
if (options.noOpen || PLAN_TERMINAL.has(result.session.status))
|
|
176
|
+
return { session: result.session };
|
|
177
|
+
return { session: await pollPlan(api, result.session.sessionNo, result.session.expiresAt, sleep) };
|
|
178
|
+
}
|
|
179
|
+
const started = result.start;
|
|
180
|
+
if (started.clientRequestId !== normalized.clientRequestId) {
|
|
181
|
+
throw identityMismatch("Integration bootstrap plan start does not match client-request-id.");
|
|
182
|
+
}
|
|
183
|
+
if (options.noOpen)
|
|
184
|
+
return { started };
|
|
185
|
+
await openAuthorization(started.authorizationUrl, `session ${started.sessionNo}`, openBrowser, notify);
|
|
186
|
+
return {
|
|
187
|
+
started,
|
|
188
|
+
session: await pollPlan(api, started.sessionNo, started.authorizationExpiresAt, sleep)
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
async function resolveApplyAfterStart(api, input, idempotencyKey, error) {
|
|
192
|
+
let run;
|
|
193
|
+
try {
|
|
194
|
+
run = await api.resolveRun(input.clientRequestId);
|
|
195
|
+
}
|
|
196
|
+
catch (resolveError) {
|
|
197
|
+
throw unknown("Integration bootstrap apply result is unknown. Use run resolve with the original client-request-id; never create another apply request.", resolveError instanceof PipelineError ? resolveError : error);
|
|
198
|
+
}
|
|
199
|
+
exactRun(run, input);
|
|
200
|
+
if (run.currentAction?.state !== "AWAITING_AUTHORIZATION")
|
|
201
|
+
return { run };
|
|
202
|
+
try {
|
|
203
|
+
return { start: await api.startApply(input, idempotencyKey) };
|
|
204
|
+
}
|
|
205
|
+
catch (replayError) {
|
|
206
|
+
throw unknown("Apply authorization URL recovery failed. Retry the exact same apply command and keys.", replayError);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
export async function executeIntegrationBootstrapApply(api, options, openBrowser, sleep, notify = (message) => process.stderr.write(message)) {
|
|
210
|
+
requireConfirmation(options.yes, "Integration bootstrap apply");
|
|
211
|
+
const input = {
|
|
212
|
+
planSessionNo: options.sessionNo,
|
|
213
|
+
planDigest: options.planDigest,
|
|
214
|
+
clientRequestId: integrationBootstrapClientRequestId(options.clientRequestId)
|
|
215
|
+
};
|
|
70
216
|
const key = integrationBootstrapIdempotencyKey(options.idempotencyKey);
|
|
71
|
-
const
|
|
72
|
-
|
|
217
|
+
const plan = await api.getPlanSession(input.planSessionNo);
|
|
218
|
+
let result;
|
|
219
|
+
const planReady = plan.status === "SUCCEEDED" && plan.plan?.state === "READY"
|
|
220
|
+
&& plan.plan.planDigest === input.planDigest
|
|
221
|
+
&& Date.parse(plan.plan.reviewExpiresAt) > Date.now();
|
|
222
|
+
if (!planReady) {
|
|
223
|
+
let existing;
|
|
224
|
+
try {
|
|
225
|
+
existing = await api.resolveRun(input.clientRequestId);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
if (error instanceof PipelineError && error.code === "INTEGRATION_BOOTSTRAP_NOT_FOUND") {
|
|
229
|
+
throw new PipelineError("Apply requires the exact unexpired READY v2 plan session and digest.", "INTEGRATION_BOOTSTRAP_PLAN_NOT_READY", 409);
|
|
230
|
+
}
|
|
231
|
+
throw unknown("The plan is no longer startable and an existing run could not be resolved safely. Use run resolve with the original client-request-id; do not POST another apply.", error);
|
|
232
|
+
}
|
|
233
|
+
exactRun(existing, input);
|
|
234
|
+
if (existing.currentAction?.state === "AWAITING_AUTHORIZATION") {
|
|
235
|
+
try {
|
|
236
|
+
result = { start: await api.startApply(input, key) };
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
if (!startMayHaveCommitted(error))
|
|
240
|
+
throw error;
|
|
241
|
+
result = await resolveApplyAfterStart(api, input, key, error);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
result = { run: existing };
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
try {
|
|
250
|
+
result = { start: await api.startApply(input, key) };
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
if (!startMayHaveCommitted(error))
|
|
254
|
+
throw error;
|
|
255
|
+
result = await resolveApplyAfterStart(api, input, key, error);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (result.run != null) {
|
|
259
|
+
const current = result.run.currentAction;
|
|
260
|
+
if (options.noOpen || current == null || ACTION_TERMINAL.has(current.state))
|
|
261
|
+
return { run: result.run };
|
|
262
|
+
const action = await pollAction(api, current.actionNo, current.authorizationExpiresAt, sleep);
|
|
263
|
+
return { action, run: await api.getRun(result.run.runNo) };
|
|
264
|
+
}
|
|
265
|
+
const started = result.start;
|
|
266
|
+
if (started.clientRequestId !== input.clientRequestId || started.planSessionNo !== input.planSessionNo
|
|
267
|
+
|| started.planDigest !== input.planDigest)
|
|
268
|
+
throw identityMismatch("Apply start identity is inconsistent.");
|
|
269
|
+
if (options.noOpen)
|
|
73
270
|
return { started };
|
|
74
|
-
|
|
75
|
-
|
|
271
|
+
await openAuthorization(started.authorizationUrl, `action ${started.actionNo}`, openBrowser, notify);
|
|
272
|
+
const action = await pollAction(api, started.actionNo, started.authorizationExpiresAt, sleep);
|
|
273
|
+
return { started, action, run: await api.getRun(started.runNo) };
|
|
274
|
+
}
|
|
275
|
+
async function resolveActionAfterStart(api, runNo, kind, input, idempotencyKey, error) {
|
|
276
|
+
let action;
|
|
277
|
+
try {
|
|
278
|
+
action = await api.resolveAction(input.clientRequestId);
|
|
279
|
+
}
|
|
280
|
+
catch (resolveError) {
|
|
281
|
+
throw unknown(`Integration bootstrap ${kind.toLowerCase()} result is unknown. Run "numa integration bootstrap action resolve ${runNo} --client-request-id ${input.clientRequestId}"; do not replay automatically.`, resolveError instanceof PipelineError ? resolveError : error);
|
|
282
|
+
}
|
|
283
|
+
exactAction(action, runNo, kind, input);
|
|
284
|
+
if (action.state !== "AWAITING_AUTHORIZATION")
|
|
285
|
+
return { action };
|
|
286
|
+
try {
|
|
287
|
+
return { start: await api.startAction(runNo, kind, input, idempotencyKey) };
|
|
288
|
+
}
|
|
289
|
+
catch (replayError) {
|
|
290
|
+
throw unknown(`${kind} authorization URL recovery failed. Retry the exact same action command and keys.`, replayError);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
export async function executeIntegrationBootstrapAction(api, runNo, kind, options, openBrowser, sleep, notify = (message) => process.stderr.write(message)) {
|
|
294
|
+
if (kind !== "RECONCILE")
|
|
295
|
+
requireConfirmation(options.yes, `Integration bootstrap ${kind.toLowerCase()}`);
|
|
296
|
+
const input = {
|
|
297
|
+
expectedRunVersion: expectedVersion(options.expectedRunVersion),
|
|
298
|
+
clientRequestId: integrationBootstrapClientRequestId(options.clientRequestId)
|
|
299
|
+
};
|
|
300
|
+
const key = integrationBootstrapIdempotencyKey(options.idempotencyKey);
|
|
301
|
+
const before = await api.getRun(runNo);
|
|
302
|
+
const existing = isExactAction(before.currentAction, before.runNo, kind, input)
|
|
303
|
+
&& ["AWAITING_AUTHORIZATION", "AUTHORIZING", "RUNNING"].includes(before.currentAction.state)
|
|
304
|
+
? before.currentAction : null;
|
|
305
|
+
if (existing == null && before.version !== input.expectedRunVersion) {
|
|
306
|
+
throw new PipelineError("Run version changed before action start.", "INTEGRATION_BOOTSTRAP_RUN_VERSION_CONFLICT", 409);
|
|
307
|
+
}
|
|
308
|
+
const allowed = kind === "RECONCILE" ? before.reconcileAllowed
|
|
309
|
+
: kind === "RECOVER" ? before.recoverAllowed : before.reapplyAllowed;
|
|
310
|
+
if (existing == null && !allowed) {
|
|
311
|
+
throw new PipelineError(`${kind} is not allowed by the current durable run evidence.`, "INTEGRATION_BOOTSTRAP_ACTION_NOT_ALLOWED", 409);
|
|
312
|
+
}
|
|
313
|
+
let result;
|
|
314
|
+
if (existing != null && existing.state !== "AWAITING_AUTHORIZATION") {
|
|
315
|
+
result = { action: existing };
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
76
318
|
try {
|
|
77
|
-
await
|
|
319
|
+
result = { start: await api.startAction(before.runNo, kind, input, key) };
|
|
78
320
|
}
|
|
79
|
-
catch {
|
|
80
|
-
|
|
321
|
+
catch (error) {
|
|
322
|
+
if (!startMayHaveCommitted(error))
|
|
323
|
+
throw error;
|
|
324
|
+
result = await resolveActionAfterStart(api, before.runNo, kind, input, key, error);
|
|
81
325
|
}
|
|
82
326
|
}
|
|
83
|
-
|
|
327
|
+
if (result.action != null) {
|
|
328
|
+
if (options.noOpen || ACTION_TERMINAL.has(result.action.state)) {
|
|
329
|
+
return { action: result.action, run: await api.getRun(before.runNo) };
|
|
330
|
+
}
|
|
331
|
+
const action = await pollAction(api, result.action.actionNo, result.action.authorizationExpiresAt, sleep);
|
|
332
|
+
return { action, run: await api.getRun(before.runNo) };
|
|
333
|
+
}
|
|
334
|
+
const started = result.start;
|
|
335
|
+
if (started.runNo !== before.runNo || started.kind !== kind || started.clientRequestId !== input.clientRequestId) {
|
|
336
|
+
throw identityMismatch("Integration bootstrap action start identity is inconsistent.");
|
|
337
|
+
}
|
|
338
|
+
if (options.noOpen)
|
|
339
|
+
return { started, run: await api.getRun(before.runNo) };
|
|
340
|
+
await openAuthorization(started.authorizationUrl, `action ${started.actionNo}`, openBrowser, notify);
|
|
341
|
+
const action = await pollAction(api, started.actionNo, started.authorizationExpiresAt, sleep);
|
|
342
|
+
return { started, action, run: await api.getRun(before.runNo) };
|
|
84
343
|
}
|
|
85
344
|
function addExamples(command, values, notes) {
|
|
86
345
|
return command.addHelpText("after", `\n说明:\n${notes.map((value) => ` - ${value}`).join("\n")}\n\nExamples:\n${values.map((value) => ` ${value}`).join("\n")}\n`);
|
|
@@ -90,40 +349,133 @@ export function registerIntegrationBootstrapCommands(program, dependencies = {})
|
|
|
90
349
|
?? new IntegrationBootstrapClient(loadConfig("platform"));
|
|
91
350
|
const openBrowser = dependencies.openBrowser ?? (async (url) => { await open(url); });
|
|
92
351
|
const sleep = dependencies.sleep ?? ((milliseconds) => delay(milliseconds));
|
|
93
|
-
const integration = program.command("integration")
|
|
94
|
-
.description("审阅平台固定的外部系统集成 bootstrap 计划");
|
|
352
|
+
const integration = program.command("integration").description("审阅并执行平台固定的外部系统集成 bootstrap");
|
|
95
353
|
const bootstrap = integration.command("bootstrap")
|
|
96
|
-
.description("
|
|
354
|
+
.description("通过新鲜管理员浏览器授权生成、执行和恢复无密钥集成")
|
|
97
355
|
.addHelpText("after", `
|
|
98
356
|
安全边界:
|
|
99
|
-
|
|
100
|
-
realm、client、role、Jenkins instance、credential 元数据均由服务端固定,CLI 不接受覆盖参数。
|
|
357
|
+
所有 realm、client、role、Jenkins instance、folder 与 credential metadata 均由服务端固定。
|
|
101
358
|
CLI 不接收、读取或输出管理员 token、client secret、Jenkins password 或 Secret 响应。
|
|
102
|
-
POST
|
|
359
|
+
每个 POST 使用独立 clientRequestId/Idempotency-Key;结果未知只做 actor-scoped GET resolve。
|
|
360
|
+
只有 AWAITING_AUTHORIZATION 可用原 key/body 回放以取回同一一次性 URL,其他状态绝不自动 POST。
|
|
361
|
+
reconcile 经过新鲜管理员授权但对 Keycloak/Jenkins 严格零写;recover/reapply 必须显式 --yes。
|
|
103
362
|
`);
|
|
104
363
|
addExamples(bootstrap.command("plan")
|
|
105
|
-
.description("新鲜登录后只读检查 Keycloak 与 Jenkins inventory
|
|
106
|
-
.requiredOption("--
|
|
107
|
-
.
|
|
364
|
+
.description("新鲜登录后只读检查 Keycloak 与 Jenkins inventory,并返回 v2 可审阅计划")
|
|
365
|
+
.requiredOption("--client-request-id <key>", "8-200 字符稳定请求 ID;结果未知时原样复用")
|
|
366
|
+
.requiredOption("--idempotency-key <key>", "8-200 字符稳定写键;必须与本次 plan 绑定")
|
|
367
|
+
.option("--no-open", "不打开浏览器;返回一次性 authorization URL 或当前持久状态")
|
|
108
368
|
.action(async (options, command) => {
|
|
109
|
-
const result = await executeIntegrationBootstrapPlan(client(),
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const ok = sessionSucceeded(result.session);
|
|
118
|
-
await output(command, { ok, integration_bootstrap_session: result.session }, sessionLine(result.session));
|
|
369
|
+
const result = await executeIntegrationBootstrapPlan(client(), options, openBrowser, sleep);
|
|
370
|
+
const value = result.session ?? result.started;
|
|
371
|
+
const ok = result.session == null
|
|
372
|
+
? true
|
|
373
|
+
: result.session.status === "SUCCEEDED" && result.session.plan?.state === "READY";
|
|
374
|
+
await output(command, { ok, integration_bootstrap_session: value }, result.session == null
|
|
375
|
+
? `${result.started.sessionNo}\t${result.started.status}\n请在浏览器打开: ${result.started.authorizationUrl}`
|
|
376
|
+
: sessionLine(result.session));
|
|
119
377
|
if (!ok)
|
|
120
378
|
process.exitCode = 1;
|
|
121
379
|
}), [
|
|
122
|
-
"numa integration bootstrap plan --idempotency-key integration-plan-20260825-01 --json",
|
|
123
|
-
"numa integration bootstrap plan --idempotency-key integration-plan-20260825-01 --no-open --json"
|
|
380
|
+
"numa integration bootstrap plan --client-request-id integration-plan-20260825-01 --idempotency-key integration-plan-write-20260825-01 --json",
|
|
381
|
+
"numa integration bootstrap plan --client-request-id integration-plan-20260825-01 --idempotency-key integration-plan-write-20260825-01 --no-open --json"
|
|
124
382
|
], [
|
|
125
|
-
"
|
|
126
|
-
"READY/BLOCKED
|
|
383
|
+
"每个新 request/key 创建一次 v2 fresh authorization;未知结果先 GET resolve,同一 AWAITING session 才回放取 URL。",
|
|
384
|
+
"READY/BLOCKED 都是只读计划;BLOCKED 以 ok=false 返回,不触发 apply。"
|
|
385
|
+
]);
|
|
386
|
+
addExamples(bootstrap.command("apply")
|
|
387
|
+
.description("以 exact READY v2 plan 启动一次受控 apply run")
|
|
388
|
+
.requiredOption("--session-no <number>", "v2 plan session number")
|
|
389
|
+
.requiredOption("--plan-digest <64hex>", "审阅后的 exact plan digest")
|
|
390
|
+
.requiredOption("--client-request-id <key>", "本次 apply 独立稳定请求 ID")
|
|
391
|
+
.requiredOption("--idempotency-key <key>", "本次 apply 独立稳定写键")
|
|
392
|
+
.option("--no-open", "不打开浏览器;返回一次性 authorization URL 或当前持久状态")
|
|
393
|
+
.option("--yes", "确认执行审阅过的 READY plan")
|
|
394
|
+
.action(async (options, command) => {
|
|
395
|
+
const result = await executeIntegrationBootstrapApply(client(), options, openBrowser, sleep);
|
|
396
|
+
const ok = result.started != null || result.run?.state === "SUCCEEDED";
|
|
397
|
+
await output(command, { ok, ...result }, result.action != null
|
|
398
|
+
? `${actionLine(result.action)}\n${result.run == null ? "-" : runLine(result.run)}`
|
|
399
|
+
: result.run != null ? runLine(result.run)
|
|
400
|
+
: `${result.started.runNo}\t${result.started.actionState}\n请在浏览器打开: ${result.started.authorizationUrl}`);
|
|
401
|
+
if (!ok)
|
|
402
|
+
process.exitCode = 1;
|
|
403
|
+
}), [
|
|
404
|
+
"numa integration bootstrap apply --session-no ibp2_<32hex> --plan-digest <64hex> --client-request-id integration-apply-20260825-01 --idempotency-key integration-apply-write-20260825-01 --yes --json"
|
|
405
|
+
], ["响应未知只按原 apply client-request-id GET run resolve;不得创建第二个 run。"]);
|
|
406
|
+
const run = bootstrap.command("run").description("只读查询或显式恢复 v2 apply run");
|
|
407
|
+
addExamples(run.command("resolve")
|
|
408
|
+
.description("按原 apply clientRequestId 只读恢复 actor-scoped run")
|
|
409
|
+
.requiredOption("--client-request-id <key>", "原 apply client request ID")
|
|
410
|
+
.action(async (options, command) => {
|
|
411
|
+
const value = await client().resolveRun(integrationBootstrapClientRequestId(options.clientRequestId));
|
|
412
|
+
await output(command, { ok: true, run: value }, runLine(value));
|
|
413
|
+
}), ["numa integration bootstrap run resolve --client-request-id integration-apply-20260825-01 --json"], [
|
|
414
|
+
"纯 GET、本地 durable state、actor-scoped;不会读取 Keycloak/Jenkins,也不会重放 apply。"
|
|
415
|
+
]);
|
|
416
|
+
addExamples(run.command("get <run-no>")
|
|
417
|
+
.description("读取 v2 run 的本地 durable state 与安全证据")
|
|
418
|
+
.action(async (runNo, _options, command) => {
|
|
419
|
+
const value = await client().getRun(runNo);
|
|
420
|
+
await output(command, { ok: true, run: value }, runLine(value));
|
|
421
|
+
}), ["numa integration bootstrap run get ibar_<32hex> --json"], [
|
|
422
|
+
"纯 GET;不会进行 live reconcile,也不包含 URL、nonce、token、secret 或 error details。"
|
|
127
423
|
]);
|
|
424
|
+
for (const kind of ["RECONCILE", "RECOVER", "REAPPLY"]) {
|
|
425
|
+
const name = kind.toLowerCase();
|
|
426
|
+
const action = run.command(`${name} <run-no>`)
|
|
427
|
+
.description(kind === "RECONCILE"
|
|
428
|
+
? "新鲜授权后只读核对外部状态;对 Keycloak/Jenkins 零写"
|
|
429
|
+
: kind === "RECOVER"
|
|
430
|
+
? "仅按服务端 RECOVERABLE/PAIRING_UNVERIFIED 证据显式恢复"
|
|
431
|
+
: "仅按服务端 UNTOUCHED 证据显式重新执行")
|
|
432
|
+
.requiredOption("--expected-run-version <version>", "当前 durable run version")
|
|
433
|
+
.requiredOption("--client-request-id <key>", "本动作独立稳定请求 ID")
|
|
434
|
+
.requiredOption("--idempotency-key <key>", "本动作独立稳定写键")
|
|
435
|
+
.option("--no-open", "不打开浏览器;返回一次性 authorization URL 或当前持久状态");
|
|
436
|
+
if (kind !== "RECONCILE")
|
|
437
|
+
action.option("--yes", `确认显式 ${name}`);
|
|
438
|
+
addExamples(action.action(async (runNo, options, command) => {
|
|
439
|
+
const result = await executeIntegrationBootstrapAction(client(), runNo, kind, options, openBrowser, sleep);
|
|
440
|
+
const ok = result.started != null || result.action?.state === "SUCCEEDED";
|
|
441
|
+
await output(command, { ok, ...result }, result.action != null
|
|
442
|
+
? `${actionLine(result.action)}\n${runLine(result.run)}`
|
|
443
|
+
: `${result.started.actionNo}\t${result.started.state}\n请在浏览器打开: ${result.started.authorizationUrl}`);
|
|
444
|
+
if (!ok)
|
|
445
|
+
process.exitCode = 1;
|
|
446
|
+
}), [
|
|
447
|
+
`numa integration bootstrap run ${name} ibar_<32hex> --expected-run-version <version> --client-request-id integration-${name}-20260825-01 --idempotency-key integration-${name}-write-20260825-01${kind === "RECONCILE" ? "" : " --yes"} --json`
|
|
448
|
+
], [
|
|
449
|
+
kind === "RECONCILE"
|
|
450
|
+
? "fresh browser authorization;外部系统零写,不自动 recover/reapply。"
|
|
451
|
+
: "必须先由 durable run evidence 明确允许;未知结果只 resolve 本动作,不自动重放。"
|
|
452
|
+
]);
|
|
453
|
+
}
|
|
454
|
+
const action = bootstrap.command("action").description("只读恢复或查询 v2 authorization action");
|
|
455
|
+
addExamples(action.command("resolve <run-no>")
|
|
456
|
+
.description("按原 action clientRequestId 只读恢复 actor-scoped action,并核对所属 run")
|
|
457
|
+
.requiredOption("--client-request-id <key>", "原 action client request ID")
|
|
458
|
+
.action(async (runNo, options, command) => {
|
|
459
|
+
const expectedRunNo = integrationBootstrapRunNo(runNo);
|
|
460
|
+
const value = await client().resolveAction(integrationBootstrapClientRequestId(options.clientRequestId));
|
|
461
|
+
if (value.runNo !== expectedRunNo) {
|
|
462
|
+
throw identityMismatch("Resolved integration bootstrap action belongs to another run.");
|
|
463
|
+
}
|
|
464
|
+
await output(command, { ok: true, action: value }, actionLine(value));
|
|
465
|
+
}), [
|
|
466
|
+
"numa integration bootstrap action resolve ibar_<32hex> --client-request-id integration-reconcile-20260825-01 --json"
|
|
467
|
+
], ["纯 GET、actor-scoped;不会打开授权 URL、访问外部系统或重放 action POST。"]);
|
|
468
|
+
addExamples(action.command("get <run-no> <action-no>")
|
|
469
|
+
.description("读取本地 durable action 并核对所属 run")
|
|
470
|
+
.action(async (runNo, actionNo, _options, command) => {
|
|
471
|
+
const expectedRunNo = integrationBootstrapRunNo(runNo);
|
|
472
|
+
const value = await client().getAction(actionNo);
|
|
473
|
+
if (value.runNo !== expectedRunNo) {
|
|
474
|
+
throw identityMismatch("Integration bootstrap action belongs to another run.");
|
|
475
|
+
}
|
|
476
|
+
await output(command, { ok: true, action: value }, actionLine(value));
|
|
477
|
+
}), [
|
|
478
|
+
"numa integration bootstrap action get ibar_<32hex> ibaa_<32hex> --json"
|
|
479
|
+
], ["纯 GET durable state;不会读取 authorization URL、token、secret 或 error details。"]);
|
|
128
480
|
}
|
|
129
481
|
//# sourceMappingURL=commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/integration-bootstrap/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/integration-bootstrap/commands.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,mCAAmC,EACnC,kCAAkC,EAClC,yBAAyB,EAI1B,MAAM,aAAa,CAAC;AAYrB,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAClE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AA2B/E,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAAc;IAC7D,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC3E,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAgB;IACzC,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,EAAsB,CAAC,IAAI;WAC5D,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,OAAgB,EAAE,OAAgB,EAAE,IAAY;IACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC;QAC7C,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;QAC3E,CAAC,CAAC,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,IAA8B;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1C,KAAK,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,EAAE,CAClF,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7C,KAAK,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CACnE,CAAC;IACF,OAAO;QACL,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,EAAE;QAC3D,gBAAgB,IAAI,CAAC,UAAU,EAAE;QACjC,mBAAmB,IAAI,CAAC,eAAe,EAAE;QACzC,UAAU;QACV,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvC,WAAW;QACX,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,OAAoC;IACvD,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,YAAY,IAAI,GAAG,EAAE,CAAC;IACxG,OAAO,GAAG,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,OAAO,CAAC,GAAgC;IAC/C,OAAO,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,WAAW,IAAI,GAAG,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,UAAU,CAAC,MAAsC;IACxD,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,WAAW,IAAI,GAAG,EAAE,CAAC;AAC7F,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,KAAK,YAAY,aAAa;WAChC,CAAC,KAAK,CAAC,IAAI,KAAK,4CAA4C;eAC1D,KAAK,CAAC,IAAI,KAAK,gCAAgC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,OAAO,CAAC,OAAe,EAAE,KAAe;IAC/C,OAAO,IAAI,aAAa,CACtB,OAAO,EACP,sCAAsC,EACtC,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACzD,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,yCAAyC,EAAE,GAAG,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,aAAa,CACrB,uEAAuE,EACvE,qCAAqC,CACtC,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,aAAa,EAAE,CAAC;QAC1E,MAAM,IAAI,aAAa,CACrB,6DAA6D,EAC7D,qCAAqC,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA0B,EAAE,MAAc;IACrE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,aAAa,CAAC,GAAG,MAAM,kBAAkB,EAAE,6CAA6C,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAW,EACX,KAAa,EACb,WAA2C,EAC3C,MAAiC;IAEjC,MAAM,CAAC,0BAA0B,KAAK,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,SAAiB;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,GAAoD,EACpD,SAAiB,EACjB,SAAiB,EACjB,KAA8C;IAE9C,IAAI,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,SAAS,CAAC;QACR,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,OAAO,CAAC;QACtD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC;YACvD,MAAM,OAAO,CAAC,iGAAiG,CAAC,CAAC;QACnH,CAAC;QACD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,GAA+C,EAC/C,QAAgB,EAChB,SAAiB,EACjB,KAA8C;IAE9C,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,SAAS,CAAC;QACR,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC;YACvD,MAAM,OAAO,CAAC,0FAA0F,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAoC,EAAE,eAAuB;IACrF,IAAI,OAAO,CAAC,eAAe,KAAK,eAAe,EAAE,CAAC;QAChD,MAAM,gBAAgB,CAAC,4FAA4F,CAAC,CAAC;IACvH,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAgC,EAAE,KAAqC;IACvF,IAAI,GAAG,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,IAAI,GAAG,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;WACvF,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,gBAAgB,CAAC,yFAAyF,CAAC,CAAC;IACpH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,MAAsC,EACtC,KAAa,EACb,IAAsD,EACtD,KAAsC;IAEtC,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;WACvE,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,kBAAkB,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACtF,MAAM,gBAAgB,CAAC,sFAAsF,CAAC,CAAC;IACjH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,MAA6C,EAC7C,KAAa,EACb,IAAsD,EACtD,KAAsC;IAEtC,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;WACpE,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;WAC9C,MAAM,CAAC,kBAAkB,KAAK,KAAK,CAAC,kBAAkB,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAA4B,EAC5B,OAAoB,EACpB,KAAc;IAEd,IAAI,OAAoC,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,MAAM,OAAO,CACX,8JAA8J,EAC9J,YAAY,YAAY,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAC7D,CAAC;IACJ,CAAC;IACD,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,wBAAwB;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACpE,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;IAChG,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACrB,MAAM,OAAO,CACX,mJAAmJ,EACnJ,WAAW,CACZ,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,GAA4B,EAC5B,OAAoB,EACpB,WAA2C,EAC3C,KAA8C,EAC9C,MAAM,GAA8B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAE9E,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO;QACV,eAAe,EAAE,mCAAmC,CAAC,OAAO,CAAC,eAAe,CAAC;QAC7E,cAAc,EAAE,kCAAkC,CAAC,OAAO,CAAC,cAAc,CAAC;KAC3E,CAAC;IACF,IAAI,MAAoF,CAAC;IACzF,IAAI,CAAC;QACH,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;IACxG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;QAC/C,MAAM,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACnG,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IACrG,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAM,CAAC;IAC9B,IAAI,OAAO,CAAC,eAAe,KAAK,UAAU,CAAC,eAAe,EAAE,CAAC;QAC3D,MAAM,gBAAgB,CAAC,oEAAoE,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACvC,MAAM,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,OAAO,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACvG,OAAO;QACL,OAAO;QACP,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC;KACvF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,GAA4B,EAC5B,KAAqC,EACrC,cAAsB,EACtB,KAAc;IAEd,IAAI,GAAgC,CAAC;IACrC,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,MAAM,OAAO,CACX,yIAAyI,EACzI,YAAY,YAAY,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAC7D,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrB,IAAI,GAAG,CAAC,aAAa,EAAE,KAAK,KAAK,wBAAwB;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC1E,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC;IAChE,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,uFAAuF,EAAE,WAAW,CAAC,CAAC;IACtH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,GAA4B,EAC5B,OAAqB,EACrB,WAA2C,EAC3C,KAA8C,EAC9C,MAAM,GAA8B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAE9E,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IAChE,MAAM,KAAK,GAAmC;QAC5C,aAAa,EAAE,OAAO,CAAC,SAAS;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,eAAe,EAAE,mCAAmC,CAAC,OAAO,CAAC,eAAe,CAAC;KAC9E,CAAC;IACF,MAAM,GAAG,GAAG,kCAAkC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3D,IAAI,MAAqF,CAAC;IAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO;WACxE,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;WACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,QAAqC,CAAC;QAC1C,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,iCAAiC,EAAE,CAAC;gBACvF,MAAM,IAAI,aAAa,CACrB,sEAAsE,EACtE,sCAAsC,EACtC,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,CACX,mKAAmK,EACnK,KAAK,CACN,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1B,IAAI,QAAQ,CAAC,aAAa,EAAE,KAAK,KAAK,wBAAwB,EAAE,CAAC;YAC/D,IAAI,CAAC;gBACH,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;gBAC/C,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC/C,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,IAAI,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QACxG,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC9F,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAM,CAAC;IAC9B,IAAI,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;WAC/F,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QAAE,MAAM,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;IAChH,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACvC,MAAM,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACrG,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,GAA4B,EAC5B,KAAa,EACb,IAAsD,EACtD,KAAsC,EACtC,cAAsB,EACtB,KAAc;IAEd,IAAI,MAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,MAAM,OAAO,CACX,yBAAyB,IAAI,CAAC,WAAW,EAAE,sEAAsE,KAAK,wBAAwB,KAAK,CAAC,eAAe,iCAAiC,EACpM,YAAY,YAAY,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAC7D,CAAC;IACJ,CAAC;IACD,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,KAAK,KAAK,wBAAwB;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACjE,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC;IAC9E,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,GAAG,IAAI,mFAAmF,EAAE,WAAW,CAAC,CAAC;IACzH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,GAA4B,EAC5B,KAAa,EACb,IAAsD,EACtD,OAAsB,EACtB,WAA2C,EAC3C,KAA8C,EAC9C,MAAM,GAA8B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAE9E,IAAI,IAAI,KAAK,WAAW;QAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,yBAAyB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC1G,MAAM,KAAK,GAAoC;QAC7C,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC/D,eAAe,EAAE,mCAAmC,CAAC,OAAO,CAAC,eAAe,CAAC;KAC9E,CAAC;IACF,MAAM,GAAG,GAAG,kCAAkC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;WAC1E,CAAC,wBAAwB,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5F,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IAChC,IAAI,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACpE,MAAM,IAAI,aAAa,CAAC,0CAA0C,EAAE,4CAA4C,EAAE,GAAG,CAAC,CAAC;IACzH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB;QAC5D,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;IACvE,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,aAAa,CAAC,GAAG,IAAI,sDAAsD,EAAE,0CAA0C,EAAE,GAAG,CAAC,CAAC;IAC1I,CAAC;IACD,IAAI,MAA4F,CAAC;IACjG,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,wBAAwB,EAAE,CAAC;QACpE,MAAM,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC/C,MAAM,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC1G,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAM,CAAC;IAC9B,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC;QACjH,MAAM,gBAAgB,CAAC,8DAA8D,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5E,MAAM,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACrG,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB,EAAE,MAAgB,EAAE,KAAe;IACtE,OAAO,OAAO,CAAC,WAAW,CACxB,OAAO,EACP,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC9H,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,OAAgB,EAChB,YAAY,GAA4C,EAAE;IAE1D,MAAM,MAAM,GAAG,GAA4B,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE;WACvE,IAAI,0BAA0B,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,YAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAEpF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;SAC/C,WAAW,CAAC,2BAA2B,CAAC;SACxC,WAAW,CAAC,OAAO,EAAE;;;;;;;CAOzB,CAAC,CAAC;IAED,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;SAClC,WAAW,CAAC,qDAAqD,CAAC;SAClE,cAAc,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;SACxE,cAAc,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;SACvE,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,OAAgB,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAQ,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI;YAC/B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;QACpF,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,6BAA6B,EAAE,KAAK,EAAE,EAChE,MAAM,CAAC,OAAO,IAAI,IAAI;YACpB,CAAC,CAAC,GAAG,MAAM,CAAC,OAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,OAAQ,CAAC,MAAM,cAAc,MAAM,CAAC,OAAQ,CAAC,gBAAgB,EAAE;YACzG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE;QACF,8IAA8I;QAC9I,wJAAwJ;KACzJ,EAAE;QACD,6FAA6F;QAC7F,uDAAuD;KACxD,CAAC,CAAC;IAEL,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;SACnC,WAAW,CAAC,wCAAwC,CAAC;SACrD,cAAc,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;SACjE,cAAc,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;SACjE,cAAc,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;SACjE,cAAc,CAAC,yBAAyB,EAAE,iBAAiB,CAAC;SAC5D,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,OAAgB,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,KAAK,WAAW,CAAC;QACvE,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;YAC5D,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACnF,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;gBACxC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,OAAQ,CAAC,WAAW,cAAc,MAAM,CAAC,OAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAChH,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE;QACF,uMAAuM;KACxM,EAAE,CAAC,8DAA8D,CAAC,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC3E,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;SAC/B,WAAW,CAAC,gDAAgD,CAAC;SAC7D,cAAc,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,OAAoC,EAAE,OAAgB,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC,UAAU,CAAC,mCAAmC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;QACtG,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,EAAE,CAAC,iGAAiG,CAAC,EAAE;QACvG,wEAAwE;KACzE,CAAC,CAAC;IACL,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC;SACpC,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACnE,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,EAAE,CAAC,wDAAwD,CAAC,EAAE;QAC9D,wEAAwE;KACzE,CAAC,CAAC;IAEL,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAU,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC;aAC3C,WAAW,CAAC,IAAI,KAAK,WAAW;YAC/B,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,IAAI,KAAK,SAAS;gBAClB,CAAC,CAAC,6CAA6C;gBAC/C,CAAC,CAAC,0BAA0B,CAAC;aAChC,cAAc,CAAC,kCAAkC,EAAE,wBAAwB,CAAC;aAC5E,cAAc,CAAC,2BAA2B,EAAE,cAAc,CAAC;aAC3D,cAAc,CAAC,yBAAyB,EAAE,WAAW,CAAC;aACtD,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,WAAW;YAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QACjE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAsB,EAAE,OAAgB,EAAE,EAAE;YAC1F,MAAM,MAAM,GAAG,MAAM,iCAAiC,CACpD,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CACnD,CAAC;YACF,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,KAAK,WAAW,CAAC;YAC1E,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;gBAC5D,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBACxD,CAAC,CAAC,GAAG,MAAM,CAAC,OAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,OAAQ,CAAC,KAAK,cAAc,MAAM,CAAC,OAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC3G,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,EAAE;YACF,kCAAkC,IAAI,kFAAkF,IAAI,8CAA8C,IAAI,qBAAqB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,SAAS;SACjP,EAAE;YACD,IAAI,KAAK,WAAW;gBAClB,CAAC,CAAC,yDAAyD;gBAC3D,CAAC,CAAC,yDAAyD;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;IAC1F,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;SAC3C,WAAW,CAAC,8DAA8D,CAAC;SAC3E,cAAc,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;SACzE,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAoC,EAAE,OAAgB,EAAE,EAAE;QACtF,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC,aAAa,CAAC,mCAAmC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;QACzG,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YAClC,MAAM,gBAAgB,CAAC,+DAA+D,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE;QACF,qHAAqH;KACtH,EAAE,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAC/D,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC;SACnD,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,QAAgB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACrF,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YAClC,MAAM,gBAAgB,CAAC,sDAAsD,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE;QACF,wEAAwE;KACzE,EAAE,CAAC,0EAA0E,CAAC,CAAC,CAAC;AACrF,CAAC"}
|