@actionbookdev/cli 0.3.0 → 0.4.0-alpha.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.
- package/README.md +86 -80
- package/bin/actionbook-darwin-arm64 +0 -0
- package/bin/actionbook-darwin-x64 +0 -0
- package/bin/actionbook-linux-arm64 +0 -0
- package/bin/actionbook-linux-x64 +0 -0
- package/bin/actionbook-win32-arm64.exe +0 -0
- package/bin/actionbook-win32-x64.exe +0 -0
- package/bin/actionbook.js +75 -0
- package/package.json +9 -27
- package/scripts/postinstall.js +114 -0
- package/LICENSE +0 -201
- package/dist/commands/browser.d.ts +0 -3
- package/dist/commands/browser.d.ts.map +0 -1
- package/dist/commands/browser.js +0 -27
- package/dist/commands/browser.js.map +0 -1
- package/dist/commands/get.d.ts +0 -3
- package/dist/commands/get.d.ts.map +0 -1
- package/dist/commands/get.js +0 -20
- package/dist/commands/get.js.map +0 -1
- package/dist/commands/search.d.ts +0 -3
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -32
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/sources.d.ts +0 -3
- package/dist/commands/sources.d.ts.map +0 -1
- package/dist/commands/sources.js +0 -97
- package/dist/commands/sources.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -23
- package/dist/index.js.map +0 -1
- package/dist/output.d.ts +0 -15
- package/dist/output.d.ts.map +0 -1
- package/dist/output.js +0 -34
- package/dist/output.js.map +0 -1
- package/dist/utils/process.d.ts +0 -24
- package/dist/utils/process.d.ts.map +0 -1
- package/dist/utils/process.js +0 -207
- package/dist/utils/process.js.map +0 -1
package/dist/utils/process.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { fileURLToPath } from 'node:url';
|
|
3
|
-
import { dirname, join } from 'node:path';
|
|
4
|
-
import { existsSync, readdirSync } from 'node:fs';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
/**
|
|
7
|
-
* Spawn a command with arguments, inheriting stdio
|
|
8
|
-
* Returns the exit code
|
|
9
|
-
* If command is not found (ENOENT), shows installation instructions
|
|
10
|
-
* @param suppressInstallInstructions - If true, don't show installation instructions on ENOENT
|
|
11
|
-
*/
|
|
12
|
-
export async function spawnCommand(command, args, suppressInstallInstructions = false) {
|
|
13
|
-
return new Promise((resolve) => {
|
|
14
|
-
const child = spawn(command, args, {
|
|
15
|
-
stdio: 'inherit',
|
|
16
|
-
shell: false,
|
|
17
|
-
env: process.env,
|
|
18
|
-
});
|
|
19
|
-
child.on('close', (code, signal) => {
|
|
20
|
-
if (signal) {
|
|
21
|
-
// Process was killed by signal (e.g., SIGINT from Ctrl+C)
|
|
22
|
-
// Convert signal to exit code: 128 + signal number
|
|
23
|
-
resolve(128 + (signal === 'SIGINT' ? 2 : 15));
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
resolve(code ?? 1);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
child.on('error', (error) => {
|
|
30
|
-
// Command not found - show installation instructions
|
|
31
|
-
if (error.code === 'ENOENT') {
|
|
32
|
-
if (!suppressInstallInstructions) {
|
|
33
|
-
showAgentBrowserInstallation();
|
|
34
|
-
}
|
|
35
|
-
resolve(127); // Standard exit code for command not found
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
console.error(chalk.red(`Failed to execute ${command}: ${error.message}`));
|
|
39
|
-
resolve(1);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Spawn agent-browser command using npx from CLI package directory
|
|
46
|
-
* This ensures agent-browser is executed from the CLI's node_modules
|
|
47
|
-
* Replaces "agent-browser" with "actionbook browser" in output
|
|
48
|
-
*/
|
|
49
|
-
export async function spawnAgentBrowser(args) {
|
|
50
|
-
return new Promise((resolve) => {
|
|
51
|
-
// Get CLI package root directory (dist/utils/process.js -> ../..)
|
|
52
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
53
|
-
const cliPackageRoot = join(__dirname, '..', '..');
|
|
54
|
-
const child = spawn('npx', ['agent-browser', ...args], {
|
|
55
|
-
stdio: ['inherit', 'pipe', 'pipe'], // Inherit stdin, pipe stdout/stderr for transformation
|
|
56
|
-
shell: false,
|
|
57
|
-
env: process.env,
|
|
58
|
-
cwd: cliPackageRoot, // Execute in CLI package directory
|
|
59
|
-
});
|
|
60
|
-
// Transform and output stdout
|
|
61
|
-
if (child.stdout) {
|
|
62
|
-
child.stdout.on('data', (data) => {
|
|
63
|
-
const output = data.toString().replace(/agent-browser/g, 'actionbook browser');
|
|
64
|
-
process.stdout.write(output);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
// Transform and output stderr
|
|
68
|
-
if (child.stderr) {
|
|
69
|
-
child.stderr.on('data', (data) => {
|
|
70
|
-
const output = data.toString().replace(/agent-browser/g, 'actionbook browser');
|
|
71
|
-
process.stderr.write(output);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
child.on('close', (code, signal) => {
|
|
75
|
-
if (signal) {
|
|
76
|
-
resolve(128 + (signal === 'SIGINT' ? 2 : 15));
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
resolve(code ?? 1);
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
child.on('error', (error) => {
|
|
83
|
-
if (error.code === 'ENOENT') {
|
|
84
|
-
console.error(chalk.red('\nnpx command not found.'));
|
|
85
|
-
console.error(chalk.white('Please ensure npm 5.2+ is installed.\n'));
|
|
86
|
-
resolve(127);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
console.error(chalk.red(`Failed to execute agent-browser: ${error.message}`));
|
|
90
|
-
resolve(1);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Show installation instructions for agent-browser
|
|
97
|
-
*/
|
|
98
|
-
export function showAgentBrowserInstallation() {
|
|
99
|
-
console.error(chalk.red('\nagent-browser is not installed or not in PATH.\n'));
|
|
100
|
-
console.error(chalk.white('agent-browser is a fast browser automation CLI for AI agents.'));
|
|
101
|
-
console.error(chalk.white('To install it, run:\n'));
|
|
102
|
-
console.error(chalk.cyan(' npm install -g agent-browser\n'));
|
|
103
|
-
console.error(chalk.white('Learn more: ') + chalk.cyan('https://github.com/vercel-labs/agent-browser\n'));
|
|
104
|
-
console.error(chalk.white('After installation, verify with:\n'));
|
|
105
|
-
console.error(chalk.cyan(' agent-browser --help\n'));
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Find playwright-core CLI path from node_modules
|
|
109
|
-
* Supports both npm and pnpm node_modules structures
|
|
110
|
-
*/
|
|
111
|
-
function findPlaywrightCoreCli(baseDir) {
|
|
112
|
-
const dirsToCheck = [
|
|
113
|
-
baseDir, // Current package dir
|
|
114
|
-
join(baseDir, '..', '..'), // Workspace root (for pnpm workspace)
|
|
115
|
-
];
|
|
116
|
-
for (const dir of dirsToCheck) {
|
|
117
|
-
// Check pnpm structure - find any playwright-core@* version
|
|
118
|
-
const pnpmDir = join(dir, 'node_modules', '.pnpm');
|
|
119
|
-
if (existsSync(pnpmDir)) {
|
|
120
|
-
try {
|
|
121
|
-
const entries = readdirSync(pnpmDir);
|
|
122
|
-
for (const entry of entries) {
|
|
123
|
-
if (entry.startsWith('playwright-core@')) {
|
|
124
|
-
const cliPath = join(pnpmDir, entry, 'node_modules', 'playwright-core', 'cli.js');
|
|
125
|
-
if (existsSync(cliPath)) {
|
|
126
|
-
return cliPath;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
// Ignore read errors, try other methods
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// Check npm flat structure
|
|
136
|
-
const npmFlatPath = join(dir, 'node_modules', 'playwright-core', 'cli.js');
|
|
137
|
-
if (existsSync(npmFlatPath)) {
|
|
138
|
-
return npmFlatPath;
|
|
139
|
-
}
|
|
140
|
-
// Check npm nested under agent-browser
|
|
141
|
-
const npmNestedPath = join(dir, 'node_modules', 'agent-browser', 'node_modules', 'playwright-core', 'cli.js');
|
|
142
|
-
if (existsSync(npmNestedPath)) {
|
|
143
|
-
return npmNestedPath;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Install Chromium browser binaries for agent-browser
|
|
150
|
-
* Uses playwright-core CLI from package dependencies to ensure version compatibility
|
|
151
|
-
* @param installArgs - Additional arguments like ['--with-deps'] for Linux
|
|
152
|
-
*/
|
|
153
|
-
export async function installAgentBrowser(installArgs = []) {
|
|
154
|
-
console.log(chalk.cyan('Setting up browser automation...\n'));
|
|
155
|
-
console.log(chalk.yellow('Downloading Chromium browser binaries...\n'));
|
|
156
|
-
// Get CLI package root directory
|
|
157
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
158
|
-
const cliPackageRoot = join(__dirname, '..', '..');
|
|
159
|
-
// Find playwright-core CLI
|
|
160
|
-
const playwrightCliPath = findPlaywrightCoreCli(cliPackageRoot);
|
|
161
|
-
if (!playwrightCliPath) {
|
|
162
|
-
console.error(chalk.red('\nFailed to locate playwright-core CLI.'));
|
|
163
|
-
console.error(chalk.white('Please ensure agent-browser and its dependencies are properly installed.\n'));
|
|
164
|
-
return 1;
|
|
165
|
-
}
|
|
166
|
-
const installArgs2 = ['install', 'chromium'];
|
|
167
|
-
if (installArgs.includes('--with-deps')) {
|
|
168
|
-
installArgs2.push('--with-deps');
|
|
169
|
-
}
|
|
170
|
-
const exitCode = await new Promise((resolve) => {
|
|
171
|
-
const child = spawn('node', [playwrightCliPath, ...installArgs2], {
|
|
172
|
-
stdio: 'inherit',
|
|
173
|
-
shell: false,
|
|
174
|
-
env: process.env,
|
|
175
|
-
cwd: cliPackageRoot,
|
|
176
|
-
});
|
|
177
|
-
child.on('close', (code, signal) => {
|
|
178
|
-
if (signal) {
|
|
179
|
-
resolve(128 + (signal === 'SIGINT' ? 2 : 15));
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
resolve(code ?? 1);
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
child.on('error', (error) => {
|
|
186
|
-
if (error.code === 'ENOENT') {
|
|
187
|
-
console.error(chalk.red('\nnpx command not found.'));
|
|
188
|
-
console.error(chalk.white('Please ensure npm 5.2+ is installed.\n'));
|
|
189
|
-
resolve(127);
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
console.error(chalk.red(`Failed to install Chromium: ${error.message}`));
|
|
193
|
-
resolve(1);
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
if (exitCode === 0) {
|
|
198
|
-
console.log(chalk.green('\n✓ Browser automation setup complete!\n'));
|
|
199
|
-
console.log(chalk.white('You can now use: ') + chalk.cyan('actionbook browser <command>\n'));
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
console.error(chalk.red('\nBrowser setup encountered an error.'));
|
|
203
|
-
console.error(chalk.white('Please check the output above for details.\n'));
|
|
204
|
-
}
|
|
205
|
-
return exitCode;
|
|
206
|
-
}
|
|
207
|
-
//# sourceMappingURL=process.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,IAAc,EACd,2BAA2B,GAAG,KAAK;IAEnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,MAAM,EAAE,CAAC;gBACX,0DAA0D;gBAC1D,mDAAmD;gBACnD,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YACjD,qDAAqD;YACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBACjC,4BAA4B,EAAE,CAAA;gBAChC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,2CAA2C;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBAC1E,OAAO,CAAC,CAAC,CAAC,CAAA;YACZ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,kEAAkE;QAClE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACzD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAElD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE;YACrD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,uDAAuD;YAC3F,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,cAAc,EAAE,mCAAmC;SACzD,CAAC,CAAA;QAEF,8BAA8B;QAC9B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;gBAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,8BAA8B;QAC9B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;gBAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YACjD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAA;gBACpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAA;gBACpE,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBAC7E,OAAO,CAAC,CAAC,CAAC,CAAA;YACZ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAA;IAE9E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC,CAAA;IAC3F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAEnD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAA;IAE7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAA;IAEzG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAA;IAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA;AACvD,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,sBAAsB;QAC/B,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,sCAAsC;KAClE,CAAA;IAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,4DAA4D;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;QAClD,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;gBACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;wBACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAA;wBACjF,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4BACxB,OAAO,OAAO,CAAA;wBAChB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wCAAwC;YAC1C,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAA;QAC1E,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,uCAAuC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAA;QAC7G,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,OAAO,aAAa,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,cAAwB,EAAE;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAA;IAEvE,iCAAiC;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAElD,2BAA2B;IAC3B,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAA;IAC/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC,CAAA;QACxG,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAC5C,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,iBAAiB,EAAE,GAAG,YAAY,CAAC,EAAE;YAChE,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,cAAc;SACpB,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YACjD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAA;gBACpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAA;gBACpE,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACxE,OAAO,CAAC,CAAC,CAAC,CAAA;YACZ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAA;IAC9F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAA;QACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|