Files
personal_site/frontend/node_modules/@aws-cdk/cx-api/lib/legacy-moved.js
T

104 lines
60 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoadBalancerIpAddressType = exports.VpcSubnetGroupType = exports.SynthesisMessageLevel = exports.UNKNOWN_REGION = exports.UNKNOWN_ACCOUNT = exports.SSMPARAM_NO_INVALIDATE = exports.PROVIDER_ERROR_KEY = exports.PATH_METADATA_KEY = exports.ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER = exports.AVAILABILITY_ZONE_FALLBACK_CONTEXT_KEY = exports.ASSET_RESOURCE_METADATA_PROPERTY_KEY = exports.ASSET_RESOURCE_METADATA_PATH_KEY = exports.ASSET_RESOURCE_METADATA_IS_BUNDLED_KEY = exports.ASSET_RESOURCE_METADATA_ENABLED_CONTEXT = exports.ASSET_RESOURCE_METADATA_DOCKERFILE_PATH_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_OUTPUTS_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_CACHE_TO_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_CACHE_FROM_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_CACHE_DISABLED_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_BUILD_TARGET_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_BUILD_SSH_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_BUILD_SECRETS_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_BUILD_CONTEXTS_KEY = exports.ASSET_RESOURCE_METADATA_DOCKER_BUILD_ARGS_KEY = exports.ASSET_PREFIX_SEPARATOR = void 0;
exports._convertCloudAssembly = _convertCloudAssembly;
exports._convertCloudAssemblyBuilder = _convertCloudAssemblyBuilder;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/**
* Re-exports of members and types that historically used to live here, but have been moved to a more apt package.
*
* Re-exported here for backwards compatibility.
*
* To satisfy the (jsii) use of these types in the public API of this package, we do the following:
*
* - Re-declare the types that we use in this assembly here (`declare class ...`).
* - Copy the implementation from the upstream library.
*
* That way we satisfy the jsii and backwards compatibility checker, while keeping the implementation
* centralized in a single place.
*/
const cloud_assembly_api_1 = require("@aws-cdk/cloud-assembly-api");
Object.defineProperty(exports, "ASSET_PREFIX_SEPARATOR", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_PREFIX_SEPARATOR; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_BUILD_ARGS_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_BUILD_ARGS_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_BUILD_CONTEXTS_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_BUILD_CONTEXTS_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_BUILD_SECRETS_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_BUILD_SECRETS_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_BUILD_SSH_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_BUILD_SSH_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_BUILD_TARGET_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_BUILD_TARGET_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_CACHE_DISABLED_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_CACHE_DISABLED_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_CACHE_FROM_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_CACHE_FROM_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_CACHE_TO_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_CACHE_TO_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKER_OUTPUTS_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKER_OUTPUTS_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_DOCKERFILE_PATH_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_DOCKERFILE_PATH_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_ENABLED_CONTEXT", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_ENABLED_CONTEXT; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_IS_BUNDLED_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_IS_BUNDLED_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_PATH_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_PATH_KEY; } });
Object.defineProperty(exports, "ASSET_RESOURCE_METADATA_PROPERTY_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.ASSET_RESOURCE_METADATA_PROPERTY_KEY; } });
Object.defineProperty(exports, "AVAILABILITY_ZONE_FALLBACK_CONTEXT_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.AVAILABILITY_ZONE_FALLBACK_CONTEXT_KEY; } });
Object.defineProperty(exports, "ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER", { enumerable: true, get: function () { return cloud_assembly_api_1.ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER; } });
Object.defineProperty(exports, "PATH_METADATA_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.PATH_METADATA_KEY; } });
Object.defineProperty(exports, "PROVIDER_ERROR_KEY", { enumerable: true, get: function () { return cloud_assembly_api_1.PROVIDER_ERROR_KEY; } });
Object.defineProperty(exports, "SSMPARAM_NO_INVALIDATE", { enumerable: true, get: function () { return cloud_assembly_api_1.SSMPARAM_NO_INVALIDATE; } });
Object.defineProperty(exports, "UNKNOWN_ACCOUNT", { enumerable: true, get: function () { return cloud_assembly_api_1.UNKNOWN_ACCOUNT; } });
Object.defineProperty(exports, "UNKNOWN_REGION", { enumerable: true, get: function () { return cloud_assembly_api_1.UNKNOWN_REGION; } });
/**
* @deprecated The official definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
*/
var SynthesisMessageLevel;
(function (SynthesisMessageLevel) {
SynthesisMessageLevel["INFO"] = "info";
SynthesisMessageLevel["WARNING"] = "warning";
SynthesisMessageLevel["ERROR"] = "error";
})(SynthesisMessageLevel || (exports.SynthesisMessageLevel = SynthesisMessageLevel = {}));
exports.CloudAssembly = cloud_assembly_api_1.CloudAssembly;
// Make these classes equal to the upstream versions
exports.CloudArtifact = cloud_assembly_api_1.CloudArtifact;
exports.CloudFormationStackArtifact = cloud_assembly_api_1.CloudFormationStackArtifact;
exports.AssetManifestArtifact = cloud_assembly_api_1.AssetManifestArtifact;
exports.NestedCloudAssemblyArtifact = cloud_assembly_api_1.NestedCloudAssemblyArtifact;
exports.TreeCloudArtifact = cloud_assembly_api_1.TreeCloudArtifact;
exports.CloudAssemblyBuilder = cloud_assembly_api_1.CloudAssemblyBuilder;
function _convertCloudAssembly(x) {
return x;
}
function _convertCloudAssemblyBuilder(x) {
return x;
}
exports.EnvironmentPlaceholders = cloud_assembly_api_1.EnvironmentPlaceholders;
exports.EnvironmentUtils = cloud_assembly_api_1.EnvironmentUtils;
/**
* The type of subnet group.
* Same as SubnetType in the aws-cdk-lib/aws-ec2 package,
* but we can't use that because of cyclical dependencies.
*
* @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
*/
var VpcSubnetGroupType;
(function (VpcSubnetGroupType) {
/** Public subnet group type. */
VpcSubnetGroupType["PUBLIC"] = "Public";
/** Private subnet group type. */
VpcSubnetGroupType["PRIVATE"] = "Private";
/** Isolated subnet group type. */
VpcSubnetGroupType["ISOLATED"] = "Isolated";
})(VpcSubnetGroupType || (exports.VpcSubnetGroupType = VpcSubnetGroupType = {}));
/**
* Load balancer ip address type.
*
* @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
*/
var LoadBalancerIpAddressType;
(function (LoadBalancerIpAddressType) {
/**
* IPV4 ip address
*/
LoadBalancerIpAddressType["IPV4"] = "ipv4";
/**
* Dual stack address
*/
LoadBalancerIpAddressType["DUAL_STACK"] = "dualstack";
/**
* IPv6 only public addresses, with private IPv4 and IPv6 addresses
*/
LoadBalancerIpAddressType["DUAL_STACK_WITHOUT_PUBLIC_IPV4"] = "dualstack-without-public-ipv4";
})(LoadBalancerIpAddressType || (exports.LoadBalancerIpAddressType = LoadBalancerIpAddressType = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LW1vdmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGVnYWN5LW1vdmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtxQkEsc0RBRUM7QUFTRCxvRUFFQzs7QUEvcUJEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILG9FQW9DcUM7QUFJbkMsdUdBdkNBLDJDQUFzQixPQXVDQTtBQUN0Qiw4SEF2Q0Esa0VBQTZDLE9BdUNBO0FBQzdDLGtJQXZDQSxzRUFBaUQsT0F1Q0E7QUFDakQsaUlBdkNBLHFFQUFnRCxPQXVDQTtBQUNoRCw2SEF2Q0EsaUVBQTRDLE9BdUNBO0FBQzVDLGdJQXZDQSxvRUFBK0MsT0F1Q0E7QUFDL0Msa0lBdkNBLHNFQUFpRCxPQXVDQTtBQUNqRCw4SEF2Q0Esa0VBQTZDLE9BdUNBO0FBQzdDLDRIQXZDQSxnRUFBMkMsT0F1Q0E7QUFDM0MsMkhBdkNBLCtEQUEwQyxPQXVDQTtBQUMxQyw0SEF2Q0EsZ0VBQTJDLE9BdUNBO0FBQzNDLHdIQXZDQSw0REFBdUMsT0F1Q0E7QUFDdkMsdUhBdkNBLDJEQUFzQyxPQXVDQTtBQUN0QyxpSEF2Q0EscURBQWdDLE9BdUNBO0FBQ2hDLHFIQXZDQSx5REFBb0MsT0F1Q0E7QUFDcEMsdUhBdkNBLDJEQUFzQyxPQXVDQTtBQUN0Qyw0SEFsQ0EsZ0VBQTJDLE9Ba0NBO0FBQzNDLGtHQS9CQSxzQ0FBaUIsT0ErQkE7QUFDakIsbUdBL0JBLHVDQUFrQixPQStCQTtBQUNsQix1R0EvQkEsMkNBQXNCLE9BK0JBO0FBQ3RCLGdHQTlCQSxvQ0FBZSxPQThCQTtBQUNmLCtGQTlCQSxtQ0FBYyxPQThCQTtBQW9DaEI7O0dBRUc7QUFDSCxJQUFZLHFCQUlYO0FBSkQsV0FBWSxxQkFBcUI7SUFDL0Isc0NBQWEsQ0FBQTtJQUNiLDRDQUFtQixDQUFBO0lBQ25CLHdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUpXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBSWhDO0FBeUtELE9BQU8sQ0FBQyxhQUFhLEdBQUcsa0NBQWMsQ0FBQztBQW1EdkMsb0RBQW9EO0FBQ3BELE9BQU8sQ0FBQyxhQUFhLEdBQUcsa0NBQWMsQ0FBQztBQWlKdkMsT0FBTyxDQUFDLDJCQUEyQixHQUFHLGdEQUE0QixDQUFDO0FBNkNuRSxPQUFPLENBQUMscUJBQXFCLEdBQUcsMENBQXNCLENBQUM7QUEwQ3ZELE9BQU8sQ0FBQywyQkFBMkIsR0FBRyxnREFBNEIsQ0FBQztBQXdCbkUsT0FBTyxDQUFDLGlCQUFpQixHQUFHLHNDQUFrQixDQUFDO0FBdUUvQyxPQUFPLENBQUMsb0JBQW9CLEdBQUcseUNBQXFCLENBQUM7QUFTckQsU0FBZ0IscUJBQXFCLENBQUMsQ0FBTTtJQUMxQyxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFTRCxTQUFnQiw0QkFBNEIsQ0FBQyxDQUFNO0lBQ2pELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQTJFRCxPQUFPLENBQUMsdUJBQXVCLEdBQUcsNENBQXdCLENBQUM7QUF1RDNELE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxxQ0FBaUIsQ0FBQztBQW9CN0M7Ozs7OztHQU1HO0FBQ0gsSUFBWSxrQkFPWDtBQVBELFdBQVksa0JBQWtCO0lBQzVCLGdDQUFnQztJQUNoQyx1Q0FBaUIsQ0FBQTtJQUNqQixpQ0FBaUM7SUFDakMseUNBQW1CLENBQUE7SUFDbkIsa0NBQWtDO0lBQ2xDLDJDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFQVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQU83QjtBQW1KRDs7OztHQUlHO0FBQ0gsSUFBWSx5QkFhWDtBQWJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsMENBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gscURBQXdCLENBQUE7SUFDeEI7O09BRUc7SUFDSCw2RkFBZ0UsQ0FBQTtBQUNsRSxDQUFDLEVBYlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUFhcEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlLWV4cG9ydHMgb2YgbWVtYmVycyBhbmQgdHlwZXMgdGhhdCBoaXN0b3JpY2FsbHkgdXNlZCB0byBsaXZlIGhlcmUsIGJ1dCBoYXZlIGJlZW4gbW92ZWQgdG8gYSBtb3JlIGFwdCBwYWNrYWdlLlxuICpcbiAqIFJlLWV4cG9ydGVkIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICpcbiAqIFRvIHNhdGlzZnkgdGhlIChqc2lpKSB1c2Ugb2YgdGhlc2UgdHlwZXMgaW4gdGhlIHB1YmxpYyBBUEkgb2YgdGhpcyBwYWNrYWdlLCB3ZSBkbyB0aGUgZm9sbG93aW5nOlxuICpcbiAqIC0gUmUtZGVjbGFyZSB0aGUgdHlwZXMgdGhhdCB3ZSB1c2UgaW4gdGhpcyBhc3NlbWJseSBoZXJlIChgZGVjbGFyZSBjbGFzcyAuLi5gKS5cbiAqIC0gQ29weSB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgdXBzdHJlYW0gbGlicmFyeS5cbiAqXG4gKiBUaGF0IHdheSB3ZSBzYXRpc2Z5IHRoZSBqc2lpIGFuZCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBjaGVja2VyLCB3aGlsZSBrZWVwaW5nIHRoZSBpbXBsZW1lbnRhdGlvblxuICogY2VudHJhbGl6ZWQgaW4gYSBzaW5nbGUgcGxhY2UuXG4gKi9cbmltcG9ydCB7XG4gIEFTU0VUX1BSRUZJWF9TRVBBUkFUT1IsXG4gIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0RPQ0tFUl9CVUlMRF9BUkdTX0tFWSxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRE9DS0VSX0JVSUxEX0NPTlRFWFRTX0tFWSxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRE9DS0VSX0JVSUxEX1NFQ1JFVFNfS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9ET0NLRVJfQlVJTERfU1NIX0tFWSxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRE9DS0VSX0JVSUxEX1RBUkdFVF9LRVksXG4gIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0RPQ0tFUl9DQUNIRV9ESVNBQkxFRF9LRVksXG4gIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0RPQ0tFUl9DQUNIRV9GUk9NX0tFWSxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRE9DS0VSX0NBQ0hFX1RPX0tFWSxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRE9DS0VSX09VVFBVVFNfS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9ET0NLRVJGSUxFX1BBVEhfS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9FTkFCTEVEX0NPTlRFWFQsXG4gIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0lTX0JVTkRMRURfS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9QQVRIX0tFWSxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfUFJPUEVSVFlfS0VZLFxuICBBVkFJTEFCSUxJVFlfWk9ORV9GQUxMQkFDS19DT05URVhUX0tFWSxcbiAgQXNzZXRNYW5pZmVzdEFydGlmYWN0IGFzIEFzc2V0TWFuaWZlc3RBcnRpZmFjdF8sXG4gIENsb3VkQXJ0aWZhY3QgYXMgQ2xvdWRBcnRpZmFjdF8sXG4gIENsb3VkQXNzZW1ibHkgYXMgQ2xvdWRBc3NlbWJseV8sXG4gIENsb3VkQXNzZW1ibHlCdWlsZGVyIGFzIENsb3VkQXNzZW1ibHlCdWlsZGVyXyxcbiAgQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0IGFzIENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdF8sXG4gIEVORFBPSU5UX1NFUlZJQ0VfQVZBSUxBQklMSVRZX1pPTkVfUFJPVklERVIsXG4gIEVudmlyb25tZW50VXRpbHMgYXMgRW52aXJvbm1lbnRVdGlsc18sXG4gIEVudmlyb25tZW50UGxhY2Vob2xkZXJzIGFzIEVudmlyb25tZW50UGxhY2Vob2xkZXJzXyxcbiAgTmVzdGVkQ2xvdWRBc3NlbWJseUFydGlmYWN0IGFzIE5lc3RlZENsb3VkQXNzZW1ibHlBcnRpZmFjdF8sXG4gIFBBVEhfTUVUQURBVEFfS0VZLFxuICBQUk9WSURFUl9FUlJPUl9LRVksXG4gIFNTTVBBUkFNX05PX0lOVkFMSURBVEUsXG4gIFRyZWVDbG91ZEFydGlmYWN0IGFzIFRyZWVDbG91ZEFydGlmYWN0XyxcbiAgVU5LTk9XTl9BQ0NPVU5ULFxuICBVTktOT1dOX1JFR0lPTixcbiAgdHlwZSBBbWlDb250ZXh0UmVzcG9uc2UsXG4gIHR5cGUgQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UmVzcG9uc2UsXG4gIHR5cGUgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UmVzcG9uc2UsXG4gIHR5cGUgU3RhY2tNZXRhZGF0YSxcbn0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpJztcbmltcG9ydCB0eXBlICogYXMgY3hzY2hlbWEgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcblxuZXhwb3J0IHtcbiAgQVNTRVRfUFJFRklYX1NFUEFSQVRPUixcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRE9DS0VSX0JVSUxEX0FSR1NfS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9ET0NLRVJfQlVJTERfQ09OVEVYVFNfS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9ET0NLRVJfQlVJTERfU0VDUkVUU19LRVksXG4gIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0RPQ0tFUl9CVUlMRF9TU0hfS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9ET0NLRVJfQlVJTERfVEFSR0VUX0tFWSxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRE9DS0VSX0NBQ0hFX0RJU0FCTEVEX0tFWSxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRE9DS0VSX0NBQ0hFX0ZST01fS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9ET0NLRVJfQ0FDSEVfVE9fS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9ET0NLRVJfT1VUUFVUU19LRVksXG4gIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0RPQ0tFUkZJTEVfUEFUSF9LRVksXG4gIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0VOQUJMRURfQ09OVEVYVCxcbiAgQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfSVNfQlVORExFRF9LRVksXG4gIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX1BBVEhfS0VZLFxuICBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9QUk9QRVJUWV9LRVksXG4gIEFWQUlMQUJJTElUWV9aT05FX0ZBTExCQUNLX0NPTlRFWFRfS0VZLFxuICBFTkRQT0lOVF9TRVJWSUNFX0FWQUlMQUJJTElUWV9aT05FX1BST1ZJREVSLFxuICBQQVRIX01FVEFEQVRBX0tFWSxcbiAgUFJPVklERVJfRVJST1JfS0VZLFxuICBTU01QQVJBTV9OT19JTlZBTElEQVRFLFxuICBVTktOT1dOX0FDQ09VTlQsXG4gIFVOS05PV05fUkVHSU9OLFxuICBBbWlDb250ZXh0UmVzcG9uc2UsXG4gIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFJlc3BvbnNlLFxuICBFbmRwb2ludFNlcnZpY2VBdmFpbGFiaWxpdHlab25lc0NvbnRleHRSZXNwb25zZSxcbiAgU3RhY2tNZXRhZGF0YSxcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvcHkvcGFzdGUgb2Ygc29tZSB0eXBlcyB3ZSB1c2UgaW4gdGhlIHB1YmxpYyBBUEkgb2YgYGF3cy1jZGstbGliYC5cbi8vXG4vLyBqc2lpIGhhcyBhIGxpbWl0YXRpb24vYnVnLCBpbiB0aGF0OlxuLy9cbi8vIC0gaXQgd2lsbCBjb3JyZWN0bHkgY29uc2lkZXIgdHlwZXMgKmV4cG9ydGVkKiBoZXJlIGFzIHNlZW1pbmcgdG8gb3JpZ2luYXRlXG4vLyAgIGZyb20gdGhlIGN1cnJlbnQganNpaSBhc3NlbWJseTsgQlVUXG4vLyAtIHR5cGVzICp1c2VkKiBpbiB0aGUgY3VycmVudCBhc3NlbWJseSB3aWxsIGJlIHJlc29sdmVkIGFsbCB0aGUgd2F5IHRvIHRoZWlyXG4vLyAgIHNvdXJjZSBkZWZpbml0aW9uLCB3aGljaCBpbiB0aGlzIGNhc2UgaXMgbm90IGEganNpaSBhc3NlbWJseS5cbi8vXG4vLyBTbyB0aGUgdHlwZXMgdXNlZCBpbiBgYXdzLWNkay1saWJgIG11c3QgaGF2ZSB0aGVpciBkZWZpbml0aW9uIHNpdGUgaGVyZSxcbi8vIGFuZCB0aGUgb25seSB3YXkgdG8gZ2V0IHRoYXQgY29ycmVjdCBpczpcbi8vXG4vLyAtIEZvciB0eXBlczogZGVjbGFyaW5nIHRoZW0gaGVyZSBhbmQgdXNpbmcgVFMgdG8gYXNzZXJ0IHRoYXQgdGhlIHR5cGVzIGFyZSBlcXVpdmFsZW50LlxuLy8gLSBGb3IgY2xhc3NlczogZGVjbGFyaW5nIHRoZW0gaGVyZSBhbmQgdXNpbmcgcnVudGltZSBKUyB0cmlja2VyeSB0byB1c2UgdGhlXG4vLyAgIHVuZGVybHlpbmcgY2xhc3MgdHlwZS5cbi8vXG4vLyBUaGlzIGlzIGFuIGluZGljYXRpb24gb2YgYSBtaXNzaW5nIGpzaWkgZmVhdHVyZSwgdGhhdCB3ZSBtaWdodCBvciBtaWdodCBub3QgYnVpbGQuXG4vLyBGb3Igbm93LCB0aGlzJ2xsIGRvIChwaWcpLlxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoZSBvZmZpY2lhbCBkZWZpbml0aW9uIG9mIHRoaXMgdHlwZSBoYXMgbW92ZWQgdG8gYEBhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhlc2lzTWVzc2FnZSB7XG4gIHJlYWRvbmx5IGxldmVsOiBTeW50aGVzaXNNZXNzYWdlTGV2ZWw7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudHJ5OiBjeHNjaGVtYS5NZXRhZGF0YUVudHJ5O1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoZSBvZmZpY2lhbCBkZWZpbml0aW9uIG9mIHRoaXMgdHlwZSBoYXMgbW92ZWQgdG8gYEBhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaWAuXG4gKi9cbmV4cG9ydCBlbnVtIFN5bnRoZXNpc01lc3NhZ2VMZXZlbCB7XG4gIElORk8gPSAnaW5mbycsXG4gIFdBUk5JTkcgPSAnd2FybmluZycsXG4gIEVSUk9SID0gJ2Vycm9yJyxcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGBzdGFjay5yZXBvcnRNaXNzaW5nQ29udGV4dCgpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBgc3RhY2sucmVwb3J0TWlzc2luZ0NvbnRleHRLZXkoKWAgaW5zdGVhZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBtaXNzaW5nIGNvbnRleHQga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJvdmlkZXIgZnJvbSB3aGljaCB3ZSBleHBlY3QgdGhpcyBjb250ZXh0IGtleSB0byBiZSBvYnRhaW5lZC5cbiAgICpcbiAgICogKFRoaXMgaXMgdGhlIG9sZCB1bnR5cGVkIGRlZmluaXRpb24sIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gICAqIFNlZSBjeHNjaGVtYSBmb3IgYSB0eXBlIGRlZmluaXRpb24uKVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc2V0IG9mIHByb3ZpZGVyLXNwZWNpZmljIG9wdGlvbnMuXG4gICAqXG4gICAqIChUaGlzIGlzIHRoZSBvbGQgdW50eXBlZCBkZWZpbml0aW9uLCB3aGljaCBpcyBuZWNlc3NhcnkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAgKiBTZWUgY3hzY2hlbWEgZm9yIGEgdHlwZSBkZWZpbml0aW9uLilcbiAgICovXG4gIHJlYWRvbmx5IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBkZXBsb3lhYmxlIGNsb3VkIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDbG91ZEFzc2VtYmx5IGltcGxlbWVudHMgY3hzY2hlbWEuSUNsb3VkQXNzZW1ibHkge1xuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIENsb3VkQXNzZW1ibHkuXG4gICAqXG4gICAqIFdlIGRvIGF0dHJpYnV0ZSBkZXRlY3Rpb24gc2luY2Ugd2UgY2FuJ3QgcmVsaWFibHkgdXNlICdpbnN0YW5jZW9mJy5cbiAgICovXG4gIHN0YXRpYyBpc0Nsb3VkQXNzZW1ibHkoeDogYW55KTogeCBpcyBDbG91ZEFzc2VtYmx5O1xuICAvKipcbiAgICogQ2xlYW5zIHVwIGFueSB0ZW1wb3JhcnkgYXNzZW1ibHkgZGlyZWN0b3JpZXMgdGhhdCBnb3QgY3JlYXRlZCBpbiB0aGlzIHByb2Nlc3NcbiAgICpcbiAgICogSWYgYSBDbG91ZCBBc3NlbWJseSBpcyBlbWl0dGVkIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSwgaXRzIGRpcmVjdG9yeSBnZXRzXG4gICAqIGFkZGVkIHRvIGEgbGlzdC4gVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyBvdmVyIHRoYXQgbGlzdCBhbmQgZGVsZXRlcyBlYWNoXG4gICAqIGRpcmVjdG9yeSBpbiBpdCwgdG8gZnJlZSB1cCBkaXNrIHNwYWNlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgbm9ybWFsbHkgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgZHVyaW5nIE5vZGUgcHJvY2Vzc1xuICAgKiBleGl0IGFuZCBzbyB5b3UgZG9uJ3QgbmVlZCB0byBjYWxsIHRoaXMuIEhvd2V2ZXIsIHNvbWUgdGVzdCBlbnZpcm9ubWVudHMgZG9cbiAgICogbm90IHByb3Blcmx5IHRyaWdnZXIgTm9kZSdzIGBleGl0YCBldmVudC4gTm90YWJseTogSmVzdCBkb2VzIG5vdCB0cmlnZ2VyXG4gICAqIHRoZSBgZXhpdGAgZXZlbnQgKDxodHRwczovL2dpdGh1Yi5jb20vamVzdGpzL2plc3QvaXNzdWVzLzEwOTI3PikuXG4gICAqXG4gICAqICMjIENsZWFuaW5nIHVwIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBpbiBqZXN0XG4gICAqXG4gICAqIEZvciBKZXN0LCB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgdGhlIGVuZCBvZiB0aGVcbiAgICogdGVzdCBzdWl0ZSBpbnN0ZWFkOlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBpbXBvcnQgeyBDbG91ZEFzc2VtYmx5IH0gZnJvbSAnYXdzLWNkay1saWIvY3gtYXBpJztcbiAgICpcbiAgICogYWZ0ZXJBbGwoQ2xvdWRBc3NlbWJseS5jbGVhbnVwVGVtcG9yYXJ5RGlyZWN0b3JpZXMpO1xuICAgKiBgYGBcbiAgICpcbiAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGBzZXR1cEZpbGVzQWZ0ZXJFbnZgIGZlYXR1cmUgYW5kIHVzZSBhXG4gICAqIHByb3ZpZGVkIGhlbHBlciBzY3JpcHQgdG8gYXV0b21hdGljYWxseSBpbmplY3QgdGhlIGFib3ZlIGludG8gZXZlcnlcbiAgICogdGVzdCBmaWxlLCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBieSBoYW5kLlxuICAgKlxuICAgKiBgYGBcbiAgICogJCBucHggamVzdCAtLXNldHVwRmlsZXNBZnRlckVudiBhd3MtY2RrLWxpYi90ZXN0aGVscGVycy9qZXN0LWF1dG9jbGVhblxuICAgKiBgYGBcbiAgICpcbiAgICogT3IgcHV0IHRoZSBmb2xsb3dpbmcgaW50byBgamVzdC5jb25maWcuanNgOlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICogICAvLyAuLi5cbiAgICogICBzZXR1cEZpbGVzQWZ0ZXJFbnY6IFsnYXdzLWNkay1saWIvdGVzdGhlbHBlcnMvamVzdC1jbGVhbnVwJ10sXG4gICAqIH07XG4gICAqIGBgYFxuICAgKi9cbiAgc3RhdGljIGNsZWFudXBUZW1wb3JhcnlEaXJlY3RvcmllcygpOiB2b2lkO1xuICAvKipcbiAgICogVGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBjbG91ZCBhc3NlbWJseS5cbiAgICovXG4gIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNjaGVtYSB2ZXJzaW9uIG9mIHRoZSBhc3NlbWJseSBtYW5pZmVzdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbCBhcnRpZmFjdHMgaW5jbHVkZWQgaW4gdGhpcyBhc3NlbWJseS5cbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0czogQ2xvdWRBcnRpZmFjdFtdO1xuICAvKipcbiAgICogUnVudGltZSBpbmZvcm1hdGlvbiBzdWNoIGFzIG1vZHVsZSB2ZXJzaW9ucyB1c2VkIHRvIHN5bnRoZXNpemUgdGhpcyBhc3NlbWJseS5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU6IGN4c2NoZW1hLlJ1bnRpbWVJbmZvO1xuICAvKipcbiAgICogVGhlIHJhdyBhc3NlbWJseSBtYW5pZmVzdC5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmlmZXN0OiBjeHNjaGVtYS5Bc3NlbWJseU1hbmlmZXN0O1xuICAvKipcbiAgICogUmVhZHMgYSBjbG91ZCBhc3NlbWJseSBmcm9tIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0gZGlyZWN0b3J5IC0gVGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBhc3NlbWJseS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGRpcmVjdG9yeTogc3RyaW5nLCBsb2FkT3B0aW9ucz86IGN4c2NoZW1hLkxvYWRNYW5pZmVzdE9wdGlvbnMpO1xuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZmluZCBhbiBhcnRpZmFjdCB3aXRoIGEgc3BlY2lmaWMgaWRlbnRpdHkuXG4gICAqIEByZXR1cm5zIEEgYENsb3VkQXJ0aWZhY3RgIG9iamVjdCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgYXJ0aWZhY3QgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBhc3NlbWJseS5cbiAgICogQHBhcmFtIGlkIC0gVGhlIGFydGlmYWN0IElEXG4gICAqL1xuICB0cnlHZXRBcnRpZmFjdChpZDogc3RyaW5nKTogQ2xvdWRBcnRpZmFjdCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFJldHVybnMgYSBDbG91ZEZvcm1hdGlvbiBzdGFjayBhcnRpZmFjdCBmcm9tIHRoaXMgYXNzZW1ibHkuXG4gICAqXG4gICAqIFdpbGwgb25seSBzZWFyY2ggdGhlIGN1cnJlbnQgYXNzZW1ibHkuXG4gICAqXG4gICAqIEBwYXJhbSBzdGFja05hbWUgLSB0aGUgbmFtZSBvZiB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqIEB0aHJvd3MgaWYgdGhlcmUgaXMgbm8gc3RhY2sgYXJ0aWZhY3QgYnkgdGhhdCBuYW1lXG4gICAqIEB0aHJvd3MgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBzdGFjayB3aXRoIHRoZSBzYW1lIHN0YWNrIG5hbWUuIFlvdSBjYW5cbiAgICogdXNlIGBnZXRTdGFja0FydGlmYWN0KHN0YWNrLmFydGlmYWN0SWQpYCBpbnN0ZWFkLlxuICAgKiBAcmV0dXJucyBhIGBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RgIG9iamVjdC5cbiAgICovXG4gIGdldFN0YWNrQnlOYW1lKHN0YWNrTmFtZTogc3RyaW5nKTogQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0O1xuICAvKipcbiAgICogUmV0dXJucyBhIENsb3VkRm9ybWF0aW9uIHN0YWNrIGFydGlmYWN0IGJ5IG5hbWUgZnJvbSB0aGlzIGFzc2VtYmx5LlxuICAgKiBAZGVwcmVjYXRlZCByZW5hbWVkIHRvIGBnZXRTdGFja0J5TmFtZWAgKG9yIGBnZXRTdGFja0FydGlmYWN0KGlkKWApXG4gICAqL1xuICBnZXRTdGFjayhzdGFja05hbWU6IHN0cmluZyk6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcbiAgLyoqXG4gICAqIFJldHVybnMgYSBDbG91ZEZvcm1hdGlvbiBzdGFjayBhcnRpZmFjdCBmcm9tIHRoaXMgYXNzZW1ibHkuXG4gICAqXG4gICAqIEBwYXJhbSBhcnRpZmFjdElkIC0gdGhlIGFydGlmYWN0IGlkIG9mIHRoZSBzdGFjayAoY2FuIGJlIG9idGFpbmVkIHRocm91Z2ggYHN0YWNrLmFydGlmYWN0SWRgKS5cbiAgICogQHRocm93cyBpZiB0aGVyZSBpcyBubyBzdGFjayBhcnRpZmFjdCB3aXRoIHRoYXQgaWRcbiAgICogQHJldHVybnMgYSBgQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0YCBvYmplY3QuXG4gICAqL1xuICBnZXRTdGFja0FydGlmYWN0KGFydGlmYWN0SWQ6IHN0cmluZyk6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcbiAgcHJpdmF0ZSB0cnlHZXRBcnRpZmFjdFJlY3Vyc2l2ZWx5O1xuICAvKipcbiAgICogUmV0dXJucyBhbGwgdGhlIHN0YWNrcywgaW5jbHVkaW5nIHRoZSBvbmVzIGluIG5lc3RlZCBhc3NlbWJsaWVzXG4gICAqL1xuICBnZXQgc3RhY2tzUmVjdXJzaXZlbHkoKTogQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0W107XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmVzdGVkIGFzc2VtYmx5IGFydGlmYWN0LlxuICAgKlxuICAgKiBAcGFyYW0gYXJ0aWZhY3RJZCAtIFRoZSBhcnRpZmFjdCBJRCBvZiB0aGUgbmVzdGVkIGFzc2VtYmx5XG4gICAqL1xuICBnZXROZXN0ZWRBc3NlbWJseUFydGlmYWN0KGFydGlmYWN0SWQ6IHN0cmluZyk6IE5lc3RlZENsb3VkQXNzZW1ibHlBcnRpZmFjdDtcbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXN0ZWQgYXNzZW1ibHkuXG4gICAqXG4gICAqIEBwYXJhbSBhcnRpZmFjdElkIC0gVGhlIGFydGlmYWN0IElEIG9mIHRoZSBuZXN0ZWQgYXNzZW1ibHlcbiAgICovXG4gIGdldE5lc3RlZEFzc2VtYmx5KGFydGlmYWN0SWQ6IHN0cmluZyk6IENsb3VkQXNzZW1ibHk7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0cmVlIG1ldGFkYXRhIGFydGlmYWN0IGZyb20gdGhpcyBhc3NlbWJseS5cbiAgICogQHRocm93cyBpZiB0aGVyZSBpcyBubyBtZXRhZGF0YSBhcnRpZmFjdCBieSB0aGF0IG5hbWVcbiAgICogQHJldHVybnMgYSBgVHJlZUNsb3VkQXJ0aWZhY3RgIG9iamVjdCBpZiB0aGVyZSBpcyBvbmUgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QsIGB1bmRlZmluZWRgIG90aGVyd2lzZS5cbiAgICovXG4gIHRyZWUoKTogVHJlZUNsb3VkQXJ0aWZhY3QgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcmV0dXJucyBhbGwgdGhlIENsb3VkRm9ybWF0aW9uIHN0YWNrIGFydGlmYWN0cyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGlzIGFzc2VtYmx5LlxuICAgKi9cbiAgZ2V0IHN0YWNrcygpOiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXTtcbiAgLyoqXG4gICAqIFRoZSBuZXN0ZWQgYXNzZW1ibHkgYXJ0aWZhY3RzIGluIHRoaXMgYXNzZW1ibHlcbiAgICovXG4gIGdldCBuZXN0ZWRBc3NlbWJsaWVzKCk6IE5lc3RlZENsb3VkQXNzZW1ibHlBcnRpZmFjdFtdO1xuICBwcml2YXRlIHZhbGlkYXRlRGVwcztcbiAgcHJpdmF0ZSByZW5kZXJBcnRpZmFjdHM7XG59XG5leHBvcnRzLkNsb3VkQXNzZW1ibHkgPSBDbG91ZEFzc2VtYmx5XztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGFydGlmYWN0IHdpdGhpbiBhIGNsb3VkIGFzc2VtYmx5LlxuICovXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDbG91ZEFydGlmYWN0IHtcbiAgcmVhZG9ubHkgYXNzZW1ibHk6IENsb3VkQXNzZW1ibHk7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3ViY2xhc3Mgb2YgYENsb3VkQXJ0aWZhY3RgIGJhc2VkIG9uIHRoZSBhcnRpZmFjdCB0eXBlIGRlZmluZWQgaW4gdGhlIGFydGlmYWN0IG1hbmlmZXN0LlxuICAgKlxuICAgKiBAcGFyYW0gYXNzZW1ibHkgLSBUaGUgY2xvdWQgYXNzZW1ibHkgZnJvbSB3aGljaCB0byBsb2FkIHRoZSBhcnRpZmFjdFxuICAgKiBAcGFyYW0gaWQgLSBUaGUgYXJ0aWZhY3QgSURcbiAgICogQHBhcmFtIGFydGlmYWN0IC0gVGhlIGFydGlmYWN0IG1hbmlmZXN0XG4gICAqIEByZXR1cm5zIHRoZSBgQ2xvdWRBcnRpZmFjdGAgdGhhdCBtYXRjaGVzIHRoZSBhcnRpZmFjdCB0eXBlIG9yIGB1bmRlZmluZWRgIGlmIGl0J3MgYW4gYXJ0aWZhY3QgdHlwZSB0aGF0IGlzIHVucmVjb2duaXplZCBieSB0aGlzIG1vZHVsZS5cbiAgICovXG4gIHN0YXRpYyBmcm9tTWFuaWZlc3QoYXNzZW1ibHk6IENsb3VkQXNzZW1ibHksIGlkOiBzdHJpbmcsIGFydGlmYWN0OiBjeHNjaGVtYS5BcnRpZmFjdE1hbmlmZXN0KTogQ2xvdWRBcnRpZmFjdCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBhcnRpZmFjdCdzIG1hbmlmZXN0XG4gICAqL1xuICByZWFkb25seSBtYW5pZmVzdDogY3hzY2hlbWEuQXJ0aWZhY3RNYW5pZmVzdDtcbiAgLyoqXG4gICAqIFRoZSBzZXQgb2YgbWVzc2FnZXMgZXh0cmFjdGVkIGZyb20gdGhlIGFydGlmYWN0J3MgbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlczogU3ludGhlc2lzTWVzc2FnZVtdO1xuICAvKipcbiAgICogQ2FjaGUgb2YgcmVzb2x2ZWQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfZGVwcz87XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihhc3NlbWJseTogQ2xvdWRBc3NlbWJseSwgaWQ6IHN0cmluZywgbWFuaWZlc3Q6IGN4c2NoZW1hLkFydGlmYWN0TWFuaWZlc3QpO1xuICAvKipcbiAgICogUmV0dXJucyBhbGwgdGhlIGFydGlmYWN0cyB0aGF0IHRoaXMgYXJ0aWZhY3QgZGVwZW5kcyBvbi5cbiAgICovXG4gIGdldCBkZXBlbmRlbmNpZXMoKTogQ2xvdWRBcnRpZmFjdFtdO1xuICAvKipcbiAgICogQHJldHVybnMgYWxsIHRoZSBtZXRhZGF0YSBlbnRyaWVzIG9mIGEgc3BlY2lmaWMgdHlwZSBpbiB0aGlzIGFydGlmYWN0LlxuICAgKi9cbiAgZmluZE1ldGFkYXRhQnlUeXBlKHR5cGU6IHN0cmluZyk6IE1ldGFkYXRhRW50cnlSZXN1bHRbXTtcbiAgcHJpdmF0ZSByZW5kZXJNZXNzYWdlcztcbiAgLyoqXG4gICAqIEFuIGlkZW50aWZpZXIgdGhhdCBzaG93cyB3aGVyZSB0aGlzIGFydGlmYWN0IGlzIGxvY2F0ZWQgaW4gdGhlIHRyZWVcbiAgICogb2YgbmVzdGVkIGFzc2VtYmxpZXMsIGJhc2VkIG9uIHRoZWlyIG1hbmlmZXN0cy4gRGVmYXVsdHMgdG8gdGhlIG5vcm1hbFxuICAgKiBpZC4gU2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB1c2VyIGludGVyZmFjZXMuXG4gICAqL1xuICBnZXQgaGllcmFyY2hpY2FsSWQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBDbG91ZCBBcnRpZmFjdFxuICAgKi9cbiAgZ2V0IG1ldGFkYXRhKCk6IFJlY29yZDxzdHJpbmcsIGN4c2NoZW1hLk1ldGFkYXRhRW50cnlbXT47XG59XG4vLyBNYWtlIHRoZXNlIGNsYXNzZXMgZXF1YWwgdG8gdGhlIHVwc3RyZWFtIHZlcnNpb25zXG5leHBvcnRzLkNsb3VkQXJ0aWZhY3QgPSBDbG91ZEFydGlmYWN0XztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0IGV4dGVuZHMgQ2xvdWRBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYGFydGAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy5cbiAgICpcbiAgICogVXNlIHRoaXMgbWV0aG9kIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIHRvIHByb3Blcmx5IGRldGVjdCBgQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0YFxuICAgKiBpbnN0YW5jZXMsIGV2ZW4gd2hlbiB0aGUgY29uc3RydWN0IGxpYnJhcnkgaXMgc3ltbGlua2VkLlxuICAgKlxuICAgKiBFeHBsYW5hdGlvbjogaW4gSmF2YVNjcmlwdCwgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBgY3gtYXBpYCBsaWJyYXJ5IG9uXG4gICAqIGRpc2sgYXJlIHNlZW4gYXMgaW5kZXBlbmRlbnQsIGNvbXBsZXRlbHkgZGlmZmVyZW50IGxpYnJhcmllcy4gQXMgYVxuICAgKiBjb25zZXF1ZW5jZSwgdGhlIGNsYXNzIGBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RgIGluIGVhY2ggY29weSBvZiB0aGUgYGN4LWFwaWAgbGlicmFyeVxuICAgKiBpcyBzZWVuIGFzIGEgZGlmZmVyZW50IGNsYXNzLCBhbmQgYW4gaW5zdGFuY2Ugb2Ygb25lIGNsYXNzIHdpbGwgbm90IHRlc3QgYXNcbiAgICogYGluc3RhbmNlb2ZgIHRoZSBvdGhlciBjbGFzcy4gYG5wbSBpbnN0YWxsYCB3aWxsIG5vdCBjcmVhdGUgaW5zdGFsbGF0aW9uc1xuICAgKiBsaWtlIHRoaXMsIGJ1dCB1c2VycyBtYXkgbWFudWFsbHkgc3ltbGluayBjb25zdHJ1Y3QgbGlicmFyaWVzIHRvZ2V0aGVyIG9yXG4gICAqIHVzZSBhIG1vbm9yZXBvIHRvb2w6IGluIHRob3NlIGNhc2VzLCBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIGBjeC1hcGlgXG4gICAqIGxpYnJhcnkgY2FuIGJlIGFjY2lkZW50YWxseSBpbnN0YWxsZWQsIGFuZCBgaW5zdGFuY2VvZmAgd2lsbCBiZWhhdmVcbiAgICogdW5wcmVkaWN0YWJseS4gSXQgaXMgc2FmZXN0IHRvIGF2b2lkIHVzaW5nIGBpbnN0YW5jZW9mYCwgYW5kIHVzaW5nXG4gICAqIHRoaXMgdHlwZS10ZXN0aW5nIG1ldGhvZCBpbnN0ZWFkLlxuICAgKi9cbiAgc3RhdGljIGlzQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KGFydDogYW55KTogYXJ0IGlzIENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG5hbWUgb2YgdGhlIHRlbXBsYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVGaWxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgbmFtZSBhcyBkZWZpbmVkIGluIHRoZSBDREsgYXBwLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbnkgYXNzZXRzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRzOiBjeHNjaGVtYS5Bc3NldE1ldGFkYXRhRW50cnlbXTtcbiAgLyoqXG4gICAqIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnMgdG8gcGFzcyB0byB0aGUgc3RhY2suXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzOiB7XG4gICAgW2lkOiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBDbG91ZEZvcm1hdGlvbiB0YWdzIHRvIHBhc3MgdG8gdGhlIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFnczoge1xuICAgIFtpZDogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuICAvKipcbiAgICogU05TIFRvcGljcyB0aGF0IHdpbGwgcmVjZWl2ZSBzdGFjayBldmVudHMuXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25Bcm5zPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgbmFtZSBvZiB0aGlzIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhpcyBzdGFjay4gU2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB1c2VyXG4gICAqIGludGVyZmFjZXMuIElmIHRoZSBzdGFja05hbWUgaGFzIG5vdCBiZWVuIHNldCBleHBsaWNpdGx5LCBvciBoYXMgYmVlbiBzZXRcbiAgICogdG8gYXJ0aWZhY3RJZCwgaXQgd2lsbCByZXR1cm4gdGhlIGhpZXJhcmNoaWNhbElkIG9mIHRoZSBzdGFjay4gT3RoZXJ3aXNlLFxuICAgKiBpdCB3aWxsIHJldHVybiBzb21ldGhpbmcgbGlrZSBcIjxoaWVyYXJjaGljYWxJZD4gKDxzdGFja05hbWU+KVwiXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBoeXNpY2FsIG5hbWUgb2YgdGhpcyBzdGFjay5cbiAgICogQGRlcHJlY2F0ZWQgcmVuYW1lZCB0byBgc3RhY2tOYW1lYFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGludG8gd2hpY2ggdG8gZGVwbG95IHRoaXMgYXJ0aWZhY3QuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IG5lZWRzIHRvIGJlIGFzc3VtZWQgdG8gZGVwbG95IHRoZSBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvbGUgaXMgYXNzdW1lZCAoY3VycmVudCBjcmVkZW50aWFscyBhcmUgdXNlZClcbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHRlcm5hbCBJRCB0byB1c2Ugd2hlbiBhc3N1bWluZyByb2xlIGZvciBjbG91ZGZvcm1hdGlvbiBkZXBsb3ltZW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGV4dGVybmFsIElEXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlRXh0ZXJuYWxJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlIGZvciBjbG91ZGZvcm1hdGlvbiBkZXBsb3ltZW50cy5cbiAgICpcbiAgICogLSBgUm9sZUFybmAgc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgdGhlIGRlZGljYXRlZCBgYXNzdW1lUm9sZUFybmAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICogLSBgRXh0ZXJuYWxJZGAgc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgdGhlIGRlZGljYXRlZCBgYXNzdW1lUm9sZUV4dGVybmFsSWRgIGluc3RlYWQuXG4gICAqIC0gYFRyYW5zaXRpdmVUYWdLZXlzYCBkZWZhdWx0cyB0byB1c2UgYWxsIGtleXMgKGlmIGFueSkgc3BlY2lmaWVkIGluIGBUYWdzYC4gRS5nLCBhbGwgdGFncyBhcmUgdHJhbnNpdGl2ZSBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0byB1c2UgdG8gbG9vayB1cCB2YWx1ZXMgZnJvbSB0aGUgdGFyZ2V0IEFXUyBhY2NvdW50XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBhc3N1bWVkIChjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSB1c2VkKVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZT86IGN4c2NoZW1hLkJvb3RzdHJhcFJvbGU7XG4gIC8qKlxuICAgKiBJZiB0aGUgc3RhY2sgdGVtcGxhdGUgaGFzIGFscmVhZHkgYmVlbiBpbmNsdWRlZCBpbiB0aGUgYXNzZXQgbWFuaWZlc3QsIGl0cyBhc3NldCBVUkxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb3QgdXBsb2FkZWQgeWV0LCB1cGxvYWQganVzdCBiZWZvcmUgZGVwbG95aW5nXG4gICAqL1xuICByZWFkb25seSBzdGFja1RlbXBsYXRlQXNzZXRPYmplY3RVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgd2l0aCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERpc2NvdmVyIFNTTSBwYXJhbWV0ZXIgYnkgcmVhZGluZyBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0ZXJtaW5hdGlvbiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgZm9yIHRoaXMgc3RhY2suXG4gICAqL1xuICByZWFkb25seSB0ZXJtaW5hdGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGlzIHN0YWNrIHNob3VsZCBiZSB2YWxpZGF0ZWQgYnkgdGhlIENMSSBhZnRlciBzeW50aGVzaXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVPblN5bnRoPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdGVtcGxhdGU7XG4gIGNvbnN0cnVjdG9yKGFzc2VtYmx5OiBDbG91ZEFzc2VtYmx5LCBhcnRpZmFjdElkOiBzdHJpbmcsIGFydGlmYWN0OiBjeHNjaGVtYS5BcnRpZmFjdE1hbmlmZXN0KTtcbiAgLyoqXG4gICAqIEZ1bGwgcGF0aCB0byB0aGUgdGVtcGxhdGUgZmlsZVxuICAgKi9cbiAgZ2V0IHRlbXBsYXRlRnVsbFBhdGgoKTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciB0aGlzIHN0YWNrLlxuICAgKi9cbiAgZ2V0IHRlbXBsYXRlKCk6IGFueTtcbn1cbmV4cG9ydHMuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0ID0gQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0XztcblxuLyoqXG4gKiBBc3NldCBtYW5pZmVzdCBpcyBhIGRlc2NyaXB0aW9uIG9mIGEgc2V0IG9mIGFzc2V0cyB3aGljaCBuZWVkIHRvIGJlIGJ1aWx0IGFuZCBwdWJsaXNoZWRcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQXNzZXRNYW5pZmVzdEFydGlmYWN0IGV4dGVuZHMgQ2xvdWRBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYGFydGAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy5cbiAgICpcbiAgICogVXNlIHRoaXMgbWV0aG9kIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIHRvIHByb3Blcmx5IGRldGVjdCBgQXNzZXRNYW5pZmVzdEFydGlmYWN0YFxuICAgKiBpbnN0YW5jZXMsIGV2ZW4gd2hlbiB0aGUgY29uc3RydWN0IGxpYnJhcnkgaXMgc3ltbGlua2VkLlxuICAgKlxuICAgKiBFeHBsYW5hdGlvbjogaW4gSmF2YVNjcmlwdCwgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBgY3gtYXBpYCBsaWJyYXJ5IG9uXG4gICAqIGRpc2sgYXJlIHNlZW4gYXMgaW5kZXBlbmRlbnQsIGNvbXBsZXRlbHkgZGlmZmVyZW50IGxpYnJhcmllcy4gQXMgYVxuICAgKiBjb25zZXF1ZW5jZSwgdGhlIGNsYXNzIGBBc3NldE1hbmlmZXN0QXJ0aWZhY3RgIGluIGVhY2ggY29weSBvZiB0aGUgYGN4LWFwaWAgbGlicmFyeVxuICAgKiBpcyBzZWVuIGFzIGEgZGlmZmVyZW50IGNsYXNzLCBhbmQgYW4gaW5zdGFuY2Ugb2Ygb25lIGNsYXNzIHdpbGwgbm90IHRlc3QgYXNcbiAgICogYGluc3RhbmNlb2ZgIHRoZSBvdGhlciBjbGFzcy4gYG5wbSBpbnN0YWxsYCB3aWxsIG5vdCBjcmVhdGUgaW5zdGFsbGF0aW9uc1xuICAgKiBsaWtlIHRoaXMsIGJ1dCB1c2VycyBtYXkgbWFudWFsbHkgc3ltbGluayBjb25zdHJ1Y3QgbGlicmFyaWVzIHRvZ2V0aGVyIG9yXG4gICAqIHVzZSBhIG1vbm9yZXBvIHRvb2w6IGluIHRob3NlIGNhc2VzLCBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIGBjeC1hcGlgXG4gICAqIGxpYnJhcnkgY2FuIGJlIGFjY2lkZW50YWxseSBpbnN0YWxsZWQsIGFuZCBgaW5zdGFuY2VvZmAgd2lsbCBiZWhhdmVcbiAgICogdW5wcmVkaWN0YWJseS4gSXQgaXMgc2FmZXN0IHRvIGF2b2lkIHVzaW5nIGBpbnN0YW5jZW9mYCwgYW5kIHVzaW5nXG4gICAqIHRoaXMgdHlwZS10ZXN0aW5nIG1ldGhvZCBpbnN0ZWFkLlxuICAgKi9cbiAgc3RhdGljIGlzQXNzZXRNYW5pZmVzdEFydGlmYWN0KHRoaXM6IHZvaWQsIGFydDogYW55KTogYXJ0IGlzIEFzc2V0TWFuaWZlc3RBcnRpZmFjdDtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG5hbWUgb2YgdGhlIGFzc2V0IG1hbmlmZXN0XG4gICAqL1xuICByZWFkb25seSBmaWxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE5hbWUgb2YgU1NNIHBhcmFtZXRlciB3aXRoIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGlzY292ZXIgU1NNIHBhcmFtZXRlciBieSByZWFkaW5nIHN0YWNrXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbnRlbnRzPztcbiAgY29uc3RydWN0b3IoYXNzZW1ibHk6IENsb3VkQXNzZW1ibHksIG5hbWU6IHN0cmluZywgYXJ0aWZhY3Q6IGN4c2NoZW1hLkFydGlmYWN0TWFuaWZlc3QpO1xuICAvKipcbiAgICogVGhlIEFzc2V0IE1hbmlmZXN0IGNvbnRlbnRzXG4gICAqL1xuICBnZXQgY29udGVudHMoKTogY3hzY2hlbWEuQXNzZXRNYW5pZmVzdDtcbn1cbmV4cG9ydHMuQXNzZXRNYW5pZmVzdEFydGlmYWN0ID0gQXNzZXRNYW5pZmVzdEFydGlmYWN0XztcblxuLyoqXG4gKiBBc3NldCBtYW5pZmVzdCBpcyBhIGRlc2NyaXB0aW9uIG9mIGEgc2V0IG9mIGFzc2V0cyB3aGljaCBuZWVkIHRvIGJlIGJ1aWx0IGFuZCBwdWJsaXNoZWRcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgTmVzdGVkQ2xvdWRBc3NlbWJseUFydGlmYWN0IGV4dGVuZHMgQ2xvdWRBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYGFydGAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy5cbiAgICpcbiAgICogVXNlIHRoaXMgbWV0aG9kIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIHRvIHByb3Blcmx5IGRldGVjdCBgTmVzdGVkQ2xvdWRBc3NlbWJseUFydGlmYWN0YFxuICAgKiBpbnN0YW5jZXMsIGV2ZW4gd2hlbiB0aGUgY29uc3RydWN0IGxpYnJhcnkgaXMgc3ltbGlua2VkLlxuICAgKlxuICAgKiBFeHBsYW5hdGlvbjogaW4gSmF2YVNjcmlwdCwgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBgY3gtYXBpYCBsaWJyYXJ5IG9uXG4gICAqIGRpc2sgYXJlIHNlZW4gYXMgaW5kZXBlbmRlbnQsIGNvbXBsZXRlbHkgZGlmZmVyZW50IGxpYnJhcmllcy4gQXMgYVxuICAgKiBjb25zZXF1ZW5jZSwgdGhlIGNsYXNzIGBOZXN0ZWRDbG91ZEFzc2VtYmx5QXJ0aWZhY3RgIGluIGVhY2ggY29weSBvZiB0aGUgYGN4LWFwaWAgbGlicmFyeVxuICAgKiBpcyBzZWVuIGFzIGEgZGlmZmVyZW50IGNsYXNzLCBhbmQgYW4gaW5zdGFuY2Ugb2Ygb25lIGNsYXNzIHdpbGwgbm90IHRlc3QgYXNcbiAgICogYGluc3RhbmNlb2ZgIHRoZSBvdGhlciBjbGFzcy4gYG5wbSBpbnN0YWxsYCB3aWxsIG5vdCBjcmVhdGUgaW5zdGFsbGF0aW9uc1xuICAgKiBsaWtlIHRoaXMsIGJ1dCB1c2VycyBtYXkgbWFudWFsbHkgc3ltbGluayBjb25zdHJ1Y3QgbGlicmFyaWVzIHRvZ2V0aGVyIG9yXG4gICAqIHVzZSBhIG1vbm9yZXBvIHRvb2w6IGluIHRob3NlIGNhc2VzLCBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIGBjeC1hcGlgXG4gICAqIGxpYnJhcnkgY2FuIGJlIGFjY2lkZW50YWxseSBpbnN0YWxsZWQsIGFuZCBgaW5zdGFuY2VvZmAgd2lsbCBiZWhhdmVcbiAgICogdW5wcmVkaWN0YWJseS4gSXQgaXMgc2FmZXN0IHRvIGF2b2lkIHVzaW5nIGBpbnN0YW5jZW9mYCwgYW5kIHVzaW5nXG4gICAqIHRoaXMgdHlwZS10ZXN0aW5nIG1ldGhvZCBpbnN0ZWFkLlxuICAgKi9cbiAgc3RhdGljIGlzTmVzdGVkQ2xvdWRBc3NlbWJseUFydGlmYWN0KGFydDogYW55KTogYXJ0IGlzIE5lc3RlZENsb3VkQXNzZW1ibHlBcnRpZmFjdDtcbiAgLyoqXG4gICAqIFRoZSByZWxhdGl2ZSBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgYXNzZXQgbWFuaWZlc3RcbiAgICovXG4gIHJlYWRvbmx5IGRpcmVjdG9yeU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERpc3BsYXkgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuZXN0ZWQgQXNzZW1ibHlcbiAgICovXG4gIHJlYWRvbmx5IG5lc3RlZEFzc2VtYmx5OiBDbG91ZEFzc2VtYmx5O1xuICBjb25zdHJ1Y3Rvcihhc3NlbWJseTogQ2xvdWRBc3NlbWJseSwgbmFtZTogc3RyaW5nLCBhcnRpZmFjdDogY3hzY2hlbWEuQXJ0aWZhY3RNYW5pZmVzdCk7XG4gIC8qKlxuICAgKiBGdWxsIHBhdGggdG8gdGhlIG5lc3RlZCBhc3NlbWJseSBkaXJlY3RvcnlcbiAgICovXG4gIGdldCBmdWxsUGF0aCgpOiBzdHJpbmc7XG59XG5leHBvcnRzLk5lc3RlZENsb3VkQXNzZW1ibHlBcnRpZmFjdCA9IE5lc3RlZENsb3VkQXNzZW1ibHlBcnRpZmFjdF87XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFRyZWVDbG91ZEFydGlmYWN0IGV4dGVuZHMgQ2xvdWRBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYGFydGAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy5cbiAgICpcbiAgICogVXNlIHRoaXMgbWV0aG9kIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIHRvIHByb3Blcmx5IGRldGVjdCBgVHJlZUNsb3VkQXJ0aWZhY3RgXG4gICAqIGluc3RhbmNlcywgZXZlbiB3aGVuIHRoZSBjb25zdHJ1Y3QgbGlicmFyeSBpcyBzeW1saW5rZWQuXG4gICAqXG4gICAqIEV4cGxhbmF0aW9uOiBpbiBKYXZhU2NyaXB0LCBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIGBjeC1hcGlgIGxpYnJhcnkgb25cbiAgICogZGlzayBhcmUgc2VlbiBhcyBpbmRlcGVuZGVudCwgY29tcGxldGVseSBkaWZmZXJlbnQgbGlicmFyaWVzLiBBcyBhXG4gICAqIGNvbnNlcXVlbmNlLCB0aGUgY2xhc3MgYFRyZWVDbG91ZEFydGlmYWN0YCBpbiBlYWNoIGNvcHkgb2YgdGhlIGBjeC1hcGlgIGxpYnJhcnlcbiAgICogaXMgc2VlbiBhcyBhIGRpZmZlcmVudCBjbGFzcywgYW5kIGFuIGluc3RhbmNlIG9mIG9uZSBjbGFzcyB3aWxsIG5vdCB0ZXN0IGFzXG4gICAqIGBpbnN0YW5jZW9mYCB0aGUgb3RoZXIgY2xhc3MuIGBucG0gaW5zdGFsbGAgd2lsbCBub3QgY3JlYXRlIGluc3RhbGxhdGlvbnNcbiAgICogbGlrZSB0aGlzLCBidXQgdXNlcnMgbWF5IG1hbnVhbGx5IHN5bWxpbmsgY29uc3RydWN0IGxpYnJhcmllcyB0b2dldGhlciBvclxuICAgKiB1c2UgYSBtb25vcmVwbyB0b29sOiBpbiB0aG9zZSBjYXNlcywgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBgY3gtYXBpYFxuICAgKiBsaWJyYXJ5IGNhbiBiZSBhY2NpZGVudGFsbHkgaW5zdGFsbGVkLCBhbmQgYGluc3RhbmNlb2ZgIHdpbGwgYmVoYXZlXG4gICAqIHVucHJlZGljdGFibHkuIEl0IGlzIHNhZmVzdCB0byBhdm9pZCB1c2luZyBgaW5zdGFuY2VvZmAsIGFuZCB1c2luZ1xuICAgKiB0aGlzIHR5cGUtdGVzdGluZyBtZXRob2QgaW5zdGVhZC5cbiAgICovXG4gIHN0YXRpYyBpc1RyZWVDbG91ZEFydGlmYWN0KGFydDogYW55KTogYXJ0IGlzIFRyZWVDbG91ZEFydGlmYWN0O1xuICByZWFkb25seSBmaWxlOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKGFzc2VtYmx5OiBDbG91ZEFzc2VtYmx5LCBuYW1lOiBzdHJpbmcsIGFydGlmYWN0OiBjeHNjaGVtYS5BcnRpZmFjdE1hbmlmZXN0KTtcbn1cbmV4cG9ydHMuVHJlZUNsb3VkQXJ0aWZhY3QgPSBUcmVlQ2xvdWRBcnRpZmFjdF87XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhlIG9mZmljaWFsIGRlZmluaXRpb24gb2YgdGhpcyB0eXBlIGhhcyBtb3ZlZCB0byBgQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YUVudHJ5UmVzdWx0IGV4dGVuZHMgY3hzY2hlbWEuTWV0YWRhdGFFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCBpbiB3aGljaCB0aGlzIGVudHJ5IHdhcyBkZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1vZGVscyBhbiBBV1MgZXhlY3V0aW9uIGVudmlyb25tZW50LCBmb3IgdXNlIHdpdGhpbiB0aGUgQ0RLIHRvb2xraXQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhlIG9mZmljaWFsIGRlZmluaXRpb24gb2YgdGhpcyB0eXBlIGhhcyBtb3ZlZCB0byBgQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKiBUaGUgYXJiaXRyYXJ5IG5hbWUgb2YgdGhpcyBlbnZpcm9ubWVudCAodXNlci1zZXQsIG9yIGF0IGxlYXN0IHVzZXItbWVhbmluZ2Z1bCkgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIEFXUyBhY2NvdW50IHRoaXMgZW52aXJvbm1lbnQgZGVwbG95cyBpbnRvICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbiAgLyoqIFRoZSBBV1MgcmVnaW9uIG5hbWUgd2hlcmUgdGhpcyBlbnZpcm9ubWVudCBkZXBsb3lzIGludG8gKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBjbG91ZCBhc3NlbWJseS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQ2xvdWRBc3NlbWJseUJ1aWxkZXIge1xuICAvKipcbiAgICogVGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSByZXN1bHRpbmcgY2xvdWQgYXNzZW1ibHkuXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgYXNzZXRzIG9mIHRoaXMgQ2xvdWQgQXNzZW1ibHkgc2hvdWxkIGJlIHN0b3JlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRPdXRkaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhcnRpZmFjdHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWlzc2luZztcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnRCdWlsZGVyPztcbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGEgY2xvdWQgYXNzZW1ibHkgYnVpbGRlci5cbiAgICogQHBhcmFtIG91dGRpciAtIFRoZSBvdXRwdXQgZGlyZWN0b3J5LCB1c2VzIHRlbXBvcmFyeSBkaXJlY3RvcnkgaWYgdW5kZWZpbmVkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvdXRkaXI/OiBzdHJpbmcsIHByb3BzPzogQ2xvdWRBc3NlbWJseUJ1aWxkZXJQcm9wcyk7XG4gIC8qKlxuICAgKiBBZGRzIGFuIGFydGlmYWN0IGludG8gdGhlIGNsb3VkIGFzc2VtYmx5LlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIGFydGlmYWN0LlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBUaGUgYXJ0aWZhY3QgbWFuaWZlc3RcbiAgICovXG4gIGFkZEFydGlmYWN0KGlkOiBzdHJpbmcsIG1hbmlmZXN0OiBjeHNjaGVtYS5BcnRpZmFjdE1hbmlmZXN0KTogdm9pZDtcbiAgLyoqXG4gICAqIFJlcG9ydHMgdGhhdCBzb21lIGNvbnRleHQgaXMgbWlzc2luZyBpbiBvcmRlciBmb3IgdGhpcyBjbG91ZCBhc3NlbWJseSB0byBiZSBmdWxseSBzeW50aGVzaXplZC5cbiAgICogQHBhcmFtIG1pc3NpbmcgLSBNaXNzaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uXG4gICAqL1xuICBhZGRNaXNzaW5nKG1pc3Npbmc6IGN4c2NoZW1hLk1pc3NpbmdDb250ZXh0KTogdm9pZDtcbiAgLyoqXG4gICAqIEZpbmFsaXplcyB0aGUgY2xvdWQgYXNzZW1ibHkgaW50byB0aGUgb3V0cHV0IGRpcmVjdG9yeSByZXR1cm5zIGFcbiAgICogYENsb3VkQXNzZW1ibHlgIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGluc3BlY3QgdGhlIGFzc2VtYmx5LlxuICAgKi9cbiAgYnVpbGRBc3NlbWJseShvcHRpb25zPzogQXNzZW1ibHlCdWlsZE9wdGlvbnMpOiBDbG91ZEFzc2VtYmx5O1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgY3JlYXRlTmVzdGVkQXNzZW1ibHkoYXJ0aWZhY3RJZDogc3RyaW5nLCBkaXNwbGF5TmFtZTogc3RyaW5nKTogQ2xvdWRBc3NlbWJseUJ1aWxkZXI7XG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGNsb3VkIGFzc2VtYmx5IGRpcmVjdG9yeVxuICAgKi9cbiAgZGVsZXRlKCk6IHZvaWQ7XG59XG5leHBvcnRzLkNsb3VkQXNzZW1ibHlCdWlsZGVyID0gQ2xvdWRBc3NlbWJseUJ1aWxkZXJfO1xuXG4vKipcbiAqIENvbnZlcnQgb25lIENsb3VkQXNzZW1ibHkgdHlwZSB0byBhbm90aGVyIChwdWJsaWMgdG8gcHJpdmF0ZSBhbmQgdmljZS12ZXJzYSlcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9jb252ZXJ0Q2xvdWRBc3NlbWJseSh4OiBDbG91ZEFzc2VtYmx5Xyk6IENsb3VkQXNzZW1ibHk7XG5leHBvcnQgZnVuY3Rpb24gX2NvbnZlcnRDbG91ZEFzc2VtYmx5KHg6IENsb3VkQXNzZW1ibHkpOiBDbG91ZEFzc2VtYmx5XztcbmV4cG9ydCBmdW5jdGlvbiBfY29udmVydENsb3VkQXNzZW1ibHkoeDogYW55KTogYW55IHtcbiAgcmV0dXJuIHg7XG59XG5cbi8qKlxuICogQ29udmVydCBvbmUgQ2xvdWRBc3NlbWJseUJ1aWxkZXIgdHlwZSB0byBhbm90aGVyIChwdWJsaWMgdG8gcHJpdmF0ZSBhbmQgdmljZS12ZXJzYSlcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9jb252ZXJ0Q2xvdWRBc3NlbWJseUJ1aWxkZXIoeDogQ2xvdWRBc3NlbWJseUJ1aWxkZXJfKTogQ2xvdWRBc3NlbWJseUJ1aWxkZXI7XG5leHBvcnQgZnVuY3Rpb24gX2NvbnZlcnRDbG91ZEFzc2VtYmx5QnVpbGRlcih4OiBDbG91ZEFzc2VtYmx5QnVpbGRlcik6IENsb3VkQXNzZW1ibHlCdWlsZGVyXztcbmV4cG9ydCBmdW5jdGlvbiBfY29udmVydENsb3VkQXNzZW1ibHlCdWlsZGVyKHg6IGFueSk6IGFueSB7XG4gIHJldHVybiB4O1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBDbG91ZEFzc2VtYmx5QnVpbGRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkQXNzZW1ibHlCdWlsZGVyUHJvcHMge1xuICAvKipcbiAgICogVXNlIHRoZSBnaXZlbiBhc3NldCBvdXRwdXQgZGlyZWN0b3J5XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2FtZSBhcyB0aGUgbWFuaWZlc3Qgb3V0ZGlyXG4gICAqL1xuICByZWFkb25seSBhc3NldE91dGRpcj86IHN0cmluZztcbiAgLyoqXG4gICAqIElmIHRoaXMgYnVpbGRlciBpcyBmb3IgYSBuZXN0ZWQgYXNzZW1ibHksIHRoZSBwYXJlbnQgYXNzZW1ibHkgYnVpbGRlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoaXMgaXMgYSByb290IGFzc2VtYmx5XG4gICAqL1xuICByZWFkb25seSBwYXJlbnRCdWlsZGVyPzogQ2xvdWRBc3NlbWJseUJ1aWxkZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibHlCdWlsZE9wdGlvbnMge1xuICAvKipcbiAgICogSW5jbHVkZSB0aGUgc3BlY2lmaWVkIHJ1bnRpbWUgaW5mb3JtYXRpb24gKG1vZHVsZSB2ZXJzaW9ucykgaW4gbWFuaWZlc3QuXG4gICAqIEBkZWZhdWx0IC0gaWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgcnVudGltZSBpbmZvIHdpbGwgbm90IGJlIGluY2x1ZGVkXG4gICAqIEBkZXByZWNhdGVkIEFsbCB0ZW1wbGF0ZSBtb2RpZmljYXRpb25zIHRoYXQgc2hvdWxkIHJlc3VsdCBmcm9tIHRoaXMgc2hvdWxkXG4gICAqIGhhdmUgYWxyZWFkeSBiZWVuIGluc2VydGVkIGludG8gdGhlIHRlbXBsYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZUluZm8/OiBSdW50aW1lSW5mbztcbn1cblxuLyoqXG4gKiBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3Igd2hlbiBgUnVudGltZUluZm9gXG4gKiB3YXMgZGVmaW5lZCBoZXJlLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0cyB1c2VkIGFzIGFuIGlucHV0IGluIHRoZSBzdGFibGVcbiAqIEBhd3MtY2RrL2NvcmUgbGlicmFyeS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBtb3ZlZCB0byBwYWNrYWdlICdjbG91ZC1hc3NlbWJseS1zY2hlbWEnXG4gKiBAc2VlIGNvcmUuQ29uc3RydWN0Tm9kZS5zeW50aFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVJbmZvIGV4dGVuZHMgY3hzY2hlbWEuUnVudGltZUluZm8ge1xufVxuXG4vKipcbiAqIFBsYWNlaG9sZGVycyB3aGljaCBjYW4gYmUgdXNlZCBtYW5pZmVzdHNcbiAqXG4gKiBUaGVzZSBjYW4gb2NjdXIgYm90aCBpbiB0aGUgQXNzZXQgTWFuaWZlc3QgYXMgd2VsbCBhcyB0aGUgZ2VuZXJhbFxuICogQ2xvdWQgQXNzZW1ibHkgbWFuaWZlc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhlIGRlZmluaXRpb24gb2YgdGhpcyB0eXBlIGhhcyBtb3ZlZCB0byBgQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpYC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMge1xuICAvKipcbiAgICogSW5zZXJ0IHRoaXMgaW50byB0aGUgZGVzdGluYXRpb24gZmllbGRzIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgcmVnaW9uXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgQ1VSUkVOVF9SRUdJT04gPSAnJHtBV1M6OlJlZ2lvbn0nO1xuICAvKipcbiAgICogSW5zZXJ0IHRoaXMgaW50byB0aGUgZGVzdGluYXRpb24gZmllbGRzIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgYWNjb3VudFxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IENVUlJFTlRfQUNDT1VOVCA9ICcke0FXUzo6QWNjb3VudElkfSc7XG4gIC8qKlxuICAgKiBJbnNlcnQgdGhpcyBpbnRvIHRoZSBkZXN0aW5hdGlvbiBmaWVsZHMgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgY3VycmVudCBwYXJ0aXRpb25cbiAgICovXG4gIHN0YXRpYyByZWFkb25seSBDVVJSRU5UX1BBUlRJVElPTiA9ICcke0FXUzo6UGFydGl0aW9ufSc7XG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBlbnZpcm9ubWVudCBwbGFjZWhvbGRlcnMgaW4gYWxsIHN0cmluZ3MgZm91bmQgaW4gYSBjb21wbGV4IG9iamVjdC5cbiAgICpcbiAgICogRHVwbGljYXRlZCBiZXR3ZWVuIGNkay1hc3NldHMgYW5kIGF3cy1jZGsgQ0xJIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgc2luZ2xlIHBsYWNlIHRvIHB1dCBpdFxuICAgKiAodGhleSdyZSBub21pbmFsbHkgaW5kZXBlbmRlbnQgdG9vbHMpLlxuICAgKi9cbiAgc3RhdGljIHJlcGxhY2Uob2JqZWN0OiBhbnksIHZhbHVlczogRW52aXJvbm1lbnRQbGFjZWhvbGRlclZhbHVlcyk6IGFueTtcbiAgLyoqXG4gICAqIExpa2UgJ3JlcGxhY2UnLCBidXQgYXN5bmNocm9ub3VzXG4gICAqL1xuICBzdGF0aWMgcmVwbGFjZUFzeW5jKG9iamVjdDogYW55LCBwcm92aWRlcjogSUVudmlyb25tZW50UGxhY2Vob2xkZXJQcm92aWRlcik6IFByb21pc2U8YW55PjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVjdXJzZTtcbn1cbmV4cG9ydHMuRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMgPSBFbnZpcm9ubWVudFBsYWNlaG9sZGVyc187XG5cbi8qKlxuICogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHRoZSBlbnZpcm9ubWVudCBwbGFjZWhvbGRlcnNcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50UGxhY2Vob2xkZXJWYWx1ZXMge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcGFydGl0aW9uXG4gICAqL1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cbi8qKlxuICogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHRoZSBlbnZpcm9ubWVudCBwbGFjZWhvbGRlcnNcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFbnZpcm9ubWVudFBsYWNlaG9sZGVyUHJvdmlkZXIge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSByZWdpb25cbiAgICovXG4gIHJlZ2lvbigpOiBQcm9taXNlPHN0cmluZz47XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGFjY291bnRcbiAgICovXG4gIGFjY291bnRJZCgpOiBQcm9taXNlPHN0cmluZz47XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHBhcnRpdGlvblxuICAgKi9cbiAgcGFydGl0aW9uKCk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBFbnZpcm9ubWVudFV0aWxzIHtcbiAgc3RhdGljIHBhcnNlKGVudmlyb25tZW50OiBzdHJpbmcpOiBFbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIEJ1aWxkIGFuIGVudmlyb25tZW50IG9iamVjdCBmcm9tIGFuIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKi9cbiAgc3RhdGljIG1ha2UoYWNjb3VudDogc3RyaW5nLCByZWdpb246IHN0cmluZyk6IEVudmlyb25tZW50O1xuICAvKipcbiAgICogRm9ybWF0IGFuIGVudmlyb25tZW50IHN0cmluZyBmcm9tIGFuIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKi9cbiAgc3RhdGljIGZvcm1hdChhY2NvdW50OiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nKTogc3RyaW5nO1xufVxuZXhwb3J0cy5FbnZpcm9ubWVudFV0aWxzID0gRW52aXJvbm1lbnRVdGlsc187XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhIGRpc2NvdmVyZWQgU2VjdXJpdHlHcm91cC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDb250ZXh0UmVzcG9uc2Uge1xuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGdyb3VwJ3MgaWQuXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNlY3VyaXR5IGdyb3VwIGFsbG93cyBhbGwgb3V0Ym91bmQgdHJhZmZpYy4gVGhpcyB3aWxsIGJlIHRydWVcbiAgICogd2hlbiB0aGUgc2VjdXJpdHkgZ3JvdXAgaGFzIGFsbC1wcm90b2NvbCBlZ3Jlc3MgcGVybWlzc2lvbnMgdG8gYWNjZXNzIGJvdGhcbiAgICogYDAuMC4wLjAvMGAgYW5kIGA6Oi8wYC5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QWxsT3V0Ym91bmQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2Ygc3VibmV0IGdyb3VwLlxuICogU2FtZSBhcyBTdWJuZXRUeXBlIGluIHRoZSBhd3MtY2RrLWxpYi9hd3MtZWMyIHBhY2thZ2UsXG4gKiBidXQgd2UgY2FuJ3QgdXNlIHRoYXQgYmVjYXVzZSBvZiBjeWNsaWNhbCBkZXBlbmRlbmNpZXMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhlIGRlZmluaXRpb24gb2YgdGhpcyB0eXBlIGhhcyBtb3ZlZCB0byBgQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpYC5cbiAqL1xuZXhwb3J0IGVudW0gVnBjU3VibmV0R3JvdXBUeXBlIHtcbiAgLyoqIFB1YmxpYyBzdWJuZXQgZ3JvdXAgdHlwZS4gKi9cbiAgUFVCTElDID0gJ1B1YmxpYycsXG4gIC8qKiBQcml2YXRlIHN1Ym5ldCBncm91cCB0eXBlLiAqL1xuICBQUklWQVRFID0gJ1ByaXZhdGUnLFxuICAvKiogSXNvbGF0ZWQgc3VibmV0IGdyb3VwIHR5cGUuICovXG4gIElTT0xBVEVEID0gJ0lzb2xhdGVkJyxcbn1cbi8qKlxuICogQSBzdWJuZXQgcmVwcmVzZW50YXRpb24gdGhhdCB0aGUgVlBDIHByb3ZpZGVyIHVzZXMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhlIGRlZmluaXRpb24gb2YgdGhpcyB0eXBlIGhhcyBtb3ZlZCB0byBgQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNTdWJuZXQge1xuICAvKiogVGhlIGlkZW50aWZpZXIgb2YgdGhlIHN1Ym5ldC4gKi9cbiAgcmVhZG9ubHkgc3VibmV0SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb2RlIG9mIHRoZSBhdmFpbGFiaWxpdHkgem9uZSB0aGlzIHN1Ym5ldCBpcyBpblxuICAgKiAoZm9yIGV4YW1wbGUsICd1cy13ZXN0LTJhJykuXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG4gIC8qKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgcm91dGUgdGFibGUgZm9yIHRoaXMgc3VibmV0LiAqL1xuICByZWFkb25seSByb3V0ZVRhYmxlSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIENJRFIgcmFuZ2Ugb2YgdGhlIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENJRFIgaW5mb3JtYXRpb24gbm90IGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2lkcj86IHN0cmluZztcbn1cbi8qKlxuICogQSBncm91cCBvZiBzdWJuZXRzIHJldHVybmVkIGJ5IHRoZSBWUEMgcHJvdmlkZXIuXG4gKiBUaGUgaW5jbHVkZWQgc3VibmV0cyBkbyBOT1QgaGF2ZSB0byBiZSBzeW1tZXRyaWMhXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhlIGRlZmluaXRpb24gb2YgdGhpcyB0eXBlIGhhcyBtb3ZlZCB0byBgQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNTdWJuZXRHcm91cCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3VibmV0IGdyb3VwLFxuICAgKiBkZXRlcm1pbmVkIGJ5IGxvb2tpbmcgYXQgdGhlIHRhZ3Mgb2Ygb2YgdGhlIHN1Ym5ldHNcbiAgICogdGhhdCBiZWxvbmcgdG8gaXQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgc3VibmV0IGdyb3VwLiAqL1xuICByZWFkb25seSB0eXBlOiBWcGNTdWJuZXRHcm91cFR5cGU7XG4gIC8qKlxuICAgKiBUaGUgc3VibmV0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgZ3JvdXAuXG4gICAqIFRoZXJlIGlzIG5vIGNvbmRpdGlvbiB0aGF0IHRoZSBzdWJuZXRzIGhhdmUgdG8gYmUgc3ltbWV0cmljXG4gICAqIGluIHRoZSBncm91cC5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldHM6IFZwY1N1Ym5ldFtdO1xufVxuLyoqXG4gKiBQcm9wZXJ0aWVzIG9mIGEgZGlzY292ZXJlZCBWUENcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0NvbnRleHRSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBWUEMgaWRcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWUEMgY2lkclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENJRFIgaW5mb3JtYXRpb24gbm90IGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjQ2lkckJsb2NrPzogc3RyaW5nO1xuICAvKipcbiAgICogQVpzXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBJRHMgb2YgYWxsIHB1YmxpYyBzdWJuZXRzXG4gICAqXG4gICAqIEVsZW1lbnQgY291bnQ6ICMoYXZhaWxhYmlsaXR5Wm9uZXMpIMK3ICMocHVibGljR3JvdXBzKVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljU3VibmV0SWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOYW1lIG9mIHB1YmxpYyBzdWJuZXQgZ3JvdXBzXG4gICAqXG4gICAqIEVsZW1lbnQgY291bnQ6ICMocHVibGljR3JvdXBzKVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljU3VibmV0TmFtZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFJvdXRlIFRhYmxlIElEcyBvZiBwdWJsaWMgc3VibmV0IGdyb3Vwcy5cbiAgICpcbiAgICogRWxlbWVudCBjb3VudDogIyhhdmFpbGFiaWxpdHlab25lcykgwrcgIyhwdWJsaWNHcm91cHMpXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNTdWJuZXRSb3V0ZVRhYmxlSWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBJRHMgb2YgYWxsIHByaXZhdGUgc3VibmV0c1xuICAgKlxuICAgKiBFbGVtZW50IGNvdW50OiAjKGF2YWlsYWJpbGl0eVpvbmVzKSDCtyAjKHByaXZhdGVHcm91cHMpXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlU3VibmV0SWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOYW1lIG9mIHByaXZhdGUgc3VibmV0IGdyb3Vwc1xuICAgKlxuICAgKiBFbGVtZW50IGNvdW50OiAjKHByaXZhdGVHcm91cHMpXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlU3VibmV0TmFtZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFJvdXRlIFRhYmxlIElEcyBvZiBwcml2YXRlIHN1Ym5ldCBncm91cHMuXG4gICAqXG4gICAqIEVsZW1lbnQgY291bnQ6ICMoYXZhaWxhYmlsaXR5Wm9uZXMpIMK3ICMocHJpdmF0ZUdyb3VwcylcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRSb3V0ZVRhYmxlSWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBJRHMgb2YgYWxsIGlzb2xhdGVkIHN1Ym5ldHNcbiAgICpcbiAgICogRWxlbWVudCBjb3VudDogIyhhdmFpbGFiaWxpdHlab25lcykgwrcgIyhpc29sYXRlZEdyb3VwcylcbiAgICovXG4gIHJlYWRvbmx5IGlzb2xhdGVkU3VibmV0SWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOYW1lIG9mIGlzb2xhdGVkIHN1Ym5ldCBncm91cHNcbiAgICpcbiAgICogRWxlbWVudCBjb3VudDogIyhpc29sYXRlZEdyb3VwcylcbiAgICovXG4gIHJlYWRvbmx5IGlzb2xhdGVkU3VibmV0TmFtZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFJvdXRlIFRhYmxlIElEcyBvZiBpc29sYXRlZCBzdWJuZXQgZ3JvdXBzLlxuICAgKlxuICAgKiBFbGVtZW50IGNvdW50OiAjKGF2YWlsYWJpbGl0eVpvbmVzKSDCtyAjKGlzb2xhdGVkR3JvdXBzKVxuICAgKi9cbiAgcmVhZG9ubHkgaXNvbGF0ZWRTdWJuZXRSb3V0ZVRhYmxlSWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgVlBOIGdhdGV3YXkgSURcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgZ3JvdXBzIGRpc2NvdmVyZWQgZm9yIHRoZSBnaXZlbiBWUEMuXG4gICAqIFVubGlrZSB0aGUgYWJvdmUgcHJvcGVydGllcywgdGhpcyB3aWxsIGluY2x1ZGUgYXN5bW1ldHJpYyBzdWJuZXRzLFxuICAgKiBpZiB0aGUgVlBDIGhhcyBhbnkuXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IGJlIHBvcHVsYXRlZCBpZiBgVnBjQ29udGV4dFF1ZXJ5LnJldHVybkFzeW1tZXRyaWNTdWJuZXRzYFxuICAgKiBpcyB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHN1Ym5ldCBncm91cHMgd2lsbCBiZSByZXR1cm5lZCB1bmxlc3MgYFZwY0NvbnRleHRRdWVyeS5yZXR1cm5Bc3ltbWV0cmljU3VibmV0c2AgaXMgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0R3JvdXBzPzogVnBjU3VibmV0R3JvdXBbXTtcbiAgLyoqXG4gICAqIFRoZSByZWdpb24gaW4gd2hpY2ggdGhlIFZQQyBpcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZWdpb24gb2YgdGhlIHBhcmVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBBV1MgYWNjb3VudCB0aGF0IG93bnMgdGhlIFZQQy5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGFjY291bnQgaWQgb2YgdGhlIHBhcmVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTG9hZCBiYWxhbmNlciBpcCBhZGRyZXNzIHR5cGUuXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhlIGRlZmluaXRpb24gb2YgdGhpcyB0eXBlIGhhcyBtb3ZlZCB0byBgQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpYC5cbiAqL1xuZXhwb3J0IGVudW0gTG9hZEJhbGFuY2VySXBBZGRyZXNzVHlwZSB7XG4gIC8qKlxuICAgKiBJUFY0IGlwIGFkZHJlc3NcbiAgICovXG4gIElQVjQgPSAnaXB2NCcsXG4gIC8qKlxuICAgKiBEdWFsIHN0YWNrIGFkZHJlc3NcbiAgICovXG4gIERVQUxfU1RBQ0sgPSAnZHVhbHN0YWNrJyxcbiAgLyoqXG4gICAqIElQdjYgb25seSBwdWJsaWMgYWRkcmVzc2VzLCB3aXRoIHByaXZhdGUgSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXNcbiAgICovXG4gIERVQUxfU1RBQ0tfV0lUSE9VVF9QVUJMSUNfSVBWNCA9ICdkdWFsc3RhY2std2l0aG91dC1wdWJsaWMtaXB2NCcsXG59XG4vKipcbiAqIFByb3BlcnRpZXMgb2YgYSBkaXNjb3ZlcmVkIGxvYWQgYmFsYW5jZXJcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckNvbnRleHRSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaG9zdGVkIHpvbmUgSUQgb2YgdGhlIGxvYWQgYmFsYW5jZXIncyBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMb2FkIGJhbGFuY2VyJ3MgRE5TIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlckRuc05hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFR5cGUgb2YgSVAgYWRkcmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgaXBBZGRyZXNzVHlwZTogTG9hZEJhbGFuY2VySXBBZGRyZXNzVHlwZTtcbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIncyBzZWN1cml0eSBncm91cHNcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZHM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogTG9hZCBiYWxhbmNlcidzIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcbn1cbi8qKlxuICogUHJvcGVydGllcyBvZiBhIGRpc2NvdmVyZWQgbG9hZCBiYWxhbmNlciBsaXN0ZW5lci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGxpc3RlbmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwb3J0IHRoZSBsaXN0ZW5lciBpcyBsaXN0ZW5pbmcgb24uXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclBvcnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBzZWN1cml0eSBncm91cHMgb2YgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWRzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIG9mIGEgZGlzY292ZXJlZCBrZXlcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleUNvbnRleHRSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUga2V5XG4gICAqL1xuICByZWFkb25seSBrZXlJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IHRvIGhvc3RlZCB6b25lIGNvbnRleHQgcHJvdmlkZXJcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50U2VydmljZUF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRdWVyeSByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFF1ZXJ5IHNlcnZpY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZm9yIHdoZW4gYE1ldGFkYXRhRW50cnlgXG4gKiB3YXMgZGVmaW5lZCBoZXJlLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0cyB1c2VkIGFzIGFuIGlucHV0IGluIHRoZSBzdGFibGVcbiAqIEBhd3MtY2RrL2NvcmUgbGlicmFyeS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUgaGFzIG1vdmVkIHRvIGBAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGlgLlxuICogQHNlZSBjb3JlLkNvbnN0cnVjdE5vZGUubWV0YWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YUVudHJ5IGV4dGVuZHMgY3hzY2hlbWEuTWV0YWRhdGFFbnRyeSB7XG59XG5cbi8qKlxuICogQXJ0aWZhY3QgcHJvcGVydGllcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2tzLlxuICpcbiAqIEBkZXByZWNhdGVkIFRoZSBkZWZpbml0aW9uIG9mIHRoaXMgdHlwZSBoYXMgbW92ZWQgdG8gYEBhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXMge1xuICAvKipcbiAgICogQSBmaWxlIHJlbGF0aXZlIHRvIHRoZSBhc3NlbWJseSByb290IHdoaWNoIGNvbnRhaW5zIHRoZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSBmb3IgdGhpcyBzdGFjay5cbiAgICovXG4gIHJlYWRvbmx5IHRlbXBsYXRlRmlsZTogc3RyaW5nO1xuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayBwYXJhbWV0ZXJzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiB7XG4gICAgW2lkOiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgbmFtZSB0byB1c2UgZm9yIHRoZSBDbG91ZEZvcm1hdGlvbiBzdGFjay5cbiAgICogQGRlZmF1bHQgLSBuYW1lIGRlcml2ZWQgZnJvbSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBmb3IgdGhpcyBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG59XG4iXX0=