@kevinrabun/judges 3.20.14 → 3.22.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 (93) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/dist/api.d.ts +42 -1
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +49 -1
  5. package/dist/api.js.map +1 -1
  6. package/dist/ast/taint-tracker.d.ts +3 -1
  7. package/dist/ast/taint-tracker.d.ts.map +1 -1
  8. package/dist/ast/taint-tracker.js +523 -12
  9. package/dist/ast/taint-tracker.js.map +1 -1
  10. package/dist/cli.d.ts +13 -0
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +124 -19
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/benchmark.d.ts +28 -0
  15. package/dist/commands/benchmark.d.ts.map +1 -1
  16. package/dist/commands/benchmark.js +1058 -1
  17. package/dist/commands/benchmark.js.map +1 -1
  18. package/dist/config.d.ts +17 -0
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +88 -0
  21. package/dist/config.js.map +1 -1
  22. package/dist/dedup.d.ts +23 -0
  23. package/dist/dedup.d.ts.map +1 -1
  24. package/dist/dedup.js +123 -0
  25. package/dist/dedup.js.map +1 -1
  26. package/dist/evaluators/authentication.d.ts +2 -2
  27. package/dist/evaluators/authentication.d.ts.map +1 -1
  28. package/dist/evaluators/authentication.js +26 -2
  29. package/dist/evaluators/authentication.js.map +1 -1
  30. package/dist/evaluators/cybersecurity.d.ts +2 -2
  31. package/dist/evaluators/cybersecurity.d.ts.map +1 -1
  32. package/dist/evaluators/cybersecurity.js +58 -5
  33. package/dist/evaluators/cybersecurity.js.map +1 -1
  34. package/dist/evaluators/framework-safety.d.ts.map +1 -1
  35. package/dist/evaluators/framework-safety.js +855 -365
  36. package/dist/evaluators/framework-safety.js.map +1 -1
  37. package/dist/evaluators/index.d.ts +1 -1
  38. package/dist/evaluators/index.d.ts.map +1 -1
  39. package/dist/evaluators/index.js +6 -2
  40. package/dist/evaluators/index.js.map +1 -1
  41. package/dist/evaluators/performance.d.ts +2 -2
  42. package/dist/evaluators/performance.d.ts.map +1 -1
  43. package/dist/evaluators/performance.js +33 -4
  44. package/dist/evaluators/performance.js.map +1 -1
  45. package/dist/evaluators/project.d.ts.map +1 -1
  46. package/dist/evaluators/project.js +223 -13
  47. package/dist/evaluators/project.js.map +1 -1
  48. package/dist/evaluators/shared.d.ts +31 -3
  49. package/dist/evaluators/shared.d.ts.map +1 -1
  50. package/dist/evaluators/shared.js +145 -11
  51. package/dist/evaluators/shared.js.map +1 -1
  52. package/dist/evaluators/v2.d.ts.map +1 -1
  53. package/dist/evaluators/v2.js +8 -0
  54. package/dist/evaluators/v2.js.map +1 -1
  55. package/dist/formatters/csv.d.ts +17 -0
  56. package/dist/formatters/csv.d.ts.map +1 -0
  57. package/dist/formatters/csv.js +54 -0
  58. package/dist/formatters/csv.js.map +1 -0
  59. package/dist/language-patterns.d.ts +136 -0
  60. package/dist/language-patterns.d.ts.map +1 -1
  61. package/dist/language-patterns.js +155 -1
  62. package/dist/language-patterns.js.map +1 -1
  63. package/dist/patches/index.d.ts.map +1 -1
  64. package/dist/patches/index.js +210 -0
  65. package/dist/patches/index.js.map +1 -1
  66. package/dist/presets.d.ts +14 -0
  67. package/dist/presets.d.ts.map +1 -1
  68. package/dist/presets.js +72 -0
  69. package/dist/presets.js.map +1 -1
  70. package/dist/scoring.d.ts.map +1 -1
  71. package/dist/scoring.js +43 -4
  72. package/dist/scoring.js.map +1 -1
  73. package/dist/tools/register-fix.d.ts +6 -0
  74. package/dist/tools/register-fix.d.ts.map +1 -0
  75. package/dist/tools/register-fix.js +153 -0
  76. package/dist/tools/register-fix.js.map +1 -0
  77. package/dist/tools/register-workflow.d.ts.map +1 -1
  78. package/dist/tools/register-workflow.js +79 -0
  79. package/dist/tools/register-workflow.js.map +1 -1
  80. package/dist/tools/register-workspace.d.ts +3 -0
  81. package/dist/tools/register-workspace.d.ts.map +1 -0
  82. package/dist/tools/register-workspace.js +215 -0
  83. package/dist/tools/register-workspace.js.map +1 -0
  84. package/dist/tools/register.d.ts +1 -1
  85. package/dist/tools/register.d.ts.map +1 -1
  86. package/dist/tools/register.js +5 -1
  87. package/dist/tools/register.js.map +1 -1
  88. package/dist/tools/schemas.d.ts +2 -2
  89. package/dist/types.d.ts +24 -2
  90. package/dist/types.d.ts.map +1 -1
  91. package/judgesrc.schema.json +17 -2
  92. package/package.json +1 -1
  93. package/server.json +30 -2
@@ -6,6 +6,7 @@
6
6
  // ──────────────────────────────────────────────────────────────────────────────
7
7
  import { analyzeCrossFileTaint } from "../ast/index.js";
8
8
  import { applyConfidenceThreshold, isAbsenceBasedFinding } from "../scoring.js";
9
+ import { crossFileDedup } from "../dedup.js";
9
10
  import { LRUCache, contentHash } from "../cache.js";
10
11
  // ─── Module-level tribunal result cache ──────────────────────────────────────
11
12
  const tribunalResultCache = new LRUCache(256);
@@ -235,6 +236,202 @@ function applyProjectWideAbsenceResolution(findings, projectWideCategories) {
235
236
  return f;
236
237
  });
237
238
  }
239
+ // ─── Cross-File Shared State & Type Safety Analysis ──────────────────────────
240
+ /**
241
+ * Detect exported mutable state (let/var bindings, mutable objects) that is
242
+ * imported and potentially written from multiple files — a common source of
243
+ * race conditions and hard-to-debug state corruption.
244
+ */
245
+ function detectSharedMutableState(files) {
246
+ const findings = [];
247
+ // Find exported `let`/`var` variables (mutable by definition)
248
+ const mutableExports = new Map();
249
+ // Use a RegExp that matches `export let` or `export var` variable declarations
250
+ const mutableExportRe = /^[ \t]*export\s+(?:let|var)\s+(\w+)/;
251
+ for (const f of files) {
252
+ const lines = f.content.split("\n");
253
+ for (let i = 0; i < lines.length; i++) {
254
+ const m = mutableExportRe.exec(lines[i]);
255
+ if (m) {
256
+ const key = `${f.path}:${m[1]}`;
257
+ mutableExports.set(key, { file: f.path, line: i + 1, name: m[1] });
258
+ }
259
+ }
260
+ }
261
+ // Find files that import and mutate these
262
+ for (const [key, info] of mutableExports) {
263
+ const importers = [];
264
+ const nameEsc = info.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
265
+ const importRe = new RegExp(`import\\s+\\{[^}]*\\b${nameEsc}\\b[^}]*\\}\\s+from`, "m");
266
+ const writeRe = new RegExp(`\\b${nameEsc}\\s*(?:=(?!=)|\\+\\+|--|\\+=|-=|\\*=|\\/=|\\|=|&=)`, "m");
267
+ for (const f of files) {
268
+ if (f.path === info.file)
269
+ continue;
270
+ if (importRe.test(f.content) && writeRe.test(f.content)) {
271
+ importers.push(f.path);
272
+ }
273
+ }
274
+ if (importers.length > 0) {
275
+ findings.push({
276
+ ruleId: "STATE-001",
277
+ severity: "high",
278
+ title: `Shared mutable export \`${info.name}\` modified across files`,
279
+ description: `\`${info.name}\` is exported as \`let\`/\`var\` from ${info.file} (line ${info.line}) and mutated ` +
280
+ `in ${importers.length} other file(s): ${importers.join(", ")}. ` +
281
+ `Shared mutable state across modules causes race conditions, non-deterministic behavior, ` +
282
+ `and makes testing extremely difficult.`,
283
+ lineNumbers: [info.line],
284
+ recommendation: "Replace shared mutable state with an immutable export + setter function, use a state management pattern " +
285
+ "(e.g., event bus, Redux store), or pass state explicitly through function parameters.",
286
+ reference: "CWE-362: Concurrent Execution Using Shared Resource with Improper Synchronization",
287
+ confidence: 0.85,
288
+ });
289
+ }
290
+ }
291
+ // Detect exported mutable singleton patterns (module-level objects with mutation methods)
292
+ for (const f of files) {
293
+ if (f.language !== "typescript" && f.language !== "javascript")
294
+ continue;
295
+ // Match `export const state = { ... }` that is later mutated via `state.x = ...`
296
+ const singletonRe = /^[ \t]*export\s+const\s+(\w+)\s*(?::\s*\w[^=]*)?\s*=\s*\{/gm;
297
+ let sm;
298
+ while ((sm = singletonRe.exec(f.content)) !== null) {
299
+ const objName = sm[1];
300
+ const nameEsc = objName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
301
+ const mutationRe = new RegExp(`\\b${nameEsc}\\.\\w+\\s*=(?!=)`, "m");
302
+ // Check if any other file imports and mutates this object
303
+ const mutators = [];
304
+ const importRe = new RegExp(`import\\s+\\{[^}]*\\b${nameEsc}\\b[^}]*\\}\\s+from`, "m");
305
+ for (const other of files) {
306
+ if (other.path === f.path)
307
+ continue;
308
+ if (importRe.test(other.content) && mutationRe.test(other.content)) {
309
+ mutators.push(other.path);
310
+ }
311
+ }
312
+ if (mutators.length > 0) {
313
+ const lineNum = f.content.substring(0, sm.index).split("\n").length;
314
+ findings.push({
315
+ ruleId: "STATE-002",
316
+ severity: "high",
317
+ title: `Exported object \`${objName}\` mutated from other modules`,
318
+ description: `\`${objName}\` is exported from ${f.path} (line ${lineNum}) and its properties are ` +
319
+ `mutated in: ${mutators.join(", ")}. Mutating imported objects breaks encapsulation ` +
320
+ `and creates hidden coupling between modules.`,
321
+ lineNumbers: [lineNum],
322
+ recommendation: "Freeze the exported object with Object.freeze(), expose setter functions, or use a " +
323
+ "centralized state management pattern instead of direct property mutation.",
324
+ confidence: 0.8,
325
+ });
326
+ }
327
+ }
328
+ }
329
+ return findings;
330
+ }
331
+ /**
332
+ * Detect type safety gaps across file boundaries — exported functions or
333
+ * values with `any` type, untyped parameters crossing module boundaries,
334
+ * and inconsistent null checking patterns.
335
+ */
336
+ function detectTypeSafetyGaps(files) {
337
+ const findings = [];
338
+ // Only applicable to TypeScript files
339
+ const tsFiles = files.filter((f) => f.language === "typescript");
340
+ if (tsFiles.length < 2)
341
+ return findings;
342
+ // Find exported functions with `any` in their signatures
343
+ const anyExportRe = /^[ \t]*export\s+(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(?::\s*([^\n{]+))?/gm;
344
+ for (const f of tsFiles) {
345
+ let m;
346
+ anyExportRe.lastIndex = 0;
347
+ while ((m = anyExportRe.exec(f.content)) !== null) {
348
+ const fnName = m[1];
349
+ const params = m[2] ?? "";
350
+ const retType = m[3] ?? "";
351
+ const hasAny = /\bany\b/.test(params) || /\bany\b/.test(retType);
352
+ if (!hasAny)
353
+ continue;
354
+ // Check if other files import this function
355
+ const nameEsc = fnName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
356
+ const importers = tsFiles.filter((o) => o.path !== f.path && new RegExp(`import\\s+\\{[^}]*\\b${nameEsc}\\b[^}]*\\}\\s+from`, "m").test(o.content));
357
+ if (importers.length > 0) {
358
+ const lineNum = f.content.substring(0, m.index).split("\n").length;
359
+ findings.push({
360
+ ruleId: "TYPE-001",
361
+ severity: "medium",
362
+ title: `Exported function \`${fnName}\` uses \`any\` type`,
363
+ description: `Function \`${fnName}\` exported from ${f.path} (line ${lineNum}) has \`any\` in its signature ` +
364
+ `and is imported by ${importers.length} file(s). Using \`any\` at module boundaries defeats ` +
365
+ `TypeScript's type safety and can introduce type errors that propagate across the project.`,
366
+ lineNumbers: [lineNum],
367
+ recommendation: "Replace `any` with a specific type, `unknown`, or a generic type parameter. " +
368
+ "At minimum, use `unknown` and narrow the type with runtime checks.",
369
+ reference: "TypeScript Handbook: The any type",
370
+ confidence: 0.75,
371
+ });
372
+ }
373
+ }
374
+ }
375
+ return findings;
376
+ }
377
+ /**
378
+ * Detect environment variables used across multiple files without centralized
379
+ * validation. Scattered env var access with no single point of validation
380
+ * leads to runtime crashes and configuration drift.
381
+ */
382
+ function detectScatteredEnvAccess(files) {
383
+ const findings = [];
384
+ // Track env var access per file
385
+ const envVarUsage = new Map(); // envVar → set of file paths
386
+ const envAccessPatterns = [
387
+ { pattern: /process\.env\.(\w+)/g, lang: ["typescript", "javascript"] },
388
+ { pattern: /os\.environ(?:\.get)?\s*\[\s*['"](\w+)['"]\s*\]/g, lang: ["python"] },
389
+ { pattern: /os\.environ\.get\s*\(\s*['"](\w+)['"]/g, lang: ["python"] },
390
+ { pattern: /os\.Getenv\s*\(\s*"(\w+)"/g, lang: ["go"] },
391
+ { pattern: /System\.getenv\s*\(\s*"(\w+)"/g, lang: ["java"] },
392
+ { pattern: /Environment\.GetEnvironmentVariable\s*\(\s*"(\w+)"/g, lang: ["csharp"] },
393
+ ];
394
+ // Detect config files (these centralize env access, which is the desired pattern)
395
+ const configFilePattern = /(?:config|settings|env|environment)\.\w+$/i;
396
+ const configFiles = new Set(files.filter((f) => configFilePattern.test(f.path)).map((f) => f.path));
397
+ for (const f of files) {
398
+ if (configFiles.has(f.path))
399
+ continue; // Skip config files — centralized access is good
400
+ for (const ap of envAccessPatterns) {
401
+ if (!ap.lang.includes(f.language))
402
+ continue;
403
+ ap.pattern.lastIndex = 0;
404
+ let m;
405
+ while ((m = ap.pattern.exec(f.content)) !== null) {
406
+ const envVar = m[1];
407
+ if (!envVarUsage.has(envVar))
408
+ envVarUsage.set(envVar, new Set());
409
+ envVarUsage.get(envVar).add(f.path);
410
+ }
411
+ }
412
+ }
413
+ // Flag env vars accessed in 3+ non-config files without centralized validation
414
+ const scattered = [...envVarUsage.entries()].filter(([, paths]) => paths.size >= 3);
415
+ if (scattered.length > 0) {
416
+ const examples = scattered
417
+ .slice(0, 5)
418
+ .map(([v, paths]) => `${v} (${paths.size} files)`)
419
+ .join(", ");
420
+ findings.push({
421
+ ruleId: "CONFIG-001",
422
+ severity: "medium",
423
+ title: "Environment variables accessed from multiple files without centralization",
424
+ description: `${scattered.length} env variable(s) are accessed directly in 3+ files each: ${examples}. ` +
425
+ `Scattered env access leads to missing validation, inconsistent defaults, and runtime crashes ` +
426
+ `when variables are undefined.`,
427
+ recommendation: "Create a centralized config module that validates all env vars at startup (e.g., using envalid, " +
428
+ "zod, or a Config class), then import typed config values instead of accessing process.env directly.",
429
+ reference: "12-Factor App: Config",
430
+ confidence: 0.7,
431
+ });
432
+ }
433
+ return findings;
434
+ }
238
435
  // ─── Project Evaluation ───────────────────────────────────────────────────────
239
436
  /**
240
437
  * Evaluate multiple files as a project. Runs the full tribunal on each file,
@@ -309,6 +506,10 @@ export function evaluateProject(runner, files, context, options) {
309
506
  recommendation: "Standardize on a single error handling strategy across the project.",
310
507
  });
311
508
  }
509
+ // ── Cross-file state, type-safety & config analysis ────────────────────
510
+ architecturalFindings.push(...detectSharedMutableState(files));
511
+ architecturalFindings.push(...detectTypeSafetyGaps(files));
512
+ architecturalFindings.push(...detectScatteredEnvAccess(files));
312
513
  const filteredArchitecturalFindings = applyConfidenceThreshold(architecturalFindings, options);
313
514
  // Check for circular-looking dependency indicators
314
515
  const importMap = new Map();
@@ -437,24 +638,33 @@ export function evaluateProject(runner, files, context, options) {
437
638
  }
438
639
  // Overall scores
439
640
  const allFindings = fileResults.flatMap((f) => f.findings);
440
- // ── Project-level absence dedup ─────────────────────────────────────────
441
- // Absence-based findings ("No health check", "No rate limiting", etc.) fire
442
- // on every file that lacks the pattern. At project level we only want ONE
443
- // instance per rule title the one with the highest confidence to avoid
444
- // flooding the report with duplicates.
445
- const deduplicatedFindings = [];
641
+ // ── Project-level cross-file dedup ──────────────────────────────────────
642
+ // 1. Absence-based findings fire on every file missing the pattern.
643
+ // Keep only the highest-confidence instance per title.
644
+ // 2. Concrete findings with the same known topic + ruleId across files
645
+ // are consolidated into a single representative finding.
446
646
  const absenceBestByTitle = new Map();
447
- for (const f of allFindings) {
448
- if (isAbsenceBasedFinding(f)) {
449
- const existing = absenceBestByTitle.get(f.title);
450
- if (!existing || (f.confidence ?? 0) > (existing.confidence ?? 0)) {
451
- absenceBestByTitle.set(f.title, f);
647
+ const nonAbsenceFileFindings = [];
648
+ // Partition each file's findings into absence vs non-absence
649
+ for (const fr of fileResults) {
650
+ const nonAbsence = [];
651
+ for (const f of fr.findings) {
652
+ if (isAbsenceBasedFinding(f)) {
653
+ const existing = absenceBestByTitle.get(f.title);
654
+ if (!existing || (f.confidence ?? 0) > (existing.confidence ?? 0)) {
655
+ absenceBestByTitle.set(f.title, f);
656
+ }
657
+ }
658
+ else {
659
+ nonAbsence.push(f);
452
660
  }
453
661
  }
454
- else {
455
- deduplicatedFindings.push(f);
662
+ if (nonAbsence.length > 0) {
663
+ nonAbsenceFileFindings.push({ path: fr.path, findings: nonAbsence });
456
664
  }
457
665
  }
666
+ // Cross-file dedup on concrete findings
667
+ const deduplicatedFindings = crossFileDedup(nonAbsenceFileFindings);
458
668
  deduplicatedFindings.push(...absenceBestByTitle.values());
459
669
  // ── Cross-file taint analysis ───────────────────────────────────────────
460
670
  const crossFileTaintFlows = analyzeCrossFileTaint(files);
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/evaluators/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/evaluators/project.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,uEAAuE;AACvE,iFAAiF;AAGjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpD,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,IAAI,QAAQ,CAAkB,GAAG,CAAC,CAAC;AAE/D,qDAAqD;AACrD,MAAM,UAAU,iBAAiB;IAC/B,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC;AAUD,iFAAiF;AAEjF,gFAAgF;AAChF,MAAM,8BAA8B,GAK/B;IACH;QACE,QAAQ,EAAE,gBAAgB;QAC1B,cAAc,EACZ,4IAA4I;QAC9I,cAAc,EAAE,yFAAyF;QACzG,mBAAmB,EAAE,CAAC,GAAG;KAC1B;IACD;QACE,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EACZ,kIAAkI;QACpI,cAAc,EAAE,iDAAiD;QACjE,mBAAmB,EAAE,CAAC,IAAI;KAC3B;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,cAAc,EAAE,2FAA2F;QAC3G,cAAc,EAAE,yCAAyC;QACzD,mBAAmB,EAAE,CAAC,GAAG;KAC1B;IACD;QACE,QAAQ,EAAE,iBAAiB;QAC3B,cAAc,EAAE,wFAAwF;QACxG,cAAc,EAAE,6BAA6B;QAC7C,mBAAmB,EAAE,CAAC,IAAI;KAC3B;IACD;QACE,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EACZ,sHAAsH;QACxH,cAAc,EAAE,6CAA6C;QAC7D,mBAAmB,EAAE,CAAC,GAAG;KAC1B;IACD;QACE,QAAQ,EAAE,gBAAgB;QAC1B,cAAc,EACZ,uGAAuG;QACzG,cAAc,EAAE,gDAAgD;QAChE,mBAAmB,EAAE,CAAC,IAAI;KAC3B;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,cAAc,EAAE,6EAA6E;QAC7F,cAAc,EAAE,+BAA+B;QAC/C,mBAAmB,EAAE,CAAC,IAAI;KAC3B;IACD;QACE,QAAQ,EAAE,cAAc;QACxB,cAAc,EAAE,uFAAuF;QACvG,cAAc,EAAE,8CAA8C;QAC9D,mBAAmB,EAAE,CAAC,GAAG;KAC1B;IACD;QACE,QAAQ,EAAE,mBAAmB;QAC7B,cAAc,EAAE,+EAA+E;QAC/F,cAAc,EAAE,2CAA2C;QAC3D,mBAAmB,EAAE,CAAC,GAAG;KAC1B;IACD;QACE,QAAQ,EAAE,MAAM;QAChB,cAAc,EAAE,gEAAgE;QAChF,cAAc,EAAE,qBAAqB;QACrC,mBAAmB,EAAE,CAAC,IAAI;KAC3B;IACD;QACE,QAAQ,EAAE,oBAAoB;QAC9B,cAAc,EAAE,0EAA0E;QAC1F,cAAc,EAAE,oDAAoD;QACpE,mBAAmB,EAAE,CAAC,IAAI;KAC3B;IACD;QACE,QAAQ,EAAE,oBAAoB;QAC9B,cAAc,EAAE,kFAAkF;QAClG,cAAc,EAAE,6DAA6D;QAC7E,mBAAmB,EAAE,CAAC,GAAG;KAC1B;CACF,CAAC;AAEF;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,KAAiE;IAEjE,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,gCAAgC;IAEnF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACzC,6CAA6C;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC7C,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACtC,gCAAgC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,oEAAoE;IACpE,gCAAgC;IAChC,MAAM,qBAAqB,GAAG,qDAAqD,CAAC;IAEpF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE9C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;QAElD,IAAI,KAAK,CAAC;QACV,qBAAqB,CAAC,SAAS,GAAG,CAAC,CAAC;QAEpC,oCAAoC;QACpC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,wBAAwB;YACxB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAEvD,sCAAsC;YACtC,MAAM,eAAe,GACnB,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEzG,IAAI,CAAC,eAAe;gBAAE,SAAS;YAE/B,4DAA4D;YAC5D,KAAK,MAAM,GAAG,IAAI,8BAA8B,EAAE,CAAC;gBACjD,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;oBAC7C,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yDAAyD;AACzD,SAAS,mBAAmB,CAAC,GAAW,EAAE,UAAkB;IAC1D,4BAA4B;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/D,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,QAAmB,EAAE,mBAAgC;IACtF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,GAAG,IAAI,8BAA8B,EAAE,CAAC;YACjD,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5E,UAAU,IAAI,GAAG,CAAC,mBAAmB,CAAC;gBACtC,MAAM,CAAC,gDAAgD;YACzD,CAAC;QACH,CAAC;QAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC;YACxC,OAAO;gBACL,GAAG,CAAC;gBACJ,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;gBAC9D,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,yEAAyE;aAC/G,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,+BAA+B,CACtC,KAAiE;IAEjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,8BAA8B,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iCAAiC,CAAC,QAAmB,EAAE,qBAAkC;IAChG,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAExC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,GAAG,IAAI,8BAA8B,EAAE,CAAC;YACjD,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9E,kFAAkF;gBAClF,UAAU,IAAI,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC;gBAC5C,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC;YACxC,OAAO;gBACL,GAAG,CAAC;gBACJ,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;gBAC9D,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,sEAAsE;aAC5G,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,KAAiE;IACjG,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,8DAA8D;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwD,CAAC;IACvF,+EAA+E;IAC/E,MAAM,eAAe,GAAG,qCAAqC,CAAC;IAE9D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;QACzC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,wBAAwB,OAAO,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,OAAO,oDAAoD,EAAE,GAAG,CAAC,CAAC;QAEnG,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;gBAAE,SAAS;YACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,2BAA2B,IAAI,CAAC,IAAI,0BAA0B;gBACrE,WAAW,EACT,KAAK,IAAI,CAAC,IAAI,0CAA0C,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,gBAAgB;oBACpG,MAAM,SAAS,CAAC,MAAM,mBAAmB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACjE,0FAA0F;oBAC1F,wCAAwC;gBAC1C,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxB,cAAc,EACZ,0GAA0G;oBAC1G,uFAAuF;gBACzF,SAAS,EAAE,mFAAmF;gBAC9F,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY;YAAE,SAAS;QACzE,iFAAiF;QACjF,MAAM,WAAW,GAAG,6DAA6D,CAAC;QAClF,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,MAAM,OAAO,mBAAmB,EAAE,GAAG,CAAC,CAAC;YAErE,0DAA0D;YAC1D,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,wBAAwB,OAAO,qBAAqB,EAAE,GAAG,CAAC,CAAC;YACvF,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;oBAAE,SAAS;gBACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBACpE,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,WAAW;oBACnB,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,qBAAqB,OAAO,+BAA+B;oBAClE,WAAW,EACT,KAAK,OAAO,uBAAuB,CAAC,CAAC,IAAI,UAAU,OAAO,2BAA2B;wBACrF,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD;wBACrF,8CAA8C;oBAChD,WAAW,EAAE,CAAC,OAAO,CAAC;oBACtB,cAAc,EACZ,qFAAqF;wBACrF,2EAA2E;oBAC7E,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAiE;IAC7F,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,sCAAsC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAExC,yDAAyD;IACzD,MAAM,WAAW,GAAG,oFAAoF,CAAC;IAEzG,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC;QACN,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE3B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,4CAA4C;YAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,wBAAwB,OAAO,qBAAqB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAC7G,CAAC;YAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBACnE,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,uBAAuB,MAAM,sBAAsB;oBAC1D,WAAW,EACT,cAAc,MAAM,oBAAoB,CAAC,CAAC,IAAI,UAAU,OAAO,iCAAiC;wBAChG,sBAAsB,SAAS,CAAC,MAAM,uDAAuD;wBAC7F,2FAA2F;oBAC7F,WAAW,EAAE,CAAC,OAAO,CAAC;oBACtB,cAAc,EACZ,8EAA8E;wBAC9E,oEAAoE;oBACtE,SAAS,EAAE,mCAAmC;oBAC9C,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,KAAiE;IACjG,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,gCAAgC;IAChC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC,CAAC,6BAA6B;IACjF,MAAM,iBAAiB,GAA+C;QACpE,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;QACvE,EAAE,OAAO,EAAE,kDAAkD,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;QACjF,EAAE,OAAO,EAAE,wCAAwC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;QACvE,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;QACvD,EAAE,OAAO,EAAE,gCAAgC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;QAC7D,EAAE,OAAO,EAAE,qDAAqD,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;KACrF,CAAC;IAEF,kFAAkF;IAClF,MAAM,iBAAiB,GAAG,4CAA4C,CAAC;IACvE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpG,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,iDAAiD;QAExF,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAC5C,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,CAAC;YACN,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBACjE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACpF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,SAAS;aACvB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,SAAS,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,QAAQ,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,2EAA2E;YAClF,WAAW,EACT,GAAG,SAAS,CAAC,MAAM,4DAA4D,QAAQ,IAAI;gBAC3F,+FAA+F;gBAC/F,+BAA+B;YACjC,cAAc,EACZ,kGAAkG;gBAClG,qGAAqG;YACvG,SAAS,EAAE,uBAAuB;YAClC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,KAAiE,EACjE,OAAgB,EAChB,OAA2B;IAE3B,kFAAkF;IAClF,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAE1D,oFAAoF;IACpF,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;IAErE,wEAAwE;IACxE,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/E,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,qEAAqE;QACrE,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,gBAAgB,GAClB,SAAS,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC9G,sEAAsE;QACtE,gBAAgB,GAAG,iCAAiC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAC9F,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,OAAO,CAAC,YAAY;SAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,qBAAqB,GAAc,EAAE,CAAC;IAC5C,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,0CAA0C;IAC1C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,IAAI,EAAE,CAAC;QACvE,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnB,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,qBAAqB,CAAC,IAAI,CAAC;YACzB,MAAM,EAAE,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACrD,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,oDAAoD;YAC3D,WAAW,EAAE,2DAA2D,UAAU;iBAC/E,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;iBACvD,IAAI,CAAC,IAAI,CAAC,uCAAuC;YACpD,cAAc,EAAE,uEAAuE;SACxF,CAAC,CAAC;IACL,CAAC;IAED,iDAAiD;IACjD,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACvC,aAAa,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACxD,aAAa,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;KAC7D,CAAC,CAAC,CAAC;IACJ,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CACvF,CAAC;IACF,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,qBAAqB,CAAC,IAAI,CAAC;YACzB,MAAM,EAAE,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACrD,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,mDAAmD;YAC1D,WAAW,EACT,oJAAoJ;YACtJ,cAAc,EAAE,qEAAqE;SACtF,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,qBAAqB,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,qBAAqB,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,qBAAqB,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/D,MAAM,6BAA6B,GAAG,wBAAwB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAE/F,mDAAmD;IACnD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,IAAI,EAAE,CAAC;QACjG,SAAS,CAAC,GAAG,CACX,CAAC,CAAC,IAAI;QACN,uEAAuE;QACvE,oEAAoE;QACpE,+DAA+D;QAC/D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,IAAY,CAAC;YACjB,IAAI,KAAa,CAAC;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBACnC,IAAI,GAAG,EAAE,CAAC;gBACV,KAAK,GAAG,GAAG,CAAC;YACd,CAAC;iBAAM,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC;gBACV,KAAK,GAAG,GAAG,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACxC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,0DAA0D;IAC1D,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/D,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,SAAS,GAAG,CAAC,IAAY,EAAE,IAAc;QACvC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,KAAK,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,qBAAqB,CAAC,IAAI,CAAC;YACzB,MAAM,EAAE,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACrD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EAAE,wBAAwB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAc,MAAM;iBAClF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACzB,IAAI,CAAC,IAAI,CAAC,kGAAkG;YAC/G,cAAc,EACZ,+IAA+I;YACjJ,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAC/C,IAAI,SAAS,GAAG,GAAG;YAAE,SAAS;QAC9B,MAAM,WAAW,GAAG,CAClB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,IAAI,EAAE,CAChG,CAAC,MAAM,CAAC;QACT,IAAI,WAAW,GAAG,EAAE;YAAE,SAAS;QAC/B,0EAA0E;QAC1E,MAAM,QAAQ,GAAG;YACf,8CAA8C;YAC9C,gDAAgD;YAChD,uDAAuD;YACvD,mDAAmD;YACnD,0CAA0C;YAC1C,qCAAqC;SACtC,CAAC;QACF,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACzE,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YACzB,qBAAqB,CAAC,IAAI,CAAC;gBACzB,MAAM,EAAE,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gBACrD,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,yBAAyB,CAAC,CAAC,IAAI,EAAE;gBACxC,WAAW,EAAE,YAAY,SAAS,WAAW,WAAW,qBAAqB,eAAe,yGAAyG;gBACrM,cAAc,EACZ,oHAAoH;gBACtH,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACpC,0GAA0G,CAAC,IAAI,CAC7G,CAAC,CAAC,OAAO,CACV,CACF,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GACZ,qGAAqG,CAAC,IAAI,CACxG,EAAE,CAAC,OAAO,CACX,IAAI,CAAC,6CAA6C,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,IAAI,QAAQ,EAAE,CAAC;YACb,qBAAqB,CAAC,IAAI,CAAC;gBACzB,MAAM,EAAE,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gBACrD,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,gDAAgD,EAAE,CAAC,IAAI,EAAE;gBAChE,WAAW,EACT,kKAAkK;gBACpK,cAAc,EACZ,uIAAuI;gBACzI,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE3D,2EAA2E;IAC3E,oEAAoE;IACpE,0DAA0D;IAC1D,uEAAuE;IACvE,4DAA4D;IAC5D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAmB,CAAC;IACtD,MAAM,sBAAsB,GAAiD,EAAE,CAAC;IAEhF,6DAA6D;IAC7D,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAc,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;oBAClE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,oBAAoB,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;IACpE,oBAAoB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1D,2EAA2E;IAC3E,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,sBAAsB,GAAc,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAChF,MAAM,EAAE,UAAU,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QACpD,QAAQ,EACN,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc;YACtE,CAAC,CAAE,UAAuB;YAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;gBAC1D,CAAC,CAAE,MAAmB;gBACtB,CAAC,CAAE,QAAqB;QAC9B,KAAK,EAAE,qBAAqB,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,eAAe,EAAE;QACxE,WAAW,EACT,uBAAuB,IAAI,CAAC,UAAU,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,MAAM;YACnG,+CAA+C,IAAI,CAAC,eAAe,qBAAqB,IAAI,CAAC,UAAU,MAAM;YAC7G,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,QAAQ,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK;YAC5E,8GAA8G;QAChH,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,cAAc,EACZ,uFAAuF,IAAI,CAAC,UAAU,GAAG;YACzG,qCAAqC,IAAI,CAAC,QAAQ,6DAA6D;YAC/G,4EAA4E;QAC9E,SAAS,EAAE,mCAAmC;QAC9C,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC,CAAC;IAEJ,MAAM,aAAa,GAAG,CAAC,GAAG,oBAAoB,EAAE,GAAG,6BAA6B,EAAE,GAAG,sBAAsB,CAAC,CAAC;IAC7G,MAAM,YAAY,GAChB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAEnH,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAE5E,MAAM,cAAc,GAClB,aAAa,GAAG,CAAC,IAAI,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAE5G,MAAM,OAAO,GAAG,qBAAqB,KAAK,CAAC,MAAM,WAAW,aAAa,CAAC,MAAM,oBAAoB,YAAY,UAAU,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;IAEzJ,OAAO;QACL,cAAc;QACd,YAAY;QACZ,OAAO;QACP,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,aAAa;QACvB,aAAa;QACb,SAAS;QACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW;QACX,qBAAqB,EAAE,6BAA6B;KACrD,CAAC;AACJ,CAAC"}
@@ -24,6 +24,33 @@ export declare function classifyFile(code: string, language: string, filePath?:
24
24
  export declare function shouldRunAbsenceRules(category: FileCategory): boolean;
25
25
  /** A framework or middleware detected from code patterns (no AST required). */
26
26
  export type DetectedFramework = string;
27
+ /** Version hint extracted from code or manifest patterns. */
28
+ export interface FrameworkVersionHint {
29
+ framework: DetectedFramework;
30
+ /** Detected major version (e.g. 4 for Django 4.x). null if unknown. */
31
+ major: number | null;
32
+ /** Detected minor version if available. null if unknown. */
33
+ minor: number | null;
34
+ /** Raw version string found in source (e.g. "4.2.1", ">=3.0"). */
35
+ raw: string | null;
36
+ }
37
+ /**
38
+ * Extract framework version hints from code content.
39
+ * Scans for version specifiers in requirements, package.json, go.mod,
40
+ * Gemfile, composer.json, and version comments.
41
+ */
42
+ export declare function detectFrameworkVersions(code: string): FrameworkVersionHint[];
43
+ /**
44
+ * Version-aware confidence adjustments. Some security concerns only apply to
45
+ * specific framework versions. Returns the confidence delta (negative = reduce,
46
+ * positive = increase).
47
+ *
48
+ * Examples:
49
+ * - Django ≥4.0 has CSRF enabled by default → reduce CSRF-finding confidence
50
+ * - Spring Boot ≥3.0 requires explicit security configuration → raise concern
51
+ * - Express 5.x deprecates certain middleware → raise concern for old patterns
52
+ */
53
+ export declare function getVersionConfidenceAdjustment(finding: Finding, versions: FrameworkVersionHint[]): number;
27
54
  /**
28
55
  * Detect frameworks and security middleware from code patterns.
29
56
  * Works across all languages — no AST required.
@@ -31,9 +58,10 @@ export type DetectedFramework = string;
31
58
  export declare function detectFrameworks(code: string): DetectedFramework[];
32
59
  /**
33
60
  * Reduce confidence on findings that are mitigated by a detected framework
34
- * or middleware. This is complementary to AST-based import awareness —
35
- * it works for all languages and detects framework-level mitigations
36
- * (e.g. Django CSRF, FastAPI validation) that import-level checks miss.
61
+ * or middleware. Also applies version-aware adjustments when version hints
62
+ * are found in the code. This is complementary to AST-based import
63
+ * awareness it works for all languages and detects framework-level
64
+ * mitigations (e.g. Django CSRF, FastAPI validation) that import checks miss.
37
65
  */
38
66
  export declare function applyFrameworkAwareness(findings: Finding[], code: string): Finding[];
39
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/evaluators/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/evaluators/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,OAAO,EAEP,OAAO,EACP,YAAY,EACZ,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAS,MAAM,yBAAyB,CAAC;AAGhF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;AAW1C;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAOD,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEd;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CA+G5F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAErE;AAID,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,uEAAuE;IACvE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kEAAkE;IAClE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AA+BD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAqB5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAiDzG;AAkDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAqCpF;AAcD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAcD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAYD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8G5D;AA6BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,CAIrF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,MAAM,EAAE,CAcV;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,EAC9D,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,MAAM,EAAE,CAQV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAE1D;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,EAAE,CAsDjF;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsC1D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAuBzE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAUzE;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAqBjH;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,eAAe,EAAE,EAC9B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,CAmBR;AAID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAmCxE;AA+BD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQzE;AAED,wBAAgB,kCAAkC,IAAI,OAAO,CAE5D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CA4BnE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAiC9E"}
@@ -111,6 +111,124 @@ export function classifyFile(code, language, filePath) {
111
111
  export function shouldRunAbsenceRules(category) {
112
112
  return category === "server" || category === "unknown";
113
113
  }
114
+ /**
115
+ * Patterns that extract version hints from code, config, or comments.
116
+ * Each entry: [framework, regex with capture group 1 = version string].
117
+ */
118
+ const VERSION_DETECT_PATTERNS = [
119
+ // Python requirements / pyproject.toml
120
+ ["django", /django\s*[=~><]{1,2}\s*([\d.]+)/i],
121
+ ["flask", /flask\s*[=~><]{1,2}\s*([\d.]+)/i],
122
+ ["fastapi", /fastapi\s*[=~><]{1,2}\s*([\d.]+)/i],
123
+ // JavaScript package.json style
124
+ ["express", /["']express["']\s*:\s*["'][~^]?([\d.]+)/i],
125
+ ["next", /["']next["']\s*:\s*["'][~^]?([\d.]+)/i],
126
+ // Java / Kotlin — Spring Boot
127
+ ["spring", /spring-boot(?:-starter)?[:\-](\d+\.\d+[\d.]*)/i],
128
+ ["spring", /org\.springframework\.boot.*version\s*=?\s*['"]?(\d+\.\d+[\d.]*)/i],
129
+ // C# — ASP.NET
130
+ ["aspnet", /Microsoft\.AspNetCore[.\w]*Version=["']?([\d.]+)/i],
131
+ ["aspnet", /net(\d+\.\d+)/i],
132
+ // Ruby Gemfile
133
+ ["rails", /['"]rails['"],?\s*['"]~>\s*([\d.]+)/i],
134
+ // Go go.mod
135
+ ["gin", /github\.com\/gin-gonic\/gin\s+v([\d.]+)/i],
136
+ // PHP composer.json
137
+ ["laravel", /["']laravel\/framework["']\s*:\s*["'][~^]?([\d.]+)/i],
138
+ // Generic version comment
139
+ ["django", /@version\s+Django\s+([\d.]+)/i],
140
+ ["spring", /@version\s+Spring\s+(?:Boot\s+)?([\d.]+)/i],
141
+ ];
142
+ /**
143
+ * Extract framework version hints from code content.
144
+ * Scans for version specifiers in requirements, package.json, go.mod,
145
+ * Gemfile, composer.json, and version comments.
146
+ */
147
+ export function detectFrameworkVersions(code) {
148
+ const hints = [];
149
+ const seen = new Set();
150
+ for (const [fw, regex] of VERSION_DETECT_PATTERNS) {
151
+ const match = code.match(regex);
152
+ if (match && match[1]) {
153
+ const key = `${fw}:${match[1]}`;
154
+ if (seen.has(key))
155
+ continue;
156
+ seen.add(key);
157
+ const parts = match[1].split(".");
158
+ hints.push({
159
+ framework: fw,
160
+ major: parts[0] ? parseInt(parts[0], 10) : null,
161
+ minor: parts[1] ? parseInt(parts[1], 10) : null,
162
+ raw: match[1],
163
+ });
164
+ }
165
+ }
166
+ return hints;
167
+ }
168
+ /**
169
+ * Version-aware confidence adjustments. Some security concerns only apply to
170
+ * specific framework versions. Returns the confidence delta (negative = reduce,
171
+ * positive = increase).
172
+ *
173
+ * Examples:
174
+ * - Django ≥4.0 has CSRF enabled by default → reduce CSRF-finding confidence
175
+ * - Spring Boot ≥3.0 requires explicit security configuration → raise concern
176
+ * - Express 5.x deprecates certain middleware → raise concern for old patterns
177
+ */
178
+ export function getVersionConfidenceAdjustment(finding, versions) {
179
+ for (const v of versions) {
180
+ if (v.major === null)
181
+ continue;
182
+ if (v.framework === "django") {
183
+ // Django 4.0+ has async view support and improved CSRF
184
+ if (v.major >= 4 && /csrf/i.test(finding.title))
185
+ return -0.15;
186
+ // Django 3.x deprecated certain auth patterns
187
+ if (v.major >= 3 && /password.*reset.*insecure/i.test(finding.title))
188
+ return -0.1;
189
+ }
190
+ if (v.framework === "spring") {
191
+ // Spring Boot 3.x requires Spring Security 6 — no more auto-CSRF
192
+ if (v.major >= 3 && /csrf.*auto|default.*csrf/i.test(finding.title))
193
+ return 0.1;
194
+ // Spring Boot 2.x had auto-configured security
195
+ if (v.major <= 2 && /security.*missing|no.*security/i.test(finding.title))
196
+ return -0.15;
197
+ }
198
+ if (v.framework === "next") {
199
+ // Next.js 13+ App Router has built-in security headers
200
+ if (v.major >= 13 && /security.?header/i.test(finding.title))
201
+ return -0.15;
202
+ // Next.js 14+ has improved Server Action security
203
+ if (v.major >= 14 && /server.?action.*insecure/i.test(finding.title))
204
+ return -0.1;
205
+ }
206
+ if (v.framework === "express") {
207
+ // Express 5.x deprecated several patterns
208
+ if (v.major >= 5 && /deprecated/i.test(finding.title))
209
+ return 0.1;
210
+ }
211
+ if (v.framework === "rails") {
212
+ // Rails 7+ has strong defaults for parameter filtering
213
+ if (v.major >= 7 && /mass.?assign|strong.?param/i.test(finding.title))
214
+ return -0.1;
215
+ // Rails 6+ has per-form CSRF tokens
216
+ if (v.major >= 6 && /csrf/i.test(finding.title))
217
+ return -0.1;
218
+ }
219
+ if (v.framework === "laravel") {
220
+ // Laravel 9+ has improved validation and typed request factories
221
+ if (v.major >= 9 && /input.?valid|request.?valid/i.test(finding.title))
222
+ return -0.1;
223
+ }
224
+ if (v.framework === "aspnet") {
225
+ // .NET 8+ has built-in rate limiting middleware
226
+ if (v.major >= 8 && /rate.?limit/i.test(finding.title))
227
+ return -0.15;
228
+ }
229
+ }
230
+ return 0;
231
+ }
114
232
  const FRAMEWORK_DETECT_PATTERNS = [
115
233
  // ── JavaScript / TypeScript ──
116
234
  ["express", /\brequire\s*\(\s*['"]express['"]\)|from\s+['"]express['"]/],
@@ -170,27 +288,43 @@ export function detectFrameworks(code) {
170
288
  }
171
289
  /**
172
290
  * Reduce confidence on findings that are mitigated by a detected framework
173
- * or middleware. This is complementary to AST-based import awareness —
174
- * it works for all languages and detects framework-level mitigations
175
- * (e.g. Django CSRF, FastAPI validation) that import-level checks miss.
291
+ * or middleware. Also applies version-aware adjustments when version hints
292
+ * are found in the code. This is complementary to AST-based import
293
+ * awareness it works for all languages and detects framework-level
294
+ * mitigations (e.g. Django CSRF, FastAPI validation) that import checks miss.
176
295
  */
177
296
  export function applyFrameworkAwareness(findings, code) {
178
297
  const frameworks = detectFrameworks(code);
179
- if (frameworks.length === 0)
298
+ const versions = detectFrameworkVersions(code);
299
+ if (frameworks.length === 0 && versions.length === 0)
180
300
  return findings;
181
301
  return findings.map((f) => {
302
+ let currentConf = f.confidence ?? 0.5;
303
+ let provenanceNote = "";
304
+ // Framework mitigation adjustments
182
305
  for (const fw of frameworks) {
183
306
  const pattern = FRAMEWORK_MITIGATIONS[fw];
184
307
  if (pattern && pattern.test(f.title)) {
185
- const currentConf = f.confidence ?? 0.5;
186
- const newConf = Math.max(0, Math.min(1, currentConf - FRAMEWORK_CONFIDENCE_REDUCTION));
187
- return {
188
- ...f,
189
- confidence: newConf,
190
- provenance: f.provenance ? `${f.provenance}; ${fw}-mitigated` : `${fw}-mitigated`,
191
- };
308
+ currentConf = Math.max(0, Math.min(1, currentConf - FRAMEWORK_CONFIDENCE_REDUCTION));
309
+ provenanceNote += provenanceNote ? `; ${fw}-mitigated` : `${fw}-mitigated`;
192
310
  }
193
311
  }
312
+ // Version-aware fine-tuning
313
+ if (versions.length > 0) {
314
+ const versionDelta = getVersionConfidenceAdjustment(f, versions);
315
+ if (versionDelta !== 0) {
316
+ currentConf = Math.max(0, Math.min(1, currentConf + versionDelta));
317
+ const versionLabel = versions.map((v) => `${v.framework}@${v.raw}`).join(",");
318
+ provenanceNote += provenanceNote ? `; version-adjusted(${versionLabel})` : `version-adjusted(${versionLabel})`;
319
+ }
320
+ }
321
+ if (provenanceNote) {
322
+ return {
323
+ ...f,
324
+ confidence: currentConf,
325
+ provenance: f.provenance ? `${f.provenance}; ${provenanceNote}` : provenanceNote,
326
+ };
327
+ }
194
328
  return f;
195
329
  });
196
330
  }