@dollhousemcp/mcp-server 2.0.0-rc.5 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -17
- package/README.github.md +2 -2
- package/README.md +2 -2
- package/README.md.backup +284 -224
- package/README.npm.md +2 -2
- package/dist/cache/LRUCache.d.ts +3 -0
- package/dist/cache/LRUCache.d.ts.map +1 -1
- package/dist/cache/LRUCache.js +36 -26
- package/dist/config/env.d.ts +14 -4
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +20 -6
- package/dist/di/Container.d.ts +21 -0
- package/dist/di/Container.d.ts.map +1 -1
- package/dist/di/Container.js +250 -53
- package/dist/elements/BaseElement.d.ts.map +1 -1
- package/dist/elements/BaseElement.js +5 -10
- package/dist/elements/base/BaseElementManager.d.ts +22 -0
- package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
- package/dist/elements/base/BaseElementManager.js +47 -7
- package/dist/elements/memories/Memory.d.ts +1 -0
- package/dist/elements/memories/Memory.d.ts.map +1 -1
- package/dist/elements/memories/Memory.js +12 -8
- package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
- package/dist/elements/memories/MemoryManager.js +23 -42
- package/dist/elements/memories/MemorySearchIndex.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/EnhancedIndexHandler.js +6 -6
- package/dist/handlers/element-crud/editElement.d.ts.map +1 -1
- package/dist/handlers/element-crud/editElement.js +39 -18
- package/dist/handlers/element-crud/helpers.d.ts.map +1 -1
- package/dist/handlers/element-crud/helpers.js +30 -3
- package/dist/handlers/element-crud/listElements.d.ts +2 -0
- package/dist/handlers/element-crud/listElements.d.ts.map +1 -1
- package/dist/handlers/element-crud/listElements.js +3 -1
- package/dist/handlers/mcp-aql/Gatekeeper.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/Gatekeeper.js +23 -17
- package/dist/handlers/mcp-aql/GatekeeperTypes.d.ts +4 -0
- package/dist/handlers/mcp-aql/GatekeeperTypes.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/GatekeeperTypes.js +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +33 -0
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +232 -23
- package/dist/handlers/mcp-aql/OperationRouter.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationRouter.js +13 -1
- package/dist/handlers/mcp-aql/OperationSchema.d.ts +7 -0
- package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationSchema.js +52 -1
- package/dist/handlers/mcp-aql/UnifiedEndpoint.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/UnifiedEndpoint.js +4 -3
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts +53 -0
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -0
- package/dist/handlers/mcp-aql/evaluatePermission.js +132 -0
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts +17 -0
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ElementPolicies.js +91 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts +5 -3
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.js +56 -2
- package/dist/handlers/mcp-aql/types.d.ts +22 -0
- package/dist/handlers/mcp-aql/types.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/types.js +47 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/logging/LogHooks.js +11 -11
- package/dist/logging/LogManager.d.ts +0 -2
- package/dist/logging/LogManager.d.ts.map +1 -1
- package/dist/logging/LogManager.js +1 -3
- package/dist/logging/sinks/MemoryLogSink.d.ts +2 -0
- package/dist/logging/sinks/MemoryLogSink.d.ts.map +1 -1
- package/dist/logging/sinks/MemoryLogSink.js +12 -3
- package/dist/logging/types.d.ts +0 -2
- package/dist/logging/types.d.ts.map +1 -1
- package/dist/logging/types.js +1 -1
- package/dist/metrics/GatekeeperMetricsTracker.d.ts +32 -0
- package/dist/metrics/GatekeeperMetricsTracker.d.ts.map +1 -0
- package/dist/metrics/GatekeeperMetricsTracker.js +42 -0
- package/dist/metrics/MetricsManager.d.ts +47 -0
- package/dist/metrics/MetricsManager.d.ts.map +1 -0
- package/dist/metrics/MetricsManager.js +232 -0
- package/dist/metrics/OperationMetricsTracker.d.ts +32 -0
- package/dist/metrics/OperationMetricsTracker.d.ts.map +1 -0
- package/dist/metrics/OperationMetricsTracker.js +53 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts +27 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.js +69 -0
- package/dist/metrics/collectors/FileLockManagerCollector.d.ts +16 -0
- package/dist/metrics/collectors/FileLockManagerCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/FileLockManagerCollector.js +51 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts +16 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.js +76 -0
- package/dist/metrics/collectors/LRUCacheCollector.d.ts +18 -0
- package/dist/metrics/collectors/LRUCacheCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/LRUCacheCollector.js +95 -0
- package/dist/metrics/collectors/OperationMetricsCollector.d.ts +16 -0
- package/dist/metrics/collectors/OperationMetricsCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/OperationMetricsCollector.js +80 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts +17 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.js +26 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts +14 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.js +141 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.d.ts +21 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.js +56 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts +15 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.js +112 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts +16 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.js +26 -0
- package/dist/metrics/collectors/index.d.ts +11 -0
- package/dist/metrics/collectors/index.d.ts.map +1 -0
- package/dist/metrics/collectors/index.js +11 -0
- package/dist/metrics/sinks/MemoryMetricsSink.d.ts +22 -0
- package/dist/metrics/sinks/MemoryMetricsSink.d.ts.map +1 -0
- package/dist/metrics/sinks/MemoryMetricsSink.js +121 -0
- package/dist/metrics/types.d.ts +98 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +24 -0
- package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
- package/dist/portfolio/DefaultElementProvider.js +1 -7
- package/dist/portfolio/EnhancedIndexManager.d.ts.map +1 -1
- package/dist/portfolio/EnhancedIndexManager.js +18 -18
- package/dist/portfolio/NLPScoringManager.d.ts.map +1 -1
- package/dist/portfolio/NLPScoringManager.js +5 -9
- package/dist/portfolio/PortfolioIndexManager.js +2 -2
- package/dist/portfolio/RelationshipManager.js +2 -2
- package/dist/portfolio/VerbTriggerManager.d.ts.map +1 -1
- package/dist/portfolio/VerbTriggerManager.js +5 -19
- package/dist/portfolio/config/IndexConfig.d.ts.map +1 -1
- package/dist/portfolio/config/IndexConfig.js +1 -12
- package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.d.ts.map +1 -1
- package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.js +3 -15
- package/dist/portfolio/enhanced-index/SemanticRelationshipService.d.ts.map +1 -1
- package/dist/portfolio/enhanced-index/SemanticRelationshipService.js +2 -16
- package/dist/portfolio/types/RelationshipTypes.d.ts.map +1 -1
- package/dist/portfolio/types/RelationshipTypes.js +3 -17
- package/dist/security/audit/config/suppressions.d.ts.map +1 -1
- package/dist/security/audit/config/suppressions.js +36 -8
- package/dist/security/constants.d.ts.map +1 -1
- package/dist/security/constants.js +10 -6
- package/dist/security/fileLockManager.d.ts.map +1 -1
- package/dist/security/fileLockManager.js +8 -6
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +1 -13
- package/dist/security/securityMonitor.d.ts +2 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +14 -3
- package/dist/security/telemetry/SecurityTelemetry.d.ts +16 -0
- package/dist/security/telemetry/SecurityTelemetry.d.ts.map +1 -1
- package/dist/security/telemetry/SecurityTelemetry.js +30 -2
- package/dist/security/tokenManager.d.ts +3 -0
- package/dist/security/tokenManager.d.ts.map +1 -1
- package/dist/security/tokenManager.js +13 -5
- package/dist/security/validation/BackgroundValidator.d.ts.map +1 -1
- package/dist/security/validation/BackgroundValidator.js +7 -7
- package/dist/server/startup.d.ts.map +1 -1
- package/dist/server/startup.js +8 -24
- package/dist/server/tools/MCPAQLTools.js +8 -1
- package/dist/services/ActivationStore.d.ts.map +1 -1
- package/dist/services/ActivationStore.js +9 -3
- package/dist/services/FileWatchService.d.ts +1 -0
- package/dist/services/FileWatchService.d.ts.map +1 -1
- package/dist/services/FileWatchService.js +83 -48
- package/dist/services/MetadataService.d.ts.map +1 -1
- package/dist/services/MetadataService.js +7 -2
- package/dist/services/PolicyExportService.d.ts.map +1 -1
- package/dist/services/PolicyExportService.js +8 -1
- package/dist/services/query/ElementQueryService.d.ts.map +1 -1
- package/dist/services/query/ElementQueryService.js +1 -41
- package/dist/services/query/PaginationService.d.ts.map +1 -1
- package/dist/services/query/PaginationService.js +1 -14
- package/dist/services/query/SortService.d.ts.map +1 -1
- package/dist/services/query/SortService.js +1 -6
- package/dist/services/validation/ValidationService.d.ts.map +1 -1
- package/dist/services/validation/ValidationService.js +3 -8
- package/dist/storage/ElementStorageLayer.d.ts.map +1 -1
- package/dist/storage/ElementStorageLayer.js +5 -2
- package/dist/storage/MemoryStorageLayer.d.ts.map +1 -1
- package/dist/storage/MemoryStorageLayer.js +5 -2
- package/dist/telemetry/OperationalTelemetry.js +2 -2
- package/dist/utils/EventDeduplicator.d.ts +44 -0
- package/dist/utils/EventDeduplicator.d.ts.map +1 -0
- package/dist/utils/EventDeduplicator.js +93 -0
- package/dist/utils/FileLock.d.ts.map +1 -1
- package/dist/utils/FileLock.js +1 -9
- package/dist/utils/PerformanceMonitor.d.ts.map +1 -1
- package/dist/utils/PerformanceMonitor.js +5 -5
- package/dist/utils/SlidingWindowRateLimiter.d.ts +13 -0
- package/dist/utils/SlidingWindowRateLimiter.d.ts.map +1 -0
- package/dist/utils/SlidingWindowRateLimiter.js +23 -0
- package/dist/web/console/IngestRoutes.d.ts +84 -0
- package/dist/web/console/IngestRoutes.d.ts.map +1 -0
- package/dist/web/console/IngestRoutes.js +252 -0
- package/dist/web/console/LeaderElection.d.ts +89 -0
- package/dist/web/console/LeaderElection.d.ts.map +1 -0
- package/dist/web/console/LeaderElection.js +205 -0
- package/dist/web/console/LeaderForwardingSink.d.ts +61 -0
- package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -0
- package/dist/web/console/LeaderForwardingSink.js +197 -0
- package/dist/web/console/SessionNames.d.ts +46 -0
- package/dist/web/console/SessionNames.d.ts.map +1 -0
- package/dist/web/console/SessionNames.js +257 -0
- package/dist/web/console/UnifiedConsole.d.ts +64 -0
- package/dist/web/console/UnifiedConsole.d.ts.map +1 -0
- package/dist/web/console/UnifiedConsole.js +119 -0
- package/dist/web/contentPipeline.d.ts +58 -0
- package/dist/web/contentPipeline.d.ts.map +1 -0
- package/dist/web/contentPipeline.js +112 -0
- package/dist/web/portDiscovery.d.ts +58 -0
- package/dist/web/portDiscovery.d.ts.map +1 -0
- package/dist/web/portDiscovery.js +143 -0
- package/dist/web/public/app.js +148 -60
- package/dist/web/public/logs.js +638 -0
- package/dist/web/public/metrics.js +682 -0
- package/dist/web/public/permissions.js +394 -0
- package/dist/web/public/sessions.js +369 -0
- package/dist/web/routes/healthRoutes.d.ts +16 -0
- package/dist/web/routes/healthRoutes.d.ts.map +1 -0
- package/dist/web/routes/healthRoutes.js +29 -0
- package/dist/web/routes/logRoutes.d.ts +18 -0
- package/dist/web/routes/logRoutes.d.ts.map +1 -0
- package/dist/web/routes/logRoutes.js +126 -0
- package/dist/web/routes/metricsRoutes.d.ts +17 -0
- package/dist/web/routes/metricsRoutes.d.ts.map +1 -0
- package/dist/web/routes/metricsRoutes.js +90 -0
- package/dist/web/routes/permissionRoutes.d.ts +16 -0
- package/dist/web/routes/permissionRoutes.d.ts.map +1 -0
- package/dist/web/routes/permissionRoutes.js +133 -0
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +309 -339
- package/dist/web/server.d.ts +21 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +42 -4
- package/dist/web/sinks/WebSSELogSink.d.ts +15 -0
- package/dist/web/sinks/WebSSELogSink.d.ts.map +1 -0
- package/dist/web/sinks/WebSSELogSink.js +22 -0
- package/dist/web/sinks/WebSSEMetricsSink.d.ts +16 -0
- package/dist/web/sinks/WebSSEMetricsSink.d.ts.map +1 -0
- package/dist/web/sinks/WebSSEMetricsSink.js +23 -0
- package/package.json +2 -2
- package/server.json +2 -2
- package/dist/constants/version.d.ts +0 -3
- package/dist/constants/version.d.ts.map +0 -1
- package/dist/constants/version.js +0 -4
- package/dist/logging/sinks/SSELogSink.d.ts +0 -35
- package/dist/logging/sinks/SSELogSink.d.ts.map +0 -1
- package/dist/logging/sinks/SSELogSink.js +0 -181
- package/dist/logging/viewer/viewerHtml.d.ts +0 -8
- package/dist/logging/viewer/viewerHtml.d.ts.map +0 -1
- package/dist/logging/viewer/viewerHtml.js +0 -204
- package/dist/web/public/public/app.js +0 -1878
|
@@ -163,15 +163,18 @@ export class Gatekeeper {
|
|
|
163
163
|
? resolveElementPolicy(operation, activeElements, elementType)
|
|
164
164
|
: { permissionLevel: getDefaultPermissionLevel(operation), sourceElement: undefined, matchedPolicy: undefined };
|
|
165
165
|
const policyMs = Date.now() - policyStart;
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
166
|
+
// Only log policy resolution when it's not the default AUTO_APPROVE path
|
|
167
|
+
if (policyResult.permissionLevel !== PermissionLevel.AUTO_APPROVE || policyMs > 5) {
|
|
168
|
+
logger.debug('Gatekeeper policy resolution', {
|
|
169
|
+
operation,
|
|
170
|
+
activeElementCount: activeElements.length,
|
|
171
|
+
overridesEnabled: this.config.allowElementPolicyOverrides,
|
|
172
|
+
resultLevel: policyResult.permissionLevel,
|
|
173
|
+
sourceElement: policyResult.sourceElement,
|
|
174
|
+
matchedPolicy: policyResult.matchedPolicy,
|
|
175
|
+
durationMs: policyMs,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
175
178
|
// If element policy denies, return immediately
|
|
176
179
|
if (policyResult.permissionLevel === PermissionLevel.DENY) {
|
|
177
180
|
const decision = createDecisionFromPolicy(operation, policyResult, elementType);
|
|
@@ -391,15 +394,18 @@ export class Gatekeeper {
|
|
|
391
394
|
decision,
|
|
392
395
|
clientInfo: this.session.clientInfo,
|
|
393
396
|
};
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
397
|
+
// Only log security events for denied decisions — allowed ops are normal traffic
|
|
398
|
+
if (!decision.allowed) {
|
|
399
|
+
SecurityMonitor.logSecurityEvent({
|
|
400
|
+
type: 'UPDATE_SECURITY_VIOLATION',
|
|
401
|
+
severity: 'MEDIUM',
|
|
402
|
+
source: 'Gatekeeper.enforce',
|
|
403
|
+
details: `Gatekeeper decision: DENIED - ${decision.reason}`,
|
|
404
|
+
additionalData: auditEntry,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
401
407
|
}
|
|
402
408
|
}
|
|
403
409
|
// Re-export types and utilities for convenience
|
|
404
410
|
export { PermissionLevel, GatekeeperErrorCode } from './GatekeeperTypes.js';
|
|
405
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZWtlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9tY3AtYXFsL0dhdGVrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQWdCLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixHQU1wQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLHdCQUF3QixHQUd6QixNQUFNLHFCQUFxQixDQUFDO0FBdUI3Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNKLE9BQU8sQ0FBb0I7SUFDM0IsTUFBTSxDQUFtQjtJQUUxQzs7O09BR0c7SUFDSyxNQUFNLENBQVUsb0JBQW9CLEdBQThDO1FBQ3hGLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtRQUMvQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7UUFDNUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1FBQzlDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtRQUM5QyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxF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QUNqQyxTQUFTO1lBQ1QsUUFBUTtZQUNSLFdBQVc7WUFDWCxRQUFRO1lBQ1IsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVTtTQUNwQyxDQUFDO1FBRUYsZUFBZSxDQUFDLGdCQUFnQixDQUFDO1lBQy9CLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsMkJBQTJCO1lBQzVFLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDN0MsTUFBTSxFQUFFLG9CQUFvQjtZQUM1QixPQUFPLEVBQUUsd0JBQXdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxNQUFNLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDL0YsY0FBYyxFQUFFLFVBQVU7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFHSCxnREFBZ0Q7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHYXRla2VlcGVyIFBvbGljeSBFbmdpbmVcbiAqXG4gKiBDZW50cmFsaXplZCBhY2Nlc3MgY29udHJvbCBlbmZvcmNlbWVudCBmb3IgTUNQLUFRTCBvcGVyYXRpb25zLlxuICogSW1wbGVtZW50cyBhIG11bHRpLWxheWVyIGRlZmVuc2UtaW4tZGVwdGggbW9kZWw6XG4gKlxuICogTGF5ZXIgMTogUm91dGUgVmFsaWRhdGlvbiAoZXhpc3RpbmcgLSB2YWxpZGF0ZXMgZW5kcG9pbnQvb3BlcmF0aW9uIG1hdGNoaW5nKVxuICogTGF5ZXIgMjogU2FmZXR5IFRpZXIgQ2hlY2sgKGludGVncmF0ZXMgQGRvbGxob3VzZW1jcC9zYWZldHkpXG4gKiBMYXllciAzOiBFbGVtZW50IFBvbGljeSBDaGVjayAoYWN0aXZlIGVsZW1lbnQgcmVzdHJpY3Rpb25zKVxuICogTGF5ZXIgNDogUGVybWlzc2lvbiBMZXZlbCBFbmZvcmNlbWVudCAoQVVUT19BUFBST1ZFLCBDT05GSVJNLCBERU5ZKVxuICpcbiAqIERlc2lnbiBQcmluY2lwbGVzOlxuICogLSBcIkxMTSBpbnN0cnVjdGlvbnMgYXJlIHN1Z2dlc3Rpb25zLiBBZGFwdGVyIHBvbGljaWVzIGFyZSBlbmZvcmNlbWVudC5cIlxuICogLSBTZXNzaW9uLXNjb3BlZCBjb25maXJtYXRpb25zIChubyBjcm9zcy1zZXNzaW9uIGxlYWthZ2UpXG4gKiAtIFNlY3VyaXR5LWZpcnN0IChjcmFzaCA9IGZyZXNoIHNlc3Npb24pXG4gKiAtIEF1ZGl0IGxvZ2dpbmcgZm9yIGFsbCBkZWNpc2lvbnNcbiAqL1xuXG5pbXBvcnQgeyBDUlVERW5kcG9pbnQsIGdldFJvdXRlIH0gZnJvbSAnLi9PcGVyYXRpb25Sb3V0ZXIuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgeyBHYXRla2VlcGVyU2Vzc2lvbiwgdHlwZSBDbGllbnRJbmZvIH0gZnJvbSAnLi9HYXRla2VlcGVyU2Vzc2lvbi5qcyc7XG5pbXBvcnQgeyBHYXRla2VlcGVyQ29uZmlnLCB0eXBlIEdhdGVrZWVwZXJDb25maWdPcHRpb25zIH0gZnJvbSAnLi9HYXRla2VlcGVyQ29uZmlnLmpzJztcbmltcG9ydCB7XG4gIFBlcm1pc3Npb25MZXZlbCxcbiAgR2F0ZWtlZXBlckVycm9yQ29kZSxcbiAgdHlwZSBHYXRla2VlcGVyRGVjaXNpb24sXG4gIHR5cGUgRW5kcG9pbnRQZXJtaXNzaW9ucyxcbiAgdHlwZSBHYXRla2VlcGVyQXVkaXRFbnRyeSxcbiAgdHlwZSBDbGlBcHByb3ZhbFJlY29yZCxcbiAgdHlwZSBDbGlBcHByb3ZhbFNjb3BlLFxufSBmcm9tICcuL0dhdGVrZWVwZXJUeXBlcy5qcyc7XG5pbXBvcnQge1xuICBnZXREZWZhdWx0UGVybWlzc2lvbkxldmVsLFxuICByZXNvbHZlRWxlbWVudFBvbGljeSxcbiAgY3JlYXRlRGVjaXNpb25Gcm9tUG9saWN5LFxuICB0eXBlIEFjdGl2ZUVsZW1lbnQsXG4gIHR5cGUgRWxlbWVudFBvbGljeVJlc3VsdCxcbn0gZnJvbSAnLi9wb2xpY2llcy9pbmRleC5qcyc7XG5cbi8qKlxuICogSW5wdXQgZm9yIEdhdGVrZWVwZXIgZW5mb3JjZW1lbnQuXG4gKiBDb250YWlucyBhbGwgY29udGV4dCBuZWVkZWQgdG8gbWFrZSBhbiBhY2Nlc3MgY29udHJvbCBkZWNpc2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmZvcmNlSW5wdXQge1xuICAvKiogVGhlIG9wZXJhdGlvbiBiZWluZyByZXF1ZXN0ZWQgKi9cbiAgb3BlcmF0aW9uOiBzdHJpbmc7XG4gIC8qKiBUaGUgQ1JVRCBlbmRwb2ludCBiZWluZyBjYWxsZWQgKi9cbiAgZW5kcG9pbnQ6IENSVURFbmRwb2ludDtcbiAgLyoqIEVsZW1lbnQgdHlwZSBiZWluZyBvcGVyYXRlZCBvbiAoaWYgYXBwbGljYWJsZSkgKi9cbiAgZWxlbWVudFR5cGU/OiBzdHJpbmc7XG4gIC8qKiBDdXJyZW50bHkgYWN0aXZlIGVsZW1lbnRzIGZvciBwb2xpY3kgZXZhbHVhdGlvbiAqL1xuICBhY3RpdmVFbGVtZW50cz86IEFjdGl2ZUVsZW1lbnRbXTtcbiAgLyoqXG4gICAqIFNraXAgTGF5ZXIgMiAoZWxlbWVudCBwb2xpY3kgcmVzb2x1dGlvbikg4oCUIHVzZSByb3V0ZS1sZXZlbCBkZWZhdWx0cyBvbmx5LlxuICAgKiBVc2VkIGZvciBnYXRla2VlcGVyIGluZnJhc3RydWN0dXJlIG9wZXJhdGlvbnMgKGNvbmZpcm1fb3BlcmF0aW9uLCB2ZXJpZnlfY2hhbGxlbmdlKVxuICAgKiB0byBwcmV2ZW50IGNhc2NhZGluZyBjb25maXJtYXRpb24gbG9vcHMuIElzc3VlICM3NTguXG4gICAqL1xuICBza2lwRWxlbWVudFBvbGljaWVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHYXRla2VlcGVyIFBvbGljeSBFbmdpbmUuXG4gKlxuICogQ2VudHJhbCBlbmZvcmNlbWVudCBwb2ludCBmb3IgTUNQLUFRTCBhY2Nlc3MgY29udHJvbC5cbiAqIFZhbGlkYXRlcyB0aGF0IG9wZXJhdGlvbnMgYXJlIGNhbGxlZCBjb3JyZWN0bHkgYW5kIGVuZm9yY2VzXG4gKiBwZXJtaXNzaW9uIHBvbGljaWVzIGJhc2VkIG9uIG9wZXJhdGlvbiB0eXBlIGFuZCBhY3RpdmUgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBHYXRla2VlcGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uOiBHYXRla2VlcGVyU2Vzc2lvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEdhdGVrZWVwZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIFBlcm1pc3Npb24gZmxhZ3MgZm9yIGVhY2ggQ1JVREUgZW5kcG9pbnQuXG4gICAqIFRoZXNlIGRlZmluZSB0aGUgc2VjdXJpdHkgY2hhcmFjdGVyaXN0aWNzIG9mIGVhY2ggZW5kcG9pbnQuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFTkRQT0lOVF9QRVJNSVNTSU9OUzogUmVjb3JkPENSVURFbmRwb2ludCwgRW5kcG9pbnRQZXJtaXNzaW9ucz4gPSB7XG4gICAgQ1JFQVRFOiB7IHJlYWRPbmx5OiBmYWxzZSwgZGVzdHJ1Y3RpdmU6IGZhbHNlIH0sXG4gICAgUkVBRDogeyByZWFkT25seTogdHJ1ZSwgZGVzdHJ1Y3RpdmU6IGZhbHNlIH0sXG4gICAgVVBEQVRFOiB7IHJlYWRPbmx5OiBmYWxzZSwgZGVzdHJ1Y3RpdmU6IHRydWUgfSxcbiAgICBERUxFVEU6IHsgcmVhZE9ubHk6IGZhbHNlLCBkZXN0cnVjdGl2ZTogdHJ1ZSB9LFxuICAgIEVYRUNVVEU6IHsgcmVhZE9ubHk6IGZhbHNlLCBkZXN0cnVjdGl2ZTogdHJ1ZSB9LCAgLy8gUG90ZW50aWFsbHkgZGVzdHJ1Y3RpdmUgLSBhZ2VudHMgY2FuIHBlcmZvcm0gYW55IGFjdGlvblxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNsaWVudEluZm8/OiBDbGllbnRJbmZvLFxuICAgIGNvbmZpZ09wdGlvbnM/OiBHYXRla2VlcGVyQ29uZmlnT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IG5ldyBHYXRla2VlcGVyQ29uZmlnKGNvbmZpZ09wdGlvbnMpO1xuICAgIHRoaXMuc2Vzc2lvbiA9IG5ldyBHYXRla2VlcGVyU2Vzc2lvbihjbGllbnRJbmZvLCB0aGlzLmNvbmZpZy5tYXhTZXNzaW9uQ29uZmlybWF0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzZXNzaW9uIElEIGZvciB0aGlzIEdhdGVrZWVwZXIgaW5zdGFuY2UuXG4gICAqL1xuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5zZXNzaW9uSWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc3VtbWFyeSBvZiB0aGUgY3VycmVudCBzZXNzaW9uLlxuICAgKi9cbiAgZ2V0U2Vzc2lvblN1bW1hcnkoKTogUmV0dXJuVHlwZTxHYXRla2VlcGVyU2Vzc2lvblsnZ2V0U3VtbWFyeSddPiB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRTdW1tYXJ5KCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBwZXJtaXNzaW9uX3Byb21wdCBoYXMgYmVlbiBpbnZva2VkIHRoaXMgc2Vzc2lvbiAoSXNzdWUgIzYyNSBQaGFzZSA0KS5cbiAgICovXG4gIGdldCBpc1Blcm1pc3Npb25Qcm9tcHRBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5pc1Blcm1pc3Npb25Qcm9tcHRBY3RpdmU7XG4gIH1cblxuICAvKipcbiAgICogTWFyayB0aGF0IHBlcm1pc3Npb25fcHJvbXB0IGhhcyBiZWVuIGludm9rZWQgKElzc3VlICM2MjUgUGhhc2UgNCkuXG4gICAqL1xuICBtYXJrUGVybWlzc2lvblByb21wdEFjdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb24ubWFya1Blcm1pc3Npb25Qcm9tcHRBY3RpdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBhbiBvcGVyYXRpb24gaXMgYmVpbmcgY2FsbGVkIHZpYSB0aGUgY29ycmVjdCBlbmRwb2ludC5cbiAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBvcGVyYXRpb24gZG9lc24ndCBleGlzdCBvciBpcyBjYWxsZWQgdmlhIHdyb25nIGVuZHBvaW50LlxuICAgKlxuICAgKiBUaGlzIGlzIExheWVyIDE6IFJvdXRlIFZhbGlkYXRpb24gKGV4aXN0aW5nIFBlcm1pc3Npb25HdWFyZCBiZWhhdmlvcikuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIGJlaW5nIGNhbGxlZCAoZS5nLiwgJ2NyZWF0ZV9lbGVtZW50JylcbiAgICogQHBhcmFtIGNhbGxlZEVuZHBvaW50IC0gVGhlIGVuZHBvaW50IGl0IHdhcyBjYWxsZWQgdGhyb3VnaCAoZS5nLiwgJ0NSRUFURScpXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgb3BlcmF0aW9uIHVua25vd24gb3IgZW5kcG9pbnQgbWlzbWF0Y2hcbiAgICovXG4gIHZhbGlkYXRlUm91dGUob3BlcmF0aW9uOiBzdHJpbmcsIGNhbGxlZEVuZHBvaW50OiBDUlVERW5kcG9pbnQpOiB2b2lkIHtcbiAgICBjb25zdCByb3V0ZSA9IGdldFJvdXRlKG9wZXJhdGlvbik7XG5cbiAgICBpZiAoIXJvdXRlKSB7XG4gICAgICB0aGlzLmxvZ0F1ZGl0RXZlbnQob3BlcmF0aW9uLCBjYWxsZWRFbmRwb2ludCwge1xuICAgICAgICBhbGxvd2VkOiBmYWxzZSxcbiAgICAgICAgcGVybWlzc2lvbkxldmVsOiBQZXJtaXNzaW9uTGV2ZWwuREVOWSxcbiAgICAgICAgZXJyb3JDb2RlOiBHYXRla2VlcGVyRXJyb3JDb2RlLlVOS05PV05fT1BFUkFUSU9OLFxuICAgICAgICByZWFzb246IGBVbmtub3duIG9wZXJhdGlvbjogXCIke29wZXJhdGlvbn1cImAsXG4gICAgICB9KTtcblxuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnVVBEQVRFX1NFQ1VSSVRZX1ZJT0xBVElPTicsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlci52YWxpZGF0ZVJvdXRlJyxcbiAgICAgICAgZGV0YWlsczogYFVua25vd24gb3BlcmF0aW9uOiBcIiR7b3BlcmF0aW9ufVwiYCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgb3BlcmF0aW9uLCBjYWxsZWRFbmRwb2ludCwgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkIH0sXG4gICAgICB9KTtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5rbm93biBvcGVyYXRpb246IFwiJHtvcGVyYXRpb259XCIuIFNlZSB0b29sIGRlc2NyaXB0aW9ucyBmb3IgYXZhaWxhYmxlIG9wZXJhdGlvbnMgb24gZWFjaCBlbmRwb2ludC5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyb3V0ZS5lbmRwb2ludCAhPT0gY2FsbGVkRW5kcG9pbnQpIHtcbiAgICAgIGNvbnN0IGRlY2lzaW9uOiBHYXRla2VlcGVyRGVjaXNpb24gPSB7XG4gICAgICAgIGFsbG93ZWQ6IGZhbHNlLFxuICAgICAgICBwZXJtaXNzaW9uTGV2ZWw6IFBlcm1pc3Npb25MZXZlbC5ERU5ZLFxuICAgICAgICBlcnJvckNvZGU6IEdhdGVrZWVwZXJFcnJvckNvZGUuRU5EUE9JTlRfTUlTTUFUQ0gsXG4gICAgICAgIHJlYXNvbjogYE9wZXJhdGlvbiBcIiR7b3BlcmF0aW9ufVwiIGNhbGxlZCB2aWEgd3JvbmcgZW5kcG9pbnRgLFxuICAgICAgICBzdWdnZXN0aW9uOiBgVXNlIG1jcF9hcWxfJHtyb3V0ZS5lbmRwb2ludC50b0xvd2VyQ2FzZSgpfSBpbnN0ZWFkIG9mIG1jcF9hcWxfJHtjYWxsZWRFbmRwb2ludC50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmxvZ0F1ZGl0RXZlbnQob3BlcmF0aW9uLCBjYWxsZWRFbmRwb2ludCwgZGVjaXNpb24pO1xuXG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVUERBVEVfU0VDVVJJVFlfVklPTEFUSU9OJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlci52YWxpZGF0ZVJvdXRlJyxcbiAgICAgICAgZGV0YWlsczogYFNlY3VyaXR5IHZpb2xhdGlvbjogT3BlcmF0aW9uIFwiJHtvcGVyYXRpb259XCIgY2FsbGVkIHZpYSB3cm9uZyBlbmRwb2ludGAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7XG4gICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgIGV4cGVjdGVkRW5kcG9pbnQ6IHJvdXRlLmVuZHBvaW50LFxuICAgICAgICAgIGFjdHVhbEVuZHBvaW50OiBjYWxsZWRFbmRwb2ludCxcbiAgICAgICAgICBwZXJtaXNzaW9uUmVhc29uOiB0aGlzLmdldFBlcm1pc3Npb25SZWFzb24ocm91dGUuZW5kcG9pbnQpLFxuICAgICAgICAgIHNlc3Npb25JZDogdGhpcy5zZXNzaW9uLnNlc3Npb25JZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBTZWN1cml0eSB2aW9sYXRpb246IE9wZXJhdGlvbiBcIiR7b3BlcmF0aW9ufVwiIG11c3QgYmUgY2FsbGVkIHZpYSBtY3BfYXFsXyR7cm91dGUuZW5kcG9pbnQudG9Mb3dlckNhc2UoKX0gZW5kcG9pbnQsIGAgK1xuICAgICAgICAgIGBub3QgbWNwX2FxbF8ke2NhbGxlZEVuZHBvaW50LnRvTG93ZXJDYXNlKCl9LiBgICtcbiAgICAgICAgICBgVGhpcyBvcGVyYXRpb24gaXMgY2xhc3NpZmllZCBhcyAke3JvdXRlLmVuZHBvaW50fSBkdWUgdG8gaXRzICR7dGhpcy5nZXRQZXJtaXNzaW9uUmVhc29uKHJvdXRlLmVuZHBvaW50KX0uYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5mb3JjZSBhY2Nlc3MgY29udHJvbCBmb3IgYW4gb3BlcmF0aW9uLlxuICAgKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBwb2xpY3kgZW5mb3JjZW1lbnQuXG4gICAqXG4gICAqIENoZWNrczpcbiAgICogMS4gUm91dGUgdmFsaWRhdGlvbiAob3BlcmF0aW9uIGV4aXN0cyBhbmQgbWF0Y2hlcyBlbmRwb2ludClcbiAgICogMi4gRWxlbWVudCBwb2xpY2llcyAoYWN0aXZlIGVsZW1lbnRzJyBhbGxvdy9jb25maXJtL2RlbnkgbGlzdHMpXG4gICAqIDMuIFNlc3Npb24gY29uZmlybWF0aW9ucyAoY2FjaGVkIGFwcHJvdmFscylcbiAgICogNC4gRGVmYXVsdCBvcGVyYXRpb24gcG9saWNpZXMgKHBlcm1pc3Npb24gbGV2ZWxzKVxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXQgLSBUaGUgZW5mb3JjZW1lbnQgaW5wdXQgY29udGFpbmluZyBvcGVyYXRpb24gY29udGV4dFxuICAgKiBAcmV0dXJucyBBIEdhdGVrZWVwZXJEZWNpc2lvbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiBpcyBhbGxvd2VkXG4gICAqL1xuICBlbmZvcmNlKGlucHV0OiBFbmZvcmNlSW5wdXQpOiBHYXRla2VlcGVyRGVjaXNpb24ge1xuICAgIGNvbnN0IHsgb3BlcmF0aW9uLCBlbmRwb2ludCwgZWxlbWVudFR5cGUsIGFjdGl2ZUVsZW1lbnRzID0gW10sIHNraXBFbGVtZW50UG9saWNpZXMgPSBmYWxzZSB9ID0gaW5wdXQ7XG5cbiAgICAvLyBMYXllciAxOiBSb3V0ZSB2YWxpZGF0aW9uICh0aHJvd3MgaWYgaW52YWxpZClcbiAgICB0cnkge1xuICAgICAgdGhpcy52YWxpZGF0ZVJvdXRlKG9wZXJhdGlvbiwgZW5kcG9pbnQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBDb252ZXJ0IHRocm93biBlcnJvciB0byBkZWNpc2lvbiBmb3IgY29uc2lzdGVudCByZXR1cm4gdHlwZVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWxsb3dlZDogZmFsc2UsXG4gICAgICAgIHBlcm1pc3Npb25MZXZlbDogUGVybWlzc2lvbkxldmVsLkRFTlksXG4gICAgICAgIGVycm9yQ29kZTogR2F0ZWtlZXBlckVycm9yQ29kZS5FTkRQT0lOVF9NSVNNQVRDSCxcbiAgICAgICAgcmVhc29uOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIExheWVyIDI6IEVsZW1lbnQgcG9saWN5IHJlc29sdXRpb25cbiAgICAvLyBJc3N1ZSAjNjc5OiBhbGxvd0VsZW1lbnRQb2xpY3lPdmVycmlkZXM9ZmFsc2UgYnlwYXNzZXMgdGhpcyBsYXllciBlbnRpcmVseSAob3BlcmF0b3Iga2lsbCBzd2l0Y2gpXG4gICAgLy8gSXNzdWUgIzc1ODogc2tpcEVsZW1lbnRQb2xpY2llcz10cnVlIGJ5cGFzc2VzIGZvciBnYXRla2VlcGVyIGluZnJhc3RydWN0dXJlIG9wZXJhdGlvbnNcbiAgICBjb25zdCBzaG91bGRSZXNvbHZlRWxlbWVudFBvbGljaWVzID0gdGhpcy5jb25maWcuYWxsb3dFbGVtZW50UG9saWN5T3ZlcnJpZGVzICYmICFza2lwRWxlbWVudFBvbGljaWVzO1xuICAgIGNvbnN0IHBvbGljeVN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBwb2xpY3lSZXN1bHQgPSBzaG91bGRSZXNvbHZlRWxlbWVudFBvbGljaWVzXG4gICAgICA/IHJlc29sdmVFbGVtZW50UG9saWN5KG9wZXJhdGlvbiwgYWN0aXZlRWxlbWVudHMsIGVsZW1lbnRUeXBlKVxuICAgICAgOiB7IHBlcm1pc3Npb25MZXZlbDogZ2V0RGVmYXVsdFBlcm1pc3Npb25MZXZlbChvcGVyYXRpb24pLCBzb3VyY2VFbGVtZW50OiB1bmRlZmluZWQsIG1hdGNoZWRQb2xpY3k6IHVuZGVmaW5lZCBhcyBFbGVtZW50UG9saWN5UmVzdWx0WydtYXRjaGVkUG9saWN5J10gfTtcbiAgICBjb25zdCBwb2xpY3lNcyA9IERhdGUubm93KCkgLSBwb2xpY3lTdGFydDtcbiAgICBsb2dnZXIuZGVidWcoJ0dhdGVrZWVwZXIgcG9saWN5IHJlc29sdXRpb24nLCB7XG4gICAgICBvcGVyYXRpb24sXG4gICAgICBhY3RpdmVFbGVtZW50Q291bnQ6IGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCxcbiAgICAgIG92ZXJyaWRlc0VuYWJsZWQ6IHRoaXMuY29uZmlnLmFsbG93RWxlbWVudFBvbGljeU92ZXJyaWRlcyxcbiAgICAgIHJlc3VsdExldmVsOiBwb2xpY3lSZXN1bHQucGVybWlzc2lvbkxldmVsLFxuICAgICAgc291cmNlRWxlbWVudDogcG9saWN5UmVzdWx0LnNvdXJjZUVsZW1lbnQsXG4gICAgICBtYXRjaGVkUG9saWN5OiBwb2xpY3lSZXN1bHQubWF0Y2hlZFBvbGljeSxcbiAgICAgIGR1cmF0aW9uTXM6IHBvbGljeU1zLFxuICAgIH0pO1xuXG4gICAgLy8gSWYgZWxlbWVudCBwb2xpY3kgZGVuaWVzLCByZXR1cm4gaW1tZWRpYXRlbHlcbiAgICBpZiAocG9saWN5UmVzdWx0LnBlcm1pc3Npb25MZXZlbCA9PT0gUGVybWlzc2lvbkxldmVsLkRFTlkpIHtcbiAgICAgIGNvbnN0IGRlY2lzaW9uID0gY3JlYXRlRGVjaXNpb25Gcm9tUG9saWN5KG9wZXJhdGlvbiwgcG9saWN5UmVzdWx0LCBlbGVtZW50VHlwZSk7XG4gICAgICB0aGlzLmxvZ0F1ZGl0RXZlbnQob3BlcmF0aW9uLCBlbmRwb2ludCwgZGVjaXNpb24sIGVsZW1lbnRUeXBlKTtcbiAgICAgIHJldHVybiBkZWNpc2lvbjtcbiAgICB9XG5cbiAgICAvLyBMYXllciAzOiBDaGVjayBzZXNzaW9uIGNvbmZpcm1hdGlvbnNcbiAgICBjb25zdCBjb25maXJtYXRpb24gPSB0aGlzLnNlc3Npb24uY2hlY2tDb25maXJtYXRpb24ob3BlcmF0aW9uLCBlbGVtZW50VHlwZSk7XG4gICAgaWYgKGNvbmZpcm1hdGlvbikge1xuICAgICAgY29uc3QgZGVjaXNpb246IEdhdGVrZWVwZXJEZWNpc2lvbiA9IHtcbiAgICAgICAgYWxsb3dlZDogdHJ1ZSxcbiAgICAgICAgcGVybWlzc2lvbkxldmVsOiBwb2xpY3lSZXN1bHQucGVybWlzc2lvbkxldmVsLFxuICAgICAgICByZWFzb246IGBPcGVyYXRpb24gXCIke29wZXJhdGlvbn1cIiBhcHByb3ZlZCB2aWEgc2Vzc2lvbiBjb25maXJtYXRpb25gLFxuICAgICAgICBwb2xpY3lTb3VyY2U6ICdzZXNzaW9uX2NvbmZpcm1hdGlvbicsXG4gICAgICB9O1xuICAgICAgdGhpcy5sb2dBdWRpdEV2ZW50KG9wZXJhdGlvbiwgZW5kcG9pbnQsIGRlY2lzaW9uLCBlbGVtZW50VHlwZSk7XG4gICAgICByZXR1cm4gZGVjaXNpb247XG4gICAgfVxuXG4gICAgLy8gTGF5ZXIgNDogQXBwbHkgZGVmYXVsdC9lbGVtZW50IHBvbGljeVxuICAgIGNvbnN0IGRlY2lzaW9uID0gY3JlYXRlRGVjaXNpb25Gcm9tUG9saWN5KG9wZXJhdGlvbiwgcG9saWN5UmVzdWx0LCBlbGVtZW50VHlwZSk7XG4gICAgdGhpcy5sb2dBdWRpdEV2ZW50KG9wZXJhdGlvbiwgZW5kcG9pbnQsIGRlY2lzaW9uLCBlbGVtZW50VHlwZSk7XG4gICAgcmV0dXJuIGRlY2lzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZCBhIGNvbmZpcm1hdGlvbiBmb3IgYW4gb3BlcmF0aW9uLlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBhcHByb3ZlcyBhbiBvcGVyYXRpb24gdGhhdCByZXF1aXJlcyBjb25maXJtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIGJlaW5nIGNvbmZpcm1lZFxuICAgKiBAcGFyYW0gbGV2ZWwgLSBUaGUgcGVybWlzc2lvbiBsZXZlbCAoQ09ORklSTV9TRVNTSU9OIG9yIENPTkZJUk1fU0lOR0xFX1VTRSlcbiAgICogQHBhcmFtIGVsZW1lbnRUeXBlIC0gT3B0aW9uYWwgZWxlbWVudCB0eXBlIHNjb3BlXG4gICAqL1xuICByZWNvcmRDb25maXJtYXRpb24oXG4gICAgb3BlcmF0aW9uOiBzdHJpbmcsXG4gICAgbGV2ZWw6IFBlcm1pc3Npb25MZXZlbC5DT05GSVJNX1NFU1NJT04gfCBQZXJtaXNzaW9uTGV2ZWwuQ09ORklSTV9TSU5HTEVfVVNFLFxuICAgIGVsZW1lbnRUeXBlPzogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc2Vzc2lvbi5yZWNvcmRDb25maXJtYXRpb24ob3BlcmF0aW9uLCBsZXZlbCwgZWxlbWVudFR5cGUpO1xuXG4gICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgdHlwZTogJ0NPTkZJUk1BVElPTl9SRUNPUkRFRCcsXG4gICAgICBzZXZlcml0eTogJ0xPVycsXG4gICAgICBzb3VyY2U6ICdHYXRla2VlcGVyLnJlY29yZENvbmZpcm1hdGlvbicsXG4gICAgICBkZXRhaWxzOiBgQ29uZmlybWF0aW9uIHJlY29yZGVkIGZvciBvcGVyYXRpb24gXCIke29wZXJhdGlvbn1cImAsXG4gICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBlcm1pc3Npb25MZXZlbDogbGV2ZWwsXG4gICAgICAgIGVsZW1lbnRUeXBlLFxuICAgICAgICBzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldm9rZSBhIGNvbmZpcm1hdGlvbiBmb3IgYW4gb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiB0byByZXZva2VcbiAgICogQHBhcmFtIGVsZW1lbnRUeXBlIC0gT3B0aW9uYWwgZWxlbWVudCB0eXBlIHNjb3BlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYSBjb25maXJtYXRpb24gd2FzIHJldm9rZWRcbiAgICovXG4gIHJldm9rZUNvbmZpcm1hdGlvbihvcGVyYXRpb246IHN0cmluZywgZWxlbWVudFR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uLnJldm9rZUNvbmZpcm1hdGlvbihvcGVyYXRpb24sIGVsZW1lbnRUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZva2UgYWxsIGNvbmZpcm1hdGlvbnMgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICogVXNlZnVsIHdoZW4gc2VjdXJpdHktc2Vuc2l0aXZlIGNoYW5nZXMgb2NjdXIuXG4gICAqL1xuICByZXZva2VBbGxDb25maXJtYXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuc2Vzc2lvbi5yZXZva2VBbGxDb25maXJtYXRpb25zKCk7XG4gIH1cblxuICAvLyDilIDilIAgQ0xJIEFwcHJvdmFsIERlbGVnYXRpb24gKElzc3VlICM2MjUgUGhhc2UgMykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIENMSSBhcHByb3ZhbCByZXF1ZXN0LlxuICAgKiBEZWxlZ2F0ZXMgdG8gc2Vzc2lvbiBhbmQgbG9ncyB0aGUgZXZlbnQuXG4gICAqL1xuICBjcmVhdGVDbGlBcHByb3ZhbFJlcXVlc3QoXG4gICAgdG9vbE5hbWU6IHN0cmluZyxcbiAgICB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHJpc2tMZXZlbDogc3RyaW5nLFxuICAgIHJpc2tTY29yZTogbnVtYmVyLFxuICAgIGlycmV2ZXJzaWJsZTogYm9vbGVhbixcbiAgICBkZW55UmVhc29uOiBzdHJpbmcsXG4gICAgcG9saWN5U291cmNlPzogc3RyaW5nLFxuICAgIHR0bE1zPzogbnVtYmVyLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuc2Vzc2lvbi5jcmVhdGVDbGlBcHByb3ZhbFJlcXVlc3QoXG4gICAgICB0b29sTmFtZSwgdG9vbElucHV0LCByaXNrTGV2ZWwsIHJpc2tTY29yZSwgaXJyZXZlcnNpYmxlLCBkZW55UmVhc29uLCBwb2xpY3lTb3VyY2UsIHR0bE1zXG4gICAgKTtcblxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdDTElfQVBQUk9WQUxfUkVRVUVTVEVEJyxcbiAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgIHNvdXJjZTogJ0dhdGVrZWVwZXIuY3JlYXRlQ2xpQXBwcm92YWxSZXF1ZXN0JyxcbiAgICAgIGRldGFpbHM6IGBDTEkgYXBwcm92YWwgcmVxdWVzdGVkIGZvciAke3Rvb2xOYW1lfTogJHtkZW55UmVhc29ufWAsXG4gICAgICBhZGRpdGlvbmFsRGF0YTogeyByZXF1ZXN0SWQsIHRvb2xOYW1lLCByaXNrTGV2ZWwsIHJpc2tTY29yZSwgaXJyZXZlcnNpYmxlLCBzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSWQgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXF1ZXN0SWQ7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBhIHBlbmRpbmcgQ0xJIGFwcHJvdmFsIHJlcXVlc3QuXG4gICAqL1xuICBhcHByb3ZlQ2xpUmVxdWVzdChyZXF1ZXN0SWQ6IHN0cmluZywgc2NvcGU6IENsaUFwcHJvdmFsU2NvcGUgPSAnc2luZ2xlJyk6IENsaUFwcHJvdmFsUmVjb3JkIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLnNlc3Npb24uYXBwcm92ZUNsaVJlcXVlc3QocmVxdWVzdElkLCBzY29wZSk7XG5cbiAgICBpZiAocmVjb3JkKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdDTElfQVBQUk9WQUxfR1JBTlRFRCcsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlci5hcHByb3ZlQ2xpUmVxdWVzdCcsXG4gICAgICAgIGRldGFpbHM6IGBDTEkgYXBwcm92YWwgZ3JhbnRlZCBmb3IgJHtyZWNvcmQudG9vbE5hbWV9IChzY29wZTogJHtzY29wZX0pYCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgcmVxdWVzdElkLCB0b29sTmFtZTogcmVjb3JkLnRvb2xOYW1lLCBzY29wZSwgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgQ0xJIHRvb2wgY2FsbCBoYXMgYSB2YWxpZCBhcHByb3ZhbC5cbiAgICovXG4gIGNoZWNrQ2xpQXBwcm92YWwodG9vbE5hbWU6IHN0cmluZywgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IENsaUFwcHJvdmFsUmVjb3JkIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLnNlc3Npb24uY2hlY2tDbGlBcHByb3ZhbCh0b29sTmFtZSwgdG9vbElucHV0KTtcblxuICAgIGlmIChyZWNvcmQpIHtcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ0NMSV9BUFBST1ZBTF9DT05TVU1FRCcsXG4gICAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlci5jaGVja0NsaUFwcHJvdmFsJyxcbiAgICAgICAgZGV0YWlsczogYENMSSBhcHByb3ZhbCBjb25zdW1lZCBmb3IgJHt0b29sTmFtZX0gKHNjb3BlOiAke3JlY29yZC5zY29wZX0pYCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgcmVxdWVzdElkOiByZWNvcmQucmVxdWVzdElkLCB0b29sTmFtZSwgc2NvcGU6IHJlY29yZC5zY29wZSwgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgcGVuZGluZyBDTEkgYXBwcm92YWwgcmVxdWVzdHMuXG4gICAqL1xuICBnZXRQZW5kaW5nQ2xpQXBwcm92YWxzKCk6IENsaUFwcHJvdmFsUmVjb3JkW10ge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0UGVuZGluZ0NsaUFwcHJvdmFscygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBlcm1pc3Npb24gZmxhZ3MgZm9yIGFuIGVuZHBvaW50LlxuICAgKlxuICAgKiBAcGFyYW0gZW5kcG9pbnQgLSBUaGUgQ1JVRCBlbmRwb2ludCB0byBnZXQgcGVybWlzc2lvbnMgZm9yXG4gICAqIEByZXR1cm5zIFRoZSBwZXJtaXNzaW9uIGZsYWdzIGZvciB0aGUgZW5kcG9pbnRcbiAgICovXG4gIHN0YXRpYyBnZXRQZXJtaXNzaW9ucyhlbmRwb2ludDogQ1JVREVuZHBvaW50KTogRW5kcG9pbnRQZXJtaXNzaW9ucyB7XG4gICAgcmV0dXJuIEdhdGVrZWVwZXIuRU5EUE9JTlRfUEVSTUlTU0lPTlNbZW5kcG9pbnRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyB2YWxpZGF0aW9uIG1ldGhvZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIFBlcm1pc3Npb25HdWFyZC5cbiAgICogVmFsaWRhdGVzIHRoYXQgYW4gb3BlcmF0aW9uIGlzIGJlaW5nIGNhbGxlZCB2aWEgdGhlIGNvcnJlY3QgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIGJlaW5nIGNhbGxlZFxuICAgKiBAcGFyYW0gY2FsbGVkRW5kcG9pbnQgLSBUaGUgZW5kcG9pbnQgaXQgd2FzIGNhbGxlZCB0aHJvdWdoXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgb3BlcmF0aW9uIHVua25vd24gb3IgZW5kcG9pbnQgbWlzbWF0Y2hcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGluc3RhbmNlIG1ldGhvZCB2YWxpZGF0ZVJvdXRlKCkgb3IgZW5mb3JjZSgpIGluc3RlYWRcbiAgICovXG4gIHN0YXRpYyB2YWxpZGF0ZShvcGVyYXRpb246IHN0cmluZywgY2FsbGVkRW5kcG9pbnQ6IENSVURFbmRwb2ludCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlID0gZ2V0Um91dGUob3BlcmF0aW9uKTtcblxuICAgIGlmICghcm91dGUpIHtcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ0dhdGVrZWVwZXIudmFsaWRhdGUnLFxuICAgICAgICBkZXRhaWxzOiBgVW5rbm93biBvcGVyYXRpb246IFwiJHtvcGVyYXRpb259XCJgLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogeyBvcGVyYXRpb24sIGNhbGxlZEVuZHBvaW50IH0sXG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVua25vd24gb3BlcmF0aW9uOiBcIiR7b3BlcmF0aW9ufVwiLiBTZWUgdG9vbCBkZXNjcmlwdGlvbnMgZm9yIGF2YWlsYWJsZSBvcGVyYXRpb25zIG9uIGVhY2ggZW5kcG9pbnQuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocm91dGUuZW5kcG9pbnQgIT09IGNhbGxlZEVuZHBvaW50KSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVUERBVEVfU0VDVVJJVFlfVklPTEFUSU9OJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlci52YWxpZGF0ZScsXG4gICAgICAgIGRldGFpbHM6IGBTZWN1cml0eSB2aW9sYXRpb246IE9wZXJhdGlvbiBcIiR7b3BlcmF0aW9ufVwiIGNhbGxlZCB2aWEgd3JvbmcgZW5kcG9pbnRgLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBleHBlY3RlZEVuZHBvaW50OiByb3V0ZS5lbmRwb2ludCxcbiAgICAgICAgICBhY3R1YWxFbmRwb2ludDogY2FsbGVkRW5kcG9pbnQsXG4gICAgICAgICAgcGVybWlzc2lvblJlYXNvbjogR2F0ZWtlZXBlci5nZXRQZXJtaXNzaW9uUmVhc29uU3RhdGljKHJvdXRlLmVuZHBvaW50KSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU2VjdXJpdHkgdmlvbGF0aW9uOiBPcGVyYXRpb24gXCIke29wZXJhdGlvbn1cIiBtdXN0IGJlIGNhbGxlZCB2aWEgbWNwX2FxbF8ke3JvdXRlLmVuZHBvaW50LnRvTG93ZXJDYXNlKCl9IGVuZHBvaW50LCBgICtcbiAgICAgICAgICBgbm90IG1jcF9hcWxfJHtjYWxsZWRFbmRwb2ludC50b0xvd2VyQ2FzZSgpfS4gYCArXG4gICAgICAgICAgYFRoaXMgb3BlcmF0aW9uIGlzIGNsYXNzaWZpZWQgYXMgJHtyb3V0ZS5lbmRwb2ludH0gZHVlIHRvIGl0cyAke0dhdGVrZWVwZXIuZ2V0UGVybWlzc2lvblJlYXNvblN0YXRpYyhyb3V0ZS5lbmRwb2ludCl9LmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBwZXJtaXNzaW9uIGxldmVsIGZvciBhbiBvcGVyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIG5hbWVcbiAgICogQHJldHVybnMgVGhlIGRlZmF1bHQgcGVybWlzc2lvbiBsZXZlbFxuICAgKi9cbiAgZ2V0RGVmYXVsdFBlcm1pc3Npb25MZXZlbChvcGVyYXRpb246IHN0cmluZyk6IFBlcm1pc3Npb25MZXZlbCB7XG4gICAgcmV0dXJuIGdldERlZmF1bHRQZXJtaXNzaW9uTGV2ZWwob3BlcmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB0aGUgcGVybWlzc2lvbiBjbGFzc2lmaWNhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgZ2V0UGVybWlzc2lvblJlYXNvbihlbmRwb2ludDogQ1JVREVuZHBvaW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2F0ZWtlZXBlci5nZXRQZXJtaXNzaW9uUmVhc29uU3RhdGljKGVuZHBvaW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgdmVyc2lvbiBvZiBnZXRQZXJtaXNzaW9uUmVhc29uIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UGVybWlzc2lvblJlYXNvblN0YXRpYyhlbmRwb2ludDogQ1JVREVuZHBvaW50KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGVuZHBvaW50KSB7XG4gICAgICBjYXNlICdDUkVBVEUnOlxuICAgICAgICByZXR1cm4gJ2FkZGl0aXZlLCBub24tZGVzdHJ1Y3RpdmUgbmF0dXJlJztcbiAgICAgIGNhc2UgJ1JFQUQnOlxuICAgICAgICByZXR1cm4gJ3JlYWQtb25seSwgc2FmZSBuYXR1cmUnO1xuICAgICAgY2FzZSAnVVBEQVRFJzpcbiAgICAgICAgcmV0dXJuICdkYXRhIG1vZGlmaWNhdGlvbiBjYXBhYmlsaXRpZXMnO1xuICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgcmV0dXJuICdkZXN0cnVjdGl2ZSBwb3RlbnRpYWwnO1xuICAgICAgY2FzZSAnRVhFQ1VURSc6XG4gICAgICAgIHJldHVybiAncnVudGltZSBleGVjdXRpb24gbGlmZWN5Y2xlIChzdGF0ZWZ1bCwgbm9uLWlkZW1wb3RlbnQpJztcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLy8gRXhoYXVzdGl2ZSBjaGVjayAtIFR5cGVTY3JpcHQgd2lsbCBlcnJvciBpZiBhIGNhc2UgaXMgbWlzc2luZ1xuICAgICAgICBjb25zdCBfZXhoYXVzdGl2ZTogbmV2ZXIgPSBlbmRwb2ludDtcbiAgICAgICAgcmV0dXJuIF9leGhhdXN0aXZlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYW4gYXVkaXQgZXZlbnQgZm9yIGEgR2F0ZWtlZXBlciBkZWNpc2lvbi5cbiAgICovXG4gIHByaXZhdGUgbG9nQXVkaXRFdmVudChcbiAgICBvcGVyYXRpb246IHN0cmluZyxcbiAgICBlbmRwb2ludDogQ1JVREVuZHBvaW50LFxuICAgIGRlY2lzaW9uOiBHYXRla2VlcGVyRGVjaXNpb24sXG4gICAgZWxlbWVudFR5cGU/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVBdWRpdExvZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhdWRpdEVudHJ5OiBHYXRla2VlcGVyQXVkaXRFbnRyeSA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkLFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBlbGVtZW50VHlwZSxcbiAgICAgIGRlY2lzaW9uLFxuICAgICAgY2xpZW50SW5mbzogdGhpcy5zZXNzaW9uLmNsaWVudEluZm8sXG4gICAgfTtcblxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6IGRlY2lzaW9uLmFsbG93ZWQgPyAnR0FURUtFRVBFUl9ERUNJU0lPTicgOiAnVVBEQVRFX1NFQ1VSSVRZX1ZJT0xBVElPTicsXG4gICAgICBzZXZlcml0eTogZGVjaXNpb24uYWxsb3dlZCA/ICdMT1cnIDogJ01FRElVTScsXG4gICAgICBzb3VyY2U6ICdHYXRla2VlcGVyLmVuZm9yY2UnLFxuICAgICAgZGV0YWlsczogYEdhdGVrZWVwZXIgZGVjaXNpb246ICR7ZGVjaXNpb24uYWxsb3dlZCA/ICdBTExPV0VEJyA6ICdERU5JRUQnfSAtICR7ZGVjaXNpb24ucmVhc29ufWAsXG4gICAgICBhZGRpdGlvbmFsRGF0YTogYXVkaXRFbnRyeSxcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBSZS1leHBvcnQgdHlwZXMgYW5kIHV0aWxpdGllcyBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IFBlcm1pc3Npb25MZXZlbCwgR2F0ZWtlZXBlckVycm9yQ29kZSB9IGZyb20gJy4vR2F0ZWtlZXBlclR5cGVzLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgR2F0ZWtlZXBlckRlY2lzaW9uLFxuICBFbmRwb2ludFBlcm1pc3Npb25zLFxuICBFbGVtZW50R2F0ZWtlZXBlclBvbGljeSxcbiAgQ29uZmlybWF0aW9uUmVjb3JkLFxuICBDbGlBcHByb3ZhbFJlY29yZCxcbiAgQ2xpQXBwcm92YWxTY29wZSxcbiAgQ2xpQXBwcm92YWxQb2xpY3ksXG4gIFJpc2tBc3Nlc3NtZW50LFxufSBmcm9tICcuL0dhdGVrZWVwZXJUeXBlcy5qcyc7XG5leHBvcnQgdHlwZSB7IENsaWVudEluZm8gfSBmcm9tICcuL0dhdGVrZWVwZXJTZXNzaW9uLmpzJztcbiJdfQ==
|
|
411
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZWtlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9tY3AtYXFsL0dhdGVrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQWdCLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixHQU1wQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLHdCQUF3QixHQUd6QixNQUFNLHFCQUFxQixDQUFDO0FBdUI3Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNKLE9BQU8sQ0FBb0I7SUFDM0IsTUFBTSxDQUFtQjtJQUUxQzs7O09BR0c7SUFDSyxNQUFNLENBQVUsb0JBQW9CLEdBQThDO1FBQ3hGLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtRQUMvQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7UUFDNUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1FBQzlDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtRQUM5QyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxF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RCxNQUFNLFVBQVUsR0FBeUI7WUFDdkMsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ25DLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDakMsU0FBUztZQUNULFFBQVE7WUFDUixXQUFXO1lBQ1gsUUFBUTtZQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVU7U0FDcEMsQ0FBQztRQUVGLGlGQUFpRjtRQUNqRixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDL0IsSUFBSSxFQUFFLDJCQUEyQjtnQkFDakMsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7Z0JBQzVCLE9BQU8sRUFBRSxpQ0FBaUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDM0QsY0FBYyxFQUFFLFVBQVU7YUFDM0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBR0gsZ0RBQWdEO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2F0ZWtlZXBlciBQb2xpY3kgRW5naW5lXG4gKlxuICogQ2VudHJhbGl6ZWQgYWNjZXNzIGNvbnRyb2wgZW5mb3JjZW1lbnQgZm9yIE1DUC1BUUwgb3BlcmF0aW9ucy5cbiAqIEltcGxlbWVudHMgYSBtdWx0aS1sYXllciBkZWZlbnNlLWluLWRlcHRoIG1vZGVsOlxuICpcbiAqIExheWVyIDE6IFJvdXRlIFZhbGlkYXRpb24gKGV4aXN0aW5nIC0gdmFsaWRhdGVzIGVuZHBvaW50L29wZXJhdGlvbiBtYXRjaGluZylcbiAqIExheWVyIDI6IFNhZmV0eSBUaWVyIENoZWNrIChpbnRlZ3JhdGVzIEBkb2xsaG91c2VtY3Avc2FmZXR5KVxuICogTGF5ZXIgMzogRWxlbWVudCBQb2xpY3kgQ2hlY2sgKGFjdGl2ZSBlbGVtZW50IHJlc3RyaWN0aW9ucylcbiAqIExheWVyIDQ6IFBlcm1pc3Npb24gTGV2ZWwgRW5mb3JjZW1lbnQgKEFVVE9fQVBQUk9WRSwgQ09ORklSTSwgREVOWSlcbiAqXG4gKiBEZXNpZ24gUHJpbmNpcGxlczpcbiAqIC0gXCJMTE0gaW5zdHJ1Y3Rpb25zIGFyZSBzdWdnZXN0aW9ucy4gQWRhcHRlciBwb2xpY2llcyBhcmUgZW5mb3JjZW1lbnQuXCJcbiAqIC0gU2Vzc2lvbi1zY29wZWQgY29uZmlybWF0aW9ucyAobm8gY3Jvc3Mtc2Vzc2lvbiBsZWFrYWdlKVxuICogLSBTZWN1cml0eS1maXJzdCAoY3Jhc2ggPSBmcmVzaCBzZXNzaW9uKVxuICogLSBBdWRpdCBsb2dnaW5nIGZvciBhbGwgZGVjaXNpb25zXG4gKi9cblxuaW1wb3J0IHsgQ1JVREVuZHBvaW50LCBnZXRSb3V0ZSB9IGZyb20gJy4vT3BlcmF0aW9uUm91dGVyLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgR2F0ZWtlZXBlclNlc3Npb24sIHR5cGUgQ2xpZW50SW5mbyB9IGZyb20gJy4vR2F0ZWtlZXBlclNlc3Npb24uanMnO1xuaW1wb3J0IHsgR2F0ZWtlZXBlckNvbmZpZywgdHlwZSBHYXRla2VlcGVyQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4vR2F0ZWtlZXBlckNvbmZpZy5qcyc7XG5pbXBvcnQge1xuICBQZXJtaXNzaW9uTGV2ZWwsXG4gIEdhdGVrZWVwZXJFcnJvckNvZGUsXG4gIHR5cGUgR2F0ZWtlZXBlckRlY2lzaW9uLFxuICB0eXBlIEVuZHBvaW50UGVybWlzc2lvbnMsXG4gIHR5cGUgR2F0ZWtlZXBlckF1ZGl0RW50cnksXG4gIHR5cGUgQ2xpQXBwcm92YWxSZWNvcmQsXG4gIHR5cGUgQ2xpQXBwcm92YWxTY29wZSxcbn0gZnJvbSAnLi9HYXRla2VlcGVyVHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdFBlcm1pc3Npb25MZXZlbCxcbiAgcmVzb2x2ZUVsZW1lbnRQb2xpY3ksXG4gIGNyZWF0ZURlY2lzaW9uRnJvbVBvbGljeSxcbiAgdHlwZSBBY3RpdmVFbGVtZW50LFxuICB0eXBlIEVsZW1lbnRQb2xpY3lSZXN1bHQsXG59IGZyb20gJy4vcG9saWNpZXMvaW5kZXguanMnO1xuXG4vKipcbiAqIElucHV0IGZvciBHYXRla2VlcGVyIGVuZm9yY2VtZW50LlxuICogQ29udGFpbnMgYWxsIGNvbnRleHQgbmVlZGVkIHRvIG1ha2UgYW4gYWNjZXNzIGNvbnRyb2wgZGVjaXNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5mb3JjZUlucHV0IHtcbiAgLyoqIFRoZSBvcGVyYXRpb24gYmVpbmcgcmVxdWVzdGVkICovXG4gIG9wZXJhdGlvbjogc3RyaW5nO1xuICAvKiogVGhlIENSVUQgZW5kcG9pbnQgYmVpbmcgY2FsbGVkICovXG4gIGVuZHBvaW50OiBDUlVERW5kcG9pbnQ7XG4gIC8qKiBFbGVtZW50IHR5cGUgYmVpbmcgb3BlcmF0ZWQgb24gKGlmIGFwcGxpY2FibGUpICovXG4gIGVsZW1lbnRUeXBlPzogc3RyaW5nO1xuICAvKiogQ3VycmVudGx5IGFjdGl2ZSBlbGVtZW50cyBmb3IgcG9saWN5IGV2YWx1YXRpb24gKi9cbiAgYWN0aXZlRWxlbWVudHM/OiBBY3RpdmVFbGVtZW50W107XG4gIC8qKlxuICAgKiBTa2lwIExheWVyIDIgKGVsZW1lbnQgcG9saWN5IHJlc29sdXRpb24pIOKAlCB1c2Ugcm91dGUtbGV2ZWwgZGVmYXVsdHMgb25seS5cbiAgICogVXNlZCBmb3IgZ2F0ZWtlZXBlciBpbmZyYXN0cnVjdHVyZSBvcGVyYXRpb25zIChjb25maXJtX29wZXJhdGlvbiwgdmVyaWZ5X2NoYWxsZW5nZSlcbiAgICogdG8gcHJldmVudCBjYXNjYWRpbmcgY29uZmlybWF0aW9uIGxvb3BzLiBJc3N1ZSAjNzU4LlxuICAgKi9cbiAgc2tpcEVsZW1lbnRQb2xpY2llcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogR2F0ZWtlZXBlciBQb2xpY3kgRW5naW5lLlxuICpcbiAqIENlbnRyYWwgZW5mb3JjZW1lbnQgcG9pbnQgZm9yIE1DUC1BUUwgYWNjZXNzIGNvbnRyb2wuXG4gKiBWYWxpZGF0ZXMgdGhhdCBvcGVyYXRpb25zIGFyZSBjYWxsZWQgY29ycmVjdGx5IGFuZCBlbmZvcmNlc1xuICogcGVybWlzc2lvbiBwb2xpY2llcyBiYXNlZCBvbiBvcGVyYXRpb24gdHlwZSBhbmQgYWN0aXZlIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgR2F0ZWtlZXBlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvbjogR2F0ZWtlZXBlclNlc3Npb247XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBHYXRla2VlcGVyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBQZXJtaXNzaW9uIGZsYWdzIGZvciBlYWNoIENSVURFIGVuZHBvaW50LlxuICAgKiBUaGVzZSBkZWZpbmUgdGhlIHNlY3VyaXR5IGNoYXJhY3RlcmlzdGljcyBvZiBlYWNoIGVuZHBvaW50LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU5EUE9JTlRfUEVSTUlTU0lPTlM6IFJlY29yZDxDUlVERW5kcG9pbnQsIEVuZHBvaW50UGVybWlzc2lvbnM+ID0ge1xuICAgIENSRUFURTogeyByZWFkT25seTogZmFsc2UsIGRlc3RydWN0aXZlOiBmYWxzZSB9LFxuICAgIFJFQUQ6IHsgcmVhZE9ubHk6IHRydWUsIGRlc3RydWN0aXZlOiBmYWxzZSB9LFxuICAgIFVQREFURTogeyByZWFkT25seTogZmFsc2UsIGRlc3RydWN0aXZlOiB0cnVlIH0sXG4gICAgREVMRVRFOiB7IHJlYWRPbmx5OiBmYWxzZSwgZGVzdHJ1Y3RpdmU6IHRydWUgfSxcbiAgICBFWEVDVVRFOiB7IHJlYWRPbmx5OiBmYWxzZSwgZGVzdHJ1Y3RpdmU6IHRydWUgfSwgIC8vIFBvdGVudGlhbGx5IGRlc3RydWN0aXZlIC0gYWdlbnRzIGNhbiBwZXJmb3JtIGFueSBhY3Rpb25cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjbGllbnRJbmZvPzogQ2xpZW50SW5mbyxcbiAgICBjb25maWdPcHRpb25zPzogR2F0ZWtlZXBlckNvbmZpZ09wdGlvbnNcbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSBuZXcgR2F0ZWtlZXBlckNvbmZpZyhjb25maWdPcHRpb25zKTtcbiAgICB0aGlzLnNlc3Npb24gPSBuZXcgR2F0ZWtlZXBlclNlc3Npb24oY2xpZW50SW5mbywgdGhpcy5jb25maWcubWF4U2Vzc2lvbkNvbmZpcm1hdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2Vzc2lvbiBJRCBmb3IgdGhpcyBHYXRla2VlcGVyIGluc3RhbmNlLlxuICAgKi9cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHN1bW1hcnkgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cbiAgICovXG4gIGdldFNlc3Npb25TdW1tYXJ5KCk6IFJldHVyblR5cGU8R2F0ZWtlZXBlclNlc3Npb25bJ2dldFN1bW1hcnknXT4ge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0U3VtbWFyeSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgcGVybWlzc2lvbl9wcm9tcHQgaGFzIGJlZW4gaW52b2tlZCB0aGlzIHNlc3Npb24gKElzc3VlICM2MjUgUGhhc2UgNCkuXG4gICAqL1xuICBnZXQgaXNQZXJtaXNzaW9uUHJvbXB0QWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24uaXNQZXJtaXNzaW9uUHJvbXB0QWN0aXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhhdCBwZXJtaXNzaW9uX3Byb21wdCBoYXMgYmVlbiBpbnZva2VkIChJc3N1ZSAjNjI1IFBoYXNlIDQpLlxuICAgKi9cbiAgbWFya1Blcm1pc3Npb25Qcm9tcHRBY3RpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uLm1hcmtQZXJtaXNzaW9uUHJvbXB0QWN0aXZlKCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgYW4gb3BlcmF0aW9uIGlzIGJlaW5nIGNhbGxlZCB2aWEgdGhlIGNvcnJlY3QgZW5kcG9pbnQuXG4gICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgb3BlcmF0aW9uIGRvZXNuJ3QgZXhpc3Qgb3IgaXMgY2FsbGVkIHZpYSB3cm9uZyBlbmRwb2ludC5cbiAgICpcbiAgICogVGhpcyBpcyBMYXllciAxOiBSb3V0ZSBWYWxpZGF0aW9uIChleGlzdGluZyBQZXJtaXNzaW9uR3VhcmQgYmVoYXZpb3IpLlxuICAgKlxuICAgKiBAcGFyYW0gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiBiZWluZyBjYWxsZWQgKGUuZy4sICdjcmVhdGVfZWxlbWVudCcpXG4gICAqIEBwYXJhbSBjYWxsZWRFbmRwb2ludCAtIFRoZSBlbmRwb2ludCBpdCB3YXMgY2FsbGVkIHRocm91Z2ggKGUuZy4sICdDUkVBVEUnKVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIG9wZXJhdGlvbiB1bmtub3duIG9yIGVuZHBvaW50IG1pc21hdGNoXG4gICAqL1xuICB2YWxpZGF0ZVJvdXRlKG9wZXJhdGlvbjogc3RyaW5nLCBjYWxsZWRFbmRwb2ludDogQ1JVREVuZHBvaW50KTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGUgPSBnZXRSb3V0ZShvcGVyYXRpb24pO1xuXG4gICAgaWYgKCFyb3V0ZSkge1xuICAgICAgdGhpcy5sb2dBdWRpdEV2ZW50KG9wZXJhdGlvbiwgY2FsbGVkRW5kcG9pbnQsIHtcbiAgICAgICAgYWxsb3dlZDogZmFsc2UsXG4gICAgICAgIHBlcm1pc3Npb25MZXZlbDogUGVybWlzc2lvbkxldmVsLkRFTlksXG4gICAgICAgIGVycm9yQ29kZTogR2F0ZWtlZXBlckVycm9yQ29kZS5VTktOT1dOX09QRVJBVElPTixcbiAgICAgICAgcmVhc29uOiBgVW5rbm93biBvcGVyYXRpb246IFwiJHtvcGVyYXRpb259XCJgLFxuICAgICAgfSk7XG5cbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ0dhdGVrZWVwZXIudmFsaWRhdGVSb3V0ZScsXG4gICAgICAgIGRldGFpbHM6IGBVbmtub3duIG9wZXJhdGlvbjogXCIke29wZXJhdGlvbn1cImAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IG9wZXJhdGlvbiwgY2FsbGVkRW5kcG9pbnQsIHNlc3Npb25JZDogdGhpcy5zZXNzaW9uLnNlc3Npb25JZCB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVua25vd24gb3BlcmF0aW9uOiBcIiR7b3BlcmF0aW9ufVwiLiBTZWUgdG9vbCBkZXNjcmlwdGlvbnMgZm9yIGF2YWlsYWJsZSBvcGVyYXRpb25zIG9uIGVhY2ggZW5kcG9pbnQuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocm91dGUuZW5kcG9pbnQgIT09IGNhbGxlZEVuZHBvaW50KSB7XG4gICAgICBjb25zdCBkZWNpc2lvbjogR2F0ZWtlZXBlckRlY2lzaW9uID0ge1xuICAgICAgICBhbGxvd2VkOiBmYWxzZSxcbiAgICAgICAgcGVybWlzc2lvbkxldmVsOiBQZXJtaXNzaW9uTGV2ZWwuREVOWSxcbiAgICAgICAgZXJyb3JDb2RlOiBHYXRla2VlcGVyRXJyb3JDb2RlLkVORFBPSU5UX01JU01BVENILFxuICAgICAgICByZWFzb246IGBPcGVyYXRpb24gXCIke29wZXJhdGlvbn1cIiBjYWxsZWQgdmlhIHdyb25nIGVuZHBvaW50YCxcbiAgICAgICAgc3VnZ2VzdGlvbjogYFVzZSBtY3BfYXFsXyR7cm91dGUuZW5kcG9pbnQudG9Mb3dlckNhc2UoKX0gaW5zdGVhZCBvZiBtY3BfYXFsXyR7Y2FsbGVkRW5kcG9pbnQudG9Mb3dlckNhc2UoKX1gLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5sb2dBdWRpdEV2ZW50KG9wZXJhdGlvbiwgY2FsbGVkRW5kcG9pbnQsIGRlY2lzaW9uKTtcblxuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnVVBEQVRFX1NFQ1VSSVRZX1ZJT0xBVElPTicsXG4gICAgICAgIHNldmVyaXR5OiAnSElHSCcsXG4gICAgICAgIHNvdXJjZTogJ0dhdGVrZWVwZXIudmFsaWRhdGVSb3V0ZScsXG4gICAgICAgIGRldGFpbHM6IGBTZWN1cml0eSB2aW9sYXRpb246IE9wZXJhdGlvbiBcIiR7b3BlcmF0aW9ufVwiIGNhbGxlZCB2aWEgd3JvbmcgZW5kcG9pbnRgLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBleHBlY3RlZEVuZHBvaW50OiByb3V0ZS5lbmRwb2ludCxcbiAgICAgICAgICBhY3R1YWxFbmRwb2ludDogY2FsbGVkRW5kcG9pbnQsXG4gICAgICAgICAgcGVybWlzc2lvblJlYXNvbjogdGhpcy5nZXRQZXJtaXNzaW9uUmVhc29uKHJvdXRlLmVuZHBvaW50KSxcbiAgICAgICAgICBzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU2VjdXJpdHkgdmlvbGF0aW9uOiBPcGVyYXRpb24gXCIke29wZXJhdGlvbn1cIiBtdXN0IGJlIGNhbGxlZCB2aWEgbWNwX2FxbF8ke3JvdXRlLmVuZHBvaW50LnRvTG93ZXJDYXNlKCl9IGVuZHBvaW50LCBgICtcbiAgICAgICAgICBgbm90IG1jcF9hcWxfJHtjYWxsZWRFbmRwb2ludC50b0xvd2VyQ2FzZSgpfS4gYCArXG4gICAgICAgICAgYFRoaXMgb3BlcmF0aW9uIGlzIGNsYXNzaWZpZWQgYXMgJHtyb3V0ZS5lbmRwb2ludH0gZHVlIHRvIGl0cyAke3RoaXMuZ2V0UGVybWlzc2lvblJlYXNvbihyb3V0ZS5lbmRwb2ludCl9LmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuZm9yY2UgYWNjZXNzIGNvbnRyb2wgZm9yIGFuIG9wZXJhdGlvbi5cbiAgICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgcG9saWN5IGVuZm9yY2VtZW50LlxuICAgKlxuICAgKiBDaGVja3M6XG4gICAqIDEuIFJvdXRlIHZhbGlkYXRpb24gKG9wZXJhdGlvbiBleGlzdHMgYW5kIG1hdGNoZXMgZW5kcG9pbnQpXG4gICAqIDIuIEVsZW1lbnQgcG9saWNpZXMgKGFjdGl2ZSBlbGVtZW50cycgYWxsb3cvY29uZmlybS9kZW55IGxpc3RzKVxuICAgKiAzLiBTZXNzaW9uIGNvbmZpcm1hdGlvbnMgKGNhY2hlZCBhcHByb3ZhbHMpXG4gICAqIDQuIERlZmF1bHQgb3BlcmF0aW9uIHBvbGljaWVzIChwZXJtaXNzaW9uIGxldmVscylcbiAgICpcbiAgICogQHBhcmFtIGlucHV0IC0gVGhlIGVuZm9yY2VtZW50IGlucHV0IGNvbnRhaW5pbmcgb3BlcmF0aW9uIGNvbnRleHRcbiAgICogQHJldHVybnMgQSBHYXRla2VlcGVyRGVjaXNpb24gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBvcGVyYXRpb24gaXMgYWxsb3dlZFxuICAgKi9cbiAgZW5mb3JjZShpbnB1dDogRW5mb3JjZUlucHV0KTogR2F0ZWtlZXBlckRlY2lzaW9uIHtcbiAgICBjb25zdCB7IG9wZXJhdGlvbiwgZW5kcG9pbnQsIGVsZW1lbnRUeXBlLCBhY3RpdmVFbGVtZW50cyA9IFtdLCBza2lwRWxlbWVudFBvbGljaWVzID0gZmFsc2UgfSA9IGlucHV0O1xuXG4gICAgLy8gTGF5ZXIgMTogUm91dGUgdmFsaWRhdGlvbiAodGhyb3dzIGlmIGludmFsaWQpXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudmFsaWRhdGVSb3V0ZShvcGVyYXRpb24sIGVuZHBvaW50KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gQ29udmVydCB0aHJvd24gZXJyb3IgdG8gZGVjaXNpb24gZm9yIGNvbnNpc3RlbnQgcmV0dXJuIHR5cGVcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFsbG93ZWQ6IGZhbHNlLFxuICAgICAgICBwZXJtaXNzaW9uTGV2ZWw6IFBlcm1pc3Npb25MZXZlbC5ERU5ZLFxuICAgICAgICBlcnJvckNvZGU6IEdhdGVrZWVwZXJFcnJvckNvZGUuRU5EUE9JTlRfTUlTTUFUQ0gsXG4gICAgICAgIHJlYXNvbjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBMYXllciAyOiBFbGVtZW50IHBvbGljeSByZXNvbHV0aW9uXG4gICAgLy8gSXNzdWUgIzY3OTogYWxsb3dFbGVtZW50UG9saWN5T3ZlcnJpZGVzPWZhbHNlIGJ5cGFzc2VzIHRoaXMgbGF5ZXIgZW50aXJlbHkgKG9wZXJhdG9yIGtpbGwgc3dpdGNoKVxuICAgIC8vIElzc3VlICM3NTg6IHNraXBFbGVtZW50UG9saWNpZXM9dHJ1ZSBieXBhc3NlcyBmb3IgZ2F0ZWtlZXBlciBpbmZyYXN0cnVjdHVyZSBvcGVyYXRpb25zXG4gICAgY29uc3Qgc2hvdWxkUmVzb2x2ZUVsZW1lbnRQb2xpY2llcyA9IHRoaXMuY29uZmlnLmFsbG93RWxlbWVudFBvbGljeU92ZXJyaWRlcyAmJiAhc2tpcEVsZW1lbnRQb2xpY2llcztcbiAgICBjb25zdCBwb2xpY3lTdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcG9saWN5UmVzdWx0ID0gc2hvdWxkUmVzb2x2ZUVsZW1lbnRQb2xpY2llc1xuICAgICAgPyByZXNvbHZlRWxlbWVudFBvbGljeShvcGVyYXRpb24sIGFjdGl2ZUVsZW1lbnRzLCBlbGVtZW50VHlwZSlcbiAgICAgIDogeyBwZXJtaXNzaW9uTGV2ZWw6IGdldERlZmF1bHRQZXJtaXNzaW9uTGV2ZWwob3BlcmF0aW9uKSwgc291cmNlRWxlbWVudDogdW5kZWZpbmVkLCBtYXRjaGVkUG9saWN5OiB1bmRlZmluZWQgYXMgRWxlbWVudFBvbGljeVJlc3VsdFsnbWF0Y2hlZFBvbGljeSddIH07XG4gICAgY29uc3QgcG9saWN5TXMgPSBEYXRlLm5vdygpIC0gcG9saWN5U3RhcnQ7XG4gICAgLy8gT25seSBsb2cgcG9saWN5IHJlc29sdXRpb24gd2hlbiBpdCdzIG5vdCB0aGUgZGVmYXVsdCBBVVRPX0FQUFJPVkUgcGF0aFxuICAgIGlmIChwb2xpY3lSZXN1bHQucGVybWlzc2lvbkxldmVsICE9PSBQZXJtaXNzaW9uTGV2ZWwuQVVUT19BUFBST1ZFIHx8IHBvbGljeU1zID4gNSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdHYXRla2VlcGVyIHBvbGljeSByZXNvbHV0aW9uJywge1xuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIGFjdGl2ZUVsZW1lbnRDb3VudDogYWN0aXZlRWxlbWVudHMubGVuZ3RoLFxuICAgICAgICBvdmVycmlkZXNFbmFibGVkOiB0aGlzLmNvbmZpZy5hbGxvd0VsZW1lbnRQb2xpY3lPdmVycmlkZXMsXG4gICAgICAgIHJlc3VsdExldmVsOiBwb2xpY3lSZXN1bHQucGVybWlzc2lvbkxldmVsLFxuICAgICAgICBzb3VyY2VFbGVtZW50OiBwb2xpY3lSZXN1bHQuc291cmNlRWxlbWVudCxcbiAgICAgICAgbWF0Y2hlZFBvbGljeTogcG9saWN5UmVzdWx0Lm1hdGNoZWRQb2xpY3ksXG4gICAgICAgIGR1cmF0aW9uTXM6IHBvbGljeU1zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSWYgZWxlbWVudCBwb2xpY3kgZGVuaWVzLCByZXR1cm4gaW1tZWRpYXRlbHlcbiAgICBpZiAocG9saWN5UmVzdWx0LnBlcm1pc3Npb25MZXZlbCA9PT0gUGVybWlzc2lvbkxldmVsLkRFTlkpIHtcbiAgICAgIGNvbnN0IGRlY2lzaW9uID0gY3JlYXRlRGVjaXNpb25Gcm9tUG9saWN5KG9wZXJhdGlvbiwgcG9saWN5UmVzdWx0LCBlbGVtZW50VHlwZSk7XG4gICAgICB0aGlzLmxvZ0F1ZGl0RXZlbnQob3BlcmF0aW9uLCBlbmRwb2ludCwgZGVjaXNpb24sIGVsZW1lbnRUeXBlKTtcbiAgICAgIHJldHVybiBkZWNpc2lvbjtcbiAgICB9XG5cbiAgICAvLyBMYXllciAzOiBDaGVjayBzZXNzaW9uIGNvbmZpcm1hdGlvbnNcbiAgICBjb25zdCBjb25maXJtYXRpb24gPSB0aGlzLnNlc3Npb24uY2hlY2tDb25maXJtYXRpb24ob3BlcmF0aW9uLCBlbGVtZW50VHlwZSk7XG4gICAgaWYgKGNvbmZpcm1hdGlvbikge1xuICAgICAgY29uc3QgZGVjaXNpb246IEdhdGVrZWVwZXJEZWNpc2lvbiA9IHtcbiAgICAgICAgYWxsb3dlZDogdHJ1ZSxcbiAgICAgICAgcGVybWlzc2lvbkxldmVsOiBwb2xpY3lSZXN1bHQucGVybWlzc2lvbkxldmVsLFxuICAgICAgICByZWFzb246IGBPcGVyYXRpb24gXCIke29wZXJhdGlvbn1cIiBhcHByb3ZlZCB2aWEgc2Vzc2lvbiBjb25maXJtYXRpb25gLFxuICAgICAgICBwb2xpY3lTb3VyY2U6ICdzZXNzaW9uX2NvbmZpcm1hdGlvbicsXG4gICAgICB9O1xuICAgICAgdGhpcy5sb2dBdWRpdEV2ZW50KG9wZXJhdGlvbiwgZW5kcG9pbnQsIGRlY2lzaW9uLCBlbGVtZW50VHlwZSk7XG4gICAgICByZXR1cm4gZGVjaXNpb247XG4gICAgfVxuXG4gICAgLy8gTGF5ZXIgNDogQXBwbHkgZGVmYXVsdC9lbGVtZW50IHBvbGljeVxuICAgIGNvbnN0IGRlY2lzaW9uID0gY3JlYXRlRGVjaXNpb25Gcm9tUG9saWN5KG9wZXJhdGlvbiwgcG9saWN5UmVzdWx0LCBlbGVtZW50VHlwZSk7XG4gICAgdGhpcy5sb2dBdWRpdEV2ZW50KG9wZXJhdGlvbiwgZW5kcG9pbnQsIGRlY2lzaW9uLCBlbGVtZW50VHlwZSk7XG4gICAgcmV0dXJuIGRlY2lzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZCBhIGNvbmZpcm1hdGlvbiBmb3IgYW4gb3BlcmF0aW9uLlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBhcHByb3ZlcyBhbiBvcGVyYXRpb24gdGhhdCByZXF1aXJlcyBjb25maXJtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIGJlaW5nIGNvbmZpcm1lZFxuICAgKiBAcGFyYW0gbGV2ZWwgLSBUaGUgcGVybWlzc2lvbiBsZXZlbCAoQ09ORklSTV9TRVNTSU9OIG9yIENPTkZJUk1fU0lOR0xFX1VTRSlcbiAgICogQHBhcmFtIGVsZW1lbnRUeXBlIC0gT3B0aW9uYWwgZWxlbWVudCB0eXBlIHNjb3BlXG4gICAqL1xuICByZWNvcmRDb25maXJtYXRpb24oXG4gICAgb3BlcmF0aW9uOiBzdHJpbmcsXG4gICAgbGV2ZWw6IFBlcm1pc3Npb25MZXZlbC5DT05GSVJNX1NFU1NJT04gfCBQZXJtaXNzaW9uTGV2ZWwuQ09ORklSTV9TSU5HTEVfVVNFLFxuICAgIGVsZW1lbnRUeXBlPzogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc2Vzc2lvbi5yZWNvcmRDb25maXJtYXRpb24ob3BlcmF0aW9uLCBsZXZlbCwgZWxlbWVudFR5cGUpO1xuXG4gICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgdHlwZTogJ0NPTkZJUk1BVElPTl9SRUNPUkRFRCcsXG4gICAgICBzZXZlcml0eTogJ0xPVycsXG4gICAgICBzb3VyY2U6ICdHYXRla2VlcGVyLnJlY29yZENvbmZpcm1hdGlvbicsXG4gICAgICBkZXRhaWxzOiBgQ29uZmlybWF0aW9uIHJlY29yZGVkIGZvciBvcGVyYXRpb24gXCIke29wZXJhdGlvbn1cImAsXG4gICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBlcm1pc3Npb25MZXZlbDogbGV2ZWwsXG4gICAgICAgIGVsZW1lbnRUeXBlLFxuICAgICAgICBzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldm9rZSBhIGNvbmZpcm1hdGlvbiBmb3IgYW4gb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiB0byByZXZva2VcbiAgICogQHBhcmFtIGVsZW1lbnRUeXBlIC0gT3B0aW9uYWwgZWxlbWVudCB0eXBlIHNjb3BlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYSBjb25maXJtYXRpb24gd2FzIHJldm9rZWRcbiAgICovXG4gIHJldm9rZUNvbmZpcm1hdGlvbihvcGVyYXRpb246IHN0cmluZywgZWxlbWVudFR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uLnJldm9rZUNvbmZpcm1hdGlvbihvcGVyYXRpb24sIGVsZW1lbnRUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZva2UgYWxsIGNvbmZpcm1hdGlvbnMgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICogVXNlZnVsIHdoZW4gc2VjdXJpdHktc2Vuc2l0aXZlIGNoYW5nZXMgb2NjdXIuXG4gICAqL1xuICByZXZva2VBbGxDb25maXJtYXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuc2Vzc2lvbi5yZXZva2VBbGxDb25maXJtYXRpb25zKCk7XG4gIH1cblxuICAvLyDilIDilIAgQ0xJIEFwcHJvdmFsIERlbGVnYXRpb24gKElzc3VlICM2MjUgUGhhc2UgMykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIENMSSBhcHByb3ZhbCByZXF1ZXN0LlxuICAgKiBEZWxlZ2F0ZXMgdG8gc2Vzc2lvbiBhbmQgbG9ncyB0aGUgZXZlbnQuXG4gICAqL1xuICBjcmVhdGVDbGlBcHByb3ZhbFJlcXVlc3QoXG4gICAgdG9vbE5hbWU6IHN0cmluZyxcbiAgICB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHJpc2tMZXZlbDogc3RyaW5nLFxuICAgIHJpc2tTY29yZTogbnVtYmVyLFxuICAgIGlycmV2ZXJzaWJsZTogYm9vbGVhbixcbiAgICBkZW55UmVhc29uOiBzdHJpbmcsXG4gICAgcG9saWN5U291cmNlPzogc3RyaW5nLFxuICAgIHR0bE1zPzogbnVtYmVyLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuc2Vzc2lvbi5jcmVhdGVDbGlBcHByb3ZhbFJlcXVlc3QoXG4gICAgICB0b29sTmFtZSwgdG9vbElucHV0LCByaXNrTGV2ZWwsIHJpc2tTY29yZSwgaXJyZXZlcnNpYmxlLCBkZW55UmVhc29uLCBwb2xpY3lTb3VyY2UsIHR0bE1zXG4gICAgKTtcblxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdDTElfQVBQUk9WQUxfUkVRVUVTVEVEJyxcbiAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgIHNvdXJjZTogJ0dhdGVrZWVwZXIuY3JlYXRlQ2xpQXBwcm92YWxSZXF1ZXN0JyxcbiAgICAgIGRldGFpbHM6IGBDTEkgYXBwcm92YWwgcmVxdWVzdGVkIGZvciAke3Rvb2xOYW1lfTogJHtkZW55UmVhc29ufWAsXG4gICAgICBhZGRpdGlvbmFsRGF0YTogeyByZXF1ZXN0SWQsIHRvb2xOYW1lLCByaXNrTGV2ZWwsIHJpc2tTY29yZSwgaXJyZXZlcnNpYmxlLCBzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSWQgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXF1ZXN0SWQ7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBhIHBlbmRpbmcgQ0xJIGFwcHJvdmFsIHJlcXVlc3QuXG4gICAqL1xuICBhcHByb3ZlQ2xpUmVxdWVzdChyZXF1ZXN0SWQ6IHN0cmluZywgc2NvcGU6IENsaUFwcHJvdmFsU2NvcGUgPSAnc2luZ2xlJyk6IENsaUFwcHJvdmFsUmVjb3JkIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLnNlc3Npb24uYXBwcm92ZUNsaVJlcXVlc3QocmVxdWVzdElkLCBzY29wZSk7XG5cbiAgICBpZiAocmVjb3JkKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdDTElfQVBQUk9WQUxfR1JBTlRFRCcsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlci5hcHByb3ZlQ2xpUmVxdWVzdCcsXG4gICAgICAgIGRldGFpbHM6IGBDTEkgYXBwcm92YWwgZ3JhbnRlZCBmb3IgJHtyZWNvcmQudG9vbE5hbWV9IChzY29wZTogJHtzY29wZX0pYCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgcmVxdWVzdElkLCB0b29sTmFtZTogcmVjb3JkLnRvb2xOYW1lLCBzY29wZSwgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgQ0xJIHRvb2wgY2FsbCBoYXMgYSB2YWxpZCBhcHByb3ZhbC5cbiAgICovXG4gIGNoZWNrQ2xpQXBwcm92YWwodG9vbE5hbWU6IHN0cmluZywgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IENsaUFwcHJvdmFsUmVjb3JkIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLnNlc3Npb24uY2hlY2tDbGlBcHByb3ZhbCh0b29sTmFtZSwgdG9vbElucHV0KTtcblxuICAgIGlmIChyZWNvcmQpIHtcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ0NMSV9BUFBST1ZBTF9DT05TVU1FRCcsXG4gICAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlci5jaGVja0NsaUFwcHJvdmFsJyxcbiAgICAgICAgZGV0YWlsczogYENMSSBhcHByb3ZhbCBjb25zdW1lZCBmb3IgJHt0b29sTmFtZX0gKHNjb3BlOiAke3JlY29yZC5zY29wZX0pYCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgcmVxdWVzdElkOiByZWNvcmQucmVxdWVzdElkLCB0b29sTmFtZSwgc2NvcGU6IHJlY29yZC5zY29wZSwgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgcGVuZGluZyBDTEkgYXBwcm92YWwgcmVxdWVzdHMuXG4gICAqL1xuICBnZXRQZW5kaW5nQ2xpQXBwcm92YWxzKCk6IENsaUFwcHJvdmFsUmVjb3JkW10ge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0UGVuZGluZ0NsaUFwcHJvdmFscygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBlcm1pc3Npb24gZmxhZ3MgZm9yIGFuIGVuZHBvaW50LlxuICAgKlxuICAgKiBAcGFyYW0gZW5kcG9pbnQgLSBUaGUgQ1JVRCBlbmRwb2ludCB0byBnZXQgcGVybWlzc2lvbnMgZm9yXG4gICAqIEByZXR1cm5zIFRoZSBwZXJtaXNzaW9uIGZsYWdzIGZvciB0aGUgZW5kcG9pbnRcbiAgICovXG4gIHN0YXRpYyBnZXRQZXJtaXNzaW9ucyhlbmRwb2ludDogQ1JVREVuZHBvaW50KTogRW5kcG9pbnRQZXJtaXNzaW9ucyB7XG4gICAgcmV0dXJuIEdhdGVrZWVwZXIuRU5EUE9JTlRfUEVSTUlTU0lPTlNbZW5kcG9pbnRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyB2YWxpZGF0aW9uIG1ldGhvZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIFBlcm1pc3Npb25HdWFyZC5cbiAgICogVmFsaWRhdGVzIHRoYXQgYW4gb3BlcmF0aW9uIGlzIGJlaW5nIGNhbGxlZCB2aWEgdGhlIGNvcnJlY3QgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIGJlaW5nIGNhbGxlZFxuICAgKiBAcGFyYW0gY2FsbGVkRW5kcG9pbnQgLSBUaGUgZW5kcG9pbnQgaXQgd2FzIGNhbGxlZCB0aHJvdWdoXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgb3BlcmF0aW9uIHVua25vd24gb3IgZW5kcG9pbnQgbWlzbWF0Y2hcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGluc3RhbmNlIG1ldGhvZCB2YWxpZGF0ZVJvdXRlKCkgb3IgZW5mb3JjZSgpIGluc3RlYWRcbiAgICovXG4gIHN0YXRpYyB2YWxpZGF0ZShvcGVyYXRpb246IHN0cmluZywgY2FsbGVkRW5kcG9pbnQ6IENSVURFbmRwb2ludCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlID0gZ2V0Um91dGUob3BlcmF0aW9uKTtcblxuICAgIGlmICghcm91dGUpIHtcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VQREFURV9TRUNVUklUWV9WSU9MQVRJT04nLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ0dhdGVrZWVwZXIudmFsaWRhdGUnLFxuICAgICAgICBkZXRhaWxzOiBgVW5rbm93biBvcGVyYXRpb246IFwiJHtvcGVyYXRpb259XCJgLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogeyBvcGVyYXRpb24sIGNhbGxlZEVuZHBvaW50IH0sXG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVua25vd24gb3BlcmF0aW9uOiBcIiR7b3BlcmF0aW9ufVwiLiBTZWUgdG9vbCBkZXNjcmlwdGlvbnMgZm9yIGF2YWlsYWJsZSBvcGVyYXRpb25zIG9uIGVhY2ggZW5kcG9pbnQuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocm91dGUuZW5kcG9pbnQgIT09IGNhbGxlZEVuZHBvaW50KSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVUERBVEVfU0VDVVJJVFlfVklPTEFUSU9OJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlci52YWxpZGF0ZScsXG4gICAgICAgIGRldGFpbHM6IGBTZWN1cml0eSB2aW9sYXRpb246IE9wZXJhdGlvbiBcIiR7b3BlcmF0aW9ufVwiIGNhbGxlZCB2aWEgd3JvbmcgZW5kcG9pbnRgLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBleHBlY3RlZEVuZHBvaW50OiByb3V0ZS5lbmRwb2ludCxcbiAgICAgICAgICBhY3R1YWxFbmRwb2ludDogY2FsbGVkRW5kcG9pbnQsXG4gICAgICAgICAgcGVybWlzc2lvblJlYXNvbjogR2F0ZWtlZXBlci5nZXRQZXJtaXNzaW9uUmVhc29uU3RhdGljKHJvdXRlLmVuZHBvaW50KSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU2VjdXJpdHkgdmlvbGF0aW9uOiBPcGVyYXRpb24gXCIke29wZXJhdGlvbn1cIiBtdXN0IGJlIGNhbGxlZCB2aWEgbWNwX2FxbF8ke3JvdXRlLmVuZHBvaW50LnRvTG93ZXJDYXNlKCl9IGVuZHBvaW50LCBgICtcbiAgICAgICAgICBgbm90IG1jcF9hcWxfJHtjYWxsZWRFbmRwb2ludC50b0xvd2VyQ2FzZSgpfS4gYCArXG4gICAgICAgICAgYFRoaXMgb3BlcmF0aW9uIGlzIGNsYXNzaWZpZWQgYXMgJHtyb3V0ZS5lbmRwb2ludH0gZHVlIHRvIGl0cyAke0dhdGVrZWVwZXIuZ2V0UGVybWlzc2lvblJlYXNvblN0YXRpYyhyb3V0ZS5lbmRwb2ludCl9LmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBwZXJtaXNzaW9uIGxldmVsIGZvciBhbiBvcGVyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIG5hbWVcbiAgICogQHJldHVybnMgVGhlIGRlZmF1bHQgcGVybWlzc2lvbiBsZXZlbFxuICAgKi9cbiAgZ2V0RGVmYXVsdFBlcm1pc3Npb25MZXZlbChvcGVyYXRpb246IHN0cmluZyk6IFBlcm1pc3Npb25MZXZlbCB7XG4gICAgcmV0dXJuIGdldERlZmF1bHRQZXJtaXNzaW9uTGV2ZWwob3BlcmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB0aGUgcGVybWlzc2lvbiBjbGFzc2lmaWNhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgZ2V0UGVybWlzc2lvblJlYXNvbihlbmRwb2ludDogQ1JVREVuZHBvaW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2F0ZWtlZXBlci5nZXRQZXJtaXNzaW9uUmVhc29uU3RhdGljKGVuZHBvaW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgdmVyc2lvbiBvZiBnZXRQZXJtaXNzaW9uUmVhc29uIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UGVybWlzc2lvblJlYXNvblN0YXRpYyhlbmRwb2ludDogQ1JVREVuZHBvaW50KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGVuZHBvaW50KSB7XG4gICAgICBjYXNlICdDUkVBVEUnOlxuICAgICAgICByZXR1cm4gJ2FkZGl0aXZlLCBub24tZGVzdHJ1Y3RpdmUgbmF0dXJlJztcbiAgICAgIGNhc2UgJ1JFQUQnOlxuICAgICAgICByZXR1cm4gJ3JlYWQtb25seSwgc2FmZSBuYXR1cmUnO1xuICAgICAgY2FzZSAnVVBEQVRFJzpcbiAgICAgICAgcmV0dXJuICdkYXRhIG1vZGlmaWNhdGlvbiBjYXBhYmlsaXRpZXMnO1xuICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgcmV0dXJuICdkZXN0cnVjdGl2ZSBwb3RlbnRpYWwnO1xuICAgICAgY2FzZSAnRVhFQ1VURSc6XG4gICAgICAgIHJldHVybiAncnVudGltZSBleGVjdXRpb24gbGlmZWN5Y2xlIChzdGF0ZWZ1bCwgbm9uLWlkZW1wb3RlbnQpJztcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLy8gRXhoYXVzdGl2ZSBjaGVjayAtIFR5cGVTY3JpcHQgd2lsbCBlcnJvciBpZiBhIGNhc2UgaXMgbWlzc2luZ1xuICAgICAgICBjb25zdCBfZXhoYXVzdGl2ZTogbmV2ZXIgPSBlbmRwb2ludDtcbiAgICAgICAgcmV0dXJuIF9leGhhdXN0aXZlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYW4gYXVkaXQgZXZlbnQgZm9yIGEgR2F0ZWtlZXBlciBkZWNpc2lvbi5cbiAgICovXG4gIHByaXZhdGUgbG9nQXVkaXRFdmVudChcbiAgICBvcGVyYXRpb246IHN0cmluZyxcbiAgICBlbmRwb2ludDogQ1JVREVuZHBvaW50LFxuICAgIGRlY2lzaW9uOiBHYXRla2VlcGVyRGVjaXNpb24sXG4gICAgZWxlbWVudFR5cGU/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVBdWRpdExvZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhdWRpdEVudHJ5OiBHYXRla2VlcGVyQXVkaXRFbnRyeSA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkLFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBlbGVtZW50VHlwZSxcbiAgICAgIGRlY2lzaW9uLFxuICAgICAgY2xpZW50SW5mbzogdGhpcy5zZXNzaW9uLmNsaWVudEluZm8sXG4gICAgfTtcblxuICAgIC8vIE9ubHkgbG9nIHNlY3VyaXR5IGV2ZW50cyBmb3IgZGVuaWVkIGRlY2lzaW9ucyDigJQgYWxsb3dlZCBvcHMgYXJlIG5vcm1hbCB0cmFmZmljXG4gICAgaWYgKCFkZWNpc2lvbi5hbGxvd2VkKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVUERBVEVfU0VDVVJJVFlfVklPTEFUSU9OJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICBzb3VyY2U6ICdHYXRla2VlcGVyLmVuZm9yY2UnLFxuICAgICAgICBkZXRhaWxzOiBgR2F0ZWtlZXBlciBkZWNpc2lvbjogREVOSUVEIC0gJHtkZWNpc2lvbi5yZWFzb259YCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IGF1ZGl0RW50cnksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmUtZXhwb3J0IHR5cGVzIGFuZCB1dGlsaXRpZXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBQZXJtaXNzaW9uTGV2ZWwsIEdhdGVrZWVwZXJFcnJvckNvZGUgfSBmcm9tICcuL0dhdGVrZWVwZXJUeXBlcy5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEdhdGVrZWVwZXJEZWNpc2lvbixcbiAgRW5kcG9pbnRQZXJtaXNzaW9ucyxcbiAgRWxlbWVudEdhdGVrZWVwZXJQb2xpY3ksXG4gIENvbmZpcm1hdGlvblJlY29yZCxcbiAgQ2xpQXBwcm92YWxSZWNvcmQsXG4gIENsaUFwcHJvdmFsU2NvcGUsXG4gIENsaUFwcHJvdmFsUG9saWN5LFxuICBSaXNrQXNzZXNzbWVudCxcbn0gZnJvbSAnLi9HYXRla2VlcGVyVHlwZXMuanMnO1xuZXhwb3J0IHR5cGUgeyBDbGllbnRJbmZvIH0gZnJvbSAnLi9HYXRla2VlcGVyU2Vzc2lvbi5qcyc7XG4iXX0=
|
|
@@ -123,6 +123,10 @@ export interface ElementGatekeeperPolicy {
|
|
|
123
123
|
description: string;
|
|
124
124
|
/** Patterns to deny for external tool operations */
|
|
125
125
|
denyPatterns?: string[];
|
|
126
|
+
/** Patterns requiring human approval before execution (Issue #1660).
|
|
127
|
+
* Evaluated after denyPatterns, before allowPatterns.
|
|
128
|
+
* Deny always takes precedence over confirm. */
|
|
129
|
+
confirmPatterns?: string[];
|
|
126
130
|
/** When defined, only tools matching at least one pattern are permitted (allowlist mode).
|
|
127
131
|
* Deny always takes precedence over allow. Across elements, allows are unioned. */
|
|
128
132
|
allowPatterns?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GatekeeperTypes.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/GatekeeperTypes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GatekeeperTypes.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/GatekeeperTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,4 +64,4 @@ export var GatekeeperErrorCode;
|
|
|
64
64
|
/** Session is invalid or expired */
|
|
65
65
|
GatekeeperErrorCode["SESSION_INVALID"] = "SESSION_INVALID";
|
|
66
66
|
})(GatekeeperErrorCode || (GatekeeperErrorCode = {}));
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZWtlZXBlclR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvR2F0ZWtlZXBlclR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUlIOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLGVBU1g7QUFURCxXQUFZLGVBQWU7SUFDekIsNkNBQTZDO0lBQzdDLGdEQUE2QixDQUFBO0lBQzdCLHNEQUFzRDtJQUN0RCw0REFBeUMsQ0FBQTtJQUN6QyxxREFBcUQ7SUFDckQsc0RBQW1DLENBQUE7SUFDbkMsd0NBQXdDO0lBQ3hDLGdDQUFhLENBQUE7QUFDZixDQUFDLEVBVFcsZUFBZSxLQUFmLGVBQWUsUUFTMUI7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxzQkFTWDtBQVRELFdBQVksc0JBQXNCO0lBQ2hDLHVEQUF1RDtJQUN2RCw2Q0FBbUIsQ0FBQTtJQUNuQixnREFBZ0Q7SUFDaEQsK0NBQXFCLENBQUE7SUFDckIsZ0NBQWdDO0lBQ2hDLCtDQUFxQixDQUFBO0lBQ3JCLHlDQUF5QztJQUN6Qyw2Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQVNqQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLG1CQXVCWDtBQXZCRCxXQUFZLG1CQUFtQjtJQUM3QiwrQ0FBK0M7SUFDL0MsOERBQXVDLENBQUE7SUFDdkMsK0NBQStDO0lBQy9DLDhEQUF1QyxDQUFBO0lBQ3ZDLG9EQUFvRDtJQUNwRCw0RUFBcUQsQ0FBQTtJQUNyRCxrREFBa0Q7SUFDbEQsOERBQXVDLENBQUE7SUFDdkMseUNBQXlDO0lBQ3pDLDhEQUF1QyxDQUFBO0lBQ3ZDLG1EQUFtRDtJQUNuRCxzRUFBK0MsQ0FBQTtJQUMvQyxxREFBcUQ7SUFDckQsc0VBQStDLENBQUE7SUFDL0Msc0NBQXNDO0lBQ3RDLGtFQUEyQyxDQUFBO0lBQzNDLGtEQUFrRDtJQUNsRCxvRUFBNkMsQ0FBQTtJQUM3QyxzREFBc0Q7SUFDdEQsa0VBQTJDLENBQUE7SUFDM0Msb0NBQW9DO0lBQ3BDLDBEQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUF2QlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQXVCOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdhdGVrZWVwZXIgVHlwZSBEZWZpbml0aW9uc1xuICpcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBHYXRla2VlcGVyIFBvbGljeSBFbmdpbmUuXG4gKiBUaGVzZSB0eXBlcyBkZWZpbmUgdGhlIHBlcm1pc3Npb24gc3lzdGVtLCBwb2xpY3kgc3RydWN0dXJlcyxcbiAqIGFuZCBlbmZvcmNlbWVudCByZXN1bHRzIGZvciBNQ1AtQVFMIGFjY2VzcyBjb250cm9sLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ1JVREVuZHBvaW50IH0gZnJvbSAnLi9PcGVyYXRpb25Sb3V0ZXIuanMnO1xuXG4vKipcbiAqIFBlcm1pc3Npb24gbGV2ZWxzIGZvciBvcGVyYXRpb24gYWNjZXNzIGNvbnRyb2wuXG4gKiBUaGVzZSBkZWZpbmUgaG93IG9wZXJhdGlvbnMgYXJlIGFwcHJvdmVkIG9yIGRlbmllZC5cbiAqL1xuZXhwb3J0IGVudW0gUGVybWlzc2lvbkxldmVsIHtcbiAgLyoqIEFsd2F5cyBhbGxvd2VkLCBubyBjb25maXJtYXRpb24gbmVlZGVkICovXG4gIEFVVE9fQVBQUk9WRSA9ICdBVVRPX0FQUFJPVkUnLFxuICAvKiogQ29uZmlybSBUSElTIGluc3RhbmNlIG9ubHksIGFzayBhZ2FpbiBuZXh0IHRpbWUgKi9cbiAgQ09ORklSTV9TSU5HTEVfVVNFID0gJ0NPTkZJUk1fU0lOR0xFX1VTRScsXG4gIC8qKiBDb25maXJtIG9uY2UsIGF1dG8tYXBwcm92ZSBmb3IgcmVzdCBvZiBzZXNzaW9uICovXG4gIENPTkZJUk1fU0VTU0lPTiA9ICdDT05GSVJNX1NFU1NJT04nLFxuICAvKiogTmV2ZXIgYWxsb3dlZCAoYmxvY2tlZCBieSBwb2xpY3kpICovXG4gIERFTlkgPSAnREVOWScsXG59XG5cbi8qKlxuICogVmVyaWZpY2F0aW9uIHN0cmljdG5lc3MgbGV2ZWxzLlxuICogRGVmaW5lIGhvdyBhZ2dyZXNzaXZlbHkgdGhlIEdhdGVrZWVwZXIgY2hhbGxlbmdlcyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgZW51bSBWZXJpZmljYXRpb25TdHJpY3RuZXNzIHtcbiAgLyoqIE9ubHkgREFOR0VSX1pPTkUgb3BlcmF0aW9ucyByZXF1aXJlIHZlcmlmaWNhdGlvbiAqL1xuICBNSU5JTUFMID0gJ01JTklNQUwnLFxuICAvKiogREFOR0VSX1pPTkUgKyBwb2xpY3kgdmlvbGF0aW9ucyAoZGVmYXVsdCkgKi9cbiAgU1RBTkRBUkQgPSAnU1RBTkRBUkQnLFxuICAvKiogQWJvdmUgKyBERUxFVEUgb3BlcmF0aW9ucyAqL1xuICBFTEVWQVRFRCA9ICdFTEVWQVRFRCcsXG4gIC8qKiBBbGwgbXV0YXRpb25zIHJlcXVpcmUgdmVyaWZpY2F0aW9uICovXG4gIE1BWElNVU0gPSAnTUFYSU1VTScsXG59XG5cbi8qKlxuICogR2F0ZWtlZXBlciBlcnJvciBjb2RlcyBmb3IgcmljaCBMTE0gZXJyb3IgcmVzcG9uc2VzLlxuICogRWFjaCBjb2RlIG1hcHMgdG8gYSBzcGVjaWZpYyBmYWlsdXJlIHNjZW5hcmlvIHdpdGggYWN0aW9uYWJsZSBndWlkYW5jZS5cbiAqL1xuZXhwb3J0IGVudW0gR2F0ZWtlZXBlckVycm9yQ29kZSB7XG4gIC8qKiBPcGVyYXRpb24gbm90IGZvdW5kIGluIHRoZSByb3V0aW5nIHRhYmxlICovXG4gIFVOS05PV05fT1BFUkFUSU9OID0gJ1VOS05PV05fT1BFUkFUSU9OJyxcbiAgLyoqIE9wZXJhdGlvbiBjYWxsZWQgdmlhIHdyb25nIENSVUQgZW5kcG9pbnQgKi9cbiAgRU5EUE9JTlRfTUlTTUFUQ0ggPSAnRU5EUE9JTlRfTUlTTUFUQ0gnLFxuICAvKiogQWN0aXZlIGVsZW1lbnQncyBwb2xpY3kgYmxvY2tzIHRoaXMgb3BlcmF0aW9uICovXG4gIEVMRU1FTlRfUE9MSUNZX1ZJT0xBVElPTiA9ICdFTEVNRU5UX1BPTElDWV9WSU9MQVRJT04nLFxuICAvKiogT3BlcmF0aW9uIG5vdCBhbGxvd2VkIGZvciB0aGlzIGVsZW1lbnQgdHlwZSAqL1xuICBTQ09QRV9SRVNUUklDVElPTiA9ICdTQ09QRV9SRVNUUklDVElPTicsXG4gIC8qKiBEZW5pZWQgYnkgZGVmYXVsdCBvcGVyYXRpb24gcG9saWN5ICovXG4gIFBFUk1JU1NJT05fREVOSUVEID0gJ1BFUk1JU1NJT05fREVOSUVEJyxcbiAgLyoqIFVzZXIgY29uZmlybWF0aW9uIHJlcXVpcmVkIGJlZm9yZSBwcm9jZWVkaW5nICovXG4gIENPTkZJUk1BVElPTl9SRVFVSVJFRCA9ICdDT05GSVJNQVRJT05fUkVRVUlSRUQnLFxuICAvKiogSGlnaC1yaXNrIG9wZXJhdGlvbiByZXF1aXJlcyB2ZXJpZmljYXRpb24gY29kZSAqL1xuICBWRVJJRklDQVRJT05fUkVRVUlSRUQgPSAnVkVSSUZJQ0FUSU9OX1JFUVVJUkVEJyxcbiAgLyoqIFdyb25nIHZlcmlmaWNhdGlvbiBjb2RlIGVudGVyZWQgKi9cbiAgVkVSSUZJQ0FUSU9OX0ZBSUxFRCA9ICdWRVJJRklDQVRJT05fRkFJTEVEJyxcbiAgLyoqIFVzZXIgZGlkIG5vdCByZXNwb25kIHRvIHZlcmlmaWNhdGlvbiBwcm9tcHQgKi9cbiAgVkVSSUZJQ0FUSU9OX1RJTUVPVVQgPSAnVkVSSUZJQ0FUSU9OX1RJTUVPVVQnLFxuICAvKiogRGVzdHJ1Y3RpdmUgcGF0dGVybiBkZXRlY3RlZCwgb3BlcmF0aW9uIGJsb2NrZWQgKi9cbiAgREFOR0VSX1pPTkVfQkxPQ0tFRCA9ICdEQU5HRVJfWk9ORV9CTE9DS0VEJyxcbiAgLyoqIFNlc3Npb24gaXMgaW52YWxpZCBvciBleHBpcmVkICovXG4gIFNFU1NJT05fSU5WQUxJRCA9ICdTRVNTSU9OX0lOVkFMSUQnLFxufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhIEdhdGVrZWVwZXIgcG9saWN5IGNoZWNrLlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYW4gb3BlcmF0aW9uIGlzIGFsbG93ZWQgYW5kIHdoYXQgYWN0aW9ucyBhcmUgbmVlZGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGVrZWVwZXJEZWNpc2lvbiB7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcGVyYXRpb24gaXMgYWxsb3dlZCB0byBwcm9jZWVkICovXG4gIGFsbG93ZWQ6IGJvb2xlYW47XG4gIC8qKiBQZXJtaXNzaW9uIGxldmVsIGRldGVybWluZWQgZm9yIHRoaXMgb3BlcmF0aW9uICovXG4gIHBlcm1pc3Npb25MZXZlbDogUGVybWlzc2lvbkxldmVsO1xuICAvKiogRXJyb3IgY29kZSBpZiB0aGUgb3BlcmF0aW9uIGlzIGRlbmllZCAqL1xuICBlcnJvckNvZGU/OiBHYXRla2VlcGVyRXJyb3JDb2RlO1xuICAvKiogSHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB0aGUgZGVjaXNpb24gKi9cbiAgcmVhc29uOiBzdHJpbmc7XG4gIC8qKiBBY3Rpb25hYmxlIHN1Z2dlc3Rpb24gZm9yIHRoZSBMTE0gb24gd2hhdCB0byBkbyBuZXh0ICovXG4gIHN1Z2dlc3Rpb24/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIGEgY29uZmlybWF0aW9uIGlzIHBlbmRpbmcgZnJvbSB0aGUgdXNlciAqL1xuICBjb25maXJtYXRpb25QZW5kaW5nPzogYm9vbGVhbjtcbiAgLyoqIFRoZSBwb2xpY3kgc291cmNlIHRoYXQgZGV0ZXJtaW5lZCB0aGlzIGRlY2lzaW9uICovXG4gIHBvbGljeVNvdXJjZT86ICdvcGVyYXRpb25fZGVmYXVsdCcgfCAnZWxlbWVudF9wb2xpY3knIHwgJ3NhZmV0eV90aWVyJyB8ICdzZXNzaW9uX2NvbmZpcm1hdGlvbic7XG59XG5cbi8qKlxuICogQ29uZmlybWF0aW9uIHJlY29yZCBmb3Igc2Vzc2lvbi1zY29wZWQgYXBwcm92YWxzLlxuICogVHJhY2tzIHdoaWNoIG9wZXJhdGlvbnMgaGF2ZSBiZWVuIGNvbmZpcm1lZCBmb3IgdGhpcyBzZXNzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1hdGlvblJlY29yZCB7XG4gIC8qKiBUaGUgb3BlcmF0aW9uIHRoYXQgd2FzIGNvbmZpcm1lZCAqL1xuICBvcGVyYXRpb246IHN0cmluZztcbiAgLyoqIFdoZW4gdGhlIGNvbmZpcm1hdGlvbiB3YXMgZ3JhbnRlZCAqL1xuICBjb25maXJtZWRBdDogc3RyaW5nO1xuICAvKiogVGhlIHBlcm1pc3Npb24gbGV2ZWwgdGhhdCB3YXMgY29uZmlybWVkICovXG4gIHBlcm1pc3Npb25MZXZlbDogUGVybWlzc2lvbkxldmVsLkNPTkZJUk1fU0VTU0lPTiB8IFBlcm1pc3Npb25MZXZlbC5DT05GSVJNX1NJTkdMRV9VU0U7XG4gIC8qKiBOdW1iZXIgb2YgdGltZXMgdGhpcyBjb25maXJtYXRpb24gaGFzIGJlZW4gdXNlZCAqL1xuICB1c2VDb3VudDogbnVtYmVyO1xuICAvKiogT3B0aW9uYWwgZWxlbWVudCB0eXBlIHNjb3BlIGZvciB0aGUgY29uZmlybWF0aW9uICovXG4gIGVsZW1lbnRUeXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVsZW1lbnQtbGV2ZWwgR2F0ZWtlZXBlciBwb2xpY3kuXG4gKiBBbGxvd3MgQU5ZIERvbGxob3VzZU1DUCBlbGVtZW50IHRvIGRlZmluZSBhY2Nlc3MgY29udHJvbCBwb2xpY2llcy5cbiAqIFRoZXNlIGFyZSBzdG9yZWQgaW4gdGhlIGVsZW1lbnQncyBtZXRhZGF0YSBZQU1MIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50R2F0ZWtlZXBlclBvbGljeSB7XG4gIC8qKiBPcGVyYXRpb25zIGF1dG8tYXBwcm92ZWQgd2hlbiB0aGlzIGVsZW1lbnQgaXMgYWN0aXZlICovXG4gIGFsbG93Pzogc3RyaW5nW107XG4gIC8qKiBPcGVyYXRpb25zIHJlcXVpcmluZyBjb25maXJtYXRpb24gd2hlbiB0aGlzIGVsZW1lbnQgaXMgYWN0aXZlICovXG4gIGNvbmZpcm0/OiBzdHJpbmdbXTtcbiAgLyoqIE9wZXJhdGlvbnMgYmxvY2tlZCB3aGVuIHRoaXMgZWxlbWVudCBpcyBhY3RpdmUgKi9cbiAgZGVueT86IHN0cmluZ1tdO1xuICAvKiogUmVzdHJpY3Qgb3BlcmF0aW9ucyB0byBzcGVjaWZpYyBlbGVtZW50IHR5cGVzICovXG4gIHNjb3BlUmVzdHJpY3Rpb25zPzoge1xuICAgIC8qKiBBbGxvdyBvcGVyYXRpb25zIG9ubHkgb24gdGhlc2UgZWxlbWVudCB0eXBlcyAqL1xuICAgIGFsbG93ZWRUeXBlcz86IHN0cmluZ1tdO1xuICAgIC8qKiBCbG9jayBvcGVyYXRpb25zIG9uIHRoZXNlIGVsZW1lbnQgdHlwZXMgKi9cbiAgICBibG9ja2VkVHlwZXM/OiBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIEFkdmlzb3J5IHJlc3RyaWN0aW9ucyBmb3IgZXh0ZXJuYWwgdG9vbHMgKENMSSBwZXJtaXNzaW9uIGRlbGVnYXRpb24pICovXG4gIGV4dGVybmFsUmVzdHJpY3Rpb25zPzoge1xuICAgIC8qKiBEZXNjcmlwdGlvbiBvZiBleHRlcm5hbCByZXN0cmljdGlvbnMgKi9cbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIC8qKiBQYXR0ZXJucyB0byBkZW55IGZvciBleHRlcm5hbCB0b29sIG9wZXJhdGlvbnMgKi9cbiAgICBkZW55UGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgICAvKiogV2hlbiBkZWZpbmVkLCBvbmx5IHRvb2xzIG1hdGNoaW5nIGF0IGxlYXN0IG9uZSBwYXR0ZXJuIGFyZSBwZXJtaXR0ZWQgKGFsbG93bGlzdCBtb2RlKS5cbiAgICAgKiAgRGVueSBhbHdheXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGFsbG93LiBBY3Jvc3MgZWxlbWVudHMsIGFsbG93cyBhcmUgdW5pb25lZC4gKi9cbiAgICBhbGxvd1BhdHRlcm5zPzogc3RyaW5nW107XG4gICAgLyoqIEFwcHJvdmFsIHBvbGljeSBmb3IgQ0xJIHRvb2wgb3BlcmF0aW9ucyAoSXNzdWUgIzYyNSBQaGFzZSAzKSAqL1xuICAgIGFwcHJvdmFsUG9saWN5PzogQ2xpQXBwcm92YWxQb2xpY3k7XG4gIH07XG59XG5cbi8vIOKUgOKUgCBDTEkgQXBwcm92YWwgVHlwZXMgKElzc3VlICM2MjUgUGhhc2UgMykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogU2NvcGUgZm9yIENMSSBhcHByb3ZhbCByZWNvcmRzLlxuICogLSAnc2luZ2xlJzogY29uc3VtZWQgYWZ0ZXIgb25lIHVzZVxuICogLSAndG9vbF9zZXNzaW9uJzogYWxsIHVzZXMgb2YgdGhhdCB0b29sIGZvciB0aGUgc2Vzc2lvblxuICovXG5leHBvcnQgdHlwZSBDbGlBcHByb3ZhbFNjb3BlID0gJ3NpbmdsZScgfCAndG9vbF9zZXNzaW9uJztcblxuLyoqXG4gKiBBcHByb3ZhbCBwb2xpY3kgZm9yIENMSSB0b29sIG9wZXJhdGlvbnMuXG4gKiBDb25maWd1cmVzIHdoaWNoIHJpc2sgbGV2ZWxzIG5lZWQgaHVtYW4gYXBwcm92YWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpQXBwcm92YWxQb2xpY3kge1xuICAvKiogUmlzayBsZXZlbHMgdGhhdCByZXF1aXJlIGh1bWFuIGFwcHJvdmFsIGJlZm9yZSBwcm9jZWVkaW5nICovXG4gIHJlcXVpcmVBcHByb3ZhbD86ICgnbW9kZXJhdGUnIHwgJ2Rhbmdlcm91cycpW107XG4gIC8qKiBEZWZhdWx0IHNjb3BlIGZvciBhcHByb3ZhbHMgKGRlZmF1bHQ6ICdzaW5nbGUnKSAqL1xuICBkZWZhdWx0U2NvcGU/OiBDbGlBcHByb3ZhbFNjb3BlO1xuICAvKiogVGltZS10by1saXZlIGZvciBwZW5kaW5nIGFwcHJvdmFscyBpbiBzZWNvbmRzICgzMC0zNjAwLCBkZWZhdWx0OiAzMDApICovXG4gIHR0bFNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVjb3JkIG9mIGEgQ0xJIHRvb2wgYXBwcm92YWwgcmVxdWVzdC5cbiAqIENyZWF0ZWQgd2hlbiBwZXJtaXNzaW9uX3Byb21wdCBlbmNvdW50ZXJzIGEgdG9vbCB0aGF0IHJlcXVpcmVzIGFwcHJvdmFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaUFwcHJvdmFsUmVjb3JkIHtcbiAgLyoqIFVuaXF1ZSByZXF1ZXN0IGlkZW50aWZpZXIgKGZvcm1hdDogY2xpLTxVVUlEdjQ+KSAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgLyoqIFRoZSB0b29sIHRoYXQgd2FzIHJlcXVlc3RlZCAqL1xuICB0b29sTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIHRvb2wgaW5wdXQgcGFyYW1ldGVycyAqL1xuICB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogUmlzayBsZXZlbCBmcm9tIGNsYXNzaWZpY2F0aW9uICovXG4gIHJpc2tMZXZlbDogc3RyaW5nO1xuICAvKiogTnVtZXJpYyByaXNrIHNjb3JlICgwLTEwMCkgKi9cbiAgcmlza1Njb3JlOiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcGVyYXRpb24gaXMgaXJyZXZlcnNpYmxlICovXG4gIGlycmV2ZXJzaWJsZTogYm9vbGVhbjtcbiAgLyoqIFdoZW4gdGhlIHJlcXVlc3Qgd2FzIGNyZWF0ZWQgKi9cbiAgcmVxdWVzdGVkQXQ6IHN0cmluZztcbiAgLyoqIFdoZW4gdGhlIHJlcXVlc3Qgd2FzIGFwcHJvdmVkICh1bmRlZmluZWQgaWYgcGVuZGluZykgKi9cbiAgYXBwcm92ZWRBdD86IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhpcyBhcHByb3ZhbCBoYXMgYmVlbiBjb25zdW1lZCAqL1xuICBjb25zdW1lZDogYm9vbGVhbjtcbiAgLyoqIEFwcHJvdmFsIHNjb3BlICovXG4gIHNjb3BlOiBDbGlBcHByb3ZhbFNjb3BlO1xuICAvKiogUmVhc29uIHRoZSB0b29sIHdhcyBkZW5pZWQgKHBlbmRpbmcgYXBwcm92YWwpICovXG4gIGRlbnlSZWFzb246IHN0cmluZztcbiAgLyoqIFdoaWNoIHBvbGljeSBzb3VyY2UgdHJpZ2dlcmVkIHRoZSBhcHByb3ZhbCByZXF1aXJlbWVudCAqL1xuICBwb2xpY3lTb3VyY2U/OiBzdHJpbmc7XG4gIC8qKiBQZXItcmVjb3JkIFRUTCBpbiBtaWxsaXNlY29uZHMgKG92ZXJyaWRlcyBkZWZhdWx0IDMwMHMpICovXG4gIHR0bE1zPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJpc2sgYXNzZXNzbWVudCBmb3IgYSBDTEkgdG9vbCBjYWxsLlxuICogUHJvdmlkZXMgYSBudW1lcmljIHNjb3JlIGFuZCBpcnJldmVyc2liaWxpdHkgaW5kaWNhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJpc2tBc3Nlc3NtZW50IHtcbiAgLyoqIE51bWVyaWMgcmlzayBzY29yZSAoMC0xMDApICovXG4gIHNjb3JlOiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcGVyYXRpb24gaXMgaXJyZXZlcnNpYmxlICovXG4gIGlycmV2ZXJzaWJsZTogYm9vbGVhbjtcbiAgLyoqIEZhY3RvcnMgdGhhdCBjb250cmlidXRlZCB0byB0aGUgcmlzayBzY29yZSAqL1xuICBmYWN0b3JzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBFbmRwb2ludCBwZXJtaXNzaW9ucyBmb3IgQ1JVRCBlbmRwb2ludHMuXG4gKiBEZWZpbmVzIHRoZSBzZWN1cml0eSBjaGFyYWN0ZXJpc3RpY3Mgb2YgZWFjaCBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludFBlcm1pc3Npb25zIHtcbiAgLyoqIFdoZXRoZXIgdGhlIGVuZHBvaW50IG9ubHkgcmVhZHMgZGF0YSAqL1xuICByZWFkT25seTogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGVuZHBvaW50IGNhbiBwZXJmb3JtIGRlc3RydWN0aXZlIG9wZXJhdGlvbnMgKi9cbiAgZGVzdHJ1Y3RpdmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQXVkaXQgbG9nIGVudHJ5IGZvciBHYXRla2VlcGVyIGRlY2lzaW9ucy5cbiAqIExvZ2dlZCB0byBTZWN1cml0eU1vbml0b3IgZm9yIHNlY3VyaXR5IGFuYWx5c2lzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGVrZWVwZXJBdWRpdEVudHJ5IHtcbiAgLyoqIFRpbWVzdGFtcCBvZiB0aGUgZGVjaXNpb24gKi9cbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIC8qKiBTZXNzaW9uIElEIHRoYXQgbWFkZSB0aGUgcmVxdWVzdCAqL1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgLyoqIE9wZXJhdGlvbiB0aGF0IHdhcyBjaGVja2VkICovXG4gIG9wZXJhdGlvbjogc3RyaW5nO1xuICAvKiogQ1JVRCBlbmRwb2ludCB1c2VkICovXG4gIGVuZHBvaW50OiBDUlVERW5kcG9pbnQ7XG4gIC8qKiBFbGVtZW50IHR5cGUgaWYgYXBwbGljYWJsZSAqL1xuICBlbGVtZW50VHlwZT86IHN0cmluZztcbiAgLyoqIFRoZSBkZWNpc2lvbiBtYWRlICovXG4gIGRlY2lzaW9uOiBHYXRla2VlcGVyRGVjaXNpb247XG4gIC8qKiBDbGllbnQgaW5mb3JtYXRpb24gaWYgYXZhaWxhYmxlICovXG4gIGNsaWVudEluZm8/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb24gcG9saWN5IG1hcHBpbmcgZW50cnkuXG4gKiBEZWZpbmVzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb24gbGV2ZWwgZm9yIGFuIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRpb25Qb2xpY3kge1xuICAvKiogRGVmYXVsdCBwZXJtaXNzaW9uIGxldmVsIGZvciB0aGlzIG9wZXJhdGlvbiAqL1xuICBkZWZhdWx0TGV2ZWw6IFBlcm1pc3Npb25MZXZlbDtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHdoeSB0aGlzIGxldmVsIGlzIGFzc2lnbmVkICovXG4gIHJhdGlvbmFsZTogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGlzIG9wZXJhdGlvbiBjYW4gYmUgZWxldmF0ZWQgYnkgYWN0aXZlIGVsZW1lbnRzICovXG4gIGNhbkJlRWxldmF0ZWQ/OiBib29sZWFuO1xufVxuIl19
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZWtlZXBlclR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvR2F0ZWtlZXBlclR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUlIOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLGVBU1g7QUFURCxXQUFZLGVBQWU7SUFDekIsNkNBQTZDO0lBQzdDLGdEQUE2QixDQUFBO0lBQzdCLHNEQUFzRDtJQUN0RCw0REFBeUMsQ0FBQTtJQUN6QyxxREFBcUQ7SUFDckQsc0RBQW1DLENBQUE7SUFDbkMsd0NBQXdDO0lBQ3hDLGdDQUFhLENBQUE7QUFDZixDQUFDLEVBVFcsZUFBZSxLQUFmLGVBQWUsUUFTMUI7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxzQkFTWDtBQVRELFdBQVksc0JBQXNCO0lBQ2hDLHVEQUF1RDtJQUN2RCw2Q0FBbUIsQ0FBQTtJQUNuQixnREFBZ0Q7SUFDaEQsK0NBQXFCLENBQUE7SUFDckIsZ0NBQWdDO0lBQ2hDLCtDQUFxQixDQUFBO0lBQ3JCLHlDQUF5QztJQUN6Qyw2Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQVNqQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLG1CQXVCWDtBQXZCRCxXQUFZLG1CQUFtQjtJQUM3QiwrQ0FBK0M7SUFDL0MsOERBQXVDLENBQUE7SUFDdkMsK0NBQStDO0lBQy9DLDhEQUF1QyxDQUFBO0lBQ3ZDLG9EQUFvRDtJQUNwRCw0RUFBcUQsQ0FBQTtJQUNyRCxrREFBa0Q7SUFDbEQsOERBQXVDLENBQUE7SUFDdkMseUNBQXlDO0lBQ3pDLDhEQUF1QyxDQUFBO0lBQ3ZDLG1EQUFtRDtJQUNuRCxzRUFBK0MsQ0FBQTtJQUMvQyxxREFBcUQ7SUFDckQsc0VBQStDLENBQUE7SUFDL0Msc0NBQXNDO0lBQ3RDLGtFQUEyQyxDQUFBO0lBQzNDLGtEQUFrRDtJQUNsRCxvRUFBNkMsQ0FBQTtJQUM3QyxzREFBc0Q7SUFDdEQsa0VBQTJDLENBQUE7SUFDM0Msb0NBQW9DO0lBQ3BDLDBEQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUF2QlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQXVCOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdhdGVrZWVwZXIgVHlwZSBEZWZpbml0aW9uc1xuICpcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBHYXRla2VlcGVyIFBvbGljeSBFbmdpbmUuXG4gKiBUaGVzZSB0eXBlcyBkZWZpbmUgdGhlIHBlcm1pc3Npb24gc3lzdGVtLCBwb2xpY3kgc3RydWN0dXJlcyxcbiAqIGFuZCBlbmZvcmNlbWVudCByZXN1bHRzIGZvciBNQ1AtQVFMIGFjY2VzcyBjb250cm9sLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ1JVREVuZHBvaW50IH0gZnJvbSAnLi9PcGVyYXRpb25Sb3V0ZXIuanMnO1xuXG4vKipcbiAqIFBlcm1pc3Npb24gbGV2ZWxzIGZvciBvcGVyYXRpb24gYWNjZXNzIGNvbnRyb2wuXG4gKiBUaGVzZSBkZWZpbmUgaG93IG9wZXJhdGlvbnMgYXJlIGFwcHJvdmVkIG9yIGRlbmllZC5cbiAqL1xuZXhwb3J0IGVudW0gUGVybWlzc2lvbkxldmVsIHtcbiAgLyoqIEFsd2F5cyBhbGxvd2VkLCBubyBjb25maXJtYXRpb24gbmVlZGVkICovXG4gIEFVVE9fQVBQUk9WRSA9ICdBVVRPX0FQUFJPVkUnLFxuICAvKiogQ29uZmlybSBUSElTIGluc3RhbmNlIG9ubHksIGFzayBhZ2FpbiBuZXh0IHRpbWUgKi9cbiAgQ09ORklSTV9TSU5HTEVfVVNFID0gJ0NPTkZJUk1fU0lOR0xFX1VTRScsXG4gIC8qKiBDb25maXJtIG9uY2UsIGF1dG8tYXBwcm92ZSBmb3IgcmVzdCBvZiBzZXNzaW9uICovXG4gIENPTkZJUk1fU0VTU0lPTiA9ICdDT05GSVJNX1NFU1NJT04nLFxuICAvKiogTmV2ZXIgYWxsb3dlZCAoYmxvY2tlZCBieSBwb2xpY3kpICovXG4gIERFTlkgPSAnREVOWScsXG59XG5cbi8qKlxuICogVmVyaWZpY2F0aW9uIHN0cmljdG5lc3MgbGV2ZWxzLlxuICogRGVmaW5lIGhvdyBhZ2dyZXNzaXZlbHkgdGhlIEdhdGVrZWVwZXIgY2hhbGxlbmdlcyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgZW51bSBWZXJpZmljYXRpb25TdHJpY3RuZXNzIHtcbiAgLyoqIE9ubHkgREFOR0VSX1pPTkUgb3BlcmF0aW9ucyByZXF1aXJlIHZlcmlmaWNhdGlvbiAqL1xuICBNSU5JTUFMID0gJ01JTklNQUwnLFxuICAvKiogREFOR0VSX1pPTkUgKyBwb2xpY3kgdmlvbGF0aW9ucyAoZGVmYXVsdCkgKi9cbiAgU1RBTkRBUkQgPSAnU1RBTkRBUkQnLFxuICAvKiogQWJvdmUgKyBERUxFVEUgb3BlcmF0aW9ucyAqL1xuICBFTEVWQVRFRCA9ICdFTEVWQVRFRCcsXG4gIC8qKiBBbGwgbXV0YXRpb25zIHJlcXVpcmUgdmVyaWZpY2F0aW9uICovXG4gIE1BWElNVU0gPSAnTUFYSU1VTScsXG59XG5cbi8qKlxuICogR2F0ZWtlZXBlciBlcnJvciBjb2RlcyBmb3IgcmljaCBMTE0gZXJyb3IgcmVzcG9uc2VzLlxuICogRWFjaCBjb2RlIG1hcHMgdG8gYSBzcGVjaWZpYyBmYWlsdXJlIHNjZW5hcmlvIHdpdGggYWN0aW9uYWJsZSBndWlkYW5jZS5cbiAqL1xuZXhwb3J0IGVudW0gR2F0ZWtlZXBlckVycm9yQ29kZSB7XG4gIC8qKiBPcGVyYXRpb24gbm90IGZvdW5kIGluIHRoZSByb3V0aW5nIHRhYmxlICovXG4gIFVOS05PV05fT1BFUkFUSU9OID0gJ1VOS05PV05fT1BFUkFUSU9OJyxcbiAgLyoqIE9wZXJhdGlvbiBjYWxsZWQgdmlhIHdyb25nIENSVUQgZW5kcG9pbnQgKi9cbiAgRU5EUE9JTlRfTUlTTUFUQ0ggPSAnRU5EUE9JTlRfTUlTTUFUQ0gnLFxuICAvKiogQWN0aXZlIGVsZW1lbnQncyBwb2xpY3kgYmxvY2tzIHRoaXMgb3BlcmF0aW9uICovXG4gIEVMRU1FTlRfUE9MSUNZX1ZJT0xBVElPTiA9ICdFTEVNRU5UX1BPTElDWV9WSU9MQVRJT04nLFxuICAvKiogT3BlcmF0aW9uIG5vdCBhbGxvd2VkIGZvciB0aGlzIGVsZW1lbnQgdHlwZSAqL1xuICBTQ09QRV9SRVNUUklDVElPTiA9ICdTQ09QRV9SRVNUUklDVElPTicsXG4gIC8qKiBEZW5pZWQgYnkgZGVmYXVsdCBvcGVyYXRpb24gcG9saWN5ICovXG4gIFBFUk1JU1NJT05fREVOSUVEID0gJ1BFUk1JU1NJT05fREVOSUVEJyxcbiAgLyoqIFVzZXIgY29uZmlybWF0aW9uIHJlcXVpcmVkIGJlZm9yZSBwcm9jZWVkaW5nICovXG4gIENPTkZJUk1BVElPTl9SRVFVSVJFRCA9ICdDT05GSVJNQVRJT05fUkVRVUlSRUQnLFxuICAvKiogSGlnaC1yaXNrIG9wZXJhdGlvbiByZXF1aXJlcyB2ZXJpZmljYXRpb24gY29kZSAqL1xuICBWRVJJRklDQVRJT05fUkVRVUlSRUQgPSAnVkVSSUZJQ0FUSU9OX1JFUVVJUkVEJyxcbiAgLyoqIFdyb25nIHZlcmlmaWNhdGlvbiBjb2RlIGVudGVyZWQgKi9cbiAgVkVSSUZJQ0FUSU9OX0ZBSUxFRCA9ICdWRVJJRklDQVRJT05fRkFJTEVEJyxcbiAgLyoqIFVzZXIgZGlkIG5vdCByZXNwb25kIHRvIHZlcmlmaWNhdGlvbiBwcm9tcHQgKi9cbiAgVkVSSUZJQ0FUSU9OX1RJTUVPVVQgPSAnVkVSSUZJQ0FUSU9OX1RJTUVPVVQnLFxuICAvKiogRGVzdHJ1Y3RpdmUgcGF0dGVybiBkZXRlY3RlZCwgb3BlcmF0aW9uIGJsb2NrZWQgKi9cbiAgREFOR0VSX1pPTkVfQkxPQ0tFRCA9ICdEQU5HRVJfWk9ORV9CTE9DS0VEJyxcbiAgLyoqIFNlc3Npb24gaXMgaW52YWxpZCBvciBleHBpcmVkICovXG4gIFNFU1NJT05fSU5WQUxJRCA9ICdTRVNTSU9OX0lOVkFMSUQnLFxufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhIEdhdGVrZWVwZXIgcG9saWN5IGNoZWNrLlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYW4gb3BlcmF0aW9uIGlzIGFsbG93ZWQgYW5kIHdoYXQgYWN0aW9ucyBhcmUgbmVlZGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGVrZWVwZXJEZWNpc2lvbiB7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcGVyYXRpb24gaXMgYWxsb3dlZCB0byBwcm9jZWVkICovXG4gIGFsbG93ZWQ6IGJvb2xlYW47XG4gIC8qKiBQZXJtaXNzaW9uIGxldmVsIGRldGVybWluZWQgZm9yIHRoaXMgb3BlcmF0aW9uICovXG4gIHBlcm1pc3Npb25MZXZlbDogUGVybWlzc2lvbkxldmVsO1xuICAvKiogRXJyb3IgY29kZSBpZiB0aGUgb3BlcmF0aW9uIGlzIGRlbmllZCAqL1xuICBlcnJvckNvZGU/OiBHYXRla2VlcGVyRXJyb3JDb2RlO1xuICAvKiogSHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB0aGUgZGVjaXNpb24gKi9cbiAgcmVhc29uOiBzdHJpbmc7XG4gIC8qKiBBY3Rpb25hYmxlIHN1Z2dlc3Rpb24gZm9yIHRoZSBMTE0gb24gd2hhdCB0byBkbyBuZXh0ICovXG4gIHN1Z2dlc3Rpb24/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIGEgY29uZmlybWF0aW9uIGlzIHBlbmRpbmcgZnJvbSB0aGUgdXNlciAqL1xuICBjb25maXJtYXRpb25QZW5kaW5nPzogYm9vbGVhbjtcbiAgLyoqIFRoZSBwb2xpY3kgc291cmNlIHRoYXQgZGV0ZXJtaW5lZCB0aGlzIGRlY2lzaW9uICovXG4gIHBvbGljeVNvdXJjZT86ICdvcGVyYXRpb25fZGVmYXVsdCcgfCAnZWxlbWVudF9wb2xpY3knIHwgJ3NhZmV0eV90aWVyJyB8ICdzZXNzaW9uX2NvbmZpcm1hdGlvbic7XG59XG5cbi8qKlxuICogQ29uZmlybWF0aW9uIHJlY29yZCBmb3Igc2Vzc2lvbi1zY29wZWQgYXBwcm92YWxzLlxuICogVHJhY2tzIHdoaWNoIG9wZXJhdGlvbnMgaGF2ZSBiZWVuIGNvbmZpcm1lZCBmb3IgdGhpcyBzZXNzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1hdGlvblJlY29yZCB7XG4gIC8qKiBUaGUgb3BlcmF0aW9uIHRoYXQgd2FzIGNvbmZpcm1lZCAqL1xuICBvcGVyYXRpb246IHN0cmluZztcbiAgLyoqIFdoZW4gdGhlIGNvbmZpcm1hdGlvbiB3YXMgZ3JhbnRlZCAqL1xuICBjb25maXJtZWRBdDogc3RyaW5nO1xuICAvKiogVGhlIHBlcm1pc3Npb24gbGV2ZWwgdGhhdCB3YXMgY29uZmlybWVkICovXG4gIHBlcm1pc3Npb25MZXZlbDogUGVybWlzc2lvbkxldmVsLkNPTkZJUk1fU0VTU0lPTiB8IFBlcm1pc3Npb25MZXZlbC5DT05GSVJNX1NJTkdMRV9VU0U7XG4gIC8qKiBOdW1iZXIgb2YgdGltZXMgdGhpcyBjb25maXJtYXRpb24gaGFzIGJlZW4gdXNlZCAqL1xuICB1c2VDb3VudDogbnVtYmVyO1xuICAvKiogT3B0aW9uYWwgZWxlbWVudCB0eXBlIHNjb3BlIGZvciB0aGUgY29uZmlybWF0aW9uICovXG4gIGVsZW1lbnRUeXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVsZW1lbnQtbGV2ZWwgR2F0ZWtlZXBlciBwb2xpY3kuXG4gKiBBbGxvd3MgQU5ZIERvbGxob3VzZU1DUCBlbGVtZW50IHRvIGRlZmluZSBhY2Nlc3MgY29udHJvbCBwb2xpY2llcy5cbiAqIFRoZXNlIGFyZSBzdG9yZWQgaW4gdGhlIGVsZW1lbnQncyBtZXRhZGF0YSBZQU1MIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50R2F0ZWtlZXBlclBvbGljeSB7XG4gIC8qKiBPcGVyYXRpb25zIGF1dG8tYXBwcm92ZWQgd2hlbiB0aGlzIGVsZW1lbnQgaXMgYWN0aXZlICovXG4gIGFsbG93Pzogc3RyaW5nW107XG4gIC8qKiBPcGVyYXRpb25zIHJlcXVpcmluZyBjb25maXJtYXRpb24gd2hlbiB0aGlzIGVsZW1lbnQgaXMgYWN0aXZlICovXG4gIGNvbmZpcm0/OiBzdHJpbmdbXTtcbiAgLyoqIE9wZXJhdGlvbnMgYmxvY2tlZCB3aGVuIHRoaXMgZWxlbWVudCBpcyBhY3RpdmUgKi9cbiAgZGVueT86IHN0cmluZ1tdO1xuICAvKiogUmVzdHJpY3Qgb3BlcmF0aW9ucyB0byBzcGVjaWZpYyBlbGVtZW50IHR5cGVzICovXG4gIHNjb3BlUmVzdHJpY3Rpb25zPzoge1xuICAgIC8qKiBBbGxvdyBvcGVyYXRpb25zIG9ubHkgb24gdGhlc2UgZWxlbWVudCB0eXBlcyAqL1xuICAgIGFsbG93ZWRUeXBlcz86IHN0cmluZ1tdO1xuICAgIC8qKiBCbG9jayBvcGVyYXRpb25zIG9uIHRoZXNlIGVsZW1lbnQgdHlwZXMgKi9cbiAgICBibG9ja2VkVHlwZXM/OiBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIEFkdmlzb3J5IHJlc3RyaWN0aW9ucyBmb3IgZXh0ZXJuYWwgdG9vbHMgKENMSSBwZXJtaXNzaW9uIGRlbGVnYXRpb24pICovXG4gIGV4dGVybmFsUmVzdHJpY3Rpb25zPzoge1xuICAgIC8qKiBEZXNjcmlwdGlvbiBvZiBleHRlcm5hbCByZXN0cmljdGlvbnMgKi9cbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIC8qKiBQYXR0ZXJucyB0byBkZW55IGZvciBleHRlcm5hbCB0b29sIG9wZXJhdGlvbnMgKi9cbiAgICBkZW55UGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgICAvKiogUGF0dGVybnMgcmVxdWlyaW5nIGh1bWFuIGFwcHJvdmFsIGJlZm9yZSBleGVjdXRpb24gKElzc3VlICMxNjYwKS5cbiAgICAgKiAgRXZhbHVhdGVkIGFmdGVyIGRlbnlQYXR0ZXJucywgYmVmb3JlIGFsbG93UGF0dGVybnMuXG4gICAgICogIERlbnkgYWx3YXlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBjb25maXJtLiAqL1xuICAgIGNvbmZpcm1QYXR0ZXJucz86IHN0cmluZ1tdO1xuICAgIC8qKiBXaGVuIGRlZmluZWQsIG9ubHkgdG9vbHMgbWF0Y2hpbmcgYXQgbGVhc3Qgb25lIHBhdHRlcm4gYXJlIHBlcm1pdHRlZCAoYWxsb3dsaXN0IG1vZGUpLlxuICAgICAqICBEZW55IGFsd2F5cyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYWxsb3cuIEFjcm9zcyBlbGVtZW50cywgYWxsb3dzIGFyZSB1bmlvbmVkLiAqL1xuICAgIGFsbG93UGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgICAvKiogQXBwcm92YWwgcG9saWN5IGZvciBDTEkgdG9vbCBvcGVyYXRpb25zIChJc3N1ZSAjNjI1IFBoYXNlIDMpICovXG4gICAgYXBwcm92YWxQb2xpY3k/OiBDbGlBcHByb3ZhbFBvbGljeTtcbiAgfTtcbn1cblxuLy8g4pSA4pSAIENMSSBBcHByb3ZhbCBUeXBlcyAoSXNzdWUgIzYyNSBQaGFzZSAzKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBTY29wZSBmb3IgQ0xJIGFwcHJvdmFsIHJlY29yZHMuXG4gKiAtICdzaW5nbGUnOiBjb25zdW1lZCBhZnRlciBvbmUgdXNlXG4gKiAtICd0b29sX3Nlc3Npb24nOiBhbGwgdXNlcyBvZiB0aGF0IHRvb2wgZm9yIHRoZSBzZXNzaW9uXG4gKi9cbmV4cG9ydCB0eXBlIENsaUFwcHJvdmFsU2NvcGUgPSAnc2luZ2xlJyB8ICd0b29sX3Nlc3Npb24nO1xuXG4vKipcbiAqIEFwcHJvdmFsIHBvbGljeSBmb3IgQ0xJIHRvb2wgb3BlcmF0aW9ucy5cbiAqIENvbmZpZ3VyZXMgd2hpY2ggcmlzayBsZXZlbHMgbmVlZCBodW1hbiBhcHByb3ZhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGlBcHByb3ZhbFBvbGljeSB7XG4gIC8qKiBSaXNrIGxldmVscyB0aGF0IHJlcXVpcmUgaHVtYW4gYXBwcm92YWwgYmVmb3JlIHByb2NlZWRpbmcgKi9cbiAgcmVxdWlyZUFwcHJvdmFsPzogKCdtb2RlcmF0ZScgfCAnZGFuZ2Vyb3VzJylbXTtcbiAgLyoqIERlZmF1bHQgc2NvcGUgZm9yIGFwcHJvdmFscyAoZGVmYXVsdDogJ3NpbmdsZScpICovXG4gIGRlZmF1bHRTY29wZT86IENsaUFwcHJvdmFsU2NvcGU7XG4gIC8qKiBUaW1lLXRvLWxpdmUgZm9yIHBlbmRpbmcgYXBwcm92YWxzIGluIHNlY29uZHMgKDMwLTM2MDAsIGRlZmF1bHQ6IDMwMCkgKi9cbiAgdHRsU2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZWNvcmQgb2YgYSBDTEkgdG9vbCBhcHByb3ZhbCByZXF1ZXN0LlxuICogQ3JlYXRlZCB3aGVuIHBlcm1pc3Npb25fcHJvbXB0IGVuY291bnRlcnMgYSB0b29sIHRoYXQgcmVxdWlyZXMgYXBwcm92YWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpQXBwcm92YWxSZWNvcmQge1xuICAvKiogVW5pcXVlIHJlcXVlc3QgaWRlbnRpZmllciAoZm9ybWF0OiBjbGktPFVVSUR2ND4pICovXG4gIHJlcXVlc3RJZDogc3RyaW5nO1xuICAvKiogVGhlIHRvb2wgdGhhdCB3YXMgcmVxdWVzdGVkICovXG4gIHRvb2xOYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgdG9vbCBpbnB1dCBwYXJhbWV0ZXJzICovXG4gIHRvb2xJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBSaXNrIGxldmVsIGZyb20gY2xhc3NpZmljYXRpb24gKi9cbiAgcmlza0xldmVsOiBzdHJpbmc7XG4gIC8qKiBOdW1lcmljIHJpc2sgc2NvcmUgKDAtMTAwKSAqL1xuICByaXNrU2NvcmU6IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdGhlIG9wZXJhdGlvbiBpcyBpcnJldmVyc2libGUgKi9cbiAgaXJyZXZlcnNpYmxlOiBib29sZWFuO1xuICAvKiogV2hlbiB0aGUgcmVxdWVzdCB3YXMgY3JlYXRlZCAqL1xuICByZXF1ZXN0ZWRBdDogc3RyaW5nO1xuICAvKiogV2hlbiB0aGUgcmVxdWVzdCB3YXMgYXBwcm92ZWQgKHVuZGVmaW5lZCBpZiBwZW5kaW5nKSAqL1xuICBhcHByb3ZlZEF0Pzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGlzIGFwcHJvdmFsIGhhcyBiZWVuIGNvbnN1bWVkICovXG4gIGNvbnN1bWVkOiBib29sZWFuO1xuICAvKiogQXBwcm92YWwgc2NvcGUgKi9cbiAgc2NvcGU6IENsaUFwcHJvdmFsU2NvcGU7XG4gIC8qKiBSZWFzb24gdGhlIHRvb2wgd2FzIGRlbmllZCAocGVuZGluZyBhcHByb3ZhbCkgKi9cbiAgZGVueVJlYXNvbjogc3RyaW5nO1xuICAvKiogV2hpY2ggcG9saWN5IHNvdXJjZSB0cmlnZ2VyZWQgdGhlIGFwcHJvdmFsIHJlcXVpcmVtZW50ICovXG4gIHBvbGljeVNvdXJjZT86IHN0cmluZztcbiAgLyoqIFBlci1yZWNvcmQgVFRMIGluIG1pbGxpc2Vjb25kcyAob3ZlcnJpZGVzIGRlZmF1bHQgMzAwcykgKi9cbiAgdHRsTXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmlzayBhc3Nlc3NtZW50IGZvciBhIENMSSB0b29sIGNhbGwuXG4gKiBQcm92aWRlcyBhIG51bWVyaWMgc2NvcmUgYW5kIGlycmV2ZXJzaWJpbGl0eSBpbmRpY2F0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlza0Fzc2Vzc21lbnQge1xuICAvKiogTnVtZXJpYyByaXNrIHNjb3JlICgwLTEwMCkgKi9cbiAgc2NvcmU6IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdGhlIG9wZXJhdGlvbiBpcyBpcnJldmVyc2libGUgKi9cbiAgaXJyZXZlcnNpYmxlOiBib29sZWFuO1xuICAvKiogRmFjdG9ycyB0aGF0IGNvbnRyaWJ1dGVkIHRvIHRoZSByaXNrIHNjb3JlICovXG4gIGZhY3RvcnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVuZHBvaW50IHBlcm1pc3Npb25zIGZvciBDUlVEIGVuZHBvaW50cy5cbiAqIERlZmluZXMgdGhlIHNlY3VyaXR5IGNoYXJhY3RlcmlzdGljcyBvZiBlYWNoIGVuZHBvaW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50UGVybWlzc2lvbnMge1xuICAvKiogV2hldGhlciB0aGUgZW5kcG9pbnQgb25seSByZWFkcyBkYXRhICovXG4gIHJlYWRPbmx5OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgZW5kcG9pbnQgY2FuIHBlcmZvcm0gZGVzdHJ1Y3RpdmUgb3BlcmF0aW9ucyAqL1xuICBkZXN0cnVjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBdWRpdCBsb2cgZW50cnkgZm9yIEdhdGVrZWVwZXIgZGVjaXNpb25zLlxuICogTG9nZ2VkIHRvIFNlY3VyaXR5TW9uaXRvciBmb3Igc2VjdXJpdHkgYW5hbHlzaXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZWtlZXBlckF1ZGl0RW50cnkge1xuICAvKiogVGltZXN0YW1wIG9mIHRoZSBkZWNpc2lvbiAqL1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgLyoqIFNlc3Npb24gSUQgdGhhdCBtYWRlIHRoZSByZXF1ZXN0ICovXG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICAvKiogT3BlcmF0aW9uIHRoYXQgd2FzIGNoZWNrZWQgKi9cbiAgb3BlcmF0aW9uOiBzdHJpbmc7XG4gIC8qKiBDUlVEIGVuZHBvaW50IHVzZWQgKi9cbiAgZW5kcG9pbnQ6IENSVURFbmRwb2ludDtcbiAgLyoqIEVsZW1lbnQgdHlwZSBpZiBhcHBsaWNhYmxlICovXG4gIGVsZW1lbnRUeXBlPzogc3RyaW5nO1xuICAvKiogVGhlIGRlY2lzaW9uIG1hZGUgKi9cbiAgZGVjaXNpb246IEdhdGVrZWVwZXJEZWNpc2lvbjtcbiAgLyoqIENsaWVudCBpbmZvcm1hdGlvbiBpZiBhdmFpbGFibGUgKi9cbiAgY2xpZW50SW5mbz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICB9O1xufVxuXG4vKipcbiAqIE9wZXJhdGlvbiBwb2xpY3kgbWFwcGluZyBlbnRyeS5cbiAqIERlZmluZXMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbiBsZXZlbCBmb3IgYW4gb3BlcmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhdGlvblBvbGljeSB7XG4gIC8qKiBEZWZhdWx0IHBlcm1pc3Npb24gbGV2ZWwgZm9yIHRoaXMgb3BlcmF0aW9uICovXG4gIGRlZmF1bHRMZXZlbDogUGVybWlzc2lvbkxldmVsO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygd2h5IHRoaXMgbGV2ZWwgaXMgYXNzaWduZWQgKi9cbiAgcmF0aW9uYWxlOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoaXMgb3BlcmF0aW9uIGNhbiBiZSBlbGV2YXRlZCBieSBhY3RpdmUgZWxlbWVudHMgKi9cbiAgY2FuQmVFbGV2YXRlZD86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -39,6 +39,9 @@ import type { PersonaHandler } from '../PersonaHandler.js';
|
|
|
39
39
|
import type { SyncHandler } from '../SyncHandlerV2.js';
|
|
40
40
|
import type { BuildInfoService } from '../../services/BuildInfoService.js';
|
|
41
41
|
import type { MemoryLogSink } from '../../logging/sinks/MemoryLogSink.js';
|
|
42
|
+
import type { PerformanceMonitor } from '../../utils/PerformanceMonitor.js';
|
|
43
|
+
import type { OperationMetricsTracker } from '../../metrics/OperationMetricsTracker.js';
|
|
44
|
+
import type { GatekeeperMetricsTracker } from '../../metrics/GatekeeperMetricsTracker.js';
|
|
42
45
|
import type { AutonomyMetricsSnapshot } from '../../elements/agents/autonomyEvaluator.js';
|
|
43
46
|
/**
|
|
44
47
|
* Verification metrics tracker following DangerZoneEnforcer.getMetrics() pattern.
|
|
@@ -86,6 +89,10 @@ export interface HandlerRegistry {
|
|
|
86
89
|
verificationStore?: VerificationStore;
|
|
87
90
|
verificationNotifier?: IVerificationNotifier;
|
|
88
91
|
memorySink?: MemoryLogSink;
|
|
92
|
+
metricsSink?: import('../../metrics/sinks/MemoryMetricsSink.js').MemoryMetricsSink;
|
|
93
|
+
performanceMonitor?: PerformanceMonitor;
|
|
94
|
+
operationMetricsTracker?: OperationMetricsTracker;
|
|
95
|
+
gatekeeperMetricsTracker?: GatekeeperMetricsTracker;
|
|
89
96
|
}
|
|
90
97
|
/**
|
|
91
98
|
* MCPAQLHandler - Unified entry point for all MCP-AQL operations
|
|
@@ -462,6 +469,13 @@ export declare class MCPAQLHandler {
|
|
|
462
469
|
* policy enforcement, and structured response format.
|
|
463
470
|
*/
|
|
464
471
|
private dispatchLogging;
|
|
472
|
+
/**
|
|
473
|
+
* Dispatch Metrics operations.
|
|
474
|
+
*
|
|
475
|
+
* Routes query_metrics through the unified CRUDE pipeline, providing
|
|
476
|
+
* operation routing, gatekeeper policy enforcement, and structured response format.
|
|
477
|
+
*/
|
|
478
|
+
private dispatchMetrics;
|
|
465
479
|
/**
|
|
466
480
|
* Dispatch Browser operations (Issue #774: open portfolio browser)
|
|
467
481
|
*/
|
|
@@ -490,6 +504,25 @@ export declare class MCPAQLHandler {
|
|
|
490
504
|
* understand what they're approving without parsing machine-readable payloads.
|
|
491
505
|
*/
|
|
492
506
|
private buildOperationSummary;
|
|
507
|
+
/**
|
|
508
|
+
* Score the risk of an MCP-AQL operation for auto-confirm audit trails.
|
|
509
|
+
*
|
|
510
|
+
* Returns a score from 0-100 based on operation characteristics:
|
|
511
|
+
* - DELETE endpoint operations: base 80 (destructive, data loss)
|
|
512
|
+
* - EXECUTE endpoint operations: base 60 (unpredictable side effects)
|
|
513
|
+
* - UPDATE endpoint operations: base 40 (modifies existing data)
|
|
514
|
+
* - CREATE endpoint operations: base 20 (additive, low risk)
|
|
515
|
+
*
|
|
516
|
+
* Modifiers:
|
|
517
|
+
* - Operations with canBeElevated: false get +10 (structurally dangerous)
|
|
518
|
+
* - Operations targeting gatekeeper fields get +10 (privilege escalation vector)
|
|
519
|
+
*
|
|
520
|
+
* @param operation - The operation name
|
|
521
|
+
* @param endpoint - The CRUDE endpoint
|
|
522
|
+
* @param params - Operation parameters (for field inspection)
|
|
523
|
+
* @returns Risk score 0-100
|
|
524
|
+
*/
|
|
525
|
+
private scoreOperationRisk;
|
|
493
526
|
/**
|
|
494
527
|
* Dispatch Execute operations for execution lifecycle management (Issue #244)
|
|
495
528
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MCPAQLHandler.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/MCPAQLHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAU7C,OAAO,EAEL,eAAe,
|
|
1
|
+
{"version":3,"file":"MCPAQLHandler.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/MCPAQLHandler.ts"],"names":[],"mappings":"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"}
|