checkly 8.14.1 → 8.15.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 (148) hide show
  1. package/dist/ai-context/context.d.ts +18 -0
  2. package/dist/ai-context/context.js +89 -0
  3. package/dist/ai-context/context.js.map +1 -1
  4. package/dist/ai-context/skills-command/references/configure-grpc-monitors.md +37 -0
  5. package/dist/ai-context/skills-command/references/configure-playwright-checks.md +5 -5
  6. package/dist/ai-context/skills-command/references/configure-ssl-monitors.md +39 -0
  7. package/dist/ai-context/skills-command/references/configure-traceroute-monitors.md +36 -0
  8. package/dist/ai-context/skills-command/references/configure.md +9 -0
  9. package/dist/commands/checks/stats.js +1 -0
  10. package/dist/commands/checks/stats.js.map +1 -1
  11. package/dist/commands/deploy.js +25 -16
  12. package/dist/commands/deploy.js.map +1 -1
  13. package/dist/constants.d.ts +4 -1
  14. package/dist/constants.js +3 -0
  15. package/dist/constants.js.map +1 -1
  16. package/dist/constructs/api-assertion-codegen.js +2 -2
  17. package/dist/constructs/api-assertion-codegen.js.map +1 -1
  18. package/dist/constructs/api-assertion.d.ts +3 -3
  19. package/dist/constructs/check-codegen.d.ts +6 -0
  20. package/dist/constructs/check-codegen.js +24 -0
  21. package/dist/constructs/check-codegen.js.map +1 -1
  22. package/dist/constructs/dns-assertion-codegen.js +2 -2
  23. package/dist/constructs/dns-assertion-codegen.js.map +1 -1
  24. package/dist/constructs/dns-assertion.d.ts +3 -3
  25. package/dist/constructs/dns-request.d.ts +2 -2
  26. package/dist/constructs/grpc-assertion-codegen.d.ts +3 -0
  27. package/dist/constructs/grpc-assertion-codegen.js +33 -0
  28. package/dist/constructs/grpc-assertion-codegen.js.map +1 -0
  29. package/dist/constructs/grpc-assertion-validation.d.ts +13 -0
  30. package/dist/constructs/grpc-assertion-validation.js +53 -0
  31. package/dist/constructs/grpc-assertion-validation.js.map +1 -0
  32. package/dist/constructs/grpc-assertion.d.ts +61 -0
  33. package/dist/constructs/grpc-assertion.js +71 -0
  34. package/dist/constructs/grpc-assertion.js.map +1 -0
  35. package/dist/constructs/grpc-monitor-codegen.d.ts +13 -0
  36. package/dist/constructs/grpc-monitor-codegen.js +34 -0
  37. package/dist/constructs/grpc-monitor-codegen.js.map +1 -0
  38. package/dist/constructs/grpc-monitor.d.ts +83 -0
  39. package/dist/constructs/grpc-monitor.js +56 -0
  40. package/dist/constructs/grpc-monitor.js.map +1 -0
  41. package/dist/constructs/grpc-request-codegen.d.ts +4 -0
  42. package/dist/constructs/grpc-request-codegen.js +68 -0
  43. package/dist/constructs/grpc-request-codegen.js.map +1 -0
  44. package/dist/constructs/grpc-request.d.ts +137 -0
  45. package/dist/constructs/grpc-request.js +2 -0
  46. package/dist/constructs/grpc-request.js.map +1 -0
  47. package/dist/constructs/icmp-assertion-codegen.js +2 -2
  48. package/dist/constructs/icmp-assertion-codegen.js.map +1 -1
  49. package/dist/constructs/icmp-assertion.d.ts +1 -1
  50. package/dist/constructs/icmp-request.d.ts +2 -2
  51. package/dist/constructs/index.d.ts +9 -0
  52. package/dist/constructs/index.js +9 -0
  53. package/dist/constructs/index.js.map +1 -1
  54. package/dist/constructs/internal/assertion-codegen.d.ts +11 -0
  55. package/dist/constructs/internal/assertion-codegen.js +39 -0
  56. package/dist/constructs/internal/assertion-codegen.js.map +1 -1
  57. package/dist/constructs/internal/assertion-validation.d.ts +3 -0
  58. package/dist/constructs/internal/assertion-validation.js +17 -0
  59. package/dist/constructs/internal/assertion-validation.js.map +1 -0
  60. package/dist/constructs/internal/assertion.d.ts +17 -11
  61. package/dist/constructs/internal/assertion.js +39 -38
  62. package/dist/constructs/internal/assertion.js.map +1 -1
  63. package/dist/constructs/internal/common-diagnostics.d.ts +1 -0
  64. package/dist/constructs/internal/common-diagnostics.js +14 -0
  65. package/dist/constructs/internal/common-diagnostics.js.map +1 -1
  66. package/dist/constructs/ssl-assertion-codegen.d.ts +3 -0
  67. package/dist/constructs/ssl-assertion-codegen.js +36 -0
  68. package/dist/constructs/ssl-assertion-codegen.js.map +1 -0
  69. package/dist/constructs/ssl-assertion-validation.d.ts +13 -0
  70. package/dist/constructs/ssl-assertion-validation.js +49 -0
  71. package/dist/constructs/ssl-assertion-validation.js.map +1 -0
  72. package/dist/constructs/ssl-assertion.d.ts +197 -0
  73. package/dist/constructs/ssl-assertion.js +267 -0
  74. package/dist/constructs/ssl-assertion.js.map +1 -0
  75. package/dist/constructs/ssl-monitor-codegen.d.ts +36 -0
  76. package/dist/constructs/ssl-monitor-codegen.js +51 -0
  77. package/dist/constructs/ssl-monitor-codegen.js.map +1 -0
  78. package/dist/constructs/ssl-monitor.d.ts +89 -0
  79. package/dist/constructs/ssl-monitor.js +73 -0
  80. package/dist/constructs/ssl-monitor.js.map +1 -0
  81. package/dist/constructs/ssl-request-codegen.d.ts +4 -0
  82. package/dist/constructs/ssl-request-codegen.js +48 -0
  83. package/dist/constructs/ssl-request-codegen.js.map +1 -0
  84. package/dist/constructs/ssl-request.d.ts +143 -0
  85. package/dist/constructs/ssl-request.js +2 -0
  86. package/dist/constructs/ssl-request.js.map +1 -0
  87. package/dist/constructs/tcp-monitor-codegen.js +2 -2
  88. package/dist/constructs/tcp-monitor-codegen.js.map +1 -1
  89. package/dist/constructs/tcp-monitor.d.ts +1 -1
  90. package/dist/constructs/traceroute-assertion-codegen.d.ts +3 -0
  91. package/dist/constructs/traceroute-assertion-codegen.js +17 -0
  92. package/dist/constructs/traceroute-assertion-codegen.js.map +1 -0
  93. package/dist/constructs/traceroute-assertion-validation.d.ts +11 -0
  94. package/dist/constructs/traceroute-assertion-validation.js +77 -0
  95. package/dist/constructs/traceroute-assertion-validation.js.map +1 -0
  96. package/dist/constructs/traceroute-assertion.d.ts +67 -0
  97. package/dist/constructs/traceroute-assertion.js +96 -0
  98. package/dist/constructs/traceroute-assertion.js.map +1 -0
  99. package/dist/constructs/traceroute-monitor-codegen.d.ts +13 -0
  100. package/dist/constructs/traceroute-monitor-codegen.js +34 -0
  101. package/dist/constructs/traceroute-monitor-codegen.js.map +1 -0
  102. package/dist/constructs/traceroute-monitor.d.ts +83 -0
  103. package/dist/constructs/traceroute-monitor.js +54 -0
  104. package/dist/constructs/traceroute-monitor.js.map +1 -0
  105. package/dist/constructs/traceroute-request-codegen.d.ts +4 -0
  106. package/dist/constructs/traceroute-request-codegen.js +41 -0
  107. package/dist/constructs/traceroute-request-codegen.js.map +1 -0
  108. package/dist/constructs/traceroute-request.d.ts +81 -0
  109. package/dist/constructs/traceroute-request.js +2 -0
  110. package/dist/constructs/traceroute-request.js.map +1 -0
  111. package/dist/constructs/url-assertion-codegen.js +2 -2
  112. package/dist/constructs/url-assertion-codegen.js.map +1 -1
  113. package/dist/formatters/assertion-line.d.ts +27 -0
  114. package/dist/formatters/assertion-line.js +126 -0
  115. package/dist/formatters/assertion-line.js.map +1 -0
  116. package/dist/formatters/batch-stats.js +20 -1
  117. package/dist/formatters/batch-stats.js.map +1 -1
  118. package/dist/formatters/check-result-detail.js +604 -1
  119. package/dist/formatters/check-result-detail.js.map +1 -1
  120. package/dist/helpers/cli-mode.d.ts +2 -2
  121. package/dist/helpers/cli-mode.js +103 -11
  122. package/dist/helpers/cli-mode.js.map +1 -1
  123. package/dist/reporters/json.d.ts +1 -0
  124. package/dist/reporters/json.js +58 -0
  125. package/dist/reporters/json.js.map +1 -1
  126. package/dist/reporters/util.js +192 -89
  127. package/dist/reporters/util.js.map +1 -1
  128. package/dist/rest/analytics.js +6 -0
  129. package/dist/rest/analytics.js.map +1 -1
  130. package/dist/rest/batch-analytics.d.ts +1 -0
  131. package/dist/rest/batch-analytics.js.map +1 -1
  132. package/dist/rest/check-results.d.ts +75 -1
  133. package/dist/rest/check-results.js.map +1 -1
  134. package/dist/rest/projects.d.ts +1 -1
  135. package/dist/services/check-parser/bundler.d.ts +6 -0
  136. package/dist/services/check-parser/bundler.js +8 -0
  137. package/dist/services/check-parser/bundler.js.map +1 -1
  138. package/dist/services/check-parser/cache-hash.d.ts +24 -2
  139. package/dist/services/check-parser/cache-hash.js +45 -3
  140. package/dist/services/check-parser/cache-hash.js.map +1 -1
  141. package/dist/services/check-parser/package-files/resolver.d.ts +6 -1
  142. package/dist/services/check-parser/package-files/resolver.js +19 -0
  143. package/dist/services/check-parser/package-files/resolver.js.map +1 -1
  144. package/dist/services/util.d.ts +4 -0
  145. package/dist/services/util.js +4 -0
  146. package/dist/services/util.js.map +1 -1
  147. package/oclif.manifest.json +9 -3
  148. package/package.json +1 -1
@@ -0,0 +1,126 @@
1
+ import chalk from 'chalk';
2
+ import indentString from 'indent-string';
3
+ // Shared per-assertion line renderer.
4
+ //
5
+ // This is the single source of truth for how a check-result assertion is
6
+ // rendered as a human-readable line. Both the `checkly test` reporter
7
+ // (`reporters/util.ts`) and the `checkly checks get --result` detail renderer
8
+ // (`formatters/check-result-detail.ts`) call `formatAssertionLine` so their
9
+ // output is guaranteed identical and cannot drift.
10
+ // Humanized labels for the `source` of an assertion. Falls back to the raw
11
+ // source string when unmapped.
12
+ const assertionSources = {
13
+ STATUS_CODE: 'status code',
14
+ JSON_BODY: 'JSON body',
15
+ HEADERS: 'headers',
16
+ TEXT_BODY: 'text body',
17
+ RESPONSE_TIME: 'response time',
18
+ RESPONSE_DATA: 'response data',
19
+ TEXT_ANSWER: 'answer (text)',
20
+ JSON_ANSWER: 'answer (JSON)',
21
+ RESPONSE_CODE: 'response code',
22
+ LATENCY: 'latency',
23
+ JSON_RESPONSE: 'response data (JSON)',
24
+ GRPC_STATUS_CODE: 'status code',
25
+ GRPC_HEALTHCHECK_STATUS: 'health check status',
26
+ GRPC_RESPONSE: 'response message',
27
+ GRPC_METADATA: 'metadata',
28
+ };
29
+ // Humanized phrases for the `comparison` of an assertion. Falls back to the raw
30
+ // comparison string when unmapped.
31
+ const assertionComparisons = {
32
+ EQUALS: 'equals',
33
+ NOT_EQUALS: 'doesn\'t equal',
34
+ HAS_KEY: 'has key',
35
+ NOT_HAS_KEY: 'doesn\'t have key',
36
+ HAS_VALUE: 'has value',
37
+ NOT_HAS_VALUE: 'doesn\'t have value',
38
+ IS_EMPTY: 'is empty',
39
+ NOT_EMPTY: 'is not empty',
40
+ GREATER_THAN: 'is greater than',
41
+ LESS_THAN: 'is less than',
42
+ CONTAINS: 'contains',
43
+ NOT_CONTAINS: 'doesn\'t contain',
44
+ IS_NULL: 'is null',
45
+ NOT_NULL: 'is not null',
46
+ MATCHES: 'matches',
47
+ };
48
+ function toString(val) {
49
+ if (typeof val === 'object') {
50
+ return JSON.stringify(val, null, 2);
51
+ }
52
+ else {
53
+ return val.toString();
54
+ }
55
+ }
56
+ export function truncate(val, opts) {
57
+ let truncated = false;
58
+ let result = toString(val);
59
+ // Stringify first so objects/numbers/booleans (which have no meaningful
60
+ // `.length`) are capped too, then measure and cut in the same unit by spreading
61
+ // to code points. Checking the UTF-16 `.length` would flag a value made of
62
+ // astral characters (emoji) as truncated while the code-point cut removed
63
+ // nothing; cutting by code point also never splits a surrogate pair into an
64
+ // invalid half-character.
65
+ if (opts.chars) {
66
+ const codePoints = [...result];
67
+ if (codePoints.length > opts.chars) {
68
+ truncated = true;
69
+ result = codePoints.slice(0, opts.chars).join('');
70
+ }
71
+ }
72
+ const lines = result.split('\n');
73
+ if (opts.lines && lines.length > opts.lines) {
74
+ truncated = true;
75
+ result = lines.slice(0, opts.lines).join('\n');
76
+ }
77
+ return {
78
+ truncated,
79
+ result: truncated && opts.ending ? result + opts.ending : result,
80
+ lines: opts.lines ? Math.min(opts.lines, lines.length) : lines.length,
81
+ };
82
+ }
83
+ export const assertionSymbols = {
84
+ success: '✔',
85
+ error: '✖',
86
+ };
87
+ // Renders a single assertion as a colored, human-readable line (or multi-line
88
+ // block when the received value spans multiple lines). Green with a success
89
+ // symbol when the assertion passed (`error` absent/empty), red with an error
90
+ // symbol when it failed.
91
+ export function formatAssertionLine(assertion, options) {
92
+ const { source, property, comparison, target, regex, error, actual } = assertion;
93
+ const assertionFailed = !!error;
94
+ const humanSource = assertionSources[source] || source;
95
+ const humanComparison = assertionComparisons[comparison] || comparison;
96
+ let actualString;
97
+ // Render the received value whenever one is present — including falsy values
98
+ // like `0`, `false`, and `''`. Using a plain truthiness check here dropped the
99
+ // "Received:" segment for exactly those, hiding the reason a boolean/numeric
100
+ // assertion failed (e.g. CERT_NOT_EXPIRED received `false`, status code `0`).
101
+ if (actual != null) {
102
+ const { result: truncatedActual, lines: truncatedActualLines } = truncate(actual, {
103
+ chars: 300,
104
+ lines: 5,
105
+ ending: chalk.magenta('\n...truncated...'),
106
+ ...options?.truncate,
107
+ });
108
+ if (truncatedActualLines <= 1) {
109
+ actualString = `Received: ${truncatedActual}.`;
110
+ }
111
+ else {
112
+ actualString = `Received:\n${indentString(truncatedActual, 4, { indent: ' ' })}`;
113
+ }
114
+ }
115
+ const message = [
116
+ assertionFailed ? assertionSymbols.error : assertionSymbols.success,
117
+ humanSource,
118
+ property ? `property "${property}"` : undefined,
119
+ regex ? `regex "${regex}"` : undefined,
120
+ humanComparison,
121
+ `target "${target}".`,
122
+ actualString,
123
+ ].filter(Boolean).join(' ');
124
+ return assertionFailed ? chalk.red(message) : chalk.green(message);
125
+ }
126
+ //# sourceMappingURL=assertion-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-line.js","sourceRoot":"","sources":["../../src/formatters/assertion-line.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,11 @@ import chalk from 'chalk';
2
2
  import { resolveStatus } from './checks.js';
3
3
  import { renderAdaptiveTable, renderCommandHints } from './render.js';
4
4
  import { findUnit, rangeLabels } from './analytics.js';
5
- const TIMING_TYPES = new Set(['API', 'BROWSER', 'PLAYWRIGHT', 'MULTI_STEP', 'URL', 'TCP', 'DNS']);
5
+ // TRACEROUTE stays in TIMING_TYPES so it keeps its final-hop-latency responseTime
6
+ // columns; it additionally gets a bespoke Hops column (see hasTraceroute below).
7
+ const TIMING_TYPES = new Set(['API', 'BROWSER', 'PLAYWRIGHT', 'MULTI_STEP', 'URL', 'TCP', 'DNS', 'GRPC', 'SSL', 'TRACEROUTE']);
6
8
  const ICMP_TYPE = 'ICMP';
9
+ const TRACEROUTE_TYPE = 'TRACEROUTE';
7
10
  const DASH = '—';
8
11
  /**
9
12
  * Format a metric value for the batch stats table.
@@ -53,6 +56,7 @@ function metricOrDash(key, value, format, applicable) {
53
56
  function buildColumns(rows, format) {
54
57
  const hasTiming = rows.some(r => TIMING_TYPES.has(r.checkType));
55
58
  const hasIcmp = rows.some(r => r.checkType === ICMP_TYPE);
59
+ const hasTraceroute = rows.some(r => r.checkType === TRACEROUTE_TYPE);
56
60
  if (format === 'md') {
57
61
  const cols = [
58
62
  { header: 'Name', value: r => r.name },
@@ -88,6 +92,13 @@ function buildColumns(rows, format) {
88
92
  value: (r, fmt) => metricOrDash('packetLoss_avg', r.analytics?.packetLoss_avg ?? null, fmt, r.checkType === ICMP_TYPE),
89
93
  });
90
94
  }
95
+ if (hasTraceroute) {
96
+ cols.push({
97
+ header: 'Hops (avg)',
98
+ align: 'right',
99
+ value: (r, fmt) => metricOrDash('hopCount_avg', r.analytics?.hopCount_avg ?? null, fmt, r.checkType === TRACEROUTE_TYPE),
100
+ });
101
+ }
91
102
  return cols;
92
103
  }
93
104
  const typeWidth = 12;
@@ -146,6 +157,14 @@ function buildColumns(rows, format) {
146
157
  value: (r, fmt) => metricOrDash('packetLoss_avg', r.analytics?.packetLoss_avg ?? null, fmt, r.checkType === ICMP_TYPE),
147
158
  });
148
159
  }
160
+ if (hasTraceroute) {
161
+ cols.push({
162
+ header: 'Hops',
163
+ width: metricWidth,
164
+ align: 'right',
165
+ value: (r, fmt) => metricOrDash('hopCount_avg', r.analytics?.hopCount_avg ?? null, fmt, r.checkType === TRACEROUTE_TYPE),
166
+ });
167
+ }
149
168
  return cols;
150
169
  }
151
170
  export function formatBatchStats(rows, range, format) {
@@ -1 +1 @@
1
- {"version":3,"file":"batch-stats.js","sourceRoot":"","sources":["../../src/formatters/batch-stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-stats.js","sourceRoot":"","sources":["../../src/formatters/batch-stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAA6C,aAAa,EAAE,MAAM,aAAa,CAAA;AAEtF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAKtD,kFAAkF;AAClF,iFAAiF;AACjF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;AAC9H,MAAM,SAAS,GAAG,MAAM,CAAA;AACxB,MAAM,eAAe,GAAG,YAAY,CAAA;AACpC,MAAM,IAAI,GAAG,GAAG,CAAA;AAEhB;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAE,GAAW,EAAE,KAAa,EAAE,MAAoB;IAC1E,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;QACtC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,OAAO,CAAA;QACnC,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;QAC/C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,OAAO,CAAA;QACnC,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC7C,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;QACtC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,OAAO,CAAA;QACnC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,YAAY,CACnB,GAAW,EACX,KAAoB,EACpB,MAAoB,EACpB,UAAmB;IAEnB,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACjC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACvD,CAAC;IACD,OAAO,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AAC9C,CAAC;AAED,SAAS,YAAY,CAAE,IAAgB,EAAE,MAAoB;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC,CAAA;IAErE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,GAA0B;YAClC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;YACtC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;YAC3C,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YAC9D;gBACE,MAAM,EAAE,cAAc;gBACtB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;aAC9F;SACF,CAAA;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC/H,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC/H,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,eAAe;gBACvB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;aACjH,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,aAAa;gBACrB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,cAAc,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;aACvH,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC;aACzH,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAA;IACpB,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,WAAW,GAAG,EAAE,CAAA;IAEtB,MAAM,IAAI,GAA0B;QAClC;YACE,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;SACnB;QACD;YACE,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;SACxB;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC;SACzC;QACD;YACE,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;SAC9F;KACF,CAAA;IAED,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC/H,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC/H,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;SACjH,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,cAAc,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;SACvH,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC;SACzH,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,IAAgB,EAAE,KAAa,EAAE,MAAoB;IACrF,MAAM,YAAY,GAAG,WAAW,CAAC,KAAmB,CAAC,IAAI,KAAK,CAAA;IAC9D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAE1C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,aAAa,YAAY,OAAO,CAAA;QAChD,OAAO,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,CAAA;IAC1E,OAAO,OAAO,GAAG,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,UAA0B,EAC1B,KAAa,EACb,aAAuB;IAEvB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAkB,EAAE,CAAA;IAE/B,IAAI,IAAI,GAAG,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IACxF,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IACxF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAA;IACvE,KAAK,CAAC,IAAI,CAAC;QACT,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,gCAAgC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE;KACjG,CAAC,CAAA;IACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,gEAAgE;SAC1E,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;AAC9C,CAAC"}