skyloom 1.15.5 → 1.16.1

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.
Files changed (45) hide show
  1. package/dist/cli/command_args.d.ts +74 -0
  2. package/dist/cli/command_args.d.ts.map +1 -0
  3. package/dist/cli/command_args.js +129 -0
  4. package/dist/cli/command_args.js.map +1 -0
  5. package/dist/cli/loom.d.ts +36 -1
  6. package/dist/cli/loom.d.ts.map +1 -1
  7. package/dist/cli/loom.js +237 -33
  8. package/dist/cli/loom.js.map +1 -1
  9. package/dist/cli/loom_chat.d.ts.map +1 -1
  10. package/dist/cli/loom_chat.js +71 -3
  11. package/dist/cli/loom_chat.js.map +1 -1
  12. package/dist/core/agent.js +2 -2
  13. package/dist/core/agent.js.map +1 -1
  14. package/dist/core/commands.d.ts +5 -0
  15. package/dist/core/commands.d.ts.map +1 -1
  16. package/dist/core/commands.js +21 -0
  17. package/dist/core/commands.js.map +1 -1
  18. package/dist/core/security.d.ts.map +1 -1
  19. package/dist/core/security.js +1 -0
  20. package/dist/core/security.js.map +1 -1
  21. package/dist/core/tool_router.d.ts.map +1 -1
  22. package/dist/core/tool_router.js +11 -3
  23. package/dist/core/tool_router.js.map +1 -1
  24. package/dist/tools/builtin.d.ts.map +1 -1
  25. package/dist/tools/builtin.js +38 -192
  26. package/dist/tools/builtin.js.map +1 -1
  27. package/dist/tools/websearch.d.ts +92 -0
  28. package/dist/tools/websearch.d.ts.map +1 -0
  29. package/dist/tools/websearch.js +343 -0
  30. package/dist/tools/websearch.js.map +1 -0
  31. package/package.json +1 -1
  32. package/src/cli/command_args.ts +159 -0
  33. package/src/cli/loom.ts +191 -24
  34. package/src/cli/loom_chat.ts +63 -3
  35. package/src/core/agent.ts +2 -2
  36. package/src/core/commands.ts +21 -0
  37. package/src/core/security.ts +1 -0
  38. package/src/core/tool_router.ts +11 -3
  39. package/src/tools/builtin.ts +38 -190
  40. package/src/tools/websearch.ts +368 -0
  41. package/tests/command_args.test.ts +115 -0
  42. package/tests/commands.test.ts +23 -0
  43. package/tests/loom.test.ts +116 -0
  44. package/tests/tool_router.test.ts +15 -0
  45. package/tests/websearch.test.ts +190 -0
@@ -0,0 +1,74 @@
1
+ /**
2
+ * 斜杠命令向导 · Cascading argument wizard for slash commands.
3
+ *
4
+ * After a slash command that takes structured arguments is chosen in the loom
5
+ * palette, the TUI walks the user through its arguments one level at a time:
6
+ * pick a provider, then paste a key; pick a model; pick a session. Each level is
7
+ * navigable with ↑/↓ and filterable by typing — the same affordance as the
8
+ * command palette itself, extended to arguments.
9
+ *
10
+ * This module is the pure brain of that flow (no I/O, no terminal) so it is
11
+ * fully unit-testable: given a command, the values chosen so far, and a snapshot
12
+ * of runtime context, it returns the next step — or null when the command is
13
+ * complete and ready to submit.
14
+ */
15
+ export interface ArgChoice {
16
+ /** The value contributed to the final command line. */
17
+ value: string;
18
+ /** Display label in the list. */
19
+ label: string;
20
+ /** Optional dim hint shown after the label. */
21
+ hint?: string;
22
+ /** Optional group heading (e.g. provider name) for sectioned lists. */
23
+ group?: string;
24
+ }
25
+ export interface WizardStep {
26
+ kind: 'choice' | 'freeform';
27
+ /** Heading shown above the list / prompt. */
28
+ title: string;
29
+ /** Choices for a 'choice' step (already ordered). */
30
+ choices: ArgChoice[];
31
+ /** A 'choice' step may also accept a typed value not in the list. */
32
+ allowFreeform: boolean;
33
+ /** Placeholder for a 'freeform' step (or a free-typed choice). */
34
+ placeholder?: string;
35
+ /** Mask typed input (API keys). */
36
+ secret?: boolean;
37
+ }
38
+ export interface WizardProvider {
39
+ id: string;
40
+ label: string;
41
+ configured: boolean;
42
+ envVar?: string;
43
+ }
44
+ export interface WizardModel {
45
+ id: string;
46
+ provider: string;
47
+ label: string;
48
+ hint?: string;
49
+ }
50
+ export interface WizardSession {
51
+ id: string;
52
+ label: string;
53
+ }
54
+ export interface WizardContext {
55
+ providers: WizardProvider[];
56
+ models: WizardModel[];
57
+ sessions: WizardSession[];
58
+ }
59
+ /** Does this base command (with or without leading slash) have a wizard? */
60
+ export declare function hasWizard(command: string): boolean;
61
+ /**
62
+ * The next step for `command` given the values already chosen, or null when the
63
+ * command is complete (ready to submit via {@link buildCommandLine}).
64
+ */
65
+ export declare function nextWizardStep(command: string, prior: string[], ctx: WizardContext): WizardStep | null;
66
+ /** Assemble the final command line from the base command + chosen values. */
67
+ export declare function buildCommandLine(command: string, values: string[]): string;
68
+ /**
69
+ * Filter + rank choices by a typed query (case-insensitive substring on value,
70
+ * label, and group). Empty query returns the list unchanged. Exact value/label
71
+ * prefix matches sort first so the obvious pick lands at the top.
72
+ */
73
+ export declare function filterChoices(choices: ArgChoice[], typed: string): ArgChoice[];
74
+ //# sourceMappingURL=command_args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command_args.d.ts","sourceRoot":"","sources":["../../src/cli/command_args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,SAAS;IACxB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAC;IACvB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AACnG,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3F,MAAM,WAAW,aAAa;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE5D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAKD,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElD;AAmBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAoCtG;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAgB1E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAiB9E"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ /**
3
+ * 斜杠命令向导 · Cascading argument wizard for slash commands.
4
+ *
5
+ * After a slash command that takes structured arguments is chosen in the loom
6
+ * palette, the TUI walks the user through its arguments one level at a time:
7
+ * pick a provider, then paste a key; pick a model; pick a session. Each level is
8
+ * navigable with ↑/↓ and filterable by typing — the same affordance as the
9
+ * command palette itself, extended to arguments.
10
+ *
11
+ * This module is the pure brain of that flow (no I/O, no terminal) so it is
12
+ * fully unit-testable: given a command, the values chosen so far, and a snapshot
13
+ * of runtime context, it returns the next step — or null when the command is
14
+ * complete and ready to submit.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.hasWizard = hasWizard;
18
+ exports.nextWizardStep = nextWizardStep;
19
+ exports.buildCommandLine = buildCommandLine;
20
+ exports.filterChoices = filterChoices;
21
+ /** Commands that drive a guided wizard (base name without the leading slash). */
22
+ const WIZARD_COMMANDS = new Set(['model', 'apikey', 'connect', 'resume']);
23
+ /** Does this base command (with or without leading slash) have a wizard? */
24
+ function hasWizard(command) {
25
+ return WIZARD_COMMANDS.has(command.replace(/^\//, '').trim().toLowerCase());
26
+ }
27
+ function providerChoices(ctx) {
28
+ return ctx.providers.map((p) => ({
29
+ value: p.id,
30
+ label: p.label,
31
+ hint: p.configured ? '✓ 已配置' : (p.envVar ? `需 ${p.envVar}` : '未配置'),
32
+ }));
33
+ }
34
+ function modelChoices(ctx) {
35
+ return ctx.models.map((m) => ({
36
+ value: m.id,
37
+ label: m.id,
38
+ hint: m.hint,
39
+ group: m.provider,
40
+ }));
41
+ }
42
+ /**
43
+ * The next step for `command` given the values already chosen, or null when the
44
+ * command is complete (ready to submit via {@link buildCommandLine}).
45
+ */
46
+ function nextWizardStep(command, prior, ctx) {
47
+ const cmd = command.replace(/^\//, '').trim().toLowerCase();
48
+ switch (cmd) {
49
+ case 'model': {
50
+ if (prior.length >= 1)
51
+ return null;
52
+ const choices = [
53
+ { value: 'reset', label: '↺ reset', hint: '回到统一默认模型' },
54
+ ...modelChoices(ctx),
55
+ ];
56
+ return { kind: 'choice', title: '选择模型(输入可筛选)', choices, allowFreeform: true, placeholder: '模型 id' };
57
+ }
58
+ case 'connect': {
59
+ if (prior.length >= 1)
60
+ return null;
61
+ return { kind: 'choice', title: '选择 Provider', choices: providerChoices(ctx), allowFreeform: true, placeholder: 'provider' };
62
+ }
63
+ case 'apikey': {
64
+ // step 0: provider · step 1: the key
65
+ if (prior.length === 0) {
66
+ return { kind: 'choice', title: '为哪个 Provider 配置 API Key', choices: providerChoices(ctx), allowFreeform: true, placeholder: 'provider' };
67
+ }
68
+ if (prior.length === 1) {
69
+ return { kind: 'freeform', title: `粘贴 ${prior[0]} 的 API Key`, choices: [], allowFreeform: true, placeholder: 'sk-…(回车保存)', secret: true };
70
+ }
71
+ return null;
72
+ }
73
+ case 'resume': {
74
+ if (prior.length >= 1)
75
+ return null;
76
+ const choices = ctx.sessions.map((s, i) => ({ value: String(i + 1), label: `${i + 1}. ${s.label}`, hint: s.id.slice(0, 8) }));
77
+ return { kind: 'choice', title: choices.length ? '选择要恢复的会话' : '暂无历史会话', choices, allowFreeform: true, placeholder: '序号或 id' };
78
+ }
79
+ }
80
+ return null;
81
+ }
82
+ /** Assemble the final command line from the base command + chosen values. */
83
+ function buildCommandLine(command, values) {
84
+ const cmd = command.replace(/^\//, '').trim().toLowerCase();
85
+ const v = values.filter((x) => x !== undefined && x !== null);
86
+ switch (cmd) {
87
+ case 'apikey':
88
+ // /apikey set <provider> <key>
89
+ return `/apikey set ${v.join(' ')}`.trim();
90
+ case 'model':
91
+ return `/model ${v.join(' ')}`.trim();
92
+ case 'connect':
93
+ return `/connect ${v.join(' ')}`.trim();
94
+ case 'resume':
95
+ return `/resume ${v.join(' ')}`.trim();
96
+ default:
97
+ return `/${cmd} ${v.join(' ')}`.trim();
98
+ }
99
+ }
100
+ /**
101
+ * Filter + rank choices by a typed query (case-insensitive substring on value,
102
+ * label, and group). Empty query returns the list unchanged. Exact value/label
103
+ * prefix matches sort first so the obvious pick lands at the top.
104
+ */
105
+ function filterChoices(choices, typed) {
106
+ const q = typed.trim().toLowerCase();
107
+ if (!q)
108
+ return choices;
109
+ const scored = [];
110
+ for (const c of choices) {
111
+ const value = c.value.toLowerCase();
112
+ const label = c.label.toLowerCase();
113
+ const group = (c.group || '').toLowerCase();
114
+ let rank = -1;
115
+ if (value === q || label === q)
116
+ rank = 0;
117
+ else if (value.startsWith(q) || label.startsWith(q))
118
+ rank = 1;
119
+ else if (value.includes(q) || label.includes(q))
120
+ rank = 2;
121
+ else if (group.includes(q))
122
+ rank = 3;
123
+ if (rank >= 0)
124
+ scored.push({ c, rank });
125
+ }
126
+ scored.sort((a, b) => a.rank - b.rank); // stable within equal ranks
127
+ return scored.map((s) => s.c);
128
+ }
129
+ //# sourceMappingURL=command_args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command_args.js","sourceRoot":"","sources":["../../src/cli/command_args.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@
25
25
  *
26
26
  * Design rationale: docs/AESTHETIC_DESIGN.md §2.2 (方案三 · 立轴).
27
27
  */
28
+ import { type WizardStep } from "./command_args";
28
29
  /** Truncate a styled string to a visual width, keeping ANSI sequences intact. */
29
30
  export declare function cutVisual(s: string, maxW: number): string;
30
31
  /** Pad a styled string with spaces to an exact visual width (truncates if over). */
@@ -168,6 +169,14 @@ export declare class LoomUI {
168
169
  modeBadge: string;
169
170
  /** User-defined slash commands shown in the palette ([name, description]). */
170
171
  extraCommands: [string, string][];
172
+ /**
173
+ * Cascading argument wizard, active after a structured slash command is
174
+ * chosen (e.g. /apikey → pick provider → paste key). Resolved step-by-step
175
+ * via the wizardStep callback the chat loop wires up.
176
+ */
177
+ private wizard;
178
+ /** Next-step resolver for the argument wizard (set by the chat loop with runtime context). */
179
+ wizardStep: ((command: string, prior: string[]) => WizardStep | null) | null;
171
180
  private keypressHandler;
172
181
  private resizeHandler;
173
182
  constructor(opts?: LoomOpts);
@@ -194,14 +203,40 @@ export declare class LoomUI {
194
203
  flash(msg: string, ms?: number): void;
195
204
  /** Read one submitted line (the editor stays live during streaming). */
196
205
  readInput(): Promise<string>;
197
- /** Modal y/N confirmation (tool approval). */
206
+ /**
207
+ * Single-key modal prompt. Resolves with the chosen choice key, the
208
+ * `defaultKey` on Enter, or '' on Esc. The building block for confirm and the
209
+ * tool-approval prompt.
210
+ */
211
+ promptChoice(text: string, choices: {
212
+ key: string;
213
+ label: string;
214
+ }[], defaultKey?: string): Promise<string>;
215
+ /** Modal y/N confirmation. */
198
216
  confirm(text: string): Promise<boolean>;
217
+ /**
218
+ * Tool-approval prompt with an "always allow this tool (this session)" option,
219
+ * the enterprise affordance that stops re-prompting for a trusted tool.
220
+ * Returns 'once' (approve this call), 'always' (approve + remember), or 'deny'.
221
+ */
222
+ confirmApproval(text: string): Promise<"once" | "always" | "deny">;
199
223
  setHistory(h: string[]): void;
200
224
  private mouseBuf;
201
225
  private handleMouse;
202
226
  private onKey;
203
227
  private handleSigint;
204
228
  private flashHint;
229
+ /** Submit a turn: clear input, record history, resolve the pending read. */
230
+ private submitText;
231
+ /** Choices for the current wizard step, filtered by what the user has typed. */
232
+ private wizardFiltered;
233
+ /** Open the wizard for `command` (e.g. "/model"). Returns false if it has none. */
234
+ private startWizard;
235
+ /** Accept a value for the current step; advance to the next or submit. */
236
+ private wizardCommit;
237
+ /** Step back one level (or close the wizard when at the first level). */
238
+ private wizardBack;
239
+ private handleWizardKey;
205
240
  private paletteMatches;
206
241
  private cols;
207
242
  private rows;
@@ -1 +1 @@
1
- {"version":3,"file":"loom.d.ts","sourceRoot":"","sources":["../../src/cli/loom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loom.d.ts","sourceRoot":"","sources":["../../src/cli/loom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,EAA8C,KAAK,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAS7G,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBzD;AAED,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA8C/D;AAMD,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAED,yEAAyE;AACzE,qBAAa,MAAM;IAEL,OAAO,CAAC,GAAG;IADvB,OAAO,CAAC,IAAI,CAAgB;gBACR,GAAG,EAAE,OAAO;IAEhC,oEAAoE;IACpE,UAAU;IAEV,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAclE;AAMD,UAAU,QAAQ;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE1D,mFAAmF;AACnF,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,CAAC;IAF9B,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,OAAO,CAAC,CAAC,CAAK;gBACe,CAAC,GAAE,MAAU;IAE1C,MAAM,CAAC,CAAC,EAAE,MAAM;IAUhB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAiBjC,6EAA6E;IAC7E,MAAM,CACJ,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GAClE,MAAM,EAAE;CA6BZ;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYhE;AAMD;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC7D;AAGD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAuC;AAMjF,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,SAAS;IACpB,KAAK,wBAA+B;IACpC,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,MAAM,UAAS;IACf,kDAAkD;IAClD,QAAQ,sBAA6B;IAErC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;IAgBf,KAAK,CAAC,EAAE,EAAE,MAAM;IAKhB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IAU5B,MAAM;IAEN,aAAa,IAAI,MAAM,EAAE;IAIzB,wCAAwC;IACxC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE;IAWhE,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAK5C;AAMD,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAaD,qBAAa,MAAM;IACjB,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,SAAS,CAAS;IAE1B,SAAS,SAAS;IAClB,KAAK,SAAK;IACV,IAAI,UAAS;IACb,SAAS,SAAM;IACf,IAAI,YAAmB;IAEvB,gDAAgD;IAChD,WAAW,EAAE,MAAM,MAAM,CAAY;IAGrC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,KAAK,CAAgI;IAC7I,OAAO,CAAC,QAAQ,CAAK;IACrB,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IACxC,sFAAsF;IACtF,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IACxC,8EAA8E;IAC9E,SAAS,SAAM;IACf,8EAA8E;IAC9E,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IACvC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAoG;IAClH,8FAA8F;IAC9F,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,UAAU,GAAG,IAAI,CAAC,GAAG,IAAI,CAAQ;IACpF,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,aAAa,CAA6B;gBAEtC,IAAI,CAAC,EAAE,QAAQ;IAS3B,KAAK;IAiBL,OAAO;IAYP,oEAAoE;IAC9D,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAsBlD,OAAO,CAAC,IAAI;IAeZ,KAAK;IAEL,yDAAyD;IACzD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM;IAK9B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAK/B,4EAA4E;IAC5E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM;IAO5E,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,QAAQ,CAAK;IAErB,WAAW,CAAC,SAAS,EAAE,MAAM;IAS7B,6EAA6E;IAC7E,cAAc;IAMd,WAAW,CAAC,CAAC,EAAE,MAAM;IAQrB,SAAS;IAKT,aAAa;IAEb,4CAA4C;IAC5C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,SAAO;IAQ5B,wEAAwE;IACxE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,UAAU,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvG,8BAA8B;IAC9B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvC;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAQlE,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;IAOtB,OAAO,CAAC,QAAQ,CAAuB;IAEvC,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,KAAK;IAuIb,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,SAAS,CAAM;IAIvB,4EAA4E;IAC5E,OAAO,CAAC,UAAU;IAWlB,gFAAgF;IAChF,OAAO,CAAC,cAAc;IAKtB,mFAAmF;IACnF,OAAO,CAAC,WAAW;IAUnB,0EAA0E;IAC1E,OAAO,CAAC,YAAY;IAYpB,yEAAyE;IACzE,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,IAAI;IAEZ,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,KAAK;IAgBb,OAAO,CAAC,aAAa,CAAiD;IAEtE,OAAO,CAAC,aAAa;IAqCrB,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,SAAS;IAgCjB,4EAA4E;IAC5E,KAAK,IAAI,MAAM,EAAE;CAgMlB;AAED,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmCxE"}