@web-marketing-hr/azure-devops-mcp 2.3.11 → 2.3.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.
package/README.md CHANGED
@@ -62,8 +62,8 @@ You can set environment variables in `mcp.json`, for example:
62
62
 
63
63
  It's recommended to set `ADO_MCP_AUTH_TOKEN` in your terminal or command line. Windows example:
64
64
 
65
- ```
66
- setx ADO_MCP_AUTH_TOKEN "<pat_token>"
65
+ ```bat
66
+ setx ADO_MCP_AUTH_TOKEN "<pat_token>"`
67
67
  ```
68
68
 
69
69
  ## Upstream README
@@ -147,13 +147,13 @@ In your project, add a `.vscode\mcp.json` file with the following content:
147
147
  "ado": {
148
148
  "type": "stdio",
149
149
  "command": "npx",
150
- "args": ["-y", "@azure-devops/mcp", "${input:ado_org}"]
150
+ "args": ["-y", "@web-marketing-hr/azure-devops-mcp", "${input:ado_org}"]
151
151
  }
152
152
  }
153
153
  }
154
154
  ```
155
155
 
156
- 🔥 To stay up to date with the latest features, you can use our nightly builds. Simply update your `mcp.json` configuration to use `@azure-devops/mcp@next`. Here is an updated example:
156
+ 🔥 To stay up to date with the latest features, you can use our nightly builds. Simply update your `mcp.json` configuration to use `@web-marketing-hr/azure-devops-mcp@next`. Here is an updated example:
157
157
 
158
158
  ```json
159
159
  {
@@ -168,7 +168,7 @@ In your project, add a `.vscode\mcp.json` file with the following content:
168
168
  "ado": {
169
169
  "type": "stdio",
170
170
  "command": "npx",
171
- "args": ["-y", "@azure-devops/mcp@next", "${input:ado_org}"]
171
+ "args": ["-y", "@web-marketing-hr/azure-devops-mcp@next", "${input:ado_org}"]
172
172
  }
173
173
  }
174
174
  }
@@ -210,7 +210,7 @@ For example, use `"-d", "core", "work", "work-items"` to load only Work Item rel
210
210
  "ado_with_filtered_domains": {
211
211
  "type": "stdio",
212
212
  "command": "npx",
213
- "args": ["-y", "@azure-devops/mcp", "${input:ado_org}", "-d", "core", "work", "work-items"]
213
+ "args": ["-y", "@web-marketing-hr/azure-devops-mcp", "${input:ado_org}", "-d", "core", "work", "work-items"]
214
214
  }
215
215
  }
216
216
  }
@@ -0,0 +1,730 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ import { z } from "zod";
4
+ import { logger } from "../logger.js";
5
+ // ─── Tool names ──────────────────────────────────────────────────────────────
6
+ export const ARCHITECTURE_SCAN = "project_architecture_scan";
7
+ export const ARCHITECTURE_READ_FILE = "project_architecture_read_file";
8
+ // ─── Layer heuristics ─────────────────────────────────────────────────────────
9
+ const LAYER_PATTERNS = [
10
+ [/controller/i, "Prezentacijski sloj"],
11
+ [/usercontrol/i, "Prezentacijski sloj"],
12
+ [/pagepart/i, "Prezentacijski sloj"],
13
+ [/usercontrol/i, "Prezentacijski sloj"],
14
+ [/handler/i, "Integracijski sloj"],
15
+ [/api/i, "Integracijski sloj"],
16
+ [/apiextend/i, "Integracijski sloj"],
17
+ [/cubisadapt/i, "Integracijski sloj"],
18
+ [/wienerclient/i, "Integracijski sloj"],
19
+ [/wingclient/i, "Integracijski sloj"],
20
+ [/service/i, "Poslovni sloj"],
21
+ [/engine/i, "Poslovni sloj"],
22
+ [/manager/i, "Poslovni sloj"],
23
+ [/worker/i, "Poslovni sloj"],
24
+ [/scraper/i, "Poslovni sloj"],
25
+ [/ticketing/i, "Poslovni sloj"],
26
+ [/chatbot/i, "Poslovni sloj"],
27
+ [/repository/i, "Sloj podataka"],
28
+ [/data/i, "Sloj podataka"],
29
+ [/context/i, "Sloj podataka"],
30
+ [/migration/i, "Sloj podataka"],
31
+ [/cache/i, "Sloj podataka"],
32
+ [/model/i, "Modeli i entiteti"],
33
+ [/entity/i, "Modeli i entiteti"],
34
+ [/dto/i, "Modeli i entiteti"],
35
+ [/domain/i, "Modeli i entiteti"],
36
+ [/intranet/i, "Modeli i entiteti"],
37
+ [/test/i, "Testovi"],
38
+ [/spec/i, "Testovi"],
39
+ [/uitest/i, "UI Testovi"],
40
+ [/unittest/i, "Unit Testovi"],
41
+ [/util/i, "Pomoćni alati"],
42
+ [/helper/i, "Pomoćni alati"],
43
+ [/extension/i, "Pomoćni alati"],
44
+ [/extender/i, "Pomoćni alati"],
45
+ [/config/i, "Konfiguracija"],
46
+ [/setting/i, "Konfiguracija"],
47
+ [/shared/i, "Dijeljene komponente"],
48
+ [/common/i, "Dijeljene komponente"],
49
+ [/infrastructure/i, "Infrastruktura"],
50
+ [/sso/i, "Infrastruktura"],
51
+ [/auth/i, "Infrastruktura"],
52
+ ];
53
+ function inferLayer(name) {
54
+ for (const [pattern, layer] of LAYER_PATTERNS) {
55
+ if (pattern.test(name))
56
+ return layer;
57
+ }
58
+ return "Nesvrstano";
59
+ }
60
+ // ─── Skip logic ───────────────────────────────────────────────────────────────
61
+ // Directories to always skip regardless of depth
62
+ const ALWAYS_SKIP = new Set([
63
+ ".git",
64
+ ".vs",
65
+ ".github",
66
+ "node_modules",
67
+ "TestResults",
68
+ "EasyEditCmsSync", // tool project inside EasyEdit
69
+ ]);
70
+ // Directories to skip only at shallow depth (root or one level deep)
71
+ const SHALLOW_SKIP = new Set(["bin", "obj", "packages"]);
72
+ function shouldSkipDir(name, depth) {
73
+ if (name.startsWith("."))
74
+ return true;
75
+ if (ALWAYS_SKIP.has(name))
76
+ return true;
77
+ // bin/obj/packages at depth 0 (root) and depth 1 (e.g. Common/bin)
78
+ // but NOT at depth 2+ (e.g. UiTest/bin/Debug has useful chromedriver info)
79
+ if (SHALLOW_SKIP.has(name) && depth <= 1)
80
+ return true;
81
+ return false;
82
+ }
83
+ // ─── Filesystem walker ────────────────────────────────────────────────────────
84
+ function walkDirectory(dirPath, rootPath, depth, maxDepth) {
85
+ const name = path.basename(dirPath);
86
+ const node = {
87
+ name,
88
+ relativePath: path.relative(rootPath, dirPath) || ".",
89
+ inferredLayer: inferLayer(name),
90
+ fileCount: 0,
91
+ filesByExtension: {},
92
+ children: [],
93
+ };
94
+ let entries;
95
+ try {
96
+ entries = fs.readdirSync(dirPath, { withFileTypes: true });
97
+ }
98
+ catch {
99
+ return node;
100
+ }
101
+ for (const entry of entries) {
102
+ if (entry.name.startsWith("."))
103
+ continue;
104
+ const fullPath = path.join(dirPath, entry.name);
105
+ if (entry.isDirectory()) {
106
+ if (shouldSkipDir(entry.name, depth))
107
+ continue;
108
+ if (depth < maxDepth) {
109
+ const child = walkDirectory(fullPath, rootPath, depth + 1, maxDepth);
110
+ node.fileCount += child.fileCount;
111
+ for (const [ext, count] of Object.entries(child.filesByExtension)) {
112
+ node.filesByExtension[ext] = (node.filesByExtension[ext] ?? 0) + count;
113
+ }
114
+ node.children.push(child);
115
+ }
116
+ }
117
+ else {
118
+ const ext = path.extname(entry.name) || "(bez ekstenzije)";
119
+ node.filesByExtension[ext] = (node.filesByExtension[ext] ?? 0) + 1;
120
+ node.fileCount++;
121
+ }
122
+ }
123
+ return node;
124
+ }
125
+ // ─── File finder ──────────────────────────────────────────────────────────────
126
+ function findFiles(dir, predicate, skipDirFn, depth = 0) {
127
+ const results = [];
128
+ let entries;
129
+ try {
130
+ entries = fs.readdirSync(dir, { withFileTypes: true });
131
+ }
132
+ catch {
133
+ return results;
134
+ }
135
+ for (const entry of entries) {
136
+ if (entry.name.startsWith("."))
137
+ continue;
138
+ const fullPath = path.join(dir, entry.name);
139
+ if (entry.isDirectory()) {
140
+ const skip = skipDirFn ? skipDirFn(entry.name, depth) : shouldSkipDir(entry.name, depth);
141
+ if (!skip) {
142
+ results.push(...findFiles(fullPath, predicate, skipDirFn, depth + 1));
143
+ }
144
+ }
145
+ else if (predicate(entry.name)) {
146
+ results.push(fullPath);
147
+ }
148
+ }
149
+ return results;
150
+ }
151
+ // ─── Project type detector ────────────────────────────────────────────────────
152
+ function detectProjectType(rootPath) {
153
+ const hasSrc = fs.existsSync(path.join(rootPath, "src"));
154
+ const hasServices = fs.existsSync(path.join(rootPath, "src", "Services.Interfaces"));
155
+ if (hasSrc && hasServices)
156
+ return "WEM EasyEditCms Framework";
157
+ const hasEasyEdit = fs.existsSync(path.join(rootPath, "EasyEdit"));
158
+ const hasUserControls = fs.existsSync(path.join(rootPath, "UserControls"));
159
+ if (hasEasyEdit && hasUserControls)
160
+ return "WEM EasyEditCms Site";
161
+ return "Unknown";
162
+ }
163
+ // ─── Key files map ────────────────────────────────────────────────────────────
164
+ function buildKeyFiles(rootPath) {
165
+ const candidates = {
166
+ "Global.asax startup": "Global.asax.cs",
167
+ "DI registracija servisa": "ServicesRegistration.cs",
168
+ "Web konfiguracija": "Web.config",
169
+ "NuGet paketi (root)": "packages.config",
170
+ "NuGet paketi (Common)": path.join("Common", "packages.config"),
171
+ "Common csproj": (() => {
172
+ try {
173
+ const found = fs.readdirSync(path.join(rootPath, "Common")).find((f) => f.endsWith(".csproj"));
174
+ return found ? `Common${path.sep}${found}` : "";
175
+ }
176
+ catch {
177
+ return "";
178
+ }
179
+ })(),
180
+ };
181
+ const result = {};
182
+ for (const [label, rel] of Object.entries(candidates)) {
183
+ if (rel && fs.existsSync(path.join(rootPath, rel))) {
184
+ result[label] = rel;
185
+ }
186
+ }
187
+ // UiTest XML docs
188
+ const uiTestXml = findFiles(rootPath, (n) => n === "WEM.EasyEditCms.Common.UiTest.xml", (name, depth) => shouldSkipDir(name, depth));
189
+ if (uiTestXml.length > 0) {
190
+ result["UiTest BaseUiTest XML dokumentacija"] = path.relative(rootPath, uiTestXml[0]);
191
+ }
192
+ return result;
193
+ }
194
+ // ─── .csproj parser ───────────────────────────────────────────────────────────
195
+ function parseCsproj(filePath, rootPath) {
196
+ let content = "";
197
+ try {
198
+ content = fs.readFileSync(filePath, "utf-8");
199
+ }
200
+ catch { }
201
+ const projectRefs = [...content.matchAll(/<ProjectReference\s+Include="([^"]+)"/g)].map((m) => path.basename(m[1], ".csproj"));
202
+ const packageRefs = [...content.matchAll(/<PackageReference\s+Include="([^"]+)"[^>]*(?:Version="([^"]*)")?/g)].map((m) => ({ name: m[1], version: m[2] ?? "" }));
203
+ return {
204
+ name: path.basename(filePath, ".csproj"),
205
+ relativePath: path.relative(rootPath, filePath),
206
+ targetFramework: content.match(/<TargetFramework[^>]*>([^<]+)<\/TargetFramework>/)?.[1] ?? null,
207
+ outputType: content.match(/<OutputType[^>]*>([^<]+)<\/OutputType>/)?.[1] ?? null,
208
+ projectReferences: projectRefs,
209
+ packageReferences: packageRefs,
210
+ };
211
+ }
212
+ // ─── packages.config parser ───────────────────────────────────────────────────
213
+ function parseAllPackagesConfigs(rootPath) {
214
+ const locations = [
215
+ { file: path.join(rootPath, "packages.config"), source: "root" },
216
+ { file: path.join(rootPath, "Common", "packages.config"), source: "Common" },
217
+ { file: path.join(rootPath, "UnitTest", "packages.config"), source: "UnitTest" },
218
+ ];
219
+ const packages = [];
220
+ for (const { file, source } of locations) {
221
+ try {
222
+ const content = fs.readFileSync(file, "utf-8");
223
+ for (const m of content.matchAll(/<package\s+id="([^"]+)"\s+version="([^"]+)"/g)) {
224
+ packages.push({ id: m[1], version: m[2], source });
225
+ }
226
+ }
227
+ catch { }
228
+ }
229
+ return packages;
230
+ }
231
+ // ─── WEM framework dependency detector ───────────────────────────────────────
232
+ function detectWemFrameworkDeps(rootPath) {
233
+ const sources = [
234
+ { dir: path.join(rootPath, "bin"), source: "root-bin" },
235
+ { dir: path.join(rootPath, "Common", "bin"), source: "common-bin" },
236
+ { dir: path.join(rootPath, "EasyEdit", "bin"), source: "easiedit-bin" },
237
+ ];
238
+ const deps = [];
239
+ for (const { dir, source } of sources) {
240
+ try {
241
+ const dlls = fs.readdirSync(dir).filter((f) => f.endsWith(".dll") && f.startsWith("WEM."));
242
+ for (const dll of dlls) {
243
+ deps.push({ dllName: dll.replace(".dll", ""), source });
244
+ }
245
+ }
246
+ catch { }
247
+ }
248
+ return deps;
249
+ }
250
+ // ─── .cs parser ───────────────────────────────────────────────────────────────
251
+ function parseParameters(raw) {
252
+ if (!raw.trim())
253
+ return [];
254
+ return raw
255
+ .split(",")
256
+ .map((p) => {
257
+ const clean = p.trim().replace(/\s*=\s*[^,]+$/, ""); // strip default values
258
+ const parts = clean.trim().split(/\s+/);
259
+ const name = parts[parts.length - 1]?.replace(/^[@]/, "") ?? "";
260
+ const type = parts.slice(0, -1).join(" ") || "unknown";
261
+ return { name, type };
262
+ })
263
+ .filter((p) => p.name && !["", ")", "("].includes(p.name));
264
+ }
265
+ function parseCsFile(filePath, rootPath) {
266
+ let content = "";
267
+ try {
268
+ content = fs.readFileSync(filePath, "utf-8");
269
+ }
270
+ catch {
271
+ return null;
272
+ }
273
+ // Strip comments
274
+ const stripped = content.replace(/\/\/[^\n]*/g, " ").replace(/\/\*[\s\S]*?\*\//g, " ");
275
+ // Namespace
276
+ const namespace = stripped.match(/namespace\s+([\w.]+)/)?.[1] ?? "(nepoznat)";
277
+ // Type declaration
278
+ const kindMatch = stripped.match(/\b(public|internal|private|protected)?\s*((?:abstract|sealed|static|partial)\s+)*(class|interface|enum|record|struct)\s+(\w+)/);
279
+ if (!kindMatch)
280
+ return null;
281
+ const accessModifier = kindMatch[1] ?? "internal";
282
+ const modifiers = (kindMatch[2] ?? "").toLowerCase();
283
+ const kind = kindMatch[3];
284
+ const name = kindMatch[4];
285
+ // Base types
286
+ const declLine = stripped.match(new RegExp(`(?:${kind})\\s+${name}\\s*(?:<[^>]*>)?\\s*([^{]*)`))?.[1] ?? "";
287
+ const colonPart = declLine.match(/:\s*([^{where]+)/)?.[1] ?? "";
288
+ const allBaseTypes = colonPart
289
+ .split(",")
290
+ .map((s) => s
291
+ .trim()
292
+ .replace(/\s*where\s.*/s, "")
293
+ .trim())
294
+ .filter(Boolean);
295
+ const interfaces = allBaseTypes.filter((t) => /^I[A-Z]/.test(t));
296
+ const baseTypes = allBaseTypes.filter((t) => !interfaces.includes(t));
297
+ // Class attributes (last 3 before the declaration)
298
+ const declIdx = stripped.indexOf(kindMatch[0]);
299
+ const beforeDecl = stripped.substring(Math.max(0, declIdx - 500), declIdx);
300
+ const classAttributes = [...beforeDecl.matchAll(/\[([^\]]+)\]/g)].slice(-3).map((m) => m[1].trim());
301
+ // Enum values
302
+ const enumValues = [];
303
+ if (kind === "enum") {
304
+ const bodyMatch = stripped.match(/enum\s+\w+[^{]*\{([^}]*)\}/s);
305
+ if (bodyMatch) {
306
+ enumValues.push(...bodyMatch[1]
307
+ .split(",")
308
+ .map((v) => v.trim().split(/[\s=]/)[0].trim())
309
+ .filter(Boolean));
310
+ }
311
+ }
312
+ // Constructors
313
+ const constructors = [];
314
+ const ctorRegex = new RegExp(`(public|private|protected|internal)\\s+${name}\\s*\\(([^)]*)\\)\\s*(?::\\s*(base|this)\\s*\\(([^)]*)\\))?`, "g");
315
+ let ctorMatch;
316
+ while ((ctorMatch = ctorRegex.exec(stripped)) !== null) {
317
+ constructors.push({
318
+ accessModifier: ctorMatch[1],
319
+ parameters: parseParameters(ctorMatch[2]),
320
+ callsBase: ctorMatch[3] === "base",
321
+ baseArguments: ctorMatch[4] ?? "",
322
+ });
323
+ }
324
+ // Properties
325
+ const properties = [];
326
+ const propRegex = /(\[[^\]]+\]\s*)*\s*(public|private|protected|internal|protected\s+internal|private\s+protected)\s+((?:static|virtual|override|abstract|new|readonly)\s+)*([\w<>\[\]?,\s]+?)\s+(\w+)\s*\{([^}]*)\}/g;
327
+ let propMatch;
328
+ while ((propMatch = propRegex.exec(stripped)) !== null) {
329
+ const propName = propMatch[5];
330
+ if (["get", "set", "add", "remove", "value", "if", "else", "return"].includes(propName))
331
+ continue;
332
+ const body = propMatch[6];
333
+ const attrBlock = propMatch[1] ?? "";
334
+ const attrs = [...attrBlock.matchAll(/\[([^\]]+)\]/g)].map((m) => m[1].trim());
335
+ properties.push({
336
+ name: propName,
337
+ type: propMatch[4].trim(),
338
+ accessModifier: propMatch[2],
339
+ hasGetter: body.includes("get"),
340
+ hasSetter: body.includes("set"),
341
+ isComputed: body.includes("return") || body.includes("=>"),
342
+ attributes: attrs,
343
+ });
344
+ }
345
+ // Fields
346
+ const fields = [];
347
+ const fieldRegex = /^\s*(public|private|protected|internal|protected\s+internal)\s+(static\s+|readonly\s+|const\s+|static\s+readonly\s+)*([\w<>\[\]?,\s]+?)\s+(_?\w+)\s*(?:=|;)/gm;
348
+ let fieldMatch;
349
+ while ((fieldMatch = fieldRegex.exec(stripped)) !== null) {
350
+ const fieldName = fieldMatch[4];
351
+ if (fieldName === name)
352
+ continue;
353
+ fields.push({
354
+ modifier: (fieldMatch[1] + " " + (fieldMatch[2] ?? "")).trim(),
355
+ type: fieldMatch[3].trim(),
356
+ name: fieldName,
357
+ });
358
+ }
359
+ // Methods
360
+ const methods = [];
361
+ const SKIP_KEYWORDS = new Set(["get", "set", "add", "remove", name, "if", "while", "for", "foreach", "switch", "catch", "using", "return", "new"]);
362
+ const methodRegex = /(\[[^\]]+\]\s*)*\s*(public|private|protected|internal|protected\s+internal)\s+((?:static|virtual|override|abstract|async|sealed|new)\s+)*([\w<>\[\]?,\s]+?)\s+(\w+)\s*\(([^)]*)\)\s*(?:where[^{;]*)?\s*[{;]/g;
363
+ let methodMatch;
364
+ while ((methodMatch = methodRegex.exec(stripped)) !== null) {
365
+ const methodName = methodMatch[5];
366
+ if (SKIP_KEYWORDS.has(methodName))
367
+ continue;
368
+ const modStr = (methodMatch[3] ?? "").toLowerCase();
369
+ const attrBlock = methodMatch[1] ?? "";
370
+ const attrs = [...attrBlock.matchAll(/\[([^\]]+)\]/g)].map((m) => m[1].trim());
371
+ methods.push({
372
+ name: methodName,
373
+ returnType: methodMatch[4].trim(),
374
+ accessModifier: methodMatch[2],
375
+ isStatic: modStr.includes("static"),
376
+ isAsync: modStr.includes("async"),
377
+ isOverride: modStr.includes("override"),
378
+ parameters: parseParameters(methodMatch[6]),
379
+ attributes: attrs,
380
+ });
381
+ }
382
+ return {
383
+ name,
384
+ namespace,
385
+ relativePath: path.relative(rootPath, filePath),
386
+ kind,
387
+ accessModifier,
388
+ isStatic: modifiers.includes("static"),
389
+ isAbstract: modifiers.includes("abstract"),
390
+ isSealed: modifiers.includes("sealed"),
391
+ isPartial: modifiers.includes("partial"),
392
+ baseTypes,
393
+ interfaces,
394
+ classAttributes,
395
+ constructors,
396
+ fields,
397
+ properties,
398
+ methods,
399
+ enumValues,
400
+ };
401
+ }
402
+ // ─── .ashx parser ─────────────────────────────────────────────────────────────
403
+ function parseAshxFile(filePath, rootPath) {
404
+ const name = path.basename(filePath, ".ashx");
405
+ const codeBehindPath = filePath + ".cs";
406
+ let className = null;
407
+ const interfaces = [];
408
+ let hasSessionState = false;
409
+ try {
410
+ const content = fs.readFileSync(codeBehindPath, "utf-8");
411
+ className = content.match(/class\s+(\w+)/)?.[1] ?? null;
412
+ hasSessionState = content.includes("IRequiresSessionState");
413
+ const implMatch = content.match(/class\s+\w+\s*:\s*([^{]+)/);
414
+ if (implMatch) {
415
+ interfaces.push(...implMatch[1]
416
+ .split(",")
417
+ .map((s) => s.trim())
418
+ .filter(Boolean));
419
+ }
420
+ }
421
+ catch { }
422
+ return {
423
+ name,
424
+ relativePath: path.relative(rootPath, filePath),
425
+ className,
426
+ interfaces,
427
+ hasSessionState,
428
+ };
429
+ }
430
+ // ─── ASPX / ASCX parsers ──────────────────────────────────────────────────────
431
+ function parseAspxFiles(files, rootPath) {
432
+ return files.map((f) => {
433
+ const codeBehind = f + ".cs";
434
+ return {
435
+ name: path.basename(f, ".aspx"),
436
+ relativePath: path.relative(rootPath, f),
437
+ codeBehindRelativePath: fs.existsSync(codeBehind) ? path.relative(rootPath, codeBehind) : null,
438
+ hasCodeBehind: fs.existsSync(codeBehind),
439
+ };
440
+ });
441
+ }
442
+ function parseAscxFiles(files, rootPath) {
443
+ return files.map((f) => {
444
+ const codeBehind = f + ".cs";
445
+ return {
446
+ name: path.basename(f, ".ascx"),
447
+ relativePath: path.relative(rootPath, f),
448
+ codeBehindRelativePath: fs.existsSync(codeBehind) ? path.relative(rootPath, codeBehind) : null,
449
+ };
450
+ });
451
+ }
452
+ // ─── Web.config parser ────────────────────────────────────────────────────────
453
+ function parseWebConfig(rootPath) {
454
+ const configPath = path.join(rootPath, "Web.config");
455
+ let content = "";
456
+ try {
457
+ content = fs.readFileSync(configPath, "utf-8");
458
+ }
459
+ catch {
460
+ return [];
461
+ }
462
+ const keys = [];
463
+ for (const m of content.matchAll(/<add\s+key="([^"]+)"\s+value="([^"]*)"/g)) {
464
+ keys.push({
465
+ key: m[1],
466
+ hasValue: m[2].length > 0,
467
+ isCrypted: m[1].toLowerCase().includes("crypt"),
468
+ isConnectionString: false,
469
+ });
470
+ }
471
+ for (const m of content.matchAll(/<add\s+name="([^"]+)"\s+connectionString="([^"]*)"/g)) {
472
+ keys.push({
473
+ key: m[1],
474
+ hasValue: m[2].length > 0,
475
+ isCrypted: false,
476
+ isConnectionString: true,
477
+ });
478
+ }
479
+ return keys;
480
+ }
481
+ // ─── UiTest BaseUiTest API docs ───────────────────────────────────────────────
482
+ function parseUiTestApiDocs(rootPath) {
483
+ const candidates = findFiles(rootPath, (n) => n === "WEM.EasyEditCms.Common.UiTest.xml", (name, depth) => shouldSkipDir(name, depth));
484
+ const methods = [];
485
+ for (const xmlPath of candidates) {
486
+ try {
487
+ const content = fs.readFileSync(xmlPath, "utf-8");
488
+ for (const m of content.matchAll(/<member name="M:([^"]+)">/g)) {
489
+ methods.push(m[1]);
490
+ }
491
+ }
492
+ catch { }
493
+ }
494
+ return methods;
495
+ }
496
+ // ─── Pattern detector ─────────────────────────────────────────────────────────
497
+ function detectPatterns(classes, rootPath) {
498
+ const patterns = [];
499
+ if (classes.some((c) => c.name.endsWith("Controller") || c.baseTypes.some((b) => b.includes("Controller"))))
500
+ patterns.push("MVC / Web Forms Controllers");
501
+ if (classes.some((c) => c.interfaces.some((i) => i.includes("IRequestHandler")) || c.name.endsWith("Handler")))
502
+ patterns.push("HTTP Handler Pattern (ASHX)");
503
+ if (classes.some((c) => c.name.endsWith("Repository") || c.interfaces.some((i) => i.includes("IRepository"))))
504
+ patterns.push("Repository Pattern");
505
+ if (classes.some((c) => c.name.endsWith("Service")))
506
+ patterns.push("Service Layer Pattern");
507
+ if (classes.some((c) => c.name.endsWith("Engine")))
508
+ patterns.push("Engine Pattern");
509
+ if (classes.some((c) => c.name.endsWith("Worker")))
510
+ patterns.push("Worker Pattern");
511
+ if (classes.some((c) => c.name.endsWith("Factory") || c.interfaces.some((i) => i.includes("IFactory"))))
512
+ patterns.push("Factory Pattern");
513
+ if (classes.some((c) => c.classAttributes.some((a) => a.includes("Serializable"))))
514
+ patterns.push("File System Serialization (Cart/Session)");
515
+ if (classes.some((c) => c.interfaces.some((i) => i === "IScraper") || c.name.includes("Scraper")))
516
+ patterns.push("Web Scraper Pattern");
517
+ if (classes.some((c) => c.baseTypes.some((b) => b.includes("CatalogItem")) || c.name.includes("CatalogItemCustom")))
518
+ patterns.push("WEM CatalogItem nasljeđivanje");
519
+ if (classes.some((c) => c.baseTypes.some((b) => b.includes("IntranetUser")) || c.name.includes("IntranetUserCustom")))
520
+ patterns.push("WEM IntranetUser nasljeđivanje");
521
+ if (classes.some((c) => c.baseTypes.some((b) => b.includes("ItemBase"))))
522
+ patterns.push("WEM ItemBase nasljeđivanje");
523
+ if (findFiles(rootPath, (n) => n.endsWith(".razor"), (name, depth) => shouldSkipDir(name, depth)).length > 0)
524
+ patterns.push("Blazor / Razor Components");
525
+ if (fs.existsSync(path.join(rootPath, "Dockerfile")))
526
+ patterns.push("Docker kontejnerizacija");
527
+ return patterns;
528
+ }
529
+ // ─── Main scan handler ────────────────────────────────────────────────────────
530
+ async function handleScan(params) {
531
+ const { rootPath, maxDepth = 5 } = params;
532
+ if (!fs.existsSync(rootPath)) {
533
+ return JSON.stringify({ error: `Putanja ne postoji: ${rootPath}` });
534
+ }
535
+ logger.debug("Pokretanje skeniranja arhitekture", { rootPath, maxDepth });
536
+ // Project type
537
+ const projectType = detectProjectType(rootPath);
538
+ // Folder tree
539
+ const tree = walkDirectory(rootPath, rootPath, 0, maxDepth);
540
+ // .csproj projects
541
+ const csprojFiles = findFiles(rootPath, (n) => n.endsWith(".csproj"), (name, depth) => shouldSkipDir(name, depth));
542
+ const projects = csprojFiles.map((f) => parseCsproj(f, rootPath));
543
+ // NuGet packages (from packages.config files, not NuGet folder)
544
+ const nugetPackages = parseAllPackagesConfigs(rootPath);
545
+ // WEM framework dependencies
546
+ const wemFrameworkDependencies = detectWemFrameworkDeps(rootPath);
547
+ // C# classes — skip Designer files and generated files
548
+ const csFiles = findFiles(rootPath, (n) => n.endsWith(".cs") && !n.endsWith(".Designer.cs") && !n.endsWith(".designer.cs"), (name, depth) => shouldSkipDir(name, depth));
549
+ const classes = csFiles.map((f) => parseCsFile(f, rootPath)).filter((c) => c !== null);
550
+ // HTTP Handlers
551
+ const ashxFiles = findFiles(rootPath, (n) => n.endsWith(".ashx"), (name, depth) => shouldSkipDir(name, depth));
552
+ const httpHandlers = ashxFiles.map((f) => parseAshxFile(f, rootPath));
553
+ // ASPX pages (root level + UserControls, not EasyEdit backend)
554
+ const aspxFiles = findFiles(rootPath, (n) => n.endsWith(".aspx"), (name, depth) => {
555
+ if (name === "EasyEdit" && depth === 0)
556
+ return true; // skip EasyEdit backend aspx
557
+ return shouldSkipDir(name, depth);
558
+ });
559
+ const aspxPages = parseAspxFiles(aspxFiles, rootPath);
560
+ // ASCX controls
561
+ const ascxFiles = findFiles(rootPath, (n) => n.endsWith(".ascx"), (name, depth) => {
562
+ if (name === "EasyEdit" && depth === 0)
563
+ return true;
564
+ return shouldSkipDir(name, depth);
565
+ });
566
+ const ascxControls = parseAscxFiles(ascxFiles, rootPath);
567
+ // Web.config
568
+ const webConfigKeys = parseWebConfig(rootPath);
569
+ // EasyEdit/XML definitions
570
+ const xmlDefPath = path.join(rootPath, "EasyEdit", "XML");
571
+ let xmlDefinitionFiles = [];
572
+ if (fs.existsSync(xmlDefPath)) {
573
+ try {
574
+ xmlDefinitionFiles = fs
575
+ .readdirSync(xmlDefPath)
576
+ .filter((f) => f.endsWith(".xml") || f.endsWith(".json"))
577
+ .sort();
578
+ }
579
+ catch { }
580
+ }
581
+ // UiTest BaseUiTest API docs
582
+ const uiTestBaseApiMethods = parseUiTestApiDocs(rootPath);
583
+ // Detected patterns
584
+ const detectedPatterns = detectPatterns(classes, rootPath);
585
+ // Key files
586
+ const keyFiles = buildKeyFiles(rootPath);
587
+ // Summary
588
+ const hasDocker = fs.existsSync(path.join(rootPath, "Dockerfile"));
589
+ const hasBlazor = findFiles(rootPath, (n) => n.endsWith(".razor"), (name, depth) => shouldSkipDir(name, depth)).length > 0;
590
+ const hasUiTests = fs.existsSync(path.join(rootPath, "UiTest"));
591
+ const hasUnitTests = fs.existsSync(path.join(rootPath, "UnitTest"));
592
+ const hasScraper = classes.some((c) => c.name.includes("Scraper") || c.interfaces.some((i) => i === "IScraper"));
593
+ const configFiles = ["Web.config", "Web.Debug.config", "Web.Release.config", "Web.Sandbox.config", "Web.AutomatedTesting.config", "app.config", "appsettings.json", "packages.config"].filter((f) => fs.existsSync(path.join(rootPath, f)));
594
+ const result = {
595
+ scannedAt: new Date().toISOString(),
596
+ rootPath,
597
+ repoName: path.basename(rootPath),
598
+ projectType,
599
+ summary: {
600
+ totalFiles: tree.fileCount,
601
+ csFiles: csFiles.length,
602
+ csprojFiles: csprojFiles.length,
603
+ ashxFiles: ashxFiles.length,
604
+ aspxFiles: aspxFiles.length,
605
+ ascxFiles: ascxFiles.length,
606
+ xmlDefinitions: xmlDefinitionFiles.length,
607
+ configFiles,
608
+ hasDocker,
609
+ hasBlazor,
610
+ hasUiTests,
611
+ hasUnitTests,
612
+ hasScraper,
613
+ },
614
+ folderTree: tree,
615
+ projects,
616
+ nugetPackages,
617
+ wemFrameworkDependencies,
618
+ classes,
619
+ httpHandlers,
620
+ aspxPages,
621
+ ascxControls,
622
+ webConfigKeys,
623
+ xmlDefinitionFiles,
624
+ uiTestBaseApiMethods,
625
+ detectedPatterns,
626
+ keyFiles,
627
+ };
628
+ logger.debug("Skeniranje završeno", {
629
+ projectType,
630
+ classes: classes.length,
631
+ projects: projects.length,
632
+ handlers: httpHandlers.length,
633
+ nuget: nugetPackages.length,
634
+ });
635
+ return JSON.stringify(result, null, 2);
636
+ }
637
+ // ─── Read file handler ────────────────────────────────────────────────────────
638
+ async function handleReadFile(params) {
639
+ const { rootPath, relativePath, maxLines = 500 } = params;
640
+ const fullPath = path.join(rootPath, relativePath);
641
+ const resolvedRoot = path.resolve(rootPath);
642
+ const resolvedFile = path.resolve(fullPath);
643
+ if (!resolvedFile.startsWith(resolvedRoot)) {
644
+ return JSON.stringify({ error: "Nije dopušten pristup izvan korijenskog direktorija." });
645
+ }
646
+ if (!fs.existsSync(fullPath)) {
647
+ return JSON.stringify({ error: `Datoteka ne postoji: ${relativePath}` });
648
+ }
649
+ const stat = fs.statSync(fullPath);
650
+ if (stat.isDirectory()) {
651
+ return JSON.stringify({ error: `Putanja je direktorij: ${relativePath}` });
652
+ }
653
+ try {
654
+ const content = fs.readFileSync(fullPath, "utf-8");
655
+ const lines = content.split("\n");
656
+ const truncated = lines.length > maxLines;
657
+ return JSON.stringify({
658
+ relativePath,
659
+ totalLines: lines.length,
660
+ truncated,
661
+ truncatedAt: truncated ? maxLines : null,
662
+ content: truncated ? lines.slice(0, maxLines).join("\n") : content,
663
+ });
664
+ }
665
+ catch (e) {
666
+ return JSON.stringify({ error: `Greška pri čitanju: ${e.message}` });
667
+ }
668
+ }
669
+ // ─── Schemas ──────────────────────────────────────────────────────────────────
670
+ const ScanSchema = z.object({
671
+ rootPath: z.string().describe("Apsolutna putanja do korijenskog direktorija repozitorija (npr. C:/dev/WEM.EasyEditCms.Sites.Default)"),
672
+ maxDepth: z.number().default(5).optional().describe("Maksimalna dubina rekurzivnog prolaska kroz direktorije (default: 5)"),
673
+ });
674
+ const ReadFileSchema = z.object({
675
+ rootPath: z.string().describe("Apsolutna putanja do korijenskog direktorija (ista kao pri skeniranju)"),
676
+ relativePath: z
677
+ .string()
678
+ .describe("Relativna putanja do datoteke unutar repozitorija. " +
679
+ "Primjeri: 'Common/Classes/CatalogItemCustom.cs', 'Web.config', " +
680
+ "'Global.asax.cs', 'ServicesRegistration.cs', " +
681
+ "'EasyEdit/XML/CatalogPage.xml', 'Handlers/CartHandler.ashx.cs'"),
682
+ maxLines: z
683
+ .number()
684
+ .default(500)
685
+ .optional()
686
+ .describe("Maksimalni broj linija za čitanje (default: 500). " + "Povećaj na 1000+ za velike datoteke poput CatalogItemCustom.cs."),
687
+ });
688
+ // ─── Registration ─────────────────────────────────────────────────────────────
689
+ export function configureArchitectureTools(server) {
690
+ server.tool(ARCHITECTURE_SCAN, [
691
+ "Skenira arhitekturu WEM EasyEditCms repozitorija i vraća strukturirani JSON koji sadrži:",
692
+ "",
693
+ "• Tip projekta (WEM EasyEditCms Site / Framework)",
694
+ "• Kompletnu strukturu direktorija s inferiranim slojevima na hrvatskom",
695
+ "• Sve .csproj projekte s ovisnostima",
696
+ "• NuGet pakete iz packages.config (ne iz NuGet foldera)",
697
+ "• WEM framework DLL ovisnosti iz bin/ direktorija",
698
+ "• Sve C# klase, sučelja, enume s potpisima metoda i svojstava",
699
+ "• HTTP handlere (.ashx) s implementiranim sučeljima",
700
+ "• ASPX stranice i ASCX user controle (bez EasyEdit backenda)",
701
+ "• Web.config ključeve (bez vrijednosti)",
702
+ "• XML definicije tipova stranica iz EasyEdit/XML/",
703
+ "• API metode BaseUiTest klase (iz XML dokumentacije)",
704
+ "• Detektirane arhitekturalne obrasce",
705
+ "• Ključne datoteke s relativnim putanjama za brzo čitanje",
706
+ "",
707
+ "NAPOMENA: Tool NE čita tijela metoda. Za logiku, DI registracije, Web.config",
708
+ "vrijednosti i startup sekvencu pozovi project_architecture_read_file.",
709
+ ].join("\n"), ScanSchema.shape, async (params) => ({
710
+ content: [{ type: "text", text: await handleScan(params) }],
711
+ }));
712
+ server.tool(ARCHITECTURE_READ_FILE, [
713
+ "Čita sadržaj jedne datoteke iz repozitorija.",
714
+ "Koristi se NAKON project_architecture_scan za detalje koje scan ne pruža:",
715
+ "",
716
+ "• Tijela metoda (getter logika, computed properties, poslovne pravilo)",
717
+ "• Konstruktor logika i DI inicijalizacija polja",
718
+ "• Web.config — sve vrijednosti konfiguracije i connection stringovi",
719
+ "• Global.asax.cs — Application_Start sekvenca i middleware",
720
+ "• ServicesRegistration.cs — redoslijed DI registracija",
721
+ "• Handler .cs datoteke — ProcessRequest logika",
722
+ "• EasyEdit/XML/*.xml — definicije tipova stranica i polja",
723
+ "• Common/Classes/*.cs — pun kod custom klasa",
724
+ "",
725
+ "Relativne putanje dobiveš iz polja 'keyFiles' u scan rezultatu.",
726
+ ].join("\n"), ReadFileSchema.shape, async (params) => ({
727
+ content: [{ type: "text", text: await handleReadFile(params) }],
728
+ }));
729
+ }
730
+ //# sourceMappingURL=architecture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/tools/architecture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,gFAAgF;AAEhF,MAAM,CAAC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;AAsJvE,iFAAiF;AAEjF,MAAM,cAAc,GAA4B;IAC9C,CAAC,aAAa,EAAE,qBAAqB,CAAC;IACtC,CAAC,cAAc,EAAE,qBAAqB,CAAC;IACvC,CAAC,WAAW,EAAE,qBAAqB,CAAC;IACpC,CAAC,cAAc,EAAE,qBAAqB,CAAC;IACvC,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAClC,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,YAAY,EAAE,oBAAoB,CAAC;IACpC,CAAC,aAAa,EAAE,oBAAoB,CAAC;IACrC,CAAC,eAAe,EAAE,oBAAoB,CAAC;IACvC,CAAC,aAAa,EAAE,oBAAoB,CAAC;IACrC,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,SAAS,EAAE,eAAe,CAAC;IAC5B,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,SAAS,EAAE,eAAe,CAAC;IAC5B,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,YAAY,EAAE,eAAe,CAAC;IAC/B,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,aAAa,EAAE,eAAe,CAAC;IAChC,CAAC,OAAO,EAAE,eAAe,CAAC;IAC1B,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,YAAY,EAAE,eAAe,CAAC;IAC/B,CAAC,QAAQ,EAAE,eAAe,CAAC;IAC3B,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAC/B,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAChC,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC7B,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAChC,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAClC,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,SAAS,EAAE,YAAY,CAAC;IACzB,CAAC,WAAW,EAAE,cAAc,CAAC;IAC7B,CAAC,OAAO,EAAE,eAAe,CAAC;IAC1B,CAAC,SAAS,EAAE,eAAe,CAAC;IAC5B,CAAC,YAAY,EAAE,eAAe,CAAC;IAC/B,CAAC,WAAW,EAAE,eAAe,CAAC;IAC9B,CAAC,SAAS,EAAE,eAAe,CAAC;IAC5B,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,SAAS,EAAE,sBAAsB,CAAC;IACnC,CAAC,SAAS,EAAE,sBAAsB,CAAC;IACnC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAC1B,CAAC,OAAO,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AAEF,SAAS,UAAU,CAAC,IAAY;IAC9B,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;IACvC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,iFAAiF;AAEjF,iDAAiD;AACjD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,MAAM;IACN,KAAK;IACL,SAAS;IACT,cAAc;IACd,aAAa;IACb,iBAAiB,EAAE,+BAA+B;CACnD,CAAC,CAAC;AAEH,qEAAqE;AACrE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAEzD,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,mEAAmE;IACnE,2EAA2E;IAC3E,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iFAAiF;AAEjF,SAAS,aAAa,CAAC,OAAe,EAAE,QAAgB,EAAE,KAAa,EAAE,QAAgB;IACvF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,IAAI,GAAe;QACvB,IAAI;QACJ,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,GAAG;QACrD,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC;QAC/B,SAAS,EAAE,CAAC;QACZ,gBAAgB,EAAE,EAAE;QACpB,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE,SAAS;YAC/C,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACrE,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;gBAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAClE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gBACzE,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC;YAC3D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACnE,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS,CAAC,GAAW,EAAE,SAAoC,EAAE,SAAoD,EAAE,KAAK,GAAG,CAAC;IACnI,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iFAAiF;AAEjF,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACrF,IAAI,MAAM,IAAI,WAAW;QAAE,OAAO,2BAA2B,CAAC;IAE9D,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAC3E,IAAI,WAAW,IAAI,eAAe;QAAE,OAAO,sBAAsB,CAAC;IAElE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,UAAU,GAA2B;QACzC,qBAAqB,EAAE,gBAAgB;QACvC,yBAAyB,EAAE,yBAAyB;QACpD,mBAAmB,EAAE,YAAY;QACjC,qBAAqB,EAAE,iBAAiB;QACxC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QAC/D,eAAe,EAAE,CAAC,GAAG,EAAE;YACrB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/F,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,EAAE;KACL,CAAC;IAEF,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,IAAI,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QACtB,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,SAAS,GAAG,SAAS,CACzB,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,mCAAmC,EAChD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAC5C,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,qCAAqC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF,SAAS,WAAW,CAAC,QAAgB,EAAE,QAAgB;IACrD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAE/H,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,mEAAmE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjK,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;QACxC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC/C,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;QAC/F,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;QAChF,iBAAiB,EAAE,WAAW;QAC9B,iBAAiB,EAAE,WAAW;KAC/B,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,MAAM,SAAS,GAAG;QAChB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;QAChE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC5E,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE;KACjF,CAAC;IAEF,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,8CAA8C,CAAC,EAAE,CAAC;gBACjF,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,gFAAgF;AAEhF,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAqE;QAChF,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE;QACvD,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE;QACnE,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE;KACxE,CAAC;IAEF,MAAM,IAAI,GAA6B,EAAE,CAAC;IAC1C,KAAK,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AAEjF,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB;QAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,QAAgB;IACrD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAEvF,YAAY;IACZ,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;IAE9E,mBAAmB;IACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,+HAA+H,CAAC,CAAC;IAClK,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IAClD,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAwB,CAAC;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAE1B,aAAa;IACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,QAAQ,IAAI,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5G,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,MAAM,YAAY,GAAG,SAAS;SAC3B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC;SACE,IAAI,EAAE;SACN,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,IAAI,EAAE,CACV;SACA,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,mDAAmD;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEpG,cAAc;IACd,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAChE,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,CAAC,IAAI,CACb,GAAG,SAAS,CAAC,CAAC,CAAC;iBACZ,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAC7C,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe;IACf,MAAM,YAAY,GAAoB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,0CAA0C,IAAI,6DAA6D,EAAE,GAAG,CAAC,CAAC;IAC/I,IAAI,SAAiC,CAAC;IACtC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACvD,YAAY,CAAC,IAAI,CAAC;YAChB,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5B,UAAU,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACzC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM;YAClC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;IACb,MAAM,UAAU,GAAiB,EAAE,CAAC;IACpC,MAAM,SAAS,GACb,oMAAoM,CAAC;IACvM,IAAI,SAAiC,CAAC;IACtC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QAClG,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACzB,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5B,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC/B,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC/B,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1D,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,SAAS;IACT,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,+JAA+J,CAAC;IACnL,IAAI,UAAkC,CAAC;IACvC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,SAAS,KAAK,IAAI;YAAE,SAAS;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;YAC9D,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC1B,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,UAAU;IACV,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACnJ,MAAM,WAAW,GACf,8MAA8M,CAAC;IACjN,IAAI,WAAmC,CAAC;IACxC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,SAAS;QAC5C,MAAM,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACjC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;YAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YACjC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YACvC,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3C,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI;QACJ,SAAS;QACT,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC/C,IAAI;QACJ,cAAc;QACd,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1C,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxC,SAAS;QACT,UAAU;QACV,eAAe;QACf,YAAY;QACZ,MAAM;QACN,UAAU;QACV,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,aAAa,CAAC,QAAgB,EAAE,QAAgB;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAC;IACxC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACzD,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACxD,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,CAAC,IAAI,CACb,GAAG,SAAS,CAAC,CAAC,CAAC;iBACZ,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC/C,SAAS;QACT,UAAU;QACV,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,cAAc,CAAC,KAAe,EAAE,QAAgB;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;YAC/B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,sBAAsB,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;YAC9F,aAAa,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;SACzC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAe,EAAE,QAAgB;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;YAC/B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,sBAAsB,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;SAC/F,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAmB,EAAE,CAAC;IAEhC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,yCAAyC,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC;YACR,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACT,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YACzB,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/C,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,qDAAqD,CAAC,EAAE,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC;YACR,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACT,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YACzB,SAAS,EAAE,KAAK;YAChB,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AAEjF,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,UAAU,GAAG,SAAS,CAC1B,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,mCAAmC,EAChD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAC5C,CAAC;IAEF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iFAAiF;AAEjF,SAAS,cAAc,CAAC,OAAsB,EAAE,QAAgB;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAE1J,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAE7J,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEnJ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAE5F,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEpF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEpF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE1I,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAE9I,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAExI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAEpK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAEvK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAEtH,IACE,SAAS,CACP,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC3B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAC5C,CAAC,MAAM,GAAG,CAAC;QAEZ,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAE7C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAE/F,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,UAAU,CAAC,MAA+C;IACvE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IAE1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uBAAuB,QAAQ,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE1E,eAAe;IACf,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEhD,cAAc;IACd,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE5D,mBAAmB;IACnB,MAAM,WAAW,GAAG,SAAS,CAC3B,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAC5C,CAAC;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAElE,gEAAgE;IAChE,MAAM,aAAa,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAExD,6BAA6B;IAC7B,MAAM,wBAAwB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAElE,uDAAuD;IACvD,MAAM,OAAO,GAAG,SAAS,CACvB,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EACtF,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAC5C,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAEzG,gBAAgB;IAChB,MAAM,SAAS,GAAG,SAAS,CACzB,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAC5C,CAAC;IACF,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtE,+DAA+D;IAC/D,MAAM,SAAS,GAAG,SAAS,CACzB,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,IAAI,KAAK,UAAU,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,6BAA6B;QAClF,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC,CACF,CAAC;IACF,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEtD,gBAAgB;IAChB,MAAM,SAAS,GAAG,SAAS,CACzB,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,IAAI,KAAK,UAAU,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC,CACF,CAAC;IACF,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEzD,aAAa;IACb,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE/C,2BAA2B;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,kBAAkB,GAAa,EAAE,CAAC;IACtC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,kBAAkB,GAAG,EAAE;iBACpB,WAAW,CAAC,UAAU,CAAC;iBACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxD,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,6BAA6B;IAC7B,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE1D,oBAAoB;IACpB,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE3D,YAAY;IACZ,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEzC,UAAU;IACV,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GACb,SAAS,CACP,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC3B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAC5C,CAAC,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;IAEjH,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAClM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CACtC,CAAC;IAEF,MAAM,MAAM,GAAsB;QAChC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ;QACR,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjC,WAAW;QACX,OAAO,EAAE;YACP,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,WAAW,EAAE,WAAW,CAAC,MAAM;YAC/B,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,cAAc,EAAE,kBAAkB,CAAC,MAAM;YACzC,WAAW;YACX,SAAS;YACT,SAAS;YACT,UAAU;YACV,YAAY;YACZ,UAAU;SACX;QACD,UAAU,EAAE,IAAI;QAChB,QAAQ;QACR,aAAa;QACb,wBAAwB;QACxB,OAAO;QACP,YAAY;QACZ,SAAS;QACT,YAAY;QACZ,aAAa;QACb,kBAAkB;QAClB,oBAAoB;QACpB,gBAAgB;QAChB,QAAQ;KACT,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;QAClC,WAAW;QACX,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,QAAQ,EAAE,YAAY,CAAC,MAAM;QAC7B,KAAK,EAAE,aAAa,CAAC,MAAM;KAC5B,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,cAAc,CAAC,MAAqE;IACjG,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;IAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,YAAY,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0BAA0B,YAAY,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QAE1C,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,YAAY;YACZ,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,SAAS;YACT,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;YACxC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO;SACnE,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;IACtI,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;CAC5H,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;IACvG,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,QAAQ,CACP,qDAAqD;QACnD,iEAAiE;QACjE,+CAA+C;QAC/C,gEAAgE,CACnE;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,OAAO,CAAC,GAAG,CAAC;SACZ,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,GAAG,iEAAiE,CAAC;CACtI,CAAC,CAAC;AAEH,iFAAiF;AAEjF,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB;QACE,0FAA0F;QAC1F,EAAE;QACF,mDAAmD;QACnD,wEAAwE;QACxE,sCAAsC;QACtC,yDAAyD;QACzD,mDAAmD;QACnD,+DAA+D;QAC/D,qDAAqD;QACrD,8DAA8D;QAC9D,yCAAyC;QACzC,mDAAmD;QACnD,sDAAsD;QACtD,sCAAsC;QACtC,2DAA2D;QAC3D,EAAE;QACF,8EAA8E;QAC9E,uEAAuE;KACxE,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,UAAU,CAAC,KAAK,EAChB,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;KAC5D,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB;QACE,8CAA8C;QAC9C,2EAA2E;QAC3E,EAAE;QACF,wEAAwE;QACxE,iDAAiD;QACjD,qEAAqE;QACrE,4DAA4D;QAC5D,wDAAwD;QACxD,gDAAgD;QAChD,2DAA2D;QAC3D,8CAA8C;QAC9C,EAAE;QACF,iEAAiE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,cAAc,CAAC,KAAK,EACpB,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;KAChE,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -175,7 +175,7 @@ function configureWikiTools(server, tokenProvider, connectionProvider, userAgent
175
175
  try {
176
176
  const accessToken = await tokenProvider();
177
177
  const baseUrl = connection.serverUrl.replace(/\/$/, "");
178
- const restUrl = `${baseUrl}/${resolvedProject}/_apis/wiki/wikis/${resolvedWiki}/pages/${parsed.pageId}?includeContent=true&api-version=7.1`;
178
+ const restUrl = `${baseUrl}/${resolvedProject}/_apis/wiki/wikis/${resolvedWiki}/pages/${parsed.pageId}?includeContent=true&api-version=${apiVersion}`;
179
179
  const isBasicAuth = process.env["ADO_MCP_AUTH_TYPE"] == "basic";
180
180
  const authHeader = isBasicAuth ? `Basic ${Buffer.from(":" + accessToken).toString("base64")}` : `Bearer ${accessToken}`;
181
181
  const resp = await fetch(restUrl, {
@@ -240,7 +240,7 @@ function configureWikiTools(server, tokenProvider, connectionProvider, userAgent
240
240
  // Build the URL for the wiki page API with version descriptor
241
241
  const baseUrl = connection.serverUrl;
242
242
  const projectParam = project || "";
243
- const url = `${baseUrl}/${projectParam}/_apis/wiki/wikis/${wikiIdentifier}/pages?path=${encodedPath}&versionDescriptor.versionType=branch&versionDescriptor.version=${encodeURIComponent(branch)}&api-version=7.1`;
243
+ const url = `${baseUrl}/${projectParam}/_apis/wiki/wikis/${wikiIdentifier}/pages?path=${encodedPath}&versionDescriptor.versionType=branch&versionDescriptor.version=${encodeURIComponent(branch)}&api-version=${apiVersion}`;
244
244
  const isBasicAuth = process.env["ADO_MCP_AUTH_TYPE"] == "basic";
245
245
  const authHeader = isBasicAuth ? `Basic ${Buffer.from(":" + accessToken).toString("base64")}` : `Bearer ${accessToken}`;
246
246
  // First, try to create a new page (PUT without ETag)
@@ -1 +1 @@
1
- {"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../src/tools/wiki.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../src/tools/wiki.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,GAAG;IACjB,UAAU,EAAE,iBAAiB;IAC7B,QAAQ,EAAE,eAAe;IACzB,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,qBAAqB,EAAE,uBAAuB;IAC9C,qBAAqB,EAAE,4BAA4B;CACpD,CAAC;AAEF,SAAS,kBAAkB,CAAC,MAAiB,EAAE,aAAoC,EAAE,kBAAyC,EAAE,iBAA+B;IAC7J,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,QAAQ,EACnB,gCAAgC,EAChC;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sGAAsG,CAAC;KAChJ,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAE5D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC/E,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAEvF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,YAAY,EAAE,EAAE,CAAC;gBACzE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,UAAU,EACrB,0DAA0D,EAC1D;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0GAA0G,CAAC;KACpJ,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAChF,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAEvF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,YAAY,EAAE,EAAE,CAAC;gBAC1E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,eAAe,EAC1B,gEAAgE,EAChE;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QACjF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAC9F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QAC5G,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2FAA2F,CAAC;KAC9I,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,GAAG,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,EAAE,EAAE;QACnF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAE9C,MAAM,iBAAiB,GAA0B;gBAC/C,GAAG;gBACH,iBAAiB;gBACjB,gBAAgB;aACjB,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;YAEtF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACrF,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAEvF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,YAAY,EAAE,EAAE,CAAC;gBAC/E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,aAAa,EACxB,8EAA8E,EAC9E;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QACjF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;QACjG,cAAc,EAAE,CAAC;aACd,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,gCAAgC,EAAE,MAAM,CAAC,CAAC;aACpE,QAAQ,EAAE;aACV,QAAQ,CAAC,6IAA6I,CAAC;KAC3J,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,MAAM,aAAa,EAAE,CAAC;YAE1C,qBAAqB;YACrB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAChE,yDAAyD;YAEzD,sCAAsC;YACtC,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;gBACjC,MAAM,EAAE,cAAc;gBACtB,aAAa,EAAE,UAAU;aAC1B,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,OAAO,qBAAqB,cAAc,UAAU,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;YAElG,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC;YAChE,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,WAAW,EAAE,CAAC;YAExH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU;oBAC3B,YAAY,EAAE,iBAAiB,EAAE;iBAClC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;YAChF,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEvC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACrE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAEvF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,YAAY,EAAE,EAAE,CAAC;gBACvF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,qBAAqB,EAChC,+HAA+H,EAC/H;QACE,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,4TAA4T,CAC7T;QACH,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;QACrH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;QAC7H,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qGAAqG,CAAC;KAC5I,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAA8E,EAAE,EAAE;QAC3H,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;YACrB,MAAM,OAAO,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,OAAO,CAAC;YAE9C,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sGAAsG,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACtK,CAAC;YACD,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yGAAyG,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzK,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9C,IAAI,eAAe,GAAG,OAAO,CAAC;YAC9B,IAAI,YAAY,GAAG,cAAc,CAAC;YAClC,IAAI,YAAY,GAAuB,IAAI,CAAC;YAC5C,IAAI,WAA+B,CAAC;YAEpC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAEjC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;oBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACnH,CAAC;gBAED,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;gBACjC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;gBAErC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACjC,CAAC;gBAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,IAAI,CAAC;wBACH,MAAM,WAAW,GAAG,MAAM,aAAa,EAAE,CAAC;wBAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACxD,MAAM,OAAO,GAAG,GAAG,OAAO,IAAI,eAAe,qBAAqB,YAAY,UAAU,MAAM,CAAC,MAAM,oCAAoC,UAAU,EAAE,CAAC;wBAEtJ,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC;wBAChE,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,WAAW,EAAE,CAAC;wBAExH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;4BAChC,OAAO,EAAE;gCACP,eAAe,EAAE,UAAU;gCAC3B,YAAY,EAAE,iBAAiB,EAAE;6BAClC;yBACF,CAAC,CAAC;wBACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;4BACZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;4BAC/B,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gCAC7C,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;4BAC7B,CAAC;iCAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gCAC7B,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;4BAC3B,CAAC;wBACH,CAAC;6BAAM,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;4BAC/B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kDAAkD,MAAM,CAAC,MAAM,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wBAC3I,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,YAAY,GAAG,GAAG,CAAC;gBACrB,CAAC;gBACD,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wEAAwE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBAClH,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC5F,CAAC;gBACD,WAAW,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAEvF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,YAAY,EAAE,EAAE,CAAC;gBACtF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,qBAAqB,EAChC,4CAA4C,EAC5C;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACjF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;QACjG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAChF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sGAAsG,CAAC;QAC/I,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;QACpH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,uHAAuH,CAAC;KAC3K,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,EAAE,EAAE;QAChF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,MAAM,aAAa,EAAE,CAAC;YAE1C,qBAAqB;YACrB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAChE,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAEvD,8DAA8D;YAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC;YACrC,MAAM,YAAY,GAAG,OAAO,IAAI,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,YAAY,qBAAqB,cAAc,eAAe,WAAW,mEAAmE,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,UAAU,EAAE,CAAC;YAE7N,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC;YAChE,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,WAAW,EAAE,CAAC;YAExH,qDAAqD;YACrD,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBACtC,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE;wBACP,eAAe,EAAE,UAAU;wBAC3B,cAAc,EAAE,kBAAkB;wBAClC,YAAY,EAAE,iBAAiB,EAAE;qBAClC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;iBAC3C,CAAC,CAAC;gBAEH,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;oBAC3C,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,2CAA2C,cAAc,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;6BAChH;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,gFAAgF;gBAChF,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACnE,qDAAqD;oBACrD,IAAI,WAAW,GAAG,IAAI,CAAC;oBAEvB,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,iCAAiC;wBACjC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;4BACnC,MAAM,EAAE,KAAK;4BACb,OAAO,EAAE;gCACP,eAAe,EAAE,UAAU;gCAC3B,YAAY,EAAE,iBAAiB,EAAE;6BAClC;yBACF,CAAC,CAAC;wBAEH,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;4BACnB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;4BAC9F,IAAI,CAAC,WAAW,EAAE,CAAC;gCACjB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gCAC1C,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;4BAC9B,CAAC;wBACH,CAAC;wBAED,IAAI,CAAC,WAAW,EAAE,CAAC;4BACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;wBAC/D,CAAC;oBACH,CAAC;oBAED,yCAAyC;oBACzC,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;wBACtC,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE;4BACP,eAAe,EAAE,UAAU;4BAC3B,cAAc,EAAE,kBAAkB;4BAClC,YAAY,EAAE,iBAAiB,EAAE;4BACjC,UAAU,EAAE,WAAW;yBACxB;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;qBAC3C,CAAC,CAAC;oBAEH,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;wBACtB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;wBAC3C,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,2CAA2C,cAAc,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;iCAChH;6BACF;yBACF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;wBAC9C,MAAM,IAAI,KAAK,CAAC,0BAA0B,cAAc,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;oBACpF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;oBAC9C,MAAM,IAAI,KAAK,CAAC,0BAA0B,cAAc,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,MAAM,UAAU,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAEvF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,YAAY,EAAE,EAAE,CAAC;gBACvF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAA6B;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+CAA+C;AAC/C,sBAAsB;AACtB,sGAAsG;AACtG,oFAAoF;AACpF,2EAA2E;AAC3E,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,2BAA2B;QAC3B,yEAAyE;QACzE,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;QACvE,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;QACrD,IAAI,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,2EAA2E,EAAE,CAAC;QAChG,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC;QAC5E,CAAC;QAED,2BAA2B;QAC3B,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,OAAO,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC;YACtD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACxD,CAAC;QAED,wDAAwD;QACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,gCAAgC;QAC3E,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC"}
package/dist/tools.js CHANGED
@@ -10,6 +10,7 @@ import { configureTestPlanTools } from "./tools/test-plans.js";
10
10
  import { configureWikiTools } from "./tools/wiki.js";
11
11
  import { configureWorkTools } from "./tools/work.js";
12
12
  import { configureWorkItemTools } from "./tools/work-items.js";
13
+ import { configureArchitectureTools } from "./tools/architecture.js";
13
14
  function configureAllTools(server, tokenProvider, connectionProvider, userAgentProvider, enabledDomains) {
14
15
  const configureIfDomainEnabled = (domain, configureFn) => {
15
16
  if (enabledDomains.has(domain)) {
@@ -25,6 +26,7 @@ function configureAllTools(server, tokenProvider, connectionProvider, userAgentP
25
26
  configureIfDomainEnabled(Domain.TEST_PLANS, () => configureTestPlanTools(server, tokenProvider, connectionProvider));
26
27
  configureIfDomainEnabled(Domain.SEARCH, () => configureSearchTools(server, tokenProvider, connectionProvider, userAgentProvider));
27
28
  configureIfDomainEnabled(Domain.ADVANCED_SECURITY, () => configureAdvSecTools(server, tokenProvider, connectionProvider));
29
+ configureArchitectureTools(server);
28
30
  }
29
31
  export { configureAllTools };
30
32
  //# sourceMappingURL=tools.js.map
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,SAAS,iBAAiB,CAAC,MAAiB,EAAE,aAAoC,EAAE,kBAAyC,EAAE,iBAA+B,EAAE,cAA2B;IACzL,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAE,WAAuB,EAAE,EAAE;QAC3E,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9H,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC3G,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACvI,wBAAwB,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtI,wBAAwB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACxI,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9H,wBAAwB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACrH,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClI,wBAAwB,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAC5H,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,SAAS,iBAAiB,CAAC,MAAiB,EAAE,aAAoC,EAAE,kBAAyC,EAAE,iBAA+B,EAAE,cAA2B;IACzL,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAE,WAAuB,EAAE,EAAE;QAC3E,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9H,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC3G,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACvI,wBAAwB,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtI,wBAAwB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACxI,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9H,wBAAwB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACrH,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClI,wBAAwB,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1H,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const packageVersion = "2.3.11";
1
+ export const packageVersion = "2.3.15";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web-marketing-hr/azure-devops-mcp",
3
- "version": "2.3.11",
3
+ "version": "2.3.15",
4
4
  "description": "MCP server for interacting with Azure DevOps (on-premises) WEM fork",
5
5
  "license": "MIT",
6
6
  "author": "Microsoft Corporation, WEB Marketing d.o.o. Fork",