@graph-ir/mcp-server 0.2.0 → 0.2.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.
- package/README.md +12 -3
- package/dist/index.js +28 -8
- package/dist/index.js.map +1 -1
- package/dist/tools/generate.d.ts +2 -16
- package/dist/tools/generate.d.ts.map +1 -1
- package/dist/tools/generate.js +29 -14
- package/dist/tools/generate.js.map +1 -1
- package/dist/tools/layout.d.ts +37 -81
- package/dist/tools/layout.d.ts.map +1 -1
- package/dist/tools/layout.js +598 -194
- package/dist/tools/layout.js.map +1 -1
- package/dist/tools/visualize.d.ts.map +1 -1
- package/dist/tools/visualize.js +21 -4
- package/dist/tools/visualize.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -72,16 +72,25 @@ Generate ASCII visualization of Graph-IR.
|
|
|
72
72
|
|
|
73
73
|
### layout_ir
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
Resolve graph geometry using a capability-safe ELK adapter.
|
|
76
76
|
|
|
77
77
|
**Input:**
|
|
78
78
|
- `ir` (string, required): Graph-IR JSON string
|
|
79
79
|
- `algorithm` (string): Layout algorithm (layered, force, mrtree, box, stress)
|
|
80
|
-
- `options` (object):
|
|
80
|
+
- `options` (object): Transient layout-request options
|
|
81
81
|
|
|
82
82
|
**Output:**
|
|
83
83
|
- `success`: Whether layout succeeded
|
|
84
|
-
- `
|
|
84
|
+
- `resolved`: Separate node rectangles, generated edge routes, and bounds
|
|
85
|
+
- `errors`: Stable validation, capability, conflict, or verification diagnostics
|
|
86
|
+
|
|
87
|
+
The tool never writes computed geometry into authored GraphIR. It rejects
|
|
88
|
+
constraints, authored routes, exact positions/pins, label placement, and other
|
|
89
|
+
intent that this adapter cannot currently guarantee. Leaf fixed dimensions,
|
|
90
|
+
supported graph layout options, hierarchy/padding, and collision-safe opaque
|
|
91
|
+
port IDs are lowered and post-verified. Root node rectangles are graph-relative;
|
|
92
|
+
nested rectangles are local to the immediate parent's outer rectangle. The
|
|
93
|
+
flat resolved edge list uses graph-absolute route points.
|
|
85
94
|
|
|
86
95
|
## Development
|
|
87
96
|
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { createRequire } from 'node:module';
|
|
4
5
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
6
|
import { validateIR } from './tools/validate.js';
|
|
6
7
|
import { generateIR } from './tools/generate.js';
|
|
7
8
|
import { visualizeIR } from './tools/visualize.js';
|
|
8
|
-
import {
|
|
9
|
+
import { layoutIRFromToolArguments } from './tools/layout.js';
|
|
9
10
|
import { listSymbols } from './tools/list-symbols.js';
|
|
10
11
|
import { listNotations } from './tools/list-notations.js';
|
|
11
12
|
import { validateNotation } from './tools/validate-notation.js';
|
|
13
|
+
const require = createRequire(import.meta.url);
|
|
14
|
+
const packageMetadata = require('../package.json');
|
|
15
|
+
if (process.argv.includes('--version')) {
|
|
16
|
+
console.log(packageMetadata.version);
|
|
17
|
+
process.exit(0);
|
|
18
|
+
}
|
|
12
19
|
const server = new Server({
|
|
13
20
|
name: 'graph-ir-tools',
|
|
14
|
-
version:
|
|
21
|
+
version: packageMetadata.version,
|
|
15
22
|
}, {
|
|
16
23
|
capabilities: {
|
|
17
24
|
tools: {},
|
|
@@ -25,6 +32,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
25
32
|
description: 'Validate Graph-IR JSON against schema and semantic rules',
|
|
26
33
|
inputSchema: {
|
|
27
34
|
type: 'object',
|
|
35
|
+
additionalProperties: false,
|
|
28
36
|
properties: {
|
|
29
37
|
ir: {
|
|
30
38
|
type: 'string',
|
|
@@ -44,6 +52,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
44
52
|
description: 'Generate Graph-IR from a natural language description',
|
|
45
53
|
inputSchema: {
|
|
46
54
|
type: 'object',
|
|
55
|
+
additionalProperties: false,
|
|
47
56
|
properties: {
|
|
48
57
|
description: {
|
|
49
58
|
type: 'string',
|
|
@@ -81,9 +90,10 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
81
90
|
},
|
|
82
91
|
{
|
|
83
92
|
name: 'layout_ir',
|
|
84
|
-
description: '
|
|
93
|
+
description: 'Resolve GraphIR geometry with capability-safe ELK layout',
|
|
85
94
|
inputSchema: {
|
|
86
95
|
type: 'object',
|
|
96
|
+
additionalProperties: false,
|
|
87
97
|
properties: {
|
|
88
98
|
ir: {
|
|
89
99
|
type: 'string',
|
|
@@ -91,13 +101,23 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
91
101
|
},
|
|
92
102
|
algorithm: {
|
|
93
103
|
type: 'string',
|
|
94
|
-
enum: ['layered', 'force', 'mrtree', 'box', 'stress'],
|
|
95
|
-
description: 'ELK algorithm
|
|
96
|
-
default: 'layered',
|
|
104
|
+
enum: ['layered', 'force', 'tree', 'mrtree', 'box', 'stress'],
|
|
105
|
+
description: 'Transient ELK algorithm; omission honors the authored graph option',
|
|
97
106
|
},
|
|
98
107
|
options: {
|
|
99
108
|
type: 'object',
|
|
100
|
-
description: '
|
|
109
|
+
description: 'Transient layout request options (never persisted to GraphIR)',
|
|
110
|
+
additionalProperties: false,
|
|
111
|
+
properties: {
|
|
112
|
+
nodeWidth: { type: 'number', minimum: 0 },
|
|
113
|
+
nodeHeight: { type: 'number', minimum: 0 },
|
|
114
|
+
horizontalSpacing: { type: 'number', minimum: 0 },
|
|
115
|
+
verticalSpacing: { type: 'number', minimum: 0 },
|
|
116
|
+
direction: {
|
|
117
|
+
type: 'string',
|
|
118
|
+
enum: ['RIGHT', 'DOWN', 'LEFT', 'UP'],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
101
121
|
},
|
|
102
122
|
},
|
|
103
123
|
required: ['ir'],
|
|
@@ -186,7 +206,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
186
206
|
return formatResult(result);
|
|
187
207
|
}
|
|
188
208
|
case 'layout_ir': {
|
|
189
|
-
const result = await
|
|
209
|
+
const result = await layoutIRFromToolArguments(args);
|
|
190
210
|
return formatResult(result);
|
|
191
211
|
}
|
|
192
212
|
case 'list_symbols': {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAoB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAoB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/generate.d.ts
CHANGED
|
@@ -5,29 +5,15 @@
|
|
|
5
5
|
* Note: Full NL processing would require an LLM - this provides
|
|
6
6
|
* pattern-based generation for common cases.
|
|
7
7
|
*/
|
|
8
|
+
import { type GraphIR } from '@graph-ir/core';
|
|
8
9
|
export interface GenerationResult {
|
|
9
10
|
success: boolean;
|
|
10
11
|
ir?: GraphIR;
|
|
11
12
|
errors: string[];
|
|
12
13
|
notes: string[];
|
|
13
14
|
}
|
|
14
|
-
interface GraphIR {
|
|
15
|
-
version: string;
|
|
16
|
-
nodes: Array<{
|
|
17
|
-
id: string;
|
|
18
|
-
type: string;
|
|
19
|
-
label: string;
|
|
20
|
-
}>;
|
|
21
|
-
edges: Array<{
|
|
22
|
-
id: string;
|
|
23
|
-
source: string;
|
|
24
|
-
target: string;
|
|
25
|
-
label?: string;
|
|
26
|
-
}>;
|
|
27
|
-
}
|
|
28
15
|
/**
|
|
29
16
|
* Generate Graph-IR from description
|
|
30
17
|
*/
|
|
31
|
-
export declare function generateIR(description: string,
|
|
32
|
-
export {};
|
|
18
|
+
export declare function generateIR(description: string, _style?: string): Promise<GenerationResult>;
|
|
33
19
|
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAoBD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAwF3B"}
|
package/dist/tools/generate.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Note: Full NL processing would require an LLM - this provides
|
|
6
6
|
* pattern-based generation for common cases.
|
|
7
7
|
*/
|
|
8
|
+
import { IdGenerator, validateIR } from '@graph-ir/core';
|
|
8
9
|
// Entity type mapping from keywords
|
|
9
10
|
const TYPE_KEYWORDS = {
|
|
10
11
|
service: ['service', 'microservice', 'api', 'server', 'backend', 'frontend'],
|
|
@@ -24,7 +25,7 @@ const RELATIONSHIP_KEYWORDS = {
|
|
|
24
25
|
/**
|
|
25
26
|
* Generate Graph-IR from description
|
|
26
27
|
*/
|
|
27
|
-
export async function generateIR(description,
|
|
28
|
+
export async function generateIR(description, _style = 'default') {
|
|
28
29
|
const errors = [];
|
|
29
30
|
const notes = [];
|
|
30
31
|
if (!description || description.trim().length === 0) {
|
|
@@ -47,14 +48,20 @@ export async function generateIR(description, style = 'default') {
|
|
|
47
48
|
}));
|
|
48
49
|
entities.push(...genericNodes);
|
|
49
50
|
}
|
|
50
|
-
// Extract relationships
|
|
51
|
-
const relationships = extractRelationships(lowerDesc, entities);
|
|
52
51
|
// Build Graph-IR
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
const idGenerator = new IdGenerator();
|
|
53
|
+
const entityIds = new Map();
|
|
54
|
+
const nodes = entities.map((entity) => {
|
|
55
|
+
const id = idGenerator.generate(toId(entity.name) || 'node');
|
|
56
|
+
entityIds.set(entity.name, id);
|
|
57
|
+
return {
|
|
58
|
+
id,
|
|
59
|
+
type: entity.type,
|
|
60
|
+
label: toLabel(entity.name),
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
// Extract relationships after allocating collision-safe entity IDs.
|
|
64
|
+
const relationships = extractRelationships(lowerDesc, entityIds);
|
|
58
65
|
const edges = relationships.map((rel, index) => ({
|
|
59
66
|
id: `e${index + 1}`,
|
|
60
67
|
source: rel.source,
|
|
@@ -74,10 +81,19 @@ export async function generateIR(description, style = 'default') {
|
|
|
74
81
|
}
|
|
75
82
|
}
|
|
76
83
|
const ir = {
|
|
77
|
-
version: '
|
|
84
|
+
version: '3.0.0',
|
|
85
|
+
id: 'generated-graph',
|
|
78
86
|
nodes,
|
|
79
87
|
edges,
|
|
80
88
|
};
|
|
89
|
+
const validation = validateIR(ir);
|
|
90
|
+
if (!validation.valid) {
|
|
91
|
+
return {
|
|
92
|
+
success: false,
|
|
93
|
+
errors: validation.errors.map((error) => `${error.code}${error.path ? ` ${error.path}` : ''}: ${error.message}`),
|
|
94
|
+
notes,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
81
97
|
return {
|
|
82
98
|
success: true,
|
|
83
99
|
ir,
|
|
@@ -120,9 +136,8 @@ function extractEntities(text) {
|
|
|
120
136
|
}
|
|
121
137
|
return entities;
|
|
122
138
|
}
|
|
123
|
-
function extractRelationships(text,
|
|
139
|
+
function extractRelationships(text, entityIds) {
|
|
124
140
|
const relationships = [];
|
|
125
|
-
const entityIds = entities.map(e => toId(e.name));
|
|
126
141
|
// Look for relationship patterns
|
|
127
142
|
for (const [label, keywords] of Object.entries(RELATIONSHIP_KEYWORDS)) {
|
|
128
143
|
for (const keyword of keywords) {
|
|
@@ -130,10 +145,10 @@ function extractRelationships(text, entities) {
|
|
|
130
145
|
const pattern = new RegExp(`([a-z][a-z0-9_-]*)\\s+(?:${keyword}|->|→)\\s+([a-z][a-z0-9_-]*)`, 'gi');
|
|
131
146
|
let match;
|
|
132
147
|
while ((match = pattern.exec(text)) !== null) {
|
|
133
|
-
const source =
|
|
134
|
-
const target =
|
|
148
|
+
const source = entityIds.get(match[1].toLowerCase());
|
|
149
|
+
const target = entityIds.get(match[2].toLowerCase());
|
|
135
150
|
// Only add if both ends are known entities
|
|
136
|
-
if (
|
|
151
|
+
if (source && target) {
|
|
137
152
|
relationships.push({ source, target, label });
|
|
138
153
|
}
|
|
139
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/layout.d.ts
CHANGED
|
@@ -1,100 +1,56 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Graph-IR Layout Tool
|
|
3
|
-
*
|
|
4
|
-
* Computes graph layout using ELK algorithms.
|
|
5
|
-
*/
|
|
6
1
|
import type { ElkNode } from 'elkjs';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
import { type GraphIR, type ValidationError } from '@graph-ir/core';
|
|
3
|
+
export interface LayoutDiagnostic {
|
|
4
|
+
code: ValidationError['code'] | 'INVALID_JSON' | 'INVALID_LAYOUT_REQUEST' | 'UNSUPPORTED_LAYOUT_CAPABILITY' | 'LAYOUT_OPTION_CONFLICT' | 'LAYOUT_VERIFICATION_FAILED' | 'LAYOUT_FAILED';
|
|
5
|
+
path: string;
|
|
6
|
+
message: string;
|
|
12
7
|
}
|
|
13
|
-
interface
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
ports?: Array<{
|
|
19
|
-
id: string;
|
|
20
|
-
side: 'NORTH' | 'SOUTH' | 'EAST' | 'WEST';
|
|
21
|
-
label?: string;
|
|
22
|
-
position?: number;
|
|
23
|
-
[key: string]: unknown;
|
|
24
|
-
}>;
|
|
25
|
-
[key: string]: unknown;
|
|
8
|
+
export interface ResolvedRectangle {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
26
13
|
}
|
|
27
|
-
interface
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
id: string;
|
|
33
|
-
source: string;
|
|
34
|
-
target: string;
|
|
35
|
-
sourcePort?: string;
|
|
36
|
-
targetPort?: string;
|
|
37
|
-
[key: string]: unknown;
|
|
38
|
-
}>;
|
|
39
|
-
[key: string]: unknown;
|
|
14
|
+
export interface ResolvedNode {
|
|
15
|
+
id: string;
|
|
16
|
+
/** Rectangle in the immediate parent node's outer-rectangle coordinate frame. */
|
|
17
|
+
rectangle: ResolvedRectangle;
|
|
18
|
+
children?: ResolvedNode[];
|
|
40
19
|
}
|
|
41
|
-
interface
|
|
20
|
+
export interface ResolvedEdge {
|
|
42
21
|
id: string;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
children?: LayoutedNode[];
|
|
46
|
-
layout: {
|
|
22
|
+
/** Flat route points in the graph-absolute coordinate frame. */
|
|
23
|
+
points: Array<{
|
|
47
24
|
x: number;
|
|
48
25
|
y: number;
|
|
49
|
-
|
|
50
|
-
height: number;
|
|
51
|
-
};
|
|
52
|
-
[key: string]: unknown;
|
|
53
|
-
}
|
|
54
|
-
interface LayoutedEdge {
|
|
55
|
-
id: string;
|
|
56
|
-
source: string;
|
|
57
|
-
target: string;
|
|
58
|
-
sourcePort?: string;
|
|
59
|
-
targetPort?: string;
|
|
60
|
-
layout?: {
|
|
61
|
-
points: Array<{
|
|
62
|
-
x: number;
|
|
63
|
-
y: number;
|
|
64
|
-
}>;
|
|
65
|
-
};
|
|
66
|
-
[key: string]: unknown;
|
|
26
|
+
}>;
|
|
67
27
|
}
|
|
68
|
-
interface
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
layout: {
|
|
28
|
+
export interface ResolvedLayout {
|
|
29
|
+
graphId: string;
|
|
30
|
+
nodes: ResolvedNode[];
|
|
31
|
+
edges: ResolvedEdge[];
|
|
32
|
+
bounds: {
|
|
74
33
|
width: number;
|
|
75
34
|
height: number;
|
|
76
|
-
algorithm: string;
|
|
77
35
|
};
|
|
78
|
-
|
|
36
|
+
algorithm: string;
|
|
37
|
+
}
|
|
38
|
+
export interface LayoutResult {
|
|
39
|
+
success: boolean;
|
|
40
|
+
resolved?: ResolvedLayout;
|
|
41
|
+
errors: LayoutDiagnostic[];
|
|
42
|
+
algorithm: string;
|
|
79
43
|
}
|
|
80
|
-
export interface
|
|
44
|
+
export interface LayoutRequestOptions {
|
|
81
45
|
nodeWidth?: number;
|
|
82
46
|
nodeHeight?: number;
|
|
83
47
|
horizontalSpacing?: number;
|
|
84
48
|
verticalSpacing?: number;
|
|
85
49
|
direction?: 'RIGHT' | 'DOWN' | 'LEFT' | 'UP';
|
|
86
50
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
export declare function
|
|
91
|
-
|
|
92
|
-
* Convert Graph-IR to ELK graph format
|
|
93
|
-
*/
|
|
94
|
-
export declare function graphIRToELK(ir: GraphIR, options: LayoutOptions, algorithm?: string): ElkNode;
|
|
95
|
-
/**
|
|
96
|
-
* Convert ELK result back to Graph-IR format
|
|
97
|
-
*/
|
|
98
|
-
export declare function elkToGraphIR(elkResult: ElkNode, originalIR: GraphIR, algorithm: string): LayoutedGraphIR;
|
|
99
|
-
export {};
|
|
51
|
+
export declare function layoutIR(irJson: string, requestedAlgorithm?: string, options?: Record<string, unknown>): Promise<LayoutResult>;
|
|
52
|
+
export declare function layoutIRFromToolArguments(args: unknown): Promise<LayoutResult>;
|
|
53
|
+
export declare function graphIRToELK(ir: GraphIR, options: LayoutRequestOptions, algorithm?: string): ElkNode;
|
|
54
|
+
export declare function verifyResolvedLayout(graph: GraphIR, root: ElkNode): LayoutDiagnostic[];
|
|
55
|
+
export declare function elkToResolvedLayout(elkResult: ElkNode, original: GraphIR, algorithm: string): ResolvedLayout;
|
|
100
56
|
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/tools/layout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/tools/layout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,OAAO,EAGR,MAAM,OAAO,CAAC;AACf,OAAO,EAGL,KAAK,OAAO,EAEZ,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAQxB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EACA,eAAe,CAAC,MAAM,CAAC,GACvB,cAAc,GACd,wBAAwB,GACxB,+BAA+B,GAC/B,wBAAwB,GACxB,4BAA4B,GAC5B,eAAe,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC9C;AAgDD,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAC3B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,OAAO,CAAC,YAAY,CAAC,CAmDvB;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CA0CpF;AAuMD,wBAAgB,YAAY,CAC1B,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,oBAAoB,EAC7B,SAAS,GAAE,MAAkB,GAC5B,OAAO,CAoCT;AAkHD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAqItF;AAyBD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,MAAM,GAChB,cAAc,CAgBhB"}
|