xcodebuild-axi 0.1.9 → 0.1.11

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.
@@ -1,31 +1,59 @@
1
- import { resolve } from "node:path";
1
+ import { existsSync, mkdirSync, rmSync } from "node:fs";
2
+ import { dirname, resolve } from "node:path";
2
3
  import { AxiError } from "../errors.js";
3
- import { percent, readCoverage } from "../xccov.js";
4
+ import { coverageSource, mergeCoverage, percent, readArchiveFiles, readCoverage, readCoverageDiff, readFileLines, readFunctions, } from "../xccov.js";
4
5
  import { relativize } from "../xcresult.js";
6
+ import { mergedCoveragePath } from "../xcodebuild.js";
5
7
  import { renderFields, renderHelp, renderList, renderOutput, tildePath, } from "../toon.js";
6
8
  import { getFlag, getIntFlag, hasFlag, positionals, rejectUnknownFlags, } from "../args.js";
7
- export const COVERAGE_HELP = `usage: xcodebuild-axi coverage <path.xcresult> [flags]
9
+ export const COVERAGE_HELP = `usage: xcodebuild-axi coverage <path> [flags]
8
10
  Reads code coverage out of a result bundle — one percentage per target, not the
9
- thousands of per-file lines xccov prints by default.
10
- flags[4]:
11
+ thousands of per-file lines xccov prints by default. The path can also be an
12
+ .xccovreport or .xccovarchive.
13
+ flags[9]:
11
14
  --files list per-file coverage as well as per-target
12
15
  --target <name> only this target
13
16
  --below <percent> only files under this coverage, e.g. --below 50
17
+ --functions <file> per-function coverage for one file, so an uncovered
18
+ branch has a name
19
+ --lines <file> how many times each line of one file ran
20
+ --against <path> compare coverage with an earlier run: what moved, and
21
+ which files went with it
22
+ --merge combine the coverage of two or more runs into one report
23
+ --to <path> where --merge writes (default: under ~/Library/Caches)
14
24
  --max <n> rows to list before summarizing the rest (default: 25)
15
25
  note:
16
26
  Coverage has to have been collected. Run the tests with
17
27
  \`xcodebuild-axi test --coverage\` if the bundle has none.
28
+
29
+ --lines reads the archive rather than the report: the report knows what
30
+ percentage of a file ran, the archive knows how many times each line did.
18
31
  examples:
19
32
  xcodebuild-axi coverage ~/Library/Caches/xcodebuild-axi/MyApps-1a2b3c4d/MyApp-test.xcresult
20
33
  xcodebuild-axi coverage build/MyApp.xcresult --files --below 50
34
+ xcodebuild-axi coverage build/MyApp.xcresult --functions Checkout.swift
35
+ xcodebuild-axi coverage build/MyApp.xcresult --against build/baseline.xcresult
21
36
  `;
22
37
  export const COVERAGE_FLAGS = [
23
38
  "--files",
24
39
  "--target",
25
40
  "--below",
41
+ "--functions",
42
+ "--lines",
43
+ "--against",
44
+ "--merge",
45
+ "--to",
46
+ "--max",
47
+ ];
48
+ const VALUE_FLAGS = [
49
+ "--target",
50
+ "--below",
51
+ "--functions",
52
+ "--lines",
53
+ "--against",
54
+ "--to",
26
55
  "--max",
27
56
  ];
28
- const VALUE_FLAGS = ["--target", "--below", "--max"];
29
57
  export async function coverageCommand(args) {
30
58
  rejectUnknownFlags(args, "coverage", COVERAGE_FLAGS, VALUE_FLAGS);
31
59
  const [rawPath] = positionals(args, VALUE_FLAGS);
@@ -38,6 +66,14 @@ export async function coverageCommand(args) {
38
66
  const path = resolve(expandTilde(rawPath));
39
67
  const below = getIntFlag(args, "--below");
40
68
  const max = getIntFlag(args, "--max") ?? 25;
69
+ const mode = soleMode(args);
70
+ if (mode)
71
+ return readMode(mode, path, args, max);
72
+ // An archive holds raw execution counts and no report at all, so the
73
+ // percentages the default view is made of do not exist for one. What it can
74
+ // answer is which files it covers, which is also what --lines takes.
75
+ if (coverageSource(path) === "archive")
76
+ return reportArchive(path, max);
41
77
  const targetFilter = getFlag(args, "--target")?.toLowerCase();
42
78
  // A --below filter is meaningless without the files it filters, so imply it
43
79
  // rather than returning an empty list the agent has to debug.
@@ -100,7 +136,7 @@ export async function coverageCommand(args) {
100
136
  : "files", shown));
101
137
  }
102
138
  }
103
- blocks.push(renderFields({ bundle: tildePath(path) }));
139
+ blocks.push(renderFields(sourceField(path)));
104
140
  const hints = [];
105
141
  if (!wantFiles) {
106
142
  hints.push(`Run \`xcodebuild-axi coverage ${rawPath} --files\` for per-file coverage`);
@@ -109,6 +145,277 @@ export async function coverageCommand(args) {
109
145
  blocks.push(renderHelp(hints));
110
146
  return renderOutput(blocks);
111
147
  }
148
+ /**
149
+ * Name the path by what it is. A `.xccovreport` reported as `bundle:` is a
150
+ * path the next call cannot reuse the same way.
151
+ */
152
+ function sourceField(path) {
153
+ const kind = coverageSource(path);
154
+ return { [kind]: tildePath(path) };
155
+ }
156
+ /** What an .xccovarchive can answer on its own: which files it holds. */
157
+ async function reportArchive(path, max) {
158
+ const files = await readArchiveFiles(path);
159
+ const shown = files.slice(0, max).map((file) => ({ file: relativize(file) }));
160
+ return renderOutput([
161
+ renderFields({ archive: tildePath(path), files: files.length }),
162
+ files.length > 0
163
+ ? renderList(files.length > shown.length
164
+ ? `files (${shown.length} of ${files.length})`
165
+ : "files", shown)
166
+ : renderFields({ files: "none — this archive holds no coverage" }),
167
+ renderHelp([
168
+ `Run \`xcodebuild-axi coverage ${tildePath(path)} --lines <file>\` for the lines that never ran`,
169
+ ]),
170
+ ]);
171
+ }
172
+ /** The one coverage question this invocation is for, if not the default. */
173
+ const MODES = ["--functions", "--lines", "--against", "--merge"];
174
+ function soleMode(args) {
175
+ const asked = MODES.filter((mode) => args.includes(mode));
176
+ if (asked.length > 1) {
177
+ throw new AxiError(`${asked.join(" and ")} ask different questions — pass one`, "VALIDATION_ERROR", [`each is its own read of the coverage data: ${MODES.join(", ")}`]);
178
+ }
179
+ return asked[0];
180
+ }
181
+ async function readMode(mode, path, args, max) {
182
+ switch (mode) {
183
+ case "--functions":
184
+ return reportFunctions(path, requireValue(args, "--functions"), max);
185
+ case "--lines":
186
+ return reportLines(path, requireValue(args, "--lines"), max);
187
+ case "--against":
188
+ return reportDiff(path, resolve(expandTilde(requireValue(args, "--against"))), max);
189
+ case "--merge":
190
+ return runMerge(path, args, max);
191
+ }
192
+ }
193
+ function requireValue(args, flag) {
194
+ const value = getFlag(args, flag);
195
+ if (value === undefined) {
196
+ throw new AxiError(`${flag} needs a value`, "VALIDATION_ERROR", [
197
+ `xcodebuild-axi coverage <path> ${flag} <value>`,
198
+ ]);
199
+ }
200
+ return value;
201
+ }
202
+ /**
203
+ * Per-function coverage, which is where an uncovered branch gets a name.
204
+ *
205
+ * A file at 60% says a test is missing; it does not say which one. The
206
+ * function list does, and it is sorted with the least covered first because
207
+ * that is the row someone is looking for.
208
+ */
209
+ async function reportFunctions(path, file, max) {
210
+ const found = await readFunctions(path, file);
211
+ const functions = found.flatMap((entry) => entry.functions);
212
+ if (functions.length === 0) {
213
+ return renderOutput([
214
+ renderFields({
215
+ functions: `no coverage recorded for a file named '${file}'`,
216
+ }),
217
+ renderFields(sourceField(path)),
218
+ renderHelp([
219
+ `Run \`xcodebuild-axi coverage ${tildePath(path)} --files\` to see which files the report covers`,
220
+ "The name is matched against the path the file had when the report was written",
221
+ ]),
222
+ ]);
223
+ }
224
+ const sorted = functions
225
+ .slice()
226
+ .sort((a, b) => a.lineCoverage - b.lineCoverage);
227
+ const shown = sorted.slice(0, max).map(functionRow);
228
+ return renderOutput([
229
+ renderFields({
230
+ file: relativize(found[0]?.file ?? file),
231
+ functions: functions.length,
232
+ uncovered: functions.filter((fn) => fn.executionCount === 0).length,
233
+ }),
234
+ renderList(sorted.length > shown.length
235
+ ? `functions (${shown.length} of ${sorted.length})`
236
+ : "functions", shown),
237
+ renderFields(sourceField(path)),
238
+ ]);
239
+ }
240
+ function functionRow(fn) {
241
+ return {
242
+ function: fn.name,
243
+ line: fn.lineNumber,
244
+ coverage: percent(fn.lineCoverage),
245
+ lines: `${fn.coveredLines}/${fn.executableLines}`,
246
+ runs: fn.executionCount,
247
+ };
248
+ }
249
+ /**
250
+ * Per-line execution counts, reported as the ranges that did not run.
251
+ *
252
+ * Printing one row per line is the thing `xccov` already does and the thing
253
+ * nobody can read: a 400-line file is 400 rows to find the eight that matter.
254
+ * Consecutive uncovered lines collapse into a range instead.
255
+ */
256
+ async function reportLines(path, file, max) {
257
+ const lines = await readFileLines(path, file).catch(async (error) => {
258
+ // xccov answers an unknown file with a load failure rather than a list, so
259
+ // the list is what the refusal carries.
260
+ const candidates = await readArchiveFiles(path).catch(() => []);
261
+ if (candidates.length === 0)
262
+ throw error;
263
+ const near = candidates.filter((candidate) => candidate.includes(file));
264
+ throw new AxiError(`No coverage recorded for '${file}'`, "VALIDATION_ERROR", near.length > 0
265
+ ? [`did you mean: ${near.slice(0, 5).join(", ")}`]
266
+ : [
267
+ `Run \`xcodebuild-axi coverage ${tildePath(path)} --files\` to see the files this archive holds`,
268
+ ]);
269
+ });
270
+ const executable = lines.filter((line) => line.isExecutable);
271
+ const covered = executable.filter((line) => line.executionCount > 0).length;
272
+ const gaps = uncoveredRanges(executable);
273
+ const shown = gaps.slice(0, max);
274
+ return renderOutput([
275
+ renderFields({
276
+ file: relativize(file),
277
+ coverage: percent(executable.length > 0 ? covered / executable.length : 0),
278
+ lines: `${covered} of ${executable.length} covered`,
279
+ }),
280
+ gaps.length === 0
281
+ ? renderFields({ uncovered: "none — every executable line ran" })
282
+ : renderList(gaps.length > shown.length
283
+ ? `uncovered (${shown.length} of ${gaps.length})`
284
+ : "uncovered", shown),
285
+ renderFields(sourceField(path)),
286
+ ]);
287
+ }
288
+ /** Consecutive lines that never ran, as ranges rather than one row each. */
289
+ export function uncoveredRanges(lines) {
290
+ const ranges = [];
291
+ for (const line of lines) {
292
+ if (line.executionCount > 0)
293
+ continue;
294
+ const last = ranges[ranges.length - 1];
295
+ if (last && line.line === last.to + 1)
296
+ last.to = line.line;
297
+ else
298
+ ranges.push({ from: line.line, to: line.line });
299
+ }
300
+ return ranges.map((range) => ({
301
+ lines: range.from === range.to ? `${range.from}` : `${range.from}-${range.to}`,
302
+ count: range.to - range.from + 1,
303
+ }));
304
+ }
305
+ /**
306
+ * `--against`, which answers "did coverage drop" without a spreadsheet.
307
+ *
308
+ * The headline is the delta, because a coverage check in CI is a comparison
309
+ * rather than a threshold most of the time.
310
+ */
311
+ async function reportDiff(path, baseline, max) {
312
+ // xccov's argument order is before, after; the bundle being asked about is
313
+ // the after, so the baseline goes first.
314
+ const diff = await readCoverageDiff(baseline, path);
315
+ const overall = diff.lineCoverageDelta ?? {};
316
+ const blocks = [
317
+ renderFields({
318
+ coverage: movement(overall.lineCoverageDelta ?? 0),
319
+ covered_lines: overall.coveredLinesDelta ?? 0,
320
+ executable_lines: overall.executableLinesDelta ?? 0,
321
+ }),
322
+ ];
323
+ // Sorted on the number and rendered afterwards: "down 45.5%" does not
324
+ // compare as a number, and the biggest drop is the row being looked for.
325
+ const moved = (diff.targetDeltas ?? [])
326
+ .flatMap((target) => (target.fileDeltas ?? []).map((file) => ({
327
+ target: target.name ?? "",
328
+ file: relativize(file.documentLocation ?? ""),
329
+ delta: file.lineCoverageDelta?.lineCoverageDelta ?? 0,
330
+ lines: file.lineCoverageDelta?.coveredLinesDelta ?? 0,
331
+ })))
332
+ .sort((a, b) => a.delta - b.delta);
333
+ if (moved.length > 0) {
334
+ const shown = moved.slice(0, max).map(({ target, file, delta, lines }) => ({
335
+ target,
336
+ file,
337
+ coverage: movement(delta),
338
+ lines,
339
+ }));
340
+ blocks.push(renderList(moved.length > shown.length
341
+ ? `files (${shown.length} of ${moved.length})`
342
+ : "files", shown));
343
+ }
344
+ const added = namesOf(diff, "addedFiles");
345
+ const removed = namesOf(diff, "removedFiles");
346
+ if (added.length > 0)
347
+ blocks.push(renderFields({ added_files: added }));
348
+ if (removed.length > 0)
349
+ blocks.push(renderFields({ removed_files: removed }));
350
+ if (blocks.length === 1 && moved.length === 0) {
351
+ blocks.push(renderFields({ difference: "none — coverage matches the baseline" }));
352
+ }
353
+ return renderOutput([
354
+ ...blocks,
355
+ renderFields({ baseline: tildePath(baseline), ...sourceField(path) }),
356
+ ]);
357
+ }
358
+ function namesOf(diff, key) {
359
+ return (diff.targetDeltas ?? []).flatMap((target) => (target[key] ?? []).map((file) => relativize(file.documentLocation ?? "")));
360
+ }
361
+ /**
362
+ * Which way coverage moved, in words.
363
+ *
364
+ * Words rather than a signed percentage because TOON quotes any scalar that
365
+ * starts with `-`, and `"-2.1%"` costs more in quotes than `down 2.1%` costs
366
+ * in letters.
367
+ */
368
+ export function movement(delta) {
369
+ if (delta === 0)
370
+ return "unchanged";
371
+ return `${delta > 0 ? "up" : "down"} ${percent(Math.abs(delta))}`;
372
+ }
373
+ /**
374
+ * `--merge`, which combines the coverage of a sharded run.
375
+ *
376
+ * `xccov merge` wants report/archive pairs rather than result bundles, so the
377
+ * bundles are unpacked first — the two-step that makes this something people
378
+ * give up on doing in CI.
379
+ */
380
+ async function runMerge(first, args, max) {
381
+ const paths = positionals(args, VALUE_FLAGS).map((path) => resolve(expandTilde(path)));
382
+ if (paths.length < 2) {
383
+ throw new AxiError(`--merge combines the coverage of two or more runs, and ${paths.length} was given`, "VALIDATION_ERROR", [
384
+ "xcodebuild-axi coverage shard1.xcresult shard2.xcresult --merge",
385
+ "`xcodebuild-axi test --coverage` prints the bundle path it wrote",
386
+ ]);
387
+ }
388
+ const requested = getFlag(args, "--to");
389
+ const outReport = requested
390
+ ? resolve(expandTilde(requested))
391
+ : mergedCoveragePath(paths);
392
+ const outArchive = outReport.replace(/\.xccovreport$/, "") + ".xccovarchive";
393
+ if (requested && (existsSync(outReport) || existsSync(outArchive))) {
394
+ throw new AxiError(`Something is already at ${tildePath(outReport)}`, "VALIDATION_ERROR", [
395
+ "Pass a path that does not exist yet, or drop --to to write under ~/Library/Caches",
396
+ ]);
397
+ }
398
+ if (!requested) {
399
+ rmSync(outReport, { recursive: true, force: true });
400
+ rmSync(outArchive, { recursive: true, force: true });
401
+ }
402
+ mkdirSync(dirname(outReport), { recursive: true });
403
+ await mergeCoverage(paths, outReport, outArchive);
404
+ const merged = await readCoverage(outReport);
405
+ return renderOutput([
406
+ renderFields({
407
+ merged: paths.length,
408
+ coverage: percent(merged.lineCoverage),
409
+ lines: `${merged.coveredLines} of ${merged.executableLines} covered`,
410
+ report: tildePath(outReport),
411
+ archive: tildePath(outArchive),
412
+ }),
413
+ renderList("from", paths.slice(0, max).map((path) => ({ bundle: tildePath(path) }))),
414
+ renderHelp([
415
+ `Run \`xcodebuild-axi coverage ${tildePath(outReport)} --files\` to report on the merged coverage`,
416
+ ]),
417
+ ]);
418
+ }
112
419
  function expandTilde(path) {
113
420
  const home = process.env["HOME"];
114
421
  return home && path.startsWith("~/") ? `${home}${path.slice(1)}` : path;
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../../src/commands/coverage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../../src/commands/coverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,cAAc,EACd,aAAa,EACb,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,GAKd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,OAAO,EACP,UAAU,EACV,OAAO,EACP,WAAW,EACX,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B5B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,UAAU;IACV,SAAS;IACT,aAAa;IACb,SAAS;IACT,WAAW;IACX,SAAS;IACT,MAAM;IACN,OAAO;CACC,CAAC;AACX,MAAM,WAAW,GAAG;IAClB,UAAU;IACV,SAAS;IACT,aAAa;IACb,SAAS;IACT,WAAW;IACX,MAAM;IACN,OAAO;CACC,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAElE,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAChB,8CAA8C,EAC9C,kBAAkB,EAClB;YACE,yCAAyC;YACzC,2DAA2D;SAC5D,CACF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAE5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAEjD,qEAAqE;IACrE,4EAA4E;IAC5E,qEAAqE;IACrE,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9D,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC;IAElE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAE9D,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC7B,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAClC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CACjD,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,QAAQ,CAChB,uBAAuB,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,EACnD,kBAAkB,EAClB;gBACE,2BAA2B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACpF,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG;QACb,YAAY,CAAC;YACX,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;YACtC,KAAK,EAAE,GAAG,MAAM,CAAC,YAAY,OAAO,MAAM,CAAC,eAAe,UAAU;YACpE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;SAC/B,CAAC;KACH,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO;SACvB,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;SAC/C,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACb,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QACtC,KAAK,EAAE,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,eAAe,EAAE;KAC1D,CAAC,CAAC,CAAC;IAEN,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CACT,UAAU,CACR,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;YAChC,CAAC,CAAC,YAAY,UAAU,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,GAAG;YACvD,CAAC,CAAC,SAAS,EACb,UAAU,CACX,CACF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;QAChE,MAAM,KAAK,GAAmB,OAAO;aAClC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;aACvC,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,GAAG,SAAS,CACnE;YACD,uEAAuE;YACvE,2BAA2B;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;aAC1C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,YAAY,CAAC;gBACX,KAAK,EACH,KAAK,KAAK,SAAS;oBACjB,CAAC,CAAC,+BAA+B;oBACjC,CAAC,CAAC,iBAAiB,KAAK,YAAY;aACzC,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/C,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;gBACxC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;gBACpC,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;aACtD,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,IAAI,CACT,UAAU,CACR,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gBACzB,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,GAAG;gBAC9C,CAAC,CAAC,OAAO,EACX,KAAK,CACN,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CACR,iCAAiC,OAAO,kCAAkC,CAC3E,CAAC;QACF,KAAK,CAAC,IAAI,CACR,iCAAiC,OAAO,6CAA6C,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/B,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AACrC,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,GAAW;IACpD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9E,OAAO,YAAY,CAAC;QAClB,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/D,KAAK,CAAC,MAAM,GAAG,CAAC;YACd,CAAC,CAAC,UAAU,CACR,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gBACzB,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,GAAG;gBAC9C,CAAC,CAAC,OAAO,EACX,KAAK,CACN;YACH,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;QACpE,UAAU,CAAC;YACT,iCAAiC,SAAS,CAAC,IAAI,CAAC,gDAAgD;SACjG,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAU,CAAC;AAE1E,SAAS,QAAQ,CAAC,IAAc;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAChB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,qCAAqC,EAC3D,kBAAkB,EAClB,CAAC,8CAA8C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,IAA4B,EAC5B,IAAY,EACZ,IAAc,EACd,GAAW;IAEX,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,OAAO,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,KAAK,SAAS;YACZ,OAAO,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,KAAK,WAAW;YACd,OAAO,UAAU,CACf,IAAI,EACJ,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACrD,GAAG,CACJ,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAc,EAAE,IAAY;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,QAAQ,CAAC,GAAG,IAAI,gBAAgB,EAAE,kBAAkB,EAAE;YAC9D,kCAAkC,IAAI,UAAU;SACjD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,IAAY,EACZ,GAAW;IAEX,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC;YAClB,YAAY,CAAC;gBACX,SAAS,EAAE,0CAA0C,IAAI,GAAG;aAC7D,CAAC;YACF,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/B,UAAU,CAAC;gBACT,iCAAiC,SAAS,CAAC,IAAI,CAAC,iDAAiD;gBACjG,+EAA+E;aAChF,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,SAAS;SACrB,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEpD,OAAO,YAAY,CAAC;QAClB,YAAY,CAAC;YACX,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;YACxC,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,MAAM;SACpE,CAAC;QACF,UAAU,CACR,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;YAC1B,CAAC,CAAC,cAAc,KAAK,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM,GAAG;YACnD,CAAC,CAAC,WAAW,EACf,KAAK,CACN;QACD,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,EAAoB;IACvC,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,IAAI;QACjB,IAAI,EAAE,EAAE,CAAC,UAAU;QACnB,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC;QAClC,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,eAAe,EAAE;QACjD,IAAI,EAAE,EAAE,CAAC,cAAc;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,IAAY,EACZ,GAAW;IAEX,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CACjD,KAAK,EAAE,KAAc,EAAE,EAAE;QACvB,2EAA2E;QAC3E,wCAAwC;QACxC,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;QACzC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,MAAM,IAAI,QAAQ,CAChB,6BAA6B,IAAI,GAAG,EACpC,kBAAkB,EAClB,IAAI,CAAC,MAAM,GAAG,CAAC;YACb,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,CAAC,CAAC;gBACE,iCAAiC,SAAS,CAAC,IAAI,CAAC,gDAAgD;aACjG,CACN,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjC,OAAO,YAAY,CAAC;QAClB,YAAY,CAAC;YACX,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;YACtB,QAAQ,EAAE,OAAO,CACf,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACxD;YACD,KAAK,EAAE,GAAG,OAAO,OAAO,UAAU,CAAC,MAAM,UAAU;SACpD,CAAC;QACF,IAAI,CAAC,MAAM,KAAK,CAAC;YACf,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,kCAAkC,EAAE,CAAC;YACjE,CAAC,CAAC,UAAU,CACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gBACxB,CAAC,CAAC,cAAc,KAAK,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,GAAG;gBACjD,CAAC,CAAC,WAAW,EACf,KAAK,CACN;QACL,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAC7B,KAAqB;IAErB,MAAM,MAAM,GAAwC,EAAE,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC;YAAE,SAAS;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC;YAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;;YACtD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,EACH,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE;QACzE,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;KACjC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,UAAU,CACvB,IAAY,EACZ,QAAgB,EAChB,GAAW;IAEX,2EAA2E;IAC3E,yCAAyC;IACzC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG;QACb,YAAY,CAAC;YACX,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAClD,aAAa,EAAE,OAAO,CAAC,iBAAiB,IAAI,CAAC;YAC7C,gBAAgB,EAAE,OAAO,CAAC,oBAAoB,IAAI,CAAC;SACpD,CAAC;KACH,CAAC;IAEF,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;SACpC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAClB,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;QACzB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAC7C,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,IAAI,CAAC;QACrD,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,IAAI,CAAC;KACtD,CAAC,CAAC,CACJ;SACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACzE,MAAM;YACN,IAAI;YACJ,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;YACzB,KAAK;SACN,CAAC,CAAC,CAAC;QACJ,MAAM,CAAC,IAAI,CACT,UAAU,CACR,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;YACzB,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,GAAG;YAC9C,CAAC,CAAC,OAAO,EACX,KAAK,CACN,CACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAE9E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CACT,YAAY,CAAC,EAAE,UAAU,EAAE,sCAAsC,EAAE,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;QAClB,GAAG,MAAM;QACT,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;KACtE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CACd,IAAkB,EAClB,GAAkC;IAElC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAClD,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAC3E,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACpC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,QAAQ,CACrB,KAAa,EACb,IAAc,EACd,GAAW;IAEX,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAC3B,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAChB,0DAA0D,KAAK,CAAC,MAAM,YAAY,EAClF,kBAAkB,EAClB;YACE,iEAAiE;YACjE,kEAAkE;SACnE,CACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,SAAS;QACzB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC;IAE7E,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,QAAQ,CAChB,2BAA2B,SAAS,CAAC,SAAS,CAAC,EAAE,EACjD,kBAAkB,EAClB;YACE,mFAAmF;SACpF,CACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnD,MAAM,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAE7C,OAAO,YAAY,CAAC;QAClB,YAAY,CAAC;YACX,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;YACtC,KAAK,EAAE,GAAG,MAAM,CAAC,YAAY,OAAO,MAAM,CAAC,eAAe,UAAU;YACpE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC;YAC5B,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC;SAC/B,CAAC;QACF,UAAU,CACR,MAAM,EACN,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACjE;QACD,UAAU,CAAC;YACT,iCAAiC,SAAS,CAAC,SAAS,CAAC,6CAA6C;SACnG,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC"}
@@ -1,9 +1,9 @@
1
- import { exportOptionsPlist } from "../archive.js";
1
+ import { type ExportOptions } from "../archive.js";
2
2
  export declare const EXPORT_HELP: string;
3
- export declare const EXPORT_FLAGS: readonly ["--method", "--team", "--options", "--output", "--artifacts-dir", "--upload", "--no-manage-version", "--no-upload-symbols", "--notarized", "--allow-provisioning", "--signing-style", "--auth-key-path", "--auth-key-id", "--auth-key-issuer", "--allow-device-registration"];
4
- export declare const EXPORT_VALUE_FLAGS: readonly ["--method", "--team", "--options", "--output", "--artifacts-dir", "--signing-style", "--auth-key-path", "--auth-key-id", "--auth-key-issuer"];
3
+ export declare const EXPORT_FLAGS: readonly ["--method", "--team", "--options", "--output", "--artifacts-dir", "--upload", "--no-manage-version", "--no-upload-symbols", "--notarized", "--allow-provisioning", "--signing-style", "--profile", "--certificate", "--installer-certificate", "--distribution-bundle-id", "--keep-swift-symbols", "--internal-only", "--app-store-info", "--icloud-env", "--thinning", "--manifest", "--odr-base-url", "--no-embed-odr", "--auth-key-path", "--auth-key-id", "--auth-key-issuer", "--allow-device-registration"];
4
+ export declare const EXPORT_VALUE_FLAGS: readonly ["--method", "--team", "--options", "--output", "--artifacts-dir", "--signing-style", "--profile", "--certificate", "--installer-certificate", "--distribution-bundle-id", "--icloud-env", "--thinning", "--manifest", "--odr-base-url", "--auth-key-path", "--auth-key-id", "--auth-key-issuer"];
5
5
  export declare function exportCommand(args: string[]): Promise<string>;
6
- export declare function generatedPlistOptions(args: string[], method: string): Parameters<typeof exportOptionsPlist>[0];
6
+ export declare function generatedPlistOptions(args: string[], method: string): ExportOptions;
7
7
  /**
8
8
  * Does this plist upload rather than write a product?
9
9
  *