supply-chain-guard 5.0.1 → 5.1.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 CHANGED
@@ -181,41 +181,72 @@ supply-chain-guard scan ./project --baseline .scg-baseline.json
181
181
  ## Example Output
182
182
 
183
183
  ```
184
- supply-chain-guard scan report
185
- ──────────────────────────────────────────────────
186
- Target: ./suspicious-package
187
- Type: directory
188
- Duration: 142ms
189
-
190
- Risk Score: 83/100 (CRITICAL)
191
-
192
- Trust Breakdown
193
- ──────────────────────────────────────────────────
194
- Publisher: ██░░░░░░░░ 20/100
195
- Code: ███░░░░░░░ 30/100
196
- Deps: ██████████ 100/100
197
- Release: ████████░░ 80/100
198
- Overall: ████░░░░░░ 48/100
199
-
200
- Correlated Incidents
201
- ──────────────────────────────────────────────────
202
-
203
- [CRITICAL] Vidar Stealer Infection (95% confidence)
204
- Multiple infostealer indicators: dead-drop resolvers for C2,
205
- browser credential theft, and crypto wallet targeting.
206
- Indicators: DEAD_DROP_STEAM, VIDAR_BROWSER_THEFT, DROPPER_TEMP_EXEC
207
-
208
- Findings (6)
209
- ──────────────────────────────────────────────────
210
-
211
- [CRITICAL] Steam Community profile URL in code (dead-drop resolver)
212
- Rule: DEAD_DROP_STEAM | File: src/config.js:12
213
-
214
- [CRITICAL] Browser credential file access (infostealer)
215
- Rule: VIDAR_BROWSER_THEFT | File: src/steal.js:45
216
-
217
- [CRITICAL] Dropper: write + execute in temp directory
218
- Rule: DROPPER_TEMP_EXEC | File: src/loader.js:23
184
+ ╔══════════════════════════════════════════════════════════════════════════════╗
185
+ supply-chain-guard v5.1.0 ║
186
+ ╚══════════════════════════════════════════════════════════════════════════════╝
187
+
188
+ Target ./suspicious-package
189
+ Type directory · 18 / 18 files scanned
190
+ Duration 142ms
191
+ Time 2026-04-07T12:00:00.000Z
192
+
193
+ ┌─────────────────────────────── RISK SCORE ─────────────────────────────────┐
194
+ │ │
195
+ │ 83 / 100 █████████████████████████████████░░░░░ CRITICAL │
196
+ │ │
197
+ └──────────────────────────────────────────────────────────────────────────────┘
198
+
199
+ ┌──────────────────────────── FINDINGS SUMMARY ───────────────────────────────┐
200
+ CRITICAL 3 ████████████████████████████████ │
201
+ HIGH 1 ██████████ │
202
+ │ MEDIUM 0 ──────────────────────────────── │
203
+ LOW 0 ──────────────────────────────── │
204
+ INFO 0 ──────────────────────────────── │
205
+ └──────────────────────────────────────────────────────────────────────────────┘
206
+
207
+ ┌──────────────────────────────── FINDINGS ───────────────────────────────────┐
208
+ │ │
209
+ [CRITICAL] DEAD_DROP_STEAM │
210
+ │ Steam Community profile URL used as dead-drop C2 resolver │
211
+ │ src/config.js:12 │
212
+ │ match https://steamcommunity.com/profiles/76561198... │
213
+ │ fix Remove external URL resolution; use static configuration │
214
+ │ │
215
+ ·············································································
216
+ │ │
217
+ [CRITICAL] VIDAR_BROWSER_THEFT │
218
+ │ Browser credential file access (infostealer pattern) │
219
+ │ src/steal.js:45 │
220
+ │ match AppData/Local/Google/Chrome/User Data/Login Data │
221
+ │ fix Never access browser credential stores │
222
+ │ │
223
+ │ ············································································· │
224
+ │ │
225
+ │ [CRITICAL] DROPPER_TEMP_EXEC │
226
+ │ Dropper: file written and executed from temp directory │
227
+ │ src/loader.js:23 │
228
+ │ match saveFile(tmpdir, payload); exec(tmpPath) │
229
+ │ fix Remove dropper logic; audit all exec() call sites │
230
+ │ │
231
+ └──────────────────────────────────────────────────────────────────────────────┘
232
+
233
+ ┌─────────────────────────── TRUST BREAKDOWN ─────────────────────────────────┐
234
+ │ Publisher ██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 20/100 │
235
+ │ Code █████████░░░░░░░░░░░░░░░░░░░░░░░░░ 30/100 │
236
+ │ Dependencies ████████████████████████████████████ 100/100 │
237
+ │ Release ██████████████████████████░░░░░░░░░ 80/100 │
238
+ │────────────────────────────────────────────────────────────────────────────│
239
+ │ Overall █████████████░░░░░░░░░░░░░░░░░░░░░░ 48/100 │
240
+ └──────────────────────────────────────────────────────────────────────────────┘
241
+
242
+ ┌──────────────────────────── CORRELATED INCIDENTS ───────────────────────────┐
243
+ │ │
244
+ │ [CRITICAL] Vidar Stealer Infection 95% confidence │
245
+ │ Multiple infostealer indicators: dead-drop resolvers for C2, │
246
+ │ browser credential theft, and crypto wallet targeting. │
247
+ │ Indicators: DEAD_DROP_STEAM, VIDAR_BROWSER_THEFT, DROPPER_TEMP_EXEC │
248
+ │ │
249
+ └──────────────────────────────────────────────────────────────────────────────┘
219
250
  ```
220
251
 
221
252
  ## Supported Ecosystems
@@ -244,7 +275,7 @@ jobs:
244
275
  runs-on: ubuntu-latest
245
276
  steps:
246
277
  - uses: actions/checkout@v4
247
- - uses: homeofe/supply-chain-guard@v4
278
+ - uses: homeofe/supply-chain-guard@v5
248
279
  with:
249
280
  fail-on: critical
250
281
  comment-on-pr: true
@@ -299,6 +330,16 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. The most impactful contri
299
330
 
300
331
  ## Changelog
301
332
 
333
+ ### v5.1.0 (2026-04-07)
334
+ **Comprehensive ASCII CLI output** — complete redesign of the default text reporter.
335
+ - Double-line banner header (`╔╗`) with tool name and version
336
+ - Risk score with 36-char visual gauge bar, color-coded by severity level
337
+ - Findings summary as a severity histogram with proportional `█░` bars scaled to highest count
338
+ - Finding cards with structured `match` / `fix` label indenting and `···` dot-line separators
339
+ - Trust breakdown and risk dimensions with 32-char bar gauges and divider before Overall
340
+ - All sections framed in `┌─┐ / └─┘` box-drawing borders at 80-char terminal width
341
+ - Fixed stale hardcoded `4.8.0`/`4.9.0` version strings in SARIF, SBOM metadata, and HTML footer
342
+
302
343
  ### v5.0.1 (2026-04-07)
303
344
  **False positive fixes — second pass** after live workspace testing revealed additional FPs.
304
345
  - `PROXY_HANDLER_TRAP`: `notFilePattern` extended to cover non-minified vendor files in `/static/js/`, `/vendor/`, `/public/js/`, `/assets/js/` directories (e.g. `tailwindcss.js`)
package/dist/cli.js CHANGED
@@ -20,7 +20,7 @@ const program = new commander_1.Command();
20
20
  program
21
21
  .name("supply-chain-guard")
22
22
  .description("Open-source supply-chain security scanner. Detects GlassWorm and similar malware campaigns in npm packages, PyPI packages, code repos, VS Code extensions, and project dependencies.")
23
- .version("4.8.0");
23
+ .version("5.1.0");
24
24
  // ── scan command ────────────────────────────────────────────────────
25
25
  program
26
26
  .command("scan")
package/dist/reporter.js CHANGED
@@ -50,164 +50,240 @@ function formatJson(report) {
50
50
  return JSON.stringify(report, null, 2);
51
51
  }
52
52
  /**
53
- * Format as human-readable text with colors.
53
+ * Format as human-readable text with box-drawing borders and visual gauges.
54
54
  */
55
55
  function formatText(report) {
56
56
  const lines = [];
57
- // Header
58
- lines.push("");
59
- lines.push(`${BOLD} supply-chain-guard${RESET} scan report`);
60
- lines.push(`${DIM} ${"─".repeat(50)}${RESET}`);
61
- lines.push(` Target: ${report.target}`);
62
- lines.push(` Type: ${report.scanType}`);
63
- lines.push(` Time: ${report.timestamp}`);
64
- lines.push(` Duration: ${report.durationMs}ms`);
57
+ // ── layout constants ───────────────────────────────────────────────────────
58
+ const VERSION = "5.1.0";
59
+ const W = 76; // visible chars between "│ " and " │" (total line = 80)
60
+ // ── ANSI helpers ───────────────────────────────────────────────────────────
61
+ const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*m/g, "");
62
+ const visLen = (s) => stripAnsi(s).length;
63
+ /** Pad string to n *visible* chars, appending ch. */
64
+ const padR = (s, n, ch = " ") => s + ch.repeat(Math.max(0, n - visLen(s)));
65
+ /** Truncate to n visible chars, adding ellipsis if needed. */
66
+ const trunc = (s, n) => visLen(s) <= n ? s : stripAnsi(s).slice(0, n - 1) + "…";
67
+ // ── box-drawing helpers ────────────────────────────────────────────────────
68
+ const boxTop = (title = "") => {
69
+ if (!title)
70
+ return "┌" + "─".repeat(78) + "┐";
71
+ const t = ` ${title} `;
72
+ const rem = 78 - t.length;
73
+ const l = Math.floor(rem / 2);
74
+ return "┌" + "─".repeat(l) + t + "─".repeat(rem - l) + "┐";
75
+ };
76
+ const boxBot = () => "└" + "─".repeat(78) + "┘";
77
+ const boxDiv = () => "├" + "─".repeat(78) + "┤";
78
+ const boxBlank = () => "│" + " ".repeat(78) + "│";
79
+ const boxDot = () => "│ " + DIM + "·".repeat(76) + RESET + " │";
80
+ /** Row whose visible content is exactly W chars (padding added automatically). */
81
+ const boxRow = (s = "") => "│ " + padR(s, W) + " │";
82
+ // ── color/bar helpers ──────────────────────────────────────────────────────
83
+ const scoreColor = (score) => score === 0 ? "\x1b[32m" // green
84
+ : score <= 10 ? "\x1b[36m" // cyan
85
+ : score <= 30 ? "\x1b[33m" // yellow
86
+ : score <= 60 ? "\x1b[31m" // red
87
+ : "\x1b[91m"; // bright red
88
+ const trustColor = (score) => score >= 80 ? "\x1b[32m" : score >= 50 ? "\x1b[33m" : "\x1b[31m";
89
+ const riskColor = (score) => score <= 20 ? "\x1b[32m" : score <= 50 ? "\x1b[33m" : "\x1b[31m";
90
+ const mkBar = (value, max, width) => {
91
+ const n = max > 0 ? Math.round((value / max) * width) : 0;
92
+ return "█".repeat(n) + "░".repeat(width - n);
93
+ };
94
+ // ── HEADER ─────────────────────────────────────────────────────────────────
65
95
  lines.push("");
66
- // Score
67
- const scoreColor = report.score === 0
68
- ? "\x1b[32m"
69
- : report.score <= 10
70
- ? "\x1b[36m"
71
- : report.score <= 30
72
- ? "\x1b[33m"
73
- : report.score <= 60
74
- ? "\x1b[31m"
75
- : "\x1b[91m";
76
- lines.push(` Risk Score: ${scoreColor}${BOLD}${report.score}/100${RESET} (${report.riskLevel.toUpperCase()})`);
77
- if (report.slsaLevel !== undefined) {
78
- const slsaColor = report.slsaLevel >= 3 ? "\x1b[32m" : report.slsaLevel === 2 ? "\x1b[36m" : report.slsaLevel === 1 ? "\x1b[33m" : "\x1b[31m";
79
- lines.push(` SLSA Level: ${slsaColor}${BOLD}${report.slsaLevel}/3${RESET}`);
80
- }
81
- if (report.sbomDocument) {
82
- lines.push(` SBOM: ${DIM}CycloneDX 1.6 — ${report.sbomDocument.components.length} component(s)${RESET}`);
96
+ lines.push("╔" + "═".repeat(78) + "╗");
97
+ {
98
+ const label = " supply-chain-guard"; // 20 visible chars
99
+ const ver = `v${VERSION} `; // e.g. "v5.1.0 " = 8 visible
100
+ const spaces = " ".repeat(Math.max(0, 78 - label.length - ver.length));
101
+ lines.push("║" + BOLD + label + RESET + spaces + DIM + ver + RESET + "║");
83
102
  }
103
+ lines.push("╚" + "═".repeat(78) + "╝");
84
104
  lines.push("");
85
- // Summary
86
- lines.push(`${BOLD} Summary${RESET}`);
87
- lines.push(`${DIM} ${"".repeat(50)}${RESET}`);
105
+ // ── METADATA ───────────────────────────────────────────────────────────────
106
+ const metaRow = (key, val) => ` ${BOLD}${key.padEnd(10)}${RESET}${val}`;
107
+ lines.push(metaRow("Target", report.target));
88
108
  if (report.scanType === "directory" || report.scanType === "github") {
89
- lines.push(` Files: ${report.summary.filesScanned}/${report.summary.totalFiles} scanned`);
90
- }
91
- const counts = [
92
- report.summary.critical > 0
93
- ? `${SEVERITY_COLORS.critical}${report.summary.critical} critical${RESET}`
94
- : null,
95
- report.summary.high > 0
96
- ? `${SEVERITY_COLORS.high}${report.summary.high} high${RESET}`
97
- : null,
98
- report.summary.medium > 0
99
- ? `${SEVERITY_COLORS.medium}${report.summary.medium} medium${RESET}`
100
- : null,
101
- report.summary.low > 0
102
- ? `${SEVERITY_COLORS.low}${report.summary.low} low${RESET}`
103
- : null,
104
- report.summary.info > 0
105
- ? `${SEVERITY_COLORS.info}${report.summary.info} info${RESET}`
106
- : null,
107
- ].filter(Boolean);
108
- if (counts.length > 0) {
109
- lines.push(` Findings: ${counts.join(", ")}`);
109
+ lines.push(metaRow("Type", `${report.scanType} · ${report.summary.filesScanned} / ${report.summary.totalFiles} files scanned`));
110
110
  }
111
111
  else {
112
- lines.push(` Findings: \x1b[32mNone${RESET}`);
113
- }
114
- if (report.suppressedCount && report.suppressedCount > 0) {
115
- lines.push(` Suppressed: ${DIM}${report.suppressedCount} finding(s) by policy/baseline${RESET}`);
112
+ lines.push(metaRow("Type", report.scanType));
116
113
  }
114
+ lines.push(metaRow("Duration", `${report.durationMs}ms`));
115
+ lines.push(metaRow("Time", report.timestamp));
117
116
  lines.push("");
118
- // Findings
117
+ // ── RISK SCORE ─────────────────────────────────────────────────────────────
118
+ {
119
+ const sc = report.score;
120
+ const scCol = scoreColor(sc);
121
+ const level = report.riskLevel.toUpperCase();
122
+ const BAR_W = 36;
123
+ const filled = Math.round((sc / 100) * BAR_W);
124
+ const gauge = scCol + "█".repeat(filled) + DIM + "░".repeat(BAR_W - filled) + RESET;
125
+ const scoreStr = `${sc} / 100`;
126
+ lines.push(boxTop("RISK SCORE"));
127
+ lines.push(boxBlank());
128
+ lines.push(boxRow(` ${scCol}${BOLD}${scoreStr}${RESET} ${gauge} ${BOLD}${scCol}${level}${RESET}`));
129
+ if (report.slsaLevel !== undefined) {
130
+ const slsaCol = report.slsaLevel >= 3 ? "\x1b[32m" : report.slsaLevel === 2 ? "\x1b[36m" : report.slsaLevel === 1 ? "\x1b[33m" : "\x1b[31m";
131
+ const slsaBar = slsaCol + mkBar(report.slsaLevel, 3, 24) + RESET;
132
+ lines.push(boxRow(` ${DIM}SLSA${RESET} ${slsaBar} ${slsaCol}${BOLD}${report.slsaLevel}/3${RESET}`));
133
+ }
134
+ if (report.sbomDocument) {
135
+ lines.push(boxRow(` ${DIM}SBOM${RESET} CycloneDX 1.6 · ${report.sbomDocument.components.length} components`));
136
+ }
137
+ lines.push(boxBlank());
138
+ lines.push(boxBot());
139
+ lines.push("");
140
+ }
141
+ // ── FINDINGS SUMMARY ───────────────────────────────────────────────────────
142
+ {
143
+ const totalFindings = report.summary.critical + report.summary.high +
144
+ report.summary.medium + report.summary.low + report.summary.info;
145
+ lines.push(boxTop("FINDINGS SUMMARY"));
146
+ if (totalFindings === 0) {
147
+ lines.push(boxBlank());
148
+ lines.push(boxRow(` \x1b[32m${BOLD}✓ No findings — clean${RESET}`));
149
+ lines.push(boxBlank());
150
+ }
151
+ else {
152
+ const maxCount = Math.max(report.summary.critical, report.summary.high, report.summary.medium, report.summary.low, report.summary.info);
153
+ const BAR_W = 32;
154
+ const sevRow = (label, count, color) => {
155
+ const countStr = String(count).padStart(3);
156
+ const b = count > 0
157
+ ? color + mkBar(count, maxCount, BAR_W) + RESET
158
+ : DIM + "─".repeat(BAR_W) + RESET;
159
+ return boxRow(` ${color}${BOLD}${label.padEnd(10)}${RESET} ${countStr} ${b}`);
160
+ };
161
+ lines.push(sevRow("CRITICAL", report.summary.critical, SEVERITY_COLORS.critical));
162
+ lines.push(sevRow("HIGH", report.summary.high, SEVERITY_COLORS.high));
163
+ lines.push(sevRow("MEDIUM", report.summary.medium, SEVERITY_COLORS.medium));
164
+ lines.push(sevRow("LOW", report.summary.low, SEVERITY_COLORS.low));
165
+ lines.push(sevRow("INFO", report.summary.info, SEVERITY_COLORS.info));
166
+ if (report.suppressedCount && report.suppressedCount > 0) {
167
+ lines.push(boxBlank());
168
+ lines.push(boxRow(` ${DIM}${report.suppressedCount} finding(s) suppressed by policy / baseline${RESET}`));
169
+ }
170
+ }
171
+ lines.push(boxBot());
172
+ lines.push("");
173
+ }
174
+ // ── FINDINGS DETAIL ────────────────────────────────────────────────────────
119
175
  if (report.findings.length > 0) {
120
- lines.push(`${BOLD} Findings${RESET}`);
121
- lines.push(`${DIM} ${"─".repeat(50)}${RESET}`);
122
- // Sort by severity (critical first)
123
176
  const sorted = [...report.findings].sort((a, b) => severityRank(b.severity) - severityRank(a.severity));
124
- for (const finding of sorted) {
125
- lines.push("");
126
- lines.push(` ${SEVERITY_ICONS[finding.severity]} ${SEVERITY_COLORS[finding.severity]}${BOLD}[${finding.severity.toUpperCase()}]${RESET} ${finding.description}`);
127
- lines.push(` Rule: ${finding.rule}`);
128
- if (finding.file) {
129
- const location = finding.line
130
- ? `${finding.file}:${finding.line}`
131
- : finding.file;
132
- lines.push(` File: ${location}`);
177
+ lines.push(boxTop("FINDINGS"));
178
+ lines.push(boxBlank());
179
+ for (let i = 0; i < sorted.length; i++) {
180
+ const f = sorted[i];
181
+ const color = SEVERITY_COLORS[f.severity];
182
+ const label = `[${f.severity.toUpperCase()}]`; // e.g. "[CRITICAL]" = 10
183
+ const indent = " ".repeat(label.length + 2);
184
+ const avail = W - label.length - 4; // content width after indent
185
+ lines.push(boxRow(` ${color}${BOLD}${label}${RESET} ${BOLD}${trunc(f.rule, avail)}${RESET}`));
186
+ lines.push(boxRow(` ${indent}${trunc(f.description, avail)}`));
187
+ if (f.file) {
188
+ const loc = f.line ? `${f.file}:${f.line}` : f.file;
189
+ lines.push(boxRow(` ${indent}${DIM}${trunc(loc, avail)}${RESET}`));
133
190
  }
134
- if (finding.match) {
135
- lines.push(` Match: ${DIM}${finding.match}${RESET}`);
191
+ if (f.match) {
192
+ const matchTag = "match ";
193
+ lines.push(boxRow(` ${indent}${DIM}${matchTag}${RESET}${trunc(f.match, avail - matchTag.length)}`));
194
+ }
195
+ const fixTag = "fix ";
196
+ lines.push(boxRow(` ${indent}${DIM}${fixTag}${RESET}${trunc(f.recommendation, avail - fixTag.length)}`));
197
+ if (i < sorted.length - 1) {
198
+ lines.push(boxBlank());
199
+ lines.push(boxDot());
200
+ lines.push(boxBlank());
136
201
  }
137
- lines.push(` Fix: ${finding.recommendation}`);
138
202
  }
203
+ lines.push(boxBlank());
204
+ lines.push(boxBot());
139
205
  lines.push("");
140
206
  }
141
- // Trust Breakdown (v4.2)
207
+ // ── TRUST BREAKDOWN ────────────────────────────────────────────────────────
142
208
  if (report.trustBreakdown) {
143
209
  const tb = report.trustBreakdown;
144
- lines.push(`${BOLD} Trust Breakdown${RESET}`);
145
- lines.push(`${DIM} ${"─".repeat(50)}${RESET}`);
146
- const bar = (score) => {
147
- const filled = Math.round(score / 10);
148
- return "\u2588".repeat(filled) + "\u2591".repeat(10 - filled);
210
+ const BAR_W = 32;
211
+ const tbRow = (label, score) => {
212
+ const col = trustColor(score);
213
+ return boxRow(` ${label.padEnd(14)}${col}${mkBar(score, 100, BAR_W)}${RESET} ${col}${score}/100${RESET}`);
149
214
  };
150
- const color = (score) => score >= 80 ? "\x1b[32m" : score >= 50 ? "\x1b[33m" : "\x1b[31m";
151
- lines.push(` Publisher: ${color(tb.publisherTrust.score)}${bar(tb.publisherTrust.score)} ${tb.publisherTrust.score}/100${RESET}`);
152
- lines.push(` Code: ${color(tb.codeQuality.score)}${bar(tb.codeQuality.score)} ${tb.codeQuality.score}/100${RESET}`);
153
- lines.push(` Deps: ${color(tb.dependencyTrust.score)}${bar(tb.dependencyTrust.score)} ${tb.dependencyTrust.score}/100${RESET}`);
154
- lines.push(` Release: ${color(tb.releaseProcess.score)}${bar(tb.releaseProcess.score)} ${tb.releaseProcess.score}/100${RESET}`);
155
- lines.push(` ${BOLD}Overall: ${color(tb.overallScore)}${bar(tb.overallScore)} ${tb.overallScore}/100${RESET}`);
215
+ lines.push(boxTop("TRUST BREAKDOWN"));
216
+ lines.push(tbRow("Publisher", tb.publisherTrust.score));
217
+ lines.push(tbRow("Code", tb.codeQuality.score));
218
+ lines.push(tbRow("Dependencies", tb.dependencyTrust.score));
219
+ lines.push(tbRow("Release", tb.releaseProcess.score));
220
+ lines.push(boxDiv());
221
+ lines.push(tbRow("Overall", tb.overallScore));
222
+ lines.push(boxBot());
156
223
  lines.push("");
157
224
  }
158
- // Risk Dimensions (v4.5)
225
+ // ── RISK DIMENSIONS ────────────────────────────────────────────────────────
159
226
  if (report.riskDimensions) {
160
227
  const rd = report.riskDimensions;
161
- lines.push(`${BOLD} Risk Dimensions${RESET}`);
162
- lines.push(`${DIM} ${"─".repeat(50)}${RESET}`);
163
- const bar = (score) => {
164
- const filled = Math.round(score / 10);
165
- return "\u2588".repeat(filled) + "\u2591".repeat(10 - filled);
228
+ const BAR_W = 32;
229
+ const rdRow = (label, score) => {
230
+ const col = riskColor(score);
231
+ return boxRow(` ${label.padEnd(14)}${col}${mkBar(score, 100, BAR_W)}${RESET} ${col}${score}/100${RESET}`);
166
232
  };
167
- const color = (score) => score <= 20 ? "\x1b[32m" : score <= 50 ? "\x1b[33m" : "\x1b[31m";
168
- lines.push(` Code Risk: ${color(rd.codeRisk)}${bar(rd.codeRisk)} ${rd.codeRisk}/100${RESET}`);
169
- lines.push(` Dep Risk: ${color(rd.dependencyRisk)}${bar(rd.dependencyRisk)} ${rd.dependencyRisk}/100${RESET}`);
170
- lines.push(` Repo Trust: ${color(rd.repoTrust)}${bar(rd.repoTrust)} ${rd.repoTrust}/100${RESET}`);
171
- lines.push(` CI/CD Risk: ${color(rd.ciCdRisk)}${bar(rd.ciCdRisk)} ${rd.ciCdRisk}/100${RESET}`);
233
+ lines.push(boxTop("RISK DIMENSIONS"));
234
+ lines.push(rdRow("Code Risk", rd.codeRisk));
235
+ lines.push(rdRow("Dep Risk", rd.dependencyRisk));
236
+ lines.push(rdRow("Repo Trust", rd.repoTrust));
237
+ lines.push(rdRow("CI/CD Risk", rd.ciCdRisk));
172
238
  if (rd.threatIntelMatches > 0) {
173
- lines.push(` ${SEVERITY_COLORS.critical}Threat Intel: ${rd.threatIntelMatches} match(es)${RESET}`);
239
+ lines.push(boxRow(` ${SEVERITY_COLORS.critical}${BOLD}Threat Intel ${rd.threatIntelMatches} match(es)${RESET}`));
174
240
  }
175
- lines.push(` Confidence: ${Math.round(rd.confidence * 100)}%`);
241
+ lines.push(boxRow(` ${DIM}Confidence ${Math.round(rd.confidence * 100)}%${RESET}`));
242
+ lines.push(boxBot());
176
243
  lines.push("");
177
244
  }
178
- // Correlated Incidents (v4.2)
245
+ // ── CORRELATED INCIDENTS ───────────────────────────────────────────────────
179
246
  if (report.incidents && report.incidents.length > 0) {
180
- lines.push(`${BOLD} Correlated Incidents${RESET}`);
181
- lines.push(`${DIM} ${"─".repeat(50)}${RESET}`);
247
+ lines.push(boxTop("CORRELATED INCIDENTS"));
248
+ lines.push(boxBlank());
182
249
  for (const incident of report.incidents) {
183
250
  const conf = Math.round(incident.confidence * 100);
184
- lines.push("");
185
- lines.push(` ${SEVERITY_COLORS[incident.severity]}${BOLD}[${incident.severity.toUpperCase()}]${RESET} ${incident.name} (${conf}% confidence)`);
186
- lines.push(` ${DIM}${incident.narrative}${RESET}`);
187
- lines.push(` Indicators: ${incident.indicators.join(", ")}`);
251
+ const color = SEVERITY_COLORS[incident.severity];
252
+ const label = `[${incident.severity.toUpperCase()}]`;
253
+ lines.push(boxRow(` ${color}${BOLD}${label}${RESET} ${BOLD}${trunc(incident.name, W - label.length - 20)}${RESET} ${DIM}${conf}% confidence${RESET}`));
254
+ lines.push(boxRow(` ${DIM}${trunc(incident.narrative, W - 2)}${RESET}`));
255
+ lines.push(boxRow(` Indicators: ${DIM}${trunc(incident.indicators.join(", "), W - 14)}${RESET}`));
256
+ lines.push(boxBlank());
188
257
  }
258
+ lines.push(boxBot());
189
259
  lines.push("");
190
260
  }
191
- // Remediations (v4.6)
261
+ // ── REMEDIATION PLAN ───────────────────────────────────────────────────────
192
262
  if (report.remediations && report.remediations.length > 0) {
193
- lines.push(`${BOLD} Remediation Plan${RESET}`);
194
- lines.push(`${DIM} ${"─".repeat(50)}${RESET}`);
263
+ lines.push(boxTop("REMEDIATION PLAN"));
264
+ lines.push(boxBlank());
195
265
  for (const rem of report.remediations.slice(0, 5)) {
196
- const pColor = rem.priority === "critical" ? SEVERITY_COLORS.critical : rem.priority === "high" ? SEVERITY_COLORS.high : SEVERITY_COLORS.medium;
197
- lines.push(` ${pColor}[${rem.priority.toUpperCase()}]${RESET} ${rem.title}`);
266
+ const pColor = rem.priority === "critical" ? SEVERITY_COLORS.critical
267
+ : rem.priority === "high" ? SEVERITY_COLORS.high : SEVERITY_COLORS.medium;
268
+ const label = `[${rem.priority.toUpperCase()}]`;
269
+ lines.push(boxRow(` ${pColor}${BOLD}${label}${RESET} ${BOLD}${trunc(rem.title, W - label.length - 4)}${RESET}`));
198
270
  for (const step of rem.steps) {
199
- lines.push(` ${DIM}${step}${RESET}`);
271
+ lines.push(boxRow(` ${DIM}${trunc(step, W - 10)}${RESET}`));
200
272
  }
201
- lines.push("");
273
+ lines.push(boxBlank());
202
274
  }
275
+ lines.push(boxBot());
276
+ lines.push("");
203
277
  }
204
- // Recommendations
278
+ // ── RECOMMENDATIONS ────────────────────────────────────────────────────────
205
279
  if (report.recommendations.length > 0) {
206
- lines.push(`${BOLD} Recommendations${RESET}`);
207
- lines.push(`${DIM} ${"─".repeat(50)}${RESET}`);
280
+ lines.push(boxTop("RECOMMENDATIONS"));
281
+ lines.push(boxBlank());
208
282
  for (const rec of report.recommendations) {
209
- lines.push(` ${rec}`);
283
+ lines.push(boxRow(` ${trunc(rec, W - 5)}`));
210
284
  }
285
+ lines.push(boxBlank());
286
+ lines.push(boxBot());
211
287
  lines.push("");
212
288
  }
213
289
  return lines.join("\n");
@@ -350,7 +426,7 @@ function formatSarif(report) {
350
426
  tool: {
351
427
  driver: {
352
428
  name: "supply-chain-guard",
353
- version: "4.8.0",
429
+ version: "5.1.0",
354
430
  informationUri: "https://github.com/homeofe/supply-chain-guard",
355
431
  rules,
356
432
  },
@@ -412,7 +488,7 @@ function formatSbom(report) {
412
488
  timestamp: report.timestamp,
413
489
  tools: {
414
490
  components: [
415
- { type: "application", name: "supply-chain-guard", version: "4.9.0" },
491
+ { type: "application", name: "supply-chain-guard", version: "5.1.0" },
416
492
  ],
417
493
  },
418
494
  component: {
@@ -564,7 +640,7 @@ footer{text-align:center;padding:24px;color:#94a3b8;font-size:13px}
564
640
  ` : ""}
565
641
 
566
642
  <footer>
567
- Generated by <a href="https://github.com/homeofe/supply-chain-guard">supply-chain-guard</a> v4.8.0
643
+ Generated by <a href="https://github.com/homeofe/supply-chain-guard">supply-chain-guard</a> v5.1.0
568
644
  </footer>
569
645
  </div>
570
646
  <script>
@@ -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":";AAAA;;;GAGG;;AA2BH,oCAmBC;AA5CD,6CAAyC;AAGzC,MAAM,eAAe,GAA6B;IAChD,QAAQ,EAAE,UAAU,EAAE,aAAa;IACnC,IAAI,EAAE,UAAU,EAAM,MAAM;IAC5B,MAAM,EAAE,UAAU,EAAI,SAAS;IAC/B,GAAG,EAAE,UAAU,EAAO,OAAO;IAC7B,IAAI,EAAE,UAAU,EAAM,QAAQ;CAC/B,CAAC;AACF,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAM,GAAG,GAAG,SAAS,CAAC;AAEtB,MAAM,cAAc,GAA6B;IAC/C,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,GAAG;CACV,CAAC;AAEF;;GAEG;AACH,SAAgB,YAAY,CAC1B,MAAkB,EAClB,MAAgE;IAEhE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,MAAkB;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,MAAkB;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,8EAA8E;IAC9E,MAAM,OAAO,GAAG,OAAO,CAAC;IACxB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,wDAAwD;IAEtE,8EAA8E;IAC9E,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAClD,qDAAqD;IACrD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAC9C,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,8DAA8D;IAC9D,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CACrC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAE1D,8EAA8E;IAC9E,MAAM,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC9C,MAAM,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC;QACzB,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC9B,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7D,CAAC,CAAC;IACF,MAAM,MAAM,GAAI,GAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAClD,MAAM,MAAM,GAAI,GAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAClD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAClD,MAAM,MAAM,GAAI,GAAI,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IAClE,kFAAkF;IAClF,MAAM,MAAM,GAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAErD,8EAA8E;IAC9E,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CACnC,KAAK,KAAK,CAAC,CAAI,CAAC,CAAC,UAAU,CAAE,QAAQ;QACrC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAE,CAAC,CAAC,UAAU,CAAE,OAAO;YACpC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAE,CAAC,CAAC,UAAU,CAAE,SAAS;gBACtC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAE,CAAC,CAAC,UAAU,CAAE,MAAM;oBACnC,CAAC,CAAC,UAAU,CAAC,CAAiB,aAAa;IAE7C,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CACnC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAEnE,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAClC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAEnE,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;QAC1D,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,8EAA8E;IAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IACvC,CAAC;QACC,MAAM,KAAK,GAAG,sBAAsB,CAAC,CAAU,mBAAmB;QAClE,MAAM,GAAG,GAAK,IAAI,OAAO,IAAI,CAAC,CAAiB,8BAA8B;QAC7E,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,8EAA8E;IAC9E,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAC3C,KAAK,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC;IAE7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,QAAQ,MAAM,CAAC,OAAO,CAAC,YAAY,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC;IACpI,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,8EAA8E;IAC9E,CAAC;QACC,MAAM,EAAE,GAAM,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;QACrF,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC;QAE/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,KAAK,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;QAExG,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5I,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,KAAK,WAAW,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,KAAK,6BAA6B,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC;QAC1H,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,CAAC;QACC,MAAM,aAAa,GACjB,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI;YAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAI,MAAM,CAAC,OAAO,CAAC,GAAG,GAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAErE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAEvC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,yBAAyB,KAAK,EAAE,CAAC,CAAC,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,EAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAChE,CAAC;YACF,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,KAAa,EAAE,EAAE;gBAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC;oBACjB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK;oBAC/C,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;gBACpC,OAAO,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,KAAK,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7E,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,eAAe,8CAA8C,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC9D,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,GAAQ,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,KAAK,GAAI,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAG,yBAAyB;YAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAc,6BAA6B;YAE/E,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YAChG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,SAAS,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACvG,CAAC;YACD,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAK,MAAM,CAAC,cAAc,CAAC;QACnC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,OAAO,KAAK,EAAE,CAAC,CAAC;QAC9G,CAAC,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAK,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAU,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAO,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAM,MAAM,CAAC,cAAc,CAAC;QACpC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,OAAO,KAAK,EAAE,CAAC,CAAC;QAC9G,CAAC,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,IAAI,EAAE,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,eAAe,CAAC,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC,kBAAkB,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC;QACvH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,eAAe,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1J,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YACnG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ;gBACnE,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YACnH,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAkB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,UAAU,MAAM,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CACR,wBAAwB,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CACnF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,UAAU;IACV,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CACR,WAAW,MAAM,CAAC,OAAO,CAAC,YAAY,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,SAAS,CAChF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,WAAW;IACX,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC9D,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,QAAQ,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CACtG,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI;oBAC3B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;oBACnC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjB,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,IAAI,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,yFAAyF,CAC1F,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,QAAkB;IACpC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;QACnB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,MAAkB;IACrC,MAAM,KAAK,GAIN,EAAE,CAAC;IACR,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,MAAM,OAAO,GAAmC,EAAE,CAAC;IAEnD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,OAAO,CAAC,IAAI;gBAChB,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE;gBAC/C,oBAAoB,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;aAC9D,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAA4B;YACtC,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YACtC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE;SACvC,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAClC,CAAC;YACD,MAAM,CAAC,SAAS,GAAG;gBACjB;oBACE,gBAAgB,EAAE;wBAChB,gBAAgB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE;wBACvC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACpC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,OAAO,EAAE,sGAAsG;QAC/G,OAAO,EAAE,OAAgB;QACzB,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN,IAAI,EAAE,oBAAoB;wBAC1B,OAAO,EAAE,OAAO;wBAChB,cAAc,EAAE,+CAA+C;wBAC/D,KAAK;qBACN;iBACF;gBACD,OAAO;aACR;SACF;KACF,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,QAAkB;IACtC,MAAM,KAAK,GAA6B;QACtC,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;KACR,CAAC;IACF,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,MAAkB;IACpC,2DAA2D;IAC3D,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,2DAA2D;QAC3D,MAAM,SAAS,GAAG;YAChB,GAAG,MAAM,CAAC,YAAY;YACtB,eAAe,EAAE;gBACf,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,IAAI,EAAE,CAAC;gBAC9C,GAAG,MAAM,CAAC,QAAQ;qBACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;qBAC5B,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;oBACtB,SAAS,EAAE,eAAe,GAAG,EAAE;oBAC/B,EAAE,EAAE,OAAO,CAAC,IAAI;oBAChB,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;oBACtC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC1D,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,cAAc,EAAE,OAAO,CAAC,cAAc;oBACtC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;iBACtE,CAAC,CAAC;aACN;SACF,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,8DAA8D;IAC9D,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,WAAW;QACtB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,YAAY,IAAA,wBAAU,GAAE,EAAE;QACxC,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;YACR,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE;iBACtE;aACF;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,aAAsB;gBAC5B,IAAI,EAAE,MAAM,CAAC,MAAM;gBACnB,SAAS,EAAE,QAAQ;aACpB;SACF;QACD,UAAU,EAAE,EAAe;QAC3B,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACtD,SAAS,EAAE,QAAQ,GAAG,EAAE;YACxB,EAAE,EAAE,OAAO,CAAC,IAAI;YAChB,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;YACtC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC1D,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;SAC7B,CAAC,CAAC;KACJ,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,MAAkB;IACpC,MAAM,cAAc,GAA6B;QAC/C,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KAChB,CAAC;IAEF,MAAM,UAAU,GAA6B;QAC3C,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KAChB,CAAC;IAEF,MAAM,UAAU,GACd,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9B,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YAChC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;gBAChC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;oBAChC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC9D,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM;SACxB,GAAG,CACF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;yCACyB,CAAC,CAAC,QAAQ;kDACD,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC7F,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YAClB,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;0BAClD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;UACnD,CACL;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;SACvC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;;;qCAK4B,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;;;;;;;;;kDASZ,UAAU;;6EAEiB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;sBAwBjE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC3B,MAAM,CAAC,QAAQ;oBACf,MAAM,CAAC,SAAS;wBACZ,MAAM,CAAC,UAAU;;;;;;+BAMV,MAAM,CAAC,KAAK;;;;iCAIV,MAAM,CAAC,SAAS;iCAChB,MAAM,CAAC,OAAO,CAAC,YAAY,qBAAqB,MAAM,CAAC,OAAO,CAAC,UAAU;;;;;MAKpG,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,wCAAwC,UAAU,CAAC,QAAQ,UAAU,cAAc,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,kBAAkB,CAAC,CAAC,CAAC,EAAE;MACxM,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,wCAAwC,UAAU,CAAC,IAAI,UAAU,cAAc,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE;MAChL,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wCAAwC,UAAU,CAAC,MAAM,UAAU,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC,EAAE;MAC5L,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,wCAAwC,UAAU,CAAC,GAAG,UAAU,cAAc,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE;MAC1K,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,wCAAwC,UAAU,CAAC,IAAI,UAAU,cAAc,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE;MAChL,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,EAAE;;;IAGtH,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;oBAEb,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;eAW3B,YAAY;;;GAGxB,CAAC,CAAC,CAAC,EAAE;;IAEJ,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;;UAG9B,QAAQ;;GAEf,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;QAgBA,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "supply-chain-guard",
3
- "version": "5.0.1",
3
+ "version": "5.1.0",
4
4
  "description": "Open-source supply-chain security scanner for npm, PyPI, Cargo, Go, Docker, VS Code extensions, GitHub Actions, IaC and Solana C2. Detects GlassWorm, Shai-Hulud, PPE attacks, dependency confusion and 120+ malware indicators. Generates CycloneDX 1.6 SBOMs and verifies SLSA provenance.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",