@aws-cdk/aws-s3-assets
Advanced tools
Comparing version 1.11.0 to 1.12.0
@@ -5,4 +5,28 @@ import assets = require('@aws-cdk/assets'); | ||
import cdk = require('@aws-cdk/core'); | ||
export interface AssetProps extends assets.CopyOptions { | ||
export interface AssetOptions extends assets.CopyOptions { | ||
/** | ||
* A list of principals that should be able to read this asset from S3. | ||
* You can use `asset.grantRead(principal)` to grant read permissions later. | ||
* | ||
* @default - No principals that can read file asset. | ||
*/ | ||
readonly readers?: iam.IGrantable[]; | ||
/** | ||
* Custom source hash to use when identifying the specific version of the asset. | ||
* | ||
* NOTE: the source hash is used in order to identify a specific revision of the asset, | ||
* and used for optimizing and caching deployment activities related to this asset such as | ||
* packaging, uploading to Amazon S3, etc. If you chose to customize the source hash, | ||
* you will need to make sure it is updated every time the source changes, or otherwise | ||
* it is possible that some deployments will not be invalidated. | ||
* | ||
* @default - automatically calculate source hash based on the contents | ||
* of the source file or directory. | ||
* | ||
* @experimental | ||
*/ | ||
readonly sourceHash?: string; | ||
} | ||
export interface AssetProps extends AssetOptions { | ||
/** | ||
* The disk location of the asset. | ||
@@ -15,9 +39,2 @@ * | ||
readonly path: string; | ||
/** | ||
* A list of principals that should be able to read this asset from S3. | ||
* You can use `asset.grantRead(principal)` to grant read permissions later. | ||
* | ||
* @default - No principals that can read file asset. | ||
*/ | ||
readonly readers?: iam.IGrantable[]; | ||
} | ||
@@ -59,6 +76,2 @@ /** | ||
readonly sourceHash: string; | ||
/** | ||
* The S3 prefix where all different versions of this asset are stored | ||
*/ | ||
private readonly s3Prefix; | ||
constructor(scope: cdk.Construct, id: string, props: AssetProps); | ||
@@ -83,5 +96,5 @@ /** | ||
/** | ||
* Grants read permissions to the principal on the asset's S3 object. | ||
* Grants read permissions to the principal on the assets bucket. | ||
*/ | ||
grantRead(grantee: iam.IGrantable): void; | ||
} |
@@ -19,45 +19,19 @@ "use strict"; | ||
const staging = new assets.Staging(this, 'Stage', Object.assign(Object.assign({}, props), { sourcePath: path.resolve(props.path) })); | ||
this.sourceHash = staging.sourceHash; | ||
this.sourceHash = props.sourceHash || staging.sourceHash; | ||
this.assetPath = staging.stagedPath; | ||
const packaging = determinePackaging(staging.sourcePath); | ||
// sets isZipArchive based on the type of packaging and file extension | ||
this.isZipArchive = packaging === AssetPackaging.ZIP_DIRECTORY | ||
this.isZipArchive = packaging === cdk.FileAssetPackaging.ZIP_DIRECTORY | ||
? true | ||
: ARCHIVE_EXTENSIONS.some(ext => staging.sourcePath.toLowerCase().endsWith(ext)); | ||
// add parameters for s3 bucket and s3 key. those will be set by | ||
// the toolkit or by CI/CD when the stack is deployed and will include | ||
// the name of the bucket and the S3 key where the code lives. | ||
const bucketParam = new cdk.CfnParameter(this, 'S3Bucket', { | ||
type: 'String', | ||
description: `S3 bucket for asset "${this.node.path}"`, | ||
const stack = cdk.Stack.of(this); | ||
const location = stack.addFileAsset({ | ||
packaging, | ||
sourceHash: this.sourceHash, | ||
fileName: staging.stagedPath | ||
}); | ||
const keyParam = new cdk.CfnParameter(this, 'S3VersionKey', { | ||
type: 'String', | ||
description: `S3 key for asset version "${this.node.path}"` | ||
}); | ||
const hashParam = new cdk.CfnParameter(this, 'ArtifactHash', { | ||
description: `Artifact hash for asset "${this.node.path}"`, | ||
type: 'String', | ||
}); | ||
this.s3BucketName = bucketParam.valueAsString; | ||
this.s3Prefix = cdk.Fn.select(0, cdk.Fn.split(cxapi.ASSET_PREFIX_SEPARATOR, keyParam.valueAsString)).toString(); | ||
const s3Filename = cdk.Fn.select(1, cdk.Fn.split(cxapi.ASSET_PREFIX_SEPARATOR, keyParam.valueAsString)).toString(); | ||
this.s3ObjectKey = `${this.s3Prefix}${s3Filename}`; | ||
this.s3BucketName = location.bucketName; | ||
this.s3ObjectKey = location.objectKey; | ||
this.s3Url = location.s3Url; | ||
this.bucket = s3.Bucket.fromBucketName(this, 'AssetBucket', this.s3BucketName); | ||
// form the s3 URL of the object key | ||
this.s3Url = this.bucket.urlForObject(this.s3ObjectKey); | ||
// attach metadata to the lambda function which includes information | ||
// for tooling to be able to package and upload a directory to the | ||
// s3 bucket and plug in the bucket name and key in the correct | ||
// parameters. | ||
const asset = { | ||
path: this.assetPath, | ||
id: this.node.uniqueId, | ||
packaging, | ||
sourceHash: this.sourceHash, | ||
s3BucketParameter: bucketParam.logicalId, | ||
s3KeyParameter: keyParam.logicalId, | ||
artifactHashParameter: hashParam.logicalId, | ||
}; | ||
this.node.addMetadata(cxapi.ASSET_METADATA, asset); | ||
for (const reader of (props.readers || [])) { | ||
@@ -94,10 +68,9 @@ this.grantRead(reader); | ||
/** | ||
* Grants read permissions to the principal on the asset's S3 object. | ||
* Grants read permissions to the principal on the assets bucket. | ||
*/ | ||
grantRead(grantee) { | ||
// We give permissions on all files with the same prefix. Presumably | ||
// different versions of the same file will have the same prefix | ||
// and we don't want to accidentally revoke permission on old versions | ||
// when deploying a new version. | ||
this.bucket.grantRead(grantee, `${this.s3Prefix}*`); | ||
// we give permissions on all files in the bucket since we don't want to | ||
// accidentally revoke permission on old versions when deploying a new | ||
// version (for example, when using Lambda traffic shifting). | ||
this.bucket.grantRead(grantee); | ||
} | ||
@@ -111,24 +84,9 @@ } | ||
if (fs.statSync(assetPath).isDirectory()) { | ||
return AssetPackaging.ZIP_DIRECTORY; | ||
return cdk.FileAssetPackaging.ZIP_DIRECTORY; | ||
} | ||
if (fs.statSync(assetPath).isFile()) { | ||
return AssetPackaging.FILE; | ||
return cdk.FileAssetPackaging.FILE; | ||
} | ||
throw new Error(`Asset ${assetPath} is expected to be either a directory or a regular file`); | ||
} | ||
/** | ||
* Defines the way an asset is packaged before it is uploaded to S3. | ||
*/ | ||
var AssetPackaging; | ||
(function (AssetPackaging) { | ||
/** | ||
* Path refers to a directory on disk, the contents of the directory is | ||
* archived into a .zip. | ||
*/ | ||
AssetPackaging["ZIP_DIRECTORY"] = "zip"; | ||
/** | ||
* Path refers to a single file on disk. The file is uploaded as-is. | ||
*/ | ||
AssetPackaging["FILE"] = "file"; | ||
})(AssetPackaging || (AssetPackaging = {})); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhc3NldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBDQUEyQztBQUUzQyxzQ0FBdUM7QUFDdkMscUNBQXNDO0FBQ3RDLHlDQUEwQztBQUMxQyx5QkFBMEI7QUFDMUIsNkJBQThCO0FBRTlCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBRSxNQUFNLEVBQUUsTUFBTSxDQUFFLENBQUM7QUFxQjlDOzs7R0FHRztBQUNILE1BQWEsS0FBTSxTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBMkN0QyxZQUFZLEtBQW9CLEVBQUUsRUFBVSxFQUFFLEtBQWlCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMENBQTBDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxrQ0FDM0MsS0FBSyxLQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFDcEMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUVyQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFFcEMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpELHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsS0FBSyxjQUFjLENBQUMsYUFBYTtZQUM1RCxDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRW5GLGdFQUFnRTtRQUNoRSxzRUFBc0U7UUFDdEUsOERBQThE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QUMsRUFYSSxjQUFjLEtBQWQsY0FBYyxRQVdsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NldHMgPSByZXF1aXJlKCdAYXdzLWNkay9hc3NldHMnKTtcbmltcG9ydCBpYW0gPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtaWFtJyk7XG5pbXBvcnQgczMgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtczMnKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jb3JlJyk7XG5pbXBvcnQgY3hhcGkgPSByZXF1aXJlKCdAYXdzLWNkay9jeC1hcGknKTtcbmltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxuY29uc3QgQVJDSElWRV9FWFRFTlNJT05TID0gWyAnLnppcCcsICcuamFyJyBdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UHJvcHMgZXh0ZW5kcyBhc3NldHMuQ29weU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRpc2sgbG9jYXRpb24gb2YgdGhlIGFzc2V0LlxuICAgKlxuICAgKiBUaGUgcGF0aCBzaG91bGQgcmVmZXIgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6XG4gICAqIC0gQSByZWd1bGFyIGZpbGUgb3IgYSAuemlwIGZpbGUsIGluIHdoaWNoIGNhc2UgdGhlIGZpbGUgd2lsbCBiZSB1cGxvYWRlZCBhcy1pcyB0byBTMy5cbiAgICogLSBBIGRpcmVjdG9yeSwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGFyY2hpdmVkIGludG8gYSAuemlwIGZpbGUgYW5kIHVwbG9hZGVkIHRvIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcHJpbmNpcGFscyB0aGF0IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhpcyBhc3NldCBmcm9tIFMzLlxuICAgKiBZb3UgY2FuIHVzZSBgYXNzZXQuZ3JhbnRSZWFkKHByaW5jaXBhbClgIHRvIGdyYW50IHJlYWQgcGVybWlzc2lvbnMgbGF0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcHJpbmNpcGFscyB0aGF0IGNhbiByZWFkIGZpbGUgYXNzZXQuXG4gICAqL1xuICByZWFkb25seSByZWFkZXJzPzogaWFtLklHcmFudGFibGVbXTtcbn1cblxuLyoqXG4gKiBBbiBhc3NldCByZXByZXNlbnRzIGEgbG9jYWwgZmlsZSBvciBkaXJlY3RvcnksIHdoaWNoIGlzIGF1dG9tYXRpY2FsbHkgdXBsb2FkZWQgdG8gUzNcbiAqIGFuZCB0aGVuIGNhbiBiZSByZWZlcmVuY2VkIHdpdGhpbiBhIENESyBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2V0IGV4dGVuZHMgY2RrLkNvbnN0cnVjdCBpbXBsZW1lbnRzIGFzc2V0cy5JQXNzZXQge1xuICAvKipcbiAgICogQXR0cmlidXRlIHRoYXQgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiB0aGUgYnVja2V0IHRoaXMgYXNzZXQgZXhpc3RzIGluLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHMzQnVja2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgd2hpY2ggcmVwcmVzZW50cyB0aGUgUzMgb2JqZWN0IGtleSBvZiB0aGlzIGFzc2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHMzT2JqZWN0S2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSB3aGljaCByZXByZXNlbnRzIHRoZSBTMyBVUkwgb2YgdGhpcyBhc3NldC5cbiAgICogQGV4YW1wbGUgaHR0cHM6Ly9zMy51cy13ZXN0LTEuYW1hem9uYXdzLmNvbS9idWNrZXQva2V5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGFzc2V0IChzdHJpbmdpbmZpZWQgdG9rZW4pLlxuICAgKlxuICAgKiBJZiBhc3NldCBzdGFnaW5nIGlzIGRpc2FibGVkLCB0aGlzIHdpbGwganVzdCBiZSB0aGUgb3JpZ2luYWwgcGF0aC5cbiAgICogSWYgYXNzZXQgc3RhZ2luZyBpcyBlbmFibGVkIGl0IHdpbGwgYmUgdGhlIHN0YWdlZCBwYXRoLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFzc2V0UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgUzMgYnVja2V0IGluIHdoaWNoIHRoaXMgYXNzZXQgcmVzaWRlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGlzIGFzc2V0IGlzIGEgemlwIGFyY2hpdmUuIEFsbG93cyBjb25zdHJ1Y3RzIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAgKiBjb3JyZWN0IGZpbGUgdHlwZSB3YXMgdXNlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1ppcEFyY2hpdmU6IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFMzIHByZWZpeCB3aGVyZSBhbGwgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoaXMgYXNzZXQgYXJlIHN0b3JlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzM1ByZWZpeDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXNzZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBzdGFnZSB0aGUgYXNzZXQgc291cmNlIChjb25kaXRpb25hbGx5KS5cbiAgICBjb25zdCBzdGFnaW5nID0gbmV3IGFzc2V0cy5TdGFnaW5nKHRoaXMsICdTdGFnZScsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgc291cmNlUGF0aDogcGF0aC5yZXNvbHZlKHByb3BzLnBhdGgpLFxuICAgIH0pO1xuICAgIHRoaXMuc291cmNlSGFzaCA9IHN0YWdpbmcuc291cmNlSGFzaDtcblxuICAgIHRoaXMuYXNzZXRQYXRoID0gc3RhZ2luZy5zdGFnZWRQYXRoO1xuXG4gICAgY29uc3QgcGFja2FnaW5nID0gZGV0ZXJtaW5lUGFja2FnaW5nKHN0YWdpbmcuc291cmNlUGF0aCk7XG5cbiAgICAvLyBzZXRzIGlzWmlwQXJjaGl2ZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBwYWNrYWdpbmcgYW5kIGZpbGUgZXh0ZW5zaW9uXG4gICAgdGhpcy5pc1ppcEFyY2hpdmUgPSBwYWNrYWdpbmcgPT09IEFzc2V0UGFja2FnaW5nLlpJUF9ESVJFQ1RPUllcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBBUkNISVZFX0VYVEVOU0lPTlMuc29tZShleHQgPT4gc3RhZ2luZy5zb3VyY2VQYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZXh0KSk7XG5cbiAgICAvLyBhZGQgcGFyYW1ldGVycyBmb3IgczMgYnVja2V0IGFuZCBzMyBrZXkuIHRob3NlIHdpbGwgYmUgc2V0IGJ5XG4gICAgLy8gdGhlIHRvb2xraXQgb3IgYnkgQ0kvQ0Qgd2hlbiB0aGUgc3RhY2sgaXMgZGVwbG95ZWQgYW5kIHdpbGwgaW5jbHVkZVxuICAgIC8vIHRoZSBuYW1lIG9mIHRoZSBidWNrZXQgYW5kIHRoZSBTMyBrZXkgd2hlcmUgdGhlIGNvZGUgbGl2ZXMuXG5cbiAgICBjb25zdCBidWNrZXRQYXJhbSA9IG5ldyBjZGsuQ2ZuUGFyYW1ldGVyKHRoaXMsICdTM0J1Y2tldCcsIHtcbiAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgZGVzY3JpcHRpb246IGBTMyBidWNrZXQgZm9yIGFzc2V0IFwiJHt0aGlzLm5vZGUucGF0aH1cImAsXG4gICAgfSk7XG5cbiAgICBjb25zdCBrZXlQYXJhbSA9IG5ldyBjZGsuQ2ZuUGFyYW1ldGVyKHRoaXMsICdTM1ZlcnNpb25LZXknLCB7XG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBgUzMga2V5IGZvciBhc3NldCB2ZXJzaW9uIFwiJHt0aGlzLm5vZGUucGF0aH1cImBcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhc2hQYXJhbSA9IG5ldyBjZGsuQ2ZuUGFyYW1ldGVyKHRoaXMsICdBcnRpZmFjdEhhc2gnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYEFydGlmYWN0IGhhc2ggZm9yIGFzc2V0IFwiJHt0aGlzLm5vZGUucGF0aH1cImAsXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9KTtcblxuICAgIHRoaXMuczNCdWNrZXROYW1lID0gYnVja2V0UGFyYW0udmFsdWVBc1N0cmluZztcbiAgICB0aGlzLnMzUHJlZml4ID0gY2RrLkZuLnNlbGVjdCgwLCBjZGsuRm4uc3BsaXQoY3hhcGkuQVNTRVRfUFJFRklYX1NFUEFSQVRPUiwga2V5UGFyYW0udmFsdWVBc1N0cmluZykpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgczNGaWxlbmFtZSA9IGNkay5Gbi5zZWxlY3QoMSwgY2RrLkZuLnNwbGl0KGN4YXBpLkFTU0VUX1BSRUZJWF9TRVBBUkFUT1IsIGtleVBhcmFtLnZhbHVlQXNTdHJpbmcpKS50b1N0cmluZygpO1xuICAgIHRoaXMuczNPYmplY3RLZXkgPSBgJHt0aGlzLnMzUHJlZml4fSR7czNGaWxlbmFtZX1gO1xuXG4gICAgdGhpcy5idWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUodGhpcywgJ0Fzc2V0QnVja2V0JywgdGhpcy5zM0J1Y2tldE5hbWUpO1xuXG4gICAgLy8gZm9ybSB0aGUgczMgVVJMIG9mIHRoZSBvYmplY3Qga2V5XG4gICAgdGhpcy5zM1VybCA9IHRoaXMuYnVja2V0LnVybEZvck9iamVjdCh0aGlzLnMzT2JqZWN0S2V5KTtcblxuICAgIC8vIGF0dGFjaCBtZXRhZGF0YSB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGluY2x1ZGVzIGluZm9ybWF0aW9uXG4gICAgLy8gZm9yIHRvb2xpbmcgdG8gYmUgYWJsZSB0byBwYWNrYWdlIGFuZCB1cGxvYWQgYSBkaXJlY3RvcnkgdG8gdGhlXG4gICAgLy8gczMgYnVja2V0IGFuZCBwbHVnIGluIHRoZSBidWNrZXQgbmFtZSBhbmQga2V5IGluIHRoZSBjb3JyZWN0XG4gICAgLy8gcGFyYW1ldGVycy5cbiAgICBjb25zdCBhc3NldDogY3hhcGkuRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSA9IHtcbiAgICAgIHBhdGg6IHRoaXMuYXNzZXRQYXRoLFxuICAgICAgaWQ6IHRoaXMubm9kZS51bmlxdWVJZCxcbiAgICAgIHBhY2thZ2luZyxcbiAgICAgIHNvdXJjZUhhc2g6IHRoaXMuc291cmNlSGFzaCxcblxuICAgICAgczNCdWNrZXRQYXJhbWV0ZXI6IGJ1Y2tldFBhcmFtLmxvZ2ljYWxJZCxcbiAgICAgIHMzS2V5UGFyYW1ldGVyOiBrZXlQYXJhbS5sb2dpY2FsSWQsXG4gICAgICBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6IGhhc2hQYXJhbS5sb2dpY2FsSWQsXG4gICAgfTtcblxuICAgIHRoaXMubm9kZS5hZGRNZXRhZGF0YShjeGFwaS5BU1NFVF9NRVRBREFUQSwgYXNzZXQpO1xuXG4gICAgZm9yIChjb25zdCByZWFkZXIgb2YgKHByb3BzLnJlYWRlcnMgfHwgW10pKSB7XG4gICAgICB0aGlzLmdyYW50UmVhZChyZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIG1ldGFkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2Ugd2l0aFxuICAgKiBpbmZvcm1hdGlvbiB0aGF0IGluZGljYXRlcyB3aGljaCByZXNvdXJjZSBwcm9wZXJ0eSBpcyBtYXBwZWQgdG8gdGhpcyBsb2NhbFxuICAgKiBhc3NldC4gVGhpcyBjYW4gYmUgdXNlZCBieSB0b29scyBzdWNoIGFzIFNBTSBDTEkgdG8gcHJvdmlkZSBsb2NhbFxuICAgKiBleHBlcmllbmNlIHN1Y2ggYXMgbG9jYWwgaW52b2NhdGlvbiBhbmQgZGVidWdnaW5nIG9mIExhbWJkYSBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEFzc2V0IG1ldGFkYXRhIHdpbGwgb25seSBiZSBpbmNsdWRlZCBpZiB0aGUgc3RhY2sgaXMgc3ludGhlc2l6ZWQgd2l0aCB0aGVcbiAgICogXCJhd3M6Y2RrOmVuYWJsZS1hc3NldC1tZXRhZGF0YVwiIGNvbnRleHQga2V5IGRlZmluZWQsIHdoaWNoIGlzIHRoZSBkZWZhdWx0XG4gICAqIGJlaGF2aW9yIHdoZW4gc3ludGhlc2l6aW5nIHZpYSB0aGUgQ0RLIFRvb2xraXQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xNDMyXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZSBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2Ugd2hpY2ggaXMgdXNpbmcgdGhpcyBhc3NldCBbZGlzYWJsZS1hd3NsaW50OnJlZi12aWEtaW50ZXJmYWNlXVxuICAgKiBAcGFyYW0gcmVzb3VyY2VQcm9wZXJ0eSBUaGUgcHJvcGVydHkgbmFtZSB3aGVyZSB0aGlzIGFzc2V0IGlzIHJlZmVyZW5jZWRcbiAgICogKGUuZy4gXCJDb2RlXCIgZm9yIEFXUzo6TGFtYmRhOjpGdW5jdGlvbilcbiAgICovXG4gIHB1YmxpYyBhZGRSZXNvdXJjZU1ldGFkYXRhKHJlc291cmNlOiBjZGsuQ2ZuUmVzb3VyY2UsIHJlc291cmNlUHJvcGVydHk6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5ub2RlLnRyeUdldENvbnRleHQoY3hhcGkuQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRU5BQkxFRF9DT05URVhUKSkge1xuICAgICAgcmV0dXJuOyAvLyBub3QgZW5hYmxlZFxuICAgIH1cblxuICAgIC8vIHRlbGwgdG9vbHMgc3VjaCBhcyBTQU0gQ0xJIHRoYXQgdGhlIFwiQ29kZVwiIHByb3BlcnR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICAvLyBwb2ludHMgdG8gYSBsb2NhbCBwYXRoIGluIG9yZGVyIHRvIGVuYWJsZSBsb2NhbCBpbnZvY2F0aW9uIG9mIHRoaXMgZnVuY3Rpb24uXG4gICAgcmVzb3VyY2UuY2ZuT3B0aW9ucy5tZXRhZGF0YSA9IHJlc291cmNlLmNmbk9wdGlvbnMubWV0YWRhdGEgfHwgeyB9O1xuICAgIHJlc291cmNlLmNmbk9wdGlvbnMubWV0YWRhdGFbY3hhcGkuQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfUEFUSF9LRVldID0gdGhpcy5hc3NldFBhdGg7XG4gICAgcmVzb3VyY2UuY2ZuT3B0aW9ucy5tZXRhZGF0YVtjeGFwaS5BU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9QUk9QRVJUWV9LRVldID0gcmVzb3VyY2VQcm9wZXJ0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgcHJpbmNpcGFsIG9uIHRoZSBhc3NldCdzIFMzIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpIHtcbiAgICAvLyBXZSBnaXZlIHBlcm1pc3Npb25zIG9uIGFsbCBmaWxlcyB3aXRoIHRoZSBzYW1lIHByZWZpeC4gUHJlc3VtYWJseVxuICAgIC8vIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBmaWxlIHdpbGwgaGF2ZSB0aGUgc2FtZSBwcmVmaXhcbiAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBhY2NpZGVudGFsbHkgcmV2b2tlIHBlcm1pc3Npb24gb24gb2xkIHZlcnNpb25zXG4gICAgLy8gd2hlbiBkZXBsb3lpbmcgYSBuZXcgdmVyc2lvbi5cbiAgICB0aGlzLmJ1Y2tldC5ncmFudFJlYWQoZ3JhbnRlZSwgYCR7dGhpcy5zM1ByZWZpeH0qYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGV0ZXJtaW5lUGFja2FnaW5nKGFzc2V0UGF0aDogc3RyaW5nKTogQXNzZXRQYWNrYWdpbmcge1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoYXNzZXRQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYXNzZXQgYXQgJHthc3NldFBhdGh9YCk7XG4gIH1cblxuICBpZiAoZnMuc3RhdFN5bmMoYXNzZXRQYXRoKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgcmV0dXJuIEFzc2V0UGFja2FnaW5nLlpJUF9ESVJFQ1RPUlk7XG4gIH1cblxuICBpZiAoZnMuc3RhdFN5bmMoYXNzZXRQYXRoKS5pc0ZpbGUoKSkge1xuICAgIHJldHVybiBBc3NldFBhY2thZ2luZy5GSUxFO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBBc3NldCAke2Fzc2V0UGF0aH0gaXMgZXhwZWN0ZWQgdG8gYmUgZWl0aGVyIGEgZGlyZWN0b3J5IG9yIGEgcmVndWxhciBmaWxlYCk7XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgd2F5IGFuIGFzc2V0IGlzIHBhY2thZ2VkIGJlZm9yZSBpdCBpcyB1cGxvYWRlZCB0byBTMy5cbiAqL1xuZW51bSBBc3NldFBhY2thZ2luZyB7XG4gIC8qKlxuICAgKiBQYXRoIHJlZmVycyB0byBhIGRpcmVjdG9yeSBvbiBkaXNrLCB0aGUgY29udGVudHMgb2YgdGhlIGRpcmVjdG9yeSBpc1xuICAgKiBhcmNoaXZlZCBpbnRvIGEgLnppcC5cbiAgICovXG4gIFpJUF9ESVJFQ1RPUlkgPSAnemlwJyxcblxuICAvKipcbiAgICogUGF0aCByZWZlcnMgdG8gYSBzaW5nbGUgZmlsZSBvbiBkaXNrLiBUaGUgZmlsZSBpcyB1cGxvYWRlZCBhcy1pcy5cbiAgICovXG4gIEZJTEUgPSAnZmlsZScsXG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhc3NldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBDQUEyQztBQUUzQyxzQ0FBdUM7QUFDdkMscUNBQXNDO0FBQ3RDLHlDQUEwQztBQUMxQyx5QkFBMEI7QUFDMUIsNkJBQThCO0FBRTlCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBRSxNQUFNLEVBQUUsTUFBTSxDQUFFLENBQUM7QUF3QzlDOzs7R0FHRztBQUNILE1BQWEsS0FBTSxTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBc0N0QyxZQUFZLEtBQW9CLEVBQUUsRUFBVSxFQUFFLEtBQWlCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMENBQTBDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxrQ0FDM0MsS0FBSyxLQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFDcEMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDO1FBRXpELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUVwQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekQsc0VBQXNFO1FBQ3RFLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxLQUFLLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhO1lBQ3BFLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbkYsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUNsQyxTQUFTO1lBQ1QsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVTtTQUM3QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9FLEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0ksbUJBQW1CLENBQUMsUUFBeUIsRUFBRSxnQkFBd0I7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFO1lBQzNFLE9BQU8sQ0FBQyxjQUFjO1NBQ3ZCO1FBRUQsdUVBQXVFO1FBQ3ZFLCtFQUErRTtRQUMvRSxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxFQUFHLENBQUM7UUFDbkUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN0RixRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztJQUM5RixDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsT0FBdUI7UUFDdEMsd0VBQXdFO1FBQ3hFLHNFQUFzRTtRQUN0RSw2REFBNkQ7UUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBbEhELHNCQWtIQztBQUVELFNBQVMsa0JBQWtCLENBQUMsU0FBaUI7SUFDM0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsU0FBUyxFQUFFLENBQUMsQ0FBQztLQUN0RDtJQUVELElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUN4QyxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7S0FDN0M7SUFFRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDbkMsT0FBTyxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO0tBQ3BDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLFNBQVMseURBQXlELENBQUMsQ0FBQztBQUMvRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2V0cyA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2Fzc2V0cycpO1xuaW1wb3J0IGlhbSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1pYW0nKTtcbmltcG9ydCBzMyA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1zMycpO1xuaW1wb3J0IGNkayA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2NvcmUnKTtcbmltcG9ydCBjeGFwaSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2N4LWFwaScpO1xuaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmltcG9ydCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5jb25zdCBBUkNISVZFX0VYVEVOU0lPTlMgPSBbICcuemlwJywgJy5qYXInIF07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRPcHRpb25zIGV4dGVuZHMgYXNzZXRzLkNvcHlPcHRpb25zIHtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHByaW5jaXBhbHMgdGhhdCBzaG91bGQgYmUgYWJsZSB0byByZWFkIHRoaXMgYXNzZXQgZnJvbSBTMy5cbiAgICogWW91IGNhbiB1c2UgYGFzc2V0LmdyYW50UmVhZChwcmluY2lwYWwpYCB0byBncmFudCByZWFkIHBlcm1pc3Npb25zIGxhdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHByaW5jaXBhbHMgdGhhdCBjYW4gcmVhZCBmaWxlIGFzc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZGVycz86IGlhbS5JR3JhbnRhYmxlW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzb3VyY2UgaGFzaCB0byB1c2Ugd2hlbiBpZGVudGlmeWluZyB0aGUgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgYXNzZXQuXG4gICAqXG4gICAqIE5PVEU6IHRoZSBzb3VyY2UgaGFzaCBpcyB1c2VkIGluIG9yZGVyIHRvIGlkZW50aWZ5IGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0LFxuICAgKiBhbmQgdXNlZCBmb3Igb3B0aW1pemluZyBhbmQgY2FjaGluZyBkZXBsb3ltZW50IGFjdGl2aXRpZXMgcmVsYXRlZCB0byB0aGlzIGFzc2V0IHN1Y2ggYXNcbiAgICogcGFja2FnaW5nLCB1cGxvYWRpbmcgdG8gQW1hem9uIFMzLCBldGMuIElmIHlvdSBjaG9zZSB0byBjdXN0b21pemUgdGhlIHNvdXJjZSBoYXNoLFxuICAgKiB5b3Ugd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBpcyB1cGRhdGVkIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSBjaGFuZ2VzLCBvciBvdGhlcndpc2VcbiAgICogaXQgaXMgcG9zc2libGUgdGhhdCBzb21lIGRlcGxveW1lbnRzIHdpbGwgbm90IGJlIGludmFsaWRhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlIHNvdXJjZSBoYXNoIGJhc2VkIG9uIHRoZSBjb250ZW50c1xuICAgKiBvZiB0aGUgc291cmNlIGZpbGUgb3IgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VIYXNoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UHJvcHMgZXh0ZW5kcyBBc3NldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRpc2sgbG9jYXRpb24gb2YgdGhlIGFzc2V0LlxuICAgKlxuICAgKiBUaGUgcGF0aCBzaG91bGQgcmVmZXIgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6XG4gICAqIC0gQSByZWd1bGFyIGZpbGUgb3IgYSAuemlwIGZpbGUsIGluIHdoaWNoIGNhc2UgdGhlIGZpbGUgd2lsbCBiZSB1cGxvYWRlZCBhcy1pcyB0byBTMy5cbiAgICogLSBBIGRpcmVjdG9yeSwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGFyY2hpdmVkIGludG8gYSAuemlwIGZpbGUgYW5kIHVwbG9hZGVkIHRvIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGFzc2V0IHJlcHJlc2VudHMgYSBsb2NhbCBmaWxlIG9yIGRpcmVjdG9yeSwgd2hpY2ggaXMgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byBTM1xuICogYW5kIHRoZW4gY2FuIGJlIHJlZmVyZW5jZWQgd2l0aGluIGEgQ0RLIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQXNzZXQgZXh0ZW5kcyBjZGsuQ29uc3RydWN0IGltcGxlbWVudHMgYXNzZXRzLklBc3NldCB7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgdGhhdCByZXByZXNlbnRzIHRoZSBuYW1lIG9mIHRoZSBidWNrZXQgdGhpcyBhc3NldCBleGlzdHMgaW4uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSB3aGljaCByZXByZXNlbnRzIHRoZSBTMyBvYmplY3Qga2V5IG9mIHRoaXMgYXNzZXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNPYmplY3RLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogQXR0cmlidXRlIHdoaWNoIHJlcHJlc2VudHMgdGhlIFMzIFVSTCBvZiB0aGlzIGFzc2V0LlxuICAgKiBAZXhhbXBsZSBodHRwczovL3MzLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tL2J1Y2tldC9rZXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzM1VybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgYXNzZXQgKHN0cmluZ2luZmllZCB0b2tlbikuXG4gICAqXG4gICAqIElmIGFzc2V0IHN0YWdpbmcgaXMgZGlzYWJsZWQsIHRoaXMgd2lsbCBqdXN0IGJlIHRoZSBvcmlnaW5hbCBwYXRoLlxuICAgKiBJZiBhc3NldCBzdGFnaW5nIGlzIGVuYWJsZWQgaXQgd2lsbCBiZSB0aGUgc3RhZ2VkIHBhdGguXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzZXRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBTMyBidWNrZXQgaW4gd2hpY2ggdGhpcyBhc3NldCByZXNpZGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1Y2tldDogczMuSUJ1Y2tldDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoaXMgYXNzZXQgaXMgYSB6aXAgYXJjaGl2ZS4gQWxsb3dzIGNvbnN0cnVjdHMgdG8gZW5zdXJlIHRoYXQgdGhlXG4gICAqIGNvcnJlY3QgZmlsZSB0eXBlIHdhcyB1c2VkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzWmlwQXJjaGl2ZTogYm9vbGVhbjtcblxuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlSGFzaDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXNzZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBzdGFnZSB0aGUgYXNzZXQgc291cmNlIChjb25kaXRpb25hbGx5KS5cbiAgICBjb25zdCBzdGFnaW5nID0gbmV3IGFzc2V0cy5TdGFnaW5nKHRoaXMsICdTdGFnZScsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgc291cmNlUGF0aDogcGF0aC5yZXNvbHZlKHByb3BzLnBhdGgpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zb3VyY2VIYXNoID0gcHJvcHMuc291cmNlSGFzaCB8fCBzdGFnaW5nLnNvdXJjZUhhc2g7XG5cbiAgICB0aGlzLmFzc2V0UGF0aCA9IHN0YWdpbmcuc3RhZ2VkUGF0aDtcblxuICAgIGNvbnN0IHBhY2thZ2luZyA9IGRldGVybWluZVBhY2thZ2luZyhzdGFnaW5nLnNvdXJjZVBhdGgpO1xuXG4gICAgLy8gc2V0cyBpc1ppcEFyY2hpdmUgYmFzZWQgb24gdGhlIHR5cGUgb2YgcGFja2FnaW5nIGFuZCBmaWxlIGV4dGVuc2lvblxuICAgIHRoaXMuaXNaaXBBcmNoaXZlID0gcGFja2FnaW5nID09PSBjZGsuRmlsZUFzc2V0UGFja2FnaW5nLlpJUF9ESVJFQ1RPUllcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBBUkNISVZFX0VYVEVOU0lPTlMuc29tZShleHQgPT4gc3RhZ2luZy5zb3VyY2VQYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZXh0KSk7XG5cbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZih0aGlzKTtcblxuICAgIGNvbnN0IGxvY2F0aW9uID0gc3RhY2suYWRkRmlsZUFzc2V0KHtcbiAgICAgIHBhY2thZ2luZyxcbiAgICAgIHNvdXJjZUhhc2g6IHRoaXMuc291cmNlSGFzaCxcbiAgICAgIGZpbGVOYW1lOiBzdGFnaW5nLnN0YWdlZFBhdGhcbiAgICB9KTtcblxuICAgIHRoaXMuczNCdWNrZXROYW1lID0gbG9jYXRpb24uYnVja2V0TmFtZTtcbiAgICB0aGlzLnMzT2JqZWN0S2V5ID0gbG9jYXRpb24ub2JqZWN0S2V5O1xuICAgIHRoaXMuczNVcmwgPSBsb2NhdGlvbi5zM1VybDtcblxuICAgIHRoaXMuYnVja2V0ID0gczMuQnVja2V0LmZyb21CdWNrZXROYW1lKHRoaXMsICdBc3NldEJ1Y2tldCcsIHRoaXMuczNCdWNrZXROYW1lKTtcblxuICAgIGZvciAoY29uc3QgcmVhZGVyIG9mIChwcm9wcy5yZWFkZXJzIHx8IFtdKSkge1xuICAgICAgdGhpcy5ncmFudFJlYWQocmVhZGVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSBtZXRhZGF0YSB0byB0aGUgc3BlY2lmaWVkIHJlc291cmNlIHdpdGhcbiAgICogaW5mb3JtYXRpb24gdGhhdCBpbmRpY2F0ZXMgd2hpY2ggcmVzb3VyY2UgcHJvcGVydHkgaXMgbWFwcGVkIHRvIHRoaXMgbG9jYWxcbiAgICogYXNzZXQuIFRoaXMgY2FuIGJlIHVzZWQgYnkgdG9vbHMgc3VjaCBhcyBTQU0gQ0xJIHRvIHByb3ZpZGUgbG9jYWxcbiAgICogZXhwZXJpZW5jZSBzdWNoIGFzIGxvY2FsIGludm9jYXRpb24gYW5kIGRlYnVnZ2luZyBvZiBMYW1iZGEgZnVuY3Rpb25zLlxuICAgKlxuICAgKiBBc3NldCBtZXRhZGF0YSB3aWxsIG9ubHkgYmUgaW5jbHVkZWQgaWYgdGhlIHN0YWNrIGlzIHN5bnRoZXNpemVkIHdpdGggdGhlXG4gICAqIFwiYXdzOmNkazplbmFibGUtYXNzZXQtbWV0YWRhdGFcIiBjb250ZXh0IGtleSBkZWZpbmVkLCB3aGljaCBpcyB0aGUgZGVmYXVsdFxuICAgKiBiZWhhdmlvciB3aGVuIHN5bnRoZXNpemluZyB2aWEgdGhlIENESyBUb29sa2l0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMTQzMlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2UgVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHdoaWNoIGlzIHVzaW5nIHRoaXMgYXNzZXQgW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV1cbiAgICogQHBhcmFtIHJlc291cmNlUHJvcGVydHkgVGhlIHByb3BlcnR5IG5hbWUgd2hlcmUgdGhpcyBhc3NldCBpcyByZWZlcmVuY2VkXG4gICAqIChlLmcuIFwiQ29kZVwiIGZvciBBV1M6OkxhbWJkYTo6RnVuY3Rpb24pXG4gICAqL1xuICBwdWJsaWMgYWRkUmVzb3VyY2VNZXRhZGF0YShyZXNvdXJjZTogY2RrLkNmblJlc291cmNlLCByZXNvdXJjZVByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMubm9kZS50cnlHZXRDb250ZXh0KGN4YXBpLkFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0VOQUJMRURfQ09OVEVYVCkpIHtcbiAgICAgIHJldHVybjsgLy8gbm90IGVuYWJsZWRcbiAgICB9XG5cbiAgICAvLyB0ZWxsIHRvb2xzIHN1Y2ggYXMgU0FNIENMSSB0aGF0IHRoZSBcIkNvZGVcIiBwcm9wZXJ0eSBvZiB0aGlzIHJlc291cmNlXG4gICAgLy8gcG9pbnRzIHRvIGEgbG9jYWwgcGF0aCBpbiBvcmRlciB0byBlbmFibGUgbG9jYWwgaW52b2NhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLlxuICAgIHJlc291cmNlLmNmbk9wdGlvbnMubWV0YWRhdGEgPSByZXNvdXJjZS5jZm5PcHRpb25zLm1ldGFkYXRhIHx8IHsgfTtcbiAgICByZXNvdXJjZS5jZm5PcHRpb25zLm1ldGFkYXRhW2N4YXBpLkFTU0VUX1JFU09VUkNFX01FVEFEQVRBX1BBVEhfS0VZXSA9IHRoaXMuYXNzZXRQYXRoO1xuICAgIHJlc291cmNlLmNmbk9wdGlvbnMubWV0YWRhdGFbY3hhcGkuQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfUFJPUEVSVFlfS0VZXSA9IHJlc291cmNlUHJvcGVydHk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIHByaW5jaXBhbCBvbiB0aGUgYXNzZXRzIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpIHtcbiAgICAvLyB3ZSBnaXZlIHBlcm1pc3Npb25zIG9uIGFsbCBmaWxlcyBpbiB0aGUgYnVja2V0IHNpbmNlIHdlIGRvbid0IHdhbnQgdG9cbiAgICAvLyBhY2NpZGVudGFsbHkgcmV2b2tlIHBlcm1pc3Npb24gb24gb2xkIHZlcnNpb25zIHdoZW4gZGVwbG95aW5nIGEgbmV3XG4gICAgLy8gdmVyc2lvbiAoZm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgTGFtYmRhIHRyYWZmaWMgc2hpZnRpbmcpLlxuICAgIHRoaXMuYnVja2V0LmdyYW50UmVhZChncmFudGVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXRlcm1pbmVQYWNrYWdpbmcoYXNzZXRQYXRoOiBzdHJpbmcpOiBjZGsuRmlsZUFzc2V0UGFja2FnaW5nIHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGFzc2V0UGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGFzc2V0IGF0ICR7YXNzZXRQYXRofWApO1xuICB9XG5cbiAgaWYgKGZzLnN0YXRTeW5jKGFzc2V0UGF0aCkuaXNEaXJlY3RvcnkoKSkge1xuICAgIHJldHVybiBjZGsuRmlsZUFzc2V0UGFja2FnaW5nLlpJUF9ESVJFQ1RPUlk7XG4gIH1cblxuICBpZiAoZnMuc3RhdFN5bmMoYXNzZXRQYXRoKS5pc0ZpbGUoKSkge1xuICAgIHJldHVybiBjZGsuRmlsZUFzc2V0UGFja2FnaW5nLkZJTEU7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYEFzc2V0ICR7YXNzZXRQYXRofSBpcyBleHBlY3RlZCB0byBiZSBlaXRoZXIgYSBkaXJlY3Rvcnkgb3IgYSByZWd1bGFyIGZpbGVgKTtcbn1cbiJdfQ== |
{ | ||
"name": "@aws-cdk/aws-s3-assets", | ||
"version": "1.11.0", | ||
"version": "1.12.0", | ||
"description": "Deploy local files and directories to S3", | ||
@@ -63,5 +63,5 @@ "main": "lib/index.js", | ||
"devDependencies": { | ||
"@aws-cdk/assert": "^1.11.0", | ||
"@aws-cdk/assert": "^1.12.0", | ||
"@types/sinon": "^7.5.0", | ||
"aws-cdk": "^1.11.0", | ||
"aws-cdk": "^1.12.0", | ||
"cdk-build-tools": "file:../../../tools/cdk-build-tools", | ||
@@ -74,15 +74,15 @@ "cdk-integ-tools": "file:../../../tools/cdk-integ-tools", | ||
"dependencies": { | ||
"@aws-cdk/assets": "^1.11.0", | ||
"@aws-cdk/aws-iam": "^1.11.0", | ||
"@aws-cdk/aws-s3": "^1.11.0", | ||
"@aws-cdk/core": "^1.11.0", | ||
"@aws-cdk/cx-api": "^1.11.0" | ||
"@aws-cdk/assets": "^1.12.0", | ||
"@aws-cdk/aws-iam": "^1.12.0", | ||
"@aws-cdk/aws-s3": "^1.12.0", | ||
"@aws-cdk/core": "^1.12.0", | ||
"@aws-cdk/cx-api": "^1.12.0" | ||
}, | ||
"homepage": "https://github.com/aws/aws-cdk", | ||
"peerDependencies": { | ||
"@aws-cdk/assets": "^1.11.0", | ||
"@aws-cdk/aws-iam": "^1.11.0", | ||
"@aws-cdk/aws-s3": "^1.11.0", | ||
"@aws-cdk/core": "^1.11.0", | ||
"@aws-cdk/cx-api": "^1.11.0" | ||
"@aws-cdk/assets": "^1.12.0", | ||
"@aws-cdk/aws-iam": "^1.12.0", | ||
"@aws-cdk/aws-s3": "^1.12.0", | ||
"@aws-cdk/core": "^1.12.0", | ||
"@aws-cdk/cx-api": "^1.12.0" | ||
}, | ||
@@ -89,0 +89,0 @@ "engines": { |
{ | ||
"Parameters": { | ||
"SampleAssetS3BucketE6B2908E": { | ||
"AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B": { | ||
"Type": "String", | ||
"Description": "S3 bucket for asset \"aws-cdk-asset-test/SampleAsset\"" | ||
"Description": "S3 bucket for asset \"6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2\"" | ||
}, | ||
"SampleAssetS3VersionKey3E106D34": { | ||
"AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9": { | ||
"Type": "String", | ||
"Description": "S3 key for asset version \"aws-cdk-asset-test/SampleAsset\"" | ||
"Description": "S3 key for asset version \"6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2\"" | ||
}, | ||
"SampleAssetArtifactHashE80944C9": { | ||
"AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2ArtifactHash220DE9BD": { | ||
"Type": "String", | ||
"Description": "Artifact hash for asset \"aws-cdk-asset-test/SampleAsset\"" | ||
"Description": "Artifact hash for asset \"6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2\"" | ||
} | ||
@@ -43,3 +43,3 @@ }, | ||
{ | ||
"Ref": "SampleAssetS3BucketE6B2908E" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B" | ||
} | ||
@@ -59,19 +59,5 @@ ] | ||
{ | ||
"Ref": "SampleAssetS3BucketE6B2908E" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B" | ||
}, | ||
"/", | ||
{ | ||
"Fn::Select": [ | ||
0, | ||
{ | ||
"Fn::Split": [ | ||
"||", | ||
{ | ||
"Ref": "SampleAssetS3VersionKey3E106D34" | ||
} | ||
] | ||
} | ||
] | ||
}, | ||
"*" | ||
"/*" | ||
] | ||
@@ -78,0 +64,0 @@ ] |
{ | ||
"Parameters": { | ||
"SampleAssetS3BucketE6B2908E": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A": { | ||
"Type": "String", | ||
"Description": "S3 bucket for asset \"aws-cdk-asset-file-test/SampleAsset\"" | ||
"Description": "S3 bucket for asset \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
}, | ||
"SampleAssetS3VersionKey3E106D34": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3VersionKey9482DC35": { | ||
"Type": "String", | ||
"Description": "S3 key for asset version \"aws-cdk-asset-file-test/SampleAsset\"" | ||
"Description": "S3 key for asset version \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
}, | ||
"SampleAssetArtifactHashE80944C9": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197ArtifactHash22BFFA67": { | ||
"Type": "String", | ||
"Description": "Artifact hash for asset \"aws-cdk-asset-file-test/SampleAsset\"" | ||
"Description": "Artifact hash for asset \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
} | ||
@@ -43,3 +43,3 @@ }, | ||
{ | ||
"Ref": "SampleAssetS3BucketE6B2908E" | ||
"Ref": "AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A" | ||
} | ||
@@ -59,19 +59,5 @@ ] | ||
{ | ||
"Ref": "SampleAssetS3BucketE6B2908E" | ||
"Ref": "AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A" | ||
}, | ||
"/", | ||
{ | ||
"Fn::Select": [ | ||
0, | ||
{ | ||
"Fn::Split": [ | ||
"||", | ||
{ | ||
"Ref": "SampleAssetS3VersionKey3E106D34" | ||
} | ||
] | ||
} | ||
] | ||
}, | ||
"*" | ||
"/*" | ||
] | ||
@@ -78,0 +64,0 @@ ] |
{ | ||
"Parameters": { | ||
"MyFileS3BucketACE13C36": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A": { | ||
"Type": "String", | ||
"Description": "S3 bucket for asset \"aws-cdk-asset-refs/MyFile\"" | ||
"Description": "S3 bucket for asset \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
}, | ||
"MyFileS3VersionKey568C3C9F": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3VersionKey9482DC35": { | ||
"Type": "String", | ||
"Description": "S3 key for asset version \"aws-cdk-asset-refs/MyFile\"" | ||
"Description": "S3 key for asset version \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
}, | ||
"MyFileArtifactHashAB5F44E1": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197ArtifactHash22BFFA67": { | ||
"Type": "String", | ||
"Description": "Artifact hash for asset \"aws-cdk-asset-refs/MyFile\"" | ||
"Description": "Artifact hash for asset \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
} | ||
@@ -43,3 +43,3 @@ }, | ||
{ | ||
"Ref": "MyFileS3BucketACE13C36" | ||
"Ref": "AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A" | ||
} | ||
@@ -59,19 +59,5 @@ ] | ||
{ | ||
"Ref": "MyFileS3BucketACE13C36" | ||
"Ref": "AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A" | ||
}, | ||
"/", | ||
{ | ||
"Fn::Select": [ | ||
0, | ||
{ | ||
"Fn::Split": [ | ||
"||", | ||
{ | ||
"Ref": "MyFileS3VersionKey568C3C9F" | ||
} | ||
] | ||
} | ||
] | ||
}, | ||
"*" | ||
"/*" | ||
] | ||
@@ -78,0 +64,0 @@ ] |
{ | ||
"Parameters": { | ||
"SampleAssetS3BucketE6B2908E": { | ||
"AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B": { | ||
"Type": "String", | ||
"Description": "S3 bucket for asset \"aws-cdk-asset-refs/SampleAsset\"" | ||
"Description": "S3 bucket for asset \"6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2\"" | ||
}, | ||
"SampleAssetS3VersionKey3E106D34": { | ||
"AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9": { | ||
"Type": "String", | ||
"Description": "S3 key for asset version \"aws-cdk-asset-refs/SampleAsset\"" | ||
"Description": "S3 key for asset version \"6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2\"" | ||
}, | ||
"SampleAssetArtifactHashE80944C9": { | ||
"AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2ArtifactHash220DE9BD": { | ||
"Type": "String", | ||
"Description": "Artifact hash for asset \"aws-cdk-asset-refs/SampleAsset\"" | ||
"Description": "Artifact hash for asset \"6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2\"" | ||
} | ||
@@ -19,3 +19,3 @@ }, | ||
"Value": { | ||
"Ref": "SampleAssetS3BucketE6B2908E" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B" | ||
} | ||
@@ -35,3 +35,3 @@ }, | ||
{ | ||
"Ref": "SampleAssetS3VersionKey3E106D34" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9" | ||
} | ||
@@ -49,3 +49,3 @@ ] | ||
{ | ||
"Ref": "SampleAssetS3VersionKey3E106D34" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9" | ||
} | ||
@@ -75,3 +75,3 @@ ] | ||
{ | ||
"Ref": "SampleAssetS3BucketE6B2908E" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B" | ||
}, | ||
@@ -86,3 +86,3 @@ "/", | ||
{ | ||
"Ref": "SampleAssetS3VersionKey3E106D34" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9" | ||
} | ||
@@ -100,3 +100,3 @@ ] | ||
{ | ||
"Ref": "SampleAssetS3VersionKey3E106D34" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9" | ||
} | ||
@@ -139,3 +139,3 @@ ] | ||
{ | ||
"Ref": "SampleAssetS3BucketE6B2908E" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B" | ||
} | ||
@@ -155,19 +155,5 @@ ] | ||
{ | ||
"Ref": "SampleAssetS3BucketE6B2908E" | ||
"Ref": "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B" | ||
}, | ||
"/", | ||
{ | ||
"Fn::Select": [ | ||
0, | ||
{ | ||
"Fn::Split": [ | ||
"||", | ||
{ | ||
"Ref": "SampleAssetS3VersionKey3E106D34" | ||
} | ||
] | ||
} | ||
] | ||
}, | ||
"*" | ||
"/*" | ||
] | ||
@@ -174,0 +160,0 @@ ] |
@@ -8,27 +8,15 @@ { | ||
"Parameters": { | ||
"SampleAsset1S3Bucket469E18FF": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A": { | ||
"Type": "String", | ||
"Description": "S3 bucket for asset \"aws-cdk-multi-assets/SampleAsset1\"" | ||
"Description": "S3 bucket for asset \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
}, | ||
"SampleAsset1S3VersionKey63A628F0": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3VersionKey9482DC35": { | ||
"Type": "String", | ||
"Description": "S3 key for asset version \"aws-cdk-multi-assets/SampleAsset1\"" | ||
"Description": "S3 key for asset version \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
}, | ||
"SampleAsset1ArtifactHash9E24B5F0": { | ||
"AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197ArtifactHash22BFFA67": { | ||
"Type": "String", | ||
"Description": "Artifact hash for asset \"aws-cdk-multi-assets/SampleAsset1\"" | ||
}, | ||
"SampleAsset2S3BucketC94C651A": { | ||
"Type": "String", | ||
"Description": "S3 bucket for asset \"aws-cdk-multi-assets/SampleAsset2\"" | ||
}, | ||
"SampleAsset2S3VersionKey3A7E2CC4": { | ||
"Type": "String", | ||
"Description": "S3 key for asset version \"aws-cdk-multi-assets/SampleAsset2\"" | ||
}, | ||
"SampleAsset2ArtifactHash62F55C83": { | ||
"Type": "String", | ||
"Description": "Artifact hash for asset \"aws-cdk-multi-assets/SampleAsset2\"" | ||
"Description": "Artifact hash for asset \"78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197\"" | ||
} | ||
} | ||
} |
@@ -11,2 +11,3 @@ "use strict"; | ||
const asset_1 = require("../lib/asset"); | ||
// tslint:disable:max-line-length | ||
const SAMPLE_ASSET_DIR = path.join(__dirname, 'sample-asset-directory'); | ||
@@ -24,3 +25,3 @@ function mkdtempSync() { | ||
const stack = new cdk.Stack(app, 'MyStack'); | ||
const asset = new asset_1.Asset(stack, 'MyAsset', { | ||
new asset_1.Asset(stack, 'MyAsset', { | ||
path: SAMPLE_ASSET_DIR | ||
@@ -30,3 +31,3 @@ }); | ||
// the correct information | ||
const entry = asset.node.metadata.find(m => m.type === 'aws:cdk:asset'); | ||
const entry = stack.node.metadata.find(m => m.type === 'aws:cdk:asset'); | ||
test.ok(entry, 'found metadata entry'); | ||
@@ -37,12 +38,12 @@ // verify that now the template contains parameters for this asset | ||
path: SAMPLE_ASSET_DIR, | ||
id: 'MyStackMyAssetBDDF29E3', | ||
id: '6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2', | ||
packaging: 'zip', | ||
sourceHash: '6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2', | ||
s3BucketParameter: 'MyAssetS3Bucket68C9B344', | ||
s3KeyParameter: 'MyAssetS3VersionKey68E1A45D', | ||
artifactHashParameter: 'MyAssetArtifactHashF518BDDE', | ||
s3BucketParameter: 'AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B', | ||
s3KeyParameter: 'AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9', | ||
artifactHashParameter: 'AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2ArtifactHash220DE9BD', | ||
}); | ||
const template = JSON.parse(fs.readFileSync(path.join(session.directory, 'MyStack.template.json'), 'utf-8')); | ||
test.equal(template.Parameters.MyAssetS3Bucket68C9B344.Type, 'String'); | ||
test.equal(template.Parameters.MyAssetS3VersionKey68E1A45D.Type, 'String'); | ||
test.equal(template.Parameters.AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B.Type, 'String'); | ||
test.equal(template.Parameters.AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9.Type, 'String'); | ||
test.done(); | ||
@@ -59,12 +60,12 @@ }, | ||
const meta = synth.manifest.metadata || {}; | ||
test.ok(meta['/my-stack/MyAsset']); | ||
test.ok(meta['/my-stack/MyAsset'][0]); | ||
test.deepEqual(meta['/my-stack/MyAsset'][0].data, { | ||
test.ok(meta['/my-stack']); | ||
test.ok(meta['/my-stack'][0]); | ||
test.deepEqual(meta['/my-stack'][0].data, { | ||
path: 'asset.6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2', | ||
id: "mystackMyAssetD6B1B593", | ||
id: "6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2", | ||
packaging: "zip", | ||
sourceHash: '6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2', | ||
s3BucketParameter: "MyAssetS3Bucket68C9B344", | ||
s3KeyParameter: "MyAssetS3VersionKey68E1A45D", | ||
artifactHashParameter: 'MyAssetArtifactHashF518BDDE', | ||
s3BucketParameter: "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B", | ||
s3KeyParameter: "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3VersionKey1F7D75F9", | ||
artifactHashParameter: 'AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2ArtifactHash220DE9BD', | ||
}); | ||
@@ -76,4 +77,4 @@ test.done(); | ||
const filePath = path.join(__dirname, 'file-asset.txt'); | ||
const asset = new asset_1.Asset(stack, 'MyAsset', { path: filePath }); | ||
const entry = asset.node.metadata.find(m => m.type === 'aws:cdk:asset'); | ||
new asset_1.Asset(stack, 'MyAsset', { path: filePath }); | ||
const entry = stack.node.metadata.find(m => m.type === 'aws:cdk:asset'); | ||
test.ok(entry, 'found metadata entry'); | ||
@@ -85,11 +86,11 @@ // synthesize first so "prepare" is called | ||
packaging: 'file', | ||
id: 'MyAsset', | ||
id: '78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197', | ||
sourceHash: '78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197', | ||
s3BucketParameter: 'MyAssetS3Bucket68C9B344', | ||
s3KeyParameter: 'MyAssetS3VersionKey68E1A45D', | ||
artifactHashParameter: 'MyAssetArtifactHashF518BDDE', | ||
s3BucketParameter: 'AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A', | ||
s3KeyParameter: 'AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3VersionKey9482DC35', | ||
artifactHashParameter: 'AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197ArtifactHash22BFFA67', | ||
}); | ||
// verify that now the template contains parameters for this asset | ||
test.equal(template.Parameters.MyAssetS3Bucket68C9B344.Type, 'String'); | ||
test.equal(template.Parameters.MyAssetS3VersionKey68E1A45D.Type, 'String'); | ||
test.equal(template.Parameters.AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3Bucket2C60F94A.Type, 'String'); | ||
test.equal(template.Parameters.AssetParameters78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197S3VersionKey9482DC35.Type, 'String'); | ||
test.done(); | ||
@@ -114,11 +115,4 @@ }, | ||
Resource: [ | ||
{ "Fn::Join": ["", ["arn:", { Ref: "AWS::Partition" }, ":s3:::", { Ref: "MyAssetS3Bucket68C9B344" }]] }, | ||
{ "Fn::Join": ["", | ||
[ | ||
"arn:", { Ref: "AWS::Partition" }, ":s3:::", { Ref: "MyAssetS3Bucket68C9B344" }, | ||
"/", | ||
{ "Fn::Select": [0, { "Fn::Split": ["||", { Ref: "MyAssetS3VersionKey68E1A45D" }] }] }, | ||
"*" | ||
] | ||
] } | ||
{ "Fn::Join": ["", ["arn:", { Ref: "AWS::Partition" }, ":s3:::", { Ref: "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B" }]] }, | ||
{ "Fn::Join": ["", ["arn:", { Ref: "AWS::Partition" }, ":s3:::", { Ref: "AssetParameters6b84b87243a4a01c592d78e1fd3855c4bfef39328cd0a450cc97e81717fea2a2S3Bucket50B5A10B" }, "/*"]] } | ||
] | ||
@@ -303,2 +297,2 @@ } | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5hc3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QuYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUFpRjtBQUNqRix3Q0FBeUM7QUFDekMscUNBQXNDO0FBQ3RDLHdDQUEyQztBQUMzQyx5Q0FBMEM7QUFDMUMseUJBQTBCO0FBRTFCLHlCQUEwQjtBQUMxQiw2QkFBOEI7QUFDOUIsd0NBQXFDO0FBRXJDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztBQXlWeEUsU0FBUyxXQUFXO0lBQ2xCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUF6VkQsaUJBQVM7SUFDUCxpQkFBaUIsQ0FBQyxJQUFVO1FBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUN0QixPQUFPLEVBQUU7Z0JBQ1AsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsRUFBRSxNQUFNO2FBQzlDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3hDLElBQUksRUFBRSxnQkFBZ0I7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsOERBQThEO1FBQzlELDBCQUEwQjtRQUMxQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxFQUFF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QUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFFeEQsT0FBTztZQUNQLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDbEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBQyxJQUFJLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLHdFQUF3RSxDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztLQUVGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlLCBSZXNvdXJjZVBhcnQsIFN5bnRoVXRpbHMgfSBmcm9tICdAYXdzLWNkay9hc3NlcnQnO1xuaW1wb3J0IGlhbSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1pYW0nKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jb3JlJyk7XG5pbXBvcnQgeyBBcHAsIFN0YWNrIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgY3hhcGkgPSByZXF1aXJlKCdAYXdzLWNkay9jeC1hcGknKTtcbmltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IG9zID0gcmVxdWlyZSgnb3MnKTtcbmltcG9ydCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuaW1wb3J0IHsgQXNzZXQgfSBmcm9tICcuLi9saWIvYXNzZXQnO1xuXG5jb25zdCBTQU1QTEVfQVNTRVRfRElSID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ3NhbXBsZS1hc3NldC1kaXJlY3RvcnknKTtcblxuZXhwb3J0ID0ge1xuICAnc2ltcGxlIHVzZSBjYXNlJyh0ZXN0OiBUZXN0KSAge1xuICAgIGNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKHtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgW2N4YXBpLkRJU0FCTEVfQVNTRVRfU1RBR0lOR19DT05URVhUXTogJ3RydWUnXG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKGFwcCwgJ015U3RhY2snKTtcbiAgICBjb25zdCBhc3NldCA9IG5ldyBBc3NldChzdGFjaywgJ015QXNzZXQnLCB7XG4gICAgICBwYXRoOiBTQU1QTEVfQVNTRVRfRElSXG4gICAgfSk7XG5cbiAgICAvLyB2ZXJpZnkgdGhhdCBtZXRhZGF0YSBjb250YWlucyBhbiBcImF3czpjZGs6YXNzZXRcIiBlbnRyeSB3aXRoXG4gICAgLy8gdGhlIGNvcnJlY3QgaW5mb3JtYXRpb25cbiAgICBjb25zdCBlbnRyeSA9IGFzc2V0Lm5vZGUubWV0YWRhdGEuZmluZChtID0+IG0udHlwZSA9PT0gJ2F3czpjZGs6YXNzZXQnKTtcbiAgICB0ZXN0Lm9rKGVudHJ5LCAnZm91bmQgbWV0YWRhdGEgZW50cnknKTtcblxuICAgIC8vIHZlcmlmeSB0aGF0IG5vdyB0aGUgdGVtcGxhdGUgY29udGFpbnMgcGFyYW1ldGVycyBmb3IgdGhpcyBhc3NldFxuICAgIGNvbnN0IHNlc3Npb24gPSBhcHAuc3ludGgoKTtcblxuICAgIHRlc3QuZGVlcEVxdWFsKHN0YWNrLnJlc29sdmUoZW50cnkhLmRhdGEpLCB7XG4gICAgICBwYXRoOiBTQU1QTEVfQVNTRVRfRElSLFxuICAgICAgaWQ6ICdNeVN0YWNrTXlBc3NldEJEREYyOUUzJyxcbiAgICAgIHBhY2thZ2luZzogJ3ppcCcsXG4gICAgICBzb3VyY2VIYXNoOiAnNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMicsXG4gICAgICBzM0J1Y2tldFBhcmFtZXRlcjogJ015QXNzZXRTM0J1Y2tldDY4QzlCMzQ0JyxcbiAgICAgIHMzS2V5UGFyYW1ldGVyOiAnTXlBc3NldFMzVmVyc2lvbktleTY4RTFBNDVEJyxcbiAgICAgIGFydGlmYWN0SGFzaFBhcmFtZXRlcjogJ015QXNzZXRBcnRpZmFjdEhhc2hGNTE4QkRERScsXG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihzZXNzaW9uLmRpcmVjdG9yeSwgJ015U3RhY2sudGVtcGxhdGUuanNvbicpLCAndXRmLTgnKSk7XG4gICAgdGVzdC5lcXVhbCh0ZW1wbGF0ZS5QYXJhbWV0ZXJzLk15QXNzZXRTM0J1Y2tldDY4QzlCMzQ0LlR5cGUsICdTdHJpbmcnKTtcbiAgICB0ZXN0LmVxdWFsKHRlbXBsYXRlLlBhcmFtZXRlcnMuTXlBc3NldFMzVmVyc2lvbktleTY4RTFBNDVELlR5cGUsICdTdHJpbmcnKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICd2ZXJpZnkgdGhhdCB0aGUgYXBwIHJlc29sdmVzIHRva2VucyBpbiBtZXRhZGF0YScodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKGFwcCwgJ215LXN0YWNrJyk7XG4gICAgY29uc3QgZGlyUGF0aCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5Jyk7XG5cbiAgICBuZXcgQXNzZXQoc3RhY2ssICdNeUFzc2V0Jywge1xuICAgICAgcGF0aDogZGlyUGF0aFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ludGggPSBhcHAuc3ludGgoKS5nZXRTdGFjayhzdGFjay5zdGFja05hbWUpO1xuICAgIGNvbnN0IG1ldGEgPSBzeW50aC5tYW5pZmVzdC5tZXRhZGF0YSB8fCB7fTtcbiAgICB0ZXN0Lm9rKG1ldGFbJy9teS1zdGFjay9NeUFzc2V0J10pO1xuICAgIHRlc3Qub2sobWV0YVsnL215LXN0YWNrL015QXNzZXQnXVswXSk7XG4gICAgdGVzdC5kZWVwRXF1YWwobWV0YVsnL215LXN0YWNrL015QXNzZXQnXVswXS5kYXRhLCB7XG4gICAgICBwYXRoOiAnYXNzZXQuNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMicsXG4gICAgICBpZDogXCJteXN0YWNrTXlBc3NldEQ2QjFCNTkzXCIsXG4gICAgICBwYWNrYWdpbmc6IFwiemlwXCIsXG4gICAgICBzb3VyY2VIYXNoOiAnNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMicsXG4gICAgICBzM0J1Y2tldFBhcmFtZXRlcjogXCJNeUFzc2V0UzNCdWNrZXQ2OEM5QjM0NFwiLFxuICAgICAgczNLZXlQYXJhbWV0ZXI6IFwiTXlBc3NldFMzVmVyc2lvbktleTY4RTFBNDVEXCIsXG4gICAgICBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6ICdNeUFzc2V0QXJ0aWZhY3RIYXNoRjUxOEJEREUnLFxuICAgIH0pO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ1wiZmlsZVwiIGFzc2V0cycodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2ZpbGUtYXNzZXQudHh0Jyk7XG4gICAgY29uc3QgYXNzZXQgPSBuZXcgQXNzZXQoc3RhY2ssICdNeUFzc2V0JywgeyBwYXRoOiBmaWxlUGF0aCB9KTtcbiAgICBjb25zdCBlbnRyeSA9IGFzc2V0Lm5vZGUubWV0YWRhdGEuZmluZChtID0+IG0udHlwZSA9PT0gJ2F3czpjZGs6YXNzZXQnKTtcbiAgICB0ZXN0Lm9rKGVudHJ5LCAnZm91bmQgbWV0YWRhdGEgZW50cnknKTtcblxuICAgIC8vIHN5bnRoZXNpemUgZmlyc3Qgc28gXCJwcmVwYXJlXCIgaXMgY2FsbGVkXG4gICAgY29uc3QgdGVtcGxhdGUgPSBTeW50aFV0aWxzLnN5bnRoZXNpemUoc3RhY2spLnRlbXBsYXRlO1xuXG4gICAgdGVzdC5kZWVwRXF1YWwoc3RhY2sucmVzb2x2ZShlbnRyeSEuZGF0YSksIHtcbiAgICAgIHBhdGg6ICdhc3NldC43OGFkZDllYWY0NjhkZmEyMTkxZGE0NGE3ZGE5MmEyMWJhYmE0YzY4NmNmNjA1M2Q3NzI1NTY3NjhlZjIxMTk3LnR4dCcsXG4gICAgICBwYWNrYWdpbmc6ICdmaWxlJyxcbiAgICAgIGlkOiAnTXlBc3NldCcsXG4gICAgICBzb3VyY2VIYXNoOiAnNzhhZGQ5ZWFmNDY4ZGZhMjE5MWRhNDRhN2RhOTJhMjFiYWJhNGM2ODZjZjYwNTNkNzcyNTU2NzY4ZWYyMTE5NycsXG4gICAgICBzM0J1Y2tldFBhcmFtZXRlcjogJ015QXNzZXRTM0J1Y2tldDY4QzlCMzQ0JyxcbiAgICAgIHMzS2V5UGFyYW1ldGVyOiAnTXlBc3NldFMzVmVyc2lvbktleTY4RTFBNDVEJyxcbiAgICAgIGFydGlmYWN0SGFzaFBhcmFtZXRlcjogJ015QXNzZXRBcnRpZmFjdEhhc2hGNTE4QkRERScsXG4gICAgfSk7XG5cbiAgICAvLyB2ZXJpZnkgdGhhdCBub3cgdGhlIHRlbXBsYXRlIGNvbnRhaW5zIHBhcmFtZXRlcnMgZm9yIHRoaXMgYXNzZXRcbiAgICB0ZXN0LmVxdWFsKHRlbXBsYXRlLlBhcmFtZXRlcnMuTXlBc3NldFMzQnVja2V0NjhDOUIzNDQuVHlwZSwgJ1N0cmluZycpO1xuICAgIHRlc3QuZXF1YWwodGVtcGxhdGUuUGFyYW1ldGVycy5NeUFzc2V0UzNWZXJzaW9uS2V5NjhFMUE0NUQuVHlwZSwgJ1N0cmluZycpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ1wicmVhZGVyc1wiIG9yIFwiZ3JhbnRSZWFkXCIgY2FuIGJlIHVzZWQgdG8gZ3JhbnQgcmVhZCBwZXJtaXNzaW9ucyBvbiB0aGUgYXNzZXQgdG8gYSBwcmluY2lwYWwnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCB1c2VyID0gbmV3IGlhbS5Vc2VyKHN0YWNrLCAnTXlVc2VyJyk7XG4gICAgY29uc3QgZ3JvdXAgPSBuZXcgaWFtLkdyb3VwKHN0YWNrLCAnTXlHcm91cCcpO1xuXG4gICAgY29uc3QgYXNzZXQgPSBuZXcgQXNzZXQoc3RhY2ssICdNeUFzc2V0Jywge1xuICAgICAgcGF0aDogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3NhbXBsZS1hc3NldC1kaXJlY3RvcnknKSxcbiAgICAgIHJlYWRlcnM6IFsgdXNlciBdXG4gICAgfSk7XG5cbiAgICBhc3NldC5ncmFudFJlYWQoZ3JvdXApO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6SUFNOjpQb2xpY3knLCB7XG4gICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFjdGlvbjogW1wiczM6R2V0T2JqZWN0KlwiLCBcInMzOkdldEJ1Y2tldCpcIiwgXCJzMzpMaXN0KlwiXSxcbiAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgIFJlc291cmNlOiBbXG4gICAgICAgICAgICAgIHsgXCJGbjo6Sm9pblwiOiBbXCJcIiwgW1wiYXJuOlwiLCB7UmVmOiBcIkFXUzo6UGFydGl0aW9uXCJ9LCBcIjpzMzo6OlwiLCB7UmVmOiBcIk15QXNzZXRTM0J1Y2tldDY4QzlCMzQ0XCJ9XV0gfSxcbiAgICAgICAgICAgICAgeyBcIkZuOjpKb2luXCI6IFtcIlwiLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFwiYXJuOlwiLCB7UmVmOiBcIkFXUzo6UGFydGl0aW9uXCJ9LCBcIjpzMzo6OlwiLCB7UmVmOiBcIk15QXNzZXRTM0J1Y2tldDY4QzlCMzQ0XCJ9LFxuICAgICAgICAgICAgICAgICAgXCIvXCIsXG4gICAgICAgICAgICAgICAgICB7IFwiRm46OlNlbGVjdFwiOiBbMCwgeyBcIkZuOjpTcGxpdFwiOiBbIFwifHxcIiwgeyBSZWY6IFwiTXlBc3NldFMzVmVyc2lvbktleTY4RTFBNDVEXCIgfV0gfV0gfSxcbiAgICAgICAgICAgICAgICAgIFwiKlwiXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBdIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbiAgJ2ZhaWxzIGlmIGRpcmVjdG9yeSBub3QgZm91bmQnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICB0ZXN0LnRocm93cygoKSA9PiBuZXcgQXNzZXQoc3RhY2ssICdNeURpcmVjdG9yeScsIHtcbiAgICAgIHBhdGg6ICcvcGF0aC9ub3QvZm91bmQvJyArIE1hdGgucmFuZG9tKCkgKiA5OTk5OTlcbiAgICB9KSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ211bHRpcGxlIGFzc2V0cyB1bmRlciB0aGUgc2FtZSBwYXJlbnQnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBBc3NldChzdGFjaywgJ015RGlyZWN0b3J5MScsIHsgcGF0aDogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3NhbXBsZS1hc3NldC1kaXJlY3RvcnknKSB9KTtcbiAgICBuZXcgQXNzZXQoc3RhY2ssICdNeURpcmVjdG9yeTInLCB7IHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5JykgfSk7XG5cbiAgICAvLyBUSEVOOiBubyBlcnJvclxuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2lzWmlwQXJjaGl2ZSBpbmRpY2F0ZXMgaWYgdGhlIGFzc2V0IHJlcHJlc2VudHMgYSAuemlwIGZpbGUgKGVpdGhlciBleHBsaWNpdGx5IG9yIHZpYSBaaXBEaXJlY3RvcnkgcGFja2FnaW5nKScodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3Qgbm9uWmlwQXNzZXQgPSBuZXcgQXNzZXQoc3RhY2ssICdOb25aaXBBc3NldCcsIHtcbiAgICAgIHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5JywgJ3NhbXBsZS1hc3NldC1maWxlLnR4dCcpXG4gICAgfSk7XG5cbiAgICBjb25zdCB6aXBEaXJlY3RvcnlBc3NldCA9IG5ldyBBc3NldChzdGFjaywgJ1ppcERpcmVjdG9yeUFzc2V0Jywge1xuICAgICAgcGF0aDogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3NhbXBsZS1hc3NldC1kaXJlY3RvcnknKVxuICAgIH0pO1xuXG4gICAgY29uc3QgemlwRmlsZUFzc2V0ID0gbmV3IEFzc2V0KHN0YWNrLCAnWmlwRmlsZUFzc2V0Jywge1xuICAgICAgcGF0aDogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3NhbXBsZS1hc3NldC1kaXJlY3RvcnknLCAnc2FtcGxlLXppcC1hc3NldC56aXAnKVxuICAgIH0pO1xuXG4gICAgY29uc3QgamFyRmlsZUFzc2V0ID0gbmV3IEFzc2V0KHN0YWNrLCAnSmFyRmlsZUFzc2V0Jywge1xuICAgICAgcGF0aDogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3NhbXBsZS1hc3NldC1kaXJlY3RvcnknLCAnc2FtcGxlLWphci1hc3NldC5qYXInKVxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIHRlc3QuZXF1YWwobm9uWmlwQXNzZXQuaXNaaXBBcmNoaXZlLCBmYWxzZSk7XG4gICAgdGVzdC5lcXVhbCh6aXBEaXJlY3RvcnlBc3NldC5pc1ppcEFyY2hpdmUsIHRydWUpO1xuICAgIHRlc3QuZXF1YWwoemlwRmlsZUFzc2V0LmlzWmlwQXJjaGl2ZSwgdHJ1ZSk7XG4gICAgdGVzdC5lcXVhbChqYXJGaWxlQXNzZXQuaXNaaXBBcmNoaXZlLCB0cnVlKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnYWRkUmVzb3VyY2VNZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBhZGQgQ0ZOIG1ldGFkYXRhIHRvIHJlc291cmNlcycodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgc3RhY2subm9kZS5zZXRDb250ZXh0KGN4YXBpLkFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0VOQUJMRURfQ09OVEVYVCwgdHJ1ZSk7XG5cbiAgICBjb25zdCBsb2NhdGlvbiA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5Jyk7XG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgY2RrLkNmblJlc291cmNlKHN0YWNrLCAnTXlSZXNvdXJjZScsIHsgdHlwZTogJ015OjpSZXNvdXJjZTo6VHlwZScgfSk7XG4gICAgY29uc3QgYXNzZXQgPSBuZXcgQXNzZXQoc3RhY2ssICdNeUFzc2V0JywgeyBwYXRoOiBsb2NhdGlvbiB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhc3NldC5hZGRSZXNvdXJjZU1ldGFkYXRhKHJlc291cmNlLCAnUHJvcE5hbWUnKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnTXk6OlJlc291cmNlOjpUeXBlJywge1xuICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgXCJhd3M6YXNzZXQ6cGF0aFwiOiAnYXNzZXQuNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMicsXG4gICAgICAgIFwiYXdzOmFzc2V0OnByb3BlcnR5XCI6IFwiUHJvcE5hbWVcIlxuICAgICAgfVxuICAgIH0sIFJlc291cmNlUGFydC5Db21wbGV0ZURlZmluaXRpb24pKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnYXNzZXQgbWV0YWRhdGEgaXMgb25seSBlbWl0dGVkIGlmIEFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0VOQUJMRURfQ09OVEVYVCBpcyBkZWZpbmVkJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IGNkay5DZm5SZXNvdXJjZShzdGFjaywgJ015UmVzb3VyY2UnLCB7IHR5cGU6ICdNeTo6UmVzb3VyY2U6OlR5cGUnIH0pO1xuICAgIGNvbnN0IGFzc2V0ID0gbmV3IEFzc2V0KHN0YWNrLCAnTXlBc3NldCcsIHsgcGF0aDogU0FNUExFX0FTU0VUX0RJUiB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhc3NldC5hZGRSZXNvdXJjZU1ldGFkYXRhKHJlc291cmNlLCAnUHJvcE5hbWUnKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLm5vdFRvKGhhdmVSZXNvdXJjZSgnTXk6OlJlc291cmNlOjpUeXBlJywge1xuICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgXCJhd3M6YXNzZXQ6cGF0aFwiOiBTQU1QTEVfQVNTRVRfRElSLFxuICAgICAgICBcImF3czphc3NldDpwcm9wZXJ0eVwiOiBcIlByb3BOYW1lXCJcbiAgICAgIH1cbiAgICB9LCBSZXNvdXJjZVBhcnQuQ29tcGxldGVEZWZpbml0aW9uKSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnc3RhZ2luZyc6IHtcblxuICAgICdjb3B5IGZpbGUgYXNzZXRzIHVuZGVyIDxvdXRkaXI+LyR7ZmluZ2VycHJpbnR9LmV4dCcodGVzdDogVGVzdCkge1xuICAgICAgY29uc3QgdGVtcGRpciA9IG1rZHRlbXBTeW5jKCk7XG4gICAgICBwcm9jZXNzLmNoZGlyKHRlbXBkaXIpOyAvLyBjaGFuZ2UgY3VycmVudCBkaXJlY3RvcnkgdG8gc29tZXdoZXJlIGluIC90bXBcblxuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IGFwcCA9IG5ldyBBcHAoeyBvdXRkaXI6IHRlbXBkaXIgfSk7XG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsICdzdGFjaycpO1xuXG4gICAgICAvLyBXSEVOXG4gICAgICBuZXcgQXNzZXQoc3RhY2ssICdaaXBGaWxlJywge1xuICAgICAgICBwYXRoOiBwYXRoLmpvaW4oU0FNUExFX0FTU0VUX0RJUiwgJ3NhbXBsZS16aXAtYXNzZXQuemlwJylcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQXNzZXQoc3RhY2ssICdUZXh0RmlsZScsIHtcbiAgICAgICAgcGF0aDogcGF0aC5qb2luKFNBTVBMRV9BU1NFVF9ESVIsICdzYW1wbGUtYXNzZXQtZmlsZS50eHQnKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGFwcC5zeW50aCgpO1xuICAgICAgdGVzdC5vayhmcy5leGlzdHNTeW5jKHRlbXBkaXIpKTtcbiAgICAgIHRlc3Qub2soZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4odGVtcGRpciwgJ2Fzc2V0LmE3YTc5Y2RmODRiODAyZWE4YjE5ODA1OWZmODk5Y2ZmYzA5NWExYjk2MDZlOTE5Zjk4ZTA1YmY4MDc3OTc1NmIuemlwJykpKTtcbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICAnY29weSBkaXJlY3RvcnkgdW5kZXIgLmFzc2V0cy9maW5nZXJwcmludC8qKicodGVzdDogVGVzdCkge1xuICAgICAgY29uc3QgdGVtcGRpciA9IG1rZHRlbXBTeW5jKCk7XG4gICAgICBwcm9jZXNzLmNoZGlyKHRlbXBkaXIpOyAvLyBjaGFuZ2UgY3VycmVudCBkaXJlY3RvcnkgdG8gc29tZXdoZXJlIGluIC90bXBcblxuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IGFwcCA9IG5ldyBBcHAoeyBvdXRkaXI6IHRlbXBkaXIgfSk7XG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsICdzdGFjaycpO1xuXG4gICAgICAvLyBXSEVOXG4gICAgICBuZXcgQXNzZXQoc3RhY2ssICdaaXBEaXJlY3RvcnknLCB7XG4gICAgICAgIHBhdGg6IFNBTVBMRV9BU1NFVF9ESVJcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBhcHAuc3ludGgoKTtcbiAgICAgIHRlc3Qub2soZnMuZXhpc3RzU3luYyh0ZW1wZGlyKSk7XG4gICAgICBjb25zdCBoYXNoID0gJ2Fzc2V0LjZiODRiODcyNDNhNGEwMWM1OTJkNzhlMWZkMzg1NWM0YmZlZjM5MzI4Y2QwYTQ1MGNjOTdlODE3MTdmZWEyYTInO1xuICAgICAgdGVzdC5vayhmcy5leGlzdHNTeW5jKHBhdGguam9pbih0ZW1wZGlyLCBoYXNoLCAnc2FtcGxlLWFzc2V0LWZpbGUudHh0JykpKTtcbiAgICAgIHRlc3Qub2soZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4odGVtcGRpciwgaGFzaCwgJ3NhbXBsZS1qYXItYXNzZXQuamFyJykpKTtcbiAgICAgIGZzLnJlYWRkaXJTeW5jKHRlbXBkaXIpO1xuICAgICAgdGVzdC5kb25lKCk7XG4gICAgfSxcblxuICAgICdzdGFnaW5nIHBhdGggaXMgcmVsYXRpdmUgaWYgdGhlIGRpciBpcyBiZWxvdyB0aGUgd29ya2luZyBkaXJlY3RvcnknKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCB0ZW1wZGlyID0gbWtkdGVtcFN5bmMoKTtcbiAgICAgIHByb2Nlc3MuY2hkaXIodGVtcGRpcik7IC8vIGNoYW5nZSBjdXJyZW50IGRpcmVjdG9yeSB0byBzb21ld2hlcmUgaW4gL3RtcFxuXG4gICAgICBjb25zdCBzdGFnaW5nID0gJy5teS1hd2Vzb21lLXN0YWdpbmctZGlyZWN0b3J5JztcbiAgICAgIGNvbnN0IGFwcCA9IG5ldyBBcHAoe1xuICAgICAgICBvdXRkaXI6IHN0YWdpbmcsXG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICBbY3hhcGkuQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRU5BQkxFRF9DT05URVhUXTogJ3RydWUnLFxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnc3RhY2snKTtcblxuICAgICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgY2RrLkNmblJlc291cmNlKHN0YWNrLCAnTXlSZXNvdXJjZScsIHsgdHlwZTogJ015OjpSZXNvdXJjZTo6VHlwZScgfSk7XG4gICAgICBjb25zdCBhc3NldCA9IG5ldyBBc3NldChzdGFjaywgJ015QXNzZXQnLCB7IHBhdGg6IFNBTVBMRV9BU1NFVF9ESVIgfSk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIGFzc2V0LmFkZFJlc291cmNlTWV0YWRhdGEocmVzb3VyY2UsICdQcm9wTmFtZScpO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IFN5bnRoVXRpbHMuc3ludGhlc2l6ZShzdGFjaykudGVtcGxhdGU7XG4gICAgICB0ZXN0LmRlZXBFcXVhbCh0ZW1wbGF0ZS5SZXNvdXJjZXMuTXlSZXNvdXJjZS5NZXRhZGF0YSwge1xuICAgICAgICBcImF3czphc3NldDpwYXRoXCI6IGBhc3NldC42Yjg0Yjg3MjQzYTRhMDFjNTkyZDc4ZTFmZDM4NTVjNGJmZWYzOTMyOGNkMGE0NTBjYzk3ZTgxNzE3ZmVhMmEyYCxcbiAgICAgICAgXCJhd3M6YXNzZXQ6cHJvcGVydHlcIjogXCJQcm9wTmFtZVwiXG4gICAgICB9KTtcbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICAnaWYgc3RhZ2luZyBpcyBkaXNhYmxlZCwgYXNzZXQgcGF0aCBpcyBhYnNvbHV0ZScodGVzdDogVGVzdCkge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IHN0YWdpbmcgPSBwYXRoLnJlc29sdmUobWtkdGVtcFN5bmMoKSk7XG4gICAgICBjb25zdCBhcHAgPSBuZXcgQXBwKHtcbiAgICAgICAgb3V0ZGlyOiBzdGFnaW5nLFxuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgW2N4YXBpLkRJU0FCTEVfQVNTRVRfU1RBR0lOR19DT05URVhUXTogJ3RydWUnLFxuICAgICAgICAgIFtjeGFwaS5BU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9FTkFCTEVEX0NPTlRFWFRdOiAndHJ1ZScsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsICdzdGFjaycpO1xuXG4gICAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBjZGsuQ2ZuUmVzb3VyY2Uoc3RhY2ssICdNeVJlc291cmNlJywgeyB0eXBlOiAnTXk6OlJlc291cmNlOjpUeXBlJyB9KTtcbiAgICAgIGNvbnN0IGFzc2V0ID0gbmV3IEFzc2V0KHN0YWNrLCAnTXlBc3NldCcsIHsgcGF0aDogU0FNUExFX0FTU0VUX0RJUiB9KTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgYXNzZXQuYWRkUmVzb3VyY2VNZXRhZGF0YShyZXNvdXJjZSwgJ1Byb3BOYW1lJyk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gU3ludGhVdGlscy5zeW50aGVzaXplKHN0YWNrKS50ZW1wbGF0ZTtcbiAgICAgIHRlc3QuZGVlcEVxdWFsKHRlbXBsYXRlLlJlc291cmNlcy5NeVJlc291cmNlLk1ldGFkYXRhLCB7XG4gICAgICAgIFwiYXdzOmFzc2V0OnBhdGhcIjogU0FNUExFX0FTU0VUX0RJUixcbiAgICAgICAgXCJhd3M6YXNzZXQ6cHJvcGVydHlcIjogXCJQcm9wTmFtZVwiXG4gICAgICB9KTtcbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICAnY2RrIG1ldGFkYXRhIHBvaW50cyB0byBzdGFnZWQgYXNzZXQnKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBhcHAgPSBuZXcgQXBwKCk7XG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsICdzdGFjaycpO1xuICAgICAgbmV3IEFzc2V0KHN0YWNrLCAnTXlBc3NldCcsIHsgcGF0aDogU0FNUExFX0FTU0VUX0RJUiB9KTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGFwcC5zeW50aCgpO1xuICAgICAgY29uc3QgYXJ0aWZhY3QgPSBzZXNzaW9uLmdldFN0YWNrKHN0YWNrLnN0YWNrTmFtZSk7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGFydGlmYWN0Lm1hbmlmZXN0Lm1ldGFkYXRhIHx8IHt9O1xuICAgICAgY29uc3QgbWQgPSBPYmplY3QudmFsdWVzKG1ldGFkYXRhKVswXSFbMF0hLmRhdGE7XG4gICAgICB0ZXN0LmRlZXBFcXVhbChtZC5wYXRoLCAnYXNzZXQuNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMicpO1xuICAgICAgdGVzdC5kb25lKCk7XG4gICAgfVxuXG4gIH1cbn07XG5cbmZ1bmN0aW9uIG1rZHRlbXBTeW5jKCkge1xuICByZXR1cm4gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAndGVzdC5hc3NldHMnKSk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5hc3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QuYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUFpRjtBQUNqRix3Q0FBeUM7QUFDekMscUNBQXNDO0FBQ3RDLHdDQUEyQztBQUMzQyx5Q0FBMEM7QUFDMUMseUJBQTBCO0FBRTFCLHlCQUEwQjtBQUMxQiw2QkFBOEI7QUFDOUIsd0NBQXFDO0FBRXJDLGlDQUFpQztBQUVqQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHdCQUF3QixDQUFDLENBQUM7QUFtVnhFLFNBQVMsV0FBVztJQUNsQixPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBblZELGlCQUFTO0lBQ1AsaUJBQWlCLENBQUMsSUFBVTtRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLEVBQUUsTUFBTTthQUM5QztTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUMsSUFBSSxhQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUMxQixJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQztRQUVILDhEQUE4RDtRQUM5RCwwQkFBMEI7UUFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsRUFBRSxD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QztZQUNuRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDbEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBQyxJQUFJLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLHdFQUF3RSxDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztLQUVGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlLCBSZXNvdXJjZVBhcnQsIFN5bnRoVXRpbHMgfSBmcm9tICdAYXdzLWNkay9hc3NlcnQnO1xuaW1wb3J0IGlhbSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1pYW0nKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jb3JlJyk7XG5pbXBvcnQgeyBBcHAsIFN0YWNrIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgY3hhcGkgPSByZXF1aXJlKCdAYXdzLWNkay9jeC1hcGknKTtcbmltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IG9zID0gcmVxdWlyZSgnb3MnKTtcbmltcG9ydCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuaW1wb3J0IHsgQXNzZXQgfSBmcm9tICcuLi9saWIvYXNzZXQnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGhcblxuY29uc3QgU0FNUExFX0FTU0VUX0RJUiA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5Jyk7XG5cbmV4cG9ydCA9IHtcbiAgJ3NpbXBsZSB1c2UgY2FzZScodGVzdDogVGVzdCkgIHtcbiAgICBjb25zdCBhcHAgPSBuZXcgY2RrLkFwcCh7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIFtjeGFwaS5ESVNBQkxFX0FTU0VUX1NUQUdJTkdfQ09OVEVYVF06ICd0cnVlJ1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayhhcHAsICdNeVN0YWNrJyk7XG4gICAgbmV3IEFzc2V0KHN0YWNrLCAnTXlBc3NldCcsIHtcbiAgICAgIHBhdGg6IFNBTVBMRV9BU1NFVF9ESVJcbiAgICB9KTtcblxuICAgIC8vIHZlcmlmeSB0aGF0IG1ldGFkYXRhIGNvbnRhaW5zIGFuIFwiYXdzOmNkazphc3NldFwiIGVudHJ5IHdpdGhcbiAgICAvLyB0aGUgY29ycmVjdCBpbmZvcm1hdGlvblxuICAgIGNvbnN0IGVudHJ5ID0gc3RhY2subm9kZS5tZXRhZGF0YS5maW5kKG0gPT4gbS50eXBlID09PSAnYXdzOmNkazphc3NldCcpO1xuICAgIHRlc3Qub2soZW50cnksICdmb3VuZCBtZXRhZGF0YSBlbnRyeScpO1xuXG4gICAgLy8gdmVyaWZ5IHRoYXQgbm93IHRoZSB0ZW1wbGF0ZSBjb250YWlucyBwYXJhbWV0ZXJzIGZvciB0aGlzIGFzc2V0XG4gICAgY29uc3Qgc2Vzc2lvbiA9IGFwcC5zeW50aCgpO1xuXG4gICAgdGVzdC5kZWVwRXF1YWwoc3RhY2sucmVzb2x2ZShlbnRyeSEuZGF0YSksIHtcbiAgICAgIHBhdGg6IFNBTVBMRV9BU1NFVF9ESVIsXG4gICAgICBpZDogJzZiODRiODcyNDNhNGEwMWM1OTJkNzhlMWZkMzg1NWM0YmZlZjM5MzI4Y2QwYTQ1MGNjOTdlODE3MTdmZWEyYTInLFxuICAgICAgcGFja2FnaW5nOiAnemlwJyxcbiAgICAgIHNvdXJjZUhhc2g6ICc2Yjg0Yjg3MjQzYTRhMDFjNTkyZDc4ZTFmZDM4NTVjNGJmZWYzOTMyOGNkMGE0NTBjYzk3ZTgxNzE3ZmVhMmEyJyxcbiAgICAgIHMzQnVja2V0UGFyYW1ldGVyOiAnQXNzZXRQYXJhbWV0ZXJzNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMlMzQnVja2V0NTBCNUExMEInLFxuICAgICAgczNLZXlQYXJhbWV0ZXI6ICdBc3NldFBhcmFtZXRlcnM2Yjg0Yjg3MjQzYTRhMDFjNTkyZDc4ZTFmZDM4NTVjNGJmZWYzOTMyOGNkMGE0NTBjYzk3ZTgxNzE3ZmVhMmEyUzNWZXJzaW9uS2V5MUY3RDc1RjknLFxuICAgICAgYXJ0aWZhY3RIYXNoUGFyYW1ldGVyOiAnQXNzZXRQYXJhbWV0ZXJzNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMkFydGlmYWN0SGFzaDIyMERFOUJEJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHNlc3Npb24uZGlyZWN0b3J5LCAnTXlTdGFjay50ZW1wbGF0ZS5qc29uJyksICd1dGYtOCcpKTtcblxuICAgIHRlc3QuZXF1YWwodGVtcGxhdGUuUGFyYW1ldGVycy5Bc3NldFBhcmFtZXRlcnM2Yjg0Yjg3MjQzYTRhMDFjNTkyZDc4ZTFmZDM4NTVjNGJmZWYzOTMyOGNkMGE0NTBjYzk3ZTgxNzE3ZmVhMmEyUzNCdWNrZXQ1MEI1QTEwQi5UeXBlLCAnU3RyaW5nJyk7XG4gICAgdGVzdC5lcXVhbCh0ZW1wbGF0ZS5QYXJhbWV0ZXJzLkFzc2V0UGFyYW1ldGVyczZiODRiODcyNDNhNGEwMWM1OTJkNzhlMWZkMzg1NWM0YmZlZjM5MzI4Y2QwYTQ1MGNjOTdlODE3MTdmZWEyYTJTM1ZlcnNpb25LZXkxRjdENzVGOS5UeXBlLCAnU3RyaW5nJyk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAndmVyaWZ5IHRoYXQgdGhlIGFwcCByZXNvbHZlcyB0b2tlbnMgaW4gbWV0YWRhdGEnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBhcHAgPSBuZXcgY2RrLkFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayhhcHAsICdteS1zdGFjaycpO1xuICAgIGNvbnN0IGRpclBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnc2FtcGxlLWFzc2V0LWRpcmVjdG9yeScpO1xuXG4gICAgbmV3IEFzc2V0KHN0YWNrLCAnTXlBc3NldCcsIHtcbiAgICAgIHBhdGg6IGRpclBhdGhcbiAgICB9KTtcblxuICAgIGNvbnN0IHN5bnRoID0gYXBwLnN5bnRoKCkuZ2V0U3RhY2soc3RhY2suc3RhY2tOYW1lKTtcbiAgICBjb25zdCBtZXRhID0gc3ludGgubWFuaWZlc3QubWV0YWRhdGEgfHwge307XG4gICAgdGVzdC5vayhtZXRhWycvbXktc3RhY2snXSk7XG4gICAgdGVzdC5vayhtZXRhWycvbXktc3RhY2snXVswXSk7XG4gICAgdGVzdC5kZWVwRXF1YWwobWV0YVsnL215LXN0YWNrJ11bMF0uZGF0YSwge1xuICAgICAgcGF0aDogJ2Fzc2V0LjZiODRiODcyNDNhNGEwMWM1OTJkNzhlMWZkMzg1NWM0YmZlZjM5MzI4Y2QwYTQ1MGNjOTdlODE3MTdmZWEyYTInLFxuICAgICAgaWQ6IFwiNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMlwiLFxuICAgICAgcGFja2FnaW5nOiBcInppcFwiLFxuICAgICAgc291cmNlSGFzaDogJzZiODRiODcyNDNhNGEwMWM1OTJkNzhlMWZkMzg1NWM0YmZlZjM5MzI4Y2QwYTQ1MGNjOTdlODE3MTdmZWEyYTInLFxuICAgICAgczNCdWNrZXRQYXJhbWV0ZXI6IFwiQXNzZXRQYXJhbWV0ZXJzNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMlMzQnVja2V0NTBCNUExMEJcIixcbiAgICAgIHMzS2V5UGFyYW1ldGVyOiBcIkFzc2V0UGFyYW1ldGVyczZiODRiODcyNDNhNGEwMWM1OTJkNzhlMWZkMzg1NWM0YmZlZjM5MzI4Y2QwYTQ1MGNjOTdlODE3MTdmZWEyYTJTM1ZlcnNpb25LZXkxRjdENzVGOVwiLFxuICAgICAgYXJ0aWZhY3RIYXNoUGFyYW1ldGVyOiAnQXNzZXRQYXJhbWV0ZXJzNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMkFydGlmYWN0SGFzaDIyMERFOUJEJyxcbiAgICB9KTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdcImZpbGVcIiBhc3NldHMnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdmaWxlLWFzc2V0LnR4dCcpO1xuICAgIG5ldyBBc3NldChzdGFjaywgJ015QXNzZXQnLCB7IHBhdGg6IGZpbGVQYXRoIH0pO1xuICAgIGNvbnN0IGVudHJ5ID0gc3RhY2subm9kZS5tZXRhZGF0YS5maW5kKG0gPT4gbS50eXBlID09PSAnYXdzOmNkazphc3NldCcpO1xuICAgIHRlc3Qub2soZW50cnksICdmb3VuZCBtZXRhZGF0YSBlbnRyeScpO1xuXG4gICAgLy8gc3ludGhlc2l6ZSBmaXJzdCBzbyBcInByZXBhcmVcIiBpcyBjYWxsZWRcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IFN5bnRoVXRpbHMuc3ludGhlc2l6ZShzdGFjaykudGVtcGxhdGU7XG5cbiAgICB0ZXN0LmRlZXBFcXVhbChzdGFjay5yZXNvbHZlKGVudHJ5IS5kYXRhKSwge1xuICAgICAgcGF0aDogJ2Fzc2V0Ljc4YWRkOWVhZjQ2OGRmYTIxOTFkYTQ0YTdkYTkyYTIxYmFiYTRjNjg2Y2Y2MDUzZDc3MjU1Njc2OGVmMjExOTcudHh0JyxcbiAgICAgIHBhY2thZ2luZzogJ2ZpbGUnLFxuICAgICAgaWQ6ICc3OGFkZDllYWY0NjhkZmEyMTkxZGE0NGE3ZGE5MmEyMWJhYmE0YzY4NmNmNjA1M2Q3NzI1NTY3NjhlZjIxMTk3JyxcbiAgICAgIHNvdXJjZUhhc2g6ICc3OGFkZDllYWY0NjhkZmEyMTkxZGE0NGE3ZGE5MmEyMWJhYmE0YzY4NmNmNjA1M2Q3NzI1NTY3NjhlZjIxMTk3JyxcbiAgICAgIHMzQnVja2V0UGFyYW1ldGVyOiAnQXNzZXRQYXJhbWV0ZXJzNzhhZGQ5ZWFmNDY4ZGZhMjE5MWRhNDRhN2RhOTJhMjFiYWJhNGM2ODZjZjYwNTNkNzcyNTU2NzY4ZWYyMTE5N1MzQnVja2V0MkM2MEY5NEEnLFxuICAgICAgczNLZXlQYXJhbWV0ZXI6ICdBc3NldFBhcmFtZXRlcnM3OGFkZDllYWY0NjhkZmEyMTkxZGE0NGE3ZGE5MmEyMWJhYmE0YzY4NmNmNjA1M2Q3NzI1NTY3NjhlZjIxMTk3UzNWZXJzaW9uS2V5OTQ4MkRDMzUnLFxuICAgICAgYXJ0aWZhY3RIYXNoUGFyYW1ldGVyOiAnQXNzZXRQYXJhbWV0ZXJzNzhhZGQ5ZWFmNDY4ZGZhMjE5MWRhNDRhN2RhOTJhMjFiYWJhNGM2ODZjZjYwNTNkNzcyNTU2NzY4ZWYyMTE5N0FydGlmYWN0SGFzaDIyQkZGQTY3JyxcbiAgICB9KTtcblxuICAgIC8vIHZlcmlmeSB0aGF0IG5vdyB0aGUgdGVtcGxhdGUgY29udGFpbnMgcGFyYW1ldGVycyBmb3IgdGhpcyBhc3NldFxuICAgIHRlc3QuZXF1YWwodGVtcGxhdGUuUGFyYW1ldGVycy5Bc3NldFBhcmFtZXRlcnM3OGFkZDllYWY0NjhkZmEyMTkxZGE0NGE3ZGE5MmEyMWJhYmE0YzY4NmNmNjA1M2Q3NzI1NTY3NjhlZjIxMTk3UzNCdWNrZXQyQzYwRjk0QS5UeXBlLCAnU3RyaW5nJyk7XG4gICAgdGVzdC5lcXVhbCh0ZW1wbGF0ZS5QYXJhbWV0ZXJzLkFzc2V0UGFyYW1ldGVyczc4YWRkOWVhZjQ2OGRmYTIxOTFkYTQ0YTdkYTkyYTIxYmFiYTRjNjg2Y2Y2MDUzZDc3MjU1Njc2OGVmMjExOTdTM1ZlcnNpb25LZXk5NDgyREMzNS5UeXBlLCAnU3RyaW5nJyk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnXCJyZWFkZXJzXCIgb3IgXCJncmFudFJlYWRcIiBjYW4gYmUgdXNlZCB0byBncmFudCByZWFkIHBlcm1pc3Npb25zIG9uIHRoZSBhc3NldCB0byBhIHByaW5jaXBhbCcodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHVzZXIgPSBuZXcgaWFtLlVzZXIoc3RhY2ssICdNeVVzZXInKTtcbiAgICBjb25zdCBncm91cCA9IG5ldyBpYW0uR3JvdXAoc3RhY2ssICdNeUdyb3VwJyk7XG5cbiAgICBjb25zdCBhc3NldCA9IG5ldyBBc3NldChzdGFjaywgJ015QXNzZXQnLCB7XG4gICAgICBwYXRoOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnc2FtcGxlLWFzc2V0LWRpcmVjdG9yeScpLFxuICAgICAgcmVhZGVyczogWyB1c2VyIF1cbiAgICB9KTtcblxuICAgIGFzc2V0LmdyYW50UmVhZChncm91cCk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3JyxcbiAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgQWN0aW9uOiBbXCJzMzpHZXRPYmplY3QqXCIsIFwiczM6R2V0QnVja2V0KlwiLCBcInMzOkxpc3QqXCJdLFxuICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgUmVzb3VyY2U6IFtcbiAgICAgICAgICAgICAgeyBcIkZuOjpKb2luXCI6IFtcIlwiLCBbXCJhcm46XCIsIHtSZWY6IFwiQVdTOjpQYXJ0aXRpb25cIn0sIFwiOnMzOjo6XCIsIHtSZWY6IFwiQXNzZXRQYXJhbWV0ZXJzNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMlMzQnVja2V0NTBCNUExMEJcIn0gXSBdIH0sXG4gICAgICAgICAgICAgIHsgXCJGbjo6Sm9pblwiOiBbXCJcIiwgWyBcImFybjpcIiwge1JlZjogXCJBV1M6OlBhcnRpdGlvblwifSwgXCI6czM6OjpcIiwge1JlZjogXCJBc3NldFBhcmFtZXRlcnM2Yjg0Yjg3MjQzYTRhMDFjNTkyZDc4ZTFmZDM4NTVjNGJmZWYzOTMyOGNkMGE0NTBjYzk3ZTgxNzE3ZmVhMmEyUzNCdWNrZXQ1MEI1QTEwQlwifSwgXCIvKlwiIF0gXSB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG4gICdmYWlscyBpZiBkaXJlY3Rvcnkgbm90IGZvdW5kJyh0ZXN0OiBUZXN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgdGVzdC50aHJvd3MoKCkgPT4gbmV3IEFzc2V0KHN0YWNrLCAnTXlEaXJlY3RvcnknLCB7XG4gICAgICBwYXRoOiAnL3BhdGgvbm90L2ZvdW5kLycgKyBNYXRoLnJhbmRvbSgpICogOTk5OTk5XG4gICAgfSkpO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdtdWx0aXBsZSBhc3NldHMgdW5kZXIgdGhlIHNhbWUgcGFyZW50Jyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgQXNzZXQoc3RhY2ssICdNeURpcmVjdG9yeTEnLCB7IHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5JykgfSk7XG4gICAgbmV3IEFzc2V0KHN0YWNrLCAnTXlEaXJlY3RvcnkyJywgeyBwYXRoOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnc2FtcGxlLWFzc2V0LWRpcmVjdG9yeScpIH0pO1xuXG4gICAgLy8gVEhFTjogbm8gZXJyb3JcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdpc1ppcEFyY2hpdmUgaW5kaWNhdGVzIGlmIHRoZSBhc3NldCByZXByZXNlbnRzIGEgLnppcCBmaWxlIChlaXRoZXIgZXhwbGljaXRseSBvciB2aWEgWmlwRGlyZWN0b3J5IHBhY2thZ2luZyknKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IG5vblppcEFzc2V0ID0gbmV3IEFzc2V0KHN0YWNrLCAnTm9uWmlwQXNzZXQnLCB7XG4gICAgICBwYXRoOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnc2FtcGxlLWFzc2V0LWRpcmVjdG9yeScsICdzYW1wbGUtYXNzZXQtZmlsZS50eHQnKVxuICAgIH0pO1xuXG4gICAgY29uc3QgemlwRGlyZWN0b3J5QXNzZXQgPSBuZXcgQXNzZXQoc3RhY2ssICdaaXBEaXJlY3RvcnlBc3NldCcsIHtcbiAgICAgIHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5JylcbiAgICB9KTtcblxuICAgIGNvbnN0IHppcEZpbGVBc3NldCA9IG5ldyBBc3NldChzdGFjaywgJ1ppcEZpbGVBc3NldCcsIHtcbiAgICAgIHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5JywgJ3NhbXBsZS16aXAtYXNzZXQuemlwJylcbiAgICB9KTtcblxuICAgIGNvbnN0IGphckZpbGVBc3NldCA9IG5ldyBBc3NldChzdGFjaywgJ0phckZpbGVBc3NldCcsIHtcbiAgICAgIHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICdzYW1wbGUtYXNzZXQtZGlyZWN0b3J5JywgJ3NhbXBsZS1qYXItYXNzZXQuamFyJylcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICB0ZXN0LmVxdWFsKG5vblppcEFzc2V0LmlzWmlwQXJjaGl2ZSwgZmFsc2UpO1xuICAgIHRlc3QuZXF1YWwoemlwRGlyZWN0b3J5QXNzZXQuaXNaaXBBcmNoaXZlLCB0cnVlKTtcbiAgICB0ZXN0LmVxdWFsKHppcEZpbGVBc3NldC5pc1ppcEFyY2hpdmUsIHRydWUpO1xuICAgIHRlc3QuZXF1YWwoamFyRmlsZUFzc2V0LmlzWmlwQXJjaGl2ZSwgdHJ1ZSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2FkZFJlc291cmNlTWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gYWRkIENGTiBtZXRhZGF0YSB0byByZXNvdXJjZXMnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIHN0YWNrLm5vZGUuc2V0Q29udGV4dChjeGFwaS5BU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9FTkFCTEVEX0NPTlRFWFQsIHRydWUpO1xuXG4gICAgY29uc3QgbG9jYXRpb24gPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnc2FtcGxlLWFzc2V0LWRpcmVjdG9yeScpO1xuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IGNkay5DZm5SZXNvdXJjZShzdGFjaywgJ015UmVzb3VyY2UnLCB7IHR5cGU6ICdNeTo6UmVzb3VyY2U6OlR5cGUnIH0pO1xuICAgIGNvbnN0IGFzc2V0ID0gbmV3IEFzc2V0KHN0YWNrLCAnTXlBc3NldCcsIHsgcGF0aDogbG9jYXRpb24gfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXNzZXQuYWRkUmVzb3VyY2VNZXRhZGF0YShyZXNvdXJjZSwgJ1Byb3BOYW1lJyk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ015OjpSZXNvdXJjZTo6VHlwZScsIHtcbiAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgIFwiYXdzOmFzc2V0OnBhdGhcIjogJ2Fzc2V0LjZiODRiODcyNDNhNGEwMWM1OTJkNzhlMWZkMzg1NWM0YmZlZjM5MzI4Y2QwYTQ1MGNjOTdlODE3MTdmZWEyYTInLFxuICAgICAgICBcImF3czphc3NldDpwcm9wZXJ0eVwiOiBcIlByb3BOYW1lXCJcbiAgICAgIH1cbiAgICB9LCBSZXNvdXJjZVBhcnQuQ29tcGxldGVEZWZpbml0aW9uKSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2Fzc2V0IG1ldGFkYXRhIGlzIG9ubHkgZW1pdHRlZCBpZiBBU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9FTkFCTEVEX0NPTlRFWFQgaXMgZGVmaW5lZCcodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBjZGsuQ2ZuUmVzb3VyY2Uoc3RhY2ssICdNeVJlc291cmNlJywgeyB0eXBlOiAnTXk6OlJlc291cmNlOjpUeXBlJyB9KTtcbiAgICBjb25zdCBhc3NldCA9IG5ldyBBc3NldChzdGFjaywgJ015QXNzZXQnLCB7IHBhdGg6IFNBTVBMRV9BU1NFVF9ESVIgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXNzZXQuYWRkUmVzb3VyY2VNZXRhZGF0YShyZXNvdXJjZSwgJ1Byb3BOYW1lJyk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS5ub3RUbyhoYXZlUmVzb3VyY2UoJ015OjpSZXNvdXJjZTo6VHlwZScsIHtcbiAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgIFwiYXdzOmFzc2V0OnBhdGhcIjogU0FNUExFX0FTU0VUX0RJUixcbiAgICAgICAgXCJhd3M6YXNzZXQ6cHJvcGVydHlcIjogXCJQcm9wTmFtZVwiXG4gICAgICB9XG4gICAgfSwgUmVzb3VyY2VQYXJ0LkNvbXBsZXRlRGVmaW5pdGlvbikpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ3N0YWdpbmcnOiB7XG5cbiAgICAnY29weSBmaWxlIGFzc2V0cyB1bmRlciA8b3V0ZGlyPi8ke2ZpbmdlcnByaW50fS5leHQnKHRlc3Q6IFRlc3QpIHtcbiAgICAgIGNvbnN0IHRlbXBkaXIgPSBta2R0ZW1wU3luYygpO1xuICAgICAgcHJvY2Vzcy5jaGRpcih0ZW1wZGlyKTsgLy8gY2hhbmdlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHNvbWV3aGVyZSBpbiAvdG1wXG5cbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBhcHAgPSBuZXcgQXBwKHsgb3V0ZGlyOiB0ZW1wZGlyIH0pO1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnc3RhY2snKTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgbmV3IEFzc2V0KHN0YWNrLCAnWmlwRmlsZScsIHtcbiAgICAgICAgcGF0aDogcGF0aC5qb2luKFNBTVBMRV9BU1NFVF9ESVIsICdzYW1wbGUtemlwLWFzc2V0LnppcCcpXG4gICAgICB9KTtcblxuICAgICAgbmV3IEFzc2V0KHN0YWNrLCAnVGV4dEZpbGUnLCB7XG4gICAgICAgIHBhdGg6IHBhdGguam9pbihTQU1QTEVfQVNTRVRfRElSLCAnc2FtcGxlLWFzc2V0LWZpbGUudHh0JylcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBhcHAuc3ludGgoKTtcbiAgICAgIHRlc3Qub2soZnMuZXhpc3RzU3luYyh0ZW1wZGlyKSk7XG4gICAgICB0ZXN0Lm9rKGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHRlbXBkaXIsICdhc3NldC5hN2E3OWNkZjg0YjgwMmVhOGIxOTgwNTlmZjg5OWNmZmMwOTVhMWI5NjA2ZTkxOWY5OGUwNWJmODA3Nzk3NTZiLnppcCcpKSk7XG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgJ2NvcHkgZGlyZWN0b3J5IHVuZGVyIC5hc3NldHMvZmluZ2VycHJpbnQvKionKHRlc3Q6IFRlc3QpIHtcbiAgICAgIGNvbnN0IHRlbXBkaXIgPSBta2R0ZW1wU3luYygpO1xuICAgICAgcHJvY2Vzcy5jaGRpcih0ZW1wZGlyKTsgLy8gY2hhbmdlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHNvbWV3aGVyZSBpbiAvdG1wXG5cbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBhcHAgPSBuZXcgQXBwKHsgb3V0ZGlyOiB0ZW1wZGlyIH0pO1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnc3RhY2snKTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgbmV3IEFzc2V0KHN0YWNrLCAnWmlwRGlyZWN0b3J5Jywge1xuICAgICAgICBwYXRoOiBTQU1QTEVfQVNTRVRfRElSXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgYXBwLnN5bnRoKCk7XG4gICAgICB0ZXN0Lm9rKGZzLmV4aXN0c1N5bmModGVtcGRpcikpO1xuICAgICAgY29uc3QgaGFzaCA9ICdhc3NldC42Yjg0Yjg3MjQzYTRhMDFjNTkyZDc4ZTFmZDM4NTVjNGJmZWYzOTMyOGNkMGE0NTBjYzk3ZTgxNzE3ZmVhMmEyJztcbiAgICAgIHRlc3Qub2soZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4odGVtcGRpciwgaGFzaCwgJ3NhbXBsZS1hc3NldC1maWxlLnR4dCcpKSk7XG4gICAgICB0ZXN0Lm9rKGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHRlbXBkaXIsIGhhc2gsICdzYW1wbGUtamFyLWFzc2V0LmphcicpKSk7XG4gICAgICBmcy5yZWFkZGlyU3luYyh0ZW1wZGlyKTtcbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICAnc3RhZ2luZyBwYXRoIGlzIHJlbGF0aXZlIGlmIHRoZSBkaXIgaXMgYmVsb3cgdGhlIHdvcmtpbmcgZGlyZWN0b3J5Jyh0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3QgdGVtcGRpciA9IG1rZHRlbXBTeW5jKCk7XG4gICAgICBwcm9jZXNzLmNoZGlyKHRlbXBkaXIpOyAvLyBjaGFuZ2UgY3VycmVudCBkaXJlY3RvcnkgdG8gc29tZXdoZXJlIGluIC90bXBcblxuICAgICAgY29uc3Qgc3RhZ2luZyA9ICcubXktYXdlc29tZS1zdGFnaW5nLWRpcmVjdG9yeSc7XG4gICAgICBjb25zdCBhcHAgPSBuZXcgQXBwKHtcbiAgICAgICAgb3V0ZGlyOiBzdGFnaW5nLFxuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgW2N4YXBpLkFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0VOQUJMRURfQ09OVEVYVF06ICd0cnVlJyxcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ3N0YWNrJyk7XG5cbiAgICAgIGNvbnN0IHJlc291cmNlID0gbmV3IGNkay5DZm5SZXNvdXJjZShzdGFjaywgJ015UmVzb3VyY2UnLCB7IHR5cGU6ICdNeTo6UmVzb3VyY2U6OlR5cGUnIH0pO1xuICAgICAgY29uc3QgYXNzZXQgPSBuZXcgQXNzZXQoc3RhY2ssICdNeUFzc2V0JywgeyBwYXRoOiBTQU1QTEVfQVNTRVRfRElSIH0pO1xuXG4gICAgICAvLyBXSEVOXG4gICAgICBhc3NldC5hZGRSZXNvdXJjZU1ldGFkYXRhKHJlc291cmNlLCAnUHJvcE5hbWUnKTtcblxuICAgICAgY29uc3QgdGVtcGxhdGUgPSBTeW50aFV0aWxzLnN5bnRoZXNpemUoc3RhY2spLnRlbXBsYXRlO1xuICAgICAgdGVzdC5kZWVwRXF1YWwodGVtcGxhdGUuUmVzb3VyY2VzLk15UmVzb3VyY2UuTWV0YWRhdGEsIHtcbiAgICAgICAgXCJhd3M6YXNzZXQ6cGF0aFwiOiBgYXNzZXQuNmI4NGI4NzI0M2E0YTAxYzU5MmQ3OGUxZmQzODU1YzRiZmVmMzkzMjhjZDBhNDUwY2M5N2U4MTcxN2ZlYTJhMmAsXG4gICAgICAgIFwiYXdzOmFzc2V0OnByb3BlcnR5XCI6IFwiUHJvcE5hbWVcIlxuICAgICAgfSk7XG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgJ2lmIHN0YWdpbmcgaXMgZGlzYWJsZWQsIGFzc2V0IHBhdGggaXMgYWJzb2x1dGUnKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFnaW5nID0gcGF0aC5yZXNvbHZlKG1rZHRlbXBTeW5jKCkpO1xuICAgICAgY29uc3QgYXBwID0gbmV3IEFwcCh7XG4gICAgICAgIG91dGRpcjogc3RhZ2luZyxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIFtjeGFwaS5ESVNBQkxFX0FTU0VUX1NUQUdJTkdfQ09OVEVYVF06ICd0cnVlJyxcbiAgICAgICAgICBbY3hhcGkuQVNTRVRfUkVTT1VSQ0VfTUVUQURBVEFfRU5BQkxFRF9DT05URVhUXTogJ3RydWUnLFxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnc3RhY2snKTtcblxuICAgICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgY2RrLkNmblJlc291cmNlKHN0YWNrLCAnTXlSZXNvdXJjZScsIHsgdHlwZTogJ015OjpSZXNvdXJjZTo6VHlwZScgfSk7XG4gICAgICBjb25zdCBhc3NldCA9IG5ldyBBc3NldChzdGFjaywgJ015QXNzZXQnLCB7IHBhdGg6IFNBTVBMRV9BU1NFVF9ESVIgfSk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIGFzc2V0LmFkZFJlc291cmNlTWV0YWRhdGEocmVzb3VyY2UsICdQcm9wTmFtZScpO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IFN5bnRoVXRpbHMuc3ludGhlc2l6ZShzdGFjaykudGVtcGxhdGU7XG4gICAgICB0ZXN0LmRlZXBFcXVhbCh0ZW1wbGF0ZS5SZXNvdXJjZXMuTXlSZXNvdXJjZS5NZXRhZGF0YSwge1xuICAgICAgICBcImF3czphc3NldDpwYXRoXCI6IFNBTVBMRV9BU1NFVF9ESVIsXG4gICAgICAgIFwiYXdzOmFzc2V0OnByb3BlcnR5XCI6IFwiUHJvcE5hbWVcIlxuICAgICAgfSk7XG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgJ2NkayBtZXRhZGF0YSBwb2ludHMgdG8gc3RhZ2VkIGFzc2V0Jyh0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnc3RhY2snKTtcbiAgICAgIG5ldyBBc3NldChzdGFjaywgJ015QXNzZXQnLCB7IHBhdGg6IFNBTVBMRV9BU1NFVF9ESVIgfSk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhcHAuc3ludGgoKTtcbiAgICAgIGNvbnN0IGFydGlmYWN0ID0gc2Vzc2lvbi5nZXRTdGFjayhzdGFjay5zdGFja05hbWUpO1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhcnRpZmFjdC5tYW5pZmVzdC5tZXRhZGF0YSB8fCB7fTtcbiAgICAgIGNvbnN0IG1kID0gT2JqZWN0LnZhbHVlcyhtZXRhZGF0YSlbMF0hWzBdIS5kYXRhO1xuICAgICAgdGVzdC5kZWVwRXF1YWwobWQucGF0aCwgJ2Fzc2V0LjZiODRiODcyNDNhNGEwMWM1OTJkNzhlMWZkMzg1NWM0YmZlZjM5MzI4Y2QwYTQ1MGNjOTdlODE3MTdmZWEyYTInKTtcbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH1cblxuICB9XG59O1xuXG5mdW5jdGlvbiBta2R0ZW1wU3luYygpIHtcbiAgcmV0dXJuIGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ3Rlc3QuYXNzZXRzJykpO1xufVxuIl19 |
@@ -23,3 +23,3 @@ { | ||
"strictNullChecks": true, | ||
"strictPropertyInitialization": false, | ||
"strictPropertyInitialization": true, | ||
"stripInternal": true, | ||
@@ -26,0 +26,0 @@ "target": "ES2017", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
144562
1094
Updated@aws-cdk/assets@^1.12.0
Updated@aws-cdk/aws-iam@^1.12.0
Updated@aws-cdk/aws-s3@^1.12.0
Updated@aws-cdk/core@^1.12.0
Updated@aws-cdk/cx-api@^1.12.0