perttool 0.1.0-alpha.2

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 (176) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/LICENSE +21 -0
  3. package/README.md +134 -0
  4. package/dist/analysis/graph.d.ts +41 -0
  5. package/dist/analysis/graph.d.ts.map +1 -0
  6. package/dist/analysis/graph.js +199 -0
  7. package/dist/analysis/graph.js.map +1 -0
  8. package/dist/analysis/precedence.d.ts +52 -0
  9. package/dist/analysis/precedence.d.ts.map +1 -0
  10. package/dist/analysis/precedence.js +187 -0
  11. package/dist/analysis/precedence.js.map +1 -0
  12. package/dist/analysis/resource.d.ts +96 -0
  13. package/dist/analysis/resource.d.ts.map +1 -0
  14. package/dist/analysis/resource.js +522 -0
  15. package/dist/analysis/resource.js.map +1 -0
  16. package/dist/application/analyze.d.ts +32 -0
  17. package/dist/application/analyze.d.ts.map +1 -0
  18. package/dist/application/analyze.js +144 -0
  19. package/dist/application/analyze.js.map +1 -0
  20. package/dist/application/check.d.ts +24 -0
  21. package/dist/application/check.d.ts.map +1 -0
  22. package/dist/application/check.js +43 -0
  23. package/dist/application/check.js.map +1 -0
  24. package/dist/application/format.d.ts +21 -0
  25. package/dist/application/format.d.ts.map +1 -0
  26. package/dist/application/format.js +52 -0
  27. package/dist/application/format.js.map +1 -0
  28. package/dist/application/mutate.d.ts +4 -0
  29. package/dist/application/mutate.d.ts.map +1 -0
  30. package/dist/application/mutate.js +175 -0
  31. package/dist/application/mutate.js.map +1 -0
  32. package/dist/application/next.d.ts +86 -0
  33. package/dist/application/next.d.ts.map +1 -0
  34. package/dist/application/next.js +310 -0
  35. package/dist/application/next.js.map +1 -0
  36. package/dist/cli.d.ts +3 -0
  37. package/dist/cli.d.ts.map +1 -0
  38. package/dist/cli.js +2103 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/conversion/mermaid-import.d.ts +26 -0
  41. package/dist/conversion/mermaid-import.d.ts.map +1 -0
  42. package/dist/conversion/mermaid-import.js +655 -0
  43. package/dist/conversion/mermaid-import.js.map +1 -0
  44. package/dist/conversion/mermaid.d.ts +38 -0
  45. package/dist/conversion/mermaid.d.ts.map +1 -0
  46. package/dist/conversion/mermaid.js +362 -0
  47. package/dist/conversion/mermaid.js.map +1 -0
  48. package/dist/editing/unified-diff.d.ts +7 -0
  49. package/dist/editing/unified-diff.d.ts.map +1 -0
  50. package/dist/editing/unified-diff.js +81 -0
  51. package/dist/editing/unified-diff.js.map +1 -0
  52. package/dist/formatter/source-formatter.d.ts +17 -0
  53. package/dist/formatter/source-formatter.d.ts.map +1 -0
  54. package/dist/formatter/source-formatter.js +210 -0
  55. package/dist/formatter/source-formatter.js.map +1 -0
  56. package/dist/help/registry.d.ts +37 -0
  57. package/dist/help/registry.d.ts.map +1 -0
  58. package/dist/help/registry.js +657 -0
  59. package/dist/help/registry.js.map +1 -0
  60. package/dist/index.d.ts +44 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +23 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/io/document-file.d.ts +9 -0
  65. package/dist/io/document-file.d.ts.map +1 -0
  66. package/dist/io/document-file.js +19 -0
  67. package/dist/io/document-file.js.map +1 -0
  68. package/dist/io/safe-write.d.ts +33 -0
  69. package/dist/io/safe-write.d.ts.map +1 -0
  70. package/dist/io/safe-write.js +280 -0
  71. package/dist/io/safe-write.js.map +1 -0
  72. package/dist/model/diagnostics.d.ts +43 -0
  73. package/dist/model/diagnostics.d.ts.map +1 -0
  74. package/dist/model/diagnostics.js +47 -0
  75. package/dist/model/diagnostics.js.map +1 -0
  76. package/dist/model/rational.d.ts +21 -0
  77. package/dist/model/rational.d.ts.map +1 -0
  78. package/dist/model/rational.js +84 -0
  79. package/dist/model/rational.js.map +1 -0
  80. package/dist/model/syntax.d.ts +67 -0
  81. package/dist/model/syntax.d.ts.map +1 -0
  82. package/dist/model/syntax.js +15 -0
  83. package/dist/model/syntax.js.map +1 -0
  84. package/dist/model/units.d.ts +18 -0
  85. package/dist/model/units.d.ts.map +1 -0
  86. package/dist/model/units.js +29 -0
  87. package/dist/model/units.js.map +1 -0
  88. package/dist/mutation/advance.d.ts +26 -0
  89. package/dist/mutation/advance.d.ts.map +1 -0
  90. package/dist/mutation/advance.js +261 -0
  91. package/dist/mutation/advance.js.map +1 -0
  92. package/dist/mutation/diagnostics.d.ts +10 -0
  93. package/dist/mutation/diagnostics.d.ts.map +1 -0
  94. package/dist/mutation/diagnostics.js +10 -0
  95. package/dist/mutation/diagnostics.js.map +1 -0
  96. package/dist/mutation/entity-editor.d.ts +16 -0
  97. package/dist/mutation/entity-editor.d.ts.map +1 -0
  98. package/dist/mutation/entity-editor.js +103 -0
  99. package/dist/mutation/entity-editor.js.map +1 -0
  100. package/dist/mutation/milestone.d.ts +5 -0
  101. package/dist/mutation/milestone.d.ts.map +1 -0
  102. package/dist/mutation/milestone.js +194 -0
  103. package/dist/mutation/milestone.js.map +1 -0
  104. package/dist/mutation/resource.d.ts +5 -0
  105. package/dist/mutation/resource.d.ts.map +1 -0
  106. package/dist/mutation/resource.js +145 -0
  107. package/dist/mutation/resource.js.map +1 -0
  108. package/dist/mutation/source.d.ts +22 -0
  109. package/dist/mutation/source.d.ts.map +1 -0
  110. package/dist/mutation/source.js +155 -0
  111. package/dist/mutation/source.js.map +1 -0
  112. package/dist/mutation/task.d.ts +10 -0
  113. package/dist/mutation/task.d.ts.map +1 -0
  114. package/dist/mutation/task.js +644 -0
  115. package/dist/mutation/task.js.map +1 -0
  116. package/dist/mutation/text-edits.d.ts +8 -0
  117. package/dist/mutation/text-edits.d.ts.map +1 -0
  118. package/dist/mutation/text-edits.js +33 -0
  119. package/dist/mutation/text-edits.js.map +1 -0
  120. package/dist/mutation/types.d.ts +153 -0
  121. package/dist/mutation/types.d.ts.map +1 -0
  122. package/dist/mutation/types.js +2 -0
  123. package/dist/mutation/types.js.map +1 -0
  124. package/dist/parser/document-parser.d.ts +6 -0
  125. package/dist/parser/document-parser.d.ts.map +1 -0
  126. package/dist/parser/document-parser.js +735 -0
  127. package/dist/parser/document-parser.js.map +1 -0
  128. package/dist/recommendation/explanation-types.d.ts +226 -0
  129. package/dist/recommendation/explanation-types.d.ts.map +1 -0
  130. package/dist/recommendation/explanation-types.js +2 -0
  131. package/dist/recommendation/explanation-types.js.map +1 -0
  132. package/dist/recommendation/explanation-validation.d.ts +4 -0
  133. package/dist/recommendation/explanation-validation.d.ts.map +1 -0
  134. package/dist/recommendation/explanation-validation.js +745 -0
  135. package/dist/recommendation/explanation-validation.js.map +1 -0
  136. package/dist/recommendation/explanation-values.d.ts +7 -0
  137. package/dist/recommendation/explanation-values.d.ts.map +1 -0
  138. package/dist/recommendation/explanation-values.js +283 -0
  139. package/dist/recommendation/explanation-values.js.map +1 -0
  140. package/dist/recommendation/explanation.d.ts +8 -0
  141. package/dist/recommendation/explanation.d.ts.map +1 -0
  142. package/dist/recommendation/explanation.js +1022 -0
  143. package/dist/recommendation/explanation.js.map +1 -0
  144. package/dist/recommendation/failure.d.ts +3 -0
  145. package/dist/recommendation/failure.d.ts.map +1 -0
  146. package/dist/recommendation/failure.js +4 -0
  147. package/dist/recommendation/failure.js.map +1 -0
  148. package/dist/recommendation/json.d.ts +3 -0
  149. package/dist/recommendation/json.d.ts.map +1 -0
  150. package/dist/recommendation/json.js +252 -0
  151. package/dist/recommendation/json.js.map +1 -0
  152. package/dist/recommendation/override-types.d.ts +117 -0
  153. package/dist/recommendation/override-types.d.ts.map +1 -0
  154. package/dist/recommendation/override-types.js +2 -0
  155. package/dist/recommendation/override-types.js.map +1 -0
  156. package/dist/recommendation/override.d.ts +7 -0
  157. package/dist/recommendation/override.d.ts.map +1 -0
  158. package/dist/recommendation/override.js +717 -0
  159. package/dist/recommendation/override.js.map +1 -0
  160. package/dist/recommendation/ranking.d.ts +7 -0
  161. package/dist/recommendation/ranking.d.ts.map +1 -0
  162. package/dist/recommendation/ranking.js +391 -0
  163. package/dist/recommendation/ranking.js.map +1 -0
  164. package/dist/recommendation/types.d.ts +83 -0
  165. package/dist/recommendation/types.d.ts.map +1 -0
  166. package/dist/recommendation/types.js +2 -0
  167. package/dist/recommendation/types.js.map +1 -0
  168. package/dist/semantic/validator.d.ts +4 -0
  169. package/dist/semantic/validator.d.ts.map +1 -0
  170. package/dist/semantic/validator.js +490 -0
  171. package/dist/semantic/validator.js.map +1 -0
  172. package/dist/version.d.ts +2 -0
  173. package/dist/version.d.ts.map +1 -0
  174. package/dist/version.js +2 -0
  175. package/dist/version.js.map +1 -0
  176. package/package.json +61 -0
@@ -0,0 +1,210 @@
1
+ import { checkDocument } from "../application/check.js";
2
+ import { applyTextEdits, normalizeTextEdits, } from "../mutation/text-edits.js";
3
+ const bareTagPattern = /^[A-Za-z][A-Za-z0-9_-]*$/;
4
+ function splitPhysicalLines(text) {
5
+ if (text.length === 0)
6
+ return [];
7
+ const lines = [];
8
+ let start = 0;
9
+ let line = 0;
10
+ while (start < text.length) {
11
+ const newline = text.indexOf("\n", start);
12
+ const rawEnd = newline === -1 ? text.length : newline;
13
+ const end = rawEnd > start && text[rawEnd - 1] === "\r" ? rawEnd - 1 : rawEnd;
14
+ lines.push({ text: text.slice(start, end), start, end, line });
15
+ if (newline === -1)
16
+ break;
17
+ start = newline + 1;
18
+ line += 1;
19
+ }
20
+ return lines;
21
+ }
22
+ function majorLineEnding(text) {
23
+ let lf = 0;
24
+ let crlf = 0;
25
+ let first;
26
+ for (let index = 0; index < text.length; index += 1) {
27
+ if (text[index] !== "\n")
28
+ continue;
29
+ const ending = index > 0 && text[index - 1] === "\r" ? "\r\n" : "\n";
30
+ first ??= ending;
31
+ if (ending === "\r\n")
32
+ crlf += 1;
33
+ else
34
+ lf += 1;
35
+ }
36
+ if (crlf === lf)
37
+ return first ?? "\n";
38
+ return crlf > lf ? "\r\n" : "\n";
39
+ }
40
+ function canonicalDecimal(value) {
41
+ const digits = value.digits.toString().padStart(value.scale + 1, "0");
42
+ const wholeEnd = digits.length - value.scale;
43
+ const whole = digits.slice(0, wholeEnd).replace(/^0+(?=\d)/, "");
44
+ const fraction = digits.slice(wholeEnd).replace(/0+$/, "");
45
+ return fraction === "" ? whole : `${whole}.${fraction}`;
46
+ }
47
+ function canonicalDuration(value) {
48
+ return `${canonicalDecimal(value)}${value.suffix}`;
49
+ }
50
+ function isDurationValue(value) {
51
+ return (typeof value === "object" &&
52
+ value !== null &&
53
+ "digits" in value &&
54
+ typeof value.digits === "bigint" &&
55
+ "scale" in value &&
56
+ typeof value.scale === "number" &&
57
+ "suffix" in value &&
58
+ (value.suffix === "d" || value.suffix === "h" || value.suffix === "p"));
59
+ }
60
+ function isVelocityValue(value) {
61
+ return (typeof value === "object" &&
62
+ value !== null &&
63
+ "points" in value &&
64
+ isDurationValue(value.points) &&
65
+ value.points.suffix === "p" &&
66
+ "period" in value &&
67
+ isDurationValue(value.period) &&
68
+ (value.period.suffix === "d" || value.period.suffix === "h"));
69
+ }
70
+ function canonicalFieldValue(field) {
71
+ if (["title", "description", "owner", "source", "blocked_reason", "reason"].includes(field.name)) {
72
+ return typeof field.value === "string" ? JSON.stringify(field.value) : undefined;
73
+ }
74
+ if (["version", "capacity", "priority"].includes(field.name)) {
75
+ return typeof field.value === "number" ? String(field.value) : undefined;
76
+ }
77
+ if (["duration", "critical_epsilon", "target_duration", "optimistic", "most_likely", "pessimistic"].includes(field.name)) {
78
+ return isDurationValue(field.value) ? canonicalDuration(field.value) : undefined;
79
+ }
80
+ if (field.name === "velocity") {
81
+ return isVelocityValue(field.value)
82
+ ? `${canonicalDuration(field.value.points)}/${canonicalDuration(field.value.period)}`
83
+ : undefined;
84
+ }
85
+ if (field.name === "tags" && Array.isArray(field.value)) {
86
+ const tags = field.value.filter((value) => typeof value === "string");
87
+ if (tags.length !== field.value.length)
88
+ return undefined;
89
+ return `[${tags.map((tag) => (bareTagPattern.test(tag) ? tag : JSON.stringify(tag))).join(", ")}]`;
90
+ }
91
+ return field.rawValue === "" ? undefined : field.rawValue;
92
+ }
93
+ function requirementValues(field) {
94
+ if (field.name !== "requires" || !Array.isArray(field.value))
95
+ return [];
96
+ return field.value.filter((value) => typeof value === "object" &&
97
+ value !== null &&
98
+ "units" in value &&
99
+ typeof value.units === "number" &&
100
+ "unitsSpan" in value);
101
+ }
102
+ function pushEdit(edits, text, edit) {
103
+ if (text.slice(edit.startOffset, edit.endOffset) !== edit.replacement)
104
+ edits.push(edit);
105
+ }
106
+ export function formatDocument(text, options = {}) {
107
+ const checked = checkDocument(text, options);
108
+ if (!checked.ok) {
109
+ return {
110
+ ok: false,
111
+ documentId: checked.documentId,
112
+ changed: false,
113
+ formattedText: null,
114
+ edits: [],
115
+ diagnostics: checked.diagnostics,
116
+ diagnosticsTruncated: checked.diagnosticsTruncated,
117
+ };
118
+ }
119
+ const lines = splitPhysicalLines(text);
120
+ const lineEnding = majorLineEnding(text);
121
+ const edits = [];
122
+ for (const declaration of checked.document.declarations) {
123
+ pushEdit(edits, text, {
124
+ startOffset: declaration.headerSpan.start.offset,
125
+ endOffset: declaration.headerSpan.end.offset,
126
+ replacement: declaration.kind === "task" || declaration.kind === "gate"
127
+ ? `${declaration.kind} ${declaration.id} ${declaration.from} -> ${declaration.to}:`
128
+ : `${declaration.kind} ${declaration.id}:`,
129
+ });
130
+ for (const field of declaration.fields) {
131
+ const fieldLine = lines[field.span.start.line];
132
+ if (field.contentSpan !== undefined && typeof field.value === "string") {
133
+ const firstLine = lines[field.contentSpan.start.line];
134
+ const lastLine = lines[field.contentSpan.end.line];
135
+ const decodedLines = field.value.split("\n");
136
+ const physicalLines = lines.slice(firstLine.line, lastLine.line + 1);
137
+ if (decodedLines.length !== physicalLines.length) {
138
+ throw new Error("block text decoded line count does not match its source span");
139
+ }
140
+ pushEdit(edits, text, {
141
+ startOffset: fieldLine.start,
142
+ endOffset: fieldLine.end,
143
+ replacement: ` ${field.name} |`,
144
+ });
145
+ const replacement = decodedLines
146
+ .map((decoded, index) => decoded === "" ? physicalLines[index].text : ` ${decoded}`)
147
+ .join(lineEnding);
148
+ pushEdit(edits, text, {
149
+ startOffset: firstLine.start,
150
+ endOffset: lastLine.end,
151
+ replacement,
152
+ });
153
+ }
154
+ else if (field.children !== undefined || field.name === "requires") {
155
+ pushEdit(edits, text, {
156
+ startOffset: fieldLine.start,
157
+ endOffset: fieldLine.end,
158
+ replacement: ` ${field.name}:`,
159
+ });
160
+ }
161
+ else {
162
+ const replacement = canonicalFieldValue(field);
163
+ if (replacement !== undefined) {
164
+ pushEdit(edits, text, {
165
+ startOffset: fieldLine.start,
166
+ endOffset: fieldLine.end,
167
+ replacement: ` ${field.name} ${replacement}`,
168
+ });
169
+ }
170
+ }
171
+ for (const child of field.children ?? []) {
172
+ const replacement = canonicalFieldValue(child);
173
+ if (replacement !== undefined) {
174
+ const childLine = lines[child.span.start.line];
175
+ pushEdit(edits, text, {
176
+ startOffset: childLine.start,
177
+ endOffset: childLine.end,
178
+ replacement: ` ${child.name} ${replacement}`,
179
+ });
180
+ }
181
+ }
182
+ for (const requirement of requirementValues(field)) {
183
+ const requirementLine = lines[requirement.span.start.line];
184
+ pushEdit(edits, text, {
185
+ startOffset: requirementLine.start,
186
+ endOffset: requirementLine.end,
187
+ replacement: ` ${requirement.resourceId} ${requirement.units}`,
188
+ });
189
+ }
190
+ }
191
+ }
192
+ if (!text.endsWith("\n")) {
193
+ edits.push({ startOffset: text.length, endOffset: text.length, replacement: lineEnding });
194
+ }
195
+ const normalizedEdits = normalizeTextEdits(text, edits, "formatter");
196
+ const formattedText = applyTextEdits(text, normalizedEdits);
197
+ const candidate = checkDocument(formattedText, options);
198
+ if (!candidate.ok)
199
+ throw new Error("formatter produced an invalid candidate document");
200
+ return {
201
+ ok: true,
202
+ documentId: candidate.documentId,
203
+ changed: formattedText !== text,
204
+ formattedText,
205
+ edits: normalizedEdits,
206
+ diagnostics: candidate.diagnostics,
207
+ diagnosticsTruncated: candidate.diagnosticsTruncated,
208
+ };
209
+ }
210
+ //# sourceMappingURL=source-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-formatter.js","sourceRoot":"","sources":["../../src/formatter/source-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { Diagnostic } from "../model/diagnostics.js";
2
+ export type HelpLevel = "index" | "quick" | "detail";
3
+ export interface HelpSection {
4
+ readonly id: string;
5
+ readonly title: string;
6
+ readonly body: string;
7
+ }
8
+ export interface HelpExample {
9
+ readonly id: string;
10
+ readonly title: string;
11
+ readonly text: string;
12
+ }
13
+ export interface HelpNode {
14
+ readonly id: string;
15
+ readonly title: string;
16
+ readonly summary: string;
17
+ readonly quick: readonly HelpSection[];
18
+ readonly detail: readonly HelpSection[];
19
+ readonly syntax: readonly string[];
20
+ readonly examples: readonly HelpExample[];
21
+ readonly related: readonly string[];
22
+ }
23
+ export interface HelpResult {
24
+ readonly ok: boolean;
25
+ readonly topicId: string | null;
26
+ readonly level: HelpLevel;
27
+ readonly title: string;
28
+ readonly summary: string;
29
+ readonly sections: readonly HelpSection[];
30
+ readonly syntax: readonly string[];
31
+ readonly examples: readonly HelpExample[];
32
+ readonly related: readonly string[];
33
+ readonly topics: readonly Pick<HelpNode, "id" | "title" | "summary">[];
34
+ readonly diagnostics: readonly Diagnostic[];
35
+ }
36
+ export declare function getHelp(topicId: string | null, level: HelpLevel): HelpResult;
37
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/help/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC;IACvE,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C;AA6lBD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,UAAU,CAsD5E"}