agentinit 1.6.0 → 1.8.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.
- package/CHANGELOG.md +40 -0
- package/README.md +220 -114
- package/dist/agents/Agent.d.ts +44 -0
- package/dist/agents/Agent.d.ts.map +1 -1
- package/dist/agents/Agent.js +111 -22
- package/dist/agents/Agent.js.map +1 -1
- package/dist/agents/AiderAgent.d.ts +9 -0
- package/dist/agents/AiderAgent.d.ts.map +1 -0
- package/dist/agents/AiderAgent.js +135 -0
- package/dist/agents/AiderAgent.js.map +1 -0
- package/dist/agents/ClaudeAgent.d.ts +4 -0
- package/dist/agents/ClaudeAgent.d.ts.map +1 -1
- package/dist/agents/ClaudeAgent.js +33 -18
- package/dist/agents/ClaudeAgent.js.map +1 -1
- package/dist/agents/ClaudeDesktopAgent.d.ts +5 -0
- package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -1
- package/dist/agents/ClaudeDesktopAgent.js +31 -1
- package/dist/agents/ClaudeDesktopAgent.js.map +1 -1
- package/dist/agents/ClineAgent.d.ts +8 -0
- package/dist/agents/ClineAgent.d.ts.map +1 -0
- package/dist/agents/ClineAgent.js +42 -0
- package/dist/agents/ClineAgent.js.map +1 -0
- package/dist/agents/CodexCliAgent.d.ts +4 -0
- package/dist/agents/CodexCliAgent.d.ts.map +1 -1
- package/dist/agents/CodexCliAgent.js +38 -8
- package/dist/agents/CodexCliAgent.js.map +1 -1
- package/dist/agents/CopilotAgent.d.ts +9 -0
- package/dist/agents/CopilotAgent.d.ts.map +1 -0
- package/dist/agents/CopilotAgent.js +131 -0
- package/dist/agents/CopilotAgent.js.map +1 -0
- package/dist/agents/CursorAgent.d.ts +4 -4
- package/dist/agents/CursorAgent.d.ts.map +1 -1
- package/dist/agents/CursorAgent.js +32 -43
- package/dist/agents/CursorAgent.js.map +1 -1
- package/dist/agents/DroidAgent.d.ts +5 -0
- package/dist/agents/DroidAgent.d.ts.map +1 -1
- package/dist/agents/DroidAgent.js +37 -18
- package/dist/agents/DroidAgent.js.map +1 -1
- package/dist/agents/GeminiCliAgent.d.ts +4 -0
- package/dist/agents/GeminiCliAgent.d.ts.map +1 -1
- package/dist/agents/GeminiCliAgent.js +37 -8
- package/dist/agents/GeminiCliAgent.js.map +1 -1
- package/dist/agents/MarkdownRulesAgent.d.ts +13 -0
- package/dist/agents/MarkdownRulesAgent.d.ts.map +1 -0
- package/dist/agents/MarkdownRulesAgent.js +53 -0
- package/dist/agents/MarkdownRulesAgent.js.map +1 -0
- package/dist/agents/RooCodeAgent.d.ts +9 -0
- package/dist/agents/RooCodeAgent.d.ts.map +1 -0
- package/dist/agents/RooCodeAgent.js +131 -0
- package/dist/agents/RooCodeAgent.js.map +1 -0
- package/dist/agents/WindsurfAgent.d.ts +9 -0
- package/dist/agents/WindsurfAgent.d.ts.map +1 -0
- package/dist/agents/WindsurfAgent.js +127 -0
- package/dist/agents/WindsurfAgent.js.map +1 -0
- package/dist/agents/ZedAgent.d.ts +9 -0
- package/dist/agents/ZedAgent.d.ts.map +1 -0
- package/dist/agents/ZedAgent.js +127 -0
- package/dist/agents/ZedAgent.js.map +1 -0
- package/dist/cli.js +29992 -11107
- package/dist/cli.js.map +1 -1
- package/dist/commands/apply.d.ts +10 -0
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +136 -5
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/detect.d.ts.map +1 -1
- package/dist/commands/detect.js +25 -0
- package/dist/commands/detect.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.d.ts +2 -7
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +541 -110
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +309 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/revert.d.ts +7 -0
- package/dist/commands/revert.d.ts.map +1 -0
- package/dist/commands/revert.js +48 -0
- package/dist/commands/revert.js.map +1 -0
- package/dist/commands/rules.d.ts +3 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +354 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +179 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/sync.d.ts +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +18 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/verifyMcp.d.ts.map +1 -1
- package/dist/commands/verifyMcp.js +27 -5
- package/dist/commands/verifyMcp.js.map +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/mcp.d.ts +1 -0
- package/dist/constants/mcp.d.ts.map +1 -1
- package/dist/constants/mcp.js +2 -0
- package/dist/constants/mcp.js.map +1 -1
- package/dist/core/agentDetector.d.ts.map +1 -1
- package/dist/core/agentDetector.js +8 -2
- package/dist/core/agentDetector.js.map +1 -1
- package/dist/core/agentManager.d.ts.map +1 -1
- package/dist/core/agentManager.js +12 -0
- package/dist/core/agentManager.js.map +1 -1
- package/dist/core/gitignoreManager.d.ts +8 -0
- package/dist/core/gitignoreManager.d.ts.map +1 -0
- package/dist/core/gitignoreManager.js +114 -0
- package/dist/core/gitignoreManager.js.map +1 -0
- package/dist/core/managedState.d.ts +42 -0
- package/dist/core/managedState.d.ts.map +1 -0
- package/dist/core/managedState.js +194 -0
- package/dist/core/managedState.js.map +1 -0
- package/dist/core/mcpClient.d.ts +124 -6
- package/dist/core/mcpClient.d.ts.map +1 -1
- package/dist/core/mcpClient.js +385 -39
- package/dist/core/mcpClient.js.map +1 -1
- package/dist/core/pluginManager.d.ts +134 -0
- package/dist/core/pluginManager.d.ts.map +1 -0
- package/dist/core/pluginManager.js +845 -0
- package/dist/core/pluginManager.js.map +1 -0
- package/dist/core/projectSkills.d.ts +19 -0
- package/dist/core/projectSkills.d.ts.map +1 -0
- package/dist/core/projectSkills.js +105 -0
- package/dist/core/projectSkills.js.map +1 -0
- package/dist/core/propagator.d.ts +8 -1
- package/dist/core/propagator.d.ts.map +1 -1
- package/dist/core/propagator.js +179 -36
- package/dist/core/propagator.js.map +1 -1
- package/dist/core/rulesApplicator.d.ts +0 -4
- package/dist/core/rulesApplicator.d.ts.map +1 -1
- package/dist/core/rulesApplicator.js +8 -39
- package/dist/core/rulesApplicator.js.map +1 -1
- package/dist/core/rulesTemplateLoader.js +2 -2
- package/dist/core/rulesTemplateLoader.js.map +1 -1
- package/dist/core/skillsManager.d.ts +61 -0
- package/dist/core/skillsManager.d.ts.map +1 -0
- package/dist/core/skillsManager.js +407 -0
- package/dist/core/skillsManager.js.map +1 -0
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +4 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/types/index.d.ts +24 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/jsonSchema.d.ts +31 -0
- package/dist/types/jsonSchema.d.ts.map +1 -0
- package/dist/types/jsonSchema.js +6 -0
- package/dist/types/jsonSchema.js.map +1 -0
- package/dist/types/plugins.d.ts +161 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +2 -0
- package/dist/types/plugins.js.map +1 -0
- package/dist/types/skills.d.ts +50 -0
- package/dist/types/skills.d.ts.map +1 -0
- package/dist/types/skills.js +2 -0
- package/dist/types/skills.js.map +1 -0
- package/dist/utils/packageVersion.d.ts +105 -0
- package/dist/utils/packageVersion.d.ts.map +1 -0
- package/dist/utils/packageVersion.js +219 -0
- package/dist/utils/packageVersion.js.map +1 -0
- package/package.json +7 -2
- package/dist/agentinit-1.6.0.tgz +0 -0
- package/dist/registry/mcpRegistry.d.ts +0 -12
- package/dist/registry/mcpRegistry.d.ts.map +0 -1
- package/dist/registry/mcpRegistry.js +0 -114
- package/dist/registry/mcpRegistry.js.map +0 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { AgentManager } from './agentManager.js';
|
|
2
|
+
import type { Agent } from '../agents/Agent.js';
|
|
3
|
+
import type { MCPServerConfig } from '../types/index.js';
|
|
4
|
+
import type { SkillInfo } from '../types/skills.js';
|
|
5
|
+
import type { NormalizedPlugin, PluginSource, PluginFormat, MarketplaceRegistry, MarketplacePlugin, InstalledPlugin, PluginRegistry, PluginInstallOptions, PluginInstallResult, ClaudePluginManifest } from '../types/plugins.js';
|
|
6
|
+
export declare class PluginManager {
|
|
7
|
+
private agentManager;
|
|
8
|
+
private skillsManager;
|
|
9
|
+
constructor(agentManager?: AgentManager);
|
|
10
|
+
/**
|
|
11
|
+
* Resolve a source string into a PluginSource.
|
|
12
|
+
* Supported forms:
|
|
13
|
+
* - local path
|
|
14
|
+
* - full GitHub URL / git URL
|
|
15
|
+
* - marketplace prefix: <marketplace>/<plugin>
|
|
16
|
+
* - GitHub shorthand: owner/repo
|
|
17
|
+
* - marketplace override via --from <marketplace> <plugin>
|
|
18
|
+
*/
|
|
19
|
+
resolveSource(source: string, options?: {
|
|
20
|
+
from?: string | undefined;
|
|
21
|
+
}): PluginSource;
|
|
22
|
+
getMarketplaceIds(): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Get a marketplace registry by ID
|
|
25
|
+
*/
|
|
26
|
+
getMarketplace(id: string): MarketplaceRegistry | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Ensure the marketplace cache is fresh. Clone if missing or stale.
|
|
29
|
+
*/
|
|
30
|
+
ensureMarketplaceCache(registryId: string): Promise<string>;
|
|
31
|
+
private cloneMarketplace;
|
|
32
|
+
/**
|
|
33
|
+
* Find a plugin by name in a marketplace
|
|
34
|
+
*/
|
|
35
|
+
resolveMarketplacePlugin(name: string, registryId: string): Promise<string>;
|
|
36
|
+
/**
|
|
37
|
+
* List all plugins in a marketplace, optionally filtered
|
|
38
|
+
*/
|
|
39
|
+
listMarketplacePlugins(registryId: string, query?: string, category?: string): Promise<MarketplacePlugin[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Auto-detect plugin format from directory contents
|
|
42
|
+
*/
|
|
43
|
+
detectFormat(pluginDir: string): Promise<PluginFormat>;
|
|
44
|
+
/**
|
|
45
|
+
* Parse a plugin directory into a NormalizedPlugin, auto-detecting format
|
|
46
|
+
*/
|
|
47
|
+
parsePlugin(pluginDir: string, source: PluginSource): Promise<NormalizedPlugin>;
|
|
48
|
+
/**
|
|
49
|
+
* Parse Claude plugin format
|
|
50
|
+
*/
|
|
51
|
+
parseClaudePlugin(pluginDir: string, source: PluginSource): Promise<NormalizedPlugin>;
|
|
52
|
+
/**
|
|
53
|
+
* Parse Cursor plugin format
|
|
54
|
+
*/
|
|
55
|
+
parseCursorPlugin(pluginDir: string, source: PluginSource): Promise<NormalizedPlugin>;
|
|
56
|
+
/**
|
|
57
|
+
* Parse generic plugin (just skills/ and .mcp.json, no manifest)
|
|
58
|
+
*/
|
|
59
|
+
parseGenericPlugin(pluginDir: string, source: PluginSource): Promise<NormalizedPlugin>;
|
|
60
|
+
/**
|
|
61
|
+
* Parse .mcp.json from a plugin directory into MCPServerConfig[]
|
|
62
|
+
* Handles the { mcpServers: { name: config } } format used by Claude and Cursor
|
|
63
|
+
*/
|
|
64
|
+
parseMcpJson(pluginDir: string): Promise<MCPServerConfig[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Parse a raw MCP JSON config object into MCPServerConfig[]
|
|
67
|
+
*/
|
|
68
|
+
parseMcpJsonObject(config: any): MCPServerConfig[];
|
|
69
|
+
/**
|
|
70
|
+
* Convert commands/*.md files to SKILL.md format
|
|
71
|
+
*/
|
|
72
|
+
convertCommandsToSkills(pluginDir: string, manifest: ClaudePluginManifest): Promise<SkillInfo[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Convert a single command .md file to a skill
|
|
75
|
+
*/
|
|
76
|
+
private convertSingleCommandToSkill;
|
|
77
|
+
/**
|
|
78
|
+
* Install a plugin from any source into target agents.
|
|
79
|
+
* This is the main one-liner entry point.
|
|
80
|
+
*/
|
|
81
|
+
installPlugin(source: string, projectPath: string, options?: PluginInstallOptions): Promise<PluginInstallResult>;
|
|
82
|
+
/**
|
|
83
|
+
* Install skills from a plugin, deduplicating by shared directory
|
|
84
|
+
*/
|
|
85
|
+
private installPluginSkills;
|
|
86
|
+
/**
|
|
87
|
+
* Apply MCP servers from a plugin to each target agent
|
|
88
|
+
*/
|
|
89
|
+
private applyPluginMcpServers;
|
|
90
|
+
/**
|
|
91
|
+
* Get target agents based on options
|
|
92
|
+
*/
|
|
93
|
+
getTargetAgents(projectPath: string, options?: PluginInstallOptions): Promise<Agent[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Group detected agents by their shared skills directory for interactive prompt.
|
|
96
|
+
* Returns entries like: { dir: '.agents/', agents: [cursor, codex, gemini] }
|
|
97
|
+
*/
|
|
98
|
+
groupAgentsBySkillsDir(projectPath: string, global?: boolean): Promise<Array<{
|
|
99
|
+
dir: string;
|
|
100
|
+
agents: Agent[];
|
|
101
|
+
agentNames: string[];
|
|
102
|
+
}>>;
|
|
103
|
+
/**
|
|
104
|
+
* Read the plugin registry
|
|
105
|
+
*/
|
|
106
|
+
getRegistry(projectPath: string, global?: boolean): Promise<PluginRegistry>;
|
|
107
|
+
/**
|
|
108
|
+
* Save the plugin registry
|
|
109
|
+
*/
|
|
110
|
+
saveRegistry(registry: PluginRegistry, projectPath: string, global?: boolean): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Add an installed plugin to the registry
|
|
113
|
+
*/
|
|
114
|
+
addToRegistry(plugin: InstalledPlugin, projectPath: string, global?: boolean): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* List all installed plugins
|
|
117
|
+
*/
|
|
118
|
+
listPlugins(projectPath: string, options?: {
|
|
119
|
+
global?: boolean;
|
|
120
|
+
agents?: string[];
|
|
121
|
+
}): Promise<InstalledPlugin[]>;
|
|
122
|
+
/**
|
|
123
|
+
* Remove a plugin by name
|
|
124
|
+
*/
|
|
125
|
+
removePlugin(name: string, projectPath: string, options?: {
|
|
126
|
+
global?: boolean;
|
|
127
|
+
agents?: string[];
|
|
128
|
+
yes?: boolean;
|
|
129
|
+
}): Promise<{
|
|
130
|
+
removed: boolean;
|
|
131
|
+
details: string[];
|
|
132
|
+
}>;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=pluginManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginManager.d.ts","sourceRoot":"","sources":["../../src/core/pluginManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,qBAAqB,CAAC;AA2B7B,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,YAAY,CAAC,EAAE,YAAY;IAOvC;;;;;;;;OAQG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,YAAY;IAkEpF,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAI3D;;OAEG;IACG,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YA6CnD,gBAAgB;IAU9B;;OAEG;IACG,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BjF;;OAEG;IACG,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAmDjH;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAY5D;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAarF;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwC3F;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiC3F;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmB5F;;;OAGG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAajE;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,eAAe,EAAE;IA6BlD;;OAEG;IACG,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8BtG;;OAEG;YACW,2BAA2B;IAuCzC;;;OAGG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC;IAqF/B;;OAEG;YACW,mBAAmB;IAgEjC;;OAEG;YACW,qBAAqB;IAkDnC;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAehG;;;OAGG;IACG,sBAAsB,CAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IA4BzE;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAYjF;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlG;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlG;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAezH;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAO,GACnE,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAyHpD"}
|