@kevinrabun/judges 3.40.0 → 3.41.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 (54) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +63 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/auto-calibrate.d.ts +15 -0
  6. package/dist/commands/auto-calibrate.d.ts.map +1 -0
  7. package/dist/commands/auto-calibrate.js +107 -0
  8. package/dist/commands/auto-calibrate.js.map +1 -0
  9. package/dist/commands/config-migrate.d.ts +44 -0
  10. package/dist/commands/config-migrate.d.ts.map +1 -0
  11. package/dist/commands/config-migrate.js +241 -0
  12. package/dist/commands/config-migrate.js.map +1 -0
  13. package/dist/commands/dedup-report.d.ts +13 -0
  14. package/dist/commands/dedup-report.d.ts.map +1 -0
  15. package/dist/commands/dedup-report.js +138 -0
  16. package/dist/commands/dedup-report.js.map +1 -0
  17. package/dist/commands/dep-audit.d.ts +53 -0
  18. package/dist/commands/dep-audit.d.ts.map +1 -0
  19. package/dist/commands/dep-audit.js +278 -0
  20. package/dist/commands/dep-audit.js.map +1 -0
  21. package/dist/commands/deprecated.d.ts +48 -0
  22. package/dist/commands/deprecated.d.ts.map +1 -0
  23. package/dist/commands/deprecated.js +202 -0
  24. package/dist/commands/deprecated.js.map +1 -0
  25. package/dist/commands/fix-pr.d.ts +23 -0
  26. package/dist/commands/fix-pr.d.ts.map +1 -0
  27. package/dist/commands/fix-pr.js +323 -0
  28. package/dist/commands/fix-pr.js.map +1 -0
  29. package/dist/commands/interactive-fix.d.ts +23 -0
  30. package/dist/commands/interactive-fix.d.ts.map +1 -0
  31. package/dist/commands/interactive-fix.js +140 -0
  32. package/dist/commands/interactive-fix.js.map +1 -0
  33. package/dist/commands/monorepo.d.ts +38 -0
  34. package/dist/commands/monorepo.d.ts.map +1 -0
  35. package/dist/commands/monorepo.js +233 -0
  36. package/dist/commands/monorepo.js.map +1 -0
  37. package/dist/commands/notify.d.ts +79 -0
  38. package/dist/commands/notify.d.ts.map +1 -0
  39. package/dist/commands/notify.js +325 -0
  40. package/dist/commands/notify.js.map +1 -0
  41. package/dist/commands/quality-gate.d.ts +70 -0
  42. package/dist/commands/quality-gate.d.ts.map +1 -0
  43. package/dist/commands/quality-gate.js +264 -0
  44. package/dist/commands/quality-gate.js.map +1 -0
  45. package/dist/evaluators/framework-rules.d.ts +59 -0
  46. package/dist/evaluators/framework-rules.d.ts.map +1 -0
  47. package/dist/evaluators/framework-rules.js +292 -0
  48. package/dist/evaluators/framework-rules.js.map +1 -0
  49. package/dist/parallel.d.ts +53 -0
  50. package/dist/parallel.d.ts.map +1 -0
  51. package/dist/parallel.js +170 -0
  52. package/dist/parallel.js.map +1 -0
  53. package/package.json +1 -1
  54. package/server.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/commands/notify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * `judges quality-gate` — Configurable composite quality gates.
3
+ *
4
+ * Defines and evaluates multi-dimensional quality gates for CI pipelines.
5
+ * Goes beyond simple severity counts — supports score thresholds, specific
6
+ * rule requirements, trend-based gates, and custom composite conditions.
7
+ *
8
+ * Usage:
9
+ * judges quality-gate --file src/app.ts # Evaluate default gate
10
+ * judges quality-gate --file src/app.ts --gate strict # Named gate definition
11
+ * judges quality-gate --file src/app.ts --json # JSON output
12
+ *
13
+ * Configuration in .judgesrc:
14
+ * ```json
15
+ * {
16
+ * "qualityGates": {
17
+ * "default": {
18
+ * "maxFindings": { "critical": 0, "high": 2 },
19
+ * "minScore": 70,
20
+ * "requiredJudges": ["cybersecurity", "data-security"],
21
+ * "maxFpRate": 0.3
22
+ * },
23
+ * "strict": {
24
+ * "maxFindings": { "critical": 0, "high": 0, "medium": 5 },
25
+ * "minScore": 85,
26
+ * "requiredJudges": ["cybersecurity", "data-security", "authentication"]
27
+ * }
28
+ * }
29
+ * }
30
+ * ```
31
+ */
32
+ import type { Severity, TribunalVerdict } from "../types.js";
33
+ export interface QualityGateDefinition {
34
+ /** Maximum allowed findings by severity — exceeding any triggers failure */
35
+ maxFindings?: Partial<Record<Severity, number>>;
36
+ /** Minimum aggregated score (0-100) */
37
+ minScore?: number;
38
+ /** Judge IDs that must participate in evaluation */
39
+ requiredJudges?: string[];
40
+ /** Maximum false-positive rate allowed (0-1) — requires feedback data */
41
+ maxFpRate?: number;
42
+ /** Required rules that must not be violated — listing a rule ID means zero violations */
43
+ blockerRules?: string[];
44
+ /** Minimum percentage of findings that must have auto-fix patches */
45
+ minFixRate?: number;
46
+ /** Minimum average confidence score for findings (0-1) */
47
+ minConfidence?: number;
48
+ }
49
+ export interface QualityGateResult {
50
+ /** Overall pass/fail */
51
+ passed: boolean;
52
+ /** Named gate that was evaluated */
53
+ gateName: string;
54
+ /** Individual check results */
55
+ checks: QualityGateCheck[];
56
+ /** Verdict summary */
57
+ summary: string;
58
+ }
59
+ export interface QualityGateCheck {
60
+ /** Check name */
61
+ name: string;
62
+ /** Pass/fail */
63
+ passed: boolean;
64
+ /** Descriptive message */
65
+ message: string;
66
+ }
67
+ export declare function evaluateQualityGate(gate: QualityGateDefinition, gateName: string, verdict: TribunalVerdict, fpRateByRule?: Map<string, number>): QualityGateResult;
68
+ export declare function parseQualityGateConfig(obj: Record<string, unknown>): Record<string, QualityGateDefinition> | undefined;
69
+ export declare function runQualityGate(argv: string[]): void;
70
+ //# sourceMappingURL=quality-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gate.d.ts","sourceRoot":"","sources":["../../src/commands/quality-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,iBAAiB,CAsGnB;AAID,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,SAAS,CA2BnD;AAiBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAgGnD"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * `judges quality-gate` — Configurable composite quality gates.
3
+ *
4
+ * Defines and evaluates multi-dimensional quality gates for CI pipelines.
5
+ * Goes beyond simple severity counts — supports score thresholds, specific
6
+ * rule requirements, trend-based gates, and custom composite conditions.
7
+ *
8
+ * Usage:
9
+ * judges quality-gate --file src/app.ts # Evaluate default gate
10
+ * judges quality-gate --file src/app.ts --gate strict # Named gate definition
11
+ * judges quality-gate --file src/app.ts --json # JSON output
12
+ *
13
+ * Configuration in .judgesrc:
14
+ * ```json
15
+ * {
16
+ * "qualityGates": {
17
+ * "default": {
18
+ * "maxFindings": { "critical": 0, "high": 2 },
19
+ * "minScore": 70,
20
+ * "requiredJudges": ["cybersecurity", "data-security"],
21
+ * "maxFpRate": 0.3
22
+ * },
23
+ * "strict": {
24
+ * "maxFindings": { "critical": 0, "high": 0, "medium": 5 },
25
+ * "minScore": 85,
26
+ * "requiredJudges": ["cybersecurity", "data-security", "authentication"]
27
+ * }
28
+ * }
29
+ * }
30
+ * ```
31
+ */
32
+ import { existsSync, readFileSync } from "fs";
33
+ import { extname } from "path";
34
+ import { evaluateWithTribunal } from "../evaluators/index.js";
35
+ // ─── Gate Evaluation ────────────────────────────────────────────────────────
36
+ const SEVERITY_LEVELS = ["critical", "high", "medium", "low", "info"];
37
+ export function evaluateQualityGate(gate, gateName, verdict, fpRateByRule) {
38
+ const checks = [];
39
+ // Check max findings by severity
40
+ if (gate.maxFindings) {
41
+ const counts = { critical: 0, high: 0, medium: 0, low: 0, info: 0 };
42
+ for (const f of verdict.findings) {
43
+ counts[f.severity] = (counts[f.severity] || 0) + 1;
44
+ }
45
+ for (const sev of SEVERITY_LEVELS) {
46
+ const max = gate.maxFindings[sev];
47
+ if (max !== undefined) {
48
+ const actual = counts[sev];
49
+ checks.push({
50
+ name: `max-${sev}`,
51
+ passed: actual <= max,
52
+ message: `${sev} findings: ${actual}/${max} allowed`,
53
+ });
54
+ }
55
+ }
56
+ }
57
+ // Check minimum score
58
+ if (gate.minScore !== undefined) {
59
+ checks.push({
60
+ name: "min-score",
61
+ passed: verdict.overallScore >= gate.minScore,
62
+ message: `Score: ${verdict.overallScore}/${gate.minScore} required`,
63
+ });
64
+ }
65
+ // Check required judges participated
66
+ if (gate.requiredJudges) {
67
+ const participatingJudges = new Set(verdict.evaluations.map((e) => e.judgeId));
68
+ for (const required of gate.requiredJudges) {
69
+ checks.push({
70
+ name: `required-judge-${required}`,
71
+ passed: participatingJudges.has(required),
72
+ message: `Judge "${required}": ${participatingJudges.has(required) ? "participated" : "MISSING"}`,
73
+ });
74
+ }
75
+ }
76
+ // Check blocker rules
77
+ if (gate.blockerRules) {
78
+ const violatedRules = new Set(verdict.findings.map((f) => f.ruleId));
79
+ for (const rule of gate.blockerRules) {
80
+ const violated = violatedRules.has(rule);
81
+ checks.push({
82
+ name: `blocker-${rule}`,
83
+ passed: !violated,
84
+ message: `Blocker rule ${rule}: ${violated ? "VIOLATED" : "clear"}`,
85
+ });
86
+ }
87
+ }
88
+ // Check max FP rate
89
+ if (gate.maxFpRate !== undefined && fpRateByRule) {
90
+ const avgFpRate = fpRateByRule.size > 0 ? Array.from(fpRateByRule.values()).reduce((sum, r) => sum + r, 0) / fpRateByRule.size : 0;
91
+ checks.push({
92
+ name: "max-fp-rate",
93
+ passed: avgFpRate <= gate.maxFpRate,
94
+ message: `FP rate: ${(avgFpRate * 100).toFixed(1)}%/${(gate.maxFpRate * 100).toFixed(1)}% allowed`,
95
+ });
96
+ }
97
+ // Check min fix rate
98
+ if (gate.minFixRate !== undefined) {
99
+ const fixable = verdict.findings.filter((f) => f.patch).length;
100
+ const total = verdict.findings.length;
101
+ const fixRate = total > 0 ? fixable / total : 1;
102
+ checks.push({
103
+ name: "min-fix-rate",
104
+ passed: fixRate >= gate.minFixRate,
105
+ message: `Fix rate: ${(fixRate * 100).toFixed(1)}%/${(gate.minFixRate * 100).toFixed(1)}% required`,
106
+ });
107
+ }
108
+ // Check min confidence
109
+ if (gate.minConfidence !== undefined) {
110
+ const confidences = verdict.findings.filter((f) => f.confidence !== undefined).map((f) => f.confidence);
111
+ const avgConf = confidences.length > 0 ? confidences.reduce((s, c) => s + c, 0) / confidences.length : 1;
112
+ checks.push({
113
+ name: "min-confidence",
114
+ passed: avgConf >= gate.minConfidence,
115
+ message: `Avg confidence: ${(avgConf * 100).toFixed(1)}%/${(gate.minConfidence * 100).toFixed(1)}% required`,
116
+ });
117
+ }
118
+ const passed = checks.every((c) => c.passed);
119
+ const failed = checks.filter((c) => !c.passed);
120
+ return {
121
+ passed,
122
+ gateName,
123
+ checks,
124
+ summary: passed
125
+ ? `Quality gate "${gateName}" PASSED — all ${checks.length} check(s) passed`
126
+ : `Quality gate "${gateName}" FAILED — ${failed.length}/${checks.length} check(s) failed`,
127
+ };
128
+ }
129
+ // ─── Config Parsing ─────────────────────────────────────────────────────────
130
+ export function parseQualityGateConfig(obj) {
131
+ if (!obj.qualityGates)
132
+ return undefined;
133
+ const raw = obj.qualityGates;
134
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw))
135
+ return undefined;
136
+ const gates = {};
137
+ for (const [name, def] of Object.entries(raw)) {
138
+ if (typeof def !== "object" || def === null)
139
+ continue;
140
+ const d = def;
141
+ const gate = {};
142
+ if (d.maxFindings && typeof d.maxFindings === "object") {
143
+ gate.maxFindings = d.maxFindings;
144
+ }
145
+ if (typeof d.minScore === "number")
146
+ gate.minScore = d.minScore;
147
+ if (Array.isArray(d.requiredJudges))
148
+ gate.requiredJudges = d.requiredJudges;
149
+ if (typeof d.maxFpRate === "number")
150
+ gate.maxFpRate = d.maxFpRate;
151
+ if (Array.isArray(d.blockerRules))
152
+ gate.blockerRules = d.blockerRules;
153
+ if (typeof d.minFixRate === "number")
154
+ gate.minFixRate = d.minFixRate;
155
+ if (typeof d.minConfidence === "number")
156
+ gate.minConfidence = d.minConfidence;
157
+ gates[name] = gate;
158
+ }
159
+ return Object.keys(gates).length > 0 ? gates : undefined;
160
+ }
161
+ // ─── CLI Runner ─────────────────────────────────────────────────────────────
162
+ const EXT_TO_LANG = {
163
+ ".ts": "typescript",
164
+ ".tsx": "typescript",
165
+ ".js": "javascript",
166
+ ".jsx": "javascript",
167
+ ".py": "python",
168
+ ".rs": "rust",
169
+ ".go": "go",
170
+ ".java": "java",
171
+ ".cs": "csharp",
172
+ ".cpp": "cpp",
173
+ };
174
+ export function runQualityGate(argv) {
175
+ if (argv.includes("--help") || argv.includes("-h")) {
176
+ console.log(`
177
+ judges quality-gate — Evaluate configurable quality gates
178
+
179
+ Usage:
180
+ judges quality-gate --file <path> Evaluate default gate
181
+ judges quality-gate --file <path> --gate <name> Use a named gate definition
182
+ judges quality-gate --json JSON output
183
+
184
+ Configuration (.judgesrc):
185
+ "qualityGates": {
186
+ "default": {
187
+ "maxFindings": { "critical": 0, "high": 2 },
188
+ "minScore": 70,
189
+ "requiredJudges": ["cybersecurity"],
190
+ "blockerRules": ["SEC-001", "AUTH-001"]
191
+ }
192
+ }
193
+
194
+ Options:
195
+ --file, -f <path> File to evaluate
196
+ --gate <name> Gate name (default: "default")
197
+ --json JSON output
198
+ --help, -h Show this help
199
+ `);
200
+ return;
201
+ }
202
+ const file = argv.find((_a, i) => argv[i - 1] === "--file" || argv[i - 1] === "-f");
203
+ const gateName = argv.find((_a, i) => argv[i - 1] === "--gate") || "default";
204
+ const jsonFormat = argv.includes("--json");
205
+ if (!file) {
206
+ console.error("Error: --file is required.");
207
+ process.exit(1);
208
+ }
209
+ if (!existsSync(file)) {
210
+ console.error(`Error: File not found: ${file}`);
211
+ process.exit(1);
212
+ }
213
+ // Load quality gate config from .judgesrc
214
+ let gates;
215
+ for (const name of [".judgesrc", ".judgesrc.json"]) {
216
+ if (existsSync(name)) {
217
+ try {
218
+ const raw = JSON.parse(readFileSync(name, "utf-8"));
219
+ gates = parseQualityGateConfig(raw);
220
+ }
221
+ catch {
222
+ // Skip invalid config
223
+ }
224
+ break;
225
+ }
226
+ }
227
+ // Use a sensible default gate if none configured
228
+ const gate = gates?.[gateName] ?? {
229
+ maxFindings: { critical: 0, high: 3 },
230
+ minScore: 60,
231
+ };
232
+ // Evaluate
233
+ const code = readFileSync(file, "utf-8");
234
+ const lang = EXT_TO_LANG[extname(file)] || "typescript";
235
+ const verdict = evaluateWithTribunal(code, lang);
236
+ // Load FP rates if available
237
+ let fpRateByRule;
238
+ try {
239
+ const { loadFeedbackStore, getFpRateByRule: getFpRate } = require("./feedback.js");
240
+ const store = loadFeedbackStore();
241
+ const rates = getFpRate(store);
242
+ fpRateByRule = rates instanceof Map ? rates : new Map(Object.entries(rates));
243
+ }
244
+ catch {
245
+ // Feedback data not available
246
+ }
247
+ const result = evaluateQualityGate(gate, gateName, verdict, fpRateByRule);
248
+ if (jsonFormat) {
249
+ console.log(JSON.stringify(result, null, 2));
250
+ }
251
+ else {
252
+ const icon = result.passed ? "✅" : "❌";
253
+ console.log(`\n ${icon} ${result.summary}\n`);
254
+ for (const check of result.checks) {
255
+ const checkIcon = check.passed ? " ✓" : " ✗";
256
+ console.log(` ${checkIcon} ${check.message}`);
257
+ }
258
+ console.log("");
259
+ }
260
+ if (!result.passed) {
261
+ process.exit(1);
262
+ }
263
+ }
264
+ //# sourceMappingURL=quality-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gate.js","sourceRoot":"","sources":["../../src/commands/quality-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Framework-aware detection module.
3
+ *
4
+ * Detects which framework(s) are in use and provides framework-specific
5
+ * pattern adjustments to reduce false positives. For example:
6
+ * - React: hooks ordering rules, JSX injection awareness
7
+ * - Express/Fastify: middleware chain analysis
8
+ * - Django: ORM injection patterns
9
+ * - Spring: security annotation awareness
10
+ * - Next.js: server-component vs client-component context
11
+ *
12
+ * This module is used by evaluators to adjust their confidence scores
13
+ * and disable irrelevant rules based on framework context.
14
+ */
15
+ import type { Finding, Severity } from "../types.js";
16
+ export type FrameworkId = "react" | "nextjs" | "angular" | "vue" | "express" | "fastify" | "nestjs" | "django" | "flask" | "fastapi" | "spring" | "rails" | "actix" | "gin" | "echo";
17
+ export interface FrameworkProfile {
18
+ /** Framework identifier */
19
+ id: FrameworkId;
20
+ /** Human-readable name */
21
+ name: string;
22
+ /** Languages this framework applies to */
23
+ languages: string[];
24
+ /** Import/require patterns that identify this framework */
25
+ detectPatterns: RegExp[];
26
+ /** Rule IDs that are typically false positives in this framework */
27
+ fpProne: string[];
28
+ /** Rules whose severity should be adjusted in this framework context */
29
+ severityAdjustments: Array<{
30
+ rulePattern: string;
31
+ adjustment: "downgrade" | "upgrade";
32
+ reason: string;
33
+ }>;
34
+ /** Additional patterns to check for framework-specific issues */
35
+ frameworkRules: Array<{
36
+ id: string;
37
+ pattern: RegExp;
38
+ severity: Severity;
39
+ title: string;
40
+ description: string;
41
+ }>;
42
+ }
43
+ /**
44
+ * Detect which frameworks are present in the given code.
45
+ */
46
+ export declare function detectFrameworks(code: string, language: string): FrameworkProfile[];
47
+ /**
48
+ * Adjust findings based on detected framework context.
49
+ * - Downgrades severity for FP-prone rules in the framework
50
+ * - Applies framework-specific severity adjustments
51
+ * - Tags adjusted findings with provenance
52
+ */
53
+ export declare function adjustFindingsForFramework(findings: Finding[], frameworks: FrameworkProfile[]): Finding[];
54
+ /**
55
+ * Run framework-specific rules against code.
56
+ * Returns additional findings from framework-aware patterns.
57
+ */
58
+ export declare function evaluateFrameworkRules(code: string, language: string): Finding[];
59
+ //# sourceMappingURL=framework-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-rules.d.ts","sourceRoot":"","sources":["../../src/evaluators/framework-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIrD,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,QAAQ,GACR,SAAS,GACT,KAAK,GACL,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,OAAO,GACP,OAAO,GACP,KAAK,GACL,MAAM,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,EAAE,EAAE,WAAW,CAAC;IAChB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oEAAoE;IACpE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wEAAwE;IACxE,mBAAmB,EAAE,KAAK,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;QACpC,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,iEAAiE;IACjE,cAAc,EAAE,KAAK,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,QAAQ,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AA0MD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAKnF;AAOD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,OAAO,EAAE,CAqCzG;AAID;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAwBhF"}