@bluelibs/runner-dev 4.1.0 → 4.2.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 (154) hide show
  1. package/AI.md +40 -43
  2. package/README.md +70 -0
  3. package/dist/architect/core/errors.d.ts +39 -0
  4. package/dist/architect/core/errors.js +143 -0
  5. package/dist/architect/core/errors.js.map +1 -0
  6. package/dist/architect/core/index.d.ts +3 -0
  7. package/dist/architect/core/index.js +21 -0
  8. package/dist/architect/core/index.js.map +1 -0
  9. package/dist/architect/core/interfaces.d.ts +158 -0
  10. package/dist/architect/core/interfaces.js +3 -0
  11. package/dist/architect/core/interfaces.js.map +1 -0
  12. package/dist/architect/core/types.d.ts +544 -0
  13. package/dist/architect/core/types.js +49 -0
  14. package/dist/architect/core/types.js.map +1 -0
  15. package/dist/architect/execution/executor.d.ts +23 -0
  16. package/dist/architect/execution/executor.js +476 -0
  17. package/dist/architect/execution/executor.js.map +1 -0
  18. package/dist/architect/execution/index.d.ts +1 -0
  19. package/dist/architect/execution/index.js +19 -0
  20. package/dist/architect/execution/index.js.map +1 -0
  21. package/dist/architect/executor.d.ts +7 -0
  22. package/dist/architect/executor.js +150 -0
  23. package/dist/architect/executor.js.map +1 -0
  24. package/dist/architect/index.d.ts +45 -0
  25. package/dist/architect/index.js +76 -0
  26. package/dist/architect/index.js.map +1 -0
  27. package/dist/architect/llmClient.d.ts +10 -0
  28. package/dist/architect/llmClient.js +33 -0
  29. package/dist/architect/llmClient.js.map +1 -0
  30. package/dist/architect/models/base.d.ts +16 -0
  31. package/dist/architect/models/base.js +68 -0
  32. package/dist/architect/models/base.js.map +1 -0
  33. package/dist/architect/models/factory.d.ts +16 -0
  34. package/dist/architect/models/factory.js +73 -0
  35. package/dist/architect/models/factory.js.map +1 -0
  36. package/dist/architect/models/index.d.ts +3 -0
  37. package/dist/architect/models/index.js +21 -0
  38. package/dist/architect/models/index.js.map +1 -0
  39. package/dist/architect/models/openai.d.ts +7 -0
  40. package/dist/architect/models/openai.js +71 -0
  41. package/dist/architect/models/openai.js.map +1 -0
  42. package/dist/architect/planner.d.ts +9 -0
  43. package/dist/architect/planner.js +42 -0
  44. package/dist/architect/planner.js.map +1 -0
  45. package/dist/architect/planning/index.d.ts +4 -0
  46. package/dist/architect/planning/index.js +22 -0
  47. package/dist/architect/planning/index.js.map +1 -0
  48. package/dist/architect/planning/optimizer.d.ts +14 -0
  49. package/dist/architect/planning/optimizer.js +275 -0
  50. package/dist/architect/planning/optimizer.js.map +1 -0
  51. package/dist/architect/planning/planner.d.ts +15 -0
  52. package/dist/architect/planning/planner.js +124 -0
  53. package/dist/architect/planning/planner.js.map +1 -0
  54. package/dist/architect/planning/prompts.d.ts +6 -0
  55. package/dist/architect/planning/prompts.js +111 -0
  56. package/dist/architect/planning/prompts.js.map +1 -0
  57. package/dist/architect/planning/validator.d.ts +16 -0
  58. package/dist/architect/planning/validator.js +331 -0
  59. package/dist/architect/planning/validator.js.map +1 -0
  60. package/dist/architect/prompt.d.ts +1 -0
  61. package/dist/architect/prompt.js +13 -0
  62. package/dist/architect/prompt.js.map +1 -0
  63. package/dist/architect/types.d.ts +4 -0
  64. package/dist/architect/types.js +24 -0
  65. package/dist/architect/types.js.map +1 -0
  66. package/dist/cli/format.d.ts +19 -0
  67. package/dist/cli/format.js +62 -0
  68. package/dist/cli/format.js.map +1 -0
  69. package/dist/cli/init.d.ts +1 -0
  70. package/dist/cli/init.js +279 -0
  71. package/dist/cli/init.js.map +1 -0
  72. package/dist/cli/query.js +69 -0
  73. package/dist/cli/query.js.map +1 -1
  74. package/dist/cli.js +48 -21
  75. package/dist/cli.js.map +1 -1
  76. package/dist/code.d.ts +50 -0
  77. package/dist/code.js +357 -0
  78. package/dist/code.js.map +1 -0
  79. package/dist/generated/resolvers-types.d.ts +150 -29
  80. package/dist/index.d.ts +6 -0
  81. package/dist/index.js +2 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/resources/cli.config.resource.d.ts +7 -0
  84. package/dist/resources/cli.config.resource.js +11 -0
  85. package/dist/resources/cli.config.resource.js.map +1 -0
  86. package/dist/resources/coverage.resource.d.ts +19 -0
  87. package/dist/resources/coverage.resource.js +213 -0
  88. package/dist/resources/coverage.resource.js.map +1 -0
  89. package/dist/resources/dev.resource.js +0 -2
  90. package/dist/resources/dev.resource.js.map +1 -1
  91. package/dist/resources/graphql.cli.resource.d.ts +4 -0
  92. package/dist/resources/graphql.cli.resource.js +27 -0
  93. package/dist/resources/graphql.cli.resource.js.map +1 -0
  94. package/dist/resources/graphql.query.cli.task.d.ts +47 -0
  95. package/dist/resources/graphql.query.cli.task.js +54 -0
  96. package/dist/resources/graphql.query.cli.task.js.map +1 -0
  97. package/dist/resources/introspector.cli.resource.d.ts +6 -0
  98. package/dist/resources/introspector.cli.resource.js +17 -0
  99. package/dist/resources/introspector.cli.resource.js.map +1 -0
  100. package/dist/resources/live.resource.d.ts +2 -1
  101. package/dist/resources/live.resource.js +4 -2
  102. package/dist/resources/live.resource.js.map +1 -1
  103. package/dist/resources/models/Introspector.d.ts +1 -1
  104. package/dist/resources/models/Introspector.js +5 -34
  105. package/dist/resources/models/Introspector.js.map +1 -1
  106. package/dist/resources/models/initializeFromStore.js +26 -34
  107. package/dist/resources/models/initializeFromStore.js.map +1 -1
  108. package/dist/resources/models/initializeFromStore.utils.js +25 -6
  109. package/dist/resources/models/initializeFromStore.utils.js.map +1 -1
  110. package/dist/resources/models/introspector.tools.js +2 -2
  111. package/dist/resources/models/introspector.tools.js.map +1 -1
  112. package/dist/resources/routeHandlers/getDocsData.d.ts +6 -0
  113. package/dist/resources/routeHandlers/getDocsData.js +106 -0
  114. package/dist/resources/routeHandlers/getDocsData.js.map +1 -1
  115. package/dist/resources/routeHandlers/registerHttpRoutes.hook.d.ts +4 -0
  116. package/dist/resources/routeHandlers/registerHttpRoutes.hook.js +9 -7
  117. package/dist/resources/routeHandlers/registerHttpRoutes.hook.js.map +1 -1
  118. package/dist/resources/server.resource.d.ts +3 -0
  119. package/dist/resources/server.resource.js +8 -1
  120. package/dist/resources/server.resource.js.map +1 -1
  121. package/dist/resources/swap.cli.resource.d.ts +11 -0
  122. package/dist/resources/swap.cli.resource.js +54 -0
  123. package/dist/resources/swap.cli.resource.js.map +1 -0
  124. package/dist/schema/context.d.ts +2 -0
  125. package/dist/schema/model.d.ts +4 -1
  126. package/dist/schema/model.js.map +1 -1
  127. package/dist/schema/mutation.js +38 -0
  128. package/dist/schema/mutation.js.map +1 -1
  129. package/dist/schema/query.js +22 -18
  130. package/dist/schema/query.js.map +1 -1
  131. package/dist/schema/types/BaseElementCommon.d.ts +2 -4
  132. package/dist/schema/types/BaseElementCommon.js +28 -0
  133. package/dist/schema/types/BaseElementCommon.js.map +1 -1
  134. package/dist/schema/types/CoverageType.d.ts +7 -0
  135. package/dist/schema/types/CoverageType.js +54 -0
  136. package/dist/schema/types/CoverageType.js.map +1 -0
  137. package/dist/schema/types/LiveType.js +4 -0
  138. package/dist/schema/types/LiveType.js.map +1 -1
  139. package/dist/schema/types/ResourceType.js +6 -0
  140. package/dist/schema/types/ResourceType.js.map +1 -1
  141. package/dist/schema/types/TagType.js +4 -3
  142. package/dist/schema/types/TagType.js.map +1 -1
  143. package/dist/schema/types/index.d.ts +1 -0
  144. package/dist/schema/types/index.js +3 -1
  145. package/dist/schema/types/index.js.map +1 -1
  146. package/dist/ui/.vite/manifest.json +2 -2
  147. package/dist/ui/assets/docs-DR80KoAA.js +416 -0
  148. package/dist/ui/assets/docs-DR80KoAA.js.map +1 -0
  149. package/dist/ui/assets/docs-WKK9Zcu5.css +1 -0
  150. package/dist/utils/path.js +10 -0
  151. package/dist/utils/path.js.map +1 -1
  152. package/package.json +12 -8
  153. package/dist/ui/assets/docs-DVEzFAJo.css +0 -1
  154. package/dist/ui/assets/docs-l9XdmrRL.js +0 -174
package/dist/code.js ADDED
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createAgentTerminal = createAgentTerminal;
7
+ exports.buildAsyncCompleter = buildAsyncCompleter;
8
+ const node_readline_1 = __importDefault(require("node:readline"));
9
+ const node_fs_1 = require("node:fs");
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ function withDefaults(config) {
12
+ return {
13
+ prompt: config?.prompt ?? "agent> ",
14
+ historyLimit: config?.historyLimit ?? 1000,
15
+ enableTools: config?.enableTools ?? true,
16
+ modelName: config?.modelName ?? "gpt-xxx",
17
+ };
18
+ }
19
+ function createAgentTerminal(initialConfig, handlers) {
20
+ const state = {
21
+ config: withDefaults(initialConfig),
22
+ history: [],
23
+ isRunning: false,
24
+ lastSearchResults: [],
25
+ savedFiles: [],
26
+ };
27
+ let rl = null;
28
+ function emitMessage(message) {
29
+ state.history.push(message);
30
+ if (state.history.length > state.config.historyLimit) {
31
+ state.history.splice(0, state.history.length - state.config.historyLimit);
32
+ }
33
+ handlers?.onMessage?.(message);
34
+ }
35
+ async function start() {
36
+ if (state.isRunning)
37
+ return;
38
+ state.isRunning = true;
39
+ rl = node_readline_1.default.createInterface({
40
+ input: process.stdin,
41
+ output: process.stdout,
42
+ prompt: state.config.prompt,
43
+ completer: buildAsyncCompleter(state),
44
+ });
45
+ rl.setPrompt(state.config.prompt);
46
+ rl.prompt();
47
+ rl.on("line", async (line) => {
48
+ await send(line);
49
+ rl?.prompt();
50
+ });
51
+ rl.on("close", async () => {
52
+ await stop();
53
+ handlers?.onExit?.();
54
+ });
55
+ }
56
+ async function stop() {
57
+ if (!state.isRunning)
58
+ return;
59
+ state.isRunning = false;
60
+ rl?.close();
61
+ rl = null;
62
+ }
63
+ async function send(input) {
64
+ const trimmed = input.trim();
65
+ if (!trimmed)
66
+ return;
67
+ // Slash commands
68
+ if (trimmed.startsWith("/")) {
69
+ await handleSlashCommand(trimmed);
70
+ return;
71
+ }
72
+ // @ search command
73
+ if (trimmed.startsWith("@")) {
74
+ await handleAtCommand(trimmed.slice(1).trim());
75
+ return;
76
+ }
77
+ // push user message
78
+ emitMessage({ role: "user", content: trimmed, timestampMs: Date.now() });
79
+ // Emulate loading and not-implemented agent reply
80
+ try {
81
+ handlers?.onChunk?.({ type: "text", text: "..." });
82
+ const notImplemented = "I am currently not implemented, but thanks for considering";
83
+ handlers?.onChunk?.({ type: "text", text: notImplemented });
84
+ emitMessage({
85
+ role: "assistant",
86
+ content: notImplemented,
87
+ timestampMs: Date.now(),
88
+ });
89
+ }
90
+ catch (error) {
91
+ handlers?.onError?.(error);
92
+ }
93
+ }
94
+ function getState() {
95
+ return state;
96
+ }
97
+ function setConfig(partial) {
98
+ state.config = withDefaults({ ...state.config, ...partial });
99
+ if (rl) {
100
+ rl.setPrompt(state.config.prompt);
101
+ }
102
+ }
103
+ async function handleSlashCommand(cmd) {
104
+ const [base, ...rest] = cmd.split(/\s+/);
105
+ switch (base) {
106
+ case "/help": {
107
+ handlers?.onChunk?.({
108
+ type: "text",
109
+ text: [
110
+ "Slash commands:",
111
+ "/help - show this help",
112
+ "/history [n] - show last n messages",
113
+ "/clear - clear message history",
114
+ "/config key=value - update config (prompt, historyLimit, enableTools, modelName)",
115
+ "/save <index> - save a file from last @ search results",
116
+ "/saved - list saved files",
117
+ "/exit - exit terminal",
118
+ "@pattern - search files under cwd; then use /save <index> to save",
119
+ ].join("\n"),
120
+ });
121
+ return;
122
+ }
123
+ case "/history": {
124
+ const n = Number(rest[0] ?? "10");
125
+ const slice = Number.isFinite(n) && n > 0 ? state.history.slice(-n) : state.history;
126
+ const lines = slice.map((m) => `${m.role}: ${m.content}`);
127
+ handlers?.onChunk?.({
128
+ type: "text",
129
+ text: lines.join("\n") || "(empty)",
130
+ });
131
+ return;
132
+ }
133
+ case "/clear": {
134
+ state.history = [];
135
+ handlers?.onChunk?.({ type: "text", text: "History cleared." });
136
+ return;
137
+ }
138
+ case "/config": {
139
+ const kv = rest.join(" ");
140
+ const match = kv.match(/^(\w+)=(.+)$/);
141
+ if (!match) {
142
+ handlers?.onChunk?.({
143
+ type: "text",
144
+ text: "Usage: /config key=value",
145
+ });
146
+ return;
147
+ }
148
+ const [, key, value] = match;
149
+ try {
150
+ switch (key) {
151
+ case "prompt":
152
+ setConfig({ prompt: value });
153
+ break;
154
+ case "historyLimit":
155
+ setConfig({ historyLimit: Number(value) });
156
+ break;
157
+ case "enableTools":
158
+ setConfig({ enableTools: value === "true" });
159
+ break;
160
+ case "modelName":
161
+ setConfig({ modelName: value });
162
+ break;
163
+ default:
164
+ handlers?.onChunk?.({
165
+ type: "text",
166
+ text: `Unknown config key: ${key}`,
167
+ });
168
+ return;
169
+ }
170
+ handlers?.onChunk?.({ type: "text", text: `Updated ${key}.` });
171
+ }
172
+ catch (e) {
173
+ handlers?.onError?.(e);
174
+ }
175
+ return;
176
+ }
177
+ case "/save": {
178
+ const idx = Number(rest[0] ?? "NaN");
179
+ if (!Number.isFinite(idx) ||
180
+ idx < 1 ||
181
+ idx > state.lastSearchResults.length) {
182
+ handlers?.onChunk?.({
183
+ type: "text",
184
+ text: "Usage: /save <index> (from last @ search)",
185
+ });
186
+ return;
187
+ }
188
+ const picked = state.lastSearchResults[idx - 1];
189
+ state.savedFiles.push(picked);
190
+ handlers?.onChunk?.({ type: "text", text: `Saved: ${picked}` });
191
+ return;
192
+ }
193
+ case "/saved": {
194
+ if (state.savedFiles.length === 0) {
195
+ handlers?.onChunk?.({ type: "text", text: "(no saved files)" });
196
+ return;
197
+ }
198
+ const lines = state.savedFiles.map((f, i) => `${i + 1}. ${f}`);
199
+ handlers?.onChunk?.({ type: "text", text: lines.join("\n") });
200
+ return;
201
+ }
202
+ case "/exit":
203
+ case "/quit": {
204
+ handlers?.onChunk?.({ type: "text", text: "Exiting..." });
205
+ await stop();
206
+ handlers?.onExit?.();
207
+ return;
208
+ }
209
+ default: {
210
+ handlers?.onChunk?.({
211
+ type: "text",
212
+ text: `Unknown command: ${base}. Type /help`,
213
+ });
214
+ return;
215
+ }
216
+ }
217
+ }
218
+ async function handleAtCommand(pattern) {
219
+ if (!pattern) {
220
+ handlers?.onChunk?.({ type: "text", text: "Usage: @<pattern>" });
221
+ return;
222
+ }
223
+ try {
224
+ const cwd = process.cwd();
225
+ const results = await searchFilesByPattern(pattern, cwd, 50);
226
+ state.lastSearchResults = results.map((abs) => node_path_1.default.relative(cwd, abs));
227
+ if (state.lastSearchResults.length === 0) {
228
+ handlers?.onChunk?.({
229
+ type: "text",
230
+ text: `No files matching: ${pattern}`,
231
+ });
232
+ return;
233
+ }
234
+ const lines = [
235
+ `Found ${state.lastSearchResults.length} file(s):`,
236
+ ...state.lastSearchResults.map((p, i) => `${i + 1}. ${p}`),
237
+ "Use /save <index> to save to your list.",
238
+ ];
239
+ handlers?.onChunk?.({ type: "text", text: lines.join("\n") });
240
+ }
241
+ catch (e) {
242
+ handlers?.onError?.(e);
243
+ }
244
+ }
245
+ return { start, stop, send, getState, setConfig };
246
+ }
247
+ // Small CLI entry if invoked directly: runs the minimal terminal.
248
+ // Check if this file is being run directly (works in both CommonJS and ESM after compilation)
249
+ if (typeof require !== "undefined" && require.main === module) {
250
+ const terminal = createAgentTerminal(undefined, {
251
+ onChunk: (c) => {
252
+ if (c.text)
253
+ process.stdout.write(c.text + "\n");
254
+ },
255
+ onError: (e) => {
256
+ // eslint-disable-next-line no-console
257
+ console.error(e);
258
+ },
259
+ onExit: () => {
260
+ process.exit(0);
261
+ },
262
+ });
263
+ terminal.start().catch((err) => {
264
+ // eslint-disable-next-line no-console
265
+ console.error(err);
266
+ process.exitCode = 1;
267
+ });
268
+ }
269
+ async function searchFilesByPattern(pattern, rootDir, maxResults) {
270
+ const queue = [rootDir];
271
+ const results = [];
272
+ const lowered = pattern.toLowerCase();
273
+ const IGNORE_DIRS = new Set([
274
+ "node_modules",
275
+ ".git",
276
+ "dist",
277
+ "coverage",
278
+ "build",
279
+ ".next",
280
+ ".turbo",
281
+ ]);
282
+ while (queue.length > 0 && results.length < maxResults) {
283
+ const current = queue.shift();
284
+ let entries = [];
285
+ try {
286
+ entries = await node_fs_1.promises.readdir(current, { withFileTypes: true });
287
+ }
288
+ catch {
289
+ continue;
290
+ }
291
+ for (const entry of entries) {
292
+ const fullPath = node_path_1.default.join(current, entry.name);
293
+ if (entry.isDirectory()) {
294
+ if (IGNORE_DIRS.has(entry.name))
295
+ continue;
296
+ queue.push(fullPath);
297
+ }
298
+ else if (entry.isFile()) {
299
+ const rel = node_path_1.default.relative(rootDir, fullPath);
300
+ if (rel.toLowerCase().includes(lowered)) {
301
+ results.push(fullPath);
302
+ if (results.length >= maxResults)
303
+ break;
304
+ }
305
+ }
306
+ }
307
+ }
308
+ return results;
309
+ }
310
+ function buildAsyncCompleter(_state) {
311
+ const slashCommands = [
312
+ "/help",
313
+ "/history",
314
+ "/clear",
315
+ "/config",
316
+ "/save",
317
+ "/saved",
318
+ "/exit",
319
+ "/quit",
320
+ ];
321
+ return (line, cb) => {
322
+ const trimmed = line.trim();
323
+ try {
324
+ // Slash command completions
325
+ if (trimmed.startsWith("/")) {
326
+ const matches = slashCommands.filter((c) => c.startsWith(trimmed));
327
+ cb(null, [matches.length ? matches : slashCommands, line]);
328
+ return;
329
+ }
330
+ // @ file search completions after 2 chars
331
+ if (trimmed.startsWith("@")) {
332
+ const pattern = trimmed.slice(1);
333
+ if (pattern.length >= 2) {
334
+ // Use async search but handle it properly
335
+ searchFilesByPattern(pattern, process.cwd(), 50)
336
+ .then((files) => {
337
+ const rels = files.map((abs) => node_path_1.default.relative(process.cwd(), abs));
338
+ cb(null, [rels, line]);
339
+ })
340
+ .catch(() => {
341
+ cb(null, [["@<pattern>"], line]);
342
+ });
343
+ }
344
+ else {
345
+ cb(null, [["@<pattern>"], line]);
346
+ }
347
+ return;
348
+ }
349
+ // default: no suggestions
350
+ cb(null, [["/help", "@<pattern>"], line]);
351
+ }
352
+ catch (e) {
353
+ cb(null, [["/help"], line]);
354
+ }
355
+ };
356
+ }
357
+ //# sourceMappingURL=code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":";;;;;AAiEA,kDAkPC;AAoED,kDAqDC;AA5aD,kEAAqC;AACrC,qCAA0C;AAC1C,0DAA6B;AAsD7B,SAAS,YAAY,CAAC,MAAuB;IAC3C,OAAO;QACL,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS;QACnC,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,IAAI;QAC1C,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI;QACxC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,SAAS;KAC1C,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB,CACjC,aAA8B,EAC9B,QAAgC;IAEhC,MAAM,KAAK,GAAuB;QAChC,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC;QACnC,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,KAAK;QAChB,iBAAiB,EAAE,EAAE;QACrB,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,IAAI,EAAE,GAA8B,IAAI,CAAC;IAEzC,SAAS,WAAW,CAAC,OAAqB;QACxC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACrD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5E,CAAC;QACD,QAAQ,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,UAAU,KAAK;QAClB,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO;QAC5B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,EAAE,GAAG,uBAAQ,CAAC,eAAe,CAAC;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;YAC3B,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC;SACtC,CAAC,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,EAAE,CAAC,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,EAAE,EAAE,MAAM,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,EAAE,CAAC;YACb,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,IAAI;QACjB,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO;QAC7B,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,EAAE,EAAE,KAAK,EAAE,CAAC;QACZ,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,KAAa;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,iBAAiB;QACjB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,oBAAoB;QACpB,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEzE,kDAAkD;QAClD,IAAI,CAAC;YACH,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,MAAM,cAAc,GAClB,4DAA4D,CAAC;YAC/D,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAC5D,WAAW,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,SAAS,QAAQ;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,SAAS,CAAC,OAAgC;QACjD,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC7D,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,UAAU,kBAAkB,CAAC,GAAW;QAC3C,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAClB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,iBAAiB;wBACjB,wBAAwB;wBACxB,qCAAqC;wBACrC,gCAAgC;wBAChC,kFAAkF;wBAClF,wDAAwD;wBACxD,2BAA2B;wBAC3B,uBAAuB;wBACvB,mEAAmE;qBACpE,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBAClC,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;gBACxE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1D,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAClB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS;iBACpC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;gBACnB,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,QAAQ,EAAE,OAAO,EAAE,CAAC;wBAClB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B;qBACjC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC;oBACH,QAAQ,GAAG,EAAE,CAAC;wBACZ,KAAK,QAAQ;4BACX,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;4BAC7B,MAAM;wBACR,KAAK,cAAc;4BACjB,SAAS,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BAC3C,MAAM;wBACR,KAAK,aAAa;4BAChB,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC;4BAC7C,MAAM;wBACR,KAAK,WAAW;4BACd,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;4BAChC,MAAM;wBACR;4BACE,QAAQ,EAAE,OAAO,EAAE,CAAC;gCAClB,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,uBAAuB,GAAG,EAAE;6BACnC,CAAC,CAAC;4BACH,OAAO;oBACX,CAAC;oBACD,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,GAAG,EAAE,CAAC,CAAC;gBACjE,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;gBACrC,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACrB,GAAG,GAAG,CAAC;oBACP,GAAG,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,EACpC,CAAC;oBACD,QAAQ,EAAE,OAAO,EAAE,CAAC;wBAClB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2CAA2C;qBAClD,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAChD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAClC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAChE,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC/D,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC;YACb,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBAC1D,MAAM,IAAI,EAAE,CAAC;gBACb,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAClB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB,IAAI,cAAc;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,UAAU,eAAe,CAAC,OAAe;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7D,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACxE,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAClB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,sBAAsB,OAAO,EAAE;iBACtC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG;gBACZ,SAAS,KAAK,CAAC,iBAAiB,CAAC,MAAM,WAAW;gBAClD,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,yCAAyC;aAC1C,CAAC;YACF,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC;AAED,kEAAkE;AAClE,8FAA8F;AAC9F,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC9D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,EAAE;QAC9C,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAAe,EACf,OAAe,EACf,UAAkB;IAElB,MAAM,KAAK,GAAa,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,cAAc;QACd,MAAM;QACN,MAAM;QACN,UAAU;QACV,OAAO;QACP,OAAO;QACP,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC/B,IAAI,OAAO,GAAoC,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,kBAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC1C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,mBAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7C,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;wBAAE,MAAM;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAA0B;IAC5D,MAAM,aAAa,GAAG;QACpB,OAAO;QACP,UAAU;QACV,QAAQ;QACR,SAAS;QACT,OAAO;QACP,QAAQ;QACR,OAAO;QACP,OAAO;KACR,CAAC;IAEF,OAAO,CACL,IAAY,EACZ,EAA2D,EAC3D,EAAE;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,IAAI,CAAC;YACH,4BAA4B;YAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnE,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YAED,0CAA0C;YAC1C,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACxB,0CAA0C;oBAC1C,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;yBAC7C,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;wBACd,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC7B,mBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAClC,CAAC;wBACF,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;oBACzB,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE;wBACV,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;oBACnC,CAAC,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}