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

80 lines 12.6 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.RdsClusterMetricFactory = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const common_1 = require("../../common"); const RdsNamespace = "AWS/RDS"; class RdsClusterMetricFactory extends common_1.BaseMetricFactory { constructor(metricFactory, props) { super(metricFactory, props); this.cluster = props.cluster; this.clusterIdentifier = RdsClusterMetricFactory.resolveDbClusterIdentifier(props); this.dimensionsMap = { DBClusterIdentifier: this.clusterIdentifier }; } static resolveDbClusterIdentifier(props) { if (props.clusterIdentifier !== undefined && props.cluster === undefined) { return props.clusterIdentifier; } else if (props.clusterIdentifier === undefined && props.cluster !== undefined) { return props.cluster.clusterIdentifier; } else if (props.cluster !== undefined && props.cluster !== undefined) { throw Error("Only one of `clusterIdentifier` and `cluster` is supported"); } else { throw Error("At least one of `clusterIdentifier` or `cluster` is required"); } } isServerlessCluster(obj) { return obj.clusterArn !== undefined; } metricTotalConnectionCount() { return this.metric("DatabaseConnections", common_1.MetricStatistic.AVERAGE, "Connections"); } metricFreeStorageInBytes() { return this.metric("FreeLocalStorage", common_1.MetricStatistic.MIN, "Free"); } metricUsedStorageInBytes() { return this.metric("VolumeBytesUsed", common_1.MetricStatistic.MAX, "Used"); } metricDiskSpaceUsageInPercent() { return this.metricFactory.createMetricMath("100 * (used/(used+free))", { used: this.metricUsedStorageInBytes(), free: this.metricFreeStorageInBytes(), }, "Disk Usage"); } metricAverageCpuUsageInPercent() { return this.metric("CPUUtilization", common_1.MetricStatistic.AVERAGE, "CPU Usage"); } metricSelectLatencyP90InMillis() { return this.metric("SelectLatency", common_1.MetricStatistic.P90, "Select"); } metricInsertLatencyP90InMillis() { return this.metric("InsertLatency", common_1.MetricStatistic.P90, "Insert"); } metricUpdateLatencyP90InMillis() { return this.metric("UpdateLatency", common_1.MetricStatistic.P90, "Update"); } metricDeleteLatencyP90InMillis() { return this.metric("DeleteLatency", common_1.MetricStatistic.P90, "Delete"); } metricCommitLatencyP90InMillis() { return this.metric("CommitLatency", common_1.MetricStatistic.P90, "Commit"); } metricServerlessDatabaseCapacity() { if (!this.isServerlessCluster(this.cluster)) { throw Error("Cluster is not of type `ServerlessCluster`. Metric is not applicable"); } return this.metric("ServerlessDatabaseCapacity", common_1.MetricStatistic.AVERAGE, "Serverless Database Capacity"); } metric(metricName, statistic, label) { return this.metricFactory.createMetric(metricName, statistic, label, this.dimensionsMap, undefined, RdsNamespace, undefined, this.region, this.account); } } exports.RdsClusterMetricFactory = RdsClusterMetricFactory; _a = JSII_RTTI_SYMBOL_1; RdsClusterMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.RdsClusterMetricFactory", version: "9.7.1" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmRzQ2x1c3Rlck1ldHJpY0ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJSZHNDbHVzdGVyTWV0cmljRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUtzQjtBQUV0QixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUM7QUFjL0IsTUFBYSx1QkFBd0IsU0FBUSwwQkFBK0M7SUFLMUYsWUFDRSxhQUE0QixFQUM1QixLQUFtQztRQUVuQyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCO1lBQ3BCLHVCQUF1QixDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRU8sTUFBTSxDQUFDLDBCQUEwQixDQUN2QyxLQUFtQztRQUVuQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDeEUsT0FBTyxLQUFLLENBQUMsaUJBQWlCLENBQUM7U0FDaEM7YUFBTSxJQUNMLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTO1lBQ3JDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUMzQjtZQUNBLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztTQUN4QzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDckUsTUFBTSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztTQUMzRTthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQ1QsOERBQThELENBQy9ELENBQUM7U0FDSDtJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUFRO1FBQ2xDLE9BQVEsR0FBVyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQ2hCLHFCQUFxQixFQUNyQix3QkFBZSxDQUFDLE9BQU8sRUFDdkIsYUFBYSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSx3QkFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSx3QkFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsNkJBQTZCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDeEMsMEJBQTBCLEVBQzFCO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1NBQ3RDLEVBQ0QsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsOEJBQThCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSx3QkFBZSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsOEJBQThCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsd0JBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELDhCQUE4QjtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLHdCQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCw4QkFBOEI7UUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSx3QkFBZSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsOEJBQThCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsd0JBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELDhCQUE4QjtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLHdCQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxnQ0FBZ0M7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0MsTUFBTSxLQUFLLENBQ1Qsc0VBQXNFLENBQ3ZFLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FDaEIsNEJBQTRCLEVBQzVCLHdCQUFlLENBQUMsT0FBTyxFQUN2Qiw4QkFBOEIsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQ1osVUFBa0IsRUFDbEIsU0FBMEIsRUFDMUIsS0FBYTtRQUViLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQ3BDLFVBQVUsRUFDVixTQUFTLEVBQ1QsS0FBSyxFQUNMLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQzs7QUF6SEgsMERBMEhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGltZW5zaW9uc01hcCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHsgSURhdGFiYXNlQ2x1c3RlciwgU2VydmVybGVzc0NsdXN0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiO1xuXG5pbXBvcnQge1xuICBCYXNlTWV0cmljRmFjdG9yeSxcbiAgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyxcbiAgTWV0cmljRmFjdG9yeSxcbiAgTWV0cmljU3RhdGlzdGljLFxufSBmcm9tIFwiLi4vLi4vY29tbW9uXCI7XG5cbmNvbnN0IFJkc05hbWVzcGFjZSA9IFwiQVdTL1JEU1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJkc0NsdXN0ZXJNZXRyaWNGYWN0b3J5UHJvcHMgZXh0ZW5kcyBCYXNlTWV0cmljRmFjdG9yeVByb3BzIHtcbiAgLyoqXG4gICAqIGRhdGFiYXNlIGNsdXN0ZXIgaWRlbnRpZmllciAoZWl0aGVyIHRoaXMgb3IgYGNsdXN0ZXJgIG5lZWQgdG8gYmUgc3BlY2lmaWVkKVxuICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIGBjbHVzdGVyYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcbiAgLyoqXG4gICAqIGRhdGFiYXNlIGNsdXN0ZXIgKGVpdGhlciB0aGlzIG9yIGBjbHVzdGVySWRlbnRpZmllcmAgbmVlZCB0byBiZSBzcGVjaWZpZWQpXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyPzogSURhdGFiYXNlQ2x1c3RlciB8IFNlcnZlcmxlc3NDbHVzdGVyO1xufVxuXG5leHBvcnQgY2xhc3MgUmRzQ2x1c3Rlck1ldHJpY0ZhY3RvcnkgZXh0ZW5kcyBCYXNlTWV0cmljRmFjdG9yeTxSZHNDbHVzdGVyTWV0cmljRmFjdG9yeVByb3BzPiB7XG4gIHJlYWRvbmx5IGNsdXN0ZXJJZGVudGlmaWVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBJRGF0YWJhc2VDbHVzdGVyIHwgU2VydmVybGVzc0NsdXN0ZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaW1lbnNpb25zTWFwOiBEaW1lbnNpb25zTWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1ldHJpY0ZhY3Rvcnk6IE1ldHJpY0ZhY3RvcnksXG4gICAgcHJvcHM6IFJkc0NsdXN0ZXJNZXRyaWNGYWN0b3J5UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKG1ldHJpY0ZhY3RvcnksIHByb3BzKTtcblxuICAgIHRoaXMuY2x1c3RlciA9IHByb3BzLmNsdXN0ZXI7XG4gICAgdGhpcy5jbHVzdGVySWRlbnRpZmllciA9XG4gICAgICBSZHNDbHVzdGVyTWV0cmljRmFjdG9yeS5yZXNvbHZlRGJDbHVzdGVySWRlbnRpZmllcihwcm9wcyk7XG4gICAgdGhpcy5kaW1lbnNpb25zTWFwID0geyBEQkNsdXN0ZXJJZGVudGlmaWVyOiB0aGlzLmNsdXN0ZXJJZGVudGlmaWVyIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlRGJDbHVzdGVySWRlbnRpZmllcihcbiAgICBwcm9wczogUmRzQ2x1c3Rlck1ldHJpY0ZhY3RvcnlQcm9wcyxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAocHJvcHMuY2x1c3RlcklkZW50aWZpZXIgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5jbHVzdGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBwcm9wcy5jbHVzdGVySWRlbnRpZmllcjtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgcHJvcHMuY2x1c3RlcklkZW50aWZpZXIgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgcHJvcHMuY2x1c3RlciAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICByZXR1cm4gcHJvcHMuY2x1c3Rlci5jbHVzdGVySWRlbnRpZmllcjtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmNsdXN0ZXIgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5jbHVzdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IEVycm9yKFwiT25seSBvbmUgb2YgYGNsdXN0ZXJJZGVudGlmaWVyYCBhbmQgYGNsdXN0ZXJgIGlzIHN1cHBvcnRlZFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIFwiQXQgbGVhc3Qgb25lIG9mIGBjbHVzdGVySWRlbnRpZmllcmAgb3IgYGNsdXN0ZXJgIGlzIHJlcXVpcmVkXCIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTZXJ2ZXJsZXNzQ2x1c3RlcihvYmo6IGFueSk6IG9iaiBpcyBTZXJ2ZXJsZXNzQ2x1c3RlciB7XG4gICAgcmV0dXJuIChvYmogYXMgYW55KS5jbHVzdGVyQXJuICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBtZXRyaWNUb3RhbENvbm5lY3Rpb25Db3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoXG4gICAgICBcIkRhdGFiYXNlQ29ubmVjdGlvbnNcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5BVkVSQUdFLFxuICAgICAgXCJDb25uZWN0aW9uc1wiLFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNGcmVlU3RvcmFnZUluQnl0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKFwiRnJlZUxvY2FsU3RvcmFnZVwiLCBNZXRyaWNTdGF0aXN0aWMuTUlOLCBcIkZyZWVcIik7XG4gIH1cblxuICBtZXRyaWNVc2VkU3RvcmFnZUluQnl0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKFwiVm9sdW1lQnl0ZXNVc2VkXCIsIE1ldHJpY1N0YXRpc3RpYy5NQVgsIFwiVXNlZFwiKTtcbiAgfVxuXG4gIG1ldHJpY0Rpc2tTcGFjZVVzYWdlSW5QZXJjZW50KCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljTWF0aChcbiAgICAgIFwiMTAwICogKHVzZWQvKHVzZWQrZnJlZSkpXCIsXG4gICAgICB7XG4gICAgICAgIHVzZWQ6IHRoaXMubWV0cmljVXNlZFN0b3JhZ2VJbkJ5dGVzKCksXG4gICAgICAgIGZyZWU6IHRoaXMubWV0cmljRnJlZVN0b3JhZ2VJbkJ5dGVzKCksXG4gICAgICB9LFxuICAgICAgXCJEaXNrIFVzYWdlXCIsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0F2ZXJhZ2VDcHVVc2FnZUluUGVyY2VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoXCJDUFVVdGlsaXphdGlvblwiLCBNZXRyaWNTdGF0aXN0aWMuQVZFUkFHRSwgXCJDUFUgVXNhZ2VcIik7XG4gIH1cblxuICBtZXRyaWNTZWxlY3RMYXRlbmN5UDkwSW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKFwiU2VsZWN0TGF0ZW5jeVwiLCBNZXRyaWNTdGF0aXN0aWMuUDkwLCBcIlNlbGVjdFwiKTtcbiAgfVxuXG4gIG1ldHJpY0luc2VydExhdGVuY3lQOTBJbk1pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoXCJJbnNlcnRMYXRlbmN5XCIsIE1ldHJpY1N0YXRpc3RpYy5QOTAsIFwiSW5zZXJ0XCIpO1xuICB9XG5cbiAgbWV0cmljVXBkYXRlTGF0ZW5jeVA5MEluTWlsbGlzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhcIlVwZGF0ZUxhdGVuY3lcIiwgTWV0cmljU3RhdGlzdGljLlA5MCwgXCJVcGRhdGVcIik7XG4gIH1cblxuICBtZXRyaWNEZWxldGVMYXRlbmN5UDkwSW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKFwiRGVsZXRlTGF0ZW5jeVwiLCBNZXRyaWNTdGF0aXN0aWMuUDkwLCBcIkRlbGV0ZVwiKTtcbiAgfVxuXG4gIG1ldHJpY0NvbW1pdExhdGVuY3lQOTBJbk1pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoXCJDb21taXRMYXRlbmN5XCIsIE1ldHJpY1N0YXRpc3RpYy5QOTAsIFwiQ29tbWl0XCIpO1xuICB9XG5cbiAgbWV0cmljU2VydmVybGVzc0RhdGFiYXNlQ2FwYWNpdHkoKSB7XG4gICAgaWYgKCF0aGlzLmlzU2VydmVybGVzc0NsdXN0ZXIodGhpcy5jbHVzdGVyKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIFwiQ2x1c3RlciBpcyBub3Qgb2YgdHlwZSBgU2VydmVybGVzc0NsdXN0ZXJgLiBNZXRyaWMgaXMgbm90IGFwcGxpY2FibGVcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubWV0cmljKFxuICAgICAgXCJTZXJ2ZXJsZXNzRGF0YWJhc2VDYXBhY2l0eVwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLkFWRVJBR0UsXG4gICAgICBcIlNlcnZlcmxlc3MgRGF0YWJhc2UgQ2FwYWNpdHlcIixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXRyaWMoXG4gICAgbWV0cmljTmFtZTogc3RyaW5nLFxuICAgIHN0YXRpc3RpYzogTWV0cmljU3RhdGlzdGljLFxuICAgIGxhYmVsOiBzdHJpbmcsXG4gICkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIHN0YXRpc3RpYyxcbiAgICAgIGxhYmVsLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgUmRzTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxufVxuIl19