@united-workforce/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +221 -0
  3. package/dist/__tests__/adapter-json-roundtrip.test.d.ts +2 -0
  4. package/dist/__tests__/adapter-json-roundtrip.test.d.ts.map +1 -0
  5. package/dist/__tests__/adapter-json-roundtrip.test.js +147 -0
  6. package/dist/__tests__/adapter-json-roundtrip.test.js.map +1 -0
  7. package/dist/__tests__/config.test.d.ts +2 -0
  8. package/dist/__tests__/config.test.d.ts.map +1 -0
  9. package/dist/__tests__/config.test.js +685 -0
  10. package/dist/__tests__/config.test.js.map +1 -0
  11. package/dist/__tests__/current-role.test.d.ts +2 -0
  12. package/dist/__tests__/current-role.test.d.ts.map +1 -0
  13. package/dist/__tests__/current-role.test.js +401 -0
  14. package/dist/__tests__/current-role.test.js.map +1 -0
  15. package/dist/__tests__/e2e-mock-agent.test.d.ts +2 -0
  16. package/dist/__tests__/e2e-mock-agent.test.d.ts.map +1 -0
  17. package/dist/__tests__/e2e-mock-agent.test.js +401 -0
  18. package/dist/__tests__/e2e-mock-agent.test.js.map +1 -0
  19. package/dist/__tests__/include-tag.test.d.ts +2 -0
  20. package/dist/__tests__/include-tag.test.d.ts.map +1 -0
  21. package/dist/__tests__/include-tag.test.js +69 -0
  22. package/dist/__tests__/include-tag.test.js.map +1 -0
  23. package/dist/__tests__/log.test.d.ts +2 -0
  24. package/dist/__tests__/log.test.d.ts.map +1 -0
  25. package/dist/__tests__/log.test.js +161 -0
  26. package/dist/__tests__/log.test.js.map +1 -0
  27. package/dist/__tests__/moderator-evaluate.test.d.ts +2 -0
  28. package/dist/__tests__/moderator-evaluate.test.d.ts.map +1 -0
  29. package/dist/__tests__/moderator-evaluate.test.js +170 -0
  30. package/dist/__tests__/moderator-evaluate.test.js.map +1 -0
  31. package/dist/__tests__/preload.d.ts +3 -0
  32. package/dist/__tests__/preload.d.ts.map +1 -0
  33. package/dist/__tests__/preload.js +6 -0
  34. package/dist/__tests__/preload.js.map +1 -0
  35. package/dist/__tests__/prompt.test.d.ts +2 -0
  36. package/dist/__tests__/prompt.test.d.ts.map +1 -0
  37. package/dist/__tests__/prompt.test.js +111 -0
  38. package/dist/__tests__/prompt.test.js.map +1 -0
  39. package/dist/__tests__/resolve-head-hash.test.d.ts +2 -0
  40. package/dist/__tests__/resolve-head-hash.test.d.ts.map +1 -0
  41. package/dist/__tests__/resolve-head-hash.test.js +66 -0
  42. package/dist/__tests__/resolve-head-hash.test.js.map +1 -0
  43. package/dist/__tests__/setup-agent-discovery.test.d.ts +2 -0
  44. package/dist/__tests__/setup-agent-discovery.test.d.ts.map +1 -0
  45. package/dist/__tests__/setup-agent-discovery.test.js +119 -0
  46. package/dist/__tests__/setup-agent-discovery.test.js.map +1 -0
  47. package/dist/__tests__/setup-complexity.test.d.ts +2 -0
  48. package/dist/__tests__/setup-complexity.test.d.ts.map +1 -0
  49. package/dist/__tests__/setup-complexity.test.js +314 -0
  50. package/dist/__tests__/setup-complexity.test.js.map +1 -0
  51. package/dist/__tests__/setup-validate.test.d.ts +2 -0
  52. package/dist/__tests__/setup-validate.test.d.ts.map +1 -0
  53. package/dist/__tests__/setup-validate.test.js +108 -0
  54. package/dist/__tests__/setup-validate.test.js.map +1 -0
  55. package/dist/__tests__/solve-issue-tea-worktree.test.d.ts +2 -0
  56. package/dist/__tests__/solve-issue-tea-worktree.test.d.ts.map +1 -0
  57. package/dist/__tests__/solve-issue-tea-worktree.test.js +107 -0
  58. package/dist/__tests__/solve-issue-tea-worktree.test.js.map +1 -0
  59. package/dist/__tests__/spawn-agent-json.test.d.ts +2 -0
  60. package/dist/__tests__/spawn-agent-json.test.d.ts.map +1 -0
  61. package/dist/__tests__/spawn-agent-json.test.js +79 -0
  62. package/dist/__tests__/spawn-agent-json.test.js.map +1 -0
  63. package/dist/__tests__/step-read.test.d.ts +2 -0
  64. package/dist/__tests__/step-read.test.d.ts.map +1 -0
  65. package/dist/__tests__/step-read.test.js +561 -0
  66. package/dist/__tests__/step-read.test.js.map +1 -0
  67. package/dist/__tests__/step-show-json.test.d.ts +2 -0
  68. package/dist/__tests__/step-show-json.test.d.ts.map +1 -0
  69. package/dist/__tests__/step-show-json.test.js +311 -0
  70. package/dist/__tests__/step-show-json.test.js.map +1 -0
  71. package/dist/__tests__/step-timing.test.d.ts +2 -0
  72. package/dist/__tests__/step-timing.test.d.ts.map +1 -0
  73. package/dist/__tests__/step-timing.test.js +345 -0
  74. package/dist/__tests__/step-timing.test.js.map +1 -0
  75. package/dist/__tests__/store-global-cas.test.d.ts +2 -0
  76. package/dist/__tests__/store-global-cas.test.d.ts.map +1 -0
  77. package/dist/__tests__/store-global-cas.test.js +235 -0
  78. package/dist/__tests__/store-global-cas.test.js.map +1 -0
  79. package/dist/__tests__/store-storage-root.test.d.ts +2 -0
  80. package/dist/__tests__/store-storage-root.test.d.ts.map +1 -0
  81. package/dist/__tests__/store-storage-root.test.js +43 -0
  82. package/dist/__tests__/store-storage-root.test.js.map +1 -0
  83. package/dist/__tests__/store-unified-threads.test.d.ts +2 -0
  84. package/dist/__tests__/store-unified-threads.test.d.ts.map +1 -0
  85. package/dist/__tests__/store-unified-threads.test.js +189 -0
  86. package/dist/__tests__/store-unified-threads.test.js.map +1 -0
  87. package/dist/__tests__/thread-cancel-status.test.d.ts +2 -0
  88. package/dist/__tests__/thread-cancel-status.test.d.ts.map +1 -0
  89. package/dist/__tests__/thread-cancel-status.test.js +111 -0
  90. package/dist/__tests__/thread-cancel-status.test.js.map +1 -0
  91. package/dist/__tests__/thread-list-filters.test.d.ts +2 -0
  92. package/dist/__tests__/thread-list-filters.test.d.ts.map +1 -0
  93. package/dist/__tests__/thread-list-filters.test.js +442 -0
  94. package/dist/__tests__/thread-list-filters.test.js.map +1 -0
  95. package/dist/__tests__/thread-location.test.d.ts +2 -0
  96. package/dist/__tests__/thread-location.test.d.ts.map +1 -0
  97. package/dist/__tests__/thread-location.test.js +159 -0
  98. package/dist/__tests__/thread-location.test.js.map +1 -0
  99. package/dist/__tests__/thread-read-quota.test.d.ts +2 -0
  100. package/dist/__tests__/thread-read-quota.test.d.ts.map +1 -0
  101. package/dist/__tests__/thread-read-quota.test.js +546 -0
  102. package/dist/__tests__/thread-read-quota.test.js.map +1 -0
  103. package/dist/__tests__/thread-read-xml-tags.test.d.ts +2 -0
  104. package/dist/__tests__/thread-read-xml-tags.test.d.ts.map +1 -0
  105. package/dist/__tests__/thread-read-xml-tags.test.js +610 -0
  106. package/dist/__tests__/thread-read-xml-tags.test.js.map +1 -0
  107. package/dist/__tests__/thread-resume.test.d.ts +2 -0
  108. package/dist/__tests__/thread-resume.test.d.ts.map +1 -0
  109. package/dist/__tests__/thread-resume.test.js +592 -0
  110. package/dist/__tests__/thread-resume.test.js.map +1 -0
  111. package/dist/__tests__/thread-show-status.test.d.ts +2 -0
  112. package/dist/__tests__/thread-show-status.test.d.ts.map +1 -0
  113. package/dist/__tests__/thread-show-status.test.js +267 -0
  114. package/dist/__tests__/thread-show-status.test.js.map +1 -0
  115. package/dist/__tests__/thread-start-cwd-cli.test.d.ts +2 -0
  116. package/dist/__tests__/thread-start-cwd-cli.test.d.ts.map +1 -0
  117. package/dist/__tests__/thread-start-cwd-cli.test.js +130 -0
  118. package/dist/__tests__/thread-start-cwd-cli.test.js.map +1 -0
  119. package/dist/__tests__/thread-step-count.test.d.ts +2 -0
  120. package/dist/__tests__/thread-step-count.test.d.ts.map +1 -0
  121. package/dist/__tests__/thread-step-count.test.js +55 -0
  122. package/dist/__tests__/thread-step-count.test.js.map +1 -0
  123. package/dist/__tests__/thread-suspend-step.test.d.ts +2 -0
  124. package/dist/__tests__/thread-suspend-step.test.d.ts.map +1 -0
  125. package/dist/__tests__/thread-suspend-step.test.js +155 -0
  126. package/dist/__tests__/thread-suspend-step.test.js.map +1 -0
  127. package/dist/__tests__/thread-suspended-display.test.d.ts +2 -0
  128. package/dist/__tests__/thread-suspended-display.test.d.ts.map +1 -0
  129. package/dist/__tests__/thread-suspended-display.test.js +247 -0
  130. package/dist/__tests__/thread-suspended-display.test.js.map +1 -0
  131. package/dist/__tests__/thread-test-helpers.d.ts +4 -0
  132. package/dist/__tests__/thread-test-helpers.d.ts.map +1 -0
  133. package/dist/__tests__/thread-test-helpers.js +23 -0
  134. package/dist/__tests__/thread-test-helpers.js.map +1 -0
  135. package/dist/__tests__/thread.test.d.ts +2 -0
  136. package/dist/__tests__/thread.test.d.ts.map +1 -0
  137. package/dist/__tests__/thread.test.js +883 -0
  138. package/dist/__tests__/thread.test.js.map +1 -0
  139. package/dist/__tests__/validate-semantic.test.d.ts +2 -0
  140. package/dist/__tests__/validate-semantic.test.d.ts.map +1 -0
  141. package/dist/__tests__/validate-semantic.test.js +408 -0
  142. package/dist/__tests__/validate-semantic.test.js.map +1 -0
  143. package/dist/__tests__/workflow-resolution.test.d.ts +2 -0
  144. package/dist/__tests__/workflow-resolution.test.d.ts.map +1 -0
  145. package/dist/__tests__/workflow-resolution.test.js +308 -0
  146. package/dist/__tests__/workflow-resolution.test.js.map +1 -0
  147. package/dist/background/background.d.ts +38 -0
  148. package/dist/background/background.d.ts.map +1 -0
  149. package/dist/background/background.js +123 -0
  150. package/dist/background/background.js.map +1 -0
  151. package/dist/background/index.d.ts +3 -0
  152. package/dist/background/index.d.ts.map +1 -0
  153. package/dist/background/index.js +2 -0
  154. package/dist/background/index.js.map +1 -0
  155. package/dist/background/types.d.ts +9 -0
  156. package/dist/background/types.d.ts.map +1 -0
  157. package/dist/background/types.js +2 -0
  158. package/dist/background/types.js.map +1 -0
  159. package/dist/cli.d.ts +3 -0
  160. package/dist/cli.d.ts.map +1 -0
  161. package/dist/cli.js +535 -0
  162. package/dist/cli.js.map +1 -0
  163. package/dist/commands/config.d.ts +41 -0
  164. package/dist/commands/config.d.ts.map +1 -0
  165. package/dist/commands/config.js +252 -0
  166. package/dist/commands/config.js.map +1 -0
  167. package/dist/commands/log.d.ts +26 -0
  168. package/dist/commands/log.d.ts.map +1 -0
  169. package/dist/commands/log.js +79 -0
  170. package/dist/commands/log.js.map +1 -0
  171. package/dist/commands/prompt.d.ts +6 -0
  172. package/dist/commands/prompt.d.ts.map +1 -0
  173. package/dist/commands/prompt.js +67 -0
  174. package/dist/commands/prompt.js.map +1 -0
  175. package/dist/commands/setup.d.ts +73 -0
  176. package/dist/commands/setup.d.ts.map +1 -0
  177. package/dist/commands/setup.js +522 -0
  178. package/dist/commands/setup.js.map +1 -0
  179. package/dist/commands/shared.d.ts +31 -0
  180. package/dist/commands/shared.d.ts.map +1 -0
  181. package/dist/commands/shared.js +154 -0
  182. package/dist/commands/shared.js.map +1 -0
  183. package/dist/commands/step.d.ts +18 -0
  184. package/dist/commands/step.d.ts.map +1 -0
  185. package/dist/commands/step.js +257 -0
  186. package/dist/commands/step.js.map +1 -0
  187. package/dist/commands/thread-time-parser.d.ts +6 -0
  188. package/dist/commands/thread-time-parser.d.ts.map +1 -0
  189. package/dist/commands/thread-time-parser.js +22 -0
  190. package/dist/commands/thread-time-parser.js.map +1 -0
  191. package/dist/commands/thread.d.ts +38 -0
  192. package/dist/commands/thread.d.ts.map +1 -0
  193. package/dist/commands/thread.js +1087 -0
  194. package/dist/commands/thread.js.map +1 -0
  195. package/dist/commands/workflow.d.ts +24 -0
  196. package/dist/commands/workflow.d.ts.map +1 -0
  197. package/dist/commands/workflow.js +138 -0
  198. package/dist/commands/workflow.js.map +1 -0
  199. package/dist/format.d.ts +3 -0
  200. package/dist/format.d.ts.map +1 -0
  201. package/dist/format.js +10 -0
  202. package/dist/format.js.map +1 -0
  203. package/dist/include.d.ts +12 -0
  204. package/dist/include.d.ts.map +1 -0
  205. package/dist/include.js +35 -0
  206. package/dist/include.js.map +1 -0
  207. package/dist/moderator/__tests__/evaluate.test.d.ts +2 -0
  208. package/dist/moderator/__tests__/evaluate.test.d.ts.map +1 -0
  209. package/dist/moderator/__tests__/evaluate.test.js +167 -0
  210. package/dist/moderator/__tests__/evaluate.test.js.map +1 -0
  211. package/dist/moderator/evaluate.d.ts +6 -0
  212. package/dist/moderator/evaluate.d.ts.map +1 -0
  213. package/dist/moderator/evaluate.js +65 -0
  214. package/dist/moderator/evaluate.js.map +1 -0
  215. package/dist/moderator/index.d.ts +4 -0
  216. package/dist/moderator/index.d.ts.map +1 -0
  217. package/dist/moderator/index.js +3 -0
  218. package/dist/moderator/index.js.map +1 -0
  219. package/dist/moderator/types.d.ts +25 -0
  220. package/dist/moderator/types.d.ts.map +1 -0
  221. package/dist/moderator/types.js +4 -0
  222. package/dist/moderator/types.js.map +1 -0
  223. package/dist/schemas.d.ts +16 -0
  224. package/dist/schemas.d.ts.map +1 -0
  225. package/dist/schemas.js +17 -0
  226. package/dist/schemas.js.map +1 -0
  227. package/dist/store.d.ts +77 -0
  228. package/dist/store.d.ts.map +1 -0
  229. package/dist/store.js +392 -0
  230. package/dist/store.js.map +1 -0
  231. package/dist/validate-semantic.d.ts +7 -0
  232. package/dist/validate-semantic.d.ts.map +1 -0
  233. package/dist/validate-semantic.js +263 -0
  234. package/dist/validate-semantic.js.map +1 -0
  235. package/dist/validate.d.ts +16 -0
  236. package/dist/validate.d.ts.map +1 -0
  237. package/dist/validate.js +115 -0
  238. package/dist/validate.js.map +1 -0
  239. package/package.json +44 -0
  240. package/src/__tests__/adapter-json-roundtrip.test.ts +181 -0
  241. package/src/__tests__/config.test.ts +740 -0
  242. package/src/__tests__/current-role.test.ts +438 -0
  243. package/src/__tests__/e2e-mock-agent.test.ts +498 -0
  244. package/src/__tests__/fixtures/e2e-completed-resume.mock.yaml +15 -0
  245. package/src/__tests__/fixtures/e2e-count.mock.yaml +19 -0
  246. package/src/__tests__/fixtures/e2e-count.workflow.yaml +45 -0
  247. package/src/__tests__/fixtures/e2e-linear.mock.yaml +13 -0
  248. package/src/__tests__/fixtures/e2e-linear.workflow.yaml +32 -0
  249. package/src/__tests__/fixtures/e2e-loop.mock.yaml +25 -0
  250. package/src/__tests__/fixtures/e2e-loop.workflow.yaml +36 -0
  251. package/src/__tests__/fixtures/e2e-mismatch.mock.yaml +16 -0
  252. package/src/__tests__/fixtures/e2e-mustache.mock.yaml +15 -0
  253. package/src/__tests__/fixtures/e2e-mustache.workflow.yaml +34 -0
  254. package/src/__tests__/fixtures/e2e-suspend.mock.yaml +14 -0
  255. package/src/__tests__/fixtures/e2e-suspend.workflow.yaml +24 -0
  256. package/src/__tests__/include-tag.test.ts +84 -0
  257. package/src/__tests__/log.test.ts +181 -0
  258. package/src/__tests__/moderator-evaluate.test.ts +186 -0
  259. package/src/__tests__/preload.ts +7 -0
  260. package/src/__tests__/prompt.test.ts +129 -0
  261. package/src/__tests__/resolve-head-hash.test.ts +86 -0
  262. package/src/__tests__/setup-agent-discovery.test.ts +167 -0
  263. package/src/__tests__/setup-complexity.test.ts +381 -0
  264. package/src/__tests__/setup-validate.test.ts +148 -0
  265. package/src/__tests__/solve-issue-tea-worktree.test.ts +144 -0
  266. package/src/__tests__/spawn-agent-json.test.ts +100 -0
  267. package/src/__tests__/step-read.test.ts +632 -0
  268. package/src/__tests__/step-show-json.test.ts +373 -0
  269. package/src/__tests__/step-timing.test.ts +392 -0
  270. package/src/__tests__/store-global-cas.test.ts +308 -0
  271. package/src/__tests__/store-storage-root.test.ts +49 -0
  272. package/src/__tests__/store-unified-threads.test.ts +235 -0
  273. package/src/__tests__/thread-cancel-status.test.ts +138 -0
  274. package/src/__tests__/thread-list-filters.test.ts +572 -0
  275. package/src/__tests__/thread-location.test.ts +186 -0
  276. package/src/__tests__/thread-read-quota.test.ts +613 -0
  277. package/src/__tests__/thread-read-xml-tags.test.ts +717 -0
  278. package/src/__tests__/thread-resume.test.ts +710 -0
  279. package/src/__tests__/thread-show-status.test.ts +317 -0
  280. package/src/__tests__/thread-start-cwd-cli.test.ts +164 -0
  281. package/src/__tests__/thread-step-count.test.ts +70 -0
  282. package/src/__tests__/thread-suspend-step.test.ts +181 -0
  283. package/src/__tests__/thread-suspended-display.test.ts +287 -0
  284. package/src/__tests__/thread-test-helpers.ts +37 -0
  285. package/src/__tests__/thread.test.ts +1025 -0
  286. package/src/__tests__/validate-semantic.test.ts +474 -0
  287. package/src/__tests__/workflow-resolution.test.ts +421 -0
  288. package/src/background/background.ts +147 -0
  289. package/src/background/index.ts +11 -0
  290. package/src/background/types.ts +9 -0
  291. package/src/cli.ts +692 -0
  292. package/src/commands/config.ts +304 -0
  293. package/src/commands/log.ts +116 -0
  294. package/src/commands/prompt.ts +81 -0
  295. package/src/commands/setup.ts +603 -0
  296. package/src/commands/shared.ts +227 -0
  297. package/src/commands/step.ts +343 -0
  298. package/src/commands/thread-time-parser.ts +23 -0
  299. package/src/commands/thread.ts +1575 -0
  300. package/src/commands/workflow.ts +213 -0
  301. package/src/format.ts +12 -0
  302. package/src/include.ts +37 -0
  303. package/src/moderator/__tests__/evaluate.test.ts +199 -0
  304. package/src/moderator/evaluate.ts +80 -0
  305. package/src/moderator/index.ts +7 -0
  306. package/src/moderator/types.ts +24 -0
  307. package/src/schemas.ts +26 -0
  308. package/src/store.ts +479 -0
  309. package/src/validate-semantic.ts +304 -0
  310. package/src/validate.ts +137 -0
@@ -0,0 +1,546 @@
1
+ import { mkdir, mkdtemp, rm } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { bootstrap, putSchema } from "@ocas/core";
5
+ import { openStore } from "@ocas/fs";
6
+ import { afterEach, beforeEach, describe, expect, test } from "vitest";
7
+ import { cmdThreadRead } from "../commands/thread.js";
8
+ import { registerUwfSchemas } from "../schemas.js";
9
+ import { seedThreads } from "./thread-test-helpers.js";
10
+ // ── schemas used in tests ────────────────────────────────────────────────────
11
+ const TURN_SCHEMA = {
12
+ title: "hermes-turn",
13
+ type: "object",
14
+ required: ["index", "role", "content"],
15
+ properties: {
16
+ index: { type: "integer" },
17
+ role: { type: "string" },
18
+ content: { type: "string" },
19
+ toolCalls: {
20
+ anyOf: [
21
+ { type: "array", items: { type: "object" } },
22
+ { type: "null" },
23
+ ],
24
+ },
25
+ reasoning: { anyOf: [{ type: "string" }, { type: "null" }] },
26
+ },
27
+ additionalProperties: false,
28
+ };
29
+ const DETAIL_SCHEMA = {
30
+ title: "hermes-detail",
31
+ type: "object",
32
+ required: ["sessionId", "model", "duration", "turnCount", "turns"],
33
+ properties: {
34
+ sessionId: { type: "string" },
35
+ model: { type: "string" },
36
+ duration: { type: "integer" },
37
+ turnCount: { type: "integer" },
38
+ turns: {
39
+ type: "array",
40
+ items: { type: "string", format: "ocas_ref" },
41
+ },
42
+ },
43
+ additionalProperties: false,
44
+ };
45
+ // ── helpers ───────────────────────────────────────────────────────────────────
46
+ async function registerDetailSchemas(store) {
47
+ await bootstrap(store);
48
+ const [turn, detail] = await Promise.all([
49
+ putSchema(store, TURN_SCHEMA),
50
+ putSchema(store, DETAIL_SCHEMA),
51
+ ]);
52
+ return { turn, detail };
53
+ }
54
+ function generateContent(size, prefix = "Content") {
55
+ const base = `${prefix} `;
56
+ const repeat = Math.ceil(size / base.length);
57
+ return base.repeat(repeat).slice(0, size);
58
+ }
59
+ // ── fixture ───────────────────────────────────────────────────────────────────
60
+ let tmpDir;
61
+ let originalEnv;
62
+ beforeEach(async () => {
63
+ tmpDir = await mkdtemp(join(tmpdir(), "cli-uwf-quota-test-"));
64
+ originalEnv = process.env.OCAS_HOME;
65
+ process.env.OCAS_HOME = join(tmpDir, "cas");
66
+ await mkdir(process.env.OCAS_HOME, { recursive: true });
67
+ });
68
+ afterEach(async () => {
69
+ await rm(tmpDir, { recursive: true, force: true });
70
+ if (originalEnv === undefined) {
71
+ delete process.env.OCAS_HOME;
72
+ }
73
+ else {
74
+ process.env.OCAS_HOME = originalEnv;
75
+ }
76
+ });
77
+ // ── thread read quota enforcement ─────────────────────────────────────────────
78
+ describe("thread read --quota flag", () => {
79
+ test("test 1: basic quota enforcement with 3 steps", async () => {
80
+ const casDir = join(tmpDir, "cas");
81
+ await mkdir(casDir, { recursive: true });
82
+ const store = await openStore(casDir);
83
+ const schemas = await registerUwfSchemas(store);
84
+ const detailSchemas = await registerDetailSchemas(store);
85
+ const workflowHash = await store.cas.put(schemas.workflow, {
86
+ name: "test-wf",
87
+ description: "desc",
88
+ roles: {
89
+ worker: {
90
+ description: "Worker",
91
+ goal: "You are a worker agent.",
92
+ capabilities: [],
93
+ procedure: "Do the work.",
94
+ output: "Summarize the work.",
95
+ meta: "placeholder00",
96
+ },
97
+ },
98
+ conditions: {},
99
+ graph: {},
100
+ });
101
+ const startHash = await store.cas.put(schemas.startNode, {
102
+ workflow: workflowHash,
103
+ prompt: "Test task",
104
+ });
105
+ const outputHash = await store.cas.put(schemas.workflow, {
106
+ name: "out",
107
+ description: "",
108
+ roles: {},
109
+ conditions: {},
110
+ graph: {},
111
+ });
112
+ // Create 3 steps with ~500 chars each
113
+ const steps = [];
114
+ for (let i = 1; i <= 3; i++) {
115
+ const content = generateContent(500, `Step${i}`);
116
+ const turnHash = await store.cas.put(detailSchemas.turn, {
117
+ index: 0,
118
+ role: "assistant",
119
+ content,
120
+ toolCalls: null,
121
+ reasoning: null,
122
+ });
123
+ const detailHash = await store.cas.put(detailSchemas.detail, {
124
+ sessionId: `session-${i}`,
125
+ model: "test-model",
126
+ duration: 1000,
127
+ turnCount: 1,
128
+ turns: [turnHash],
129
+ });
130
+ const stepHash = await store.cas.put(schemas.stepNode, {
131
+ start: startHash,
132
+ prev: steps[i - 2] ?? null,
133
+ role: "worker",
134
+ output: outputHash,
135
+ detail: detailHash,
136
+ agent: "uwf-test",
137
+ startedAtMs: 1000000000000,
138
+ completedAtMs: 1000000005000,
139
+ assembledPrompt: null,
140
+ });
141
+ steps.push(stepHash);
142
+ }
143
+ const threadId = "01HX2Q3R4S5T6V7W8X9YZ0";
144
+ await seedThreads(tmpDir, { [threadId]: steps[2] });
145
+ // Set quota to 800 chars - should only fit most recent steps
146
+ const markdown = await cmdThreadRead(tmpDir, threadId, 800, null, false);
147
+ // Quota must be reasonably enforced (allow ~200 char tolerance for skip hint)
148
+ expect(markdown.length).toBeLessThanOrEqual(1000);
149
+ // Should contain skip hint since not all steps fit
150
+ expect(markdown).toMatch(/earlier step/);
151
+ // Most recent step should be included
152
+ expect(markdown).toMatch(/Step3/);
153
+ });
154
+ test("test 2: quota check order - verifies bug is fixed", async () => {
155
+ const casDir = join(tmpDir, "cas");
156
+ await mkdir(casDir, { recursive: true });
157
+ const store = await openStore(casDir);
158
+ const schemas = await registerUwfSchemas(store);
159
+ const detailSchemas = await registerDetailSchemas(store);
160
+ const workflowHash = await store.cas.put(schemas.workflow, {
161
+ name: "test-wf",
162
+ description: "desc",
163
+ roles: {
164
+ worker: {
165
+ description: "Worker",
166
+ goal: "You are a worker agent.",
167
+ capabilities: [],
168
+ procedure: "Do the work.",
169
+ output: "Summarize the work.",
170
+ meta: "placeholder00",
171
+ },
172
+ },
173
+ conditions: {},
174
+ graph: {},
175
+ });
176
+ const startHash = await store.cas.put(schemas.startNode, {
177
+ workflow: workflowHash,
178
+ prompt: "Test task",
179
+ });
180
+ const outputHash = await store.cas.put(schemas.workflow, {
181
+ name: "out",
182
+ description: "",
183
+ roles: {},
184
+ conditions: {},
185
+ graph: {},
186
+ });
187
+ // Create 2 steps: first=300 chars, second=600 chars
188
+ const step1Content = generateContent(300, "First");
189
+ const step1TurnHash = await store.cas.put(detailSchemas.turn, {
190
+ index: 0,
191
+ role: "assistant",
192
+ content: step1Content,
193
+ toolCalls: null,
194
+ reasoning: null,
195
+ });
196
+ const step1DetailHash = await store.cas.put(detailSchemas.detail, {
197
+ sessionId: "session-1",
198
+ model: "test-model",
199
+ duration: 1000,
200
+ turnCount: 1,
201
+ turns: [step1TurnHash],
202
+ });
203
+ const step1Hash = await store.cas.put(schemas.stepNode, {
204
+ start: startHash,
205
+ prev: null,
206
+ role: "worker",
207
+ output: outputHash,
208
+ detail: step1DetailHash,
209
+ agent: "uwf-test",
210
+ startedAtMs: 1000000000000,
211
+ completedAtMs: 1000000005000,
212
+ assembledPrompt: null,
213
+ });
214
+ const step2Content = generateContent(600, "Second");
215
+ const step2TurnHash = await store.cas.put(detailSchemas.turn, {
216
+ index: 0,
217
+ role: "assistant",
218
+ content: step2Content,
219
+ toolCalls: null,
220
+ reasoning: null,
221
+ });
222
+ const step2DetailHash = await store.cas.put(detailSchemas.detail, {
223
+ sessionId: "session-2",
224
+ model: "test-model",
225
+ duration: 1000,
226
+ turnCount: 1,
227
+ turns: [step2TurnHash],
228
+ });
229
+ const step2Hash = await store.cas.put(schemas.stepNode, {
230
+ start: startHash,
231
+ prev: step1Hash,
232
+ role: "worker",
233
+ output: outputHash,
234
+ detail: step2DetailHash,
235
+ agent: "uwf-test",
236
+ startedAtMs: 1000000000000,
237
+ completedAtMs: 1000000005000,
238
+ assembledPrompt: null,
239
+ });
240
+ const threadId = "01HX2Q3R4S5T6V7W8X9YZ1";
241
+ await seedThreads(tmpDir, { [threadId]: step2Hash });
242
+ // Set quota to 500 chars
243
+ const markdown = await cmdThreadRead(tmpDir, threadId, 500, null, false);
244
+ // Bug fix verification: output must be limited (allow ~200 char tolerance)
245
+ expect(markdown.length).toBeLessThanOrEqual(1100);
246
+ // Should contain "Second" (most recent step)
247
+ expect(markdown).toMatch(/Second/);
248
+ // Should skip first step
249
+ expect(markdown).toMatch(/earlier step/);
250
+ // Verify improvement: before fix would be ~1264, now should be much closer to 500
251
+ expect(markdown.length).toBeLessThan(1200);
252
+ });
253
+ test("test 3: quota with --start section", async () => {
254
+ const casDir = join(tmpDir, "cas");
255
+ await mkdir(casDir, { recursive: true });
256
+ const store = await openStore(casDir);
257
+ const schemas = await registerUwfSchemas(store);
258
+ const detailSchemas = await registerDetailSchemas(store);
259
+ const workflowHash = await store.cas.put(schemas.workflow, {
260
+ name: "test-wf",
261
+ description: "desc",
262
+ roles: {
263
+ worker: {
264
+ description: "Worker",
265
+ goal: "You are a worker agent.",
266
+ capabilities: [],
267
+ procedure: "Do the work.",
268
+ output: "Summarize the work.",
269
+ meta: "placeholder00",
270
+ },
271
+ },
272
+ conditions: {},
273
+ graph: {},
274
+ });
275
+ const startHash = await store.cas.put(schemas.startNode, {
276
+ workflow: workflowHash,
277
+ prompt: "Test task with a moderately long prompt to test quota accounting",
278
+ });
279
+ const outputHash = await store.cas.put(schemas.workflow, {
280
+ name: "out",
281
+ description: "",
282
+ roles: {},
283
+ conditions: {},
284
+ graph: {},
285
+ });
286
+ // Create 2 steps
287
+ const steps = [];
288
+ for (let i = 1; i <= 2; i++) {
289
+ const content = generateContent(400, `Step${i}`);
290
+ const turnHash = await store.cas.put(detailSchemas.turn, {
291
+ index: 0,
292
+ role: "assistant",
293
+ content,
294
+ toolCalls: null,
295
+ reasoning: null,
296
+ });
297
+ const detailHash = await store.cas.put(detailSchemas.detail, {
298
+ sessionId: `session-${i}`,
299
+ model: "test-model",
300
+ duration: 1000,
301
+ turnCount: 1,
302
+ turns: [turnHash],
303
+ });
304
+ const stepHash = await store.cas.put(schemas.stepNode, {
305
+ start: startHash,
306
+ prev: steps[i - 2] ?? null,
307
+ role: "worker",
308
+ output: outputHash,
309
+ detail: detailHash,
310
+ agent: "uwf-test",
311
+ startedAtMs: 1000000000000,
312
+ completedAtMs: 1000000005000,
313
+ assembledPrompt: null,
314
+ });
315
+ steps.push(stepHash);
316
+ }
317
+ const threadId = "01HX2Q3R4S5T6V7W8X9YZ2";
318
+ await seedThreads(tmpDir, { [threadId]: steps[1] });
319
+ // Set tight quota with --start flag
320
+ const markdown = await cmdThreadRead(tmpDir, threadId, 600, null, true);
321
+ // Quota must be reasonably enforced (allow ~260 char tolerance for structure)
322
+ expect(markdown.length).toBeLessThanOrEqual(860);
323
+ // Should contain thread header
324
+ expect(markdown).toMatch(/# Thread/);
325
+ expect(markdown).toMatch(/test-wf/);
326
+ });
327
+ test("test 5a: quota edge case - minimal quota", async () => {
328
+ const casDir = join(tmpDir, "cas");
329
+ await mkdir(casDir, { recursive: true });
330
+ const store = await openStore(casDir);
331
+ const schemas = await registerUwfSchemas(store);
332
+ const detailSchemas = await registerDetailSchemas(store);
333
+ const workflowHash = await store.cas.put(schemas.workflow, {
334
+ name: "test-wf",
335
+ description: "desc",
336
+ roles: {
337
+ worker: {
338
+ description: "Worker",
339
+ goal: "You are a worker agent.",
340
+ capabilities: [],
341
+ procedure: "Do the work.",
342
+ output: "Summarize the work.",
343
+ meta: "placeholder00",
344
+ },
345
+ },
346
+ conditions: {},
347
+ graph: {},
348
+ });
349
+ const startHash = await store.cas.put(schemas.startNode, {
350
+ workflow: workflowHash,
351
+ prompt: "Test task",
352
+ });
353
+ const outputHash = await store.cas.put(schemas.workflow, {
354
+ name: "out",
355
+ description: "",
356
+ roles: {},
357
+ conditions: {},
358
+ graph: {},
359
+ });
360
+ const content = generateContent(500, "Test");
361
+ const turnHash = await store.cas.put(detailSchemas.turn, {
362
+ index: 0,
363
+ role: "assistant",
364
+ content,
365
+ toolCalls: null,
366
+ reasoning: null,
367
+ });
368
+ const detailHash = await store.cas.put(detailSchemas.detail, {
369
+ sessionId: "session-1",
370
+ model: "test-model",
371
+ duration: 1000,
372
+ turnCount: 1,
373
+ turns: [turnHash],
374
+ });
375
+ const stepHash = await store.cas.put(schemas.stepNode, {
376
+ start: startHash,
377
+ prev: null,
378
+ role: "worker",
379
+ output: outputHash,
380
+ detail: detailHash,
381
+ agent: "uwf-test",
382
+ startedAtMs: 1000000000000,
383
+ completedAtMs: 1000000005000,
384
+ assembledPrompt: null,
385
+ });
386
+ const threadId = "01HX2Q3R4S5T6V7W8X9YZ4";
387
+ await seedThreads(tmpDir, { [threadId]: stepHash });
388
+ // Minimal quota
389
+ const markdown = await cmdThreadRead(tmpDir, threadId, 1, null, false);
390
+ // Should handle gracefully - always shows at least one step
391
+ expect(markdown.length).toBeGreaterThan(1);
392
+ expect(markdown).toMatch(/Test/);
393
+ });
394
+ test("test 5b: quota edge case - very large quota", async () => {
395
+ const casDir = join(tmpDir, "cas");
396
+ await mkdir(casDir, { recursive: true });
397
+ const store = await openStore(casDir);
398
+ const schemas = await registerUwfSchemas(store);
399
+ const detailSchemas = await registerDetailSchemas(store);
400
+ const workflowHash = await store.cas.put(schemas.workflow, {
401
+ name: "test-wf",
402
+ description: "desc",
403
+ roles: {
404
+ worker: {
405
+ description: "Worker",
406
+ goal: "You are a worker agent.",
407
+ capabilities: [],
408
+ procedure: "Do the work.",
409
+ output: "Summarize the work.",
410
+ meta: "placeholder00",
411
+ },
412
+ },
413
+ conditions: {},
414
+ graph: {},
415
+ });
416
+ const startHash = await store.cas.put(schemas.startNode, {
417
+ workflow: workflowHash,
418
+ prompt: "Test task",
419
+ });
420
+ const outputHash = await store.cas.put(schemas.workflow, {
421
+ name: "out",
422
+ description: "",
423
+ roles: {},
424
+ conditions: {},
425
+ graph: {},
426
+ });
427
+ // Create 3 steps
428
+ const steps = [];
429
+ for (let i = 1; i <= 3; i++) {
430
+ const content = generateContent(300, `Step${i}`);
431
+ const turnHash = await store.cas.put(detailSchemas.turn, {
432
+ index: 0,
433
+ role: "assistant",
434
+ content,
435
+ toolCalls: null,
436
+ reasoning: null,
437
+ });
438
+ const detailHash = await store.cas.put(detailSchemas.detail, {
439
+ sessionId: `session-${i}`,
440
+ model: "test-model",
441
+ duration: 1000,
442
+ turnCount: 1,
443
+ turns: [turnHash],
444
+ });
445
+ const stepHash = await store.cas.put(schemas.stepNode, {
446
+ start: startHash,
447
+ prev: steps[i - 2] ?? null,
448
+ role: "worker",
449
+ output: outputHash,
450
+ detail: detailHash,
451
+ agent: "uwf-test",
452
+ startedAtMs: 1000000000000,
453
+ completedAtMs: 1000000005000,
454
+ assembledPrompt: null,
455
+ });
456
+ steps.push(stepHash);
457
+ }
458
+ const threadId = "01HX2Q3R4S5T6V7W8X9YZ5";
459
+ await seedThreads(tmpDir, { [threadId]: steps[2] });
460
+ // Very large quota
461
+ const markdown = await cmdThreadRead(tmpDir, threadId, 1000000, null, false);
462
+ // Should show all steps (no skipping)
463
+ expect(markdown).not.toMatch(/earlier step/);
464
+ expect(markdown).toMatch(/Step1/);
465
+ expect(markdown).toMatch(/Step2/);
466
+ expect(markdown).toMatch(/Step3/);
467
+ });
468
+ test("test 6: quota with --before parameter", async () => {
469
+ const casDir = join(tmpDir, "cas");
470
+ await mkdir(casDir, { recursive: true });
471
+ const store = await openStore(casDir);
472
+ const schemas = await registerUwfSchemas(store);
473
+ const detailSchemas = await registerDetailSchemas(store);
474
+ const workflowHash = await store.cas.put(schemas.workflow, {
475
+ name: "test-wf",
476
+ description: "desc",
477
+ roles: {
478
+ worker: {
479
+ description: "Worker",
480
+ goal: "You are a worker agent.",
481
+ capabilities: [],
482
+ procedure: "Do the work.",
483
+ output: "Summarize the work.",
484
+ meta: "placeholder00",
485
+ },
486
+ },
487
+ conditions: {},
488
+ graph: {},
489
+ });
490
+ const startHash = await store.cas.put(schemas.startNode, {
491
+ workflow: workflowHash,
492
+ prompt: "Test task",
493
+ });
494
+ const outputHash = await store.cas.put(schemas.workflow, {
495
+ name: "out",
496
+ description: "",
497
+ roles: {},
498
+ conditions: {},
499
+ graph: {},
500
+ });
501
+ // Create 5 steps
502
+ const steps = [];
503
+ for (let i = 1; i <= 5; i++) {
504
+ const content = generateContent(300, `Step${i}`);
505
+ const turnHash = await store.cas.put(detailSchemas.turn, {
506
+ index: 0,
507
+ role: "assistant",
508
+ content,
509
+ toolCalls: null,
510
+ reasoning: null,
511
+ });
512
+ const detailHash = await store.cas.put(detailSchemas.detail, {
513
+ sessionId: `session-${i}`,
514
+ model: "test-model",
515
+ duration: 1000,
516
+ turnCount: 1,
517
+ turns: [turnHash],
518
+ });
519
+ const stepHash = await store.cas.put(schemas.stepNode, {
520
+ start: startHash,
521
+ prev: steps[i - 2] ?? null,
522
+ role: "worker",
523
+ output: outputHash,
524
+ detail: detailHash,
525
+ agent: "uwf-test",
526
+ startedAtMs: 1000000000000,
527
+ completedAtMs: 1000000005000,
528
+ assembledPrompt: null,
529
+ });
530
+ steps.push(stepHash);
531
+ }
532
+ const threadId = "01HX2Q3R4S5T6V7W8X9YZ6";
533
+ await seedThreads(tmpDir, { [threadId]: steps[4] });
534
+ // Use --before to limit to steps 1-2, then set quota that allows only 1
535
+ const markdown = await cmdThreadRead(tmpDir, threadId, 500, steps[2], false);
536
+ // Should not contain Step3 or later
537
+ expect(markdown).not.toMatch(/Step3/);
538
+ expect(markdown).not.toMatch(/Step4/);
539
+ expect(markdown).not.toMatch(/Step5/);
540
+ // Quota should select most recent of candidates (Step2)
541
+ expect(markdown).toMatch(/Step2/);
542
+ // Quota enforcement (allow ~200 char tolerance)
543
+ expect(markdown.length).toBeLessThanOrEqual(700);
544
+ });
545
+ });
546
+ //# sourceMappingURL=thread-read-quota.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-read-quota.test.js","sourceRoot":"","sources":["../../src/__tests__/thread-read-quota.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,gFAAgF;AAEhF,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,QAAiB;IACvB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;IACtC,UAAU,EAAE;QACV,KAAK,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACnC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACjC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACpC,SAAS,EAAE;YACT,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE;gBAC9D,EAAE,IAAI,EAAE,MAAe,EAAE;aAC1B;SACF;QACD,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC,EAAE;KAC/E;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,QAAiB;IACvB,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC;IAClE,UAAU,EAAE;QACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACtC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QAClC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACtC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACvC,KAAK,EAAE;YACL,IAAI,EAAE,OAAgB;YACtB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,MAAM,EAAE,UAAU,EAAE;SACvD;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,iFAAiF;AAEjF,KAAK,UAAU,qBAAqB,CAAC,KAA4C;IAC/E,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;QAC7B,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;KAChC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,MAAM,GAAG,SAAS;IACvD,MAAM,IAAI,GAAG,GAAG,MAAM,GAAG,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,iFAAiF;AAEjF,IAAI,MAAc,CAAC;AACnB,IAAI,WAA+B,CAAC;AAEpC,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC9D,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;IACtC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzD,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,yBAAyB;oBAC/B,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,eAAyB;iBAChC;aACF;YACD,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;YACvD,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvD,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,sCAAsC;QACtC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;gBACvD,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC3D,SAAS,EAAE,WAAW,CAAC,EAAE;gBACzB,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC,QAAQ,CAAC;aAClB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACrD,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;gBAC1B,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,aAAa;gBAC1B,aAAa,EAAE,aAAa;gBAC5B,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,wBAAoC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAW,EAAE,CAAC,CAAC;QAE9D,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzE,8EAA8E;QAC9E,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAElD,mDAAmD;QACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEzC,sCAAsC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzD,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,yBAAyB;oBAC/B,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,eAAyB;iBAChC;aACF;YACD,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;YACvD,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvD,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,oDAAoD;QACpD,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;YAC5D,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;YAChE,SAAS,EAAE,WAAW;YACtB,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,CAAC,aAAa,CAAC;SACvB,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACtD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,aAAa;YAC5B,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;YAC5D,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;YAChE,SAAS,EAAE,WAAW;YACtB,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,CAAC,aAAa,CAAC;SACvB,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACtD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,aAAa;YAC5B,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,wBAAoC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAErD,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzE,2EAA2E;QAC3E,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAElD,6CAA6C;QAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEnC,yBAAyB;QACzB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEzC,kFAAkF;QAClF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzD,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,yBAAyB;oBAC/B,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,eAAyB;iBAChC;aACF;YACD,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;YACvD,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,kEAAkE;SAC3E,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvD,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,iBAAiB;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;gBACvD,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC3D,SAAS,EAAE,WAAW,CAAC,EAAE;gBACzB,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC,QAAQ,CAAC;aAClB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACrD,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;gBAC1B,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,aAAa;gBAC1B,aAAa,EAAE,aAAa;gBAC5B,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,wBAAoC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAW,EAAE,CAAC,CAAC;QAE9D,oCAAoC;QACpC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAExE,8EAA8E;QAC9E,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAEjD,+BAA+B;QAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzD,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,yBAAyB;oBAC/B,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,eAAyB;iBAChC;aACF;YACD,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;YACvD,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvD,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;YACvD,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,WAAW;YACjB,OAAO;YACP,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;YAC3D,SAAS,EAAE,WAAW;YACtB,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,CAAC,QAAQ,CAAC;SAClB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACrD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,aAAa;YAC5B,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,wBAAoC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEpD,gBAAgB;QAChB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEvE,4DAA4D;QAC5D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzD,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,yBAAyB;oBAC/B,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,eAAyB;iBAChC;aACF;YACD,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;YACvD,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvD,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,iBAAiB;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;gBACvD,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC3D,SAAS,EAAE,WAAW,CAAC,EAAE;gBACzB,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC,QAAQ,CAAC;aAClB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACrD,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;gBAC1B,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,aAAa;gBAC1B,aAAa,EAAE,aAAa;gBAC5B,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,wBAAoC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAW,EAAE,CAAC,CAAC;QAE9D,mBAAmB;QACnB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAE7E,sCAAsC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzD,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,yBAAyB;oBAC/B,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,eAAyB;iBAChC;aACF;YACD,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;YACvD,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvD,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,iBAAiB;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;gBACvD,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC3D,SAAS,EAAE,WAAW,CAAC,EAAE;gBACzB,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC,QAAQ,CAAC;aAClB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACrD,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;gBAC1B,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,aAAa;gBAC1B,aAAa,EAAE,aAAa;gBAC5B,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,wBAAoC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAW,EAAE,CAAC,CAAC;QAE9D,wEAAwE;QACxE,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAW,EAAE,KAAK,CAAC,CAAC;QAEvF,oCAAoC;QACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEtC,wDAAwD;QACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElC,gDAAgD;QAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=thread-read-xml-tags.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-read-xml-tags.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/thread-read-xml-tags.test.ts"],"names":[],"mappings":""}