cdk-monitoring-constructs
Version:
[](https://badge.fury.io/js/cdk-monitoring-constructs) [](https://m
71 lines • 16.8 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ElastiCacheServerlessMetricFactory = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const common_1 = require("../../common");
const Namespace = "AWS/ElastiCache";
/**
* @see https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/serverless-metrics-events-redis.html
*/
class ElastiCacheServerlessMetricFactory extends common_1.BaseMetricFactory {
constructor(metricFactory, props) {
super(metricFactory, props);
this.dimensionsMap = {};
if (props.clusterId) {
this.dimensionsMap.CacheClusterId = props.clusterId;
}
}
metricMaxItemCount() {
return this.metricFactory.createMetric("CurrItems", common_1.MetricStatistic.MAX, "Count", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricEvictions() {
return this.metricFactory.createMetric("Evictions", common_1.MetricStatistic.SUM, "Evictions", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricAverageCacheSize() {
return this.metricFactory.createMetric("BytesUsedForCache", common_1.MetricStatistic.AVERAGE, "Size", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricMaxElastiCacheProcessingUnits() {
return this.metricFactory.createMetric("ElastiCacheProcessingUnits", common_1.MetricStatistic.MAX, "Processing Units", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricAverageConnections() {
return this.metricFactory.createMetric("CurrConnections", common_1.MetricStatistic.AVERAGE, "Current", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricNetworkBytesIn() {
return this.metricFactory.createMetric("NetworkBytesIn", common_1.MetricStatistic.SUM, "Bytes In", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricNetworkBytesOut() {
return this.metricFactory.createMetric("NetworkBytesOut", common_1.MetricStatistic.SUM, "Bytes Out", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricSuccessfulReadRequestLatency(latencyType) {
return this.metricFactory.createMetric("SuccessfulReadRequestLatency", (0, common_1.getLatencyTypeStatistic)(latencyType), `Read ${(0, common_1.getLatencyTypeLabel)(latencyType)}`, this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricSuccessfulWriteRequestLatency(latencyType) {
return this.metricFactory.createMetric("SuccessfulWriteRequestLatency", (0, common_1.getLatencyTypeStatistic)(latencyType), `Write ${(0, common_1.getLatencyTypeLabel)(latencyType)}`, this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricTotalThrottledCmds() {
return this.metricFactory.createMetric("ThrottledCmds", common_1.MetricStatistic.SUM, "Throttled Cmds", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricTotalCmds() {
return this.metricFactory.createMetric("TotalCmdsCount", common_1.MetricStatistic.SUM, "Cmds", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricThrottleRate() {
return this.metricFactory.createMetricMath("FILL(IF(total > 0, 100 * throttles/total, 0), 0)", {
throttles: this.metricTotalThrottledCmds(),
total: this.metricTotalCmds(),
}, "Throttle Rate");
}
metricAverageCacheHitRate() {
return this.metricFactory.createMetric("CacheHitRate", common_1.MetricStatistic.AVERAGE, "Hit rate", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricCacheHits() {
return this.metricFactory.createMetric("CacheHits", common_1.MetricStatistic.SUM, "Hits", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
metricCacheMisses() {
return this.metricFactory.createMetric("CacheMisses", common_1.MetricStatistic.SUM, "Misses", this.dimensionsMap, undefined, Namespace, undefined, this.region, this.account);
}
}
exports.ElastiCacheServerlessMetricFactory = ElastiCacheServerlessMetricFactory;
_a = JSII_RTTI_SYMBOL_1;
ElastiCacheServerlessMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.ElastiCacheServerlessMetricFactory", version: "10.0.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWxhc3RpQ2FjaGVTZXJ2ZXJsZXNzTWV0cmljRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVsYXN0aUNhY2hlU2VydmVybGVzc01ldHJpY0ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx5Q0FRc0I7QUFFdEIsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7QUFXcEM7O0dBRUc7QUFDSCxNQUFhLGtDQUFtQyxTQUFRLDBCQUFpQjtJQUd2RSxZQUNFLGFBQTRCLEVBQzVCLEtBQThDO1FBRTlDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxXQUFXLEVBQ1gsd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLE9BQU8sRUFDUCxJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsV0FBVyxFQUNYLHdCQUFlLENBQUMsR0FBRyxFQUNuQixXQUFXLEVBQ1gsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEs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QTVOSCxnRkE2TkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaW1lbnNpb25zTWFwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQge1xuICBCYXNlTWV0cmljRmFjdG9yeSxcbiAgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyxcbiAgZ2V0TGF0ZW5jeVR5cGVMYWJlbCxcbiAgZ2V0TGF0ZW5jeVR5cGVTdGF0aXN0aWMsXG4gIExhdGVuY3lUeXBlLFxuICBNZXRyaWNGYWN0b3J5LFxuICBNZXRyaWNTdGF0aXN0aWMsXG59IGZyb20gXCIuLi8uLi9jb21tb25cIjtcblxuY29uc3QgTmFtZXNwYWNlID0gXCJBV1MvRWxhc3RpQ2FjaGVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbGFzdGlDYWNoZVNlcnZlcmxlc3NNZXRyaWNGYWN0b3J5UHJvcHNcbiAgZXh0ZW5kcyBCYXNlTWV0cmljRmFjdG9yeVByb3BzIHtcbiAgLyoqXG4gICAqIENsdXN0ZXIgdG8gbW9uaXRvclxuICAgKiBAZGVmYXVsdCAtIG1vbml0b3IgYWxsIGNsdXN0ZXJzXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVySWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRWxhc3RpQ2FjaGUvbGF0ZXN0L2RnL3NlcnZlcmxlc3MtbWV0cmljcy1ldmVudHMtcmVkaXMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgRWxhc3RpQ2FjaGVTZXJ2ZXJsZXNzTWV0cmljRmFjdG9yeSBleHRlbmRzIEJhc2VNZXRyaWNGYWN0b3J5IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpbWVuc2lvbnNNYXA6IERpbWVuc2lvbnNNYXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbWV0cmljRmFjdG9yeTogTWV0cmljRmFjdG9yeSxcbiAgICBwcm9wczogRWxhc3RpQ2FjaGVTZXJ2ZXJsZXNzTWV0cmljRmFjdG9yeVByb3BzLFxuICApIHtcbiAgICBzdXBlcihtZXRyaWNGYWN0b3J5LCBwcm9wcyk7XG5cbiAgICB0aGlzLmRpbWVuc2lvbnNNYXAgPSB7fTtcbiAgICBpZiAocHJvcHMuY2x1c3RlcklkKSB7XG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAuQ2FjaGVDbHVzdGVySWQgPSBwcm9wcy5jbHVzdGVySWQ7XG4gICAgfVxuICB9XG5cbiAgbWV0cmljTWF4SXRlbUNvdW50KCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJDdXJySXRlbXNcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5NQVgsXG4gICAgICBcIkNvdW50XCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljRXZpY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJFdmljdGlvbnNcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIkV2aWN0aW9uc1wiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0F2ZXJhZ2VDYWNoZVNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIkJ5dGVzVXNlZEZvckNhY2hlXCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgIFwiU2l6ZVwiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY01heEVsYXN0aUNhY2hlUHJvY2Vzc2luZ1VuaXRzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJFbGFzdGlDYWNoZVByb2Nlc3NpbmdVbml0c1wiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLk1BWCxcbiAgICAgIFwiUHJvY2Vzc2luZyBVbml0c1wiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0F2ZXJhZ2VDb25uZWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiQ3VyckNvbm5lY3Rpb25zXCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgIFwiQ3VycmVudFwiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY05ldHdvcmtCeXRlc0luKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJOZXR3b3JrQnl0ZXNJblwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiQnl0ZXMgSW5cIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNOZXR3b3JrQnl0ZXNPdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIk5ldHdvcmtCeXRlc091dFwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiQnl0ZXMgT3V0XCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljU3VjY2Vzc2Z1bFJlYWRSZXF1ZXN0TGF0ZW5jeShsYXRlbmN5VHlwZTogTGF0ZW5jeVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiU3VjY2Vzc2Z1bFJlYWRSZXF1ZXN0TGF0ZW5jeVwiLFxuICAgICAgZ2V0TGF0ZW5jeVR5cGVTdGF0aXN0aWMobGF0ZW5jeVR5cGUpLFxuICAgICAgYFJlYWQgJHtnZXRMYXRlbmN5VHlwZUxhYmVsKGxhdGVuY3lUeXBlKX1gLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1N1Y2Nlc3NmdWxXcml0ZVJlcXVlc3RMYXRlbmN5KGxhdGVuY3lUeXBlOiBMYXRlbmN5VHlwZSkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJTdWNjZXNzZnVsV3JpdGVSZXF1ZXN0TGF0ZW5jeVwiLFxuICAgICAgZ2V0TGF0ZW5jeVR5cGVTdGF0aXN0aWMobGF0ZW5jeVR5cGUpLFxuICAgICAgYFdyaXRlICR7Z2V0TGF0ZW5jeVR5cGVMYWJlbChsYXRlbmN5VHlwZSl9YCxcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNUb3RhbFRocm90dGxlZENtZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIlRocm90dGxlZENtZHNcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIlRocm90dGxlZCBDbWRzXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljVG90YWxDbWRzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJUb3RhbENtZHNDb3VudFwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiQ21kc1wiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1Rocm90dGxlUmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpY01hdGgoXG4gICAgICBcIkZJTEwoSUYodG90YWwgPiAwLCAxMDAgKiB0aHJvdHRsZXMvdG90YWwsIDApLCAwKVwiLFxuICAgICAge1xuICAgICAgICB0aHJvdHRsZXM6IHRoaXMubWV0cmljVG90YWxUaHJvdHRsZWRDbWRzKCksXG4gICAgICAgIHRvdGFsOiB0aGlzLm1ldHJpY1RvdGFsQ21kcygpLFxuICAgICAgfSxcbiAgICAgIFwiVGhyb3R0bGUgUmF0ZVwiLFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNBdmVyYWdlQ2FjaGVIaXRSYXRlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJDYWNoZUhpdFJhdGVcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5BVkVSQUdFLFxuICAgICAgXCJIaXQgcmF0ZVwiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0NhY2hlSGl0cygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiQ2FjaGVIaXRzXCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCJIaXRzXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljQ2FjaGVNaXNzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIkNhY2hlTWlzc2VzXCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCJNaXNzZXNcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==