@dollhousemcp/mcp-server 2.0.11 → 2.0.12-rc.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/CHANGELOG.md +33 -0
- package/dist/config/ConfigManager.d.ts +34 -0
- package/dist/config/ConfigManager.d.ts.map +1 -1
- package/dist/config/ConfigManager.js +46 -1
- package/dist/config/env.d.ts +18 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +89 -2
- package/dist/di/Container.d.ts +1 -0
- package/dist/di/Container.d.ts.map +1 -1
- package/dist/di/Container.js +38 -2
- package/dist/elements/agents/AgentManager.js +2 -2
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.d.ts.map +1 -1
- package/dist/generated/version.js +3 -3
- package/dist/handlers/mcp-aql/GatekeeperSession.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/GatekeeperSession.js +3 -2
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +11 -3
- package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationSchema.js +11 -6
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.js +8 -1
- package/dist/index.js +53 -3
- package/dist/security/InputNormalizer.d.ts +4 -6
- package/dist/security/InputNormalizer.d.ts.map +1 -1
- package/dist/security/InputNormalizer.js +10 -16
- package/dist/security/audit/config/suppressions.d.ts.map +1 -1
- package/dist/security/audit/config/suppressions.js +26 -1
- package/dist/security/constants.d.ts +7 -0
- package/dist/security/constants.d.ts.map +1 -1
- package/dist/security/constants.js +10 -1
- package/dist/security/contentValidator.d.ts.map +1 -1
- package/dist/security/contentValidator.js +14 -6
- package/dist/security/encryption/PatternEncryptor.d.ts.map +1 -1
- package/dist/security/encryption/PatternEncryptor.js +18 -10
- package/dist/security/securityMonitor.d.ts +1 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +1 -1
- package/dist/security/tokenManager.d.ts +18 -2
- package/dist/security/tokenManager.d.ts.map +1 -1
- package/dist/security/tokenManager.js +47 -15
- package/dist/security/validators/unicodeValidator.d.ts +4 -5
- package/dist/security/validators/unicodeValidator.d.ts.map +1 -1
- package/dist/security/validators/unicodeValidator.js +19 -20
- package/dist/services/VerificationNotifier.d.ts.map +1 -1
- package/dist/services/VerificationNotifier.js +15 -13
- package/dist/services/validation/GenericElementValidator.js +5 -5
- package/dist/web/console/IngestRoutes.d.ts +14 -2
- package/dist/web/console/IngestRoutes.d.ts.map +1 -1
- package/dist/web/console/IngestRoutes.js +69 -5
- package/dist/web/console/LeaderElection.d.ts +37 -3
- package/dist/web/console/LeaderElection.d.ts.map +1 -1
- package/dist/web/console/LeaderElection.js +67 -7
- package/dist/web/console/LeaderForwardingSink.d.ts +19 -3
- package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -1
- package/dist/web/console/LeaderForwardingSink.js +44 -9
- package/dist/web/console/PromotionManager.d.ts +29 -0
- package/dist/web/console/PromotionManager.d.ts.map +1 -0
- package/dist/web/console/PromotionManager.js +94 -0
- package/dist/web/console/SessionNames.d.ts +7 -0
- package/dist/web/console/SessionNames.d.ts.map +1 -1
- package/dist/web/console/SessionNames.js +10 -1
- package/dist/web/console/UnifiedConsole.d.ts +26 -1
- package/dist/web/console/UnifiedConsole.d.ts.map +1 -1
- package/dist/web/console/UnifiedConsole.js +143 -20
- package/dist/web/portDiscovery.d.ts +4 -3
- package/dist/web/portDiscovery.d.ts.map +1 -1
- package/dist/web/portDiscovery.js +7 -5
- package/dist/web/public/app.js +35 -18
- package/dist/web/public/consoleAuth.js +152 -0
- package/dist/web/public/index.html +243 -9
- package/dist/web/public/logs.js +1 -1
- package/dist/web/public/metrics.js +3 -3
- package/dist/web/public/permissions.js +1 -1
- package/dist/web/public/security.css +396 -0
- package/dist/web/public/security.js +393 -0
- package/dist/web/public/sessions.css +54 -4
- package/dist/web/public/sessions.js +46 -6
- package/dist/web/public/setup.css +439 -0
- package/dist/web/public/setup.js +490 -18
- package/dist/web/public/styles.css +10 -0
- package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
- package/dist/web/routes/permissionRoutes.js +8 -3
- package/dist/web/routes/setupRoutes.d.ts +4 -0
- package/dist/web/routes/setupRoutes.d.ts.map +1 -1
- package/dist/web/routes/setupRoutes.js +418 -7
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +9 -5
- package/dist/web/server.d.ts +49 -3
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +282 -82
- package/package.json +11 -2
- package/server.json +2 -2
|
@@ -39,8 +39,8 @@ const DEFAULT_CONFIG = {
|
|
|
39
39
|
: env.NODE_ENV === 'production',
|
|
40
40
|
secret: env.DOLLHOUSE_ENCRYPTION_SECRET,
|
|
41
41
|
iterations: 100000,
|
|
42
|
-
// SECURITY FIX: Configurable salt to prevent rainbow table attacks
|
|
43
|
-
// Falls back to default
|
|
42
|
+
// SECURITY FIX: Configurable salt to prevent rainbow table attacks (#1733)
|
|
43
|
+
// Falls back to default with startup warning if not configured
|
|
44
44
|
salt: env.DOLLHOUSE_ENCRYPTION_SALT || 'dollhouse-pattern-encryption-v1',
|
|
45
45
|
};
|
|
46
46
|
/**
|
|
@@ -88,6 +88,11 @@ export class PatternEncryptor {
|
|
|
88
88
|
if (!this.config.secret) {
|
|
89
89
|
throw new Error('DOLLHOUSE_ENCRYPTION_SECRET environment variable is required when encryption is enabled');
|
|
90
90
|
}
|
|
91
|
+
// SEC-05 (#1733): Warn if using the static default salt
|
|
92
|
+
if (!env.DOLLHOUSE_ENCRYPTION_SALT) {
|
|
93
|
+
logger.warn('⚠️ Pattern encryption using default salt. Set DOLLHOUSE_ENCRYPTION_SALT to a random 32+ character string ' +
|
|
94
|
+
'(e.g. `openssl rand -hex 32`) for stronger protection against rainbow table attacks.');
|
|
95
|
+
}
|
|
91
96
|
logger.info('Initializing pattern encryption', {
|
|
92
97
|
algorithm: this.ALGORITHM,
|
|
93
98
|
iterations: this.config.iterations,
|
|
@@ -109,14 +114,14 @@ export class PatternEncryptor {
|
|
|
109
114
|
throw new Error('PatternEncryptor not initialized. Call initialize() first.');
|
|
110
115
|
}
|
|
111
116
|
if (!this.config.enabled) {
|
|
112
|
-
// Encryption disabled
|
|
113
|
-
//
|
|
117
|
+
// Encryption disabled — return mock structure with MOCK: prefix (#1733)
|
|
118
|
+
// so it cannot be confused with real ciphertext
|
|
114
119
|
logger.debug('Encryption disabled, returning mock structure');
|
|
115
120
|
return {
|
|
116
|
-
encryptedData: Buffer.from(pattern).toString('base64')
|
|
121
|
+
encryptedData: `MOCK:${Buffer.from(pattern).toString('base64')}`,
|
|
117
122
|
algorithm: this.ALGORITHM,
|
|
118
|
-
iv:
|
|
119
|
-
authTag:
|
|
123
|
+
iv: '',
|
|
124
|
+
authTag: '',
|
|
120
125
|
};
|
|
121
126
|
}
|
|
122
127
|
if (!pattern || pattern.length === 0) {
|
|
@@ -167,9 +172,12 @@ export class PatternEncryptor {
|
|
|
167
172
|
throw new Error('PatternEncryptor not initialized. Call initialize() first.');
|
|
168
173
|
}
|
|
169
174
|
if (!this.config.enabled) {
|
|
170
|
-
// Encryption disabled
|
|
175
|
+
// Encryption disabled — decode mock data, stripping MOCK: prefix (#1733)
|
|
171
176
|
logger.debug('Encryption disabled, decoding mock structure');
|
|
172
|
-
|
|
177
|
+
const data = encrypted.encryptedData.startsWith('MOCK:')
|
|
178
|
+
? encrypted.encryptedData.slice(5)
|
|
179
|
+
: encrypted.encryptedData;
|
|
180
|
+
return Buffer.from(data, 'base64').toString('utf8');
|
|
173
181
|
}
|
|
174
182
|
if (!this.encryptionKey) {
|
|
175
183
|
throw new Error('Encryption key not available');
|
|
@@ -309,4 +317,4 @@ export class PatternEncryptor {
|
|
|
309
317
|
this.secureReset();
|
|
310
318
|
}
|
|
311
319
|
}
|
|
312
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0dGVybkVuY3J5cHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZWN1cml0eS9lbmNyeXB0aW9uL1BhdHRlcm5FbmNyeXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFxQzFDOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQXFCO0lBQ3ZDLDBEQUEwRDtJQUMxRCxzRUFBc0U7SUFDdEUsT0FBTyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEI7UUFDdkMsQ0FBQyxDQUFDLEtBQUs7UUFDUCxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLENBQUMsMkJBQTJCO0lBQ3ZDLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLG1FQUFtRTtJQUNuRSwrQ0FBK0M7SUFDL0MsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUIsSUFBSSxpQ0FBaUM7Q0FDekUsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1YsU0FBUyxHQUFHLGFBQWEsQ0FBQztJQUMxQixVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVztJQUM1QixTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVztJQUMzQixlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVztJQUUxQyxNQUFNLENBQW1CO0lBQ3pCLGFBQWEsQ0FBVTtJQUN2QixhQUFhLEdBQVksS0FBSyxDQUFDO0lBRXZDOzs7O09BSUc7SUFDSCxZQUFZLE1BQWtDO1FBQzVDLElB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ZSBmb3IgTWVtb3J5IFNlY3VyaXR5XG4gKlxuICogUGFydCBvZiBJc3N1ZSAjMTMyMSBQaGFzZSAyOiBNZW1vcnkgU2VjdXJpdHkgQXJjaGl0ZWN0dXJlXG4gKlxuICogUFVSUE9TRTpcbiAqIEVuY3J5cHRzIGRhbmdlcm91cyBwYXR0ZXJucyBleHRyYWN0ZWQgZnJvbSBGTEFHR0VEIG1lbW9yaWVzIHVzaW5nIEFFUy0yNTYtR0NNLlxuICogRW5zdXJlcyBwYXR0ZXJucyBhcmUgbmV2ZXIgc3RvcmVkIGluIHBsYWluIHRleHQgd2hpbGUgcmVtYWluaW5nIGFjY2Vzc2libGVcbiAqIGZvciBhdXRob3JpemVkIHNlY3VyaXR5IHJlc2VhcmNoIG91dHNpZGUgTExNIGNvbnRleHRzLlxuICpcbiAqIEFSQ0hJVEVDVFVSRTpcbiAqIC0gVXNlcyBBRVMtMjU2LUdDTSBmb3IgYXV0aGVudGljYXRlZCBlbmNyeXB0aW9uXG4gKiAtIERlcml2ZXMga2V5cyBmcm9tIERPTExIT1VTRV9FTkNSWVBUSU9OX1NFQ1JFVCB2aWEgUEJLREYyXG4gKiAtIEdlbmVyYXRlcyB1bmlxdWUgSVYgZm9yIGVhY2ggZW5jcnlwdGlvbiBvcGVyYXRpb25cbiAqIC0gUHJvdmlkZXMgR0NNIGF1dGhlbnRpY2F0aW9uIHRhZ3MgZm9yIGludGVncml0eSB2ZXJpZmljYXRpb25cbiAqXG4gKiBTRUNVUklUWTpcbiAqIC0gUGF0dGVybnMgZW5jcnlwdGVkIGF0IHJlc3RcbiAqIC0gRGVjcnlwdGlvbiBvbmx5IG91dHNpZGUgTExNIGNvbnRleHRcbiAqIC0gQWxsIGRlY3J5cHRpb24gYXR0ZW1wdHMgbG9nZ2VkXG4gKiAtIEtleSByb3RhdGlvbiBzdXBwb3J0ZWRcbiAqXG4gKiBSRUZBQ1RPUiBOT1RFOlxuICogQ29udmVydGVkIGZyb20gc3RhdGljIGNsYXNzIHRvIGluc3RhbmNlLWJhc2VkIGZvciBESSBhcmNoaXRlY3R1cmUgY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBAbW9kdWxlIFBhdHRlcm5FbmNyeXB0b3JcbiAqL1xuXG5pbXBvcnQgeyByYW5kb21CeXRlcywgY3JlYXRlQ2lwaGVyaXYsIGNyZWF0ZURlY2lwaGVyaXYsIHBia2RmMiB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbnYgfSBmcm9tICcuLi8uLi9jb25maWcvZW52LmpzJztcblxuLyoqXG4gKiBFbmNyeXB0ZWQgcGF0dGVybiBzdHJ1Y3R1cmVcbiAqIENvbnRhaW5zIGNpcGhlcnRleHQsIGFsZ29yaXRobSBtZXRhZGF0YSwgYW5kIGF1dGhlbnRpY2F0aW9uIGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0ZWRQYXR0ZXJuIHtcbiAgLyoqIEJhc2U2NC1lbmNvZGVkIGVuY3J5cHRlZCBkYXRhICovXG4gIGVuY3J5cHRlZERhdGE6IHN0cmluZztcblxuICAvKiogRW5jcnlwdGlvbiBhbGdvcml0aG0gKGFsd2F5cyAnYWVzLTI1Ni1nY20nKSAqL1xuICBhbGdvcml0aG06ICdhZXMtMjU2LWdjbSc7XG5cbiAgLyoqIEJhc2U2NC1lbmNvZGVkIGluaXRpYWxpemF0aW9uIHZlY3RvciAqL1xuICBpdjogc3RyaW5nO1xuXG4gIC8qKiBCYXNlNjQtZW5jb2RlZCBHQ00gYXV0aGVudGljYXRpb24gdGFnIGZvciBpbnRlZ3JpdHkgKi9cbiAgYXV0aFRhZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHBhdHRlcm4gZW5jcnlwdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRpb25Db25maWcge1xuICAvKiogRW5hYmxlIGVuY3J5cHRpb24gKGRlZmF1bHQ6IHRydWUgaW4gcHJvZHVjdGlvbikgKi9cbiAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAvKiogRW5jcnlwdGlvbiBzZWNyZXQgKGZyb20gZW52aXJvbm1lbnQpICovXG4gIHNlY3JldD86IHN0cmluZztcblxuICAvKiogUEJLREYyIGl0ZXJhdGlvbnMgKGRlZmF1bHQ6IDEwMDAwMCkgKi9cbiAgaXRlcmF0aW9uczogbnVtYmVyO1xuXG4gIC8qKiBTYWx0IGZvciBrZXkgZGVyaXZhdGlvbiAoZGVmYXVsdDogJ2RvbGxob3VzZS1wYXR0ZXJuLWVuY3J5cHRpb24tdjEnKSAqL1xuICBzYWx0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmYXVsdCBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgREVGQVVMVF9DT05GSUc6IEVuY3J5cHRpb25Db25maWcgPSB7XG4gIC8vIEhvbm9yIERPTExIT1VTRV9ESVNBQkxFX0VOQ1JZUFRJT04gZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgLy8gSWYgZXhwbGljaXRseSBkaXNhYmxlZCwgcmVzcGVjdCB0aGF0IHNldHRpbmcgcmVnYXJkbGVzcyBvZiBOT0RFX0VOVlxuICBlbmFibGVkOiBlbnYuRE9MTEhPVVNFX0RJU0FCTEVfRU5DUllQVElPTlxuICAgID8gZmFsc2VcbiAgICA6IGVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nLFxuICBzZWNyZXQ6IGVudi5ET0xMSE9VU0VfRU5DUllQVElPTl9TRUNSRVQsXG4gIGl0ZXJhdGlvbnM6IDEwMDAwMCxcbiAgLy8gU0VDVVJJVFkgRklYOiBDb25maWd1cmFibGUgc2FsdCB0byBwcmV2ZW50IHJhaW5ib3cgdGFibGUgYXR0YWNrc1xuICAvLyBGYWxscyBiYWNrIHRvIGRlZmF1bHQgb25seSBpZiBub3QgY29uZmlndXJlZFxuICBzYWx0OiBlbnYuRE9MTEhPVVNFX0VOQ1JZUFRJT05fU0FMVCB8fCAnZG9sbGhvdXNlLXBhdHRlcm4tZW5jcnlwdGlvbi12MScsXG59O1xuXG4vKipcbiAqIFBhdHRlcm5FbmNyeXB0b3Igc2VydmljZVxuICpcbiAqIEhhbmRsZXMgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBvZiBkYW5nZXJvdXMgcGF0dGVybnMgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKiBQcm92aWRlcyBhdXRoZW50aWNhdGVkIGVuY3J5cHRpb24gd2l0aCBpbnRlZ3JpdHkgcHJvdGVjdGlvbiB2aWEgR0NNIG1vZGUuXG4gKlxuICogREktQ09NUEFUSUJMRTogSW5zdGFuY2UtYmFzZWQgc2VydmljZSBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXR0ZXJuRW5jcnlwdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBBTEdPUklUSE0gPSAnYWVzLTI1Ni1nY20nO1xuICBwcml2YXRlIHJlYWRvbmx5IEtFWV9MRU5HVEggPSAzMjsgLy8gMjU2IGJpdHNcbiAgcHJpdmF0ZSByZWFkb25seSBJVl9MRU5HVEggPSAxNjsgLy8gMTI4IGJpdHNcbiAgcHJpdmF0ZSByZWFkb25seSBBVVRIX1RBR19MRU5HVEggPSAxNjsgLy8gMTI4IGJpdHNcblxuICBwcml2YXRlIGNvbmZpZzogRW5jcnlwdGlvbkNvbmZpZztcbiAgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5PzogQnVmZmVyO1xuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IFBhdHRlcm5FbmNyeXB0b3IgaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3ZlcnJpZGVzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc/OiBQYXJ0aWFsPEVuY3J5cHRpb25Db25maWc+KSB7XG4gICAgdGhpcy5jb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGVuY3J5cHRpb24gd2l0aCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG92ZXJyaWRlc1xuICAgKiBAdGhyb3dzIEVycm9yIGlmIGVuY3J5cHRpb24gc2VjcmV0IGlzIG5vdCBwcm92aWRlZCB3aGVuIGVuYWJsZWRcbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemUoY29uZmlnPzogUGFydGlhbDxFbmNyeXB0aW9uQ29uZmlnPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnID0geyAuLi50aGlzLmNvbmZpZywgLi4uY29uZmlnIH07XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSB7XG4gICAgICBjb25zdCByZWFzb24gPSBlbnYuRE9MTEhPVVNFX0RJU0FCTEVfRU5DUllQVElPTlxuICAgICAgICA/ICdleHBsaWNpdGx5IGRpc2FibGVkIHZpYSBET0xMSE9VU0VfRElTQUJMRV9FTkNSWVBUSU9OIGVudmlyb25tZW50IHZhcmlhYmxlJ1xuICAgICAgICA6IGBkaXNhYmxlZCAoTk9ERV9FTlY9JHtlbnYuTk9ERV9FTlZ9KWA7XG4gICAgICBsb2dnZXIuaW5mbyhgUGF0dGVybiBlbmNyeXB0aW9uICR7cmVhc29ufWApO1xuICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLnNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnRE9MTEhPVVNFX0VOQ1JZUFRJT05fU0VDUkVUIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHJlcXVpcmVkIHdoZW4gZW5jcnlwdGlvbiBpcyBlbmFibGVkJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsb2dnZXIuaW5mbygnSW5pdGlhbGl6aW5nIHBhdHRlcm4gZW5jcnlwdGlvbicsIHtcbiAgICAgIGFsZ29yaXRobTogdGhpcy5BTEdPUklUSE0sXG4gICAgICBpdGVyYXRpb25zOiB0aGlzLmNvbmZpZy5pdGVyYXRpb25zLFxuICAgIH0pO1xuXG4gICAgLy8gRGVyaXZlIGVuY3J5cHRpb24ga2V5IGZyb20gc2VjcmV0XG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5ID0gYXdhaXQgdGhpcy5kZXJpdmVLZXkoXG4gICAgICB0aGlzLmNvbmZpZy5zZWNyZXQsXG4gICAgICB0aGlzLmNvbmZpZy5zYWx0LFxuICAgICAgdGhpcy5jb25maWcuaXRlcmF0aW9uc1xuICAgICk7XG5cbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIGxvZ2dlci5pbmZvKCdQYXR0ZXJuIGVuY3J5cHRpb24gaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH1cblxuICAvKipcbiAgICogRW5jcnlwdCBhIHBhdHRlcm4gdXNpbmcgQUVTLTI1Ni1HQ01cbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gLSBQbGFpbiB0ZXh0IHBhdHRlcm4gdG8gZW5jcnlwdFxuICAgKiBAcmV0dXJucyBFbmNyeXB0ZWQgcGF0dGVybiB3aXRoIG1ldGFkYXRhXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZW5jcnlwdGlvbiBub3QgaW5pdGlhbGl6ZWQgb3IgcGF0dGVybiBpcyBlbXB0eVxuICAgKi9cbiAgZW5jcnlwdChwYXR0ZXJuOiBzdHJpbmcpOiBFbmNyeXB0ZWRQYXR0ZXJuIHtcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXR0ZXJuRW5jcnlwdG9yIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0aWFsaXplKCkgZmlyc3QuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSB7XG4gICAgICAvLyBFbmNyeXB0aW9uIGRpc2FibGVkIC0gcmV0dXJuIG1vY2sgZW5jcnlwdGVkIHN0cnVjdHVyZVxuICAgICAgLy8gVGhpcyBhbGxvd3MgdGVzdGluZyB3aXRob3V0IGVuY3J5cHRpb24gZW5hYmxlZFxuICAgICAgbG9nZ2VyLmRlYnVnKCdFbmNyeXB0aW9uIGRpc2FibGVkLCByZXR1cm5pbmcgbW9jayBzdHJ1Y3R1cmUnKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVuY3J5cHRlZERhdGE6IEJ1ZmZlci5mcm9tKHBhdHRlcm4pLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgYWxnb3JpdGhtOiB0aGlzLkFMR09SSVRITSxcbiAgICAgICAgaXY6IHJhbmRvbUJ5dGVzKHRoaXMuSVZfTEVOR1RIKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgIGF1dGhUYWc6IHJhbmRvbUJ5dGVzKHRoaXMuQVVUSF9UQUdfTEVOR1RIKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghcGF0dGVybiB8fCBwYXR0ZXJuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZW5jcnlwdCBlbXB0eSBwYXR0ZXJuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGlvbiBrZXkgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cblxuICAgIGxvZ2dlci5kZWJ1ZygnRW5jcnlwdGluZyBwYXR0ZXJuJywge1xuICAgICAgcGF0dGVybkxlbmd0aDogcGF0dGVybi5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gR2VuZXJhdGUgcmFuZG9tIElWIGZvciB0aGlzIGVuY3J5cHRpb25cbiAgICAgIGNvbnN0IGl2ID0gcmFuZG9tQnl0ZXModGhpcy5JVl9MRU5HVEgpO1xuXG4gICAgICAvLyBDcmVhdGUgY2lwaGVyIHdpdGggQUVTLTI1Ni1HQ01cbiAgICAgIGNvbnN0IGNpcGhlciA9IGNyZWF0ZUNpcGhlcml2KHRoaXMuQUxHT1JJVEhNLCB0aGlzLmVuY3J5cHRpb25LZXksIGl2KTtcblxuICAgICAgLy8gRW5jcnlwdCB0aGUgcGF0dGVyblxuICAgICAgbGV0IGVuY3J5cHRlZCA9IGNpcGhlci51cGRhdGUocGF0dGVybiwgJ3V0ZjgnLCAnYmFzZTY0Jyk7XG4gICAgICBlbmNyeXB0ZWQgKz0gY2lwaGVyLmZpbmFsKCdiYXNlNjQnKTtcblxuICAgICAgLy8gR2V0IGF1dGhlbnRpY2F0aW9uIHRhZyBmcm9tIEdDTSBtb2RlXG4gICAgICBjb25zdCBhdXRoVGFnID0gY2lwaGVyLmdldEF1dGhUYWcoKTtcblxuICAgICAgbG9nZ2VyLmRlYnVnKCdQYXR0ZXJuIGVuY3J5cHRlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgIGl2TGVuZ3RoOiBpdi5sZW5ndGgsXG4gICAgICAgIGF1dGhUYWdMZW5ndGg6IGF1dGhUYWcubGVuZ3RoLFxuICAgICAgICBlbmNyeXB0ZWRMZW5ndGg6IGVuY3J5cHRlZC5sZW5ndGgsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW5jcnlwdGVkRGF0YTogZW5jcnlwdGVkLFxuICAgICAgICBhbGdvcml0aG06IHRoaXMuQUxHT1JJVEhNLFxuICAgICAgICBpdjogaXYudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICBhdXRoVGFnOiBhdXRoVGFnLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGVuY3J5cHQgcGF0dGVybicsIHsgZXJyb3IgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdHRlcm4gZW5jcnlwdGlvbiBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlY3J5cHQgYW4gZW5jcnlwdGVkIHBhdHRlcm5cbiAgICpcbiAgICogQHBhcmFtIGVuY3J5cHRlZCAtIEVuY3J5cHRlZCBwYXR0ZXJuIHN0cnVjdHVyZVxuICAgKiBAcmV0dXJucyBEZWNyeXB0ZWQgcGxhaW4gdGV4dCBwYXR0ZXJuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZGVjcnlwdGlvbiBmYWlscyBvciBhdXRoZW50aWNhdGlvbiBmYWlsc1xuICAgKi9cbiAgZGVjcnlwdChlbmNyeXB0ZWQ6IEVuY3J5cHRlZFBhdHRlcm4pOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhdHRlcm5FbmNyeXB0b3Igbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXRpYWxpemUoKSBmaXJzdC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHtcbiAgICAgIC8vIEVuY3J5cHRpb24gZGlzYWJsZWQgLSBkZWNvZGUgdGhlIGJhc2U2NCBtb2NrIGRhdGFcbiAgICAgIGxvZ2dlci5kZWJ1ZygnRW5jcnlwdGlvbiBkaXNhYmxlZCwgZGVjb2RpbmcgbW9jayBzdHJ1Y3R1cmUnKTtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShlbmNyeXB0ZWQuZW5jcnlwdGVkRGF0YSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGlvbiBrZXkgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cblxuICAgIGlmICghZW5jcnlwdGVkLmVuY3J5cHRlZERhdGEgfHwgIWVuY3J5cHRlZC5pdiB8fCAhZW5jcnlwdGVkLmF1dGhUYWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNyeXB0ZWQgcGF0dGVybjogbWlzc2luZyByZXF1aXJlZCBmaWVsZHMnKTtcbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoJ0RlY3J5cHRpbmcgcGF0dGVybicsIHtcbiAgICAgIGFsZ29yaXRobTogZW5jcnlwdGVkLmFsZ29yaXRobSxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBEZWNvZGUgYmFzZTY0IGNvbXBvbmVudHNcbiAgICAgIGNvbnN0IGl2ID0gQnVmZmVyLmZyb20oZW5jcnlwdGVkLml2LCAnYmFzZTY0Jyk7XG4gICAgICBjb25zdCBhdXRoVGFnID0gQnVmZmVyLmZyb20oZW5jcnlwdGVkLmF1dGhUYWcsICdiYXNlNjQnKTtcblxuICAgICAgLy8gQ3JlYXRlIGRlY2lwaGVyIHdpdGggQUVTLTI1Ni1HQ01cbiAgICAgIGNvbnN0IGRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJpdih0aGlzLkFMR09SSVRITSwgdGhpcy5lbmNyeXB0aW9uS2V5LCBpdik7XG5cbiAgICAgIC8vIFNldCBhdXRoZW50aWNhdGlvbiB0YWcgZm9yIHZlcmlmaWNhdGlvblxuICAgICAgZGVjaXBoZXIuc2V0QXV0aFRhZyhhdXRoVGFnKTtcblxuICAgICAgLy8gRGVjcnlwdCB0aGUgcGF0dGVyblxuICAgICAgbGV0IGRlY3J5cHRlZCA9IGRlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWQuZW5jcnlwdGVkRGF0YSwgJ2Jhc2U2NCcsICd1dGY4Jyk7XG4gICAgICBkZWNyeXB0ZWQgKz0gZGVjaXBoZXIuZmluYWwoJ3V0ZjgnKTtcblxuICAgICAgbG9nZ2VyLmRlYnVnKCdQYXR0ZXJuIGRlY3J5cHRlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgIGRlY3J5cHRlZExlbmd0aDogZGVjcnlwdGVkLmxlbmd0aCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZGVjcnlwdGVkO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkZWNyeXB0IHBhdHRlcm4nLCB7IGVycm9yIH0pO1xuXG4gICAgICAvLyBBdXRoZW50aWNhdGlvbiBmYWlsdXJlIG1lYW5zIGRhdGEgd2FzIHRhbXBlcmVkIHdpdGhcbiAgICAgIC8vIENoZWNrIGZvciB2YXJpb3VzIEdDTSBhdXRoZW50aWNhdGlvbiBlcnJvciBtZXNzYWdlc1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvci5tZXNzYWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBlcnJvck1zZy5pbmNsdWRlcygnYXV0aCcpIHx8XG4gICAgICAgICAgZXJyb3JNc2cuaW5jbHVkZXMoJ2RlY3J5cHQnKSB8fFxuICAgICAgICAgIGVycm9yTXNnLmluY2x1ZGVzKCd1bnN1cHBvcnRlZCBzdGF0ZScpIHx8XG4gICAgICAgICAgZXJyb3JNc2cuaW5jbHVkZXMoJ3VuYWJsZSB0byBhdXRoZW50aWNhdGUnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhdHRlcm4gZGVjcnlwdGlvbiBmYWlsZWQ6IEF1dGhlbnRpY2F0aW9uIHRhZyBtaXNtYXRjaCAoZGF0YSBtYXkgYmUgY29ycnVwdGVkIG9yIHRhbXBlcmVkKScpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0dGVybiBkZWNyeXB0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVyaXZlIGVuY3J5cHRpb24ga2V5IGZyb20gc2VjcmV0IHVzaW5nIFBCS0RGMlxuICAgKlxuICAgKiBAcGFyYW0gc2VjcmV0IC0gTWFzdGVyIHNlY3JldCBmcm9tIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSBzYWx0IC0gU2FsdCBmb3Iga2V5IGRlcml2YXRpb25cbiAgICogQHBhcmFtIGl0ZXJhdGlvbnMgLSBOdW1iZXIgb2YgUEJLREYyIGl0ZXJhdGlvbnNcbiAgICogQHJldHVybnMgRGVyaXZlZCBlbmNyeXB0aW9uIGtleVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBkZXJpdmVLZXkoXG4gICAgc2VjcmV0OiBzdHJpbmcsXG4gICAgc2FsdDogc3RyaW5nLFxuICAgIGl0ZXJhdGlvbnM6IG51bWJlclxuICApOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBwYmtkZjIoXG4gICAgICAgIHNlY3JldCxcbiAgICAgICAgc2FsdCxcbiAgICAgICAgaXRlcmF0aW9ucyxcbiAgICAgICAgdGhpcy5LRVlfTEVOR1RILFxuICAgICAgICAnc2hhMjU2JyxcbiAgICAgICAgKGVyciwgZGVyaXZlZEtleSkgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcignS2V5IGRlcml2YXRpb24gZmFpbGVkJywgeyBlcnJvcjogZXJyIH0pO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlcml2ZSBlbmNyeXB0aW9uIGtleTogJHtlcnIubWVzc2FnZX1gKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnRW5jcnlwdGlvbiBrZXkgZGVyaXZlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgICAgICAgIGtleUxlbmd0aDogZGVyaXZlZEtleS5sZW5ndGgsXG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUoZGVyaXZlZEtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZFxuICAgKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZCBhbmQgaW5pdGlhbGl6ZWRcbiAgICovXG4gIGlzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZW5hYmxlZCAmJiB0aGlzLmlzSW5pdGlhbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGVuY3J5cHRpb24gY29uZmlndXJhdGlvbiBzdGF0dXNcbiAgICpcbiAgICogQHJldHVybnMgQ29uZmlndXJhdGlvbiBzdGF0dXMgKHdpdGhvdXQgZXhwb3Npbmcgc2VjcmV0cylcbiAgICovXG4gIGdldFN0YXR1cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogdGhpcy5jb25maWcuZW5hYmxlZCxcbiAgICAgIGluaXRpYWxpemVkOiB0aGlzLmlzSW5pdGlhbGl6ZWQsXG4gICAgICBhbGdvcml0aG06IHRoaXMuQUxHT1JJVEhNLFxuICAgICAga2V5TGVuZ3RoOiB0aGlzLktFWV9MRU5HVEgsXG4gICAgICBpdGVyYXRpb25zOiB0aGlzLmNvbmZpZy5pdGVyYXRpb25zLFxuICAgICAgaGFzU2VjcmV0OiAhIXRoaXMuY29uZmlnLnNlY3JldCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlY3VyZWx5IGNsZWFyIGVuY3J5cHRpb24ga2V5IGZyb20gbWVtb3J5XG4gICAqIFNFQ1VSSVRZIEZJWDogT3ZlcndyaXRlcyBrZXkgYnVmZmVyIHdpdGggemVyb3MgYmVmb3JlIHJlbGVhc2luZ1xuICAgKlxuICAgKiBUaGlzIHByZXZlbnRzIGtleSByZWNvdmVyeSBmcm9tIG1lbW9yeSBkdW1wcyBvciBwcm9jZXNzIGluc3BlY3Rpb24uXG4gICAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBlbmNyeXB0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQuXG4gICAqL1xuICBwcml2YXRlIHNlY3VyZUtleUNsZWFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIC8vIE92ZXJ3cml0ZSBrZXkgbWF0ZXJpYWwgd2l0aCB6ZXJvc1xuICAgICAgdGhpcy5lbmNyeXB0aW9uS2V5LmZpbGwoMCk7XG4gICAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIuZGVidWcoJ0VuY3J5cHRpb24ga2V5IHNlY3VyZWx5IGNsZWFyZWQgZnJvbSBtZW1vcnknKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIGVuY3J5cHRvciAodXNlZnVsIGZvciB0ZXN0aW5nKVxuICAgKiBTRUNVUklUWSBGSVg6IE5vdyBwZXJmb3JtcyBzZWN1cmUga2V5IGNsZWFyaW5nXG4gICAqIFdBUk5JTkc6IFRoaXMgd2lsbCBzZWN1cmVseSBjbGVhciB0aGUgZW5jcnlwdGlvbiBrZXkgZnJvbSBtZW1vcnlcbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VjdXJlS2V5Q2xlYXIoKTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcgfTtcbiAgICBsb2dnZXIuZGVidWcoJ1BhdHRlcm5FbmNyeXB0b3IgcmVzZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWN1cmVseSByZXNldCB0aGUgZW5jcnlwdG9yIGFuZCBjbGVhciBhbGwgc2Vuc2l0aXZlIGRhdGFcbiAgICogU0VDVVJJVFk6IEV4cGxpY2l0bHkgY2xlYXJzIGVuY3J5cHRpb24ga2V5cyBmcm9tIG1lbW9yeVxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuOlxuICAgKiAtIFNodXR0aW5nIGRvd24gdGhlIGFwcGxpY2F0aW9uXG4gICAqIC0gUm90YXRpbmcgZW5jcnlwdGlvbiBrZXlzXG4gICAqIC0gUmVzcG9uZGluZyB0byBzZWN1cml0eSBpbmNpZGVudHNcbiAgICovXG4gIHNlY3VyZVJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VjdXJlS2V5Q2xlYXIoKTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcgfTtcbiAgICBsb2dnZXIuaW5mbygnUGF0dGVybkVuY3J5cHRvciBzZWN1cmVseSByZXNldCAtIGFsbCBzZW5zaXRpdmUgZGF0YSBjbGVhcmVkJyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSBvZiB0aGUgZW5jcnlwdG9yIGFuZCBzZWN1cmVseSBjbGVhciBhbGwgZGF0YVxuICAgKiBJbXBsZW1lbnRzIGNsZWFudXAgZm9yIHByb3BlciBESSBsaWZlY3ljbGUgbWFuYWdlbWVudFxuICAgKi9cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNlY3VyZVJlc2V0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0dGVybkVuY3J5cHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZWN1cml0eS9lbmNyeXB0aW9uL1BhdHRlcm5FbmNyeXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFxQzFDOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQXFCO0lBQ3ZDLDBEQUEwRDtJQUMxRCxzRUFBc0U7SUFDdEUsT0FBTyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEI7UUFDdkMsQ0FBQyxDQUFDLEtBQUs7UUFDUCxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLENBQUMsMkJBQTJCO0lBQ3ZDLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLDJFQUEyRTtJQUMzRSwrREFBK0Q7SUFDL0QsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUIsSUFBSSxpQ0FBaUM7Q0FDekUsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1YsU0FBUyxHQUFHLGFBQWEsQ0FBQztJQUMxQixVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVztJQUM1QixTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVztJQUMzQixlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVztJQUUxQyxNQUFNLENBQW1CO0lBQ3pCLGFBQWEsQ0FBVTtJQUN2QixhQUFhLEdBQVksS0FBSyxDQUFDO0lBRXZDOzs7O09BSUc7SUFDSCxZQUFZLE1BQWtDO1FBQzVDLElB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TSxDQUFDLElBQUksQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhdHRlcm4gRW5jcnlwdGlvbiBTZXJ2aWNlIGZvciBNZW1vcnkgU2VjdXJpdHlcbiAqXG4gKiBQYXJ0IG9mIElzc3VlICMxMzIxIFBoYXNlIDI6IE1lbW9yeSBTZWN1cml0eSBBcmNoaXRlY3R1cmVcbiAqXG4gKiBQVVJQT1NFOlxuICogRW5jcnlwdHMgZGFuZ2Vyb3VzIHBhdHRlcm5zIGV4dHJhY3RlZCBmcm9tIEZMQUdHRUQgbWVtb3JpZXMgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKiBFbnN1cmVzIHBhdHRlcm5zIGFyZSBuZXZlciBzdG9yZWQgaW4gcGxhaW4gdGV4dCB3aGlsZSByZW1haW5pbmcgYWNjZXNzaWJsZVxuICogZm9yIGF1dGhvcml6ZWQgc2VjdXJpdHkgcmVzZWFyY2ggb3V0c2lkZSBMTE0gY29udGV4dHMuXG4gKlxuICogQVJDSElURUNUVVJFOlxuICogLSBVc2VzIEFFUy0yNTYtR0NNIGZvciBhdXRoZW50aWNhdGVkIGVuY3J5cHRpb25cbiAqIC0gRGVyaXZlcyBrZXlzIGZyb20gRE9MTEhPVVNFX0VOQ1JZUFRJT05fU0VDUkVUIHZpYSBQQktERjJcbiAqIC0gR2VuZXJhdGVzIHVuaXF1ZSBJViBmb3IgZWFjaCBlbmNyeXB0aW9uIG9wZXJhdGlvblxuICogLSBQcm92aWRlcyBHQ00gYXV0aGVudGljYXRpb24gdGFncyBmb3IgaW50ZWdyaXR5IHZlcmlmaWNhdGlvblxuICpcbiAqIFNFQ1VSSVRZOlxuICogLSBQYXR0ZXJucyBlbmNyeXB0ZWQgYXQgcmVzdFxuICogLSBEZWNyeXB0aW9uIG9ubHkgb3V0c2lkZSBMTE0gY29udGV4dFxuICogLSBBbGwgZGVjcnlwdGlvbiBhdHRlbXB0cyBsb2dnZWRcbiAqIC0gS2V5IHJvdGF0aW9uIHN1cHBvcnRlZFxuICpcbiAqIFJFRkFDVE9SIE5PVEU6XG4gKiBDb252ZXJ0ZWQgZnJvbSBzdGF0aWMgY2xhc3MgdG8gaW5zdGFuY2UtYmFzZWQgZm9yIERJIGFyY2hpdGVjdHVyZSBjb21wYXRpYmlsaXR5LlxuICpcbiAqIEBtb2R1bGUgUGF0dGVybkVuY3J5cHRvclxuICovXG5cbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiwgcGJrZGYyIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVudiB9IGZyb20gJy4uLy4uL2NvbmZpZy9lbnYuanMnO1xuXG4vKipcbiAqIEVuY3J5cHRlZCBwYXR0ZXJuIHN0cnVjdHVyZVxuICogQ29udGFpbnMgY2lwaGVydGV4dCwgYWxnb3JpdGhtIG1ldGFkYXRhLCBhbmQgYXV0aGVudGljYXRpb24gZGF0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRlZFBhdHRlcm4ge1xuICAvKiogQmFzZTY0LWVuY29kZWQgZW5jcnlwdGVkIGRhdGEgKi9cbiAgZW5jcnlwdGVkRGF0YTogc3RyaW5nO1xuXG4gIC8qKiBFbmNyeXB0aW9uIGFsZ29yaXRobSAoYWx3YXlzICdhZXMtMjU2LWdjbScpICovXG4gIGFsZ29yaXRobTogJ2Flcy0yNTYtZ2NtJztcblxuICAvKiogQmFzZTY0LWVuY29kZWQgaW5pdGlhbGl6YXRpb24gdmVjdG9yICovXG4gIGl2OiBzdHJpbmc7XG5cbiAgLyoqIEJhc2U2NC1lbmNvZGVkIEdDTSBhdXRoZW50aWNhdGlvbiB0YWcgZm9yIGludGVncml0eSAqL1xuICBhdXRoVGFnOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgcGF0dGVybiBlbmNyeXB0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdGlvbkNvbmZpZyB7XG4gIC8qKiBFbmFibGUgZW5jcnlwdGlvbiAoZGVmYXVsdDogdHJ1ZSBpbiBwcm9kdWN0aW9uKSAqL1xuICBlbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKiBFbmNyeXB0aW9uIHNlY3JldCAoZnJvbSBlbnZpcm9ubWVudCkgKi9cbiAgc2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKiBQQktERjIgaXRlcmF0aW9ucyAoZGVmYXVsdDogMTAwMDAwKSAqL1xuICBpdGVyYXRpb25zOiBudW1iZXI7XG5cbiAgLyoqIFNhbHQgZm9yIGtleSBkZXJpdmF0aW9uIChkZWZhdWx0OiAnZG9sbGhvdXNlLXBhdHRlcm4tZW5jcnlwdGlvbi12MScpICovXG4gIHNhbHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGVuY3J5cHRpb24gY29uZmlndXJhdGlvblxuICovXG5jb25zdCBERUZBVUxUX0NPTkZJRzogRW5jcnlwdGlvbkNvbmZpZyA9IHtcbiAgLy8gSG9ub3IgRE9MTEhPVVNFX0RJU0FCTEVfRU5DUllQVElPTiBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAvLyBJZiBleHBsaWNpdGx5IGRpc2FibGVkLCByZXNwZWN0IHRoYXQgc2V0dGluZyByZWdhcmRsZXNzIG9mIE5PREVfRU5WXG4gIGVuYWJsZWQ6IGVudi5ET0xMSE9VU0VfRElTQUJMRV9FTkNSWVBUSU9OXG4gICAgPyBmYWxzZVxuICAgIDogZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicsXG4gIHNlY3JldDogZW52LkRPTExIT1VTRV9FTkNSWVBUSU9OX1NFQ1JFVCxcbiAgaXRlcmF0aW9uczogMTAwMDAwLFxuICAvLyBTRUNVUklUWSBGSVg6IENvbmZpZ3VyYWJsZSBzYWx0IHRvIHByZXZlbnQgcmFpbmJvdyB0YWJsZSBhdHRhY2tzICgjMTczMylcbiAgLy8gRmFsbHMgYmFjayB0byBkZWZhdWx0IHdpdGggc3RhcnR1cCB3YXJuaW5nIGlmIG5vdCBjb25maWd1cmVkXG4gIHNhbHQ6IGVudi5ET0xMSE9VU0VfRU5DUllQVElPTl9TQUxUIHx8ICdkb2xsaG91c2UtcGF0dGVybi1lbmNyeXB0aW9uLXYxJyxcbn07XG5cbi8qKlxuICogUGF0dGVybkVuY3J5cHRvciBzZXJ2aWNlXG4gKlxuICogSGFuZGxlcyBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIG9mIGRhbmdlcm91cyBwYXR0ZXJucyB1c2luZyBBRVMtMjU2LUdDTS5cbiAqIFByb3ZpZGVzIGF1dGhlbnRpY2F0ZWQgZW5jcnlwdGlvbiB3aXRoIGludGVncml0eSBwcm90ZWN0aW9uIHZpYSBHQ00gbW9kZS5cbiAqXG4gKiBESS1DT01QQVRJQkxFOiBJbnN0YW5jZS1iYXNlZCBzZXJ2aWNlIGZvciBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhdHRlcm5FbmNyeXB0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IEFMR09SSVRITSA9ICdhZXMtMjU2LWdjbSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgS0VZX0xFTkdUSCA9IDMyOyAvLyAyNTYgYml0c1xuICBwcml2YXRlIHJlYWRvbmx5IElWX0xFTkdUSCA9IDE2OyAvLyAxMjggYml0c1xuICBwcml2YXRlIHJlYWRvbmx5IEFVVEhfVEFHX0xFTkdUSCA9IDE2OyAvLyAxMjggYml0c1xuXG4gIHByaXZhdGUgY29uZmlnOiBFbmNyeXB0aW9uQ29uZmlnO1xuICBwcml2YXRlIGVuY3J5cHRpb25LZXk/OiBCdWZmZXI7XG4gIHByaXZhdGUgaXNJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgUGF0dGVybkVuY3J5cHRvciBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvdmVycmlkZXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFBhcnRpYWw8RW5jcnlwdGlvbkNvbmZpZz4pIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgZW5jcnlwdGlvbiB3aXRoIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3ZlcnJpZGVzXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZW5jcnlwdGlvbiBzZWNyZXQgaXMgbm90IHByb3ZpZGVkIHdoZW4gZW5hYmxlZFxuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZShjb25maWc/OiBQYXJ0aWFsPEVuY3J5cHRpb25Db25maWc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuY29uZmlnLCAuLi5jb25maWcgfTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHJlYXNvbiA9IGVudi5ET0xMSE9VU0VfRElTQUJMRV9FTkNSWVBUSU9OXG4gICAgICAgID8gJ2V4cGxpY2l0bHkgZGlzYWJsZWQgdmlhIERPTExIT1VTRV9ESVNBQkxFX0VOQ1JZUFRJT04gZW52aXJvbm1lbnQgdmFyaWFibGUnXG4gICAgICAgIDogYGRpc2FibGVkIChOT0RFX0VOVj0ke2Vudi5OT0RFX0VOVn0pYDtcbiAgICAgIGxvZ2dlci5pbmZvKGBQYXR0ZXJuIGVuY3J5cHRpb24gJHtyZWFzb259YCk7XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcuc2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdET0xMSE9VU0VfRU5DUllQVElPTl9TRUNSRVQgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgcmVxdWlyZWQgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQnXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFNFQy0wNSAoIzE3MzMpOiBXYXJuIGlmIHVzaW5nIHRoZSBzdGF0aWMgZGVmYXVsdCBzYWx0XG4gICAgaWYgKCFlbnYuRE9MTEhPVVNFX0VOQ1JZUFRJT05fU0FMVCkge1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICfimqDvuI8gIFBhdHRlcm4gZW5jcnlwdGlvbiB1c2luZyBkZWZhdWx0IHNhbHQuIFNldCBET0xMSE9VU0VfRU5DUllQVElPTl9TQUxUIHRvIGEgcmFuZG9tIDMyKyBjaGFyYWN0ZXIgc3RyaW5nICcgK1xuICAgICAgICAnKGUuZy4gYG9wZW5zc2wgcmFuZCAtaGV4IDMyYCkgZm9yIHN0cm9uZ2VyIHByb3RlY3Rpb24gYWdhaW5zdCByYWluYm93IHRhYmxlIGF0dGFja3MuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsb2dnZXIuaW5mbygnSW5pdGlhbGl6aW5nIHBhdHRlcm4gZW5jcnlwdGlvbicsIHtcbiAgICAgIGFsZ29yaXRobTogdGhpcy5BTEdPUklUSE0sXG4gICAgICBpdGVyYXRpb25zOiB0aGlzLmNvbmZpZy5pdGVyYXRpb25zLFxuICAgIH0pO1xuXG4gICAgLy8gRGVyaXZlIGVuY3J5cHRpb24ga2V5IGZyb20gc2VjcmV0XG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5ID0gYXdhaXQgdGhpcy5kZXJpdmVLZXkoXG4gICAgICB0aGlzLmNvbmZpZy5zZWNyZXQsXG4gICAgICB0aGlzLmNvbmZpZy5zYWx0LFxuICAgICAgdGhpcy5jb25maWcuaXRlcmF0aW9uc1xuICAgICk7XG5cbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIGxvZ2dlci5pbmZvKCdQYXR0ZXJuIGVuY3J5cHRpb24gaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH1cblxuICAvKipcbiAgICogRW5jcnlwdCBhIHBhdHRlcm4gdXNpbmcgQUVTLTI1Ni1HQ01cbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gLSBQbGFpbiB0ZXh0IHBhdHRlcm4gdG8gZW5jcnlwdFxuICAgKiBAcmV0dXJucyBFbmNyeXB0ZWQgcGF0dGVybiB3aXRoIG1ldGFkYXRhXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZW5jcnlwdGlvbiBub3QgaW5pdGlhbGl6ZWQgb3IgcGF0dGVybiBpcyBlbXB0eVxuICAgKi9cbiAgZW5jcnlwdChwYXR0ZXJuOiBzdHJpbmcpOiBFbmNyeXB0ZWRQYXR0ZXJuIHtcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXR0ZXJuRW5jcnlwdG9yIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0aWFsaXplKCkgZmlyc3QuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSB7XG4gICAgICAvLyBFbmNyeXB0aW9uIGRpc2FibGVkIOKAlCByZXR1cm4gbW9jayBzdHJ1Y3R1cmUgd2l0aCBNT0NLOiBwcmVmaXggKCMxNzMzKVxuICAgICAgLy8gc28gaXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggcmVhbCBjaXBoZXJ0ZXh0XG4gICAgICBsb2dnZXIuZGVidWcoJ0VuY3J5cHRpb24gZGlzYWJsZWQsIHJldHVybmluZyBtb2NrIHN0cnVjdHVyZScpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW5jcnlwdGVkRGF0YTogYE1PQ0s6JHtCdWZmZXIuZnJvbShwYXR0ZXJuKS50b1N0cmluZygnYmFzZTY0Jyl9YCxcbiAgICAgICAgYWxnb3JpdGhtOiB0aGlzLkFMR09SSVRITSxcbiAgICAgICAgaXY6ICcnLFxuICAgICAgICBhdXRoVGFnOiAnJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCFwYXR0ZXJuIHx8IHBhdHRlcm4ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlbmNyeXB0IGVtcHR5IHBhdHRlcm4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZW5jcnlwdGlvbktleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0aW9uIGtleSBub3QgYXZhaWxhYmxlJyk7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmRlYnVnKCdFbmNyeXB0aW5nIHBhdHRlcm4nLCB7XG4gICAgICBwYXR0ZXJuTGVuZ3RoOiBwYXR0ZXJuLmxlbmd0aCxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBHZW5lcmF0ZSByYW5kb20gSVYgZm9yIHRoaXMgZW5jcnlwdGlvblxuICAgICAgY29uc3QgaXYgPSByYW5kb21CeXRlcyh0aGlzLklWX0xFTkdUSCk7XG5cbiAgICAgIC8vIENyZWF0ZSBjaXBoZXIgd2l0aCBBRVMtMjU2LUdDTVxuICAgICAgY29uc3QgY2lwaGVyID0gY3JlYXRlQ2lwaGVyaXYodGhpcy5BTEdPUklUSE0sIHRoaXMuZW5jcnlwdGlvbktleSwgaXYpO1xuXG4gICAgICAvLyBFbmNyeXB0IHRoZSBwYXR0ZXJuXG4gICAgICBsZXQgZW5jcnlwdGVkID0gY2lwaGVyLnVwZGF0ZShwYXR0ZXJuLCAndXRmOCcsICdiYXNlNjQnKTtcbiAgICAgIGVuY3J5cHRlZCArPSBjaXBoZXIuZmluYWwoJ2Jhc2U2NCcpO1xuXG4gICAgICAvLyBHZXQgYXV0aGVudGljYXRpb24gdGFnIGZyb20gR0NNIG1vZGVcbiAgICAgIGNvbnN0IGF1dGhUYWcgPSBjaXBoZXIuZ2V0QXV0aFRhZygpO1xuXG4gICAgICBsb2dnZXIuZGVidWcoJ1BhdHRlcm4gZW5jcnlwdGVkIHN1Y2Nlc3NmdWxseScsIHtcbiAgICAgICAgaXZMZW5ndGg6IGl2Lmxlbmd0aCxcbiAgICAgICAgYXV0aFRhZ0xlbmd0aDogYXV0aFRhZy5sZW5ndGgsXG4gICAgICAgIGVuY3J5cHRlZExlbmd0aDogZW5jcnlwdGVkLmxlbmd0aCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbmNyeXB0ZWREYXRhOiBlbmNyeXB0ZWQsXG4gICAgICAgIGFsZ29yaXRobTogdGhpcy5BTEdPUklUSE0sXG4gICAgICAgIGl2OiBpdi50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgIGF1dGhUYWc6IGF1dGhUYWcudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZW5jcnlwdCBwYXR0ZXJuJywgeyBlcnJvciB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0dGVybiBlbmNyeXB0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjcnlwdCBhbiBlbmNyeXB0ZWQgcGF0dGVyblxuICAgKlxuICAgKiBAcGFyYW0gZW5jcnlwdGVkIC0gRW5jcnlwdGVkIHBhdHRlcm4gc3RydWN0dXJlXG4gICAqIEByZXR1cm5zIERlY3J5cHRlZCBwbGFpbiB0ZXh0IHBhdHRlcm5cbiAgICogQHRocm93cyBFcnJvciBpZiBkZWNyeXB0aW9uIGZhaWxzIG9yIGF1dGhlbnRpY2F0aW9uIGZhaWxzXG4gICAqL1xuICBkZWNyeXB0KGVuY3J5cHRlZDogRW5jcnlwdGVkUGF0dGVybik6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGF0dGVybkVuY3J5cHRvciBub3QgaW5pdGlhbGl6ZWQuIENhbGwgaW5pdGlhbGl6ZSgpIGZpcnN0LicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlZCkge1xuICAgICAgLy8gRW5jcnlwdGlvbiBkaXNhYmxlZCDigJQgZGVjb2RlIG1vY2sgZGF0YSwgc3RyaXBwaW5nIE1PQ0s6IHByZWZpeCAoIzE3MzMpXG4gICAgICBsb2dnZXIuZGVidWcoJ0VuY3J5cHRpb24gZGlzYWJsZWQsIGRlY29kaW5nIG1vY2sgc3RydWN0dXJlJyk7XG4gICAgICBjb25zdCBkYXRhID0gZW5jcnlwdGVkLmVuY3J5cHRlZERhdGEuc3RhcnRzV2l0aCgnTU9DSzonKVxuICAgICAgICA/IGVuY3J5cHRlZC5lbmNyeXB0ZWREYXRhLnNsaWNlKDUpXG4gICAgICAgIDogZW5jcnlwdGVkLmVuY3J5cHRlZERhdGE7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oZGF0YSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGlvbiBrZXkgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cblxuICAgIGlmICghZW5jcnlwdGVkLmVuY3J5cHRlZERhdGEgfHwgIWVuY3J5cHRlZC5pdiB8fCAhZW5jcnlwdGVkLmF1dGhUYWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNyeXB0ZWQgcGF0dGVybjogbWlzc2luZyByZXF1aXJlZCBmaWVsZHMnKTtcbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoJ0RlY3J5cHRpbmcgcGF0dGVybicsIHtcbiAgICAgIGFsZ29yaXRobTogZW5jcnlwdGVkLmFsZ29yaXRobSxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBEZWNvZGUgYmFzZTY0IGNvbXBvbmVudHNcbiAgICAgIGNvbnN0IGl2ID0gQnVmZmVyLmZyb20oZW5jcnlwdGVkLml2LCAnYmFzZTY0Jyk7XG4gICAgICBjb25zdCBhdXRoVGFnID0gQnVmZmVyLmZyb20oZW5jcnlwdGVkLmF1dGhUYWcsICdiYXNlNjQnKTtcblxuICAgICAgLy8gQ3JlYXRlIGRlY2lwaGVyIHdpdGggQUVTLTI1Ni1HQ01cbiAgICAgIGNvbnN0IGRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJpdih0aGlzLkFMR09SSVRITSwgdGhpcy5lbmNyeXB0aW9uS2V5LCBpdik7XG5cbiAgICAgIC8vIFNldCBhdXRoZW50aWNhdGlvbiB0YWcgZm9yIHZlcmlmaWNhdGlvblxuICAgICAgZGVjaXBoZXIuc2V0QXV0aFRhZyhhdXRoVGFnKTtcblxuICAgICAgLy8gRGVjcnlwdCB0aGUgcGF0dGVyblxuICAgICAgbGV0IGRlY3J5cHRlZCA9IGRlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWQuZW5jcnlwdGVkRGF0YSwgJ2Jhc2U2NCcsICd1dGY4Jyk7XG4gICAgICBkZWNyeXB0ZWQgKz0gZGVjaXBoZXIuZmluYWwoJ3V0ZjgnKTtcblxuICAgICAgbG9nZ2VyLmRlYnVnKCdQYXR0ZXJuIGRlY3J5cHRlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgIGRlY3J5cHRlZExlbmd0aDogZGVjcnlwdGVkLmxlbmd0aCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZGVjcnlwdGVkO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkZWNyeXB0IHBhdHRlcm4nLCB7IGVycm9yIH0pO1xuXG4gICAgICAvLyBBdXRoZW50aWNhdGlvbiBmYWlsdXJlIG1lYW5zIGRhdGEgd2FzIHRhbXBlcmVkIHdpdGhcbiAgICAgIC8vIENoZWNrIGZvciB2YXJpb3VzIEdDTSBhdXRoZW50aWNhdGlvbiBlcnJvciBtZXNzYWdlc1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvci5tZXNzYWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBlcnJvck1zZy5pbmNsdWRlcygnYXV0aCcpIHx8XG4gICAgICAgICAgZXJyb3JNc2cuaW5jbHVkZXMoJ2RlY3J5cHQnKSB8fFxuICAgICAgICAgIGVycm9yTXNnLmluY2x1ZGVzKCd1bnN1cHBvcnRlZCBzdGF0ZScpIHx8XG4gICAgICAgICAgZXJyb3JNc2cuaW5jbHVkZXMoJ3VuYWJsZSB0byBhdXRoZW50aWNhdGUnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhdHRlcm4gZGVjcnlwdGlvbiBmYWlsZWQ6IEF1dGhlbnRpY2F0aW9uIHRhZyBtaXNtYXRjaCAoZGF0YSBtYXkgYmUgY29ycnVwdGVkIG9yIHRhbXBlcmVkKScpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0dGVybiBkZWNyeXB0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVyaXZlIGVuY3J5cHRpb24ga2V5IGZyb20gc2VjcmV0IHVzaW5nIFBCS0RGMlxuICAgKlxuICAgKiBAcGFyYW0gc2VjcmV0IC0gTWFzdGVyIHNlY3JldCBmcm9tIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSBzYWx0IC0gU2FsdCBmb3Iga2V5IGRlcml2YXRpb25cbiAgICogQHBhcmFtIGl0ZXJhdGlvbnMgLSBOdW1iZXIgb2YgUEJLREYyIGl0ZXJhdGlvbnNcbiAgICogQHJldHVybnMgRGVyaXZlZCBlbmNyeXB0aW9uIGtleVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBkZXJpdmVLZXkoXG4gICAgc2VjcmV0OiBzdHJpbmcsXG4gICAgc2FsdDogc3RyaW5nLFxuICAgIGl0ZXJhdGlvbnM6IG51bWJlclxuICApOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBwYmtkZjIoXG4gICAgICAgIHNlY3JldCxcbiAgICAgICAgc2FsdCxcbiAgICAgICAgaXRlcmF0aW9ucyxcbiAgICAgICAgdGhpcy5LRVlfTEVOR1RILFxuICAgICAgICAnc2hhMjU2JyxcbiAgICAgICAgKGVyciwgZGVyaXZlZEtleSkgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcignS2V5IGRlcml2YXRpb24gZmFpbGVkJywgeyBlcnJvcjogZXJyIH0pO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlcml2ZSBlbmNyeXB0aW9uIGtleTogJHtlcnIubWVzc2FnZX1gKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnRW5jcnlwdGlvbiBrZXkgZGVyaXZlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgICAgICAgIGtleUxlbmd0aDogZGVyaXZlZEtleS5sZW5ndGgsXG4gICAgICAgICAgICAgIGl0ZXJhdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUoZGVyaXZlZEtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZFxuICAgKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZCBhbmQgaW5pdGlhbGl6ZWRcbiAgICovXG4gIGlzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZW5hYmxlZCAmJiB0aGlzLmlzSW5pdGlhbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGVuY3J5cHRpb24gY29uZmlndXJhdGlvbiBzdGF0dXNcbiAgICpcbiAgICogQHJldHVybnMgQ29uZmlndXJhdGlvbiBzdGF0dXMgKHdpdGhvdXQgZXhwb3Npbmcgc2VjcmV0cylcbiAgICovXG4gIGdldFN0YXR1cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogdGhpcy5jb25maWcuZW5hYmxlZCxcbiAgICAgIGluaXRpYWxpemVkOiB0aGlzLmlzSW5pdGlhbGl6ZWQsXG4gICAgICBhbGdvcml0aG06IHRoaXMuQUxHT1JJVEhNLFxuICAgICAga2V5TGVuZ3RoOiB0aGlzLktFWV9MRU5HVEgsXG4gICAgICBpdGVyYXRpb25zOiB0aGlzLmNvbmZpZy5pdGVyYXRpb25zLFxuICAgICAgaGFzU2VjcmV0OiAhIXRoaXMuY29uZmlnLnNlY3JldCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlY3VyZWx5IGNsZWFyIGVuY3J5cHRpb24ga2V5IGZyb20gbWVtb3J5XG4gICAqIFNFQ1VSSVRZIEZJWDogT3ZlcndyaXRlcyBrZXkgYnVmZmVyIHdpdGggemVyb3MgYmVmb3JlIHJlbGVhc2luZ1xuICAgKlxuICAgKiBUaGlzIHByZXZlbnRzIGtleSByZWNvdmVyeSBmcm9tIG1lbW9yeSBkdW1wcyBvciBwcm9jZXNzIGluc3BlY3Rpb24uXG4gICAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBlbmNyeXB0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQuXG4gICAqL1xuICBwcml2YXRlIHNlY3VyZUtleUNsZWFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIC8vIE92ZXJ3cml0ZSBrZXkgbWF0ZXJpYWwgd2l0aCB6ZXJvc1xuICAgICAgdGhpcy5lbmNyeXB0aW9uS2V5LmZpbGwoMCk7XG4gICAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIuZGVidWcoJ0VuY3J5cHRpb24ga2V5IHNlY3VyZWx5IGNsZWFyZWQgZnJvbSBtZW1vcnknKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIGVuY3J5cHRvciAodXNlZnVsIGZvciB0ZXN0aW5nKVxuICAgKiBTRUNVUklUWSBGSVg6IE5vdyBwZXJmb3JtcyBzZWN1cmUga2V5IGNsZWFyaW5nXG4gICAqIFdBUk5JTkc6IFRoaXMgd2lsbCBzZWN1cmVseSBjbGVhciB0aGUgZW5jcnlwdGlvbiBrZXkgZnJvbSBtZW1vcnlcbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VjdXJlS2V5Q2xlYXIoKTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcgfTtcbiAgICBsb2dnZXIuZGVidWcoJ1BhdHRlcm5FbmNyeXB0b3IgcmVzZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWN1cmVseSByZXNldCB0aGUgZW5jcnlwdG9yIGFuZCBjbGVhciBhbGwgc2Vuc2l0aXZlIGRhdGFcbiAgICogU0VDVVJJVFk6IEV4cGxpY2l0bHkgY2xlYXJzIGVuY3J5cHRpb24ga2V5cyBmcm9tIG1lbW9yeVxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuOlxuICAgKiAtIFNodXR0aW5nIGRvd24gdGhlIGFwcGxpY2F0aW9uXG4gICAqIC0gUm90YXRpbmcgZW5jcnlwdGlvbiBrZXlzXG4gICAqIC0gUmVzcG9uZGluZyB0byBzZWN1cml0eSBpbmNpZGVudHNcbiAgICovXG4gIHNlY3VyZVJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VjdXJlS2V5Q2xlYXIoKTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcgfTtcbiAgICBsb2dnZXIuaW5mbygnUGF0dGVybkVuY3J5cHRvciBzZWN1cmVseSByZXNldCAtIGFsbCBzZW5zaXRpdmUgZGF0YSBjbGVhcmVkJyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSBvZiB0aGUgZW5jcnlwdG9yIGFuZCBzZWN1cmVseSBjbGVhciBhbGwgZGF0YVxuICAgKiBJbXBsZW1lbnRzIGNsZWFudXAgZm9yIHByb3BlciBESSBsaWZlY3ljbGUgbWFuYWdlbWVudFxuICAgKi9cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNlY3VyZVJlc2V0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* for tracking and alerting on security-related events.
|
|
6
6
|
*/
|
|
7
7
|
export interface SecurityEvent {
|
|
8
|
-
type: 'CONTENT_INJECTION_ATTEMPT' | 'YAML_INJECTION_ATTEMPT' | 'PATH_TRAVERSAL_ATTEMPT' | 'TOKEN_VALIDATION_FAILURE' | 'UPDATE_SECURITY_VIOLATION' | 'RATE_LIMIT_EXCEEDED' | 'YAML_PARSING_WARNING' | 'YAML_PARSE_SUCCESS' | 'TOKEN_VALIDATION_SUCCESS' | 'PATH_VALIDATION_SUCCESS' | 'RATE_LIMIT_WARNING' | 'TOKEN_CACHE_CLEARED' | 'YAML_UNICODE_ATTACK' | 'UNICODE_DIRECTION_OVERRIDE' | 'UNICODE_MIXED_SCRIPT' | 'UNICODE_VALIDATION_ERROR' | 'CONTENT_SIZE_EXCEEDED' | 'INCLUDE_DEPTH_EXCEEDED' | 'TEMPLATE_RENDERED' | 'TEMPLATE_INCLUDE' | 'TEMPLATE_LOADED' | 'TEMPLATE_SAVED' | 'TEMPLATE_DELETED' | 'MEMORY_CREATED' | 'MEMORY_ADDED' | 'MEMORY_SEARCHED' | 'SENSITIVE_MEMORY_DELETED' | 'RETENTION_POLICY_ENFORCED' | 'MEMORY_CLEARED' | 'MEMORY_LOADED' | 'MEMORY_SAVED' | 'MEMORY_DELETED' | 'MEMORY_LOAD_FAILED' | 'MEMORY_SAVE_FAILED' | 'MEMORY_LIST_ITEM_FAILED' | 'MEMORY_IMPORT_FAILED' | 'MEMORY_DESERIALIZE_FAILED' | 'MEMORY_INTEGRITY_VIOLATION' | 'MEMORY_UNICODE_VALIDATION_FAILED' | 'MEMORY_DUPLICATE_DETECTED' | 'SEED_MEMORY_INSTALLED' | 'SEED_MEMORY_INSTALLATION_FAILED' | 'ELEMENT_CREATED' | 'ELEMENT_LOADED' | 'ELEMENT_EDITED' | 'ELEMENT_ACTIVATED' | 'ELEMENT_DEACTIVATED' | 'ELEMENT_VALIDATED' | 'ELEMENT_DELETED' | 'AGENT_ACTIVATED' | 'AGENT_ACTIVATION_FAILED' | 'AGENT_ACTIVATION_ROLLBACK' | 'AGENT_DEACTIVATED' | 'AGENT_EXECUTED' | 'CONFIG_UPDATED' | 'IDENTITY_CHANGED' | 'OPERATION_COMPLETED' | 'OPERATION_FAILED' | 'BATCH_COMPLETED' | 'BATCH_REJECTED' | 'CONFIRMATION_RECORDED' | 'GATEKEEPER_DECISION' | 'AUTH_FLOW_INITIATED' | 'AGENT_DECISION' | 'RULE_ENGINE_CONFIG_UPDATE' | 'RULE_ENGINE_CONFIG_VALIDATION_ERROR' | 'GOAL_TEMPLATE_APPLIED' | 'GOAL_TEMPLATE_VALIDATION' | 'ENSEMBLE_CIRCULAR_DEPENDENCY' | 'ENSEMBLE_RESOURCE_LIMIT_EXCEEDED' | 'ENSEMBLE_ACTIVATION_TIMEOUT' | 'ENSEMBLE_ACTIVATION_FAILED' | 'ENSEMBLE_SUSPICIOUS_CONDITION' | 'ENSEMBLE_CONDITION_EVALUATION_FAILED' | 'ENSEMBLE_NESTED_DEPTH_EXCEEDED' | 'ENSEMBLE_CONTEXT_SIZE_EXCEEDED' | 'ENSEMBLE_CONTEXT_VALUE_TOO_LARGE' | 'ENSEMBLE_SAVED' | 'ENSEMBLE_IMPORTED' | 'ENSEMBLE_DELETED' | 'PORTFOLIO_INITIALIZATION' | 'PORTFOLIO_POPULATED' | 'FILE_COPIED' | 'DIRECTORY_MIGRATION' | 'PORTFOLIO_CACHE_INVALIDATION' | 'PORTFOLIO_FETCH_SUCCESS' | 'TEST_DATA_BLOCKED' | 'TEST_PATH_SECURITY_RISK' | 'TEST_PRODUCTION_ACCESS_BLOCKED' | 'TEST_PATH_INVALID' | 'TEST_ENVIRONMENT_PRODUCTION_PATH' | 'TEST_ENVIRONMENT_DEPRECATED_VAR' | 'TOOL_CACHE_INVALIDATED' | 'FILE_READ' | 'FILE_WRITTEN' | 'FILE_DELETED' | 'DANGER_ZONE_TRIGGERED' | 'DANGER_ZONE_OPERATION' | 'AUTONOMY_DENIED' | 'AUTONOMY_PAUSED' | 'SAFETY_EVALUATION_FAILURE' | 'VERIFICATION_ATTEMPTED' | 'VERIFICATION_SUCCEEDED' | 'VERIFICATION_FAILED' | 'VERIFICATION_EXPIRED' | 'AGENT_AUTO_CONTINUED' | 'AGENT_STEP_RETRIED' | 'AGENT_AUTO_RESTARTED' | 'AGENT_RESILIENCE_LIMIT_REACHED' | 'PERMISSION_PROMPT_DENIED' | 'CLI_APPROVAL_REQUESTED' | 'CLI_APPROVAL_GRANTED' | 'CLI_APPROVAL_CONSUMED';
|
|
8
|
+
type: 'CONTENT_INJECTION_ATTEMPT' | 'YAML_INJECTION_ATTEMPT' | 'PATH_TRAVERSAL_ATTEMPT' | 'TOKEN_VALIDATION_FAILURE' | 'UPDATE_SECURITY_VIOLATION' | 'RATE_LIMIT_EXCEEDED' | 'YAML_PARSING_WARNING' | 'YAML_PARSE_SUCCESS' | 'TOKEN_VALIDATION_SUCCESS' | 'PATH_VALIDATION_SUCCESS' | 'RATE_LIMIT_WARNING' | 'TOKEN_CACHE_CLEARED' | 'YAML_UNICODE_ATTACK' | 'UNICODE_DIRECTION_OVERRIDE' | 'UNICODE_MIXED_SCRIPT' | 'UNICODE_VALIDATION_ERROR' | 'CONTENT_SIZE_EXCEEDED' | 'INCLUDE_DEPTH_EXCEEDED' | 'TEMPLATE_RENDERED' | 'TEMPLATE_INCLUDE' | 'TEMPLATE_LOADED' | 'TEMPLATE_SAVED' | 'TEMPLATE_DELETED' | 'MEMORY_CREATED' | 'MEMORY_ADDED' | 'MEMORY_SEARCHED' | 'SENSITIVE_MEMORY_DELETED' | 'RETENTION_POLICY_ENFORCED' | 'MEMORY_CLEARED' | 'MEMORY_LOADED' | 'MEMORY_SAVED' | 'MEMORY_DELETED' | 'MEMORY_LOAD_FAILED' | 'MEMORY_SAVE_FAILED' | 'MEMORY_LIST_ITEM_FAILED' | 'MEMORY_IMPORT_FAILED' | 'MEMORY_DESERIALIZE_FAILED' | 'MEMORY_INTEGRITY_VIOLATION' | 'MEMORY_UNICODE_VALIDATION_FAILED' | 'MEMORY_DUPLICATE_DETECTED' | 'SEED_MEMORY_INSTALLED' | 'SEED_MEMORY_INSTALLATION_FAILED' | 'ELEMENT_CREATED' | 'ELEMENT_LOADED' | 'ELEMENT_EDITED' | 'ELEMENT_ACTIVATED' | 'ELEMENT_DEACTIVATED' | 'ELEMENT_VALIDATED' | 'ELEMENT_DELETED' | 'AGENT_ACTIVATED' | 'AGENT_ACTIVATION_FAILED' | 'AGENT_ACTIVATION_ROLLBACK' | 'AGENT_DEACTIVATED' | 'AGENT_EXECUTED' | 'CONFIG_UPDATED' | 'IDENTITY_CHANGED' | 'OPERATION_COMPLETED' | 'OPERATION_FAILED' | 'BATCH_COMPLETED' | 'BATCH_REJECTED' | 'CONFIRMATION_RECORDED' | 'GATEKEEPER_DECISION' | 'AUTH_FLOW_INITIATED' | 'AGENT_DECISION' | 'RULE_ENGINE_CONFIG_UPDATE' | 'RULE_ENGINE_CONFIG_VALIDATION_ERROR' | 'GOAL_TEMPLATE_APPLIED' | 'GOAL_TEMPLATE_VALIDATION' | 'ENSEMBLE_CIRCULAR_DEPENDENCY' | 'ENSEMBLE_RESOURCE_LIMIT_EXCEEDED' | 'ENSEMBLE_ACTIVATION_TIMEOUT' | 'ENSEMBLE_ACTIVATION_FAILED' | 'ENSEMBLE_SUSPICIOUS_CONDITION' | 'ENSEMBLE_CONDITION_EVALUATION_FAILED' | 'ENSEMBLE_NESTED_DEPTH_EXCEEDED' | 'ENSEMBLE_CONTEXT_SIZE_EXCEEDED' | 'ENSEMBLE_CONTEXT_VALUE_TOO_LARGE' | 'ENSEMBLE_SAVED' | 'ENSEMBLE_IMPORTED' | 'ENSEMBLE_DELETED' | 'PORTFOLIO_INITIALIZATION' | 'PORTFOLIO_POPULATED' | 'FILE_COPIED' | 'DIRECTORY_MIGRATION' | 'PORTFOLIO_CACHE_INVALIDATION' | 'PORTFOLIO_FETCH_SUCCESS' | 'TEST_DATA_BLOCKED' | 'TEST_PATH_SECURITY_RISK' | 'TEST_PRODUCTION_ACCESS_BLOCKED' | 'TEST_PATH_INVALID' | 'TEST_ENVIRONMENT_PRODUCTION_PATH' | 'TEST_ENVIRONMENT_DEPRECATED_VAR' | 'TOOL_CACHE_INVALIDATED' | 'FILE_READ' | 'FILE_WRITTEN' | 'FILE_DELETED' | 'DANGER_ZONE_TRIGGERED' | 'DANGER_ZONE_OPERATION' | 'AUTONOMY_DENIED' | 'AUTONOMY_PAUSED' | 'SAFETY_EVALUATION_FAILURE' | 'VERIFICATION_ATTEMPTED' | 'VERIFICATION_SUCCEEDED' | 'VERIFICATION_FAILED' | 'VERIFICATION_EXPIRED' | 'AGENT_AUTO_CONTINUED' | 'AGENT_STEP_RETRIED' | 'AGENT_AUTO_RESTARTED' | 'AGENT_RESILIENCE_LIMIT_REACHED' | 'PERMISSION_PROMPT_DENIED' | 'CLI_APPROVAL_REQUESTED' | 'CLI_APPROVAL_GRANTED' | 'CLI_APPROVAL_CONSUMED' | 'TOTP_ENROLLED' | 'TOTP_DISABLED' | 'TOTP_BACKUP_CODE_CONSUMED' | 'TOTP_VERIFICATION_FAILED' | 'CONSOLE_TOKEN_ROTATED';
|
|
9
9
|
severity: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
10
10
|
source: string;
|
|
11
11
|
details: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityMonitor.d.ts","sourceRoot":"","sources":["../../src/security/securityMonitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,2BAA2B,GAAG,wBAAwB,GAAG,wBAAwB,GACjF,0BAA0B,GAAG,2BAA2B,GAAG,qBAAqB,GAChF,sBAAsB,GAAG,oBAAoB,GAAG,0BAA0B,GAC1E,yBAAyB,GAAG,oBAAoB,GAAG,qBAAqB,GACxE,qBAAqB,GAAG,4BAA4B,GAAG,sBAAsB,GAC7E,0BAA0B,GAAG,uBAAuB,GAAG,wBAAwB,GAC/E,mBAAmB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAC/E,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,GAAG,iBAAiB,GAC1E,0BAA0B,GAAG,2BAA2B,GAAG,gBAAgB,GAC3E,eAAe,GAAG,cAAc,GAAG,gBAAgB,GAAG,oBAAoB,GAC1E,oBAAoB,GAAG,yBAAyB,GAAG,sBAAsB,GACzE,2BAA2B,GAAG,4BAA4B,GAAG,kCAAkC,GAC/F,2BAA2B,GAAG,uBAAuB,GAAG,iCAAiC,GACzF,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,qBAAqB,GACrG,mBAAmB,GAAG,iBAAiB,GACvC,iBAAiB,GAAG,yBAAyB,GAAG,2BAA2B,GAC3E,mBAAmB,GAAG,gBAAgB,GACtC,gBAAgB,GAAG,kBAAkB,GACrC,qBAAqB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GACjF,uBAAuB,GAAG,qBAAqB,GAC/C,qBAAqB,GACrB,gBAAgB,GAChB,2BAA2B,GAAG,qCAAqC,GACnE,uBAAuB,GAAG,0BAA0B,GACpD,8BAA8B,GAAG,kCAAkC,GACnE,6BAA6B,GAAG,4BAA4B,GAAG,+BAA+B,GAC9F,sCAAsC,GACtC,gCAAgC,GAAG,gCAAgC,GACnE,kCAAkC,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,kBAAkB,GAChG,0BAA0B,GAAG,qBAAqB,GAAG,aAAa,GAAG,qBAAqB,GAC1F,8BAA8B,GAAG,yBAAyB,GAAG,mBAAmB,GAChF,yBAAyB,GAAG,gCAAgC,GAAG,mBAAmB,GAClF,kCAAkC,GAAG,iCAAiC,GAAG,wBAAwB,GACjG,WAAW,GAAG,cAAc,GAAG,cAAc,GAC7C,uBAAuB,GAAG,uBAAuB,GACjD,iBAAiB,GAAG,iBAAiB,GAAG,2BAA2B,GACnE,wBAAwB,GAAG,wBAAwB,GACnD,qBAAqB,GAAG,sBAAsB,GAC9C,sBAAsB,GAAG,oBAAoB,GAC7C,sBAAsB,GAAG,gCAAgC,GACzD,0BAA0B,GAC1B,wBAAwB,GAAG,sBAAsB,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"securityMonitor.d.ts","sourceRoot":"","sources":["../../src/security/securityMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -126,4 +126,4 @@ export class SecurityMonitor {
|
|
|
126
126
|
this.dedup.clear();
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUEyRGxFLHlFQUF5RTtBQUN6RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0Isc0RBQXNEO0FBQ3RELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sZUFBZTtJQUNsQixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFxQztJQUN2RCxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXZGLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBcUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBb0I7UUFDMUMseUVBQXlFO1FBQ3pFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FB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LFlBQVk7WUFDWixvQkFBb0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQXFCLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQzVDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQzVDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IE1vbml0b3IgZm9yIERvbGxob3VzZU1DUFxuICogXG4gKiBDZW50cmFsaXplZCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFuZCBtb25pdG9yaW5nIHN5c3RlbVxuICogZm9yIHRyYWNraW5nIGFuZCBhbGVydGluZyBvbiBzZWN1cml0eS1yZWxhdGVkIGV2ZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHsgRXZlbnREZWR1cGxpY2F0b3IgfSBmcm9tICcuLi91dGlscy9FdmVudERlZHVwbGljYXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlFdmVudCB7XG4gIHR5cGU6ICdDT05URU5UX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyB8XG4gICAgICAgICdUT0tFTl9WQUxJREFUSU9OX0ZBSUxVUkUnIHwgJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nIHwgJ1JBVEVfTElNSVRfRVhDRUVERUQnIHxcbiAgICAgICAgJ1lBTUxfUEFSU0lOR19XQVJOSU5HJyB8ICdZQU1MX1BBUlNFX1NVQ0NFU1MnIHwgJ1RPS0VOX1ZBTElEQVRJT05fU1VDQ0VTUycgfFxuICAgICAgICAnUEFUSF9WQUxJREFUSU9OX1NVQ0NFU1MnIHwgJ1JBVEVfTElNSVRfV0FSTklORycgfCAnVE9LRU5fQ0FDSEVfQ0xFQVJFRCcgfFxuICAgICAgICAnWUFNTF9VTklDT0RFX0FUVEFDSycgfCAnVU5JQ09ERV9ESVJFQ1RJT05fT1ZFUlJJREUnIHwgJ1VOSUNPREVfTUlYRURfU0NSSVBUJyB8XG4gICAgICAgICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InIHwgJ0NPTlRFTlRfU0laRV9FWENFRURFRCcgfCAnSU5DTFVERV9ERVBUSF9FWENFRURFRCcgfFxuICAgICAgICAnVEVNUExBVEVfUkVOREVSRUQnIHwgJ1RFTVBMQVRFX0lOQ0xVREUnIHwgJ1RFTVBMQVRFX0xPQURFRCcgfCAnVEVNUExBVEVfU0FWRUQnIHxcbiAgICAgICAgJ1RFTVBMQVRFX0RFTEVURUQnIHwgJ01FTU9SWV9DUkVBVEVEJyB8ICdNRU1PUllfQURERUQnIHwgJ01FTU9SWV9TRUFSQ0hFRCcgfFxuICAgICAgICAnU0VOU0lUSVZFX01FTU9SWV9ERUxFVEVEJyB8ICdSRVRFTlRJT05fUE9MSUNZX0VORk9SQ0VEJyB8ICdNRU1PUllfQ0xFQVJFRCcgfFxuICAgICAgICAnTUVNT1JZX0xPQURFRCcgfCAnTUVNT1JZX1NBVkVEJyB8ICdNRU1PUllfREVMRVRFRCcgfCAnTUVNT1JZX0xPQURfRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfU0FWRV9GQUlMRUQnIHwgJ01FTU9SWV9MSVNUX0lURU1fRkFJTEVEJyB8ICdNRU1PUllfSU1QT1JUX0ZBSUxFRCcgfFxuICAgICAgICAnTUVNT1JZX0RFU0VSSUFMSVpFX0ZBSUxFRCcgfCAnTUVNT1JZX0lOVEVHUklUWV9WSU9MQVRJT04nIHwgJ01FTU9SWV9VTklDT0RFX1ZBTElEQVRJT05fRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfRFVQTElDQVRFX0RFVEVDVEVEJyB8ICdTRUVEX01FTU9SWV9JTlNUQUxMRUQnIHwgJ1NFRURfTUVNT1JZX0lOU1RBTExBVElPTl9GQUlMRUQnIHxcbiAgICAgICAgJ0VMRU1FTlRfQ1JFQVRFRCcgfCAnRUxFTUVOVF9MT0FERUQnIHwgJ0VMRU1FTlRfRURJVEVEJyB8ICdFTEVNRU5UX0FDVElWQVRFRCcgfCAnRUxFTUVOVF9ERUFDVElWQVRFRCcgfFxuICAgICAgICAnRUxFTUVOVF9WQUxJREFURUQnIHwgJ0VMRU1FTlRfREVMRVRFRCcgfFxuICAgICAgICAnQUdFTlRfQUNUSVZBVEVEJyB8ICdBR0VOVF9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnQUdFTlRfQUNUSVZBVElPTl9ST0xMQkFDSycgfFxuICAgICAgICAnQUdFTlRfREVBQ1RJVkFURUQnIHwgJ0FHRU5UX0VYRUNVVEVEJyB8XG4gICAgICAgICdDT05GSUdfVVBEQVRFRCcgfCAnSURFTlRJVFlfQ0hBTkdFRCcgfFxuICAgICAgICAnT1BFUkFUSU9OX0NPTVBMRVRFRCcgfCAnT1BFUkFUSU9OX0ZBSUxFRCcgfCAnQkFUQ0hfQ09NUExFVEVEJyB8ICdCQVRDSF9SRUpFQ1RFRCcgfFxuICAgICAgICAnQ09ORklSTUFUSU9OX1JFQ09SREVEJyB8ICdHQVRFS0VFUEVSX0RFQ0lTSU9OJyB8XG4gICAgICAgICdBVVRIX0ZMT1dfSU5JVElBVEVEJyB8XG4gICAgICAgICdBR0VOVF9ERUNJU0lPTicgfFxuICAgICAgICAnUlVMRV9FTkdJTkVfQ09ORklHX1VQREFURScgfCAnUlVMRV9FTkdJTkVfQ09ORklHX1ZBTElEQVRJT05fRVJST1InIHxcbiAgICAgICAgJ0dPQUxfVEVNUExBVEVfQVBQTElFRCcgfCAnR09BTF9URU1QTEFURV9WQUxJREFUSU9OJyB8XG4gICAgICAgICdFTlNFTUJMRV9DSVJDVUxBUl9ERVBFTkRFTkNZJyB8ICdFTlNFTUJMRV9SRVNPVVJDRV9MSU1JVF9FWENFRURFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfQUNUSVZBVElPTl9USU1FT1VUJyB8ICdFTlNFTUJMRV9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnRU5TRU1CTEVfU1VTUElDSU9VU19DT05ESVRJT04nIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTkRJVElPTl9FVkFMVUFUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfTkVTVEVEX0RFUFRIX0VYQ0VFREVEJyB8ICdFTlNFTUJMRV9DT05URVhUX1NJWkVfRVhDRUVERUQnIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTlRFWFRfVkFMVUVfVE9PX0xBUkdFJyB8ICdFTlNFTUJMRV9TQVZFRCcgfCAnRU5TRU1CTEVfSU1QT1JURUQnIHwgJ0VOU0VNQkxFX0RFTEVURUQnIHxcbiAgICAgICAgJ1BPUlRGT0xJT19JTklUSUFMSVpBVElPTicgfCAnUE9SVEZPTElPX1BPUFVMQVRFRCcgfCAnRklMRV9DT1BJRUQnIHwgJ0RJUkVDVE9SWV9NSUdSQVRJT04nIHxcbiAgICAgICAgJ1BPUlRGT0xJT19DQUNIRV9JTlZBTElEQVRJT04nIHwgJ1BPUlRGT0xJT19GRVRDSF9TVUNDRVNTJyB8ICdURVNUX0RBVEFfQkxPQ0tFRCcgfFxuICAgICAgICAnVEVTVF9QQVRIX1NFQ1VSSVRZX1JJU0snIHwgJ1RFU1RfUFJPRFVDVElPTl9BQ0NFU1NfQkxPQ0tFRCcgfCAnVEVTVF9QQVRIX0lOVkFMSUQnIHxcbiAgICAgICAgJ1RFU1RfRU5WSVJPTk1FTlRfUFJPRFVDVElPTl9QQVRIJyB8ICdURVNUX0VOVklST05NRU5UX0RFUFJFQ0FURURfVkFSJyB8ICdUT09MX0NBQ0hFX0lOVkFMSURBVEVEJyB8XG4gICAgICAgICdGSUxFX1JFQUQnIHwgJ0ZJTEVfV1JJVFRFTicgfCAnRklMRV9ERUxFVEVEJyB8XG4gICAgICAgICdEQU5HRVJfWk9ORV9UUklHR0VSRUQnIHwgJ0RBTkdFUl9aT05FX09QRVJBVElPTicgfFxuICAgICAgICAnQVVUT05PTVlfREVOSUVEJyB8ICdBVVRPTk9NWV9QQVVTRUQnIHwgJ1NBRkVUWV9FVkFMVUFUSU9OX0ZBSUxVUkUnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9BVFRFTVBURUQnIHwgJ1ZFUklGSUNBVElPTl9TVUNDRUVERUQnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9GQUlMRUQnIHwgJ1ZFUklGSUNBVElPTl9FWFBJUkVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX0NPTlRJTlVFRCcgfCAnQUdFTlRfU1RFUF9SRVRSSUVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX1JFU1RBUlRFRCcgfCAnQUdFTlRfUkVTSUxJRU5DRV9MSU1JVF9SRUFDSEVEJyB8XG4gICAgICAgICdQRVJNSVNTSU9OX1BST01QVF9ERU5JRUQnIHxcbiAgICAgICAgJ0NMSV9BUFBST1ZBTF9SRVFVRVNURUQnIHwgJ0NMSV9BUFBST1ZBTF9HUkFOVEVEJyB8ICdDTElfQVBQUk9WQUxfQ09OU1VNRUQnO1xuICBzZXZlcml0eTogJ0xPVycgfCAnTUVESVVNJyB8ICdISUdIJyB8ICdDUklUSUNBTCc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBkZXRhaWxzOiBzdHJpbmc7XG4gIHVzZXJBZ2VudD86IHN0cmluZztcbiAgaXA/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxEYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5TG9nRW50cnkgZXh0ZW5kcyBTZWN1cml0eUV2ZW50IHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKiBEZWR1cGxpY2F0aW9uIHdpbmRvdzogc3VwcHJlc3MgaWRlbnRpY2FsIGV2ZW50cyB3aXRoaW4gdGhpcyBwZXJpb2QgKi9cbmNvbnN0IERFRFVQX1dJTkRPV19NUyA9IDYwXzAwMDtcblxuLyoqIE1heGltdW0gZGVkdXAgY2FjaGUgZW50cmllcyBiZWZvcmUgTFJVIGV2aWN0aW9uICovXG5jb25zdCBERURVUF9NQVhfU0laRSA9IDUwMDtcblxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5TW9uaXRvciB7XG4gIHByaXZhdGUgc3RhdGljIGV2ZW50Q291bnQgPSAwO1xuICBwcml2YXRlIHN0YXRpYyBldmVudHMgPSBuZXcgRXZpY3RpbmdRdWV1ZTxTZWN1cml0eUxvZ0VudHJ5PigxMDAwKTtcbiAgcHJpdmF0ZSBzdGF0aWMgbG9nTGlzdGVuZXI/OiAoZW50cnk6IFNlY3VyaXR5TG9nRW50cnkpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGRlZHVwID0gbmV3IEV2ZW50RGVkdXBsaWNhdG9yKERFRFVQX1dJTkRPV19NUywgREVEVVBfTUFYX1NJWkUpO1xuXG4gIHN0YXRpYyBhZGRMb2dMaXN0ZW5lcihmbjogKGVudHJ5OiBTZWN1cml0eUxvZ0VudHJ5KSA9PiB2b2lkKTogKCkgPT4gdm9pZCB7XG4gICAgdGhpcy5sb2dMaXN0ZW5lciA9IGZuO1xuICAgIHJldHVybiAoKSA9PiB7IHRoaXMubG9nTGlzdGVuZXIgPSB1bmRlZmluZWQ7IH07XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBhIHNlY3VyaXR5IGV2ZW50LCBzdXBwcmVzc2luZyByZXBlYXRlZCBpZGVudGljYWwgZXZlbnRzIHdpdGhpbiB0aGUgZGVkdXAgd2luZG93LlxuICAgKi9cbiAgc3RhdGljIGxvZ1NlY3VyaXR5RXZlbnQoZXZlbnQ6IFNlY3VyaXR5RXZlbnQpOiB2b2lkIHtcbiAgICAvLyBEZWR1cGxpY2F0ZTogc2FtZSB0eXBlICsgc291cmNlICsgZGV0YWlscyB3aXRoaW4gNjBzIHdpbmRvdyA9IHN1cHByZXNzXG4gICAgaWYgKHRoaXMuZGVkdXAuc2hvdWxkU3VwcHJlc3MoYCR7ZXZlbnQudHlwZX1cXDAke2V2ZW50LnNvdXJjZX1cXDAke2V2ZW50LmRldGFpbHN9YCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dFbnRyeTogU2VjdXJpdHlMb2dFbnRyeSA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBpZDogYFNFQy0ke0RhdGUubm93KCl9LSR7Kyt0aGlzLmV2ZW50Q291bnR9YCxcbiAgICB9O1xuXG4gICAgLy8gQm91bmRlZCBGSUZPIGV2aWN0aW9uIOKAlCBFdmljdGluZ1F1ZXVlIGhhbmRsZXMgY2FwYWNpdHlcbiAgICB0aGlzLmV2ZW50cy5wdXNoKGxvZ0VudHJ5KTtcbiAgICB0aGlzLmxvZ0xpc3RlbmVyPy4obG9nRW50cnkpO1xuXG4gICAgLy8gSW4gTUNQIHNlcnZlcnMsIHdlIGNhbm5vdCB3cml0ZSB0byBzdGRlcnIvc3Rkb3V0IGFzIGl0IGJyZWFrcyB0aGUgSlNPTi1SUEMgcHJvdG9jb2xcbiAgICAvLyBTZWN1cml0eSBldmVudHMgYXJlIHN0b3JlZCBpbiBtZW1vcnkgYW5kIGNhbiBiZSByZXRyaWV2ZWQgdmlhIEFQSVxuICAgIC8vIE9ubHkgc2VuZCBjcml0aWNhbCBhbGVydHMgdmlhIHRoZSBwcm9wZXIgY2hhbm5lbFxuXG4gICAgaWYgKGV2ZW50LnNldmVyaXR5ID09PSAnQ1JJVElDQUwnKSB7XG4gICAgICB0aGlzLnNlbmRTZWN1cml0eUFsZXJ0KGxvZ0VudHJ5KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZHMgc2VjdXJpdHkgYWxlcnRzIGZvciBjcml0aWNhbCBldmVudHNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNlbmRTZWN1cml0eUFsZXJ0KGV2ZW50OiBTZWN1cml0eUxvZ0VudHJ5KTogdm9pZCB7XG4gICAgLy8gSW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LCB0aGlzIHdvdWxkIGludGVncmF0ZSB3aXRoOlxuICAgIC8vIC0gU2xhY2sgd2ViaG9va3NcbiAgICAvLyAtIEVtYWlsIGFsZXJ0c1xuICAgIC8vIC0gUGFnZXJEdXR5XG4gICAgLy8gLSBTZWN1cml0eSBJbmZvcm1hdGlvbiBhbmQgRXZlbnQgTWFuYWdlbWVudCAoU0lFTSkgc3lzdGVtc1xuICAgIFxuICAgIC8vIExvZyBjcml0aWNhbCBzZWN1cml0eSBhbGVydHMgd2l0aCBzdHJ1Y3R1cmVkIGRhdGFcbiAgICAvLyBETyBOT1QgdXNlIGNvbnNvbGUuZXJyb3IgaW4gTUNQIHNlcnZlcnMgYXMgaXQgYnJlYWtzIHRoZSBKU09OLVJQQyBwcm90b2NvbFxuICAgIGxvZ2dlci5lcnJvcignW0NSSVRJQ0FMIFNFQ1VSSVRZIEFMRVJUXScsIHtcbiAgICAgIHR5cGU6IGV2ZW50LnR5cGUsXG4gICAgICBkZXRhaWxzOiBldmVudC5kZXRhaWxzLFxuICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICBpZDogZXZlbnQuaWRcbiAgICB9KTtcbiAgICBcbiAgICAvLyBJZiBpbiBwcm9kdWN0aW9uIG1vZGUgd2l0aCBwcm9wZXIgY29uZmlnLCBzZW5kIGFjdHVhbCBhbGVydHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuRE9MTEhPVVNFX1NFQ1VSSVRZX0FMRVJUUyA9PT0gJ3RydWUnKSB7XG4gICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgYWN0dWFsIGFsZXJ0IG1lY2hhbmlzbXNcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyByZWNlbnQgc2VjdXJpdHkgZXZlbnRzIGZvciBhbmFseXNpc1xuICAgKi9cbiAgc3RhdGljIGdldFJlY2VudEV2ZW50cyhjb3VudDogbnVtYmVyID0gMTAwKTogU2VjdXJpdHlMb2dFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMudG9BcnJheSgpLnNsaWNlKC1jb3VudCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBldmVudHMgYnkgc2V2ZXJpdHlcbiAgICovXG4gIHN0YXRpYyBnZXRFdmVudHNCeVNldmVyaXR5KHNldmVyaXR5OiBTZWN1cml0eUV2ZW50WydzZXZlcml0eSddKTogU2VjdXJpdHlMb2dFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMudG9BcnJheSgpLmZpbHRlcihldmVudCA9PiBldmVudC5zZXZlcml0eSA9PT0gc2V2ZXJpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgZXZlbnRzIGJ5IHR5cGVcbiAgICovXG4gIHN0YXRpYyBnZXRFdmVudHNCeVR5cGUodHlwZTogU2VjdXJpdHlFdmVudFsndHlwZSddKTogU2VjdXJpdHlMb2dFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMudG9BcnJheSgpLmZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSB0eXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBzZWN1cml0eSByZXBvcnRcbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZVNlY3VyaXR5UmVwb3J0KCk6IHtcbiAgICB0b3RhbEV2ZW50czogbnVtYmVyO1xuICAgIGV2ZW50c0J5U2V2ZXJpdHk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gICAgZXZlbnRzQnlUeXBlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIHJlY2VudENyaXRpY2FsRXZlbnRzOiBTZWN1cml0eUxvZ0VudHJ5W107XG4gIH0ge1xuICAgIGNvbnN0IGV2ZW50c0J5U2V2ZXJpdHk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICAgICBDUklUSUNBTDogMCxcbiAgICAgIEhJR0g6IDAsXG4gICAgICBNRURJVU06IDAsXG4gICAgICBMT1c6IDAsXG4gICAgfTtcblxuICAgIGNvbnN0IGV2ZW50c0J5VHlwZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBldmVudCBvZiB0aGlzLmV2ZW50cy50b0FycmF5KCkpIHtcbiAgICAgIGV2ZW50c0J5U2V2ZXJpdHlbZXZlbnQuc2V2ZXJpdHldKys7XG4gICAgICBldmVudHNCeVR5cGVbZXZlbnQudHlwZV0gPSAoZXZlbnRzQnlUeXBlW2V2ZW50LnR5cGVdIHx8IDApICsgMTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxFdmVudHM6IHRoaXMuZXZlbnRzLnNpemUsXG4gICAgICBldmVudHNCeVNldmVyaXR5LFxuICAgICAgZXZlbnRzQnlUeXBlLFxuICAgICAgcmVjZW50Q3JpdGljYWxFdmVudHM6IHRoaXMuZ2V0RXZlbnRzQnlTZXZlcml0eSgnQ1JJVElDQUwnKS5zbGljZSgtMTApLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIG9sZCBldmVudHMgKGZvciBtZW1vcnkgbWFuYWdlbWVudClcbiAgICovXG4gIHN0YXRpYyBjbGVhck9sZEV2ZW50cyhkYXlzVG9LZWVwOiBudW1iZXIgPSA3KTogdm9pZCB7XG4gICAgY29uc3QgY3V0b2ZmRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY3V0b2ZmRGF0ZS5zZXREYXRlKGN1dG9mZkRhdGUuZ2V0RGF0ZSgpIC0gZGF5c1RvS2VlcCk7XG4gICAgY29uc3QgY3V0b2ZmVGltZXN0YW1wID0gY3V0b2ZmRGF0ZS50b0lTT1N0cmluZygpO1xuXG4gICAgY29uc3QgcmVtYWluaW5nID0gdGhpcy5ldmVudHMudG9BcnJheSgpLmZpbHRlcihcbiAgICAgIGV2ZW50ID0+IGV2ZW50LnRpbWVzdGFtcCA+PSBjdXRvZmZUaW1lc3RhbXBcbiAgICApO1xuICAgIHRoaXMuZXZlbnRzLnJlc2V0KFsuLi5yZW1haW5pbmddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBURVNUSU5HIE9OTFk6IENsZWFycyBhbGwgZXZlbnRzIGFuZCByZXNldHMgY291bnRlclxuICAgKiBTaG91bGQgb25seSBiZSBjYWxsZWQgaW4gdGVzdCBjbGVhbnVwIChhZnRlckVhY2gvYWZ0ZXJBbGwpXG4gICAqIHRvIHByZXZlbnQgdGVzdCBwb2xsdXRpb24gZnJvbSBhY2N1bXVsYXRlZCBzZWN1cml0eSBldmVudHNcbiAgICovXG4gIHN0YXRpYyBjbGVhckFsbEV2ZW50c0ZvclRlc3RpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudHMuY2xlYXIoKTtcbiAgICB0aGlzLmV2ZW50Q291bnQgPSAwO1xuICAgIHRoaXMuZGVkdXAuY2xlYXIoKTtcbiAgfVxufVxuIl19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUE2RGxFLHlFQUF5RTtBQUN6RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0Isc0RBQXNEO0FBQ3RELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sZUFBZTtJQUNsQixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFxQztJQUN2RCxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXZGLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBcUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBb0I7UUFDMUMseUVBQXlFO1FBQ3pFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FB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LFlBQVk7WUFDWixvQkFBb0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQXFCLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQzVDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQzVDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5IE1vbml0b3IgZm9yIERvbGxob3VzZU1DUFxuICogXG4gKiBDZW50cmFsaXplZCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFuZCBtb25pdG9yaW5nIHN5c3RlbVxuICogZm9yIHRyYWNraW5nIGFuZCBhbGVydGluZyBvbiBzZWN1cml0eS1yZWxhdGVkIGV2ZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4uL3V0aWxzL0V2aWN0aW5nUXVldWUuanMnO1xuaW1wb3J0IHsgRXZlbnREZWR1cGxpY2F0b3IgfSBmcm9tICcuLi91dGlscy9FdmVudERlZHVwbGljYXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlFdmVudCB7XG4gIHR5cGU6ICdDT05URU5UX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyB8ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyB8XG4gICAgICAgICdUT0tFTl9WQUxJREFUSU9OX0ZBSUxVUkUnIHwgJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nIHwgJ1JBVEVfTElNSVRfRVhDRUVERUQnIHxcbiAgICAgICAgJ1lBTUxfUEFSU0lOR19XQVJOSU5HJyB8ICdZQU1MX1BBUlNFX1NVQ0NFU1MnIHwgJ1RPS0VOX1ZBTElEQVRJT05fU1VDQ0VTUycgfFxuICAgICAgICAnUEFUSF9WQUxJREFUSU9OX1NVQ0NFU1MnIHwgJ1JBVEVfTElNSVRfV0FSTklORycgfCAnVE9LRU5fQ0FDSEVfQ0xFQVJFRCcgfFxuICAgICAgICAnWUFNTF9VTklDT0RFX0FUVEFDSycgfCAnVU5JQ09ERV9ESVJFQ1RJT05fT1ZFUlJJREUnIHwgJ1VOSUNPREVfTUlYRURfU0NSSVBUJyB8XG4gICAgICAgICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InIHwgJ0NPTlRFTlRfU0laRV9FWENFRURFRCcgfCAnSU5DTFVERV9ERVBUSF9FWENFRURFRCcgfFxuICAgICAgICAnVEVNUExBVEVfUkVOREVSRUQnIHwgJ1RFTVBMQVRFX0lOQ0xVREUnIHwgJ1RFTVBMQVRFX0xPQURFRCcgfCAnVEVNUExBVEVfU0FWRUQnIHxcbiAgICAgICAgJ1RFTVBMQVRFX0RFTEVURUQnIHwgJ01FTU9SWV9DUkVBVEVEJyB8ICdNRU1PUllfQURERUQnIHwgJ01FTU9SWV9TRUFSQ0hFRCcgfFxuICAgICAgICAnU0VOU0lUSVZFX01FTU9SWV9ERUxFVEVEJyB8ICdSRVRFTlRJT05fUE9MSUNZX0VORk9SQ0VEJyB8ICdNRU1PUllfQ0xFQVJFRCcgfFxuICAgICAgICAnTUVNT1JZX0xPQURFRCcgfCAnTUVNT1JZX1NBVkVEJyB8ICdNRU1PUllfREVMRVRFRCcgfCAnTUVNT1JZX0xPQURfRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfU0FWRV9GQUlMRUQnIHwgJ01FTU9SWV9MSVNUX0lURU1fRkFJTEVEJyB8ICdNRU1PUllfSU1QT1JUX0ZBSUxFRCcgfFxuICAgICAgICAnTUVNT1JZX0RFU0VSSUFMSVpFX0ZBSUxFRCcgfCAnTUVNT1JZX0lOVEVHUklUWV9WSU9MQVRJT04nIHwgJ01FTU9SWV9VTklDT0RFX1ZBTElEQVRJT05fRkFJTEVEJyB8XG4gICAgICAgICdNRU1PUllfRFVQTElDQVRFX0RFVEVDVEVEJyB8ICdTRUVEX01FTU9SWV9JTlNUQUxMRUQnIHwgJ1NFRURfTUVNT1JZX0lOU1RBTExBVElPTl9GQUlMRUQnIHxcbiAgICAgICAgJ0VMRU1FTlRfQ1JFQVRFRCcgfCAnRUxFTUVOVF9MT0FERUQnIHwgJ0VMRU1FTlRfRURJVEVEJyB8ICdFTEVNRU5UX0FDVElWQVRFRCcgfCAnRUxFTUVOVF9ERUFDVElWQVRFRCcgfFxuICAgICAgICAnRUxFTUVOVF9WQUxJREFURUQnIHwgJ0VMRU1FTlRfREVMRVRFRCcgfFxuICAgICAgICAnQUdFTlRfQUNUSVZBVEVEJyB8ICdBR0VOVF9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnQUdFTlRfQUNUSVZBVElPTl9ST0xMQkFDSycgfFxuICAgICAgICAnQUdFTlRfREVBQ1RJVkFURUQnIHwgJ0FHRU5UX0VYRUNVVEVEJyB8XG4gICAgICAgICdDT05GSUdfVVBEQVRFRCcgfCAnSURFTlRJVFlfQ0hBTkdFRCcgfFxuICAgICAgICAnT1BFUkFUSU9OX0NPTVBMRVRFRCcgfCAnT1BFUkFUSU9OX0ZBSUxFRCcgfCAnQkFUQ0hfQ09NUExFVEVEJyB8ICdCQVRDSF9SRUpFQ1RFRCcgfFxuICAgICAgICAnQ09ORklSTUFUSU9OX1JFQ09SREVEJyB8ICdHQVRFS0VFUEVSX0RFQ0lTSU9OJyB8XG4gICAgICAgICdBVVRIX0ZMT1dfSU5JVElBVEVEJyB8XG4gICAgICAgICdBR0VOVF9ERUNJU0lPTicgfFxuICAgICAgICAnUlVMRV9FTkdJTkVfQ09ORklHX1VQREFURScgfCAnUlVMRV9FTkdJTkVfQ09ORklHX1ZBTElEQVRJT05fRVJST1InIHxcbiAgICAgICAgJ0dPQUxfVEVNUExBVEVfQVBQTElFRCcgfCAnR09BTF9URU1QTEFURV9WQUxJREFUSU9OJyB8XG4gICAgICAgICdFTlNFTUJMRV9DSVJDVUxBUl9ERVBFTkRFTkNZJyB8ICdFTlNFTUJMRV9SRVNPVVJDRV9MSU1JVF9FWENFRURFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfQUNUSVZBVElPTl9USU1FT1VUJyB8ICdFTlNFTUJMRV9BQ1RJVkFUSU9OX0ZBSUxFRCcgfCAnRU5TRU1CTEVfU1VTUElDSU9VU19DT05ESVRJT04nIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTkRJVElPTl9FVkFMVUFUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnRU5TRU1CTEVfTkVTVEVEX0RFUFRIX0VYQ0VFREVEJyB8ICdFTlNFTUJMRV9DT05URVhUX1NJWkVfRVhDRUVERUQnIHxcbiAgICAgICAgJ0VOU0VNQkxFX0NPTlRFWFRfVkFMVUVfVE9PX0xBUkdFJyB8ICdFTlNFTUJMRV9TQVZFRCcgfCAnRU5TRU1CTEVfSU1QT1JURUQnIHwgJ0VOU0VNQkxFX0RFTEVURUQnIHxcbiAgICAgICAgJ1BPUlRGT0xJT19JTklUSUFMSVpBVElPTicgfCAnUE9SVEZPTElPX1BPUFVMQVRFRCcgfCAnRklMRV9DT1BJRUQnIHwgJ0RJUkVDVE9SWV9NSUdSQVRJT04nIHxcbiAgICAgICAgJ1BPUlRGT0xJT19DQUNIRV9JTlZBTElEQVRJT04nIHwgJ1BPUlRGT0xJT19GRVRDSF9TVUNDRVNTJyB8ICdURVNUX0RBVEFfQkxPQ0tFRCcgfFxuICAgICAgICAnVEVTVF9QQVRIX1NFQ1VSSVRZX1JJU0snIHwgJ1RFU1RfUFJPRFVDVElPTl9BQ0NFU1NfQkxPQ0tFRCcgfCAnVEVTVF9QQVRIX0lOVkFMSUQnIHxcbiAgICAgICAgJ1RFU1RfRU5WSVJPTk1FTlRfUFJPRFVDVElPTl9QQVRIJyB8ICdURVNUX0VOVklST05NRU5UX0RFUFJFQ0FURURfVkFSJyB8ICdUT09MX0NBQ0hFX0lOVkFMSURBVEVEJyB8XG4gICAgICAgICdGSUxFX1JFQUQnIHwgJ0ZJTEVfV1JJVFRFTicgfCAnRklMRV9ERUxFVEVEJyB8XG4gICAgICAgICdEQU5HRVJfWk9ORV9UUklHR0VSRUQnIHwgJ0RBTkdFUl9aT05FX09QRVJBVElPTicgfFxuICAgICAgICAnQVVUT05PTVlfREVOSUVEJyB8ICdBVVRPTk9NWV9QQVVTRUQnIHwgJ1NBRkVUWV9FVkFMVUFUSU9OX0ZBSUxVUkUnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9BVFRFTVBURUQnIHwgJ1ZFUklGSUNBVElPTl9TVUNDRUVERUQnIHxcbiAgICAgICAgJ1ZFUklGSUNBVElPTl9GQUlMRUQnIHwgJ1ZFUklGSUNBVElPTl9FWFBJUkVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX0NPTlRJTlVFRCcgfCAnQUdFTlRfU1RFUF9SRVRSSUVEJyB8XG4gICAgICAgICdBR0VOVF9BVVRPX1JFU1RBUlRFRCcgfCAnQUdFTlRfUkVTSUxJRU5DRV9MSU1JVF9SRUFDSEVEJyB8XG4gICAgICAgICdQRVJNSVNTSU9OX1BST01QVF9ERU5JRUQnIHxcbiAgICAgICAgJ0NMSV9BUFBST1ZBTF9SRVFVRVNURUQnIHwgJ0NMSV9BUFBST1ZBTF9HUkFOVEVEJyB8ICdDTElfQVBQUk9WQUxfQ09OU1VNRUQnIHxcbiAgICAgICAgJ1RPVFBfRU5ST0xMRUQnIHwgJ1RPVFBfRElTQUJMRUQnIHwgJ1RPVFBfQkFDS1VQX0NPREVfQ09OU1VNRUQnIHwgJ1RPVFBfVkVSSUZJQ0FUSU9OX0ZBSUxFRCcgfFxuICAgICAgICAnQ09OU09MRV9UT0tFTl9ST1RBVEVEJztcbiAgc2V2ZXJpdHk6ICdMT1cnIHwgJ01FRElVTScgfCAnSElHSCcgfCAnQ1JJVElDQUwnO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGV0YWlsczogc3RyaW5nO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUxvZ0VudHJ5IGV4dGVuZHMgU2VjdXJpdHlFdmVudCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xufVxuXG4vKiogRGVkdXBsaWNhdGlvbiB3aW5kb3c6IHN1cHByZXNzIGlkZW50aWNhbCBldmVudHMgd2l0aGluIHRoaXMgcGVyaW9kICovXG5jb25zdCBERURVUF9XSU5ET1dfTVMgPSA2MF8wMDA7XG5cbi8qKiBNYXhpbXVtIGRlZHVwIGNhY2hlIGVudHJpZXMgYmVmb3JlIExSVSBldmljdGlvbiAqL1xuY29uc3QgREVEVVBfTUFYX1NJWkUgPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eU1vbml0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBldmVudENvdW50ID0gMDtcbiAgcHJpdmF0ZSBzdGF0aWMgZXZlbnRzID0gbmV3IEV2aWN0aW5nUXVldWU8U2VjdXJpdHlMb2dFbnRyeT4oMTAwMCk7XG4gIHByaXZhdGUgc3RhdGljIGxvZ0xpc3RlbmVyPzogKGVudHJ5OiBTZWN1cml0eUxvZ0VudHJ5KSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkZWR1cCA9IG5ldyBFdmVudERlZHVwbGljYXRvcihERURVUF9XSU5ET1dfTVMsIERFRFVQX01BWF9TSVpFKTtcblxuICBzdGF0aWMgYWRkTG9nTGlzdGVuZXIoZm46IChlbnRyeTogU2VjdXJpdHlMb2dFbnRyeSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICAgIHRoaXMubG9nTGlzdGVuZXIgPSBmbjtcbiAgICByZXR1cm4gKCkgPT4geyB0aGlzLmxvZ0xpc3RlbmVyID0gdW5kZWZpbmVkOyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBzZWN1cml0eSBldmVudCwgc3VwcHJlc3NpbmcgcmVwZWF0ZWQgaWRlbnRpY2FsIGV2ZW50cyB3aXRoaW4gdGhlIGRlZHVwIHdpbmRvdy5cbiAgICovXG4gIHN0YXRpYyBsb2dTZWN1cml0eUV2ZW50KGV2ZW50OiBTZWN1cml0eUV2ZW50KTogdm9pZCB7XG4gICAgLy8gRGVkdXBsaWNhdGU6IHNhbWUgdHlwZSArIHNvdXJjZSArIGRldGFpbHMgd2l0aGluIDYwcyB3aW5kb3cgPSBzdXBwcmVzc1xuICAgIGlmICh0aGlzLmRlZHVwLnNob3VsZFN1cHByZXNzKGAke2V2ZW50LnR5cGV9XFwwJHtldmVudC5zb3VyY2V9XFwwJHtldmVudC5kZXRhaWxzfWApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9nRW50cnk6IFNlY3VyaXR5TG9nRW50cnkgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgaWQ6IGBTRUMtJHtEYXRlLm5vdygpfS0keysrdGhpcy5ldmVudENvdW50fWAsXG4gICAgfTtcblxuICAgIC8vIEJvdW5kZWQgRklGTyBldmljdGlvbiDigJQgRXZpY3RpbmdRdWV1ZSBoYW5kbGVzIGNhcGFjaXR5XG4gICAgdGhpcy5ldmVudHMucHVzaChsb2dFbnRyeSk7XG4gICAgdGhpcy5sb2dMaXN0ZW5lcj8uKGxvZ0VudHJ5KTtcblxuICAgIC8vIEluIE1DUCBzZXJ2ZXJzLCB3ZSBjYW5ub3Qgd3JpdGUgdG8gc3RkZXJyL3N0ZG91dCBhcyBpdCBicmVha3MgdGhlIEpTT04tUlBDIHByb3RvY29sXG4gICAgLy8gU2VjdXJpdHkgZXZlbnRzIGFyZSBzdG9yZWQgaW4gbWVtb3J5IGFuZCBjYW4gYmUgcmV0cmlldmVkIHZpYSBBUElcbiAgICAvLyBPbmx5IHNlbmQgY3JpdGljYWwgYWxlcnRzIHZpYSB0aGUgcHJvcGVyIGNoYW5uZWxcblxuICAgIGlmIChldmVudC5zZXZlcml0eSA9PT0gJ0NSSVRJQ0FMJykge1xuICAgICAgdGhpcy5zZW5kU2VjdXJpdHlBbGVydChsb2dFbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIHNlY3VyaXR5IGFsZXJ0cyBmb3IgY3JpdGljYWwgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzZW5kU2VjdXJpdHlBbGVydChldmVudDogU2VjdXJpdHlMb2dFbnRyeSk6IHZvaWQge1xuICAgIC8vIEluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgdGhpcyB3b3VsZCBpbnRlZ3JhdGUgd2l0aDpcbiAgICAvLyAtIFNsYWNrIHdlYmhvb2tzXG4gICAgLy8gLSBFbWFpbCBhbGVydHNcbiAgICAvLyAtIFBhZ2VyRHV0eVxuICAgIC8vIC0gU2VjdXJpdHkgSW5mb3JtYXRpb24gYW5kIEV2ZW50IE1hbmFnZW1lbnQgKFNJRU0pIHN5c3RlbXNcbiAgICBcbiAgICAvLyBMb2cgY3JpdGljYWwgc2VjdXJpdHkgYWxlcnRzIHdpdGggc3RydWN0dXJlZCBkYXRhXG4gICAgLy8gRE8gTk9UIHVzZSBjb25zb2xlLmVycm9yIGluIE1DUCBzZXJ2ZXJzIGFzIGl0IGJyZWFrcyB0aGUgSlNPTi1SUEMgcHJvdG9jb2xcbiAgICBsb2dnZXIuZXJyb3IoJ1tDUklUSUNBTCBTRUNVUklUWSBBTEVSVF0nLCB7XG4gICAgICB0eXBlOiBldmVudC50eXBlLFxuICAgICAgZGV0YWlsczogZXZlbnQuZGV0YWlscyxcbiAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgICAgaWQ6IGV2ZW50LmlkXG4gICAgfSk7XG4gICAgXG4gICAgLy8gSWYgaW4gcHJvZHVjdGlvbiBtb2RlIHdpdGggcHJvcGVyIGNvbmZpZywgc2VuZCBhY3R1YWwgYWxlcnRzXG4gICAgaWYgKHByb2Nlc3MuZW52LkRPTExIT1VTRV9TRUNVUklUWV9BTEVSVFMgPT09ICd0cnVlJykge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGFjdHVhbCBhbGVydCBtZWNoYW5pc21zXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgcmVjZW50IHNlY3VyaXR5IGV2ZW50cyBmb3IgYW5hbHlzaXNcbiAgICovXG4gIHN0YXRpYyBnZXRSZWNlbnRFdmVudHMoY291bnQ6IG51bWJlciA9IDEwMCk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5zbGljZSgtY291bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgZXZlbnRzIGJ5IHNldmVyaXR5XG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlTZXZlcml0eShzZXZlcml0eTogU2VjdXJpdHlFdmVudFsnc2V2ZXJpdHknXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuc2V2ZXJpdHkgPT09IHNldmVyaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGV2ZW50cyBieSB0eXBlXG4gICAqL1xuICBzdGF0aWMgZ2V0RXZlbnRzQnlUeXBlKHR5cGU6IFNlY3VyaXR5RXZlbnRbJ3R5cGUnXSk6IFNlY3VyaXR5TG9nRW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoZXZlbnQgPT4gZXZlbnQudHlwZSA9PT0gdHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc2VjdXJpdHkgcmVwb3J0XG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVTZWN1cml0eVJlcG9ydCgpOiB7XG4gICAgdG90YWxFdmVudHM6IG51bWJlcjtcbiAgICBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIGV2ZW50c0J5VHlwZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICByZWNlbnRDcml0aWNhbEV2ZW50czogU2VjdXJpdHlMb2dFbnRyeVtdO1xuICB9IHtcbiAgICBjb25zdCBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAgICAgQ1JJVElDQUw6IDAsXG4gICAgICBISUdIOiAwLFxuICAgICAgTUVESVVNOiAwLFxuICAgICAgTE9XOiAwLFxuICAgIH07XG5cbiAgICBjb25zdCBldmVudHNCeVR5cGU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgdGhpcy5ldmVudHMudG9BcnJheSgpKSB7XG4gICAgICBldmVudHNCeVNldmVyaXR5W2V2ZW50LnNldmVyaXR5XSsrO1xuICAgICAgZXZlbnRzQnlUeXBlW2V2ZW50LnR5cGVdID0gKGV2ZW50c0J5VHlwZVtldmVudC50eXBlXSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsRXZlbnRzOiB0aGlzLmV2ZW50cy5zaXplLFxuICAgICAgZXZlbnRzQnlTZXZlcml0eSxcbiAgICAgIGV2ZW50c0J5VHlwZSxcbiAgICAgIHJlY2VudENyaXRpY2FsRXZlbnRzOiB0aGlzLmdldEV2ZW50c0J5U2V2ZXJpdHkoJ0NSSVRJQ0FMJykuc2xpY2UoLTEwKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBvbGQgZXZlbnRzIChmb3IgbWVtb3J5IG1hbmFnZW1lbnQpXG4gICAqL1xuICBzdGF0aWMgY2xlYXJPbGRFdmVudHMoZGF5c1RvS2VlcDogbnVtYmVyID0gNyk6IHZvaWQge1xuICAgIGNvbnN0IGN1dG9mZkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1dG9mZkRhdGUuc2V0RGF0ZShjdXRvZmZEYXRlLmdldERhdGUoKSAtIGRheXNUb0tlZXApO1xuICAgIGNvbnN0IGN1dG9mZlRpbWVzdGFtcCA9IGN1dG9mZkRhdGUudG9JU09TdHJpbmcoKTtcblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMuZXZlbnRzLnRvQXJyYXkoKS5maWx0ZXIoXG4gICAgICBldmVudCA9PiBldmVudC50aW1lc3RhbXAgPj0gY3V0b2ZmVGltZXN0YW1wXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50cy5yZXNldChbLi4ucmVtYWluaW5nXSk7XG4gIH1cblxuICAvKipcbiAgICogVEVTVElORyBPTkxZOiBDbGVhcnMgYWxsIGV2ZW50cyBhbmQgcmVzZXRzIGNvdW50ZXJcbiAgICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIHRlc3QgY2xlYW51cCAoYWZ0ZXJFYWNoL2FmdGVyQWxsKVxuICAgKiB0byBwcmV2ZW50IHRlc3QgcG9sbHV0aW9uIGZyb20gYWNjdW11bGF0ZWQgc2VjdXJpdHkgZXZlbnRzXG4gICAqL1xuICBzdGF0aWMgY2xlYXJBbGxFdmVudHNGb3JUZXN0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRzLmNsZWFyKCk7XG4gICAgdGhpcy5ldmVudENvdW50ID0gMDtcbiAgICB0aGlzLmRlZHVwLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -105,10 +105,26 @@ export declare class TokenManager {
|
|
|
105
105
|
*/
|
|
106
106
|
private deriveKey;
|
|
107
107
|
/**
|
|
108
|
-
* Get
|
|
109
|
-
*
|
|
108
|
+
* Get passphrase for token encryption.
|
|
109
|
+
*
|
|
110
|
+
* Priority: DOLLHOUSE_TOKEN_SECRET env var → machine-derived passphrase (fallback).
|
|
111
|
+
* The machine-derived passphrase uses homedir + USER which is predictable (#1735).
|
|
112
|
+
* Set DOLLHOUSE_TOKEN_SECRET for stronger protection.
|
|
113
|
+
*/
|
|
114
|
+
private getPassphrase;
|
|
115
|
+
/**
|
|
116
|
+
* Machine-derived passphrase — fallback when DOLLHOUSE_TOKEN_SECRET is not
|
|
117
|
+
* set, and migration path for tokens encrypted before that env var existed.
|
|
118
|
+
* Not deprecated; still the default for installations that haven't opted in
|
|
119
|
+
* to an explicit secret.
|
|
110
120
|
*/
|
|
111
121
|
private getMachinePassphrase;
|
|
122
|
+
/**
|
|
123
|
+
* Attempt decryption with the primary passphrase, then fall back to the
|
|
124
|
+
* machine-derived passphrase for backward compatibility (#1735).
|
|
125
|
+
*/
|
|
126
|
+
private decryptWithFallback;
|
|
127
|
+
private decryptToken;
|
|
112
128
|
/**
|
|
113
129
|
* Store GitHub token securely to file
|
|
114
130
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenManager.d.ts","sourceRoot":"","sources":["../../src/security/tokenManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,IAAI,CAAC;KACjB,CAAC;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,eAAe,CAAS;IAEvC,6CAA6C;IAC7C,MAAM,CAAC,gBAAgB,IAAI,IAAI;IAI/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAU3C;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAA+C;IAChF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAM;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAU;IAG5C,OAAO,CAAC,sBAAsB,CAA4B;IAG1D,OAAO,CAAC,cAAc,CAAyB;gBAEnC,cAAc,EAAE,sBAAsB;IAIlD;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAOjC;;;OAGG;IACH,4BAA4B,IAAI,WAAW;IAQ3C;;;OAGG;IACH,2BAA2B,IAAI,IAAI;IAInC;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW3C;;;;;;;OAOG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAyC/B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQlC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA2BnC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOrC;;OAEG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,WAAW,GAC1B,OAAO,CAAC,qBAAqB,CAAC;IA0HjC;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAoB7D;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,MAAM,GAAG,WAAW;IAkCnG;;;;;OAKG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,MAAM,GAClE,OAAO,CAAC,qBAAqB,CAAC;IAcjC;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;;OAGG;IACH,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"tokenManager.d.ts","sourceRoot":"","sources":["../../src/security/tokenManager.ts"],"names":[],"mappings":"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"}
|