vibe-guard 1.1.4 → 1.2.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.
- package/README.md +163 -283
- package/dist/bin/vibe-guard.js +240 -22
- package/dist/bin/vibe-guard.js.map +1 -1
- package/dist/config.d.ts +0 -18
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -26
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -8
- package/dist/index.js.map +1 -1
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +41 -19
- package/dist/reporter.js.map +1 -1
- package/dist/rules/ai-agent-access-control.d.ts +27 -2
- package/dist/rules/ai-agent-access-control.d.ts.map +1 -1
- package/dist/rules/ai-agent-access-control.js +393 -19
- package/dist/rules/ai-agent-access-control.js.map +1 -1
- package/dist/rules/ai-data-leakage-prevention.d.ts +25 -2
- package/dist/rules/ai-data-leakage-prevention.d.ts.map +1 -1
- package/dist/rules/ai-data-leakage-prevention.js +409 -21
- package/dist/rules/ai-data-leakage-prevention.js.map +1 -1
- package/dist/rules/ai-generated-code-validation.d.ts +28 -7
- package/dist/rules/ai-generated-code-validation.d.ts.map +1 -1
- package/dist/rules/ai-generated-code-validation.js +367 -96
- package/dist/rules/ai-generated-code-validation.js.map +1 -1
- package/dist/rules/broken-access-control.d.ts +40 -5
- package/dist/rules/broken-access-control.d.ts.map +1 -1
- package/dist/rules/broken-access-control.js +595 -144
- package/dist/rules/broken-access-control.js.map +1 -1
- package/dist/rules/container-registry-security.d.ts +21 -0
- package/dist/rules/container-registry-security.d.ts.map +1 -0
- package/dist/rules/container-registry-security.js +271 -0
- package/dist/rules/container-registry-security.js.map +1 -0
- package/dist/rules/csrf-protection.d.ts +25 -4
- package/dist/rules/csrf-protection.d.ts.map +1 -1
- package/dist/rules/csrf-protection.js +328 -81
- package/dist/rules/csrf-protection.js.map +1 -1
- package/dist/rules/directory-traversal.d.ts +33 -5
- package/dist/rules/directory-traversal.d.ts.map +1 -1
- package/dist/rules/directory-traversal.js +470 -171
- package/dist/rules/directory-traversal.js.map +1 -1
- package/dist/rules/dockerfile-security.d.ts +20 -0
- package/dist/rules/dockerfile-security.d.ts.map +1 -0
- package/dist/rules/dockerfile-security.js +280 -0
- package/dist/rules/dockerfile-security.js.map +1 -0
- package/dist/rules/exposed-secrets.d.ts +25 -4
- package/dist/rules/exposed-secrets.d.ts.map +1 -1
- package/dist/rules/exposed-secrets.js +355 -95
- package/dist/rules/exposed-secrets.js.map +1 -1
- package/dist/rules/hardcoded-sensitive-data.d.ts +32 -2
- package/dist/rules/hardcoded-sensitive-data.d.ts.map +1 -1
- package/dist/rules/hardcoded-sensitive-data.js +426 -29
- package/dist/rules/hardcoded-sensitive-data.js.map +1 -1
- package/dist/rules/index.d.ts +9 -1
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +25 -1
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/insecure-configuration.d.ts +16 -5
- package/dist/rules/insecure-configuration.d.ts.map +1 -1
- package/dist/rules/insecure-configuration.js +457 -64
- package/dist/rules/insecure-configuration.js.map +1 -1
- package/dist/rules/insecure-dependencies.d.ts +46 -1
- package/dist/rules/insecure-dependencies.d.ts.map +1 -1
- package/dist/rules/insecure-dependencies.js +678 -51
- package/dist/rules/insecure-dependencies.js.map +1 -1
- package/dist/rules/insecure-deserialization.d.ts +29 -4
- package/dist/rules/insecure-deserialization.d.ts.map +1 -1
- package/dist/rules/insecure-deserialization.js +531 -101
- package/dist/rules/insecure-deserialization.js.map +1 -1
- package/dist/rules/insecure-error-handling.d.ts +35 -4
- package/dist/rules/insecure-error-handling.d.ts.map +1 -1
- package/dist/rules/insecure-error-handling.js +590 -87
- package/dist/rules/insecure-error-handling.js.map +1 -1
- package/dist/rules/insecure-file-upload.d.ts +37 -5
- package/dist/rules/insecure-file-upload.d.ts.map +1 -1
- package/dist/rules/insecure-file-upload.js +690 -138
- package/dist/rules/insecure-file-upload.js.map +1 -1
- package/dist/rules/insecure-http.d.ts +31 -2
- package/dist/rules/insecure-http.d.ts.map +1 -1
- package/dist/rules/insecure-http.js +547 -61
- package/dist/rules/insecure-http.js.map +1 -1
- package/dist/rules/insecure-logging.d.ts +6 -1
- package/dist/rules/insecure-logging.d.ts.map +1 -1
- package/dist/rules/insecure-logging.js +430 -109
- package/dist/rules/insecure-logging.js.map +1 -1
- package/dist/rules/insecure-random-generation.d.ts +4 -1
- package/dist/rules/insecure-random-generation.d.ts.map +1 -1
- package/dist/rules/insecure-random-generation.js +239 -99
- package/dist/rules/insecure-random-generation.js.map +1 -1
- package/dist/rules/insecure-session-management.d.ts +4 -0
- package/dist/rules/insecure-session-management.d.ts.map +1 -1
- package/dist/rules/insecure-session-management.js +359 -54
- package/dist/rules/insecure-session-management.js.map +1 -1
- package/dist/rules/kubernetes-security.d.ts +17 -0
- package/dist/rules/kubernetes-security.d.ts.map +1 -0
- package/dist/rules/kubernetes-security.js +314 -0
- package/dist/rules/kubernetes-security.js.map +1 -0
- package/dist/rules/mcp-server-security.d.ts +32 -3
- package/dist/rules/mcp-server-security.d.ts.map +1 -1
- package/dist/rules/mcp-server-security.js +511 -39
- package/dist/rules/mcp-server-security.js.map +1 -1
- package/dist/rules/missing-authentication.d.ts +4 -0
- package/dist/rules/missing-authentication.d.ts.map +1 -1
- package/dist/rules/missing-authentication.js +263 -62
- package/dist/rules/missing-authentication.js.map +1 -1
- package/dist/rules/missing-security-headers.d.ts +32 -3
- package/dist/rules/missing-security-headers.d.ts.map +1 -1
- package/dist/rules/missing-security-headers.js +548 -95
- package/dist/rules/missing-security-headers.js.map +1 -1
- package/dist/rules/open-cors.d.ts +3 -0
- package/dist/rules/open-cors.d.ts.map +1 -1
- package/dist/rules/open-cors.js +202 -57
- package/dist/rules/open-cors.js.map +1 -1
- package/dist/rules/prompt-injection-detection.d.ts +33 -3
- package/dist/rules/prompt-injection-detection.d.ts.map +1 -1
- package/dist/rules/prompt-injection-detection.js +571 -43
- package/dist/rules/prompt-injection-detection.js.map +1 -1
- package/dist/rules/sql-injection.d.ts +27 -3
- package/dist/rules/sql-injection.d.ts.map +1 -1
- package/dist/rules/sql-injection.js +471 -61
- package/dist/rules/sql-injection.js.map +1 -1
- package/dist/rules/unvalidated-input.d.ts +20 -4
- package/dist/rules/unvalidated-input.d.ts.map +1 -1
- package/dist/rules/unvalidated-input.js +557 -128
- package/dist/rules/unvalidated-input.js.map +1 -1
- package/dist/rules/xss-detection.d.ts +25 -4
- package/dist/rules/xss-detection.d.ts.map +1 -1
- package/dist/rules/xss-detection.js +702 -135
- package/dist/rules/xss-detection.js.map +1 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +11 -6
- package/dist/scanner.js.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.js +1 -1
- package/package.json +8 -3
- package/CHANGELOG.md +0 -102
package/dist/reporter.js
CHANGED
|
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.Reporter = void 0;
|
|
7
7
|
const Table = require('cli-table3');
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
// Class for reporting the scan results
|
|
9
10
|
class Reporter {
|
|
11
|
+
// Formats the scan results as a table
|
|
10
12
|
formatTable(result) {
|
|
11
13
|
if (result.issues.length === 0) {
|
|
12
14
|
return this.formatSuccess(result);
|
|
@@ -33,9 +35,11 @@ class Reporter {
|
|
|
33
35
|
});
|
|
34
36
|
return this.formatHeader(result) + '\n\n' + table.toString() + '\n\n' + this.formatSummary(result);
|
|
35
37
|
}
|
|
38
|
+
// Formats the scan results as a JSON string
|
|
36
39
|
formatJson(result) {
|
|
37
40
|
return JSON.stringify(result, null, 2);
|
|
38
41
|
}
|
|
42
|
+
// Formats the scan results as a SARIF string
|
|
39
43
|
formatSarif(result) {
|
|
40
44
|
const sarif = {
|
|
41
45
|
$schema: "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
|
|
@@ -45,7 +49,7 @@ class Reporter {
|
|
|
45
49
|
tool: {
|
|
46
50
|
driver: {
|
|
47
51
|
name: "Vibe-Guard",
|
|
48
|
-
version: "1.1.
|
|
52
|
+
version: "1.1.5",
|
|
49
53
|
informationUri: "https://github.com/Devjosef/vibe-guard",
|
|
50
54
|
rules: this.generateSarifRules(result)
|
|
51
55
|
}
|
|
@@ -71,6 +75,7 @@ class Reporter {
|
|
|
71
75
|
};
|
|
72
76
|
return JSON.stringify(sarif, null, 2);
|
|
73
77
|
}
|
|
78
|
+
// Formats the scan results as an HTML string
|
|
74
79
|
formatHtml(result) {
|
|
75
80
|
const html = `<!DOCTYPE html>
|
|
76
81
|
<html lang="en">
|
|
@@ -262,7 +267,7 @@ class Reporter {
|
|
|
262
267
|
<body>
|
|
263
268
|
<div class="container">
|
|
264
269
|
<div class="header">
|
|
265
|
-
<h1
|
|
270
|
+
<h1>██ Vibe-Guard Security Report</h1>
|
|
266
271
|
<p>Security scan completed on ${new Date().toLocaleDateString()}</p>
|
|
267
272
|
</div>
|
|
268
273
|
|
|
@@ -299,13 +304,14 @@ class Reporter {
|
|
|
299
304
|
</div>
|
|
300
305
|
|
|
301
306
|
<div class="footer">
|
|
302
|
-
<p>Generated by Vibe-Guard v1.1.
|
|
307
|
+
<p>Generated by Vibe-Guard v1.1.5 | <a href="https://github.com/Devjosef/vibe-guard">GitHub</a></p>
|
|
303
308
|
</div>
|
|
304
309
|
</div>
|
|
305
310
|
</body>
|
|
306
311
|
</html>`;
|
|
307
312
|
return html;
|
|
308
313
|
}
|
|
314
|
+
// Generates the SARIF rules
|
|
309
315
|
generateSarifRules(result) {
|
|
310
316
|
const ruleNames = [...new Set(result.issues.map(issue => issue.rule))];
|
|
311
317
|
return ruleNames.map(ruleName => ({
|
|
@@ -316,6 +322,7 @@ class Reporter {
|
|
|
316
322
|
}
|
|
317
323
|
}));
|
|
318
324
|
}
|
|
325
|
+
// Generates the SARIF results
|
|
319
326
|
generateSarifResults(result) {
|
|
320
327
|
return result.issues.map(issue => ({
|
|
321
328
|
ruleId: issue.rule,
|
|
@@ -341,6 +348,7 @@ class Reporter {
|
|
|
341
348
|
}
|
|
342
349
|
}));
|
|
343
350
|
}
|
|
351
|
+
// Maps the severity to the SARIF level
|
|
344
352
|
mapSeverityToSarifLevel(severity) {
|
|
345
353
|
switch (severity) {
|
|
346
354
|
case 'critical':
|
|
@@ -354,6 +362,7 @@ class Reporter {
|
|
|
354
362
|
return 'note';
|
|
355
363
|
}
|
|
356
364
|
}
|
|
365
|
+
// Formats the HTML issue
|
|
357
366
|
formatHtmlIssue(issue) {
|
|
358
367
|
return `
|
|
359
368
|
<div class="issue">
|
|
@@ -398,40 +407,52 @@ class Reporter {
|
|
|
398
407
|
.replace(/'/g, ''');
|
|
399
408
|
}
|
|
400
409
|
formatSuccess(result) {
|
|
401
|
-
const header = chalk_1.default.green.bold('
|
|
402
|
-
const
|
|
403
|
-
|
|
410
|
+
const header = chalk_1.default.green.bold('╔══════════════════════════════════════════════════════════════════════════════╗');
|
|
411
|
+
const title = chalk_1.default.green.bold('║ VIBE-GUARD SECURITY SCAN COMPLETE ║');
|
|
412
|
+
const subtitle = chalk_1.default.green.bold('║ NO THREATS DETECTED ║');
|
|
413
|
+
const summary = chalk_1.default.green(`║ ✅ No security issues found in ${result.filesScanned} files`);
|
|
414
|
+
const footer = chalk_1.default.green.bold('╚══════════════════════════════════════════════════════════════════════════════╝');
|
|
415
|
+
return `${header}\n${title}\n${subtitle}\n${summary.padEnd(75)} ║\n${footer}\n`;
|
|
404
416
|
}
|
|
405
417
|
formatHeader(result) {
|
|
406
|
-
const
|
|
407
|
-
const
|
|
408
|
-
|
|
418
|
+
const header = chalk_1.default.red.bold('╔══════════════════════════════════════════════════════════════════════════════╗');
|
|
419
|
+
const title = chalk_1.default.red.bold('║ VIBE-GUARD SECURITY ISSUES DETECTED ║');
|
|
420
|
+
const subtitle = chalk_1.default.yellow.bold(`║ ${result.issuesFound} THREATS FOUND IN ${result.filesScanned} FILES ║`);
|
|
421
|
+
const footer = chalk_1.default.red.bold('╚══════════════════════════════════════════════════════════════════════════════╝');
|
|
422
|
+
return `${header}\n${title}\n${subtitle}\n${footer}\n`;
|
|
409
423
|
}
|
|
410
424
|
formatSummary(result) {
|
|
411
425
|
const { summary } = result;
|
|
412
426
|
const parts = [];
|
|
413
427
|
if (summary.critical > 0) {
|
|
414
|
-
parts.push(chalk_1.default.red.bold(`${summary.critical}
|
|
428
|
+
parts.push(chalk_1.default.red.bold(`${summary.critical} CRITICAL`));
|
|
415
429
|
}
|
|
416
430
|
if (summary.high > 0) {
|
|
417
|
-
parts.push(chalk_1.default.red(`${summary.high}
|
|
431
|
+
parts.push(chalk_1.default.red(`${summary.high} HIGH`));
|
|
418
432
|
}
|
|
419
433
|
if (summary.medium > 0) {
|
|
420
|
-
parts.push(chalk_1.default.yellow(`${summary.medium}
|
|
434
|
+
parts.push(chalk_1.default.yellow(`${summary.medium} MEDIUM`));
|
|
421
435
|
}
|
|
422
436
|
if (summary.low > 0) {
|
|
423
|
-
parts.push(chalk_1.default.blue(`${summary.low}
|
|
437
|
+
parts.push(chalk_1.default.blue(`${summary.low} LOW`));
|
|
424
438
|
}
|
|
425
439
|
const summaryText = parts.length > 0 ? parts.join(' | ') : 'No issues';
|
|
426
|
-
return chalk_1.default.bold('
|
|
440
|
+
return chalk_1.default.bold('╔══════════════════════════════════════════════════════════════════════════════╗\n') +
|
|
441
|
+
chalk_1.default.bold('║ SUMMARY ║\n') +
|
|
442
|
+
chalk_1.default.bold('║ ') + summaryText.padEnd(73) + chalk_1.default.bold('║\n') +
|
|
443
|
+
chalk_1.default.bold('╚══════════════════════════════════════════════════════════════════════════════╝\n\n') +
|
|
444
|
+
this.formatRecommendations();
|
|
427
445
|
}
|
|
428
446
|
formatRecommendations() {
|
|
429
|
-
return chalk_1.default.cyan.bold('
|
|
430
|
-
chalk_1.default.cyan('
|
|
431
|
-
chalk_1.default.cyan('•
|
|
432
|
-
chalk_1.default.cyan('•
|
|
433
|
-
chalk_1.default.cyan('•
|
|
447
|
+
return chalk_1.default.cyan.bold('╔══════════════════════════════════════════════════════════════════════════════╗\n') +
|
|
448
|
+
chalk_1.default.cyan.bold('║ RECOMMENDATIONS ║\n') +
|
|
449
|
+
chalk_1.default.cyan.bold('║ • Review and fix critical and high severity issues immediately').padEnd(73) + chalk_1.default.cyan.bold('║\n') +
|
|
450
|
+
chalk_1.default.cyan.bold('║ • Consider implementing security linting in your CI/CD pipeline').padEnd(73) + chalk_1.default.cyan.bold('║\n') +
|
|
451
|
+
chalk_1.default.cyan.bold('║ • Run Vibe-Guard regularly during development').padEnd(73) + chalk_1.default.cyan.bold('║\n') +
|
|
452
|
+
chalk_1.default.cyan.bold('║ • Check our documentation for detailed fix suggestions').padEnd(73) + chalk_1.default.cyan.bold('║\n') +
|
|
453
|
+
chalk_1.default.cyan.bold('╚══════════════════════════════════════════════════════════════════════════════╝');
|
|
434
454
|
}
|
|
455
|
+
// Colors the severity
|
|
435
456
|
colorSeverity(severity) {
|
|
436
457
|
switch (severity) {
|
|
437
458
|
case 'critical':
|
|
@@ -446,6 +467,7 @@ class Reporter {
|
|
|
446
467
|
return String(severity).toUpperCase();
|
|
447
468
|
}
|
|
448
469
|
}
|
|
470
|
+
// Truncates the file path
|
|
449
471
|
truncateFilePath(filePath, maxLength = 35) {
|
|
450
472
|
let sanitizedPath = filePath.replace(/\\+/g, '/').replace(/\\/g, '/').replace(/\/+/g, '/');
|
|
451
473
|
sanitizedPath = sanitizedPath.replace(/\.\./g, '').replace(/\/+/g, '/');
|
package/dist/reporter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import { BaseRule, FileContent, SecurityIssue } from '../types';
|
|
2
2
|
export declare class AiAgentAccessControlRule extends BaseRule {
|
|
3
3
|
readonly name = "ai-agent-access-control";
|
|
4
|
-
readonly description = "Detects insecure AI agent access controls and privilege escalation";
|
|
4
|
+
readonly description = "Detects insecure AI agent access controls and privilege escalation with context-aware analysis";
|
|
5
5
|
readonly severity: "critical";
|
|
6
6
|
private readonly accessControlPatterns;
|
|
7
7
|
private readonly falsePositivePatterns;
|
|
8
8
|
check(fileContent: FileContent): SecurityIssue[];
|
|
9
|
-
private
|
|
9
|
+
private analyzeContext;
|
|
10
|
+
private isSafeContext;
|
|
11
|
+
private detectLanguage;
|
|
12
|
+
private detectFramework;
|
|
13
|
+
private isInComment;
|
|
14
|
+
private isInString;
|
|
15
|
+
private isInTestFile;
|
|
16
|
+
private isInDocumentation;
|
|
17
|
+
private isInDevelopment;
|
|
18
|
+
private isInSandbox;
|
|
19
|
+
private hasAuthChecks;
|
|
20
|
+
private isProtectedEnvironment;
|
|
21
|
+
private calculateConfidence;
|
|
22
|
+
private validateElevatedPrivileges;
|
|
23
|
+
private validateUnlimitedPermissions;
|
|
24
|
+
private validateDisabledAuth;
|
|
25
|
+
private validateMissingRBAC;
|
|
26
|
+
private validatePersistentAccess;
|
|
27
|
+
private validateAuthBypass;
|
|
28
|
+
private validateSystemAccess;
|
|
29
|
+
private validateInsecureMCP;
|
|
30
|
+
private validateMCPNoAuth;
|
|
31
|
+
private validateFileSystemAccess;
|
|
32
|
+
private validateNetworkAccess;
|
|
33
|
+
private getLineContext;
|
|
34
|
+
private generateSuggestion;
|
|
10
35
|
}
|
|
11
36
|
//# sourceMappingURL=ai-agent-access-control.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent-access-control.d.ts","sourceRoot":"","sources":["../../src/rules/ai-agent-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-agent-access-control.d.ts","sourceRoot":"","sources":["../../src/rules/ai-agent-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAgBhE,qBAAa,wBAAyB,SAAQ,QAAQ;IACpD,QAAQ,CAAC,IAAI,6BAA6B;IAC1C,QAAQ,CAAC,WAAW,oGAAoG;IACxH,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;IAExC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAkGpC;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CA4CpC;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IA4ChD,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,kBAAkB;CA+B3B"}
|