@aws-cdk/aws-bedrock-agentcore-alpha 2.241.0-alpha.0 → 2.243.0-alpha.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/.jsii +395 -318
- package/.jsii.tabl.json.gz +0 -0
- package/lib/gateway/gateway-base.js +1 -1
- package/lib/gateway/gateway.js +10 -9
- package/lib/gateway/inbound-auth/authorizer.js +6 -6
- package/lib/gateway/inbound-auth/custom-claim.js +7 -7
- package/lib/gateway/interceptor.js +1 -1
- package/lib/gateway/outbound-auth/api-key.js +1 -1
- package/lib/gateway/outbound-auth/credential-provider.js +1 -1
- package/lib/gateway/protocol.js +2 -2
- package/lib/gateway/targets/schema/api-schema.js +7 -17
- package/lib/gateway/targets/schema/tool-schema.js +8 -18
- package/lib/gateway/targets/target-base.js +1 -1
- package/lib/gateway/targets/target-configuration.js +27 -26
- package/lib/gateway/targets/target.js +5 -4
- package/lib/gateway/validation-helpers.d.ts +0 -4
- package/lib/gateway/validation-helpers.js +1 -13
- package/lib/memory/memory-strategy.js +1 -1
- package/lib/memory/memory.js +2 -2
- package/lib/memory/strategies/managed-strategy.js +1 -1
- package/lib/memory/strategies/self-managed-strategy.js +1 -1
- package/lib/network/network-configuration.js +4 -4
- package/lib/runtime/inbound-auth/custom-claim.js +7 -7
- package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +5 -5
- package/lib/runtime/runtime-artifact.js +6 -6
- package/lib/runtime/runtime-base.js +4 -4
- package/lib/runtime/runtime-endpoint-base.js +1 -1
- package/lib/runtime/runtime-endpoint.js +10 -9
- package/lib/runtime/runtime.js +23 -22
- package/lib/runtime/validation-helpers.d.ts +0 -6
- package/lib/runtime/validation-helpers.js +3 -13
- package/lib/tools/browser.js +2 -2
- package/lib/tools/code-interpreter.js +2 -2
- package/lib/tools/validation-helpers.d.ts +0 -6
- package/lib/tools/validation-helpers.js +3 -13
- package/package.json +10 -10
|
@@ -39,6 +39,7 @@ const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
|
|
|
39
39
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
40
40
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
41
41
|
const bedrockagentcore = require("aws-cdk-lib/aws-bedrockagentcore");
|
|
42
|
+
const errors_1 = require("aws-cdk-lib/core/lib/errors");
|
|
42
43
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
43
44
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
44
45
|
const runtime_endpoint_base_1 = require("./runtime-endpoint-base");
|
|
@@ -67,7 +68,7 @@ let RuntimeEndpoint = (() => {
|
|
|
67
68
|
RuntimeEndpoint = _classThis = _classDescriptor.value;
|
|
68
69
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
69
70
|
}
|
|
70
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpoint", version: "2.
|
|
71
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpoint", version: "2.243.0-alpha.0" };
|
|
71
72
|
/** Uniquely identifies this class. */
|
|
72
73
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.RuntimeEndpoint';
|
|
73
74
|
/**
|
|
@@ -271,7 +272,7 @@ let RuntimeEndpoint = (() => {
|
|
|
271
272
|
// Combine and throw if any errors
|
|
272
273
|
const allErrors = [...lengthErrors, ...patternErrors];
|
|
273
274
|
if (allErrors.length > 0) {
|
|
274
|
-
throw new
|
|
275
|
+
throw new errors_1.UnscopedValidationError(allErrors.join('\n'));
|
|
275
276
|
}
|
|
276
277
|
}
|
|
277
278
|
/**
|
|
@@ -291,7 +292,7 @@ let RuntimeEndpoint = (() => {
|
|
|
291
292
|
maxLength: 256,
|
|
292
293
|
});
|
|
293
294
|
if (errors.length > 0) {
|
|
294
|
-
throw new
|
|
295
|
+
throw new errors_1.UnscopedValidationError(errors.join('\n'));
|
|
295
296
|
}
|
|
296
297
|
}
|
|
297
298
|
}
|
|
@@ -308,7 +309,7 @@ let RuntimeEndpoint = (() => {
|
|
|
308
309
|
// Validate pattern only (no length validation per AWS specs)
|
|
309
310
|
const patternErrors = (0, validation_helpers_1.validateFieldPattern)(this.agentRuntimeId, 'Agent runtime ID', /^[a-zA-Z][a-zA-Z0-9_]{0,99}-[a-zA-Z0-9]{10}$/, 'Agent runtime ID must start with a letter, followed by up to 99 alphanumeric or underscore characters, then a hyphen, and exactly 10 alphanumeric characters');
|
|
310
311
|
if (patternErrors.length > 0) {
|
|
311
|
-
throw new
|
|
312
|
+
throw new errors_1.UnscopedValidationError(patternErrors.join('\n'));
|
|
312
313
|
}
|
|
313
314
|
}
|
|
314
315
|
/**
|
|
@@ -323,7 +324,7 @@ let RuntimeEndpoint = (() => {
|
|
|
323
324
|
// Validate pattern only (no length validation per AWS specs)
|
|
324
325
|
const patternErrors = (0, validation_helpers_1.validateFieldPattern)(this.agentRuntimeVersion, 'Agent runtime version', /^[1-9]\d{0,4}$/, 'Agent runtime version must be a number between 1 and 99999');
|
|
325
326
|
if (patternErrors.length > 0) {
|
|
326
|
-
throw new
|
|
327
|
+
throw new errors_1.UnscopedValidationError(patternErrors.join('\n'));
|
|
327
328
|
}
|
|
328
329
|
}
|
|
329
330
|
/**
|
|
@@ -348,10 +349,10 @@ let RuntimeEndpoint = (() => {
|
|
|
348
349
|
// Combine key errors and throw if any
|
|
349
350
|
const keyErrors = [...keyLengthErrors, ...keyPatternErrors];
|
|
350
351
|
if (keyErrors.length > 0) {
|
|
351
|
-
throw new
|
|
352
|
+
throw new errors_1.UnscopedValidationError(keyErrors.join('\n'));
|
|
352
353
|
}
|
|
353
354
|
if (value === undefined || value === null) {
|
|
354
|
-
throw new
|
|
355
|
+
throw new errors_1.UnscopedValidationError(`Tag value for key "${key}" cannot be null or undefined`);
|
|
355
356
|
}
|
|
356
357
|
// Validate tag value length
|
|
357
358
|
const valueLengthErrors = (0, validation_helpers_1.validateStringField)({
|
|
@@ -365,7 +366,7 @@ let RuntimeEndpoint = (() => {
|
|
|
365
366
|
// Combine value errors and throw if any
|
|
366
367
|
const valueErrors = [...valueLengthErrors, ...valuePatternErrors];
|
|
367
368
|
if (valueErrors.length > 0) {
|
|
368
|
-
throw new
|
|
369
|
+
throw new errors_1.UnscopedValidationError(valueErrors.join('\n'));
|
|
369
370
|
}
|
|
370
371
|
}
|
|
371
372
|
}
|
|
@@ -376,4 +377,4 @@ let RuntimeEndpoint = (() => {
|
|
|
376
377
|
return RuntimeEndpoint = _classThis;
|
|
377
378
|
})();
|
|
378
379
|
exports.RuntimeEndpoint = RuntimeEndpoint;
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1lbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtZW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQWlEO0FBQ2pELHFFQUFxRTtBQUNyRSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRzFFLG1FQUE4RDtBQUM5RCw2REFBa0c7QUFrRGxHOzsrRUFFK0U7QUFFL0U7Ozs7OztHQU1HO0lBRVUsZUFBZTs0QkFEM0Isb0NBQWtCOzs7O3NCQUNrQiwyQ0FBbUI7K0JBQTNCLFNBQVEsV0FBbUI7Ozs7WUFBeEQsNktBK1ZDOzs7OztRQTlWQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLHNEQUFzRCxDQUFDO1FBRTlHOzs7Ozs7OztXQVFHO1FBQ0ksTUFBTSxDQUFDLDZCQUE2QixDQUN6QyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBZ0M7Ozs7Ozs7Ozs7WUFFaEMsTUFBTSxtQ0FBb0MsU0FBUSwyQ0FBbUI7Z0JBQ25ELHVCQUF1QixHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztnQkFDeEQsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBQ2xDLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO2dCQUN4QyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFDcEMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzVCLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUM5QixhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQzthQUNyRDtZQUVELE9BQU8sSUFB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R0FBRyxpQkFBaUIsRUFBRSxHQUFHLGtCQUFrQixDQUFDLENBQUM7Z0JBQ2xFLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxJQUFJLG9DQUFlLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO1lBQ0gsQ0FBQztTQUNGOztZQTlWVSx1REFBZTs7Ozs7QUFBZiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuLCBMYXp5LCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSVJ1bnRpbWVFbmRwb2ludCwgUnVudGltZUVuZHBvaW50QXR0cmlidXRlcyB9IGZyb20gJy4vcnVudGltZS1lbmRwb2ludC1iYXNlJztcbmltcG9ydCB7IFJ1bnRpbWVFbmRwb2ludEJhc2UgfSBmcm9tICcuL3J1bnRpbWUtZW5kcG9pbnQtYmFzZSc7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0cmluZ0ZpZWxkLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIEJlZHJvY2sgQWdlbnQgQ29yZSBSdW50aW1lIEVuZHBvaW50IHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZUVuZHBvaW50UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSlcbiAgICogTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjYW4gYmUgdXAgdG8gNDggY2hhcmFjdGVycyBsb25nXG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSRcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYWdlbnQgcnVudGltZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGVuZHBvaW50XG4gICAqIFRoaXMgaXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydW50aW1lIHJlc291cmNlXG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgYWdlbnQgcnVudGltZSB0byB1c2UgZm9yIHRoaXMgZW5kcG9pbnRcbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIGVuZHBvaW50IHdpbGwgcG9pbnQgdG8gdmVyc2lvbiBcIjFcIiBvZiB0aGUgcnVudGltZS5cbiAgICogUGF0dGVybjogXihbMS05XVswLTldezAsNH0pJFxuICAgKiBAZGVmYXVsdCBcIjFcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqIExlbmd0aCBNaW5pbXVtOiAxICwgIE1heGltdW06IDI1NlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyBmb3IgdGhlIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogQSBsaXN0IG9mIGtleTp2YWx1ZSBwYWlycyBvZiB0YWdzIHRvIGFwcGx5IHRvIHRoaXMgUnVudGltZUVuZHBvaW50IHJlc291cmNlXG4gICAqIFBhdHRlcm46IF5bYS16QS1aMC05XFxzLl86Lz0rQC1dKiRcbiAgICogQGRlZmF1bHQge30gLSBubyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQmVkcm9jayBBZ2VudCBDb3JlIFJ1bnRpbWUgRW5kcG9pbnRcbiAqIFByb3ZpZGVzIGEgc3RhYmxlIGVuZHBvaW50IGZvciBpbnZva2luZyBhZ2VudCBydW50aW1lcyB3aXRoIHZlcnNpb25pbmcgc3VwcG9ydFxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlJ1bnRpbWVFbmRwb2ludFxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL3J1bnRpbWUtZW5kcG9pbnQuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgUnVudGltZUVuZHBvaW50IGV4dGVuZHMgUnVudGltZUVuZHBvaW50QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWJlZHJvY2stYWdlbnRjb3JlLWFscGhhLlJ1bnRpbWVFbmRwb2ludCc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBBZ2VudCBSdW50aW1lIEVuZHBvaW50IHVzaW5nIGF0dHJpYnV0ZXNcbiAgICogVGhpcyBhbGxvd3MgeW91IHRvIHJlZmVyZW5jZSBhbiBBZ2VudCBSdW50aW1lIEVuZHBvaW50IHRoYXQgd2FzIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBBZ2VudCBSdW50aW1lIEVuZHBvaW50XG4gICAqIEByZXR1cm5zIEFuIElSdW50aW1lRW5kcG9pbnQgaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSBpbXBvcnRlZCBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUnVudGltZUVuZHBvaW50QXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IFJ1bnRpbWVFbmRwb2ludEF0dHJpYnV0ZXMsXG4gICk6IElSdW50aW1lRW5kcG9pbnQge1xuICAgIGNsYXNzIEltcG9ydGVkQmVkcm9ja0FnZW50UnVudGltZUVuZHBvaW50IGV4dGVuZHMgUnVudGltZUVuZHBvaW50QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lRW5kcG9pbnRBcm4gPSBhdHRycy5hZ2VudFJ1bnRpbWVFbmRwb2ludEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmRwb2ludE5hbWUgPSBhdHRycy5lbmRwb2ludE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuID0gYXR0cnMuYWdlbnRSdW50aW1lQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gYXR0cnMuZGVzY3JpcHRpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzID0gYXR0cnMuc3RhdHVzO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxpdmVWZXJzaW9uID0gYXR0cnMubGl2ZVZlcnNpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VmVyc2lvbiA9IGF0dHJzLnRhcmdldFZlcnNpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0ID0gYXR0cnMuY3JlYXRlZEF0O1xuICAgICAgcHVibGljIHJlYWRvbmx5IGVuZHBvaW50SWQgPSBhdHRycy5lbmRwb2ludElkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxhc3RVcGRhdGVkQXQgPSBhdHRycy5sYXN0VXBkYXRlZEF0O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRCZWRyb2NrQWdlbnRSdW50aW1lRW5kcG9pbnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8vIFByb3BlcnRpZXMgZnJvbSBiYXNlIGludGVyZmFjZVxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWdlbnQgcnVudGltZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBBUk4gb2YgdGhpcyBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lRW5kcG9pbnRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBuYW1lIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGFnZW50IHJ1bnRpbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBzdGF0dXMgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsaXZlIHZlcnNpb24gb2YgdGhlIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGxpdmUgdmVyc2lvbiBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGl2ZVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHZlcnNpb24gb2YgdGhlIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIHRhcmdldCB2ZXJzaW9uIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHRpbWVzdGFtcCB3aGVuIHRoZSBlbmRwb2ludCB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiB0aW1lc3RhbXAgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcnVudGltZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBJRCBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5kcG9pbnRJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhZ2VudCBydW50aW1lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhZ2VudCBydW50aW1lIHVzZWQgYnkgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFnZW50UnVudGltZVZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBlbmRwb2ludCB3YXMgbGFzdCB1cGRhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGxhc3QgdXBkYXRlIHRpbWVzdGFtcCBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGFzdFVwZGF0ZWRBdD86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50UmVzb3VyY2U6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuUnVudGltZUVuZHBvaW50O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSdW50aW1lRW5kcG9pbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiA0OCBjaGFyYWN0ZXJzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVGVtcGxhdGVSZWZlcmVuY2UvYXdzLXJlc291cmNlLWJlZHJvY2thZ2VudGNvcmUtcnVudGltZWVuZHBvaW50Lmh0bWwjY2ZuLWJlZHJvY2thZ2VudGNvcmUtcnVudGltZWVuZHBvaW50LW5hbWVcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZW5kcG9pbnROYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDQ4IH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgLy8gU2V0IGFuZCB2YWxpZGF0ZSBwcm9wZXJ0aWVzIGltbWVkaWF0ZWx5XG4gICAgdGhpcy5lbmRwb2ludE5hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcbiAgICB0aGlzLnZhbGlkYXRlRW5kcG9pbnROYW1lKCk7XG5cbiAgICB0aGlzLmFnZW50UnVudGltZUlkID0gcHJvcHMuYWdlbnRSdW50aW1lSWQ7XG4gICAgdGhpcy52YWxpZGF0ZUFnZW50UnVudGltZUlkKCk7XG5cbiAgICB0aGlzLmFnZW50UnVudGltZVZlcnNpb24gPSBwcm9wcy5hZ2VudFJ1bnRpbWVWZXJzaW9uID8/ICcxJztcbiAgICB0aGlzLnZhbGlkYXRlQWdlbnRSdW50aW1lVmVyc2lvbigpO1xuXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uO1xuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudGFncykge1xuICAgICAgdGhpcy52YWxpZGF0ZVRhZ3MocHJvcHMudGFncyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2ZuUHJvcHM6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuUnVudGltZUVuZHBvaW50UHJvcHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLmVuZHBvaW50TmFtZSxcbiAgICAgIGFnZW50UnVudGltZUlkOiBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyQWdlbnRSdW50aW1lSWQoKSxcbiAgICAgIH0pLFxuICAgICAgYWdlbnRSdW50aW1lVmVyc2lvbjogTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlckFnZW50UnVudGltZVZlcnNpb24oKSxcbiAgICAgIH0pLFxuICAgICAgZGVzY3JpcHRpb246IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpLFxuICAgICAgfSksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzID8/IHt9LFxuICAgIH07XG5cbiAgICB0aGlzLmVuZHBvaW50UmVzb3VyY2UgPSBuZXcgYmVkcm9ja2FnZW50Y29yZS5DZm5SdW50aW1lRW5kcG9pbnQodGhpcywgJ1Jlc291cmNlJywgY2ZuUHJvcHMpO1xuXG4gICAgdGhpcy5lbmRwb2ludElkID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJJZDtcbiAgICB0aGlzLmFnZW50UnVudGltZUVuZHBvaW50QXJuID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJBZ2VudFJ1bnRpbWVFbmRwb2ludEFybjtcbiAgICB0aGlzLmFnZW50UnVudGltZUFybiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyQWdlbnRSdW50aW1lQXJuO1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJTdGF0dXM7XG4gICAgdGhpcy5saXZlVmVyc2lvbiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyTGl2ZVZlcnNpb247XG4gICAgdGhpcy50YXJnZXRWZXJzaW9uID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJUYXJnZXRWZXJzaW9uO1xuICAgIHRoaXMuY3JlYXRlZEF0ID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJDcmVhdGVkQXQ7XG4gICAgdGhpcy5sYXN0VXBkYXRlZEF0ID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJMYXN0VXBkYXRlZEF0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGFnZW50IHJ1bnRpbWUgSUQgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJBZ2VudFJ1bnRpbWVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFnZW50UnVudGltZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGFnZW50IHJ1bnRpbWUgdmVyc2lvbiBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckFnZW50UnVudGltZVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hZ2VudFJ1bnRpbWVWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGRlc2NyaXB0aW9uIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyRGVzY3JpcHRpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGVuZHBvaW50IG5hbWUgZm9ybWF0XG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSRcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRW5kcG9pbnROYW1lKCk6IHZvaWQge1xuICAgIC8vIFNraXAgdmFsaWRhdGlvbiBpZiB0aGUgbmFtZSBjb250YWlucyBDREsgdG9rZW5zICh1bnJlc29sdmVkIHZhbHVlcylcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMuZW5kcG9pbnROYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGxlbmd0aFxuICAgIGNvbnN0IGxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IHRoaXMuZW5kcG9pbnROYW1lLFxuICAgICAgZmllbGROYW1lOiAnRW5kcG9pbnQgbmFtZScsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDQ4LFxuICAgIH0pO1xuXG4gICAgLy8gVmFsaWRhdGUgcGF0dGVyblxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIHRoaXMuZW5kcG9pbnROYW1lLFxuICAgICAgJ0VuZHBvaW50IG5hbWUnLFxuICAgICAgL15bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSQvLFxuICAgICAgJ0VuZHBvaW50IG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzJyxcbiAgICApO1xuXG4gICAgLy8gQ29tYmluZSBhbmQgdGhyb3cgaWYgYW55IGVycm9yc1xuICAgIGNvbnN0IGFsbEVycm9ycyA9IFsuLi5sZW5ndGhFcnJvcnMsIC4uLnBhdHRlcm5FcnJvcnNdO1xuICAgIGlmIChhbGxFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihhbGxFcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGRlc2NyaXB0aW9uIGZvcm1hdFxuICAgKiBNdXN0IGJlIGJldHdlZW4gMSBhbmQgMjU2IGNoYXJhY3RlcnMgKHBlciBDbG91ZEZvcm1hdGlvbiBzcGVjaWZpY2F0aW9uKVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVEZXNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMuZGVzY3JpcHRpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgICB2YWx1ZTogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgICAgZmllbGROYW1lOiAnRGVzY3JpcHRpb24nLFxuICAgICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICAgIG1heExlbmd0aDogMjU2LFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgYWdlbnQgcnVudGltZSBJRCBmb3JtYXRcbiAgICogUGF0dGVybjogXlthLXpBLVpdW2EtekEtWjAtOV9dezAsOTl9LVthLXpBLVowLTldezEwfSRcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQWdlbnRSdW50aW1lSWQoKTogdm9pZCB7XG4gICAgLy8gU2tpcCB2YWxpZGF0aW9uIGlmIHRoZSBJRCBjb250YWlucyBDREsgdG9rZW5zICh1bnJlc29sdmVkIHZhbHVlcylcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMuYWdlbnRSdW50aW1lSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgcGF0dGVybiBvbmx5IChubyBsZW5ndGggdmFsaWRhdGlvbiBwZXIgQVdTIHNwZWNzKVxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIHRoaXMuYWdlbnRSdW50aW1lSWQsXG4gICAgICAnQWdlbnQgcnVudGltZSBJRCcsXG4gICAgICAvXlthLXpBLVpdW2EtekEtWjAtOV9dezAsOTl9LVthLXpBLVowLTldezEwfSQvLFxuICAgICAgJ0FnZW50IHJ1bnRpbWUgSUQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLCBmb2xsb3dlZCBieSB1cCB0byA5OSBhbHBoYW51bWVyaWMgb3IgdW5kZXJzY29yZSBjaGFyYWN0ZXJzLCB0aGVuIGEgaHlwaGVuLCBhbmQgZXhhY3RseSAxMCBhbHBoYW51bWVyaWMgY2hhcmFjdGVycycsXG4gICAgKTtcblxuICAgIGlmIChwYXR0ZXJuRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IocGF0dGVybkVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgYWdlbnQgcnVudGltZSB2ZXJzaW9uIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeKFsxLTldWzAtOV17MCw0fSkkXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFnZW50UnVudGltZVZlcnNpb24oKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmFnZW50UnVudGltZVZlcnNpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgcGF0dGVybiBvbmx5IChubyBsZW5ndGggdmFsaWRhdGlvbiBwZXIgQVdTIHNwZWNzKVxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIHRoaXMuYWdlbnRSdW50aW1lVmVyc2lvbixcbiAgICAgICdBZ2VudCBydW50aW1lIHZlcnNpb24nLFxuICAgICAgL15bMS05XVxcZHswLDR9JC8sXG4gICAgICAnQWdlbnQgcnVudGltZSB2ZXJzaW9uIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5OTk5OScsXG4gICAgKTtcblxuICAgIGlmIChwYXR0ZXJuRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IocGF0dGVybkVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdGFncyBmb3JtYXRcbiAgICogQHBhcmFtIHRhZ3MgVGhlIHRhZ3Mgb2JqZWN0IHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRhZ3ModGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRhZ3MpKSB7XG4gICAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGtleSkgfHwgVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgdGFnIGtleSBsZW5ndGhcbiAgICAgIGNvbnN0IGtleUxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgICB2YWx1ZToga2V5LFxuICAgICAgICBmaWVsZE5hbWU6IGBUYWcga2V5IFwiJHtrZXl9XCJgLFxuICAgICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICAgIG1heExlbmd0aDogMjU2LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyBrZXkgcGF0dGVyblxuICAgICAgY29uc3Qga2V5UGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgICBrZXksXG4gICAgICAgIGBUYWcga2V5IFwiJHtrZXl9XCJgLFxuICAgICAgICAvXlthLXpBLVowLTlcXHMuXzovPStALV0qJC8sXG4gICAgICAgIGBUYWcga2V5IFwiJHtrZXl9XCIgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzIChhLXosIEEtWiksIG51bWJlcnMgKDAtOSksIHNwYWNlcywgYW5kIHNwZWNpYWwgY2hhcmFjdGVycyAoLl86Lz0rQC0pYCxcbiAgICAgICk7XG5cbiAgICAgIC8vIENvbWJpbmUga2V5IGVycm9ycyBhbmQgdGhyb3cgaWYgYW55XG4gICAgICBjb25zdCBrZXlFcnJvcnMgPSBbLi4ua2V5TGVuZ3RoRXJyb3JzLCAuLi5rZXlQYXR0ZXJuRXJyb3JzXTtcbiAgICAgIGlmIChrZXlFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGtleUVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYFRhZyB2YWx1ZSBmb3Iga2V5IFwiJHtrZXl9XCIgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyB2YWx1ZSBsZW5ndGhcbiAgICAgIGNvbnN0IHZhbHVlTGVuZ3RoRXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZmllbGROYW1lOiBgVGFnIHZhbHVlIGZvciBrZXkgXCIke2tleX1cImAsXG4gICAgICAgIG1pbkxlbmd0aDogMCxcbiAgICAgICAgbWF4TGVuZ3RoOiAyNTYsXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGFnIHZhbHVlIHBhdHRlcm5cbiAgICAgIGNvbnN0IHZhbHVlUGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgYFRhZyB2YWx1ZSBmb3Iga2V5IFwiJHtrZXl9XCJgLFxuICAgICAgICAvXlthLXpBLVowLTlcXHMuXzovPStALV0qJC8sXG4gICAgICAgIGBUYWcgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycyAoYS16LCBBLVopLCBudW1iZXJzICgwLTkpLCBzcGFjZXMsIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMgKC5fOi89K0AtKWAsXG4gICAgICApO1xuXG4gICAgICAvLyBDb21iaW5lIHZhbHVlIGVycm9ycyBhbmQgdGhyb3cgaWYgYW55XG4gICAgICBjb25zdCB2YWx1ZUVycm9ycyA9IFsuLi52YWx1ZUxlbmd0aEVycm9ycywgLi4udmFsdWVQYXR0ZXJuRXJyb3JzXTtcbiAgICAgIGlmICh2YWx1ZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodmFsdWVFcnJvcnMuam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1lbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtZW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQWlEO0FBQ2pELHFFQUFxRTtBQUNyRSx3REFBc0U7QUFDdEUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSxtRUFBOEQ7QUFDOUQsNkRBQWlGO0FBa0RqRjs7K0VBRStFO0FBRS9FOzs7Ozs7R0FNRztJQUVVLGVBQWU7NEJBRDNCLG9DQUFrQjs7OztzQkFDa0IsMkNBQW1COytCQUEzQixTQUFRLFdBQW1COzs7O1lBQXhELDZLQStWQzs7Ozs7UUE5VkMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxzREFBc0QsQ0FBQztRQUU5Rzs7Ozs7Ozs7V0FRRztRQUNJLE1BQU0sQ0FBQyw2QkFBNkIsQ0FDekMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWdDOzs7Ozs7Ozs7O1lBRWhDLE1BQU0sbUNBQW9DLFNBQVEsMkNBQW1CO2dCQUNuRCx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3hELFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUNsQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztnQkFDeEMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUN0QixXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7Z0JBQ3BDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDOUIsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7YUFDckQ7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QUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzNCLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzVELENBQUM7WUFDSCxDQUFDO1NBQ0Y7O1lBOVZVLHVEQUFlOzs7OztBQUFmLDBDQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9rZW4sIExhenksIE5hbWVzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgYmVkcm9ja2FnZW50Y29yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgeyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBJUnVudGltZUVuZHBvaW50LCBSdW50aW1lRW5kcG9pbnRBdHRyaWJ1dGVzIH0gZnJvbSAnLi9ydW50aW1lLWVuZHBvaW50LWJhc2UnO1xuaW1wb3J0IHsgUnVudGltZUVuZHBvaW50QmFzZSB9IGZyb20gJy4vcnVudGltZS1lbmRwb2ludC1iYXNlJztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGQsIHZhbGlkYXRlRmllbGRQYXR0ZXJuIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIEJlZHJvY2sgQWdlbnQgQ29yZSBSdW50aW1lIEVuZHBvaW50IHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZUVuZHBvaW50UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSlcbiAgICogTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjYW4gYmUgdXAgdG8gNDggY2hhcmFjdGVycyBsb25nXG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSRcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYWdlbnQgcnVudGltZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGVuZHBvaW50XG4gICAqIFRoaXMgaXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydW50aW1lIHJlc291cmNlXG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgYWdlbnQgcnVudGltZSB0byB1c2UgZm9yIHRoaXMgZW5kcG9pbnRcbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIGVuZHBvaW50IHdpbGwgcG9pbnQgdG8gdmVyc2lvbiBcIjFcIiBvZiB0aGUgcnVudGltZS5cbiAgICogUGF0dGVybjogXihbMS05XVswLTldezAsNH0pJFxuICAgKiBAZGVmYXVsdCBcIjFcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqIExlbmd0aCBNaW5pbXVtOiAxICwgIE1heGltdW06IDI1NlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyBmb3IgdGhlIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogQSBsaXN0IG9mIGtleTp2YWx1ZSBwYWlycyBvZiB0YWdzIHRvIGFwcGx5IHRvIHRoaXMgUnVudGltZUVuZHBvaW50IHJlc291cmNlXG4gICAqIFBhdHRlcm46IF5bYS16QS1aMC05XFxzLl86Lz0rQC1dKiRcbiAgICogQGRlZmF1bHQge30gLSBubyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQmVkcm9jayBBZ2VudCBDb3JlIFJ1bnRpbWUgRW5kcG9pbnRcbiAqIFByb3ZpZGVzIGEgc3RhYmxlIGVuZHBvaW50IGZvciBpbnZva2luZyBhZ2VudCBydW50aW1lcyB3aXRoIHZlcnNpb25pbmcgc3VwcG9ydFxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlJ1bnRpbWVFbmRwb2ludFxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL3J1bnRpbWUtZW5kcG9pbnQuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgUnVudGltZUVuZHBvaW50IGV4dGVuZHMgUnVudGltZUVuZHBvaW50QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWJlZHJvY2stYWdlbnRjb3JlLWFscGhhLlJ1bnRpbWVFbmRwb2ludCc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBBZ2VudCBSdW50aW1lIEVuZHBvaW50IHVzaW5nIGF0dHJpYnV0ZXNcbiAgICogVGhpcyBhbGxvd3MgeW91IHRvIHJlZmVyZW5jZSBhbiBBZ2VudCBSdW50aW1lIEVuZHBvaW50IHRoYXQgd2FzIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBBZ2VudCBSdW50aW1lIEVuZHBvaW50XG4gICAqIEByZXR1cm5zIEFuIElSdW50aW1lRW5kcG9pbnQgaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSBpbXBvcnRlZCBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUnVudGltZUVuZHBvaW50QXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IFJ1bnRpbWVFbmRwb2ludEF0dHJpYnV0ZXMsXG4gICk6IElSdW50aW1lRW5kcG9pbnQge1xuICAgIGNsYXNzIEltcG9ydGVkQmVkcm9ja0FnZW50UnVudGltZUVuZHBvaW50IGV4dGVuZHMgUnVudGltZUVuZHBvaW50QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lRW5kcG9pbnRBcm4gPSBhdHRycy5hZ2VudFJ1bnRpbWVFbmRwb2ludEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmRwb2ludE5hbWUgPSBhdHRycy5lbmRwb2ludE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuID0gYXR0cnMuYWdlbnRSdW50aW1lQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gYXR0cnMuZGVzY3JpcHRpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzID0gYXR0cnMuc3RhdHVzO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxpdmVWZXJzaW9uID0gYXR0cnMubGl2ZVZlcnNpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VmVyc2lvbiA9IGF0dHJzLnRhcmdldFZlcnNpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0ID0gYXR0cnMuY3JlYXRlZEF0O1xuICAgICAgcHVibGljIHJlYWRvbmx5IGVuZHBvaW50SWQgPSBhdHRycy5lbmRwb2ludElkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxhc3RVcGRhdGVkQXQgPSBhdHRycy5sYXN0VXBkYXRlZEF0O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRCZWRyb2NrQWdlbnRSdW50aW1lRW5kcG9pbnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8vIFByb3BlcnRpZXMgZnJvbSBiYXNlIGludGVyZmFjZVxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWdlbnQgcnVudGltZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBBUk4gb2YgdGhpcyBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lRW5kcG9pbnRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBuYW1lIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGFnZW50IHJ1bnRpbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBzdGF0dXMgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsaXZlIHZlcnNpb24gb2YgdGhlIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGxpdmUgdmVyc2lvbiBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGl2ZVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHZlcnNpb24gb2YgdGhlIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIHRhcmdldCB2ZXJzaW9uIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHRpbWVzdGFtcCB3aGVuIHRoZSBlbmRwb2ludCB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiB0aW1lc3RhbXAgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcnVudGltZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBJRCBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5kcG9pbnRJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhZ2VudCBydW50aW1lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhZ2VudCBydW50aW1lIHVzZWQgYnkgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFnZW50UnVudGltZVZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBlbmRwb2ludCB3YXMgbGFzdCB1cGRhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGxhc3QgdXBkYXRlIHRpbWVzdGFtcCBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGFzdFVwZGF0ZWRBdD86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50UmVzb3VyY2U6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuUnVudGltZUVuZHBvaW50O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSdW50aW1lRW5kcG9pbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiA0OCBjaGFyYWN0ZXJzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVGVtcGxhdGVSZWZlcmVuY2UvYXdzLXJlc291cmNlLWJlZHJvY2thZ2VudGNvcmUtcnVudGltZWVuZHBvaW50Lmh0bWwjY2ZuLWJlZHJvY2thZ2VudGNvcmUtcnVudGltZWVuZHBvaW50LW5hbWVcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZW5kcG9pbnROYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDQ4IH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgLy8gU2V0IGFuZCB2YWxpZGF0ZSBwcm9wZXJ0aWVzIGltbWVkaWF0ZWx5XG4gICAgdGhpcy5lbmRwb2ludE5hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcbiAgICB0aGlzLnZhbGlkYXRlRW5kcG9pbnROYW1lKCk7XG5cbiAgICB0aGlzLmFnZW50UnVudGltZUlkID0gcHJvcHMuYWdlbnRSdW50aW1lSWQ7XG4gICAgdGhpcy52YWxpZGF0ZUFnZW50UnVudGltZUlkKCk7XG5cbiAgICB0aGlzLmFnZW50UnVudGltZVZlcnNpb24gPSBwcm9wcy5hZ2VudFJ1bnRpbWVWZXJzaW9uID8/ICcxJztcbiAgICB0aGlzLnZhbGlkYXRlQWdlbnRSdW50aW1lVmVyc2lvbigpO1xuXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uO1xuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudGFncykge1xuICAgICAgdGhpcy52YWxpZGF0ZVRhZ3MocHJvcHMudGFncyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2ZuUHJvcHM6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuUnVudGltZUVuZHBvaW50UHJvcHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLmVuZHBvaW50TmFtZSxcbiAgICAgIGFnZW50UnVudGltZUlkOiBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyQWdlbnRSdW50aW1lSWQoKSxcbiAgICAgIH0pLFxuICAgICAgYWdlbnRSdW50aW1lVmVyc2lvbjogTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlckFnZW50UnVudGltZVZlcnNpb24oKSxcbiAgICAgIH0pLFxuICAgICAgZGVzY3JpcHRpb246IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpLFxuICAgICAgfSksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzID8/IHt9LFxuICAgIH07XG5cbiAgICB0aGlzLmVuZHBvaW50UmVzb3VyY2UgPSBuZXcgYmVkcm9ja2FnZW50Y29yZS5DZm5SdW50aW1lRW5kcG9pbnQodGhpcywgJ1Jlc291cmNlJywgY2ZuUHJvcHMpO1xuXG4gICAgdGhpcy5lbmRwb2ludElkID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJJZDtcbiAgICB0aGlzLmFnZW50UnVudGltZUVuZHBvaW50QXJuID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJBZ2VudFJ1bnRpbWVFbmRwb2ludEFybjtcbiAgICB0aGlzLmFnZW50UnVudGltZUFybiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyQWdlbnRSdW50aW1lQXJuO1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJTdGF0dXM7XG4gICAgdGhpcy5saXZlVmVyc2lvbiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyTGl2ZVZlcnNpb247XG4gICAgdGhpcy50YXJnZXRWZXJzaW9uID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJUYXJnZXRWZXJzaW9uO1xuICAgIHRoaXMuY3JlYXRlZEF0ID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJDcmVhdGVkQXQ7XG4gICAgdGhpcy5sYXN0VXBkYXRlZEF0ID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJMYXN0VXBkYXRlZEF0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGFnZW50IHJ1bnRpbWUgSUQgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJBZ2VudFJ1bnRpbWVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFnZW50UnVudGltZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGFnZW50IHJ1bnRpbWUgdmVyc2lvbiBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckFnZW50UnVudGltZVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hZ2VudFJ1bnRpbWVWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGRlc2NyaXB0aW9uIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyRGVzY3JpcHRpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGVuZHBvaW50IG5hbWUgZm9ybWF0XG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSRcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRW5kcG9pbnROYW1lKCk6IHZvaWQge1xuICAgIC8vIFNraXAgdmFsaWRhdGlvbiBpZiB0aGUgbmFtZSBjb250YWlucyBDREsgdG9rZW5zICh1bnJlc29sdmVkIHZhbHVlcylcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMuZW5kcG9pbnROYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGxlbmd0aFxuICAgIGNvbnN0IGxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IHRoaXMuZW5kcG9pbnROYW1lLFxuICAgICAgZmllbGROYW1lOiAnRW5kcG9pbnQgbmFtZScsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDQ4LFxuICAgIH0pO1xuXG4gICAgLy8gVmFsaWRhdGUgcGF0dGVyblxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIHRoaXMuZW5kcG9pbnROYW1lLFxuICAgICAgJ0VuZHBvaW50IG5hbWUnLFxuICAgICAgL15bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSQvLFxuICAgICAgJ0VuZHBvaW50IG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzJyxcbiAgICApO1xuXG4gICAgLy8gQ29tYmluZSBhbmQgdGhyb3cgaWYgYW55IGVycm9yc1xuICAgIGNvbnN0IGFsbEVycm9ycyA9IFsuLi5sZW5ndGhFcnJvcnMsIC4uLnBhdHRlcm5FcnJvcnNdO1xuICAgIGlmIChhbGxFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGFsbEVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZGVzY3JpcHRpb24gZm9ybWF0XG4gICAqIE11c3QgYmUgYmV0d2VlbiAxIGFuZCAyNTYgY2hhcmFjdGVycyAocGVyIENsb3VkRm9ybWF0aW9uIHNwZWNpZmljYXRpb24pXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodGhpcy5kZXNjcmlwdGlvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICAgIHZhbHVlOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICBmaWVsZE5hbWU6ICdEZXNjcmlwdGlvbicsXG4gICAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgICAgbWF4TGVuZ3RoOiAyNTYsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihlcnJvcnMuam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGFnZW50IHJ1bnRpbWUgSUQgZm9ybWF0XG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFnZW50UnVudGltZUlkKCk6IHZvaWQge1xuICAgIC8vIFNraXAgdmFsaWRhdGlvbiBpZiB0aGUgSUQgY29udGFpbnMgQ0RLIHRva2VucyAodW5yZXNvbHZlZCB2YWx1ZXMpXG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmFnZW50UnVudGltZUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHBhdHRlcm4gb25seSAobm8gbGVuZ3RoIHZhbGlkYXRpb24gcGVyIEFXUyBzcGVjcylcbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICB0aGlzLmFnZW50UnVudGltZUlkLFxuICAgICAgJ0FnZW50IHJ1bnRpbWUgSUQnLFxuICAgICAgL15bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kLyxcbiAgICAgICdBZ2VudCBydW50aW1lIElEIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgdXAgdG8gOTkgYWxwaGFudW1lcmljIG9yIHVuZGVyc2NvcmUgY2hhcmFjdGVycywgdGhlbiBhIGh5cGhlbiwgYW5kIGV4YWN0bHkgMTAgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMnLFxuICAgICk7XG5cbiAgICBpZiAocGF0dGVybkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IocGF0dGVybkVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgYWdlbnQgcnVudGltZSB2ZXJzaW9uIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeKFsxLTldWzAtOV17MCw0fSkkXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFnZW50UnVudGltZVZlcnNpb24oKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmFnZW50UnVudGltZVZlcnNpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgcGF0dGVybiBvbmx5IChubyBsZW5ndGggdmFsaWRhdGlvbiBwZXIgQVdTIHNwZWNzKVxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIHRoaXMuYWdlbnRSdW50aW1lVmVyc2lvbixcbiAgICAgICdBZ2VudCBydW50aW1lIHZlcnNpb24nLFxuICAgICAgL15bMS05XVxcZHswLDR9JC8sXG4gICAgICAnQWdlbnQgcnVudGltZSB2ZXJzaW9uIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5OTk5OScsXG4gICAgKTtcblxuICAgIGlmIChwYXR0ZXJuRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihwYXR0ZXJuRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0YWdzIGZvcm1hdFxuICAgKiBAcGFyYW0gdGFncyBUaGUgdGFncyBvYmplY3QgdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVGFncyh0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGFncykpIHtcbiAgICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoa2V5KSB8fCBUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcga2V5IGxlbmd0aFxuICAgICAgY29uc3Qga2V5TGVuZ3RoRXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICAgIHZhbHVlOiBrZXksXG4gICAgICAgIGZpZWxkTmFtZTogYFRhZyBrZXkgXCIke2tleX1cImAsXG4gICAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgICAgbWF4TGVuZ3RoOiAyNTYsXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGFnIGtleSBwYXR0ZXJuXG4gICAgICBjb25zdCBrZXlQYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICAgIGtleSxcbiAgICAgICAgYFRhZyBrZXkgXCIke2tleX1cImAsXG4gICAgICAgIC9eW2EtekEtWjAtOVxccy5fOi89K0AtXSokLyxcbiAgICAgICAgYFRhZyBrZXkgXCIke2tleX1cIiBjYW4gb25seSBjb250YWluIGxldHRlcnMgKGEteiwgQS1aKSwgbnVtYmVycyAoMC05KSwgc3BhY2VzLCBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzICguXzovPStALSlgLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSBrZXkgZXJyb3JzIGFuZCB0aHJvdyBpZiBhbnlcbiAgICAgIGNvbnN0IGtleUVycm9ycyA9IFsuLi5rZXlMZW5ndGhFcnJvcnMsIC4uLmtleVBhdHRlcm5FcnJvcnNdO1xuICAgICAgaWYgKGtleUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihrZXlFcnJvcnMuam9pbignXFxuJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoYFRhZyB2YWx1ZSBmb3Iga2V5IFwiJHtrZXl9XCIgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyB2YWx1ZSBsZW5ndGhcbiAgICAgIGNvbnN0IHZhbHVlTGVuZ3RoRXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZmllbGROYW1lOiBgVGFnIHZhbHVlIGZvciBrZXkgXCIke2tleX1cImAsXG4gICAgICAgIG1pbkxlbmd0aDogMCxcbiAgICAgICAgbWF4TGVuZ3RoOiAyNTYsXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGFnIHZhbHVlIHBhdHRlcm5cbiAgICAgIGNvbnN0IHZhbHVlUGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgYFRhZyB2YWx1ZSBmb3Iga2V5IFwiJHtrZXl9XCJgLFxuICAgICAgICAvXlthLXpBLVowLTlcXHMuXzovPStALV0qJC8sXG4gICAgICAgIGBUYWcgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycyAoYS16LCBBLVopLCBudW1iZXJzICgwLTkpLCBzcGFjZXMsIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMgKC5fOi89K0AtKWAsXG4gICAgICApO1xuXG4gICAgICAvLyBDb21iaW5lIHZhbHVlIGVycm9ycyBhbmQgdGhyb3cgaWYgYW55XG4gICAgICBjb25zdCB2YWx1ZUVycm9ycyA9IFsuLi52YWx1ZUxlbmd0aEVycm9ycywgLi4udmFsdWVQYXR0ZXJuRXJyb3JzXTtcbiAgICAgIGlmICh2YWx1ZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcih2YWx1ZUVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|