@inkeep/agents-core 0.0.0-dev-20250910233133 → 0.0.0-dev-20250910233151

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 (279) hide show
  1. package/dist/chunk-BIIFENNH.js +11 -0
  2. package/dist/chunk-H2F72PDA.js +15 -0
  3. package/dist/chunk-MKBO26DX.js +9 -0
  4. package/dist/chunk-ODONDMHT.js +665 -0
  5. package/dist/chunk-TSPWAF64.js +821 -0
  6. package/dist/client-exports.cjs +232 -0
  7. package/dist/client-exports.d.cts +302 -0
  8. package/dist/client-exports.d.ts +46 -43
  9. package/dist/client-exports.js +200 -247
  10. package/dist/db/schema.cjs +818 -0
  11. package/dist/db/schema.d.cts +7 -0
  12. package/dist/db/schema.d.ts +7 -4335
  13. package/dist/db/schema.js +1 -696
  14. package/dist/index.cjs +9809 -0
  15. package/dist/index.d.cts +3992 -0
  16. package/dist/index.d.ts +3992 -12
  17. package/dist/index.js +7807 -13
  18. package/dist/schema-B5YbTpz8.d.ts +4382 -0
  19. package/dist/schema-E0ulMd3k.d.cts +4382 -0
  20. package/dist/types/index.cjs +29 -0
  21. package/dist/types/index.d.cts +123 -0
  22. package/dist/types/index.d.ts +123 -5
  23. package/dist/types/index.js +2 -6
  24. package/dist/{validation/schemas.d.ts → utility-D2Lb-YAS.d.cts} +1350 -617
  25. package/dist/utility-D2Lb-YAS.d.ts +7946 -0
  26. package/dist/validation/index.cjs +1617 -0
  27. package/dist/validation/index.d.cts +63 -0
  28. package/dist/validation/index.d.ts +63 -4
  29. package/dist/validation/index.js +1 -5
  30. package/package.json +2 -2
  31. package/dist/__tests__/integration/helpers.d.ts +0 -5
  32. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  33. package/dist/__tests__/integration/helpers.js +0 -37
  34. package/dist/__tests__/integration/helpers.js.map +0 -1
  35. package/dist/__tests__/setup.d.ts +0 -3
  36. package/dist/__tests__/setup.d.ts.map +0 -1
  37. package/dist/__tests__/setup.js +0 -29
  38. package/dist/__tests__/setup.js.map +0 -1
  39. package/dist/client-exports.d.ts.map +0 -1
  40. package/dist/client-exports.js.map +0 -1
  41. package/dist/context/ContextConfig.d.ts +0 -54
  42. package/dist/context/ContextConfig.d.ts.map +0 -1
  43. package/dist/context/ContextConfig.js +0 -302
  44. package/dist/context/ContextConfig.js.map +0 -1
  45. package/dist/context/ContextFetcher.d.ts +0 -64
  46. package/dist/context/ContextFetcher.d.ts.map +0 -1
  47. package/dist/context/ContextFetcher.js +0 -325
  48. package/dist/context/ContextFetcher.js.map +0 -1
  49. package/dist/context/ContextResolver.d.ts +0 -52
  50. package/dist/context/ContextResolver.d.ts.map +0 -1
  51. package/dist/context/ContextResolver.js +0 -298
  52. package/dist/context/ContextResolver.js.map +0 -1
  53. package/dist/context/TemplateEngine.d.ts +0 -46
  54. package/dist/context/TemplateEngine.d.ts.map +0 -1
  55. package/dist/context/TemplateEngine.js +0 -175
  56. package/dist/context/TemplateEngine.js.map +0 -1
  57. package/dist/context/context.d.ts +0 -8
  58. package/dist/context/context.d.ts.map +0 -1
  59. package/dist/context/context.js +0 -157
  60. package/dist/context/context.js.map +0 -1
  61. package/dist/context/contextCache.d.ts +0 -50
  62. package/dist/context/contextCache.d.ts.map +0 -1
  63. package/dist/context/contextCache.js +0 -175
  64. package/dist/context/contextCache.js.map +0 -1
  65. package/dist/context/index.d.ts +0 -11
  66. package/dist/context/index.d.ts.map +0 -1
  67. package/dist/context/index.js +0 -8
  68. package/dist/context/index.js.map +0 -1
  69. package/dist/credential-stores/CredentialStoreRegistry.d.ts +0 -39
  70. package/dist/credential-stores/CredentialStoreRegistry.d.ts.map +0 -1
  71. package/dist/credential-stores/CredentialStoreRegistry.js +0 -65
  72. package/dist/credential-stores/CredentialStoreRegistry.js.map +0 -1
  73. package/dist/credential-stores/defaults.d.ts +0 -6
  74. package/dist/credential-stores/defaults.d.ts.map +0 -1
  75. package/dist/credential-stores/defaults.js +0 -22
  76. package/dist/credential-stores/defaults.js.map +0 -1
  77. package/dist/credential-stores/index.d.ts +0 -6
  78. package/dist/credential-stores/index.d.ts.map +0 -1
  79. package/dist/credential-stores/index.js +0 -6
  80. package/dist/credential-stores/index.js.map +0 -1
  81. package/dist/credential-stores/keychain-store.d.ts +0 -100
  82. package/dist/credential-stores/keychain-store.d.ts.map +0 -1
  83. package/dist/credential-stores/keychain-store.js +0 -225
  84. package/dist/credential-stores/keychain-store.js.map +0 -1
  85. package/dist/credential-stores/memory-store.d.ts +0 -39
  86. package/dist/credential-stores/memory-store.d.ts.map +0 -1
  87. package/dist/credential-stores/memory-store.js +0 -58
  88. package/dist/credential-stores/memory-store.js.map +0 -1
  89. package/dist/credential-stores/nango-store.d.ts +0 -59
  90. package/dist/credential-stores/nango-store.d.ts.map +0 -1
  91. package/dist/credential-stores/nango-store.js +0 -264
  92. package/dist/credential-stores/nango-store.js.map +0 -1
  93. package/dist/credential-stuffer/CredentialStuffer.d.ts +0 -80
  94. package/dist/credential-stuffer/CredentialStuffer.d.ts.map +0 -1
  95. package/dist/credential-stuffer/CredentialStuffer.js +0 -186
  96. package/dist/credential-stuffer/CredentialStuffer.js.map +0 -1
  97. package/dist/credential-stuffer/index.d.ts +0 -2
  98. package/dist/credential-stuffer/index.d.ts.map +0 -1
  99. package/dist/credential-stuffer/index.js +0 -2
  100. package/dist/credential-stuffer/index.js.map +0 -1
  101. package/dist/data-access/agentDataComponents.d.ts +0 -1
  102. package/dist/data-access/agentDataComponents.d.ts.map +0 -1
  103. package/dist/data-access/agentDataComponents.js +0 -2
  104. package/dist/data-access/agentDataComponents.js.map +0 -1
  105. package/dist/data-access/agentGraphs.d.ts +0 -399
  106. package/dist/data-access/agentGraphs.d.ts.map +0 -1
  107. package/dist/data-access/agentGraphs.js +0 -551
  108. package/dist/data-access/agentGraphs.js.map +0 -1
  109. package/dist/data-access/agentRelations.d.ts +0 -456
  110. package/dist/data-access/agentRelations.d.ts.map +0 -1
  111. package/dist/data-access/agentRelations.js +0 -471
  112. package/dist/data-access/agentRelations.js.map +0 -1
  113. package/dist/data-access/agents.d.ts +0 -218
  114. package/dist/data-access/agents.d.ts.map +0 -1
  115. package/dist/data-access/agents.js +0 -130
  116. package/dist/data-access/agents.js.map +0 -1
  117. package/dist/data-access/apiKeys.d.ts +0 -114
  118. package/dist/data-access/apiKeys.d.ts.map +0 -1
  119. package/dist/data-access/apiKeys.js +0 -185
  120. package/dist/data-access/apiKeys.js.map +0 -1
  121. package/dist/data-access/artifactComponents.d.ts +0 -152
  122. package/dist/data-access/artifactComponents.d.ts.map +0 -1
  123. package/dist/data-access/artifactComponents.js +0 -214
  124. package/dist/data-access/artifactComponents.js.map +0 -1
  125. package/dist/data-access/contextCache.d.ts +0 -68
  126. package/dist/data-access/contextCache.d.ts.map +0 -1
  127. package/dist/data-access/contextCache.js +0 -135
  128. package/dist/data-access/contextCache.js.map +0 -1
  129. package/dist/data-access/contextConfigs.d.ts +0 -110
  130. package/dist/data-access/contextConfigs.d.ts.map +0 -1
  131. package/dist/data-access/contextConfigs.js +0 -156
  132. package/dist/data-access/contextConfigs.js.map +0 -1
  133. package/dist/data-access/conversations.d.ts +0 -125
  134. package/dist/data-access/conversations.d.ts.map +0 -1
  135. package/dist/data-access/conversations.js +0 -244
  136. package/dist/data-access/conversations.js.map +0 -1
  137. package/dist/data-access/credentialReferences.d.ts +0 -86
  138. package/dist/data-access/credentialReferences.d.ts.map +0 -1
  139. package/dist/data-access/credentialReferences.js +0 -175
  140. package/dist/data-access/credentialReferences.js.map +0 -1
  141. package/dist/data-access/dataComponents.d.ts +0 -129
  142. package/dist/data-access/dataComponents.d.ts.map +0 -1
  143. package/dist/data-access/dataComponents.js +0 -213
  144. package/dist/data-access/dataComponents.js.map +0 -1
  145. package/dist/data-access/externalAgents.d.ts +0 -83
  146. package/dist/data-access/externalAgents.d.ts.map +0 -1
  147. package/dist/data-access/externalAgents.js +0 -163
  148. package/dist/data-access/externalAgents.js.map +0 -1
  149. package/dist/data-access/graphFull.d.ts +0 -32
  150. package/dist/data-access/graphFull.d.ts.map +0 -1
  151. package/dist/data-access/graphFull.js +0 -996
  152. package/dist/data-access/graphFull.js.map +0 -1
  153. package/dist/data-access/index.d.ts +0 -21
  154. package/dist/data-access/index.d.ts.map +0 -1
  155. package/dist/data-access/index.js +0 -22
  156. package/dist/data-access/index.js.map +0 -1
  157. package/dist/data-access/ledgerArtifacts.d.ts +0 -49
  158. package/dist/data-access/ledgerArtifacts.d.ts.map +0 -1
  159. package/dist/data-access/ledgerArtifacts.js +0 -112
  160. package/dist/data-access/ledgerArtifacts.js.map +0 -1
  161. package/dist/data-access/messages.d.ts +0 -209
  162. package/dist/data-access/messages.d.ts.map +0 -1
  163. package/dist/data-access/messages.js +0 -100
  164. package/dist/data-access/messages.js.map +0 -1
  165. package/dist/data-access/projects.d.ts +0 -67
  166. package/dist/data-access/projects.d.ts.map +0 -1
  167. package/dist/data-access/projects.js +0 -337
  168. package/dist/data-access/projects.js.map +0 -1
  169. package/dist/data-access/tasks.d.ts +0 -37
  170. package/dist/data-access/tasks.d.ts.map +0 -1
  171. package/dist/data-access/tasks.js +0 -40
  172. package/dist/data-access/tasks.js.map +0 -1
  173. package/dist/data-access/tools.d.ts +0 -277
  174. package/dist/data-access/tools.d.ts.map +0 -1
  175. package/dist/data-access/tools.js +0 -183
  176. package/dist/data-access/tools.js.map +0 -1
  177. package/dist/data-access/validation.d.ts +0 -17
  178. package/dist/data-access/validation.d.ts.map +0 -1
  179. package/dist/data-access/validation.js +0 -52
  180. package/dist/data-access/validation.js.map +0 -1
  181. package/dist/db/clean.d.ts +0 -6
  182. package/dist/db/clean.d.ts.map +0 -1
  183. package/dist/db/clean.js +0 -81
  184. package/dist/db/clean.js.map +0 -1
  185. package/dist/db/client.d.ts +0 -19
  186. package/dist/db/client.d.ts.map +0 -1
  187. package/dist/db/client.js +0 -24
  188. package/dist/db/client.js.map +0 -1
  189. package/dist/db/schema.d.ts.map +0 -1
  190. package/dist/db/schema.js.map +0 -1
  191. package/dist/db/test-client.d.ts +0 -25
  192. package/dist/db/test-client.d.ts.map +0 -1
  193. package/dist/db/test-client.js +0 -136
  194. package/dist/db/test-client.js.map +0 -1
  195. package/dist/env.d.ts +0 -19
  196. package/dist/env.d.ts.map +0 -1
  197. package/dist/env.js +0 -49
  198. package/dist/env.js.map +0 -1
  199. package/dist/index.d.ts.map +0 -1
  200. package/dist/index.js.map +0 -1
  201. package/dist/middleware/contextValidation.d.ts +0 -49
  202. package/dist/middleware/contextValidation.d.ts.map +0 -1
  203. package/dist/middleware/contextValidation.js +0 -473
  204. package/dist/middleware/contextValidation.js.map +0 -1
  205. package/dist/middleware/index.d.ts +0 -2
  206. package/dist/middleware/index.d.ts.map +0 -1
  207. package/dist/middleware/index.js +0 -2
  208. package/dist/middleware/index.js.map +0 -1
  209. package/dist/types/a2a.d.ts +0 -373
  210. package/dist/types/a2a.d.ts.map +0 -1
  211. package/dist/types/a2a.js +0 -14
  212. package/dist/types/a2a.js.map +0 -1
  213. package/dist/types/entities.d.ts +0 -147
  214. package/dist/types/entities.d.ts.map +0 -1
  215. package/dist/types/entities.js +0 -2
  216. package/dist/types/entities.js.map +0 -1
  217. package/dist/types/index.d.ts.map +0 -1
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/types/server.d.ts +0 -116
  220. package/dist/types/server.d.ts.map +0 -1
  221. package/dist/types/server.js +0 -2
  222. package/dist/types/server.js.map +0 -1
  223. package/dist/types/utility.d.ts +0 -213
  224. package/dist/types/utility.d.ts.map +0 -1
  225. package/dist/types/utility.js +0 -9
  226. package/dist/types/utility.js.map +0 -1
  227. package/dist/utils/apiKeys.d.ts +0 -32
  228. package/dist/utils/apiKeys.d.ts.map +0 -1
  229. package/dist/utils/apiKeys.js +0 -117
  230. package/dist/utils/apiKeys.js.map +0 -1
  231. package/dist/utils/auth-detection.d.ts +0 -23
  232. package/dist/utils/auth-detection.d.ts.map +0 -1
  233. package/dist/utils/auth-detection.js +0 -148
  234. package/dist/utils/auth-detection.js.map +0 -1
  235. package/dist/utils/credential-store-utils.d.ts +0 -11
  236. package/dist/utils/credential-store-utils.d.ts.map +0 -1
  237. package/dist/utils/credential-store-utils.js +0 -19
  238. package/dist/utils/credential-store-utils.js.map +0 -1
  239. package/dist/utils/error.d.ts +0 -526
  240. package/dist/utils/error.d.ts.map +0 -1
  241. package/dist/utils/error.js +0 -282
  242. package/dist/utils/error.js.map +0 -1
  243. package/dist/utils/execution.d.ts +0 -18
  244. package/dist/utils/execution.d.ts.map +0 -1
  245. package/dist/utils/execution.js +0 -25
  246. package/dist/utils/execution.js.map +0 -1
  247. package/dist/utils/index.d.ts +0 -9
  248. package/dist/utils/index.d.ts.map +0 -1
  249. package/dist/utils/index.js +0 -9
  250. package/dist/utils/index.js.map +0 -1
  251. package/dist/utils/logger.d.ts +0 -79
  252. package/dist/utils/logger.d.ts.map +0 -1
  253. package/dist/utils/logger.js +0 -102
  254. package/dist/utils/logger.js.map +0 -1
  255. package/dist/utils/logging.d.ts +0 -11
  256. package/dist/utils/logging.d.ts.map +0 -1
  257. package/dist/utils/logging.js +0 -6
  258. package/dist/utils/logging.js.map +0 -1
  259. package/dist/utils/mcp-client.d.ts +0 -48
  260. package/dist/utils/mcp-client.d.ts.map +0 -1
  261. package/dist/utils/mcp-client.js +0 -174
  262. package/dist/utils/mcp-client.js.map +0 -1
  263. package/dist/utils/tracer.d.ts +0 -24
  264. package/dist/utils/tracer.d.ts.map +0 -1
  265. package/dist/utils/tracer.js +0 -110
  266. package/dist/utils/tracer.js.map +0 -1
  267. package/dist/validation/graphFull.d.ts +0 -36
  268. package/dist/validation/graphFull.d.ts.map +0 -1
  269. package/dist/validation/graphFull.js +0 -128
  270. package/dist/validation/graphFull.js.map +0 -1
  271. package/dist/validation/id-validation.d.ts +0 -38
  272. package/dist/validation/id-validation.d.ts.map +0 -1
  273. package/dist/validation/id-validation.js +0 -60
  274. package/dist/validation/id-validation.js.map +0 -1
  275. package/dist/validation/index.d.ts.map +0 -1
  276. package/dist/validation/index.js.map +0 -1
  277. package/dist/validation/schemas.d.ts.map +0 -1
  278. package/dist/validation/schemas.js +0 -576
  279. package/dist/validation/schemas.js.map +0 -1
@@ -1,551 +0,0 @@
1
- import { and, count, desc, eq, inArray, like } from 'drizzle-orm';
2
- import { nanoid } from 'nanoid';
3
- import { agentArtifactComponents, agentDataComponents, agentGraph, agents, agentToolRelations, artifactComponents, dataComponents, projects, tools, } from '../db/schema';
4
- import { getAgentRelations, getAgentRelationsByGraph } from './agentRelations';
5
- import { getAgentById } from './agents';
6
- import { getContextConfigById } from './contextConfigs';
7
- import { getExternalAgent } from './externalAgents';
8
- export const getAgentGraph = (db) => async (params) => {
9
- return await db.query.agentGraph.findFirst({
10
- where: and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)),
11
- });
12
- };
13
- export const getAgentGraphById = (db) => async (params) => {
14
- const result = await db.query.agentGraph.findFirst({
15
- where: and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)),
16
- });
17
- return result ?? null;
18
- };
19
- export const getAgentGraphWithDefaultAgent = (db) => async (params) => {
20
- const result = await db.query.agentGraph.findFirst({
21
- where: and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)),
22
- with: {
23
- defaultAgent: true,
24
- },
25
- });
26
- return result ?? null;
27
- };
28
- export const listAgentGraphs = (db) => async (params) => {
29
- return await db.query.agentGraph.findMany({
30
- where: and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId)),
31
- });
32
- };
33
- export const listAgentGraphsPaginated = (db) => async (params) => {
34
- const page = params.pagination?.page || 1;
35
- const limit = Math.min(params.pagination?.limit || 10, 100);
36
- const offset = (page - 1) * limit;
37
- const whereClause = and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId));
38
- const query = db
39
- .select()
40
- .from(agentGraph)
41
- .where(whereClause)
42
- .limit(limit)
43
- .offset(offset)
44
- .orderBy(desc(agentGraph.createdAt));
45
- const [data, totalResult] = await Promise.all([
46
- query,
47
- db.select({ count: count() }).from(agentGraph).where(whereClause),
48
- ]);
49
- const total = totalResult[0]?.count || 0;
50
- const pages = Math.ceil(total / limit);
51
- return {
52
- data,
53
- pagination: { page, limit, total, pages },
54
- };
55
- };
56
- export const createAgentGraph = (db) => async (data) => {
57
- const now = new Date().toISOString();
58
- const insertData = {
59
- ...data,
60
- createdAt: now,
61
- updatedAt: now,
62
- };
63
- if (data.description !== undefined) {
64
- insertData.description = data.description;
65
- }
66
- if (data.contextConfigId !== undefined) {
67
- insertData.contextConfigId = data.contextConfigId;
68
- }
69
- if (data.models !== undefined) {
70
- insertData.models = data.models;
71
- }
72
- if (data.statusUpdates !== undefined) {
73
- insertData.statusUpdates = data.statusUpdates;
74
- }
75
- if (data.graphPrompt !== undefined) {
76
- insertData.graphPrompt = data.graphPrompt;
77
- }
78
- if (data.stopWhen !== undefined) {
79
- insertData.stopWhen = data.stopWhen;
80
- }
81
- const graph = await db.insert(agentGraph).values(insertData).returning();
82
- return graph[0];
83
- };
84
- export const updateAgentGraph = (db) => async (params) => {
85
- const data = params.data;
86
- // Handle model settings clearing - if empty object or no model field, set to null
87
- if (data.models !== undefined) {
88
- if (!data.models ||
89
- (!data.models.base?.model &&
90
- !data.models.structuredOutput?.model &&
91
- !data.models.summarizer?.model &&
92
- !data.models.base?.providerOptions &&
93
- !data.models.structuredOutput?.providerOptions &&
94
- !data.models.summarizer?.providerOptions)) {
95
- data.models = null;
96
- }
97
- }
98
- if (data.statusUpdates !== undefined) {
99
- // If statusUpdates is null, set to null to clear it
100
- if (!data.statusUpdates) {
101
- data.statusUpdates = null;
102
- }
103
- }
104
- // Handle contextConfigId clearing
105
- if (data.contextConfigId !== undefined && !data.contextConfigId) {
106
- data.contextConfigId = null;
107
- }
108
- // Handle graphPrompt clearing
109
- if (data.graphPrompt !== undefined && !data.graphPrompt) {
110
- data.graphPrompt = null;
111
- }
112
- // Handle stopWhen clearing
113
- if (data.stopWhen !== undefined && !data.stopWhen) {
114
- data.stopWhen = null;
115
- }
116
- const updateData = {
117
- ...data,
118
- updatedAt: new Date().toISOString(),
119
- };
120
- const graph = await db
121
- .update(agentGraph)
122
- .set(updateData)
123
- .where(and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)))
124
- .returning();
125
- return graph[0] ?? null;
126
- };
127
- export const deleteAgentGraph = (db) => async (params) => {
128
- const result = await db
129
- .delete(agentGraph)
130
- .where(and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)))
131
- .returning();
132
- return result.length > 0;
133
- };
134
- /**
135
- * Helper function to fetch component relationships using efficient joins
136
- */
137
- export const fetchComponentRelationships = (db) => async (scopes, agentIds, config) => {
138
- const componentsObject = {};
139
- if (agentIds.length > 0) {
140
- const results = await db
141
- .select(config.selectFields)
142
- .from(config.relationTable)
143
- .innerJoin(config.componentTable, eq(config.relationIdField, config.componentIdField))
144
- .where(and(eq(config.relationTable.tenantId, scopes.tenantId), eq(config.relationTable.projectId, scopes.projectId), inArray(config.relationTable.agentId, agentIds)));
145
- for (const component of results) {
146
- componentsObject[component.id] = component;
147
- }
148
- }
149
- return componentsObject;
150
- };
151
- export const getGraphAgentInfos = (db) => async ({ scopes, graphId, agentId, }) => {
152
- const { tenantId, projectId } = scopes;
153
- // First, verify that the graph exists
154
- const graph = await getAgentGraph(db)({
155
- scopes: { tenantId, projectId },
156
- graphId,
157
- });
158
- if (!graph) {
159
- throw new Error(`Agent graph with ID ${graphId} not found for tenant ${tenantId}`);
160
- }
161
- // Get all relations for the agent within the tenant
162
- // For now, this works without graph-specific filtering until schema is properly updated
163
- const relations = await getAgentRelations(db)({
164
- scopes: { tenantId, projectId },
165
- graphId,
166
- agentId,
167
- });
168
- const targetAgentIds = relations
169
- .map((relation) => relation.targetAgentId)
170
- .filter((id) => id !== null);
171
- // If no relations found, return empty array
172
- if (targetAgentIds.length === 0) {
173
- return [];
174
- }
175
- // Get agent information for each target agent
176
- const agentInfos = await Promise.all(targetAgentIds.map(async (targetAgentId) => {
177
- const agent = await getAgentById(db)({
178
- scopes: { tenantId, projectId },
179
- agentId: targetAgentId,
180
- });
181
- if (agent !== undefined) {
182
- return { id: agent.id, name: agent.name, description: agent.description };
183
- }
184
- return null;
185
- }));
186
- // Filter out null results
187
- return agentInfos.filter((agent) => agent !== null);
188
- };
189
- // NEW METHOD: Get full graph definition with all agents, relationships, and tools
190
- export const getFullGraphDefinition = (db) => async ({ scopes: { tenantId, projectId }, graphId, }) => {
191
- // First, get the basic graph info
192
- const graph = await getAgentGraphById(db)({
193
- scopes: { tenantId, projectId },
194
- graphId,
195
- });
196
- if (!graph) {
197
- return null;
198
- }
199
- // Get all agents that are part of this graph through relations
200
- // First get all unique agent IDs in this graph (both source and target agents)
201
- const graphRelations = await getAgentRelationsByGraph(db)({
202
- scopes: { tenantId, projectId },
203
- graphId,
204
- });
205
- // Get unique agent IDs from multiple sources:
206
- // 1. Default agent (always included)
207
- // 2. Agents with relationships in this graph
208
- // 3. Agents that have tools assigned to this graph
209
- const internalAgentIds = new Set();
210
- const externalAgentIds = new Set();
211
- internalAgentIds.add(graph.defaultAgentId);
212
- // Add agents from relationships
213
- for (const relation of graphRelations) {
214
- // Add both source and target agents to the set
215
- if (relation.sourceAgentId) {
216
- internalAgentIds.add(relation.sourceAgentId);
217
- }
218
- if (relation.targetAgentId) {
219
- internalAgentIds.add(relation.targetAgentId);
220
- }
221
- if (relation.externalAgentId) {
222
- externalAgentIds.add(relation.externalAgentId);
223
- }
224
- }
225
- // Add agents that have tools associated with this graph
226
- // This is crucial for graphs where agents don't have relationships but do have tools
227
- const agentsWithTools = await db
228
- .selectDistinct({ agentId: agentToolRelations.agentId })
229
- .from(agentToolRelations)
230
- .innerJoin(tools, eq(agentToolRelations.toolId, tools.id))
231
- .where(and(eq(agentToolRelations.tenantId, tenantId), eq(agentToolRelations.projectId, projectId),
232
- // We need to find tools that belong to this graph
233
- // Tools created as part of a graph have IDs that include the graph ID
234
- like(tools.id, `%${graphId}%`)));
235
- for (const agentTool of agentsWithTools) {
236
- internalAgentIds.add(agentTool.agentId);
237
- }
238
- // Get full agent details for all agents in the graph
239
- const graphAgents = await Promise.all(Array.from(internalAgentIds).map(async (agentId) => {
240
- const agent = await getAgentById(db)({
241
- scopes: { tenantId, projectId },
242
- agentId,
243
- });
244
- if (!agent)
245
- return null;
246
- // Get relationships for this agent
247
- const agentRelationsList = graphRelations.filter((relation) => relation.sourceAgentId === agentId);
248
- // Group relationships by type
249
- const canTransferTo = agentRelationsList
250
- .filter((rel) => rel.relationType === 'transfer' || rel.relationType === 'transfer_to')
251
- .map((rel) => rel.targetAgentId)
252
- .filter((id) => id !== null);
253
- const canDelegateTo = agentRelationsList
254
- .filter((rel) => rel.relationType === 'delegate' || rel.relationType === 'delegate_to')
255
- .map((rel) => rel.targetAgentId || rel.externalAgentId) // Delegations can be to internal or external agents
256
- .filter((id) => id !== null);
257
- // Get tools for this agent
258
- const agentTools = await db
259
- .select({
260
- id: tools.id,
261
- name: tools.name,
262
- config: tools.config,
263
- imageUrl: tools.imageUrl,
264
- status: tools.status,
265
- capabilities: tools.capabilities,
266
- lastHealthCheck: tools.lastHealthCheck,
267
- lastError: tools.lastError,
268
- availableTools: tools.availableTools,
269
- lastToolsSync: tools.lastToolsSync,
270
- })
271
- .from(agentToolRelations)
272
- .innerJoin(tools, eq(agentToolRelations.toolId, tools.id))
273
- .where(and(eq(agentToolRelations.tenantId, tenantId), eq(agentToolRelations.agentId, agentId)));
274
- // Get dataComponents for this agent
275
- const agentDataComponentRelations = await db.query.agentDataComponents.findMany({
276
- where: and(eq(agentDataComponents.tenantId, tenantId), eq(agentDataComponents.agentId, agentId)),
277
- });
278
- const agentDataComponentIds = agentDataComponentRelations.map((rel) => rel.dataComponentId);
279
- // Get artifactComponents for this agent
280
- const agentArtifactComponentRelations = await db.query.agentArtifactComponents.findMany({
281
- where: and(eq(agentArtifactComponents.tenantId, tenantId), eq(agentArtifactComponents.agentId, agentId)),
282
- });
283
- const agentArtifactComponentIds = agentArtifactComponentRelations.map((rel) => rel.artifactComponentId);
284
- return {
285
- id: agent.id,
286
- name: agent.name,
287
- description: agent.description,
288
- prompt: agent.prompt,
289
- models: agent.models,
290
- stopWhen: agent.stopWhen,
291
- canTransferTo,
292
- canDelegateTo,
293
- dataComponents: agentDataComponentIds,
294
- artifactComponents: agentArtifactComponentIds,
295
- tools: agentTools.map((tool) => ({
296
- id: tool.id,
297
- name: tool.name,
298
- config: tool.config,
299
- imageUrl: tool.imageUrl || undefined,
300
- status: tool.status,
301
- capabilities: tool.capabilities || undefined,
302
- lastHealthCheck: tool.lastHealthCheck && !Number.isNaN(new Date(tool.lastHealthCheck).getTime())
303
- ? new Date(tool.lastHealthCheck).toISOString()
304
- : undefined,
305
- lastError: tool.lastError || undefined,
306
- availableTools: tool.availableTools || undefined,
307
- activeTools: tool.config?.mcp?.activeTools || undefined,
308
- lastToolsSync: tool.lastToolsSync && !Number.isNaN(new Date(tool.lastToolsSync).getTime())
309
- ? new Date(tool.lastToolsSync).toISOString()
310
- : undefined,
311
- })),
312
- };
313
- }));
314
- const externalAgents = await Promise.all(Array.from(externalAgentIds).map(async (agentId) => {
315
- const agent = await getExternalAgent(db)({
316
- scopes: { tenantId, projectId },
317
- agentId,
318
- });
319
- if (!agent)
320
- return null;
321
- // External agents need to match the FullGraphAgentSchema structure
322
- return {
323
- id: agent.id,
324
- name: agent.name,
325
- description: agent.description,
326
- baseUrl: agent.baseUrl,
327
- };
328
- }));
329
- // Filter out null results
330
- const validAgents = [...graphAgents, ...externalAgents].filter((agent) => agent !== null);
331
- // Convert agents array to object with agentId as key
332
- const agentsObject = {};
333
- const toolsObject = {};
334
- for (const agent of validAgents) {
335
- // Check if this is an external agent (has baseUrl property)
336
- const isExternalAgent = 'baseUrl' in agent && agent.baseUrl;
337
- if (isExternalAgent) {
338
- // External agent - only include basic fields
339
- agentsObject[agent.id] = {
340
- id: agent.id,
341
- name: agent.name,
342
- description: agent.description,
343
- baseUrl: agent.baseUrl,
344
- };
345
- }
346
- else {
347
- // Internal agent - extract tools and include all fields
348
- const toolsData = agent.tools || [];
349
- const toolIds = [];
350
- // Build tools object and collect tool IDs for the agent
351
- for (const tool of toolsData) {
352
- toolsObject[tool.id] = tool;
353
- toolIds.push(tool.id);
354
- }
355
- agentsObject[agent.id] = {
356
- ...agent,
357
- tools: toolIds, // Replace tool objects with tool IDs
358
- };
359
- }
360
- }
361
- // Get contextConfig if it exists
362
- let contextConfig = null;
363
- if (graph.contextConfigId) {
364
- try {
365
- contextConfig = await getContextConfigById(db)({
366
- scopes: { tenantId, projectId },
367
- id: graph.contextConfigId,
368
- });
369
- }
370
- catch (error) {
371
- // Don't fail the entire request if contextConfig retrieval fails
372
- console.warn(`Failed to retrieve contextConfig ${graph.contextConfigId}:`, error);
373
- }
374
- }
375
- // Get dataComponents for all agents in this graph
376
- let dataComponentsObject = {};
377
- try {
378
- const agentIds = Array.from(internalAgentIds);
379
- dataComponentsObject = await fetchComponentRelationships(db)({ tenantId, projectId }, agentIds, {
380
- relationTable: agentDataComponents,
381
- componentTable: dataComponents,
382
- relationIdField: agentDataComponents.dataComponentId,
383
- componentIdField: dataComponents.id,
384
- selectFields: {
385
- id: dataComponents.id,
386
- name: dataComponents.name,
387
- description: dataComponents.description,
388
- props: dataComponents.props,
389
- },
390
- });
391
- }
392
- catch (error) {
393
- // Don't fail the entire request if dataComponents retrieval fails
394
- console.warn('Failed to retrieve dataComponents:', error);
395
- }
396
- // Get artifactComponents for all agents in this graph
397
- let artifactComponentsObject = {};
398
- try {
399
- const agentIds = Array.from(internalAgentIds);
400
- artifactComponentsObject = await fetchComponentRelationships(db)({ tenantId, projectId }, agentIds, {
401
- relationTable: agentArtifactComponents,
402
- componentTable: artifactComponents,
403
- relationIdField: agentArtifactComponents.artifactComponentId,
404
- componentIdField: artifactComponents.id,
405
- selectFields: {
406
- id: artifactComponents.id,
407
- name: artifactComponents.name,
408
- description: artifactComponents.description,
409
- summaryProps: artifactComponents.summaryProps,
410
- fullProps: artifactComponents.fullProps,
411
- },
412
- });
413
- }
414
- catch (error) {
415
- // Don't fail the entire request if artifactComponents retrieval fails
416
- console.warn('Failed to retrieve artifactComponents:', error);
417
- }
418
- const result = {
419
- id: graph.id,
420
- name: graph.name,
421
- description: graph.description,
422
- defaultAgentId: graph.defaultAgentId,
423
- agents: agentsObject,
424
- tools: toolsObject,
425
- createdAt: graph.createdAt && !Number.isNaN(new Date(graph.createdAt).getTime())
426
- ? new Date(graph.createdAt).toISOString()
427
- : new Date().toISOString(),
428
- updatedAt: graph.updatedAt && !Number.isNaN(new Date(graph.updatedAt).getTime())
429
- ? new Date(graph.updatedAt).toISOString()
430
- : new Date().toISOString(),
431
- };
432
- // Add optional fields if they exist
433
- if (graph.models) {
434
- result.models = graph.models;
435
- }
436
- if (graph.statusUpdates) {
437
- result.statusUpdates = graph.statusUpdates;
438
- }
439
- if (graph.graphPrompt) {
440
- result.graphPrompt = graph.graphPrompt;
441
- }
442
- if (graph.stopWhen) {
443
- result.stopWhen = graph.stopWhen;
444
- }
445
- if (contextConfig) {
446
- result.contextConfig = {
447
- id: contextConfig.id,
448
- name: contextConfig.name,
449
- description: contextConfig.description,
450
- requestContextSchema: contextConfig.requestContextSchema,
451
- contextVariables: contextConfig.contextVariables,
452
- };
453
- }
454
- if (Object.keys(dataComponentsObject).length > 0) {
455
- result.dataComponents = dataComponentsObject;
456
- }
457
- if (Object.keys(artifactComponentsObject).length > 0) {
458
- result.artifactComponents = artifactComponentsObject;
459
- }
460
- // Apply agent stepCountIs inheritance from project
461
- try {
462
- // Check if projects query is available (may not be in test environments)
463
- if (!db.query?.projects?.findFirst) {
464
- return result;
465
- }
466
- // Get project stopWhen configuration
467
- const project = await db.query.projects.findFirst({
468
- where: and(eq(projects.tenantId, tenantId), eq(projects.id, projectId)),
469
- });
470
- if (project?.stopWhen) {
471
- const projectStopWhen = project.stopWhen;
472
- // Propagate stepCountIs from project to agents
473
- if (projectStopWhen?.stepCountIs !== undefined) {
474
- for (const [agentId, agentData] of Object.entries(result.agents)) {
475
- // Only apply to internal agents (not external agents with baseUrl)
476
- if (agentData && typeof agentData === 'object' && !('baseUrl' in agentData)) {
477
- const agent = agentData;
478
- // Check if agent needs to inherit stepCountIs
479
- const needsInheritance = !agent.stopWhen || agent.stopWhen.stepCountIs === undefined;
480
- if (needsInheritance) {
481
- // Initialize agent stopWhen if it doesn't exist or is null
482
- if (!agent.stopWhen) {
483
- agent.stopWhen = {};
484
- }
485
- // Set stepCountIs in stopWhen
486
- agent.stopWhen.stepCountIs = projectStopWhen.stepCountIs;
487
- // Persist the inherited value to the database
488
- try {
489
- await db
490
- .update(agents)
491
- .set({
492
- stopWhen: agent.stopWhen,
493
- updatedAt: new Date().toISOString(),
494
- })
495
- .where(and(eq(agents.tenantId, tenantId), eq(agents.projectId, projectId), eq(agents.id, agentId)));
496
- // Update the in-memory agent data to reflect the persisted values
497
- // This ensures the UI gets the updated data
498
- result.agents[agentId] = {
499
- ...result.agents[agentId],
500
- stopWhen: agent.stopWhen,
501
- };
502
- }
503
- catch (dbError) {
504
- console.warn(`Failed to persist stopWhen for agent ${agentId}:`, dbError);
505
- }
506
- }
507
- }
508
- }
509
- }
510
- }
511
- }
512
- catch (error) {
513
- // Don't fail the entire request if inheritance fails
514
- console.warn('Failed to apply agent stepCountIs inheritance:', error);
515
- }
516
- return result;
517
- };
518
- /**
519
- * Upsert an agent graph (create if it doesn't exist, update if it does)
520
- */
521
- export const upsertAgentGraph = (db) => async (params) => {
522
- const scopes = { tenantId: params.data.tenantId, projectId: params.data.projectId };
523
- const graphId = params.data.id || nanoid();
524
- const existing = await getAgentGraphById(db)({
525
- scopes,
526
- graphId,
527
- });
528
- if (existing) {
529
- // Update existing agent graph
530
- return await updateAgentGraph(db)({
531
- scopes,
532
- graphId,
533
- data: {
534
- name: params.data.name,
535
- defaultAgentId: params.data.defaultAgentId,
536
- description: params.data.description,
537
- contextConfigId: params.data.contextConfigId,
538
- models: params.data.models,
539
- statusUpdates: params.data.statusUpdates,
540
- },
541
- });
542
- }
543
- else {
544
- // Create new agent graph
545
- return await createAgentGraph(db)({
546
- ...params.data,
547
- id: graphId,
548
- });
549
- }
550
- };
551
- //# sourceMappingURL=agentGraphs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentGraphs.js","sourceRoot":"","sources":["../../src/data-access/agentGraphs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,KAAK,GACN,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,EAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAgD,EAAE,EAAE;IACjF,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QACzC,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/C,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EACjD,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAClC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,EAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAgD,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QACjD,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/C,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EACjD,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAClC;KACF,CAAC,CAAC;IACH,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,6BAA6B,GACxC,CAAC,EAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAgD,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QACjD,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/C,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EACjD,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAClC;QACD,IAAI,EAAE;YACJ,YAAY,EAAE,IAAI;SACnB;KACF,CAAC,CAAC;IACH,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,MAA+B,EAAE,EAAE;IAC/F,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QACxC,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/C,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAClD;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GACnC,CAAC,EAAkB,EAAE,EAAE,CACvB,KAAK,EAAE,MAA8D,EAAE,EAAE;IACvE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IAElC,MAAM,WAAW,GAAG,GAAG,CACrB,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/C,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAClD,CAAC;IAEF,MAAM,KAAK,GAAG,EAAE;SACb,MAAM,EAAE;SACR,IAAI,CAAC,UAAU,CAAC;SAChB,KAAK,CAAC,WAAW,CAAC;SAClB,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,MAAM,CAAC;SACd,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,KAAK;QACL,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;KAClE,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IAEvC,OAAO;QACL,IAAI;QACJ,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;KAC1C,CAAC;AACJ,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,IAAsB,EAAE,EAAE;IACvF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,UAAU,GAAQ;QACtB,GAAG,IAAI;QACP,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAC;IAEF,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACvC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACrC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;IAEzE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAC3B,CAAC,EAAkB,EAAE,EAAE,CACvB,KAAK,EAAE,MAAwE,EAAE,EAAE;IACjF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,kFAAkF;IAClF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,IACE,CAAC,IAAI,CAAC,MAAM;YACZ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK;gBACvB,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK;gBACpC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK;gBAC9B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe;gBAClC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,eAAe;gBAC9C,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,EAC3C,CAAC;YACA,IAAY,CAAC,MAAM,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACrC,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/D,IAAY,CAAC,eAAe,GAAG,IAAI,CAAC;IACvC,CAAC;IAED,8BAA8B;IAC9B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvD,IAAY,CAAC,WAAW,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,2BAA2B;IAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,GAAG,IAAI;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,EAAE;SACnB,MAAM,CAAC,UAAU,CAAC;SAClB,GAAG,CAAC,UAAU,CAAC;SACf,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/C,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EACjD,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAClC,CACF;SACA,SAAS,EAAE,CAAC;IAEf,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAC3B,CAAC,EAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAgD,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,MAAM,CAAC,UAAU,CAAC;SAClB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/C,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EACjD,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAClC,CACF;SACA,SAAS,EAAE,CAAC;IAEf,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GACtC,CAAC,EAAkB,EAAE,EAAE,CACvB,KAAK,EACH,MAAmB,EACnB,QAAkB,EAClB,MAMC,EAC2B,EAAE;IAC9B,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAE/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,EAAE;aACrB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;aAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;aAC1B,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;aACrF,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAClD,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EACpD,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAChD,CACF,CAAC;QAEJ,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,SAAc,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAC7B,CAAC,EAAkB,EAAE,EAAE,CACvB,KAAK,EAAE,EACL,MAAM,EACN,OAAO,EACP,OAAO,GAKR,EAAE,EAAE;IACH,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACvC,sCAAsC;IACtC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC/B,OAAO;KACR,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,oDAAoD;IACpD,wFAAwF;IACxF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC/B,OAAO;QACP,OAAO;KACR,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,SAAS;SAC7B,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;SACzC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IAE7C,4CAA4C;IAC5C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8CAA8C;IAC9C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC/B,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CACH,CAAC;IAEF,0BAA0B;IAC1B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAsC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AAC1F,CAAC,CAAC;AAEJ,kFAAkF;AAClF,MAAM,CAAC,MAAM,sBAAsB,GACjC,CAAC,EAAkB,EAAE,EAAE,CACvB,KAAK,EAAE,EACL,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAC/B,OAAO,GAIR,EAAuC,EAAE;IACxC,kCAAkC;IAClC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC/B,OAAO;KACR,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,+EAA+E;IAC/E,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC/B,OAAO;KACR,CAAC,CAAC;IAEH,8CAA8C;IAC9C,qCAAqC;IACrC,6CAA6C;IAC7C,mDAAmD;IACnD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAE3C,gCAAgC;IAChC,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,+CAA+C;QAC/C,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC7B,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,qFAAqF;IACrF,MAAM,eAAe,GAAG,MAAM,EAAE;SAC7B,cAAc,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;SACvD,IAAI,CAAC,kBAAkB,CAAC;SACxB,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SACzD,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACzC,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC;IAC3C,kDAAkD;IAClD,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,OAAO,GAAG,CAAC,CAC/B,CACF,CAAC;IAEJ,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;QACxC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,qDAAqD;IACrD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC/B,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,mCAAmC;QACnC,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,OAAO,CACjD,CAAC;QAEF,8BAA8B;QAC9B,MAAM,aAAa,GAAG,kBAAkB;aACrC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,KAAK,UAAU,IAAI,GAAG,CAAC,YAAY,KAAK,aAAa,CAAC;aACtF,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;aAC/B,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAE7C,MAAM,aAAa,GAAG,kBAAkB;aACrC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,KAAK,UAAU,IAAI,GAAG,CAAC,YAAY,KAAK,aAAa,CAAC;aACtF,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,oDAAoD;aAC3G,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAE7C,2BAA2B;QAC3B,MAAM,UAAU,GAAG,MAAM,EAAE;aACxB,MAAM,CAAC;YACN,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC;aACD,IAAI,CAAC,kBAAkB,CAAC;aACxB,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;aACzD,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CACxF,CAAC;QAEJ,oCAAoC;QACpC,MAAM,2BAA2B,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAC9E,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC1C,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CACzC;SACF,CAAC,CAAC;QACH,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAE5F,wCAAwC;QACxC,MAAM,+BAA+B,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YACtF,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC9C,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAC7C;SACF,CAAC,CAAC;QACH,MAAM,yBAAyB,GAAG,+BAA+B,CAAC,GAAG,CACnE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,mBAAmB,CACjC,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa;YACb,aAAa;YACb,cAAc,EAAE,qBAAqB;YACrC,kBAAkB,EAAE,yBAAyB;YAC7C,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS;gBACpC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;gBAC5C,eAAe,EACb,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC7E,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE;oBAC9C,CAAC,CAAC,SAAS;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,SAAS;gBACtC,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS;gBAChD,WAAW,EAAG,IAAI,CAAC,MAAc,EAAE,GAAG,EAAE,WAAW,IAAI,SAAS;gBAChE,aAAa,EACX,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;oBACzE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;oBAC5C,CAAC,CAAC,SAAS;aAChB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC/B,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,mEAAmE;QACnE,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,0BAA0B;IAC1B,MAAM,WAAW,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,CAAC,MAAM,CAC5D,CAAC,KAAK,EAAsC,EAAE,CAAC,KAAK,KAAK,IAAI,CAC9D,CAAC;IAEF,qDAAqD;IACrD,MAAM,YAAY,GAAwB,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAwB,EAAE,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,4DAA4D;QAC5D,MAAM,eAAe,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;QAC5D,IAAI,eAAe,EAAE,CAAC;YACpB,6CAA6C;YAC7C,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;gBACvB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAG,KAAa,CAAC,OAAO;aAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,MAAM,SAAS,GAAI,KAAa,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,wDAAwD;YACxD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;YAED,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;gBACvB,GAAG,KAAK;gBACR,KAAK,EAAE,OAAO,EAAE,qCAAqC;aACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;gBAC7C,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;gBAC/B,EAAE,EAAE,KAAK,CAAC,eAAe;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,OAAO,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,eAAe,GAAG,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IAAI,oBAAoB,GAAwB,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE9C,oBAAoB,GAAG,MAAM,2BAA2B,CAAC,EAAE,CAAC,CAC1D,EAAE,QAAQ,EAAE,SAAS,EAAE,EACvB,QAAQ,EACR;YACE,aAAa,EAAE,mBAAmB;YAClC,cAAc,EAAE,cAAc;YAC9B,eAAe,EAAE,mBAAmB,CAAC,eAAe;YACpD,gBAAgB,EAAE,cAAc,CAAC,EAAE;YACnC,YAAY,EAAE;gBACZ,EAAE,EAAE,cAAc,CAAC,EAAE;gBACrB,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,KAAK,EAAE,cAAc,CAAC,KAAK;aAC5B;SACF,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kEAAkE;QAClE,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,sDAAsD;IACtD,IAAI,wBAAwB,GAAwB,EAAE,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE9C,wBAAwB,GAAG,MAAM,2BAA2B,CAAC,EAAE,CAAC,CAC9D,EAAE,QAAQ,EAAE,SAAS,EAAE,EACvB,QAAQ,EACR;YACE,aAAa,EAAE,uBAAuB;YACtC,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,uBAAuB,CAAC,mBAAmB;YAC5D,gBAAgB,EAAE,kBAAkB,CAAC,EAAE;YACvC,YAAY,EAAE;gBACZ,EAAE,EAAE,kBAAkB,CAAC,EAAE;gBACzB,IAAI,EAAE,kBAAkB,CAAC,IAAI;gBAC7B,WAAW,EAAE,kBAAkB,CAAC,WAAW;gBAC3C,YAAY,EAAE,kBAAkB,CAAC,YAAY;gBAC7C,SAAS,EAAE,kBAAkB,CAAC,SAAS;aACxC;SACF,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sEAAsE;QACtE,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,MAAM,GAAQ;QAClB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,WAAW;QAClB,SAAS,EACP,KAAK,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YACnE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YACzC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,SAAS,EACP,KAAK,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YACnE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YACzC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC/B,CAAC;IAEF,oCAAoC;IACpC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,aAAa,GAAG;YACrB,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,oBAAoB,EAAE,aAAa,CAAC,oBAAoB;YACxD,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;SACjD,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,cAAc,GAAG,oBAAoB,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,kBAAkB,GAAG,wBAAwB,CAAC;IACvD,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC;QACH,yEAAyE;QACzE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,qCAAqC;QACrC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YAChD,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACxE,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,MAAM,eAAe,GAAG,OAAO,CAAC,QAAe,CAAC;YAEhD,+CAA+C;YAC/C,IAAI,eAAe,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC/C,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjE,mEAAmE;oBACnE,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC;wBAC5E,MAAM,KAAK,GAAG,SAAgB,CAAC;wBAE/B,8CAA8C;wBAC9C,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,CAAC;wBAErF,IAAI,gBAAgB,EAAE,CAAC;4BACrB,2DAA2D;4BAC3D,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gCACpB,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;4BACtB,CAAC;4BAED,8BAA8B;4BAC9B,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;4BAEzD,8CAA8C;4BAC9C,IAAI,CAAC;gCACH,MAAM,EAAE;qCACL,MAAM,CAAC,MAAM,CAAC;qCACd,GAAG,CAAC;oCACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;oCACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iCACpC,CAAC;qCACD,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC7B,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAC/B,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CACvB,CACF,CAAC;gCAEJ,kEAAkE;gCAClE,4CAA4C;gCAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;oCACvB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oCACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iCACzB,CAAC;4BACJ,CAAC;4BAAC,OAAO,OAAO,EAAE,CAAC;gCACjB,OAAO,CAAC,IAAI,CAAC,wCAAwC,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;4BAC5E,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qDAAqD;QACrD,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAC3B,CAAC,EAAkB,EAAE,EAAE,CACvB,KAAK,EAAE,MAAkC,EAAgB,EAAE;IACzD,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACpF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;IAE3C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM;QACN,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,QAAQ,EAAE,CAAC;QACb,8BAA8B;QAC9B,OAAO,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM;YACN,OAAO;YACP,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;gBACtB,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;gBAC1C,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;gBACpC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe;gBAC5C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;gBAC1B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;aACzC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,yBAAyB;QACzB,OAAO,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAChC,GAAG,MAAM,CAAC,IAAI;YACd,EAAE,EAAE,OAAO;SACZ,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}