@apify/mcpc 0.3.1 β†’ 0.3.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +6 -16
  3. package/client-metadata.json +1 -0
  4. package/dist/bridge/index.js +8 -24
  5. package/dist/bridge/index.js.map +1 -1
  6. package/dist/cli/commands/auth.d.ts +1 -0
  7. package/dist/cli/commands/auth.d.ts.map +1 -1
  8. package/dist/cli/commands/auth.js +8 -1
  9. package/dist/cli/commands/auth.js.map +1 -1
  10. package/dist/cli/commands/sessions.d.ts +0 -1
  11. package/dist/cli/commands/sessions.d.ts.map +1 -1
  12. package/dist/cli/commands/sessions.js +1 -6
  13. package/dist/cli/commands/sessions.js.map +1 -1
  14. package/dist/cli/commands/tools.d.ts.map +1 -1
  15. package/dist/cli/commands/tools.js +1 -1
  16. package/dist/cli/commands/tools.js.map +1 -1
  17. package/dist/cli/index.js +17 -19
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/parser.d.ts.map +1 -1
  20. package/dist/cli/parser.js +0 -2
  21. package/dist/cli/parser.js.map +1 -1
  22. package/dist/lib/auth/oauth-flow.d.ts +1 -1
  23. package/dist/lib/auth/oauth-flow.d.ts.map +1 -1
  24. package/dist/lib/auth/oauth-flow.js +2 -2
  25. package/dist/lib/auth/oauth-flow.js.map +1 -1
  26. package/dist/lib/auth/oauth-utils.d.ts +1 -0
  27. package/dist/lib/auth/oauth-utils.d.ts.map +1 -1
  28. package/dist/lib/auth/oauth-utils.js +1 -0
  29. package/dist/lib/auth/oauth-utils.js.map +1 -1
  30. package/dist/lib/bridge-client.d.ts.map +1 -1
  31. package/dist/lib/bridge-client.js +0 -5
  32. package/dist/lib/bridge-client.js.map +1 -1
  33. package/dist/lib/bridge-manager.d.ts.map +1 -1
  34. package/dist/lib/bridge-manager.js +14 -6
  35. package/dist/lib/bridge-manager.js.map +1 -1
  36. package/dist/lib/session-client.d.ts +1 -3
  37. package/dist/lib/session-client.d.ts.map +1 -1
  38. package/dist/lib/session-client.js +1 -12
  39. package/dist/lib/session-client.js.map +1 -1
  40. package/dist/lib/types.d.ts +2 -7
  41. package/dist/lib/types.d.ts.map +1 -1
  42. package/docs/TODOs.md +1 -1
  43. package/package.json +1 -1
  44. package/dist/cli/shell-parser.d.ts +0 -5
  45. package/dist/cli/shell-parser.d.ts.map +0 -1
  46. package/dist/cli/shell-parser.js +0 -38
  47. package/dist/cli/shell-parser.js.map +0 -1
  48. package/dist/cli/shell.d.ts +0 -2
  49. package/dist/cli/shell.d.ts.map +0 -1
  50. package/dist/cli/shell.js +0 -341
  51. package/dist/cli/shell.js.map +0 -1
package/dist/cli/shell.js DELETED
@@ -1,341 +0,0 @@
1
- import * as readline from 'readline';
2
- import { readFile, writeFile, mkdir } from 'fs/promises';
3
- import { join } from 'path';
4
- import { fileExists, getMcpcHome } from '../lib/utils.js';
5
- import { formatError, logTarget, theme } from './output.js';
6
- import chalk from 'chalk';
7
- import * as tools from './commands/tools.js';
8
- import * as resources from './commands/resources.js';
9
- import * as prompts from './commands/prompts.js';
10
- import * as tasks from './commands/tasks.js';
11
- import * as logging from './commands/logging.js';
12
- import { ping } from './commands/utilities.js';
13
- import { createSessionClient } from '../lib/session-client.js';
14
- import { parseShellCommand } from './shell-parser.js';
15
- import { suggestCommand, KNOWN_SESSION_COMMANDS } from './parser.js';
16
- const HISTORY_MAX_COMMANDS = 1000;
17
- const HISTORY_FILE = 'shell-history';
18
- async function loadHistory() {
19
- const historyPath = join(getMcpcHome(), HISTORY_FILE);
20
- if (!(await fileExists(historyPath))) {
21
- return [];
22
- }
23
- try {
24
- const content = await readFile(historyPath, 'utf-8');
25
- return content.split('\n').filter((line) => line.trim().length > 0);
26
- }
27
- catch {
28
- return [];
29
- }
30
- }
31
- async function saveHistory(history) {
32
- const historyPath = join(getMcpcHome(), HISTORY_FILE);
33
- await mkdir(getMcpcHome(), { recursive: true, mode: 0o700 });
34
- const toSave = history.slice(-HISTORY_MAX_COMMANDS);
35
- try {
36
- await writeFile(historyPath, toSave.join('\n') + '\n', 'utf-8');
37
- }
38
- catch {
39
- }
40
- }
41
- function addToHistory(ctx, line) {
42
- const trimmed = line.trim();
43
- if (!trimmed || trimmed === ctx.history[ctx.history.length - 1]) {
44
- return;
45
- }
46
- ctx.history.push(trimmed);
47
- }
48
- function displayNotification(notification) {
49
- const timestamp = new Date().toLocaleTimeString();
50
- let message = '';
51
- switch (notification.method) {
52
- case 'tools/list_changed':
53
- message = theme.yellow(`[${timestamp}] Server tools list changed`);
54
- break;
55
- case 'resources/list_changed':
56
- message = theme.yellow(`[${timestamp}] Server resources list changed`);
57
- break;
58
- case 'prompts/list_changed':
59
- message = theme.yellow(`[${timestamp}] Server prompts list changed`);
60
- break;
61
- case 'resources/updated':
62
- message = theme.yellow(`[${timestamp}] Resource updated`);
63
- break;
64
- case 'progress':
65
- message = theme.cyan(`[${timestamp}] Progress: ${JSON.stringify(notification.params)}`);
66
- break;
67
- case 'logging/message':
68
- message = chalk.gray(`[${timestamp}] Server log: ${JSON.stringify(notification.params)}`);
69
- break;
70
- default:
71
- message = chalk.dim(`[${timestamp}] Notification: ${String(notification.method)}`);
72
- }
73
- console.log(message);
74
- }
75
- async function setupNotificationListener(ctx) {
76
- try {
77
- if (!ctx.target.startsWith('@')) {
78
- return;
79
- }
80
- ctx.notificationClient = await createSessionClient(ctx.target);
81
- ctx.notificationClient.on('notification', (notification) => {
82
- displayNotification(notification);
83
- });
84
- }
85
- catch {
86
- }
87
- }
88
- function showShellHelp() {
89
- console.log(chalk.bold('\nAvailable commands:'));
90
- console.log('');
91
- console.log(theme.cyan(' MCP commands:'));
92
- console.log(' tools-list');
93
- console.log(' tools-get <name>');
94
- console.log(' tools-call <name> [key:=value ...]');
95
- console.log(' resources-list');
96
- console.log(' resources-read <uri>');
97
- console.log(' resources-templates-list');
98
- console.log(' prompts-list');
99
- console.log(' prompts-get <name> [key:=value ...]');
100
- console.log(' logging-set-level <level>');
101
- console.log(' ping');
102
- console.log('');
103
- console.log(theme.cyan(' Shell commands:'));
104
- console.log(' help Show this help message');
105
- console.log(' exit, quit Exit the shell');
106
- console.log(' clear Clear the screen');
107
- console.log('');
108
- }
109
- async function executeCommand(ctx, line) {
110
- const { command, args } = parseShellCommand(line);
111
- if (!command) {
112
- return;
113
- }
114
- if (command === 'help') {
115
- showShellHelp();
116
- return;
117
- }
118
- if (command === 'exit' || command === 'quit') {
119
- ctx.running = false;
120
- return;
121
- }
122
- if (command === 'clear') {
123
- console.clear();
124
- return;
125
- }
126
- const options = {
127
- outputMode: 'human',
128
- hideTarget: true,
129
- };
130
- try {
131
- switch (command) {
132
- case 'ping':
133
- await ping(ctx.target, options);
134
- break;
135
- case 'tools':
136
- case 'tools-list':
137
- await tools.listTools(ctx.target, options);
138
- break;
139
- case 'tools-get': {
140
- if (args.length === 0) {
141
- console.log(theme.red('Error: tools-get requires a tool name'));
142
- console.log('Usage: tools-get <name>');
143
- return;
144
- }
145
- await tools.getTool(ctx.target, args[0], options);
146
- break;
147
- }
148
- case 'tools-call': {
149
- if (args.length === 0) {
150
- console.log(theme.red('Error: tools-call requires a tool name'));
151
- console.log('Usage: tools-call <name> [--task] [--detach] [key:=value ...]');
152
- return;
153
- }
154
- const taskFlag = args.includes('--task');
155
- const detachFlag = args.includes('--detach');
156
- const helpFlag = args.includes('--help') || args.includes('-h');
157
- const filteredArgs = args.filter((a) => a !== '--task' && a !== '--detach' && a !== '--help' && a !== '-h');
158
- const toolName = filteredArgs[0];
159
- if (helpFlag) {
160
- await tools.getTool(ctx.target, toolName, options);
161
- break;
162
- }
163
- const toolArgs = filteredArgs.slice(1);
164
- await tools.callTool(ctx.target, toolName, {
165
- ...options,
166
- ...(taskFlag ? { task: true } : {}),
167
- ...(detachFlag ? { detach: true } : {}),
168
- ...(toolArgs.length > 0 ? { args: toolArgs } : {}),
169
- });
170
- break;
171
- }
172
- case 'resources':
173
- case 'resources-list':
174
- await resources.listResources(ctx.target, options);
175
- break;
176
- case 'resources-read': {
177
- if (args.length === 0) {
178
- console.log(theme.red('Error: resources-read requires a URI'));
179
- console.log('Usage: resources-read <uri>');
180
- return;
181
- }
182
- await resources.getResource(ctx.target, args[0], options);
183
- break;
184
- }
185
- case 'resources-templates-list':
186
- await resources.listResourceTemplates(ctx.target, options);
187
- break;
188
- case 'prompts':
189
- case 'prompts-list':
190
- await prompts.listPrompts(ctx.target, options);
191
- break;
192
- case 'prompts-get': {
193
- if (args.length === 0) {
194
- console.log(theme.red('Error: prompts-get requires a prompt name'));
195
- console.log('Usage: prompts-get <name> [key:=value ...]');
196
- return;
197
- }
198
- const promptName = args[0];
199
- const promptArgs = args.slice(1);
200
- await prompts.getPrompt(ctx.target, promptName, {
201
- ...options,
202
- ...(promptArgs.length > 0 ? { args: promptArgs } : {}),
203
- });
204
- break;
205
- }
206
- case 'logging-set-level': {
207
- if (args.length === 0) {
208
- console.log(theme.red('Error: logging-set-level requires a level'));
209
- console.log('Usage: logging-set-level <level>');
210
- return;
211
- }
212
- await logging.setLogLevel(ctx.target, args[0], options);
213
- break;
214
- }
215
- case 'tasks-list':
216
- await tasks.listTasks(ctx.target, options);
217
- break;
218
- case 'tasks-get': {
219
- if (args.length === 0) {
220
- console.log(theme.red('Error: tasks-get requires a task ID'));
221
- console.log('Usage: tasks-get <taskId>');
222
- return;
223
- }
224
- await tasks.getTask(ctx.target, args[0], options);
225
- break;
226
- }
227
- case 'tasks-result': {
228
- if (args.length === 0) {
229
- console.log(theme.red('Error: tasks-result requires a task ID'));
230
- console.log('Usage: tasks-result <taskId>');
231
- return;
232
- }
233
- await tasks.getTaskResult(ctx.target, args[0], options);
234
- break;
235
- }
236
- case 'tasks-cancel': {
237
- if (args.length === 0) {
238
- console.log(theme.red('Error: tasks-cancel requires a task ID'));
239
- console.log('Usage: tasks-cancel <taskId>');
240
- return;
241
- }
242
- await tasks.cancelTask(ctx.target, args[0], options);
243
- break;
244
- }
245
- case 'shell': {
246
- const shellMessages = [
247
- "🐚 Shell-ception! You're already in a shell.",
248
- "πŸͺ† It's shells all the way down...",
249
- '🎭 Ha, nice try!',
250
- 'πŸ”„ Yo dawg, I heard you like shells...',
251
- 'πŸŒ€ Recursion limit reached. Just kidding.',
252
- '🐒 A shell inside a shell? How very turtles-all-the-way-down of you.',
253
- 'πŸŽͺ Welcome to shellΒ² β€” same great shell, same great location!',
254
- 'πŸͺž *shell stares back at you*',
255
- ];
256
- const message = shellMessages[Math.floor(Math.random() * shellMessages.length)];
257
- console.log(theme.yellow(message));
258
- break;
259
- }
260
- default: {
261
- console.log(theme.red(`Unknown command: ${command}`));
262
- const suggestion = suggestCommand(command, KNOWN_SESSION_COMMANDS);
263
- if (suggestion) {
264
- console.log(chalk.dim(`Did you mean: ${suggestion}`));
265
- }
266
- else {
267
- console.log(chalk.dim('Type "help" for available commands'));
268
- }
269
- break;
270
- }
271
- }
272
- }
273
- catch (error) {
274
- const errorMessage = error instanceof Error ? error.message : String(error);
275
- console.error(formatError(errorMessage));
276
- }
277
- }
278
- async function shellLoop(ctx) {
279
- const historyReversed = ctx.history.slice(-HISTORY_MAX_COMMANDS).reverse();
280
- const rl = readline.createInterface({
281
- input: process.stdin,
282
- output: process.stdout,
283
- history: historyReversed,
284
- historySize: HISTORY_MAX_COMMANDS,
285
- prompt: theme.cyan(`mcpc(${ctx.target})> `),
286
- terminal: true,
287
- });
288
- rl.on('line', (line) => {
289
- addToHistory(ctx, line);
290
- void executeCommand(ctx, line).then(() => {
291
- if (ctx.running) {
292
- rl.prompt();
293
- }
294
- else {
295
- rl.close();
296
- }
297
- });
298
- });
299
- rl.on('SIGINT', () => {
300
- console.log('');
301
- rl.prompt();
302
- });
303
- rl.on('close', () => {
304
- ctx.running = false;
305
- console.log(chalk.dim('Goodbye!'));
306
- });
307
- rl.prompt();
308
- await new Promise((resolve) => {
309
- rl.on('close', resolve);
310
- });
311
- }
312
- export async function startShell(target) {
313
- const ctx = {
314
- target,
315
- history: await loadHistory(),
316
- running: true,
317
- };
318
- await logTarget(target, { outputMode: 'human' });
319
- console.log(chalk.bold(`Welcome to mcpc shell`));
320
- console.log(chalk.dim('Type "help" for available commands, "exit" to quit\n'));
321
- await setupNotificationListener(ctx);
322
- const cleanup = async () => {
323
- await saveHistory(ctx.history);
324
- if (ctx.notificationClient) {
325
- await ctx.notificationClient.close();
326
- }
327
- };
328
- process.on('SIGINT', () => {
329
- ctx.running = false;
330
- });
331
- process.on('SIGTERM', () => {
332
- ctx.running = false;
333
- });
334
- try {
335
- await shellLoop(ctx);
336
- }
337
- finally {
338
- await cleanup();
339
- }
340
- }
341
- //# sourceMappingURL=shell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/cli/shell.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,YAAY,GAAG,eAAe,CAAC;AAerC,KAAK,UAAU,WAAW;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC;IAEtD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,WAAW,CAAC,OAAiB;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC;IAGtD,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAG7D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;AACH,CAAC;AAKD,SAAS,YAAY,CAAC,GAAiB,EAAE,IAAY;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO;IACT,CAAC;IACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAKD,SAAS,mBAAmB,CAAC,YAA8B;IACzD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAClD,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,oBAAoB;YACvB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS,6BAA6B,CAAC,CAAC;YACnE,MAAM;QACR,KAAK,wBAAwB;YAC3B,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS,iCAAiC,CAAC,CAAC;YACvE,MAAM;QACR,KAAK,sBAAsB;YACzB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS,+BAA+B,CAAC,CAAC;YACrE,MAAM;QACR,KAAK,mBAAmB;YACtB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS,oBAAoB,CAAC,CAAC;YAC1D,MAAM;QACR,KAAK,UAAU;YACb,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,eAAe,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxF,MAAM;QACR,KAAK,iBAAiB;YACpB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,iBAAiB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1F,MAAM;QACR;YACE,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,mBAAmB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAMD,KAAK,UAAU,yBAAyB,CAAC,GAAiB;IACxD,IAAI,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAGD,GAAG,CAAC,kBAAkB,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAG/D,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,YAA8B,EAAE,EAAE;YAC3E,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;IAGT,CAAC;AACH,CAAC;AAKD,SAAS,aAAa;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAKD,KAAK,UAAU,cAAc,CAAC,GAAiB,EAAE,IAAY;IAC3D,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAGD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,aAAa,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC7C,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAGD,MAAM,OAAO,GAAmB;QAC9B,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,IAAI;KACjB,CAAC;IAEF,IAAI,CAAC;QAEH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAChC,MAAM;YAER,KAAK,OAAO,CAAC;YACb,KAAK,YAAY;gBACf,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC3C,MAAM;YAER,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;oBAChE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,OAAO,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;oBACjE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;oBAC7E,OAAO;gBACT,CAAC;gBAGD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAC1E,CAAC;gBAGF,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAW,CAAC;gBAG3C,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACnD,MAAM;gBACR,CAAC;gBAED,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEvC,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE;oBACzC,GAAG,OAAO;oBACV,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnD,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC;YACjB,KAAK,gBAAgB;gBACnB,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM;YAER,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;oBAC/D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;oBAC3C,OAAO;gBACT,CAAC;gBACD,MAAM,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,OAAO,CAAC,CAAC;gBACpE,MAAM;YACR,CAAC;YAED,KAAK,0BAA0B;gBAC7B,MAAM,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC3D,MAAM;YAER,KAAK,SAAS,CAAC;YACf,KAAK,cAAc;gBACjB,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/C,MAAM;YAER,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;oBACpE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;oBAC1D,OAAO;gBACT,CAAC;gBAGD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEjC,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE;oBAC9C,GAAG,OAAO;oBACV,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;oBACpE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;oBAChD,OAAO;gBACT,CAAC;gBACD,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,OAAO,CAAC,CAAC;gBAClE,MAAM;YACR,CAAC;YAED,KAAK,YAAY;gBACf,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC3C,MAAM;YAER,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;oBAC9D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;oBACzC,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,OAAO,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;oBACjE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,OAAO,CAAC,CAAC;gBAClE,MAAM;YACR,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;oBACjE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,OAAO,CAAC,CAAC;gBAC/D,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBAEb,MAAM,aAAa,GAAG;oBACpB,8CAA8C;oBAC9C,oCAAoC;oBACpC,kBAAkB;oBAClB,wCAAwC;oBACxC,2CAA2C;oBAC3C,sEAAsE;oBACtE,+DAA+D;oBAC/D,+BAA+B;iBAChC,CAAC;gBACF,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;gBACnE,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,SAAS,CAAC,GAAiB;IAExC,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;IAE3E,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,oBAAoB;QACjC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,KAAK,CAAC;QAC3C,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAGH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QAC7B,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxB,KAAK,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACvC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,EAAE,CAAC,MAAM,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAGH,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,EAAE,CAAC,MAAM,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAGH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAGH,EAAE,CAAC,MAAM,EAAE,CAAC;IAGZ,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc;IAC7C,MAAM,GAAG,GAAiB;QACxB,MAAM;QACN,OAAO,EAAE,MAAM,WAAW,EAAE;QAC5B,OAAO,EAAE,IAAI;KACd,CAAC;IAGF,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAG/E,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAGrC,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC3B,MAAM,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;AACH,CAAC"}