@aws-solutions-constructs/core 2.78.1 → 2.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -14,14 +14,17 @@
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.CloudFrontDistributionForApiGateway = CloudFrontDistributionForApiGateway;
|
|
16
16
|
exports.createCloudFrontDistributionForS3 = createCloudFrontDistributionForS3;
|
|
17
|
+
exports.createCloudFrontOaiDistributionForS3 = createCloudFrontOaiDistributionForS3;
|
|
17
18
|
exports.CloudFrontDistributionForMediaStore = CloudFrontDistributionForMediaStore;
|
|
18
19
|
exports.CloudFrontOriginAccessIdentity = CloudFrontOriginAccessIdentity;
|
|
19
20
|
exports.CheckCloudFrontProps = CheckCloudFrontProps;
|
|
21
|
+
exports.CheckCloudfrontS3Props = CheckCloudfrontS3Props;
|
|
20
22
|
/*
|
|
21
23
|
* The functions found here in the core library are for internal use and can be changed
|
|
22
24
|
* or removed outside of a major release. We recommend against calling them directly from client code.
|
|
23
25
|
*/
|
|
24
26
|
const cloudfront = require("aws-cdk-lib/aws-cloudfront");
|
|
27
|
+
const origins = require("aws-cdk-lib/aws-cloudfront-origins");
|
|
25
28
|
const s3 = require("aws-cdk-lib/aws-s3");
|
|
26
29
|
const cdk = require("aws-cdk-lib");
|
|
27
30
|
const cloudfront_distribution_defaults_1 = require("./cloudfront-distribution-defaults");
|
|
@@ -125,6 +128,56 @@ function createCloudFrontDistributionForS3(scope, id, props) {
|
|
|
125
128
|
originAccessControl
|
|
126
129
|
};
|
|
127
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
133
|
+
*/
|
|
134
|
+
function createCloudFrontOaiDistributionForS3(scope, props) {
|
|
135
|
+
const httpSecurityHeaders = props.httpSecurityHeaders ?? true;
|
|
136
|
+
const cloudfrontFunction = getCloudfrontFunction(httpSecurityHeaders, scope);
|
|
137
|
+
if (props.sourceBucket.isWebsite) {
|
|
138
|
+
throw new Error(`aws-cloudfront-oai-s3 has been provided a source bucket with website hosting enabled, which this construct
|
|
139
|
+
does not support. This requires both the bucket and its objects to be public. AWS strongly recommends against configuring
|
|
140
|
+
buckets and objects for public access. As such a configuration uses neither OAC nor OAI, it can be launched with the
|
|
141
|
+
aws-cloudfron-s3 construct in any region.`);
|
|
142
|
+
}
|
|
143
|
+
const getLoggingBucketResponse = getLoggingBucket(scope, {
|
|
144
|
+
cloudFrontDistributionProps: props.cloudFrontDistributionProps,
|
|
145
|
+
cloudFrontLoggingBucketProps: props.cloudFrontLoggingBucketProps,
|
|
146
|
+
cloudFrontLoggingBucketS3AccessLogBucketProps: props.cloudFrontLoggingBucketS3AccessLogBucketProps,
|
|
147
|
+
enableS3AccessLogs: props.logCloudFrontAccessLog
|
|
148
|
+
});
|
|
149
|
+
let origin;
|
|
150
|
+
if (props.originPath) {
|
|
151
|
+
origin = origins.S3BucketOrigin.withOriginAccessIdentity(props.sourceBucket, { originPath: props.originPath });
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
origin = origins.S3BucketOrigin.withOriginAccessIdentity(props.sourceBucket);
|
|
155
|
+
}
|
|
156
|
+
const defaultprops = (0, cloudfront_distribution_defaults_1.DefaultCloudFrontWebDistributionForS3Props)(origin, getLoggingBucketResponse.logBucket, httpSecurityHeaders, cloudfrontFunction, props.responseHeadersPolicyProps ?
|
|
157
|
+
new cloudfront.ResponseHeadersPolicy(scope, 'ResponseHeadersPolicy', props.responseHeadersPolicyProps) :
|
|
158
|
+
undefined);
|
|
159
|
+
const cfprops = (0, utils_1.consolidateProps)(defaultprops, props.cloudFrontDistributionProps);
|
|
160
|
+
// Create the Cloudfront Distribution
|
|
161
|
+
const cfDistribution = new cloudfront.Distribution(scope, 'CloudFrontDistribution', cfprops);
|
|
162
|
+
updateSecurityPolicy(cfDistribution);
|
|
163
|
+
// Extract the CfnBucketPolicy from the sourceBucket
|
|
164
|
+
const bucketPolicy = props.sourceBucket.policy;
|
|
165
|
+
// the lack of a bucketPolicy means the bucket was imported from outside the stack so the lack of cfn_nag suppression is not an issue
|
|
166
|
+
if (bucketPolicy) {
|
|
167
|
+
(0, utils_1.addCfnSuppressRules)(bucketPolicy, [
|
|
168
|
+
{
|
|
169
|
+
id: 'F16',
|
|
170
|
+
reason: `Public website bucket policy requires a wildcard principal`
|
|
171
|
+
}
|
|
172
|
+
]);
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
distribution: cfDistribution,
|
|
176
|
+
cloudfrontFunction,
|
|
177
|
+
loggingBucket: getLoggingBucketResponse.logBucket,
|
|
178
|
+
loggingBucketS3AccesssLogBucket: getLoggingBucketResponse.logBucketAccessLogBucket,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
128
181
|
/**
|
|
129
182
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
130
183
|
*/
|
|
@@ -221,4 +274,31 @@ function CheckCloudFrontProps(propsObject) {
|
|
|
221
274
|
throw new Error(errorMessages);
|
|
222
275
|
}
|
|
223
276
|
}
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1kaXN0cmlidXRpb24taGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xvdWRmcm9udC1kaXN0cmlidXRpb24taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFtRUgsa0ZBeUJDO0FBdUJELDhFQWdFQztBQVlELGtGQTJEQztBQUtELHdFQUlDO0FBNERELG9EQVlDO0FBelVEOzs7R0FHRztBQUVILHlEQUF5RDtBQUN6RCx5Q0FBeUM7QUFDekMsbUNBQW1DO0FBR25DLHlGQUk0QztBQUM1QyxtQ0FBeUY7QUFDekYseURBQW1FO0FBQ25FLDZEQUFzRDtBQUN0RCxtREFBOEM7QUFJOUMsb0dBQW9HO0FBQ3BHLFNBQVMsb0JBQW9CLENBQUMsY0FBdUM7SUFDbkUsSUFBQSwyQkFBbUIsRUFBQyxjQUFjLEVBQUU7UUFDbEM7WUFDRSxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFBRSxzS0FBc0s7U0FDL0s7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRUQsMkdBQTJHO0FBQzNHLHNDQUFzQztBQUN0QyxTQUFTLHlCQUF5QixDQUFDLEtBQWdCO0lBQ2pELHFFQUFxRTtJQUNyRSxzRUFBc0U7SUFDdEUsZ0RBQWdEO0lBQ2hELGtEQUFrRDtJQUNsRCxNQUFNLFVBQVUsR0FBRyx5QkFBeUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUU5RCxPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7UUFDOUQsWUFBWSxFQUFFLFVBQVU7UUFDeEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLDRCQUE0QjtZQUNuRSxpQ0FBaUM7WUFDakMsa0NBQWtDO1lBQ2xDLG1HQUFtRztZQUNuRyxpSkFBaUo7WUFDakoseUdBQXlHO1lBQ3pHLDBEQUEwRDtZQUMx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O0lBRXZCLElBQUksV0FBVyxDQUFDLHlCQUF5QixLQUFLLEtBQUssSUFBSSxXQUFXLENBQUMsMEJBQTBCLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQztRQUN2SCxhQUFhLElBQUksaUhBQWlILENBQUM7UUFDbkksVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBhcGkgZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0ICogYXMgbWVkaWFzdG9yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbWVkaWFzdG9yZSc7XG5pbXBvcnQge1xuICBEZWZhdWx0Q2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbkZvclMzUHJvcHMsXG4gIERlZmF1bHRDbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uRm9yQXBpR2F0ZXdheVByb3BzLFxuICBEZWZhdWx0Q2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvck1lZGlhU3RvcmVQcm9wc1xufSBmcm9tICcuL2Nsb3VkZnJvbnQtZGlzdHJpYnV0aW9uLWRlZmF1bHRzJztcbmltcG9ydCB7IGFkZENmblN1cHByZXNzUnVsZXMsIGNvbnNvbGlkYXRlUHJvcHMsIGdlbmVyYXRlUGh5c2ljYWxPYWNOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVDbG91ZEZyb250TG9nZ2luZ0J1Y2tldCB9IGZyb20gJy4vczMtYnVja2V0LWhlbHBlcic7XG5pbXBvcnQgeyBEZWZhdWx0UzNQcm9wcyB9IGZyb20gJy4vczMtYnVja2V0LWRlZmF1bHRzJztcbmltcG9ydCB7IFMzT2FjT3JpZ2luIH0gZnJvbSAnLi9zMy1vYWMtb3JpZ2luJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vLyBPdmVycmlkZSBDZm5fTmFnIHJ1bGU6IENsb3VkZnJvbnQgVExTLTEuMiBydWxlIChodHRwczovL2dpdGh1Yi5jb20vc3RlbGxpZ2VudC9jZm5fbmFnL2lzc3Vlcy8zODQpXG5mdW5jdGlvbiB1cGRhdGVTZWN1cml0eVBvbGljeShjZkRpc3RyaWJ1dGlvbjogY2xvdWRmcm9udC5EaXN0cmlidXRpb24pIHtcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZkRpc3RyaWJ1dGlvbiwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzcwJyxcbiAgICAgIHJlYXNvbjogYFNpbmNlIHRoZSBkaXN0cmlidXRpb24gdXNlcyB0aGUgQ2xvdWRGcm9udCBkb21haW4gbmFtZSwgQ2xvdWRGcm9udCBhdXRvbWF0aWNhbGx5IHNldHMgdGhlIHNlY3VyaXR5IHBvbGljeSB0byBUTFN2MSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBNaW5pbXVtUHJvdG9jb2xWZXJzaW9uYFxuICAgIH1cbiAgXSk7XG5cbiAgcmV0dXJuIGNmRGlzdHJpYnV0aW9uO1xufVxuXG4vLyBDbG91ZGZyb250IGZ1bmN0aW9uIHRvIGluc2VydCB0aGUgSFRUUCBTZWN1cml0eSBIZWFkZXJzIGludG8gdGhlIHJlc3BvbnNlIGNvbWluZyBmcm9tIHRoZSBvcmlnaW4gc2VydmVyc1xuLy8gYW5kIGJlZm9yZSBpdCBpcyBzZW50IHRvIHRoZSBjbGllbnRcbmZ1bmN0aW9uIGRlZmF1bHRDbG91ZGZyb250RnVuY3Rpb24oc2NvcGU6IENvbnN0cnVjdCk6IGNsb3VkZnJvbnQuRnVuY3Rpb24ge1xuICAvLyBnZW5lcmF0ZSBhIHN0YWJsZSB1bmlxdWUgaWQgZm9yIHRoZSBjbG91ZGZyb250IGZ1bmN0aW9uIGFuZCB1c2UgaXRcbiAgLy8gYm90aCBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIHRoZSBsb2dpY2FsIGlkIG9mIHRoZSBmdW5jdGlvbiBzbyBpZlxuICAvLyBpdCBpcyBjaGFuZ2VkIHRoZSBmdW5jdGlvbiB3aWxsIGJlIHJlY3JlYXRlZC5cbiAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMTU1MjNcbiAgY29uc3QgZnVuY3Rpb25JZCA9IGBTZXRIdHRwU2VjdXJpdHlIZWFkZXJzJHtzY29wZS5ub2RlLmFkZHJ9YDtcblxuICByZXR1cm4gbmV3IGNsb3VkZnJvbnQuRnVuY3Rpb24oc2NvcGUsIFwiU2V0SHR0cFNlY3VyaXR5SGVhZGVyc1wiLCB7XG4gICAgZnVuY3Rpb25OYW1lOiBmdW5jdGlvbklkLFxuICAgIGNvZGU6IGNsb3VkZnJvbnQuRnVuY3Rpb25Db2RlLmZyb21JbmxpbmUoXCJmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7IFwiICtcbiAgICAgIFwidmFyIHJlc3BvbnNlID0gZXZlbnQucmVzcG9uc2U7IFwiICtcbiAgICAgIFwidmFyIGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOyBcIiArXG4gICAgICBcImhlYWRlcnNbJ3N0cmljdC10cmFuc3BvcnQtc2VjdXJpdHknXSA9IHsgdmFsdWU6ICdtYXgtYWdlPTYzMDcyMDAwOyBpbmNsdWRlU3ViZG9tYWluczsgcHJlbG9hZCd9OyBcIiArXG4gICAgICBcImhlYWRlcnNbJ2NvbnRlbnQtc2VjdXJpdHktcG9saWN5J10gPSB7IHZhbHVlOiBcXFwiZGVmYXVsdC1zcmMgJ25vbmUnOyBpbWctc3JjICdzZWxmJzsgc2NyaXB0LXNyYyAnc2VsZic7IHN0eWxlLXNyYyAnc2VsZic7IG9iamVjdC1zcmMgJ25vbmUnXFxcIn07IFwiICtcbiAgICAgIFwiaGVhZGVyc1sneC1jb250ZW50LXR5cGUtb3B0aW9ucyddID0geyB2YWx1ZTogJ25vc25pZmYnfTsgaGVhZGVyc1sneC1mcmFtZS1vcHRpb25zJ10gPSB7dmFsdWU6ICdERU5ZJ307IFwiICtcbiAgICAgIFwiaGVhZGVyc1sneC14c3MtcHJvdGVjdGlvbiddID0ge3ZhbHVlOiAnMTsgbW9kZT1ibG9jayd9OyBcIiArXG4gICAgICBcInJldHVybiByZXNwb25zZTsgfVwiKVxuICB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yQXBpR2F0ZXdheVJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbixcbiAgcmVhZG9ubHkgY2xvdWRmcm9udEZ1bmN0aW9uPzogY2xvdWRmcm9udC5GdW5jdGlvbixcbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yQXBpR2F0ZXdheShzY29wZTogQ29uc3RydWN0LFxuICBhcGlFbmRQb2ludDogYXBpLlJlc3RBcGksXG4gIGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcz86IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uUHJvcHMgfCBhbnksXG4gIGh0dHBTZWN1cml0eUhlYWRlcnM6IGJvb2xlYW4gPSB0cnVlLFxuICBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG4gIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzPzogY2xvdWRmcm9udC5SZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wc1xuKTogQ2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvckFwaUdhdGV3YXlSZXNwb25zZSB7XG5cbiAgY29uc3QgY2xvdWRmcm9udEZ1bmN0aW9uID0gZ2V0Q2xvdWRmcm9udEZ1bmN0aW9uKGh0dHBTZWN1cml0eUhlYWRlcnMsIHNjb3BlKTtcblxuICBjb25zdCBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UgPSBnZXRMb2dnaW5nQnVja2V0KHNjb3BlLCAgeyBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzLCBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMgfSk7XG5cbiAgY29uc3QgZGVmYXVsdHByb3BzID0gRGVmYXVsdENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb25Gb3JBcGlHYXRld2F5UHJvcHMoYXBpRW5kUG9pbnQsXG4gICAgZ2V0TG9nZ2luZ0J1Y2tldFJlc3BvbnNlLmxvZ0J1Y2tldCxcbiAgICBodHRwU2VjdXJpdHlIZWFkZXJzLFxuICAgIGNsb3VkZnJvbnRGdW5jdGlvbixcbiAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcyA/IG5ldyBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeShzY29wZSwgJ1Jlc3BvbnNlSGVhZGVyc1BvbGljeScsIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzKSA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IGNmcHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRwcm9wcywgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzKTtcbiAgLy8gQ3JlYXRlIHRoZSBDbG91ZGZyb250IERpc3RyaWJ1dGlvblxuICBjb25zdCBjZkRpc3RyaWJ1dGlvbiA9IG5ldyBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbihzY29wZSwgJ0Nsb3VkRnJvbnREaXN0cmlidXRpb24nLCBjZnByb3BzKTtcbiAgdXBkYXRlU2VjdXJpdHlQb2xpY3koY2ZEaXN0cmlidXRpb24pO1xuXG4gIHJldHVybiB7IGRpc3RyaWJ1dGlvbjogY2ZEaXN0cmlidXRpb24sIGNsb3VkZnJvbnRGdW5jdGlvbiwgbG9nZ2luZ0J1Y2tldDogZ2V0TG9nZ2luZ0J1Y2tldFJlc3BvbnNlLmxvZ0J1Y2tldH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUHJvcHMge1xuICByZWFkb25seSBzb3VyY2VCdWNrZXQ6IHMzLklCdWNrZXQsXG4gIHJlYWRvbmx5IGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcz86IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uUHJvcHMgfCBhbnksXG4gIHJlYWRvbmx5IGh0dHBTZWN1cml0eUhlYWRlcnM/OiBib29sZWFuLFxuICByZWFkb25seSBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG4gIHJlYWRvbmx5ICBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFMzQWNjZXNzTG9nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzXG4gIHJlYWRvbmx5IGxvZ0Nsb3VkRnJvbnRBY2Nlc3NMb2c/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2Uge1xuICByZWFkb25seSBkaXN0cmlidXRpb246IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uLFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0PzogczMuQnVja2V0LFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0UzNBY2Nlc3NzTG9nQnVja2V0PzogczMuQnVja2V0LFxuICByZWFkb25seSBjbG91ZGZyb250RnVuY3Rpb24/OiBjbG91ZGZyb250LkZ1bmN0aW9uLFxuICByZWFkb25seSBvcmlnaW5BY2Nlc3NDb250cm9sPzogY2xvdWRmcm9udC5DZm5PcmlnaW5BY2Nlc3NDb250cm9sLFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzMoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIHByb3BzOiBDcmVhdGVDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzNQcm9wc1xuKTogQ3JlYXRlQ2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2Uge1xuICBjb25zdCBodHRwU2VjdXJpdHlIZWFkZXJzID0gcHJvcHMuaHR0cFNlY3VyaXR5SGVhZGVycyA/PyB0cnVlO1xuICBjb25zdCBjbG91ZGZyb250RnVuY3Rpb24gPSBnZXRDbG91ZGZyb250RnVuY3Rpb24oaHR0cFNlY3VyaXR5SGVhZGVycywgc2NvcGUpO1xuXG4gIGNvbnN0IGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZSA9IGdldExvZ2dpbmdCdWNrZXQoc2NvcGUsIHtcbiAgICBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHM6IHByb3BzLmNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyxcbiAgICBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzOiBwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzLFxuICAgIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UzNBY2Nlc3NMb2dCdWNrZXRQcm9wczogcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRTM0FjY2Vzc0xvZ0J1Y2tldFByb3BzLFxuICAgIGVuYWJsZVMzQWNjZXNzTG9nczogcHJvcHMubG9nQ2xvdWRGcm9udEFjY2Vzc0xvZ1xuICB9KTtcblxuICBsZXQgb3JpZ2luQWNjZXNzQ29udHJvbDtcbiAgbGV0IG9yaWdpblByb3BzID0ge307XG5cbiAgaWYgKCFwcm9wcy5zb3VyY2VCdWNrZXQuaXNXZWJzaXRlKSB7XG4gICAgb3JpZ2luQWNjZXNzQ29udHJvbCA9IG5ldyBjbG91ZGZyb250LkNmbk9yaWdpbkFjY2Vzc0NvbnRyb2woc2NvcGUsICdDbG91ZEZyb250T2FjJywge1xuICAgICAgb3JpZ2luQWNjZXNzQ29udHJvbENvbmZpZzoge1xuICAgICAgICBuYW1lOiBnZW5lcmF0ZVBoeXNpY2FsT2FjTmFtZSgnYXdzLWNsb3VkZnJvbnQtczMtJywgW2lkXSksXG4gICAgICAgIG9yaWdpbkFjY2Vzc0NvbnRyb2xPcmlnaW5UeXBlOiAnczMnLFxuICAgICAgICBzaWduaW5nQmVoYXZpb3I6ICdhbHdheXMnLFxuICAgICAgICBzaWduaW5nUHJvdG9jb2w6ICdzaWd2NCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3JpZ2luIGFjY2VzcyBjb250cm9sIHByb3Zpc2lvbmVkIGJ5IGF3cy1jbG91ZGZyb250LXMzJ1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9yaWdpblByb3BzID0geyBvcmlnaW5BY2Nlc3NDb250cm9sIH07XG4gIH1cblxuICBjb25zdCBvcmlnaW4gPSBuZXcgUzNPYWNPcmlnaW4ocHJvcHMuc291cmNlQnVja2V0LCBvcmlnaW5Qcm9wcyk7XG5cbiAgY29uc3QgZGVmYXVsdHByb3BzID0gRGVmYXVsdENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb25Gb3JTM1Byb3BzKG9yaWdpbixcbiAgICBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LFxuICAgIGh0dHBTZWN1cml0eUhlYWRlcnMsXG4gICAgY2xvdWRmcm9udEZ1bmN0aW9uLFxuICAgIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzID9cbiAgICAgIG5ldyBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeShzY29wZSwgJ1Jlc3BvbnNlSGVhZGVyc1BvbGljeScsIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzKSA6XG4gICAgICB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCBjZnByb3BzID0gY29uc29saWRhdGVQcm9wcyhkZWZhdWx0cHJvcHMsIHByb3BzLmNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyk7XG4gIC8vIENyZWF0ZSB0aGUgQ2xvdWRmcm9udCBEaXN0cmlidXRpb25cbiAgY29uc3QgY2ZEaXN0cmlidXRpb24gPSBuZXcgY2xvdWRmcm9udC5EaXN0cmlidXRpb24oc2NvcGUsICdDbG91ZEZyb250RGlzdHJpYnV0aW9uJywgY2Zwcm9wcyk7XG4gIHVwZGF0ZVNlY3VyaXR5UG9saWN5KGNmRGlzdHJpYnV0aW9uKTtcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5CdWNrZXRQb2xpY3kgZnJvbSB0aGUgc291cmNlQnVja2V0XG4gIGNvbnN0IGJ1Y2tldFBvbGljeSA9IHByb3BzLnNvdXJjZUJ1Y2tldC5wb2xpY3kgYXMgczMuQnVja2V0UG9saWN5O1xuICAvLyB0aGUgbGFjayBvZiBhIGJ1Y2tldFBvbGljeSBtZWFucyB0aGUgYnVja2V0IHdhcyBpbXBvcnRlZCBmcm9tIG91dHNpZGUgdGhlIHN0YWNrIHNvIHRoZSBsYWNrIG9mIGNmbl9uYWcgc3VwcHJlc3Npb24gaXMgbm90IGFuIGlzc3VlXG4gIGlmIChidWNrZXRQb2xpY3kpIHtcbiAgICBhZGRDZm5TdXBwcmVzc1J1bGVzKGJ1Y2tldFBvbGljeSwgW1xuICAgICAge1xuICAgICAgICBpZDogJ0YxNicsXG4gICAgICAgIHJlYXNvbjogYFB1YmxpYyB3ZWJzaXRlIGJ1Y2tldCBwb2xpY3kgcmVxdWlyZXMgYSB3aWxkY2FyZCBwcmluY2lwYWxgXG4gICAgICB9XG4gICAgXSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBkaXN0cmlidXRpb246IGNmRGlzdHJpYnV0aW9uLFxuICAgIGNsb3VkZnJvbnRGdW5jdGlvbixcbiAgICBsb2dnaW5nQnVja2V0OiBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LFxuICAgIGxvZ2dpbmdCdWNrZXRTM0FjY2Vzc3NMb2dCdWNrZXQ6IGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZS5sb2dCdWNrZXRBY2Nlc3NMb2dCdWNrZXQsXG4gICAgb3JpZ2luQWNjZXNzQ29udHJvbH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvck1lZGlhU3RvcmVSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbjogY2xvdWRmcm9udC5EaXN0cmlidXRpb24sXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXQsXG4gIHJlYWRvbmx5IHJlcXVlc3RQb2xpY3k6IGNsb3VkZnJvbnQuT3JpZ2luUmVxdWVzdFBvbGljeSxcbiAgcmVhZG9ubHkgY2xvdWRmcm9udEZ1bmN0aW9uPzogY2xvdWRmcm9udC5GdW5jdGlvblxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yTWVkaWFTdG9yZShzY29wZTogQ29uc3RydWN0LFxuICBtZWRpYVN0b3JlQ29udGFpbmVyOiBtZWRpYXN0b3JlLkNmbkNvbnRhaW5lcixcbiAgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPzogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyB8IGFueSxcbiAgaHR0cFNlY3VyaXR5SGVhZGVyczogYm9vbGVhbiA9IHRydWUsXG4gIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzXG4pOiBDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yTWVkaWFTdG9yZVJlc3BvbnNlIHtcblxuICBsZXQgb3JpZ2luUmVxdWVzdFBvbGljeTogY2xvdWRmcm9udC5PcmlnaW5SZXF1ZXN0UG9saWN5O1xuXG4gIGNvbnN0IGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZSA9IGdldExvZ2dpbmdCdWNrZXQoc2NvcGUsIHsgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLCBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzIH0pO1xuXG4gIGlmIChjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHNcbiAgICAmJiBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMuZGVmYXVsdEJlaGF2aW9yXG4gICAgJiYgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLmRlZmF1bHRCZWhhdmlvci5vcmlnaW5SZXF1ZXN0UG9saWN5KSB7XG4gICAgb3JpZ2luUmVxdWVzdFBvbGljeSA9IGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcy5kZWZhdWx0QmVoYXZpb3Iub3JpZ2luUmVxdWVzdFBvbGljeTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBvcmlnaW5SZXF1ZXN0UG9saWN5UHJvcHM6IGNsb3VkZnJvbnQuT3JpZ2luUmVxdWVzdFBvbGljeVByb3BzID0ge1xuICAgICAgaGVhZGVyQmVoYXZpb3I6IHtcbiAgICAgICAgYmVoYXZpb3I6ICd3aGl0ZWxpc3QnLFxuICAgICAgICBoZWFkZXJzOiBbXG4gICAgICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsXG4gICAgICAgICAgJ0FjY2Vzcy1Db250cm9sLVJlcXVlc3QtTWV0aG9kJyxcbiAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXInLFxuICAgICAgICAgICdPcmlnaW4nXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBxdWVyeVN0cmluZ0JlaGF2aW9yOiB7XG4gICAgICAgIGJlaGF2aW9yOiAnYWxsJ1xuICAgICAgfSxcbiAgICAgIGNvb2tpZUJlaGF2aW9yOiB7XG4gICAgICAgIGJlaGF2aW9yOiAnbm9uZSdcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiAnUG9saWN5IGZvciBDb25zdHJ1Y3RzIENsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JNZWRpYVN0b3JlJyxcbiAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3lOYW1lOiBgJHtjZGsuQXdzLlNUQUNLX05BTUV9LSR7Y2RrLkF3cy5SRUdJT059LUNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JNZWRpYVN0b3JlYFxuICAgIH07XG5cbiAgICBvcmlnaW5SZXF1ZXN0UG9saWN5ID0gbmV3IGNsb3VkZnJvbnQuT3JpZ2luUmVxdWVzdFBvbGljeShzY29wZSwgJ0Nsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5Jywgb3JpZ2luUmVxdWVzdFBvbGljeVByb3BzKTtcbiAgfVxuXG4gIGNvbnN0IGNsb3VkZnJvbnRGdW5jdGlvbiA9IGdldENsb3VkZnJvbnRGdW5jdGlvbihodHRwU2VjdXJpdHlIZWFkZXJzLCBzY29wZSk7XG5cbiAgY29uc3QgZGVmYXVsdHByb3BzID0gRGVmYXVsdENsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JNZWRpYVN0b3JlUHJvcHMoXG4gICAgbWVkaWFTdG9yZUNvbnRhaW5lcixcbiAgICBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LFxuICAgIG9yaWdpblJlcXVlc3RQb2xpY3ksXG4gICAgaHR0cFNlY3VyaXR5SGVhZGVycyxcbiAgICBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHM/LmN1c3RvbUhlYWRlcnMsXG4gICAgY2xvdWRmcm9udEZ1bmN0aW9uLFxuICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzID8gbmV3IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5KHNjb3BlLCAnUmVzcG9uc2VIZWFkZXJzUG9saWN5JywgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMpIDogdW5kZWZpbmVkXG4gICk7XG5cbiAgY29uc3QgY2Zwcm9wczogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdHByb3BzLCBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgQ2xvdWRGcm9udCBEaXN0cmlidXRpb25cbiAgY29uc3QgY2ZEaXN0cmlidXRpb24gPSBuZXcgY2xvdWRmcm9udC5EaXN0cmlidXRpb24oc2NvcGUsICdDbG91ZEZyb250RGlzdHJpYnV0aW9uJywgY2Zwcm9wcyk7XG4gIHVwZGF0ZVNlY3VyaXR5UG9saWN5KGNmRGlzdHJpYnV0aW9uKTtcblxuICByZXR1cm4geyBkaXN0cmlidXRpb246IGNmRGlzdHJpYnV0aW9uLCBsb2dnaW5nQnVja2V0OiBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LCByZXF1ZXN0UG9saWN5OiBvcmlnaW5SZXF1ZXN0UG9saWN5LCBjbG91ZGZyb250RnVuY3Rpb24gfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2xvdWRGcm9udE9yaWdpbkFjY2Vzc0lkZW50aXR5KHNjb3BlOiBDb25zdHJ1Y3QsIGNvbW1lbnQ/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBjbG91ZGZyb250Lk9yaWdpbkFjY2Vzc0lkZW50aXR5KHNjb3BlLCAnQ2xvdWRGcm9udE9yaWdpbkFjY2Vzc0lkZW50aXR5Jywge1xuICAgIGNvbW1lbnQ6IGNvbW1lbnQgPyBjb21tZW50IDogYGFjY2Vzcy1pZGVudGl0eS0ke2Nkay5Bd3MuUkVHSU9OfS0ke2Nkay5Bd3MuU1RBQ0tfTkFNRX1gXG4gIH0pO1xufVxuXG5pbnRlcmZhY2UgR2V0TG9nZ2luZ0J1Y2tldFJlcXVlc3Qge1xuICByZWFkb25seSBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHM6IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uUHJvcHMgfCBhbnksXG4gIHJlYWRvbmx5IGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRTM0FjY2Vzc0xvZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG4gIHJlYWRvbmx5IGVuYWJsZVMzQWNjZXNzTG9ncz86IGJvb2xlYW5cbn1cbmludGVyZmFjZSBHZXRMb2dnaW5nQnVja2V0UmVzcG9uc2Uge1xuICBsb2dCdWNrZXQ/OiBzMy5CdWNrZXQsXG4gIGxvZ0J1Y2tldEFjY2Vzc0xvZ0J1Y2tldD86IHMzLkJ1Y2tldFxufVxuXG5mdW5jdGlvbiBnZXRMb2dnaW5nQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBHZXRMb2dnaW5nQnVja2V0UmVxdWVzdCk6IEdldExvZ2dpbmdCdWNrZXRSZXNwb25zZSB7XG4gIGNvbnN0IGlzTG9nZ2luZ0Rpc2FibGVkID0gcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPy5lbmFibGVMb2dnaW5nID09PSBmYWxzZTtcbiAgY29uc3QgdXNlclN1cHBsaWVkTG9nQnVja2V0ID0gcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPy5sb2dCdWNrZXQ7XG5cbiAgaWYgKHVzZXJTdXBwbGllZExvZ0J1Y2tldCAmJiBwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzKSB7XG4gICAgdGhyb3cgRXJyb3IoJ0VpdGhlciBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMubG9nQnVja2V0IG9yIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHMgY2FuIGJlIHNldC4nKTtcbiAgfVxuXG4gIGxldCBsb2dCdWNrZXQ6IHMzLkJ1Y2tldCB8IHVuZGVmaW5lZDtcbiAgbGV0IGxvZ0J1Y2tlUzNBY2Nlc3NMb2dCdWNrZXR0OiBzMy5CdWNrZXQgfCB1bmRlZmluZWQ7XG4gIGlmIChpc0xvZ2dpbmdEaXNhYmxlZCkge1xuICAgIGxvZ0J1Y2tldCA9IHVuZGVmaW5lZDtcbiAgfSBlbHNlIGlmICh1c2VyU3VwcGxpZWRMb2dCdWNrZXQpIHtcbiAgICBsb2dCdWNrZXQgPSB1c2VyU3VwcGxpZWRMb2dCdWNrZXQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY3JlYXRlQnVja2V0UmVzcG9uc2UgPSBjcmVhdGVDbG91ZEZyb250TG9nZ2luZ0J1Y2tldChcbiAgICAgIHNjb3BlLFxuICAgICAgJ0Nsb3VkZnJvbnRMb2dnaW5nQnVja2V0JyxcbiAgICAgIHtcbiAgICAgICAgLy8gQnVja2V0cyB1c2VkIGZvciBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBsb2dnaW5nIHJlcXVpcmUgQUNMcyB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQsIHNvIHdlIGFwcGx5IHRoaXMgb2JqZWN0T3duZXJzaGlwXG4gICAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wczogY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzLCB7XG4gICAgICAgICAgb2JqZWN0T3duZXJzaGlwOiBzMy5PYmplY3RPd25lcnNoaXAuT0JKRUNUX1dSSVRFUlxuICAgICAgICB9KSxcbiAgICAgICAgczNBY2Nlc3NMb2dCdWNrZXRQcm9wczogcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRTM0FjY2Vzc0xvZ0J1Y2tldFByb3BzLFxuICAgICAgICBlbmFibGVTM0FjY2Vzc0xvZ3M6IHByb3BzLmVuYWJsZVMzQWNjZXNzTG9nc1xuICAgICAgfSk7XG5cbiAgICBsb2dCdWNrZXQgPSBjcmVhdGVCdWNrZXRSZXNwb25zZS5sb2dCdWNrZXQ7XG4gICAgbG9nQnVja2VTM0FjY2Vzc0xvZ0J1Y2tldHQgPSBjcmVhdGVCdWNrZXRSZXNwb25zZS5zM0FjY2Vzc0xvZ0J1Y2tldDtcbiAgICBjb25zdCBsb2dnaW5nQnVja2V0UmVzb3VyY2UgPSBsb2dCdWNrZXQubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgczMuQ2ZuQnVja2V0O1xuICAgIGxvZ2dpbmdCdWNrZXRSZXNvdXJjZS5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdBY2Nlc3NDb250cm9sJywgJ0xvZ0RlbGl2ZXJ5V3JpdGUnKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGxvZ0J1Y2tldCxcbiAgICBsb2dCdWNrZXRBY2Nlc3NMb2dCdWNrZXQ6IGxvZ0J1Y2tlUzNBY2Nlc3NMb2dCdWNrZXR0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsb3VkZnJvbnRGdW5jdGlvbihodHRwU2VjdXJpdHlIZWFkZXJzOiBib29sZWFuLCBzY29wZTogQ29uc3RydWN0KSB7XG4gIHJldHVybiBodHRwU2VjdXJpdHlIZWFkZXJzID8gZGVmYXVsdENsb3VkZnJvbnRGdW5jdGlvbihzY29wZSkgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udFByb3BzIHtcbiAgcmVhZG9ubHkgaW5zZXJ0SHR0cFNlY3VyaXR5SGVhZGVycz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzPzogY2xvdWRmcm9udC5SZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrQ2xvdWRGcm9udFByb3BzKHByb3BzT2JqZWN0OiBDbG91ZEZyb250UHJvcHMgfCBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAocHJvcHNPYmplY3QuaW5zZXJ0SHR0cFNlY3VyaXR5SGVhZGVycyAhPT0gZmFsc2UgJiYgcHJvcHNPYmplY3QucmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM/LnNlY3VyaXR5SGVhZGVyc0JlaGF2aW9yKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAncmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMuc2VjdXJpdHlIZWFkZXJzQmVoYXZpb3IgY2FuIG9ubHkgYmUgcGFzc2VkIGlmIGh0dHBTZWN1cml0eUhlYWRlcnMgaXMgc2V0IHRvIGBmYWxzZWAuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvckZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXMpO1xuICB9XG59XG4iXX0=
|
|
277
|
+
function CheckCloudfrontS3Props(props) {
|
|
278
|
+
let errorMessages = '';
|
|
279
|
+
let errorFound = false;
|
|
280
|
+
if ((props.logS3AccessLogs === false) && props.bucketProps?.serverAccessLogsBucket) {
|
|
281
|
+
errorMessages += 'Error - logS3AccessLogs is false, but a log bucket was provided in bucketProps.\n';
|
|
282
|
+
errorFound = true;
|
|
283
|
+
}
|
|
284
|
+
if (props.loggingBucketProps && props.bucketProps?.serverAccessLogsBucket) {
|
|
285
|
+
errorMessages += 'Error - bothlog bucket props and an existing log bucket were provided.\n';
|
|
286
|
+
errorFound = true;
|
|
287
|
+
}
|
|
288
|
+
if (props.cloudFrontLoggingBucketAccessLogBucketProps && props.cloudFrontLoggingBucketProps?.serverAccessLogsBucket) {
|
|
289
|
+
errorMessages += 'Error - an existing CloudFront log bucket S3 access log bucket and cloudFrontLoggingBucketAccessLogBucketProps were provided\n';
|
|
290
|
+
errorFound = true;
|
|
291
|
+
}
|
|
292
|
+
if (props.cloudFrontLoggingBucketAccessLogBucketProps && props.logCloudFrontAccessLog === false) {
|
|
293
|
+
errorMessages += 'Error - cloudFrontLoggingBucketAccessLogBucketProps were provided but logCloudFrontAccessLog was false\n';
|
|
294
|
+
errorFound = true;
|
|
295
|
+
}
|
|
296
|
+
if (props.cloudFrontLoggingBucketProps?.serverAccessLogsBucket && props.logCloudFrontAccessLog === false) {
|
|
297
|
+
errorMessages += 'Error - props.cloudFrontLoggingBucketProps.serverAccessLogsBucket was provided but logCloudFrontAccessLog was false\n';
|
|
298
|
+
errorFound = true;
|
|
299
|
+
}
|
|
300
|
+
if (errorFound) {
|
|
301
|
+
throw new Error(errorMessages);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1kaXN0cmlidXRpb24taGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xvdWRmcm9udC1kaXN0cmlidXRpb24taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFvRUgsa0ZBeUJDO0FBdUJELDhFQWdFQztBQXVCRCxvRkE4REM7QUFZRCxrRkEyREM7QUFLRCx3RUFJQztBQTRERCxvREFZQztBQVdELHdEQWdDQztBQTFjRDs7O0dBR0c7QUFFSCx5REFBeUQ7QUFDekQsOERBQThEO0FBQzlELHlDQUF5QztBQUN6QyxtQ0FBbUM7QUFHbkMseUZBSTRDO0FBQzVDLG1DQUF5RjtBQUN6Rix5REFBbUU7QUFDbkUsNkRBQXNEO0FBQ3RELG1EQUE4QztBQUk5QyxvR0FBb0c7QUFDcEcsU0FBUyxvQkFBb0IsQ0FBQyxjQUF1QztJQUNuRSxJQUFBLDJCQUFtQixFQUFDLGNBQWMsRUFBRTtRQUNsQztZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUFFLHNLQUFzSztTQUMvSztLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCwyR0FBMkc7QUFDM0csc0NBQXNDO0FBQ3RDLFNBQVMseUJBQXlCLENBQUMsS0FBZ0I7SUFDakQscUVBQXFFO0lBQ3JFLHNFQUFzRTtJQUN0RSxnREFBZ0Q7SUFDaEQsa0RBQWtEO0lBQ2xELE1BQU0sVUFBVSxHQUFHLHlCQUF5QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTlELE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSx3QkFBd0IsRUFBRTtRQUM5RCxZQUFZLEVBQUUsVUFBVTtRQUN4QixJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsNEJBQTRCO1lBQ25FLGlDQUFpQztZQUNqQyxrQ0FBa0M7WUFDbEMsbUdBQW1HO1lBQ25H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bnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBjbG91ZGZyb250IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCAqIGFzIG9yaWdpbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQtb3JpZ2lucyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFwaSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQgKiBhcyBtZWRpYXN0b3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1tZWRpYXN0b3JlJztcbmltcG9ydCB7XG4gIERlZmF1bHRDbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uRm9yUzNQcm9wcyxcbiAgRGVmYXVsdENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb25Gb3JBcGlHYXRld2F5UHJvcHMsXG4gIERlZmF1bHRDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yTWVkaWFTdG9yZVByb3BzXG59IGZyb20gJy4vY2xvdWRmcm9udC1kaXN0cmlidXRpb24tZGVmYXVsdHMnO1xuaW1wb3J0IHsgYWRkQ2ZuU3VwcHJlc3NSdWxlcywgY29uc29saWRhdGVQcm9wcywgZ2VuZXJhdGVQaHlzaWNhbE9hY05hbWUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGNyZWF0ZUNsb3VkRnJvbnRMb2dnaW5nQnVja2V0IH0gZnJvbSAnLi9zMy1idWNrZXQtaGVscGVyJztcbmltcG9ydCB7IERlZmF1bHRTM1Byb3BzIH0gZnJvbSAnLi9zMy1idWNrZXQtZGVmYXVsdHMnO1xuaW1wb3J0IHsgUzNPYWNPcmlnaW4gfSBmcm9tICcuL3MzLW9hYy1vcmlnaW4nO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8vIE92ZXJyaWRlIENmbl9OYWcgcnVsZTogQ2xvdWRmcm9udCBUTFMtMS4yIHJ1bGUgKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGVsbGlnZW50L2Nmbl9uYWcvaXNzdWVzLzM4NClcbmZ1bmN0aW9uIHVwZGF0ZVNlY3VyaXR5UG9saWN5KGNmRGlzdHJpYnV0aW9uOiBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbikge1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGNmRGlzdHJpYnV0aW9uLCBbXG4gICAge1xuICAgICAgaWQ6ICdXNzAnLFxuICAgICAgcmVhc29uOiBgU2luY2UgdGhlIGRpc3RyaWJ1dGlvbiB1c2VzIHRoZSBDbG91ZEZyb250IGRvbWFpbiBuYW1lLCBDbG91ZEZyb250IGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgc2VjdXJpdHkgcG9saWN5IHRvIFRMU3YxIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIE1pbmltdW1Qcm90b2NvbFZlcnNpb25gXG4gICAgfVxuICBdKTtcblxuICByZXR1cm4gY2ZEaXN0cmlidXRpb247XG59XG5cbi8vIENsb3VkZnJvbnQgZnVuY3Rpb24gdG8gaW5zZXJ0IHRoZSBIVFRQIFNlY3VyaXR5IEhlYWRlcnMgaW50byB0aGUgcmVzcG9uc2UgY29taW5nIGZyb20gdGhlIG9yaWdpbiBzZXJ2ZXJzXG4vLyBhbmQgYmVmb3JlIGl0IGlzIHNlbnQgdG8gdGhlIGNsaWVudFxuZnVuY3Rpb24gZGVmYXVsdENsb3VkZnJvbnRGdW5jdGlvbihzY29wZTogQ29uc3RydWN0KTogY2xvdWRmcm9udC5GdW5jdGlvbiB7XG4gIC8vIGdlbmVyYXRlIGEgc3RhYmxlIHVuaXF1ZSBpZCBmb3IgdGhlIGNsb3VkZnJvbnQgZnVuY3Rpb24gYW5kIHVzZSBpdFxuICAvLyBib3RoIGZvciB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGxvZ2ljYWwgaWQgb2YgdGhlIGZ1bmN0aW9uIHNvIGlmXG4gIC8vIGl0IGlzIGNoYW5nZWQgdGhlIGZ1bmN0aW9uIHdpbGwgYmUgcmVjcmVhdGVkLlxuICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xNTUyM1xuICBjb25zdCBmdW5jdGlvbklkID0gYFNldEh0dHBTZWN1cml0eUhlYWRlcnMke3Njb3BlLm5vZGUuYWRkcn1gO1xuXG4gIHJldHVybiBuZXcgY2xvdWRmcm9udC5GdW5jdGlvbihzY29wZSwgXCJTZXRIdHRwU2VjdXJpdHlIZWFkZXJzXCIsIHtcbiAgICBmdW5jdGlvbk5hbWU6IGZ1bmN0aW9uSWQsXG4gICAgY29kZTogY2xvdWRmcm9udC5GdW5jdGlvbkNvZGUuZnJvbUlubGluZShcImZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHsgXCIgK1xuICAgICAgXCJ2YXIgcmVzcG9uc2UgPSBldmVudC5yZXNwb25zZTsgXCIgK1xuICAgICAgXCJ2YXIgaGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7IFwiICtcbiAgICAgIFwiaGVhZGVyc1snc3RyaWN0LXRyYW5zcG9ydC1zZWN1cml0eSddID0geyB2YWx1ZTogJ21heC1hZ2U9NjMwNzIwMDA7IGluY2x1ZGVTdWJkb21haW5zOyBwcmVsb2FkJ307IFwiICtcbiAgICAgIFwiaGVhZGVyc1snY29udGVudC1zZWN1cml0eS1wb2xpY3knXSA9IHsgdmFsdWU6IFxcXCJkZWZhdWx0LXNyYyAnbm9uZSc7IGltZy1zcmMgJ3NlbGYnOyBzY3JpcHQtc3JjICdzZWxmJzsgc3R5bGUtc3JjICdzZWxmJzsgb2JqZWN0LXNyYyAnbm9uZSdcXFwifTsgXCIgK1xuICAgICAgXCJoZWFkZXJzWyd4LWNvbnRlbnQtdHlwZS1vcHRpb25zJ10gPSB7IHZhbHVlOiAnbm9zbmlmZid9OyBoZWFkZXJzWyd4LWZyYW1lLW9wdGlvbnMnXSA9IHt2YWx1ZTogJ0RFTlknfTsgXCIgK1xuICAgICAgXCJoZWFkZXJzWyd4LXhzcy1wcm90ZWN0aW9uJ10gPSB7dmFsdWU6ICcxOyBtb2RlPWJsb2NrJ307IFwiICtcbiAgICAgIFwicmV0dXJuIHJlc3BvbnNlOyB9XCIpXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JBcGlHYXRld2F5UmVzcG9uc2Uge1xuICByZWFkb25seSBkaXN0cmlidXRpb246IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uLFxuICByZWFkb25seSBjbG91ZGZyb250RnVuY3Rpb24/OiBjbG91ZGZyb250LkZ1bmN0aW9uLFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0PzogczMuQnVja2V0XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JBcGlHYXRld2F5KHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGFwaUVuZFBvaW50OiBhcGkuUmVzdEFwaSxcbiAgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPzogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyB8IGFueSxcbiAgaHR0cFNlY3VyaXR5SGVhZGVyczogYm9vbGVhbiA9IHRydWUsXG4gIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzXG4pOiBDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yQXBpR2F0ZXdheVJlc3BvbnNlIHtcblxuICBjb25zdCBjbG91ZGZyb250RnVuY3Rpb24gPSBnZXRDbG91ZGZyb250RnVuY3Rpb24oaHR0cFNlY3VyaXR5SGVhZGVycywgc2NvcGUpO1xuXG4gIGNvbnN0IGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZSA9IGdldExvZ2dpbmdCdWNrZXQoc2NvcGUsICB7IGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHMsIGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyB9KTtcblxuICBjb25zdCBkZWZhdWx0cHJvcHMgPSBEZWZhdWx0Q2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbkZvckFwaUdhdGV3YXlQcm9wcyhhcGlFbmRQb2ludCxcbiAgICBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LFxuICAgIGh0dHBTZWN1cml0eUhlYWRlcnMsXG4gICAgY2xvdWRmcm9udEZ1bmN0aW9uLFxuICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzID8gbmV3IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5KHNjb3BlLCAnUmVzcG9uc2VIZWFkZXJzUG9saWN5JywgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMpIDogdW5kZWZpbmVkXG4gICk7XG5cbiAgY29uc3QgY2Zwcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdHByb3BzLCBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMpO1xuICAvLyBDcmVhdGUgdGhlIENsb3VkZnJvbnQgRGlzdHJpYnV0aW9uXG4gIGNvbnN0IGNmRGlzdHJpYnV0aW9uID0gbmV3IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uKHNjb3BlLCAnQ2xvdWRGcm9udERpc3RyaWJ1dGlvbicsIGNmcHJvcHMpO1xuICB1cGRhdGVTZWN1cml0eVBvbGljeShjZkRpc3RyaWJ1dGlvbik7XG5cbiAgcmV0dXJuIHsgZGlzdHJpYnV0aW9uOiBjZkRpc3RyaWJ1dGlvbiwgY2xvdWRmcm9udEZ1bmN0aW9uLCBsb2dnaW5nQnVja2V0OiBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0fTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzNQcm9wcyB7XG4gIHJlYWRvbmx5IHNvdXJjZUJ1Y2tldDogczMuSUJ1Y2tldCxcbiAgcmVhZG9ubHkgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPzogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyB8IGFueSxcbiAgcmVhZG9ubHkgaHR0cFNlY3VyaXR5SGVhZGVycz86IGJvb2xlYW4sXG4gIHJlYWRvbmx5IGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UzNBY2Nlc3NMb2dCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzLFxuICByZWFkb25seSByZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcz86IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHNcbiAgcmVhZG9ubHkgbG9nQ2xvdWRGcm9udEFjY2Vzc0xvZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzNSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbjogY2xvdWRmcm9udC5EaXN0cmlidXRpb24sXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXQsXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXRTM0FjY2Vzc3NMb2dCdWNrZXQ/OiBzMy5CdWNrZXQsXG4gIHJlYWRvbmx5IGNsb3VkZnJvbnRGdW5jdGlvbj86IGNsb3VkZnJvbnQuRnVuY3Rpb24sXG4gIHJlYWRvbmx5IG9yaWdpbkFjY2Vzc0NvbnRyb2w/OiBjbG91ZGZyb250LkNmbk9yaWdpbkFjY2Vzc0NvbnRyb2wsXG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JTMyhcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgcHJvcHM6IENyZWF0ZUNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JTM1Byb3BzXG4pOiBDcmVhdGVDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzNSZXNwb25zZSB7XG4gIGNvbnN0IGh0dHBTZWN1cml0eUhlYWRlcnMgPSBwcm9wcy5odHRwU2VjdXJpdHlIZWFkZXJzID8/IHRydWU7XG4gIGNvbnN0IGNsb3VkZnJvbnRGdW5jdGlvbiA9IGdldENsb3VkZnJvbnRGdW5jdGlvbihodHRwU2VjdXJpdHlIZWFkZXJzLCBzY29wZSk7XG5cbiAgY29uc3QgZ2V0TG9nZ2luZ0J1Y2tldFJlc3BvbnNlID0gZ2V0TG9nZ2luZ0J1Y2tldChzY29wZSwge1xuICAgIGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wczogcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLFxuICAgIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM6IHByb3BzLmNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHMsXG4gICAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRTM0FjY2Vzc0xvZ0J1Y2tldFByb3BzOiBwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFMzQWNjZXNzTG9nQnVja2V0UHJvcHMsXG4gICAgZW5hYmxlUzNBY2Nlc3NMb2dzOiBwcm9wcy5sb2dDbG91ZEZyb250QWNjZXNzTG9nXG4gIH0pO1xuXG4gIGxldCBvcmlnaW5BY2Nlc3NDb250cm9sO1xuICBsZXQgb3JpZ2luUHJvcHMgPSB7fTtcblxuICBpZiAoIXByb3BzLnNvdXJjZUJ1Y2tldC5pc1dlYnNpdGUpIHtcbiAgICBvcmlnaW5BY2Nlc3NDb250cm9sID0gbmV3IGNsb3VkZnJvbnQuQ2ZuT3JpZ2luQWNjZXNzQ29udHJvbChzY29wZSwgJ0Nsb3VkRnJvbnRPYWMnLCB7XG4gICAgICBvcmlnaW5BY2Nlc3NDb250cm9sQ29uZmlnOiB7XG4gICAgICAgIG5hbWU6IGdlbmVyYXRlUGh5c2ljYWxPYWNOYW1lKCdhd3MtY2xvdWRmcm9udC1zMy0nLCBbaWRdKSxcbiAgICAgICAgb3JpZ2luQWNjZXNzQ29udHJvbE9yaWdpblR5cGU6ICdzMycsXG4gICAgICAgIHNpZ25pbmdCZWhhdmlvcjogJ2Fsd2F5cycsXG4gICAgICAgIHNpZ25pbmdQcm90b2NvbDogJ3NpZ3Y0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcmlnaW4gYWNjZXNzIGNvbnRyb2wgcHJvdmlzaW9uZWQgYnkgYXdzLWNsb3VkZnJvbnQtczMnXG4gICAgICB9XG4gICAgfSk7XG4gICAgb3JpZ2luUHJvcHMgPSB7IG9yaWdpbkFjY2Vzc0NvbnRyb2wgfTtcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbiA9IG5ldyBTM09hY09yaWdpbihwcm9wcy5zb3VyY2VCdWNrZXQsIG9yaWdpblByb3BzKTtcblxuICBjb25zdCBkZWZhdWx0cHJvcHMgPSBEZWZhdWx0Q2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbkZvclMzUHJvcHMob3JpZ2luLFxuICAgIGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZS5sb2dCdWNrZXQsXG4gICAgaHR0cFNlY3VyaXR5SGVhZGVycyxcbiAgICBjbG91ZGZyb250RnVuY3Rpb24sXG4gICAgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMgP1xuICAgICAgbmV3IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5KHNjb3BlLCAnUmVzcG9uc2VIZWFkZXJzUG9saWN5JywgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMpIDpcbiAgICAgIHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IGNmcHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRwcm9wcywgcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzKTtcbiAgLy8gQ3JlYXRlIHRoZSBDbG91ZGZyb250IERpc3RyaWJ1dGlvblxuICBjb25zdCBjZkRpc3RyaWJ1dGlvbiA9IG5ldyBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbihzY29wZSwgJ0Nsb3VkRnJvbnREaXN0cmlidXRpb24nLCBjZnByb3BzKTtcbiAgdXBkYXRlU2VjdXJpdHlQb2xpY3koY2ZEaXN0cmlidXRpb24pO1xuXG4gIC8vIEV4dHJhY3QgdGhlIENmbkJ1Y2tldFBvbGljeSBmcm9tIHRoZSBzb3VyY2VCdWNrZXRcbiAgY29uc3QgYnVja2V0UG9saWN5ID0gcHJvcHMuc291cmNlQnVja2V0LnBvbGljeSBhcyBzMy5CdWNrZXRQb2xpY3k7XG4gIC8vIHRoZSBsYWNrIG9mIGEgYnVja2V0UG9saWN5IG1lYW5zIHRoZSBidWNrZXQgd2FzIGltcG9ydGVkIGZyb20gb3V0c2lkZSB0aGUgc3RhY2sgc28gdGhlIGxhY2sgb2YgY2ZuX25hZyBzdXBwcmVzc2lvbiBpcyBub3QgYW4gaXNzdWVcbiAgaWYgKGJ1Y2tldFBvbGljeSkge1xuICAgIGFkZENmblN1cHByZXNzUnVsZXMoYnVja2V0UG9saWN5LCBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnRjE2JyxcbiAgICAgICAgcmVhc29uOiBgUHVibGljIHdlYnNpdGUgYnVja2V0IHBvbGljeSByZXF1aXJlcyBhIHdpbGRjYXJkIHByaW5jaXBhbGBcbiAgICAgIH1cbiAgICBdKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRpc3RyaWJ1dGlvbjogY2ZEaXN0cmlidXRpb24sXG4gICAgY2xvdWRmcm9udEZ1bmN0aW9uLFxuICAgIGxvZ2dpbmdCdWNrZXQ6IGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZS5sb2dCdWNrZXQsXG4gICAgbG9nZ2luZ0J1Y2tldFMzQWNjZXNzc0xvZ0J1Y2tldDogZ2V0TG9nZ2luZ0J1Y2tldFJlc3BvbnNlLmxvZ0J1Y2tldEFjY2Vzc0xvZ0J1Y2tldCxcbiAgICBvcmlnaW5BY2Nlc3NDb250cm9sfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDbG91ZEZyb250T2FpRGlzdHJpYnV0aW9uRm9yUzNQcm9wcyB7XG4gIHJlYWRvbmx5IG9yaWdpblBhdGg/OiAgc3RyaW5nLFxuICByZWFkb25seSBzb3VyY2VCdWNrZXQ6IHMzLklCdWNrZXQsXG4gIHJlYWRvbmx5IGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcz86IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uUHJvcHMgfCBhbnksXG4gIHJlYWRvbmx5IGh0dHBTZWN1cml0eUhlYWRlcnM/OiBib29sZWFuLFxuICByZWFkb25seSBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG4gIHJlYWRvbmx5ICBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFMzQWNjZXNzTG9nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzXG4gIHJlYWRvbmx5IGxvZ0Nsb3VkRnJvbnRBY2Nlc3NMb2c/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2xvdWRGcm9udE9haURpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2Uge1xuICByZWFkb25seSBkaXN0cmlidXRpb246IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uLFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0PzogczMuQnVja2V0LFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0UzNBY2Nlc3NzTG9nQnVja2V0PzogczMuQnVja2V0LFxuICByZWFkb25seSBjbG91ZGZyb250RnVuY3Rpb24/OiBjbG91ZGZyb250LkZ1bmN0aW9uLFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbG91ZEZyb250T2FpRGlzdHJpYnV0aW9uRm9yUzMoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHByb3BzOiBDcmVhdGVDbG91ZEZyb250T2FpRGlzdHJpYnV0aW9uRm9yUzNQcm9wc1xuKTogQ3JlYXRlQ2xvdWRGcm9udE9haURpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2Uge1xuXG4gIGNvbnN0IGh0dHBTZWN1cml0eUhlYWRlcnMgPSBwcm9wcy5odHRwU2VjdXJpdHlIZWFkZXJzID8/IHRydWU7XG4gIGNvbnN0IGNsb3VkZnJvbnRGdW5jdGlvbiA9IGdldENsb3VkZnJvbnRGdW5jdGlvbihodHRwU2VjdXJpdHlIZWFkZXJzLCBzY29wZSk7XG5cbiAgaWYgKHByb3BzLnNvdXJjZUJ1Y2tldC5pc1dlYnNpdGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGF3cy1jbG91ZGZyb250LW9haS1zMyBoYXMgYmVlbiBwcm92aWRlZCBhIHNvdXJjZSBidWNrZXQgd2l0aCB3ZWJzaXRlIGhvc3RpbmcgZW5hYmxlZCwgd2hpY2ggdGhpcyBjb25zdHJ1Y3RcbiAgICAgICAgZG9lcyBub3Qgc3VwcG9ydC4gVGhpcyByZXF1aXJlcyBib3RoIHRoZSBidWNrZXQgYW5kIGl0cyBvYmplY3RzIHRvIGJlIHB1YmxpYy4gQVdTIHN0cm9uZ2x5IHJlY29tbWVuZHMgYWdhaW5zdCBjb25maWd1cmluZ1xuICAgICAgICBidWNrZXRzIGFuZCBvYmplY3RzIGZvciBwdWJsaWMgYWNjZXNzLiBBcyBzdWNoIGEgY29uZmlndXJhdGlvbiB1c2VzIG5laXRoZXIgT0FDIG5vciBPQUksIGl0IGNhbiBiZSBsYXVuY2hlZCB3aXRoIHRoZVxuICAgICAgICBhd3MtY2xvdWRmcm9uLXMzIGNvbnN0cnVjdCBpbiBhbnkgcmVnaW9uLmApO1xuICAgfVxuXG4gIGNvbnN0IGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZSA9IGdldExvZ2dpbmdCdWNrZXQoc2NvcGUsIHtcbiAgICBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHM6IHByb3BzLmNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyxcbiAgICBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzOiBwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzLFxuICAgIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UzNBY2Nlc3NMb2dCdWNrZXRQcm9wczogcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRTM0FjY2Vzc0xvZ0J1Y2tldFByb3BzLFxuICAgIGVuYWJsZVMzQWNjZXNzTG9nczogcHJvcHMubG9nQ2xvdWRGcm9udEFjY2Vzc0xvZ1xuICB9KTtcblxuICBsZXQgb3JpZ2luOiBjbG91ZGZyb250LklPcmlnaW47XG5cbiAgaWYgKHByb3BzLm9yaWdpblBhdGgpIHtcbiAgICBvcmlnaW4gPSBvcmlnaW5zLlMzQnVja2V0T3JpZ2luLndpdGhPcmlnaW5BY2Nlc3NJZGVudGl0eShwcm9wcy5zb3VyY2VCdWNrZXQsIHsgb3JpZ2luUGF0aDogcHJvcHMub3JpZ2luUGF0aCB9KTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW4gPSBvcmlnaW5zLlMzQnVja2V0T3JpZ2luLndpdGhPcmlnaW5BY2Nlc3NJZGVudGl0eShwcm9wcy5zb3VyY2VCdWNrZXQpO1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdHByb3BzID0gRGVmYXVsdENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb25Gb3JTM1Byb3BzKFxuICAgIG9yaWdpbixcbiAgICBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LFxuICAgIGh0dHBTZWN1cml0eUhlYWRlcnMsXG4gICAgY2xvdWRmcm9udEZ1bmN0aW9uLFxuICAgIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzID9cbiAgICAgIG5ldyBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeShzY29wZSwgJ1Jlc3BvbnNlSGVhZGVyc1BvbGljeScsIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzKSA6XG4gICAgICB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCBjZnByb3BzID0gY29uc29saWRhdGVQcm9wcyhkZWZhdWx0cHJvcHMsIHByb3BzLmNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyk7XG4gIC8vIENyZWF0ZSB0aGUgQ2xvdWRmcm9udCBEaXN0cmlidXRpb25cbiAgY29uc3QgY2ZEaXN0cmlidXRpb24gPSBuZXcgY2xvdWRmcm9udC5EaXN0cmlidXRpb24oc2NvcGUsICdDbG91ZEZyb250RGlzdHJpYnV0aW9uJywgY2Zwcm9wcyk7XG4gIHVwZGF0ZVNlY3VyaXR5UG9saWN5KGNmRGlzdHJpYnV0aW9uKTtcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5CdWNrZXRQb2xpY3kgZnJvbSB0aGUgc291cmNlQnVja2V0XG4gIGNvbnN0IGJ1Y2tldFBvbGljeSA9IHByb3BzLnNvdXJjZUJ1Y2tldC5wb2xpY3kgYXMgczMuQnVja2V0UG9saWN5O1xuICAvLyB0aGUgbGFjayBvZiBhIGJ1Y2tldFBvbGljeSBtZWFucyB0aGUgYnVja2V0IHdhcyBpbXBvcnRlZCBmcm9tIG91dHNpZGUgdGhlIHN0YWNrIHNvIHRoZSBsYWNrIG9mIGNmbl9uYWcgc3VwcHJlc3Npb24gaXMgbm90IGFuIGlzc3VlXG4gIGlmIChidWNrZXRQb2xpY3kpIHtcbiAgICBhZGRDZm5TdXBwcmVzc1J1bGVzKGJ1Y2tldFBvbGljeSwgW1xuICAgICAge1xuICAgICAgICBpZDogJ0YxNicsXG4gICAgICAgIHJlYXNvbjogYFB1YmxpYyB3ZWJzaXRlIGJ1Y2tldCBwb2xpY3kgcmVxdWlyZXMgYSB3aWxkY2FyZCBwcmluY2lwYWxgXG4gICAgICB9XG4gICAgXSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBkaXN0cmlidXRpb246IGNmRGlzdHJpYnV0aW9uLFxuICAgIGNsb3VkZnJvbnRGdW5jdGlvbixcbiAgICBsb2dnaW5nQnVja2V0OiBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LFxuICAgIGxvZ2dpbmdCdWNrZXRTM0FjY2Vzc3NMb2dCdWNrZXQ6IGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZS5sb2dCdWNrZXRBY2Nlc3NMb2dCdWNrZXQsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvck1lZGlhU3RvcmVSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbjogY2xvdWRmcm9udC5EaXN0cmlidXRpb24sXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXQsXG4gIHJlYWRvbmx5IHJlcXVlc3RQb2xpY3k6IGNsb3VkZnJvbnQuT3JpZ2luUmVxdWVzdFBvbGljeSxcbiAgcmVhZG9ubHkgY2xvdWRmcm9udEZ1bmN0aW9uPzogY2xvdWRmcm9udC5GdW5jdGlvblxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yTWVkaWFTdG9yZShzY29wZTogQ29uc3RydWN0LFxuICBtZWRpYVN0b3JlQ29udGFpbmVyOiBtZWRpYXN0b3JlLkNmbkNvbnRhaW5lcixcbiAgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPzogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyB8IGFueSxcbiAgaHR0cFNlY3VyaXR5SGVhZGVyczogYm9vbGVhbiA9IHRydWUsXG4gIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzXG4pOiBDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yTWVkaWFTdG9yZVJlc3BvbnNlIHtcblxuICBsZXQgb3JpZ2luUmVxdWVzdFBvbGljeTogY2xvdWRmcm9udC5PcmlnaW5SZXF1ZXN0UG9saWN5O1xuXG4gIGNvbnN0IGdldExvZ2dpbmdCdWNrZXRSZXNwb25zZSA9IGdldExvZ2dpbmdCdWNrZXQoc2NvcGUsIHsgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLCBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzIH0pO1xuXG4gIGlmIChjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHNcbiAgICAmJiBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMuZGVmYXVsdEJlaGF2aW9yXG4gICAgJiYgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLmRlZmF1bHRCZWhhdmlvci5vcmlnaW5SZXF1ZXN0UG9saWN5KSB7XG4gICAgb3JpZ2luUmVxdWVzdFBvbGljeSA9IGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcy5kZWZhdWx0QmVoYXZpb3Iub3JpZ2luUmVxdWVzdFBvbGljeTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBvcmlnaW5SZXF1ZXN0UG9saWN5UHJvcHM6IGNsb3VkZnJvbnQuT3JpZ2luUmVxdWVzdFBvbGljeVByb3BzID0ge1xuICAgICAgaGVhZGVyQmVoYXZpb3I6IHtcbiAgICAgICAgYmVoYXZpb3I6ICd3aGl0ZWxpc3QnLFxuICAgICAgICBoZWFkZXJzOiBbXG4gICAgICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsXG4gICAgICAgICAgJ0FjY2Vzcy1Db250cm9sLVJlcXVlc3QtTWV0aG9kJyxcbiAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXInLFxuICAgICAgICAgICdPcmlnaW4nXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBxdWVyeVN0cmluZ0JlaGF2aW9yOiB7XG4gICAgICAgIGJlaGF2aW9yOiAnYWxsJ1xuICAgICAgfSxcbiAgICAgIGNvb2tpZUJlaGF2aW9yOiB7XG4gICAgICAgIGJlaGF2aW9yOiAnbm9uZSdcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiAnUG9saWN5IGZvciBDb25zdHJ1Y3RzIENsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JNZWRpYVN0b3JlJyxcbiAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3lOYW1lOiBgJHtjZGsuQXdzLlNUQUNLX05BTUV9LSR7Y2RrLkF3cy5SRUdJT059LUNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JNZWRpYVN0b3JlYFxuICAgIH07XG5cbiAgICBvcmlnaW5SZXF1ZXN0UG9saWN5ID0gbmV3IGNsb3VkZnJvbnQuT3JpZ2luUmVxdWVzdFBvbGljeShzY29wZSwgJ0Nsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5Jywgb3JpZ2luUmVxdWVzdFBvbGljeVByb3BzKTtcbiAgfVxuXG4gIGNvbnN0IGNsb3VkZnJvbnRGdW5jdGlvbiA9IGdldENsb3VkZnJvbnRGdW5jdGlvbihodHRwU2VjdXJpdHlIZWFkZXJzLCBzY29wZSk7XG5cbiAgY29uc3QgZGVmYXVsdHByb3BzID0gRGVmYXVsdENsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JNZWRpYVN0b3JlUHJvcHMoXG4gICAgbWVkaWFTdG9yZUNvbnRhaW5lcixcbiAgICBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LFxuICAgIG9yaWdpblJlcXVlc3RQb2xpY3ksXG4gICAgaHR0cFNlY3VyaXR5SGVhZGVycyxcbiAgICBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHM/LmN1c3RvbUhlYWRlcnMsXG4gICAgY2xvdWRmcm9udEZ1bmN0aW9uLFxuICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzID8gbmV3IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5KHNjb3BlLCAnUmVzcG9uc2VIZWFkZXJzUG9saWN5JywgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMpIDogdW5kZWZpbmVkXG4gICk7XG5cbiAgY29uc3QgY2Zwcm9wczogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdHByb3BzLCBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgQ2xvdWRGcm9udCBEaXN0cmlidXRpb25cbiAgY29uc3QgY2ZEaXN0cmlidXRpb24gPSBuZXcgY2xvdWRmcm9udC5EaXN0cmlidXRpb24oc2NvcGUsICdDbG91ZEZyb250RGlzdHJpYnV0aW9uJywgY2Zwcm9wcyk7XG4gIHVwZGF0ZVNlY3VyaXR5UG9saWN5KGNmRGlzdHJpYnV0aW9uKTtcblxuICByZXR1cm4geyBkaXN0cmlidXRpb246IGNmRGlzdHJpYnV0aW9uLCBsb2dnaW5nQnVja2V0OiBnZXRMb2dnaW5nQnVja2V0UmVzcG9uc2UubG9nQnVja2V0LCByZXF1ZXN0UG9saWN5OiBvcmlnaW5SZXF1ZXN0UG9saWN5LCBjbG91ZGZyb250RnVuY3Rpb24gfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2xvdWRGcm9udE9yaWdpbkFjY2Vzc0lkZW50aXR5KHNjb3BlOiBDb25zdHJ1Y3QsIGNvbW1lbnQ/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBjbG91ZGZyb250Lk9yaWdpbkFjY2Vzc0lkZW50aXR5KHNjb3BlLCAnQ2xvdWRGcm9udE9yaWdpbkFjY2Vzc0lkZW50aXR5Jywge1xuICAgIGNvbW1lbnQ6IGNvbW1lbnQgPyBjb21tZW50IDogYGFjY2Vzcy1pZGVudGl0eS0ke2Nkay5Bd3MuUkVHSU9OfS0ke2Nkay5Bd3MuU1RBQ0tfTkFNRX1gXG4gIH0pO1xufVxuXG5pbnRlcmZhY2UgR2V0TG9nZ2luZ0J1Y2tldFJlcXVlc3Qge1xuICByZWFkb25seSBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHM6IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uUHJvcHMgfCBhbnksXG4gIHJlYWRvbmx5IGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRTM0FjY2Vzc0xvZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG4gIHJlYWRvbmx5IGVuYWJsZVMzQWNjZXNzTG9ncz86IGJvb2xlYW5cbn1cbmludGVyZmFjZSBHZXRMb2dnaW5nQnVja2V0UmVzcG9uc2Uge1xuICBsb2dCdWNrZXQ/OiBzMy5CdWNrZXQsXG4gIGxvZ0J1Y2tldEFjY2Vzc0xvZ0J1Y2tldD86IHMzLkJ1Y2tldFxufVxuXG5mdW5jdGlvbiBnZXRMb2dnaW5nQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBHZXRMb2dnaW5nQnVja2V0UmVxdWVzdCk6IEdldExvZ2dpbmdCdWNrZXRSZXNwb25zZSB7XG4gIGNvbnN0IGlzTG9nZ2luZ0Rpc2FibGVkID0gcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPy5lbmFibGVMb2dnaW5nID09PSBmYWxzZTtcbiAgY29uc3QgdXNlclN1cHBsaWVkTG9nQnVja2V0ID0gcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPy5sb2dCdWNrZXQ7XG5cbiAgaWYgKHVzZXJTdXBwbGllZExvZ0J1Y2tldCAmJiBwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzKSB7XG4gICAgdGhyb3cgRXJyb3IoJ0VpdGhlciBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMubG9nQnVja2V0IG9yIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHMgY2FuIGJlIHNldC4nKTtcbiAgfVxuXG4gIGxldCBsb2dCdWNrZXQ6IHMzLkJ1Y2tldCB8IHVuZGVmaW5lZDtcbiAgbGV0IGxvZ0J1Y2tlUzNBY2Nlc3NMb2dCdWNrZXR0OiBzMy5CdWNrZXQgfCB1bmRlZmluZWQ7XG4gIGlmIChpc0xvZ2dpbmdEaXNhYmxlZCkge1xuICAgIGxvZ0J1Y2tldCA9IHVuZGVmaW5lZDtcbiAgfSBlbHNlIGlmICh1c2VyU3VwcGxpZWRMb2dCdWNrZXQpIHtcbiAgICBsb2dCdWNrZXQgPSB1c2VyU3VwcGxpZWRMb2dCdWNrZXQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY3JlYXRlQnVja2V0UmVzcG9uc2UgPSBjcmVhdGVDbG91ZEZyb250TG9nZ2luZ0J1Y2tldChcbiAgICAgIHNjb3BlLFxuICAgICAgJ0Nsb3VkZnJvbnRMb2dnaW5nQnVja2V0JyxcbiAgICAgIHtcbiAgICAgICAgLy8gQnVja2V0cyB1c2VkIGZvciBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBsb2dnaW5nIHJlcXVpcmUgQUNMcyB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQsIHNvIHdlIGFwcGx5IHRoaXMgb2JqZWN0T3duZXJzaGlwXG4gICAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wczogY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzLCB7XG4gICAgICAgICAgb2JqZWN0T3duZXJzaGlwOiBzMy5PYmplY3RPd25lcnNoaXAuT0JKRUNUX1dSSVRFUlxuICAgICAgICB9KSxcbiAgICAgICAgczNBY2Nlc3NMb2dCdWNrZXRQcm9wczogcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRTM0FjY2Vzc0xvZ0J1Y2tldFByb3BzLFxuICAgICAgICBlbmFibGVTM0FjY2Vzc0xvZ3M6IHByb3BzLmVuYWJsZVMzQWNjZXNzTG9nc1xuICAgICAgfSk7XG5cbiAgICBsb2dCdWNrZXQgPSBjcmVhdGVCdWNrZXRSZXNwb25zZS5sb2dCdWNrZXQ7XG4gICAgbG9nQnVja2VTM0FjY2Vzc0xvZ0J1Y2tldHQgPSBjcmVhdGVCdWNrZXRSZXNwb25zZS5zM0FjY2Vzc0xvZ0J1Y2tldDtcbiAgICBjb25zdCBsb2dnaW5nQnVja2V0UmVzb3VyY2UgPSBsb2dCdWNrZXQubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgczMuQ2ZuQnVja2V0O1xuICAgIGxvZ2dpbmdCdWNrZXRSZXNvdXJjZS5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdBY2Nlc3NDb250cm9sJywgJ0xvZ0RlbGl2ZXJ5V3JpdGUnKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGxvZ0J1Y2tldCxcbiAgICBsb2dCdWNrZXRBY2Nlc3NMb2dCdWNrZXQ6IGxvZ0J1Y2tlUzNBY2Nlc3NMb2dCdWNrZXR0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsb3VkZnJvbnRGdW5jdGlvbihodHRwU2VjdXJpdHlIZWFkZXJzOiBib29sZWFuLCBzY29wZTogQ29uc3RydWN0KSB7XG4gIHJldHVybiBodHRwU2VjdXJpdHlIZWFkZXJzID8gZGVmYXVsdENsb3VkZnJvbnRGdW5jdGlvbihzY29wZSkgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udFByb3BzIHtcbiAgcmVhZG9ubHkgaW5zZXJ0SHR0cFNlY3VyaXR5SGVhZGVycz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzPzogY2xvdWRmcm9udC5SZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrQ2xvdWRGcm9udFByb3BzKHByb3BzT2JqZWN0OiBDbG91ZEZyb250UHJvcHMgfCBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAocHJvcHNPYmplY3QuaW5zZXJ0SHR0cFNlY3VyaXR5SGVhZGVycyAhPT0gZmFsc2UgJiYgcHJvcHNPYmplY3QucmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM/LnNlY3VyaXR5SGVhZGVyc0JlaGF2aW9yKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAncmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMuc2VjdXJpdHlIZWFkZXJzQmVoYXZpb3IgY2FuIG9ubHkgYmUgcGFzc2VkIGlmIGh0dHBTZWN1cml0eUhlYWRlcnMgaXMgc2V0IHRvIGBmYWxzZWAuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvckZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRmcm9udFMzUHJvcHMge1xuICByZWFkb25seSBidWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzLFxuICByZWFkb25seSBsb2dTM0FjY2Vzc0xvZ3M/OiBib29sZWFuLFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcyxcbiAgcmVhZG9ubHkgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzLFxuICByZWFkb25seSBsb2dDbG91ZEZyb250QWNjZXNzTG9nPzogYm9vbGVhbixcbiAgcmVhZG9ubHkgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRBY2Nlc3NMb2dCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tDbG91ZGZyb250UzNQcm9wcyhwcm9wczogQ2xvdWRmcm9udFMzUHJvcHMpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAoKHByb3BzLmxvZ1MzQWNjZXNzTG9ncyA9PT0gZmFsc2UpICYmIHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBsb2dTM0FjY2Vzc0xvZ3MgaXMgZmFsc2UsIGJ1dCBhIGxvZyBidWNrZXQgd2FzIHByb3ZpZGVkIGluIGJ1Y2tldFByb3BzLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHMubG9nZ2luZ0J1Y2tldFByb3BzICYmIHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBib3RobG9nIGJ1Y2tldCBwcm9wcyBhbmQgYW4gZXhpc3RpbmcgbG9nIGJ1Y2tldCB3ZXJlIHByb3ZpZGVkLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRBY2Nlc3NMb2dCdWNrZXRQcm9wcyAmJiBwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBhbiBleGlzdGluZyBDbG91ZEZyb250IGxvZyBidWNrZXQgUzMgYWNjZXNzIGxvZyBidWNrZXQgYW5kIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0QWNjZXNzTG9nQnVja2V0UHJvcHMgd2VyZSBwcm92aWRlZFxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRBY2Nlc3NMb2dCdWNrZXRQcm9wcyAmJiBwcm9wcy5sb2dDbG91ZEZyb250QWNjZXNzTG9nID09PSBmYWxzZSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRBY2Nlc3NMb2dCdWNrZXRQcm9wcyB3ZXJlIHByb3ZpZGVkIGJ1dCBsb2dDbG91ZEZyb250QWNjZXNzTG9nIHdhcyBmYWxzZVxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wcz8uc2VydmVyQWNjZXNzTG9nc0J1Y2tldCAmJiBwcm9wcy5sb2dDbG91ZEZyb250QWNjZXNzTG9nID09PSBmYWxzZSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wcy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0IHdhcyBwcm92aWRlZCBidXQgbG9nQ2xvdWRGcm9udEFjY2Vzc0xvZyB3YXMgZmFsc2VcXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
|