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

116 lines 16.3 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.LambdaFunctionMetricFactory = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const common_1 = require("../../common"); class LambdaFunctionMetricFactory extends common_1.BaseMetricFactory { constructor(metricFactory, props) { super(metricFactory, props); this.lambdaFunction = props.lambdaFunction; this.fillTpsWithZeroes = props.fillTpsWithZeroes ?? true; this.rateComputationMethod = props.rateComputationMethod ?? common_1.RateComputationMethod.AVERAGE; } /** * @deprecated Use {@link metricInvocationRate} instead. */ metricTps() { return this.metricInvocationRate(common_1.RateComputationMethod.PER_SECOND); } metricInvocationRate(rateComputationMethod) { return this.metricFactory.toRate(this.metricInvocationCount(), rateComputationMethod ?? this.rateComputationMethod, false, "requests", this.fillTpsWithZeroes); } metricInvocationCount() { return this.metricFactory.adaptMetric(this.lambdaFunction.metricInvocations({ label: "Invocations", region: this.region, account: this.account, })); } metricThrottlesCount() { return this.metricFactory.adaptMetric(this.lambdaFunction.metricThrottles({ label: "Throttles", region: this.region, account: this.account, })); } metricThrottlesRate() { return this.metricFactory.toRate(this.metricThrottlesCount(), this.rateComputationMethod, false, "throttles"); } metricFaultCount() { return this.metricFactory.adaptMetric(this.lambdaFunction.metricErrors({ label: "Faults", region: this.region, account: this.account, })); } metricFaultRate() { return this.metricFactory.toRate(this.metricFaultCount(), this.rateComputationMethod, false, "faults"); } metricLatencyInMillis(latencyType) { return this.metricFactory.adaptMetric(this.lambdaFunction.metricDuration({ statistic: (0, common_1.getLatencyTypeStatistic)(latencyType), label: (0, common_1.getLatencyTypeLabel)(latencyType), region: this.region, account: this.account, })); } /** * @deprecated Use {@link metricLatencyInMillis} instead. */ metricLatencyP99InMillis() { return this.metricLatencyInMillis(common_1.LatencyType.P99); } /** * @deprecated Use {@link metricLatencyInMillis} instead. */ metricLatencyP90InMillis() { return this.metricLatencyInMillis(common_1.LatencyType.P90); } /** * @deprecated Use {@link metricLatencyInMillis} instead. */ metricLatencyP50InMillis() { return this.metricLatencyInMillis(common_1.LatencyType.P50); } metricConcurrentExecutions() { return this.metricFactory.adaptMetric(this.lambdaFunction.metric("ConcurrentExecutions", { statistic: common_1.MetricStatistic.MAX, label: "Concurrent", region: this.region, account: this.account, })); } metricProvisionedConcurrencySpilloverInvocations() { return this.metricFactory.adaptMetric(this.lambdaFunction.metric("ProvisionedConcurrencySpilloverInvocations", { statistic: common_1.MetricStatistic.SUM, label: "Provisioned Concurrency Spillovers", region: this.region, account: this.account, })); } metricProvisionedConcurrencySpilloverRate() { return this.metricFactory.toRate(this.metricProvisionedConcurrencySpilloverInvocations(), this.rateComputationMethod, false, "pcsi"); } metricMaxIteratorAgeInMillis() { return this.metricFactory.adaptMetric(this.lambdaFunction.metric("IteratorAge", { statistic: common_1.MetricStatistic.MAX, label: "Iterator Age", region: this.region, account: this.account, })); } metricMaxOffsetLagInNumberOfRecords() { return this.metricFactory.adaptMetric(this.lambdaFunction.metric("OffsetLag", { statistic: common_1.MetricStatistic.MAX, label: "Offset Lag", region: this.region, account: this.account, })); } } exports.LambdaFunctionMetricFactory = LambdaFunctionMetricFactory; _a = JSII_RTTI_SYMBOL_1; LambdaFunctionMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.LambdaFunctionMetricFactory", version: "10.0.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhRnVuY3Rpb25NZXRyaWNGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTGFtYmRhRnVuY3Rpb25NZXRyaWNGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEseUNBU3NCO0FBd0J0QixNQUFhLDJCQUE0QixTQUFRLDBCQUFpQjtJQUtoRSxZQUNFLGFBQTRCLEVBQzVCLEtBQXVDO1FBRXZDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDO1FBQ3pELElBQUksQ0FBQyxxQkFBcUI7WUFDeEIsS0FBSyxDQUFDLHFCQUFxQixJQUFJLDhCQUFxQixDQUFDLE9BQU8sQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsOEJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELG9CQUFvQixDQUFDLHFCQUE2QztRQUNoRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUM5QixJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFDNUIscUJBQXFCLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUNuRCxLQUFLLEVBQ0wsVUFBVSxFQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztZQUNwQyxLQUFLLEVBQUUsYUFBYTtZQUNwQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENB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QWdELEVBQUUsRUFDdkQsSUFBSSxDQUFDLHFCQUFxQixFQUMxQixLQUFLLEVBQ0wsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsNEJBQTRCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUN4QyxTQUFTLEVBQUUsd0JBQWUsQ0FBQyxHQUFHO1lBQzlCLEtBQUssRUFBRSxjQUFjO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsbUNBQW1DO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN0QyxTQUFTLEVBQUUsd0JBQWUsQ0FBQyxHQUFHO1lBQzlCLEtBQUssRUFBRSxZQUFZO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztBQXJLSCxrRUFzS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuXG5pbXBvcnQge1xuICBCYXNlTWV0cmljRmFjdG9yeSxcbiAgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyxcbiAgTGF0ZW5jeVR5cGUsXG4gIE1ldHJpY0ZhY3RvcnksXG4gIE1ldHJpY1N0YXRpc3RpYyxcbiAgUmF0ZUNvbXB1dGF0aW9uTWV0aG9kLFxuICBnZXRMYXRlbmN5VHlwZUxhYmVsLFxuICBnZXRMYXRlbmN5VHlwZVN0YXRpc3RpYyxcbn0gZnJvbSBcIi4uLy4uL2NvbW1vblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUZ1bmN0aW9uTWV0cmljRmFjdG9yeVByb3BzXG4gIGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyB7XG4gIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBJRnVuY3Rpb247XG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGZpbGxUcHNXaXRoWmVyb2VzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC0gYXZlcmFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcmF0ZUNvbXB1dGF0aW9uTWV0aG9kPzogUmF0ZUNvbXB1dGF0aW9uTWV0aG9kO1xuICAvKipcbiAgICogR2VuZXJhdGUgZGFzaGJvYXJkIGNoYXJ0cyBmb3IgTGFtYmRhIEluc2lnaHRzIG1ldHJpY3MuXG4gICAqXG4gICAqIFRvIGVuYWJsZSBMYW1iZGEgSW5zaWdodHMgb24geW91ciBMYW1iZGEgZnVuY3Rpb24sIHNlZVxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9MYW1iZGEtSW5zaWdodHMtR2V0dGluZy1TdGFydGVkLWNsb3VkZGV2ZWxvcG1lbnRraXQuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFJbnNpZ2h0c0VuYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb25NZXRyaWNGYWN0b3J5IGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbGxUcHNXaXRoWmVyb2VzOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmF0ZUNvbXB1dGF0aW9uTWV0aG9kOiBSYXRlQ29tcHV0YXRpb25NZXRob2Q7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbWV0cmljRmFjdG9yeTogTWV0cmljRmFjdG9yeSxcbiAgICBwcm9wczogTGFtYmRhRnVuY3Rpb25NZXRyaWNGYWN0b3J5UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKG1ldHJpY0ZhY3RvcnksIHByb3BzKTtcblxuICAgIHRoaXMubGFtYmRhRnVuY3Rpb24gPSBwcm9wcy5sYW1iZGFGdW5jdGlvbjtcbiAgICB0aGlzLmZpbGxUcHNXaXRoWmVyb2VzID0gcHJvcHMuZmlsbFRwc1dpdGhaZXJvZXMgPz8gdHJ1ZTtcbiAgICB0aGlzLnJhdGVDb21wdXRhdGlvbk1ldGhvZCA9XG4gICAgICBwcm9wcy5yYXRlQ29tcHV0YXRpb25NZXRob2QgPz8gUmF0ZUNvbXB1dGF0aW9uTWV0aG9kLkFWRVJBR0U7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNJbnZvY2F0aW9uUmF0ZX0gaW5zdGVhZC5cbiAgICovXG4gIG1ldHJpY1RwcygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNJbnZvY2F0aW9uUmF0ZShSYXRlQ29tcHV0YXRpb25NZXRob2QuUEVSX1NFQ09ORCk7XG4gIH1cblxuICBtZXRyaWNJbnZvY2F0aW9uUmF0ZShyYXRlQ29tcHV0YXRpb25NZXRob2Q/OiBSYXRlQ29tcHV0YXRpb25NZXRob2QpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LnRvUmF0ZShcbiAgICAgIHRoaXMubWV0cmljSW52b2NhdGlvbkNvdW50KCksXG4gICAgICByYXRlQ29tcHV0YXRpb25NZXRob2QgPz8gdGhpcy5yYXRlQ29tcHV0YXRpb25NZXRob2QsXG4gICAgICBmYWxzZSxcbiAgICAgIFwicmVxdWVzdHNcIixcbiAgICAgIHRoaXMuZmlsbFRwc1dpdGhaZXJvZXMsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0ludm9jYXRpb25Db3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmFkYXB0TWV0cmljKFxuICAgICAgdGhpcy5sYW1iZGFGdW5jdGlvbi5tZXRyaWNJbnZvY2F0aW9ucyh7XG4gICAgICAgIGxhYmVsOiBcIkludm9jYXRpb25zXCIsXG4gICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sXG4gICAgICAgIGFjY291bnQ6IHRoaXMuYWNjb3VudCxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNUaHJvdHRsZXNDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmFkYXB0TWV0cmljKFxuICAgICAgdGhpcy5sYW1iZGFGdW5jdGlvbi5tZXRyaWNUaHJvdHRsZXMoe1xuICAgICAgICBsYWJlbDogXCJUaHJvdHRsZXNcIixcbiAgICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1Rocm90dGxlc1JhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS50b1JhdGUoXG4gICAgICB0aGlzLm1ldHJpY1Rocm90dGxlc0NvdW50KCksXG4gICAgICB0aGlzLnJhdGVDb21wdXRhdGlvbk1ldGhvZCxcbiAgICAgIGZhbHNlLFxuICAgICAgXCJ0aHJvdHRsZXNcIixcbiAgICApO1xuICB9XG5cbiAgbWV0cmljRmF1bHRDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmFkYXB0TWV0cmljKFxuICAgICAgdGhpcy5sYW1iZGFGdW5jdGlvbi5tZXRyaWNFcnJvcnMoe1xuICAgICAgICBsYWJlbDogXCJGYXVsdHNcIixcbiAgICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0ZhdWx0UmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LnRvUmF0ZShcbiAgICAgIHRoaXMubWV0cmljRmF1bHRDb3VudCgpLFxuICAgICAgdGhpcy5yYXRlQ29tcHV0YXRpb25NZXRob2QsXG4gICAgICBmYWxzZSxcbiAgICAgIFwiZmF1bHRzXCIsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0xhdGVuY3lJbk1pbGxpcyhsYXRlbmN5VHlwZTogTGF0ZW5jeVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmFkYXB0TWV0cmljKFxuICAgICAgdGhpcy5sYW1iZGFGdW5jdGlvbi5tZXRyaWNEdXJhdGlvbih7XG4gICAgICAgIHN0YXRpc3RpYzogZ2V0TGF0ZW5jeVR5cGVTdGF0aXN0aWMobGF0ZW5jeVR5cGUpLFxuICAgICAgICBsYWJlbDogZ2V0TGF0ZW5jeVR5cGVMYWJlbChsYXRlbmN5VHlwZSksXG4gICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sXG4gICAgICAgIGFjY291bnQ6IHRoaXMuYWNjb3VudCxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNMYXRlbmN5SW5NaWxsaXN9IGluc3RlYWQuXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5UDk5SW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA5OSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNMYXRlbmN5SW5NaWxsaXN9IGluc3RlYWQuXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5UDkwSW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA5MCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNMYXRlbmN5SW5NaWxsaXN9IGluc3RlYWQuXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5UDUwSW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA1MCk7XG4gIH1cblxuICBtZXRyaWNDb25jdXJyZW50RXhlY3V0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmFkYXB0TWV0cmljKFxuICAgICAgdGhpcy5sYW1iZGFGdW5jdGlvbi5tZXRyaWMoXCJDb25jdXJyZW50RXhlY3V0aW9uc1wiLCB7XG4gICAgICAgIHN0YXRpc3RpYzogTWV0cmljU3RhdGlzdGljLk1BWCxcbiAgICAgICAgbGFiZWw6IFwiQ29uY3VycmVudFwiLFxuICAgICAgICByZWdpb246IHRoaXMucmVnaW9uLFxuICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljUHJvdmlzaW9uZWRDb25jdXJyZW5jeVNwaWxsb3Zlckludm9jYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuYWRhcHRNZXRyaWMoXG4gICAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uLm1ldHJpYyhcIlByb3Zpc2lvbmVkQ29uY3VycmVuY3lTcGlsbG92ZXJJbnZvY2F0aW9uc1wiLCB7XG4gICAgICAgIHN0YXRpc3RpYzogTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgICAgbGFiZWw6IFwiUHJvdmlzaW9uZWQgQ29uY3VycmVuY3kgU3BpbGxvdmVyc1wiLFxuICAgICAgICByZWdpb246IHRoaXMucmVnaW9uLFxuICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljUHJvdmlzaW9uZWRDb25jdXJyZW5jeVNwaWxsb3ZlclJhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS50b1JhdGUoXG4gICAgICB0aGlzLm1ldHJpY1Byb3Zpc2lvbmVkQ29uY3VycmVuY3lTcGlsbG92ZXJJbnZvY2F0aW9ucygpLFxuICAgICAgdGhpcy5yYXRlQ29tcHV0YXRpb25NZXRob2QsXG4gICAgICBmYWxzZSxcbiAgICAgIFwicGNzaVwiLFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNNYXhJdGVyYXRvckFnZUluTWlsbGlzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuYWRhcHRNZXRyaWMoXG4gICAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uLm1ldHJpYyhcIkl0ZXJhdG9yQWdlXCIsIHtcbiAgICAgICAgc3RhdGlzdGljOiBNZXRyaWNTdGF0aXN0aWMuTUFYLFxuICAgICAgICBsYWJlbDogXCJJdGVyYXRvciBBZ2VcIixcbiAgICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY01heE9mZnNldExhZ0luTnVtYmVyT2ZSZWNvcmRzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuYWRhcHRNZXRyaWMoXG4gICAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uLm1ldHJpYyhcIk9mZnNldExhZ1wiLCB7XG4gICAgICAgIHN0YXRpc3RpYzogTWV0cmljU3RhdGlzdGljLk1BWCxcbiAgICAgICAgbGFiZWw6IFwiT2Zmc2V0IExhZ1wiLFxuICAgICAgICByZWdpb246IHRoaXMucmVnaW9uLFxuICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=