Socket
Socket
Sign inDemoInstall

@aws-cdk/cdk

Package Overview
Dependencies
Maintainers
4
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/cdk - npm Package Compare versions

Comparing version 0.17.0 to 0.18.0

11

lib/cloudformation/resource.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const cxapi = require("@aws-cdk/cx-api");
const util_1 = require("../core/util");

@@ -41,2 +42,10 @@ const cloudformation_token_1 = require("./cloudformation-token");

this.properties = props.properties || {};
// if aws:cdk:enable-path-metadata is set, embed the current construct's
// path in the CloudFormation template, so it will be possible to trace
// back to the actual construct path.
if (this.getContext(cxapi.PATH_METADATA_ENABLE_CONTEXT)) {
this.options.metadata = {
[cxapi.PATH_METADATA_KEY]: this.path
};
}
}

@@ -220,2 +229,2 @@ /**

exports.deepMerge = deepMerge;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHVDQUFvRTtBQUNwRSxpRUFBNkQ7QUFHN0QsbUNBQW1FO0FBY25FOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEscUJBQWE7SUFxRHpDOzs7T0FHRztJQUNILFlBQVksTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBb0I7UUFDL0QsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQXpDdEI7O1dBRUc7UUFDYSxZQUFPLEdBQW9CLEVBQUUsQ0FBQztRQU85Qzs7Ozs7Ozs7O1dBU0c7UUFDZ0IsNkJBQXdCLEdBQVEsRUFBRyxDQUFDO1FBU3ZEOztXQUVHO1FBQ2MsaUJBQVksR0FBUSxFQUFHLENBQUM7UUFFakMsY0FBUyxHQUFHLElBQUksS0FBSyxFQUFlLENBQUM7UUFTM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7U0FDcEQ7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUcsQ0FBQztJQUM1QyxDQUFDO0lBakVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQW1CO1FBQ3pDLE9BQU8sQ0FBQyxTQUFjLEVBQUUsR0FBVyxFQUFFLEVBQUU7WUFDckMsTUFBTSxJQUFJLEdBQUcsVUFBVSxJQUFJLEdBQUcsQ0FBQztZQUMvQixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ3BDLEdBQUc7b0JBQ0QsT0FBUSxJQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lB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SyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4RSxtRUFBbUU7WUFDbkUsMENBQTBDO1lBQzFDLElBQUksT0FBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDcEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUcsQ0FBQzthQUNuQjtZQUVELFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFOUIsa0VBQWtFO1lBQ2xFLDhEQUE4RDtZQUM5RCxpRUFBaUU7WUFDakUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksT0FBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ25FLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCO1NBQ0Y7YUFBTSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDOUIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7YUFBTTtZQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDckI7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUEvQkQsOEJBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnLi4vY29yZS9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZVByb3BlcnR5TmFtZXMsIGlnbm9yZUVtcHR5IH0gZnJvbSAnLi4vY29yZS91dGlsJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uVG9rZW4gfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uLXRva2VuJztcbmltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gJy4vY29uZGl0aW9uJztcbmltcG9ydCB7IENyZWF0aW9uUG9saWN5LCBEZWxldGlvblBvbGljeSwgVXBkYXRlUG9saWN5IH0gZnJvbSAnLi9yZXNvdXJjZS1wb2xpY3knO1xuaW1wb3J0IHsgSURlcGVuZGFibGUsIFJlZmVyZW5jZWFibGUsIFN0YWNrRWxlbWVudCB9IGZyb20gJy4vc3RhY2snO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZS5cbiAgICovXG4gIHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcy5cbiAgICovXG4gIHByb3BlcnRpZXM/OiBhbnk7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBSZWZlcmVuY2VhYmxlIHtcbiAgLyoqXG4gICAqIEEgZGVjb3JhdGlvbiB1c2VkIHRvIGNyZWF0ZSBhIENsb3VkRm9ybWF0aW9uIGF0dHJpYnV0ZSBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIGN1c3RvbU5hbWUgQ3VzdG9tIG5hbWUgZm9yIHRoZSBhdHRyaWJ1dGUgKGRlZmF1bHQgaXMgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5KVxuICAgKiBOT1RFOiB3ZSByZXR1cm4gXCJhbnlcIiBoZXJlIHRvIHNhdGlzdGZ5IGpzaWksIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBsYW1iZGFzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhdHRyaWJ1dGUoY3VzdG9tTmFtZT86IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIChwcm90b3R5cGU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBjdXN0b21OYW1lIHx8IGtleTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIGtleSwge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuZ2V0QXR0KG5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHRoaXMgcmVzb3VyY2UsIHN1Y2ggYXMgY29uZGl0aW9uLCB1cGRhdGUgcG9saWN5IGV0Yy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBSZXNvdXJjZU9wdGlvbnMgPSB7fTtcblxuICAvKipcbiAgICogQVdTIHJlc291cmNlIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFXUyByZXNvdXJjZSBwcm9wZXJ0eSBvdmVycmlkZXMuXG4gICAqXG4gICAqIER1cmluZyBzeW50aGVzaXMsIHRoZSBtZXRob2QgXCJyZW5kZXJQcm9wZXJ0aWVzKHRoaXMub3ZlcnJpZGVzKVwiIGlzIGNhbGxlZFxuICAgKiB3aXRoIHRoaXMgb2JqZWN0LCBhbmQgbWVyZ2VkIG9uIHRvcCBvZiB0aGUgb3V0cHV0IG9mXG4gICAqIFwicmVuZGVyUHJvcGVydGllcyh0aGlzLnByb3BlcnRpZXMpXCIuXG4gICAqXG4gICAqIERlcml2ZWQgY2xhc3NlcyBzaG91bGQgZXhwb3NlIGEgc3Ryb25nbHktdHlwZWQgdmVyc2lvbiBvZiB0aGlzIG9iamVjdCBhc1xuICAgKiBhIHB1YmxpYyBwcm9wZXJ0eSBjYWxsZWQgYHByb3BlcnR5T3ZlcnJpZGVzYC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSB1bnR5cGVkUHJvcGVydHlPdmVycmlkZXM6IGFueSA9IHsgfTtcblxuICAvKipcbiAgICogQVdTIHJlc291cmNlIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIFRoaXMgb2JqZWN0IGlzIHJlbmRlcmVkIHZpYSBhIGNhbGwgdG8gXCJyZW5kZXJQcm9wZXJ0aWVzKHRoaXMucHJvcGVydGllcylcIi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwcm9wZXJ0aWVzOiBhbnk7XG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCB0byBiZSBtZXJnZWQgb24gdG9wIG9mIHRoZSBlbnRpcmUgcmVzb3VyY2UgZGVmaW5pdGlvbi5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmF3T3ZlcnJpZGVzOiBhbnkgPSB7IH07XG5cbiAgcHJpdmF0ZSBkZXBlbmRzT24gPSBuZXcgQXJyYXk8SURlcGVuZGFibGU+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByZXNvdXJjZSBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgVGhlIENsb3VkRm9ybWF0aW9uIHR5cGUgb2YgdGhpcyByZXNvdXJjZSAoZS5nLiBBV1M6OkR5bmFtb0RCOjpUYWJsZSlcbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcblxuICAgIGlmICghcHJvcHMudHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYHR5cGVgIHByb3BlcnR5IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZVR5cGUgPSBwcm9wcy50eXBlO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BzLnByb3BlcnRpZXMgfHwgeyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB0b2tlbiBmb3IgYW4gcnVudGltZSBhdHRyaWJ1dGUgb2YgdGhpcyByZXNvdXJjZS5cbiAgICogSWRlYWxseSwgdXNlIGdlbmVyYXRlZCBhdHRyaWJ1dGUgYWNjZXNzb3JzIChlLmcuIGByZXNvdXJjZS5hcm5gKSwgYnV0IHRoaXMgY2FuIGJlIHVzZWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5XG4gICAqIGluIGNhc2UgdGhlcmUgaXMgbm8gZ2VuZXJhdGVkIGF0dHJpYnV0ZS5cbiAgICogQHBhcmFtIGF0dHJpYnV0ZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICovXG4gIHB1YmxpYyBnZXRBdHQoYXR0cmlidXRlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBDbG91ZEZvcm1hdGlvblRva2VuKHsgJ0ZuOjpHZXRBdHQnOiBbdGhpcy5sb2dpY2FsSWQsIGF0dHJpYnV0ZU5hbWVdIH0sIGAke3RoaXMubG9naWNhbElkfS4ke2F0dHJpYnV0ZU5hbWV9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGRlcGVuZGVuY3kgb24gYW5vdGhlciByZXNvdXJjZS5cbiAgICogQHBhcmFtIG90aGVyIFRoZSBvdGhlciByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGREZXBlbmRlbmN5KC4uLm90aGVyOiBJRGVwZW5kYWJsZVtdKSB7XG4gICAgdGhpcy5kZXBlbmRzT24ucHVzaCguLi5vdGhlcik7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBvdmVycmlkZSB0byB0aGUgc3ludGhlc2l6ZWQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UuIFRvIGFkZCBhXG4gICAqIHByb3BlcnR5IG92ZXJyaWRlLCBlaXRoZXIgdXNlIGBhZGRQcm9wZXJ0eU92ZXJyaWRlYCBvciBwcmVmaXggYHBhdGhgIHdpdGhcbiAgICogXCJQcm9wZXJ0aWVzLlwiIChpLmUuIGBQcm9wZXJ0aWVzLlRvcGljTmFtZWApLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAgVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5LCB5b3UgY2FuIHVzZSBkb3Qgbm90YXRpb24gdG9cbiAgICogICAgICAgIG92ZXJyaWRlIHZhbHVlcyBpbiBjb21wbGV4IHR5cGVzLiBBbnkgaW50ZXJtZGVkaWF0ZSBrZXlzXG4gICAqICAgICAgICB3aWxsIGJlIGNyZWF0ZWQgYXMgbmVlZGVkLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlLiBDb3VsZCBiZSBwcmltaXRpdmUgb3IgY29tcGxleC5cbiAgICovXG4gIHB1YmxpYyBhZGRPdmVycmlkZShwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICBsZXQgY3VycjogYW55ID0gdGhpcy5yYXdPdmVycmlkZXM7XG5cbiAgICB3aGlsZSAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3Qga2V5ID0gcGFydHMuc2hpZnQoKSE7XG5cbiAgICAgIC8vIGlmIHdlIGNhbid0IHJlY3Vyc2UgZnVydGhlciBvciB0aGUgcHJldmlvdXMgdmFsdWUgaXMgbm90IGFuXG4gICAgICAvLyBvYmplY3Qgb3ZlcndyaXRlIGl0IHdpdGggYW4gb2JqZWN0LlxuICAgICAgY29uc3QgaXNPYmplY3QgPSBjdXJyW2tleV0gIT0gbnVsbCAmJiB0eXBlb2YoY3VycltrZXldKSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoY3VycltrZXldKTtcbiAgICAgIGlmICghaXNPYmplY3QpIHtcbiAgICAgICAgY3VycltrZXldID0geyB9O1xuICAgICAgfVxuXG4gICAgICBjdXJyID0gY3VycltrZXldO1xuICAgIH1cblxuICAgIGNvbnN0IGxhc3RLZXkgPSBwYXJ0cy5zaGlmdCgpITtcbiAgICBjdXJyW2xhc3RLZXldID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU3ludGFjdGljIHN1Z2FyIGZvciBgYWRkT3ZlcnJpZGUocGF0aCwgdW5kZWZpbmVkKWAuXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSB2YWx1ZSB0byBkZWxldGVcbiAgICovXG4gIHB1YmxpYyBhZGREZWxldGlvbk92ZXJyaWRlKHBhdGg6IHN0cmluZykge1xuICAgIHRoaXMuYWRkT3ZlcnJpZGUocGF0aCwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIG92ZXJyaWRlIHRvIGEgcmVzb3VyY2UgcHJvcGVydHkuXG4gICAqXG4gICAqIFN5bnRhY3RpYyBzdWdhciBmb3IgYGFkZE92ZXJyaWRlKFwiUHJvcGVydGllcy48Li4uPlwiLCB2YWx1ZSlgLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydHlQYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgYWRkUHJvcGVydHlPdmVycmlkZShwcm9wZXJ0eVBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuYWRkT3ZlcnJpZGUoYFByb3BlcnRpZXMuJHtwcm9wZXJ0eVBhdGh9YCwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gb3ZlcnJpZGUgdGhhdCBkZWxldGVzIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IGZyb20gdGhlIHJlc291cmNlIGRlZmluaXRpb24uXG4gICAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggVGhlIHBhdGggdG8gdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgcHVibGljIGFkZFByb3BlcnR5RGVsZXRpb25PdmVycmlkZShwcm9wZXJ0eVBhdGg6IHN0cmluZykge1xuICAgIHRoaXMuYWRkUHJvcGVydHlPdmVycmlkZShwcm9wZXJ0eVBhdGgsIHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgQ2xvdWRGb3JtYXRpb24gZm9yIHRoaXMgcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgdG9DbG91ZEZvcm1hdGlvbigpOiBvYmplY3Qge1xuICAgIHRyeSB7XG4gICAgICAvLyBtZXJnZSBwcm9wZXJ0eSBvdmVycmlkZXMgb250byBwcm9wZXJ0aWVzIGFuZCB0aGVuIHJlbmRlciAoYW5kIHZhbGlkYXRlKS5cbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLnJlbmRlclByb3BlcnRpZXMoZGVlcE1lcmdlKHRoaXMucHJvcGVydGllcyB8fCB7IH0sIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzKSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIFt0aGlzLmxvZ2ljYWxJZF06IGRlZXBNZXJnZSh7XG4gICAgICAgICAgICBUeXBlOiB0aGlzLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IGlnbm9yZUVtcHR5KHByb3BlcnRpZXMpLFxuICAgICAgICAgICAgRGVwZW5kc09uOiBpZ25vcmVFbXB0eSh0aGlzLnJlbmRlckRlcGVuZHNPbigpKSxcbiAgICAgICAgICAgIENyZWF0aW9uUG9saWN5OiAgY2FwaXRhbGl6ZVByb3BlcnR5TmFtZXModGhpcy5vcHRpb25zLmNyZWF0aW9uUG9saWN5KSxcbiAgICAgICAgICAgIFVwZGF0ZVBvbGljeTogY2FwaXRhbGl6ZVByb3BlcnR5TmFtZXModGhpcy5vcHRpb25zLnVwZGF0ZVBvbGljeSksXG4gICAgICAgICAgICBEZWxldGlvblBvbGljeTogY2FwaXRhbGl6ZVByb3BlcnR5TmFtZXModGhpcy5vcHRpb25zLmRlbGV0aW9uUG9saWN5KSxcbiAgICAgICAgICAgIE1ldGFkYXRhOiBpZ25vcmVFbXB0eSh0aGlzLm9wdGlvbnMubWV0YWRhdGEpLFxuICAgICAgICAgICAgQ29uZGl0aW9uOiB0aGlzLm9wdGlvbnMuY29uZGl0aW9uICYmIHRoaXMub3B0aW9ucy5jb25kaXRpb24ubG9naWNhbElkXG4gICAgICAgICAgfSwgdGhpcy5yYXdPdmVycmlkZXMpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gQ2hhbmdlIG1lc3NhZ2VcbiAgICAgIGUubWVzc2FnZSA9IGBXaGlsZSBzeW50aGVzaXppbmcgJHt0aGlzLnBhdGh9OiAke2UubWVzc2FnZX1gO1xuICAgICAgLy8gQWRqdXN0IHN0YWNrIHRyYWNlIChtYWtlIGl0IGxvb2sgbGlrZSBub2RlIGJ1aWx0IGl0LCB0b28uLi4pXG4gICAgICBjb25zdCBjcmVhdGlvblN0YWNrID0gWyctLS0gcmVzb3VyY2UgY3JlYXRlZCBhdCAtLS0nLCAuLi50aGlzLmNyZWF0aW9uU3RhY2tUcmFjZV0uam9pbignXFxuICBhdCAnKTtcbiAgICAgIGNvbnN0IHByb2JsZW1UcmFjZSA9IGUuc3RhY2suc3Vic3RyKGUuc3RhY2suaW5kZXhPZihlLm1lc3NhZ2UpICsgZS5tZXNzYWdlLmxlbmd0aCk7XG4gICAgICBlLnN0YWNrID0gYCR7ZS5tZXNzYWdlfVxcbiAgJHtjcmVhdGlvblN0YWNrfVxcbiAgLS0tIHByb2JsZW0gZGlzY292ZXJlZCBhdCAtLS0ke3Byb2JsZW1UcmFjZX1gO1xuICAgICAgLy8gUmUtdGhyb3dcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlbmRlclByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckRlcGVuZHNPbigpIHtcbiAgICBjb25zdCBsb2dpY2FsSURzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBkIG9mIHRoaXMuZGVwZW5kc09uKSB7XG4gICAgICBhZGREZXBlbmRlbmN5KGQpO1xuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5mcm9tKGxvZ2ljYWxJRHMpO1xuXG4gICAgZnVuY3Rpb24gYWRkRGVwZW5kZW5jeShkOiBJRGVwZW5kYWJsZSkge1xuICAgICAgZC5kZXBlbmRlbmN5RWxlbWVudHMuZm9yRWFjaChkZXAgPT4ge1xuICAgICAgICBjb25zdCBsb2dpY2FsSWQgPSAoZGVwIGFzIFN0YWNrRWxlbWVudCkubG9naWNhbElkO1xuICAgICAgICBpZiAobG9naWNhbElkKSB7XG4gICAgICAgICAgbG9naWNhbElEcy5hZGQobG9naWNhbElkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIGJyZWFrIGlmIGRlcGVuZGVuY3lFbGVtZW50cyBpbmNsdWRlIG9ubHkgJ2QnLCB3aGljaCBtZWFucyB3ZSByZWFjaGVkIGEgdGVybWluYWwuXG4gICAgICBpZiAoZC5kZXBlbmRlbmN5RWxlbWVudHMubGVuZ3RoID09PSAxICYmIGQuZGVwZW5kZW5jeUVsZW1lbnRzWzBdID09PSBkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGQuZGVwZW5kZW5jeUVsZW1lbnRzLmZvckVhY2goZGVwID0+IGFkZERlcGVuZGVuY3koZGVwKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgY29uZGl0aW9uIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgcmVzb3VyY2UuIFRoaXMgbWVhbnMgdGhhdCBvbmx5IGlmIHRoZSBjb25kaXRpb24gZXZhbHVhdGVzIHRvICd0cnVlJyB3aGVuIHRoZSBzdGFja1xuICAgKiBpcyBkZXBsb3llZCwgdGhlIHJlc291cmNlIHdpbGwgYmUgaW5jbHVkZWQuIFRoaXMgaXMgcHJvdmlkZWQgdG8gYWxsb3cgQ0RLIHByb2plY3RzIHRvIHByb2R1Y2UgbGVnYWN5IHRlbXBsYXRlcywgYnV0IG5vcmFtbGx5XG4gICAqIHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIGl0IGluIENESyBwcm9qZWN0cy5cbiAgICovXG4gIGNvbmRpdGlvbj86IENvbmRpdGlvbjtcblxuICAvKipcbiAgICogQXNzb2NpYXRlIHRoZSBDcmVhdGlvblBvbGljeSBhdHRyaWJ1dGUgd2l0aCBhIHJlc291cmNlIHRvIHByZXZlbnQgaXRzIHN0YXR1cyBmcm9tIHJlYWNoaW5nIGNyZWF0ZSBjb21wbGV0ZSB1bnRpbFxuICAgKiBBV1MgQ2xvdWRGb3JtYXRpb24gcmVjZWl2ZXMgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIHN1Y2Nlc3Mgc2lnbmFscyBvciB0aGUgdGltZW91dCBwZXJpb2QgaXMgZXhjZWVkZWQuIFRvIHNpZ25hbCBhXG4gICAqIHJlc291cmNlLCB5b3UgY2FuIHVzZSB0aGUgY2ZuLXNpZ25hbCBoZWxwZXIgc2NyaXB0IG9yIFNpZ25hbFJlc291cmNlIEFQSS4gQVdTIENsb3VkRm9ybWF0aW9uIHB1Ymxpc2hlcyB2YWxpZCBzaWduYWxzXG4gICAqIHRvIHRoZSBzdGFjayBldmVudHMgc28gdGhhdCB5b3UgdHJhY2sgdGhlIG51bWJlciBvZiBzaWduYWxzIHNlbnQuXG4gICAqL1xuICBjcmVhdGlvblBvbGljeT86IENyZWF0aW9uUG9saWN5O1xuXG4gIC8qKlxuICAgKiBXaXRoIHRoZSBEZWxldGlvblBvbGljeSBhdHRyaWJ1dGUgeW91IGNhbiBwcmVzZXJ2ZSBvciAoaW4gc29tZSBjYXNlcykgYmFja3VwIGEgcmVzb3VyY2Ugd2hlbiBpdHMgc3RhY2sgaXMgZGVsZXRlZC5cbiAgICogWW91IHNwZWNpZnkgYSBEZWxldGlvblBvbGljeSBhdHRyaWJ1dGUgZm9yIGVhY2ggcmVzb3VyY2UgdGhhdCB5b3Ugd2FudCB0byBjb250cm9sLiBJZiBhIHJlc291cmNlIGhhcyBubyBEZWxldGlvblBvbGljeVxuICAgKiBhdHRyaWJ1dGUsIEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIHRoZSByZXNvdXJjZSBieSBkZWZhdWx0LiBOb3RlIHRoYXQgdGhpcyBjYXBhYmlsaXR5IGFsc28gYXBwbGllcyB0byB1cGRhdGUgb3BlcmF0aW9uc1xuICAgKiB0aGF0IGxlYWQgdG8gcmVzb3VyY2VzIGJlaW5nIHJlbW92ZWQuXG4gICAqL1xuICBkZWxldGlvblBvbGljeT86IERlbGV0aW9uUG9saWN5O1xuXG4gIC8qKlxuICAgKiBVc2UgdGhlIFVwZGF0ZVBvbGljeSBhdHRyaWJ1dGUgdG8gc3BlY2lmeSBob3cgQVdTIENsb3VkRm9ybWF0aW9uIGhhbmRsZXMgdXBkYXRlcyB0byB0aGUgQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cFxuICAgKiByZXNvdXJjZS4gQVdTIENsb3VkRm9ybWF0aW9uIGludm9rZXMgb25lIG9mIHRocmVlIHVwZGF0ZSBwb2xpY2llcyBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgY2hhbmdlIHlvdSBtYWtlIG9yIHdoZXRoZXIgYVxuICAgKiBzY2hlZHVsZWQgYWN0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLlxuICAgKi9cbiAgdXBkYXRlUG9saWN5PzogVXBkYXRlUG9saWN5O1xuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY29uc3RydWN0IG1ldGFkYXRhIHdoaWNoIGNhbiBiZSBhZGRlZFxuICAgKiB1c2luZyBjb25zdHJ1Y3QuYWRkTWV0YWRhdGEoKSwgYnV0IHdvdWxkIG5vdCBhcHBlYXIgaW4gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBtZXRhZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogTWVyZ2VzIGBzb3VyY2VgIGludG8gYHRhcmdldGAsIG92ZXJyaWRpbmcgYW55IGV4aXN0aW5nIHZhbHVlcy5cbiAqIGBudWxsYHMgd2lsbCBjYXVzZSBhIHZhbHVlIHRvIGJlIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwTWVyZ2UodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KSB7XG4gIGlmICh0eXBlb2Yoc291cmNlKSAhPT0gJ29iamVjdCcgfHwgdHlwZW9mKHRhcmdldCkgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVzYWdlLiBCb3RoIHNvdXJjZSAoJHtKU09OLnN0cmluZ2lmeShzb3VyY2UpfSkgYW5kIHRhcmdldCAoJHtKU09OLnN0cmluZ2lmeSh0YXJnZXQpfSkgbXVzdCBiZSBvYmplY3RzYCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzb3VyY2UpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIC8vIGlmIHRoZSB2YWx1ZSBhdCB0aGUgdGFyZ2V0IGlzIG5vdCBhbiBvYmplY3QsIG92ZXJyaWRlIGl0IHdpdGggYW5cbiAgICAgIC8vIG9iamVjdCBzbyB3ZSBjYW4gY29udGludWUgdGhlIHJlY3Vyc2lvblxuICAgICAgaWYgKHR5cGVvZih0YXJnZXRba2V5XSkgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRhcmdldFtrZXldID0geyB9O1xuICAgICAgfVxuXG4gICAgICBkZWVwTWVyZ2UodGFyZ2V0W2tleV0sIHZhbHVlKTtcblxuICAgICAgLy8gaWYgdGhlIHJlc3VsdCBvZiB0aGUgbWVyZ2UgaXMgYW4gZW1wdHkgb2JqZWN0LCBpdCdzIGJlY2F1c2UgdGhlXG4gICAgICAvLyBldmVudHVhbCB2YWx1ZSB3ZSBhc3NpZ25lZCBpcyBgdW5kZWZpbmVkYCwgYW5kIHRoZXJlIGFyZSBub1xuICAgICAgLy8gc2libGluZyBjb25jcmV0ZSB2YWx1ZXMgYWxvbmdzaWRlLCBzbyB3ZSBjYW4gZGVsZXRlIHRoaXMgdHJlZS5cbiAgICAgIGNvbnN0IG91dHB1dCA9IHRhcmdldFtrZXldO1xuICAgICAgaWYgKHR5cGVvZihvdXRwdXQpID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyhvdXRwdXQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkZWxldGUgdGFyZ2V0W2tleV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgdGFyZ2V0W2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUEwQztBQUUxQyx1Q0FBb0U7QUFDcEUsaUVBQTZEO0FBRzdELG1DQUFtRTtBQWNuRTs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLHFCQUFhO0lBcUR6Qzs7O09BR0c7SUFDSCxZQUFZLE1BQWlCLEVBQUUsSUFBWSxFQUFFLEtBQW9CO1FBQy9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUF6Q3RCOztXQUVHO1FBQ2EsWUFBTyxHQUFvQixFQUFFLENBQUM7UUFPOUM7Ozs7Ozs7OztXQVNHO1FBQ2dCLDZCQUF3QixHQUFRLEVBQUcsQ0FBQztRQVN2RDs7V0FFRztRQUNjLGlCQUFZLEdBQVEsRUFBRyxDQUFDO1FBRWpDLGNBQVMsR0FBRyxJQUFJLEtBQUssRUFBZSxDQUFDO1FBUzNDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxFQUFHLENBQUM7UUFFMUMsd0VBQXdFO1FBQ3hFLHVFQUF1RTtRQUN2RSxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHO2dCQUN0QixDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ3JDLENBQUM7U0FDSDtJQUNILENBQUM7SUExRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBbUI7UUFDekMsT0FBTyxDQUFD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cGknKTtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJy4uL2NvcmUvY29uc3RydWN0JztcbmltcG9ydCB7IGNhcGl0YWxpemVQcm9wZXJ0eU5hbWVzLCBpZ25vcmVFbXB0eSB9IGZyb20gJy4uL2NvcmUvdXRpbCc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvblRva2VuIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbi10b2tlbic7XG5pbXBvcnQgeyBDb25kaXRpb24gfSBmcm9tICcuL2NvbmRpdGlvbic7XG5pbXBvcnQgeyBDcmVhdGlvblBvbGljeSwgRGVsZXRpb25Qb2xpY3ksIFVwZGF0ZVBvbGljeSB9IGZyb20gJy4vcmVzb3VyY2UtcG9saWN5JztcbmltcG9ydCB7IElEZXBlbmRhYmxlLCBSZWZlcmVuY2VhYmxlLCBTdGFja0VsZW1lbnQgfSBmcm9tICcuL3N0YWNrJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUuXG4gICAqL1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMuXG4gICAqL1xuICBwcm9wZXJ0aWVzPzogYW55O1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgUmVmZXJlbmNlYWJsZSB7XG4gIC8qKlxuICAgKiBBIGRlY29yYXRpb24gdXNlZCB0byBjcmVhdGUgYSBDbG91ZEZvcm1hdGlvbiBhdHRyaWJ1dGUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBjdXN0b21OYW1lIEN1c3RvbSBuYW1lIGZvciB0aGUgYXR0cmlidXRlIChkZWZhdWx0IGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSlcbiAgICogTk9URTogd2UgcmV0dXJuIFwiYW55XCIgaGVyZSB0byBzYXRpc3RmeSBqc2lpLCB3aGljaCBkb2Vzbid0IHN1cHBvcnQgbGFtYmRhcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXR0cmlidXRlKGN1c3RvbU5hbWU/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiAocHJvdG90eXBlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gY3VzdG9tTmFtZSB8fCBrZXk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLmdldEF0dChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGlzIHJlc291cmNlLCBzdWNoIGFzIGNvbmRpdGlvbiwgdXBkYXRlIHBvbGljeSBldGMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogUmVzb3VyY2VPcHRpb25zID0ge307XG5cbiAgLyoqXG4gICAqIEFXUyByZXNvdXJjZSB0eXBlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlVHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1MgcmVzb3VyY2UgcHJvcGVydHkgb3ZlcnJpZGVzLlxuICAgKlxuICAgKiBEdXJpbmcgc3ludGhlc2lzLCB0aGUgbWV0aG9kIFwicmVuZGVyUHJvcGVydGllcyh0aGlzLm92ZXJyaWRlcylcIiBpcyBjYWxsZWRcbiAgICogd2l0aCB0aGlzIG9iamVjdCwgYW5kIG1lcmdlZCBvbiB0b3Agb2YgdGhlIG91dHB1dCBvZlxuICAgKiBcInJlbmRlclByb3BlcnRpZXModGhpcy5wcm9wZXJ0aWVzKVwiLlxuICAgKlxuICAgKiBEZXJpdmVkIGNsYXNzZXMgc2hvdWxkIGV4cG9zZSBhIHN0cm9uZ2x5LXR5cGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QgYXNcbiAgICogYSBwdWJsaWMgcHJvcGVydHkgY2FsbGVkIGBwcm9wZXJ0eU92ZXJyaWRlc2AuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzOiBhbnkgPSB7IH07XG5cbiAgLyoqXG4gICAqIEFXUyByZXNvdXJjZSBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBUaGlzIG9iamVjdCBpcyByZW5kZXJlZCB2aWEgYSBjYWxsIHRvIFwicmVuZGVyUHJvcGVydGllcyh0aGlzLnByb3BlcnRpZXMpXCIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvcGVydGllczogYW55O1xuXG4gIC8qKlxuICAgKiBBbiBvYmplY3QgdG8gYmUgbWVyZ2VkIG9uIHRvcCBvZiB0aGUgZW50aXJlIHJlc291cmNlIGRlZmluaXRpb24uXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHJhd092ZXJyaWRlczogYW55ID0geyB9O1xuXG4gIHByaXZhdGUgZGVwZW5kc09uID0gbmV3IEFycmF5PElEZXBlbmRhYmxlPigpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcmVzb3VyY2UgY29uc3RydWN0LlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSBDbG91ZEZvcm1hdGlvbiB0eXBlIG9mIHRoaXMgcmVzb3VyY2UgKGUuZy4gQVdTOjpEeW5hbW9EQjo6VGFibGUpXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogUmVzb3VyY2VQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG5cbiAgICBpZiAoIXByb3BzLnR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGB0eXBlYCBwcm9wZXJ0eSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHRoaXMucmVzb3VyY2VUeXBlID0gcHJvcHMudHlwZTtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wcy5wcm9wZXJ0aWVzIHx8IHsgfTtcblxuICAgIC8vIGlmIGF3czpjZGs6ZW5hYmxlLXBhdGgtbWV0YWRhdGEgaXMgc2V0LCBlbWJlZCB0aGUgY3VycmVudCBjb25zdHJ1Y3Qnc1xuICAgIC8vIHBhdGggaW4gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlLCBzbyBpdCB3aWxsIGJlIHBvc3NpYmxlIHRvIHRyYWNlXG4gICAgLy8gYmFjayB0byB0aGUgYWN0dWFsIGNvbnN0cnVjdCBwYXRoLlxuICAgIGlmICh0aGlzLmdldENvbnRleHQoY3hhcGkuUEFUSF9NRVRBREFUQV9FTkFCTEVfQ09OVEVYVCkpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5tZXRhZGF0YSA9IHtcbiAgICAgICAgW2N4YXBpLlBBVEhfTUVUQURBVEFfS0VZXTogdGhpcy5wYXRoXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdG9rZW4gZm9yIGFuIHJ1bnRpbWUgYXR0cmlidXRlIG9mIHRoaXMgcmVzb3VyY2UuXG4gICAqIElkZWFsbHksIHVzZSBnZW5lcmF0ZWQgYXR0cmlidXRlIGFjY2Vzc29ycyAoZS5nLiBgcmVzb3VyY2UuYXJuYCksIGJ1dCB0aGlzIGNhbiBiZSB1c2VkIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eVxuICAgKiBpbiBjYXNlIHRoZXJlIGlzIG5vIGdlbmVyYXRlZCBhdHRyaWJ1dGUuXG4gICAqIEBwYXJhbSBhdHRyaWJ1dGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0QXR0KGF0dHJpYnV0ZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ2xvdWRGb3JtYXRpb25Ub2tlbih7ICdGbjo6R2V0QXR0JzogW3RoaXMubG9naWNhbElkLCBhdHRyaWJ1dGVOYW1lXSB9LCBgJHt0aGlzLmxvZ2ljYWxJZH0uJHthdHRyaWJ1dGVOYW1lfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBkZXBlbmRlbmN5IG9uIGFub3RoZXIgcmVzb3VyY2UuXG4gICAqIEBwYXJhbSBvdGhlciBUaGUgb3RoZXIgcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kZW5jeSguLi5vdGhlcjogSURlcGVuZGFibGVbXSkge1xuICAgIHRoaXMuZGVwZW5kc09uLnB1c2goLi4ub3RoZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gb3ZlcnJpZGUgdG8gdGhlIHN5bnRoZXNpemVkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLiBUbyBhZGQgYVxuICAgKiBwcm9wZXJ0eSBvdmVycmlkZSwgZWl0aGVyIHVzZSBgYWRkUHJvcGVydHlPdmVycmlkZWAgb3IgcHJlZml4IGBwYXRoYCB3aXRoXG4gICAqIFwiUHJvcGVydGllcy5cIiAoaS5lLiBgUHJvcGVydGllcy5Ub3BpY05hbWVgKS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSwgeW91IGNhbiB1c2UgZG90IG5vdGF0aW9uIHRvXG4gICAqICAgICAgICBvdmVycmlkZSB2YWx1ZXMgaW4gY29tcGxleCB0eXBlcy4gQW55IGludGVybWRlZGlhdGUga2V5c1xuICAgKiAgICAgICAgd2lsbCBiZSBjcmVhdGVkIGFzIG5lZWRlZC5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZS4gQ291bGQgYmUgcHJpbWl0aXZlIG9yIGNvbXBsZXguXG4gICAqL1xuICBwdWJsaWMgYWRkT3ZlcnJpZGUocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgbGV0IGN1cnI6IGFueSA9IHRoaXMucmF3T3ZlcnJpZGVzO1xuXG4gICAgd2hpbGUgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IGtleSA9IHBhcnRzLnNoaWZ0KCkhO1xuXG4gICAgICAvLyBpZiB3ZSBjYW4ndCByZWN1cnNlIGZ1cnRoZXIgb3IgdGhlIHByZXZpb3VzIHZhbHVlIGlzIG5vdCBhblxuICAgICAgLy8gb2JqZWN0IG92ZXJ3cml0ZSBpdCB3aXRoIGFuIG9iamVjdC5cbiAgICAgIGNvbnN0IGlzT2JqZWN0ID0gY3VycltrZXldICE9IG51bGwgJiYgdHlwZW9mKGN1cnJba2V5XSkgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGN1cnJba2V5XSk7XG4gICAgICBpZiAoIWlzT2JqZWN0KSB7XG4gICAgICAgIGN1cnJba2V5XSA9IHsgfTtcbiAgICAgIH1cblxuICAgICAgY3VyciA9IGN1cnJba2V5XTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0S2V5ID0gcGFydHMuc2hpZnQoKSE7XG4gICAgY3VycltsYXN0S2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bnRhY3RpYyBzdWdhciBmb3IgYGFkZE92ZXJyaWRlKHBhdGgsIHVuZGVmaW5lZClgLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBvZiB0aGUgdmFsdWUgdG8gZGVsZXRlXG4gICAqL1xuICBwdWJsaWMgYWRkRGVsZXRpb25PdmVycmlkZShwYXRoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFkZE92ZXJyaWRlKHBhdGgsIHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBvdmVycmlkZSB0byBhIHJlc291cmNlIHByb3BlcnR5LlxuICAgKlxuICAgKiBTeW50YWN0aWMgc3VnYXIgZm9yIGBhZGRPdmVycmlkZShcIlByb3BlcnRpZXMuPC4uLj5cIiwgdmFsdWUpYC5cbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnR5UGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHlcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIGFkZFByb3BlcnR5T3ZlcnJpZGUocHJvcGVydHlQYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmFkZE92ZXJyaWRlKGBQcm9wZXJ0aWVzLiR7cHJvcGVydHlQYXRofWAsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIG92ZXJyaWRlIHRoYXQgZGVsZXRlcyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBmcm9tIHRoZSByZXNvdXJjZSBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0gcHJvcGVydHlQYXRoIFRoZSBwYXRoIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIHB1YmxpYyBhZGRQcm9wZXJ0eURlbGV0aW9uT3ZlcnJpZGUocHJvcGVydHlQYXRoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFkZFByb3BlcnR5T3ZlcnJpZGUocHJvcGVydHlQYXRoLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIENsb3VkRm9ybWF0aW9uIGZvciB0aGlzIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHRvQ2xvdWRGb3JtYXRpb24oKTogb2JqZWN0IHtcbiAgICB0cnkge1xuICAgICAgLy8gbWVyZ2UgcHJvcGVydHkgb3ZlcnJpZGVzIG9udG8gcHJvcGVydGllcyBhbmQgdGhlbiByZW5kZXIgKGFuZCB2YWxpZGF0ZSkuXG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5yZW5kZXJQcm9wZXJ0aWVzKGRlZXBNZXJnZSh0aGlzLnByb3BlcnRpZXMgfHwgeyB9LCB0aGlzLnVudHlwZWRQcm9wZXJ0eU92ZXJyaWRlcykpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBbdGhpcy5sb2dpY2FsSWRdOiBkZWVwTWVyZ2Uoe1xuICAgICAgICAgICAgVHlwZTogdGhpcy5yZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiBpZ25vcmVFbXB0eShwcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgIERlcGVuZHNPbjogaWdub3JlRW1wdHkodGhpcy5yZW5kZXJEZXBlbmRzT24oKSksXG4gICAgICAgICAgICBDcmVhdGlvblBvbGljeTogIGNhcGl0YWxpemVQcm9wZXJ0eU5hbWVzKHRoaXMub3B0aW9ucy5jcmVhdGlvblBvbGljeSksXG4gICAgICAgICAgICBVcGRhdGVQb2xpY3k6IGNhcGl0YWxpemVQcm9wZXJ0eU5hbWVzKHRoaXMub3B0aW9ucy51cGRhdGVQb2xpY3kpLFxuICAgICAgICAgICAgRGVsZXRpb25Qb2xpY3k6IGNhcGl0YWxpemVQcm9wZXJ0eU5hbWVzKHRoaXMub3B0aW9ucy5kZWxldGlvblBvbGljeSksXG4gICAgICAgICAgICBNZXRhZGF0YTogaWdub3JlRW1wdHkodGhpcy5vcHRpb25zLm1ldGFkYXRhKSxcbiAgICAgICAgICAgIENvbmRpdGlvbjogdGhpcy5vcHRpb25zLmNvbmRpdGlvbiAmJiB0aGlzLm9wdGlvbnMuY29uZGl0aW9uLmxvZ2ljYWxJZFxuICAgICAgICAgIH0sIHRoaXMucmF3T3ZlcnJpZGVzKVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIENoYW5nZSBtZXNzYWdlXG4gICAgICBlLm1lc3NhZ2UgPSBgV2hpbGUgc3ludGhlc2l6aW5nICR7dGhpcy5wYXRofTogJHtlLm1lc3NhZ2V9YDtcbiAgICAgIC8vIEFkanVzdCBzdGFjayB0cmFjZSAobWFrZSBpdCBsb29rIGxpa2Ugbm9kZSBidWlsdCBpdCwgdG9vLi4uKVxuICAgICAgY29uc3QgY3JlYXRpb25TdGFjayA9IFsnLS0tIHJlc291cmNlIGNyZWF0ZWQgYXQgLS0tJywgLi4udGhpcy5jcmVhdGlvblN0YWNrVHJhY2VdLmpvaW4oJ1xcbiAgYXQgJyk7XG4gICAgICBjb25zdCBwcm9ibGVtVHJhY2UgPSBlLnN0YWNrLnN1YnN0cihlLnN0YWNrLmluZGV4T2YoZS5tZXNzYWdlKSArIGUubWVzc2FnZS5sZW5ndGgpO1xuICAgICAgZS5zdGFjayA9IGAke2UubWVzc2FnZX1cXG4gICR7Y3JlYXRpb25TdGFja31cXG4gIC0tLSBwcm9ibGVtIGRpc2NvdmVyZWQgYXQgLS0tJHtwcm9ibGVtVHJhY2V9YDtcbiAgICAgIC8vIFJlLXRocm93XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJEZXBlbmRzT24oKSB7XG4gICAgY29uc3QgbG9naWNhbElEcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgZCBvZiB0aGlzLmRlcGVuZHNPbikge1xuICAgICAgYWRkRGVwZW5kZW5jeShkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShsb2dpY2FsSURzKTtcblxuICAgIGZ1bmN0aW9uIGFkZERlcGVuZGVuY3koZDogSURlcGVuZGFibGUpIHtcbiAgICAgIGQuZGVwZW5kZW5jeUVsZW1lbnRzLmZvckVhY2goZGVwID0+IHtcbiAgICAgICAgY29uc3QgbG9naWNhbElkID0gKGRlcCBhcyBTdGFja0VsZW1lbnQpLmxvZ2ljYWxJZDtcbiAgICAgICAgaWYgKGxvZ2ljYWxJZCkge1xuICAgICAgICAgIGxvZ2ljYWxJRHMuYWRkKGxvZ2ljYWxJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBicmVhayBpZiBkZXBlbmRlbmN5RWxlbWVudHMgaW5jbHVkZSBvbmx5ICdkJywgd2hpY2ggbWVhbnMgd2UgcmVhY2hlZCBhIHRlcm1pbmFsLlxuICAgICAgaWYgKGQuZGVwZW5kZW5jeUVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBkLmRlcGVuZGVuY3lFbGVtZW50c1swXSA9PT0gZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkLmRlcGVuZGVuY3lFbGVtZW50cy5mb3JFYWNoKGRlcCA9PiBhZGREZXBlbmRlbmN5KGRlcCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGNvbmRpdGlvbiB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHJlc291cmNlLiBUaGlzIG1lYW5zIHRoYXQgb25seSBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byAndHJ1ZScgd2hlbiB0aGUgc3RhY2tcbiAgICogaXMgZGVwbG95ZWQsIHRoZSByZXNvdXJjZSB3aWxsIGJlIGluY2x1ZGVkLiBUaGlzIGlzIHByb3ZpZGVkIHRvIGFsbG93IENESyBwcm9qZWN0cyB0byBwcm9kdWNlIGxlZ2FjeSB0ZW1wbGF0ZXMsIGJ1dCBub3JhbWxseVxuICAgKiB0aGVyZSBpcyBubyBuZWVkIHRvIHVzZSBpdCBpbiBDREsgcHJvamVjdHMuXG4gICAqL1xuICBjb25kaXRpb24/OiBDb25kaXRpb247XG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZSB0aGUgQ3JlYXRpb25Qb2xpY3kgYXR0cmlidXRlIHdpdGggYSByZXNvdXJjZSB0byBwcmV2ZW50IGl0cyBzdGF0dXMgZnJvbSByZWFjaGluZyBjcmVhdGUgY29tcGxldGUgdW50aWxcbiAgICogQVdTIENsb3VkRm9ybWF0aW9uIHJlY2VpdmVzIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzdWNjZXNzIHNpZ25hbHMgb3IgdGhlIHRpbWVvdXQgcGVyaW9kIGlzIGV4Y2VlZGVkLiBUbyBzaWduYWwgYVxuICAgKiByZXNvdXJjZSwgeW91IGNhbiB1c2UgdGhlIGNmbi1zaWduYWwgaGVscGVyIHNjcmlwdCBvciBTaWduYWxSZXNvdXJjZSBBUEkuIEFXUyBDbG91ZEZvcm1hdGlvbiBwdWJsaXNoZXMgdmFsaWQgc2lnbmFsc1xuICAgKiB0byB0aGUgc3RhY2sgZXZlbnRzIHNvIHRoYXQgeW91IHRyYWNrIHRoZSBudW1iZXIgb2Ygc2lnbmFscyBzZW50LlxuICAgKi9cbiAgY3JlYXRpb25Qb2xpY3k/OiBDcmVhdGlvblBvbGljeTtcblxuICAvKipcbiAgICogV2l0aCB0aGUgRGVsZXRpb25Qb2xpY3kgYXR0cmlidXRlIHlvdSBjYW4gcHJlc2VydmUgb3IgKGluIHNvbWUgY2FzZXMpIGJhY2t1cCBhIHJlc291cmNlIHdoZW4gaXRzIHN0YWNrIGlzIGRlbGV0ZWQuXG4gICAqIFlvdSBzcGVjaWZ5IGEgRGVsZXRpb25Qb2xpY3kgYXR0cmlidXRlIGZvciBlYWNoIHJlc291cmNlIHRoYXQgeW91IHdhbnQgdG8gY29udHJvbC4gSWYgYSByZXNvdXJjZSBoYXMgbm8gRGVsZXRpb25Qb2xpY3lcbiAgICogYXR0cmlidXRlLCBBV1MgQ2xvdWRGb3JtYXRpb24gZGVsZXRlcyB0aGUgcmVzb3VyY2UgYnkgZGVmYXVsdC4gTm90ZSB0aGF0IHRoaXMgY2FwYWJpbGl0eSBhbHNvIGFwcGxpZXMgdG8gdXBkYXRlIG9wZXJhdGlvbnNcbiAgICogdGhhdCBsZWFkIHRvIHJlc291cmNlcyBiZWluZyByZW1vdmVkLlxuICAgKi9cbiAgZGVsZXRpb25Qb2xpY3k/OiBEZWxldGlvblBvbGljeTtcblxuICAvKipcbiAgICogVXNlIHRoZSBVcGRhdGVQb2xpY3kgYXR0cmlidXRlIHRvIHNwZWNpZnkgaG93IEFXUyBDbG91ZEZvcm1hdGlvbiBoYW5kbGVzIHVwZGF0ZXMgdG8gdGhlIEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcbiAgICogcmVzb3VyY2UuIEFXUyBDbG91ZEZvcm1hdGlvbiBpbnZva2VzIG9uZSBvZiB0aHJlZSB1cGRhdGUgcG9saWNpZXMgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGNoYW5nZSB5b3UgbWFrZSBvciB3aGV0aGVyIGFcbiAgICogc2NoZWR1bGVkIGFjdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIEF1dG8gU2NhbGluZyBncm91cC5cbiAgICovXG4gIHVwZGF0ZVBvbGljeT86IFVwZGF0ZVBvbGljeTtcblxuICAvKipcbiAgICogTWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZS4gVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGNvbnN0cnVjdCBtZXRhZGF0YSB3aGljaCBjYW4gYmUgYWRkZWRcbiAgICogdXNpbmcgY29uc3RydWN0LmFkZE1ldGFkYXRhKCksIGJ1dCB3b3VsZCBub3QgYXBwZWFyIGluIHRoZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgbWV0YWRhdGE/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIE1lcmdlcyBgc291cmNlYCBpbnRvIGB0YXJnZXRgLCBvdmVycmlkaW5nIGFueSBleGlzdGluZyB2YWx1ZXMuXG4gKiBgbnVsbGBzIHdpbGwgY2F1c2UgYSB2YWx1ZSB0byBiZSBkZWxldGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcE1lcmdlKHRhcmdldDogYW55LCBzb3VyY2U6IGFueSkge1xuICBpZiAodHlwZW9mKHNvdXJjZSkgIT09ICdvYmplY3QnIHx8IHR5cGVvZih0YXJnZXQpICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1c2FnZS4gQm90aCBzb3VyY2UgKCR7SlNPTi5zdHJpbmdpZnkoc291cmNlKX0pIGFuZCB0YXJnZXQgKCR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX0pIG11c3QgYmUgb2JqZWN0c2ApO1xuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc291cmNlKSkge1xuICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XG4gICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlICE9IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAvLyBpZiB0aGUgdmFsdWUgYXQgdGhlIHRhcmdldCBpcyBub3QgYW4gb2JqZWN0LCBvdmVycmlkZSBpdCB3aXRoIGFuXG4gICAgICAvLyBvYmplY3Qgc28gd2UgY2FuIGNvbnRpbnVlIHRoZSByZWN1cnNpb25cbiAgICAgIGlmICh0eXBlb2YodGFyZ2V0W2tleV0pICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHsgfTtcbiAgICAgIH1cblxuICAgICAgZGVlcE1lcmdlKHRhcmdldFtrZXldLCB2YWx1ZSk7XG5cbiAgICAgIC8vIGlmIHRoZSByZXN1bHQgb2YgdGhlIG1lcmdlIGlzIGFuIGVtcHR5IG9iamVjdCwgaXQncyBiZWNhdXNlIHRoZVxuICAgICAgLy8gZXZlbnR1YWwgdmFsdWUgd2UgYXNzaWduZWQgaXMgYHVuZGVmaW5lZGAsIGFuZCB0aGVyZSBhcmUgbm9cbiAgICAgIC8vIHNpYmxpbmcgY29uY3JldGUgdmFsdWVzIGFsb25nc2lkZSwgc28gd2UgY2FuIGRlbGV0ZSB0aGlzIHRyZWUuXG4gICAgICBjb25zdCBvdXRwdXQgPSB0YXJnZXRba2V5XTtcbiAgICAgIGlmICh0eXBlb2Yob3V0cHV0KSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMob3V0cHV0KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVsZXRlIHRhcmdldFtrZXldO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIHRhcmdldFtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG4iXX0=

28

lib/context.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const cxapi = require("@aws-cdk/cx-api");
const stack_1 = require("./cloudformation/stack");
const AVAILABILITY_ZONES_PROVIDER = 'availability-zones';
const SSM_PARAMETER_PROVIDER = 'ssm';
/**

@@ -111,3 +110,3 @@ * Base class for the model side of context providers

constructor(context) {
this.provider = new ContextProvider(context, AVAILABILITY_ZONES_PROVIDER);
this.provider = new ContextProvider(context, cxapi.AVAILABILITY_ZONE_PROVIDER);
}

@@ -127,3 +126,3 @@ /**

constructor(context, props) {
this.provider = new ContextProvider(context, SSM_PARAMETER_PROVIDER, props);
this.provider = new ContextProvider(context, cxapi.SSM_PARAMETER_PROVIDER, props);
}

@@ -146,20 +145,16 @@ /**

}
function propsToArray(props) {
const propArray = [];
const keys = Object.keys(props);
keys.sort();
for (const key of keys) {
function propsToArray(props, keyPrefix = '') {
const ret = [];
for (const key of Object.keys(props)) {
switch (typeof props[key]) {
case 'object': {
const childObjStrs = propsToArray(props[key]);
const qualifiedChildStr = childObjStrs.map(child => (`${key}.${child}`)).join(':');
propArray.push(qualifiedChildStr);
ret.push(...propsToArray(props[key], `${keyPrefix}${key}.`));
break;
}
case 'string': {
propArray.push(`${key}=${colonQuote(props[key])}`);
ret.push(`${keyPrefix}${key}=${colonQuote(props[key])}`);
break;
}
default: {
propArray.push(`${key}=${JSON.stringify(props[key])}`);
ret.push(`${keyPrefix}${key}=${JSON.stringify(props[key])}`);
break;

@@ -169,4 +164,5 @@ }

}
return propArray;
ret.sort();
return ret;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrREFBK0M7QUFHL0MsTUFBTSwyQkFBMkIsR0FBRyxvQkFBb0IsQ0FBQztBQUN6RCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQztBQUdyQzs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsZUFBZTtJQUsxQixZQUNtQixPQUFrQixFQUNsQixRQUFnQixFQUNqQyxRQUE4QixFQUFFO1FBRmYsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBRWpDLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxtQkFDUixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUMxQixLQUFLLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixNQUFNLFdBQVcsR0FBYSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRLENBQUMsWUFBaUI7UUFDL0IsK0VBQStFO1FBQy9FLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhELElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUNEOzs7T0FHRztJQUNJLGNBQWMsQ0FBRSxZQUFvQjtRQUN6QyxrRUFBa0U7UUFDbEUsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUUsT0FBTyxZQUFZLENBQUM7U0FDckI7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEQsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ2pCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUM3QixNQUFNLElBQUksU0FBUyxDQUFDLCtCQUErQixJQUFJLENBQUMsR0FBRyw4QkFBOEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEg7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGtCQUFrQixDQUN2QixZQUFzQjtRQUNwQixrRUFBa0U7UUFDbEUsZ0ZBQWdGO1FBQ2hGLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhELElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsR0FBRyxvQ0FBb0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekc7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNKO0FBdkdELDBDQXVHQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxVQUFVLENBQUMsRUFBVTtJQUM1QixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBYSx3QkFBd0I7SUFHbkMsWUFBWSxPQUFrQjtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsaUJBQWlCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBQ0Y7QUFkRCw0REFjQztBQVFEOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFHL0IsWUFBWSxPQUFrQixFQUFFLEtBQWdDO1FBQzlELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxZQUFZLEdBQUcsT0FBTztRQUMxQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQWJELG9EQWFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLEtBQThCO0lBQy9FLElBQUksQ0FBQyxHQUFHLCtDQUErQyxRQUFRLEVBQUUsQ0FBQztJQUNsRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUMsSUFBSSxnQkFBZ0IsV0FBVyxHQUFHLENBQUM7SUFDcEMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNWLENBQUMsSUFBSSxrSEFBa0gsQ0FBQztJQUN4SCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUEyQjtJQUMvQyxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFDL0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDWixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtRQUN0QixRQUFRLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2IsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BGLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDbEMsTUFBTTthQUNQO1lBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELE1BQU07YUFDUDtZQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNQLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELE1BQU07YUFDUDtTQUNGO0tBQ0Y7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uL3N0YWNrJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJy4vY29yZS9jb25zdHJ1Y3QnO1xuXG5jb25zdCBBVkFJTEFCSUxJVFlfWk9ORVNfUFJPVklERVIgPSAnYXZhaWxhYmlsaXR5LXpvbmVzJztcbmNvbnN0IFNTTV9QQVJBTUVURVJfUFJPVklERVIgPSAnc3NtJztcblxudHlwZSBDb250ZXh0UHJvdmlkZXJQcm9wcyA9IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciB0aGUgbW9kZWwgc2lkZSBvZiBjb250ZXh0IHByb3ZpZGVyc1xuICpcbiAqIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNvbW11bmljYXRlIHdpdGggY29udGV4dCBwcm92aWRlciBwbHVnaW5zIGluIHRoZSAnY2RrXG4gKiB0b29sa2l0JyB2aWEgY29udGV4dCB2YXJpYWJsZXMgKGlucHV0KSwgb3V0cHV0dGluZyBzcGVjaWFsaXplZCBxdWVyaWVzIGZvclxuICogbW9yZSBjb250ZXh0IHZhcmlhYmxlcyAob3V0cHV0KS5cbiAqXG4gKiBDb250ZXh0UHJvdmlkZXIgbmVlZHMgYWNjZXNzIHRvIGEgQ29uc3RydWN0IHRvIGhvb2sgaW50byB0aGUgY29udGV4dCBtZWNoYW5pc20uXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZXh0UHJvdmlkZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2s6IFN0YWNrO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0UHJvdmlkZXJQcm9wcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IENvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBzdHJpbmcsXG4gICAgcHJvcHM6IENvbnRleHRQcm92aWRlclByb3BzID0ge30pIHtcbiAgICB0aGlzLnN0YWNrID0gU3RhY2suZmluZChjb250ZXh0KTtcbiAgICB0aGlzLnByb3BzID0ge1xuICAgICAgYWNjb3VudDogdGhpcy5zdGFjay5lbnYuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogdGhpcy5zdGFjay5lbnYucmVnaW9uLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvcFN0cmluZ3M6IHN0cmluZ1tdID0gcHJvcHNUb0FycmF5KHRoaXMucHJvcHMpO1xuICAgIHJldHVybiBgJHt0aGlzLnByb3ZpZGVyfToke3Byb3BTdHJpbmdzLmpvaW4oJzonKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgYSBwcm92aWRlciB2YWx1ZSBhbmQgdmVyaWZ5IGl0IGlzIG5vdCBgbnVsbGBcbiAgICovXG4gIHB1YmxpYyBnZXRWYWx1ZShkZWZhdWx0VmFsdWU6IGFueSk6IGFueSB7XG4gICAgLy8gaWYgYWNjb3VudCBvciByZWdpb24gaXMgbm90IGRlZmluZWQgdGhpcyBpcyBwcm9iYWJseSBhIHRlc3QgbW9kZSwgc28gd2UganVzdFxuICAgIC8vIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZVxuICAgIGlmICghdGhpcy5wcm9wcy5hY2NvdW50IHx8ICF0aGlzLnByb3BzLnJlZ2lvbikge1xuICAgICAgdGhpcy5jb250ZXh0LmFkZEVycm9yKGZvcm1hdE1pc3NpbmdTY29wZUVycm9yKHRoaXMucHJvdmlkZXIsIHRoaXMucHJvcHMpKTtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnRleHQuZ2V0Q29udGV4dCh0aGlzLmtleSk7XG5cbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuc3RhY2sucmVwb3J0TWlzc2luZ0NvbnRleHQodGhpcy5rZXksIHtcbiAgICAgIHByb3ZpZGVyOiB0aGlzLnByb3ZpZGVyLFxuICAgICAgcHJvcHM6IHRoaXMucHJvcHMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuICAvKipcbiAgICogUmVhZCBhIHByb3ZpZGVyIHZhbHVlLCB2ZXJpZnlpbmcgaXQncyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gaWYgdGhlcmUgaXMgbm8gdmFsdWUgZGVmaW5lZCBmb3IgdGhpcyBjb250ZXh0IGtleVxuICAgKi9cbiAgcHVibGljIGdldFN0cmluZ1ZhbHVlKCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gaWYgc2NvcGUgaXMgdW5kZWZpbmVkLCB0aGlzIGlzIHByb2JhYmx5IGEgdGVzdCBtb2RlLCBzbyB3ZSBqdXN0XG4gICAgLy8gcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlXG4gICAgaWYgKCF0aGlzLnByb3BzLmFjY291bnQgfHwgIXRoaXMucHJvcHMucmVnaW9uKSB7XG4gICAgICB0aGlzLmNvbnRleHQuYWRkRXJyb3IoZm9ybWF0TWlzc2luZ1Njb3BlRXJyb3IodGhpcy5wcm92aWRlciwgdGhpcy5wcm9wcykpO1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udGV4dC5nZXRDb250ZXh0KHRoaXMua2V5KTtcblxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBjb250ZXh0IHBhcmFtZXRlciAnJHt0aGlzLmtleX0nIHRvIGJlIGEgc3RyaW5nLCBidXQgZ290ICcke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0nYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5zdGFjay5yZXBvcnRNaXNzaW5nQ29udGV4dCh0aGlzLmtleSwge1xuICAgICAgcHJvdmlkZXI6IHRoaXMucHJvdmlkZXIsXG4gICAgICBwcm9wczogdGhpcy5wcm9wcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgYSBwcm92aWRlciB2YWx1ZSwgdmVyaWZ5aW5nIGl0J3MgYSBsaXN0XG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBpZiB0aGVyZSBpcyBubyB2YWx1ZSBkZWZpbmVkIGZvciB0aGlzIGNvbnRleHQga2V5XG4gICAqL1xuICBwdWJsaWMgZ2V0U3RyaW5nTGlzdFZhbHVlKFxuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAvLyBpZiBzY29wZSBpcyB1bmRlZmluZWQsIHRoaXMgaXMgcHJvYmFibHkgYSB0ZXN0IG1vZGUsIHNvIHdlIGp1c3RcbiAgICAgIC8vIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZSBhbmQgcmVwb3J0IGFuIGVycm9yIHNvIHRoaXMgaW4gbm90IGFjY2lkZW50YWxseSB1c2VkXG4gICAgICAvLyBpbiB0aGUgdG9vbGtpdFxuICAgICAgaWYgKCF0aGlzLnByb3BzLmFjY291bnQgfHwgIXRoaXMucHJvcHMucmVnaW9uKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5hZGRFcnJvcihmb3JtYXRNaXNzaW5nU2NvcGVFcnJvcih0aGlzLnByb3ZpZGVyLCB0aGlzLnByb3BzKSk7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb250ZXh0LmdldENvbnRleHQodGhpcy5rZXkpO1xuXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICBpZiAoIXZhbHVlLm1hcCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29udGV4dCB2YWx1ZSAnJHt0aGlzLmtleX0nIGlzIHN1cHBvc2VkIHRvIGJlIGEgbGlzdCwgZ290ICcke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YWNrLnJlcG9ydE1pc3NpbmdDb250ZXh0KHRoaXMua2V5LCB7XG4gICAgICAgIHByb3ZpZGVyOiB0aGlzLnByb3ZpZGVyLFxuICAgICAgICBwcm9wczogdGhpcy5wcm9wcyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBRdW90ZSBjb2xvbnMgaW4gYWxsIHN0cmluZ3Mgc28gdGhhdCB3ZSBjYW4gdW5kbyB0aGUgcXVvdGluZyBhdCBhIGxhdGVyIHBvaW50XG4gKlxuICogV2UnbGwgdXNlICQgYXMgYSBxdW90aW5nIGNoYXJhY3RlciwgZm9yIG5vIHBhcnRpY3VsYXJseSBnb29kIHJlYXNvbiBvdGhlclxuICogdGhhbiB0aGF0IFxcIGlzIGdvaW5nIHRvIGxlYWQgdG8gcXVvdGluZyBoZWxsIHdoZW4gdGhlIGtleXMgYXJlIHN0b3JlZCBpbiBKU09OLlxuICovXG5mdW5jdGlvbiBjb2xvblF1b3RlKHhzOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4geHMucmVwbGFjZSgnJCcsICckJCcpLnJlcGxhY2UoJzonLCAnJDonKTtcbn1cblxuLyoqXG4gKiBDb250ZXh0IHByb3ZpZGVyIHRoYXQgd2lsbCByZXR1cm4gdGhlIGF2YWlsYWJpbGl0eSB6b25lcyBmb3IgdGhlIGN1cnJlbnQgYWNjb3VudCBhbmQgcmVnaW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBBdmFpbGFiaWxpdHlab25lUHJvdmlkZXIge1xuICBwcml2YXRlIHByb3ZpZGVyOiBDb250ZXh0UHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogQ29uc3RydWN0KSB7XG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBDb250ZXh0UHJvdmlkZXIoY29udGV4dCwgQVZBSUxBQklMSVRZX1pPTkVTX1BST1ZJREVSKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgQVpzIGZvciB0aGUgY3VycmVudCBhY2NvdW50IGFuZCByZWdpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgYXZhaWxhYmlsaXR5Wm9uZXMoKTogc3RyaW5nW10ge1xuXG4gICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0U3RyaW5nTGlzdFZhbHVlKFsnZHVtbXkxYScsICdkdW1teTFiJywgJ2R1bW15MWMnXSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTU01QYXJhbWV0ZXJQcm92aWRlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gbG9va3VwXG4gICAqL1xuICBwYXJhbWV0ZXJOYW1lOiBzdHJpbmc7XG59XG4vKipcbiAqIENvbnRleHQgcHJvdmlkZXIgdGhhdCB3aWxsIHJlYWQgdmFsdWVzIGZyb20gdGhlIFNTTSBwYXJhbWV0ZXIgc3RvcmUgaW4gdGhlIGluZGljYXRlZCBhY2NvdW50IGFuZCByZWdpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFNTTVBhcmFtZXRlclByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBwcm92aWRlcjogQ29udGV4dFByb3ZpZGVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQ6IENvbnN0cnVjdCwgcHJvcHM6IFNTTVBhcmFtZXRlclByb3ZpZGVyUHJvcHMpIHtcbiAgICB0aGlzLnByb3ZpZGVyID0gbmV3IENvbnRleHRQcm92aWRlcihjb250ZXh0LCBTU01fUEFSQU1FVEVSX1BST1ZJREVSLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBTU00gcGFyYW1ldGVyIHN0cmluZyB3aXRoIHRoZSBpbmRpY2F0ZWQga2V5XG4gICAqL1xuICBwdWJsaWMgcGFyYW1ldGVyVmFsdWUoZGVmYXVsdFZhbHVlID0gJ2R1bW15Jyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0U3RyaW5nVmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRNaXNzaW5nU2NvcGVFcnJvcihwcm92aWRlcjogc3RyaW5nLCBwcm9wczoge1trZXk6IHN0cmluZ106IHN0cmluZ30pIHtcbiAgbGV0IHMgPSBgQ2Fubm90IGRldGVybWluZSBzY29wZSBmb3IgY29udGV4dCBwcm92aWRlciAke3Byb3ZpZGVyfWA7XG4gIGNvbnN0IHByb3BzU3RyaW5nID0gT2JqZWN0LmtleXMocHJvcHMpLm1hcCgga2V5ID0+IChgJHtrZXl9PSR7cHJvcHNba2V5XX1gKSk7XG4gIHMgKz0gYCB3aXRoIHByb3BzOiAke3Byb3BzU3RyaW5nfS5gO1xuICBzICs9ICdcXG4nO1xuICBzICs9ICdUaGlzIHVzdWFsbHkgaGFwcGVucyB3aGVuIEFXUyBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZSBhbmQgdGhlIGRlZmF1bHQgYWNjb3VudC9yZWdpb24gY2Fubm90IGJlIGRldGVybWluZWQuJztcbiAgcmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIHByb3BzVG9BcnJheShwcm9wczoge1trZXk6IHN0cmluZ106IGFueX0pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHByb3BBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcbiAga2V5cy5zb3J0KCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiBwcm9wc1trZXldKSB7XG4gICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgIGNvbnN0IGNoaWxkT2JqU3RycyA9IHByb3BzVG9BcnJheShwcm9wc1trZXldKTtcbiAgICAgICAgY29uc3QgcXVhbGlmaWVkQ2hpbGRTdHIgPSBjaGlsZE9ialN0cnMubWFwKCBjaGlsZCA9PiAoYCR7a2V5fS4ke2NoaWxkfWApKS5qb2luKCc6Jyk7XG4gICAgICAgIHByb3BBcnJheS5wdXNoKHF1YWxpZmllZENoaWxkU3RyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdzdHJpbmcnOiB7XG4gICAgICAgIHByb3BBcnJheS5wdXNoKGAke2tleX09JHtjb2xvblF1b3RlKHByb3BzW2tleV0pfWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcHJvcEFycmF5LnB1c2goYCR7a2V5fT0ke0pTT04uc3RyaW5naWZ5KHByb3BzW2tleV0pfWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHByb3BBcnJheTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBMEM7QUFDMUMsa0RBQStDO0FBSS9DOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxlQUFlO0lBSzFCLFlBQ21CLE9BQWtCLEVBQ2xCLFFBQWdCLEVBQ2pDLFFBQThCLEVBQUU7UUFGZixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFFakMsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLG1CQUNSLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQzFCLEtBQUssQ0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE1BQU0sV0FBVyxHQUFhLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBQyxZQUFpQjtRQUMvQiwrRUFBK0U7UUFDL0UsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUUsT0FBTyxZQUFZLENBQUM7U0FDckI7UUFFRCxNQUFN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LENBQUMsSUFBSSxJQUFJLENBQUM7SUFDVixDQUFDLElBQUksa0hBQWtILENBQUM7SUFDeEgsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBMkIsRUFBRSxTQUFTLEdBQUcsRUFBRTtJQUMvRCxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFFekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3BDLFFBQVEsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekIsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELE1BQU07YUFDUDtZQUNELEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekQsTUFBTTthQUNQO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdELE1BQU07YUFDUDtTQUNGO0tBQ0Y7SUFFRCxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDWCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3hhcGkgPSByZXF1aXJlKCdAYXdzLWNkay9jeC1hcGknKTtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbi9zdGFjayc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICcuL2NvcmUvY29uc3RydWN0JztcblxudHlwZSBDb250ZXh0UHJvdmlkZXJQcm9wcyA9IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciB0aGUgbW9kZWwgc2lkZSBvZiBjb250ZXh0IHByb3ZpZGVyc1xuICpcbiAqIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNvbW11bmljYXRlIHdpdGggY29udGV4dCBwcm92aWRlciBwbHVnaW5zIGluIHRoZSAnY2RrXG4gKiB0b29sa2l0JyB2aWEgY29udGV4dCB2YXJpYWJsZXMgKGlucHV0KSwgb3V0cHV0dGluZyBzcGVjaWFsaXplZCBxdWVyaWVzIGZvclxuICogbW9yZSBjb250ZXh0IHZhcmlhYmxlcyAob3V0cHV0KS5cbiAqXG4gKiBDb250ZXh0UHJvdmlkZXIgbmVlZHMgYWNjZXNzIHRvIGEgQ29uc3RydWN0IHRvIGhvb2sgaW50byB0aGUgY29udGV4dCBtZWNoYW5pc20uXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZXh0UHJvdmlkZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2s6IFN0YWNrO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0UHJvdmlkZXJQcm9wcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IENvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBzdHJpbmcsXG4gICAgcHJvcHM6IENvbnRleHRQcm92aWRlclByb3BzID0ge30pIHtcbiAgICB0aGlzLnN0YWNrID0gU3RhY2suZmluZChjb250ZXh0KTtcbiAgICB0aGlzLnByb3BzID0ge1xuICAgICAgYWNjb3VudDogdGhpcy5zdGFjay5lbnYuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogdGhpcy5zdGFjay5lbnYucmVnaW9uLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvcFN0cmluZ3M6IHN0cmluZ1tdID0gcHJvcHNUb0FycmF5KHRoaXMucHJvcHMpO1xuICAgIHJldHVybiBgJHt0aGlzLnByb3ZpZGVyfToke3Byb3BTdHJpbmdzLmpvaW4oJzonKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgYSBwcm92aWRlciB2YWx1ZSBhbmQgdmVyaWZ5IGl0IGlzIG5vdCBgbnVsbGBcbiAgICovXG4gIHB1YmxpYyBnZXRWYWx1ZShkZWZhdWx0VmFsdWU6IGFueSk6IGFueSB7XG4gICAgLy8gaWYgYWNjb3VudCBvciByZWdpb24gaXMgbm90IGRlZmluZWQgdGhpcyBpcyBwcm9iYWJseSBhIHRlc3QgbW9kZSwgc28gd2UganVzdFxuICAgIC8vIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZVxuICAgIGlmICghdGhpcy5wcm9wcy5hY2NvdW50IHx8ICF0aGlzLnByb3BzLnJlZ2lvbikge1xuICAgICAgdGhpcy5jb250ZXh0LmFkZEVycm9yKGZvcm1hdE1pc3NpbmdTY29wZUVycm9yKHRoaXMucHJvdmlkZXIsIHRoaXMucHJvcHMpKTtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnRleHQuZ2V0Q29udGV4dCh0aGlzLmtleSk7XG5cbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuc3RhY2sucmVwb3J0TWlzc2luZ0NvbnRleHQodGhpcy5rZXksIHtcbiAgICAgIHByb3ZpZGVyOiB0aGlzLnByb3ZpZGVyLFxuICAgICAgcHJvcHM6IHRoaXMucHJvcHMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuICAvKipcbiAgICogUmVhZCBhIHByb3ZpZGVyIHZhbHVlLCB2ZXJpZnlpbmcgaXQncyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gaWYgdGhlcmUgaXMgbm8gdmFsdWUgZGVmaW5lZCBmb3IgdGhpcyBjb250ZXh0IGtleVxuICAgKi9cbiAgcHVibGljIGdldFN0cmluZ1ZhbHVlKCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gaWYgc2NvcGUgaXMgdW5kZWZpbmVkLCB0aGlzIGlzIHByb2JhYmx5IGEgdGVzdCBtb2RlLCBzbyB3ZSBqdXN0XG4gICAgLy8gcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlXG4gICAgaWYgKCF0aGlzLnByb3BzLmFjY291bnQgfHwgIXRoaXMucHJvcHMucmVnaW9uKSB7XG4gICAgICB0aGlzLmNvbnRleHQuYWRkRXJyb3IoZm9ybWF0TWlzc2luZ1Njb3BlRXJyb3IodGhpcy5wcm92aWRlciwgdGhpcy5wcm9wcykpO1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udGV4dC5nZXRDb250ZXh0KHRoaXMua2V5KTtcblxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBjb250ZXh0IHBhcmFtZXRlciAnJHt0aGlzLmtleX0nIHRvIGJlIGEgc3RyaW5nLCBidXQgZ290ICcke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0nYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5zdGFjay5yZXBvcnRNaXNzaW5nQ29udGV4dCh0aGlzLmtleSwge1xuICAgICAgcHJvdmlkZXI6IHRoaXMucHJvdmlkZXIsXG4gICAgICBwcm9wczogdGhpcy5wcm9wcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgYSBwcm92aWRlciB2YWx1ZSwgdmVyaWZ5aW5nIGl0J3MgYSBsaXN0XG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBpZiB0aGVyZSBpcyBubyB2YWx1ZSBkZWZpbmVkIGZvciB0aGlzIGNvbnRleHQga2V5XG4gICAqL1xuICBwdWJsaWMgZ2V0U3RyaW5nTGlzdFZhbHVlKFxuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAvLyBpZiBzY29wZSBpcyB1bmRlZmluZWQsIHRoaXMgaXMgcHJvYmFibHkgYSB0ZXN0IG1vZGUsIHNvIHdlIGp1c3RcbiAgICAgIC8vIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZSBhbmQgcmVwb3J0IGFuIGVycm9yIHNvIHRoaXMgaW4gbm90IGFjY2lkZW50YWxseSB1c2VkXG4gICAgICAvLyBpbiB0aGUgdG9vbGtpdFxuICAgICAgaWYgKCF0aGlzLnByb3BzLmFjY291bnQgfHwgIXRoaXMucHJvcHMucmVnaW9uKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5hZGRFcnJvcihmb3JtYXRNaXNzaW5nU2NvcGVFcnJvcih0aGlzLnByb3ZpZGVyLCB0aGlzLnByb3BzKSk7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb250ZXh0LmdldENvbnRleHQodGhpcy5rZXkpO1xuXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICBpZiAoIXZhbHVlLm1hcCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29udGV4dCB2YWx1ZSAnJHt0aGlzLmtleX0nIGlzIHN1cHBvc2VkIHRvIGJlIGEgbGlzdCwgZ290ICcke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YWNrLnJlcG9ydE1pc3NpbmdDb250ZXh0KHRoaXMua2V5LCB7XG4gICAgICAgIHByb3ZpZGVyOiB0aGlzLnByb3ZpZGVyLFxuICAgICAgICBwcm9wczogdGhpcy5wcm9wcyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBRdW90ZSBjb2xvbnMgaW4gYWxsIHN0cmluZ3Mgc28gdGhhdCB3ZSBjYW4gdW5kbyB0aGUgcXVvdGluZyBhdCBhIGxhdGVyIHBvaW50XG4gKlxuICogV2UnbGwgdXNlICQgYXMgYSBxdW90aW5nIGNoYXJhY3RlciwgZm9yIG5vIHBhcnRpY3VsYXJseSBnb29kIHJlYXNvbiBvdGhlclxuICogdGhhbiB0aGF0IFxcIGlzIGdvaW5nIHRvIGxlYWQgdG8gcXVvdGluZyBoZWxsIHdoZW4gdGhlIGtleXMgYXJlIHN0b3JlZCBpbiBKU09OLlxuICovXG5mdW5jdGlvbiBjb2xvblF1b3RlKHhzOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4geHMucmVwbGFjZSgnJCcsICckJCcpLnJlcGxhY2UoJzonLCAnJDonKTtcbn1cblxuLyoqXG4gKiBDb250ZXh0IHByb3ZpZGVyIHRoYXQgd2lsbCByZXR1cm4gdGhlIGF2YWlsYWJpbGl0eSB6b25lcyBmb3IgdGhlIGN1cnJlbnQgYWNjb3VudCBhbmQgcmVnaW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBBdmFpbGFiaWxpdHlab25lUHJvdmlkZXIge1xuICBwcml2YXRlIHByb3ZpZGVyOiBDb250ZXh0UHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogQ29uc3RydWN0KSB7XG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBDb250ZXh0UHJvdmlkZXIoY29udGV4dCwgY3hhcGkuQVZBSUxBQklMSVRZX1pPTkVfUFJPVklERVIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbGlzdCBvZiBBWnMgZm9yIHRoZSBjdXJyZW50IGFjY291bnQgYW5kIHJlZ2lvblxuICAgKi9cbiAgcHVibGljIGdldCBhdmFpbGFiaWxpdHlab25lcygpOiBzdHJpbmdbXSB7XG5cbiAgICByZXR1cm4gdGhpcy5wcm92aWRlci5nZXRTdHJpbmdMaXN0VmFsdWUoWydkdW1teTFhJywgJ2R1bW15MWInLCAnZHVtbXkxYyddKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNTTVBhcmFtZXRlclByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0byBsb29rdXBcbiAgICovXG4gIHBhcmFtZXRlck5hbWU6IHN0cmluZztcbn1cbi8qKlxuICogQ29udGV4dCBwcm92aWRlciB0aGF0IHdpbGwgcmVhZCB2YWx1ZXMgZnJvbSB0aGUgU1NNIHBhcmFtZXRlciBzdG9yZSBpbiB0aGUgaW5kaWNhdGVkIGFjY291bnQgYW5kIHJlZ2lvblxuICovXG5leHBvcnQgY2xhc3MgU1NNUGFyYW1ldGVyUHJvdmlkZXIge1xuICBwcml2YXRlIHByb3ZpZGVyOiBDb250ZXh0UHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogQ29uc3RydWN0LCBwcm9wczogU1NNUGFyYW1ldGVyUHJvdmlkZXJQcm9wcykge1xuICAgIHRoaXMucHJvdmlkZXIgPSBuZXcgQ29udGV4dFByb3ZpZGVyKGNvbnRleHQsIGN4YXBpLlNTTV9QQVJBTUVURVJfUFJPVklERVIsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIFNTTSBwYXJhbWV0ZXIgc3RyaW5nIHdpdGggdGhlIGluZGljYXRlZCBrZXlcbiAgICovXG4gIHB1YmxpYyBwYXJhbWV0ZXJWYWx1ZShkZWZhdWx0VmFsdWUgPSAnZHVtbXknKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5wcm92aWRlci5nZXRTdHJpbmdWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdE1pc3NpbmdTY29wZUVycm9yKHByb3ZpZGVyOiBzdHJpbmcsIHByb3BzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkge1xuICBsZXQgcyA9IGBDYW5ub3QgZGV0ZXJtaW5lIHNjb3BlIGZvciBjb250ZXh0IHByb3ZpZGVyICR7cHJvdmlkZXJ9YDtcbiAgY29uc3QgcHJvcHNTdHJpbmcgPSBPYmplY3Qua2V5cyhwcm9wcykubWFwKCBrZXkgPT4gKGAke2tleX09JHtwcm9wc1trZXldfWApKTtcbiAgcyArPSBgIHdpdGggcHJvcHM6ICR7cHJvcHNTdHJpbmd9LmA7XG4gIHMgKz0gJ1xcbic7XG4gIHMgKz0gJ1RoaXMgdXN1YWxseSBoYXBwZW5zIHdoZW4gQVdTIGNyZWRlbnRpYWxzIGFyZSBub3QgYXZhaWxhYmxlIGFuZCB0aGUgZGVmYXVsdCBhY2NvdW50L3JlZ2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4nO1xuICByZXR1cm4gcztcbn1cblxuZnVuY3Rpb24gcHJvcHNUb0FycmF5KHByb3BzOiB7W2tleTogc3RyaW5nXTogYW55fSwga2V5UHJlZml4ID0gJycpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwcm9wcykpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiBwcm9wc1trZXldKSB7XG4gICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgIHJldC5wdXNoKC4uLnByb3BzVG9BcnJheShwcm9wc1trZXldLCBgJHtrZXlQcmVmaXh9JHtrZXl9LmApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdzdHJpbmcnOiB7XG4gICAgICAgIHJldC5wdXNoKGAke2tleVByZWZpeH0ke2tleX09JHtjb2xvblF1b3RlKHByb3BzW2tleV0pfWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0LnB1c2goYCR7a2V5UHJlZml4fSR7a2V5fT0ke0pTT04uc3RyaW5naWZ5KHByb3BzW2tleV0pfWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXQuc29ydCgpO1xuICByZXR1cm4gcmV0O1xufVxuIl19

@@ -24,3 +24,3 @@ {

"_spec": "cli-color@~0.1.6",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"_where": "/codebuild/output/src682385595/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"author": {

@@ -27,0 +27,0 @@ "name": "Mariusz Nowak",

@@ -24,3 +24,3 @@ {

"_spec": "difflib@~0.2.1",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"_where": "/codebuild/output/src682385595/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"author": {

@@ -27,0 +27,0 @@ "name": "Xueqiao Xu",

@@ -24,3 +24,3 @@ {

"_spec": "dreamopt@~0.6.0",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"_where": "/codebuild/output/src682385595/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"author": {

@@ -27,0 +27,0 @@ "name": "Andrey Tarantsov",

@@ -24,3 +24,3 @@ {

"_spec": "es5-ext@0.8.x",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/cli-color",
"_where": "/codebuild/output/src682385595/src/packages/@aws-cdk/cdk/node_modules/cli-color",
"author": {

@@ -27,0 +27,0 @@ "name": "Mariusz Nowak",

@@ -24,3 +24,3 @@ {

"_spec": "heap@>= 0.2.0",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/difflib",
"_where": "/codebuild/output/src682385595/src/packages/@aws-cdk/cdk/node_modules/difflib",
"author": {

@@ -27,0 +27,0 @@ "name": "Xueqiao Xu",

@@ -24,3 +24,3 @@ {

"_spec": "js-base64@^2.4.5",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk",
"_where": "/codebuild/output/src682385595/src/packages/@aws-cdk/cdk",
"author": {

@@ -27,0 +27,0 @@ "name": "Dan Kogai"

@@ -24,3 +24,3 @@ {

"_spec": "json-diff@^0.3.1",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk",
"_where": "/codebuild/output/src682385595/src/packages/@aws-cdk/cdk",
"author": {

@@ -27,0 +27,0 @@ "name": "Andrey Tarantsov",

@@ -24,3 +24,3 @@ {

"_spec": "wordwrap@>=0.0.2",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/dreamopt",
"_where": "/codebuild/output/src682385595/src/packages/@aws-cdk/cdk/node_modules/dreamopt",
"author": {

@@ -27,0 +27,0 @@ "name": "James Halliday",

{
"name": "@aws-cdk/cdk",
"version": "0.17.0",
"version": "0.18.0",
"description": "AWS Cloud Development Kit Core Library",

@@ -56,11 +56,11 @@ "main": "lib/index.js",

"@types/js-base64": "^2.3.1",
"@types/lodash": "^4.14.117",
"cdk-build-tools": "^0.17.0",
"cfn2ts": "^0.17.0",
"@types/lodash": "^4.14.118",
"cdk-build-tools": "^0.18.0",
"cfn2ts": "^0.18.0",
"fast-check": "^1.7.0",
"lodash": "^4.17.11",
"pkglint": "^0.17.0"
"pkglint": "^0.18.0"
},
"dependencies": {
"@aws-cdk/cx-api": "^0.17.0",
"@aws-cdk/cx-api": "^0.18.0",
"js-base64": "^2.4.5",

@@ -75,4 +75,4 @@ "json-diff": "^0.3.1"

"peerDependencies": {
"@aws-cdk/cx-api": "^0.17.0"
"@aws-cdk/cx-api": "^0.18.0"
}
}

@@ -32,3 +32,4 @@ import { Test } from 'nodeunit';

};
'"aws:cdk:path" metadata is added if "aws:cdk:path-metadata" context is set to true'(test: Test): void;
};
export = _default;

@@ -7,2 +7,3 @@ import { Test } from 'nodeunit';

'ContextProvider consistently generates a key'(test: Test): void;
'Key generation can contain arbitrarily deep structures'(test: Test): void;
'SSM parameter provider will return context values if available'(test: Test): void;

@@ -9,0 +10,0 @@ 'Return default values if "env" is undefined to facilitate unit tests, but also expect metadata to include "error" messages'(test: Test): void;

@@ -56,2 +56,16 @@ "use strict";

},
'Key generation can contain arbitrarily deep structures'(test) {
// GIVEN
const stack = new lib_1.Stack(undefined, 'TestStack', { env: { account: '12345', region: 'us-east-1' } });
// WHEN
const provider = new lib_1.ContextProvider(stack, 'provider', {
list: [
{ key: 'key1', value: 'value1' },
{ key: 'key2', value: 'value2' },
],
});
// THEN
test.equals(provider.key, 'provider:account=12345:list.0.key=key1:list.0.value=value1:list.1.key=key2:list.1.value=value2:region=us-east-1');
test.done();
},
'SSM parameter provider will return context values if available'(test) {

@@ -81,2 +95,2 @@ const stack = new lib_1.Stack(undefined, 'TestStack', { env: { account: '12345', region: 'us-east-1' } });

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC5jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx5Q0FBMEM7QUFFMUMsZ0NBQ3NFO0FBNkZ0RSxTQUFTLFFBQVEsQ0FBQyxHQUFRO0lBQ3hCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLEtBQVk7SUFDdEMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFwR0QsaUJBQVM7SUFDUCwyRkFBMkYsQ0FBQyxJQUFVO1FBQ3BHLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEcsTUFBTSxHQUFHLEdBQUcsSUFBSSw4QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUVsRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0VBQWdFLENBQUMsSUFBVTtRQUN6RSxNQUFNLEtBQUssR0FBRyxJQUFJLFdBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sTUFBTSxHQUFHLElBQUksOEJBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLENBQUM7UUFD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QUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6SCxNQUFNLFFBQVEsR0FBOEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFekksSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUssT0FBTyxDQUFDLElBQWUsQ0FBQyxRQUFRLENBQUMsZ0VBQWdFLENBQUMsQ0FBQyxDQUFDO1FBQ3hILElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFLLFFBQVEsQ0FBQyxJQUFlLENBQUMsUUFBUSxDQUFDLGlEQUFpRCxDQUFDLENBQUMsQ0FBQztRQUUzRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjeGFwaSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2N4LWFwaScpO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCB7IEFwcCwgQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyLCBDb25zdHJ1Y3QsIENvbnRleHRQcm92aWRlcixcbiAgTWV0YWRhdGFFbnRyeSwgcmVzb2x2ZSwgU1NNUGFyYW1ldGVyUHJvdmlkZXIsIFN0YWNrIH0gZnJvbSAnLi4vbGliJztcblxuZXhwb3J0ID0ge1xuICAnQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyIHJldHVybnMgYSBsaXN0IHdpdGggZHVtbXkgdmFsdWVzIGlmIHRoZSBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNDUnLCByZWdpb246ICd1cy1lYXN0LTEnIH0gfSk7XG4gICAgY29uc3QgYXpzID0gbmV3IEF2YWlsYWJpbGl0eVpvbmVQcm92aWRlcihzdGFjaykuYXZhaWxhYmlsaXR5Wm9uZXM7XG5cbiAgICB0ZXN0LmRlZXBFcXVhbChhenMsIFsnZHVtbXkxYScsICdkdW1teTFiJywgJ2R1bW15MWMnXSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ0F2YWlsYWJpbGl0eVpvbmVQcm92aWRlciB3aWxsIHJldHVybiBjb250ZXh0IGxpc3QgaWYgYXZhaWxhYmxlJyh0ZXN0OiBUZXN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCAnVGVzdFN0YWNrJywgeyBlbnY6IHsgYWNjb3VudDogJzEyMzQ1JywgcmVnaW9uOiAndXMtZWFzdC0xJyB9IH0pO1xuICAgIGNvbnN0IGJlZm9yZSA9IG5ldyBBdmFpbGFiaWxpdHlab25lUHJvdmlkZXIoc3RhY2spLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHRlc3QuZGVlcEVxdWFsKGJlZm9yZSwgWyAnZHVtbXkxYScsICdkdW1teTFiJywgJ2R1bW15MWMnIF0pO1xuICAgIGNvbnN0IGtleSA9IGV4cGVjdGVkQ29udGV4dEtleShzdGFjayk7XG5cbiAgICBzdGFjay5zZXRDb250ZXh0KGtleSwgWyd1cy1lYXN0LTFhJywgJ3VzLWVhc3QtMWInXSk7XG5cbiAgICBjb25zdCBhenMgPSBuZXcgQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHN0YWNrKS5hdmFpbGFiaWxpdHlab25lcztcbiAgICB0ZXN0LmRlZXBFcXVhbChhenMsIFsndXMtZWFzdC0xYScsICd1cy1lYXN0LTFiJ10pO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ0F2YWlsYWJpbGl0eVpvbmVQcm92aWRlciB3aWxsIGNvbXBsYWluIGlmIG5vdCBnaXZlbiBhIGxpc3QnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNDUnLCByZWdpb246ICd1cy1lYXN0LTEnIH0gfSk7XG4gICAgY29uc3QgYmVmb3JlID0gbmV3IEF2YWlsYWJpbGl0eVpvbmVQcm92aWRlcihzdGFjaykuYXZhaWxhYmlsaXR5Wm9uZXM7XG4gICAgdGVzdC5kZWVwRXF1YWwoYmVmb3JlLCBbICdkdW1teTFhJywgJ2R1bW15MWInLCAnZHVtbXkxYycgXSk7XG4gICAgY29uc3Qga2V5ID0gZXhwZWN0ZWRDb250ZXh0S2V5KHN0YWNrKTtcblxuICAgIHN0YWNrLnNldENvbnRleHQoa2V5LCAnbm90LWEtbGlzdCcpO1xuXG4gICAgdGVzdC50aHJvd3MoXG4gICAgICAoKSA9PiBuZXcgQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHN0YWNrKS5hdmFpbGFiaWxpdHlab25lc1xuICAgICk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnQ29udGV4dFByb3ZpZGVyIGNvbnNpc3RlbnRseSBnZW5lcmF0ZXMgYSBrZXknKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNDUnLCByZWdpb246ICd1cy1lYXN0LTEnIH0gfSk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgQ29udGV4dFByb3ZpZGVyKHN0YWNrLCAnc3NtJywge1xuICAgICAgcGFyYW1ldGVyTmFtZTogJ2ZvbycsXG4gICAgICBhbnlTdHJpbmdQYXJhbTogJ2JhcicsXG4gICAgfSk7XG4gICAgY29uc3Qga2V5ID0gcHJvdmlkZXIua2V5O1xuICAgIHRlc3QuZGVlcEVxdWFsKGtleSwgJ3NzbTphY2NvdW50PTEyMzQ1OmFueVN0cmluZ1BhcmFtPWJhcjpwYXJhbWV0ZXJOYW1lPWZvbzpyZWdpb249dXMtZWFzdC0xJyk7XG4gICAgY29uc3QgY29tcGxleCA9IG5ldyBDb250ZXh0UHJvdmlkZXIoc3RhY2ssICd2cGMnLCB7XG4gICAgICBjaWRyQmxvY2s6ICcxOTIuMTY4LjAuMTYnLFxuICAgICAgdGFnczogeyBOYW1lOiAnTXlWUEMnLCBFbnY6ICdQcmVwcm9kJyB9LFxuICAgICAgaWd3OiBmYWxzZSxcbiAgICB9KTtcbiAgICBjb25zdCBjb21wbGV4S2V5ID0gY29tcGxleC5rZXk7XG4gICAgdGVzdC5kZWVwRXF1YWwoY29tcGxleEtleSxcbiAgICAgICd2cGM6YWNjb3VudD0xMjM0NTpjaWRyQmxvY2s9MTkyLjE2OC4wLjE2Omlndz1mYWxzZTpyZWdpb249dXMtZWFzdC0xOnRhZ3MuRW52PVByZXByb2Q6dGFncy5OYW1lPU15VlBDJyk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG4gICdTU00gcGFyYW1ldGVyIHByb3ZpZGVyIHdpbGwgcmV0dXJuIGNvbnRleHQgdmFsdWVzIGlmIGF2YWlsYWJsZScodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgJ1Rlc3RTdGFjaycsIHsgZW52OiB7IGFjY291bnQ6ICcxMjM0NScsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSB9KTtcbiAgICBuZXcgU1NNUGFyYW1ldGVyUHJvdmlkZXIoc3RhY2ssICB7cGFyYW1ldGVyTmFtZTogJ3Rlc3QnfSkucGFyYW1ldGVyVmFsdWUoKTtcbiAgICBjb25zdCBrZXkgPSBleHBlY3RlZENvbnRleHRLZXkoc3RhY2spO1xuXG4gICAgc3RhY2suc2V0Q29udGV4dChrZXksICdhYmMnKTtcblxuICAgIGNvbnN0IHNzbXAgPSBuZXcgU1NNUGFyYW1ldGVyUHJvdmlkZXIoc3RhY2ssICB7cGFyYW1ldGVyTmFtZTogJ3Rlc3QnfSk7XG4gICAgY29uc3QgYXpzID0gcmVzb2x2ZShzc21wLnBhcmFtZXRlclZhbHVlKCkpO1xuICAgIHRlc3QuZGVlcEVxdWFsKGF6cywgJ2FiYycpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ1JldHVybiBkZWZhdWx0IHZhbHVlcyBpZiBcImVudlwiIGlzIHVuZGVmaW5lZCB0byBmYWNpbGl0YXRlIHVuaXQgdGVzdHMsIGJ1dCBhbHNvIGV4cGVjdCBtZXRhZGF0YSB0byBpbmNsdWRlIFwiZXJyb3JcIiBtZXNzYWdlcycodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsICd0ZXN0LXN0YWNrJyk7XG5cbiAgICBjb25zdCBjaGlsZCA9IG5ldyBDb25zdHJ1Y3Qoc3RhY2ssICdDaGlsZENvbnN0cnVjdCcpO1xuXG4gICAgdGVzdC5kZWVwRXF1YWwobmV3IEF2YWlsYWJpbGl0eVpvbmVQcm92aWRlcihzdGFjaykuYXZhaWxhYmlsaXR5Wm9uZXMsIFsgJ2R1bW15MWEnLCAnZHVtbXkxYicsICdkdW1teTFjJyBdKTtcbiAgICB0ZXN0LmRlZXBFcXVhbChuZXcgU1NNUGFyYW1ldGVyUHJvdmlkZXIoY2hpbGQsIHtwYXJhbWV0ZXJOYW1lOiAnZm9vJ30pLnBhcmFtZXRlclZhbHVlKCksICdkdW1teScpO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gYXBwLnN5bnRoZXNpemVTdGFjayhzdGFjay5pZCk7XG5cbiAgICBjb25zdCBhekVycm9yOiBNZXRhZGF0YUVudHJ5IHwgdW5kZWZpbmVkID0gb3V0cHV0Lm1ldGFkYXRhWycvdGVzdC1zdGFjayddLmZpbmQoeCA9PiB4LnR5cGUgPT09IGN4YXBpLkVSUk9SX01FVEFEQVRBX0tFWSk7XG4gICAgY29uc3Qgc3NtRXJyb3I6IE1ldGFkYXRhRW50cnkgfCB1bmRlZmluZWQgPSBvdXRwdXQubWV0YWRhdGFbJy90ZXN0LXN0YWNrL0NoaWxkQ29uc3RydWN0J10uZmluZCh4ID0+IHgudHlwZSA9PT0gY3hhcGkuRVJST1JfTUVUQURBVEFfS0VZKTtcblxuICAgIHRlc3Qub2soYXpFcnJvciAmJiAoYXpFcnJvci5kYXRhIGFzIHN0cmluZykuaW5jbHVkZXMoJ0Nhbm5vdCBkZXRlcm1pbmUgc2NvcGUgZm9yIGNvbnRleHQgcHJvdmlkZXIgYXZhaWxhYmlsaXR5LXpvbmVzJykpO1xuICAgIHRlc3Qub2soc3NtRXJyb3IgJiYgKHNzbUVycm9yLmRhdGEgYXMgc3RyaW5nKS5pbmNsdWRlcygnQ2Fubm90IGRldGVybWluZSBzY29wZSBmb3IgY29udGV4dCBwcm92aWRlciBzc20nKSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGZpcnN0S2V5KG9iajogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailbMF07XG59XG5cbi8qKlxuICogR2V0IHRoZSBleHBlY3RlZCBjb250ZXh0IGtleSBmcm9tIGEgc3RhY2sgd2l0aCBtaXNzaW5nIHBhcmFtZXRlcnNcbiAqL1xuZnVuY3Rpb24gZXhwZWN0ZWRDb250ZXh0S2V5KHN0YWNrOiBTdGFjayk6IHN0cmluZyB7XG4gIHJldHVybiBmaXJzdEtleShzdGFjay5taXNzaW5nQ29udGV4dCk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC5jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx5Q0FBMEM7QUFFMUMsZ0NBQ3NFO0FBZ0h0RSxTQUFTLFFBQVEsQ0FBQyxHQUFRO0lBQ3hCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLEtBQVk7SUFDdEMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUF2SEQsaUJBQVM7SUFDUCwyRkFBMkYsQ0FBQyxJQUFVO1FBQ3BHLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEcsTUFBTSxHQUFHLEdBQUcsSUFBSSw4QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUVsRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0VBQWdFLENBQUMsSUFBVTtRQUN6RSxNQUFNLEtBQUssR0FBRyxJQUFJLFdBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sTUFBTSxHQUFHLElBQUksOEJBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLENBQUM7UUFDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBRSxDQUFDLENBQUM7UUFDNUQsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUVwRCxNQUFNLEdBQUcsR0FBRyxJQUFJLDhCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELDREQUE0RCxDQUFDLElBQVU7UUFDckUsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRyxNQUFNLE1BQU0sR0FBRyxJQUFJLDhCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxNQUFNLENBQ1QsR0FBRyxFQUFFLENBQUMsSUFBSSw4QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FDNUQsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCw4Q0FBOEMsQ0FBQyxJQUFVO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEcsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQkFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDakQsYUFBYSxFQUFFLEtBQUs7WUFDcEIsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSx5RUFBeUUsQ0FBQyxDQUFDO1FBQy9GLE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQ2hELFNBQVMsRUFBRSxjQUFjO1lBQ3pCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtZQUN2QyxHQUFHLEVBQUUsS0FBSztTQUNYLENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQ3ZCLHNHQUFzRyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELHdEQUF3RCxDQUFDLElBQVU7UUFDakUsUUFBUTtRQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFcEcsT0FBTztRQUNQLE1BQU0sUUFBUSxHQUFHLElBQUkscUJBQWUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQ3RELElBQUksRUFBRTtnQkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFDaEMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7YUFDakM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGlIQUFpSCxDQUFDLENBQUM7UUFFN0ksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdFQUFnRSxDQUFDLElBQVU7UUFDekUsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLDBCQUFvQixDQUFDLEtBQUssRUFBRyxFQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNFLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTdCLE1BQU0sSUFBSSxHQUFHLElBQUksMEJBQW9CLENBQUMsS0FBSyxFQUFHLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxHQUFHLEdBQUcsYUFBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCw0SEFBNEgsQ0FBQyxJQUFVO1FBQ3JJLE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFLLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTNDLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBUyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSw4QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFFLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksMEJBQW9CLENBQUMsS0FBSyxFQUFFLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEcsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFN0MsTUFBTSxPQUFPLEdBQThCLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6SCxNQUFNLFFBQVEsR0FBOEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFekksSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUssT0FBTyxDQUFDLElBQWUsQ0FBQyxRQUFRLENBQUMsZ0VBQWdFLENBQUMsQ0FBQyxDQUFDO1FBQ3hILElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFLLFFBQVEsQ0FBQyxJQUFlLENBQUMsUUFBUSxDQUFDLGlEQUFpRCxDQUFDLENBQUMsQ0FBQztRQUUzRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjeGFwaSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2N4LWFwaScpO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCB7IEFwcCwgQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyLCBDb25zdHJ1Y3QsIENvbnRleHRQcm92aWRlcixcbiAgTWV0YWRhdGFFbnRyeSwgcmVzb2x2ZSwgU1NNUGFyYW1ldGVyUHJvdmlkZXIsIFN0YWNrIH0gZnJvbSAnLi4vbGliJztcblxuZXhwb3J0ID0ge1xuICAnQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyIHJldHVybnMgYSBsaXN0IHdpdGggZHVtbXkgdmFsdWVzIGlmIHRoZSBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNDUnLCByZWdpb246ICd1cy1lYXN0LTEnIH0gfSk7XG4gICAgY29uc3QgYXpzID0gbmV3IEF2YWlsYWJpbGl0eVpvbmVQcm92aWRlcihzdGFjaykuYXZhaWxhYmlsaXR5Wm9uZXM7XG5cbiAgICB0ZXN0LmRlZXBFcXVhbChhenMsIFsnZHVtbXkxYScsICdkdW1teTFiJywgJ2R1bW15MWMnXSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ0F2YWlsYWJpbGl0eVpvbmVQcm92aWRlciB3aWxsIHJldHVybiBjb250ZXh0IGxpc3QgaWYgYXZhaWxhYmxlJyh0ZXN0OiBUZXN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCAnVGVzdFN0YWNrJywgeyBlbnY6IHsgYWNjb3VudDogJzEyMzQ1JywgcmVnaW9uOiAndXMtZWFzdC0xJyB9IH0pO1xuICAgIGNvbnN0IGJlZm9yZSA9IG5ldyBBdmFpbGFiaWxpdHlab25lUHJvdmlkZXIoc3RhY2spLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHRlc3QuZGVlcEVxdWFsKGJlZm9yZSwgWyAnZHVtbXkxYScsICdkdW1teTFiJywgJ2R1bW15MWMnIF0pO1xuICAgIGNvbnN0IGtleSA9IGV4cGVjdGVkQ29udGV4dEtleShzdGFjayk7XG5cbiAgICBzdGFjay5zZXRDb250ZXh0KGtleSwgWyd1cy1lYXN0LTFhJywgJ3VzLWVhc3QtMWInXSk7XG5cbiAgICBjb25zdCBhenMgPSBuZXcgQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHN0YWNrKS5hdmFpbGFiaWxpdHlab25lcztcbiAgICB0ZXN0LmRlZXBFcXVhbChhenMsIFsndXMtZWFzdC0xYScsICd1cy1lYXN0LTFiJ10pO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ0F2YWlsYWJpbGl0eVpvbmVQcm92aWRlciB3aWxsIGNvbXBsYWluIGlmIG5vdCBnaXZlbiBhIGxpc3QnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNDUnLCByZWdpb246ICd1cy1lYXN0LTEnIH0gfSk7XG4gICAgY29uc3QgYmVmb3JlID0gbmV3IEF2YWlsYWJpbGl0eVpvbmVQcm92aWRlcihzdGFjaykuYXZhaWxhYmlsaXR5Wm9uZXM7XG4gICAgdGVzdC5kZWVwRXF1YWwoYmVmb3JlLCBbICdkdW1teTFhJywgJ2R1bW15MWInLCAnZHVtbXkxYycgXSk7XG4gICAgY29uc3Qga2V5ID0gZXhwZWN0ZWRDb250ZXh0S2V5KHN0YWNrKTtcblxuICAgIHN0YWNrLnNldENvbnRleHQoa2V5LCAnbm90LWEtbGlzdCcpO1xuXG4gICAgdGVzdC50aHJvd3MoXG4gICAgICAoKSA9PiBuZXcgQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHN0YWNrKS5hdmFpbGFiaWxpdHlab25lc1xuICAgICk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnQ29udGV4dFByb3ZpZGVyIGNvbnNpc3RlbnRseSBnZW5lcmF0ZXMgYSBrZXknKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNDUnLCByZWdpb246ICd1cy1lYXN0LTEnIH0gfSk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgQ29udGV4dFByb3ZpZGVyKHN0YWNrLCAnc3NtJywge1xuICAgICAgcGFyYW1ldGVyTmFtZTogJ2ZvbycsXG4gICAgICBhbnlTdHJpbmdQYXJhbTogJ2JhcicsXG4gICAgfSk7XG4gICAgY29uc3Qga2V5ID0gcHJvdmlkZXIua2V5O1xuICAgIHRlc3QuZGVlcEVxdWFsKGtleSwgJ3NzbTphY2NvdW50PTEyMzQ1OmFueVN0cmluZ1BhcmFtPWJhcjpwYXJhbWV0ZXJOYW1lPWZvbzpyZWdpb249dXMtZWFzdC0xJyk7XG4gICAgY29uc3QgY29tcGxleCA9IG5ldyBDb250ZXh0UHJvdmlkZXIoc3RhY2ssICd2cGMnLCB7XG4gICAgICBjaWRyQmxvY2s6ICcxOTIuMTY4LjAuMTYnLFxuICAgICAgdGFnczogeyBOYW1lOiAnTXlWUEMnLCBFbnY6ICdQcmVwcm9kJyB9LFxuICAgICAgaWd3OiBmYWxzZSxcbiAgICB9KTtcbiAgICBjb25zdCBjb21wbGV4S2V5ID0gY29tcGxleC5rZXk7XG4gICAgdGVzdC5kZWVwRXF1YWwoY29tcGxleEtleSxcbiAgICAgICd2cGM6YWNjb3VudD0xMjM0NTpjaWRyQmxvY2s9MTkyLjE2OC4wLjE2Omlndz1mYWxzZTpyZWdpb249dXMtZWFzdC0xOnRhZ3MuRW52PVByZXByb2Q6dGFncy5OYW1lPU15VlBDJyk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ0tleSBnZW5lcmF0aW9uIGNhbiBjb250YWluIGFyYml0cmFyaWx5IGRlZXAgc3RydWN0dXJlcycodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCAnVGVzdFN0YWNrJywgeyBlbnY6IHsgYWNjb3VudDogJzEyMzQ1JywgcmVnaW9uOiAndXMtZWFzdC0xJyB9IH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IENvbnRleHRQcm92aWRlcihzdGFjaywgJ3Byb3ZpZGVyJywge1xuICAgICAgbGlzdDogW1xuICAgICAgICB7IGtleTogJ2tleTEnLCB2YWx1ZTogJ3ZhbHVlMScgfSxcbiAgICAgICAgeyBrZXk6ICdrZXkyJywgdmFsdWU6ICd2YWx1ZTInIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIHRlc3QuZXF1YWxzKHByb3ZpZGVyLmtleSwgJ3Byb3ZpZGVyOmFjY291bnQ9MTIzNDU6bGlzdC4wLmtleT1rZXkxOmxpc3QuMC52YWx1ZT12YWx1ZTE6bGlzdC4xLmtleT1rZXkyOmxpc3QuMS52YWx1ZT12YWx1ZTI6cmVnaW9uPXVzLWVhc3QtMScpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ1NTTSBwYXJhbWV0ZXIgcHJvdmlkZXIgd2lsbCByZXR1cm4gY29udGV4dCB2YWx1ZXMgaWYgYXZhaWxhYmxlJyh0ZXN0OiBUZXN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCAnVGVzdFN0YWNrJywgeyBlbnY6IHsgYWNjb3VudDogJzEyMzQ1JywgcmVnaW9uOiAndXMtZWFzdC0xJyB9IH0pO1xuICAgIG5ldyBTU01QYXJhbWV0ZXJQcm92aWRlcihzdGFjaywgIHtwYXJhbWV0ZXJOYW1lOiAndGVzdCd9KS5wYXJhbWV0ZXJWYWx1ZSgpO1xuICAgIGNvbnN0IGtleSA9IGV4cGVjdGVkQ29udGV4dEtleShzdGFjayk7XG5cbiAgICBzdGFjay5zZXRDb250ZXh0KGtleSwgJ2FiYycpO1xuXG4gICAgY29uc3Qgc3NtcCA9IG5ldyBTU01QYXJhbWV0ZXJQcm92aWRlcihzdGFjaywgIHtwYXJhbWV0ZXJOYW1lOiAndGVzdCd9KTtcbiAgICBjb25zdCBhenMgPSByZXNvbHZlKHNzbXAucGFyYW1ldGVyVmFsdWUoKSk7XG4gICAgdGVzdC5kZWVwRXF1YWwoYXpzLCAnYWJjJyk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnUmV0dXJuIGRlZmF1bHQgdmFsdWVzIGlmIFwiZW52XCIgaXMgdW5kZWZpbmVkIHRvIGZhY2lsaXRhdGUgdW5pdCB0ZXN0cywgYnV0IGFsc28gZXhwZWN0IG1ldGFkYXRhIHRvIGluY2x1ZGUgXCJlcnJvclwiIG1lc3NhZ2VzJyh0ZXN0OiBUZXN0KSB7XG4gICAgY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ3Rlc3Qtc3RhY2snKTtcblxuICAgIGNvbnN0IGNoaWxkID0gbmV3IENvbnN0cnVjdChzdGFjaywgJ0NoaWxkQ29uc3RydWN0Jyk7XG5cbiAgICB0ZXN0LmRlZXBFcXVhbChuZXcgQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHN0YWNrKS5hdmFpbGFiaWxpdHlab25lcywgWyAnZHVtbXkxYScsICdkdW1teTFiJywgJ2R1bW15MWMnIF0pO1xuICAgIHRlc3QuZGVlcEVxdWFsKG5ldyBTU01QYXJhbWV0ZXJQcm92aWRlcihjaGlsZCwge3BhcmFtZXRlck5hbWU6ICdmb28nfSkucGFyYW1ldGVyVmFsdWUoKSwgJ2R1bW15Jyk7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBhcHAuc3ludGhlc2l6ZVN0YWNrKHN0YWNrLmlkKTtcblxuICAgIGNvbnN0IGF6RXJyb3I6IE1ldGFkYXRhRW50cnkgfCB1bmRlZmluZWQgPSBvdXRwdXQubWV0YWRhdGFbJy90ZXN0LXN0YWNrJ10uZmluZCh4ID0+IHgudHlwZSA9PT0gY3hhcGkuRVJST1JfTUVUQURBVEFfS0VZKTtcbiAgICBjb25zdCBzc21FcnJvcjogTWV0YWRhdGFFbnRyeSB8IHVuZGVmaW5lZCA9IG91dHB1dC5tZXRhZGF0YVsnL3Rlc3Qtc3RhY2svQ2hpbGRDb25zdHJ1Y3QnXS5maW5kKHggPT4geC50eXBlID09PSBjeGFwaS5FUlJPUl9NRVRBREFUQV9LRVkpO1xuXG4gICAgdGVzdC5vayhhekVycm9yICYmIChhekVycm9yLmRhdGEgYXMgc3RyaW5nKS5pbmNsdWRlcygnQ2Fubm90IGRldGVybWluZSBzY29wZSBmb3IgY29udGV4dCBwcm92aWRlciBhdmFpbGFiaWxpdHktem9uZXMnKSk7XG4gICAgdGVzdC5vayhzc21FcnJvciAmJiAoc3NtRXJyb3IuZGF0YSBhcyBzdHJpbmcpLmluY2x1ZGVzKCdDYW5ub3QgZGV0ZXJtaW5lIHNjb3BlIGZvciBjb250ZXh0IHByb3ZpZGVyIHNzbScpKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxufTtcblxuZnVuY3Rpb24gZmlyc3RLZXkob2JqOiBhbnkpOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVswXTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGV4cGVjdGVkIGNvbnRleHQga2V5IGZyb20gYSBzdGFjayB3aXRoIG1pc3NpbmcgcGFyYW1ldGVyc1xuICovXG5mdW5jdGlvbiBleHBlY3RlZENvbnRleHRLZXkoc3RhY2s6IFN0YWNrKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZpcnN0S2V5KHN0YWNrLm1pc3NpbmdDb250ZXh0KTtcbn1cbiJdfQ==

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc