@jetstart/cli 1.1.4 → 1.4.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 (68) hide show
  1. package/dist/cli.js +18 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/android-emulator.d.ts +8 -0
  4. package/dist/commands/android-emulator.d.ts.map +1 -0
  5. package/dist/commands/android-emulator.js +280 -0
  6. package/dist/commands/android-emulator.js.map +1 -0
  7. package/dist/commands/create.d.ts +1 -6
  8. package/dist/commands/create.d.ts.map +1 -1
  9. package/dist/commands/create.js +119 -0
  10. package/dist/commands/create.js.map +1 -1
  11. package/dist/commands/dev.d.ts +1 -7
  12. package/dist/commands/dev.d.ts.map +1 -1
  13. package/dist/commands/dev.js +69 -10
  14. package/dist/commands/dev.js.map +1 -1
  15. package/dist/commands/index.d.ts +2 -0
  16. package/dist/commands/index.d.ts.map +1 -1
  17. package/dist/commands/index.js +5 -1
  18. package/dist/commands/index.js.map +1 -1
  19. package/dist/commands/install-audit.d.ts +9 -0
  20. package/dist/commands/install-audit.d.ts.map +1 -0
  21. package/dist/commands/install-audit.js +185 -0
  22. package/dist/commands/install-audit.js.map +1 -0
  23. package/dist/types/index.d.ts +22 -0
  24. package/dist/types/index.d.ts.map +1 -1
  25. package/dist/types/index.js +8 -0
  26. package/dist/types/index.js.map +1 -1
  27. package/dist/utils/android-sdk.d.ts +81 -0
  28. package/dist/utils/android-sdk.d.ts.map +1 -0
  29. package/dist/utils/android-sdk.js +432 -0
  30. package/dist/utils/android-sdk.js.map +1 -0
  31. package/dist/utils/downloader.d.ts +35 -0
  32. package/dist/utils/downloader.d.ts.map +1 -0
  33. package/dist/utils/downloader.js +214 -0
  34. package/dist/utils/downloader.js.map +1 -0
  35. package/dist/utils/emulator-deployer.d.ts +29 -0
  36. package/dist/utils/emulator-deployer.d.ts.map +1 -0
  37. package/dist/utils/emulator-deployer.js +224 -0
  38. package/dist/utils/emulator-deployer.js.map +1 -0
  39. package/dist/utils/emulator.d.ts +101 -0
  40. package/dist/utils/emulator.d.ts.map +1 -0
  41. package/dist/utils/emulator.js +410 -0
  42. package/dist/utils/emulator.js.map +1 -0
  43. package/dist/utils/java.d.ts +25 -0
  44. package/dist/utils/java.d.ts.map +1 -0
  45. package/dist/utils/java.js +363 -0
  46. package/dist/utils/java.js.map +1 -0
  47. package/dist/utils/system-tools.d.ts +93 -0
  48. package/dist/utils/system-tools.d.ts.map +1 -0
  49. package/dist/utils/system-tools.js +599 -0
  50. package/dist/utils/system-tools.js.map +1 -0
  51. package/dist/utils/template.d.ts.map +1 -1
  52. package/dist/utils/template.js +777 -748
  53. package/dist/utils/template.js.map +1 -1
  54. package/package.json +7 -3
  55. package/src/cli.ts +20 -2
  56. package/src/commands/android-emulator.ts +304 -0
  57. package/src/commands/create.ts +128 -5
  58. package/src/commands/dev.ts +71 -18
  59. package/src/commands/index.ts +3 -1
  60. package/src/commands/install-audit.ts +227 -0
  61. package/src/types/index.ts +30 -0
  62. package/src/utils/android-sdk.ts +478 -0
  63. package/src/utils/downloader.ts +201 -0
  64. package/src/utils/emulator-deployer.ts +210 -0
  65. package/src/utils/emulator.ts +463 -0
  66. package/src/utils/java.ts +369 -0
  67. package/src/utils/system-tools.ts +648 -0
  68. package/src/utils/template.ts +875 -867
@@ -0,0 +1,363 @@
1
+ "use strict";
2
+ /**
3
+ * Java/JDK detection and installation utilities
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.detectJava = detectJava;
40
+ exports.isJavaCompatible = isJavaCompatible;
41
+ exports.installJava = installJava;
42
+ exports.verifyJavaInstallation = verifyJavaInstallation;
43
+ const child_process_1 = require("child_process");
44
+ const util_1 = require("util");
45
+ const fs = __importStar(require("fs-extra"));
46
+ const path = __importStar(require("path"));
47
+ const os = __importStar(require("os"));
48
+ const downloader_1 = require("./downloader");
49
+ const spinner_1 = require("./spinner");
50
+ const logger_1 = require("./logger");
51
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
52
+ /**
53
+ * Parse Java version from command output
54
+ */
55
+ function parseJavaVersion(output) {
56
+ // Example outputs:
57
+ // openjdk version "17.0.9" 2023-10-17
58
+ // java version "1.8.0_291"
59
+ // openjdk 11.0.12 2021-07-20
60
+ const versionMatch = output.match(/version\s+"?(\d+)\.(\d+)\.(\d+)/i) ||
61
+ output.match(/openjdk\s+(\d+)\.(\d+)\.(\d+)/i);
62
+ if (!versionMatch) {
63
+ return null;
64
+ }
65
+ // Handle old Java versioning (1.8 = Java 8)
66
+ let major = versionMatch[1];
67
+ if (major === '1') {
68
+ major = versionMatch[2]; // Use 8 from 1.8
69
+ }
70
+ const version = `${major}.${versionMatch[2]}.${versionMatch[3]}`;
71
+ // Detect vendor
72
+ let vendor = 'Unknown';
73
+ if (output.includes('OpenJDK') || output.includes('openjdk')) {
74
+ vendor = 'OpenJDK';
75
+ }
76
+ else if (output.includes('Oracle')) {
77
+ vendor = 'Oracle';
78
+ }
79
+ else if (output.includes('Eclipse Adoptium') || output.includes('Temurin')) {
80
+ vendor = 'Eclipse Adoptium';
81
+ }
82
+ return { version, vendor };
83
+ }
84
+ /**
85
+ * Detect Java/JDK installation
86
+ */
87
+ async function detectJava() {
88
+ try {
89
+ const { stdout } = await execAsync('java -version 2>&1');
90
+ const parsed = parseJavaVersion(stdout);
91
+ if (!parsed) {
92
+ return null;
93
+ }
94
+ const javaPath = process.env.JAVA_HOME || '';
95
+ return {
96
+ version: parsed.version,
97
+ path: javaPath,
98
+ vendor: parsed.vendor,
99
+ };
100
+ }
101
+ catch (error) {
102
+ return null;
103
+ }
104
+ }
105
+ /**
106
+ * Check if Java version is compatible (>= 17)
107
+ */
108
+ async function isJavaCompatible(version) {
109
+ const major = parseInt(version.split('.')[0], 10);
110
+ return major >= 17;
111
+ }
112
+ /**
113
+ * Download URLs for Eclipse Adoptium Temurin JDK 17
114
+ */
115
+ const JDK_DOWNLOAD_URLS = {
116
+ win32: {
117
+ x64: 'https://api.adoptium.net/v3/binary/latest/17/ga/windows/x64/jdk/hotspot/normal/eclipse',
118
+ },
119
+ darwin: {
120
+ x64: 'https://api.adoptium.net/v3/binary/latest/17/ga/mac/x64/jdk/hotspot/normal/eclipse',
121
+ arm64: 'https://api.adoptium.net/v3/binary/latest/17/ga/mac/aarch64/jdk/hotspot/normal/eclipse',
122
+ },
123
+ linux: {
124
+ x64: 'https://api.adoptium.net/v3/binary/latest/17/ga/linux/x64/jdk/hotspot/normal/eclipse',
125
+ arm64: 'https://api.adoptium.net/v3/binary/latest/17/ga/linux/aarch64/jdk/hotspot/normal/eclipse',
126
+ },
127
+ };
128
+ /**
129
+ * Get JDK download URL for current platform
130
+ */
131
+ function getJDKDownloadURL() {
132
+ const platform = os.platform();
133
+ const arch = os.arch();
134
+ if (platform === 'win32') {
135
+ return JDK_DOWNLOAD_URLS.win32.x64;
136
+ }
137
+ if (platform === 'darwin') {
138
+ return arch === 'arm64' ? JDK_DOWNLOAD_URLS.darwin.arm64 : JDK_DOWNLOAD_URLS.darwin.x64;
139
+ }
140
+ if (platform === 'linux') {
141
+ return arch === 'arm64' ? JDK_DOWNLOAD_URLS.linux.arm64 : JDK_DOWNLOAD_URLS.linux.x64;
142
+ }
143
+ return null;
144
+ }
145
+ /**
146
+ * Get default JDK installation path
147
+ */
148
+ function getDefaultJDKPath() {
149
+ const homeDir = os.homedir();
150
+ const platform = os.platform();
151
+ if (platform === 'win32') {
152
+ return path.join(homeDir, 'AppData', 'Local', 'Programs', 'Eclipse Adoptium');
153
+ }
154
+ if (platform === 'darwin') {
155
+ return '/Library/Java/JavaVirtualMachines';
156
+ }
157
+ // Linux
158
+ return path.join(homeDir, '.jdks');
159
+ }
160
+ /**
161
+ * Set JAVA_HOME environment variable (Windows only, via registry)
162
+ */
163
+ async function setJavaHomeWindows(javaPath) {
164
+ try {
165
+ const command = `setx JAVA_HOME "${javaPath}" /M`;
166
+ await execAsync(command);
167
+ (0, logger_1.info)('JAVA_HOME environment variable set');
168
+ }
169
+ catch (error) {
170
+ (0, logger_1.warning)('Failed to set JAVA_HOME. You may need to set it manually.');
171
+ }
172
+ }
173
+ /**
174
+ * Install Java/JDK
175
+ */
176
+ async function installJava() {
177
+ const platform = os.platform();
178
+ (0, logger_1.info)('Installing Java/JDK 17...');
179
+ console.log();
180
+ // Check if already installed
181
+ const existing = await detectJava();
182
+ if (existing && await isJavaCompatible(existing.version)) {
183
+ (0, logger_1.success)(`Java ${existing.version} is already installed`);
184
+ return;
185
+ }
186
+ if (platform === 'win32') {
187
+ await installJavaWindows();
188
+ }
189
+ else if (platform === 'darwin') {
190
+ await installJavaMacOS();
191
+ }
192
+ else if (platform === 'linux') {
193
+ await installJavaLinux();
194
+ }
195
+ else {
196
+ throw new Error(`Unsupported platform: ${platform}`);
197
+ }
198
+ (0, logger_1.success)('Java/JDK 17 installed successfully');
199
+ }
200
+ /**
201
+ * Install Java on Windows
202
+ */
203
+ async function installJavaWindows() {
204
+ const url = getJDKDownloadURL();
205
+ if (!url) {
206
+ throw new Error('Could not determine JDK download URL');
207
+ }
208
+ (0, logger_1.info)('Downloading Eclipse Adoptium Temurin JDK 17...');
209
+ (0, logger_1.info)('Note: On Windows, you may need to install manually from:');
210
+ (0, logger_1.info)('https://adoptium.net/temurin/releases/?version=17');
211
+ console.log();
212
+ const tempDir = os.tmpdir();
213
+ const installerPath = path.join(tempDir, 'temurin-17-installer.msi');
214
+ // Download installer
215
+ await (0, downloader_1.downloadWithRetry)({
216
+ url,
217
+ destination: installerPath,
218
+ progressLabel: 'Downloading JDK installer',
219
+ });
220
+ // Run installer
221
+ (0, logger_1.info)('Please complete the Java installation wizard...');
222
+ try {
223
+ await execAsync(`msiexec /i "${installerPath}" /passive`);
224
+ }
225
+ catch (error) {
226
+ (0, logger_1.warning)('Automated installation failed. Please install manually.');
227
+ (0, logger_1.info)(`Installer saved to: ${installerPath}`);
228
+ throw error;
229
+ }
230
+ // Clean up
231
+ await fs.remove(installerPath);
232
+ }
233
+ /**
234
+ * Install Java on macOS
235
+ */
236
+ async function installJavaMacOS() {
237
+ // Check if Homebrew is available
238
+ try {
239
+ await execAsync('which brew');
240
+ (0, logger_1.info)('Installing Java via Homebrew...');
241
+ const spinner = (0, spinner_1.startSpinner)('Installing openjdk@17...');
242
+ try {
243
+ await execAsync('brew install openjdk@17');
244
+ (0, spinner_1.stopSpinner)(spinner, true, 'Java installed via Homebrew');
245
+ // Link Java
246
+ (0, logger_1.info)('Linking Java...');
247
+ await execAsync('sudo ln -sfn $(brew --prefix)/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk');
248
+ (0, logger_1.info)('Add to your shell profile:');
249
+ (0, logger_1.info)('export JAVA_HOME=$(/usr/libexec/java_home -v 17)');
250
+ }
251
+ catch (error) {
252
+ (0, spinner_1.stopSpinner)(spinner, false, 'Failed to install via Homebrew');
253
+ throw error;
254
+ }
255
+ }
256
+ catch {
257
+ // Homebrew not available, download manually
258
+ (0, logger_1.info)('Homebrew not found. Downloading JDK manually...');
259
+ (0, logger_1.info)('Alternatively, install with: brew install openjdk@17');
260
+ console.log();
261
+ const url = getJDKDownloadURL();
262
+ if (!url) {
263
+ throw new Error('Could not determine JDK download URL');
264
+ }
265
+ const tempDir = os.tmpdir();
266
+ const pkgPath = path.join(tempDir, 'temurin-17.pkg');
267
+ await (0, downloader_1.downloadWithRetry)({
268
+ url,
269
+ destination: pkgPath,
270
+ progressLabel: 'Downloading JDK package',
271
+ });
272
+ (0, logger_1.info)('Please install the downloaded package:');
273
+ (0, logger_1.info)(`open "${pkgPath}"`);
274
+ // Try to open installer
275
+ try {
276
+ await execAsync(`open "${pkgPath}"`);
277
+ }
278
+ catch {
279
+ (0, logger_1.warning)('Could not open installer automatically');
280
+ }
281
+ }
282
+ }
283
+ /**
284
+ * Install Java on Linux
285
+ */
286
+ async function installJavaLinux() {
287
+ // Detect package manager
288
+ let packageManager = null;
289
+ try {
290
+ await execAsync('which apt');
291
+ packageManager = 'apt';
292
+ }
293
+ catch {
294
+ try {
295
+ await execAsync('which dnf');
296
+ packageManager = 'dnf';
297
+ }
298
+ catch {
299
+ try {
300
+ await execAsync('which yum');
301
+ packageManager = 'yum';
302
+ }
303
+ catch {
304
+ try {
305
+ await execAsync('which pacman');
306
+ packageManager = 'pacman';
307
+ }
308
+ catch {
309
+ // No package manager found
310
+ }
311
+ }
312
+ }
313
+ }
314
+ if (!packageManager) {
315
+ (0, logger_1.info)('Could not detect package manager. Please install Java 17+ manually:');
316
+ (0, logger_1.info)('https://adoptium.net/temurin/releases/?version=17');
317
+ return;
318
+ }
319
+ (0, logger_1.info)(`Installing Java via ${packageManager}...`);
320
+ const spinner = (0, spinner_1.startSpinner)('Installing openjdk-17-jdk...');
321
+ try {
322
+ switch (packageManager) {
323
+ case 'apt':
324
+ await execAsync('sudo apt update && sudo apt install -y openjdk-17-jdk');
325
+ break;
326
+ case 'dnf':
327
+ await execAsync('sudo dnf install -y java-17-openjdk-devel');
328
+ break;
329
+ case 'yum':
330
+ await execAsync('sudo yum install -y java-17-openjdk-devel');
331
+ break;
332
+ case 'pacman':
333
+ await execAsync('sudo pacman -S --noconfirm jdk17-openjdk');
334
+ break;
335
+ }
336
+ (0, spinner_1.stopSpinner)(spinner, true, 'Java installed successfully');
337
+ // Try to set JAVA_HOME
338
+ (0, logger_1.info)('Add to your shell profile (~/.bashrc or ~/.zshrc):');
339
+ (0, logger_1.info)('export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64');
340
+ (0, logger_1.info)('export PATH=$JAVA_HOME/bin:$PATH');
341
+ }
342
+ catch (error) {
343
+ (0, spinner_1.stopSpinner)(spinner, false, 'Installation failed');
344
+ (0, logger_1.warning)('You may need to run the install command manually with sudo');
345
+ throw error;
346
+ }
347
+ }
348
+ /**
349
+ * Verify Java installation
350
+ */
351
+ async function verifyJavaInstallation() {
352
+ const java = await detectJava();
353
+ if (!java) {
354
+ return false;
355
+ }
356
+ const compatible = await isJavaCompatible(java.version);
357
+ if (!compatible) {
358
+ (0, logger_1.warning)(`Java ${java.version} is installed but version 17+ is required`);
359
+ return false;
360
+ }
361
+ return true;
362
+ }
363
+ //# sourceMappingURL=java.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java.js","sourceRoot":"","sources":["../../src/utils/java.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * System tool detection utilities
3
+ */
4
+ export interface ToolInfo {
5
+ name: string;
6
+ installed: boolean;
7
+ version?: string;
8
+ path?: string;
9
+ status: 'ok' | 'warning' | 'error';
10
+ message?: string;
11
+ }
12
+ /**
13
+ * Version requirements for different tools
14
+ */
15
+ export declare const VERSION_REQUIREMENTS: {
16
+ node: {
17
+ min: string;
18
+ recommended: string;
19
+ };
20
+ npm: {
21
+ min: string;
22
+ recommended: string;
23
+ };
24
+ java: {
25
+ min: string;
26
+ recommended: string;
27
+ };
28
+ gradle: {
29
+ min: string;
30
+ recommended: string;
31
+ };
32
+ buildTools: {
33
+ min: string;
34
+ recommended: string;
35
+ };
36
+ };
37
+ /**
38
+ * Detect Node.js installation
39
+ */
40
+ export declare function detectNode(): Promise<ToolInfo>;
41
+ /**
42
+ * Detect npm installation
43
+ */
44
+ export declare function detectNpm(): Promise<ToolInfo>;
45
+ /**
46
+ * Detect Java/JDK installation
47
+ */
48
+ export declare function detectJava(): Promise<ToolInfo>;
49
+ /**
50
+ * Detect Gradle installation
51
+ */
52
+ export declare function detectGradle(): Promise<ToolInfo>;
53
+ /**
54
+ * Get default Android SDK path based on platform
55
+ */
56
+ export declare function getDefaultSDKPath(): string;
57
+ /**
58
+ * Find Android SDK location
59
+ */
60
+ export declare function findAndroidSDK(): Promise<string | null>;
61
+ /**
62
+ * Detect Android SDK installation
63
+ */
64
+ export declare function detectAndroidSDK(): Promise<ToolInfo>;
65
+ /**
66
+ * Detect Android cmdline-tools
67
+ */
68
+ export declare function detectAndroidCmdlineTools(): Promise<ToolInfo>;
69
+ /**
70
+ * Detect Android build-tools
71
+ */
72
+ export declare function detectAndroidBuildTools(): Promise<ToolInfo>;
73
+ /**
74
+ * Detect Android platform-tools (adb, fastboot)
75
+ */
76
+ export declare function detectAndroidPlatformTools(): Promise<ToolInfo>;
77
+ /**
78
+ * Detect Android emulator
79
+ */
80
+ export declare function detectAndroidEmulator(): Promise<ToolInfo>;
81
+ /**
82
+ * Detect specific Android platform API level
83
+ */
84
+ export declare function detectAndroidPlatform(apiLevel: number): Promise<ToolInfo>;
85
+ /**
86
+ * Check JAVA_HOME environment variable
87
+ */
88
+ export declare function checkJavaHome(): Promise<ToolInfo>;
89
+ /**
90
+ * Check ANDROID_HOME environment variable
91
+ */
92
+ export declare function checkAndroidHome(): Promise<ToolInfo>;
93
+ //# sourceMappingURL=system-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-tools.d.ts","sourceRoot":"","sources":["../../src/utils/system-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;CAMhC,CAAC;AA6BF;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,CAwBpD;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,CAwBnD;AAwBD;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,CAiCpD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,CAkCtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAY1C;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkD7D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAkC1D;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAiDnE;AAED;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAwDjE;AAED;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAiDpE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAiD/D;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsB/E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,CA8BvD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,CA8B1D"}