truemark-cdk-lib 0.0.21 → 0.0.23
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.
- package/aws-lambda/lib/deployed-function.js +3 -3
- package/aws-lambda/lib/function-alarms.d.ts +9 -86
- package/aws-lambda/lib/function-alarms.js +55 -137
- package/aws-monitoring/lib/alarms-base.js +2 -2
- package/aws-ssm/lib/parameter-reader.js +1 -1
- package/package.json +2 -2
- package/test/aws-lambda/python-function.test.js +7 -7
|
@@ -16,13 +16,13 @@ class DeployedFunction extends observed_function_1.ObservedFunction {
|
|
|
16
16
|
function: this
|
|
17
17
|
});
|
|
18
18
|
if (((_b = props.deploymentOptions) === null || _b === void 0 ? void 0 : _b.includeCriticalAlarms) === undefined || props.deploymentOptions.includeCriticalAlarms) {
|
|
19
|
-
this.deployment.addAlarms(...this.functionAlarms.
|
|
19
|
+
this.deployment.addAlarms(...this.functionAlarms.getCriticalAlarms());
|
|
20
20
|
}
|
|
21
21
|
if ((_c = props.deploymentOptions) === null || _c === void 0 ? void 0 : _c.includeWarningAlarms) {
|
|
22
|
-
this.deployment.addAlarms(...this.functionAlarms.
|
|
22
|
+
this.deployment.addAlarms(...this.functionAlarms.getWarningAlarms());
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
exports.DeployedFunction = DeployedFunction;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95ZWQtZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3llZC1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBNEU7QUFDNUUsK0RBQW9GO0FBdUNwRjs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsb0NBQWdCO0lBSXBELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksT0FBQSxLQUFLLENBQUMsaUJBQWlCLDBDQUFFLGdCQUFnQixNQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUU7WUFFdkcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHdDQUFrQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQzNELEdBQUcsS0FBSyxDQUFDLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFFSCxJQUFJLE9BQUEsS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxxQkFBcUIsTUFBSyxTQUFTLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFO2dCQUNqSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsVUFBSSxLQUFLLENBQUMsaUJBQWlCLDBDQUFFLG9CQUFvQixFQUFFO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUF0QkQsNENBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge09ic2VydmVkRnVuY3Rpb24sIE9ic2VydmVkRnVuY3Rpb25Qcm9wc30gZnJvbSBcIi4vb2JzZXJ2ZWQtZnVuY3Rpb25cIjtcbmltcG9ydCB7RnVuY3Rpb25EZXBsb3ltZW50LCBGdW5jdGlvbkRlcGxveW1lbnRPcHRpb25zfSBmcm9tIFwiLi9mdW5jdGlvbi1kZXBsb3ltZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRGdW5jdGlvbkRlcGxveW1lbnRPcHRpb25zIGV4dGVuZHMgRnVuY3Rpb25EZXBsb3ltZW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJbmNsdWRlIFdhcm5pbmcgQ2xvdWRXYXRjaCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlV2FybmluZ0FsYXJtcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluY2x1ZGUgQ3JpdGljYWwgQ2xvdWRXYXRjaCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVDcml0aWNhbEFsYXJtcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHByZXZlbnQgdGhlIGNyZWF0aW9uIG9mIHRoZSBmdW5jdGlvbiBhbGlhcyBhbmRcbiAgICogZGVwbG95bWVudCBncm91cCBmb3IgdGhlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVEZXBsb3ltZW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3llZEZ1bmN0aW9uT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdG8gdXNlLiBJZiBub25lIGFyZSBwcm92aWRlZCBhIGRlZmF1bHQgc2V0IGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50T3B0aW9ucz86IERlcGxveWVkRnVuY3Rpb25EZXBsb3ltZW50T3B0aW9ucztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBEZXBsb3llZEZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveWVkRnVuY3Rpb25Qcm9wcyBleHRlbmRzIE9ic2VydmVkRnVuY3Rpb25Qcm9wcywgRGVwbG95ZWRGdW5jdGlvbk9wdGlvbnMge31cblxuLyoqXG4gKiBMYW1iZGEgZnVuY3Rpb24gd2l0aCBDb2RlRGVwbG95IGRlcGxveW1lbnQgZ3JvdXAuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBsb3llZEZ1bmN0aW9uIGV4dGVuZHMgT2JzZXJ2ZWRGdW5jdGlvbiB7XG5cbiAgcmVhZG9ubHkgZGVwbG95bWVudDogRnVuY3Rpb25EZXBsb3ltZW50O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEZXBsb3llZEZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5kZXBsb3ltZW50T3B0aW9ucz8uY3JlYXRlRGVwbG95bWVudCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmRlcGxveW1lbnRPcHRpb25zLmNyZWF0ZURlcGxveW1lbnQpIHtcblxuICAgICAgdGhpcy5kZXBsb3ltZW50ID0gbmV3IEZ1bmN0aW9uRGVwbG95bWVudCh0aGlzLCAnRGVwbG95bWVudCcsIHtcbiAgICAgICAgLi4ucHJvcHMuZGVwbG95bWVudE9wdGlvbnMsXG4gICAgICAgIGZ1bmN0aW9uOiB0aGlzXG4gICAgICB9KTtcblxuICAgICAgaWYgKHByb3BzLmRlcGxveW1lbnRPcHRpb25zPy5pbmNsdWRlQ3JpdGljYWxBbGFybXMgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5kZXBsb3ltZW50T3B0aW9ucy5pbmNsdWRlQ3JpdGljYWxBbGFybXMpIHtcbiAgICAgICAgdGhpcy5kZXBsb3ltZW50LmFkZEFsYXJtcyguLi50aGlzLmZ1bmN0aW9uQWxhcm1zLmdldENyaXRpY2FsQWxhcm1zKCkpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRlcGxveW1lbnRPcHRpb25zPy5pbmNsdWRlV2FybmluZ0FsYXJtcykge1xuICAgICAgICB0aGlzLmRlcGxveW1lbnQuYWRkQWxhcm1zKC4uLnRoaXMuZnVuY3Rpb25BbGFybXMuZ2V0V2FybmluZ0FsYXJtcygpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { Duration } from "aws-cdk-lib";
|
|
2
|
-
import {
|
|
3
|
-
import { Alarm, IAlarmAction } from "aws-cdk-lib/aws-cloudwatch";
|
|
4
|
-
import { IDashboardFactory, MonitoringFacade } from "cdk-monitoring-constructs";
|
|
2
|
+
import { AlarmCategory, AlarmsBase, AlarmsCategoryOptions, AlarmsOptions } from "../../aws-monitoring";
|
|
5
3
|
import { IFunction } from "aws-cdk-lib/aws-lambda";
|
|
6
4
|
import { ILogGroup } from "aws-cdk-lib/aws-logs";
|
|
7
5
|
import { Construct } from "constructs";
|
|
6
|
+
import { Alarm } from "aws-cdk-lib/aws-cloudwatch";
|
|
8
7
|
/**
|
|
9
8
|
* Category options for CloudWatch alarms for Lambda Functions.
|
|
10
9
|
*/
|
|
11
|
-
export interface FunctionAlarmsCategoryOptions {
|
|
10
|
+
export interface FunctionAlarmsCategoryOptions extends AlarmsCategoryOptions {
|
|
12
11
|
/**
|
|
13
12
|
* Maximum 50th percentile latency
|
|
14
13
|
*/
|
|
@@ -112,80 +111,17 @@ export interface FunctionAlarmsCategoryOptions {
|
|
|
112
111
|
* @default '"[ERROR]"'
|
|
113
112
|
*/
|
|
114
113
|
readonly dashboardLogPattern?: string;
|
|
115
|
-
/**
|
|
116
|
-
* Topics to send alarm notifications
|
|
117
|
-
*/
|
|
118
|
-
readonly notifyTopics?: ITopic[];
|
|
119
|
-
/**
|
|
120
|
-
* Actions to send alarm notifications
|
|
121
|
-
*/
|
|
122
|
-
readonly notifyActions?: IAlarmAction[];
|
|
123
114
|
}
|
|
124
115
|
/**
|
|
125
116
|
* Options for CloudWatch alarms for Lambda Functions
|
|
126
117
|
*/
|
|
127
|
-
export interface FunctionAlarmsOptions {
|
|
128
|
-
/**
|
|
129
|
-
* Alarm thresholds for critical alarms.
|
|
130
|
-
*
|
|
131
|
-
* If no properties are provided, a set of default alarms are created.
|
|
132
|
-
*/
|
|
133
|
-
readonly criticalAlarmOptions?: FunctionAlarmsCategoryOptions;
|
|
134
|
-
/**
|
|
135
|
-
* Alarm threshold for warning alarms.
|
|
136
|
-
*
|
|
137
|
-
* If no properties are provided, a set of default alarms are created.
|
|
138
|
-
*/
|
|
139
|
-
readonly warningAlarmOptions?: FunctionAlarmsCategoryOptions;
|
|
140
|
-
/**
|
|
141
|
-
* Main entry point for monitoring.
|
|
142
|
-
*
|
|
143
|
-
* If no value is provided, a default facade will be created.
|
|
144
|
-
*/
|
|
145
|
-
readonly monitoringFacade?: MonitoringFacade;
|
|
146
|
-
/**
|
|
147
|
-
* The DashboardFactory to use when generating CloudWatch dashboards.
|
|
148
|
-
*
|
|
149
|
-
* If not defined, dashboards are not generated.
|
|
150
|
-
*/
|
|
151
|
-
readonly dashboardFactory?: IDashboardFactory;
|
|
118
|
+
export interface FunctionAlarmsOptions extends AlarmsOptions<FunctionAlarmsCategoryOptions> {
|
|
152
119
|
/**
|
|
153
120
|
* Generate dashboard charts for Lambda insights metrics.
|
|
154
121
|
*
|
|
155
122
|
* @default true
|
|
156
123
|
*/
|
|
157
124
|
readonly lambdaInsightsEnabled?: boolean;
|
|
158
|
-
/**
|
|
159
|
-
* Add widgets to alarm dashboard.
|
|
160
|
-
*
|
|
161
|
-
* @default true
|
|
162
|
-
*/
|
|
163
|
-
readonly addToAlarmDashboard?: boolean;
|
|
164
|
-
/**
|
|
165
|
-
* Add widgets to detailed dashboard.
|
|
166
|
-
*
|
|
167
|
-
* @default true
|
|
168
|
-
*/
|
|
169
|
-
readonly addToDetailDashboard?: boolean;
|
|
170
|
-
/**
|
|
171
|
-
* Add widgets to summary dashboard.
|
|
172
|
-
*
|
|
173
|
-
* @default true
|
|
174
|
-
*/
|
|
175
|
-
readonly addToSummaryDashboard?: boolean;
|
|
176
|
-
/**
|
|
177
|
-
* Prefix for generated alarms.
|
|
178
|
-
*
|
|
179
|
-
* @default Stack.of(this).stackName
|
|
180
|
-
*/
|
|
181
|
-
readonly alarmNamePrefix?: string;
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Used to disambiguate warning and critical alarms.
|
|
185
|
-
*/
|
|
186
|
-
export declare enum FunctionAlarmCategory {
|
|
187
|
-
Critical = "Critical",
|
|
188
|
-
Warning = "Warning"
|
|
189
125
|
}
|
|
190
126
|
/**
|
|
191
127
|
* Properties for FunctionAlarms
|
|
@@ -203,7 +139,7 @@ export interface FunctionAlarmsProps extends FunctionAlarmsOptions {
|
|
|
203
139
|
/**
|
|
204
140
|
* Creates CloudWatch alarms for a Lambda Function.
|
|
205
141
|
*/
|
|
206
|
-
export declare class FunctionAlarms extends
|
|
142
|
+
export declare class FunctionAlarms extends AlarmsBase<FunctionAlarmsCategoryOptions, FunctionAlarmsProps> {
|
|
207
143
|
/**
|
|
208
144
|
* Default pattern used for the critical log metric.
|
|
209
145
|
*/
|
|
@@ -216,24 +152,11 @@ export declare class FunctionAlarms extends Construct {
|
|
|
216
152
|
* Default pattern used to show logs on the CloudWatch dashboard.
|
|
217
153
|
*/
|
|
218
154
|
static readonly DEFAULT_LOG_INSIGHTS_PATTERN = "\\[ERROR\\]|\\[WARNING\\]";
|
|
219
|
-
/**
|
|
220
|
-
* The MonitoringFacade instance either passed in or generated.
|
|
221
|
-
*/
|
|
222
|
-
readonly monitoringFacade: MonitoringFacade;
|
|
223
|
-
/**
|
|
224
|
-
* Generated critical alarms.
|
|
225
|
-
*/
|
|
226
|
-
readonly criticalAlarms: Alarm[];
|
|
227
|
-
/**
|
|
228
|
-
* Generated warning alarms.
|
|
229
|
-
*/
|
|
230
|
-
readonly warningAlarms: Alarm[];
|
|
231
|
-
private readonly props;
|
|
232
|
-
private addRecordValue;
|
|
233
|
-
private toRecord;
|
|
234
|
-
private addAlarm;
|
|
235
155
|
private addFunctionMonitoring;
|
|
236
|
-
private
|
|
156
|
+
private criticalLogAlarm;
|
|
157
|
+
private warningLogAlarm;
|
|
237
158
|
private addLogAlarm;
|
|
159
|
+
private addLogMonitoringToDashboard;
|
|
238
160
|
constructor(scope: Construct, id: string, props: FunctionAlarmsProps);
|
|
161
|
+
getAlarms(category: AlarmCategory): Alarm[];
|
|
239
162
|
}
|
|
@@ -1,110 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FunctionAlarms =
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const cdk_monitoring_constructs_1 = require("cdk-monitoring-constructs");
|
|
6
|
-
const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
|
|
3
|
+
exports.FunctionAlarms = void 0;
|
|
7
4
|
const aws_monitoring_1 = require("../../aws-monitoring");
|
|
8
|
-
const constructs_1 = require("constructs");
|
|
9
5
|
const aws_cloudwatch_1 = require("../../aws-cloudwatch");
|
|
10
|
-
/**
|
|
11
|
-
* Helper function to get the correct critical or warning options from FunctionAlarmsOptions dynamically.
|
|
12
|
-
*
|
|
13
|
-
* @param props the properties holding the values
|
|
14
|
-
* @param category the alarm category
|
|
15
|
-
*/
|
|
16
|
-
function getFunctionAlarmsCategoryOptions(props, category) {
|
|
17
|
-
const fprop = category === 'Critical' ? 'criticalAlarmOptions' : 'warningAlarmOptions';
|
|
18
|
-
return props[fprop];
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Helper function to combine an array if IAlarmAction and ITopic objects into a single IAlarmAction array.
|
|
22
|
-
*
|
|
23
|
-
* @param actions the actions
|
|
24
|
-
* @param topics the topics
|
|
25
|
-
*/
|
|
26
|
-
function combineActions(actions, topics) {
|
|
27
|
-
const combined = [];
|
|
28
|
-
actions === null || actions === void 0 ? void 0 : actions.forEach((action) => combined.push(action));
|
|
29
|
-
topics === null || topics === void 0 ? void 0 : topics.forEach((topic) => combined.push(new aws_cloudwatch_actions_1.SnsAction(topic)));
|
|
30
|
-
return combined;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Used to disambiguate warning and critical alarms.
|
|
34
|
-
*/
|
|
35
|
-
var FunctionAlarmCategory;
|
|
36
|
-
(function (FunctionAlarmCategory) {
|
|
37
|
-
FunctionAlarmCategory["Critical"] = "Critical";
|
|
38
|
-
FunctionAlarmCategory["Warning"] = "Warning";
|
|
39
|
-
})(FunctionAlarmCategory = exports.FunctionAlarmCategory || (exports.FunctionAlarmCategory = {}));
|
|
40
|
-
/**
|
|
41
|
-
* Internal class to assist in generating CustomAlarmThreshold instances.
|
|
42
|
-
*/
|
|
43
|
-
class FunctionAlarmFacade {
|
|
44
|
-
constructor(props) {
|
|
45
|
-
this.props = props;
|
|
46
|
-
this.actions = combineActions(props.actions, props.topics);
|
|
47
|
-
}
|
|
48
|
-
toCustomAlarmThreshold() {
|
|
49
|
-
var _a;
|
|
50
|
-
if (this.props.threshold !== undefined || this.props.defaultThreshold !== undefined) {
|
|
51
|
-
return {
|
|
52
|
-
[this.props.prop]: (_a = this.props.threshold) !== null && _a !== void 0 ? _a : this.props.defaultThreshold,
|
|
53
|
-
actionsEnabled: true,
|
|
54
|
-
actionOverride: new aws_monitoring_1.StandardAlarmActionsStrategy({ actions: this.actions }),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
addCustomAlarmThreshold(category, record) {
|
|
60
|
-
const c = this.toCustomAlarmThreshold();
|
|
61
|
-
if (c !== undefined) {
|
|
62
|
-
record[category] = c;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
6
|
/**
|
|
67
7
|
* Creates CloudWatch alarms for a Lambda Function.
|
|
68
8
|
*/
|
|
69
|
-
class FunctionAlarms extends
|
|
9
|
+
class FunctionAlarms extends aws_monitoring_1.AlarmsBase {
|
|
70
10
|
constructor(scope, id, props) {
|
|
71
|
-
|
|
72
|
-
super(scope, id);
|
|
73
|
-
this.props = props;
|
|
74
|
-
this.criticalAlarms = [];
|
|
75
|
-
this.warningAlarms = [];
|
|
76
|
-
this.monitoringFacade = (_a = props.monitoringFacade) !== null && _a !== void 0 ? _a : new cdk_monitoring_constructs_1.MonitoringFacade(this, 'MonitoringFacade', {
|
|
77
|
-
metricFactoryDefaults: {},
|
|
78
|
-
alarmFactoryDefaults: {
|
|
79
|
-
actionsEnabled: true,
|
|
80
|
-
alarmNamePrefix: (_b = props.alarmNamePrefix) !== null && _b !== void 0 ? _b : aws_cdk_lib_1.Stack.of(this).stackName
|
|
81
|
-
},
|
|
82
|
-
dashboardFactory: props.dashboardFactory
|
|
83
|
-
});
|
|
11
|
+
super(scope, id, props);
|
|
84
12
|
this.addFunctionMonitoring();
|
|
85
13
|
this.addLogMonitoringToDashboard();
|
|
86
|
-
this.addLogAlarm(
|
|
87
|
-
this.addLogAlarm(
|
|
88
|
-
}
|
|
89
|
-
addRecordValue(record, category, sprop, tprop, defaultThreshold) {
|
|
90
|
-
const fprops = getFunctionAlarmsCategoryOptions(this.props, category);
|
|
91
|
-
new FunctionAlarmFacade({
|
|
92
|
-
prop: tprop,
|
|
93
|
-
threshold: fprops === null || fprops === void 0 ? void 0 : fprops[sprop],
|
|
94
|
-
defaultThreshold,
|
|
95
|
-
topics: fprops === null || fprops === void 0 ? void 0 : fprops.notifyTopics,
|
|
96
|
-
actions: fprops === null || fprops === void 0 ? void 0 : fprops.notifyActions
|
|
97
|
-
}).addCustomAlarmThreshold(category, record);
|
|
98
|
-
}
|
|
99
|
-
toRecord(sprop, tprop, defaultThreshold) {
|
|
100
|
-
const record = {};
|
|
101
|
-
this.addRecordValue(record, FunctionAlarmCategory.Critical, sprop, tprop, defaultThreshold);
|
|
102
|
-
this.addRecordValue(record, FunctionAlarmCategory.Warning, sprop, tprop, defaultThreshold);
|
|
103
|
-
return Object.keys(record).length > 0 ? record : undefined;
|
|
104
|
-
}
|
|
105
|
-
addAlarm(category, ...alarm) {
|
|
106
|
-
const arr = category === FunctionAlarmCategory.Critical ? this.criticalAlarms : this.warningAlarms;
|
|
107
|
-
arr.push(...alarm);
|
|
14
|
+
this.addLogAlarm(aws_monitoring_1.AlarmCategory.Critical, 1);
|
|
15
|
+
this.addLogAlarm(aws_monitoring_1.AlarmCategory.Warning);
|
|
108
16
|
}
|
|
109
17
|
addFunctionMonitoring() {
|
|
110
18
|
var _a, _b, _c;
|
|
@@ -113,48 +21,30 @@ class FunctionAlarms extends constructs_1.Construct {
|
|
|
113
21
|
addToAlarmDashboard: (_a = this.props.addToAlarmDashboard) !== null && _a !== void 0 ? _a : true,
|
|
114
22
|
addToDetailDashboard: (_b = this.props.addToDetailDashboard) !== null && _b !== void 0 ? _b : true,
|
|
115
23
|
addToSummaryDashboard: (_c = this.props.addToSummaryDashboard) !== null && _c !== void 0 ? _c : true,
|
|
116
|
-
addLatencyP50Alarm: this.toRecord(
|
|
117
|
-
addLatencyP90Alarm: this.toRecord(
|
|
118
|
-
addLatencyP99Alarm: this.toRecord(
|
|
119
|
-
addFaultCountAlarm: this.toRecord(
|
|
120
|
-
addFaultRateAlarm: this.toRecord(
|
|
121
|
-
addLowTpsAlarm: this.toRecord(
|
|
122
|
-
addHighTpsAlarm: this.toRecord(
|
|
123
|
-
addThrottlesCountAlarm: this.toRecord(
|
|
124
|
-
addThrottlesRateAlarm: this.toRecord(
|
|
125
|
-
addConcurrentExecutionsCountAlarm: this.toRecord(
|
|
126
|
-
addMaxIteratorAgeAlarm: this.toRecord(
|
|
127
|
-
addEnhancedMonitoringMaxCpuTotalTimeAlarm: this.toRecord(
|
|
128
|
-
addEnhancedMonitoringP90CpuTotalTimeAlarm: this.toRecord(
|
|
129
|
-
addEnhancedMonitoringAvgCpuTotalTimeAlarm: this.toRecord(
|
|
130
|
-
addEnhancedMonitoringMaxMemoryUtilizationAlarm: this.toRecord(
|
|
131
|
-
addEnhancedMonitoringP90MemoryUtilizationAlarm: this.toRecord(
|
|
132
|
-
addEnhancedMonitoringAvgMemoryUtilizationAlarm: this.toRecord(
|
|
24
|
+
addLatencyP50Alarm: this.toRecord("p50Latency", "maxLatency"),
|
|
25
|
+
addLatencyP90Alarm: this.toRecord("p90Latency", "maxLatency"),
|
|
26
|
+
addLatencyP99Alarm: this.toRecord("p99Latency", "maxLatency"),
|
|
27
|
+
addFaultCountAlarm: this.toRecord("maxFaults", "maxErrorCount", 0),
|
|
28
|
+
addFaultRateAlarm: this.toRecord("avgFaults", "maxErrorRate"),
|
|
29
|
+
addLowTpsAlarm: this.toRecord("minTps", "minTps"),
|
|
30
|
+
addHighTpsAlarm: this.toRecord("maxTps", "maxTps"),
|
|
31
|
+
addThrottlesCountAlarm: this.toRecord("maxThrottles", "maxErrorCount", 0),
|
|
32
|
+
addThrottlesRateAlarm: this.toRecord("avgThrottles", "maxErrorRate"),
|
|
33
|
+
addConcurrentExecutionsCountAlarm: this.toRecord("maxConcurrentExecutions", "maxRunningTasks"),
|
|
34
|
+
addMaxIteratorAgeAlarm: this.toRecord("maxIteratorAge", "maxAgeInMillis"),
|
|
35
|
+
addEnhancedMonitoringMaxCpuTotalTimeAlarm: this.toRecord("maxCpuTime", "maxDuration"),
|
|
36
|
+
addEnhancedMonitoringP90CpuTotalTimeAlarm: this.toRecord("p90CpuTime", "maxDuration"),
|
|
37
|
+
addEnhancedMonitoringAvgCpuTotalTimeAlarm: this.toRecord("avgCpuTime", "maxDuration"),
|
|
38
|
+
addEnhancedMonitoringMaxMemoryUtilizationAlarm: this.toRecord("maxMemory", "maxUsagePercent"),
|
|
39
|
+
addEnhancedMonitoringP90MemoryUtilizationAlarm: this.toRecord("p90Memory", "maxUsagePercent"),
|
|
40
|
+
addEnhancedMonitoringAvgMemoryUtilizationAlarm: this.toRecord("avgMemory", "maxUsagePercent")
|
|
133
41
|
});
|
|
134
|
-
// Add generated alarms to this object
|
|
135
|
-
this.addAlarm(FunctionAlarmCategory.Critical, ...this.monitoringFacade.createdAlarmsWithDisambiguator(FunctionAlarmCategory.Critical).map((awa) => awa.alarm));
|
|
136
|
-
this.addAlarm(FunctionAlarmCategory.Warning, ...this.monitoringFacade.createdAlarmsWithDisambiguator(FunctionAlarmCategory.Warning).map((awa) => awa.alarm));
|
|
137
|
-
}
|
|
138
|
-
addLogMonitoringToDashboard() {
|
|
139
|
-
var _a, _b, _c, _d, _e, _f;
|
|
140
|
-
let pattern = ((_a = this.props.criticalAlarmOptions) === null || _a === void 0 ? void 0 : _a.dashboardLogPattern) === undefined
|
|
141
|
-
&& ((_b = this.props.warningAlarmOptions) === null || _b === void 0 ? void 0 : _b.dashboardLogPattern) === undefined
|
|
142
|
-
? FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN
|
|
143
|
-
: '';
|
|
144
|
-
pattern += (_d = (_c = this.props.criticalAlarmOptions) === null || _c === void 0 ? void 0 : _c.dashboardLogPattern) !== null && _d !== void 0 ? _d : '';
|
|
145
|
-
pattern += (_f = (pattern !== '' ? '|' : '') + ((_e = this.props.warningAlarmOptions) === null || _e === void 0 ? void 0 : _e.dashboardLogPattern)) !== null && _f !== void 0 ? _f : '';
|
|
146
|
-
if (pattern !== '') {
|
|
147
|
-
this.monitoringFacade.monitorLog({
|
|
148
|
-
logGroupName: this.props.logGroup.logGroupName,
|
|
149
|
-
pattern,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
42
|
}
|
|
153
43
|
addLogAlarm(category, defaultThreshold) {
|
|
154
44
|
var _a, _b, _c, _d;
|
|
155
|
-
const fprops =
|
|
45
|
+
const fprops = category === aws_monitoring_1.AlarmCategory.Critical ? this.props.criticalAlarmOptions : this.props.warningAlarmOptions;
|
|
156
46
|
const threshold = (_a = fprops === null || fprops === void 0 ? void 0 : fprops.maxLogCount) !== null && _a !== void 0 ? _a : defaultThreshold;
|
|
157
|
-
const pattern = ((_b = fprops === null || fprops === void 0 ? void 0 : fprops.metricLogPattern) !== null && _b !== void 0 ? _b : category ===
|
|
47
|
+
const pattern = ((_b = fprops === null || fprops === void 0 ? void 0 : fprops.metricLogPattern) !== null && _b !== void 0 ? _b : category === aws_monitoring_1.AlarmCategory.Critical) ? FunctionAlarms.DEFAULT_CRITICAL_LOG_METRIC_PATTERN
|
|
158
48
|
: FunctionAlarms.DEFAULT_WARNING_LOG_METRIC_PATTERN;
|
|
159
49
|
const evaluationPeriods = (_c = fprops === null || fprops === void 0 ? void 0 : fprops.logEvaluationPeriods) !== null && _c !== void 0 ? _c : 2;
|
|
160
50
|
const datapointsToAlarm = (_d = fprops === null || fprops === void 0 ? void 0 : fprops.logDataPointsToAlarm) !== null && _d !== void 0 ? _d : 1;
|
|
@@ -167,9 +57,37 @@ class FunctionAlarms extends constructs_1.Construct {
|
|
|
167
57
|
datapointsToAlarm,
|
|
168
58
|
metricName: category + 'LogCount',
|
|
169
59
|
});
|
|
170
|
-
|
|
171
|
-
|
|
60
|
+
if (category === aws_monitoring_1.AlarmCategory.Critical) {
|
|
61
|
+
this.criticalLogAlarm = logAlarm;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.warningLogAlarm = logAlarm;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
addLogMonitoringToDashboard() {
|
|
69
|
+
var _a, _b, _c, _d, _e, _f;
|
|
70
|
+
let pattern = ((_a = this.props.criticalAlarmOptions) === null || _a === void 0 ? void 0 : _a.dashboardLogPattern) === undefined
|
|
71
|
+
&& ((_b = this.props.warningAlarmOptions) === null || _b === void 0 ? void 0 : _b.dashboardLogPattern) === undefined
|
|
72
|
+
? FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN
|
|
73
|
+
: '';
|
|
74
|
+
pattern += (_d = (_c = this.props.criticalAlarmOptions) === null || _c === void 0 ? void 0 : _c.dashboardLogPattern) !== null && _d !== void 0 ? _d : '';
|
|
75
|
+
pattern += (_f = (pattern !== '' ? '|' : '') + ((_e = this.props.warningAlarmOptions) === null || _e === void 0 ? void 0 : _e.dashboardLogPattern)) !== null && _f !== void 0 ? _f : '';
|
|
76
|
+
if (pattern !== '') {
|
|
77
|
+
this.monitoringFacade.monitorLog({
|
|
78
|
+
logGroupName: this.props.logGroup.logGroupName,
|
|
79
|
+
pattern,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
getAlarms(category) {
|
|
84
|
+
var _a, _b;
|
|
85
|
+
const alarms = super.getAlarms(category);
|
|
86
|
+
const logAlarm = category === aws_monitoring_1.AlarmCategory.Critical ? (_a = this.criticalLogAlarm) === null || _a === void 0 ? void 0 : _a.alarm : (_b = this.warningLogAlarm) === null || _b === void 0 ? void 0 : _b.alarm;
|
|
87
|
+
if (logAlarm !== undefined) {
|
|
88
|
+
alarms.push(logAlarm);
|
|
172
89
|
}
|
|
90
|
+
return alarms;
|
|
173
91
|
}
|
|
174
92
|
}
|
|
175
93
|
exports.FunctionAlarms = FunctionAlarms;
|
|
@@ -185,4 +103,4 @@ FunctionAlarms.DEFAULT_WARNING_LOG_METRIC_PATTERN = '"[WARNING]"';
|
|
|
185
103
|
* Default pattern used to show logs on the CloudWatch dashboard.
|
|
186
104
|
*/
|
|
187
105
|
FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN = '\\\[ERROR\\\]|\\\[WARNING\\\]';
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxhcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVuY3Rpb24tYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE0QztBQUc1Qyx5RUFNbUM7QUFDbkMsK0VBQTZEO0FBQzdELHlEQUFrRTtBQUdsRSwyQ0FBcUM7QUFDckMseURBQW9EO0FBb05wRDs7Ozs7R0FLRztBQUNILFNBQVMsZ0NBQWdDLENBQUMsS0FBNEIsRUFBRSxRQUErQjtJQUNyRyxNQUFNLEtBQUssR0FBZ0MsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0lBQ3BILE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsY0FBYyxDQUFDLE9BQXdCLEVBQUUsTUFBaUI7SUFDakUsTUFBTSxRQUFRLEdBQW1CLEVBQUUsQ0FBQTtJQUNuQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3BELE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxrQ0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDaEUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFHWDtBQUhELFdBQVkscUJBQXFCO0lBQy9CLDhDQUFxQixDQUFBO0lBQ3JCLDRDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQUdoQztBQWFEOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUI7SUFNdkIsWUFBWSxLQUErQjtRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsc0JBQXNCOztRQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtZQUNuRixPQUFPO2dCQUNMLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsbUNBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7Z0JBQ3BFLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixjQUFjLEVBQUUsSUFBSSw2Q0FBNEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFDLENBQUM7YUFDMUUsQ0FBQztTQUNIO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELHVCQUF1QixDQUFDLFFBQStCLEVBQUUsTUFBNEM7UUFDbkcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEI7SUFDSCxDQUFDO0NBQ0Y7QUFrQkQ7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQWlJM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjs7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsZ0JBQWdCLFNBQUcsS0FBSyxDQUFDLGdCQUFnQixtQ0FBRSxJQUFJLDRDQUFnQixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUM3RixxQkFBcUIsRUFBRSxFQUFFO1lBQ3pCLG9CQUFvQixFQUFFO2dCQUNwQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsZUFBZSxRQUFFLEtBQUssQ0FBQyxlQUFlLG1DQUFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVM7YUFDakU7WUFDRCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1NBQ3pDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQWxITyxjQUFjLENBQUMsTUFBNEMsRUFDNUMsUUFBK0IsRUFDL0IsS0FBMEMsRUFDMUMsS0FBYSxFQUNiLGdCQUFrQztRQUN2RCxNQUFNLE1BQU0sR0FBRyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3RFLElBQUksbUJBQW1CLENBQUM7WUFDdEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxTQUFTLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFHLEtBQUssQ0FBc0I7WUFDL0MsZ0JBQWdCO1lBQ2hCLE1BQU0sRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsWUFBWTtZQUM1QixPQUFPLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGFBQWE7U0FDL0IsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQTBDLEVBQUUsS0FBYSxFQUFFLGdCQUFrQztRQUM1RyxNQUFNLE1BQU0sR0FBeUMsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDN0QsQ0FBQztJQUVPLFFBQVEsQ0FBQyxRQUErQixFQUFFLEdBQUcsS0FBYztRQUNqRSxNQUFNLEdBQUcsR0FBRyxRQUFRLEtBQUsscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ25HLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRU8scUJBQXFCOztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7WUFDMUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUNuQyxtQkFBbUIsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixtQ0FBSSxJQUFJO1lBQzNELG9CQUFvQixRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLG1DQUFJLElBQUk7WUFDN0QscUJBQXFCLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsbUNBQUksSUFBSTtZQUMvRCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQXFDO1lBQ2pHLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBcUM7WUFDakcsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFxQztZQUNqRyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUF3QztZQUN6RyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQXVDO1lBQ25HLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQW9DO1lBQ3BGLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQXFDO1lBQ3RGLHNCQUFzQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQXdDO1lBQ2hILHFCQUFxQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBdUM7WUFDMUcsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxpQkFBaUIsQ0FBOEM7WUFDM0ksc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBb0M7WUFDNUcseUNBQXlDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFzQztZQUMxSCx5Q0FBeUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQXNDO1lBQzFILHlDQUF5QyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBc0M7WUFDMUgsOENBQThDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQW1DO1lBQy9ILDhDQUE4QyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFtQztZQUMvSCw4Q0FBOEMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBbUM7U0FDaEksQ0FBQyxDQUFDO1FBRUgsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDhCQUE4QixDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsOEJBQThCLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvSixDQUFDO0lBRU8sMkJBQTJCOztRQUNqQyxJQUFJLE9BQU8sR0FBRyxPQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLDBDQUFFLG1CQUFtQixNQUFLLFNBQVM7ZUFDN0UsT0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQiwwQ0FBRSxtQkFBbUIsTUFBSyxTQUFTO1lBQ2xFLENBQUMsQ0FBQyxjQUFjLENBQUMsNEJBQTRCO1lBQzdDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDTixPQUFPLGdCQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLDBDQUFFLG1CQUFtQixtQ0FBRSxFQUFFLENBQUM7UUFDcEUsT0FBTyxVQUFJLENBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQiwwQ0FBRSxtQkFBbUIsQ0FBQSxtQ0FBRSxFQUFFLENBQUM7UUFDaEcsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7Z0JBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO2dCQUM5QyxPQUFPO2FBQ1IsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQStCLEVBQUUsZ0JBQXlCOztRQUM1RSxNQUFNLE1BQU0sR0FBRyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sU0FBUyxTQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxXQUFXLG1DQUFFLGdCQUFnQixDQUFBO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLE9BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGdCQUFnQixtQ0FDeEMsUUFBUSxLQUFLLHFCQUFxQixDQUFDLFFBQVEsRUFDekMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUM7WUFDcEQsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQztRQUN0RCxNQUFNLGlCQUFpQixTQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxvQkFBb0IsbUNBQUUsQ0FBQyxDQUFBO1FBQ3pELE1BQU0saUJBQWlCLFNBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLG9CQUFvQixtQ0FBRSxDQUFDLENBQUE7UUFDekQsSUFBSSxTQUFTLEtBQUssU0FBUyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsVUFBVSxFQUFFO2dCQUMvRCxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO2dCQUM3QixPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQixpQkFBaUI7Z0JBQ2pCLFVBQVUsRUFBRSxRQUFRLEdBQUcsVUFBVTthQUNsQyxDQUFDLENBQUM7WUFDSCxxQ0FBcUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQzs7QUEvSEgsd0NBcUpDO0FBbkpDOztHQUVHO0FBQ2Esa0RBQW1DLEdBQUcsV0FBVyxDQUFDO0FBRWxFOztHQUVHO0FBQ2EsaURBQWtDLEdBQUcsYUFBYSxDQUFDO0FBRW5FOztHQUVHO0FBQ2EsMkNBQTRCLEdBQUcsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0R1cmF0aW9uLCBTdGFja30gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0lUb3BpY30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7QWxhcm0sIElBbGFybUFjdGlvbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQge1xuICBDdXN0b21BbGFybVRocmVzaG9sZCwgRHVyYXRpb25UaHJlc2hvbGQsXG4gIEVycm9yQ291bnRUaHJlc2hvbGQsIEVycm9yUmF0ZVRocmVzaG9sZCwgSGlnaFRwc1RocmVzaG9sZCxcbiAgSURhc2hib2FyZEZhY3RvcnksXG4gIExhdGVuY3lUaHJlc2hvbGQsIExvd1Rwc1RocmVzaG9sZCwgTWF4QWdlVGhyZXNob2xkLFxuICBNb25pdG9yaW5nRmFjYWRlLCBSdW5uaW5nVGFza0NvdW50VGhyZXNob2xkLCBVc2FnZVRocmVzaG9sZFxufSBmcm9tIFwiY2RrLW1vbml0b3JpbmctY29uc3RydWN0c1wiO1xuaW1wb3J0IHtTbnNBY3Rpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaC1hY3Rpb25zXCI7XG5pbXBvcnQge1N0YW5kYXJkQWxhcm1BY3Rpb25zU3RyYXRlZ3l9IGZyb20gXCIuLi8uLi9hd3MtbW9uaXRvcmluZ1wiO1xuaW1wb3J0IHtJRnVuY3Rpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge0lMb2dHcm91cH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7TG9nTWV0cmljQWxhcm19IGZyb20gXCIuLi8uLi9hd3MtY2xvdWR3YXRjaFwiO1xuXG4vKipcbiAqIENhdGVnb3J5IG9wdGlvbnMgZm9yIENsb3VkV2F0Y2ggYWxhcm1zIGZvciBMYW1iZGEgRnVuY3Rpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIHtcblxuICAvKipcbiAgICogTWF4aW11bSA1MHRoIHBlcmNlbnRpbGUgbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgcDUwTGF0ZW5jeT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIDkwdGggcGVyY2VudGlsZSBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBwOTBMYXRlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE1heGltdW0gOTl0aCBwZXJjZW50aWxlIGxhdGVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHA5OUxhdGVuY3k/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgZmF1bHRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEZhdWx0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSBudW1iZXIgb2YgZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBhdmdGYXVsdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtaW5UcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtYXhUcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBtYXhUaHJvdHRsZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZnVGhyb3R0bGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGNvbmN1cnJlbnQgZXhlY3V0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIGRhdGEgd2FpdHMgYmVmb3JlIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24uXG4gICAqIFNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL3ByZW1pdW1zdXBwb3J0L2tub3dsZWRnZS1jZW50ZXIvbGFtYmRhLWl0ZXJhdG9yLWFnZS9cbiAgICovXG4gIHJlYWRvbmx5IG1heEl0ZXJhdG9yQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiA5MHRoIHBlcmNlbnRpbGUgQ1BVIHRpbWVcbiAgICovXG4gIHJlYWRvbmx5IHA5MENwdVRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQXZlcmFnZSBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnQ3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBtZW1vcnlcbiAgICovXG4gIHJlYWRvbmx5IG1heE1lbW9yeT86IG51bWJlcjtcblxuICAvKipcbiAgICogOTB0aCBwZXJjZW50aWxlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgcDkwTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdmVyYWdlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMb2cgcGF0dGVybiB0byBtYXRjaCBmb3IgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1xcXFxcXFtFUlJPUlxcXFxcXF0nXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNMb2dQYXR0ZXJuPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGxvZyBldmVudHMgbWF0Y2hpbmcgdGhlIG1ldHJpY0xvZ1BhdHRlcm4uXG4gICAqXG4gICAqIEBkZWZhdWx0IDAgZm9yIENyaXRpY2FsIEFsYXJtXG4gICAqL1xuICByZWFkb25seSBtYXhMb2dDb3VudD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIG92ZXIgd2hpY2ggZGF0YSBpcyBjb21wYXJlZCBmb3IgbG9nIGV2ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nRXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXJcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRhdGEgcG9pbnRzIHRoYXQgbXVzdCBiZSBicmVhY2hpbmcgdG8gdHJpZ2dlciB0aGUgYWxhcm0gZm9yIGxvZyBldmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0RhdGFQb2ludHNUb0FsYXJtPzogbnVtYmVyXG5cbiAgLyoqXG4gICAqIExvZyBwYXR0ZXJuIHRvIG1hdGNoIGZvciB0aGUgZGFzaGJvYXJkXG4gICAqXG4gICAqIEBkZWZhdWx0ICdcIltFUlJPUl1cIidcbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZExvZ1BhdHRlcm4/OiBzdHJpbmdcblxuICAvKipcbiAgICogVG9waWNzIHRvIHNlbmQgYWxhcm0gbm90aWZpY2F0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZ5VG9waWNzPzogSVRvcGljW107XG5cbiAgLyoqXG4gICAqIEFjdGlvbnMgdG8gc2VuZCBhbGFybSBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZnlBY3Rpb25zPzogSUFsYXJtQWN0aW9uW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgQ2xvdWRXYXRjaCBhbGFybXMgZm9yIExhbWJkYSBGdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFsYXJtc09wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBBbGFybSB0aHJlc2hvbGRzIGZvciBjcml0aWNhbCBhbGFybXMuXG4gICAqXG4gICAqIElmIG5vIHByb3BlcnRpZXMgYXJlIHByb3ZpZGVkLCBhIHNldCBvZiBkZWZhdWx0IGFsYXJtcyBhcmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNyaXRpY2FsQWxhcm1PcHRpb25zPzogRnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZCBmb3Igd2FybmluZyBhbGFybXMuXG4gICAqXG4gICAqIElmIG5vIHByb3BlcnRpZXMgYXJlIHByb3ZpZGVkLCBhIHNldCBvZiBkZWZhdWx0IGFsYXJtcyBhcmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHdhcm5pbmdBbGFybU9wdGlvbnM/OiBGdW5jdGlvbkFsYXJtc0NhdGVnb3J5T3B0aW9ucztcblxuICAvKipcbiAgICogTWFpbiBlbnRyeSBwb2ludCBmb3IgbW9uaXRvcmluZy5cbiAgICpcbiAgICogSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGEgZGVmYXVsdCBmYWNhZGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZ0ZhY2FkZT86IE1vbml0b3JpbmdGYWNhZGVcblxuICAvKipcbiAgICogVGhlIERhc2hib2FyZEZhY3RvcnkgdG8gdXNlIHdoZW4gZ2VuZXJhdGluZyBDbG91ZFdhdGNoIGRhc2hib2FyZHMuXG4gICAqXG4gICAqIElmIG5vdCBkZWZpbmVkLCBkYXNoYm9hcmRzIGFyZSBub3QgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGFzaGJvYXJkRmFjdG9yeT86IElEYXNoYm9hcmRGYWN0b3J5O1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBkYXNoYm9hcmQgY2hhcnRzIGZvciBMYW1iZGEgaW5zaWdodHMgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhSW5zaWdodHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gYWxhcm0gZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0FsYXJtRGFzaGJvYXJkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gZGV0YWlsZWQgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0RldGFpbERhc2hib2FyZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB3aWRnZXRzIHRvIHN1bW1hcnkgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb1N1bW1hcnlEYXNoYm9hcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIGdlbmVyYXRlZCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1OYW1lUHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3QgY3JpdGljYWwgb3Igd2FybmluZyBvcHRpb25zIGZyb20gRnVuY3Rpb25BbGFybXNPcHRpb25zIGR5bmFtaWNhbGx5LlxuICpcbiAqIEBwYXJhbSBwcm9wcyB0aGUgcHJvcGVydGllcyBob2xkaW5nIHRoZSB2YWx1ZXNcbiAqIEBwYXJhbSBjYXRlZ29yeSB0aGUgYWxhcm0gY2F0ZWdvcnlcbiAqL1xuZnVuY3Rpb24gZ2V0RnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnMocHJvcHM6IEZ1bmN0aW9uQWxhcm1zT3B0aW9ucywgY2F0ZWdvcnk6IEZ1bmN0aW9uQWxhcm1DYXRlZ29yeSk6IEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZnByb3A6IGtleW9mIEZ1bmN0aW9uQWxhcm1zT3B0aW9ucyA9IGNhdGVnb3J5ID09PSAnQ3JpdGljYWwnID8gJ2NyaXRpY2FsQWxhcm1PcHRpb25zJyA6ICd3YXJuaW5nQWxhcm1PcHRpb25zJztcbiAgcmV0dXJuIHByb3BzW2Zwcm9wXTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gY29tYmluZSBhbiBhcnJheSBpZiBJQWxhcm1BY3Rpb24gYW5kIElUb3BpYyBvYmplY3RzIGludG8gYSBzaW5nbGUgSUFsYXJtQWN0aW9uIGFycmF5LlxuICpcbiAqIEBwYXJhbSBhY3Rpb25zIHRoZSBhY3Rpb25zXG4gKiBAcGFyYW0gdG9waWNzIHRoZSB0b3BpY3NcbiAqL1xuZnVuY3Rpb24gY29tYmluZUFjdGlvbnMoYWN0aW9ucz86IElBbGFybUFjdGlvbltdLCB0b3BpY3M/OiBJVG9waWNbXSk6IElBbGFybUFjdGlvbltdIHtcbiAgY29uc3QgY29tYmluZWQ6IElBbGFybUFjdGlvbltdID0gW11cbiAgYWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiBjb21iaW5lZC5wdXNoKGFjdGlvbikpO1xuICB0b3BpY3M/LmZvckVhY2goKHRvcGljKSA9PiBjb21iaW5lZC5wdXNoKG5ldyBTbnNBY3Rpb24odG9waWMpKSk7XG4gIHJldHVybiBjb21iaW5lZDtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGRpc2FtYmlndWF0ZSB3YXJuaW5nIGFuZCBjcml0aWNhbCBhbGFybXMuXG4gKi9cbmV4cG9ydCBlbnVtIEZ1bmN0aW9uQWxhcm1DYXRlZ29yeSB7XG4gIENyaXRpY2FsID0gJ0NyaXRpY2FsJyxcbiAgV2FybmluZyA9ICdXYXJuaW5nJ1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEZ1bmN0aW9uQWxhcm1GYWNhZGUuXG4gKi9cbmludGVyZmFjZSBGdW5jdGlvbkFsYXJtRmFjYWRlUHJvcHMge1xuICBwcm9wOiBzdHJpbmc7XG4gIHRocmVzaG9sZD86IG51bWJlciB8IER1cmF0aW9uO1xuICBkZWZhdWx0VGhyZXNob2xkPzogbnVtYmVyIHwgRHVyYXRpb247XG4gIHRvcGljcz86IElUb3BpY1tdO1xuICBhY3Rpb25zPzogSUFsYXJtQWN0aW9uW107XG59XG5cbi8qKlxuICogSW50ZXJuYWwgY2xhc3MgdG8gYXNzaXN0IGluIGdlbmVyYXRpbmcgQ3VzdG9tQWxhcm1UaHJlc2hvbGQgaW5zdGFuY2VzLlxuICovXG5jbGFzcyBGdW5jdGlvbkFsYXJtRmFjYWRlIHtcblxuICByZWFkb25seSBhY3Rpb25zOiBJQWxhcm1BY3Rpb25bXTtcblxuICBwcml2YXRlIHByb3BzOiBGdW5jdGlvbkFsYXJtRmFjYWRlUHJvcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEZ1bmN0aW9uQWxhcm1GYWNhZGVQcm9wcykge1xuICAgIHRoaXMucHJvcHMgPSBwcm9wc1xuICAgIHRoaXMuYWN0aW9ucyA9IGNvbWJpbmVBY3Rpb25zKHByb3BzLmFjdGlvbnMsIHByb3BzLnRvcGljcyk7XG4gIH1cblxuICB0b0N1c3RvbUFsYXJtVGhyZXNob2xkKCk6IEN1c3RvbUFsYXJtVGhyZXNob2xkIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9wcy50aHJlc2hvbGQgIT09IHVuZGVmaW5lZCB8fCB0aGlzLnByb3BzLmRlZmF1bHRUaHJlc2hvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW3RoaXMucHJvcHMucHJvcF06IHRoaXMucHJvcHMudGhyZXNob2xkPz90aGlzLnByb3BzLmRlZmF1bHRUaHJlc2hvbGQsXG4gICAgICAgIGFjdGlvbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBhY3Rpb25PdmVycmlkZTogbmV3IFN0YW5kYXJkQWxhcm1BY3Rpb25zU3RyYXRlZ3koe2FjdGlvbnM6IHRoaXMuYWN0aW9uc30pLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFkZEN1c3RvbUFsYXJtVGhyZXNob2xkKGNhdGVnb3J5OiBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnksIHJlY29yZDogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWxhcm1UaHJlc2hvbGQ+KSB7XG4gICAgY29uc3QgYyA9IHRoaXMudG9DdXN0b21BbGFybVRocmVzaG9sZCgpO1xuICAgIGlmIChjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlY29yZFtjYXRlZ29yeV0gPSBjO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEZ1bmN0aW9uQWxhcm1zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25BbGFybXNQcm9wcyBleHRlbmRzIEZ1bmN0aW9uQWxhcm1zT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0byBvYnNlcnZlLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvblxuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIGF0dGFjaGVkIHRvIHRoZSBmdW5jdGlvbiB0byBiZSBvYnNlcnZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBJTG9nR3JvdXBcbn1cblxuLyoqXG4gKiBDcmVhdGVzIENsb3VkV2F0Y2ggYWxhcm1zIGZvciBhIExhbWJkYSBGdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uQWxhcm1zIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogRGVmYXVsdCBwYXR0ZXJuIHVzZWQgZm9yIHRoZSBjcml0aWNhbCBsb2cgbWV0cmljLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ1JJVElDQUxfTE9HX01FVFJJQ19QQVRURVJOID0gJ1wiW0VSUk9SXVwiJztcblxuICAvKipcbiAgICogRGVmYXVsdCBwYXR0ZXJuIHVzZWQgZm9yIHRoZSB3YXJuaW5nIGxvZyBtZXRyaWMuXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9XQVJOSU5HX0xPR19NRVRSSUNfUEFUVEVSTiA9ICdcIltXQVJOSU5HXVwiJztcblxuICAvKipcbiAgICogRGVmYXVsdCBwYXR0ZXJuIHVzZWQgdG8gc2hvdyBsb2dzIG9uIHRoZSBDbG91ZFdhdGNoIGRhc2hib2FyZC5cbiAgICovXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPR19JTlNJR0hUU19QQVRURVJOID0gJ1xcXFxcXFtFUlJPUlxcXFxcXF18XFxcXFxcW1dBUk5JTkdcXFxcXFxdJztcblxuICAvKipcbiAgICogVGhlIE1vbml0b3JpbmdGYWNhZGUgaW5zdGFuY2UgZWl0aGVyIHBhc3NlZCBpbiBvciBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBtb25pdG9yaW5nRmFjYWRlOiBNb25pdG9yaW5nRmFjYWRlO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgY3JpdGljYWwgYWxhcm1zLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JpdGljYWxBbGFybXM6IEFsYXJtW107XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlZCB3YXJuaW5nIGFsYXJtcy5cbiAgICovXG4gIHJlYWRvbmx5IHdhcm5pbmdBbGFybXM6IEFsYXJtW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogRnVuY3Rpb25BbGFybXNQcm9wcztcblxuICBwcml2YXRlIGFkZFJlY29yZFZhbHVlKHJlY29yZDogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWxhcm1UaHJlc2hvbGQ+LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgc3Byb3A6IGtleW9mIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRwcm9wOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFRocmVzaG9sZD86IG51bWJlcnxEdXJhdGlvbikge1xuICAgIGNvbnN0IGZwcm9wcyA9IGdldEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zKHRoaXMucHJvcHMsIGNhdGVnb3J5KTtcbiAgICBuZXcgRnVuY3Rpb25BbGFybUZhY2FkZSh7XG4gICAgICBwcm9wOiB0cHJvcCxcbiAgICAgIHRocmVzaG9sZDogZnByb3BzPy5bc3Byb3BdIGFzIG51bWJlciB8IER1cmF0aW9uLFxuICAgICAgZGVmYXVsdFRocmVzaG9sZCxcbiAgICAgIHRvcGljczogZnByb3BzPy5ub3RpZnlUb3BpY3MsXG4gICAgICBhY3Rpb25zOiBmcHJvcHM/Lm5vdGlmeUFjdGlvbnNcbiAgICB9KS5hZGRDdXN0b21BbGFybVRocmVzaG9sZChjYXRlZ29yeSwgcmVjb3JkKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9SZWNvcmQoc3Byb3A6IGtleW9mIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCB0cHJvcDogc3RyaW5nLCBkZWZhdWx0VGhyZXNob2xkPzogbnVtYmVyfER1cmF0aW9uKTogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWxhcm1UaHJlc2hvbGQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFsYXJtVGhyZXNob2xkPiA9IHt9O1xuICAgIHRoaXMuYWRkUmVjb3JkVmFsdWUocmVjb3JkLCBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwsIHNwcm9wLCB0cHJvcCwgZGVmYXVsdFRocmVzaG9sZCk7XG4gICAgdGhpcy5hZGRSZWNvcmRWYWx1ZShyZWNvcmQsIEZ1bmN0aW9uQWxhcm1DYXRlZ29yeS5XYXJuaW5nLCBzcHJvcCwgdHByb3AsIGRlZmF1bHRUaHJlc2hvbGQpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhyZWNvcmQpLmxlbmd0aCA+IDAgPyByZWNvcmQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFkZEFsYXJtKGNhdGVnb3J5OiBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnksIC4uLmFsYXJtOiBBbGFybVtdKSB7XG4gICAgY29uc3QgYXJyID0gY2F0ZWdvcnkgPT09IEZ1bmN0aW9uQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCA/IHRoaXMuY3JpdGljYWxBbGFybXMgOiB0aGlzLndhcm5pbmdBbGFybXM7XG4gICAgYXJyLnB1c2goLi4uYWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRGdW5jdGlvbk1vbml0b3JpbmcoKSB7XG4gICAgdGhpcy5tb25pdG9yaW5nRmFjYWRlLm1vbml0b3JMYW1iZGFGdW5jdGlvbih7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5wcm9wcy5mdW5jdGlvbixcbiAgICAgIGFkZFRvQWxhcm1EYXNoYm9hcmQ6IHRoaXMucHJvcHMuYWRkVG9BbGFybURhc2hib2FyZCA/PyB0cnVlLFxuICAgICAgYWRkVG9EZXRhaWxEYXNoYm9hcmQ6IHRoaXMucHJvcHMuYWRkVG9EZXRhaWxEYXNoYm9hcmQgPz8gdHJ1ZSxcbiAgICAgIGFkZFRvU3VtbWFyeURhc2hib2FyZDogdGhpcy5wcm9wcy5hZGRUb1N1bW1hcnlEYXNoYm9hcmQgPz8gdHJ1ZSxcbiAgICAgIGFkZExhdGVuY3lQNTBBbGFybTogdGhpcy50b1JlY29yZCgncDUwTGF0ZW5jeScsICdtYXhMYXRlbmN5JykgYXMgUmVjb3JkPHN0cmluZywgTGF0ZW5jeVRocmVzaG9sZD4sXG4gICAgICBhZGRMYXRlbmN5UDkwQWxhcm06IHRoaXMudG9SZWNvcmQoJ3A5MExhdGVuY3knLCAnbWF4TGF0ZW5jeScpIGFzIFJlY29yZDxzdHJpbmcsIExhdGVuY3lUaHJlc2hvbGQ+LFxuICAgICAgYWRkTGF0ZW5jeVA5OUFsYXJtOiB0aGlzLnRvUmVjb3JkKCdwOTlMYXRlbmN5JywgJ21heExhdGVuY3knKSBhcyBSZWNvcmQ8c3RyaW5nLCBMYXRlbmN5VGhyZXNob2xkPixcbiAgICAgIGFkZEZhdWx0Q291bnRBbGFybTogdGhpcy50b1JlY29yZCgnbWF4RmF1bHRzJywgJ21heEVycm9yQ291bnQnLCAwKSBhcyBSZWNvcmQ8c3RyaW5nLCBFcnJvckNvdW50VGhyZXNob2xkPixcbiAgICAgIGFkZEZhdWx0UmF0ZUFsYXJtOiB0aGlzLnRvUmVjb3JkKCdhdmdGYXVsdHMnLCAnbWF4RXJyb3JSYXRlJykgYXMgUmVjb3JkPHN0cmluZywgRXJyb3JSYXRlVGhyZXNob2xkPixcbiAgICAgIGFkZExvd1Rwc0FsYXJtOiB0aGlzLnRvUmVjb3JkKCdtaW5UcHMnLCAnbWluVHBzJykgYXMgUmVjb3JkPHN0cmluZywgTG93VHBzVGhyZXNob2xkPixcbiAgICAgIGFkZEhpZ2hUcHNBbGFybTogdGhpcy50b1JlY29yZCgnbWF4VHBzJywgJ21heFRwcycpIGFzIFJlY29yZDxzdHJpbmcsIEhpZ2hUcHNUaHJlc2hvbGQ+LFxuICAgICAgYWRkVGhyb3R0bGVzQ291bnRBbGFybTogdGhpcy50b1JlY29yZCgnbWF4VGhyb3R0bGVzJywgJ21heEVycm9yQ291bnQnLCAwKSBhcyBSZWNvcmQ8c3RyaW5nLCBFcnJvckNvdW50VGhyZXNob2xkPixcbiAgICAgIGFkZFRocm90dGxlc1JhdGVBbGFybTogdGhpcy50b1JlY29yZCgnYXZnVGhyb3R0bGVzJywgJ21heEVycm9yUmF0ZScpIGFzIFJlY29yZDxzdHJpbmcsIEVycm9yUmF0ZVRocmVzaG9sZD4sXG4gICAgICBhZGRDb25jdXJyZW50RXhlY3V0aW9uc0NvdW50QWxhcm06IHRoaXMudG9SZWNvcmQoJ21heENvbmN1cnJlbnRFeGVjdXRpb25zJywgJ21heFJ1bm5pbmdUYXNrcycpIGFzIFJlY29yZDxzdHJpbmcsIFJ1bm5pbmdUYXNrQ291bnRUaHJlc2hvbGQ+LFxuICAgICAgYWRkTWF4SXRlcmF0b3JBZ2VBbGFybTogdGhpcy50b1JlY29yZCgnbWF4SXRlcmF0b3JBZ2UnLCAnbWF4QWdlSW5NaWxsaXMnKSBhcyBSZWNvcmQ8c3RyaW5nLCBNYXhBZ2VUaHJlc2hvbGQ+LFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nTWF4Q3B1VG90YWxUaW1lQWxhcm06IHRoaXMudG9SZWNvcmQoJ21heENwdVRpbWUnLCAnbWF4RHVyYXRpb24nKSBhcyBSZWNvcmQ8c3RyaW5nLCBEdXJhdGlvblRocmVzaG9sZD4sXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdQOTBDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZCgncDkwQ3B1VGltZScsICdtYXhEdXJhdGlvbicpIGFzIFJlY29yZDxzdHJpbmcsIER1cmF0aW9uVGhyZXNob2xkPixcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ0F2Z0NwdVRvdGFsVGltZUFsYXJtOiB0aGlzLnRvUmVjb3JkKCdhdmdDcHVUaW1lJywgJ21heER1cmF0aW9uJykgYXMgUmVjb3JkPHN0cmluZywgRHVyYXRpb25UaHJlc2hvbGQ+LFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nTWF4TWVtb3J5VXRpbGl6YXRpb25BbGFybTogdGhpcy50b1JlY29yZCgnbWF4TWVtb3J5JywgJ21heFVzYWdlUGVyY2VudCcpIGFzIFJlY29yZDxzdHJpbmcsIFVzYWdlVGhyZXNob2xkPixcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ1A5ME1lbW9yeVV0aWxpemF0aW9uQWxhcm06IHRoaXMudG9SZWNvcmQoJ3A5ME1lbW9yeScsICdtYXhVc2FnZVBlcmNlbnQnKSBhcyBSZWNvcmQ8c3RyaW5nLCBVc2FnZVRocmVzaG9sZD4sXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdBdmdNZW1vcnlVdGlsaXphdGlvbkFsYXJtOiB0aGlzLnRvUmVjb3JkKCdhdmdNZW1vcnknLCAnbWF4VXNhZ2VQZXJjZW50JykgYXMgUmVjb3JkPHN0cmluZywgVXNhZ2VUaHJlc2hvbGQ+XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgZ2VuZXJhdGVkIGFsYXJtcyB0byB0aGlzIG9iamVjdFxuICAgIHRoaXMuYWRkQWxhcm0oRnVuY3Rpb25BbGFybUNhdGVnb3J5LkNyaXRpY2FsLCAuLi50aGlzLm1vbml0b3JpbmdGYWNhZGUuY3JlYXRlZEFsYXJtc1dpdGhEaXNhbWJpZ3VhdG9yKEZ1bmN0aW9uQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCkubWFwKChhd2EpID0+IGF3YS5hbGFybSkpO1xuICAgIHRoaXMuYWRkQWxhcm0oRnVuY3Rpb25BbGFybUNhdGVnb3J5Lldhcm5pbmcsIC4uLnRoaXMubW9uaXRvcmluZ0ZhY2FkZS5jcmVhdGVkQWxhcm1zV2l0aERpc2FtYmlndWF0b3IoRnVuY3Rpb25BbGFybUNhdGVnb3J5Lldhcm5pbmcpLm1hcCgoYXdhKSA9PiBhd2EuYWxhcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTG9nTW9uaXRvcmluZ1RvRGFzaGJvYXJkKCkge1xuICAgIGxldCBwYXR0ZXJuID0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybiA9PT0gdW5kZWZpbmVkXG4gICAgJiYgdGhpcy5wcm9wcy53YXJuaW5nQWxhcm1PcHRpb25zPy5kYXNoYm9hcmRMb2dQYXR0ZXJuID09PSB1bmRlZmluZWRcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9MT0dfSU5TSUdIVFNfUEFUVEVSTlxuICAgICAgOiAnJ1xuICAgIHBhdHRlcm4gKz0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgcGF0dGVybiArPSAocGF0dGVybiAhPT0gJyc/ICd8JyA6ICcnKSArIHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgaWYgKHBhdHRlcm4gIT09ICcnKSB7XG4gICAgICB0aGlzLm1vbml0b3JpbmdGYWNhZGUubW9uaXRvckxvZyh7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogdGhpcy5wcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgIHBhdHRlcm4sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZExvZ0FsYXJtKGNhdGVnb3J5OiBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnksIGRlZmF1bHRUaHJlc2hvbGQ/OiBudW1iZXIpIHtcbiAgICBjb25zdCBmcHJvcHMgPSBnZXRGdW5jdGlvbkFsYXJtc0NhdGVnb3J5T3B0aW9ucyh0aGlzLnByb3BzLCBjYXRlZ29yeSk7XG4gICAgY29uc3QgdGhyZXNob2xkID0gZnByb3BzPy5tYXhMb2dDb3VudD8/ZGVmYXVsdFRocmVzaG9sZFxuICAgIGNvbnN0IHBhdHRlcm4gPSBmcHJvcHM/Lm1ldHJpY0xvZ1BhdHRlcm4/P1xuICAgIGNhdGVnb3J5ID09PSBGdW5jdGlvbkFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWxcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9DUklUSUNBTF9MT0dfTUVUUklDX1BBVFRFUk5cbiAgICAgIDogRnVuY3Rpb25BbGFybXMuREVGQVVMVF9XQVJOSU5HX0xPR19NRVRSSUNfUEFUVEVSTjtcbiAgICBjb25zdCBldmFsdWF0aW9uUGVyaW9kcyA9IGZwcm9wcz8ubG9nRXZhbHVhdGlvblBlcmlvZHM/PzJcbiAgICBjb25zdCBkYXRhcG9pbnRzVG9BbGFybSA9IGZwcm9wcz8ubG9nRGF0YVBvaW50c1RvQWxhcm0/PzFcbiAgICBpZiAodGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgdGhyZXNob2xkID4gMCkge1xuICAgICAgY29uc3QgbG9nQWxhcm0gPSBuZXcgTG9nTWV0cmljQWxhcm0odGhpcywgY2F0ZWdvcnkgKyAnTG9nQ291bnQnLCB7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLnByb3BzLmxvZ0dyb3VwLFxuICAgICAgICBwYXR0ZXJuLFxuICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICBkYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgbWV0cmljTmFtZTogY2F0ZWdvcnkgKyAnTG9nQ291bnQnLFxuICAgICAgfSk7XG4gICAgICAvLyBBZGQgZ2VuZXJhdGVkIGFsYXJtIHRvIHRoaXMgb2JqZWN0XG4gICAgICB0aGlzLmFkZEFsYXJtKGNhdGVnb3J5LCBsb2dBbGFybS5hbGFybSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZ1bmN0aW9uQWxhcm1zUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmNyaXRpY2FsQWxhcm1zID0gW107XG4gICAgdGhpcy53YXJuaW5nQWxhcm1zID0gW107XG5cbiAgICB0aGlzLm1vbml0b3JpbmdGYWNhZGUgPSBwcm9wcy5tb25pdG9yaW5nRmFjYWRlPz9uZXcgTW9uaXRvcmluZ0ZhY2FkZSh0aGlzLCAnTW9uaXRvcmluZ0ZhY2FkZScsIHtcbiAgICAgIG1ldHJpY0ZhY3RvcnlEZWZhdWx0czoge30sXG4gICAgICBhbGFybUZhY3RvcnlEZWZhdWx0czoge1xuICAgICAgICBhY3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgYWxhcm1OYW1lUHJlZml4OiBwcm9wcy5hbGFybU5hbWVQcmVmaXg/P1N0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuICAgICAgfSxcbiAgICAgIGRhc2hib2FyZEZhY3Rvcnk6IHByb3BzLmRhc2hib2FyZEZhY3RvcnlcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRnVuY3Rpb25Nb25pdG9yaW5nKCk7XG4gICAgdGhpcy5hZGRMb2dNb25pdG9yaW5nVG9EYXNoYm9hcmQoKTtcbiAgICB0aGlzLmFkZExvZ0FsYXJtKEZ1bmN0aW9uQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCwgMSk7XG4gICAgdGhpcy5hZGRMb2dBbGFybShGdW5jdGlvbkFsYXJtQ2F0ZWdvcnkuV2FybmluZyk7XG4gIH1cbn1cbiJdfQ==
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxhcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVuY3Rpb24tYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVlBLHlEQUFxRztBQUlyRyx5REFBb0Q7QUFtS3BEOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsMkJBQThEO0lBeUZoRyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUE5RU8scUJBQXFCOztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7WUFDMUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUNuQyxtQkFBbUIsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixtQ0FBRSxJQUFJO1lBQ3pELG9CQUFvQixRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLG1DQUFFLElBQUk7WUFDM0QscUJBQXFCLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsbUNBQUUsSUFBSTtZQUM3RCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFtQixZQUFZLEVBQUUsWUFBWSxDQUFDO1lBQy9FLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQW1CLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDL0Usa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBbUIsWUFBWSxFQUFFLFlBQVksQ0FB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TUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBeEdILHdDQXlHQztBQXZHQzs7R0FFRztBQUNhLGtEQUFtQyxHQUFHLFdBQVcsQ0FBQztBQUVsRTs7R0FFRztBQUNhLGlEQUFrQyxHQUFHLGFBQWEsQ0FBQztBQUVuRTs7R0FFRztBQUNhLDJDQUE0QixHQUFHLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBEdXJhdGlvblRocmVzaG9sZCxcbiAgRXJyb3JDb3VudFRocmVzaG9sZCxcbiAgRXJyb3JSYXRlVGhyZXNob2xkLFxuICBIaWdoVHBzVGhyZXNob2xkLFxuICBMYXRlbmN5VGhyZXNob2xkLFxuICBMb3dUcHNUaHJlc2hvbGQsXG4gIE1heEFnZVRocmVzaG9sZCxcbiAgUnVubmluZ1Rhc2tDb3VudFRocmVzaG9sZCxcbiAgVXNhZ2VUaHJlc2hvbGRcbn0gZnJvbSBcImNkay1tb25pdG9yaW5nLWNvbnN0cnVjdHNcIjtcbmltcG9ydCB7QWxhcm1DYXRlZ29yeSwgQWxhcm1zQmFzZSwgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCBBbGFybXNPcHRpb25zfSBmcm9tIFwiLi4vLi4vYXdzLW1vbml0b3JpbmdcIjtcbmltcG9ydCB7SUZ1bmN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHtJTG9nR3JvdXB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0xvZ01ldHJpY0FsYXJtfSBmcm9tIFwiLi4vLi4vYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7QWxhcm19IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuXG4vKipcbiAqIENhdGVnb3J5IG9wdGlvbnMgZm9yIENsb3VkV2F0Y2ggYWxhcm1zIGZvciBMYW1iZGEgRnVuY3Rpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIGV4dGVuZHMgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIHtcblxuICAvKipcbiAgICogTWF4aW11bSA1MHRoIHBlcmNlbnRpbGUgbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgcDUwTGF0ZW5jeT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIDkwdGggcGVyY2VudGlsZSBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBwOTBMYXRlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE1heGltdW0gOTl0aCBwZXJjZW50aWxlIGxhdGVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHA5OUxhdGVuY3k/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgZmF1bHRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEZhdWx0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSBudW1iZXIgb2YgZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBhdmdGYXVsdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtaW5UcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtYXhUcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBtYXhUaHJvdHRsZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZnVGhyb3R0bGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGNvbmN1cnJlbnQgZXhlY3V0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIGRhdGEgd2FpdHMgYmVmb3JlIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24uXG4gICAqIFNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL3ByZW1pdW1zdXBwb3J0L2tub3dsZWRnZS1jZW50ZXIvbGFtYmRhLWl0ZXJhdG9yLWFnZS9cbiAgICovXG4gIHJlYWRvbmx5IG1heEl0ZXJhdG9yQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiA5MHRoIHBlcmNlbnRpbGUgQ1BVIHRpbWVcbiAgICovXG4gIHJlYWRvbmx5IHA5MENwdVRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQXZlcmFnZSBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnQ3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBtZW1vcnlcbiAgICovXG4gIHJlYWRvbmx5IG1heE1lbW9yeT86IG51bWJlcjtcblxuICAvKipcbiAgICogOTB0aCBwZXJjZW50aWxlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgcDkwTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdmVyYWdlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMb2cgcGF0dGVybiB0byBtYXRjaCBmb3IgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1xcXFxcXFtFUlJPUlxcXFxcXF0nXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNMb2dQYXR0ZXJuPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGxvZyBldmVudHMgbWF0Y2hpbmcgdGhlIG1ldHJpY0xvZ1BhdHRlcm4uXG4gICAqXG4gICAqIEBkZWZhdWx0IDAgZm9yIENyaXRpY2FsIEFsYXJtXG4gICAqL1xuICByZWFkb25seSBtYXhMb2dDb3VudD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIG92ZXIgd2hpY2ggZGF0YSBpcyBjb21wYXJlZCBmb3IgbG9nIGV2ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nRXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXJcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRhdGEgcG9pbnRzIHRoYXQgbXVzdCBiZSBicmVhY2hpbmcgdG8gdHJpZ2dlciB0aGUgYWxhcm0gZm9yIGxvZyBldmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0RhdGFQb2ludHNUb0FsYXJtPzogbnVtYmVyXG5cbiAgLyoqXG4gICAqIExvZyBwYXR0ZXJuIHRvIG1hdGNoIGZvciB0aGUgZGFzaGJvYXJkXG4gICAqXG4gICAqIEBkZWZhdWx0ICdcIltFUlJPUl1cIidcbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZExvZ1BhdHRlcm4/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBDbG91ZFdhdGNoIGFsYXJtcyBmb3IgTGFtYmRhIEZ1bmN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zT3B0aW9ucyBleHRlbmRzIEFsYXJtc09wdGlvbnM8RnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnM+IHtcblxuICAvKipcbiAgICogR2VuZXJhdGUgZGFzaGJvYXJkIGNoYXJ0cyBmb3IgTGFtYmRhIGluc2lnaHRzIG1ldHJpY3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUluc2lnaHRzRW5hYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRnVuY3Rpb25BbGFybXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFsYXJtc1Byb3BzIGV4dGVuZHMgRnVuY3Rpb25BbGFybXNPcHRpb25zIHtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIG9ic2VydmUuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uXG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgYXR0YWNoZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIGJlIG9ic2VydmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA6IElMb2dHcm91cFxufVxuXG4vKipcbiAqIENyZWF0ZXMgQ2xvdWRXYXRjaCBhbGFybXMgZm9yIGEgTGFtYmRhIEZ1bmN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25BbGFybXMgZXh0ZW5kcyBBbGFybXNCYXNlPEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCBGdW5jdGlvbkFsYXJtc1Byb3BzPiB7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIGZvciB0aGUgY3JpdGljYWwgbG9nIG1ldHJpYy5cbiAgICovXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0NSSVRJQ0FMX0xPR19NRVRSSUNfUEFUVEVSTiA9ICdcIltFUlJPUl1cIic7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIGZvciB0aGUgd2FybmluZyBsb2cgbWV0cmljLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfV0FSTklOR19MT0dfTUVUUklDX1BBVFRFUk4gPSAnXCJbV0FSTklOR11cIic7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIHRvIHNob3cgbG9ncyBvbiB0aGUgQ2xvdWRXYXRjaCBkYXNoYm9hcmQuXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MT0dfSU5TSUdIVFNfUEFUVEVSTiA9ICdcXFxcXFxbRVJST1JcXFxcXFxdfFxcXFxcXFtXQVJOSU5HXFxcXFxcXSc7XG5cbiAgcHJpdmF0ZSBhZGRGdW5jdGlvbk1vbml0b3JpbmcoKSB7XG4gICAgdGhpcy5tb25pdG9yaW5nRmFjYWRlLm1vbml0b3JMYW1iZGFGdW5jdGlvbih7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5wcm9wcy5mdW5jdGlvbixcbiAgICAgIGFkZFRvQWxhcm1EYXNoYm9hcmQ6IHRoaXMucHJvcHMuYWRkVG9BbGFybURhc2hib2FyZD8/dHJ1ZSxcbiAgICAgIGFkZFRvRGV0YWlsRGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvRGV0YWlsRGFzaGJvYXJkPz90cnVlLFxuICAgICAgYWRkVG9TdW1tYXJ5RGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvU3VtbWFyeURhc2hib2FyZD8/dHJ1ZSxcbiAgICAgIGFkZExhdGVuY3lQNTBBbGFybTogdGhpcy50b1JlY29yZDxMYXRlbmN5VGhyZXNob2xkPihcInA1MExhdGVuY3lcIiwgXCJtYXhMYXRlbmN5XCIpLFxuICAgICAgYWRkTGF0ZW5jeVA5MEFsYXJtOiB0aGlzLnRvUmVjb3JkPExhdGVuY3lUaHJlc2hvbGQ+KFwicDkwTGF0ZW5jeVwiLCBcIm1heExhdGVuY3lcIiksXG4gICAgICBhZGRMYXRlbmN5UDk5QWxhcm06IHRoaXMudG9SZWNvcmQ8TGF0ZW5jeVRocmVzaG9sZD4oXCJwOTlMYXRlbmN5XCIsIFwibWF4TGF0ZW5jeVwiKSxcbiAgICAgIGFkZEZhdWx0Q291bnRBbGFybTogdGhpcy50b1JlY29yZDxFcnJvckNvdW50VGhyZXNob2xkPihcIm1heEZhdWx0c1wiLCBcIm1heEVycm9yQ291bnRcIiwgMCksXG4gICAgICBhZGRGYXVsdFJhdGVBbGFybTogdGhpcy50b1JlY29yZDxFcnJvclJhdGVUaHJlc2hvbGQ+KFwiYXZnRmF1bHRzXCIsIFwibWF4RXJyb3JSYXRlXCIpLFxuICAgICAgYWRkTG93VHBzQWxhcm06IHRoaXMudG9SZWNvcmQ8TG93VHBzVGhyZXNob2xkPihcIm1pblRwc1wiLCBcIm1pblRwc1wiKSxcbiAgICAgIGFkZEhpZ2hUcHNBbGFybTogdGhpcy50b1JlY29yZDxIaWdoVHBzVGhyZXNob2xkPihcIm1heFRwc1wiLCBcIm1heFRwc1wiKSxcbiAgICAgIGFkZFRocm90dGxlc0NvdW50QWxhcm06IHRoaXMudG9SZWNvcmQ8RXJyb3JDb3VudFRocmVzaG9sZD4oXCJtYXhUaHJvdHRsZXNcIiwgXCJtYXhFcnJvckNvdW50XCIsIDApLFxuICAgICAgYWRkVGhyb3R0bGVzUmF0ZUFsYXJtOiB0aGlzLnRvUmVjb3JkPEVycm9yUmF0ZVRocmVzaG9sZD4oXCJhdmdUaHJvdHRsZXNcIiwgXCJtYXhFcnJvclJhdGVcIiksXG4gICAgICBhZGRDb25jdXJyZW50RXhlY3V0aW9uc0NvdW50QWxhcm06IHRoaXMudG9SZWNvcmQ8UnVubmluZ1Rhc2tDb3VudFRocmVzaG9sZD4oXCJtYXhDb25jdXJyZW50RXhlY3V0aW9uc1wiLCBcIm1heFJ1bm5pbmdUYXNrc1wiKSxcbiAgICAgIGFkZE1heEl0ZXJhdG9yQWdlQWxhcm06IHRoaXMudG9SZWNvcmQ8TWF4QWdlVGhyZXNob2xkPihcIm1heEl0ZXJhdG9yQWdlXCIsIFwibWF4QWdlSW5NaWxsaXNcIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdNYXhDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJtYXhDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdQOTBDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJwOTBDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdBdmdDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJhdmdDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdNYXhNZW1vcnlVdGlsaXphdGlvbkFsYXJtOiB0aGlzLnRvUmVjb3JkPFVzYWdlVGhyZXNob2xkPihcIm1heE1lbW9yeVwiLCBcIm1heFVzYWdlUGVyY2VudFwiKSxcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ1A5ME1lbW9yeVV0aWxpemF0aW9uQWxhcm06IHRoaXMudG9SZWNvcmQ8VXNhZ2VUaHJlc2hvbGQ+KFwicDkwTWVtb3J5XCIsIFwibWF4VXNhZ2VQZXJjZW50XCIpLFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nQXZnTWVtb3J5VXRpbGl6YXRpb25BbGFybTogdGhpcy50b1JlY29yZDxVc2FnZVRocmVzaG9sZD4oXCJhdmdNZW1vcnlcIiwgXCJtYXhVc2FnZVBlcmNlbnRcIilcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE8gV2UgbmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIGV4dGVuZCBtb25pdG9yaW5nRmFjYWRlIHRvIHN1cHBvcnQgY3JlYXRpbmcgdGhlc2UgYWxhcm1zLiBNYXliZSBleHRlbmQgTW9ub3RvcmluZ0ZhY2FkZS5tb25pdG9yTG9nKClcblxuICBwcml2YXRlIGNyaXRpY2FsTG9nQWxhcm06IExvZ01ldHJpY0FsYXJtIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHdhcm5pbmdMb2dBbGFybTogTG9nTWV0cmljQWxhcm0gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBhZGRMb2dBbGFybShjYXRlZ29yeTogQWxhcm1DYXRlZ29yeSwgZGVmYXVsdFRocmVzaG9sZD86IG51bWJlcikge1xuICAgIGNvbnN0IGZwcm9wcyA9IGNhdGVnb3J5ID09PSBBbGFybUNhdGVnb3J5LkNyaXRpY2FsID8gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucyA6IHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucztcbiAgICBjb25zdCB0aHJlc2hvbGQgPSBmcHJvcHM/Lm1heExvZ0NvdW50Pz9kZWZhdWx0VGhyZXNob2xkXG4gICAgY29uc3QgcGF0dGVybiA9IGZwcm9wcz8ubWV0cmljTG9nUGF0dGVybj8/XG4gICAgY2F0ZWdvcnkgPT09IEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWxcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9DUklUSUNBTF9MT0dfTUVUUklDX1BBVFRFUk5cbiAgICAgIDogRnVuY3Rpb25BbGFybXMuREVGQVVMVF9XQVJOSU5HX0xPR19NRVRSSUNfUEFUVEVSTjtcbiAgICBjb25zdCBldmFsdWF0aW9uUGVyaW9kcyA9IGZwcm9wcz8ubG9nRXZhbHVhdGlvblBlcmlvZHM/PzJcbiAgICBjb25zdCBkYXRhcG9pbnRzVG9BbGFybSA9IGZwcm9wcz8ubG9nRGF0YVBvaW50c1RvQWxhcm0/PzFcbiAgICBpZiAodGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgdGhyZXNob2xkID4gMCkge1xuICAgICAgY29uc3QgbG9nQWxhcm0gPSBuZXcgTG9nTWV0cmljQWxhcm0odGhpcywgY2F0ZWdvcnkgKyAnTG9nQ291bnQnLCB7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLnByb3BzLmxvZ0dyb3VwLFxuICAgICAgICBwYXR0ZXJuLFxuICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICBkYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgbWV0cmljTmFtZTogY2F0ZWdvcnkgKyAnTG9nQ291bnQnLFxuICAgICAgfSk7XG4gICAgICBpZiAoY2F0ZWdvcnkgPT09IEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwpIHtcbiAgICAgICAgdGhpcy5jcml0aWNhbExvZ0FsYXJtID0gbG9nQWxhcm07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndhcm5pbmdMb2dBbGFybSA9IGxvZ0FsYXJtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkTG9nTW9uaXRvcmluZ1RvRGFzaGJvYXJkKCkge1xuICAgIGxldCBwYXR0ZXJuID0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybiA9PT0gdW5kZWZpbmVkXG4gICAgJiYgdGhpcy5wcm9wcy53YXJuaW5nQWxhcm1PcHRpb25zPy5kYXNoYm9hcmRMb2dQYXR0ZXJuID09PSB1bmRlZmluZWRcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9MT0dfSU5TSUdIVFNfUEFUVEVSTlxuICAgICAgOiAnJ1xuICAgIHBhdHRlcm4gKz0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgcGF0dGVybiArPSAocGF0dGVybiAhPT0gJyc/ICd8JyA6ICcnKSArIHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgaWYgKHBhdHRlcm4gIT09ICcnKSB7XG4gICAgICB0aGlzLm1vbml0b3JpbmdGYWNhZGUubW9uaXRvckxvZyh7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogdGhpcy5wcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgIHBhdHRlcm4sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRnVuY3Rpb25BbGFybXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMuYWRkRnVuY3Rpb25Nb25pdG9yaW5nKCk7XG4gICAgdGhpcy5hZGRMb2dNb25pdG9yaW5nVG9EYXNoYm9hcmQoKTtcbiAgICB0aGlzLmFkZExvZ0FsYXJtKEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwsIDEpO1xuICAgIHRoaXMuYWRkTG9nQWxhcm0oQWxhcm1DYXRlZ29yeS5XYXJuaW5nKTtcbiAgfVxuXG4gIGdldEFsYXJtcyhjYXRlZ29yeTogQWxhcm1DYXRlZ29yeSk6IEFsYXJtW10ge1xuICAgIGNvbnN0IGFsYXJtcyA9IHN1cGVyLmdldEFsYXJtcyhjYXRlZ29yeSk7XG4gICAgY29uc3QgbG9nQWxhcm0gPSBjYXRlZ29yeSA9PT0gQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCA/IHRoaXMuY3JpdGljYWxMb2dBbGFybT8uYWxhcm0gOiB0aGlzLndhcm5pbmdMb2dBbGFybT8uYWxhcm07XG4gICAgaWYgKGxvZ0FsYXJtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFsYXJtcy5wdXNoKGxvZ0FsYXJtKTtcbiAgICB9XG4gICAgcmV0dXJuIGFsYXJtcztcbiAgfVxufVxuIl19
|
|
@@ -40,7 +40,7 @@ class AlarmsBase extends constructs_1.Construct {
|
|
|
40
40
|
return alarm_helper_1.AlarmHelper.toRecord(this.props, oprop, tprop, defaultCriticalThreshold, defaultWarningThreshold);
|
|
41
41
|
}
|
|
42
42
|
getAlarms(category) {
|
|
43
|
-
return this.monitoringFacade.createdAlarmsWithDisambiguator(category).map((awa) => awa.alarm);
|
|
43
|
+
return [...this.monitoringFacade.createdAlarmsWithDisambiguator(category).map((awa) => awa.alarm).values()];
|
|
44
44
|
}
|
|
45
45
|
getCriticalAlarms() {
|
|
46
46
|
return this.getAlarms(AlarmCategory.Critical);
|
|
@@ -50,4 +50,4 @@ class AlarmsBase extends constructs_1.Construct {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
exports.AlarmsBase = AlarmsBase;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbGFybXMtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFFckMseUVBQW9HO0FBRXBHLDZDQUE0QztBQUM1QyxpREFBMkM7QUFFM0MsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHNDQUFxQixDQUFBO0lBQ3JCLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUd4QjtBQXlFRDs7R0FFRztBQUNILE1BQXNCLFVBQXdFLFNBQVEsc0JBQVM7SUFnQzdHLFlBQXNCLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQVE7O1FBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixTQUFHLEtBQUssQ0FBQyxnQkFBZ0IsbUNBQUUsSUFBSSw0Q0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDN0YscUJBQXFCLEVBQUUsRUFBRTtZQUN6QixvQkFBb0IsRUFBRTtnQkFDcEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGVBQWUsUUFBRSxLQUFLLENBQUMsZUFBZSxtQ0FBRSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTO2FBQ2pFO1lBQ0QsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBN0JEOzs7Ozs7OztPQVFHO0lBQ08sUUFBUSxDQUNoQixLQUFjLEVBQ2QsS0FBYyxFQUNkLHdCQUE0QyxFQUM1Qyx1QkFBMkM7UUFDM0MsT0FBTywwQkFBVyxDQUFDLFFBQVEsQ0FDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDakYsQ0FBQztJQWVELFNBQVMsQ0FBQyxRQUF1QjtRQUMvQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUF4REQsZ0NBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0FsYXJtLCBJQWxhcm1BY3Rpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHtDdXN0b21BbGFybVRocmVzaG9sZCwgSURhc2hib2FyZEZhY3RvcnksIE1vbml0b3JpbmdGYWNhZGV9IGZyb20gXCJjZGstbW9uaXRvcmluZy1jb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0lUb3BpY30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7RHVyYXRpb24sIFN0YWNrfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7QWxhcm1IZWxwZXJ9IGZyb20gXCIuL2FsYXJtLWhlbHBlclwiO1xuXG5leHBvcnQgZW51bSBBbGFybUNhdGVnb3J5IHtcbiAgQ3JpdGljYWwgPSBcIkNyaXRpY2FsXCIsXG4gIFdhcm5pbmcgPSBcIldhcm5pbmdcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtc0NhdGVnb3J5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUb3BpY3MgdG8gc2VuZCBhbGFybSBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZnlUb3BpY3M/OiBJVG9waWNbXTtcblxuICAvKipcbiAgICogQWN0aW9ucyB0byBzZW5kIGFsYXJtIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmeUFjdGlvbnM/OiBJQWxhcm1BY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGFybXNPcHRpb25zPFQgZXh0ZW5kcyBBbGFybXNDYXRlZ29yeU9wdGlvbnM+IHtcblxuICAvKipcbiAgICogQWxhcm0gdGhyZXNob2xkcyBmb3IgY3JpdGljYWwgYWxhcm1zLlxuICAgKlxuICAgKiBJZiBubyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCwgYSBzZXQgb2YgZGVmYXVsdCBhbGFybXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBjcml0aWNhbEFsYXJtT3B0aW9ucz86IFQ7XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZHMgZm9yIHdhcm5pbmcgYWxhcm1zLlxuICAgKlxuICAgKiBJZiBubyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCwgYSBzZXQgb2YgZGVmYXVsdCBhbGFybXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSB3YXJuaW5nQWxhcm1PcHRpb25zPzogVDtcblxuICAvKipcbiAgICogTWFpbiBlbnRyeSBwb2ludCBmb3IgbW9uaXRvcmluZy5cbiAgICpcbiAgICogSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGEgZGVmYXVsdCBmYWNhZGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZ0ZhY2FkZT86IE1vbml0b3JpbmdGYWNhZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXNoYm9hcmRGYWN0b3J5IHRvIHVzZSB3aGVuIGdlbmVyYXRpbmcgQ2xvdWRXYXRjaCBkYXNoYm9hcmRzLlxuICAgKlxuICAgKiBJZiBub3QgZGVmaW5lZCwgZGFzaGJvYXJkcyBhcmUgbm90IGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZEZhY3Rvcnk/OiBJRGFzaGJvYXJkRmFjdG9yeTtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gYWxhcm0gZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0FsYXJtRGFzaGJvYXJkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHdpZGdldHMgdG8gZGV0YWlsZWQgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb0RldGFpbERhc2hib2FyZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB3aWRnZXRzIHRvIHN1bW1hcnkgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUb1N1bW1hcnlEYXNoYm9hcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIGdlbmVyYXRlZCBhbGFybXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1OYW1lUHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBBbGFybXMgY29uc3RydWN0cy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFsYXJtc0Jhc2U8QyBleHRlbmRzIEFsYXJtc0NhdGVnb3J5T3B0aW9ucywgUCBleHRlbmRzIEFsYXJtc09wdGlvbnM8Qz4+IGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogVGhlIE1vbml0b3JpbmdGYWNhZGUgaW5zdGFuY2UgZWl0aGVyIHBhc3NlZCBpbiBvciBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBtb25pdG9yaW5nRmFjYWRlOiBNb25pdG9yaW5nRmFjYWRlO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwcm9wczogUDtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBnZW5lcmF0ZSBhbGFybSByZWNvcmRzLlxuICAgKlxuICAgKiBAcGFyYW0gb3Byb3AgcHJvcGVydHkgZnJvbSB0aGUgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIGluc3RhbmNlXG4gICAqIEBwYXJhbSB0cHJvcCBwcm9wZXJ0eSBmcm9tIHRoZSBDdXN0b21BbGFybVRocmVzaG9sZCBpbnN0YW5jZVxuICAgKiBAcGFyYW0gZGVmYXVsdENyaXRpY2FsVGhyZXNob2xkIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjcml0aWNhbCB0aHJlc2hvbGRcbiAgICogQHBhcmFtIGRlZmF1bHRXYXJuaW5nVGhyZXNob2xkIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSB3YXJuaW5nIHRocmVzaG9sZFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9SZWNvcmQ8VCBleHRlbmRzIEN1c3RvbUFsYXJtVGhyZXNob2xkPihcbiAgICBvcHJvcDoga2V5b2YgQyxcbiAgICB0cHJvcDoga2V5b2YgVCxcbiAgICBkZWZhdWx0Q3JpdGljYWxUaHJlc2hvbGQ/OiBudW1iZXIgfCBEdXJhdGlvbixcbiAgICBkZWZhdWx0V2FybmluZ1RocmVzaG9sZD86IG51bWJlciB8IER1cmF0aW9uKSB7XG4gICAgcmV0dXJuIEFsYXJtSGVscGVyLnRvUmVjb3JkPEMsIFQ+KFxuICAgICAgdGhpcy5wcm9wcywgb3Byb3AsIHRwcm9wLCBkZWZhdWx0Q3JpdGljYWxUaHJlc2hvbGQsIGRlZmF1bHRXYXJuaW5nVGhyZXNob2xkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUCkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMubW9uaXRvcmluZ0ZhY2FkZSA9IHByb3BzLm1vbml0b3JpbmdGYWNhZGU/P25ldyBNb25pdG9yaW5nRmFjYWRlKHRoaXMsICdNb25pdG9yaW5nRmFjYWRlJywge1xuICAgICAgbWV0cmljRmFjdG9yeURlZmF1bHRzOiB7fSxcbiAgICAgIGFsYXJtRmFjdG9yeURlZmF1bHRzOiB7XG4gICAgICAgIGFjdGlvbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBhbGFybU5hbWVQcmVmaXg6IHByb3BzLmFsYXJtTmFtZVByZWZpeD8/U3RhY2sub2YodGhpcykuc3RhY2tOYW1lXG4gICAgICB9LFxuICAgICAgZGFzaGJvYXJkRmFjdG9yeTogcHJvcHMuZGFzaGJvYXJkRmFjdG9yeVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0QWxhcm1zKGNhdGVnb3J5OiBBbGFybUNhdGVnb3J5KTogQWxhcm1bXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLm1vbml0b3JpbmdGYWNhZGUuY3JlYXRlZEFsYXJtc1dpdGhEaXNhbWJpZ3VhdG9yKGNhdGVnb3J5KS5tYXAoKGF3YSkgPT4gYXdhLmFsYXJtKS52YWx1ZXMoKV07XG4gIH1cblxuICBnZXRDcml0aWNhbEFsYXJtcygpOiBBbGFybVtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGFybXMoQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCk7XG4gIH1cblxuICBnZXRXYXJuaW5nQWxhcm1zKCk6IEFsYXJtW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsYXJtcyhBbGFybUNhdGVnb3J5Lldhcm5pbmcpO1xuICB9XG59XG4iXX0=
|
|
@@ -33,4 +33,4 @@ class ParameterReader extends custom_resources_1.AwsCustomResource {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
exports.ParameterReader = ParameterReader;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXJlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhcmFtZXRlci1yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQTJFO0FBRTNFLGlEQUE0RDtBQVU1RDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxvQ0FBaUI7SUFFcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxNQUFNLElBQUksR0FBZTtZQUN2QixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWE7YUFDMUI7WUFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1NBQ2xELENBQUM7UUFFRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxDQUFDLElBQUkseUJBQWUsQ0FBQzt3QkFDL0IsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3dCQUNoQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt3QkFDN0IsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztxQkFDckIsQ0FBQyxDQUFDO2FBQ0o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBNUJELDBDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXdzQ3VzdG9tUmVzb3VyY2UsIEF3c1Nka0NhbGx9IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7RWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgUGFyYW1ldGVyUmVhZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyUmVhZGVyUHJvcHMge1xuICByZWFkb25seSBwYXJhbWV0ZXJOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEN1c3RvbSByZXNvdXJjZSBhbGxvd2luZyBTU00gcGFyYW1ldGVyIHN0cmluZ3MgdG8gYmUgcmVhZCBhY3Jvc3MgcmVnaW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclJlYWRlciBleHRlbmRzIEF3c0N1c3RvbVJlc291cmNlIHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGFyYW1ldGVyUmVhZGVyUHJvcHMpIHtcbiAgICBjb25zdCBjYWxsOiBBd3NTZGtDYWxsID0ge1xuICAgICAgc2VydmljZTogXCJTU01cIixcbiAgICAgIGFjdGlvbjogXCJnZXRQYXJhbWV0ZXJcIixcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgTmFtZTogcHJvcHMucGFyYW1ldGVyTmFtZVxuICAgICAgfSxcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiB7IGlkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCkgfVxuICAgIH07XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIG9uVXBkYXRlOiBjYWxsLFxuICAgICAgcG9saWN5OiB7XG4gICAgICAgIHN0YXRlbWVudHM6IFtuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgYWN0aW9uczogW1wic3NtOkdldFBhcmFtZXRlclwiXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPV1xuICAgICAgICB9KV1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFN0cmluZ1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzcG9uc2VGaWVsZChcIlBhcmFtZXRlci5WYWx1ZVwiKS50b1N0cmluZygpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "truemark-cdk-lib",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"scripts": {
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"@aws-cdk/aws-synthetics-alpha": "^2.18.0-alpha.0",
|
|
48
48
|
"cdk-monitoring-constructs": "^1.6.4"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "87c4d87c8c3b9449f28e762f415bf6c6487b3a09"
|
|
51
51
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const cdk = require("aws-cdk-lib");
|
|
4
3
|
const path = require("path");
|
|
5
4
|
const assertions_1 = require("aws-cdk-lib/assertions");
|
|
6
5
|
const aws_lambda_1 = require("../../aws-lambda");
|
|
6
|
+
const test_helper_1 = require("../test-helper");
|
|
7
7
|
test('Python Lambda Test', () => {
|
|
8
|
-
const
|
|
9
|
-
const stack = new cdk.Stack(app, 'TestStack');
|
|
8
|
+
const stack = test_helper_1.TestHelper.stack();
|
|
10
9
|
new aws_lambda_1.PythonFunction(stack, 'TestFunction', {
|
|
11
10
|
entry: path.join(__dirname, 'python-lambda')
|
|
12
11
|
});
|
|
13
12
|
const template = assertions_1.Template.fromStack(stack);
|
|
14
|
-
template.hasResourceProperties("AWS::Lambda::Function", {
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
template.hasResourceProperties("AWS::Lambda::Function", {
|
|
14
|
+
Runtime: "python3.9"
|
|
15
|
+
});
|
|
16
|
+
template.resourceCountIs(test_helper_1.ResourceType.CLOUDWATCH_ALARM, 3);
|
|
17
17
|
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHl0aG9uLWZ1bmN0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJweXRob24tZnVuY3Rpb24udGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUE2QjtBQUM3Qix1REFBZ0Q7QUFDaEQsaURBQWdEO0FBQ2hELGdEQUF3RDtBQUV4RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQzlCLE1BQU0sS0FBSyxHQUFHLHdCQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakMsSUFBSSwyQkFBYyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7UUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztLQUM3QyxDQUFDLENBQUM7SUFDSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUU7UUFDdEQsT0FBTyxFQUFFLFdBQVc7S0FDckIsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGVBQWUsQ0FBQywwQkFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHtUZW1wbGF0ZX0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCB7UHl0aG9uRnVuY3Rpb259IGZyb20gXCIuLi8uLi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge1Jlc291cmNlVHlwZSwgVGVzdEhlbHBlcn0gZnJvbSBcIi4uL3Rlc3QtaGVscGVyXCI7XG5cbnRlc3QoJ1B5dGhvbiBMYW1iZGEgVGVzdCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBUZXN0SGVscGVyLnN0YWNrKCk7XG4gIG5ldyBQeXRob25GdW5jdGlvbihzdGFjaywgJ1Rlc3RGdW5jdGlvbicsIHtcbiAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B5dGhvbi1sYW1iZGEnKVxuICB9KTtcbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkxhbWJkYTo6RnVuY3Rpb25cIiwge1xuICAgIFJ1bnRpbWU6IFwicHl0aG9uMy45XCJcbiAgfSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhSZXNvdXJjZVR5cGUuQ0xPVURXQVRDSF9BTEFSTSwgMyk7XG59KTtcbiJdfQ==
|