@dollhousemcp/mcp-server 1.7.4 → 1.8.1

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 (43) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/README.github.md +90 -1
  3. package/README.md +1 -1
  4. package/README.md.backup +90 -1
  5. package/README.npm.md +1 -1
  6. package/dist/collection/CollectionBrowser.js +2 -2
  7. package/dist/collection/CollectionSearch.js +3 -3
  8. package/dist/collection/PersonaDetails.js +2 -2
  9. package/dist/config/ConfigManager.d.ts +20 -0
  10. package/dist/config/ConfigManager.d.ts.map +1 -1
  11. package/dist/config/ConfigManager.js +48 -4
  12. package/dist/generated/version.d.ts +2 -2
  13. package/dist/generated/version.js +3 -3
  14. package/dist/handlers/ConfigHandler.d.ts +30 -0
  15. package/dist/handlers/ConfigHandler.d.ts.map +1 -1
  16. package/dist/handlers/ConfigHandler.js +149 -21
  17. package/dist/index.d.ts +4 -6
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +73 -52
  20. package/dist/portfolio/GitHubPortfolioIndexer.d.ts.map +1 -1
  21. package/dist/portfolio/GitHubPortfolioIndexer.js +8 -5
  22. package/dist/portfolio/PortfolioIndexManager.d.ts +1 -1
  23. package/dist/portfolio/PortfolioIndexManager.js +2 -2
  24. package/dist/portfolio/PortfolioRepoManager.d.ts +16 -2
  25. package/dist/portfolio/PortfolioRepoManager.d.ts.map +1 -1
  26. package/dist/portfolio/PortfolioRepoManager.js +95 -18
  27. package/dist/portfolio/PortfolioSyncManager.d.ts.map +1 -1
  28. package/dist/portfolio/PortfolioSyncManager.js +23 -15
  29. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  30. package/dist/security/audit/config/suppressions.js +11 -1
  31. package/dist/server/ServerSetup.d.ts.map +1 -1
  32. package/dist/server/ServerSetup.js +11 -6
  33. package/dist/server/tools/CollectionTools.js +6 -6
  34. package/dist/server/tools/ConfigTools.js +2 -2
  35. package/dist/server/tools/ConfigToolsV2.js +5 -5
  36. package/dist/server/tools/PortfolioTools.d.ts.map +1 -1
  37. package/dist/server/tools/PortfolioTools.js +16 -5
  38. package/dist/server/types.d.ts +2 -0
  39. package/dist/server/types.d.ts.map +1 -1
  40. package/dist/server/types.js +1 -1
  41. package/dist/tools/portfolio/submitToPortfolioTool.d.ts.map +1 -1
  42. package/dist/tools/portfolio/submitToPortfolioTool.js +6 -5
  43. package/package.json +7 -6
@@ -4,6 +4,9 @@
4
4
  */
5
5
  import { ConfigManager } from '../config/ConfigManager.js';
6
6
  import { SecureErrorHandler } from '../security/errorHandler.js';
7
+ import { getFriendlyNullValue } from '../config/wizardTemplates.js';
8
+ // WizardTemplateBuilder imported for future full template migration
9
+ // import { WizardTemplateBuilder } from '../config/wizardTemplates.js';
7
10
  import * as yaml from 'js-yaml';
8
11
  export class ConfigHandler {
9
12
  configManager;
@@ -12,6 +15,20 @@ export class ConfigHandler {
12
15
  }
13
16
  /**
14
17
  * Handle configuration operations via the dollhouse_config tool
18
+ *
19
+ * @param options - Configuration operation options
20
+ * @param options.action - The action to perform (get, set, reset, export, import, wizard)
21
+ * @param options.setting - Optional setting path for get/set operations
22
+ * @param options.value - Optional value for set operations
23
+ * @param options.section - Optional section for filtering
24
+ * @param options.format - Optional format for export (yaml or json)
25
+ * @param options.data - Optional data for import operations
26
+ * @param indicator - Optional indicator string for persona context
27
+ * @returns Promise resolving to content object with operation result
28
+ * @async
29
+ *
30
+ * @note The wizard action is async and will await the handleWizard method
31
+ * @since v1.4.0 - handleWizard made async for better config fetching
15
32
  */
16
33
  async handleConfigOperation(options, indicator = '') {
17
34
  try {
@@ -28,7 +45,7 @@ export class ConfigHandler {
28
45
  case 'import':
29
46
  return this.handleImport(options, indicator);
30
47
  case 'wizard':
31
- return this.handleWizard(indicator);
48
+ return await this.handleWizard(indicator);
32
49
  default:
33
50
  return {
34
51
  content: [{
@@ -66,17 +83,18 @@ export class ConfigHandler {
66
83
  content: [{
67
84
  type: "text",
68
85
  text: `${indicator}⚙️ **Configuration Setting**\n\n` +
69
- `**${options.setting}**: ${JSON.stringify(value, null, 2)}`
86
+ `**${options.setting}**: ${this.formatValue(value)}`
70
87
  }]
71
88
  };
72
89
  }
73
- // Get all settings
90
+ // Get all settings - make them user-friendly
74
91
  const config = this.configManager.getConfig();
92
+ const friendlyConfig = this.makeFriendlyConfig(config);
75
93
  return {
76
94
  content: [{
77
95
  type: "text",
78
96
  text: `${indicator}⚙️ **DollhouseMCP Configuration**\n\n` +
79
- `\`\`\`yaml\n${yaml.dump(config, { lineWidth: -1 })}\`\`\``
97
+ `\`\`\`yaml\n${yaml.dump(friendlyConfig, { lineWidth: -1 })}\`\`\``
80
98
  }]
81
99
  };
82
100
  }
@@ -176,27 +194,137 @@ export class ConfigHandler {
176
194
  }]
177
195
  };
178
196
  }
179
- handleWizard(indicator) {
180
- // Interactive configuration wizard
197
+ /**
198
+ * Handle the configuration wizard
199
+ * @returns Promise with wizard interface content
200
+ * @async
201
+ */
202
+ async handleWizard(indicator) {
203
+ // Get current configuration to show the user
204
+ const config = this.configManager.getConfig();
205
+ const friendlyConfig = this.makeFriendlyConfig(config);
206
+ // Build wizard content using templates
207
+ // Note: Template builder is imported for future use when we fully migrate to template system
208
+ const wizardContent = `${indicator}🧙 **Configuration Wizard - Let's Set Up DollhouseMCP!**
209
+
210
+ I'll help you configure DollhouseMCP step by step. First, let me show you your current settings:
211
+
212
+ **📊 Current Configuration:**
213
+ \`\`\`yaml
214
+ ${yaml.dump(friendlyConfig, { lineWidth: -1 })}
215
+ \`\`\`
216
+
217
+ **Now, let's configure your settings one by one!**
218
+
219
+ 🎯 **Step 1: User Identity**
220
+ This tags your creations so you can find them later. Everything is saved locally on your computer.
221
+ - To set a username: Say "Set my username to [your-name]"
222
+ - To stay anonymous: Say "I'll stay anonymous"
223
+ - Current: ${friendlyConfig.user?.username || '(not set - anonymous mode)'}
224
+
225
+ 🔐 **Step 2: GitHub Integration (Optional)**
226
+ Connect to GitHub to share your creations and browse community content.
227
+ - To connect GitHub: Say "Connect my GitHub account"
228
+ - To skip: Say "Skip GitHub for now"
229
+ - Current: ${friendlyConfig.github?.auth_token ? 'Connected' : '(not connected)'}
230
+
231
+ 🔄 **Step 3: Portfolio Sync (Optional)**
232
+ Automatically backup your creations to GitHub.
233
+ - To enable: Say "Enable auto-sync"
234
+ - To keep manual: Say "I'll sync manually"
235
+ - Current: ${friendlyConfig.portfolio?.auto_sync ? 'Enabled' : 'Manual'}
236
+
237
+ 🎨 **Step 4: Display Preferences**
238
+ Customize how DollhouseMCP shows information.
239
+ - To show active persona: Say "Show persona indicators"
240
+ - To keep minimal: Say "Use minimal display"
241
+ - Current: ${friendlyConfig.indicator?.enabled ? 'Enabled' : 'Minimal'}
242
+
243
+ 💡 **Quick Setup**: Say "Configure the basics" to set just username and GitHub
244
+ 📝 **Detailed Setup**: Say "Configure everything" to go through all options
245
+ ⏭️ **Skip for Now**: Say "Skip wizard" to use anonymous mode
246
+
247
+ ✨ You can always change these settings later by saying "Open configuration wizard"`;
181
248
  return {
182
249
  content: [{
183
250
  type: "text",
184
- text: `${indicator}🧙 **Configuration Wizard**\n\n` +
185
- `The configuration wizard helps you set up DollhouseMCP.\n\n` +
186
- `**Key Settings to Configure:**\n\n` +
187
- `1. **User Identity**\n` +
188
- ` \`dollhouse_config action: "set", setting: "user.username", value: "your-username"\`\n\n` +
189
- `2. **GitHub Portfolio**\n` +
190
- ` \`dollhouse_config action: "set", setting: "github.portfolio.repository_name", value: "dollhouse-portfolio"\`\n\n` +
191
- `3. **Sync Settings**\n` +
192
- ` \`dollhouse_config action: "set", setting: "sync.enabled", value: true\`\n` +
193
- ` \`dollhouse_config action: "set", setting: "sync.bulk.upload_enabled", value: true\`\n\n` +
194
- `4. **Privacy Settings**\n` +
195
- ` \`dollhouse_config action: "set", setting: "sync.privacy.scan_for_secrets", value: true\`\n` +
196
- ` \`dollhouse_config action: "set", setting: "sync.privacy.respect_local_only", value: true\`\n\n` +
197
- `Run \`dollhouse_config action: "get"\` to see current settings.`
251
+ text: wizardContent
198
252
  }]
199
253
  };
200
254
  }
255
+ /**
256
+ * Format a value for user-friendly display
257
+ * Replaces null/undefined with helpful messages
258
+ */
259
+ formatValue(value) {
260
+ if (value === null || value === undefined) {
261
+ return "(not set)";
262
+ }
263
+ if (typeof value === 'string' && value.trim() === '') {
264
+ return "(empty)";
265
+ }
266
+ return JSON.stringify(value, null, 2);
267
+ }
268
+ /**
269
+ * Make configuration display user-friendly for non-technical users
270
+ * Replaces null values with helpful explanations
271
+ * Uses centralized friendly values for i18n support
272
+ */
273
+ makeFriendlyConfig(config) {
274
+ const friendly = JSON.parse(JSON.stringify(config)); // Deep clone
275
+ // Helper function to replace null values with friendly messages
276
+ const replaceFriendlyValue = (obj, path = '') => {
277
+ for (const key in obj) {
278
+ const currentPath = path ? `${path}.${key}` : key;
279
+ if (obj[key] === null) {
280
+ obj[key] = getFriendlyNullValue(currentPath);
281
+ }
282
+ else if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
283
+ replaceFriendlyValue(obj[key], currentPath);
284
+ }
285
+ }
286
+ };
287
+ // Apply friendly replacements
288
+ replaceFriendlyValue(friendly);
289
+ // Legacy manual replacements for backward compatibility
290
+ // (These will be removed once we fully migrate to template system)
291
+ if (friendly.sync) {
292
+ if (friendly.sync.last_sync === "(not set)") {
293
+ friendly.sync.last_sync = "(never synced)";
294
+ }
295
+ if (friendly.sync.remote_url === "(not set)") {
296
+ friendly.sync.remote_url = "(no remote repository)";
297
+ }
298
+ }
299
+ // Display settings
300
+ if (friendly.display) {
301
+ // These are typically booleans, but handle nulls just in case
302
+ if (friendly.display.show_persona_indicator === null) {
303
+ friendly.display.show_persona_indicator = true; // Default value
304
+ }
305
+ }
306
+ // Collection settings
307
+ if (friendly.collection) {
308
+ if (friendly.collection.auto_submit === null) {
309
+ friendly.collection.auto_submit = false; // Default value
310
+ }
311
+ if (friendly.collection.last_cache_update === null) {
312
+ friendly.collection.last_cache_update = "(cache not initialized)";
313
+ }
314
+ }
315
+ // Wizard settings - show friendly status
316
+ if (friendly.wizard) {
317
+ if (friendly.wizard.completed === false && friendly.wizard.dismissed === false) {
318
+ friendly.wizard._status = "⏳ Ready to run (not completed)";
319
+ }
320
+ else if (friendly.wizard.completed === true) {
321
+ friendly.wizard._status = "✅ Completed";
322
+ }
323
+ else if (friendly.wizard.dismissed === true) {
324
+ friendly.wizard._status = "⏭️ Dismissed";
325
+ }
326
+ }
327
+ return friendly;
328
+ }
201
329
  }
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEtBQUssSUFBSSxNQUFNLFNBQVMsQ0FBQztBQVdoQyxNQUFNLE9BQU8sYUFBYTtJQUNoQixhQUFhLENBQWdCO0lBRXJDO1FBQ0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQStCLEVBQUUsWUFBb0IsRUFBRTtRQUNqRixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFdEMsUUFBUSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssS0FBSztvQkFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUU1QyxLQUFLLEtBQUs7b0JBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFNUMsS0FBSyxPQUFPO29CQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRTlDLEtBQUssUUFBUTtvQkFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUUvQyxLQUFLLFFBQVE7b0JBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFL0MsS0FB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QUF5RDtpQkFDaEUsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWlCO1FBQ3BDLG1DQUFtQztRQUNuQyxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLEdBQUcsU0FBUyxpQ0FBaUM7d0JBQzdDLDZEQUE2RDt3QkFDN0Qsb0NBQW9DO3dCQUNwQyx3QkFBd0I7d0JBQ3hCLDZGQUE2Rjt3QkFDN0YsMkJBQTJCO3dCQUMzQixzSEFBc0g7d0JBQ3RILHdCQUF3Qjt3QkFDeEIsK0VBQStFO3dCQUMvRSw2RkFBNkY7d0JBQzdGLDJCQUEyQjt3QkFDM0IsZ0dBQWdHO3dCQUNoRyxvR0FBb0c7d0JBQ3BHLGlFQUFpRTtpQkFDeEUsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gaGFuZGxlciBmb3IgdGhlIGRvbGxob3VzZV9jb25maWcgTUNQIHRvb2xcbiAqIFByb3ZpZGVzIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBhbGwgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IG9wZXJhdGlvbnNcbiAqL1xuXG5pbXBvcnQgeyBDb25maWdNYW5hZ2VyIH0gZnJvbSAnLi4vY29uZmlnL0NvbmZpZ01hbmFnZXIuanMnO1xuaW1wb3J0IHsgU2VjdXJlRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vc2VjdXJpdHkvZXJyb3JIYW5kbGVyLmpzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3BlcmF0aW9uT3B0aW9ucyB7XG4gIGFjdGlvbjogJ2dldCcgfCAnc2V0JyB8ICdyZXNldCcgfCAnZXhwb3J0JyB8ICdpbXBvcnQnIHwgJ3dpemFyZCc7XG4gIHNldHRpbmc/OiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBzZWN0aW9uPzogc3RyaW5nO1xuICBmb3JtYXQ/OiAneWFtbCcgfCAnanNvbic7XG4gIGRhdGE/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDb25maWdIYW5kbGVyIHtcbiAgcHJpdmF0ZSBjb25maWdNYW5hZ2VyOiBDb25maWdNYW5hZ2VyO1xuICBcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb25maWdNYW5hZ2VyID0gQ29uZmlnTWFuYWdlci5nZXRJbnN0YW5jZSgpO1xuICB9XG4gIFxuICAvKipcbiAgICogSGFuZGxlIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyB2aWEgdGhlIGRvbGxob3VzZV9jb25maWcgdG9vbFxuICAgKi9cbiAgYXN5bmMgaGFuZGxlQ29uZmlnT3BlcmF0aW9uKG9wdGlvbnM6IENvbmZpZ09wZXJhdGlvbk9wdGlvbnMsIGluZGljYXRvcjogc3RyaW5nID0gJycpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWdNYW5hZ2VyLmluaXRpYWxpemUoKTtcbiAgICAgIFxuICAgICAgc3dpdGNoIChvcHRpb25zLmFjdGlvbikge1xuICAgICAgICBjYXNlICdnZXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUdldChvcHRpb25zLCBpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVTZXQob3B0aW9ucywgaW5kaWNhdG9yKTtcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXNldChvcHRpb25zLCBpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFeHBvcnQob3B0aW9ucywgaW5kaWNhdG9yKTtcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ2ltcG9ydCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlSW1wb3J0KG9wdGlvbnMsIGluZGljYXRvcik7XG4gICAgICAgIFxuICAgICAgICBjYXNlICd3aXphcmQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVdpemFyZChpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHRleHQ6IGAke2luZGljYXRvcn3inYwgSW52YWxpZCBhY3Rpb24gJyR7b3B0aW9ucy5hY3Rpb259Jy5cXG5cXG5gICtcbiAgICAgICAgICAgICAgICAgICAgYFZhbGlkIGFjdGlvbnM6IGdldCwgc2V0LCByZXNldCwgZXhwb3J0LCBpbXBvcnQsIHdpemFyZGBcbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRFcnJvciA9IFNlY3VyZUVycm9ySGFuZGxlci5zYW5pdGl6ZUVycm9yKGVycm9yKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBDb25maWd1cmF0aW9uIG9wZXJhdGlvbiBmYWlsZWQ6ICR7c2FuaXRpemVkRXJyb3IubWVzc2FnZX1gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVHZXQob3B0aW9uczogQ29uZmlnT3BlcmF0aW9uT3B0aW9ucywgaW5kaWNhdG9yOiBzdHJpbmcpIHtcbiAgICAvLyBHZXQgYSBzcGVjaWZpYyBzZXR0aW5nIG9yIGFsbCBzZXR0aW5nc1xuICAgIGlmIChvcHRpb25zLnNldHRpbmcpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb25maWdNYW5hZ2VyLmdldFNldHRpbmcob3B0aW9ucy5zZXR0aW5nKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBTZXR0aW5nICcke29wdGlvbnMuc2V0dGluZ30nIG5vdCBmb3VuZC5cXG5cXG5gICtcbiAgICAgICAgICAgICAgICAgIGBVc2UgXFxgZG9sbGhvdXNlX2NvbmZpZyBhY3Rpb246IFwiZ2V0XCJcXGAgdG8gc2VlIGFsbCBhdmFpbGFibGUgc2V0dGluZ3MuYFxuICAgICAgICAgIH1dXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKame+4jyAqKkNvbmZpZ3VyYXRpb24gU2V0dGluZyoqXFxuXFxuYCArXG4gICAgICAgICAgICAgICAgYCoqJHtvcHRpb25zLnNldHRpbmd9Kio6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfWBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIEdldCBhbGwgc2V0dGluZ3NcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pqZ77iPICoqRG9sbGhvdXNlTUNQIENvbmZpZ3VyYXRpb24qKlxcblxcbmAgK1xuICAgICAgICAgICAgICBgXFxgXFxgXFxgeWFtbFxcbiR7eWFtbC5kdW1wKGNvbmZpZywgeyBsaW5lV2lkdGg6IC0xIH0pfVxcYFxcYFxcYGBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXQob3B0aW9uczogQ29uZmlnT3BlcmF0aW9uT3B0aW9ucywgaW5kaWNhdG9yOiBzdHJpbmcpIHtcbiAgICAvLyBTZXQgYSBjb25maWd1cmF0aW9uIHZhbHVlXG4gICAgaWYgKCFvcHRpb25zLnNldHRpbmcgfHwgb3B0aW9ucy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGAke2luZGljYXRvcn3inYwgQm90aCAnc2V0dGluZycgYW5kICd2YWx1ZScgYXJlIHJlcXVpcmVkIGZvciBzZXQgb3BlcmF0aW9uLlxcblxcbmAgK1xuICAgICAgICAgICAgICAgIGBFeGFtcGxlOiBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJzZXRcIiwgc2V0dGluZzogXCJzeW5jLmVuYWJsZWRcIiwgdmFsdWU6IHRydWVcXGBgXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBUeXBlIGNvZXJjaW9uIGZvciBjb21tb24gc3RyaW5nLXRvLXR5cGUgY29udmVyc2lvbnNcbiAgICBsZXQgY29lcmNlZFZhbHVlID0gb3B0aW9ucy52YWx1ZTtcbiAgICBcbiAgICAvLyBDb252ZXJ0IHN0cmluZyBib29sZWFucyB0byBhY3R1YWwgYm9vbGVhbnNcbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGxvd2VyVmFsdWUgPSBjb2VyY2VkVmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlclZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgICAgY29lcmNlZFZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobG93ZXJWYWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICBjb2VyY2VkVmFsdWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoL15cXGQrJC8udGVzdChjb2VyY2VkVmFsdWUpKSB7XG4gICAgICAgIC8vIENvbnZlcnQgbnVtZXJpYyBzdHJpbmdzIHRvIG51bWJlcnNcbiAgICAgICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUludChjb2VyY2VkVmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKCFpc05hTihudW1WYWx1ZSkpIHtcbiAgICAgICAgICBjb2VyY2VkVmFsdWUgPSBudW1WYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIudXBkYXRlU2V0dGluZyhvcHRpb25zLnNldHRpbmcsIGNvZXJjZWRWYWx1ZSk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICoqQ29uZmlndXJhdGlvbiBVcGRhdGVkKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYCoqJHtvcHRpb25zLnNldHRpbmd9Kiogc2V0IHRvOiAke0pTT04uc3RyaW5naWZ5KGNvZXJjZWRWYWx1ZSwgbnVsbCwgMil9XFxuXFxuYCArXG4gICAgICAgICAgICAgIGBDaGFuZ2VzIGhhdmUgYmVlbiBzYXZlZCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlLmBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZXNldChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIFJlc2V0IGNvbmZpZ3VyYXRpb24gdG8gZGVmYXVsdHNcbiAgICBpZiAob3B0aW9ucy5zZWN0aW9uKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIucmVzZXRDb25maWcob3B0aW9ucy5zZWN0aW9uKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yffCflIQgKipDb25maWd1cmF0aW9uIFJlc2V0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgU2VjdGlvbiAnJHtvcHRpb25zLnNlY3Rpb259JyBoYXMgYmVlbiByZXNldCB0byBkZWZhdWx0IHZhbHVlcy5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBSZXNldCBhbGwgY29uZmlndXJhdGlvblxuICAgIGF3YWl0IHRoaXMuY29uZmlnTWFuYWdlci5yZXNldENvbmZpZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yffCflIQgKipDb25maWd1cmF0aW9uIFJlc2V0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYEFsbCBzZXR0aW5ncyBoYXZlIGJlZW4gcmVzZXQgdG8gZGVmYXVsdCB2YWx1ZXMuXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBOb3RlOiBVc2VyIGlkZW50aXR5IGFuZCBHaXRIdWIgYXV0aGVudGljYXRpb24gYXJlIHByZXNlcnZlZC5gXG4gICAgICB9XVxuICAgIH07XG4gIH1cbiAgXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbnM6IENvbmZpZ09wZXJhdGlvbk9wdGlvbnMsIGluZGljYXRvcjogc3RyaW5nKSB7XG4gICAgLy8gRXhwb3J0IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdCB8fCAneWFtbCc7XG4gICAgY29uc3QgZXhwb3J0ZWQgPSBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuZXhwb3J0Q29uZmlnKGZvcm1hdCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J98J+TpCAqKkNvbmZpZ3VyYXRpb24gRXhwb3J0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYFxcYFxcYFxcYCR7Zm9ybWF0fVxcbiR7ZXhwb3J0ZWR9XFxgXFxgXFxgXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBZb3UgY2FuIHNhdmUgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpbXBvcnQgaXQgbGF0ZXIuYFxuICAgICAgfV1cbiAgICB9O1xuICB9XG4gIFxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUltcG9ydChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIEltcG9ydCBjb25maWd1cmF0aW9uXG4gICAgaWYgKCFvcHRpb25zLmRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBDb25maWd1cmF0aW9uIGRhdGEgaXMgcmVxdWlyZWQgZm9yIGltcG9ydC5cXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgUHJvdmlkZSBZQU1MIG9yIEpTT04gY29uZmlndXJhdGlvbiBpbiB0aGUgJ2RhdGEnIHBhcmFtZXRlci5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuaW1wb3J0Q29uZmlnKG9wdGlvbnMuZGF0YSk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICoqQ29uZmlndXJhdGlvbiBJbXBvcnRlZCoqXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBDb25maWd1cmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBhbmQgc2F2ZWQuYFxuICAgICAgfV1cbiAgICB9O1xuICB9XG4gIFxuICBwcml2YXRlIGhhbmRsZVdpemFyZChpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIEludGVyYWN0aXZlIGNvbmZpZ3VyYXRpb24gd2l6YXJkXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J98J+nmSAqKkNvbmZpZ3VyYXRpb24gV2l6YXJkKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYFRoZSBjb25maWd1cmF0aW9uIHdpemFyZCBoZWxwcyB5b3Ugc2V0IHVwIERvbGxob3VzZU1DUC5cXG5cXG5gICtcbiAgICAgICAgICAgICAgYCoqS2V5IFNldHRpbmdzIHRvIENvbmZpZ3VyZToqKlxcblxcbmAgK1xuICAgICAgICAgICAgICBgMS4gKipVc2VyIElkZW50aXR5KipcXG5gICtcbiAgICAgICAgICAgICAgYCAgIFxcYGRvbGxob3VzZV9jb25maWcgYWN0aW9uOiBcInNldFwiLCBzZXR0aW5nOiBcInVzZXIudXNlcm5hbWVcIiwgdmFsdWU6IFwieW91ci11c2VybmFtZVwiXFxgXFxuXFxuYCArXG4gICAgICAgICAgICAgIGAyLiAqKkdpdEh1YiBQb3J0Zm9saW8qKlxcbmAgK1xuICAgICAgICAgICAgICBgICAgXFxgZG9sbGhvdXNlX2NvbmZpZyBhY3Rpb246IFwic2V0XCIsIHNldHRpbmc6IFwiZ2l0aHViLnBvcnRmb2xpby5yZXBvc2l0b3J5X25hbWVcIiwgdmFsdWU6IFwiZG9sbGhvdXNlLXBvcnRmb2xpb1wiXFxgXFxuXFxuYCArXG4gICAgICAgICAgICAgIGAzLiAqKlN5bmMgU2V0dGluZ3MqKlxcbmAgK1xuICAgICAgICAgICAgICBgICAgXFxgZG9sbGhvdXNlX2NvbmZpZyBhY3Rpb246IFwic2V0XCIsIHNldHRpbmc6IFwic3luYy5lbmFibGVkXCIsIHZhbHVlOiB0cnVlXFxgXFxuYCArXG4gICAgICAgICAgICAgIGAgICBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJzZXRcIiwgc2V0dGluZzogXCJzeW5jLmJ1bGsudXBsb2FkX2VuYWJsZWRcIiwgdmFsdWU6IHRydWVcXGBcXG5cXG5gICtcbiAgICAgICAgICAgICAgYDQuICoqUHJpdmFjeSBTZXR0aW5ncyoqXFxuYCArXG4gICAgICAgICAgICAgIGAgICBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJzZXRcIiwgc2V0dGluZzogXCJzeW5jLnByaXZhY3kuc2Nhbl9mb3Jfc2VjcmV0c1wiLCB2YWx1ZTogdHJ1ZVxcYFxcbmAgK1xuICAgICAgICAgICAgICBgICAgXFxgZG9sbGhvdXNlX2NvbmZpZyBhY3Rpb246IFwic2V0XCIsIHNldHRpbmc6IFwic3luYy5wcml2YWN5LnJlc3BlY3RfbG9jYWxfb25seVwiLCB2YWx1ZTogdHJ1ZVxcYFxcblxcbmAgK1xuICAgICAgICAgICAgICBgUnVuIFxcYGRvbGxob3VzZV9jb25maWcgYWN0aW9uOiBcImdldFwiXFxgIHRvIHNlZSBjdXJyZW50IHNldHRpbmdzLmBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxufSJdfQ==
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxvRUFBb0U7QUFDcEUsd0VBQXdFO0FBQ3hFLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBV2hDLE1BQU0sT0FBTyxhQUFhO0lBQ2hCLGFBQWEsQ0FBZ0I7SUFFckM7UUFDRSxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBK0IsRUFBRSxZQUFvQixFQUFFO1FBQ2pGLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUV0QyxRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxLQUFLO29CQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRTVDLEtBQUssS0FBSztvQkFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUU1QyxLQUFLLE9BQU87b0JBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFOUMsS0FBSyxRQUFRO29CQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENB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QUN6QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDL0UsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsZ0NBQWdDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7WUFDMUMsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gaGFuZGxlciBmb3IgdGhlIGRvbGxob3VzZV9jb25maWcgTUNQIHRvb2xcbiAqIFByb3ZpZGVzIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBhbGwgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IG9wZXJhdGlvbnNcbiAqL1xuXG5pbXBvcnQgeyBDb25maWdNYW5hZ2VyIH0gZnJvbSAnLi4vY29uZmlnL0NvbmZpZ01hbmFnZXIuanMnO1xuaW1wb3J0IHsgU2VjdXJlRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vc2VjdXJpdHkvZXJyb3JIYW5kbGVyLmpzJztcbmltcG9ydCB7IGdldEZyaWVuZGx5TnVsbFZhbHVlIH0gZnJvbSAnLi4vY29uZmlnL3dpemFyZFRlbXBsYXRlcy5qcyc7XG4vLyBXaXphcmRUZW1wbGF0ZUJ1aWxkZXIgaW1wb3J0ZWQgZm9yIGZ1dHVyZSBmdWxsIHRlbXBsYXRlIG1pZ3JhdGlvblxuLy8gaW1wb3J0IHsgV2l6YXJkVGVtcGxhdGVCdWlsZGVyIH0gZnJvbSAnLi4vY29uZmlnL3dpemFyZFRlbXBsYXRlcy5qcyc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ09wZXJhdGlvbk9wdGlvbnMge1xuICBhY3Rpb246ICdnZXQnIHwgJ3NldCcgfCAncmVzZXQnIHwgJ2V4cG9ydCcgfCAnaW1wb3J0JyB8ICd3aXphcmQnO1xuICBzZXR0aW5nPzogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgc2VjdGlvbj86IHN0cmluZztcbiAgZm9ybWF0PzogJ3lhbWwnIHwgJ2pzb24nO1xuICBkYXRhPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlnSGFuZGxlciB7XG4gIHByaXZhdGUgY29uZmlnTWFuYWdlcjogQ29uZmlnTWFuYWdlcjtcbiAgXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29uZmlnTWFuYWdlciA9IENvbmZpZ01hbmFnZXIuZ2V0SW5zdGFuY2UoKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhhbmRsZSBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMgdmlhIHRoZSBkb2xsaG91c2VfY29uZmlnIHRvb2xcbiAgICogXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcGVyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0aW9ucy5hY3Rpb24gLSBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gKGdldCwgc2V0LCByZXNldCwgZXhwb3J0LCBpbXBvcnQsIHdpemFyZClcbiAgICogQHBhcmFtIG9wdGlvbnMuc2V0dGluZyAtIE9wdGlvbmFsIHNldHRpbmcgcGF0aCBmb3IgZ2V0L3NldCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLnZhbHVlIC0gT3B0aW9uYWwgdmFsdWUgZm9yIHNldCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLnNlY3Rpb24gLSBPcHRpb25hbCBzZWN0aW9uIGZvciBmaWx0ZXJpbmdcbiAgICogQHBhcmFtIG9wdGlvbnMuZm9ybWF0IC0gT3B0aW9uYWwgZm9ybWF0IGZvciBleHBvcnQgKHlhbWwgb3IganNvbilcbiAgICogQHBhcmFtIG9wdGlvbnMuZGF0YSAtIE9wdGlvbmFsIGRhdGEgZm9yIGltcG9ydCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSBpbmRpY2F0b3IgLSBPcHRpb25hbCBpbmRpY2F0b3Igc3RyaW5nIGZvciBwZXJzb25hIGNvbnRleHRcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gY29udGVudCBvYmplY3Qgd2l0aCBvcGVyYXRpb24gcmVzdWx0XG4gICAqIEBhc3luY1xuICAgKiBcbiAgICogQG5vdGUgVGhlIHdpemFyZCBhY3Rpb24gaXMgYXN5bmMgYW5kIHdpbGwgYXdhaXQgdGhlIGhhbmRsZVdpemFyZCBtZXRob2RcbiAgICogQHNpbmNlIHYxLjQuMCAtIGhhbmRsZVdpemFyZCBtYWRlIGFzeW5jIGZvciBiZXR0ZXIgY29uZmlnIGZldGNoaW5nXG4gICAqL1xuICBhc3luYyBoYW5kbGVDb25maWdPcGVyYXRpb24ob3B0aW9uczogQ29uZmlnT3BlcmF0aW9uT3B0aW9ucywgaW5kaWNhdG9yOiBzdHJpbmcgPSAnJykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgXG4gICAgICBzd2l0Y2ggKG9wdGlvbnMuYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2dldCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlR2V0KG9wdGlvbnMsIGluZGljYXRvcik7XG4gICAgICAgIFxuICAgICAgICBjYXNlICdzZXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVNldChvcHRpb25zLCBpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlc2V0KG9wdGlvbnMsIGluZGljYXRvcik7XG4gICAgICAgIFxuICAgICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUV4cG9ydChvcHRpb25zLCBpbmRpY2F0b3IpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnaW1wb3J0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVJbXBvcnQob3B0aW9ucywgaW5kaWNhdG9yKTtcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ3dpemFyZCc6XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlV2l6YXJkKGluZGljYXRvcik7XG4gICAgICAgIFxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBJbnZhbGlkIGFjdGlvbiAnJHtvcHRpb25zLmFjdGlvbn0nLlxcblxcbmAgK1xuICAgICAgICAgICAgICAgICAgICBgVmFsaWQgYWN0aW9uczogZ2V0LCBzZXQsIHJlc2V0LCBleHBvcnQsIGltcG9ydCwgd2l6YXJkYFxuICAgICAgICAgICAgfV1cbiAgICAgICAgICB9O1xuICAgICAgfVxuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IHNhbml0aXplZEVycm9yID0gU2VjdXJlRXJyb3JIYW5kbGVyLnNhbml0aXplRXJyb3IoZXJyb3IpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94p2MIENvbmZpZ3VyYXRpb24gb3BlcmF0aW9uIGZhaWxlZDogJHtzYW5pdGl6ZWRFcnJvci5tZXNzYWdlfWBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIFxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUdldChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIEdldCBhIHNwZWNpZmljIHNldHRpbmcgb3IgYWxsIHNldHRpbmdzXG4gICAgaWYgKG9wdGlvbnMuc2V0dGluZykge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0U2V0dGluZyhvcHRpb25zLnNldHRpbmcpO1xuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94p2MIFNldHRpbmcgJyR7b3B0aW9ucy5zZXR0aW5nfScgbm90IGZvdW5kLlxcblxcbmAgK1xuICAgICAgICAgICAgICAgICAgYFVzZSBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJnZXRcIlxcYCB0byBzZWUgYWxsIGF2YWlsYWJsZSBzZXR0aW5ncy5gXG4gICAgICAgICAgfV1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pqZ77iPICoqQ29uZmlndXJhdGlvbiBTZXR0aW5nKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgKioke29wdGlvbnMuc2V0dGluZ30qKjogJHt0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKX1gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBHZXQgYWxsIHNldHRpbmdzIC0gbWFrZSB0aGVtIHVzZXItZnJpZW5kbHlcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgZnJpZW5kbHlDb25maWcgPSB0aGlzLm1ha2VGcmllbmRseUNvbmZpZyhjb25maWcpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKame+4jyAqKkRvbGxob3VzZU1DUCBDb25maWd1cmF0aW9uKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYFxcYFxcYFxcYHlhbWxcXG4ke3lhbWwuZHVtcChmcmllbmRseUNvbmZpZywgeyBsaW5lV2lkdGg6IC0xIH0pfVxcYFxcYFxcYGBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXQob3B0aW9uczogQ29uZmlnT3BlcmF0aW9uT3B0aW9ucywgaW5kaWNhdG9yOiBzdHJpbmcpIHtcbiAgICAvLyBTZXQgYSBjb25maWd1cmF0aW9uIHZhbHVlXG4gICAgaWYgKCFvcHRpb25zLnNldHRpbmcgfHwgb3B0aW9ucy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGAke2luZGljYXRvcn3inYwgQm90aCAnc2V0dGluZycgYW5kICd2YWx1ZScgYXJlIHJlcXVpcmVkIGZvciBzZXQgb3BlcmF0aW9uLlxcblxcbmAgK1xuICAgICAgICAgICAgICAgIGBFeGFtcGxlOiBcXGBkb2xsaG91c2VfY29uZmlnIGFjdGlvbjogXCJzZXRcIiwgc2V0dGluZzogXCJzeW5jLmVuYWJsZWRcIiwgdmFsdWU6IHRydWVcXGBgXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBUeXBlIGNvZXJjaW9uIGZvciBjb21tb24gc3RyaW5nLXRvLXR5cGUgY29udmVyc2lvbnNcbiAgICBsZXQgY29lcmNlZFZhbHVlID0gb3B0aW9ucy52YWx1ZTtcbiAgICBcbiAgICAvLyBDb252ZXJ0IHN0cmluZyBib29sZWFucyB0byBhY3R1YWwgYm9vbGVhbnNcbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGxvd2VyVmFsdWUgPSBjb2VyY2VkVmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlclZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgICAgY29lcmNlZFZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobG93ZXJWYWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICBjb2VyY2VkVmFsdWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoL15cXGQrJC8udGVzdChjb2VyY2VkVmFsdWUpKSB7XG4gICAgICAgIC8vIENvbnZlcnQgbnVtZXJpYyBzdHJpbmdzIHRvIG51bWJlcnNcbiAgICAgICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUludChjb2VyY2VkVmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKCFpc05hTihudW1WYWx1ZSkpIHtcbiAgICAgICAgICBjb2VyY2VkVmFsdWUgPSBudW1WYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIudXBkYXRlU2V0dGluZyhvcHRpb25zLnNldHRpbmcsIGNvZXJjZWRWYWx1ZSk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICoqQ29uZmlndXJhdGlvbiBVcGRhdGVkKipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYCoqJHtvcHRpb25zLnNldHRpbmd9Kiogc2V0IHRvOiAke0pTT04uc3RyaW5naWZ5KGNvZXJjZWRWYWx1ZSwgbnVsbCwgMil9XFxuXFxuYCArXG4gICAgICAgICAgICAgIGBDaGFuZ2VzIGhhdmUgYmVlbiBzYXZlZCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlLmBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZXNldChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIFJlc2V0IGNvbmZpZ3VyYXRpb24gdG8gZGVmYXVsdHNcbiAgICBpZiAob3B0aW9ucy5zZWN0aW9uKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIucmVzZXRDb25maWcob3B0aW9ucy5zZWN0aW9uKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yffCflIQgKipDb25maWd1cmF0aW9uIFJlc2V0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgU2VjdGlvbiAnJHtvcHRpb25zLnNlY3Rpb259JyBoYXMgYmVlbiByZXNldCB0byBkZWZhdWx0IHZhbHVlcy5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBSZXNldCBhbGwgY29uZmlndXJhdGlvblxuICAgIGF3YWl0IHRoaXMuY29uZmlnTWFuYWdlci5yZXNldENvbmZpZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yffCflIQgKipDb25maWd1cmF0aW9uIFJlc2V0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYEFsbCBzZXR0aW5ncyBoYXZlIGJlZW4gcmVzZXQgdG8gZGVmYXVsdCB2YWx1ZXMuXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBOb3RlOiBVc2VyIGlkZW50aXR5IGFuZCBHaXRIdWIgYXV0aGVudGljYXRpb24gYXJlIHByZXNlcnZlZC5gXG4gICAgICB9XVxuICAgIH07XG4gIH1cbiAgXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbnM6IENvbmZpZ09wZXJhdGlvbk9wdGlvbnMsIGluZGljYXRvcjogc3RyaW5nKSB7XG4gICAgLy8gRXhwb3J0IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdCB8fCAneWFtbCc7XG4gICAgY29uc3QgZXhwb3J0ZWQgPSBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuZXhwb3J0Q29uZmlnKGZvcm1hdCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J98J+TpCAqKkNvbmZpZ3VyYXRpb24gRXhwb3J0KipcXG5cXG5gICtcbiAgICAgICAgICAgICAgYFxcYFxcYFxcYCR7Zm9ybWF0fVxcbiR7ZXhwb3J0ZWR9XFxgXFxgXFxgXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBZb3UgY2FuIHNhdmUgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpbXBvcnQgaXQgbGF0ZXIuYFxuICAgICAgfV1cbiAgICB9O1xuICB9XG4gIFxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUltcG9ydChvcHRpb25zOiBDb25maWdPcGVyYXRpb25PcHRpb25zLCBpbmRpY2F0b3I6IHN0cmluZykge1xuICAgIC8vIEltcG9ydCBjb25maWd1cmF0aW9uXG4gICAgaWYgKCFvcHRpb25zLmRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCBDb25maWd1cmF0aW9uIGRhdGEgaXMgcmVxdWlyZWQgZm9yIGltcG9ydC5cXG5cXG5gICtcbiAgICAgICAgICAgICAgICBgUHJvdmlkZSBZQU1MIG9yIEpTT04gY29uZmlndXJhdGlvbiBpbiB0aGUgJ2RhdGEnIHBhcmFtZXRlci5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ01hbmFnZXIuaW1wb3J0Q29uZmlnKG9wdGlvbnMuZGF0YSk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICoqQ29uZmlndXJhdGlvbiBJbXBvcnRlZCoqXFxuXFxuYCArXG4gICAgICAgICAgICAgIGBDb25maWd1cmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBhbmQgc2F2ZWQuYFxuICAgICAgfV1cbiAgICB9O1xuICB9XG4gIFxuICAvKipcbiAgICogSGFuZGxlIHRoZSBjb25maWd1cmF0aW9uIHdpemFyZFxuICAgKiBAcmV0dXJucyBQcm9taXNlIHdpdGggd2l6YXJkIGludGVyZmFjZSBjb250ZW50XG4gICAqIEBhc3luY1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVXaXphcmQoaW5kaWNhdG9yOiBzdHJpbmcpIHtcbiAgICAvLyBHZXQgY3VycmVudCBjb25maWd1cmF0aW9uIHRvIHNob3cgdGhlIHVzZXJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgZnJpZW5kbHlDb25maWcgPSB0aGlzLm1ha2VGcmllbmRseUNvbmZpZyhjb25maWcpO1xuICAgIFxuICAgIC8vIEJ1aWxkIHdpemFyZCBjb250ZW50IHVzaW5nIHRlbXBsYXRlc1xuICAgIC8vIE5vdGU6IFRlbXBsYXRlIGJ1aWxkZXIgaXMgaW1wb3J0ZWQgZm9yIGZ1dHVyZSB1c2Ugd2hlbiB3ZSBmdWxseSBtaWdyYXRlIHRvIHRlbXBsYXRlIHN5c3RlbVxuICAgIGNvbnN0IHdpemFyZENvbnRlbnQgPSBgJHtpbmRpY2F0b3J98J+nmSAqKkNvbmZpZ3VyYXRpb24gV2l6YXJkIC0gTGV0J3MgU2V0IFVwIERvbGxob3VzZU1DUCEqKlxuXG5JJ2xsIGhlbHAgeW91IGNvbmZpZ3VyZSBEb2xsaG91c2VNQ1Agc3RlcCBieSBzdGVwLiBGaXJzdCwgbGV0IG1lIHNob3cgeW91IHlvdXIgY3VycmVudCBzZXR0aW5nczpcblxuKirwn5OKIEN1cnJlbnQgQ29uZmlndXJhdGlvbjoqKlxuXFxgXFxgXFxgeWFtbFxuJHt5YW1sLmR1bXAoZnJpZW5kbHlDb25maWcsIHsgbGluZVdpZHRoOiAtMSB9KX1cblxcYFxcYFxcYFxuXG4qKk5vdywgbGV0J3MgY29uZmlndXJlIHlvdXIgc2V0dGluZ3Mgb25lIGJ5IG9uZSEqKlxuXG7wn46vICoqU3RlcCAxOiBVc2VyIElkZW50aXR5KipcblRoaXMgdGFncyB5b3VyIGNyZWF0aW9ucyBzbyB5b3UgY2FuIGZpbmQgdGhlbSBsYXRlci4gRXZlcnl0aGluZyBpcyBzYXZlZCBsb2NhbGx5IG9uIHlvdXIgY29tcHV0ZXIuXG4tIFRvIHNldCBhIHVzZXJuYW1lOiBTYXkgXCJTZXQgbXkgdXNlcm5hbWUgdG8gW3lvdXItbmFtZV1cIlxuLSBUbyBzdGF5IGFub255bW91czogU2F5IFwiSSdsbCBzdGF5IGFub255bW91c1wiXG4tIEN1cnJlbnQ6ICR7ZnJpZW5kbHlDb25maWcudXNlcj8udXNlcm5hbWUgfHwgJyhub3Qgc2V0IC0gYW5vbnltb3VzIG1vZGUpJ31cblxu8J+UkCAqKlN0ZXAgMjogR2l0SHViIEludGVncmF0aW9uIChPcHRpb25hbCkqKlxuQ29ubmVjdCB0byBHaXRIdWIgdG8gc2hhcmUgeW91ciBjcmVhdGlvbnMgYW5kIGJyb3dzZSBjb21tdW5pdHkgY29udGVudC5cbi0gVG8gY29ubmVjdCBHaXRIdWI6IFNheSBcIkNvbm5lY3QgbXkgR2l0SHViIGFjY291bnRcIlxuLSBUbyBza2lwOiBTYXkgXCJTa2lwIEdpdEh1YiBmb3Igbm93XCJcbi0gQ3VycmVudDogJHtmcmllbmRseUNvbmZpZy5naXRodWI/LmF1dGhfdG9rZW4gPyAnQ29ubmVjdGVkJyA6ICcobm90IGNvbm5lY3RlZCknfVxuXG7wn5SEICoqU3RlcCAzOiBQb3J0Zm9saW8gU3luYyAoT3B0aW9uYWwpKipcbkF1dG9tYXRpY2FsbHkgYmFja3VwIHlvdXIgY3JlYXRpb25zIHRvIEdpdEh1Yi5cbi0gVG8gZW5hYmxlOiBTYXkgXCJFbmFibGUgYXV0by1zeW5jXCJcbi0gVG8ga2VlcCBtYW51YWw6IFNheSBcIkknbGwgc3luYyBtYW51YWxseVwiXG4tIEN1cnJlbnQ6ICR7ZnJpZW5kbHlDb25maWcucG9ydGZvbGlvPy5hdXRvX3N5bmMgPyAnRW5hYmxlZCcgOiAnTWFudWFsJ31cblxu8J+OqCAqKlN0ZXAgNDogRGlzcGxheSBQcmVmZXJlbmNlcyoqXG5DdXN0b21pemUgaG93IERvbGxob3VzZU1DUCBzaG93cyBpbmZvcm1hdGlvbi5cbi0gVG8gc2hvdyBhY3RpdmUgcGVyc29uYTogU2F5IFwiU2hvdyBwZXJzb25hIGluZGljYXRvcnNcIlxuLSBUbyBrZWVwIG1pbmltYWw6IFNheSBcIlVzZSBtaW5pbWFsIGRpc3BsYXlcIlxuLSBDdXJyZW50OiAke2ZyaWVuZGx5Q29uZmlnLmluZGljYXRvcj8uZW5hYmxlZCA/ICdFbmFibGVkJyA6ICdNaW5pbWFsJ31cblxu8J+SoSAqKlF1aWNrIFNldHVwKio6IFNheSBcIkNvbmZpZ3VyZSB0aGUgYmFzaWNzXCIgdG8gc2V0IGp1c3QgdXNlcm5hbWUgYW5kIEdpdEh1Ylxu8J+TnSAqKkRldGFpbGVkIFNldHVwKio6IFNheSBcIkNvbmZpZ3VyZSBldmVyeXRoaW5nXCIgdG8gZ28gdGhyb3VnaCBhbGwgb3B0aW9uc1xu4o+t77iPICoqU2tpcCBmb3IgTm93Kio6IFNheSBcIlNraXAgd2l6YXJkXCIgdG8gdXNlIGFub255bW91cyBtb2RlXG5cbuKcqCBZb3UgY2FuIGFsd2F5cyBjaGFuZ2UgdGhlc2Ugc2V0dGluZ3MgbGF0ZXIgYnkgc2F5aW5nIFwiT3BlbiBjb25maWd1cmF0aW9uIHdpemFyZFwiYDtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IHdpemFyZENvbnRlbnRcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEZvcm1hdCBhIHZhbHVlIGZvciB1c2VyLWZyaWVuZGx5IGRpc3BsYXlcbiAgICogUmVwbGFjZXMgbnVsbC91bmRlZmluZWQgd2l0aCBoZWxwZnVsIG1lc3NhZ2VzXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gXCIobm90IHNldClcIjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgcmV0dXJuIFwiKGVtcHR5KVwiO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xuICB9XG4gIFxuICAvKipcbiAgICogTWFrZSBjb25maWd1cmF0aW9uIGRpc3BsYXkgdXNlci1mcmllbmRseSBmb3Igbm9uLXRlY2huaWNhbCB1c2Vyc1xuICAgKiBSZXBsYWNlcyBudWxsIHZhbHVlcyB3aXRoIGhlbHBmdWwgZXhwbGFuYXRpb25zXG4gICAqIFVzZXMgY2VudHJhbGl6ZWQgZnJpZW5kbHkgdmFsdWVzIGZvciBpMThuIHN1cHBvcnRcbiAgICovXG4gIHByaXZhdGUgbWFrZUZyaWVuZGx5Q29uZmlnKGNvbmZpZzogYW55KTogYW55IHtcbiAgICBjb25zdCBmcmllbmRseSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7IC8vIERlZXAgY2xvbmVcbiAgICBcbiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVwbGFjZSBudWxsIHZhbHVlcyB3aXRoIGZyaWVuZGx5IG1lc3NhZ2VzXG4gICAgY29uc3QgcmVwbGFjZUZyaWVuZGx5VmFsdWUgPSAob2JqOiBhbnksIHBhdGg6IHN0cmluZyA9ICcnKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcbiAgICAgICAgXG4gICAgICAgIGlmIChvYmpba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgIG9ialtrZXldID0gZ2V0RnJpZW5kbHlOdWxsVmFsdWUoY3VycmVudFBhdGgpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkob2JqW2tleV0pKSB7XG4gICAgICAgICAgcmVwbGFjZUZyaWVuZGx5VmFsdWUob2JqW2tleV0sIGN1cnJlbnRQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgXG4gICAgLy8gQXBwbHkgZnJpZW5kbHkgcmVwbGFjZW1lbnRzXG4gICAgcmVwbGFjZUZyaWVuZGx5VmFsdWUoZnJpZW5kbHkpO1xuICAgIFxuICAgIC8vIExlZ2FjeSBtYW51YWwgcmVwbGFjZW1lbnRzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgLy8gKFRoZXNlIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHdlIGZ1bGx5IG1pZ3JhdGUgdG8gdGVtcGxhdGUgc3lzdGVtKVxuICAgIGlmIChmcmllbmRseS5zeW5jKSB7XG4gICAgICBpZiAoZnJpZW5kbHkuc3luYy5sYXN0X3N5bmMgPT09IFwiKG5vdCBzZXQpXCIpIHtcbiAgICAgICAgZnJpZW5kbHkuc3luYy5sYXN0X3N5bmMgPSBcIihuZXZlciBzeW5jZWQpXCI7XG4gICAgICB9XG4gICAgICBpZiAoZnJpZW5kbHkuc3luYy5yZW1vdGVfdXJsID09PSBcIihub3Qgc2V0KVwiKSB7XG4gICAgICAgIGZyaWVuZGx5LnN5bmMucmVtb3RlX3VybCA9IFwiKG5vIHJlbW90ZSByZXBvc2l0b3J5KVwiO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBEaXNwbGF5IHNldHRpbmdzXG4gICAgaWYgKGZyaWVuZGx5LmRpc3BsYXkpIHtcbiAgICAgIC8vIFRoZXNlIGFyZSB0eXBpY2FsbHkgYm9vbGVhbnMsIGJ1dCBoYW5kbGUgbnVsbHMganVzdCBpbiBjYXNlXG4gICAgICBpZiAoZnJpZW5kbHkuZGlzcGxheS5zaG93X3BlcnNvbmFfaW5kaWNhdG9yID09PSBudWxsKSB7XG4gICAgICAgIGZyaWVuZGx5LmRpc3BsYXkuc2hvd19wZXJzb25hX2luZGljYXRvciA9IHRydWU7IC8vIERlZmF1bHQgdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gQ29sbGVjdGlvbiBzZXR0aW5nc1xuICAgIGlmIChmcmllbmRseS5jb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoZnJpZW5kbHkuY29sbGVjdGlvbi5hdXRvX3N1Ym1pdCA9PT0gbnVsbCkge1xuICAgICAgICBmcmllbmRseS5jb2xsZWN0aW9uLmF1dG9fc3VibWl0ID0gZmFsc2U7IC8vIERlZmF1bHQgdmFsdWVcbiAgICAgIH1cbiAgICAgIGlmIChmcmllbmRseS5jb2xsZWN0aW9uLmxhc3RfY2FjaGVfdXBkYXRlID09PSBudWxsKSB7XG4gICAgICAgIGZyaWVuZGx5LmNvbGxlY3Rpb24ubGFzdF9jYWNoZV91cGRhdGUgPSBcIihjYWNoZSBub3QgaW5pdGlhbGl6ZWQpXCI7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFdpemFyZCBzZXR0aW5ncyAtIHNob3cgZnJpZW5kbHkgc3RhdHVzXG4gICAgaWYgKGZyaWVuZGx5LndpemFyZCkge1xuICAgICAgaWYgKGZyaWVuZGx5LndpemFyZC5jb21wbGV0ZWQgPT09IGZhbHNlICYmIGZyaWVuZGx5LndpemFyZC5kaXNtaXNzZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGZyaWVuZGx5LndpemFyZC5fc3RhdHVzID0gXCLij7MgUmVhZHkgdG8gcnVuIChub3QgY29tcGxldGVkKVwiO1xuICAgICAgfSBlbHNlIGlmIChmcmllbmRseS53aXphcmQuY29tcGxldGVkID09PSB0cnVlKSB7XG4gICAgICAgIGZyaWVuZGx5LndpemFyZC5fc3RhdHVzID0gXCLinIUgQ29tcGxldGVkXCI7XG4gICAgICB9IGVsc2UgaWYgKGZyaWVuZGx5LndpemFyZC5kaXNtaXNzZWQgPT09IHRydWUpIHtcbiAgICAgICAgZnJpZW5kbHkud2l6YXJkLl9zdGF0dXMgPSBcIuKPre+4jyBEaXNtaXNzZWRcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZyaWVuZGx5O1xuICB9XG59Il19
package/dist/index.d.ts CHANGED
@@ -28,6 +28,7 @@ export declare class DollhouseMCPServer implements IToolHandler {
28
28
  private migrationManager;
29
29
  private skillManager;
30
30
  private templateManager;
31
+ private templateRenderer;
31
32
  private agentManager;
32
33
  constructor();
33
34
  private initializePortfolio;
@@ -408,14 +409,11 @@ export declare class DollhouseMCPServer implements IToolHandler {
408
409
  */
409
410
  syncPortfolio(options: {
410
411
  direction: string;
412
+ mode?: string;
411
413
  force: boolean;
412
414
  dryRun: boolean;
413
- }): Promise<{
414
- content: {
415
- type: string;
416
- text: string;
417
- }[];
418
- }>;
415
+ confirmDeletions?: boolean;
416
+ }): Promise<import("./handlers/PortfolioPullHandler.js").PullResult>;
419
417
  /**
420
418
  * Handle configuration operations - delegates to ConfigHandler
421
419
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAkBA,OAAO,EAA8D,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAgBhI,OAAO,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAkC9D,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,MAAM,CAAS;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;;YAoErB,mBAAmB;IA+BjC;;;;OAIG;YACW,sBAAsB;IAqBpC;;;OAGG;YACW,iBAAiB;IA0B/B;;OAEG;YACW,yBAAyB;IAqBvC,OAAO,CAAC,mBAAmB;IAkB3B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;;;;;OAMG;YACW,mBAAmB;IAmCjC;;;OAGG;IAEH;;;OAGG;IACH,OAAO,CAAC,gBAAgB;YAuBV,YAAY;IAsGpB,YAAY;;;;;;IA4CZ,eAAe,CAAC,iBAAiB,EAAE,MAAM;;;;;;IAmCzC,gBAAgB;;;;;;IAuChB,iBAAiB;;;;;;IAiBjB,iBAAiB,CAAC,iBAAiB,EAAE,MAAM;;;;;;IAkC3C,cAAc;;;;;;IAcd,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;;IAyGzB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;IAkG1C,iBAAiB,CAAC,IAAI,EAAE,MAAM;;;;;;IAqF9B,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;IAiF5C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;IAsJ5C,cAAc,CAAC,IAAI,EAAE,MAAM;;;;;;IA8D3B,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;IAmC3D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;IAoCvC,aAAa,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;;;;;;IAuHvH,WAAW,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAA;KAAC;;;;;;IA4O7H,eAAe,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAC;;;;;;IA6GpE,aAAa,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAC;;;;;;IA+NtE,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;;;;;;IA+DhD,gBAAgB,CAAC,KAAK,EAAE,MAAM;;;;;;IA6B9B,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ;;;;;;IAsCzD,oBAAoB,CAAC,IAAI,EAAE,MAAM;;;;;;IA0BjC,cAAc,CAAC,SAAS,EAAE,MAAM;;;;;;IA+ChC,aAAa,CAAC,iBAAiB,EAAE,MAAM;;;;;;IA4QvC,wBAAwB;;;;;;IAiGxB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;IA8DhD,eAAe;;;;;;IAuCf,iBAAiB;;;;;;IAwBvB,OAAO,CAAC,4BAA4B;IAK9B,eAAe;;;;;;IAgNf,eAAe;;;;;;IAgGf,oBAAoB,CAAC,OAAO,GAAE,OAAe;;;;;;YAuGrC,sBAAsB;IAyF9B,eAAe;;;;;;IA8Bf,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM;;;;;;IA2GjC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;;;;;;IAsRxF,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;IA4MnE,eAAe,CAAC,iBAAiB,EAAE,MAAM;;;;;;IAgJ/C;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC;;;;;;IAwGzD;;OAEG;IACG,6BAA6B,CAAC,UAAU,EAAE,OAAO;;;;;;IAkCjD,6BAA6B;;;;;;IAqB7B,kBAAkB;;;;;;IA4DxB;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM;;;;;;IAqCvC;;OAEG;IACG,iBAAiB,CAAC,eAAe,UAAO;;;;;;IAuB9C;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,UAAQ;;;;;;IAyCrD;;OAEG;IAEH;;OAEG;IACG,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM;;;;;;IA2GvC;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAC;;;;;;IA8D/F;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAC;;;;;;IAkD9H;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAC;;;;;;IAkWjF;;OAEG;IACG,qBAAqB,CAAC,OAAO,EAAE,GAAG;;;;;;IAMxC;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,GAAG;;;;;;IAMtC;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B;;;;;;IAuHD;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;;;;;;IAiJD;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;YACW,kBAAkB;IAqBhC;;OAEG;YACW,eAAe;IAiE7B;;;OAGG;YACW,iBAAiB;IA2HzB,GAAG;CAkDV"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}