@nahisaho/katashiro-knowledge 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/graph/index.d.ts +7 -0
  2. package/dist/graph/index.d.ts.map +1 -0
  3. package/dist/graph/index.js +7 -0
  4. package/dist/graph/index.js.map +1 -0
  5. package/dist/graph/knowledge-graph.d.ts +164 -0
  6. package/dist/graph/knowledge-graph.d.ts.map +1 -0
  7. package/dist/graph/knowledge-graph.js +298 -0
  8. package/dist/graph/knowledge-graph.js.map +1 -0
  9. package/dist/index.d.ts +15 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +18 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/interfaces.d.ts +20 -0
  14. package/dist/interfaces.d.ts.map +1 -0
  15. package/dist/interfaces.js +5 -0
  16. package/dist/interfaces.js.map +1 -0
  17. package/dist/persistence/graph-persistence.d.ts +102 -0
  18. package/dist/persistence/graph-persistence.d.ts.map +1 -0
  19. package/dist/persistence/graph-persistence.js +222 -0
  20. package/dist/persistence/graph-persistence.js.map +1 -0
  21. package/dist/persistence/index.d.ts +7 -0
  22. package/dist/persistence/index.d.ts.map +1 -0
  23. package/dist/persistence/index.js +7 -0
  24. package/dist/persistence/index.js.map +1 -0
  25. package/dist/query/graph-query.d.ts +103 -0
  26. package/dist/query/graph-query.d.ts.map +1 -0
  27. package/dist/query/graph-query.js +237 -0
  28. package/dist/query/graph-query.js.map +1 -0
  29. package/dist/query/index.d.ts +7 -0
  30. package/dist/query/index.d.ts.map +1 -0
  31. package/dist/query/index.js +7 -0
  32. package/dist/query/index.js.map +1 -0
  33. package/dist/sync/graph-sync.d.ts +132 -0
  34. package/dist/sync/graph-sync.d.ts.map +1 -0
  35. package/dist/sync/graph-sync.js +338 -0
  36. package/dist/sync/graph-sync.js.map +1 -0
  37. package/dist/sync/index.d.ts +7 -0
  38. package/dist/sync/index.d.ts.map +1 -0
  39. package/dist/sync/index.js +7 -0
  40. package/dist/sync/index.js.map +1 -0
  41. package/dist/types.d.ts +43 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +5 -0
  44. package/dist/types.js.map +1 -0
  45. package/dist/visualization/graph-visualization.d.ts +139 -0
  46. package/dist/visualization/graph-visualization.d.ts.map +1 -0
  47. package/dist/visualization/graph-visualization.js +259 -0
  48. package/dist/visualization/graph-visualization.js.map +1 -0
  49. package/dist/visualization/index.d.ts +7 -0
  50. package/dist/visualization/index.d.ts.map +1 -0
  51. package/dist/visualization/index.js +7 -0
  52. package/dist/visualization/index.js.map +1 -0
  53. package/package.json +39 -0
@@ -0,0 +1,102 @@
1
+ /**
2
+ * GraphPersistence - Graph serialization and deserialization
3
+ *
4
+ * Handles saving and loading knowledge graphs
5
+ *
6
+ * @module @nahisaho/katashiro-knowledge
7
+ * @task TSK-041
8
+ */
9
+ import { type Result } from '@nahisaho/katashiro-core';
10
+ import { KnowledgeGraph, type GraphNode, type GraphEdge } from '../graph/knowledge-graph.js';
11
+ /**
12
+ * Serialized graph format
13
+ */
14
+ export interface SerializedGraph {
15
+ readonly version: string;
16
+ readonly nodes: GraphNode[];
17
+ readonly edges: GraphEdge[];
18
+ readonly metadata: GraphMetadata;
19
+ }
20
+ /**
21
+ * Graph metadata
22
+ */
23
+ export interface GraphMetadata {
24
+ readonly nodeCount: number;
25
+ readonly edgeCount: number;
26
+ readonly createdAt: string;
27
+ readonly updatedAt?: string;
28
+ readonly name?: string;
29
+ readonly description?: string;
30
+ }
31
+ /**
32
+ * GraphPersistence
33
+ *
34
+ * Provides serialization and deserialization for KnowledgeGraph
35
+ */
36
+ export declare class GraphPersistence {
37
+ /**
38
+ * Serialize a graph to a portable format
39
+ *
40
+ * @param graph - Graph to serialize
41
+ * @returns Serialized graph data
42
+ */
43
+ serialize(graph: KnowledgeGraph): Result<SerializedGraph, Error>;
44
+ /**
45
+ * Deserialize data into a graph
46
+ *
47
+ * @param data - Serialized graph data
48
+ * @param graph - Target graph (will be modified)
49
+ * @returns Result indicating success or failure
50
+ */
51
+ deserialize(data: SerializedGraph, graph: KnowledgeGraph): Result<void, Error>;
52
+ /**
53
+ * Convert graph to JSON string
54
+ *
55
+ * @param graph - Graph to convert
56
+ * @param pretty - Whether to format with indentation
57
+ * @returns JSON string
58
+ */
59
+ toJSON(graph: KnowledgeGraph, pretty?: boolean): Result<string, Error>;
60
+ /**
61
+ * Load graph from JSON string
62
+ *
63
+ * @param json - JSON string
64
+ * @param graph - Target graph
65
+ * @returns Result indicating success or failure
66
+ */
67
+ fromJSON(json: string, graph: KnowledgeGraph): Result<void, Error>;
68
+ /**
69
+ * Validate serialized graph data
70
+ *
71
+ * @param data - Data to validate
72
+ * @returns True if valid, false otherwise
73
+ */
74
+ validate(data: SerializedGraph): Result<boolean, Error>;
75
+ /**
76
+ * Create a diff between two serialized graphs
77
+ *
78
+ * @param before - Previous state
79
+ * @param after - Current state
80
+ * @returns Diff describing changes
81
+ */
82
+ diff(before: SerializedGraph, after: SerializedGraph): Result<GraphDiff, Error>;
83
+ /**
84
+ * Merge two graphs
85
+ *
86
+ * @param base - Base graph
87
+ * @param other - Graph to merge in
88
+ * @returns Merged graph data
89
+ */
90
+ merge(base: SerializedGraph, other: SerializedGraph): Result<SerializedGraph, Error>;
91
+ }
92
+ /**
93
+ * Graph diff result
94
+ */
95
+ export interface GraphDiff {
96
+ readonly addedNodes: GraphNode[];
97
+ readonly removedNodes: GraphNode[];
98
+ readonly addedEdges: GraphEdge[];
99
+ readonly removedEdges: GraphEdge[];
100
+ readonly hasChanges: boolean;
101
+ }
102
+ //# sourceMappingURL=graph-persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-persistence.d.ts","sourceRoot":"","sources":["../../src/persistence/graph-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAOD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC;IAsBhE;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IA2B9E;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,UAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAiBpE;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IASlE;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;IAoCvD;;;;;;OAMG;IACH,IAAI,CACF,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,eAAe,GACrB,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;IA8B3B;;;;;;OAMG;IACH,KAAK,CACH,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,eAAe,GACrB,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC;CAgClC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * GraphPersistence - Graph serialization and deserialization
3
+ *
4
+ * Handles saving and loading knowledge graphs
5
+ *
6
+ * @module @nahisaho/katashiro-knowledge
7
+ * @task TSK-041
8
+ */
9
+ import { ok, err, isOk } from '@nahisaho/katashiro-core';
10
+ /**
11
+ * Current serialization format version
12
+ */
13
+ const FORMAT_VERSION = '1.0';
14
+ /**
15
+ * GraphPersistence
16
+ *
17
+ * Provides serialization and deserialization for KnowledgeGraph
18
+ */
19
+ export class GraphPersistence {
20
+ /**
21
+ * Serialize a graph to a portable format
22
+ *
23
+ * @param graph - Graph to serialize
24
+ * @returns Serialized graph data
25
+ */
26
+ serialize(graph) {
27
+ try {
28
+ const nodes = graph.getAllNodes();
29
+ const edges = graph.getAllEdges();
30
+ const serialized = {
31
+ version: FORMAT_VERSION,
32
+ nodes,
33
+ edges,
34
+ metadata: {
35
+ nodeCount: nodes.length,
36
+ edgeCount: edges.length,
37
+ createdAt: new Date().toISOString(),
38
+ },
39
+ };
40
+ return ok(serialized);
41
+ }
42
+ catch (error) {
43
+ return err(error instanceof Error ? error : new Error(String(error)));
44
+ }
45
+ }
46
+ /**
47
+ * Deserialize data into a graph
48
+ *
49
+ * @param data - Serialized graph data
50
+ * @param graph - Target graph (will be modified)
51
+ * @returns Result indicating success or failure
52
+ */
53
+ deserialize(data, graph) {
54
+ try {
55
+ // Clear existing data
56
+ graph.clear();
57
+ // Add nodes first
58
+ for (const node of data.nodes) {
59
+ const result = graph.addNode(node);
60
+ if (!isOk(result)) {
61
+ return err(new Error(`Failed to add node ${node.id}: ${result.error.message}`));
62
+ }
63
+ }
64
+ // Add edges
65
+ for (const edge of data.edges) {
66
+ const result = graph.addEdge(edge);
67
+ if (!isOk(result)) {
68
+ return err(new Error(`Failed to add edge ${edge.id}: ${result.error.message}`));
69
+ }
70
+ }
71
+ return ok(undefined);
72
+ }
73
+ catch (error) {
74
+ return err(error instanceof Error ? error : new Error(String(error)));
75
+ }
76
+ }
77
+ /**
78
+ * Convert graph to JSON string
79
+ *
80
+ * @param graph - Graph to convert
81
+ * @param pretty - Whether to format with indentation
82
+ * @returns JSON string
83
+ */
84
+ toJSON(graph, pretty = false) {
85
+ const serializeResult = this.serialize(graph);
86
+ if (!isOk(serializeResult)) {
87
+ return err(serializeResult.error);
88
+ }
89
+ try {
90
+ const json = pretty
91
+ ? JSON.stringify(serializeResult.value, null, 2)
92
+ : JSON.stringify(serializeResult.value);
93
+ return ok(json);
94
+ }
95
+ catch (error) {
96
+ return err(error instanceof Error ? error : new Error(String(error)));
97
+ }
98
+ }
99
+ /**
100
+ * Load graph from JSON string
101
+ *
102
+ * @param json - JSON string
103
+ * @param graph - Target graph
104
+ * @returns Result indicating success or failure
105
+ */
106
+ fromJSON(json, graph) {
107
+ try {
108
+ const data = JSON.parse(json);
109
+ return this.deserialize(data, graph);
110
+ }
111
+ catch (error) {
112
+ return err(error instanceof Error ? error : new Error(`Invalid JSON: ${error}`));
113
+ }
114
+ }
115
+ /**
116
+ * Validate serialized graph data
117
+ *
118
+ * @param data - Data to validate
119
+ * @returns True if valid, false otherwise
120
+ */
121
+ validate(data) {
122
+ try {
123
+ // Check required fields
124
+ if (!data.version || !data.nodes || !data.edges || !data.metadata) {
125
+ return ok(false);
126
+ }
127
+ // Check version
128
+ if (data.version !== FORMAT_VERSION) {
129
+ // Future: handle version migration
130
+ }
131
+ // Build node ID set
132
+ const nodeIds = new Set(data.nodes.map((n) => n.id));
133
+ // Validate edges reference existing nodes
134
+ for (const edge of data.edges) {
135
+ if (!nodeIds.has(edge.source) || !nodeIds.has(edge.target)) {
136
+ return ok(false);
137
+ }
138
+ }
139
+ // Validate metadata
140
+ if (data.metadata.nodeCount !== data.nodes.length) {
141
+ return ok(false);
142
+ }
143
+ if (data.metadata.edgeCount !== data.edges.length) {
144
+ return ok(false);
145
+ }
146
+ return ok(true);
147
+ }
148
+ catch (error) {
149
+ return err(error instanceof Error ? error : new Error(String(error)));
150
+ }
151
+ }
152
+ /**
153
+ * Create a diff between two serialized graphs
154
+ *
155
+ * @param before - Previous state
156
+ * @param after - Current state
157
+ * @returns Diff describing changes
158
+ */
159
+ diff(before, after) {
160
+ try {
161
+ const beforeNodeIds = new Set(before.nodes.map((n) => n.id));
162
+ const afterNodeIds = new Set(after.nodes.map((n) => n.id));
163
+ const beforeEdgeIds = new Set(before.edges.map((e) => e.id));
164
+ const afterEdgeIds = new Set(after.edges.map((e) => e.id));
165
+ const addedNodes = after.nodes.filter((n) => !beforeNodeIds.has(n.id));
166
+ const removedNodes = before.nodes.filter((n) => !afterNodeIds.has(n.id));
167
+ const addedEdges = after.edges.filter((e) => !beforeEdgeIds.has(e.id));
168
+ const removedEdges = before.edges.filter((e) => !afterEdgeIds.has(e.id));
169
+ return ok({
170
+ addedNodes,
171
+ removedNodes,
172
+ addedEdges,
173
+ removedEdges,
174
+ hasChanges: addedNodes.length > 0 ||
175
+ removedNodes.length > 0 ||
176
+ addedEdges.length > 0 ||
177
+ removedEdges.length > 0,
178
+ });
179
+ }
180
+ catch (error) {
181
+ return err(error instanceof Error ? error : new Error(String(error)));
182
+ }
183
+ }
184
+ /**
185
+ * Merge two graphs
186
+ *
187
+ * @param base - Base graph
188
+ * @param other - Graph to merge in
189
+ * @returns Merged graph data
190
+ */
191
+ merge(base, other) {
192
+ try {
193
+ const baseNodeIds = new Set(base.nodes.map((n) => n.id));
194
+ const baseEdgeIds = new Set(base.edges.map((e) => e.id));
195
+ // Add nodes from other that don't exist in base
196
+ const mergedNodes = [
197
+ ...base.nodes,
198
+ ...other.nodes.filter((n) => !baseNodeIds.has(n.id)),
199
+ ];
200
+ // Add edges from other that don't exist in base
201
+ const mergedEdges = [
202
+ ...base.edges,
203
+ ...other.edges.filter((e) => !baseEdgeIds.has(e.id)),
204
+ ];
205
+ return ok({
206
+ version: FORMAT_VERSION,
207
+ nodes: mergedNodes,
208
+ edges: mergedEdges,
209
+ metadata: {
210
+ nodeCount: mergedNodes.length,
211
+ edgeCount: mergedEdges.length,
212
+ createdAt: base.metadata.createdAt,
213
+ updatedAt: new Date().toISOString(),
214
+ },
215
+ });
216
+ }
217
+ catch (error) {
218
+ return err(error instanceof Error ? error : new Error(String(error)));
219
+ }
220
+ }
221
+ }
222
+ //# sourceMappingURL=graph-persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-persistence.js","sourceRoot":"","sources":["../../src/persistence/graph-persistence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Persistence module exports
3
+ *
4
+ * @module @nahisaho/katashiro-knowledge
5
+ */
6
+ export { GraphPersistence, type SerializedGraph, type GraphMetadata, type GraphDiff, } from './graph-persistence.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Persistence module exports
3
+ *
4
+ * @module @nahisaho/katashiro-knowledge
5
+ */
6
+ export { GraphPersistence, } from './graph-persistence.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,GAIjB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * GraphQuery - Query engine for KnowledgeGraph
3
+ *
4
+ * Provides query capabilities for searching and filtering graph data
5
+ *
6
+ * @module @nahisaho/katashiro-knowledge
7
+ * @task TSK-042
8
+ */
9
+ import { type Result } from '@nahisaho/katashiro-core';
10
+ import { KnowledgeGraph, type GraphNode, type GraphEdge } from '../graph/knowledge-graph.js';
11
+ /**
12
+ * Query filter definition
13
+ */
14
+ export interface QueryFilter {
15
+ readonly property: string;
16
+ readonly operator: 'eq' | 'ne' | 'gt' | 'lt' | 'gte' | 'lte' | 'contains';
17
+ readonly value: unknown;
18
+ }
19
+ /**
20
+ * Structured query definition
21
+ */
22
+ export interface GraphQueryDef {
23
+ readonly type?: string;
24
+ readonly filters?: QueryFilter[];
25
+ readonly limit?: number;
26
+ readonly offset?: number;
27
+ readonly orderBy?: string;
28
+ readonly orderDirection?: 'asc' | 'desc';
29
+ }
30
+ /**
31
+ * Query result
32
+ */
33
+ export interface QueryResult {
34
+ readonly nodes: GraphNode[];
35
+ readonly totalCount: number;
36
+ readonly executionTime: number;
37
+ }
38
+ /**
39
+ * GraphQuery
40
+ *
41
+ * Query engine for KnowledgeGraph
42
+ */
43
+ export declare class GraphQuery {
44
+ private graph;
45
+ constructor(graph: KnowledgeGraph);
46
+ /**
47
+ * Find all nodes of a given type
48
+ *
49
+ * @param type - Node type to find
50
+ * @returns Array of matching nodes
51
+ */
52
+ findByType(type: string): Result<GraphNode[], Error>;
53
+ /**
54
+ * Find nodes with a specific property value
55
+ *
56
+ * @param property - Property name
57
+ * @param value - Property value
58
+ * @returns Array of matching nodes
59
+ */
60
+ findByProperty(property: string, value: unknown): Result<GraphNode[], Error>;
61
+ /**
62
+ * Find edges with a given predicate
63
+ *
64
+ * @param predicate - Edge predicate
65
+ * @returns Array of matching edges
66
+ */
67
+ findByPredicate(predicate: string): Result<GraphEdge[], Error>;
68
+ /**
69
+ * Find nodes related to a given node
70
+ *
71
+ * @param nodeId - Source node ID
72
+ * @param predicate - Optional predicate filter
73
+ * @returns Array of related nodes
74
+ */
75
+ findRelated(nodeId: string, predicate?: string): Result<GraphNode[], Error>;
76
+ /**
77
+ * Search nodes by label
78
+ *
79
+ * @param query - Search query (case insensitive substring match)
80
+ * @returns Array of matching nodes
81
+ */
82
+ search(query: string): Result<GraphNode[], Error>;
83
+ /**
84
+ * Execute a structured query
85
+ *
86
+ * @param queryDef - Query definition
87
+ * @returns Query result
88
+ */
89
+ execute(queryDef: GraphQueryDef): Result<QueryResult, Error>;
90
+ /**
91
+ * Aggregate nodes by a property
92
+ *
93
+ * @param operation - Aggregation operation
94
+ * @param groupBy - Property to group by
95
+ * @returns Aggregation result
96
+ */
97
+ aggregate(operation: 'count' | 'sum' | 'avg', groupBy: string): Result<Record<string, number>, Error>;
98
+ /**
99
+ * Apply a filter to a node
100
+ */
101
+ private applyFilter;
102
+ }
103
+ //# sourceMappingURL=graph-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-query.d.ts","sourceRoot":"","sources":["../../src/query/graph-query.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,cAAc;IAEzC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;IASpD;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;IAY5E;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;IAS9D;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;IA0B3E;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;IASjD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC;IA6D5D;;;;;;OAMG;IACH,SAAS,CACP,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,EAClC,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC;IAwCxC;;OAEG;IACH,OAAO,CAAC,WAAW;CAyBpB"}