UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

64 lines 13.8 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CloudFrontDistributionMetricFactory = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const common_1 = require("../../common"); const CloudFrontNamespace = "AWS/CloudFront"; const CloudFrontGlobalRegion = "Global"; const CloudFrontDefaultMetricRegion = "us-east-1"; /** * To get the CloudFront metrics from the CloudWatch API, you must use the US East (N. Virginia) Region (us-east-1). * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/programming-cloudwatch-metrics.html */ class CloudFrontDistributionMetricFactory extends common_1.BaseMetricFactory { constructor(metricFactory, props) { super(metricFactory, props); this.fillTpsWithZeroes = props.fillTpsWithZeroes ?? true; this.rateComputationMethod = props.rateComputationMethod ?? common_1.RateComputationMethod.AVERAGE; this.dimensionsMap = { DistributionId: props.distribution.distributionId, Region: CloudFrontGlobalRegion, }; } metricRequestCount() { return this.metricFactory.createMetric("Requests", common_1.MetricStatistic.SUM, "Uploaded", this.dimensionsMap, undefined, CloudFrontNamespace, undefined, CloudFrontDefaultMetricRegion, this.account); } metricRequestRate(rateComputationMethod) { return this.metricFactory.toRate(this.metricRequestCount(), rateComputationMethod ?? this.rateComputationMethod, false, "requests", this.fillTpsWithZeroes); } /** * @deprecated use metricRequestRate */ metricRequestTps() { return this.metricRequestRate(common_1.RateComputationMethod.PER_SECOND); } metricTotalBytesUploaded() { return this.metricFactory.createMetric("BytesUploaded", common_1.MetricStatistic.SUM, "Uploaded", this.dimensionsMap, undefined, CloudFrontNamespace, undefined, CloudFrontDefaultMetricRegion, this.account); } metricTotalBytesDownloaded() { return this.metricFactory.createMetric("BytesDownloaded", common_1.MetricStatistic.SUM, "Downloaded", this.dimensionsMap, undefined, CloudFrontNamespace, undefined, CloudFrontDefaultMetricRegion, this.account); } /** * Cache hit rate metric. This is an additional metric that needs to be explicitly enabled for an additional cost. * * @see https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/viewing-cloudfront-metrics.html#monitoring-console.distributions-additional */ metricCacheHitRateAverageInPercent() { return this.metricFactory.createMetric("CacheHitRate", common_1.MetricStatistic.AVERAGE, "Hit Rate", this.dimensionsMap, undefined, CloudFrontNamespace, undefined, CloudFrontDefaultMetricRegion, this.account); } metric4xxErrorRateAverage() { return this.metricFactory.createMetric("4xxErrorRate", common_1.MetricStatistic.AVERAGE, "4XX", this.dimensionsMap, undefined, CloudFrontNamespace, undefined, CloudFrontDefaultMetricRegion, this.account); } metric5xxErrorRateAverage() { return this.metricFactory.createMetric("5xxErrorRate", common_1.MetricStatistic.AVERAGE, "5XX", this.dimensionsMap, undefined, CloudFrontNamespace, undefined, CloudFrontDefaultMetricRegion, this.account); } metricTotalErrorRateAverage() { return this.metricFactory.createMetric("TotalErrorRate", common_1.MetricStatistic.AVERAGE, "Total", this.dimensionsMap, undefined, CloudFrontNamespace, undefined, CloudFrontDefaultMetricRegion, this.account); } } exports.CloudFrontDistributionMetricFactory = CloudFrontDistributionMetricFactory; _a = JSII_RTTI_SYMBOL_1; CloudFrontDistributionMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.CloudFrontDistributionMetricFactory", version: "9.15.2" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xvdWRGcm9udERpc3RyaWJ1dGlvbk1ldHJpY0ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJDbG91ZEZyb250RGlzdHJpYnV0aW9uTWV0cmljRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQU1zQjtBQUV0QixNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDO0FBQzdDLE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE1BQU0sNkJBQTZCLEdBQUcsV0FBVyxDQUFDO0FBMkJsRDs7O0dBR0c7QUFDSCxNQUFhLG1DQUFvQyxTQUFRLDBCQUEyRDtJQUtsSCxZQUNFLGFBQTRCLEVBQzVCLEtBQStDO1FBRS9DLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLHFCQUFxQjtZQUN4QixLQUFLLENBQUMscUJBQXFCLElBQUksOEJBQXFCLENBQUMsT0FBTyxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsY0FBYyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYztZQUNqRCxNQUFNLEVBQUUsc0JBQXNCO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQ3BDLFVBQVUsRUFDVix3QkFBZSxDQUFDLEdBQUcsRUFDbkIsVUFBVSxFQUNWLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsU0FBUyxFQUNULDZCQUE2QixFQUM3QixJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMscUJBQTZDO1FBQzdELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzlCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUN6QixxQkFBcUIsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQ25ELEtBQUssRUFDTCxVQUFVLEVBQ1YsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsOEJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxlQUFlLEVBQ2Ysd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLFVBQVUsRUFDVixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLFNBQVMsRUFDVCw2QkFBNkIsRUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxpQkFBaUIsRUFDakIsd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLFlBQVksRUFDWixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLFNBQVMsRUFDVCw2QkFBNkIsRUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQ0FBa0M7UUFDaEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsY0FBYyxFQUNkLHdCQUFlLENBQUMsT0FBTyxFQUN2QixVQUFVLEVBQ1YsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsNkJBQTZCLEVBQzdCLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsY0FBYyxFQUNkLHdCQUFlLENBQUMsT0FBTyxFQUN2QixLQUFLLEVBQ0wsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsNkJBQTZCLEVBQzdCLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsY0FBYyxFQUNkLHdCQUFlLENBQUMsT0FBTyxFQUN2QixLQUFLLEVBQ0wsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsNkJBQTZCLEVBQzdCLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsZ0JBQWdCLEVBQ2hCLHdCQUFlLENBQUMsT0FBTyxFQUN2QixPQUFPLEVBQ1AsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsNkJBQTZCLEVBQzdCLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7O0FBMUlILGtGQTJJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElEaXN0cmlidXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IERpbWVuc2lvbnNNYXAgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcblxuaW1wb3J0IHtcbiAgQmFzZU1ldHJpY0ZhY3RvcnksXG4gIEJhc2VNZXRyaWNGYWN0b3J5UHJvcHMsXG4gIE1ldHJpY0ZhY3RvcnksXG4gIE1ldHJpY1N0YXRpc3RpYyxcbiAgUmF0ZUNvbXB1dGF0aW9uTWV0aG9kLFxufSBmcm9tIFwiLi4vLi4vY29tbW9uXCI7XG5cbmNvbnN0IENsb3VkRnJvbnROYW1lc3BhY2UgPSBcIkFXUy9DbG91ZEZyb250XCI7XG5jb25zdCBDbG91ZEZyb250R2xvYmFsUmVnaW9uID0gXCJHbG9iYWxcIjtcbmNvbnN0IENsb3VkRnJvbnREZWZhdWx0TWV0cmljUmVnaW9uID0gXCJ1cy1lYXN0LTFcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZyb250RGlzdHJpYnV0aW9uTWV0cmljRmFjdG9yeVByb3BzXG4gIGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyB7XG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbjogSURpc3RyaWJ1dGlvbjtcblxuICAvKipcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBmaWxsVHBzV2l0aFplcm9lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IC0gYXZlcmFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcmF0ZUNvbXB1dGF0aW9uTWV0aG9kPzogUmF0ZUNvbXB1dGF0aW9uTWV0aG9kO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBkYXNoYm9hcmQgY2hhcnRzIGZvciBhZGRpdGlvbmFsIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIG1ldHJpY3MuXG4gICAqXG4gICAqIFRvIGVuYWJsZSBhZGRpdGlvbmFsIG1ldHJpY3Mgb24geW91ciBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiwgc2VlXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS92aWV3aW5nLWNsb3VkZnJvbnQtbWV0cmljcy5odG1sI21vbml0b3JpbmctY29uc29sZS5kaXN0cmlidXRpb25zLWFkZGl0aW9uYWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsTWV0cmljc0VuYWJsZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRvIGdldCB0aGUgQ2xvdWRGcm9udCBtZXRyaWNzIGZyb20gdGhlIENsb3VkV2F0Y2ggQVBJLCB5b3UgbXVzdCB1c2UgdGhlIFVTIEVhc3QgKE4uIFZpcmdpbmlhKSBSZWdpb24gKHVzLWVhc3QtMSkuXG4gKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvcHJvZ3JhbW1pbmctY2xvdWR3YXRjaC1tZXRyaWNzLmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkRnJvbnREaXN0cmlidXRpb25NZXRyaWNGYWN0b3J5IGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3Rvcnk8Q2xvdWRGcm9udERpc3RyaWJ1dGlvbk1ldHJpY0ZhY3RvcnlQcm9wcz4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGxUcHNXaXRoWmVyb2VzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHJhdGVDb21wdXRhdGlvbk1ldGhvZDogUmF0ZUNvbXB1dGF0aW9uTWV0aG9kO1xuICBwcml2YXRlIHJlYWRvbmx5IGRpbWVuc2lvbnNNYXA6IERpbWVuc2lvbnNNYXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbWV0cmljRmFjdG9yeTogTWV0cmljRmFjdG9yeSxcbiAgICBwcm9wczogQ2xvdWRGcm9udERpc3RyaWJ1dGlvbk1ldHJpY0ZhY3RvcnlQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIobWV0cmljRmFjdG9yeSwgcHJvcHMpO1xuXG4gICAgdGhpcy5maWxsVHBzV2l0aFplcm9lcyA9IHByb3BzLmZpbGxUcHNXaXRoWmVyb2VzID8/IHRydWU7XG4gICAgdGhpcy5yYXRlQ29tcHV0YXRpb25NZXRob2QgPVxuICAgICAgcHJvcHMucmF0ZUNvbXB1dGF0aW9uTWV0aG9kID8/IFJhdGVDb21wdXRhdGlvbk1ldGhvZC5BVkVSQUdFO1xuICAgIHRoaXMuZGltZW5zaW9uc01hcCA9IHtcbiAgICAgIERpc3RyaWJ1dGlvbklkOiBwcm9wcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgICBSZWdpb246IENsb3VkRnJvbnRHbG9iYWxSZWdpb24sXG4gICAgfTtcbiAgfVxuXG4gIG1ldHJpY1JlcXVlc3RDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiUmVxdWVzdHNcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIlVwbG9hZGVkXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBDbG91ZEZyb250TmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgQ2xvdWRGcm9udERlZmF1bHRNZXRyaWNSZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1JlcXVlc3RSYXRlKHJhdGVDb21wdXRhdGlvbk1ldGhvZD86IFJhdGVDb21wdXRhdGlvbk1ldGhvZCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkudG9SYXRlKFxuICAgICAgdGhpcy5tZXRyaWNSZXF1ZXN0Q291bnQoKSxcbiAgICAgIHJhdGVDb21wdXRhdGlvbk1ldGhvZCA/PyB0aGlzLnJhdGVDb21wdXRhdGlvbk1ldGhvZCxcbiAgICAgIGZhbHNlLFxuICAgICAgXCJyZXF1ZXN0c1wiLFxuICAgICAgdGhpcy5maWxsVHBzV2l0aFplcm9lcyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBtZXRyaWNSZXF1ZXN0UmF0ZVxuICAgKi9cbiAgbWV0cmljUmVxdWVzdFRwcygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNSZXF1ZXN0UmF0ZShSYXRlQ29tcHV0YXRpb25NZXRob2QuUEVSX1NFQ09ORCk7XG4gIH1cblxuICBtZXRyaWNUb3RhbEJ5dGVzVXBsb2FkZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIkJ5dGVzVXBsb2FkZWRcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIlVwbG9hZGVkXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBDbG91ZEZyb250TmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgQ2xvdWRGcm9udERlZmF1bHRNZXRyaWNSZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1RvdGFsQnl0ZXNEb3dubG9hZGVkKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJCeXRlc0Rvd25sb2FkZWRcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIkRvd25sb2FkZWRcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIENsb3VkRnJvbnROYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBDbG91ZEZyb250RGVmYXVsdE1ldHJpY1JlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhY2hlIGhpdCByYXRlIG1ldHJpYy4gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIG1ldHJpYyB0aGF0IG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZCBmb3IgYW4gYWRkaXRpb25hbCBjb3N0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS92aWV3aW5nLWNsb3VkZnJvbnQtbWV0cmljcy5odG1sI21vbml0b3JpbmctY29uc29sZS5kaXN0cmlidXRpb25zLWFkZGl0aW9uYWxcbiAgICovXG4gIG1ldHJpY0NhY2hlSGl0UmF0ZUF2ZXJhZ2VJblBlcmNlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIkNhY2hlSGl0UmF0ZVwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLkFWRVJBR0UsXG4gICAgICBcIkhpdCBSYXRlXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBDbG91ZEZyb250TmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgQ2xvdWRGcm9udERlZmF1bHRNZXRyaWNSZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpYzR4eEVycm9yUmF0ZUF2ZXJhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIjR4eEVycm9yUmF0ZVwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLkFWRVJBR0UsXG4gICAgICBcIjRYWFwiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgQ2xvdWRGcm9udE5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIENsb3VkRnJvbnREZWZhdWx0TWV0cmljUmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWM1eHhFcnJvclJhdGVBdmVyYWdlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCI1eHhFcnJvclJhdGVcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5BVkVSQUdFLFxuICAgICAgXCI1WFhcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIENsb3VkRnJvbnROYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBDbG91ZEZyb250RGVmYXVsdE1ldHJpY1JlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljVG90YWxFcnJvclJhdGVBdmVyYWdlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJUb3RhbEVycm9yUmF0ZVwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLkFWRVJBR0UsXG4gICAgICBcIlRvdGFsXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBDbG91ZEZyb250TmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgQ2xvdWRGcm9udERlZmF1bHRNZXRyaWNSZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxufVxuIl19