@opengoat/core 2026.2.14 → 2026.2.15

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 (24) hide show
  1. package/dist/core/agents/application/agent.service.d.ts +7 -0
  2. package/dist/core/agents/application/agent.service.js +83 -8
  3. package/dist/core/agents/application/agent.service.js.map +1 -1
  4. package/dist/core/bootstrap/application/bootstrap.service.js +14 -1
  5. package/dist/core/bootstrap/application/bootstrap.service.js.map +1 -1
  6. package/dist/core/opengoat/application/opengoat.service.d.ts +9 -0
  7. package/dist/core/opengoat/application/opengoat.service.helpers.d.ts +52 -0
  8. package/dist/core/opengoat/application/opengoat.service.helpers.js +325 -0
  9. package/dist/core/opengoat/application/opengoat.service.helpers.js.map +1 -0
  10. package/dist/core/opengoat/application/opengoat.service.js +450 -317
  11. package/dist/core/opengoat/application/opengoat.service.js.map +1 -1
  12. package/dist/core/orchestration/application/orchestration.service.d.ts +1 -0
  13. package/dist/core/orchestration/application/orchestration.service.js +109 -24
  14. package/dist/core/orchestration/application/orchestration.service.js.map +1 -1
  15. package/dist/core/providers/application/provider.service.d.ts +1 -0
  16. package/dist/core/providers/application/provider.service.js +30 -20
  17. package/dist/core/providers/application/provider.service.js.map +1 -1
  18. package/dist/core/templates/assets/ceo/BOOTSTRAP.md +3 -3
  19. package/dist/core/templates/assets/ceo/ROLE.md +2 -1
  20. package/dist/core/templates/assets/skills/og-board-individual/SKILL.md +66 -89
  21. package/dist/core/templates/assets/skills/og-board-manager/SKILL.md +64 -45
  22. package/dist/core/templates/default-templates.js +15 -3
  23. package/dist/core/templates/default-templates.js.map +1 -1
  24. package/package.json +1 -1
@@ -0,0 +1,325 @@
1
+ import { homedir } from "node:os";
2
+ import path from "node:path";
3
+ import { DEFAULT_AGENT_ID, normalizeAgentId } from "../../domain/agent-id.js";
4
+ export function containsAlreadyExistsMessage(stdout, stderr) {
5
+ const text = `${stdout}\n${stderr}`.toLowerCase();
6
+ return /\balready exists?\b/.test(text);
7
+ }
8
+ export function containsAgentNotFoundMessage(stdout, stderr) {
9
+ const text = `${stdout}\n${stderr}`.toLowerCase();
10
+ return /\b(not found|does not exist|no such agent|unknown agent|could not find|no agent found|not exist)\b/.test(text);
11
+ }
12
+ export function toErrorMessage(error) {
13
+ if (error instanceof Error) {
14
+ return error.message;
15
+ }
16
+ return String(error);
17
+ }
18
+ export function resolveInactiveMinutes(value) {
19
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
20
+ return 30;
21
+ }
22
+ return Math.floor(value);
23
+ }
24
+ export function resolveInactiveAgentNotificationTarget(value) {
25
+ return value === "ceo-only" ? "ceo-only" : "all-managers";
26
+ }
27
+ export function extractManagedSkillsDir(payload) {
28
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
29
+ return null;
30
+ }
31
+ const record = payload;
32
+ if (typeof record.managedSkillsDir !== "string") {
33
+ return null;
34
+ }
35
+ const managedSkillsDir = record.managedSkillsDir.trim();
36
+ return managedSkillsDir || null;
37
+ }
38
+ export function extractOpenClawAgents(payload) {
39
+ if (!Array.isArray(payload)) {
40
+ return [];
41
+ }
42
+ const entries = [];
43
+ for (const entry of payload) {
44
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
45
+ continue;
46
+ }
47
+ const record = entry;
48
+ const id = normalizeAgentId(String(record.id ?? ""));
49
+ if (!id) {
50
+ continue;
51
+ }
52
+ entries.push({
53
+ id,
54
+ workspace: typeof record.workspace === "string" ? record.workspace : "",
55
+ agentDir: typeof record.agentDir === "string" ? record.agentDir : "",
56
+ });
57
+ }
58
+ return entries;
59
+ }
60
+ export function extractOpenClawAgentEntry(payload, agentId) {
61
+ const normalizedAgentId = normalizeAgentId(agentId);
62
+ if (!normalizedAgentId) {
63
+ return null;
64
+ }
65
+ for (const entry of extractOpenClawAgents(payload)) {
66
+ if (entry.id !== normalizedAgentId) {
67
+ continue;
68
+ }
69
+ return {
70
+ workspace: entry.workspace,
71
+ agentDir: entry.agentDir,
72
+ };
73
+ }
74
+ return null;
75
+ }
76
+ export function pathMatches(left, right) {
77
+ const leftNormalized = normalizePathForCompare(left);
78
+ const rightNormalized = normalizePathForCompare(right);
79
+ if (!leftNormalized || !rightNormalized) {
80
+ return false;
81
+ }
82
+ return leftNormalized === rightNormalized;
83
+ }
84
+ export function pathIsWithin(containerPath, candidatePath) {
85
+ const normalizedContainer = normalizePathForCompare(containerPath);
86
+ const normalizedCandidate = normalizePathForCompare(candidatePath);
87
+ if (!normalizedContainer || !normalizedCandidate) {
88
+ return false;
89
+ }
90
+ const relative = path.relative(normalizedContainer, normalizedCandidate);
91
+ if (!relative) {
92
+ return true;
93
+ }
94
+ return !relative.startsWith("..") && !path.isAbsolute(relative);
95
+ }
96
+ function normalizePathForCompare(value) {
97
+ const trimmed = value.trim();
98
+ if (!trimmed) {
99
+ return "";
100
+ }
101
+ const resolved = path.resolve(trimmed);
102
+ if (process.platform === "win32") {
103
+ return resolved.toLowerCase();
104
+ }
105
+ return resolved;
106
+ }
107
+ export function buildTaskSessionRef(agentId, taskId) {
108
+ const normalizedAgentId = normalizeAgentId(agentId) || DEFAULT_AGENT_ID;
109
+ const normalizedTaskId = normalizeAgentId(taskId) || "task";
110
+ return `agent:${normalizedAgentId}:agent_${normalizedAgentId}_task_${normalizedTaskId}`;
111
+ }
112
+ export function buildInactiveSessionRef(managerAgentId, subjectAgentId) {
113
+ const manager = normalizeAgentId(managerAgentId) || DEFAULT_AGENT_ID;
114
+ const subject = normalizeAgentId(subjectAgentId) || "agent";
115
+ return `agent:${manager}:agent_${manager}_inactive_${subject}`;
116
+ }
117
+ export function buildTodoTaskMessage(params) {
118
+ const blockers = params.task.blockers.length > 0 ? params.task.blockers.join("; ") : "None";
119
+ const artifacts = params.task.artifacts.length > 0
120
+ ? params.task.artifacts
121
+ .map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
122
+ .join("\n")
123
+ : "- None";
124
+ const worklog = params.task.worklog.length > 0
125
+ ? params.task.worklog
126
+ .map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
127
+ .join("\n")
128
+ : "- None";
129
+ return [
130
+ `Task #${params.task.taskId} is assigned to you and currently in TODO. Please work on it now.`,
131
+ "",
132
+ `Task ID: ${params.task.taskId}`,
133
+ `Title: ${params.task.title}`,
134
+ `Description: ${params.task.description}`,
135
+ `Project: ${params.task.project}`,
136
+ `Status: ${params.task.status}`,
137
+ `Owner: @${params.task.owner}`,
138
+ `Assigned to: @${params.task.assignedTo}`,
139
+ `Created at: ${params.task.createdAt}`,
140
+ `Blockers: ${blockers}`,
141
+ "Artifacts:",
142
+ artifacts,
143
+ "Worklog:",
144
+ worklog,
145
+ ].join("\n");
146
+ }
147
+ export function buildBlockedTaskMessage(params) {
148
+ const blockerReason = params.task.blockers.length > 0
149
+ ? params.task.blockers.join("; ")
150
+ : params.task.statusReason?.trim() || "no blocker details were provided";
151
+ const artifacts = params.task.artifacts.length > 0
152
+ ? params.task.artifacts
153
+ .map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
154
+ .join("\n")
155
+ : "- None";
156
+ const worklog = params.task.worklog.length > 0
157
+ ? params.task.worklog
158
+ .map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
159
+ .join("\n")
160
+ : "- None";
161
+ return [
162
+ `Task #${params.task.taskId}, assigned to your reportee "@${params.task.assignedTo}" is blocked because of ${blockerReason}. Help unblocking it.`,
163
+ "",
164
+ `Task ID: ${params.task.taskId}`,
165
+ `Title: ${params.task.title}`,
166
+ `Description: ${params.task.description}`,
167
+ `Project: ${params.task.project}`,
168
+ `Status: ${params.task.status}`,
169
+ `Owner: @${params.task.owner}`,
170
+ `Assigned to: @${params.task.assignedTo}`,
171
+ `Created at: ${params.task.createdAt}`,
172
+ "Artifacts:",
173
+ artifacts,
174
+ "Worklog:",
175
+ worklog,
176
+ ].join("\n");
177
+ }
178
+ export function buildInactiveAgentMessage(params) {
179
+ const lastAction = typeof params.lastActionTimestamp === "number" &&
180
+ Number.isFinite(params.lastActionTimestamp)
181
+ ? new Date(params.lastActionTimestamp).toISOString()
182
+ : null;
183
+ return [
184
+ `Your reportee "@${params.subjectAgentId}" (${params.subjectName}) has no activity in the last ${params.inactiveMinutes} minutes.`,
185
+ ...(params.role ? [`Role: ${params.role}`] : []),
186
+ `${params.subjectName || `@${params.subjectAgentId}`} has ${params.directReporteesCount} direct and ${params.indirectReporteesCount} indirect reportees.`,
187
+ ...(lastAction ? [`Last action: ${lastAction}`] : []),
188
+ "Please check in and unblock progress.",
189
+ ].join("\n");
190
+ }
191
+ export function buildReporteeStats(manifests) {
192
+ const graph = buildReporteeGraph(manifests);
193
+ const directByManager = new Map();
194
+ for (const [managerAgentId, directReportees] of graph.entries()) {
195
+ directByManager.set(managerAgentId, directReportees.length);
196
+ }
197
+ const totalByManager = buildTotalReporteeCountByManager(graph);
198
+ return {
199
+ directByManager,
200
+ totalByManager,
201
+ };
202
+ }
203
+ function buildReporteeGraph(manifests) {
204
+ const graph = new Map();
205
+ for (const manifest of manifests) {
206
+ const reportsTo = manifest.metadata.reportsTo;
207
+ if (!reportsTo) {
208
+ continue;
209
+ }
210
+ const reportees = graph.get(reportsTo) ?? [];
211
+ reportees.push(manifest.agentId);
212
+ graph.set(reportsTo, reportees);
213
+ }
214
+ for (const [managerAgentId, reportees] of graph.entries()) {
215
+ graph.set(managerAgentId, [...reportees].sort((left, right) => left.localeCompare(right)));
216
+ }
217
+ return graph;
218
+ }
219
+ function buildTotalReporteeCountByManager(graph) {
220
+ const descendantsByManager = new Map();
221
+ const inProgress = new Set();
222
+ const resolveDescendants = (managerAgentId) => {
223
+ const cached = descendantsByManager.get(managerAgentId);
224
+ if (cached) {
225
+ return cached;
226
+ }
227
+ if (inProgress.has(managerAgentId)) {
228
+ return new Set();
229
+ }
230
+ inProgress.add(managerAgentId);
231
+ const descendants = new Set();
232
+ for (const reporteeAgentId of graph.get(managerAgentId) ?? []) {
233
+ descendants.add(reporteeAgentId);
234
+ const reporteeDescendants = resolveDescendants(reporteeAgentId);
235
+ for (const descendantAgentId of reporteeDescendants) {
236
+ descendants.add(descendantAgentId);
237
+ }
238
+ }
239
+ inProgress.delete(managerAgentId);
240
+ descendantsByManager.set(managerAgentId, descendants);
241
+ return descendants;
242
+ };
243
+ const totalByManager = new Map();
244
+ for (const managerAgentId of graph.keys()) {
245
+ totalByManager.set(managerAgentId, resolveDescendants(managerAgentId).size);
246
+ }
247
+ return totalByManager;
248
+ }
249
+ export function assertAgentExists(manifests, agentId) {
250
+ if (manifests.some((manifest) => manifest.agentId === agentId)) {
251
+ return;
252
+ }
253
+ throw new Error(`Agent "${agentId}" does not exist.`);
254
+ }
255
+ export function collectAllReportees(manifests, managerAgentId) {
256
+ const graph = buildReporteeGraph(manifests);
257
+ const visited = new Set();
258
+ const queue = [...(graph.get(managerAgentId) ?? [])];
259
+ while (queue.length > 0) {
260
+ const current = queue.shift();
261
+ if (!current || current === managerAgentId || visited.has(current)) {
262
+ continue;
263
+ }
264
+ visited.add(current);
265
+ queue.push(...(graph.get(current) ?? []));
266
+ }
267
+ return [...visited].sort((left, right) => left.localeCompare(right));
268
+ }
269
+ export function prepareOpenClawCommandEnv(env) {
270
+ const mergedPath = dedupePathEntries([
271
+ ...resolvePreferredOpenClawCommandPaths(env),
272
+ ...(env.PATH?.split(path.delimiter) ?? []),
273
+ ]);
274
+ return {
275
+ ...env,
276
+ PATH: mergedPath.join(path.delimiter),
277
+ };
278
+ }
279
+ function resolvePreferredOpenClawCommandPaths(env) {
280
+ const homeDir = homedir();
281
+ const preferredPaths = [
282
+ path.dirname(process.execPath),
283
+ path.join(homeDir, ".npm-global", "bin"),
284
+ path.join(homeDir, ".npm", "bin"),
285
+ path.join(homeDir, ".local", "bin"),
286
+ path.join(homeDir, ".volta", "bin"),
287
+ path.join(homeDir, ".fnm", "current", "bin"),
288
+ path.join(homeDir, ".asdf", "shims"),
289
+ path.join(homeDir, "bin"),
290
+ ];
291
+ const npmPrefixCandidates = dedupePathEntries([
292
+ env.npm_config_prefix ?? "",
293
+ env.NPM_CONFIG_PREFIX ?? "",
294
+ process.env.npm_config_prefix ?? "",
295
+ process.env.NPM_CONFIG_PREFIX ?? "",
296
+ ]);
297
+ for (const prefix of npmPrefixCandidates) {
298
+ preferredPaths.push(path.join(prefix, "bin"));
299
+ }
300
+ if (process.platform === "darwin") {
301
+ preferredPaths.push("/opt/homebrew/bin", "/opt/homebrew/opt/node@22/bin", "/usr/local/opt/node@22/bin");
302
+ }
303
+ return preferredPaths;
304
+ }
305
+ function dedupePathEntries(entries) {
306
+ const seen = new Set();
307
+ const deduped = [];
308
+ for (const entry of entries) {
309
+ const trimmed = entry.trim();
310
+ if (!trimmed || seen.has(trimmed)) {
311
+ continue;
312
+ }
313
+ seen.add(trimmed);
314
+ deduped.push(trimmed);
315
+ }
316
+ return deduped;
317
+ }
318
+ export function isSpawnPermissionOrMissing(error) {
319
+ if (!(error instanceof Error)) {
320
+ return false;
321
+ }
322
+ const code = error.code;
323
+ return code === "EACCES" || code === "ENOENT";
324
+ }
325
+ //# sourceMappingURL=opengoat.service.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opengoat.service.helpers.js","sourceRoot":"","sources":["../../../../src/core/opengoat/application/opengoat.service.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAkB9E,MAAM,UAAU,4BAA4B,CAC1C,MAAc,EACd,MAAc;IAEd,MAAM,IAAI,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAc,EACd,MAAc;IAEd,MAAM,IAAI,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,OAAO,oGAAoG,CAAC,IAAI,CAC9G,IAAI,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAyB;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,KAA8C;IAE9C,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,OAAyC,CAAC;IACzD,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACxD,OAAO,gBAAgB,IAAI,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAId,CAAC;QACF,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE;YACF,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACvE,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;SACrE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAAgB,EAChB,OAAe;IAEf,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,EAAE,KAAK,iBAAiB,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QACD,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAa;IACrD,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,cAAc,KAAK,eAAe,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,aAAqB,EAAE,aAAqB;IACvE,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACnE,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,MAAc;IACjE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC;IACxE,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;IAC5D,OAAO,SAAS,iBAAiB,UAAU,iBAAiB,SAAS,gBAAgB,EAAE,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,cAAsB,EACtB,cAAsB;IAEtB,MAAM,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,gBAAgB,CAAC;IACrE,MAAM,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC;IAC5D,OAAO,SAAS,OAAO,UAAU,OAAO,aAAa,OAAO,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;aAClB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAC/D;aACA,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,QAAQ,CAAC;IACf,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;aAChB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAC/D;aACA,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,QAAQ,CAAC;IAEf,OAAO;QACL,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,mEAAmE;QAC9F,EAAE;QACF,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;QAChC,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;QAC7B,gBAAgB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;QACzC,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;QACjC,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;QAC/B,WAAW,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;QAC9B,iBAAiB,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;QACzC,eAAe,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;QACtC,aAAa,QAAQ,EAAE;QACvB,YAAY;QACZ,SAAS;QACT,UAAU;QACV,OAAO;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA4B;IAClE,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,kCAAkC,CAAC;IAC7E,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;aAClB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAC/D;aACA,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,QAAQ,CAAC;IACf,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;aAChB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAC/D;aACA,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,QAAQ,CAAC;IAEf,OAAO;QACL,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,iCAAiC,MAAM,CAAC,IAAI,CAAC,UAAU,2BAA2B,aAAa,uBAAuB;QACjJ,EAAE;QACF,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;QAChC,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;QAC7B,gBAAgB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;QACzC,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;QACjC,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;QAC/B,WAAW,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;QAC9B,iBAAiB,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;QACzC,eAAe,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;QACtC,YAAY;QACZ,SAAS;QACT,UAAU;QACV,OAAO;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MASzC;IACC,MAAM,UAAU,GACd,OAAO,MAAM,CAAC,mBAAmB,KAAK,QAAQ;QAC9C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC;QACzC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE;QACpD,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACL,mBAAmB,MAAM,CAAC,cAAc,MAAM,MAAM,CAAC,WAAW,iCAAiC,MAAM,CAAC,eAAe,WAAW;QAClI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GACE,MAAM,CAAC,WAAW,IAAI,IAAI,MAAM,CAAC,cAAc,EACjD,QAAQ,MAAM,CAAC,oBAAoB,eAAe,MAAM,CAAC,sBAAsB,sBAAsB;QACrG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,uCAAuC;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAA4B;IAI7D,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAChE,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,cAAc,GAAG,gCAAgC,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO;QACL,eAAe;QACf,cAAc;KACf,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,SAA4B;IACtD,MAAM,KAAK,GAAkB,IAAI,GAAG,EAAE,CAAC;IACvC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1D,KAAK,CAAC,GAAG,CACP,cAAc,EACd,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gCAAgC,CACvC,KAAoB;IAEpB,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,MAAM,kBAAkB,GAAG,CAAC,cAAsB,EAAe,EAAE;QACjE,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,MAAM,eAAe,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9D,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACjC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAChE,KAAK,MAAM,iBAAiB,IAAI,mBAAmB,EAAE,CAAC;gBACpD,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QACD,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClC,oBAAoB,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,cAAc,CAAC,GAAG,CAChB,cAAc,EACd,kBAAkB,CAAC,cAAc,CAAC,CAAC,IAAI,CACxC,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,SAA4B,EAC5B,OAAe;IAEf,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;QAC/D,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,mBAAmB,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAA4B,EAC5B,cAAsB;IAEtB,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAsB;IAC9D,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACnC,GAAG,oCAAoC,CAAC,GAAG,CAAC;QAC5C,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,GAAG;QACN,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,GAAsB;IAEtB,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;IAC1B,MAAM,cAAc,GAAa;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;KAC1B,CAAC;IAEF,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;QAC5C,GAAG,CAAC,iBAAiB,IAAI,EAAE;QAC3B,GAAG,CAAC,iBAAiB,IAAI,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;KACpC,CAAC,CAAC;IACH,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACzC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,cAAc,CAAC,IAAI,CACjB,mBAAmB,EACnB,+BAA+B,EAC/B,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAiB;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;IACnD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC;AAChD,CAAC"}