bitrix24-tasks-mcp-server 1.5.2 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,288 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { withCrossProcessCompositeLock } from './compositeLock.js';
3
+ const MARKER_PREFIX = 'AIWF-PUBLICATION';
4
+ const MAX_COMMENTS = 12;
5
+ const MAX_COMMENT_CHARS = 32_000;
6
+ const MAX_COMMENT_SCAN_PAGES = 4;
7
+ const COMMENT_SCAN_PAGE_SIZE = 50;
8
+ const taskLocks = new Map();
9
+ export function publishTaskComposite(client, input) {
10
+ validateInput(input);
11
+ const lockScope = client.getPublicationLockScope?.() ?? 'bitrix-portal-unavailable';
12
+ return withTaskLock(input.taskId, () => withCrossProcessCompositeLock(lockScope, input.taskId, () => publishTaskCompositeLocked(client, input)));
13
+ }
14
+ async function publishTaskCompositeLocked(client, input) {
15
+ const publicationKey = createHash('sha256')
16
+ .update(`${input.taskId}\u0000${input.runId}\u0000${input.evidenceSha256}`)
17
+ .digest('hex');
18
+ const before = await client.getTaskStage(input.taskId);
19
+ assertExpectedStage(input, before.stageId, 'before publication');
20
+ let knownComments = await readCompactComments(client, input);
21
+ const existingReceipt = findLatestReceipt(knownComments, publicationKey);
22
+ const commentIds = [];
23
+ const uploadedDiskFileIds = new Set(existingReceipt?.payload.uploadedDiskFileIds ?? []);
24
+ let replayedComments = 0;
25
+ for (const [index, comment] of input.comments.entries()) {
26
+ const marker = markerFor(publicationKey, index);
27
+ let verified = knownComments.find((item) => item.postMessage?.includes(marker));
28
+ if (verified) {
29
+ replayedComments += 1;
30
+ collectAttachmentIds(verified, uploadedDiskFileIds);
31
+ }
32
+ else {
33
+ const sent = await client.sendTaskComment(input.taskId, {
34
+ preferApi: input.preferApi,
35
+ text: `${comment.text.trim()}\n\n${marker}`,
36
+ filePaths: comment.filePaths,
37
+ diskFolderId: input.diskFolderId
38
+ });
39
+ if (!sent.success) {
40
+ throw new Error(`Bitrix comment ${index + 1} failed: ${sent.errors.join('; ') || 'unknown error'}`);
41
+ }
42
+ sent.uploadedDiskFileIds.forEach((id) => uploadedDiskFileIds.add(id));
43
+ knownComments = await verifyMarker(client, input, marker, knownComments);
44
+ verified = knownComments.find((item) => item.postMessage?.includes(marker));
45
+ if (!verified?.id) {
46
+ throw new Error(`Bitrix comment ${index + 1} marker was not confirmed by readback for publication ${publicationKey}`);
47
+ }
48
+ collectAttachmentIds(verified, uploadedDiskFileIds);
49
+ }
50
+ commentIds.push(verified.id);
51
+ }
52
+ const markerPayload = normalizeMarkerReceipt({
53
+ schema: 'aiwf-publication-marker/v1',
54
+ publicationKey,
55
+ evidenceSha256: input.evidenceSha256,
56
+ targetStageId: input.targetStageId,
57
+ commentIds,
58
+ uploadedDiskFileIds: [...uploadedDiskFileIds]
59
+ });
60
+ const expectedReceiptMarker = receiptMarkerFor(markerPayload);
61
+ let receiptComment = knownComments.find((comment) => comment.postMessage?.includes(expectedReceiptMarker));
62
+ const receiptReplayed = Boolean(receiptComment);
63
+ if (!receiptComment) {
64
+ const sent = await client.sendTaskComment(input.taskId, {
65
+ preferApi: input.preferApi,
66
+ text: `AI workflow publication receipt\n\n${expectedReceiptMarker}`,
67
+ diskFolderId: input.diskFolderId
68
+ });
69
+ if (!sent.success) {
70
+ throw new Error(`Bitrix publication receipt failed: ${sent.errors.join('; ') || 'unknown error'}`);
71
+ }
72
+ knownComments = await verifyMarker(client, input, expectedReceiptMarker, knownComments);
73
+ receiptComment = knownComments.find((comment) => comment.postMessage?.includes(expectedReceiptMarker));
74
+ if (!receiptComment?.id) {
75
+ throw new Error(`Bitrix publication receipt marker was not confirmed by readback for publication ${publicationKey}`);
76
+ }
77
+ }
78
+ const immediatelyBeforeMove = await client.getTaskStage(input.taskId);
79
+ assertExpectedStage(input, immediatelyBeforeMove.stageId, 'before stage move');
80
+ if (before.stageId &&
81
+ immediatelyBeforeMove.stageId !== before.stageId &&
82
+ immediatelyBeforeMove.stageId !== input.targetStageId) {
83
+ throw new Error(`Task ${input.taskId} stage changed concurrently from ${before.stageId} to ` +
84
+ `${immediatelyBeforeMove.stageId ?? 'unknown'}`);
85
+ }
86
+ let moved = false;
87
+ if (immediatelyBeforeMove.stageId !== input.targetStageId) {
88
+ moved = await client.moveTaskToStage({
89
+ taskId: input.taskId,
90
+ stageId: input.targetStageId
91
+ });
92
+ if (!moved) {
93
+ throw new Error(`Bitrix returned false while moving task ${input.taskId} to ${input.targetStageId}`);
94
+ }
95
+ }
96
+ const after = await client.getTaskStage(input.taskId);
97
+ if (after.stageId !== input.targetStageId) {
98
+ throw new Error(`Bitrix stage readback mismatch for task ${input.taskId}: ` +
99
+ `expected ${input.targetStageId}, got ${after.stageId ?? 'unknown'}`);
100
+ }
101
+ const unsigned = {
102
+ schema: 'bitrix-composite-publication/v1',
103
+ publicationKey,
104
+ taskId: input.taskId,
105
+ runId: input.runId,
106
+ evidenceSha256: input.evidenceSha256,
107
+ commentIds,
108
+ receiptCommentId: receiptComment.id,
109
+ uploadedDiskFileIds: markerPayload.uploadedDiskFileIds,
110
+ targetStageId: input.targetStageId,
111
+ stageBefore: before.stageId,
112
+ stageBeforeMove: immediatelyBeforeMove.stageId,
113
+ stageAfter: after.stageId,
114
+ moved,
115
+ idempotentReplay: replayedComments === input.comments.length &&
116
+ receiptReplayed &&
117
+ before.stageId === input.targetStageId
118
+ };
119
+ return {
120
+ ...unsigned,
121
+ receiptSha256: createHash('sha256')
122
+ .update(JSON.stringify(unsigned))
123
+ .digest('hex')
124
+ };
125
+ }
126
+ function markerFor(publicationKey, index) {
127
+ return `[${MARKER_PREFIX}:${publicationKey}:COMMENT:${index + 1}]`;
128
+ }
129
+ function receiptMarkerFor(payload) {
130
+ const encoded = Buffer.from(JSON.stringify(payload), 'utf8').toString('base64url');
131
+ const payloadSha256 = createHash('sha256').update(encoded).digest('hex');
132
+ return `[${MARKER_PREFIX}:${payload.publicationKey}:RECEIPT:${payloadSha256}:${encoded}]`;
133
+ }
134
+ function parseReceiptMarker(message, publicationKey) {
135
+ if (!message) {
136
+ return null;
137
+ }
138
+ const escapedKey = publicationKey.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
139
+ const match = message.match(new RegExp(`\\[${MARKER_PREFIX}:${escapedKey}:RECEIPT:([a-f0-9]{64}):([A-Za-z0-9_-]+)\\]`));
140
+ if (!match) {
141
+ return null;
142
+ }
143
+ const [, expectedSha256, encoded] = match;
144
+ if (createHash('sha256').update(encoded).digest('hex') !== expectedSha256) {
145
+ return null;
146
+ }
147
+ try {
148
+ const raw = JSON.parse(Buffer.from(encoded, 'base64url').toString('utf8'));
149
+ if (raw?.schema !== 'aiwf-publication-marker/v1' ||
150
+ raw?.publicationKey !== publicationKey ||
151
+ !Array.isArray(raw?.commentIds) ||
152
+ !Array.isArray(raw?.uploadedDiskFileIds)) {
153
+ return null;
154
+ }
155
+ return normalizeMarkerReceipt(raw);
156
+ }
157
+ catch {
158
+ return null;
159
+ }
160
+ }
161
+ function findLatestReceipt(comments, publicationKey) {
162
+ const receipts = comments
163
+ .map((comment) => ({
164
+ commentId: comment.id,
165
+ payload: parseReceiptMarker(comment.postMessage, publicationKey)
166
+ }))
167
+ .filter((item) => item.payload !== null)
168
+ .sort((left, right) => compareCommentIds(right.commentId, left.commentId));
169
+ return receipts[0] ?? null;
170
+ }
171
+ function normalizeMarkerReceipt(payload) {
172
+ return {
173
+ ...payload,
174
+ commentIds: [...new Set(payload.commentIds.map(String))],
175
+ uploadedDiskFileIds: [
176
+ ...new Set(payload.uploadedDiskFileIds.map(String).filter(Boolean))
177
+ ].sort(compareCommentIds)
178
+ };
179
+ }
180
+ function collectAttachmentIds(comment, target) {
181
+ for (const attachment of comment.attachments ?? []) {
182
+ const id = attachment.fileId ?? attachment.attachmentId;
183
+ if (id) {
184
+ target.add(String(id).replace(/^n/i, ''));
185
+ }
186
+ }
187
+ }
188
+ async function readCompactComments(client, input) {
189
+ const all = new Map();
190
+ let lastId;
191
+ for (let page = 0; page < MAX_COMMENT_SCAN_PAGES; page += 1) {
192
+ const result = await client.getTaskComments(input.taskId, {
193
+ preferApi: input.preferApi,
194
+ includeAttachments: true,
195
+ includeContent: false,
196
+ includeSystemMessages: false,
197
+ limit: COMMENT_SCAN_PAGE_SIZE,
198
+ lastId
199
+ });
200
+ let added = 0;
201
+ for (const comment of result.comments) {
202
+ if (!all.has(comment.id)) {
203
+ all.set(comment.id, comment);
204
+ added += 1;
205
+ }
206
+ }
207
+ if (result.comments.length < COMMENT_SCAN_PAGE_SIZE || added === 0) {
208
+ break;
209
+ }
210
+ const numericIds = result.comments
211
+ .map((comment) => Number(comment.id))
212
+ .filter(Number.isSafeInteger);
213
+ if (numericIds.length === 0) {
214
+ break;
215
+ }
216
+ const nextLastId = Math.min(...numericIds);
217
+ if (lastId === nextLastId) {
218
+ break;
219
+ }
220
+ lastId = nextLastId;
221
+ }
222
+ return [...all.values()];
223
+ }
224
+ async function verifyMarker(client, input, marker, fallback) {
225
+ for (let attempt = 0; attempt < 3; attempt += 1) {
226
+ const comments = await readCompactComments(client, input);
227
+ if (comments.some((item) => item.postMessage?.includes(marker))) {
228
+ return comments;
229
+ }
230
+ if (attempt < 2) {
231
+ await new Promise((resolve) => setTimeout(resolve, 250 * (attempt + 1)));
232
+ }
233
+ }
234
+ return fallback;
235
+ }
236
+ function assertExpectedStage(input, actualStageId, context) {
237
+ if (input.expectedCurrentStageId &&
238
+ actualStageId !== input.expectedCurrentStageId &&
239
+ actualStageId !== input.targetStageId) {
240
+ throw new Error(`Task ${input.taskId} is in stage ${actualStageId ?? 'unknown'} ${context}, ` +
241
+ `expected ${input.expectedCurrentStageId} or ${input.targetStageId}`);
242
+ }
243
+ }
244
+ function compareCommentIds(left, right) {
245
+ if (/^\d+$/.test(left) && /^\d+$/.test(right)) {
246
+ const leftNumber = BigInt(left);
247
+ const rightNumber = BigInt(right);
248
+ return leftNumber < rightNumber ? -1 : leftNumber > rightNumber ? 1 : 0;
249
+ }
250
+ return left.localeCompare(right, 'en', { numeric: true });
251
+ }
252
+ function validateInput(input) {
253
+ if (!input.taskId.trim() || !input.runId.trim()) {
254
+ throw new Error('taskId and runId are required');
255
+ }
256
+ if (!/^[a-f0-9]{64}$/i.test(input.evidenceSha256)) {
257
+ throw new Error('evidenceSha256 must contain exactly 64 hexadecimal characters');
258
+ }
259
+ if (!input.targetStageId.trim()) {
260
+ throw new Error('targetStageId is required');
261
+ }
262
+ if (!Array.isArray(input.comments) || input.comments.length > MAX_COMMENTS) {
263
+ throw new Error(`comments must contain at most ${MAX_COMMENTS} entries`);
264
+ }
265
+ for (const [index, comment] of input.comments.entries()) {
266
+ if (!comment.text?.trim()) {
267
+ throw new Error(`comments[${index}].text is required`);
268
+ }
269
+ if (comment.text.length > MAX_COMMENT_CHARS) {
270
+ throw new Error(`comments[${index}].text exceeds ${MAX_COMMENT_CHARS} characters`);
271
+ }
272
+ }
273
+ }
274
+ async function withTaskLock(taskId, action) {
275
+ const previous = taskLocks.get(taskId) ?? Promise.resolve();
276
+ const result = previous.catch(() => undefined).then(action);
277
+ const settled = result.then(() => undefined, () => undefined);
278
+ taskLocks.set(taskId, settled);
279
+ try {
280
+ return await result;
281
+ }
282
+ finally {
283
+ if (taskLocks.get(taskId) === settled) {
284
+ taskLocks.delete(taskId);
285
+ }
286
+ }
287
+ }
288
+ //# sourceMappingURL=compositePublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compositePublisher.js","sourceRoot":"","sources":["../../src/bitrix24/compositePublisher.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -3,10 +3,11 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { CallToolRequestSchema, ListToolsRequestSchema, ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
5
5
  import { allTools, executeToolCall } from './tools/index.js';
6
+ import { formatToolArgumentsForLog } from './utils/toolLogging.js';
6
7
  // Initialize the MCP server
7
8
  const server = new Server({
8
9
  name: 'bitrix24-mcp-server',
9
- version: '1.5.0',
10
+ version: '1.6.2',
10
11
  capabilities: {
11
12
  tools: {}
12
13
  }
@@ -21,7 +22,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
21
22
  // Handle tool execution
22
23
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
23
24
  const { name, arguments: args } = request.params;
24
- console.error(`Executing tool: ${name} with args:`, JSON.stringify(args, null, 2));
25
+ console.error(`Executing tool: ${name} with args: ${formatToolArgumentsForLog(args ?? {})}`);
25
26
  try {
26
27
  const result = await executeToolCall(name, args || {});
27
28
  const content = [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,17 @@
1
1
  import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
2
  export declare const createTaskTool: Tool;
3
3
  export declare const getTaskTool: Tool;
4
+ export declare const getTaskSummaryTool: Tool;
5
+ export declare const getTaskStageTool: Tool;
4
6
  export declare const listTasksTool: Tool;
5
7
  export declare const getLatestTasksTool: Tool;
6
8
  export declare const getTasksFromDateRangeTool: Tool;
7
9
  export declare const getTaskCommentsTool: Tool;
10
+ export declare const getTaskCommentsAfterTool: Tool;
8
11
  export declare const addTaskCommentTool: Tool;
9
12
  export declare const getTaskFilesTool: Tool;
13
+ export declare const getTaskFilesMetadataTool: Tool;
14
+ export declare const publishTaskCompositeTool: Tool;
10
15
  export declare const attachFilesToTaskTool: Tool;
11
16
  export declare const updateTaskTool: Tool;
12
17
  export declare const getTaskStagesTool: Tool;
@@ -29,7 +34,8 @@ export declare const diagnosePermissionsTool: Tool;
29
34
  export declare const getUserTool: Tool;
30
35
  export declare const getAllUsersTool: Tool;
31
36
  export declare const resolveUserNamesTool: Tool;
32
- /** Tools exposed via MCP ListTools (comments are included in bitrix24_get_task). */
37
+ export declare function toolsForProfile(profile?: string | undefined): Tool[];
38
+ /** Tools exposed via MCP ListTools for the configured deployment profile. */
33
39
  export declare const allTools: import("zod").objectOutputType<{
34
40
  name: import("zod").ZodString;
35
41
  description: import("zod").ZodOptional<import("zod").ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AA6B1D,eAAO,MAAM,cAAc,EAAE,IAqD5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,IAwDzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,IA2B3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,IAShC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAYvC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,IA0EjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,IA+BhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IA+B9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,IAqBnC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,IA0B5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAmB/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAmBrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,IAkCjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAetC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IAsBxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,IAgBzC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,IAWzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAUrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,IAiBnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAiBtC,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,IAkB/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,IAU5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAsB9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IA4B/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAarC,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,IAOjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAOrC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,IAUzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,IAO7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAclC,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;6CA8BpB,CAAC;AAEF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAimB3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AA4E1D,eAAO,MAAM,cAAc,EAAE,IAqD5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,IAwDzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,IA0ChC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAkB9B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,IA2B3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,IAShC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAYvC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,IA0EjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IA0DtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,IA2ChC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IA+B9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IA0CtC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IA0EtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,IA8BnC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,IA0B5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAmB/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAmBrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,IA8CjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAetC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IAsBxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,IAgBzC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,IAWzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAUrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,IAiBnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAiBtC,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,IAkB/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,IAU5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAsB9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IA4B/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAarC,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,IAOjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAOrC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,IAUzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,IAO7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAclC,CAAC;AAmDF,wBAAgB,eAAe,CAC7B,OAAO,qBAAoC,GAC1C,IAAI,EAAE,CAWR;AAED,6EAA6E;AAC7E,eAAO,MAAM,QAAQ;;;;;;;;;;;;;6CAAoB,CAAC;AAE1C,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CA+uB3E"}