Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@aws-cdk/aws-cloudformation

Package Overview
Dependencies
Maintainers
4
Versions
288
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/aws-cloudformation - npm Package Compare versions

Comparing version 0.12.0 to 0.13.0

4

lib/cloudformation.generated.js

@@ -5,3 +5,3 @@ "use strict";

// See: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html
// @cfn2ts:meta@ {"generated":"2018-10-12T09:44:48.355Z","fingerprint":"AOES4ISc94vdth2cHqithmZUM7ieItpr1A6MryURUXE="}
// @cfn2ts:meta@ {"generated":"2018-10-19T13:47:41.575Z","fingerprint":"AOES4ISc94vdth2cHqithmZUM7ieItpr1A6MryURUXE="}
Object.defineProperty(exports, "__esModule", { value: true });

@@ -242,2 +242,2 @@ // tslint:disable:max-line-length | This is generated code - line lengths are difficult to control

})(cloudformation = exports.cloudformation || (exports.cloudformation = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrRUFBK0U7QUFDL0UsK0RBQStEO0FBQy9ELDhGQUE4RjtBQUM5RixzSEFBc0g7O0FBRXRILGtHQUFrRztBQUVsRyxvQ0FBcUM7QUFFckMsSUFBaUIsY0FBYyxDQXNFOUI7QUF0RUQsV0FBaUIsY0FBYztJQVkzQjs7Ozs7O09BTUc7SUFDSCxTQUFTLDRCQUE0QixDQUFDLFVBQWU7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFBRSxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztTQUFFO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbkcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsbUNBQW1DLENBQUMsVUFBZTtRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUFFLE9BQU8sVUFBVSxDQUFDO1NBQUU7UUFDdkQsNEJBQTRCLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekQsT0FBTztZ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QUFpQjtZQUN4QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUN6QyxDQUFDO1FBQ1MsZ0JBQWdCLENBQUMsVUFBZTtZQUN0QyxPQUFPLDBDQUEwQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDOztJQS9CRDs7T0FFRztJQUNvQixzQ0FBZ0IsR0FBRyxvQ0FBb0MsQ0FBQztJQUp0RSxvQ0FBcUIsd0JBaUNqQyxDQUFBO0FBQ0wsQ0FBQyxFQTlGZ0IsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUE4RjlCO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxHQUFHLENBQUMsS0FBSztJQUFoRDs7UUFDSSw2Q0FBNkM7UUFDNUIsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0lBQ3JELENBQUM7Q0FBQTtBQUhELDhDQUdDO0FBRUQsV0FBaUIsY0FBYztJQUMzQjs7T0FFRztJQUNILE1BQWEsMkJBQTRCLFNBQVEsR0FBRyxDQUFDLFFBQVE7UUFPekQ7Ozs7OztXQU1HO1FBQ0gsWUFBWSxNQUFxQixFQUFFLElBQVk7WUFDM0MsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RELENBQUM7O0lBaEJEOztPQUVHO0lBQ29CLDRDQUFnQixHQUFHLDBDQUEwQyxDQUFDO0lBSjVFLDBDQUEyQiw4QkFrQnZDLENBQUE7QUFDTCxDQUFDLEVBdkJnQixjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQXVCOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxMi0yMDE4IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIFNwZWNpZmljYXRpb25cbi8vIFNlZTogZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2Nmbi1yZXNvdXJjZS1zcGVjaWZpY2F0aW9uLmh0bWxcbi8vIEBjZm4ydHM6bWV0YUAge1wiZ2VuZXJhdGVkXCI6XCIyMDE4LTEwLTEyVDA5OjQ0OjQ4LjM1NVpcIixcImZpbmdlcnByaW50XCI6XCJBT0VTNElTYzk0dmR0aDJjSHFpdGhtWlVNN2llSXRwcjFBNk1yeVVSVVhFPVwifVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggfCBUaGlzIGlzIGdlbmVyYXRlZCBjb2RlIC0gbGluZSBsZW5ndGhzIGFyZSBkaWZmaWN1bHQgdG8gY29udHJvbFxuXG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5cbmV4cG9ydCBuYW1lc3BhY2UgY2xvdWRmb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWNmbi1jdXN0b21yZXNvdXJjZS5odG1sXG4gICAgICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBDdXN0b21SZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2UuU2VydmljZVRva2VuYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtY2ZuLWN1c3RvbXJlc291cmNlLmh0bWwjY2ZuLWN1c3RvbXJlc291cmNlLXNlcnZpY2V0b2tlblxuICAgICAgICAgKi9cbiAgICAgICAgc2VydmljZVRva2VuOiBzdHJpbmcgfCBjZGsuVG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGdpdmVuIHByb3BlcnRpZXMgbWF0Y2ggdGhvc2Ugb2YgYSBgYEN1c3RvbVJlc291cmNlUHJvcHNgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIFR5cGVTY3JpcHQgcHJvcGVydGllcyBvZiBhIGBgQ3VzdG9tUmVzb3VyY2VQcm9wc2BgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEN1c3RvbVJlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllczogYW55KTogY2RrLlZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBpZiAoIWNkay5jYW5JbnNwZWN0KHByb3BlcnRpZXMpKSB7IHJldHVybiBjZGsuVkFMSURBVElPTl9TVUNDRVNTOyB9XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IG5ldyBjZGsuVmFsaWRhdGlvblJlc3VsdHMoKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdzZXJ2aWNlVG9rZW4nLCBjZGsucmVxdWlyZWRWYWxpZGF0b3IpKHByb3BlcnRpZXMuc2VydmljZVRva2VuKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcignc2VydmljZVRva2VuJywgY2RrLnZhbGlkYXRlU3RyaW5nKShwcm9wZXJ0aWVzLnNlcnZpY2VUb2tlbikpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLndyYXAoJ3N1cHBsaWVkIHByb3BlcnRpZXMgbm90IGNvcnJlY3QgZm9yIFwiQ3VzdG9tUmVzb3VyY2VQcm9wc1wiJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZWBgIHJlc291cmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgVHlwZVNjcmlwdCBwcm9wZXJ0aWVzIG9mIGEgYGBDdXN0b21SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OkN1c3RvbVJlc291cmNlYGAgcmVzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBDdXN0b21SZXNvdXJjZVByb3BzVmFsaWRhdG9yKHByb3BlcnRpZXMpLmFzc2VydFN1Y2Nlc3MoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBTZXJ2aWNlVG9rZW46IGNkay5zdHJpbmdUb0Nsb3VkRm9ybWF0aW9uKHByb3BlcnRpZXMuc2VydmljZVRva2VuKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1jZm4tY3VzdG9tcmVzb3VyY2UuaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBDdXN0b21SZXNvdXJjZSBleHRlbmRzIGNkay5SZXNvdXJjZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSByZXNvdXJjZVR5cGVOYW1lID0gXCJBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZVwiO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2VgYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhcmVudCAgIHRoZSBgYGNkay5Db25zdHJ1Y3RgYCB0aGlzIGBgQ3VzdG9tUmVzb3VyY2VgYCBpcyBhIHBhcnQgb2ZcbiAgICAgICAgICogQHBhcmFtIG5hbWUgICAgIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYGBjZGsuQ29uc3RydWN0YGAgdHJlZVxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGBgQ3VzdG9tUmVzb3VyY2VgYFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IEN1c3RvbVJlc291cmNlUHJvcHMpIHtcbiAgICAgICAgICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgeyB0eXBlOiBDdXN0b21SZXNvdXJjZS5yZXNvdXJjZVR5cGVOYW1lLCBwcm9wZXJ0aWVzIH0pO1xuICAgICAgICAgICAgY2RrLnJlcXVpcmVQcm9wZXJ0eShwcm9wZXJ0aWVzLCAnc2VydmljZVRva2VuJywgdGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZ2V0IHByb3BlcnR5T3ZlcnJpZGVzKCk6IEN1c3RvbVJlc291cmNlUHJvcHMge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzO1xuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gIHtcbiAgICAgICAgICAgIHJldHVybiBjdXN0b21SZXNvdXJjZVByb3BzVG9DbG91ZEZvcm1hdGlvbihjZGsucmVzb2x2ZShwcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgY2xvdWRmb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgU3RhY2tSZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suVGVtcGxhdGVVUkxgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXN0YWNrLmh0bWwjY2ZuLWNsb3VkZm9ybWF0aW9uLXN0YWNrLXRlbXBsYXRldXJsXG4gICAgICAgICAqL1xuICAgICAgICB0ZW1wbGF0ZVVybDogc3RyaW5nIHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjay5Ob3RpZmljYXRpb25BUk5zYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zdGFjay5odG1sI2Nmbi1jbG91ZGZvcm1hdGlvbi1zdGFjay1ub3RpZmljYXRpb25hcm5zXG4gICAgICAgICAqL1xuICAgICAgICBub3RpZmljYXRpb25Bcm5zPzogQXJyYXk8c3RyaW5nIHwgY2RrLlRva2VuPiB8IGNkay5Ub2tlbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suUGFyYW1ldGVyc2BgXG4gICAgICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbCNjZm4tY2xvdWRmb3JtYXRpb24tc3RhY2stcGFyYW1ldGVyc1xuICAgICAgICAgKi9cbiAgICAgICAgcGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogKHN0cmluZyB8IGNkay5Ub2tlbikgfSB8IGNkay5Ub2tlbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suVGFnc2BgXG4gICAgICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbCNjZm4tY2xvdWRmb3JtYXRpb24tc3RhY2stdGFnc1xuICAgICAgICAgKi9cbiAgICAgICAgdGFncz86IEFycmF5PGNkay5UYWcgfCBjZGsuVG9rZW4+IHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjay5UaW1lb3V0SW5NaW51dGVzYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zdGFjay5odG1sI2Nmbi1jbG91ZGZvcm1hdGlvbi1zdGFjay10aW1lb3V0aW5taW51dGVzXG4gICAgICAgICAqL1xuICAgICAgICB0aW1lb3V0SW5NaW51dGVzPzogbnVtYmVyIHwgY2RrLlRva2VuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSB3aGV0aGVyIHRoZSBnaXZlbiBwcm9wZXJ0aWVzIG1hdGNoIHRob3NlIG9mIGEgYGBTdGFja1Jlc291cmNlUHJvcHNgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIFR5cGVTY3JpcHQgcHJvcGVydGllcyBvZiBhIGBgU3RhY2tSZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhY2tSZXNvdXJjZVByb3BzVmFsaWRhdG9yKHByb3BlcnRpZXM6IGFueSk6IGNkay5WYWxpZGF0aW9uUmVzdWx0IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gY2RrLlZBTElEQVRJT05fU1VDQ0VTUzsgfVxuICAgICAgICBjb25zdCBlcnJvcnMgPSBuZXcgY2RrLlZhbGlkYXRpb25SZXN1bHRzKCk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcignbm90aWZpY2F0aW9uQXJucycsIGNkay5saXN0VmFsaWRhdG9yKGNkay52YWxpZGF0ZVN0cmluZykpKHByb3BlcnRpZXMubm90aWZpY2F0aW9uQXJucykpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ3BhcmFtZXRlcnMnLCBjZGsuaGFzaFZhbGlkYXRvcihjZGsudmFsaWRhdGVTdHJpbmcpKShwcm9wZXJ0aWVzLnBhcmFtZXRlcnMpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCd0YWdzJywgY2RrLmxpc3RWYWxpZGF0b3IoY2RrLnZhbGlkYXRlVGFnKSkocHJvcGVydGllcy50YWdzKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGVtcGxhdGVVcmwnLCBjZGsucmVxdWlyZWRWYWxpZGF0b3IpKHByb3BlcnRpZXMudGVtcGxhdGVVcmwpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCd0ZW1wbGF0ZVVybCcsIGNkay52YWxpZGF0ZVN0cmluZykocHJvcGVydGllcy50ZW1wbGF0ZVVybCkpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ3RpbWVvdXRJbk1pbnV0ZXMnLCBjZGsudmFsaWRhdGVOdW1iZXIpKHByb3BlcnRpZXMudGltZW91dEluTWludXRlcykpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLndyYXAoJ3N1cHBsaWVkIHByb3BlcnRpZXMgbm90IGNvcnJlY3QgZm9yIFwiU3RhY2tSZXNvdXJjZVByb3BzXCInKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrYGAgcmVzb3VyY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFN0YWNrUmVzb3VyY2VQcm9wc2BgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFja2BgIHJlc291cmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBTdGFja1Jlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllcykuYXNzZXJ0U3VjY2VzcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiBjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLnRlbXBsYXRlVXJsKSxcbiAgICAgICAgICBOb3RpZmljYXRpb25BUk5zOiBjZGsubGlzdE1hcHBlcihjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy5ub3RpZmljYXRpb25Bcm5zKSxcbiAgICAgICAgICBQYXJhbWV0ZXJzOiBjZGsuaGFzaE1hcHBlcihjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy5wYXJhbWV0ZXJzKSxcbiAgICAgICAgICBUYWdzOiBjZGsubGlzdE1hcHBlcihjZGsudGFnVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy50YWdzKSxcbiAgICAgICAgICBUaW1lb3V0SW5NaW51dGVzOiBjZGsubnVtYmVyVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLnRpbWVvdXRJbk1pbnV0ZXMpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBTdGFja1Jlc291cmNlIGV4dGVuZHMgY2RrLlJlc291cmNlIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHJlc291cmNlVHlwZU5hbWUgPSBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrXCI7XG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdGFja0lkOiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBuZXcgYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFja2BgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcGFyZW50ICAgdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRoaXMgYGBTdGFja1Jlc291cmNlYGAgaXMgYSBwYXJ0IG9mXG4gICAgICAgICAqIEBwYXJhbSBuYW1lICAgICB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRyZWVcbiAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBgYFN0YWNrUmVzb3VyY2VgYFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IFN0YWNrUmVzb3VyY2VQcm9wcykge1xuICAgICAgICAgICAgc3VwZXIocGFyZW50LCBuYW1lLCB7IHR5cGU6IFN0YWNrUmVzb3VyY2UucmVzb3VyY2VUeXBlTmFtZSwgcHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNkay5yZXF1aXJlUHJvcGVydHkocHJvcGVydGllcywgJ3RlbXBsYXRlVXJsJywgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLnN0YWNrSWQgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwcm9wZXJ0eU92ZXJyaWRlcygpOiBTdGFja1Jlc291cmNlUHJvcHMge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzO1xuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja1Jlc291cmNlUHJvcHNUb0Nsb3VkRm9ybWF0aW9uKGNkay5yZXNvbHZlKHByb3BlcnRpZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBjbG91ZGZvcm1hdGlvbiB7XG4gICAgLyoqXG4gICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy13YWl0Y29uZGl0aW9uLmh0bWxcbiAgICAgKi9cbiAgICBleHBvcnQgaW50ZXJmYWNlIFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbi5IYW5kbGVgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi1oYW5kbGVcbiAgICAgICAgICovXG4gICAgICAgIGhhbmRsZTogc3RyaW5nIHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uLlRpbWVvdXRgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi10aW1lb3V0XG4gICAgICAgICAqL1xuICAgICAgICB0aW1lb3V0OiBzdHJpbmcgfCBjZGsuVG9rZW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb24uQ291bnRgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi1jb3VudFxuICAgICAgICAgKi9cbiAgICAgICAgY291bnQ/OiBudW1iZXIgfCBjZGsuVG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGdpdmVuIHByb3BlcnRpZXMgbWF0Y2ggdGhvc2Ugb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gV2FpdENvbmRpdGlvblJlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllczogYW55KTogY2RrLlZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBpZiAoIWNkay5jYW5JbnNwZWN0KHByb3BlcnRpZXMpKSB7IHJldHVybiBjZGsuVkFMSURBVElPTl9TVUNDRVNTOyB9XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IG5ldyBjZGsuVmFsaWRhdGlvblJlc3VsdHMoKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdjb3VudCcsIGNkay52YWxpZGF0ZU51bWJlcikocHJvcGVydGllcy5jb3VudCkpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ2hhbmRsZScsIGNkay5yZXF1aXJlZFZhbGlkYXRvcikocHJvcGVydGllcy5oYW5kbGUpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdoYW5kbGUnLCBjZGsudmFsaWRhdGVTdHJpbmcpKHByb3BlcnRpZXMuaGFuZGxlKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGltZW91dCcsIGNkay5yZXF1aXJlZFZhbGlkYXRvcikocHJvcGVydGllcy50aW1lb3V0KSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGltZW91dCcsIGNkay52YWxpZGF0ZVN0cmluZykocHJvcGVydGllcy50aW1lb3V0KSk7XG4gICAgICAgIHJldHVybiBlcnJvcnMud3JhcCgnc3VwcGxpZWQgcHJvcGVydGllcyBub3QgY29ycmVjdCBmb3IgXCJXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1wiJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uYGAgcmVzb3VyY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25gYCByZXNvdXJjZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3YWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1ZhbGlkYXRvcihwcm9wZXJ0aWVzKS5hc3NlcnRTdWNjZXNzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgSGFuZGxlOiBjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLmhhbmRsZSksXG4gICAgICAgICAgVGltZW91dDogY2RrLnN0cmluZ1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllcy50aW1lb3V0KSxcbiAgICAgICAgICBDb3VudDogY2RrLm51bWJlclRvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllcy5jb3VudCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy13YWl0Y29uZGl0aW9uLmh0bWxcbiAgICAgKi9cbiAgICBleHBvcnQgY2xhc3MgV2FpdENvbmRpdGlvblJlc291cmNlIGV4dGVuZHMgY2RrLlJlc291cmNlIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHJlc291cmNlVHlwZU5hbWUgPSBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25cIjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGNsb3VkZm9ybWF0aW9uX2F0dHJpYnV0ZSBEYXRhXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbkRhdGE6IFdhaXRDb25kaXRpb25EYXRhO1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbk5hbWU6IHN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlcyBhIG5ldyBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25gYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhcmVudCAgIHRoZSBgYGNkay5Db25zdHJ1Y3RgYCB0aGlzIGBgV2FpdENvbmRpdGlvblJlc291cmNlYGAgaXMgYSBwYXJ0IG9mXG4gICAgICAgICAqIEBwYXJhbSBuYW1lICAgICB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRyZWVcbiAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBgYFdhaXRDb25kaXRpb25SZXNvdXJjZWBgXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcGVydGllczogV2FpdENvbmRpdGlvblJlc291cmNlUHJvcHMpIHtcbiAgICAgICAgICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgeyB0eXBlOiBXYWl0Q29uZGl0aW9uUmVzb3VyY2UucmVzb3VyY2VUeXBlTmFtZSwgcHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNkay5yZXF1aXJlUHJvcGVydHkocHJvcGVydGllcywgJ2hhbmRsZScsIHRoaXMpO1xuICAgICAgICAgICAgY2RrLnJlcXVpcmVQcm9wZXJ0eShwcm9wZXJ0aWVzLCAndGltZW91dCcsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy53YWl0Q29uZGl0aW9uRGF0YSA9IG5ldyBXYWl0Q29uZGl0aW9uRGF0YSh0aGlzLmdldEF0dCgnRGF0YScpKTtcbiAgICAgICAgICAgIHRoaXMud2FpdENvbmRpdGlvbk5hbWUgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwcm9wZXJ0eU92ZXJyaWRlcygpOiBXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wcyB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51bnR5cGVkUHJvcGVydHlPdmVycmlkZXM7XG4gICAgICAgIH1cbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlclByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSAge1xuICAgICAgICAgICAgcmV0dXJuIHdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzVG9DbG91ZEZvcm1hdGlvbihjZGsucmVzb2x2ZShwcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWl0Q29uZGl0aW9uRGF0YSBleHRlbmRzIGNkay5Ub2tlbiB7XG4gICAgLy8gQHRzLWlnbm9yZTogcHJpdmF0ZSBidXQgdW51c2VkIG9uIHB1cnBvc2UuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGlzSXNBV2FpdENvbmRpdGlvbkRhdGEgPSB0cnVlO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIGNsb3VkZm9ybWF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb25oYW5kbGUuaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBXYWl0Q29uZGl0aW9uSGFuZGxlUmVzb3VyY2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZSBjbGFzcy5cbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlTmFtZSA9IFwiQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbkhhbmRsZVwiO1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbkhhbmRsZVVybDogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbkhhbmRsZWBgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcGFyZW50ICAgdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRoaXMgYGBXYWl0Q29uZGl0aW9uSGFuZGxlUmVzb3VyY2VgYCBpcyBhIHBhcnQgb2ZcbiAgICAgICAgICogQHBhcmFtIG5hbWUgICAgIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYGBjZGsuQ29uc3RydWN0YGAgdHJlZVxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGBgV2FpdENvbmRpdGlvbkhhbmRsZVJlc291cmNlYGBcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgICAgICBzdXBlcihwYXJlbnQsIG5hbWUsIHsgdHlwZTogV2FpdENvbmRpdGlvbkhhbmRsZVJlc291cmNlLnJlc291cmNlVHlwZU5hbWUgfSk7XG4gICAgICAgICAgICB0aGlzLndhaXRDb25kaXRpb25IYW5kbGVVcmwgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrRUFBK0U7QUFDL0UsK0RBQStEO0FBQy9ELDhGQUE4RjtBQUM5RixzSEFBc0g7O0FBRXRILGtHQUFrRztBQUVsRyxvQ0FBcUM7QUFFckMsSUFBaUIsY0FBYyxDQXNFOUI7QUF0RUQsV0FBaUIsY0FBYztJQVkzQjs7Ozs7O09BTUc7SUFDSCxTQUFTLDRCQUE0QixDQUFDLFVBQWU7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFBRSxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztTQUFFO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbkcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsbUNBQW1DLENBQUMsVUFBZTtRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUFFLE9BQU8sVUFBVSxDQUFDO1NBQUU7UUFDdkQsNEJBQTRCLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekQsT0FBTztZ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QUFpQjtZQUN4QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUN6QyxDQUFDO1FBQ1MsZ0JBQWdCLENBQUMsVUFBZTtZQUN0QyxPQUFPLDBDQUEwQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDOztJQS9CRDs7T0FFRztJQUNvQixzQ0FBZ0IsR0FBRyxvQ0FBb0MsQ0FBQztJQUp0RSxvQ0FBcUIsd0JBaUNqQyxDQUFBO0FBQ0wsQ0FBQyxFQTlGZ0IsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUE4RjlCO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxHQUFHLENBQUMsS0FBSztJQUFoRDs7UUFDSSw2Q0FBNkM7UUFDNUIsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0lBQ3JELENBQUM7Q0FBQTtBQUhELDhDQUdDO0FBRUQsV0FBaUIsY0FBYztJQUMzQjs7T0FFRztJQUNILE1BQWEsMkJBQTRCLFNBQVEsR0FBRyxDQUFDLFFBQVE7UUFPekQ7Ozs7OztXQU1HO1FBQ0gsWUFBWSxNQUFxQixFQUFFLElBQVk7WUFDM0MsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RELENBQUM7O0lBaEJEOztPQUVHO0lBQ29CLDRDQUFnQixHQUFHLDBDQUEwQyxDQUFDO0lBSjVFLDBDQUEyQiw4QkFrQnZDLENBQUE7QUFDTCxDQUFDLEVBdkJnQixjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQXVCOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxMi0yMDE4IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIFNwZWNpZmljYXRpb25cbi8vIFNlZTogZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2Nmbi1yZXNvdXJjZS1zcGVjaWZpY2F0aW9uLmh0bWxcbi8vIEBjZm4ydHM6bWV0YUAge1wiZ2VuZXJhdGVkXCI6XCIyMDE4LTEwLTE5VDEzOjQ3OjQxLjU3NVpcIixcImZpbmdlcnByaW50XCI6XCJBT0VTNElTYzk0dmR0aDJjSHFpdGhtWlVNN2llSXRwcjFBNk1yeVVSVVhFPVwifVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggfCBUaGlzIGlzIGdlbmVyYXRlZCBjb2RlIC0gbGluZSBsZW5ndGhzIGFyZSBkaWZmaWN1bHQgdG8gY29udHJvbFxuXG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5cbmV4cG9ydCBuYW1lc3BhY2UgY2xvdWRmb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWNmbi1jdXN0b21yZXNvdXJjZS5odG1sXG4gICAgICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBDdXN0b21SZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2UuU2VydmljZVRva2VuYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtY2ZuLWN1c3RvbXJlc291cmNlLmh0bWwjY2ZuLWN1c3RvbXJlc291cmNlLXNlcnZpY2V0b2tlblxuICAgICAgICAgKi9cbiAgICAgICAgc2VydmljZVRva2VuOiBzdHJpbmcgfCBjZGsuVG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGdpdmVuIHByb3BlcnRpZXMgbWF0Y2ggdGhvc2Ugb2YgYSBgYEN1c3RvbVJlc291cmNlUHJvcHNgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIFR5cGVTY3JpcHQgcHJvcGVydGllcyBvZiBhIGBgQ3VzdG9tUmVzb3VyY2VQcm9wc2BgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEN1c3RvbVJlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllczogYW55KTogY2RrLlZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBpZiAoIWNkay5jYW5JbnNwZWN0KHByb3BlcnRpZXMpKSB7IHJldHVybiBjZGsuVkFMSURBVElPTl9TVUNDRVNTOyB9XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IG5ldyBjZGsuVmFsaWRhdGlvblJlc3VsdHMoKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdzZXJ2aWNlVG9rZW4nLCBjZGsucmVxdWlyZWRWYWxpZGF0b3IpKHByb3BlcnRpZXMuc2VydmljZVRva2VuKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcignc2VydmljZVRva2VuJywgY2RrLnZhbGlkYXRlU3RyaW5nKShwcm9wZXJ0aWVzLnNlcnZpY2VUb2tlbikpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLndyYXAoJ3N1cHBsaWVkIHByb3BlcnRpZXMgbm90IGNvcnJlY3QgZm9yIFwiQ3VzdG9tUmVzb3VyY2VQcm9wc1wiJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZWBgIHJlc291cmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgVHlwZVNjcmlwdCBwcm9wZXJ0aWVzIG9mIGEgYGBDdXN0b21SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OkN1c3RvbVJlc291cmNlYGAgcmVzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBDdXN0b21SZXNvdXJjZVByb3BzVmFsaWRhdG9yKHByb3BlcnRpZXMpLmFzc2VydFN1Y2Nlc3MoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBTZXJ2aWNlVG9rZW46IGNkay5zdHJpbmdUb0Nsb3VkRm9ybWF0aW9uKHByb3BlcnRpZXMuc2VydmljZVRva2VuKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1jZm4tY3VzdG9tcmVzb3VyY2UuaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBDdXN0b21SZXNvdXJjZSBleHRlbmRzIGNkay5SZXNvdXJjZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSByZXNvdXJjZVR5cGVOYW1lID0gXCJBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZVwiO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2VgYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhcmVudCAgIHRoZSBgYGNkay5Db25zdHJ1Y3RgYCB0aGlzIGBgQ3VzdG9tUmVzb3VyY2VgYCBpcyBhIHBhcnQgb2ZcbiAgICAgICAgICogQHBhcmFtIG5hbWUgICAgIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYGBjZGsuQ29uc3RydWN0YGAgdHJlZVxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGBgQ3VzdG9tUmVzb3VyY2VgYFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IEN1c3RvbVJlc291cmNlUHJvcHMpIHtcbiAgICAgICAgICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgeyB0eXBlOiBDdXN0b21SZXNvdXJjZS5yZXNvdXJjZVR5cGVOYW1lLCBwcm9wZXJ0aWVzIH0pO1xuICAgICAgICAgICAgY2RrLnJlcXVpcmVQcm9wZXJ0eShwcm9wZXJ0aWVzLCAnc2VydmljZVRva2VuJywgdGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZ2V0IHByb3BlcnR5T3ZlcnJpZGVzKCk6IEN1c3RvbVJlc291cmNlUHJvcHMge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzO1xuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gIHtcbiAgICAgICAgICAgIHJldHVybiBjdXN0b21SZXNvdXJjZVByb3BzVG9DbG91ZEZvcm1hdGlvbihjZGsucmVzb2x2ZShwcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgY2xvdWRmb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgU3RhY2tSZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suVGVtcGxhdGVVUkxgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXN0YWNrLmh0bWwjY2ZuLWNsb3VkZm9ybWF0aW9uLXN0YWNrLXRlbXBsYXRldXJsXG4gICAgICAgICAqL1xuICAgICAgICB0ZW1wbGF0ZVVybDogc3RyaW5nIHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjay5Ob3RpZmljYXRpb25BUk5zYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zdGFjay5odG1sI2Nmbi1jbG91ZGZvcm1hdGlvbi1zdGFjay1ub3RpZmljYXRpb25hcm5zXG4gICAgICAgICAqL1xuICAgICAgICBub3RpZmljYXRpb25Bcm5zPzogQXJyYXk8c3RyaW5nIHwgY2RrLlRva2VuPiB8IGNkay5Ub2tlbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suUGFyYW1ldGVyc2BgXG4gICAgICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbCNjZm4tY2xvdWRmb3JtYXRpb24tc3RhY2stcGFyYW1ldGVyc1xuICAgICAgICAgKi9cbiAgICAgICAgcGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogKHN0cmluZyB8IGNkay5Ub2tlbikgfSB8IGNkay5Ub2tlbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suVGFnc2BgXG4gICAgICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbCNjZm4tY2xvdWRmb3JtYXRpb24tc3RhY2stdGFnc1xuICAgICAgICAgKi9cbiAgICAgICAgdGFncz86IEFycmF5PGNkay5UYWcgfCBjZGsuVG9rZW4+IHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjay5UaW1lb3V0SW5NaW51dGVzYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zdGFjay5odG1sI2Nmbi1jbG91ZGZvcm1hdGlvbi1zdGFjay10aW1lb3V0aW5taW51dGVzXG4gICAgICAgICAqL1xuICAgICAgICB0aW1lb3V0SW5NaW51dGVzPzogbnVtYmVyIHwgY2RrLlRva2VuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSB3aGV0aGVyIHRoZSBnaXZlbiBwcm9wZXJ0aWVzIG1hdGNoIHRob3NlIG9mIGEgYGBTdGFja1Jlc291cmNlUHJvcHNgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIFR5cGVTY3JpcHQgcHJvcGVydGllcyBvZiBhIGBgU3RhY2tSZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhY2tSZXNvdXJjZVByb3BzVmFsaWRhdG9yKHByb3BlcnRpZXM6IGFueSk6IGNkay5WYWxpZGF0aW9uUmVzdWx0IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gY2RrLlZBTElEQVRJT05fU1VDQ0VTUzsgfVxuICAgICAgICBjb25zdCBlcnJvcnMgPSBuZXcgY2RrLlZhbGlkYXRpb25SZXN1bHRzKCk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcignbm90aWZpY2F0aW9uQXJucycsIGNkay5saXN0VmFsaWRhdG9yKGNkay52YWxpZGF0ZVN0cmluZykpKHByb3BlcnRpZXMubm90aWZpY2F0aW9uQXJucykpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ3BhcmFtZXRlcnMnLCBjZGsuaGFzaFZhbGlkYXRvcihjZGsudmFsaWRhdGVTdHJpbmcpKShwcm9wZXJ0aWVzLnBhcmFtZXRlcnMpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCd0YWdzJywgY2RrLmxpc3RWYWxpZGF0b3IoY2RrLnZhbGlkYXRlVGFnKSkocHJvcGVydGllcy50YWdzKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGVtcGxhdGVVcmwnLCBjZGsucmVxdWlyZWRWYWxpZGF0b3IpKHByb3BlcnRpZXMudGVtcGxhdGVVcmwpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCd0ZW1wbGF0ZVVybCcsIGNkay52YWxpZGF0ZVN0cmluZykocHJvcGVydGllcy50ZW1wbGF0ZVVybCkpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ3RpbWVvdXRJbk1pbnV0ZXMnLCBjZGsudmFsaWRhdGVOdW1iZXIpKHByb3BlcnRpZXMudGltZW91dEluTWludXRlcykpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLndyYXAoJ3N1cHBsaWVkIHByb3BlcnRpZXMgbm90IGNvcnJlY3QgZm9yIFwiU3RhY2tSZXNvdXJjZVByb3BzXCInKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrYGAgcmVzb3VyY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFN0YWNrUmVzb3VyY2VQcm9wc2BgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFja2BgIHJlc291cmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBTdGFja1Jlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllcykuYXNzZXJ0U3VjY2VzcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiBjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLnRlbXBsYXRlVXJsKSxcbiAgICAgICAgICBOb3RpZmljYXRpb25BUk5zOiBjZGsubGlzdE1hcHBlcihjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy5ub3RpZmljYXRpb25Bcm5zKSxcbiAgICAgICAgICBQYXJhbWV0ZXJzOiBjZGsuaGFzaE1hcHBlcihjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy5wYXJhbWV0ZXJzKSxcbiAgICAgICAgICBUYWdzOiBjZGsubGlzdE1hcHBlcihjZGsudGFnVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy50YWdzKSxcbiAgICAgICAgICBUaW1lb3V0SW5NaW51dGVzOiBjZGsubnVtYmVyVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLnRpbWVvdXRJbk1pbnV0ZXMpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBTdGFja1Jlc291cmNlIGV4dGVuZHMgY2RrLlJlc291cmNlIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHJlc291cmNlVHlwZU5hbWUgPSBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrXCI7XG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdGFja0lkOiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBuZXcgYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFja2BgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcGFyZW50ICAgdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRoaXMgYGBTdGFja1Jlc291cmNlYGAgaXMgYSBwYXJ0IG9mXG4gICAgICAgICAqIEBwYXJhbSBuYW1lICAgICB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRyZWVcbiAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBgYFN0YWNrUmVzb3VyY2VgYFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IFN0YWNrUmVzb3VyY2VQcm9wcykge1xuICAgICAgICAgICAgc3VwZXIocGFyZW50LCBuYW1lLCB7IHR5cGU6IFN0YWNrUmVzb3VyY2UucmVzb3VyY2VUeXBlTmFtZSwgcHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNkay5yZXF1aXJlUHJvcGVydHkocHJvcGVydGllcywgJ3RlbXBsYXRlVXJsJywgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLnN0YWNrSWQgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwcm9wZXJ0eU92ZXJyaWRlcygpOiBTdGFja1Jlc291cmNlUHJvcHMge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzO1xuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja1Jlc291cmNlUHJvcHNUb0Nsb3VkRm9ybWF0aW9uKGNkay5yZXNvbHZlKHByb3BlcnRpZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBjbG91ZGZvcm1hdGlvbiB7XG4gICAgLyoqXG4gICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy13YWl0Y29uZGl0aW9uLmh0bWxcbiAgICAgKi9cbiAgICBleHBvcnQgaW50ZXJmYWNlIFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbi5IYW5kbGVgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi1oYW5kbGVcbiAgICAgICAgICovXG4gICAgICAgIGhhbmRsZTogc3RyaW5nIHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uLlRpbWVvdXRgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi10aW1lb3V0XG4gICAgICAgICAqL1xuICAgICAgICB0aW1lb3V0OiBzdHJpbmcgfCBjZGsuVG9rZW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb24uQ291bnRgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi1jb3VudFxuICAgICAgICAgKi9cbiAgICAgICAgY291bnQ/OiBudW1iZXIgfCBjZGsuVG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGdpdmVuIHByb3BlcnRpZXMgbWF0Y2ggdGhvc2Ugb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gV2FpdENvbmRpdGlvblJlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllczogYW55KTogY2RrLlZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBpZiAoIWNkay5jYW5JbnNwZWN0KHByb3BlcnRpZXMpKSB7IHJldHVybiBjZGsuVkFMSURBVElPTl9TVUNDRVNTOyB9XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IG5ldyBjZGsuVmFsaWRhdGlvblJlc3VsdHMoKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdjb3VudCcsIGNkay52YWxpZGF0ZU51bWJlcikocHJvcGVydGllcy5jb3VudCkpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ2hhbmRsZScsIGNkay5yZXF1aXJlZFZhbGlkYXRvcikocHJvcGVydGllcy5oYW5kbGUpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdoYW5kbGUnLCBjZGsudmFsaWRhdGVTdHJpbmcpKHByb3BlcnRpZXMuaGFuZGxlKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGltZW91dCcsIGNkay5yZXF1aXJlZFZhbGlkYXRvcikocHJvcGVydGllcy50aW1lb3V0KSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGltZW91dCcsIGNkay52YWxpZGF0ZVN0cmluZykocHJvcGVydGllcy50aW1lb3V0KSk7XG4gICAgICAgIHJldHVybiBlcnJvcnMud3JhcCgnc3VwcGxpZWQgcHJvcGVydGllcyBub3QgY29ycmVjdCBmb3IgXCJXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1wiJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uYGAgcmVzb3VyY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25gYCByZXNvdXJjZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3YWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1ZhbGlkYXRvcihwcm9wZXJ0aWVzKS5hc3NlcnRTdWNjZXNzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgSGFuZGxlOiBjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLmhhbmRsZSksXG4gICAgICAgICAgVGltZW91dDogY2RrLnN0cmluZ1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllcy50aW1lb3V0KSxcbiAgICAgICAgICBDb3VudDogY2RrLm51bWJlclRvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllcy5jb3VudCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy13YWl0Y29uZGl0aW9uLmh0bWxcbiAgICAgKi9cbiAgICBleHBvcnQgY2xhc3MgV2FpdENvbmRpdGlvblJlc291cmNlIGV4dGVuZHMgY2RrLlJlc291cmNlIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHJlc291cmNlVHlwZU5hbWUgPSBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25cIjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGNsb3VkZm9ybWF0aW9uX2F0dHJpYnV0ZSBEYXRhXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbkRhdGE6IFdhaXRDb25kaXRpb25EYXRhO1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbk5hbWU6IHN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlcyBhIG5ldyBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25gYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhcmVudCAgIHRoZSBgYGNkay5Db25zdHJ1Y3RgYCB0aGlzIGBgV2FpdENvbmRpdGlvblJlc291cmNlYGAgaXMgYSBwYXJ0IG9mXG4gICAgICAgICAqIEBwYXJhbSBuYW1lICAgICB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRyZWVcbiAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBgYFdhaXRDb25kaXRpb25SZXNvdXJjZWBgXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcGVydGllczogV2FpdENvbmRpdGlvblJlc291cmNlUHJvcHMpIHtcbiAgICAgICAgICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgeyB0eXBlOiBXYWl0Q29uZGl0aW9uUmVzb3VyY2UucmVzb3VyY2VUeXBlTmFtZSwgcHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNkay5yZXF1aXJlUHJvcGVydHkocHJvcGVydGllcywgJ2hhbmRsZScsIHRoaXMpO1xuICAgICAgICAgICAgY2RrLnJlcXVpcmVQcm9wZXJ0eShwcm9wZXJ0aWVzLCAndGltZW91dCcsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy53YWl0Q29uZGl0aW9uRGF0YSA9IG5ldyBXYWl0Q29uZGl0aW9uRGF0YSh0aGlzLmdldEF0dCgnRGF0YScpKTtcbiAgICAgICAgICAgIHRoaXMud2FpdENvbmRpdGlvbk5hbWUgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwcm9wZXJ0eU92ZXJyaWRlcygpOiBXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wcyB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51bnR5cGVkUHJvcGVydHlPdmVycmlkZXM7XG4gICAgICAgIH1cbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlclByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSAge1xuICAgICAgICAgICAgcmV0dXJuIHdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzVG9DbG91ZEZvcm1hdGlvbihjZGsucmVzb2x2ZShwcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWl0Q29uZGl0aW9uRGF0YSBleHRlbmRzIGNkay5Ub2tlbiB7XG4gICAgLy8gQHRzLWlnbm9yZTogcHJpdmF0ZSBidXQgdW51c2VkIG9uIHB1cnBvc2UuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGlzSXNBV2FpdENvbmRpdGlvbkRhdGEgPSB0cnVlO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIGNsb3VkZm9ybWF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb25oYW5kbGUuaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBXYWl0Q29uZGl0aW9uSGFuZGxlUmVzb3VyY2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZSBjbGFzcy5cbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlTmFtZSA9IFwiQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbkhhbmRsZVwiO1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbkhhbmRsZVVybDogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbkhhbmRsZWBgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcGFyZW50ICAgdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRoaXMgYGBXYWl0Q29uZGl0aW9uSGFuZGxlUmVzb3VyY2VgYCBpcyBhIHBhcnQgb2ZcbiAgICAgICAgICogQHBhcmFtIG5hbWUgICAgIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYGBjZGsuQ29uc3RydWN0YGAgdHJlZVxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGBgV2FpdENvbmRpdGlvbkhhbmRsZVJlc291cmNlYGBcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgICAgICBzdXBlcihwYXJlbnQsIG5hbWUsIHsgdHlwZTogV2FpdENvbmRpdGlvbkhhbmRsZVJlc291cmNlLnJlc291cmNlVHlwZU5hbWUgfSk7XG4gICAgICAgICAgICB0aGlzLndhaXRDb25kaXRpb25IYW5kbGVVcmwgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19

@@ -33,2 +33,22 @@ import lambda = require('@aws-cdk/aws-lambda');

properties?: Properties;
/**
* For custom resources, you can specify AWS::CloudFormation::CustomResource
* (the default) as the resource type, or you can specify your own resource
* type name. For example, you can use "Custom::MyCustomResourceTypeName".
*
* Custom resource type names must begin with "Custom::" and can include
* alphanumeric characters and the following characters: _@-. You can specify
* a custom resource type name up to a maximum length of 60 characters. You
* cannot change the type during an update.
*
* Using your own resource type names helps you quickly differentiate the
* types of custom resources in your stack. For example, if you had two custom
* resources that conduct two different ping tests, you could name their type
* as Custom::PingTester to make them easily identifiable as ping testers
* (instead of using AWS::CloudFormation::CustomResource).
*
* @see
* https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn-customresource.html#aws-cfn-resource-type-name
*/
resourceType?: string;
}

@@ -51,2 +71,3 @@ /**

};
private useCustomResourceType;
}

@@ -20,2 +20,5 @@ "use strict";

this.userProperties = props.properties;
if (props.resourceType) {
this.useCustomResourceType(props.resourceType);
}
}

@@ -29,2 +32,15 @@ /**

}
useCustomResourceType(resourceType) {
if (!resourceType.startsWith('Custom::')) {
throw new Error(`Custom resource type must begin with "Custom::" (${resourceType})`);
}
const typeName = resourceType.substr(resourceType.indexOf('::') + 2);
if (typeName.length > 60) {
throw new Error(`Custom resource type length > 60 (${resourceType})`);
}
if (!/^[a-z0-9_@-]+$/i.test(typeName)) {
throw new Error(`Custom resource type name can only include alphanumeric characters and _@- (${typeName})`);
}
this.addOverride('Type', resourceType);
}
}

@@ -47,2 +63,2 @@ exports.CustomResource = CustomResource;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3VzdG9tLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EseUVBQTREO0FBaUM1RDs7Ozs7O0dBTUc7QUFDSCxNQUFhLGNBQWUsU0FBUSx5Q0FBYyxDQUFDLGNBQWM7SUFNL0QsWUFBWSxNQUFxQixFQUFFLElBQVksRUFBRSxLQUEwQjtRQUN6RSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztTQUNwRjtRQUVELEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ2xCLFlBQVksRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWMsQ0FBQyxRQUFRO1NBQ3RHLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQkFBZ0IsQ0FBQyxVQUFlO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBRUY7QUExQkQsd0NBMEJDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxLQUFpQjtJQUM1QyxNQUFNLEdBQUcsR0FBZSxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDL0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxhbWJkYSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1sYW1iZGEnKTtcbmltcG9ydCBzbnMgPSByZXF1aXJlKCdAYXdzLWNkay9hd3Mtc25zJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBjbG91ZGZvcm1hdGlvbiB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkJztcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIGFyYml0cmFyeSBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCB0eXBlIFByb3BlcnRpZXMgPSB7W2tleTogc3RyaW5nXTogYW55fTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIHByb3ZpZGUgYSBMYW1iZGEtYmFja2VkIGN1c3RvbSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIExhbWJkYSBwcm92aWRlciB0aGF0IGltcGxlbWVudHMgdGhpcyBjdXN0b20gcmVzb3VyY2UuXG4gICAqXG4gICAqIFdlIHJlY29tbWVuZCB1c2luZyBhIGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbiBmb3IgdGhpcy5cbiAgICpcbiAgICogT3B0aW9uYWwsIGV4YWN0bHkgb25lIG9mIGxhbWRhUHJvdmlkZXIgb3IgdG9waWNQcm92aWRlciBtdXN0IGJlIHNldC5cbiAgICovXG4gIGxhbWJkYVByb3ZpZGVyPzogbGFtYmRhLkZ1bmN0aW9uUmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgU05TIFRvcGljIGZvciB0aGUgcHJvdmlkZXIgdGhhdCBpbXBsZW1lbnRzIHRoaXMgY3VzdG9tIHJlc291cmNlLlxuICAgKlxuICAgKiBPcHRpb25hbCwgZXhhY3RseSBvbmUgb2YgbGFtZGFQcm92aWRlciBvciB0b3BpY1Byb3ZpZGVyIG11c3QgYmUgc2V0LlxuICAgKi9cbiAgdG9waWNQcm92aWRlcj86IHNucy5Ub3BpY1JlZjtcblxuICAvKipcbiAgICogUHJvcGVydGllcyB0byBwYXNzIHRvIHRoZSBMYW1iZGFcbiAgICovXG4gIHByb3BlcnRpZXM/OiBQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEN1c3RvbSByZXNvdXJjZSB0aGF0IGlzIGltcGxlbWVudGVkIHVzaW5nIGEgTGFtYmRhXG4gKlxuICogQXMgYSBjdXN0b20gcmVzb3VyY2UgYXV0aG9yLCB5b3Ugc2hvdWxkIGJlIHB1Ymxpc2hpbmcgYSBzdWJjbGFzcyBvZiB0aGlzIGNsYXNzXG4gKiB0aGF0IGhpZGVzIHRoZSBjaG9pY2Ugb2YgcHJvdmlkZXIsIGFuZCBhY2NlcHRzIGEgc3Ryb25nbHktdHlwZWQgcHJvcGVydGllc1xuICogb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgeW91ciBwcm92aWRlciBhY2NlcHRzLlxuICovXG5leHBvcnQgY2xhc3MgQ3VzdG9tUmVzb3VyY2UgZXh0ZW5kcyBjbG91ZGZvcm1hdGlvbi5DdXN0b21SZXNvdXJjZSB7XG4gIC8vIE5lZWRzIHRvIGJlIGltcGxlbWVudGVkIHVzaW5nIGluaGVyaXRhbmNlIGJlY2F1c2Ugd2UgbXVzdCBvdmVycmlkZSB0aGUgYHJlbmRlclByb3BlcnRpZXNgXG4gIC8vIFRoZSBnZW5lcmF0ZWQgcHJvcHMgY2xhc3NlcyB3aWxsIG5ldmVyIHJlbmRlciBwcm9wZXJ0aWVzIHRoYXQgdGhleSBkb24ndCBrbm93IGFib3V0LlxuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlclByb3BlcnRpZXM/OiBQcm9wZXJ0aWVzO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogQ3VzdG9tUmVzb3VyY2VQcm9wcykge1xuICAgIGlmICghIXByb3BzLmxhbWJkYVByb3ZpZGVyID09PSAhIXByb3BzLnRvcGljUHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhhY3RseSBvbmUgb2YgXCJsYW1iZGFQcm92aWRlclwiIG9yIFwidG9waWNQcm92aWRlclwiIG11c3QgYmUgc2V0LicpO1xuICAgIH1cblxuICAgIHN1cGVyKHBhcmVudCwgbmFtZSwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm9wcy5sYW1iZGFQcm92aWRlciA/IHByb3BzLmxhbWJkYVByb3ZpZGVyLmZ1bmN0aW9uQXJuIDogcHJvcHMudG9waWNQcm92aWRlciEudG9waWNBcm5cbiAgICB9KTtcblxuICAgIHRoaXMudXNlclByb3BlcnRpZXMgPSBwcm9wcy5wcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHJlbmRlclByb3BlcnRpZXMgdG8gbWl4IGluIHRoZSB1c2VyLWRlZmluZWQgcHJvcGVydGllc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlbmRlclByb3BlcnRpZXMocHJvcGVydGllczogYW55KToge1trZXk6IHN0cmluZ106IGFueX0gIHtcbiAgICBjb25zdCBwcm9wcyA9IHN1cGVyLnJlbmRlclByb3BlcnRpZXMocHJvcGVydGllcyk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocHJvcHMsIHVwcGVyY2FzZVByb3BlcnRpZXModGhpcy51c2VyUHJvcGVydGllcyB8fCB7fSkpO1xuICB9XG5cbn1cblxuLyoqXG4gKiBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciBvZiBldmVyeSBwcm9wZXJ0eSBuYW1lXG4gKlxuICogSXQncyBjdXN0b21hcnkgZm9yIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgdG8gc3RhcnQgd2l0aCBjYXBpdGFscywgYW5kIG91clxuICogcHJvcGVydGllcyB0byBzdGFydCB3aXRoIGxvd2VyY2FzZSwgc28gdGhpcyBmdW5jdGlvbiB0cmFuc2xhdGVzIGZyb20gb25lXG4gKiB0byB0aGUgb3RoZXJcbiAqL1xuZnVuY3Rpb24gdXBwZXJjYXNlUHJvcGVydGllcyhwcm9wczogUHJvcGVydGllcyk6IFByb3BlcnRpZXMge1xuICBjb25zdCByZXQ6IFByb3BlcnRpZXMgPSB7fTtcbiAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICBjb25zdCB1cHBlciA9IGtleS5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHIoMSk7XG4gICAgcmV0W3VwcGVyXSA9IHByb3BzW2tleV07XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3VzdG9tLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EseUVBQTREO0FBc0Q1RDs7Ozs7O0dBTUc7QUFDSCxNQUFhLGNBQWUsU0FBUSx5Q0FBYyxDQUFDLGNBQWM7SUFNL0QsWUFBWSxNQUFxQixFQUFFLElBQVksRUFBRSxLQUEwQjtRQUN6RSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztTQUNwRjtRQUVELEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ2xCLFlBQVksRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWMsQ0FBQyxRQUFRO1NBQ3RHLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUV2QyxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLGdCQUFnQixDQUFDLFVBQWU7UUFDeEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxZQUFvQjtRQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxZQUFZLEdBQUcsQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsWUFBWSxHQUFHLENBQUMsQ0FBQztTQUN2RTtRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUM3RztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FFRjtBQS9DRCx3Q0ErQ0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLG1CQUFtQixDQUFDLEtBQWlCO0lBQzVDLE1BQU0sR0FBRyxHQUFlLEVBQUUsQ0FBQztJQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMvQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGFtYmRhID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWxhbWJkYScpO1xuaW1wb3J0IHNucyA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1zbnMnKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbi5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgYXJiaXRyYXJ5IHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IHR5cGUgUHJvcGVydGllcyA9IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gcHJvdmlkZSBhIExhbWJkYS1iYWNrZWQgY3VzdG9tIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUmVzb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIHByb3ZpZGVyIHRoYXQgaW1wbGVtZW50cyB0aGlzIGN1c3RvbSByZXNvdXJjZS5cbiAgICpcbiAgICogV2UgcmVjb21tZW5kIHVzaW5nIGEgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uIGZvciB0aGlzLlxuICAgKlxuICAgKiBPcHRpb25hbCwgZXhhY3RseSBvbmUgb2YgbGFtZGFQcm92aWRlciBvciB0b3BpY1Byb3ZpZGVyIG11c3QgYmUgc2V0LlxuICAgKi9cbiAgbGFtYmRhUHJvdmlkZXI/OiBsYW1iZGEuRnVuY3Rpb25SZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBTTlMgVG9waWMgZm9yIHRoZSBwcm92aWRlciB0aGF0IGltcGxlbWVudHMgdGhpcyBjdXN0b20gcmVzb3VyY2UuXG4gICAqXG4gICAqIE9wdGlvbmFsLCBleGFjdGx5IG9uZSBvZiBsYW1kYVByb3ZpZGVyIG9yIHRvcGljUHJvdmlkZXIgbXVzdCBiZSBzZXQuXG4gICAqL1xuICB0b3BpY1Byb3ZpZGVyPzogc25zLlRvcGljUmVmO1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIHRvIHBhc3MgdG8gdGhlIExhbWJkYVxuICAgKi9cbiAgcHJvcGVydGllcz86IFByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIEZvciBjdXN0b20gcmVzb3VyY2VzLCB5b3UgY2FuIHNwZWNpZnkgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2VcbiAgICogKHRoZSBkZWZhdWx0KSBhcyB0aGUgcmVzb3VyY2UgdHlwZSwgb3IgeW91IGNhbiBzcGVjaWZ5IHlvdXIgb3duIHJlc291cmNlXG4gICAqIHR5cGUgbmFtZS4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIFwiQ3VzdG9tOjpNeUN1c3RvbVJlc291cmNlVHlwZU5hbWVcIi5cbiAgICpcbiAgICogQ3VzdG9tIHJlc291cmNlIHR5cGUgbmFtZXMgbXVzdCBiZWdpbiB3aXRoIFwiQ3VzdG9tOjpcIiBhbmQgY2FuIGluY2x1ZGVcbiAgICogYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogX0AtLiBZb3UgY2FuIHNwZWNpZnlcbiAgICogYSBjdXN0b20gcmVzb3VyY2UgdHlwZSBuYW1lIHVwIHRvIGEgbWF4aW11bSBsZW5ndGggb2YgNjAgY2hhcmFjdGVycy4gWW91XG4gICAqIGNhbm5vdCBjaGFuZ2UgdGhlIHR5cGUgZHVyaW5nIGFuIHVwZGF0ZS5cbiAgICpcbiAgICogVXNpbmcgeW91ciBvd24gcmVzb3VyY2UgdHlwZSBuYW1lcyBoZWxwcyB5b3UgcXVpY2tseSBkaWZmZXJlbnRpYXRlIHRoZVxuICAgKiB0eXBlcyBvZiBjdXN0b20gcmVzb3VyY2VzIGluIHlvdXIgc3RhY2suIEZvciBleGFtcGxlLCBpZiB5b3UgaGFkIHR3byBjdXN0b21cbiAgICogcmVzb3VyY2VzIHRoYXQgY29uZHVjdCB0d28gZGlmZmVyZW50IHBpbmcgdGVzdHMsIHlvdSBjb3VsZCBuYW1lIHRoZWlyIHR5cGVcbiAgICogYXMgQ3VzdG9tOjpQaW5nVGVzdGVyIHRvIG1ha2UgdGhlbSBlYXNpbHkgaWRlbnRpZmlhYmxlIGFzIHBpbmcgdGVzdGVyc1xuICAgKiAoaW5zdGVhZCBvZiB1c2luZyBBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZSkuXG4gICAqXG4gICAqIEBzZWVcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWNmbi1jdXN0b21yZXNvdXJjZS5odG1sI2F3cy1jZm4tcmVzb3VyY2UtdHlwZS1uYW1lXG4gICAqL1xuICByZXNvdXJjZVR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3VzdG9tIHJlc291cmNlIHRoYXQgaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBMYW1iZGFcbiAqXG4gKiBBcyBhIGN1c3RvbSByZXNvdXJjZSBhdXRob3IsIHlvdSBzaG91bGQgYmUgcHVibGlzaGluZyBhIHN1YmNsYXNzIG9mIHRoaXMgY2xhc3NcbiAqIHRoYXQgaGlkZXMgdGhlIGNob2ljZSBvZiBwcm92aWRlciwgYW5kIGFjY2VwdHMgYSBzdHJvbmdseS10eXBlZCBwcm9wZXJ0aWVzXG4gKiBvYmplY3Qgd2l0aCB0aGUgcHJvcGVydGllcyB5b3VyIHByb3ZpZGVyIGFjY2VwdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXN0b21SZXNvdXJjZSBleHRlbmRzIGNsb3VkZm9ybWF0aW9uLkN1c3RvbVJlc291cmNlIHtcbiAgLy8gTmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgdXNpbmcgaW5oZXJpdGFuY2UgYmVjYXVzZSB3ZSBtdXN0IG92ZXJyaWRlIHRoZSBgcmVuZGVyUHJvcGVydGllc2BcbiAgLy8gVGhlIGdlbmVyYXRlZCBwcm9wcyBjbGFzc2VzIHdpbGwgbmV2ZXIgcmVuZGVyIHByb3BlcnRpZXMgdGhhdCB0aGV5IGRvbid0IGtub3cgYWJvdXQuXG5cbiAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvcGVydGllcz86IFByb3BlcnRpZXM7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBDdXN0b21SZXNvdXJjZVByb3BzKSB7XG4gICAgaWYgKCEhcHJvcHMubGFtYmRhUHJvdmlkZXIgPT09ICEhcHJvcHMudG9waWNQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeGFjdGx5IG9uZSBvZiBcImxhbWJkYVByb3ZpZGVyXCIgb3IgXCJ0b3BpY1Byb3ZpZGVyXCIgbXVzdCBiZSBzZXQuJyk7XG4gICAgfVxuXG4gICAgc3VwZXIocGFyZW50LCBuYW1lLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3BzLmxhbWJkYVByb3ZpZGVyID8gcHJvcHMubGFtYmRhUHJvdmlkZXIuZnVuY3Rpb25Bcm4gOiBwcm9wcy50b3BpY1Byb3ZpZGVyIS50b3BpY0FyblxuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyUHJvcGVydGllcyA9IHByb3BzLnByb3BlcnRpZXM7XG5cbiAgICBpZiAocHJvcHMucmVzb3VyY2VUeXBlKSB7XG4gICAgICB0aGlzLnVzZUN1c3RvbVJlc291cmNlVHlwZShwcm9wcy5yZXNvdXJjZVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSByZW5kZXJQcm9wZXJ0aWVzIHRvIG1peCBpbiB0aGUgdXNlci1kZWZpbmVkIHByb3BlcnRpZXNcbiAgICovXG4gIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHtba2V5OiBzdHJpbmddOiBhbnl9ICB7XG4gICAgY29uc3QgcHJvcHMgPSBzdXBlci5yZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHByb3BzLCB1cHBlcmNhc2VQcm9wZXJ0aWVzKHRoaXMudXNlclByb3BlcnRpZXMgfHwge30pKTtcbiAgfVxuXG4gIHByaXZhdGUgdXNlQ3VzdG9tUmVzb3VyY2VUeXBlKHJlc291cmNlVHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKCFyZXNvdXJjZVR5cGUuc3RhcnRzV2l0aCgnQ3VzdG9tOjonKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b20gcmVzb3VyY2UgdHlwZSBtdXN0IGJlZ2luIHdpdGggXCJDdXN0b206OlwiICgke3Jlc291cmNlVHlwZX0pYCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZU5hbWUgPSByZXNvdXJjZVR5cGUuc3Vic3RyKHJlc291cmNlVHlwZS5pbmRleE9mKCc6OicpICsgMik7XG4gICAgaWYgKHR5cGVOYW1lLmxlbmd0aCA+IDYwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbSByZXNvdXJjZSB0eXBlIGxlbmd0aCA+IDYwICgke3Jlc291cmNlVHlwZX0pYCk7XG4gICAgfVxuXG4gICAgaWYgKCEvXlthLXowLTlfQC1dKyQvaS50ZXN0KHR5cGVOYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b20gcmVzb3VyY2UgdHlwZSBuYW1lIGNhbiBvbmx5IGluY2x1ZGUgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIF9ALSAoJHt0eXBlTmFtZX0pYCk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRPdmVycmlkZSgnVHlwZScsIHJlc291cmNlVHlwZSk7XG4gIH1cblxufVxuXG4vKipcbiAqIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIG9mIGV2ZXJ5IHByb3BlcnR5IG5hbWVcbiAqXG4gKiBJdCdzIGN1c3RvbWFyeSBmb3IgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyB0byBzdGFydCB3aXRoIGNhcGl0YWxzLCBhbmQgb3VyXG4gKiBwcm9wZXJ0aWVzIHRvIHN0YXJ0IHdpdGggbG93ZXJjYXNlLCBzbyB0aGlzIGZ1bmN0aW9uIHRyYW5zbGF0ZXMgZnJvbSBvbmVcbiAqIHRvIHRoZSBvdGhlclxuICovXG5mdW5jdGlvbiB1cHBlcmNhc2VQcm9wZXJ0aWVzKHByb3BzOiBQcm9wZXJ0aWVzKTogUHJvcGVydGllcyB7XG4gIGNvbnN0IHJldDogUHJvcGVydGllcyA9IHt9O1xuICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IHVwcGVyID0ga2V5LnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cigxKTtcbiAgICByZXRbdXBwZXJdID0gcHJvcHNba2V5XTtcbiAgfSk7XG4gIHJldHVybiByZXQ7XG59XG4iXX0=

@@ -68,6 +68,6 @@ import codepipeline = require('@aws-cdk/aws-codepipeline-api');

* If not specified, a fresh role is created. The role is created with zero
* permissions unless `trustTemplate` is true, in which case the role will have
* permissions unless `fullPermissions` is true, in which case the role will have
* full permissions.
*
* @default A fresh role with full or no permissions (depending on the value of `trustTemplate`).
* @default A fresh role with full or no permissions (depending on the value of `fullPermissions`).
*/

@@ -83,3 +83,3 @@ role?: iam.Role;

*
* @default No capabitilities passed, unless `trustTemplate` is true
* @default No capabitilities passed, unless `fullPermissions` is true
*/

@@ -86,0 +86,0 @@ capabilities?: CloudFormationCapabilities[];

@@ -133,2 +133,5 @@ "use strict";

this.addInputArtifact(props.templatePath.artifact);
if (props.templateConfiguration && props.templateConfiguration.artifact.name !== props.templatePath.artifact.name) {
this.addInputArtifact(props.templateConfiguration.artifact);
}
// permissions are based on best-guess from

@@ -191,2 +194,2 @@ // https://docs.aws.amazon.com/codepipeline/latest/userguide/how-to-custom-role.html

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4REFBZ0U7QUFDaEUsd0NBQXlDO0FBQ3pDLG9DQUFxQztBQW1DckM7O0dBRUc7QUFDSCxNQUFzQiw0QkFBNkIsU0FBUSxZQUFZLENBQUMsTUFBTTtJQVE1RSxZQUFZLE1BQXFCLEVBQUUsRUFBVSxFQUFFLEtBQXdDLEVBQUUsYUFBbUI7UUFDMUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixjQUFjLEVBQUU7Z0JBQ2QsU0FBUyxFQUFFLENBQUM7Z0JBQ1osU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsVUFBVSxFQUFFLENBQUM7YUFDZDtZQUNELFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsUUFBUSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTTtZQUM1QyxhQUFhLGtCQUNYLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUMxQixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFDakMsYUFBYSxDQUNqQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO2dCQUNuRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7Q0FDRjtBQWhDRCxvRUFnQ0M7QUFZRDs7R0FFRztBQUNILE1BQWEsOEJBQStCLFNBQVEsNEJBQTRCO0lBQzlFLFlBQVksTUFBcUIsRUFBRSxF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QkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLGVBQWUsRUFBRTthQUMzRCxVQUFVLENBQ1QsK0JBQStCLEVBQy9CLDRCQUE0QixDQUM3QjthQUNBLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQWJELDhEQWFDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLDBCQWlCWDtBQWpCRCxXQUFZLDBCQUEwQjtJQUNwQzs7OztPQUlHO0lBQ0gsb0RBQXNCLENBQUE7SUFFdEI7Ozs7Ozs7T0FPRztJQUNILCtEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUFqQlcsMEJBQTBCLEdBQTFCLGtDQUEwQixLQUExQixrQ0FBMEIsUUFpQnJDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxTQUFpQjtJQUN6QyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsUUFBUSxFQUFFLE9BQU87UUFDakIsWUFBWSxFQUFFLEdBQUcsU0FBUyxJQUFJO0tBQy9CLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29kZXBpcGVsaW5lICA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1jb2RlcGlwZWxpbmUtYXBpJyk7XG5pbXBvcnQgaWFtID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWlhbScpO1xuaW1wb3J0IGNkayA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2NkaycpO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgY29tbW9uIHRvIGFsbCBDbG91ZEZvcm1hdGlvbiBhY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkFjdGlvblByb3BzIGV4dGVuZHMgY29kZXBpcGVsaW5lLkNvbW1vbkFjdGlvblByb3BzLFxuICAgIGNvZGVwaXBlbGluZS5Db21tb25BY3Rpb25Db25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3RhY2sgdG8gYXBwbHkgdGhpcyBhY3Rpb24gdG9cbiAgICovXG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIG5hbWUgZm9yIHRoZSBmaWxlbmFtZSBpbiB0aGUgb3V0cHV0IGFydGlmYWN0IHRvIHN0b3JlIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gY2FsbCdzIHJlc3VsdC5cbiAgICpcbiAgICogVGhlIGZpbGUgd2lsbCBjb250YWluIHRoZSByZXN1bHQgb2YgdGhlIGNhbGwgdG8gQVdTIENsb3VkRm9ybWF0aW9uIChmb3IgZXhhbXBsZVxuICAgKiB0aGUgY2FsbCB0byBVcGRhdGVTdGFjayBvciBDcmVhdGVDaGFuZ2VTZXQpLlxuICAgKlxuICAgKiBBV1MgQ29kZVBpcGVsaW5lIGFkZHMgdGhlIGZpbGUgdG8gdGhlIG91dHB1dCBhcnRpZmFjdCBhZnRlciBwZXJmb3JtaW5nXG4gICAqIHRoZSBzcGVjaWZpZWQgYWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBvdXRwdXQgYXJ0aWZhY3QgZ2VuZXJhdGVkXG4gICAqL1xuICBvdXRwdXRGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcnRpZmFjdCB0byBnZW5lcmF0ZVxuICAgKlxuICAgKiBPbmx5IGFwcGxpZWQgaWYgYG91dHB1dEZpbGVOYW1lYCBpcyBzZXQgYXMgd2VsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYXJ0aWZhY3QgbmFtZS5cbiAgICovXG4gIG91dHB1dEFydGlmYWN0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBBY3Rpb25zIHRoYXQgZXhlY3V0ZSBDbG91ZEZvcm1hdGlvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkFjdGlvbiBleHRlbmRzIGNvZGVwaXBlbGluZS5BY3Rpb24ge1xuICAvKipcbiAgICogT3V0cHV0IGFydGlmYWN0IGNvbnRhaW5pbmcgdGhlIENsb3VkRm9ybWF0aW9uIGNhbGwgcmVzcG9uc2VcbiAgICpcbiAgICogT25seSBwcmVzZW50IGlmIGNvbmZpZ3VyZWQgYnkgcGFzc2luZyBgb3V0cHV0RmlsZU5hbWVgLlxuICAgKi9cbiAgcHVibGljIG91dHB1dEFydGlmYWN0PzogY29kZXBpcGVsaW5lLkFydGlmYWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb25Qcm9wcywgY29uZmlndXJhdGlvbj86IGFueSkge1xuICAgIHN1cGVyKHBhcmVudCwgaWQsIHtcbiAgICAgIHN0YWdlOiBwcm9wcy5zdGFnZSxcbiAgICAgIHJ1bk9yZGVyOiBwcm9wcy5ydW5PcmRlcixcbiAgICAgIGFydGlmYWN0Qm91bmRzOiB7XG4gICAgICAgIG1pbklucHV0czogMCxcbiAgICAgICAgbWF4SW5wdXRzOiAxMCxcbiAgICAgICAgbWluT3V0cHV0czogMCxcbiAgICAgICAgbWF4T3V0cHV0czogMSxcbiAgICAgIH0sXG4gICAgICBwcm92aWRlcjogJ0Nsb3VkRm9ybWF0aW9uJyxcbiAgICAgIGNhdGVnb3J5OiBjb2RlcGlwZWxpbmUuQWN0aW9uQ2F0ZWdvcnkuRGVwbG95LFxuICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICBTdGFja05hbWU6IHByb3BzLnN0YWNrTmFtZSxcbiAgICAgICAgT3V0cHV0RmlsZU5hbWU6IHByb3BzLm91dHB1dEZpbGVOYW1lLFxuICAgICAgICAuLi5jb25maWd1cmF0aW9uLFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLm91dHB1dEZpbGVOYW1lKSB7XG4gICAgICB0aGlzLm91dHB1dEFydGlmYWN0ID0gdGhpcy5hZGRPdXRwdXRBcnRpZmFjdChwcm9wcy5vdXRwdXRBcnRpZmFjdE5hbWUgfHxcbiAgICAgICAgKHByb3BzLnN0YWdlLm5hbWUgKyB0aGlzLmlkICsgJ0FydGlmYWN0JykpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBQaXBlbGluZUV4ZWN1dGVDaGFuZ2VTZXRBY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVFeGVjdXRlQ2hhbmdlU2V0QWN0aW9uUHJvcHMgZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uQWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY2hhbmdlIHNldCB0byBleGVjdXRlLlxuICAgKi9cbiAgY2hhbmdlU2V0TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVQaXBlbGluZSBhY3Rpb24gdG8gZXhlY3V0ZSBhIHByZXBhcmVkIGNoYW5nZSBzZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZUV4ZWN1dGVDaGFuZ2VTZXRBY3Rpb24gZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uQWN0aW9uIHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVFeGVjdXRlQ2hhbmdlU2V0QWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkLCBwcm9wcywge1xuICAgICAgQWN0aW9uTW9kZTogJ0NIQU5HRV9TRVRfRVhFQ1VURScsXG4gICAgICBDaGFuZ2VTZXROYW1lOiBwcm9wcy5jaGFuZ2VTZXROYW1lLFxuICAgIH0pO1xuXG4gICAgcHJvcHMuc3RhZ2UucGlwZWxpbmVSb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KClcbiAgICAgIC5hZGRBY3Rpb24oJ2Nsb3VkZm9ybWF0aW9uOkV4ZWN1dGVDaGFuZ2VTZXQnKVxuICAgICAgLmFkZFJlc291cmNlKHN0YWNrQXJuRnJvbU5hbWUocHJvcHMuc3RhY2tOYW1lKSlcbiAgICAgIC5hZGRDb25kaXRpb24oJ1N0cmluZ0VxdWFscycsIHsgJ2Nsb3VkZm9ybWF0aW9uOkNoYW5nZVNldE5hbWUnOiBwcm9wcy5jaGFuZ2VTZXROYW1lIH0pKTtcbiAgfVxufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggQmVjYXVzZSBvZiBsb25nIFVSTHMgaW4gZG9jdW1lbnRhdGlvblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGNvbW1vbiB0byBDbG91ZEZvcm1hdGlvbiBhY3Rpb25zIHRoYXQgc3RhZ2UgZGVwbG95bWVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uUHJvcHMgZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uQWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogSUFNIHJvbGUgdG8gYXNzdW1lIHdoZW4gZGVwbG95aW5nIGNoYW5nZXMuXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIGEgZnJlc2ggcm9sZSBpcyBjcmVhdGVkLiBUaGUgcm9sZSBpcyBjcmVhdGVkIHdpdGggemVyb1xuICAgKiBwZXJtaXNzaW9ucyB1bmxlc3MgYHRydXN0VGVtcGxhdGVgIGlzIHRydWUsIGluIHdoaWNoIGNhc2UgdGhlIHJvbGUgd2lsbCBoYXZlXG4gICAqIGZ1bGwgcGVybWlzc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgZnJlc2ggcm9sZSB3aXRoIGZ1bGwgb3Igbm8gcGVybWlzc2lvbnMgKGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYHRydXN0VGVtcGxhdGVgKS5cbiAgICovXG4gIHJvbGU/OiBpYW0uUm9sZTtcblxuICAvKipcbiAgICogQWNrbm93bGVkZ2UgY2VydGFpbiBjaGFuZ2VzIG1hZGUgYXMgcGFydCBvZiBkZXBsb3ltZW50XG4gICAqXG4gICAqIEZvciBzdGFja3MgdGhhdCBjb250YWluIGNlcnRhaW4gcmVzb3VyY2VzLCBleHBsaWNpdCBhY2tub3dsZWRnZW1lbnQgdGhhdCBBV1MgQ2xvdWRGb3JtYXRpb25cbiAgICogbWlnaHQgY3JlYXRlIG9yIHVwZGF0ZSB0aG9zZSByZXNvdXJjZXMuIEZvciBleGFtcGxlLCB5b3UgbXVzdCBzcGVjaWZ5IENBUEFCSUxJVFlfSUFNIGlmIHlvdXJcbiAgICogc3RhY2sgdGVtcGxhdGUgY29udGFpbnMgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByZXNvdXJjZXMuIEZvciBtb3JlXG4gICAqIGluZm9ybWF0aW9uLCBzZWUgW0Fja25vd2xlZGdpbmcgSUFNIFJlc291cmNlcyBpbiBBV1MgQ2xvdWRGb3JtYXRpb24gVGVtcGxhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1pYW0tdGVtcGxhdGUuaHRtbCN1c2luZy1pYW0tY2FwYWJpbGl0aWVzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gY2FwYWJpdGlsaXRpZXMgcGFzc2VkLCB1bmxlc3MgYHRydXN0VGVtcGxhdGVgIGlzIHRydWVcbiAgICovXG4gIGNhcGFiaWxpdGllcz86IENsb3VkRm9ybWF0aW9uQ2FwYWJpbGl0aWVzW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZ3JhbnQgZnVsbCBwZXJtaXNzaW9ucyB0byBDbG91ZEZvcm1hdGlvbiB3aGlsZSBkZXBsb3lpbmcgdGhpcyB0ZW1wbGF0ZS5cbiAgICpcbiAgICogU2V0dGluZyB0aGlzIHRvIGB0cnVlYCBhZmZlY3RzIHRoZSBkZWZhdWx0cyBmb3IgYHJvbGVgIGFuZCBgY2FwYWJpbGl0aWVzYCwgaWYgeW91XG4gICAqIGRvbid0IHNwZWNpZnkgYW55IGFsdGVybmF0aXZlcy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgcm9sZSB0aGF0IHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91IHdpbGwgaGF2ZSBmdWxsIChpLmUuLCBgKmApXG4gICAqIHBlcm1pc3Npb25zIG9uIGFsbCByZXNvdXJjZXMsIGFuZCB0aGUgZGVwbG95bWVudCB3aWxsIGhhdmUgbmFtZWQgSUFNXG4gICAqIGNhcGFiaWxpdGllcyAoaS5lLiwgYWJsZSB0byBjcmVhdGUgYWxsIElBTSByZXNvdXJjZXMpLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgc2hvcnRoYW5kIHRoYXQgeW91IGNhbiB1c2UgaWYgeW91IGZ1bGx5IHRydXN0IHRoZSB0ZW1wbGF0ZXMgdGhhdFxuICAgKiBhcmUgZGVwbG95ZWQgaW4gdGhpcyBwaXBlbGluZS4gSWYgeW91IHdhbnQgbW9yZSBmaW5lLWdyYWluZWQgcGVybWlzc2lvbnMsXG4gICAqIHVzZSBgYWRkVG9Sb2xlUG9saWN5YCBhbmQgYGNhcGFiaWxpdGllc2AgdG8gY29udHJvbCB3aGF0IHRoZSBDbG91ZEZvcm1hdGlvblxuICAgKiBkZXBsb3ltZW50IGlzIGFsbG93ZWQgdG8gZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmdWxsUGVybWlzc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBhcnRpZmFjdCB0byB1c2UgZm9yIHRlbXBsYXRlIHBhcmFtZXRlcnMgdmFsdWVzIGFuZCBzdGFjayBwb2xpY3kuXG4gICAqXG4gICAqIFRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uIGZpbGUgc2hvdWxkIGNvbnRhaW4gYSBKU09OIG9iamVjdCB0aGF0IHNob3VsZCBsb29rIGxpa2UgdGhpczpcbiAgICogYHsgXCJQYXJhbWV0ZXJzXCI6IHsuLi59LCBcIlRhZ3NcIjogey4uLn0sIFwiU3RhY2tQb2xpY3lcIjogey4uLiB9fWAuIEZvciBtb3JlIGluZm9ybWF0aW9uLFxuICAgKiBzZWUgW0FXUyBDbG91ZEZvcm1hdGlvbiBBcnRpZmFjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2NvbnRpbnVvdXMtZGVsaXZlcnktY29kZXBpcGVsaW5lLWNmbi1hcnRpZmFjdHMuaHRtbCkuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBpZiB5b3UgaW5jbHVkZSBzZW5zaXRpdmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgcGFzc3dvcmRzLCByZXN0cmljdCBhY2Nlc3MgdG8gdGhpc1xuICAgKiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIGlucHV0IGFydGlmYWN0c1xuICAgKi9cbiAgdGVtcGxhdGVDb25maWd1cmF0aW9uPzogY29kZXBpcGVsaW5lLkFydGlmYWN0UGF0aDtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIHNwZWNpZmllZCBoZXJlIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRlbXBsYXRlIHBhcmFtZXRlcnNcbiAgICogZm91bmQgaW4gdGhlIGFydGlmYWN0IHNwZWNpZmllZCBieSB0aGUgYHRlbXBsYXRlQ29uZmlndXJhdGlvbmAgcHJvcGVydHkuXG4gICAqXG4gICAqIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBzcGVjaWZ5XG4gICAqIG1vc3Qgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBVc2UgcGFyYW1ldGVyIG92ZXJyaWRlcyB0byBzcGVjaWZ5IG9ubHlcbiAgICogZHluYW1pYyBwYXJhbWV0ZXIgdmFsdWVzICh2YWx1ZXMgdGhhdCBhcmUgdW5rbm93biB1bnRpbCB5b3UgcnVuIHRoZVxuICAgKiBwaXBlbGluZSkuXG4gICAqXG4gICAqIEFsbCBwYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBzdGFjayB0ZW1wbGF0ZS5cbiAgICpcbiAgICogTm90ZTogdGhlIGVudGlyZSBvYmplY3QgY2Fubm90IGJlIG1vcmUgdGhhbiAxa0IuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG92ZXJyaWRlc1xuICAgKi9cbiAgcGFyYW1ldGVyT3ZlcnJpZGVzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG59XG4vLyB0c2xpbnQ6ZW5hYmxlOm1heC1saW5lLWxlbmd0aFxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBDbG91ZEZvcm1hdGlvbiBhY3Rpb25zIHRoYXQgZXhlY3V0ZSBvciBzdGFnZSBkZXBsb3ltZW50cy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb24gZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uQWN0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5Sb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb25Qcm9wcywgY29uZmlndXJhdGlvbjogYW55KSB7XG4gICAgY29uc3QgY2FwYWJpbGl0aWVzID0gcHJvcHMuZnVsbFBlcm1pc3Npb25zICYmIHByb3BzLmNhcGFiaWxpdGllcyA9PT0gdW5kZWZpbmVkID8gW0Nsb3VkRm9ybWF0aW9uQ2FwYWJpbGl0aWVzLk5hbWVkSUFNXSA6IHByb3BzLmNhcGFiaWxpdGllcztcblxuICAgIHN1cGVyKHBhcmVudCwgaWQsIHByb3BzLCB7XG4gICAgICAuLi5jb25maWd1cmF0aW9uLFxuICAgICAgLy8gVGhpcyBtdXN0IGJlIGEgc3RyaW5nLCBzbyBmbGF0dGVuIHRoZSBsaXN0IHRvIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZy5cbiAgICAgIENhcGFiaWxpdGllczogKGNhcGFiaWxpdGllcyAmJiBjYXBhYmlsaXRpZXMuam9pbignLCcpKSB8fCB1bmRlZmluZWQsXG4gICAgICBSb2xlQXJuOiBuZXcgY2RrLlRva2VuKCgpID0+IHRoaXMucm9sZS5yb2xlQXJuKSxcbiAgICAgIFBhcmFtZXRlck92ZXJyaWRlczogY2RrLkNsb3VkRm9ybWF0aW9uSlNPTi5zdHJpbmdpZnkocHJvcHMucGFyYW1ldGVyT3ZlcnJpZGVzKSxcbiAgICAgIFRlbXBsYXRlQ29uZmlndXJhdGlvbjogcHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uID8gcHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uLmxvY2F0aW9uIDogdW5kZWZpbmVkLFxuICAgICAgU3RhY2tOYW1lOiBwcm9wcy5zdGFja05hbWUsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMucm9sZSkge1xuICAgICAgdGhpcy5yb2xlID0gcHJvcHMucm9sZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdSb2xlJywge1xuICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbScpXG4gICAgICB9KTtcblxuICAgICAgaWYgKHByb3BzLmZ1bGxQZXJtaXNzaW9ucykge1xuICAgICAgICB0aGlzLnJvbGUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoKS5hZGRBY3Rpb24oJyonKS5hZGRBbGxSZXNvdXJjZXMoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgdGhlIHBpcGVsaW5lIHRvIHBhc3MgdGhpcyBhY3Rpb25zJyByb2xlIHRvIENsb3VkRm9ybWF0aW9uXG4gICAgLy8gUmVxdWlyZWQgYnkgYWxsIEFjdGlvbnMgdGhhdCBwZXJmb3JtIENGTiBkZXBsb3ltZW50c1xuICAgIHByb3BzLnN0YWdlLnBpcGVsaW5lUm9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCgpXG4gICAgICAuYWRkQWN0aW9uKCdpYW06UGFzc1JvbGUnKVxuICAgICAgLmFkZFJlc291cmNlKHRoaXMucm9sZS5yb2xlQXJuKSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHN0YXRlbWVudCB0byB0aGUgc2VydmljZSByb2xlIGFzc3VtZWQgYnkgQ2xvdWRGb3JtYXRpb24gd2hpbGUgZXhlY3V0aW5nIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFkZFRvUm9sZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlLmFkZFRvUG9saWN5KHN0YXRlbWVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgUGlwZWxpbmVDcmVhdGVSZXBsYWNlQ2hhbmdlU2V0QWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ3JlYXRlUmVwbGFjZUNoYW5nZVNldEFjdGlvblByb3BzIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNoYW5nZSBzZXQgdG8gY3JlYXRlIG9yIHVwZGF0ZS5cbiAgICovXG4gIGNoYW5nZVNldE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgYXJ0aWZhY3Qgd2l0aCB0aGUgQ2hhbmdlU2V0J3MgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVcbiAgICovXG4gIHRlbXBsYXRlUGF0aDogY29kZXBpcGVsaW5lLkFydGlmYWN0UGF0aDtcbn1cblxuLyoqXG4gKiBDb2RlUGlwZWxpbmUgYWN0aW9uIHRvIHByZXBhcmUgYSBjaGFuZ2Ugc2V0LlxuICpcbiAqIENyZWF0ZXMgdGhlIGNoYW5nZSBzZXQgaWYgaXQgZG9lc24ndCBleGlzdCBiYXNlZCBvbiB0aGUgc3RhY2sgbmFtZSBhbmQgdGVtcGxhdGUgdGhhdCB5b3Ugc3VibWl0LlxuICogSWYgdGhlIGNoYW5nZSBzZXQgZXhpc3RzLCBBV1MgQ2xvdWRGb3JtYXRpb24gZGVsZXRlcyBpdCwgYW5kIHRoZW4gY3JlYXRlcyBhIG5ldyBvbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZUNyZWF0ZVJlcGxhY2VDaGFuZ2VTZXRBY3Rpb24gZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uIHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVDcmVhdGVSZXBsYWNlQ2hhbmdlU2V0QWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkLCBwcm9wcywge1xuICAgICAgQWN0aW9uTW9kZTogJ0NIQU5HRV9TRVRfUkVQTEFDRScsXG4gICAgICBDaGFuZ2VTZXROYW1lOiBwcm9wcy5jaGFuZ2VTZXROYW1lLFxuICAgICAgVGVtcGxhdGVQYXRoOiBwcm9wcy50ZW1wbGF0ZVBhdGgubG9jYXRpb24sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZElucHV0QXJ0aWZhY3QocHJvcHMudGVtcGxhdGVQYXRoLmFydGlmYWN0KTtcbiAgICBpZiAocHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uICYmIHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5hcnRpZmFjdC5uYW1lICE9PSBwcm9wcy50ZW1wbGF0ZVBhdGguYXJ0aWZhY3QubmFtZSkge1xuICAgICAgdGhpcy5hZGRJbnB1dEFydGlmYWN0KHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5hcnRpZmFjdCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhY2tBcm4gPSBzdGFja0FybkZyb21OYW1lKHByb3BzLnN0YWNrTmFtZSk7XG4gICAgLy8gQWxsb3cgdGhlIHBpcGVsaW5lIHRvIGNoZWNrIGZvciBTdGFjayAmIENoYW5nZVNldCBleGlzdGVuY2VcbiAgICBwcm9wcy5zdGFnZS5waXBlbGluZVJvbGUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoKVxuICAgICAgLmFkZEFjdGlvbignY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnKVxuICAgICAgLmFkZFJlc291cmNlKHN0YWNrQXJuKSk7XG4gICAgLy8gQWxsb3cgdGhlIHBpcGVsaW5lIHRvIGNyZWF0ZSAmIGRlbGV0ZSB0aGUgc3BlY2lmaWVkIENoYW5nZVNldFxuICAgIHByb3BzLnN0YWdlLnBpcGVsaW5lUm9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCgpXG4gICAgICAuYWRkQWN0aW9ucygnY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JywgJ2Nsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsICdjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcpXG4gICAgICAuYWRkUmVzb3VyY2Uoc3RhY2tBcm4pXG4gICAgICAuYWRkQ29uZGl0aW9uKCdTdHJpbmdFcXVhbHMnLCB7ICdjbG91ZGZvcm1hdGlvbjpDaGFuZ2VTZXROYW1lJzogcHJvcHMuY2hhbmdlU2V0TmFtZSB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgUGlwZWxpbmVDcmVhdGVVcGRhdGVTdGFja0FjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUNyZWF0ZVVwZGF0ZVN0YWNrQWN0aW9uUHJvcHMgZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogSW5wdXQgYXJ0aWZhY3Qgd2l0aCB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgdG8gZGVwbG95XG4gICAqL1xuICB0ZW1wbGF0ZVBhdGg6IGNvZGVwaXBlbGluZS5BcnRpZmFjdFBhdGg7XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIHN0YWNrIGlmIGl0J3MgaW4gYSBmYWlsZWQgc3RhdGUuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUgYW5kIHRoZSBzdGFjayBpcyBpbiBhIGZhaWxlZCBzdGF0ZSAob25lIG9mXG4gICAqIFJPTExCQUNLX0NPTVBMRVRFLCBST0xMQkFDS19GQUlMRUQsIENSRUFURV9GQUlMRUQsIERFTEVURV9GQUlMRUQsIG9yXG4gICAqIFVQREFURV9ST0xMQkFDS19GQUlMRUQpLCBBV1MgQ2xvdWRGb3JtYXRpb24gZGVsZXRlcyB0aGUgc3RhY2sgYW5kIHRoZW5cbiAgICogY3JlYXRlcyBhIG5ldyBzdGFjay5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBub3Qgc2V0IHRvIHRydWUgYW5kIHRoZSBzdGFjayBpcyBpbiBhIGZhaWxlZCBzdGF0ZSxcbiAgICogdGhlIGRlcGxveW1lbnQgZmFpbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXBsYWNlT25GYWlsdXJlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb2RlUGlwZWxpbmUgYWN0aW9uIHRvIGRlcGxveSBhIHN0YWNrLlxuICpcbiAqIENyZWF0ZXMgdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgc3RhY2sgZG9lc24ndCBleGlzdC4gSWYgdGhlIHN0YWNrIGV4aXN0cyxcbiAqIEFXUyBDbG91ZEZvcm1hdGlvbiB1cGRhdGVzIHRoZSBzdGFjay4gVXNlIHRoaXMgYWN0aW9uIHRvIHVwZGF0ZSBleGlzdGluZ1xuICogc3RhY2tzLlxuICpcbiAqIEFXUyBDb2RlUGlwZWxpbmUgd29uJ3QgcmVwbGFjZSB0aGUgc3RhY2ssIGFuZCB3aWxsIGZhaWwgZGVwbG95bWVudCBpZiB0aGVcbiAqIHN0YWNrIGlzIGluIGEgZmFpbGVkIHN0YXRlLiBVc2UgYFJlcGxhY2VPbkZhaWx1cmVgIGZvciBhbiBhY3Rpb24gdGhhdFxuICogd2lsbCBkZWxldGUgYW5kIHJlY3JlYXRlIHRoZSBzdGFjayB0byB0cnkgYW5kIHJlY292ZXIgZnJvbSBmYWlsZWQgc3RhdGVzLlxuICpcbiAqIFVzZSB0aGlzIGFjdGlvbiB0byBhdXRvbWF0aWNhbGx5IHJlcGxhY2UgZmFpbGVkIHN0YWNrcyB3aXRob3V0IHJlY292ZXJpbmcgb3JcbiAqIHRyb3VibGVzaG9vdGluZyB0aGVtLiBZb3Ugd291bGQgdHlwaWNhbGx5IGNob29zZSB0aGlzIG1vZGUgZm9yIHRlc3RpbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZUNyZWF0ZVVwZGF0ZVN0YWNrQWN0aW9uIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lQ3JlYXRlVXBkYXRlU3RhY2tBY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQsIHByb3BzLCB7XG4gICAgICBBY3Rpb25Nb2RlOiBwcm9wcy5yZXBsYWNlT25GYWlsdXJlID8gJ1JFUExBQ0VfT05fRkFJTFVSRScgOiAnQ1JFQVRFX1VQREFURScsXG4gICAgICBUZW1wbGF0ZVBhdGg6IHByb3BzLnRlbXBsYXRlUGF0aC5sb2NhdGlvblxuICAgIH0pO1xuICAgIHRoaXMuYWRkSW5wdXRBcnRpZmFjdChwcm9wcy50ZW1wbGF0ZVBhdGguYXJ0aWZhY3QpO1xuXG4gICAgLy8gcGVybWlzc2lvbnMgYXJlIGJhc2VkIG9uIGJlc3QtZ3Vlc3MgZnJvbVxuICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb2RlcGlwZWxpbmUvbGF0ZXN0L3VzZXJndWlkZS9ob3ctdG8tY3VzdG9tLXJvbGUuaHRtbFxuICAgIC8vIGFuZCBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvbGlzdF9hd3NjbG91ZGZvcm1hdGlvbi5odG1sXG4gICAgY29uc3Qgc3RhY2tBcm4gPSBzdGFja0FybkZyb21OYW1lKHByb3BzLnN0YWNrTmFtZSk7XG4gICAgcHJvcHMuc3RhZ2UucGlwZWxpbmVSb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KClcbiAgICAgIC5hZGRBY3Rpb25zKFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFjayonLFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246Q3JlYXRlU3RhY2snLFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246VXBkYXRlU3RhY2snLFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVsZXRlU3RhY2snLCAvLyBuZWVkZWQgd2hlbiBwcm9wcy5yZXBsYWNlT25GYWlsdXJlIGlzIHRydWVcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlKicsXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpWYWxpZGF0ZVRlbXBsYXRlJyxcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkdldFN0YWNrUG9saWN5JyxcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOlNldFN0YWNrUG9saWN5JyxcbiAgICAgIClcbiAgICAgIC5hZGRSZXNvdXJjZShzdGFja0FybikpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIFBpcGVsaW5lRGVsZXRlU3RhY2tBY3Rpb24uXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVEZWxldGVTdGFja0FjdGlvblByb3BzIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvblByb3BzIHtcbn1cblxuLyoqXG4gKiBDb2RlUGlwZWxpbmUgYWN0aW9uIHRvIGRlbGV0ZSBhIHN0YWNrLlxuICpcbiAqIERlbGV0ZXMgYSBzdGFjay4gSWYgeW91IHNwZWNpZnkgYSBzdGFjayB0aGF0IGRvZXNuJ3QgZXhpc3QsIHRoZSBhY3Rpb24gY29tcGxldGVzIHN1Y2Nlc3NmdWxseVxuICogd2l0aG91dCBkZWxldGluZyBhIHN0YWNrLlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVEZWxldGVTdGFja0FjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZURlbGV0ZVN0YWNrQWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkLCBwcm9wcywge1xuICAgICAgQWN0aW9uTW9kZTogJ0RFTEVURV9PTkxZJyxcbiAgICB9KTtcbiAgICBjb25zdCBzdGFja0FybiA9IHN0YWNrQXJuRnJvbU5hbWUocHJvcHMuc3RhY2tOYW1lKTtcbiAgICBwcm9wcy5zdGFnZS5waXBlbGluZVJvbGUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoKVxuICAgICAgLmFkZEFjdGlvbnMoXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrKicsXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZWxldGVTdGFjaycsXG4gICAgICApXG4gICAgICAuYWRkUmVzb3VyY2Uoc3RhY2tBcm4pKTtcbiAgfVxufVxuXG4vKipcbiAqIENhcGFiaWxpdGllcyB0aGF0IGFmZmVjdCB3aGV0aGVyIENsb3VkRm9ybWF0aW9uIGlzIGFsbG93ZWQgdG8gY2hhbmdlIElBTSByZXNvdXJjZXNcbiAqL1xuZXhwb3J0IGVudW0gQ2xvdWRGb3JtYXRpb25DYXBhYmlsaXRpZXMge1xuICAvKipcbiAgICogQ2FwYWJpbGl0eSB0byBjcmVhdGUgYW5vbnltb3VzIElBTSByZXNvdXJjZXNcbiAgICpcbiAgICogUGFzcyB0aGlzIGNhcGFiaWxpdHkgaWYgeW91J3JlIG9ubHkgY3JlYXRpbmcgYW5vbnltb3VzIHJlc291cmNlcy5cbiAgICovXG4gIElBTSA9ICdDQVBBQklMSVRZX0lBTScsXG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdHkgdG8gY3JlYXRlIG5hbWVkIElBTSByZXNvdXJjZXMuXG4gICAqXG4gICAqIFBhc3MgdGhpcyBjYXBhYmlsaXR5IGlmIHlvdSdyZSBjcmVhdGluZyBJQU0gcmVzb3VyY2VzIHRoYXQgaGF2ZSBwaHlzaWNhbFxuICAgKiBuYW1lcy5cbiAgICpcbiAgICogYENsb3VkRm9ybWF0aW9uQ2FwYWJpbGl0aWVzLk5hbWVkSUFNYCBpbXBsaWVzIGBDbG91ZEZvcm1hdGlvbkNhcGFiaWxpdGllcy5JQU1gOyB5b3UgZG9uJ3QgaGF2ZSB0byBwYXNzIGJvdGguXG4gICAqL1xuICBOYW1lZElBTSA9ICdDQVBBQklMSVRZX05BTUVEX0lBTSdcbn1cblxuZnVuY3Rpb24gc3RhY2tBcm5Gcm9tTmFtZShzdGFja05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjZGsuQXJuVXRpbHMuZnJvbUNvbXBvbmVudHMoe1xuICAgIHNlcnZpY2U6ICdjbG91ZGZvcm1hdGlvbicsXG4gICAgcmVzb3VyY2U6ICdzdGFjaycsXG4gICAgcmVzb3VyY2VOYW1lOiBgJHtzdGFja05hbWV9LypgXG4gIH0pO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4REFBZ0U7QUFDaEUsd0NBQXlDO0FBQ3pDLG9DQUFxQztBQW1DckM7O0dBRUc7QUFDSCxNQUFzQiw0QkFBNkIsU0FBUSxZQUFZLENBQUMsTUFBTTtJQVE1RSxZQUFZLE1BQXFCLEVBQUUsRUFBVSxFQUFFLEtBQXdDLEVBQUUsYUFBbUI7UUFDMUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixjQUFjLEVBQUU7Z0JBQ2QsU0FBUyxFQUFFLENBQUM7Z0JBQ1osU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsVUFBVSxFQUFFLENBQUM7YUFDZDtZQUNELFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsUUFBUSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTTtZQUM1QyxhQUFhLGtCQUNYLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUMxQixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFDakMsYUFBYSxDQUNqQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO2dCQUNuRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7Q0FDRjtBQWhDRCxvRUFnQ0M7QUFZRDs7R0FFRztBQUNILE1BQWEsOEJBQStCLFNBQVEsNEJBQTRCO0lBQzlFLFlBQVksTUFBcUIsRUFBRSxF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QUFTRDs7Ozs7R0FLRztBQUNILE1BQWEseUJBQTBCLFNBQVEsa0NBQWtDO0lBQy9FLFlBQVksTUFBcUIsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDbEYsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFO1lBQ3ZCLFVBQVUsRUFBRSxhQUFhO1NBQzFCLENBQUMsQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsZUFBZSxFQUFFO2FBQzNELFVBQVUsQ0FDVCwrQkFBK0IsRUFDL0IsNEJBQTRCLENBQzdCO2FBQ0EsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBYkQsOERBYUM7QUFFRDs7R0FFRztBQUNILElBQVksMEJBaUJYO0FBakJELFdBQVksMEJBQTBCO0lBQ3BDOzs7O09BSUc7SUFDSCxvREFBc0IsQ0FBQTtJQUV0Qjs7Ozs7OztPQU9HO0lBQ0gsK0RBQWlDLENBQUE7QUFDbkMsQ0FBQyxFQWpCVywwQkFBMEIsR0FBMUIsa0NBQTBCLEtBQTFCLGtDQUEwQixRQWlCckM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFNBQWlCO0lBQ3pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDakMsT0FBTyxFQUFFLGdCQUFnQjtRQUN6QixRQUFRLEVBQUUsT0FBTztRQUNqQixZQUFZLEVBQUUsR0FBRyxTQUFTLElBQUk7S0FDL0IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2RlcGlwZWxpbmUgID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZS1hcGknKTtcbmltcG9ydCBpYW0gPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtaWFtJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5cbi8qKlxuICogUHJvcGVydGllcyBjb21tb24gdG8gYWxsIENsb3VkRm9ybWF0aW9uIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUNsb3VkRm9ybWF0aW9uQWN0aW9uUHJvcHMgZXh0ZW5kcyBjb2RlcGlwZWxpbmUuQ29tbW9uQWN0aW9uUHJvcHMsXG4gICAgY29kZXBpcGVsaW5lLkNvbW1vbkFjdGlvbkNvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFjayB0byBhcHBseSB0aGlzIGFjdGlvbiB0b1xuICAgKi9cbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbmFtZSBmb3IgdGhlIGZpbGVuYW1lIGluIHRoZSBvdXRwdXQgYXJ0aWZhY3QgdG8gc3RvcmUgdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiBjYWxsJ3MgcmVzdWx0LlxuICAgKlxuICAgKiBUaGUgZmlsZSB3aWxsIGNvbnRhaW4gdGhlIHJlc3VsdCBvZiB0aGUgY2FsbCB0byBBV1MgQ2xvdWRGb3JtYXRpb24gKGZvciBleGFtcGxlXG4gICAqIHRoZSBjYWxsIHRvIFVwZGF0ZVN0YWNrIG9yIENyZWF0ZUNoYW5nZVNldCkuXG4gICAqXG4gICAqIEFXUyBDb2RlUGlwZWxpbmUgYWRkcyB0aGUgZmlsZSB0byB0aGUgb3V0cHV0IGFydGlmYWN0IGFmdGVyIHBlcmZvcm1pbmdcbiAgICogdGhlIHNwZWNpZmllZCBhY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG91dHB1dCBhcnRpZmFjdCBnZW5lcmF0ZWRcbiAgICovXG4gIG91dHB1dEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3V0cHV0IGFydGlmYWN0IHRvIGdlbmVyYXRlXG4gICAqXG4gICAqIE9ubHkgYXBwbGllZCBpZiBgb3V0cHV0RmlsZU5hbWVgIGlzIHNldCBhcyB3ZWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBhcnRpZmFjdCBuYW1lLlxuICAgKi9cbiAgb3V0cHV0QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIEFjdGlvbnMgdGhhdCBleGVjdXRlIENsb3VkRm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uQWN0aW9uIGV4dGVuZHMgY29kZXBpcGVsaW5lLkFjdGlvbiB7XG4gIC8qKlxuICAgKiBPdXRwdXQgYXJ0aWZhY3QgY29udGFpbmluZyB0aGUgQ2xvdWRGb3JtYXRpb24gY2FsbCByZXNwb25zZVxuICAgKlxuICAgKiBPbmx5IHByZXNlbnQgaWYgY29uZmlndXJlZCBieSBwYXNzaW5nIGBvdXRwdXRGaWxlTmFtZWAuXG4gICAqL1xuICBwdWJsaWMgb3V0cHV0QXJ0aWZhY3Q/OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkFjdGlvblByb3BzLCBjb25maWd1cmF0aW9uPzogYW55KSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCwge1xuICAgICAgc3RhZ2U6IHByb3BzLnN0YWdlLFxuICAgICAgcnVuT3JkZXI6IHByb3BzLnJ1bk9yZGVyLFxuICAgICAgYXJ0aWZhY3RCb3VuZHM6IHtcbiAgICAgICAgbWluSW5wdXRzOiAwLFxuICAgICAgICBtYXhJbnB1dHM6IDEwLFxuICAgICAgICBtaW5PdXRwdXRzOiAwLFxuICAgICAgICBtYXhPdXRwdXRzOiAxLFxuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiAnQ2xvdWRGb3JtYXRpb24nLFxuICAgICAgY2F0ZWdvcnk6IGNvZGVwaXBlbGluZS5BY3Rpb25DYXRlZ29yeS5EZXBsb3ksXG4gICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgIFN0YWNrTmFtZTogcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBPdXRwdXRGaWxlTmFtZTogcHJvcHMub3V0cHV0RmlsZU5hbWUsXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24sXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMub3V0cHV0RmlsZU5hbWUpIHtcbiAgICAgIHRoaXMub3V0cHV0QXJ0aWZhY3QgPSB0aGlzLmFkZE91dHB1dEFydGlmYWN0KHByb3BzLm91dHB1dEFydGlmYWN0TmFtZSB8fFxuICAgICAgICAocHJvcHMuc3RhZ2UubmFtZSArIHRoaXMuaWQgKyAnQXJ0aWZhY3QnKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIFBpcGVsaW5lRXhlY3V0ZUNoYW5nZVNldEFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUV4ZWN1dGVDaGFuZ2VTZXRBY3Rpb25Qcm9wcyBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjaGFuZ2Ugc2V0IHRvIGV4ZWN1dGUuXG4gICAqL1xuICBjaGFuZ2VTZXROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZVBpcGVsaW5lIGFjdGlvbiB0byBleGVjdXRlIGEgcHJlcGFyZWQgY2hhbmdlIHNldC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lRXhlY3V0ZUNoYW5nZVNldEFjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUV4ZWN1dGVDaGFuZ2VTZXRBY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQsIHByb3BzLCB7XG4gICAgICBBY3Rpb25Nb2RlOiAnQ0hBTkdFX1NFVF9FWEVDVVRFJyxcbiAgICAgIENoYW5nZVNldE5hbWU6IHByb3BzLmNoYW5nZVNldE5hbWUsXG4gICAgfSk7XG5cbiAgICBwcm9wcy5zdGFnZS5waXBlbGluZVJvbGUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoKVxuICAgICAgLmFkZEFjdGlvbignY2xvdWRmb3JtYXRpb246RXhlY3V0ZUNoYW5nZVNldCcpXG4gICAgICAuYWRkUmVzb3VyY2Uoc3RhY2tBcm5Gcm9tTmFtZShwcm9wcy5zdGFja05hbWUpKVxuICAgICAgLmFkZENvbmRpdGlvbignU3RyaW5nRXF1YWxzJywgeyAnY2xvdWRmb3JtYXRpb246Q2hhbmdlU2V0TmFtZSc6IHByb3BzLmNoYW5nZVNldE5hbWUgfSkpO1xuICB9XG59XG5cbi8vIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aCBCZWNhdXNlIG9mIGxvbmcgVVJMcyBpbiBkb2N1bWVudGF0aW9uXG4vKipcbiAqIFByb3BlcnRpZXMgY29tbW9uIHRvIENsb3VkRm9ybWF0aW9uIGFjdGlvbnMgdGhhdCBzdGFnZSBkZXBsb3ltZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb25Qcm9wcyBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBJQU0gcm9sZSB0byBhc3N1bWUgd2hlbiBkZXBsb3lpbmcgY2hhbmdlcy5cbiAgICpcbiAgICogSWYgbm90IHNwZWNpZmllZCwgYSBmcmVzaCByb2xlIGlzIGNyZWF0ZWQuIFRoZSByb2xlIGlzIGNyZWF0ZWQgd2l0aCB6ZXJvXG4gICAqIHBlcm1pc3Npb25zIHVubGVzcyBgZnVsbFBlcm1pc3Npb25zYCBpcyB0cnVlLCBpbiB3aGljaCBjYXNlIHRoZSByb2xlIHdpbGwgaGF2ZVxuICAgKiBmdWxsIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBIGZyZXNoIHJvbGUgd2l0aCBmdWxsIG9yIG5vIHBlcm1pc3Npb25zIChkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBmdWxsUGVybWlzc2lvbnNgKS5cbiAgICovXG4gIHJvbGU/OiBpYW0uUm9sZTtcblxuICAvKipcbiAgICogQWNrbm93bGVkZ2UgY2VydGFpbiBjaGFuZ2VzIG1hZGUgYXMgcGFydCBvZiBkZXBsb3ltZW50XG4gICAqXG4gICAqIEZvciBzdGFja3MgdGhhdCBjb250YWluIGNlcnRhaW4gcmVzb3VyY2VzLCBleHBsaWNpdCBhY2tub3dsZWRnZW1lbnQgdGhhdCBBV1MgQ2xvdWRGb3JtYXRpb25cbiAgICogbWlnaHQgY3JlYXRlIG9yIHVwZGF0ZSB0aG9zZSByZXNvdXJjZXMuIEZvciBleGFtcGxlLCB5b3UgbXVzdCBzcGVjaWZ5IENBUEFCSUxJVFlfSUFNIGlmIHlvdXJcbiAgICogc3RhY2sgdGVtcGxhdGUgY29udGFpbnMgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByZXNvdXJjZXMuIEZvciBtb3JlXG4gICAqIGluZm9ybWF0aW9uLCBzZWUgW0Fja25vd2xlZGdpbmcgSUFNIFJlc291cmNlcyBpbiBBV1MgQ2xvdWRGb3JtYXRpb24gVGVtcGxhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1pYW0tdGVtcGxhdGUuaHRtbCN1c2luZy1pYW0tY2FwYWJpbGl0aWVzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gY2FwYWJpdGlsaXRpZXMgcGFzc2VkLCB1bmxlc3MgYGZ1bGxQZXJtaXNzaW9uc2AgaXMgdHJ1ZVxuICAgKi9cbiAgY2FwYWJpbGl0aWVzPzogQ2xvdWRGb3JtYXRpb25DYXBhYmlsaXRpZXNbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBncmFudCBmdWxsIHBlcm1pc3Npb25zIHRvIENsb3VkRm9ybWF0aW9uIHdoaWxlIGRlcGxveWluZyB0aGlzIHRlbXBsYXRlLlxuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gYHRydWVgIGFmZmVjdHMgdGhlIGRlZmF1bHRzIGZvciBgcm9sZWAgYW5kIGBjYXBhYmlsaXRpZXNgLCBpZiB5b3VcbiAgICogZG9uJ3Qgc3BlY2lmeSBhbnkgYWx0ZXJuYXRpdmVzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCByb2xlIHRoYXQgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3Ugd2lsbCBoYXZlIGZ1bGwgKGkuZS4sIGAqYClcbiAgICogcGVybWlzc2lvbnMgb24gYWxsIHJlc291cmNlcywgYW5kIHRoZSBkZXBsb3ltZW50IHdpbGwgaGF2ZSBuYW1lZCBJQU1cbiAgICogY2FwYWJpbGl0aWVzIChpLmUuLCBhYmxlIHRvIGNyZWF0ZSBhbGwgSUFNIHJlc291cmNlcykuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBzaG9ydGhhbmQgdGhhdCB5b3UgY2FuIHVzZSBpZiB5b3UgZnVsbHkgdHJ1c3QgdGhlIHRlbXBsYXRlcyB0aGF0XG4gICAqIGFyZSBkZXBsb3llZCBpbiB0aGlzIHBpcGVsaW5lLiBJZiB5b3Ugd2FudCBtb3JlIGZpbmUtZ3JhaW5lZCBwZXJtaXNzaW9ucyxcbiAgICogdXNlIGBhZGRUb1JvbGVQb2xpY3lgIGFuZCBgY2FwYWJpbGl0aWVzYCB0byBjb250cm9sIHdoYXQgdGhlIENsb3VkRm9ybWF0aW9uXG4gICAqIGRlcGxveW1lbnQgaXMgYWxsb3dlZCB0byBkby5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxQZXJtaXNzaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElucHV0IGFydGlmYWN0IHRvIHVzZSBmb3IgdGVtcGxhdGUgcGFyYW1ldGVycyB2YWx1ZXMgYW5kIHN0YWNrIHBvbGljeS5cbiAgICpcbiAgICogVGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gZmlsZSBzaG91bGQgY29udGFpbiBhIEpTT04gb2JqZWN0IHRoYXQgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOlxuICAgKiBgeyBcIlBhcmFtZXRlcnNcIjogey4uLn0sIFwiVGFnc1wiOiB7Li4ufSwgXCJTdGFja1BvbGljeVwiOiB7Li4uIH19YC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sXG4gICAqIHNlZSBbQVdTIENsb3VkRm9ybWF0aW9uIEFydGlmYWN0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvY29udGludW91cy1kZWxpdmVyeS1jb2RlcGlwZWxpbmUtY2ZuLWFydGlmYWN0cy5odG1sKS5cbiAgICpcbiAgICogTm90ZSB0aGF0IGlmIHlvdSBpbmNsdWRlIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyBwYXNzd29yZHMsIHJlc3RyaWN0IGFjY2VzcyB0byB0aGlzXG4gICAqIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gaW5wdXQgYXJ0aWZhY3RzXG4gICAqL1xuICB0ZW1wbGF0ZUNvbmZpZ3VyYXRpb24/OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3RQYXRoO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHRlbXBsYXRlIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIFRlbXBsYXRlIHBhcmFtZXRlcnMgc3BlY2lmaWVkIGhlcmUgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGVtcGxhdGUgcGFyYW1ldGVyc1xuICAgKiBmb3VuZCBpbiB0aGUgYXJ0aWZhY3Qgc3BlY2lmaWVkIGJ5IHRoZSBgdGVtcGxhdGVDb25maWd1cmF0aW9uYCBwcm9wZXJ0eS5cbiAgICpcbiAgICogV2UgcmVjb21tZW5kIHRoYXQgeW91IHVzZSB0aGUgdGVtcGxhdGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIHNwZWNpZnlcbiAgICogbW9zdCBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIFVzZSBwYXJhbWV0ZXIgb3ZlcnJpZGVzIHRvIHNwZWNpZnkgb25seVxuICAgKiBkeW5hbWljIHBhcmFtZXRlciB2YWx1ZXMgKHZhbHVlcyB0aGF0IGFyZSB1bmtub3duIHVudGlsIHlvdSBydW4gdGhlXG4gICAqIHBpcGVsaW5lKS5cbiAgICpcbiAgICogQWxsIHBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIHN0YWNrIHRlbXBsYXRlLlxuICAgKlxuICAgKiBOb3RlOiB0aGUgZW50aXJlIG9iamVjdCBjYW5ub3QgYmUgbW9yZSB0aGFuIDFrQi5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gb3ZlcnJpZGVzXG4gICAqL1xuICBwYXJhbWV0ZXJPdmVycmlkZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbn1cbi8vIHRzbGludDplbmFibGU6bWF4LWxpbmUtbGVuZ3RoXG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIENsb3VkRm9ybWF0aW9uIGFjdGlvbnMgdGhhdCBleGVjdXRlIG9yIHN0YWdlIGRlcGxveW1lbnRzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLlJvbGU7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvblByb3BzLCBjb25maWd1cmF0aW9uOiBhbnkpIHtcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSBwcm9wcy5mdWxsUGVybWlzc2lvbnMgJiYgcHJvcHMuY2FwYWJpbGl0aWVzID09PSB1bmRlZmluZWQgPyBbQ2xvdWRGb3JtYXRpb25DYXBhYmlsaXRpZXMuTmFtZWRJQU1dIDogcHJvcHMuY2FwYWJpbGl0aWVzO1xuXG4gICAgc3VwZXIocGFyZW50LCBpZCwgcHJvcHMsIHtcbiAgICAgIC4uLmNvbmZpZ3VyYXRpb24sXG4gICAgICAvLyBUaGlzIG11c3QgYmUgYSBzdHJpbmcsIHNvIGZsYXR0ZW4gdGhlIGxpc3QgdG8gYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLlxuICAgICAgQ2FwYWJpbGl0aWVzOiAoY2FwYWJpbGl0aWVzICYmIGNhcGFiaWxpdGllcy5qb2luKCcsJykpIHx8IHVuZGVmaW5lZCxcbiAgICAgIFJvbGVBcm46IG5ldyBjZGsuVG9rZW4oKCkgPT4gdGhpcy5yb2xlLnJvbGVBcm4pLFxuICAgICAgUGFyYW1ldGVyT3ZlcnJpZGVzOiBjZGsuQ2xvdWRGb3JtYXRpb25KU09OLnN0cmluZ2lmeShwcm9wcy5wYXJhbWV0ZXJPdmVycmlkZXMpLFxuICAgICAgVGVtcGxhdGVDb25maWd1cmF0aW9uOiBwcm9wcy50ZW1wbGF0ZUNvbmZpZ3VyYXRpb24gPyBwcm9wcy50ZW1wbGF0ZUNvbmZpZ3VyYXRpb24ubG9jYXRpb24gOiB1bmRlZmluZWQsXG4gICAgICBTdGFja05hbWU6IHByb3BzLnN0YWNrTmFtZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5yb2xlKSB7XG4gICAgICB0aGlzLnJvbGUgPSBwcm9wcy5yb2xlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ1JvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJylcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMuZnVsbFBlcm1pc3Npb25zKSB7XG4gICAgICAgIHRoaXMucm9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCgpLmFkZEFjdGlvbignKicpLmFkZEFsbFJlc291cmNlcygpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGxvdyB0aGUgcGlwZWxpbmUgdG8gcGFzcyB0aGlzIGFjdGlvbnMnIHJvbGUgdG8gQ2xvdWRGb3JtYXRpb25cbiAgICAvLyBSZXF1aXJlZCBieSBhbGwgQWN0aW9ucyB0aGF0IHBlcmZvcm0gQ0ZOIGRlcGxveW1lbnRzXG4gICAgcHJvcHMuc3RhZ2UucGlwZWxpbmVSb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KClcbiAgICAgIC5hZGRBY3Rpb24oJ2lhbTpQYXNzUm9sZScpXG4gICAgICAuYWRkUmVzb3VyY2UodGhpcy5yb2xlLnJvbGVBcm4pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc3RhdGVtZW50IHRvIHRoZSBzZXJ2aWNlIHJvbGUgYXNzdW1lZCBieSBDbG91ZEZvcm1hdGlvbiB3aGlsZSBleGVjdXRpbmcgdGhpcyBhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYWRkVG9Sb2xlUG9saWN5KHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCkge1xuICAgIHJldHVybiB0aGlzLnJvbGUuYWRkVG9Qb2xpY3koc3RhdGVtZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBQaXBlbGluZUNyZWF0ZVJlcGxhY2VDaGFuZ2VTZXRBY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVDcmVhdGVSZXBsYWNlQ2hhbmdlU2V0QWN0aW9uUHJvcHMgZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY2hhbmdlIHNldCB0byBjcmVhdGUgb3IgdXBkYXRlLlxuICAgKi9cbiAgY2hhbmdlU2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBhcnRpZmFjdCB3aXRoIHRoZSBDaGFuZ2VTZXQncyBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZVxuICAgKi9cbiAgdGVtcGxhdGVQYXRoOiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3RQYXRoO1xufVxuXG4vKipcbiAqIENvZGVQaXBlbGluZSBhY3Rpb24gdG8gcHJlcGFyZSBhIGNoYW5nZSBzZXQuXG4gKlxuICogQ3JlYXRlcyB0aGUgY2hhbmdlIHNldCBpZiBpdCBkb2Vzbid0IGV4aXN0IGJhc2VkIG9uIHRoZSBzdGFjayBuYW1lIGFuZCB0ZW1wbGF0ZSB0aGF0IHlvdSBzdWJtaXQuXG4gKiBJZiB0aGUgY2hhbmdlIHNldCBleGlzdHMsIEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIGl0LCBhbmQgdGhlbiBjcmVhdGVzIGEgbmV3IG9uZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lQ3JlYXRlUmVwbGFjZUNoYW5nZVNldEFjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUNyZWF0ZVJlcGxhY2VDaGFuZ2VTZXRBY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQsIHByb3BzLCB7XG4gICAgICBBY3Rpb25Nb2RlOiAnQ0hBTkdFX1NFVF9SRVBMQUNFJyxcbiAgICAgIENoYW5nZVNldE5hbWU6IHByb3BzLmNoYW5nZVNldE5hbWUsXG4gICAgICBUZW1wbGF0ZVBhdGg6IHByb3BzLnRlbXBsYXRlUGF0aC5sb2NhdGlvbixcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkSW5wdXRBcnRpZmFjdChwcm9wcy50ZW1wbGF0ZVBhdGguYXJ0aWZhY3QpO1xuICAgIGlmIChwcm9wcy50ZW1wbGF0ZUNvbmZpZ3VyYXRpb24gJiYgcHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uLmFydGlmYWN0Lm5hbWUgIT09IHByb3BzLnRlbXBsYXRlUGF0aC5hcnRpZmFjdC5uYW1lKSB7XG4gICAgICB0aGlzLmFkZElucHV0QXJ0aWZhY3QocHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uLmFydGlmYWN0KTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFja0FybiA9IHN0YWNrQXJuRnJvbU5hbWUocHJvcHMuc3RhY2tOYW1lKTtcbiAgICAvLyBBbGxvdyB0aGUgcGlwZWxpbmUgdG8gY2hlY2sgZm9yIFN0YWNrICYgQ2hhbmdlU2V0IGV4aXN0ZW5jZVxuICAgIHByb3BzLnN0YWdlLnBpcGVsaW5lUm9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCgpXG4gICAgICAuYWRkQWN0aW9uKCdjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcycpXG4gICAgICAuYWRkUmVzb3VyY2Uoc3RhY2tBcm4pKTtcbiAgICAvLyBBbGxvdyB0aGUgcGlwZWxpbmUgdG8gY3JlYXRlICYgZGVsZXRlIHRoZSBzcGVjaWZpZWQgQ2hhbmdlU2V0XG4gICAgcHJvcHMuc3RhZ2UucGlwZWxpbmVSb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KClcbiAgICAgIC5hZGRBY3Rpb25zKCdjbG91ZGZvcm1hdGlvbjpDcmVhdGVDaGFuZ2VTZXQnLCAnY2xvdWRmb3JtYXRpb246RGVsZXRlQ2hhbmdlU2V0JywgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlQ2hhbmdlU2V0JylcbiAgICAgIC5hZGRSZXNvdXJjZShzdGFja0FybilcbiAgICAgIC5hZGRDb25kaXRpb24oJ1N0cmluZ0VxdWFscycsIHsgJ2Nsb3VkZm9ybWF0aW9uOkNoYW5nZVNldE5hbWUnOiBwcm9wcy5jaGFuZ2VTZXROYW1lIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBQaXBlbGluZUNyZWF0ZVVwZGF0ZVN0YWNrQWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ3JlYXRlVXBkYXRlU3RhY2tBY3Rpb25Qcm9wcyBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBJbnB1dCBhcnRpZmFjdCB3aXRoIHRoZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSB0byBkZXBsb3lcbiAgICovXG4gIHRlbXBsYXRlUGF0aDogY29kZXBpcGVsaW5lLkFydGlmYWN0UGF0aDtcblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgc3RhY2sgaWYgaXQncyBpbiBhIGZhaWxlZCBzdGF0ZS5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSBhbmQgdGhlIHN0YWNrIGlzIGluIGEgZmFpbGVkIHN0YXRlIChvbmUgb2ZcbiAgICogUk9MTEJBQ0tfQ09NUExFVEUsIFJPTExCQUNLX0ZBSUxFRCwgQ1JFQVRFX0ZBSUxFRCwgREVMRVRFX0ZBSUxFRCwgb3JcbiAgICogVVBEQVRFX1JPTExCQUNLX0ZBSUxFRCksIEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIHRoZSBzdGFjayBhbmQgdGhlblxuICAgKiBjcmVhdGVzIGEgbmV3IHN0YWNrLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIG5vdCBzZXQgdG8gdHJ1ZSBhbmQgdGhlIHN0YWNrIGlzIGluIGEgZmFpbGVkIHN0YXRlLFxuICAgKiB0aGUgZGVwbG95bWVudCBmYWlscy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlcGxhY2VPbkZhaWx1cmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvZGVQaXBlbGluZSBhY3Rpb24gdG8gZGVwbG95IGEgc3RhY2suXG4gKlxuICogQ3JlYXRlcyB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBzdGFjayBkb2Vzbid0IGV4aXN0LiBJZiB0aGUgc3RhY2sgZXhpc3RzLFxuICogQVdTIENsb3VkRm9ybWF0aW9uIHVwZGF0ZXMgdGhlIHN0YWNrLiBVc2UgdGhpcyBhY3Rpb24gdG8gdXBkYXRlIGV4aXN0aW5nXG4gKiBzdGFja3MuXG4gKlxuICogQVdTIENvZGVQaXBlbGluZSB3b24ndCByZXBsYWNlIHRoZSBzdGFjaywgYW5kIHdpbGwgZmFpbCBkZXBsb3ltZW50IGlmIHRoZVxuICogc3RhY2sgaXMgaW4gYSBmYWlsZWQgc3RhdGUuIFVzZSBgUmVwbGFjZU9uRmFpbHVyZWAgZm9yIGFuIGFjdGlvbiB0aGF0XG4gKiB3aWxsIGRlbGV0ZSBhbmQgcmVjcmVhdGUgdGhlIHN0YWNrIHRvIHRyeSBhbmQgcmVjb3ZlciBmcm9tIGZhaWxlZCBzdGF0ZXMuXG4gKlxuICogVXNlIHRoaXMgYWN0aW9uIHRvIGF1dG9tYXRpY2FsbHkgcmVwbGFjZSBmYWlsZWQgc3RhY2tzIHdpdGhvdXQgcmVjb3ZlcmluZyBvclxuICogdHJvdWJsZXNob290aW5nIHRoZW0uIFlvdSB3b3VsZCB0eXBpY2FsbHkgY2hvb3NlIHRoaXMgbW9kZSBmb3IgdGVzdGluZy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lQ3JlYXRlVXBkYXRlU3RhY2tBY3Rpb24gZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uIHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVDcmVhdGVVcGRhdGVTdGFja0FjdGlvblByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCwgcHJvcHMsIHtcbiAgICAgIEFjdGlvbk1vZGU6IHByb3BzLnJlcGxhY2VPbkZhaWx1cmUgPyAnUkVQTEFDRV9PTl9GQUlMVVJFJyA6ICdDUkVBVEVfVVBEQVRFJyxcbiAgICAgIFRlbXBsYXRlUGF0aDogcHJvcHMudGVtcGxhdGVQYXRoLmxvY2F0aW9uXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZElucHV0QXJ0aWZhY3QocHJvcHMudGVtcGxhdGVQYXRoLmFydGlmYWN0KTtcbiAgICBpZiAocHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uICYmIHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5hcnRpZmFjdC5uYW1lICE9PSBwcm9wcy50ZW1wbGF0ZVBhdGguYXJ0aWZhY3QubmFtZSkge1xuICAgICAgdGhpcy5hZGRJbnB1dEFydGlmYWN0KHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5hcnRpZmFjdCk7XG4gICAgfVxuXG4gICAgLy8gcGVybWlzc2lvbnMgYXJlIGJhc2VkIG9uIGJlc3QtZ3Vlc3MgZnJvbVxuICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb2RlcGlwZWxpbmUvbGF0ZXN0L3VzZXJndWlkZS9ob3ctdG8tY3VzdG9tLXJvbGUuaHRtbFxuICAgIC8vIGFuZCBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvbGlzdF9hd3NjbG91ZGZvcm1hdGlvbi5odG1sXG4gICAgY29uc3Qgc3RhY2tBcm4gPSBzdGFja0FybkZyb21OYW1lKHByb3BzLnN0YWNrTmFtZSk7XG4gICAgcHJvcHMuc3RhZ2UucGlwZWxpbmVSb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KClcbiAgICAgIC5hZGRBY3Rpb25zKFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFjayonLFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246Q3JlYXRlU3RhY2snLFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246VXBkYXRlU3RhY2snLFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVsZXRlU3RhY2snLCAvLyBuZWVkZWQgd2hlbiBwcm9wcy5yZXBsYWNlT25GYWlsdXJlIGlzIHRydWVcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlKicsXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpWYWxpZGF0ZVRlbXBsYXRlJyxcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkdldFN0YWNrUG9saWN5JyxcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOlNldFN0YWNrUG9saWN5JyxcbiAgICAgIClcbiAgICAgIC5hZGRSZXNvdXJjZShzdGFja0FybikpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIFBpcGVsaW5lRGVsZXRlU3RhY2tBY3Rpb24uXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVEZWxldGVTdGFja0FjdGlvblByb3BzIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvblByb3BzIHtcbn1cblxuLyoqXG4gKiBDb2RlUGlwZWxpbmUgYWN0aW9uIHRvIGRlbGV0ZSBhIHN0YWNrLlxuICpcbiAqIERlbGV0ZXMgYSBzdGFjay4gSWYgeW91IHNwZWNpZnkgYSBzdGFjayB0aGF0IGRvZXNuJ3QgZXhpc3QsIHRoZSBhY3Rpb24gY29tcGxldGVzIHN1Y2Nlc3NmdWxseVxuICogd2l0aG91dCBkZWxldGluZyBhIHN0YWNrLlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVEZWxldGVTdGFja0FjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZURlbGV0ZVN0YWNrQWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkLCBwcm9wcywge1xuICAgICAgQWN0aW9uTW9kZTogJ0RFTEVURV9PTkxZJyxcbiAgICB9KTtcbiAgICBjb25zdCBzdGFja0FybiA9IHN0YWNrQXJuRnJvbU5hbWUocHJvcHMuc3RhY2tOYW1lKTtcbiAgICBwcm9wcy5zdGFnZS5waXBlbGluZVJvbGUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoKVxuICAgICAgLmFkZEFjdGlvbnMoXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrKicsXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZWxldGVTdGFjaycsXG4gICAgICApXG4gICAgICAuYWRkUmVzb3VyY2Uoc3RhY2tBcm4pKTtcbiAgfVxufVxuXG4vKipcbiAqIENhcGFiaWxpdGllcyB0aGF0IGFmZmVjdCB3aGV0aGVyIENsb3VkRm9ybWF0aW9uIGlzIGFsbG93ZWQgdG8gY2hhbmdlIElBTSByZXNvdXJjZXNcbiAqL1xuZXhwb3J0IGVudW0gQ2xvdWRGb3JtYXRpb25DYXBhYmlsaXRpZXMge1xuICAvKipcbiAgICogQ2FwYWJpbGl0eSB0byBjcmVhdGUgYW5vbnltb3VzIElBTSByZXNvdXJjZXNcbiAgICpcbiAgICogUGFzcyB0aGlzIGNhcGFiaWxpdHkgaWYgeW91J3JlIG9ubHkgY3JlYXRpbmcgYW5vbnltb3VzIHJlc291cmNlcy5cbiAgICovXG4gIElBTSA9ICdDQVBBQklMSVRZX0lBTScsXG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdHkgdG8gY3JlYXRlIG5hbWVkIElBTSByZXNvdXJjZXMuXG4gICAqXG4gICAqIFBhc3MgdGhpcyBjYXBhYmlsaXR5IGlmIHlvdSdyZSBjcmVhdGluZyBJQU0gcmVzb3VyY2VzIHRoYXQgaGF2ZSBwaHlzaWNhbFxuICAgKiBuYW1lcy5cbiAgICpcbiAgICogYENsb3VkRm9ybWF0aW9uQ2FwYWJpbGl0aWVzLk5hbWVkSUFNYCBpbXBsaWVzIGBDbG91ZEZvcm1hdGlvbkNhcGFiaWxpdGllcy5JQU1gOyB5b3UgZG9uJ3QgaGF2ZSB0byBwYXNzIGJvdGguXG4gICAqL1xuICBOYW1lZElBTSA9ICdDQVBBQklMSVRZX05BTUVEX0lBTSdcbn1cblxuZnVuY3Rpb24gc3RhY2tBcm5Gcm9tTmFtZShzdGFja05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjZGsuQXJuVXRpbHMuZnJvbUNvbXBvbmVudHMoe1xuICAgIHNlcnZpY2U6ICdjbG91ZGZvcm1hdGlvbicsXG4gICAgcmVzb3VyY2U6ICdzdGFjaycsXG4gICAgcmVzb3VyY2VOYW1lOiBgJHtzdGFja05hbWV9LypgXG4gIH0pO1xufVxuIl19
{
"name": "@aws-cdk/aws-cloudformation",
"version": "0.12.0",
"version": "0.13.0",
"description": "CDK Constructs for AWS CloudFormation",

@@ -59,18 +59,18 @@ "main": "lib/index.js",

"devDependencies": {
"@aws-cdk/assert": "^0.12.0",
"@aws-cdk/assert": "^0.13.0",
"@types/lodash": "^4.14.116",
"cdk-build-tools": "^0.12.0",
"cdk-integ-tools": "^0.12.0",
"cfn2ts": "^0.12.0",
"cdk-build-tools": "^0.13.0",
"cdk-integ-tools": "^0.13.0",
"cfn2ts": "^0.13.0",
"lodash": "^4.17.11",
"pkglint": "^0.12.0"
"pkglint": "^0.13.0"
},
"dependencies": {
"@aws-cdk/aws-codepipeline-api": "^0.12.0",
"@aws-cdk/aws-iam": "^0.12.0",
"@aws-cdk/aws-lambda": "^0.12.0",
"@aws-cdk/aws-sns": "^0.12.0",
"@aws-cdk/cdk": "^0.12.0"
"@aws-cdk/aws-codepipeline-api": "^0.13.0",
"@aws-cdk/aws-iam": "^0.13.0",
"@aws-cdk/aws-lambda": "^0.13.0",
"@aws-cdk/aws-sns": "^0.13.0",
"@aws-cdk/cdk": "^0.13.0"
},
"homepage": "https://github.com/awslabs/aws-cdk"
}
import { Test } from 'nodeunit';
declare const _default: {
'custom resource is added twice, lambda is added once'(test: Test): void;
'custom resources can specify a resource type that starts with Custom::'(test: Test): void;
'fails if custom resource type is invalid': {
'does not start with "Custom::"'(test: Test): void;
'has invalid characters'(test: Test): void;
'is longer than 60 characters'(test: Test): void;
};
};
export = _default;
"use strict";
const assert_1 = require("@aws-cdk/assert");
const lambda = require("@aws-cdk/aws-lambda");
const sns = require("@aws-cdk/aws-sns");
const cdk = require("@aws-cdk/cdk");

@@ -99,4 +100,45 @@ const lib_1 = require("../lib");

test.done();
}
},
'custom resources can specify a resource type that starts with Custom::'(test) {
const stack = new cdk.Stack();
new lib_1.CustomResource(stack, 'MyCustomResource', {
resourceType: 'Custom::MyCustomResourceType',
topicProvider: new sns.Topic(stack, 'Provider')
});
assert_1.expect(stack).to(assert_1.haveResource('Custom::MyCustomResourceType'));
test.done();
},
'fails if custom resource type is invalid': {
'does not start with "Custom::"'(test) {
const stack = new cdk.Stack();
test.throws(() => {
new lib_1.CustomResource(stack, 'MyCustomResource', {
resourceType: 'NoCustom::MyCustomResourceType',
topicProvider: new sns.Topic(stack, 'Provider')
});
}, /Custom resource type must begin with "Custom::"/);
test.done();
},
'has invalid characters'(test) {
const stack = new cdk.Stack();
test.throws(() => {
new lib_1.CustomResource(stack, 'MyCustomResource', {
resourceType: 'Custom::My Custom?ResourceType',
topicProvider: new sns.Topic(stack, 'Provider')
});
}, /Custom resource type name can only include alphanumeric characters and/);
test.done();
},
'is longer than 60 characters'(test) {
const stack = new cdk.Stack();
test.throws(() => {
new lib_1.CustomResource(stack, 'MyCustomResource', {
resourceType: 'Custom::0123456789012345678901234567890123456789012345678901234567891',
topicProvider: new sns.Topic(stack, 'Provider')
});
}, /Custom resource type length > 60/);
test.done();
},
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QucmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUF5QztBQUN6Qyw4Q0FBK0M7QUFDL0Msb0NBQXFDO0FBRXJDLGdDQUF3QztBQXNGeEMsTUFBTSxrQkFBbUIsU0FBUSxHQUFHLENBQUMsU0FBUztJQUM1QyxZQUFZLE1BQXFCLEVBQUUsSUFBWTtRQUMvQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBCLE1BQU0sZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDbkUsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDO1lBQ2hELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDaEMsT0FBTyxFQUFFLGFBQWE7WUFDdEIsT0FBTyxFQUFFLEdBQUc7U0FDYixDQUFDLENBQUM7UUFFSCxJQUFJLG9CQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNuQyxjQUFjLEVBQUUsZUFBZTtTQUNoQyxDQUFDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFsR0QsaUJBQVM7SUFDUCxzREFBc0QsQ0FBQyxJQUFVO1FBQy9ELFFBQVE7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUU5QixPQUFPO1FBQ1AsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekMsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFekMsT0FBTztRQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDcEIsV0FBVyxFQUFFO2dCQUNYLDhEQUE4RCxFQUFFO29CQUNoRSxNQUFNLEVBQUUsZ0JBQWdCO29CQUN4QixZQUFZLEVBQUU7d0JBQ1osMEJBQTBCLEVBQUU7NEJBQzVCLFdBQVcsRUFBRTtnQ0FDWDtvQ0FDQSxRQUFRLEVBQUUsZ0JBQWdCO29DQUMxQixRQUFRLEVBQUUsT0FBTztvQ0FDakIsV0FBVyxFQUFFO3dDQUNYLFNBQVMsRUFBRSxzQkFBc0I7cUNBQ2xDO2lDQUNBOzZCQUNGOzRCQUNELFNBQVMsRUFBRSxZQUFZO3lCQUN0Qjt3QkFDRCxtQkFBbUIsRUFBRTs0QkFDbkIsRUFBRSxVQUFVLEVBQUUsQ0FBRSxFQUFFLEVBQUU7d0NBQ2xCLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7d0NBQzVGLDBDQUEwQztxQ0FBRSxDQUFFLEVBQUM7eUJBQ2xEO3FCQUNGO2lCQUNBO2dCQUNELG1EQUFtRCxFQUFFO29CQUNyRCxNQUFNLEVBQUUsdUJBQXVCO29CQUMvQixZQUFZLEVBQUU7d0JBQ1osTUFBTSxFQUFFOzRCQUNSLFNBQVMsRUFBRSxtQkFBbUI7eUJBQzdCO3dCQUNELFNBQVMsRUFBRSxhQUFhO3dCQUN4QixNQUFNLEVBQUU7NEJBQ1IsWUFBWSxFQUFFO2dDQUNaLDhEQUE4RDtnQ0FDOUQsS0FBSzs2QkFDTjt5QkFDQTt3QkFDRCxTQUFTLEVBQUUsV0FBVzt3QkFDdEIsU0FBUyxFQUFFLEdBQUc7cUJBQ2Y7b0JBQ0QsV0FBVyxFQUFFO3dCQUNYLDhEQUE4RDtxQkFDL0Q7aUJBQ0E7Z0JBQ0QsaUJBQWlCLEVBQUU7b0JBQ25CLE1BQU0sRUFBRSxxQ0FBcUM7b0JBQzdDLFlBQVksRUFBRTt3QkFDWixjQUFjLEVBQUU7NEJBQ2hCLFlBQVksRUFBRTtnQ0FDWixtREFBbUQ7Z0NBQ25ELEtBQUs7NkJBQ047eUJBQ0E7cUJBQ0Y7aUJBQ0E7Z0JBQ0QsaUJBQWlCLEVBQUU7b0JBQ25CLE1BQU0sRUFBRSxxQ0FBcUM7b0JBQzdDLFlBQVksRUFBRTt3QkFDWixjQUFjLEVBQUU7NEJBQ2hCLFlBQVksRUFBRTtnQ0FDWixtREFBbUQ7Z0NBQ25ELEtBQUs7NkJBQ047eUJBQ0E7cUJBQ0Y7aUJBQ0E7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0IH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBsYW1iZGEgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtbGFtYmRhJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UgfSBmcm9tICcuLi9saWInO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTpvYmplY3QtbGl0ZXJhbC1rZXktcXVvdGVzXG5cbmV4cG9ydCA9IHtcbiAgJ2N1c3RvbSByZXNvdXJjZSBpcyBhZGRlZCB0d2ljZSwgbGFtYmRhIGlzIGFkZGVkIG9uY2UnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBUZXN0Q3VzdG9tUmVzb3VyY2Uoc3RhY2ssICdDdXN0b20xJyk7XG4gICAgbmV3IFRlc3RDdXN0b21SZXNvdXJjZShzdGFjaywgJ0N1c3RvbTInKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvTWF0Y2goe1xuICAgICAgXCJSZXNvdXJjZXNcIjoge1xuICAgICAgICBcIlNpbmdsZXRvbkxhbWJkYVRlc3RDdXN0b21SZXNvdXJjZVByb3ZpZGVyU2VydmljZVJvbGU4MUZFQUI1Q1wiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6SUFNOjpSb2xlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnRcIjoge1xuICAgICAgICAgIFwiU3RhdGVtZW50XCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiQWN0aW9uXCI6IFwic3RzOkFzc3VtZVJvbGVcIixcbiAgICAgICAgICAgIFwiRWZmZWN0XCI6IFwiQWxsb3dcIixcbiAgICAgICAgICAgIFwiUHJpbmNpcGFsXCI6IHtcbiAgICAgICAgICAgICAgXCJTZXJ2aWNlXCI6IFwibGFtYmRhLmFtYXpvbmF3cy5jb21cIlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJWZXJzaW9uXCI6IFwiMjAxMi0xMC0xN1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIk1hbmFnZWRQb2xpY3lBcm5zXCI6IFtcbiAgICAgICAgICAgIHsgXCJGbjo6Sm9pblwiOiBbIFwiXCIsIFtcbiAgICAgICAgICAgICAgXCJhcm5cIiwgXCI6XCIsIHsgXCJSZWZcIjogXCJBV1M6OlBhcnRpdGlvblwiIH0sIFwiOlwiLCBcImlhbVwiLCBcIjpcIiwgXCJcIiwgXCI6XCIsIFwiYXdzXCIsIFwiOlwiLCBcInBvbGljeVwiLCBcIi9cIixcbiAgICAgICAgICAgICAgXCJzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlXCIgXSBdfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIlNpbmdsZXRvbkxhbWJkYVRlc3RDdXN0b21SZXNvdXJjZVByb3ZpZGVyQTkyNTUyNjlcIjoge1xuICAgICAgICBcIlR5cGVcIjogXCJBV1M6OkxhbWJkYTo6RnVuY3Rpb25cIixcbiAgICAgICAgXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIkNvZGVcIjoge1xuICAgICAgICAgIFwiWmlwRmlsZVwiOiBcImRlZiBoZWxsbygpOiBwYXNzXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiSGFuZGxlclwiOiBcImluZGV4LmhlbGxvXCIsXG4gICAgICAgICAgXCJSb2xlXCI6IHtcbiAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgXCJTaW5nbGV0b25MYW1iZGFUZXN0Q3VzdG9tUmVzb3VyY2VQcm92aWRlclNlcnZpY2VSb2xlODFGRUFCNUNcIixcbiAgICAgICAgICAgIFwiQXJuXCJcbiAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIlJ1bnRpbWVcIjogXCJweXRob24yLjdcIixcbiAgICAgICAgICBcIlRpbWVvdXRcIjogMzAwXG4gICAgICAgIH0sXG4gICAgICAgIFwiRGVwZW5kc09uXCI6IFtcbiAgICAgICAgICBcIlNpbmdsZXRvbkxhbWJkYVRlc3RDdXN0b21SZXNvdXJjZVByb3ZpZGVyU2VydmljZVJvbGU4MUZFQUI1Q1wiXG4gICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJDdXN0b20xRDMxOUIyMzdcIjoge1xuICAgICAgICBcIlR5cGVcIjogXCJBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZVwiLFxuICAgICAgICBcIlByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiU2VydmljZVRva2VuXCI6IHtcbiAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgXCJTaW5nbGV0b25MYW1iZGFUZXN0Q3VzdG9tUmVzb3VyY2VQcm92aWRlckE5MjU1MjY5XCIsXG4gICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIkN1c3RvbTJERDVGQjQ0RFwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OkN1c3RvbVJlc291cmNlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJTZXJ2aWNlVG9rZW5cIjoge1xuICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICBcIlNpbmdsZXRvbkxhbWJkYVRlc3RDdXN0b21SZXNvdXJjZVByb3ZpZGVyQTkyNTUyNjlcIixcbiAgICAgICAgICAgIFwiQXJuXCJcbiAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfVxufTtcblxuY2xhc3MgVGVzdEN1c3RvbVJlc291cmNlIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gIHN1cGVyKHBhcmVudCwgbmFtZSk7XG5cbiAgY29uc3Qgc2luZ2xldG9uTGFtYmRhID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnTGFtYmRhJywge1xuICAgIHV1aWQ6ICdUZXN0Q3VzdG9tUmVzb3VyY2VQcm92aWRlcicsXG4gICAgY29kZTogbmV3IGxhbWJkYS5JbmxpbmVDb2RlKCdkZWYgaGVsbG8oKTogcGFzcycpLFxuICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlB5dGhvbjI3LFxuICAgIGhhbmRsZXI6ICdpbmRleC5oZWxsbycsXG4gICAgdGltZW91dDogMzAwLFxuICB9KTtcblxuICBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgIGxhbWJkYVByb3ZpZGVyOiBzaW5nbGV0b25MYW1iZGFcbiAgfSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QucmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUF1RDtBQUN2RCw4Q0FBK0M7QUFDL0Msd0NBQXlDO0FBQ3pDLG9DQUFxQztBQUVyQyxnQ0FBd0M7QUEwSXhDLE1BQU0sa0JBQW1CLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFDNUMsWUFBWSxNQUFxQixFQUFFLElBQVk7UUFDL0MsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVwQixNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ25FLElBQUksRUFBRSw0QkFBNEI7WUFDbEMsSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNoRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ2hDLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLE9BQU8sRUFBRSxHQUFHO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxvQkFBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDbkMsY0FBYyxFQUFFLGVBQWU7U0FDaEMsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdEpELGlCQUFTO0lBQ1Asc0RBQXNELENBQUMsSUFBVTtRQUMvRCxRQUFRO1FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUIsT0FBTztRQUNQLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXpDLE9BQU87UUFDUCxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3BCLFdBQVcsRUFBRTtnQkFDWCw4REFBOEQsRUFB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QUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUU5QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDZixJQUFJLG9CQUFjLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO29CQUM1QyxZQUFZLEVBQUUsZ0NBQWdDO29CQUM5QyxhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7aUJBQ2hELENBQUMsQ0FBQztZQUNMLENBQUMsRUFBRSx3RUFBd0UsQ0FBQyxDQUFDO1lBRTdFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFFRCw4QkFBOEIsQ0FBQyxJQUFVO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRTlCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNmLElBQUksb0JBQWMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7b0JBQzVDLFlBQVksRUFBRSx1RUFBdUU7b0JBQ3JGLGFBQWEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztpQkFDaEQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxFQUFFLGtDQUFrQyxDQUFDLENBQUM7WUFFdkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztLQUVGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlIH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBsYW1iZGEgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtbGFtYmRhJyk7XG5pbXBvcnQgc25zID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLXNucycpO1xuaW1wb3J0IGNkayA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2NkaycpO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlIH0gZnJvbSAnLi4vbGliJztcblxuLy8gdHNsaW50OmRpc2FibGU6b2JqZWN0LWxpdGVyYWwta2V5LXF1b3Rlc1xuXG5leHBvcnQgPSB7XG4gICdjdXN0b20gcmVzb3VyY2UgaXMgYWRkZWQgdHdpY2UsIGxhbWJkYSBpcyBhZGRlZCBvbmNlJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgVGVzdEN1c3RvbVJlc291cmNlKHN0YWNrLCAnQ3VzdG9tMScpO1xuICAgIG5ldyBUZXN0Q3VzdG9tUmVzb3VyY2Uoc3RhY2ssICdDdXN0b20yJyk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJTaW5nbGV0b25MYW1iZGFUZXN0Q3VzdG9tUmVzb3VyY2VQcm92aWRlclNlcnZpY2VSb2xlODFGRUFCNUNcIjoge1xuICAgICAgICBcIlR5cGVcIjogXCJBV1M6OklBTTo6Um9sZVwiLFxuICAgICAgICBcIlByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiQXNzdW1lUm9sZVBvbGljeURvY3VtZW50XCI6IHtcbiAgICAgICAgICBcIlN0YXRlbWVudFwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFjdGlvblwiOiBcInN0czpBc3N1bWVSb2xlXCIsXG4gICAgICAgICAgICBcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG4gICAgICAgICAgICBcIlByaW5jaXBhbFwiOiB7XG4gICAgICAgICAgICAgIFwiU2VydmljZVwiOiBcImxhbWJkYS5hbWF6b25hd3MuY29tXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiVmVyc2lvblwiOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJNYW5hZ2VkUG9saWN5QXJuc1wiOiBbXG4gICAgICAgICAgICB7IFwiRm46OkpvaW5cIjogWyBcIlwiLCBbXG4gICAgICAgICAgICAgIFwiYXJuXCIsIFwiOlwiLCB7IFwiUmVmXCI6IFwiQVdTOjpQYXJ0aXRpb25cIiB9LCBcIjpcIiwgXCJpYW1cIiwgXCI6XCIsIFwiXCIsIFwiOlwiLCBcImF3c1wiLCBcIjpcIiwgXCJwb2xpY3lcIiwgXCIvXCIsXG4gICAgICAgICAgICAgIFwic2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZVwiIF0gXX1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJTaW5nbGV0b25MYW1iZGFUZXN0Q3VzdG9tUmVzb3VyY2VQcm92aWRlckE5MjU1MjY5XCI6IHtcbiAgICAgICAgXCJUeXBlXCI6IFwiQVdTOjpMYW1iZGE6OkZ1bmN0aW9uXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJDb2RlXCI6IHtcbiAgICAgICAgICBcIlppcEZpbGVcIjogXCJkZWYgaGVsbG8oKTogcGFzc1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIkhhbmRsZXJcIjogXCJpbmRleC5oZWxsb1wiLFxuICAgICAgICAgIFwiUm9sZVwiOiB7XG4gICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgIFwiU2luZ2xldG9uTGFtYmRhVGVzdEN1c3RvbVJlc291cmNlUHJvdmlkZXJTZXJ2aWNlUm9sZTgxRkVBQjVDXCIsXG4gICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJSdW50aW1lXCI6IFwicHl0aG9uMi43XCIsXG4gICAgICAgICAgXCJUaW1lb3V0XCI6IDMwMFxuICAgICAgICB9LFxuICAgICAgICBcIkRlcGVuZHNPblwiOiBbXG4gICAgICAgICAgXCJTaW5nbGV0b25MYW1iZGFUZXN0Q3VzdG9tUmVzb3VyY2VQcm92aWRlclNlcnZpY2VSb2xlODFGRUFCNUNcIlxuICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiQ3VzdG9tMUQzMTlCMjM3XCI6IHtcbiAgICAgICAgXCJUeXBlXCI6IFwiQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2VcIixcbiAgICAgICAgXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIlNlcnZpY2VUb2tlblwiOiB7XG4gICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgIFwiU2luZ2xldG9uTGFtYmRhVGVzdEN1c3RvbVJlc291cmNlUHJvdmlkZXJBOTI1NTI2OVwiLFxuICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJDdXN0b20yREQ1RkI0NERcIjoge1xuICAgICAgICBcIlR5cGVcIjogXCJBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZVwiLFxuICAgICAgICBcIlByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiU2VydmljZVRva2VuXCI6IHtcbiAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgXCJTaW5nbGV0b25MYW1iZGFUZXN0Q3VzdG9tUmVzb3VyY2VQcm92aWRlckE5MjU1MjY5XCIsXG4gICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2N1c3RvbSByZXNvdXJjZXMgY2FuIHNwZWNpZnkgYSByZXNvdXJjZSB0eXBlIHRoYXQgc3RhcnRzIHdpdGggQ3VzdG9tOjonKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBuZXcgQ3VzdG9tUmVzb3VyY2Uoc3RhY2ssICdNeUN1c3RvbVJlc291cmNlJywge1xuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpNeUN1c3RvbVJlc291cmNlVHlwZScsXG4gICAgICB0b3BpY1Byb3ZpZGVyOiBuZXcgc25zLlRvcGljKHN0YWNrLCAnUHJvdmlkZXInKVxuICAgIH0pO1xuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdDdXN0b206Ok15Q3VzdG9tUmVzb3VyY2VUeXBlJykpO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdmYWlscyBpZiBjdXN0b20gcmVzb3VyY2UgdHlwZSBpcyBpbnZhbGlkJzoge1xuICAgICdkb2VzIG5vdCBzdGFydCB3aXRoIFwiQ3VzdG9tOjpcIicodGVzdDogVGVzdCkge1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG5cbiAgICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgICAgbmV3IEN1c3RvbVJlc291cmNlKHN0YWNrLCAnTXlDdXN0b21SZXNvdXJjZScsIHtcbiAgICAgICAgICByZXNvdXJjZVR5cGU6ICdOb0N1c3RvbTo6TXlDdXN0b21SZXNvdXJjZVR5cGUnLFxuICAgICAgICAgIHRvcGljUHJvdmlkZXI6IG5ldyBzbnMuVG9waWMoc3RhY2ssICdQcm92aWRlcicpXG4gICAgICAgIH0pO1xuICAgICAgfSwgL0N1c3RvbSByZXNvdXJjZSB0eXBlIG11c3QgYmVnaW4gd2l0aCBcIkN1c3RvbTo6XCIvKTtcblxuICAgICAgdGVzdC5kb25lKCk7XG4gICAgfSxcblxuICAgICdoYXMgaW52YWxpZCBjaGFyYWN0ZXJzJyh0ZXN0OiBUZXN0KSB7XG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgICAgdGVzdC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBuZXcgQ3VzdG9tUmVzb3VyY2Uoc3RhY2ssICdNeUN1c3RvbVJlc291cmNlJywge1xuICAgICAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6TXkgQ3VzdG9tP1Jlc291cmNlVHlwZScsXG4gICAgICAgICAgdG9waWNQcm92aWRlcjogbmV3IHNucy5Ub3BpYyhzdGFjaywgJ1Byb3ZpZGVyJylcbiAgICAgICAgfSk7XG4gICAgICB9LCAvQ3VzdG9tIHJlc291cmNlIHR5cGUgbmFtZSBjYW4gb25seSBpbmNsdWRlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZC8pO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgJ2lzIGxvbmdlciB0aGFuIDYwIGNoYXJhY3RlcnMnKHRlc3Q6IFRlc3QpIHtcbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgICB0ZXN0LnRocm93cygoKSA9PiB7XG4gICAgICAgIG5ldyBDdXN0b21SZXNvdXJjZShzdGFjaywgJ015Q3VzdG9tUmVzb3VyY2UnLCB7XG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjowMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkxJyxcbiAgICAgICAgICB0b3BpY1Byb3ZpZGVyOiBuZXcgc25zLlRvcGljKHN0YWNrLCAnUHJvdmlkZXInKVxuICAgICAgICB9KTtcbiAgICAgIH0sIC9DdXN0b20gcmVzb3VyY2UgdHlwZSBsZW5ndGggPiA2MC8pO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gIH0sXG59O1xuXG5jbGFzcyBUZXN0Q3VzdG9tUmVzb3VyY2UgZXh0ZW5kcyBjZGsuQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcpIHtcbiAgc3VwZXIocGFyZW50LCBuYW1lKTtcblxuICBjb25zdCBzaW5nbGV0b25MYW1iZGEgPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdMYW1iZGEnLCB7XG4gICAgdXVpZDogJ1Rlc3RDdXN0b21SZXNvdXJjZVByb3ZpZGVyJyxcbiAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoJ2RlZiBoZWxsbygpOiBwYXNzJyksXG4gICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUHl0aG9uMjcsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhlbGxvJyxcbiAgICB0aW1lb3V0OiAzMDAsXG4gIH0pO1xuXG4gIG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgbGFtYmRhUHJvdmlkZXI6IHNpbmdsZXRvbkxhbWJkYVxuICB9KTtcbiAgfVxufVxuIl19

Sorry, the diff of this file is not supported yet

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