@aws-cdk/aws-elasticache-alpha 2.242.0-alpha.0 → 2.244.0-alpha.0
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/.jsii +48 -6
- package/.jsii.tabl.json.gz +0 -0
- package/lib/elasticache-grants.generated.d.ts +5 -0
- package/lib/elasticache-grants.generated.js +12 -6
- package/lib/iam-user.js +3 -3
- package/lib/no-password-user.js +3 -3
- package/lib/password-user.js +3 -3
- package/lib/serverless-cache-base.js +1 -1
- package/lib/serverless-cache.js +22 -22
- package/lib/user-base.js +6 -6
- package/lib/user-group.js +10 -10
- package/package.json +6 -6
package/.jsii
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://aws.amazon.com"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"aws-cdk-lib": "^2.
|
|
11
|
+
"aws-cdk-lib": "^2.244.0",
|
|
12
12
|
"constructs": "^10.5.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -12047,7 +12047,7 @@
|
|
|
12047
12047
|
"kind": "class",
|
|
12048
12048
|
"locationInModule": {
|
|
12049
12049
|
"filename": "lib/elasticache-grants.generated.ts",
|
|
12050
|
-
"line":
|
|
12050
|
+
"line": 19
|
|
12051
12051
|
},
|
|
12052
12052
|
"methods": [
|
|
12053
12053
|
{
|
|
@@ -12057,7 +12057,7 @@
|
|
|
12057
12057
|
},
|
|
12058
12058
|
"locationInModule": {
|
|
12059
12059
|
"filename": "lib/elasticache-grants.generated.ts",
|
|
12060
|
-
"line":
|
|
12060
|
+
"line": 23
|
|
12061
12061
|
},
|
|
12062
12062
|
"name": "fromServerlessCache",
|
|
12063
12063
|
"parameters": [
|
|
@@ -12075,6 +12075,48 @@
|
|
|
12075
12075
|
},
|
|
12076
12076
|
"static": true
|
|
12077
12077
|
},
|
|
12078
|
+
{
|
|
12079
|
+
"docs": {
|
|
12080
|
+
"stability": "experimental",
|
|
12081
|
+
"summary": "Grant the given identity custom permissions."
|
|
12082
|
+
},
|
|
12083
|
+
"locationInModule": {
|
|
12084
|
+
"filename": "lib/elasticache-grants.generated.ts",
|
|
12085
|
+
"line": 38
|
|
12086
|
+
},
|
|
12087
|
+
"name": "actions",
|
|
12088
|
+
"parameters": [
|
|
12089
|
+
{
|
|
12090
|
+
"name": "grantee",
|
|
12091
|
+
"type": {
|
|
12092
|
+
"fqn": "aws-cdk-lib.aws_iam.IGrantable"
|
|
12093
|
+
}
|
|
12094
|
+
},
|
|
12095
|
+
{
|
|
12096
|
+
"name": "actions",
|
|
12097
|
+
"type": {
|
|
12098
|
+
"collection": {
|
|
12099
|
+
"elementtype": {
|
|
12100
|
+
"primitive": "string"
|
|
12101
|
+
},
|
|
12102
|
+
"kind": "array"
|
|
12103
|
+
}
|
|
12104
|
+
}
|
|
12105
|
+
},
|
|
12106
|
+
{
|
|
12107
|
+
"name": "options",
|
|
12108
|
+
"optional": true,
|
|
12109
|
+
"type": {
|
|
12110
|
+
"fqn": "aws-cdk-lib.PermissionsOptions"
|
|
12111
|
+
}
|
|
12112
|
+
}
|
|
12113
|
+
],
|
|
12114
|
+
"returns": {
|
|
12115
|
+
"type": {
|
|
12116
|
+
"fqn": "aws-cdk-lib.aws_iam.Grant"
|
|
12117
|
+
}
|
|
12118
|
+
}
|
|
12119
|
+
},
|
|
12078
12120
|
{
|
|
12079
12121
|
"docs": {
|
|
12080
12122
|
"stability": "experimental",
|
|
@@ -12082,7 +12124,7 @@
|
|
|
12082
12124
|
},
|
|
12083
12125
|
"locationInModule": {
|
|
12084
12126
|
"filename": "lib/elasticache-grants.generated.ts",
|
|
12085
|
-
"line":
|
|
12127
|
+
"line": 50
|
|
12086
12128
|
},
|
|
12087
12129
|
"name": "connect",
|
|
12088
12130
|
"parameters": [
|
|
@@ -12109,7 +12151,7 @@
|
|
|
12109
12151
|
"immutable": true,
|
|
12110
12152
|
"locationInModule": {
|
|
12111
12153
|
"filename": "lib/elasticache-grants.generated.ts",
|
|
12112
|
-
"line":
|
|
12154
|
+
"line": 29
|
|
12113
12155
|
},
|
|
12114
12156
|
"name": "resource",
|
|
12115
12157
|
"protected": true,
|
|
@@ -13496,6 +13538,6 @@
|
|
|
13496
13538
|
"symbolId": "lib/user-group:UserGroupProps"
|
|
13497
13539
|
}
|
|
13498
13540
|
},
|
|
13499
|
-
"version": "2.
|
|
13541
|
+
"version": "2.244.0-alpha.0",
|
|
13500
13542
|
"fingerprint": "**********"
|
|
13501
13543
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as elasticache from "aws-cdk-lib/aws-elasticache";
|
|
2
2
|
import * as iam from "aws-cdk-lib/aws-iam";
|
|
3
|
+
import * as cdk from "aws-cdk-lib/core";
|
|
3
4
|
/**
|
|
4
5
|
* Collection of grant methods for a IServerlessCacheRef
|
|
5
6
|
*/
|
|
@@ -10,6 +11,10 @@ export declare class ServerlessCacheGrants {
|
|
|
10
11
|
static fromServerlessCache(resource: elasticache.IServerlessCacheRef): ServerlessCacheGrants;
|
|
11
12
|
protected readonly resource: elasticache.IServerlessCacheRef;
|
|
12
13
|
private constructor();
|
|
14
|
+
/**
|
|
15
|
+
* Grant the given identity custom permissions
|
|
16
|
+
*/
|
|
17
|
+
actions(grantee: iam.IGrantable, actions: Array<string>, options?: cdk.PermissionsOptions): iam.Grant;
|
|
13
18
|
/**
|
|
14
19
|
* Grant connect permissions to the cache
|
|
15
20
|
*/
|
|
@@ -9,7 +9,7 @@ const iam = require("aws-cdk-lib/aws-iam");
|
|
|
9
9
|
* Collection of grant methods for a IServerlessCacheRef
|
|
10
10
|
*/
|
|
11
11
|
class ServerlessCacheGrants {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCacheGrants", version: "2.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCacheGrants", version: "2.244.0-alpha.0" };
|
|
13
13
|
/**
|
|
14
14
|
* Creates grants for ServerlessCacheGrants
|
|
15
15
|
*/
|
|
@@ -23,17 +23,23 @@ class ServerlessCacheGrants {
|
|
|
23
23
|
this.resource = props.resource;
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Grant
|
|
26
|
+
* Grant the given identity custom permissions
|
|
27
27
|
*/
|
|
28
|
-
|
|
29
|
-
const actions = ["elasticache:Connect", "elasticache:DescribeServerlessCaches"];
|
|
28
|
+
actions(grantee, actions, options = {}) {
|
|
30
29
|
const result = iam.Grant.addToPrincipal({
|
|
31
30
|
actions: actions,
|
|
32
31
|
grantee: grantee,
|
|
33
|
-
resourceArns: [elasticache.CfnServerlessCache.arnForServerlessCache(this.resource)]
|
|
32
|
+
resourceArns: (options.resourceArns ?? [elasticache.CfnServerlessCache.arnForServerlessCache(this.resource)])
|
|
34
33
|
});
|
|
35
34
|
return result;
|
|
36
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Grant connect permissions to the cache
|
|
38
|
+
*/
|
|
39
|
+
connect(grantee) {
|
|
40
|
+
const actions = ["elasticache:Connect", "elasticache:DescribeServerlessCaches"];
|
|
41
|
+
return this.actions(grantee, actions, {});
|
|
42
|
+
}
|
|
37
43
|
}
|
|
38
44
|
exports.ServerlessCacheGrants = ServerlessCacheGrants;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY2FjaGUtZ3JhbnRzLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVsYXN0aWNhY2hlLWdyYW50cy5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlEQUFpRDtBQUNqRCwyREFBMkQ7QUFDM0QsMkNBQTJDO0FBYTNDOztHQUVHO0FBQ0gsTUFBYSxxQkFBcUI7O0lBQ2hDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQXlDO1FBQ3pFLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQztZQUMvQixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7S0FDSjtJQUVrQixRQUFRLENBQWtDO0lBRTdELFlBQW9CLEtBQWlDO1FBQ25ELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztLQUNoQztJQUVEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLE9BQXVCLEVBQUUsT0FBc0IsRUFBRSxVQUFrQyxFQUFFO1FBQ2xHLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDOUcsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLE9BQXVCO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLENBQUMscUJBQXFCLEVBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMvRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztLQUMzQzs7QUFsQ0gsc0RBbUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHN0eWxpc3RpYy9tYXgtbGVuLCBlb2wtbGFzdCAqL1xuaW1wb3J0ICogYXMgZWxhc3RpY2FjaGUgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljYWNoZVwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliL2NvcmVcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBTZXJ2ZXJsZXNzQ2FjaGVHcmFudHNcbiAqL1xuaW50ZXJmYWNlIFNlcnZlcmxlc3NDYWNoZUdyYW50c1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBvbiB3aGljaCBhY3Rpb25zIHdpbGwgYmUgYWxsb3dlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2U6IGVsYXN0aWNhY2hlLklTZXJ2ZXJsZXNzQ2FjaGVSZWY7XG59XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBncmFudCBtZXRob2RzIGZvciBhIElTZXJ2ZXJsZXNzQ2FjaGVSZWZcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZlcmxlc3NDYWNoZUdyYW50cyB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGdyYW50cyBmb3IgU2VydmVybGVzc0NhY2hlR3JhbnRzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJ2ZXJsZXNzQ2FjaGUocmVzb3VyY2U6IGVsYXN0aWNhY2hlLklTZXJ2ZXJsZXNzQ2FjaGVSZWYpOiBTZXJ2ZXJsZXNzQ2FjaGVHcmFudHMge1xuICAgIHJldHVybiBuZXcgU2VydmVybGVzc0NhY2hlR3JhbnRzKHtcbiAgICAgIHJlc291cmNlOiByZXNvdXJjZVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc291cmNlOiBlbGFzdGljYWNoZS5JU2VydmVybGVzc0NhY2hlUmVmO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJvcHM6IFNlcnZlcmxlc3NDYWNoZUdyYW50c1Byb3BzKSB7XG4gICAgdGhpcy5yZXNvdXJjZSA9IHByb3BzLnJlc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBpZGVudGl0eSBjdXN0b20gcGVybWlzc2lvbnNcbiAgICovXG4gIHB1YmxpYyBhY3Rpb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCBhY3Rpb25zOiBBcnJheTxzdHJpbmc+LCBvcHRpb25zOiBjZGsuUGVybWlzc2lvbnNPcHRpb25zID0ge30pOiBpYW0uR3JhbnQge1xuICAgIGNvbnN0IHJlc3VsdCA9IGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogKG9wdGlvbnMucmVzb3VyY2VBcm5zID8/IFtlbGFzdGljYWNoZS5DZm5TZXJ2ZXJsZXNzQ2FjaGUuYXJuRm9yU2VydmVybGVzc0NhY2hlKHRoaXMucmVzb3VyY2UpXSlcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IGNvbm5lY3QgcGVybWlzc2lvbnMgdG8gdGhlIGNhY2hlXG4gICAqL1xuICBwdWJsaWMgY29ubmVjdChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgY29uc3QgYWN0aW9ucyA9IFtcImVsYXN0aWNhY2hlOkNvbm5lY3RcIixcImVsYXN0aWNhY2hlOkRlc2NyaWJlU2VydmVybGVzc0NhY2hlc1wiXTtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zKGdyYW50ZWUsIGFjdGlvbnMsIHt9KTtcbiAgfVxufSJdfQ==
|
package/lib/iam-user.js
CHANGED
|
@@ -71,7 +71,7 @@ let IamUser = (() => {
|
|
|
71
71
|
IamUser = _classThis = _classDescriptor.value;
|
|
72
72
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
73
73
|
}
|
|
74
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.IamUser", version: "2.
|
|
74
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.IamUser", version: "2.244.0-alpha.0" };
|
|
75
75
|
/**
|
|
76
76
|
* Uniquely identifies this class.
|
|
77
77
|
*/
|
|
@@ -135,7 +135,7 @@ let IamUser = (() => {
|
|
|
135
135
|
this.userName = props.userName ?? props.userId;
|
|
136
136
|
this.accessString = props.accessControl.accessString;
|
|
137
137
|
if (this.userName !== this.userId) {
|
|
138
|
-
throw new core_1.ValidationError('For IAM authentication, userName must be equal to userId.', this);
|
|
138
|
+
throw new core_1.ValidationError('IamUserNameMustEqualUserId', 'For IAM authentication, userName must be equal to userId.', this);
|
|
139
139
|
}
|
|
140
140
|
this.resource = new aws_elasticache_1.CfnUser(this, 'Resource', {
|
|
141
141
|
engine: this.engine,
|
|
@@ -182,4 +182,4 @@ let IamUser = (() => {
|
|
|
182
182
|
return IamUser = _classThis;
|
|
183
183
|
})();
|
|
184
184
|
exports.IamUser = IamUser;
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLXVzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpYW0tdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpRUFBc0Q7QUFDdEQsMkNBQTJDO0FBQzNDLDJDQUFtRDtBQUNuRCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRTFFLHFDQUFzQztBQUV0QywyQ0FBdUM7QUFFdkMsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFjbEY7Ozs7R0FJRztJQUVVLE9BQU87NEJBRG5CLG9DQUFrQjs7OztzQkFDVSxvQkFBUTs7Ozt1QkFBaEIsU0FBUSxXQUFROzs7O3dDQXlGbEMsSUFBQSxrQ0FBYyxHQUFFO2lDQVloQixJQUFBLGtDQUFjLEdBQUU7WUFYakIsdUxBQU8sWUFBWSw2REFFbEI7WUFVRCxrS0FBTyxLQUFLLDZEQU1YO1lBNUdILDZLQTZHQzs7Ozs7UUE1R0M7O1dBRUc7UUFDSSxNQUFNLENBQVUscUJBQXFCLEdBQVcscUNBQXFDLENBQUM7UUFFN0Y7O1dBRUc7UUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQU07WUFDNUIsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksMEJBQTBCLElBQUksQ0FBQyxDQUFDO1NBQ2pGO1FBRUQ7O1dBRUc7UUFDYSxNQUFNLEdBaEJYLG1EQUFPLENBZ0JrQjtRQUNwQzs7OztXQUlHO1FBQ2EsTUFBTSxDQUFTO1FBQy9COzs7OztXQUtHO1FBQ2EsUUFBUSxDQUFVO1FBQ2xDOztXQUVHO1FBQ2EsWUFBWSxDQUFTO1FBQ3JDOzs7O1dBSUc7UUFDYSxPQUFPLENBQVM7UUFDaEM7Ozs7O1dBS0c7UUFDYSxVQUFVLENBQVM7UUFFbEIsUUFBUSxDQUFVO1FBRW5DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7WUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQW5EUixPQUFPOzs7O1lBcURoQixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLG1CQUFVLENBQUMsTUFBTSxDQUFDO1lBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBRXJELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLDRCQUE0QixFQUFFLDJEQUEyRCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdILENBQUM7WUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkseUJBQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM1QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQy9CLGtCQUFrQixFQUFFO29CQUNsQixJQUFJLEVBQUUsS0FBSztpQkFDWjtnQkFDRCxrQkFBa0IsRUFBRSxLQUFLO2dCQUN6QixTQUFTLEVBQUUsU0FBUzthQUNyQixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFFM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMxRTtRQUVEOzs7OztXQUtHO1FBRUksWUFBWSxDQUFDLE9BQXVCO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQztTQUNuRDtRQUVEOzs7Ozs7V0FNRztRQUVJLEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7WUFDeEQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztnQkFDOUIsT0FBTztnQkFDUCxPQUFPO2dCQUNQLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDN0IsQ0FBQyxDQUFDO1NBQ0o7O1lBNUdVLHVEQUFPOzs7OztBQUFQLDBCQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuVXNlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljYWNoZSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVXNlckVuZ2luZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB0eXBlIHsgVXNlckJhc2VQcm9wcyB9IGZyb20gJy4vdXNlci1iYXNlJztcbmltcG9ydCB7IFVzZXJCYXNlIH0gZnJvbSAnLi91c2VyLWJhc2UnO1xuXG5jb25zdCBFTEFTVElDQUNIRV9JQU1VU0VSX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1lbGFzdGljYWNoZS5JYW1Vc2VyJyk7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYW4gRWxhc3RpQ2FjaGUgdXNlciB3aXRoIElBTSBhdXRoZW50aWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJYW1Vc2VyUHJvcHMgZXh0ZW5kcyBVc2VyQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNhbWUgYXMgdXNlcklkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lIGFuIEVsYXN0aUNhY2hlIHVzZXIgd2l0aCBJQU0gYXV0aGVudGljYXRpb24uXG4gKlxuICogQHJlc291cmNlIEFXUzo6RWxhc3RpQ2FjaGU6OlVzZXJcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIElhbVVzZXIgZXh0ZW5kcyBVc2VyQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ2F3cy1jZGstbGliLmF3cy1lbGFzdGljYWNoZS5JYW1Vc2VyJztcblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhbiBgSWFtVXNlcmAuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzSWFtVXNlcih4OiBhbnkpOiB4IGlzIElhbVVzZXIge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiAoeCkgPT09ICdvYmplY3QnICYmIEVMQVNUSUNBQ0hFX0lBTVVTRVJfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVuZ2luZSBmb3IgdGhlIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgSUQuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgbmFtZS5cbiAgICogRm9yIElBTSBhdXRoZW50aWNhdGlvbiB1c2VyTmFtZSBtdXN0IGJlIGVxdWFsIHRvIHVzZXJJZC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFjY2VzcyBzdHJpbmcgdGhhdCBkZWZpbmVzIHRoZSB1c2VyJ3MgcGVybWlzc2lvbnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzU3RyaW5nOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIEFSTi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3Mgc3RhdHVzLlxuICAgKiBDYW4gYmUgJ2FjdGl2ZScsICdtb2RpZnlpbmcnLCAnZGVsZXRpbmcnLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlclN0YXR1czogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IENmblVzZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElhbVVzZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuZW5naW5lID0gcHJvcHMuZW5naW5lID8/IFVzZXJFbmdpbmUuVkFMS0VZO1xuICAgIHRoaXMudXNlcklkID0gcHJvcHMudXNlcklkO1xuICAgIHRoaXMudXNlck5hbWUgPSBwcm9wcy51c2VyTmFtZSA/PyBwcm9wcy51c2VySWQ7XG4gICAgdGhpcy5hY2Nlc3NTdHJpbmcgPSBwcm9wcy5hY2Nlc3NDb250cm9sLmFjY2Vzc1N0cmluZztcblxuICAgIGlmICh0aGlzLnVzZXJOYW1lICE9PSB0aGlzLnVzZXJJZCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSWFtVXNlck5hbWVNdXN0RXF1YWxVc2VySWQnLCAnRm9yIElBTSBhdXRoZW50aWNhdGlvbiwgdXNlck5hbWUgbXVzdCBiZSBlcXVhbCB0byB1c2VySWQuJywgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Vc2VyKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGVuZ2luZTogdGhpcy5lbmdpbmUsXG4gICAgICB1c2VySWQ6IHByb3BzLnVzZXJJZCxcbiAgICAgIHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lLFxuICAgICAgYWNjZXNzU3RyaW5nOiB0aGlzLmFjY2Vzc1N0cmluZyxcbiAgICAgIGF1dGhlbnRpY2F0aW9uTW9kZToge1xuICAgICAgICBUeXBlOiAnaWFtJyxcbiAgICAgIH0sXG4gICAgICBub1Bhc3N3b3JkUmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgcGFzc3dvcmRzOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnVzZXJBcm4gPSB0aGlzLnJlc291cmNlLmF0dHJBcm47XG4gICAgdGhpcy51c2VyU3RhdHVzID0gdGhpcy5yZXNvdXJjZS5hdHRyU3RhdHVzO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIEVMQVNUSUNBQ0hFX0lBTVVTRVJfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IGNvbm5lY3QgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIElBTSBpZGVudGl0eS5cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBJQU0gaWRlbnRpdHkgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG8uXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnRDb25uZWN0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnZWxhc3RpY2FjaGU6Q29ubmVjdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBpZGVudGl0eSBjdXN0b20gcGVybWlzc2lvbnMuXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgSUFNIGlkZW50aXR5IHRvIGdyYW50IHBlcm1pc3Npb25zIHRvLlxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgYWN0aW9ucyB0byBncmFudC5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLnVzZXJBcm5dLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
package/lib/no-password-user.js
CHANGED
|
@@ -67,7 +67,7 @@ let NoPasswordUser = (() => {
|
|
|
67
67
|
NoPasswordUser = _classThis = _classDescriptor.value;
|
|
68
68
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
69
69
|
}
|
|
70
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.NoPasswordUser", version: "2.
|
|
70
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.NoPasswordUser", version: "2.244.0-alpha.0" };
|
|
71
71
|
/**
|
|
72
72
|
* Uniquely identifies this class.
|
|
73
73
|
*/
|
|
@@ -130,7 +130,7 @@ let NoPasswordUser = (() => {
|
|
|
130
130
|
this.userName = props.userName ?? props.userId;
|
|
131
131
|
this.accessString = props.accessControl.accessString;
|
|
132
132
|
if (!SUPPORTED_NO_PASSWORD_ENGINES.includes(this.engine)) {
|
|
133
|
-
throw new core_1.ValidationError(`Engine '${this.engine}' does not support no-password authentication. Supported engines: ${SUPPORTED_NO_PASSWORD_ENGINES.join(', ')}.`, this);
|
|
133
|
+
throw new core_1.ValidationError('UnsupportedEngineForNoPassword', `Engine '${this.engine}' does not support no-password authentication. Supported engines: ${SUPPORTED_NO_PASSWORD_ENGINES.join(', ')}.`, this);
|
|
134
134
|
}
|
|
135
135
|
this.resource = new aws_elasticache_1.CfnUser(this, 'Resource', {
|
|
136
136
|
engine: this.engine,
|
|
@@ -154,4 +154,4 @@ let NoPasswordUser = (() => {
|
|
|
154
154
|
return NoPasswordUser = _classThis;
|
|
155
155
|
})();
|
|
156
156
|
exports.NoPasswordUser = NoPasswordUser;
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcGFzc3dvcmQtdXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm5vLXBhc3N3b3JkLXVzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQXNEO0FBQ3RELDJDQUFtRDtBQUNuRCw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRTFFLHFDQUFzQztBQUV0QywyQ0FBdUM7QUFFdkMsTUFBTSxpQ0FBaUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFFaEc7O0dBRUc7QUFDSCxNQUFNLDZCQUE2QixHQUFHLENBQUMsbUJBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQWN6RDs7OztHQUlHO0lBRVUsY0FBYzs0QkFEMUIsb0NBQWtCOzs7O3NCQUNpQixvQkFBUTs4QkFBaEIsU0FBUSxXQUFROzs7O1lBQTVDLDZLQWlGQzs7Ozs7UUFoRkM7O1dBRUc7UUFDSSxNQUFNLENBQVUscUJBQXFCLEdBQVcsNENBQTRDLENBQUM7UUFFcEc7O1dBRUc7UUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBTTtZQUNuQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxpQ0FBaUMsSUFBSSxDQUFDLENBQUM7U0FDeEY7UUFFRDs7V0FFRztRQUNhLE1BQU0sQ0FBYztRQUNwQzs7OztXQUlHO1FBQ2EsTUFBTSxDQUFTO1FBQy9COzs7O1dBSUc7UUFDYSxRQUFRLENBQVU7UUFDbEM7O1dBRUc7UUFDYSxZQUFZLENBQVM7UUFDckM7Ozs7V0FJRztRQUNhLE9BQU8sQ0FBUztRQUNoQzs7Ozs7V0FLRztRQUNhLFVBQVUsQ0FBUztRQUVsQixRQUFRLENBQVU7UUFFbkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtZQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7bURBbERSLGNBQWM7Ozs7WUFvRHZCLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksbUJBQVUsQ0FBQyxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7WUFFckQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxJQUFJLHNCQUFlLENBQUMsZ0NBQWdDLEVBQUUsV0FBVyxJQUFJLENBQUMsTUFBTSxxRUFBcUUsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNU0sQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBTyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQzVDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0Isa0JBQWtCLEVBQUU7b0JBQ2xCLElBQUksRUFBRSxzQkFBc0I7aUJBQzdCO2dCQUNELGtCQUFrQixFQUFFLElBQUk7Z0JBQ3hCLFNBQVMsRUFBRSxTQUFTO2FBQ3JCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUUzQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxpQ0FBaUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGOztZQWhGVSx1REFBYzs7Ozs7QUFBZCx3Q0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmblVzZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVXNlckVuZ2luZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB0eXBlIHsgVXNlckJhc2VQcm9wcyB9IGZyb20gJy4vdXNlci1iYXNlJztcbmltcG9ydCB7IFVzZXJCYXNlIH0gZnJvbSAnLi91c2VyLWJhc2UnO1xuXG5jb25zdCBFTEFTVElDQUNIRV9OT1BBU1NXT1JEVVNFUl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtZWxhc3RpY2FjaGUuTm9QYXNzd29yZFVzZXInKTtcblxuLyoqXG4gKiBMaXN0IG9mIGVuZ2luZXMgdGhhdCBzdXBwb3J0IG5vLXBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uLlxuICovXG5jb25zdCBTVVBQT1JURURfTk9fUEFTU1dPUkRfRU5HSU5FUyA9IFtVc2VyRW5naW5lLlJFRElTXTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBFbGFzdGlDYWNoZSB1c2VyIHdpdGggbm8gcGFzc3dvcmQgYXV0aGVudGljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9QYXNzd29yZFVzZXJQcm9wcyBleHRlbmRzIFVzZXJCYXNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2FtZSBhcyB1c2VySWQuXG4gICAqL1xuICByZWFkb25seSB1c2VyTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZpbmUgYW4gRWxhc3RpQ2FjaGUgdXNlciB3aXRoIG5vIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkVsYXN0aUNhY2hlOjpVc2VyXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBOb1Bhc3N3b3JkVXNlciBleHRlbmRzIFVzZXJCYXNlIHtcbiAgLyoqXG4gICAqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnYXdzLWNkay1saWIuYXdzLWVsYXN0aWNhY2hlLk5vUGFzc3dvcmRVc2VyJztcblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIGBOb1Bhc3N3b3JkVXNlcmAuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzTm9QYXNzd29yZFVzZXIoeDogYW55KTogeCBpcyBOb1Bhc3N3b3JkVXNlciB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mICh4KSA9PT0gJ29iamVjdCcgJiYgRUxBU1RJQ0FDSEVfTk9QQVNTV09SRFVTRVJfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVuZ2luZSBmb3IgdGhlIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgSUQuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgbmFtZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFjY2VzcyBzdHJpbmcgdGhhdCBkZWZpbmVzIHRoZSB1c2VyJ3MgcGVybWlzc2lvbnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzU3RyaW5nOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIEFSTi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3Mgc3RhdHVzLlxuICAgKiBDYW4gYmUgJ2FjdGl2ZScsICdtb2RpZnlpbmcnLCAnZGVsZXRpbmcnLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlclN0YXR1czogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IENmblVzZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5vUGFzc3dvcmRVc2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IHByb3BzLmVuZ2luZSA/PyBVc2VyRW5naW5lLlJFRElTO1xuICAgIHRoaXMudXNlcklkID0gcHJvcHMudXNlcklkO1xuICAgIHRoaXMudXNlck5hbWUgPSBwcm9wcy51c2VyTmFtZSA/PyBwcm9wcy51c2VySWQ7XG4gICAgdGhpcy5hY2Nlc3NTdHJpbmcgPSBwcm9wcy5hY2Nlc3NDb250cm9sLmFjY2Vzc1N0cmluZztcblxuICAgIGlmICghU1VQUE9SVEVEX05PX1BBU1NXT1JEX0VOR0lORVMuaW5jbHVkZXModGhpcy5lbmdpbmUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVbnN1cHBvcnRlZEVuZ2luZUZvck5vUGFzc3dvcmQnLCBgRW5naW5lICcke3RoaXMuZW5naW5lfScgZG9lcyBub3Qgc3VwcG9ydCBuby1wYXNzd29yZCBhdXRoZW50aWNhdGlvbi4gU3VwcG9ydGVkIGVuZ2luZXM6ICR7U1VQUE9SVEVEX05PX1BBU1NXT1JEX0VOR0lORVMuam9pbignLCAnKX0uYCwgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Vc2VyKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGVuZ2luZTogdGhpcy5lbmdpbmUsXG4gICAgICB1c2VySWQ6IHByb3BzLnVzZXJJZCxcbiAgICAgIHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lLFxuICAgICAgYWNjZXNzU3RyaW5nOiB0aGlzLmFjY2Vzc1N0cmluZyxcbiAgICAgIGF1dGhlbnRpY2F0aW9uTW9kZToge1xuICAgICAgICBUeXBlOiAnbm8tcGFzc3dvcmQtcmVxdWlyZWQnLFxuICAgICAgfSxcbiAgICAgIG5vUGFzc3dvcmRSZXF1aXJlZDogdHJ1ZSxcbiAgICAgIHBhc3N3b3JkczogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyQXJuID0gdGhpcy5yZXNvdXJjZS5hdHRyQXJuO1xuICAgIHRoaXMudXNlclN0YXR1cyA9IHRoaXMucmVzb3VyY2UuYXR0clN0YXR1cztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFTEFTVElDQUNIRV9OT1BBU1NXT1JEVVNFUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/password-user.js
CHANGED
|
@@ -63,7 +63,7 @@ let PasswordUser = (() => {
|
|
|
63
63
|
PasswordUser = _classThis = _classDescriptor.value;
|
|
64
64
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
65
65
|
}
|
|
66
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.PasswordUser", version: "2.
|
|
66
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.PasswordUser", version: "2.244.0-alpha.0" };
|
|
67
67
|
/**
|
|
68
68
|
* Uniquely identifies this class.
|
|
69
69
|
*/
|
|
@@ -126,7 +126,7 @@ let PasswordUser = (() => {
|
|
|
126
126
|
this.userName = props.userName ?? props.userId;
|
|
127
127
|
this.accessString = props.accessControl.accessString;
|
|
128
128
|
if (props.passwords.length < 1 || props.passwords.length > 2) {
|
|
129
|
-
throw new core_1.ValidationError('Password authentication requires 1-2 passwords.', this);
|
|
129
|
+
throw new core_1.ValidationError('InvalidPasswordCount', 'Password authentication requires 1-2 passwords.', this);
|
|
130
130
|
}
|
|
131
131
|
this.resource = new aws_elasticache_1.CfnUser(this, 'Resource', {
|
|
132
132
|
engine: this.engine,
|
|
@@ -151,4 +151,4 @@ let PasswordUser = (() => {
|
|
|
151
151
|
return PasswordUser = _classThis;
|
|
152
152
|
})();
|
|
153
153
|
exports.PasswordUser = PasswordUser;
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtdXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhc3N3b3JkLXVzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQXNEO0FBRXRELDJDQUFtRDtBQUNuRCw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRTFFLHFDQUFzQztBQUV0QywyQ0FBdUM7QUFFdkMsTUFBTSwrQkFBK0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7QUFtQjVGOzs7O0dBSUc7SUFFVSxZQUFZOzRCQUR4QixvQ0FBa0I7Ozs7c0JBQ2Usb0JBQVE7NEJBQWhCLFNBQVEsV0FBUTs7OztZQUExQyw2S0FrRkM7Ozs7O1FBakZDOztXQUVHO1FBQ0ksTUFBTSxDQUFVLHFCQUFxQixHQUFXLDBDQUEwQyxDQUFDO1FBRWxHOztXQUVHO1FBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFNO1lBQ2pDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLCtCQUErQixJQUFJLENBQUMsQ0FBQztTQUNyRjtRQUVEOztXQUVHO1FBQ2EsTUFBTSxDQUFjO1FBQ3BDOzs7O1dBSUc7UUFDYSxNQUFNLENBQVM7UUFDL0I7Ozs7V0FJRztRQUNhLFFBQVEsQ0FBVTtRQUNsQzs7V0FFRztRQUNhLFlBQVksQ0FBUztRQUNyQzs7OztXQUlHO1FBQ2EsT0FBTyxDQUFTO1FBQ2hDOzs7OztXQUtHO1FBQ2EsVUFBVSxDQUFTO1FBRWxCLFFBQVEsQ0FBVTtRQUVuQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1lBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzttREFsRFIsWUFBWTs7OztZQW9EckIsbUNBQW1DO1lBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxtQkFBVSxDQUFDLE1BQU0sQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztZQUVyRCxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxJQUFJLHNCQUFlLENBQUMsc0JBQXNCLEVBQUUsaURBQWlELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0csQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBTyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQzVDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0Isa0JBQWtCLEVBQUU7b0JBQ2xCLElBQUksRUFBRSxVQUFVO29CQUNoQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7aUJBQ3REO2dCQUNELGtCQUFrQixFQUFFLEtBQUs7Z0JBQ3pCLFNBQVMsRUFBRSxTQUFTO2FBQ3JCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUUzQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwrQkFBK0IsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQy9FOztZQWpGVSx1REFBWTs7Ozs7QUFBWixvQ0FBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmblVzZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0IHR5cGUgeyBTZWNyZXRWYWx1ZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVXNlckVuZ2luZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB0eXBlIHsgVXNlckJhc2VQcm9wcyB9IGZyb20gJy4vdXNlci1iYXNlJztcbmltcG9ydCB7IFVzZXJCYXNlIH0gZnJvbSAnLi91c2VyLWJhc2UnO1xuXG5jb25zdCBFTEFTVElDQUNIRV9QQVNTV09SRFVTRVJfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWVsYXN0aWNhY2hlLlBhc3N3b3JkVXNlcicpO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGFuIEVsYXN0aUNhY2hlIHVzZXIgd2l0aCBwYXNzd29yZCBhdXRoZW50aWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXNzd29yZFVzZXJQcm9wcyBleHRlbmRzIFVzZXJCYXNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2FtZSBhcyB1c2VySWQuXG4gICAqL1xuICByZWFkb25seSB1c2VyTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZHMgZm9yIHRoZSB1c2VyLlxuICAgKiBQYXNzd29yZCBhdXRoZW50aWNhdGlvbiByZXF1aXJlcyB1c2luZyAxLTIgcGFzc3dvcmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmRzOiBTZWNyZXRWYWx1ZVtdO1xufVxuXG4vKipcbiAqIERlZmluZSBhbiBFbGFzdGlDYWNoZSB1c2VyIHdpdGggcGFzc3dvcmQgYXV0aGVudGljYXRpb24uXG4gKlxuICogQHJlc291cmNlIEFXUzo6RWxhc3RpQ2FjaGU6OlVzZXJcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkVXNlciBleHRlbmRzIFVzZXJCYXNlIHtcbiAgLyoqXG4gICAqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnYXdzLWNkay1saWIuYXdzLWVsYXN0aWNhY2hlLlBhc3N3b3JkVXNlcic7XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBgUGFzc3dvcmRVc2VyYC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNQYXNzd29yZFVzZXIoeDogYW55KSA6IHggaXMgUGFzc3dvcmRVc2VyIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YoeCkgPT09ICdvYmplY3QnICYmIEVMQVNUSUNBQ0hFX1BBU1NXT1JEVVNFUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIGZvciB0aGUgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBJRC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBuYW1lLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYWNjZXNzIHN0cmluZyB0aGF0IGRlZmluZXMgdGhlIHVzZXIncyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY2Nlc3NTdHJpbmc6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgQVJOLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlckFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBzdGF0dXMuXG4gICAqIENhbiBiZSAnYWN0aXZlJywgJ21vZGlmeWluZycsICdkZWxldGluZycuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyU3RhdHVzOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogQ2ZuVXNlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGFzc3dvcmRVc2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IHByb3BzLmVuZ2luZSA/PyBVc2VyRW5naW5lLlZBTEtFWTtcbiAgICB0aGlzLnVzZXJJZCA9IHByb3BzLnVzZXJJZDtcbiAgICB0aGlzLnVzZXJOYW1lID0gcHJvcHMudXNlck5hbWUgPz8gcHJvcHMudXNlcklkO1xuICAgIHRoaXMuYWNjZXNzU3RyaW5nID0gcHJvcHMuYWNjZXNzQ29udHJvbC5hY2Nlc3NTdHJpbmc7XG5cbiAgICBpZiAocHJvcHMucGFzc3dvcmRzLmxlbmd0aCA8IDEgfHwgcHJvcHMucGFzc3dvcmRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0ludmFsaWRQYXNzd29yZENvdW50JywgJ1Bhc3N3b3JkIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVzIDEtMiBwYXNzd29yZHMuJywgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Vc2VyKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGVuZ2luZTogdGhpcy5lbmdpbmUsXG4gICAgICB1c2VySWQ6IHByb3BzLnVzZXJJZCxcbiAgICAgIHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lLFxuICAgICAgYWNjZXNzU3RyaW5nOiB0aGlzLmFjY2Vzc1N0cmluZyxcbiAgICAgIGF1dGhlbnRpY2F0aW9uTW9kZToge1xuICAgICAgICBUeXBlOiAncGFzc3dvcmQnLFxuICAgICAgICBQYXNzd29yZHM6IHByb3BzLnBhc3N3b3Jkcy5tYXAocCA9PiBwLnVuc2FmZVVud3JhcCgpKSxcbiAgICAgIH0sXG4gICAgICBub1Bhc3N3b3JkUmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgcGFzc3dvcmRzOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnVzZXJBcm4gPSB0aGlzLnJlc291cmNlLmF0dHJBcm47XG4gICAgdGhpcy51c2VyU3RhdHVzID0gdGhpcy5yZXNvdXJjZS5hdHRyU3RhdHVzO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIEVMQVNUSUNBQ0hFX1BBU1NXT1JEVVNFUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -51,7 +51,7 @@ var CacheEngine;
|
|
|
51
51
|
* Base class for ServerlessCache constructs
|
|
52
52
|
*/
|
|
53
53
|
class ServerlessCacheBase extends core_1.Resource {
|
|
54
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCacheBase", version: "2.
|
|
54
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCacheBase", version: "2.244.0-alpha.0" };
|
|
55
55
|
/**
|
|
56
56
|
* Collection of grant methods for this cache
|
|
57
57
|
*/
|
package/lib/serverless-cache.js
CHANGED
|
@@ -90,7 +90,7 @@ let ServerlessCache = (() => {
|
|
|
90
90
|
ServerlessCache = _classThis = _classDescriptor.value;
|
|
91
91
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
92
92
|
}
|
|
93
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCache", version: "2.
|
|
93
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCache", version: "2.244.0-alpha.0" };
|
|
94
94
|
/**
|
|
95
95
|
* Uniquely identifies this class.
|
|
96
96
|
*/
|
|
@@ -142,13 +142,13 @@ let ServerlessCache = (() => {
|
|
|
142
142
|
let arn;
|
|
143
143
|
const stack = core_1.Stack.of(scope);
|
|
144
144
|
if (attrs.serverlessCacheArn && attrs.serverlessCacheName) {
|
|
145
|
-
throw new core_1.ValidationError('Only one of serverlessCacheArn or serverlessCacheName can be provided.', scope);
|
|
145
|
+
throw new core_1.ValidationError('ConflictingCacheIdentifiers', 'Only one of serverlessCacheArn or serverlessCacheName can be provided.', scope);
|
|
146
146
|
}
|
|
147
147
|
if (attrs.serverlessCacheArn) {
|
|
148
148
|
arn = attrs.serverlessCacheArn;
|
|
149
149
|
const extractedServerlessCacheName = stack.splitArn(attrs.serverlessCacheArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
|
|
150
150
|
if (!extractedServerlessCacheName) {
|
|
151
|
-
throw new core_1.ValidationError('Unable to extract serverless cache name from ARN.', scope);
|
|
151
|
+
throw new core_1.ValidationError('InvalidCacheArn', 'Unable to extract serverless cache name from ARN.', scope);
|
|
152
152
|
}
|
|
153
153
|
name = extractedServerlessCacheName;
|
|
154
154
|
}
|
|
@@ -161,7 +161,7 @@ let ServerlessCache = (() => {
|
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
163
|
else {
|
|
164
|
-
throw new core_1.ValidationError('One of serverlessCacheName or serverlessCacheArn is required.', scope);
|
|
164
|
+
throw new core_1.ValidationError('MissingCacheIdentifier', 'One of serverlessCacheName or serverlessCacheArn is required.', scope);
|
|
165
165
|
}
|
|
166
166
|
class Import extends serverless_cache_base_1.ServerlessCacheBase {
|
|
167
167
|
engine = attrs.engine;
|
|
@@ -197,7 +197,7 @@ let ServerlessCache = (() => {
|
|
|
197
197
|
defaultPort = ec2.Port.tcp(11211);
|
|
198
198
|
break;
|
|
199
199
|
default:
|
|
200
|
-
throw new core_1.ValidationError(`Unsupported cache engine: ${this.engine}`, scope);
|
|
200
|
+
throw new core_1.ValidationError('UnsupportedCacheEngine', `Unsupported cache engine: ${this.engine}`, scope);
|
|
201
201
|
}
|
|
202
202
|
this.connections = new ec2.Connections({
|
|
203
203
|
securityGroups: this.securityGroups,
|
|
@@ -335,10 +335,10 @@ let ServerlessCache = (() => {
|
|
|
335
335
|
if (!description || core_1.Token.isUnresolved(description))
|
|
336
336
|
return;
|
|
337
337
|
if (description.length > 255) {
|
|
338
|
-
throw new core_1.ValidationError(`Description must not exceed 255 characters, currently has ${description.length}`, this);
|
|
338
|
+
throw new core_1.ValidationError('DescriptionTooLong', `Description must not exceed 255 characters, currently has ${description.length}`, this);
|
|
339
339
|
}
|
|
340
340
|
if (description.includes('<') || description.includes('>')) {
|
|
341
|
-
throw new core_1.ValidationError('Description must not contain < or > characters', this);
|
|
341
|
+
throw new core_1.ValidationError('InvalidDescriptionCharacters', 'Description must not contain < or > characters', this);
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
344
|
/**
|
|
@@ -351,16 +351,16 @@ let ServerlessCache = (() => {
|
|
|
351
351
|
return;
|
|
352
352
|
if (limits.dataStorageMinimumSize && !limits.dataStorageMinimumSize.isUnresolved() &&
|
|
353
353
|
(limits.dataStorageMinimumSize.toGibibytes() < DATA_STORAGE_MIN_GB || limits.dataStorageMinimumSize.toGibibytes() > DATA_STORAGE_MAX_GB)) {
|
|
354
|
-
throw new core_1.ValidationError('Data storage minimum must be between 1 and 5000 GB.', this);
|
|
354
|
+
throw new core_1.ValidationError('InvalidDataStorageMinimum', 'Data storage minimum must be between 1 and 5000 GB.', this);
|
|
355
355
|
}
|
|
356
356
|
if (limits.dataStorageMaximumSize && !limits.dataStorageMaximumSize.isUnresolved() &&
|
|
357
357
|
(limits.dataStorageMaximumSize.toGibibytes() < DATA_STORAGE_MIN_GB || limits.dataStorageMaximumSize.toGibibytes() > DATA_STORAGE_MAX_GB)) {
|
|
358
|
-
throw new core_1.ValidationError('Data storage maximum must be between 1 and 5000 GB.', this);
|
|
358
|
+
throw new core_1.ValidationError('InvalidDataStorageMaximum', 'Data storage maximum must be between 1 and 5000 GB.', this);
|
|
359
359
|
}
|
|
360
360
|
if (limits.dataStorageMinimumSize && limits.dataStorageMaximumSize &&
|
|
361
361
|
!limits.dataStorageMinimumSize.isUnresolved() && !limits.dataStorageMaximumSize.isUnresolved() &&
|
|
362
362
|
limits.dataStorageMinimumSize.toGibibytes() > limits.dataStorageMaximumSize.toGibibytes()) {
|
|
363
|
-
throw new core_1.ValidationError('Data storage minimum cannot be greater than maximum', this);
|
|
363
|
+
throw new core_1.ValidationError('InvalidDataStorageRange', 'Data storage minimum cannot be greater than maximum', this);
|
|
364
364
|
}
|
|
365
365
|
}
|
|
366
366
|
/**
|
|
@@ -373,16 +373,16 @@ let ServerlessCache = (() => {
|
|
|
373
373
|
return;
|
|
374
374
|
if (limits.requestRateLimitMinimum !== undefined && !core_1.Token.isUnresolved(limits.requestRateLimitMinimum) &&
|
|
375
375
|
(limits.requestRateLimitMinimum < REQUEST_RATE_MIN_ECPU || limits.requestRateLimitMinimum > REQUEST_RATE_MAX_ECPU)) {
|
|
376
|
-
throw new core_1.ValidationError('Request rate minimum must be between 1,000 and 15,000,000 ECPUs per second', this);
|
|
376
|
+
throw new core_1.ValidationError('InvalidRequestRateMinimum', 'Request rate minimum must be between 1,000 and 15,000,000 ECPUs per second', this);
|
|
377
377
|
}
|
|
378
378
|
if (limits.requestRateLimitMaximum !== undefined && !core_1.Token.isUnresolved(limits.requestRateLimitMaximum) &&
|
|
379
379
|
(limits.requestRateLimitMaximum < REQUEST_RATE_MIN_ECPU || limits.requestRateLimitMaximum > REQUEST_RATE_MAX_ECPU)) {
|
|
380
|
-
throw new core_1.ValidationError('Request rate maximum must be between 1,000 and 15,000,000 ECPUs per second', this);
|
|
380
|
+
throw new core_1.ValidationError('InvalidRequestRateMaximum', 'Request rate maximum must be between 1,000 and 15,000,000 ECPUs per second', this);
|
|
381
381
|
}
|
|
382
382
|
if (!core_1.Token.isUnresolved(limits.requestRateLimitMinimum) && !core_1.Token.isUnresolved(limits.requestRateLimitMaximum) &&
|
|
383
383
|
limits.requestRateLimitMinimum !== undefined && limits.requestRateLimitMaximum !== undefined &&
|
|
384
384
|
limits.requestRateLimitMinimum > limits.requestRateLimitMaximum) {
|
|
385
|
-
throw new core_1.ValidationError('Request rate minimum cannot be greater than maximum', this);
|
|
385
|
+
throw new core_1.ValidationError('InvalidRequestRateRange', 'Request rate minimum cannot be greater than maximum', this);
|
|
386
386
|
}
|
|
387
387
|
}
|
|
388
388
|
/**
|
|
@@ -394,22 +394,22 @@ let ServerlessCache = (() => {
|
|
|
394
394
|
if (!core_1.Token.isUnresolved(backup?.backupRetentionLimit) && backup?.backupRetentionLimit !== undefined) {
|
|
395
395
|
const limit = backup.backupRetentionLimit;
|
|
396
396
|
if (limit < 1 || limit > 35) {
|
|
397
|
-
throw new core_1.ValidationError('Backup retention limit must be between 1 and 35 days', this);
|
|
397
|
+
throw new core_1.ValidationError('InvalidBackupRetentionLimit', 'Backup retention limit must be between 1 and 35 days', this);
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
400
|
if (!core_1.Token.isUnresolved(backup?.backupNameBeforeDeletion) && backup?.backupNameBeforeDeletion !== undefined) {
|
|
401
401
|
const name = backup.backupNameBeforeDeletion;
|
|
402
402
|
if (!/^[a-zA-Z]/.test(name)) {
|
|
403
|
-
throw new core_1.ValidationError('Final backup name must begin with a letter', this);
|
|
403
|
+
throw new core_1.ValidationError('InvalidBackupNameStart', 'Final backup name must begin with a letter', this);
|
|
404
404
|
}
|
|
405
405
|
if (!/^[a-zA-Z0-9-]+$/.test(name)) {
|
|
406
|
-
throw new core_1.ValidationError('Final backup name must contain only ASCII letters, digits, and hyphens', this);
|
|
406
|
+
throw new core_1.ValidationError('InvalidBackupNameCharacters', 'Final backup name must contain only ASCII letters, digits, and hyphens', this);
|
|
407
407
|
}
|
|
408
408
|
if (name.endsWith('-')) {
|
|
409
|
-
throw new core_1.ValidationError('Final backup name must not end with a hyphen', this);
|
|
409
|
+
throw new core_1.ValidationError('InvalidBackupNameEnd', 'Final backup name must not end with a hyphen', this);
|
|
410
410
|
}
|
|
411
411
|
if (name.includes('--')) {
|
|
412
|
-
throw new core_1.ValidationError('Final backup name must not contain two consecutive hyphens', this);
|
|
412
|
+
throw new core_1.ValidationError('InvalidBackupNameConsecutiveHyphens', 'Final backup name must not contain two consecutive hyphens', this);
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
415
|
}
|
|
@@ -423,10 +423,10 @@ let ServerlessCache = (() => {
|
|
|
423
423
|
if (!userGroup)
|
|
424
424
|
return;
|
|
425
425
|
if (engine === serverless_cache_base_1.CacheEngine.MEMCACHED_LATEST) {
|
|
426
|
-
throw new core_1.ValidationError('User groups cannot be used with Memcached engines. Only Redis and Valkey engines support user groups.', this);
|
|
426
|
+
throw new core_1.ValidationError('MemcachedUserGroupNotSupported', 'User groups cannot be used with Memcached engines. Only Redis and Valkey engines support user groups.', this);
|
|
427
427
|
}
|
|
428
428
|
if (engine === serverless_cache_base_1.CacheEngine.REDIS_LATEST && userGroup.engine !== common_1.UserEngine.REDIS) {
|
|
429
|
-
throw new core_1.ValidationError('Redis cache can only use Redis user groups.', this);
|
|
429
|
+
throw new core_1.ValidationError('RedisUserGroupMismatch', 'Redis cache can only use Redis user groups.', this);
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
432
|
/**
|
|
@@ -509,7 +509,7 @@ let ServerlessCache = (() => {
|
|
|
509
509
|
const WILD_CARD = '*';
|
|
510
510
|
const [minuteExpression, hourExpression, dayExpression, monthExpression, weekDayExpression, yearExpression,] = schedule.expressionString.substr(5).slice(0, -1).split(' ');
|
|
511
511
|
if (dayExpression != WILD_CARD || monthExpression != WILD_CARD || yearExpression != WILD_CARD || weekDayExpression != '?') {
|
|
512
|
-
throw new core_1.ValidationError('For now, only daily backup time is available (supports just hour and minute). Day, month, year, and weekDay are not allowed', this);
|
|
512
|
+
throw new core_1.ValidationError('UnsupportedBackupSchedule', 'For now, only daily backup time is available (supports just hour and minute). Day, month, year, and weekDay are not allowed', this);
|
|
513
513
|
}
|
|
514
514
|
const hour = hourExpression == WILD_CARD ? '0' : hourExpression;
|
|
515
515
|
const minute = minuteExpression == WILD_CARD ? '0' : minuteExpression;
|
|
@@ -522,4 +522,4 @@ let ServerlessCache = (() => {
|
|
|
522
522
|
return ServerlessCache = _classThis;
|
|
523
523
|
})();
|
|
524
524
|
exports.ServerlessCache = ServerlessCache;
|
|
525
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVybGVzcy1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlcnZlcmxlc3MtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTJDO0FBRTNDLGlFQUFpRTtBQUlqRSwyQ0FBeUY7QUFDekYsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSxxQ0FBc0M7QUFFdEMsbUVBQTJFO0FBRzNFLE1BQU0sa0NBQWtDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBRWxHOztHQUVHO0FBQ0gsSUFBSyxlQUtKO0FBTEQsV0FBSyxlQUFlO0lBQ2xCOztPQUVHO0lBQ0gsbUNBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQUxJLGVBQWUsS0FBZixlQUFlLFFBS25CO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5Qjs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQ2pDOztHQUVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUM7QUFDbkM7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztBQWdNdkM7Ozs7R0FJRztJQUVVLGVBQWU7NEJBRDNCLG9DQUFrQjs7OztzQkFDa0IsMkNBQW1COytCQUEzQixTQUFRLFdBQW1COzs7O1lBQXhELDZLQTBjQzs7Ozs7UUF6Y0M7O1dBRUc7UUFDSSxNQUFNLENBQVUscUJBQXFCLEdBQVcsNkNBQTZDLENBQUM7UUFFckc7O1dBRUc7UUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBTTtZQUNwQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxrQ0FBa0MsSUFBSSxDQUFDLENBQUM7U0FDekY7UUFFRDs7Ozs7O1dBTUc7UUFDSSxNQUFNLENBQUMs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QkFBZ0IsQ0FBQztZQUV0RSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztTQUM5RDs7WUF6Y1UsdURBQWU7Ozs7O0FBQWYsMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgdHlwZSB7IENmblVzZXJHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljYWNoZSc7XG5pbXBvcnQgeyBDZm5TZXJ2ZXJsZXNzQ2FjaGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0IHR5cGUgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQXJuRm9ybWF0LCBTdGFjaywgTGF6eSwgVmFsaWRhdGlvbkVycm9yLCBOYW1lcywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBJU2VydmVybGVzc0NhY2hlIH0gZnJvbSAnLi9zZXJ2ZXJsZXNzLWNhY2hlLWJhc2UnO1xuaW1wb3J0IHsgU2VydmVybGVzc0NhY2hlQmFzZSwgQ2FjaGVFbmdpbmUgfSBmcm9tICcuL3NlcnZlcmxlc3MtY2FjaGUtYmFzZSc7XG5pbXBvcnQgdHlwZSB7IElVc2VyR3JvdXAgfSBmcm9tICcuL3VzZXItZ3JvdXAnO1xuXG5jb25zdCBFTEFTVElDQUNIRV9TRVJWRVJMRVNTQ0FDSEVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWVsYXN0aWNhY2hlLlNlcnZlcmxlc3NDYWNoZScpO1xuXG4vKipcbiAqIFVuaXQgdHlwZXMgZm9yIGRhdGEgc3RvcmFnZSB1c2FnZSBsaW1pdHNcbiAqL1xuZW51bSBEYXRhU3RvcmFnZVVuaXQge1xuICAvKipcbiAgICogR2lnYWJ5dGVzXG4gICAqL1xuICBHSUdBQllURVMgPSAnR0InLFxufVxuXG4vKipcbiAqIE1pbmltdW0gZGF0YSBzdG9yYWdlIHNpemUgaW4gR0IgZm9yIFNlcnZlcmxlc3NDYWNoZVxuICovXG5jb25zdCBEQVRBX1NUT1JBR0VfTUlOX0dCID0gMTtcbi8qKlxuICogTWF4aW11bSBkYXRhIHN0b3JhZ2Ugc2l6ZSBpbiBHQiBmb3IgU2VydmVybGVzc0NhY2hlXG4gKi9cbmNvbnN0IERBVEFfU1RPUkFHRV9NQVhfR0IgPSA1MDAwO1xuLyoqXG4gKiBNaW5pbXVtIHJlcXVlc3QgcmF0ZSBsaW1pdCBpbiBFQ1BVcyBwZXIgc2Vjb25kIGZvciBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuY29uc3QgUkVRVUVTVF9SQVRFX01JTl9FQ1BVID0gMTAwMDtcbi8qKlxuICogTWF4aW11bSByZXF1ZXN0IHJhdGUgbGltaXQgaW4gRUNQVXMgcGVyIHNlY29uZCBmb3IgU2VydmVybGVzc0NhY2hlXG4gKi9cbmNvbnN0IFJFUVVFU1RfUkFURV9NQVhfRUNQVSA9IDE1MDAwMDAwO1xuXG4vKipcbiAqIFVzYWdlIGxpbWl0cyBjb25maWd1cmF0aW9uIGZvciBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkge1xuICAvKipcbiAgICogTWluaW11bSBkYXRhIHN0b3JhZ2Ugc2l6ZSAoMSBHQilcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtaW5pbXVtIGxpbWl0XG4gICAqL1xuICByZWFkb25seSBkYXRhU3RvcmFnZU1pbmltdW1TaXplPzogU2l6ZTtcbiAgLyoqXG4gICAqIE1heGltdW0gZGF0YSBzdG9yYWdlIHNpemUgKDUwMDAgR0IpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWF4aW11bSBsaW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZT86IFNpemU7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHJlcXVlc3QgcmF0ZSBsaW1pdCAoMTAwMCBFQ1BVcyBwZXIgc2Vjb25kKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RSYXRlTGltaXRNaW5pbXVtPzogbnVtYmVyO1xuICAvKipcbiAgICogTWF4aW11bSByZXF1ZXN0IHJhdGUgbGltaXQgKDE1MDAwMDAwIEVDUFVzIHBlciBzZWNvbmQpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWF4aW11bSBsaW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdFJhdGVMaW1pdE1heGltdW0/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQmFja3VwIGNvbmZpZ3VyYXRpb24gZm9yIFNlcnZlcmxlc3NDYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhY2t1cFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEF1dG9tYXRlZCBkYWlseSBiYWNrdXAgVVRDIHRpbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBhdXRvbWF0ZWQgYmFja3Vwc1xuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwVGltZT86IGV2ZW50cy5TY2hlZHVsZTtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBkYXlzIHRvIHJldGFpbiBiYWNrdXBzICgxLTM1KVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJhY2t1cHMgYXJlIG5vdCByZXRhaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwUmV0ZW50aW9uTGltaXQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBOYW1lIGZvciB0aGUgZmluYWwgYmFja3VwIHRha2VuIGJlZm9yZSBkZWxldGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGZpbmFsIGJhY2t1cFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwTmFtZUJlZm9yZURlbGV0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQVJOcyBvZiBiYWNrdXBzIGZyb20gd2hpY2ggdG8gcmVzdG9yZSBkYXRhIGludG8gdGhlIG5ldyBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENyZWF0ZSBhIG5ldyBjYWNoZSB3aXRoIG5vIGV4aXN0aW5nIGRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cEFybnNUb1Jlc3RvcmU/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIFNlcnZlcmxlc3NDYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlcmxlc3NDYWNoZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBjYWNoZSBlbmdpbmUgY29tYmluZWQgd2l0aCB0aGUgdmVyc2lvblxuICAgKiBFbnVtIG9wdGlvbnM6IFZBTEtFWV9ERUZBVUxULCBWQUxLRVlfNywgVkFMS0VZXzgsIFJFRElTX0RFRkFVTFQsIE1FTUNBQ0hFRF9ERUZBVUxUXG4gICAqIFRoZSBkZWZhdWx0IG9wdGlvbnMgYnJpbmcgdGhlIGxhdGVzdCB2ZXJzaW9ucyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHdoZW4gbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBlbmdpbmUgd291bGQgYmUgVmFsa2V5LCBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUgKFZBTEtFWV9ERUZBVUxUKVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogQ2FjaGVFbmdpbmU7XG4gIC8qKlxuICAgKiBOYW1lIGZvciB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lIGJ5IFJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVXNhZ2UgbGltaXRzIGZvciB0aGUgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB1c2FnZSBsaW1pdHNcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlVXNhZ2VMaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHk7XG4gIC8qKlxuICAgKiBCYWNrdXAgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJhY2t1cHMgY29uZmlndXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwPzogQmFja3VwU2V0dGluZ3M7XG4gIC8qKlxuICAgKiBLTVMga2V5IGZvciBlbmNyeXB0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VydmljZSBtYW5hZ2VkIGVuY3J5cHRpb24gKEFXUyBvd25lZCBLTVMga2V5KVxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRvIHBsYWNlIHRoZSBjYWNoZSBpblxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcbiAgLyoqXG4gICAqIFdoaWNoIHN1Ym5ldHMgdG8gcGxhY2UgdGhlIGNhY2hlIGluXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUHJpdmF0ZSBzdWJuZXRzIHdpdGggZWdyZXNzXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwcyBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSBuZXcgc2VjdXJpdHkgZ3JvdXAgaXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcbiAgLyoqXG4gICAqIFVzZXIgZ3JvdXAgZm9yIGFjY2VzcyBjb250cm9sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gdXNlciBncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwPzogSVVzZXJHcm91cDtcbn1cblxuLyoqXG4gKiBBdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIHNwZWNpZmllZCB3aGVuIGltcG9ydGluZyBhIFNlcnZlcmxlc3NDYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlcmxlc3NDYWNoZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIGNhY2hlIGVuZ2luZSB1c2VkIGJ5IHRoaXMgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbmdpbmUgdHlwZSBpcyB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBDYWNoZUVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIE9uZSBvZiBgc2VydmVybGVzc0NhY2hlTmFtZWAgb3IgYHNlcnZlcmxlc3NDYWNoZUFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHNlcnZlcmxlc3NDYWNoZUFyblxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogT25lIG9mIGBzZXJ2ZXJsZXNzQ2FjaGVOYW1lYCBvciBgc2VydmVybGVzc0NhY2hlQXJuYCBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gc2VydmVybGVzc0NhY2hlTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTnMgb2YgYmFja3VwcyByZXN0b3JlZCBpbiB0aGUgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBiYWNrdXBzIGFyZSB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBBcm5zVG9SZXN0b3JlPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGZvciBlbmNyeXB0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5jcnlwdGlvbiBrZXkgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRoaXMgY2FjaGUgaXMgZGVwbG95ZWQgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBWUEMgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG4gIC8qKlxuICAgKiBUaGUgc3VibmV0cyB0aGlzIGNhY2hlIGlzIGRlcGxveWVkIGluXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc3VibmV0cyBhcmUgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0cz86IGVjMi5JU3VibmV0W107XG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXBzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc2VjdXJpdHkgZ3JvdXBzIGFyZSB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuICAvKipcbiAgICogVGhlIHVzZXIgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VyIGdyb3VwIGlzIHVua25vd25cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cD86IElVc2VyR3JvdXA7XG59XG5cbi8qKlxuICogQSBzZXJ2ZXJsZXNzIEVsYXN0aUNhY2hlIGNhY2hlXG4gKlxuICogQHJlc291cmNlIEFXUzo6RWxhc3RpQ2FjaGU6OlNlcnZlcmxlc3NDYWNoZVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU2VydmVybGVzc0NhY2hlIGV4dGVuZHMgU2VydmVybGVzc0NhY2hlQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ2F3cy1jZGstbGliLmF3cy1lbGFzdGljYWNoZS5TZXJ2ZXJsZXNzQ2FjaGUnO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgYFNlcnZlcmxlc3NDYWNoZWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNTZXJ2ZXJsZXNzQ2FjaGUoeDogYW55KTogeCBpcyBTZXJ2ZXJsZXNzQ2FjaGUge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiAoeCkgPT09ICdvYmplY3QnICYmIEVMQVNUSUNBQ0hFX1NFUlZFUkxFU1NDQUNIRV9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgc2VydmVybGVzcyBjYWNoZSBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gc2VydmVybGVzc0NhY2hlTmFtZSBUaGUgbmFtZSBvZiB0aGUgZXhpc3Rpbmcgc2VydmVybGVzcyBjYWNoZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VydmVybGVzc0NhY2hlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBzZXJ2ZXJsZXNzQ2FjaGVOYW1lOiBzdHJpbmcpOiBJU2VydmVybGVzc0NhY2hlIHtcbiAgICByZXR1cm4gU2VydmVybGVzc0NhY2hlLmZyb21TZXJ2ZXJsZXNzQ2FjaGVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBzZXJ2ZXJsZXNzQ2FjaGVOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzZXJ2ZXJsZXNzIGNhY2hlIGJ5IEFSTlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIHNlcnZlcmxlc3NDYWNoZUFybiBUaGUgQVJOIG9mIHRoZSBleGlzdGluZyBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJ2ZXJsZXNzQ2FjaGVBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgc2VydmVybGVzc0NhY2hlQXJuOiBzdHJpbmcpOiBJU2VydmVybGVzc0NhY2hlIHtcbiAgICByZXR1cm4gU2VydmVybGVzc0NhY2hlLmZyb21TZXJ2ZXJsZXNzQ2FjaGVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBzZXJ2ZXJsZXNzQ2FjaGVBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHNlcnZlcmxlc3MgY2FjaGUgdXNpbmcgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIGF0dHJzIEEgYFNlcnZlcmxlc3NDYWNoZUF0dHJpYnV0ZXNgIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VydmVybGVzc0NhY2hlQXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogU2VydmVybGVzc0NhY2hlQXR0cmlidXRlcyk6IElTZXJ2ZXJsZXNzQ2FjaGUge1xuICAgIGxldCBuYW1lOiBzdHJpbmc7XG4gICAgbGV0IGFybjogc3RyaW5nO1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gICAgaWYgKGF0dHJzLnNlcnZlcmxlc3NDYWNoZUFybiAmJiBhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdPbmx5IG9uZSBvZiBzZXJ2ZXJsZXNzQ2FjaGVBcm4gb3Igc2VydmVybGVzc0NhY2hlTmFtZSBjYW4gYmUgcHJvdmlkZWQuJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVBcm4pIHtcbiAgICAgIGFybiA9IGF0dHJzLnNlcnZlcmxlc3NDYWNoZUFybjtcbiAgICAgIGNvbnN0IGV4dHJhY3RlZFNlcnZlcmxlc3NDYWNoZU5hbWUgPSBzdGFjay5zcGxpdEFybihhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWU7XG4gICAgICBpZiAoIWV4dHJhY3RlZFNlcnZlcmxlc3NDYWNoZU5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVW5hYmxlIHRvIGV4dHJhY3Qgc2VydmVybGVzcyBjYWNoZSBuYW1lIGZyb20gQVJOLicsIHNjb3BlKTtcbiAgICAgIH1cbiAgICAgIG5hbWUgPSBleHRyYWN0ZWRTZXJ2ZXJsZXNzQ2FjaGVOYW1lO1xuICAgIH0gZWxzZSBpZiAoYXR0cnMuc2VydmVybGVzc0NhY2hlTmFtZSkge1xuICAgICAgbmFtZSA9IGF0dHJzLnNlcnZlcmxlc3NDYWNoZU5hbWU7XG4gICAgICBhcm4gPSBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnZWxhc3RpY2FjaGUnLFxuICAgICAgICByZXNvdXJjZTogJ3NlcnZlcmxlc3NjYWNoZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogYXR0cnMuc2VydmVybGVzc0NhY2hlTmFtZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdPbmUgb2Ygc2VydmVybGVzc0NhY2hlTmFtZSBvciBzZXJ2ZXJsZXNzQ2FjaGVBcm4gaXMgcmVxdWlyZWQuJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFNlcnZlcmxlc3NDYWNoZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGVuZ2luZSA9IGF0dHJzLmVuZ2luZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlQXJuOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYmFja3VwQXJuc1RvUmVzdG9yZSA9IGF0dHJzLmJhY2t1cEFybnNUb1Jlc3RvcmU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkga21zS2V5ID0gYXR0cnMua21zS2V5O1xuICAgICAgcHVibGljIHJlYWRvbmx5IHZwYyA9IGF0dHJzLnZwYztcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXRzID0gYXR0cnMuc3VibmV0cztcbiAgICAgIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwcyA9IGF0dHJzLnNlY3VyaXR5R3JvdXBzO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cCA9IGF0dHJzLnVzZXJHcm91cDtcblxuICAgICAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBlYzIuQ29ubmVjdGlvbnM7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHNlcnZlcmxlc3NDYWNoZUFybjogc3RyaW5nLCBzZXJ2ZXJsZXNzQ2FjaGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAgICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVBcm4gPSBzZXJ2ZXJsZXNzQ2FjaGVBcm47XG4gICAgICAgIHRoaXMuc2VydmVybGVzc0NhY2hlTmFtZSA9IHNlcnZlcmxlc3NDYWNoZU5hbWU7XG5cbiAgICAgICAgaWYgKHRoaXMuZW5naW5lKSB7XG4gICAgICAgICAgbGV0IGRlZmF1bHRQb3J0OiBlYzIuUG9ydDtcbiAgICAgICAgICBzd2l0Y2ggKHRoaXMuZW5naW5lKSB7XG4gICAgICAgICAgICBjYXNlIENhY2hlRW5naW5lLlZBTEtFWV9MQVRFU1Q6XG4gICAgICAgICAgICBjYXNlIENhY2hlRW5naW5lLlZBTEtFWV83OlxuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5WQUxLRVlfODpcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuUkVESVNfTEFURVNUOlxuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5SRURJU183OlxuICAgICAgICAgICAgICAvLyBEb2N1bWVudCBzaG93aW5nIHRoZSBkZWZhdWx0IHBvcnRcbiAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVsYXN0aUNhY2hlL2xhdGVzdC9kZy9zZXQtdXAuaHRtbCNlbGFzdGljYWNoZS1pbnN0YWxsLWdyYW50LWFjY2Vzcy1WUE5cbiAgICAgICAgICAgICAgZGVmYXVsdFBvcnQgPSBlYzIuUG9ydC50Y3AoNjM3OSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5NRU1DQUNIRURfTEFURVNUOlxuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5NRU1DQUNIRURfMV82OlxuICAgICAgICAgICAgICAvLyBEb2N1bWVudCBzaG93aW5nIHRoZSBkZWZhdWx0IHBvcnRcbiAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVsYXN0aUNhY2hlL2xhdGVzdC9kZy9zZXQtdXAuaHRtbCNlbGFzdGljYWNoZS1pbnN0YWxsLWdyYW50LWFjY2Vzcy1WUE5cbiAgICAgICAgICAgICAgZGVmYXVsdFBvcnQgPSBlYzIuUG9ydC50Y3AoMTEyMTEpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYFVuc3VwcG9ydGVkIGNhY2hlIGVuZ2luZTogJHt0aGlzLmVuZ2luZX1gLCBzY29wZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuc2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgICBkZWZhdWx0UG9ydDogZGVmYXVsdFBvcnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuc2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChhcm4sIG5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IENhY2hlRW5naW5lO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYmFja3VwQXJuc1RvUmVzdG9yZT86IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIHB1YmxpYyByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldHM/OiBlYzIuSVN1Ym5ldFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cD86IElVc2VyR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZHBvaW50IGFkZHJlc3Mgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUVuZHBvaW50QWRkcmVzczogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZHBvaW50IHBvcnQgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUVuZHBvaW50UG9ydDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlYWRlciBlbmRwb2ludCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVSZWFkZXJFbmRwb2ludEFkZHJlc3M6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZWFkZXIgZW5kcG9pbnQgcG9ydCBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlUmVhZGVyRW5kcG9pbnRQb3J0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICogQ2FuIGJlICdDUkVBVElORycsICdBVkFJTEFCTEUnLCAnREVMRVRJTkcnLCAnQ1JFQVRFLUZBSUxFRCcsICdNT0RJRllJTkcnXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVTdGF0dXM6IHN0cmluZztcblxuICAvKipcbiAgICogQWNjZXNzIHRvIG5ldHdvcmsgY29ubmVjdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZXJ2ZXJsZXNzQ2FjaGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge30pO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IHByb3BzLmVuZ2luZSA/PyBDYWNoZUVuZ2luZS5WQUxLRVlfTEFURVNUO1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlTmFtZSA9IHByb3BzLnNlcnZlcmxlc3NDYWNoZU5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiA0MCB9KSxcbiAgICB9KTtcbiAgICB0aGlzLmttc0tleSA9IHByb3BzLmttc0tleTtcbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYztcbiAgICB0aGlzLnVzZXJHcm91cCA9IHByb3BzLnVzZXJHcm91cDtcblxuICAgIHRoaXMudmFsaWRhdGVEZXNjcmlwdGlvbihwcm9wcy5kZXNjcmlwdGlvbik7XG4gICAgdGhpcy52YWxpZGF0ZURhdGFTdG9yYWdlTGltaXRzKHByb3BzLmNhY2hlVXNhZ2VMaW1pdHMpO1xuICAgIHRoaXMudmFsaWRhdGVSZXF1ZXN0UmF0ZUxpbWl0cyhwcm9wcy5jYWNoZVVzYWdlTGltaXRzKTtcbiAgICB0aGlzLnZhbGlkYXRlQmFja3VwU2V0dGluZ3MocHJvcHMuYmFja3VwKTtcbiAgICB0aGlzLnZhbGlkYXRlVXNlckdyb3VwQ29tcGF0aWJpbGl0eSh0aGlzLmVuZ2luZSwgdGhpcy51c2VyR3JvdXApO1xuXG4gICAgY29uc3Qgc3VibmV0Q29uZmlnID0gdGhpcy5jb25maWd1cmVTdWJuZXRzKHByb3BzKTtcbiAgICBjb25zdCBzdWJuZXRJZHMgPSBzdWJuZXRDb25maWcuc3VibmV0SWRzO1xuICAgIHRoaXMuc3VibmV0cyA9IHN1Ym5ldENvbmZpZy5zdWJuZXRzO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cENvbmZpZyA9IHRoaXMuY29uZmlndXJlU2VjdXJpdHlHcm91cHMocHJvcHMpO1xuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBJZHMgPSBzZWN1cml0eUdyb3VwQ29uZmlnLnNlY3VyaXR5R3JvdXBJZHM7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwcyA9IHNlY3VyaXR5R3JvdXBDb25maWcuc2VjdXJpdHlHcm91cHM7XG5cbiAgICBjb25zdCBbZW5naW5lLCB2ZXJzaW9uXSA9IHRoaXMuZW5naW5lLnNwbGl0KCdfJyk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5TZXJ2ZXJsZXNzQ2FjaGUodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZW5naW5lOiBlbmdpbmUsXG4gICAgICBtYWpvckVuZ2luZVZlcnNpb246IHZlcnNpb24sXG4gICAgICBzZXJ2ZXJsZXNzQ2FjaGVOYW1lOiB0aGlzLnNlcnZlcmxlc3NDYWNoZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjYWNoZVVzYWdlTGltaXRzOiB0aGlzLnJlbmRlckNhY2hlVXNhZ2VMaW1pdHMocHJvcHMuY2FjaGVVc2FnZUxpbWl0cyksXG4gICAgICBkYWlseVNuYXBzaG90VGltZTogcHJvcHMuYmFja3VwPy5iYWNrdXBUaW1lID8gdGhpcy5mb3JtYXRCYWNrdXBUaW1lKHByb3BzLmJhY2t1cC5iYWNrdXBUaW1lKSA6IHVuZGVmaW5lZCxcbiAgICAgIHNuYXBzaG90UmV0ZW50aW9uTGltaXQ6IHByb3BzLmJhY2t1cD8uYmFja3VwUmV0ZW50aW9uTGltaXQsXG4gICAgICBmaW5hbFNuYXBzaG90TmFtZTogcHJvcHMuYmFja3VwPy5iYWNrdXBOYW1lQmVmb3JlRGVsZXRpb24sXG4gICAgICBzbmFwc2hvdEFybnNUb1Jlc3RvcmU6IHByb3BzLmJhY2t1cD8uYmFja3VwQXJuc1RvUmVzdG9yZSxcbiAgICAgIGttc0tleUlkOiBwcm9wcy5rbXNLZXk/LmtleUlkLFxuICAgICAgc3VibmV0SWRzOiBzdWJuZXRJZHMsXG4gICAgICBzZWN1cml0eUdyb3VwSWRzOiBzZWN1cml0eUdyb3VwSWRzLFxuICAgICAgdXNlckdyb3VwSWQ6IHByb3BzLnVzZXJHcm91cD8udXNlckdyb3VwTmFtZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy51c2VyR3JvdXApIHtcbiAgICAgIGNvbnN0IHVzZXJHcm91cFJlc291cmNlID0gcHJvcHMudXNlckdyb3VwLm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIENmblVzZXJHcm91cDtcbiAgICAgIHJlc291cmNlLmFkZERlcGVuZGVuY3kodXNlckdyb3VwUmVzb3VyY2UpO1xuICAgIH1cblxuICAgIHRoaXMuYmFja3VwQXJuc1RvUmVzdG9yZSA9IHJlc291cmNlLnNuYXBzaG90QXJuc1RvUmVzdG9yZTtcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZUFybiA9IHJlc291cmNlLmF0dHJBcm47XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVFbmRwb2ludEFkZHJlc3MgPSByZXNvdXJjZS5hdHRyRW5kcG9pbnRBZGRyZXNzO1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlRW5kcG9pbnRQb3J0ID0gcmVzb3VyY2UuYXR0ckVuZHBvaW50UG9ydDtcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZVJlYWRlckVuZHBvaW50QWRkcmVzcyA9IHJlc291cmNlLmF0dHJSZWFkZXJFbmRwb2ludEFkZHJlc3M7XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVSZWFkZXJFbmRwb2ludFBvcnQgPSByZXNvdXJjZS5hdHRyUmVhZGVyRW5kcG9pbnRQb3J0O1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlU3RhdHVzID0gcmVzb3VyY2UuYXR0clN0YXR1cztcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgZWMyLkNvbm5lY3Rpb25zKHtcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiB0aGlzLnNlY3VyaXR5R3JvdXBzLFxuICAgICAgZGVmYXVsdFBvcnQ6IGVjMi5Qb3J0LnRjcChUb2tlbi5hc051bWJlcih0aGlzLnNlcnZlcmxlc3NDYWNoZUVuZHBvaW50UG9ydCkpLFxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIEVMQVNUSUNBQ0hFX1NFUlZFUkxFU1NDQUNIRV9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgZGVzY3JpcHRpb24gbWVldHMgQVdTIHJlcXVpcmVtZW50c1xuICAgKlxuICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIHRvIHZhbGlkYXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGVzY3JpcHRpb24oZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWRlc2NyaXB0aW9uIHx8IFRva2VuLmlzVW5yZXNvbHZlZChkZXNjcmlwdGlvbikpIHJldHVybjtcblxuICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPiAyNTUpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYERlc2NyaXB0aW9uIG11c3Qgbm90IGV4Y2VlZCAyNTUgY2hhcmFjdGVycywgY3VycmVudGx5IGhhcyAke2Rlc2NyaXB0aW9uLmxlbmd0aH1gLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRpb24uaW5jbHVkZXMoJzwnKSB8fCBkZXNjcmlwdGlvbi5pbmNsdWRlcygnPicpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdEZXNjcmlwdGlvbiBtdXN0IG5vdCBjb250YWluIDwgb3IgPiBjaGFyYWN0ZXJzJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGRhdGEgc3RvcmFnZSBzaXplIGxpbWl0c1xuICAgKlxuICAgKiBAcGFyYW0gbGltaXRzIFRoZSB1c2FnZSBsaW1pdHMgY29udGFpbmluZyBkYXRhIHN0b3JhZ2Ugc2V0dGluZ3NcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVEYXRhU3RvcmFnZUxpbWl0cyhsaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbWl0cykgcmV0dXJuO1xuXG4gICAgaWYgKGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplICYmICFsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS5pc1VucmVzb2x2ZWQoKSAmJlxuICAgICAgKGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgPCBEQVRBX1NUT1JBR0VfTUlOX0dCIHx8IGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgPiBEQVRBX1NUT1JBR0VfTUFYX0dCKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRGF0YSBzdG9yYWdlIG1pbmltdW0gbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDUwMDAgR0IuJywgdGhpcyk7XG4gICAgfVxuICAgIGlmIChsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZSAmJiAhbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUuaXNVbnJlc29sdmVkKCkgJiZcbiAgICAgIChsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS50b0dpYmlieXRlcygpIDwgREFUQV9TVE9SQUdFX01JTl9HQiB8fCBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS50b0dpYmlieXRlcygpID4gREFUQV9TVE9SQUdFX01BWF9HQikpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0RhdGEgc3RvcmFnZSBtYXhpbXVtIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA1MDAwIEdCLicsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZSAmJiBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZSAmJlxuICAgICAgIWxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLmlzVW5yZXNvbHZlZCgpICYmICFsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS5pc1VucmVzb2x2ZWQoKSAmJlxuICAgICAgbGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUudG9HaWJpYnl0ZXMoKSA+IGxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplLnRvR2liaWJ5dGVzKCkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0RhdGEgc3RvcmFnZSBtaW5pbXVtIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gbWF4aW11bScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSByZXF1ZXN0IHJhdGUgbGltaXRzXG4gICAqXG4gICAqIEBwYXJhbSBsaW1pdHMgVGhlIHVzYWdlIGxpbWl0cyBjb250YWluaW5nIHJlcXVlc3QgcmF0ZSBzZXR0aW5nc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlcXVlc3RSYXRlTGltaXRzKGxpbWl0cz86IENhY2hlVXNhZ2VMaW1pdHNQcm9wZXJ0eSk6IHZvaWQge1xuICAgIGlmICghbGltaXRzKSByZXR1cm47XG5cbiAgICBpZiAobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtICE9PSB1bmRlZmluZWQgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0pICYmXG4gICAgICAobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtIDwgUkVRVUVTVF9SQVRFX01JTl9FQ1BVIHx8IGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSA+IFJFUVVFU1RfUkFURV9NQVhfRUNQVSkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlcXVlc3QgcmF0ZSBtaW5pbXVtIG11c3QgYmUgYmV0d2VlbiAxLDAwMCBhbmQgMTUsMDAwLDAwMCBFQ1BVcyBwZXIgc2Vjb25kJywgdGhpcyk7XG4gICAgfVxuICAgIGlmIChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0gIT09IHVuZGVmaW5lZCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSkgJiZcbiAgICAgIChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0gPCBSRVFVRVNUX1JBVEVfTUlOX0VDUFUgfHwgbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtID4gUkVRVUVTVF9SQVRFX01BWF9FQ1BVKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVxdWVzdCByYXRlIG1heGltdW0gbXVzdCBiZSBiZXR3ZWVuIDEsMDAwIGFuZCAxNSwwMDAsMDAwIEVDUFVzIHBlciBzZWNvbmQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0pICYmICFUb2tlbi5pc1VucmVzb2x2ZWQobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtKSAmJlxuICAgICAgbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtICE9PSB1bmRlZmluZWQgJiYgbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSA+IGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVxdWVzdCByYXRlIG1pbmltdW0gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBtYXhpbXVtJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGJhY2t1cCBzZXR0aW5ncyBtZWV0IEFXUyByZXF1aXJlbWVudHNcbiAgICpcbiAgICogQHBhcmFtIGJhY2t1cCBUaGUgYmFja3VwIHNldHRpbmdzIHRvIHZhbGlkYXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQmFja3VwU2V0dGluZ3MoYmFja3VwPzogQmFja3VwU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChiYWNrdXA/LmJhY2t1cFJldGVudGlvbkxpbWl0KSAmJiBiYWNrdXA/LmJhY2t1cFJldGVudGlvbkxpbWl0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGxpbWl0ID0gYmFja3VwLmJhY2t1cFJldGVudGlvbkxpbWl0O1xuICAgICAgaWYgKGxpbWl0IDwgMSB8fCBsaW1pdCA+IDM1KSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0JhY2t1cCByZXRlbnRpb24gbGltaXQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDM1IGRheXMnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChiYWNrdXA/LmJhY2t1cE5hbWVCZWZvcmVEZWxldGlvbikgJiYgYmFja3VwPy5iYWNrdXBOYW1lQmVmb3JlRGVsZXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbmFtZSA9IGJhY2t1cC5iYWNrdXBOYW1lQmVmb3JlRGVsZXRpb247XG5cbiAgICAgIGlmICghL15bYS16QS1aXS8udGVzdChuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdGaW5hbCBiYWNrdXAgbmFtZSBtdXN0IGJlZ2luIHdpdGggYSBsZXR0ZXInLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEvXlthLXpBLVowLTktXSskLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0ZpbmFsIGJhY2t1cCBuYW1lIG11c3QgY29udGFpbiBvbmx5IEFTQ0lJIGxldHRlcnMsIGRpZ2l0cywgYW5kIGh5cGhlbnMnLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUuZW5kc1dpdGgoJy0nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdGaW5hbCBiYWNrdXAgbmFtZSBtdXN0IG5vdCBlbmQgd2l0aCBhIGh5cGhlbicsIHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZS5pbmNsdWRlcygnLS0nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdGaW5hbCBiYWNrdXAgbmFtZSBtdXN0IG5vdCBjb250YWluIHR3byBjb25zZWN1dGl2ZSBoeXBoZW5zJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHVzZXIgZ3JvdXAgY29tcGF0aWJpbGl0eSB3aXRoIGNhY2hlIGVuZ2luZVxuICAgKlxuICAgKiBAcGFyYW0gZW5naW5lIFRoZSBjYWNoZSBlbmdpbmVcbiAgICogQHBhcmFtIHVzZXJHcm91cCBUaGUgdXNlciBncm91cCB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVVzZXJHcm91cENvbXBhdGliaWxpdHkoZW5naW5lOiBDYWNoZUVuZ2luZSwgdXNlckdyb3VwPzogSVVzZXJHcm91cCk6IHZvaWQge1xuICAgIGlmICghdXNlckdyb3VwKSByZXR1cm47XG5cbiAgICBpZiAoZW5naW5lID09PSBDYWNoZUVuZ2luZS5NRU1DQUNIRURfTEFURVNUKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVc2VyIGdyb3VwcyBjYW5ub3QgYmUgdXNlZCB3aXRoIE1lbWNhY2hlZCBlbmdpbmVzLiBPbmx5IFJlZGlzIGFuZCBWYWxrZXkgZW5naW5lcyBzdXBwb3J0IHVzZXIgZ3JvdXBzLicsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChlbmdpbmUgPT09IENhY2hlRW5naW5lLlJFRElTX0xBVEVTVCAmJiB1c2VyR3JvdXAuZW5naW5lICE9PSBVc2VyRW5naW5lLlJFRElTKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZWRpcyBjYWNoZSBjYW4gb25seSB1c2UgUmVkaXMgdXNlciBncm91cHMuJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBjYWNoZSB1c2FnZSBsaW1pdHMgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBsaW1pdHMgVGhlIHVzYWdlIGxpbWl0cyB0byByZW5kZXJcbiAgICogQHJldHVybnMgQ2xvdWRGb3JtYXRpb24tY29tcGF0aWJsZSB1c2FnZSBsaW1pdHMgb2JqZWN0IG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJDYWNoZVVzYWdlTGltaXRzKGxpbWl0cz86IENhY2hlVXNhZ2VMaW1pdHNQcm9wZXJ0eSk6IGFueSB7XG4gICAgaWYgKCFsaW1pdHMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjYWNoZVVzYWdlTGltaXRzOiBhbnkgPSB7fTtcblxuICAgIGlmIChsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZSAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhY2hlVXNhZ2VMaW1pdHMuZGF0YVN0b3JhZ2UgPSB7XG4gICAgICAgIHVuaXQ6IERhdGFTdG9yYWdlVW5pdC5HSUdBQllURVMsXG4gICAgICAgIC4uLihsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHsgbWluaW11bTogbGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUudG9HaWJpYnl0ZXMoKSB9KSxcbiAgICAgICAgLi4uKGxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplICE9PSB1bmRlZmluZWQgJiYgeyBtYXhpbXVtOiBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS50b0dpYmlieXRlcygpIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtICE9PSB1bmRlZmluZWQgfHwgbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhY2hlVXNhZ2VMaW1pdHMuZWNwdVBlclNlY29uZCA9IHtcbiAgICAgICAgLi4uKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkICYmIHsgbWluaW11bTogbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtIH0pLFxuICAgICAgICAuLi4obGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtICE9PSB1bmRlZmluZWQgJiYgeyBtYXhpbXVtOiBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0gfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhjYWNoZVVzYWdlTGltaXRzKS5sZW5ndGggPiAwID8gY2FjaGVVc2FnZUxpbWl0cyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgc3VibmV0cyBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgU2VydmVybGVzc0NhY2hlIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgc3VibmV0IElEcyBhbmQgc3VibmV0IG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlU3VibmV0cyhwcm9wczogU2VydmVybGVzc0NhY2hlUHJvcHMpOiB7IHN1Ym5ldElkczogc3RyaW5nW10gfCB1bmRlZmluZWQ7IHN1Ym5ldHM6IGVjMi5JU3VibmV0W10gfCB1bmRlZmluZWQgfSB7XG4gICAgbGV0IHNlbGVjdGVkU3VibmV0cztcbiAgICBpZiAocHJvcHMudnBjU3VibmV0cykge1xuICAgICAgc2VsZWN0ZWRTdWJuZXRzID0gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocHJvcHMudnBjU3VibmV0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdGVkU3VibmV0cyA9IHByb3BzLnZwYy5zZWxlY3RTdWJuZXRzKHtcbiAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzdWJuZXRJZHM6IHNlbGVjdGVkU3VibmV0cy5zdWJuZXRJZHMubGVuZ3RoID4gMCA/IHNlbGVjdGVkU3VibmV0cy5zdWJuZXRJZHMgOiB1bmRlZmluZWQsXG4gICAgICBzdWJuZXRzOiBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0cy5sZW5ndGggPiAwID8gc2VsZWN0ZWRTdWJuZXRzLnN1Ym5ldHMgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgc2VjdXJpdHkgZ3JvdXBzIGZvciB0aGUgY2FjaGVcbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFRoZSBTZXJ2ZXJsZXNzQ2FjaGUgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBzZWN1cml0eSBncm91cCBJRHMgYW5kIHNlY3VyaXR5IGdyb3VwIG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlU2VjdXJpdHlHcm91cHMocHJvcHM6IFNlcnZlcmxlc3NDYWNoZVByb3BzKTogeyBzZWN1cml0eUdyb3VwSWRzOiBzdHJpbmdbXTsgc2VjdXJpdHlHcm91cHM6IGVjMi5JU2VjdXJpdHlHcm91cFtdIH0ge1xuICAgIGlmIChwcm9wcy5zZWN1cml0eUdyb3VwcyAmJiBwcm9wcy5zZWN1cml0eUdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBwcm9wcy5zZWN1cml0eUdyb3Vwcy5tYXAoc2cgPT4gc2cuc2VjdXJpdHlHcm91cElkKSxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3U2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCAnU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgJHt0aGlzLm5vZGUuaWR9IGNhY2hlLmAsXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBbbmV3U2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWRdLFxuICAgICAgICBzZWN1cml0eUdyb3VwczogW25ld1NlY3VyaXR5R3JvdXBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IHNjaGVkdWxlIHRvIEhIOk1NIGZvcm1hdCBmb3IgZGFpbHkgYmFja3Vwc1xuICAgKlxuICAgKiBAcGFyYW0gc2NoZWR1bGUgVGhlIHNjaGVkdWxlIHRvIGZvcm1hdFxuICAgKiBAcmV0dXJucyBUaW1lIHN0cmluZyBpbiBISDpNTSBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0QmFja3VwVGltZShzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlKTogc3RyaW5nIHtcbiAgICBjb25zdCBXSUxEX0NBUkQgPSAnKic7XG4gICAgY29uc3QgW1xuICAgICAgbWludXRlRXhwcmVzc2lvbiwgaG91ckV4cHJlc3Npb24sXG4gICAgICBkYXlFeHByZXNzaW9uLCBtb250aEV4cHJlc3Npb24sXG4gICAgICB3ZWVrRGF5RXhwcmVzc2lvbiwgeWVhckV4cHJlc3Npb24sXG4gICAgXSA9IHNjaGVkdWxlLmV4cHJlc3Npb25TdHJpbmcuc3Vic3RyKDUpLnNsaWNlKDAsIC0xKS5zcGxpdCgnICcpO1xuXG4gICAgaWYgKGRheUV4cHJlc3Npb24gIT0gV0lMRF9DQVJEIHx8IG1vbnRoRXhwcmVzc2lvbiAhPSBXSUxEX0NBUkQgfHwgeWVhckV4cHJlc3Npb24gIT0gV0lMRF9DQVJEIHx8IHdlZWtEYXlFeHByZXNzaW9uICE9ICc/Jykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRm9yIG5vdywgb25seSBkYWlseSBiYWNrdXAgdGltZSBpcyBhdmFpbGFibGUgKHN1cHBvcnRzIGp1c3QgaG91ciBhbmQgbWludXRlKS4gRGF5LCBtb250aCwgeWVhciwgYW5kIHdlZWtEYXkgYXJlIG5vdCBhbGxvd2VkJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaG91ciA9IGhvdXJFeHByZXNzaW9uID09IFdJTERfQ0FSRCA/ICcwJyA6IGhvdXJFeHByZXNzaW9uO1xuICAgIGNvbnN0IG1pbnV0ZSA9IG1pbnV0ZUV4cHJlc3Npb24gPT0gV0lMRF9DQVJEID8gJzAnIDogbWludXRlRXhwcmVzc2lvbjtcblxuICAgIHJldHVybiBgJHtob3VyLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfVxufVxuIl19
|
|
525
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVybGVzcy1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlcnZlcmxlc3MtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTJDO0FBRTNDLGlFQUFpRTtBQUlqRSwyQ0FBeUY7QUFDekYsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSxxQ0FBc0M7QUFFdEMsbUVBQTJFO0FBRzNFLE1BQU0sa0NBQWtDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBRWxHOztHQUVHO0FBQ0gsSUFBSyxlQUtKO0FBTEQsV0FBSyxlQUFlO0lBQ2xCOztPQUVHO0lBQ0gsbUNBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQUxJLGVBQWUsS0FBZixlQUFlLFFBS25CO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5Qjs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQ2pDOztHQUVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUM7QUFDbkM7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztBQWdNdkM7Ozs7R0FJRztJQUVVLGVBQWU7NEJBRDNCLG9DQUFrQjs7OztzQkFDa0IsMkNBQW1COytCQUEzQixTQUFRLFdBQW1COzs7O1lBQXhELDZLQTBjQzs7Ozs7UUF6Y0M7O1dBRUc7UUFDSSxNQUFNLENBQVUscUJBQXFCLEdBQVcsNkNBQTZDLENBQUM7UUFFckc7O1dBRUc7UUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBTTtZQUNwQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxrQ0FBa0MsSUFBSSxDQUFDLENBQUM7U0FDekY7UUFFRDs7Ozs7O1dBTUc7UUFDSSxNQUFNLENBQUMs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QUUsQ0FBQztnQkFDMUgsTUFBTSxJQUFJLHNCQUFlLENBQUMsMkJBQTJCLEVBQUUsNkhBQTZILEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUwsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLGNBQWMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1lBQ2hFLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUV0RSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztTQUM5RDs7WUF6Y1UsdURBQWU7Ozs7O0FBQWYsMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgdHlwZSB7IENmblVzZXJHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljYWNoZSc7XG5pbXBvcnQgeyBDZm5TZXJ2ZXJsZXNzQ2FjaGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0IHR5cGUgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQXJuRm9ybWF0LCBTdGFjaywgTGF6eSwgVmFsaWRhdGlvbkVycm9yLCBOYW1lcywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBJU2VydmVybGVzc0NhY2hlIH0gZnJvbSAnLi9zZXJ2ZXJsZXNzLWNhY2hlLWJhc2UnO1xuaW1wb3J0IHsgU2VydmVybGVzc0NhY2hlQmFzZSwgQ2FjaGVFbmdpbmUgfSBmcm9tICcuL3NlcnZlcmxlc3MtY2FjaGUtYmFzZSc7XG5pbXBvcnQgdHlwZSB7IElVc2VyR3JvdXAgfSBmcm9tICcuL3VzZXItZ3JvdXAnO1xuXG5jb25zdCBFTEFTVElDQUNIRV9TRVJWRVJMRVNTQ0FDSEVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWVsYXN0aWNhY2hlLlNlcnZlcmxlc3NDYWNoZScpO1xuXG4vKipcbiAqIFVuaXQgdHlwZXMgZm9yIGRhdGEgc3RvcmFnZSB1c2FnZSBsaW1pdHNcbiAqL1xuZW51bSBEYXRhU3RvcmFnZVVuaXQge1xuICAvKipcbiAgICogR2lnYWJ5dGVzXG4gICAqL1xuICBHSUdBQllURVMgPSAnR0InLFxufVxuXG4vKipcbiAqIE1pbmltdW0gZGF0YSBzdG9yYWdlIHNpemUgaW4gR0IgZm9yIFNlcnZlcmxlc3NDYWNoZVxuICovXG5jb25zdCBEQVRBX1NUT1JBR0VfTUlOX0dCID0gMTtcbi8qKlxuICogTWF4aW11bSBkYXRhIHN0b3JhZ2Ugc2l6ZSBpbiBHQiBmb3IgU2VydmVybGVzc0NhY2hlXG4gKi9cbmNvbnN0IERBVEFfU1RPUkFHRV9NQVhfR0IgPSA1MDAwO1xuLyoqXG4gKiBNaW5pbXVtIHJlcXVlc3QgcmF0ZSBsaW1pdCBpbiBFQ1BVcyBwZXIgc2Vjb25kIGZvciBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuY29uc3QgUkVRVUVTVF9SQVRFX01JTl9FQ1BVID0gMTAwMDtcbi8qKlxuICogTWF4aW11bSByZXF1ZXN0IHJhdGUgbGltaXQgaW4gRUNQVXMgcGVyIHNlY29uZCBmb3IgU2VydmVybGVzc0NhY2hlXG4gKi9cbmNvbnN0IFJFUVVFU1RfUkFURV9NQVhfRUNQVSA9IDE1MDAwMDAwO1xuXG4vKipcbiAqIFVzYWdlIGxpbWl0cyBjb25maWd1cmF0aW9uIGZvciBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkge1xuICAvKipcbiAgICogTWluaW11bSBkYXRhIHN0b3JhZ2Ugc2l6ZSAoMSBHQilcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtaW5pbXVtIGxpbWl0XG4gICAqL1xuICByZWFkb25seSBkYXRhU3RvcmFnZU1pbmltdW1TaXplPzogU2l6ZTtcbiAgLyoqXG4gICAqIE1heGltdW0gZGF0YSBzdG9yYWdlIHNpemUgKDUwMDAgR0IpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWF4aW11bSBsaW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZT86IFNpemU7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHJlcXVlc3QgcmF0ZSBsaW1pdCAoMTAwMCBFQ1BVcyBwZXIgc2Vjb25kKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RSYXRlTGltaXRNaW5pbXVtPzogbnVtYmVyO1xuICAvKipcbiAgICogTWF4aW11bSByZXF1ZXN0IHJhdGUgbGltaXQgKDE1MDAwMDAwIEVDUFVzIHBlciBzZWNvbmQpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWF4aW11bSBsaW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdFJhdGVMaW1pdE1heGltdW0/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQmFja3VwIGNvbmZpZ3VyYXRpb24gZm9yIFNlcnZlcmxlc3NDYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhY2t1cFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEF1dG9tYXRlZCBkYWlseSBiYWNrdXAgVVRDIHRpbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBhdXRvbWF0ZWQgYmFja3Vwc1xuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwVGltZT86IGV2ZW50cy5TY2hlZHVsZTtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBkYXlzIHRvIHJldGFpbiBiYWNrdXBzICgxLTM1KVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJhY2t1cHMgYXJlIG5vdCByZXRhaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwUmV0ZW50aW9uTGltaXQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBOYW1lIGZvciB0aGUgZmluYWwgYmFja3VwIHRha2VuIGJlZm9yZSBkZWxldGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGZpbmFsIGJhY2t1cFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwTmFtZUJlZm9yZURlbGV0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQVJOcyBvZiBiYWNrdXBzIGZyb20gd2hpY2ggdG8gcmVzdG9yZSBkYXRhIGludG8gdGhlIG5ldyBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENyZWF0ZSBhIG5ldyBjYWNoZSB3aXRoIG5vIGV4aXN0aW5nIGRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cEFybnNUb1Jlc3RvcmU/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIFNlcnZlcmxlc3NDYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlcmxlc3NDYWNoZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBjYWNoZSBlbmdpbmUgY29tYmluZWQgd2l0aCB0aGUgdmVyc2lvblxuICAgKiBFbnVtIG9wdGlvbnM6IFZBTEtFWV9ERUZBVUxULCBWQUxLRVlfNywgVkFMS0VZXzgsIFJFRElTX0RFRkFVTFQsIE1FTUNBQ0hFRF9ERUZBVUxUXG4gICAqIFRoZSBkZWZhdWx0IG9wdGlvbnMgYnJpbmcgdGhlIGxhdGVzdCB2ZXJzaW9ucyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHdoZW4gbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBlbmdpbmUgd291bGQgYmUgVmFsa2V5LCBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUgKFZBTEtFWV9ERUZBVUxUKVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogQ2FjaGVFbmdpbmU7XG4gIC8qKlxuICAgKiBOYW1lIGZvciB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lIGJ5IFJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVXNhZ2UgbGltaXRzIGZvciB0aGUgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB1c2FnZSBsaW1pdHNcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlVXNhZ2VMaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHk7XG4gIC8qKlxuICAgKiBCYWNrdXAgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJhY2t1cHMgY29uZmlndXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwPzogQmFja3VwU2V0dGluZ3M7XG4gIC8qKlxuICAgKiBLTVMga2V5IGZvciBlbmNyeXB0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VydmljZSBtYW5hZ2VkIGVuY3J5cHRpb24gKEFXUyBvd25lZCBLTVMga2V5KVxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRvIHBsYWNlIHRoZSBjYWNoZSBpblxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcbiAgLyoqXG4gICAqIFdoaWNoIHN1Ym5ldHMgdG8gcGxhY2UgdGhlIGNhY2hlIGluXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUHJpdmF0ZSBzdWJuZXRzIHdpdGggZWdyZXNzXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwcyBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSBuZXcgc2VjdXJpdHkgZ3JvdXAgaXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcbiAgLyoqXG4gICAqIFVzZXIgZ3JvdXAgZm9yIGFjY2VzcyBjb250cm9sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gdXNlciBncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwPzogSVVzZXJHcm91cDtcbn1cblxuLyoqXG4gKiBBdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIHNwZWNpZmllZCB3aGVuIGltcG9ydGluZyBhIFNlcnZlcmxlc3NDYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlcmxlc3NDYWNoZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIGNhY2hlIGVuZ2luZSB1c2VkIGJ5IHRoaXMgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbmdpbmUgdHlwZSBpcyB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBDYWNoZUVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIE9uZSBvZiBgc2VydmVybGVzc0NhY2hlTmFtZWAgb3IgYHNlcnZlcmxlc3NDYWNoZUFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHNlcnZlcmxlc3NDYWNoZUFyblxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogT25lIG9mIGBzZXJ2ZXJsZXNzQ2FjaGVOYW1lYCBvciBgc2VydmVybGVzc0NhY2hlQXJuYCBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gc2VydmVybGVzc0NhY2hlTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTnMgb2YgYmFja3VwcyByZXN0b3JlZCBpbiB0aGUgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBiYWNrdXBzIGFyZSB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBBcm5zVG9SZXN0b3JlPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGZvciBlbmNyeXB0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5jcnlwdGlvbiBrZXkgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRoaXMgY2FjaGUgaXMgZGVwbG95ZWQgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBWUEMgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG4gIC8qKlxuICAgKiBUaGUgc3VibmV0cyB0aGlzIGNhY2hlIGlzIGRlcGxveWVkIGluXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc3VibmV0cyBhcmUgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0cz86IGVjMi5JU3VibmV0W107XG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXBzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc2VjdXJpdHkgZ3JvdXBzIGFyZSB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuICAvKipcbiAgICogVGhlIHVzZXIgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VyIGdyb3VwIGlzIHVua25vd25cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cD86IElVc2VyR3JvdXA7XG59XG5cbi8qKlxuICogQSBzZXJ2ZXJsZXNzIEVsYXN0aUNhY2hlIGNhY2hlXG4gKlxuICogQHJlc291cmNlIEFXUzo6RWxhc3RpQ2FjaGU6OlNlcnZlcmxlc3NDYWNoZVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU2VydmVybGVzc0NhY2hlIGV4dGVuZHMgU2VydmVybGVzc0NhY2hlQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ2F3cy1jZGstbGliLmF3cy1lbGFzdGljYWNoZS5TZXJ2ZXJsZXNzQ2FjaGUnO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgYFNlcnZlcmxlc3NDYWNoZWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNTZXJ2ZXJsZXNzQ2FjaGUoeDogYW55KTogeCBpcyBTZXJ2ZXJsZXNzQ2FjaGUge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiAoeCkgPT09ICdvYmplY3QnICYmIEVMQVNUSUNBQ0hFX1NFUlZFUkxFU1NDQUNIRV9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgc2VydmVybGVzcyBjYWNoZSBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gc2VydmVybGVzc0NhY2hlTmFtZSBUaGUgbmFtZSBvZiB0aGUgZXhpc3Rpbmcgc2VydmVybGVzcyBjYWNoZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VydmVybGVzc0NhY2hlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBzZXJ2ZXJsZXNzQ2FjaGVOYW1lOiBzdHJpbmcpOiBJU2VydmVybGVzc0NhY2hlIHtcbiAgICByZXR1cm4gU2VydmVybGVzc0NhY2hlLmZyb21TZXJ2ZXJsZXNzQ2FjaGVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBzZXJ2ZXJsZXNzQ2FjaGVOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzZXJ2ZXJsZXNzIGNhY2hlIGJ5IEFSTlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIHNlcnZlcmxlc3NDYWNoZUFybiBUaGUgQVJOIG9mIHRoZSBleGlzdGluZyBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJ2ZXJsZXNzQ2FjaGVBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgc2VydmVybGVzc0NhY2hlQXJuOiBzdHJpbmcpOiBJU2VydmVybGVzc0NhY2hlIHtcbiAgICByZXR1cm4gU2VydmVybGVzc0NhY2hlLmZyb21TZXJ2ZXJsZXNzQ2FjaGVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBzZXJ2ZXJsZXNzQ2FjaGVBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHNlcnZlcmxlc3MgY2FjaGUgdXNpbmcgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIGF0dHJzIEEgYFNlcnZlcmxlc3NDYWNoZUF0dHJpYnV0ZXNgIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VydmVybGVzc0NhY2hlQXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogU2VydmVybGVzc0NhY2hlQXR0cmlidXRlcyk6IElTZXJ2ZXJsZXNzQ2FjaGUge1xuICAgIGxldCBuYW1lOiBzdHJpbmc7XG4gICAgbGV0IGFybjogc3RyaW5nO1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gICAgaWYgKGF0dHJzLnNlcnZlcmxlc3NDYWNoZUFybiAmJiBhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdDb25mbGljdGluZ0NhY2hlSWRlbnRpZmllcnMnLCAnT25seSBvbmUgb2Ygc2VydmVybGVzc0NhY2hlQXJuIG9yIHNlcnZlcmxlc3NDYWNoZU5hbWUgY2FuIGJlIHByb3ZpZGVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMuc2VydmVybGVzc0NhY2hlQXJuKSB7XG4gICAgICBhcm4gPSBhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVBcm47XG4gICAgICBjb25zdCBleHRyYWN0ZWRTZXJ2ZXJsZXNzQ2FjaGVOYW1lID0gc3RhY2suc3BsaXRBcm4oYXR0cnMuc2VydmVybGVzc0NhY2hlQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuICAgICAgaWYgKCFleHRyYWN0ZWRTZXJ2ZXJsZXNzQ2FjaGVOYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0ludmFsaWRDYWNoZUFybicsICdVbmFibGUgdG8gZXh0cmFjdCBzZXJ2ZXJsZXNzIGNhY2hlIG5hbWUgZnJvbSBBUk4uJywgc2NvcGUpO1xuICAgICAgfVxuICAgICAgbmFtZSA9IGV4dHJhY3RlZFNlcnZlcmxlc3NDYWNoZU5hbWU7XG4gICAgfSBlbHNlIGlmIChhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lKSB7XG4gICAgICBuYW1lID0gYXR0cnMuc2VydmVybGVzc0NhY2hlTmFtZTtcbiAgICAgIGFybiA9IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdlbGFzdGljYWNoZScsXG4gICAgICAgIHJlc291cmNlOiAnc2VydmVybGVzc2NhY2hlJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ01pc3NpbmdDYWNoZUlkZW50aWZpZXInLCAnT25lIG9mIHNlcnZlcmxlc3NDYWNoZU5hbWUgb3Igc2VydmVybGVzc0NhY2hlQXJuIGlzIHJlcXVpcmVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBTZXJ2ZXJsZXNzQ2FjaGVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmdpbmUgPSBhdHRycy5lbmdpbmU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlTmFtZTogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUFybjogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGJhY2t1cEFybnNUb1Jlc3RvcmUgPSBhdHRycy5iYWNrdXBBcm5zVG9SZXN0b3JlO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGttc0tleSA9IGF0dHJzLmttc0tleTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB2cGMgPSBhdHRycy52cGM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0cyA9IGF0dHJzLnN1Ym5ldHM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHMgPSBhdHRycy5zZWN1cml0eUdyb3VwcztcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXAgPSBhdHRycy51c2VyR3JvdXA7XG5cbiAgICAgIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuXG4gICAgICBjb25zdHJ1Y3RvcihzZXJ2ZXJsZXNzQ2FjaGVBcm46IHN0cmluZywgc2VydmVybGVzc0NhY2hlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgICAgIHRoaXMuc2VydmVybGVzc0NhY2hlQXJuID0gc2VydmVybGVzc0NhY2hlQXJuO1xuICAgICAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZU5hbWUgPSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lO1xuXG4gICAgICAgIGlmICh0aGlzLmVuZ2luZSkge1xuICAgICAgICAgIGxldCBkZWZhdWx0UG9ydDogZWMyLlBvcnQ7XG4gICAgICAgICAgc3dpdGNoICh0aGlzLmVuZ2luZSkge1xuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5WQUxLRVlfTEFURVNUOlxuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5WQUxLRVlfNzpcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuVkFMS0VZXzg6XG4gICAgICAgICAgICBjYXNlIENhY2hlRW5naW5lLlJFRElTX0xBVEVTVDpcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuUkVESVNfNzpcbiAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgc2hvd2luZyB0aGUgZGVmYXVsdCBwb3J0XG4gICAgICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FbGFzdGlDYWNoZS9sYXRlc3QvZGcvc2V0LXVwLmh0bWwjZWxhc3RpY2FjaGUtaW5zdGFsbC1ncmFudC1hY2Nlc3MtVlBOXG4gICAgICAgICAgICAgIGRlZmF1bHRQb3J0ID0gZWMyLlBvcnQudGNwKDYzNzkpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuTUVNQ0FDSEVEX0xBVEVTVDpcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuTUVNQ0FDSEVEXzFfNjpcbiAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgc2hvd2luZyB0aGUgZGVmYXVsdCBwb3J0XG4gICAgICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FbGFzdGlDYWNoZS9sYXRlc3QvZGcvc2V0LXVwLmh0bWwjZWxhc3RpY2FjaGUtaW5zdGFsbC1ncmFudC1hY2Nlc3MtVlBOXG4gICAgICAgICAgICAgIGRlZmF1bHRQb3J0ID0gZWMyLlBvcnQudGNwKDExMjExKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVbnN1cHBvcnRlZENhY2hlRW5naW5lJywgYFVuc3VwcG9ydGVkIGNhY2hlIGVuZ2luZTogJHt0aGlzLmVuZ2luZX1gLCBzY29wZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuc2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgICBkZWZhdWx0UG9ydDogZGVmYXVsdFBvcnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuc2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChhcm4sIG5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IENhY2hlRW5naW5lO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYmFja3VwQXJuc1RvUmVzdG9yZT86IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIHB1YmxpYyByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldHM/OiBlYzIuSVN1Ym5ldFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cD86IElVc2VyR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZHBvaW50IGFkZHJlc3Mgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUVuZHBvaW50QWRkcmVzczogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZHBvaW50IHBvcnQgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUVuZHBvaW50UG9ydDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlYWRlciBlbmRwb2ludCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVSZWFkZXJFbmRwb2ludEFkZHJlc3M6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZWFkZXIgZW5kcG9pbnQgcG9ydCBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlUmVhZGVyRW5kcG9pbnRQb3J0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICogQ2FuIGJlICdDUkVBVElORycsICdBVkFJTEFCTEUnLCAnREVMRVRJTkcnLCAnQ1JFQVRFLUZBSUxFRCcsICdNT0RJRllJTkcnXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVTdGF0dXM6IHN0cmluZztcblxuICAvKipcbiAgICogQWNjZXNzIHRvIG5ldHdvcmsgY29ubmVjdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZXJ2ZXJsZXNzQ2FjaGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge30pO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IHByb3BzLmVuZ2luZSA/PyBDYWNoZUVuZ2luZS5WQUxLRVlfTEFURVNUO1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlTmFtZSA9IHByb3BzLnNlcnZlcmxlc3NDYWNoZU5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiA0MCB9KSxcbiAgICB9KTtcbiAgICB0aGlzLmttc0tleSA9IHByb3BzLmttc0tleTtcbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYztcbiAgICB0aGlzLnVzZXJHcm91cCA9IHByb3BzLnVzZXJHcm91cDtcblxuICAgIHRoaXMudmFsaWRhdGVEZXNjcmlwdGlvbihwcm9wcy5kZXNjcmlwdGlvbik7XG4gICAgdGhpcy52YWxpZGF0ZURhdGFTdG9yYWdlTGltaXRzKHByb3BzLmNhY2hlVXNhZ2VMaW1pdHMpO1xuICAgIHRoaXMudmFsaWRhdGVSZXF1ZXN0UmF0ZUxpbWl0cyhwcm9wcy5jYWNoZVVzYWdlTGltaXRzKTtcbiAgICB0aGlzLnZhbGlkYXRlQmFja3VwU2V0dGluZ3MocHJvcHMuYmFja3VwKTtcbiAgICB0aGlzLnZhbGlkYXRlVXNlckdyb3VwQ29tcGF0aWJpbGl0eSh0aGlzLmVuZ2luZSwgdGhpcy51c2VyR3JvdXApO1xuXG4gICAgY29uc3Qgc3VibmV0Q29uZmlnID0gdGhpcy5jb25maWd1cmVTdWJuZXRzKHByb3BzKTtcbiAgICBjb25zdCBzdWJuZXRJZHMgPSBzdWJuZXRDb25maWcuc3VibmV0SWRzO1xuICAgIHRoaXMuc3VibmV0cyA9IHN1Ym5ldENvbmZpZy5zdWJuZXRzO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cENvbmZpZyA9IHRoaXMuY29uZmlndXJlU2VjdXJpdHlHcm91cHMocHJvcHMpO1xuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBJZHMgPSBzZWN1cml0eUdyb3VwQ29uZmlnLnNlY3VyaXR5R3JvdXBJZHM7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwcyA9IHNlY3VyaXR5R3JvdXBDb25maWcuc2VjdXJpdHlHcm91cHM7XG5cbiAgICBjb25zdCBbZW5naW5lLCB2ZXJzaW9uXSA9IHRoaXMuZW5naW5lLnNwbGl0KCdfJyk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5TZXJ2ZXJsZXNzQ2FjaGUodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZW5naW5lOiBlbmdpbmUsXG4gICAgICBtYWpvckVuZ2luZVZlcnNpb246IHZlcnNpb24sXG4gICAgICBzZXJ2ZXJsZXNzQ2FjaGVOYW1lOiB0aGlzLnNlcnZlcmxlc3NDYWNoZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjYWNoZVVzYWdlTGltaXRzOiB0aGlzLnJlbmRlckNhY2hlVXNhZ2VMaW1pdHMocHJvcHMuY2FjaGVVc2FnZUxpbWl0cyksXG4gICAgICBkYWlseVNuYXBzaG90VGltZTogcHJvcHMuYmFja3VwPy5iYWNrdXBUaW1lID8gdGhpcy5mb3JtYXRCYWNrdXBUaW1lKHByb3BzLmJhY2t1cC5iYWNrdXBUaW1lKSA6IHVuZGVmaW5lZCxcbiAgICAgIHNuYXBzaG90UmV0ZW50aW9uTGltaXQ6IHByb3BzLmJhY2t1cD8uYmFja3VwUmV0ZW50aW9uTGltaXQsXG4gICAgICBmaW5hbFNuYXBzaG90TmFtZTogcHJvcHMuYmFja3VwPy5iYWNrdXBOYW1lQmVmb3JlRGVsZXRpb24sXG4gICAgICBzbmFwc2hvdEFybnNUb1Jlc3RvcmU6IHByb3BzLmJhY2t1cD8uYmFja3VwQXJuc1RvUmVzdG9yZSxcbiAgICAgIGttc0tleUlkOiBwcm9wcy5rbXNLZXk/LmtleUlkLFxuICAgICAgc3VibmV0SWRzOiBzdWJuZXRJZHMsXG4gICAgICBzZWN1cml0eUdyb3VwSWRzOiBzZWN1cml0eUdyb3VwSWRzLFxuICAgICAgdXNlckdyb3VwSWQ6IHByb3BzLnVzZXJHcm91cD8udXNlckdyb3VwTmFtZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy51c2VyR3JvdXApIHtcbiAgICAgIGNvbnN0IHVzZXJHcm91cFJlc291cmNlID0gcHJvcHMudXNlckdyb3VwLm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIENmblVzZXJHcm91cDtcbiAgICAgIHJlc291cmNlLmFkZERlcGVuZGVuY3kodXNlckdyb3VwUmVzb3VyY2UpO1xuICAgIH1cblxuICAgIHRoaXMuYmFja3VwQXJuc1RvUmVzdG9yZSA9IHJlc291cmNlLnNuYXBzaG90QXJuc1RvUmVzdG9yZTtcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZUFybiA9IHJlc291cmNlLmF0dHJBcm47XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVFbmRwb2ludEFkZHJlc3MgPSByZXNvdXJjZS5hdHRyRW5kcG9pbnRBZGRyZXNzO1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlRW5kcG9pbnRQb3J0ID0gcmVzb3VyY2UuYXR0ckVuZHBvaW50UG9ydDtcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZVJlYWRlckVuZHBvaW50QWRkcmVzcyA9IHJlc291cmNlLmF0dHJSZWFkZXJFbmRwb2ludEFkZHJlc3M7XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVSZWFkZXJFbmRwb2ludFBvcnQgPSByZXNvdXJjZS5hdHRyUmVhZGVyRW5kcG9pbnRQb3J0O1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlU3RhdHVzID0gcmVzb3VyY2UuYXR0clN0YXR1cztcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgZWMyLkNvbm5lY3Rpb25zKHtcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiB0aGlzLnNlY3VyaXR5R3JvdXBzLFxuICAgICAgZGVmYXVsdFBvcnQ6IGVjMi5Qb3J0LnRjcChUb2tlbi5hc051bWJlcih0aGlzLnNlcnZlcmxlc3NDYWNoZUVuZHBvaW50UG9ydCkpLFxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIEVMQVNUSUNBQ0hFX1NFUlZFUkxFU1NDQUNIRV9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgZGVzY3JpcHRpb24gbWVldHMgQVdTIHJlcXVpcmVtZW50c1xuICAgKlxuICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIHRvIHZhbGlkYXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGVzY3JpcHRpb24oZGVzY3JpcHRpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWRlc2NyaXB0aW9uIHx8IFRva2VuLmlzVW5yZXNvbHZlZChkZXNjcmlwdGlvbikpIHJldHVybjtcblxuICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPiAyNTUpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0Rlc2NyaXB0aW9uVG9vTG9uZycsIGBEZXNjcmlwdGlvbiBtdXN0IG5vdCBleGNlZWQgMjU1IGNoYXJhY3RlcnMsIGN1cnJlbnRseSBoYXMgJHtkZXNjcmlwdGlvbi5sZW5ndGh9YCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0aW9uLmluY2x1ZGVzKCc8JykgfHwgZGVzY3JpcHRpb24uaW5jbHVkZXMoJz4nKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZERlc2NyaXB0aW9uQ2hhcmFjdGVycycsICdEZXNjcmlwdGlvbiBtdXN0IG5vdCBjb250YWluIDwgb3IgPiBjaGFyYWN0ZXJzJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGRhdGEgc3RvcmFnZSBzaXplIGxpbWl0c1xuICAgKlxuICAgKiBAcGFyYW0gbGltaXRzIFRoZSB1c2FnZSBsaW1pdHMgY29udGFpbmluZyBkYXRhIHN0b3JhZ2Ugc2V0dGluZ3NcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVEYXRhU3RvcmFnZUxpbWl0cyhsaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbWl0cykgcmV0dXJuO1xuXG4gICAgaWYgKGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplICYmICFsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS5pc1VucmVzb2x2ZWQoKSAmJlxuICAgICAgKGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgPCBEQVRBX1NUT1JBR0VfTUlOX0dCIHx8IGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgPiBEQVRBX1NUT1JBR0VfTUFYX0dCKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZERhdGFTdG9yYWdlTWluaW11bScsICdEYXRhIHN0b3JhZ2UgbWluaW11bSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNTAwMCBHQi4nLCB0aGlzKTtcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplICYmICFsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS5pc1VucmVzb2x2ZWQoKSAmJlxuICAgICAgKGxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplLnRvR2liaWJ5dGVzKCkgPCBEQVRBX1NUT1JBR0VfTUlOX0dCIHx8IGxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplLnRvR2liaWJ5dGVzKCkgPiBEQVRBX1NUT1JBR0VfTUFYX0dCKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZERhdGFTdG9yYWdlTWF4aW11bScsICdEYXRhIHN0b3JhZ2UgbWF4aW11bSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNTAwMCBHQi4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAobGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUgJiYgbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUgJiZcbiAgICAgICFsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS5pc1VucmVzb2x2ZWQoKSAmJiAhbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUuaXNVbnJlc29sdmVkKCkgJiZcbiAgICAgIGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgPiBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS50b0dpYmlieXRlcygpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkRGF0YVN0b3JhZ2VSYW5nZScsICdEYXRhIHN0b3JhZ2UgbWluaW11bSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIG1heGltdW0nLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgcmVxdWVzdCByYXRlIGxpbWl0c1xuICAgKlxuICAgKiBAcGFyYW0gbGltaXRzIFRoZSB1c2FnZSBsaW1pdHMgY29udGFpbmluZyByZXF1ZXN0IHJhdGUgc2V0dGluZ3NcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVSZXF1ZXN0UmF0ZUxpbWl0cyhsaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbWl0cykgcmV0dXJuO1xuXG4gICAgaWYgKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkICYmICFUb2tlbi5pc1VucmVzb2x2ZWQobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtKSAmJlxuICAgICAgKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSA8IFJFUVVFU1RfUkFURV9NSU5fRUNQVSB8fCBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0gPiBSRVFVRVNUX1JBVEVfTUFYX0VDUFUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkUmVxdWVzdFJhdGVNaW5pbXVtJywgJ1JlcXVlc3QgcmF0ZSBtaW5pbXVtIG11c3QgYmUgYmV0d2VlbiAxLDAwMCBhbmQgMTUsMDAwLDAwMCBFQ1BVcyBwZXIgc2Vjb25kJywgdGhpcyk7XG4gICAgfVxuICAgIGlmIChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0gIT09IHVuZGVmaW5lZCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSkgJiZcbiAgICAgIChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0gPCBSRVFVRVNUX1JBVEVfTUlOX0VDUFUgfHwgbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtID4gUkVRVUVTVF9SQVRFX01BWF9FQ1BVKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZFJlcXVlc3RSYXRlTWF4aW11bScsICdSZXF1ZXN0IHJhdGUgbWF4aW11bSBtdXN0IGJlIGJldHdlZW4gMSwwMDAgYW5kIDE1LDAwMCwwMDAgRUNQVXMgcGVyIHNlY29uZCcsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSkgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0pICYmXG4gICAgICBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0gIT09IHVuZGVmaW5lZCAmJiBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtID4gbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkUmVxdWVzdFJhdGVSYW5nZScsICdSZXF1ZXN0IHJhdGUgbWluaW11bSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIG1heGltdW0nLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYmFja3VwIHNldHRpbmdzIG1lZXQgQVdTIHJlcXVpcmVtZW50c1xuICAgKlxuICAgKiBAcGFyYW0gYmFja3VwIFRoZSBiYWNrdXAgc2V0dGluZ3MgdG8gdmFsaWRhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVCYWNrdXBTZXR0aW5ncyhiYWNrdXA/OiBCYWNrdXBTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGJhY2t1cD8uYmFja3VwUmV0ZW50aW9uTGltaXQpICYmIGJhY2t1cD8uYmFja3VwUmV0ZW50aW9uTGltaXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbGltaXQgPSBiYWNrdXAuYmFja3VwUmV0ZW50aW9uTGltaXQ7XG4gICAgICBpZiAobGltaXQgPCAxIHx8IGxpbWl0ID4gMzUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZEJhY2t1cFJldGVudGlvbkxpbWl0JywgJ0JhY2t1cCByZXRlbnRpb24gbGltaXQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDM1IGRheXMnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChiYWNrdXA/LmJhY2t1cE5hbWVCZWZvcmVEZWxldGlvbikgJiYgYmFja3VwPy5iYWNrdXBOYW1lQmVmb3JlRGVsZXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbmFtZSA9IGJhY2t1cC5iYWNrdXBOYW1lQmVmb3JlRGVsZXRpb247XG5cbiAgICAgIGlmICghL15bYS16QS1aXS8udGVzdChuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkQmFja3VwTmFtZVN0YXJ0JywgJ0ZpbmFsIGJhY2t1cCBuYW1lIG11c3QgYmVnaW4gd2l0aCBhIGxldHRlcicsIHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIS9eW2EtekEtWjAtOS1dKyQvLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZEJhY2t1cE5hbWVDaGFyYWN0ZXJzJywgJ0ZpbmFsIGJhY2t1cCBuYW1lIG11c3QgY29udGFpbiBvbmx5IEFTQ0lJIGxldHRlcnMsIGRpZ2l0cywgYW5kIGh5cGhlbnMnLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUuZW5kc1dpdGgoJy0nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkQmFja3VwTmFtZUVuZCcsICdGaW5hbCBiYWNrdXAgbmFtZSBtdXN0IG5vdCBlbmQgd2l0aCBhIGh5cGhlbicsIHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZS5pbmNsdWRlcygnLS0nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkQmFja3VwTmFtZUNvbnNlY3V0aXZlSHlwaGVucycsICdGaW5hbCBiYWNrdXAgbmFtZSBtdXN0IG5vdCBjb250YWluIHR3byBjb25zZWN1dGl2ZSBoeXBoZW5zJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHVzZXIgZ3JvdXAgY29tcGF0aWJpbGl0eSB3aXRoIGNhY2hlIGVuZ2luZVxuICAgKlxuICAgKiBAcGFyYW0gZW5naW5lIFRoZSBjYWNoZSBlbmdpbmVcbiAgICogQHBhcmFtIHVzZXJHcm91cCBUaGUgdXNlciBncm91cCB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVVzZXJHcm91cENvbXBhdGliaWxpdHkoZW5naW5lOiBDYWNoZUVuZ2luZSwgdXNlckdyb3VwPzogSVVzZXJHcm91cCk6IHZvaWQge1xuICAgIGlmICghdXNlckdyb3VwKSByZXR1cm47XG5cbiAgICBpZiAoZW5naW5lID09PSBDYWNoZUVuZ2luZS5NRU1DQUNIRURfTEFURVNUKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdNZW1jYWNoZWRVc2VyR3JvdXBOb3RTdXBwb3J0ZWQnLCAnVXNlciBncm91cHMgY2Fubm90IGJlIHVzZWQgd2l0aCBNZW1jYWNoZWQgZW5naW5lcy4gT25seSBSZWRpcyBhbmQgVmFsa2V5IGVuZ2luZXMgc3VwcG9ydCB1c2VyIGdyb3Vwcy4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoZW5naW5lID09PSBDYWNoZUVuZ2luZS5SRURJU19MQVRFU1QgJiYgdXNlckdyb3VwLmVuZ2luZSAhPT0gVXNlckVuZ2luZS5SRURJUykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVkaXNVc2VyR3JvdXBNaXNtYXRjaCcsICdSZWRpcyBjYWNoZSBjYW4gb25seSB1c2UgUmVkaXMgdXNlciBncm91cHMuJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBjYWNoZSB1c2FnZSBsaW1pdHMgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBsaW1pdHMgVGhlIHVzYWdlIGxpbWl0cyB0byByZW5kZXJcbiAgICogQHJldHVybnMgQ2xvdWRGb3JtYXRpb24tY29tcGF0aWJsZSB1c2FnZSBsaW1pdHMgb2JqZWN0IG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJDYWNoZVVzYWdlTGltaXRzKGxpbWl0cz86IENhY2hlVXNhZ2VMaW1pdHNQcm9wZXJ0eSk6IGFueSB7XG4gICAgaWYgKCFsaW1pdHMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjYWNoZVVzYWdlTGltaXRzOiBhbnkgPSB7fTtcblxuICAgIGlmIChsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZSAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhY2hlVXNhZ2VMaW1pdHMuZGF0YVN0b3JhZ2UgPSB7XG4gICAgICAgIHVuaXQ6IERhdGFTdG9yYWdlVW5pdC5HSUdBQllURVMsXG4gICAgICAgIC4uLihsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHsgbWluaW11bTogbGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUudG9HaWJpYnl0ZXMoKSB9KSxcbiAgICAgICAgLi4uKGxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplICE9PSB1bmRlZmluZWQgJiYgeyBtYXhpbXVtOiBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS50b0dpYmlieXRlcygpIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtICE9PSB1bmRlZmluZWQgfHwgbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhY2hlVXNhZ2VMaW1pdHMuZWNwdVBlclNlY29uZCA9IHtcbiAgICAgICAgLi4uKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkICYmIHsgbWluaW11bTogbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtIH0pLFxuICAgICAgICAuLi4obGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtICE9PSB1bmRlZmluZWQgJiYgeyBtYXhpbXVtOiBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0gfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhjYWNoZVVzYWdlTGltaXRzKS5sZW5ndGggPiAwID8gY2FjaGVVc2FnZUxpbWl0cyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgc3VibmV0cyBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgU2VydmVybGVzc0NhY2hlIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgc3VibmV0IElEcyBhbmQgc3VibmV0IG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlU3VibmV0cyhwcm9wczogU2VydmVybGVzc0NhY2hlUHJvcHMpOiB7IHN1Ym5ldElkczogc3RyaW5nW10gfCB1bmRlZmluZWQ7IHN1Ym5ldHM6IGVjMi5JU3VibmV0W10gfCB1bmRlZmluZWQgfSB7XG4gICAgbGV0IHNlbGVjdGVkU3VibmV0cztcbiAgICBpZiAocHJvcHMudnBjU3VibmV0cykge1xuICAgICAgc2VsZWN0ZWRTdWJuZXRzID0gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocHJvcHMudnBjU3VibmV0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdGVkU3VibmV0cyA9IHByb3BzLnZwYy5zZWxlY3RTdWJuZXRzKHtcbiAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzdWJuZXRJZHM6IHNlbGVjdGVkU3VibmV0cy5zdWJuZXRJZHMubGVuZ3RoID4gMCA/IHNlbGVjdGVkU3VibmV0cy5zdWJuZXRJZHMgOiB1bmRlZmluZWQsXG4gICAgICBzdWJuZXRzOiBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0cy5sZW5ndGggPiAwID8gc2VsZWN0ZWRTdWJuZXRzLnN1Ym5ldHMgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgc2VjdXJpdHkgZ3JvdXBzIGZvciB0aGUgY2FjaGVcbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFRoZSBTZXJ2ZXJsZXNzQ2FjaGUgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBzZWN1cml0eSBncm91cCBJRHMgYW5kIHNlY3VyaXR5IGdyb3VwIG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlU2VjdXJpdHlHcm91cHMocHJvcHM6IFNlcnZlcmxlc3NDYWNoZVByb3BzKTogeyBzZWN1cml0eUdyb3VwSWRzOiBzdHJpbmdbXTsgc2VjdXJpdHlHcm91cHM6IGVjMi5JU2VjdXJpdHlHcm91cFtdIH0ge1xuICAgIGlmIChwcm9wcy5zZWN1cml0eUdyb3VwcyAmJiBwcm9wcy5zZWN1cml0eUdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBwcm9wcy5zZWN1cml0eUdyb3Vwcy5tYXAoc2cgPT4gc2cuc2VjdXJpdHlHcm91cElkKSxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3U2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCAnU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgJHt0aGlzLm5vZGUuaWR9IGNhY2hlLmAsXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBbbmV3U2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWRdLFxuICAgICAgICBzZWN1cml0eUdyb3VwczogW25ld1NlY3VyaXR5R3JvdXBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IHNjaGVkdWxlIHRvIEhIOk1NIGZvcm1hdCBmb3IgZGFpbHkgYmFja3Vwc1xuICAgKlxuICAgKiBAcGFyYW0gc2NoZWR1bGUgVGhlIHNjaGVkdWxlIHRvIGZvcm1hdFxuICAgKiBAcmV0dXJucyBUaW1lIHN0cmluZyBpbiBISDpNTSBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0QmFja3VwVGltZShzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlKTogc3RyaW5nIHtcbiAgICBjb25zdCBXSUxEX0NBUkQgPSAnKic7XG4gICAgY29uc3QgW1xuICAgICAgbWludXRlRXhwcmVzc2lvbiwgaG91ckV4cHJlc3Npb24sXG4gICAgICBkYXlFeHByZXNzaW9uLCBtb250aEV4cHJlc3Npb24sXG4gICAgICB3ZWVrRGF5RXhwcmVzc2lvbiwgeWVhckV4cHJlc3Npb24sXG4gICAgXSA9IHNjaGVkdWxlLmV4cHJlc3Npb25TdHJpbmcuc3Vic3RyKDUpLnNsaWNlKDAsIC0xKS5zcGxpdCgnICcpO1xuXG4gICAgaWYgKGRheUV4cHJlc3Npb24gIT0gV0lMRF9DQVJEIHx8IG1vbnRoRXhwcmVzc2lvbiAhPSBXSUxEX0NBUkQgfHwgeWVhckV4cHJlc3Npb24gIT0gV0lMRF9DQVJEIHx8IHdlZWtEYXlFeHByZXNzaW9uICE9ICc/Jykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVW5zdXBwb3J0ZWRCYWNrdXBTY2hlZHVsZScsICdGb3Igbm93LCBvbmx5IGRhaWx5IGJhY2t1cCB0aW1lIGlzIGF2YWlsYWJsZSAoc3VwcG9ydHMganVzdCBob3VyIGFuZCBtaW51dGUpLiBEYXksIG1vbnRoLCB5ZWFyLCBhbmQgd2Vla0RheSBhcmUgbm90IGFsbG93ZWQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBob3VyID0gaG91ckV4cHJlc3Npb24gPT0gV0lMRF9DQVJEID8gJzAnIDogaG91ckV4cHJlc3Npb247XG4gICAgY29uc3QgbWludXRlID0gbWludXRlRXhwcmVzc2lvbiA9PSBXSUxEX0NBUkQgPyAnMCcgOiBtaW51dGVFeHByZXNzaW9uO1xuXG4gICAgcmV0dXJuIGAke2hvdXIucGFkU3RhcnQoMiwgJzAnKX06JHttaW51dGUucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9XG59XG4iXX0=
|
package/lib/user-base.js
CHANGED
|
@@ -8,7 +8,7 @@ const core_1 = require("aws-cdk-lib/core");
|
|
|
8
8
|
* Access control configuration for ElastiCache users.
|
|
9
9
|
*/
|
|
10
10
|
class AccessControl {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.AccessControl", version: "2.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.AccessControl", version: "2.244.0-alpha.0" };
|
|
12
12
|
/**
|
|
13
13
|
* Create access control from an access string.
|
|
14
14
|
*
|
|
@@ -36,7 +36,7 @@ class AccessControlString extends AccessControl {
|
|
|
36
36
|
* Base class for ElastiCache users.
|
|
37
37
|
*/
|
|
38
38
|
class UserBase extends core_1.Resource {
|
|
39
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserBase", version: "2.
|
|
39
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserBase", version: "2.244.0-alpha.0" };
|
|
40
40
|
/**
|
|
41
41
|
* Import an existing user by ID.
|
|
42
42
|
*
|
|
@@ -78,13 +78,13 @@ class UserBase extends core_1.Resource {
|
|
|
78
78
|
let userArn;
|
|
79
79
|
const stack = core_1.Stack.of(scope);
|
|
80
80
|
if (attrs.userArn && attrs.userId) {
|
|
81
|
-
throw new core_1.ValidationError('Only one of userArn or userId can be provided.', scope);
|
|
81
|
+
throw new core_1.ValidationError('ConflictingUserIdentifiers', 'Only one of userArn or userId can be provided.', scope);
|
|
82
82
|
}
|
|
83
83
|
if (attrs.userArn) {
|
|
84
84
|
userArn = attrs.userArn;
|
|
85
85
|
const extractedUserId = stack.splitArn(attrs.userArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
|
|
86
86
|
if (!extractedUserId) {
|
|
87
|
-
throw new core_1.ValidationError('Unable to extract user id from ARN.', scope);
|
|
87
|
+
throw new core_1.ValidationError('InvalidUserArn', 'Unable to extract user id from ARN.', scope);
|
|
88
88
|
}
|
|
89
89
|
userId = extractedUserId;
|
|
90
90
|
}
|
|
@@ -97,7 +97,7 @@ class UserBase extends core_1.Resource {
|
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
else {
|
|
100
|
-
throw new core_1.ValidationError('One of userId or userArn is required.', scope);
|
|
100
|
+
throw new core_1.ValidationError('MissingUserIdentifier', 'One of userId or userArn is required.', scope);
|
|
101
101
|
}
|
|
102
102
|
class Import extends core_1.Resource {
|
|
103
103
|
engine;
|
|
@@ -116,4 +116,4 @@ class UserBase extends core_1.Resource {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
exports.UserBase = UserBase;
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXNlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsMkNBQStFO0FBSS9FOztHQUVHO0FBQ0gsTUFBc0IsYUFBYTs7SUFDakM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFvQjtRQUNqRCxPQUFPLElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDOUM7O0FBUkgsc0NBY0M7QUFFRDs7R0FFRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsYUFBYTtJQUM3Qzs7T0FFRztJQUNhLFlBQVksQ0FBUztJQUVyQyxZQUFZLFlBQW9CO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7S0FDbEM7Q0FDRjtBQW9GRDs7R0FFRztBQUNILE1BQXNCLFFBQVMsU0FBUSxlQUFROztJQUM3Qzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQWM7UUFDbkUsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDM0Q7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWU7UUFDckUsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDNUQ7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7Ozs7Ozs7Ozs7UUFDdEYsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxPQUFlLENBQUM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsWUFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN4QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNsRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxNQUFNLEdBQUcsZUFBZSxDQUFDO1FBQzNCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDeEIsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDM0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksc0JBQWUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsTUFBTSxNQUFPLFNBQVEsZUFBUTtZQUNYLE1BQU0sQ0FBYztZQUNwQixNQUFNLENBQVM7WUFDZixPQUFPLENBQVM7WUFDdkIsUUFBUSxDQUFVO1lBRTNCLFlBQVksUUFBZ0IsRUFBRSxPQUFlO2dCQUMzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ2pDLENBQUM7U0FDRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3BDOztBQXpFSCw0QkFpR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgUmVzb3VyY2UsIEFybkZvcm1hdCwgU3RhY2ssIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgVXNlckVuZ2luZSB9IGZyb20gJy4vY29tbW9uJztcblxuLyoqXG4gKiBBY2Nlc3MgY29udHJvbCBjb25maWd1cmF0aW9uIGZvciBFbGFzdGlDYWNoZSB1c2Vycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc0NvbnRyb2wge1xuICAvKipcbiAgICogQ3JlYXRlIGFjY2VzcyBjb250cm9sIGZyb20gYW4gYWNjZXNzIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIGFjY2Vzc1N0cmluZyBUaGUgYWNjZXNzIHN0cmluZyBkZWZpbmluZyB1c2VyIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQWNjZXNzU3RyaW5nKGFjY2Vzc1N0cmluZzogc3RyaW5nKTogQWNjZXNzQ29udHJvbCB7XG4gICAgcmV0dXJuIG5ldyBBY2Nlc3NDb250cm9sU3RyaW5nKGFjY2Vzc1N0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFjY2VzcyBzdHJpbmcgdGhhdCBkZWZpbmVzIHVzZXIncyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhY2Nlc3NTdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Nlc3MgY29udHJvbCBpbXBsZW1lbnRhdGlvbiB1c2luZyBhIHJhdyBhY2Nlc3Mgc3RyaW5nLlxuICovXG5jbGFzcyBBY2Nlc3NDb250cm9sU3RyaW5nIGV4dGVuZHMgQWNjZXNzQ29udHJvbCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjZXNzIHN0cmluZyB0aGF0IGRlZmluZXMgdXNlcidzIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2Vzc1N0cmluZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc1N0cmluZzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc1N0cmluZyA9IGFjY2Vzc1N0cmluZztcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGFuIEVsYXN0aUNhY2hlIGJhc2UgdXNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIuXG4gICAqIEVudW0gb3B0aW9uczogVXNlckVuZ2luZS5WQUxLRVksIFVzZXJFbmdpbmUuUkVESVMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlckVuZ2luZS5SRURJUyBmb3IgTm9QYXNzd29yZFVzZXIsIFVzZXJFbmdpbmUuVkFMS0VZIGZvciBhbGwgb3RoZXIgdXNlciB0eXBlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHVzZXIuXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEFjY2VzcyBjb250cm9sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzQ29udHJvbDogQWNjZXNzQ29udHJvbDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVsYXN0aUNhY2hlIGJhc2UgdXNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVXNlciBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIElELlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgbmFtZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIEFSTi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBFbGFzdGlDYWNoZSB1c2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJCYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHVzZXIuXG4gICAqIE9uZSBvZiBgdXNlcklkYCBvciBgdXNlckFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJBcm4uXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGVuZ2luZSB0eXBlIGlzIHVua25vd24uXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5hbWUgaXMgdW5rbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlci5cbiAgICpcbiAgICogT25lIG9mIGB1c2VySWRgIG9yIGB1c2VyQXJuYCBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdXNlcklkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBFbGFzdGlDYWNoZSB1c2Vycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVzZXJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVXNlciB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBieSBJRC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgSUQgb2YgdGhlIGV4aXN0aW5nIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VySWQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpOiBJVXNlciB7XG4gICAgcmV0dXJuIFVzZXJCYXNlLmZyb21Vc2VyQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlcklkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGJ5IEFSTi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHVzZXJBcm4gVGhlIEFSTiBvZiB0aGUgZXhpc3RpbmcgdXNlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlckFybjogc3RyaW5nKTogSVVzZXIge1xuICAgIHJldHVybiBVc2VyQmFzZS5mcm9tVXNlckF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgdXNpbmcgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIGF0dHJzIEEgYFVzZXJCYXNlQXR0cmlidXRlc2Agb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVXNlckF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFVzZXJCYXNlQXR0cmlidXRlcyk6IElVc2VyIHtcbiAgICBsZXQgdXNlcklkOiBzdHJpbmc7XG4gICAgbGV0IHVzZXJBcm46IHN0cmluZztcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIGlmIChhdHRycy51c2VyQXJuICYmIGF0dHJzLnVzZXJJZCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT25seSBvbmUgb2YgdXNlckFybiBvciB1c2VySWQgY2FuIGJlIHByb3ZpZGVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMudXNlckFybikge1xuICAgICAgdXNlckFybiA9IGF0dHJzLnVzZXJBcm47XG4gICAgICBjb25zdCBleHRyYWN0ZWRVc2VySWQgPSBzdGFjay5zcGxpdEFybihhdHRycy51c2VyQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuICAgICAgaWYgKCFleHRyYWN0ZWRVc2VySWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVW5hYmxlIHRvIGV4dHJhY3QgdXNlciBpZCBmcm9tIEFSTi4nLCBzY29wZSk7XG4gICAgICB9XG4gICAgICB1c2VySWQgPSBleHRyYWN0ZWRVc2VySWQ7XG4gICAgfSBlbHNlIGlmIChhdHRycy51c2VySWQpIHtcbiAgICAgIHVzZXJJZCA9IGF0dHJzLnVzZXJJZDtcbiAgICAgIHVzZXJBcm4gPSBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnZWxhc3RpY2FjaGUnLFxuICAgICAgICByZXNvdXJjZTogJ3VzZXInLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGF0dHJzLnVzZXJJZCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdPbmUgb2YgdXNlcklkIG9yIHVzZXJBcm4gaXMgcmVxdWlyZWQuJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVVzZXIge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckFybjogc3RyaW5nO1xuICAgICAgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG5cbiAgICAgIGNvbnN0cnVjdG9yKF91c2VyQXJuOiBzdHJpbmcsIF91c2VySWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgICAgICB0aGlzLnVzZXJBcm4gPSBfdXNlckFybjtcbiAgICAgICAgdGhpcy51c2VySWQgPSBfdXNlcklkO1xuICAgICAgICB0aGlzLmVuZ2luZSA9IGF0dHJzLmVuZ2luZTtcbiAgICAgICAgdGhpcy51c2VyTmFtZSA9IGF0dHJzLnVzZXJOYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHVzZXJBcm4sIHVzZXJJZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVzZXIncyBJRC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSBmb3IgdGhlIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgbmFtZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHVzZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBBUk4uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyQXJuOiBzdHJpbmc7XG59XG4iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXNlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsMkNBQStFO0FBSS9FOztHQUVHO0FBQ0gsTUFBc0IsYUFBYTs7SUFDakM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFvQjtRQUNqRCxPQUFPLElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDOUM7O0FBUkgsc0NBY0M7QUFFRDs7R0FFRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsYUFBYTtJQUM3Qzs7T0FFRztJQUNhLFlBQVksQ0FBUztJQUVyQyxZQUFZLFlBQW9CO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7S0FDbEM7Q0FDRjtBQW9GRDs7R0FFRztBQUNILE1BQXNCLFFBQVMsU0FBUSxlQUFROztJQUM3Qzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQWM7UUFDbkUsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDM0Q7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWU7UUFDckUsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDNUQ7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7Ozs7Ozs7Ozs7UUFDdEYsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxPQUFlLENBQUM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsWUFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLDRCQUE0QixFQUFFLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ILENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN4QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNsRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLGdCQUFnQixFQUFFLHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVGLENBQUM7WUFDRCxNQUFNLEdBQUcsZUFBZSxDQUFDO1FBQzNCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDeEIsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDM0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksc0JBQWUsQ0FBQyx1QkFBdUIsRUFBRSx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBRUQsTUFBTSxNQUFPLFNBQVEsZUFBUTtZQUNYLE1BQU0sQ0FBYztZQUNwQixNQUFNLENBQVM7WUFDZixPQUFPLENBQVM7WUFDdkIsUUFBUSxDQUFVO1lBRTNCLFlBQVksUUFBZ0IsRUFBRSxPQUFlO2dCQUMzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ2pDLENBQUM7U0FDRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3BDOztBQXpFSCw0QkFpR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgUmVzb3VyY2UsIEFybkZvcm1hdCwgU3RhY2ssIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgVXNlckVuZ2luZSB9IGZyb20gJy4vY29tbW9uJztcblxuLyoqXG4gKiBBY2Nlc3MgY29udHJvbCBjb25maWd1cmF0aW9uIGZvciBFbGFzdGlDYWNoZSB1c2Vycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc0NvbnRyb2wge1xuICAvKipcbiAgICogQ3JlYXRlIGFjY2VzcyBjb250cm9sIGZyb20gYW4gYWNjZXNzIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIGFjY2Vzc1N0cmluZyBUaGUgYWNjZXNzIHN0cmluZyBkZWZpbmluZyB1c2VyIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQWNjZXNzU3RyaW5nKGFjY2Vzc1N0cmluZzogc3RyaW5nKTogQWNjZXNzQ29udHJvbCB7XG4gICAgcmV0dXJuIG5ldyBBY2Nlc3NDb250cm9sU3RyaW5nKGFjY2Vzc1N0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFjY2VzcyBzdHJpbmcgdGhhdCBkZWZpbmVzIHVzZXIncyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhY2Nlc3NTdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Nlc3MgY29udHJvbCBpbXBsZW1lbnRhdGlvbiB1c2luZyBhIHJhdyBhY2Nlc3Mgc3RyaW5nLlxuICovXG5jbGFzcyBBY2Nlc3NDb250cm9sU3RyaW5nIGV4dGVuZHMgQWNjZXNzQ29udHJvbCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjZXNzIHN0cmluZyB0aGF0IGRlZmluZXMgdXNlcidzIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2Vzc1N0cmluZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc1N0cmluZzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc1N0cmluZyA9IGFjY2Vzc1N0cmluZztcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGFuIEVsYXN0aUNhY2hlIGJhc2UgdXNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIuXG4gICAqIEVudW0gb3B0aW9uczogVXNlckVuZ2luZS5WQUxLRVksIFVzZXJFbmdpbmUuUkVESVMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlckVuZ2luZS5SRURJUyBmb3IgTm9QYXNzd29yZFVzZXIsIFVzZXJFbmdpbmUuVkFMS0VZIGZvciBhbGwgb3RoZXIgdXNlciB0eXBlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHVzZXIuXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEFjY2VzcyBjb250cm9sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzQ29udHJvbDogQWNjZXNzQ29udHJvbDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVsYXN0aUNhY2hlIGJhc2UgdXNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVXNlciBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIElELlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgbmFtZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIEFSTi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBFbGFzdGlDYWNoZSB1c2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJCYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHVzZXIuXG4gICAqIE9uZSBvZiBgdXNlcklkYCBvciBgdXNlckFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJBcm4uXG4gICAqL1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGVuZ2luZSB0eXBlIGlzIHVua25vd24uXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5hbWUgaXMgdW5rbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlci5cbiAgICpcbiAgICogT25lIG9mIGB1c2VySWRgIG9yIGB1c2VyQXJuYCBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdXNlcklkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBFbGFzdGlDYWNoZSB1c2Vycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVzZXJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVXNlciB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBieSBJRC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgSUQgb2YgdGhlIGV4aXN0aW5nIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VySWQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpOiBJVXNlciB7XG4gICAgcmV0dXJuIFVzZXJCYXNlLmZyb21Vc2VyQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlcklkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGJ5IEFSTi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHVzZXJBcm4gVGhlIEFSTiBvZiB0aGUgZXhpc3RpbmcgdXNlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlckFybjogc3RyaW5nKTogSVVzZXIge1xuICAgIHJldHVybiBVc2VyQmFzZS5mcm9tVXNlckF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgdXNpbmcgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIGF0dHJzIEEgYFVzZXJCYXNlQXR0cmlidXRlc2Agb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVXNlckF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFVzZXJCYXNlQXR0cmlidXRlcyk6IElVc2VyIHtcbiAgICBsZXQgdXNlcklkOiBzdHJpbmc7XG4gICAgbGV0IHVzZXJBcm46IHN0cmluZztcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIGlmIChhdHRycy51c2VyQXJuICYmIGF0dHJzLnVzZXJJZCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignQ29uZmxpY3RpbmdVc2VySWRlbnRpZmllcnMnLCAnT25seSBvbmUgb2YgdXNlckFybiBvciB1c2VySWQgY2FuIGJlIHByb3ZpZGVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMudXNlckFybikge1xuICAgICAgdXNlckFybiA9IGF0dHJzLnVzZXJBcm47XG4gICAgICBjb25zdCBleHRyYWN0ZWRVc2VySWQgPSBzdGFjay5zcGxpdEFybihhdHRycy51c2VyQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuICAgICAgaWYgKCFleHRyYWN0ZWRVc2VySWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZFVzZXJBcm4nLCAnVW5hYmxlIHRvIGV4dHJhY3QgdXNlciBpZCBmcm9tIEFSTi4nLCBzY29wZSk7XG4gICAgICB9XG4gICAgICB1c2VySWQgPSBleHRyYWN0ZWRVc2VySWQ7XG4gICAgfSBlbHNlIGlmIChhdHRycy51c2VySWQpIHtcbiAgICAgIHVzZXJJZCA9IGF0dHJzLnVzZXJJZDtcbiAgICAgIHVzZXJBcm4gPSBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnZWxhc3RpY2FjaGUnLFxuICAgICAgICByZXNvdXJjZTogJ3VzZXInLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGF0dHJzLnVzZXJJZCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdNaXNzaW5nVXNlcklkZW50aWZpZXInLCAnT25lIG9mIHVzZXJJZCBvciB1c2VyQXJuIGlzIHJlcXVpcmVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElVc2VyIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVzZXJBcm46IHN0cmluZztcbiAgICAgIHJlYWRvbmx5IHVzZXJOYW1lPzogc3RyaW5nO1xuXG4gICAgICBjb25zdHJ1Y3RvcihfdXNlckFybjogc3RyaW5nLCBfdXNlcklkOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAgICAgdGhpcy51c2VyQXJuID0gX3VzZXJBcm47XG4gICAgICAgIHRoaXMudXNlcklkID0gX3VzZXJJZDtcbiAgICAgICAgdGhpcy5lbmdpbmUgPSBhdHRycy5lbmdpbmU7XG4gICAgICAgIHRoaXMudXNlck5hbWUgPSBhdHRycy51c2VyTmFtZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh1c2VyQXJuLCB1c2VySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgSUQuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBUaGUgdXNlcidzIG5hbWUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgQVJOLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckFybjogc3RyaW5nO1xufVxuIl19
|
package/lib/user-group.js
CHANGED
|
@@ -47,7 +47,7 @@ const ELASTICACHE_USERGROUP_SYMBOL = Symbol.for('@aws-cdk/aws-elasticache.UserGr
|
|
|
47
47
|
* Base class for UserGroup constructs
|
|
48
48
|
*/
|
|
49
49
|
class UserGroupBase extends core_1.Resource {
|
|
50
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.
|
|
50
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.244.0-alpha.0" };
|
|
51
51
|
/**
|
|
52
52
|
* Add a user to this user group
|
|
53
53
|
*
|
|
@@ -63,7 +63,7 @@ class UserGroupBase extends core_1.Resource {
|
|
|
63
63
|
}
|
|
64
64
|
throw error;
|
|
65
65
|
}
|
|
66
|
-
throw new core_1.UnscopedValidationError('Cannot add users to an imported UserGroup. Only UserGroups created in this stack can be modified.');
|
|
66
|
+
throw new core_1.UnscopedValidationError('ImportedUserGroupModification', 'Cannot add users to an imported UserGroup. Only UserGroups created in this stack can be modified.');
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
exports.UserGroupBase = UserGroupBase;
|
|
@@ -90,7 +90,7 @@ let UserGroup = (() => {
|
|
|
90
90
|
UserGroup = _classThis = _classDescriptor.value;
|
|
91
91
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
92
92
|
}
|
|
93
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.
|
|
93
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.244.0-alpha.0" };
|
|
94
94
|
/**
|
|
95
95
|
* Uniquely identifies this class
|
|
96
96
|
*/
|
|
@@ -142,13 +142,13 @@ let UserGroup = (() => {
|
|
|
142
142
|
let userGroupArn;
|
|
143
143
|
const stack = core_1.Stack.of(scope);
|
|
144
144
|
if (attrs.userGroupArn && attrs.userGroupName) {
|
|
145
|
-
throw new core_1.ValidationError('Only one of userGroupArn or userGroupName can be provided.', scope);
|
|
145
|
+
throw new core_1.ValidationError('ConflictingUserGroupIdentifiers', 'Only one of userGroupArn or userGroupName can be provided.', scope);
|
|
146
146
|
}
|
|
147
147
|
if (attrs.userGroupArn) {
|
|
148
148
|
userGroupArn = attrs.userGroupArn;
|
|
149
149
|
const extractedUserGroupName = stack.splitArn(attrs.userGroupArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
|
|
150
150
|
if (!extractedUserGroupName) {
|
|
151
|
-
throw new core_1.ValidationError('Unable to extract user group name from ARN.', scope);
|
|
151
|
+
throw new core_1.ValidationError('InvalidUserGroupArn', 'Unable to extract user group name from ARN.', scope);
|
|
152
152
|
}
|
|
153
153
|
userGroupName = extractedUserGroupName;
|
|
154
154
|
}
|
|
@@ -161,7 +161,7 @@ let UserGroup = (() => {
|
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
163
|
else {
|
|
164
|
-
throw new core_1.ValidationError('One of userGroupName or userGroupArn is required.', scope);
|
|
164
|
+
throw new core_1.ValidationError('MissingUserGroupIdentifier', 'One of userGroupName or userGroupArn is required.', scope);
|
|
165
165
|
}
|
|
166
166
|
class Import extends UserGroupBase {
|
|
167
167
|
engine;
|
|
@@ -256,17 +256,17 @@ let UserGroup = (() => {
|
|
|
256
256
|
const userNames = this._users.map(user => user.userName);
|
|
257
257
|
const duplicates = userNames.filter((name, index) => userNames.indexOf(name) !== index);
|
|
258
258
|
if (duplicates.length > 0) {
|
|
259
|
-
throw new core_1.ValidationError('User group cannot have users with the same user name.', this);
|
|
259
|
+
throw new core_1.ValidationError('DuplicateUserName', 'User group cannot have users with the same user name.', this);
|
|
260
260
|
}
|
|
261
261
|
if (this.engine === common_1.UserEngine.REDIS) {
|
|
262
262
|
this._users.forEach(user => {
|
|
263
263
|
if (user.engine !== common_1.UserEngine.REDIS) {
|
|
264
|
-
throw new core_1.ValidationError('Redis user group can only contain Redis users.', this);
|
|
264
|
+
throw new core_1.ValidationError('RedisUserGroupEngineMismatch', 'Redis user group can only contain Redis users.', this);
|
|
265
265
|
}
|
|
266
266
|
});
|
|
267
267
|
const hasDefaultUser = this._users.some(user => user.userName === 'default');
|
|
268
268
|
if (!hasDefaultUser) {
|
|
269
|
-
throw new core_1.ValidationError('Redis user groups need to contain a user with the user name "default".', this);
|
|
269
|
+
throw new core_1.ValidationError('RedisUserGroupMissingDefaultUser', 'Redis user groups need to contain a user with the user name "default".', this);
|
|
270
270
|
}
|
|
271
271
|
}
|
|
272
272
|
}
|
|
@@ -295,4 +295,4 @@ let UserGroup = (() => {
|
|
|
295
295
|
return UserGroup = _classThis;
|
|
296
296
|
})();
|
|
297
297
|
exports.UserGroup = UserGroup;
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXItZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQTJEO0FBRTNELDJDQUFxSDtBQUNySCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRTFFLHFDQUFzQztBQUd0QyxNQUFNLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQTBEdEY7O0dBRUc7QUFDSCxNQUFzQixhQUFjLFNBQVEsZUFBUTs7SUFvQmxEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBWTs7Ozs7Ozs7OztRQUN6QixNQUFNLElBQUksOEJBQXVCLENBQUMsbUdBQW1HLENBQUMsQ0FBQztLQUN4STs7QUEzQkgsc0NBNEJDO0FBb0NEOzs7O0dBSUc7SUFFVSxTQUFTOzRCQURyQixvQ0FBa0I7Ozs7c0JBQ1ksYUFBYTs7O3lCQUFyQixTQUFRLFdBQWE7Ozs7bUNBOEx6QyxJQUFBLGtDQUFjLEdBQUU7WUFDakIsd0tBQU8sT0FBTyw2REFHYjtZQWxNSCw2S0FtTUM7Ozs7O1FBbE1DOztXQUVHO1FBQ0ksTUFBTSxDQUFVLHFCQUFxQixHQUFXLHVDQUF1QyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFNO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLDRCQUE0QixJQUFJLENBQUMsQ0FBQztTQUNuRjtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxhQUFxQjtZQUNqRixPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUN4RTtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxZQUFvQjtZQUMvRSxPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztTQUN2RTtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjs7Ozs7Ozs7OztZQUM1RixJQUFJLGFBQXFCLENBQUM7WUFDMUIsSUFBSSxZQUFvQixDQUFDO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFOUIsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxJQUFJLHNCQUFlLENBQUMsNERBQTRELEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakcsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN2QixZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDbEMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDOUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQzVCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLDZDQUE2QyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRixDQUFDO2dCQUNELGFBQWEsR0FBRyxzQkFBc0IsQ0FBQztZQUN6QyxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFDcEMsWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxhQUFhO29CQUN0QixRQUFRLEVBQUUsV0FBVztvQkFDckIsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLHNCQUFlLENBQUMsbURBQW1ELEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUVELE1BQU0sTUFBTyxTQUFRLGFBQWE7Z0JBQ2hCLE1BQU0sQ0FBYztnQkFDcEIsYUFBYSxDQUFTO2dCQUN0QixZQUFZLENBQVM7Z0JBRXJDLElBQVcsS0FBSztvQkFDZCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDcEQsQ0FBQztnQkFFRCxZQUFZLGFBQXFCLEVBQUUsY0FBc0I7b0JBQ3ZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDO29CQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUM3QixDQUFDO2FBQ0Y7WUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNoRDtRQUVlLE1BQU0sR0F6RlgsbURBQVMsQ0F5RmdCO1FBQ3BCLGFBQWEsQ0FBUztRQUNyQixNQUFNLEdBQVksRUFBRSxDQUFDO1FBQ3RDOzs7O1dBSUc7UUFDYSxZQUFZLENBQVM7UUFDckM7Ozs7O1dBS0c7UUFDYSxlQUFlLENBQVM7UUFFdkIsUUFBUSxDQUFlO1FBRXhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBd0IsRUFBRTtZQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQTdHWixTQUFTOzs7O1lBK0dsQixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLG1CQUFVLENBQUMsTUFBTSxDQUFDO1lBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxXQUFJLENBQUMsTUFBTSxDQUFDO2dCQUN0RCxpRkFBaUY7Z0JBQ2pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUU7YUFDckYsQ0FBQyxDQUFDO1lBRUgsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksOEJBQVksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNqRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDL0IsT0FBTyxFQUFFLFdBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLE9BQU8sRUFBRSxHQUFHLEVBQUU7d0JBQ1osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM5QyxDQUFDO2lCQUNGLENBQUM7YUFDSCxDQUFDLENBQUM7WUFFSCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1RCxDQUFDO1lBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBRWhELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDRCQUE0QixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDNUU7UUFFRDs7V0FFRztRQUNLLGlCQUFpQixDQUFDLElBQVc7WUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDO1FBRUQ7Ozs7O1dBS0c7UUFDSCxJQUFXLEtBQUs7WUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDcEI7UUFFRDs7V0FFRztRQUNLLGFBQWE7WUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDeEYsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLElBQUksc0JBQWUsQ0FBQyx1REFBdUQsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzRixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLG1CQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssbUJBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDckMsTUFBTSxJQUFJLHNCQUFlLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3BGLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHdFQUF3RSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM1RyxDQUFDO1lBQ0gsQ0FBQztTQUNGO1FBRUQ7Ozs7V0FJRztRQUVJLE9BQU8sQ0FBQyxJQUFXOzs7Ozs7Ozs7O1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5Qjs7WUFsTVUsdURBQVM7Ozs7O0FBQVQsOEJBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Vc2VyR3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IFJlc291cmNlLCBBcm5Gb3JtYXQsIFN0YWNrLCBMYXp5LCBWYWxpZGF0aW9uRXJyb3IsIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBJVXNlciB9IGZyb20gJy4vdXNlci1iYXNlJztcblxuY29uc3QgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1lbGFzdGljYWNoZS5Vc2VyR3JvdXAnKTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyR3JvdXBQcm9wcyB7XG4gIC8qKlxuICAgKiBFbmZvcmNlcyBhIHBhcnRpY3VsYXIgcGh5c2ljYWwgdXNlciBncm91cCBuYW1lLlxuICAgKiBAZGVmYXVsdCA8Z2VuZXJhdGVkPlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICogRW51bSBvcHRpb25zOiBVc2VyRW5naW5lLlZBTEtFWSwgVXNlckVuZ2luZS5SRURJU1xuICAgKlxuICAgKiBAZGVmYXVsdCBVc2VyRW5naW5lLlZBTEtFWVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW5zaWRlIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdXNlcnNcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJzPzogSVVzZXJbXTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVsYXN0aUNhY2hlIFVzZXJHcm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyR3JvdXAgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSB0eXBlIGZvciB0aGUgdXNlciBncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJzPzogSVVzZXJbXTtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYSB1c2VyIHRvIHRoaXMgdXNlciBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gdXNlciBUaGUgdXNlciB0byBhZGRcbiAgICovXG4gIGFkZFVzZXIodXNlcjogSVVzZXIpOiB2b2lkO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFVzZXJHcm91cCBjb25zdHJ1Y3RzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVc2VyR3JvdXBCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVXNlckdyb3VwIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZCBhIHVzZXIgdG8gdGhpcyB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSBfdXNlciBUaGUgdXNlciB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBhZGRVc2VyKF91c2VyOiBJVXNlcik6IHZvaWQge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcignQ2Fubm90IGFkZCB1c2VycyB0byBhbiBpbXBvcnRlZCBVc2VyR3JvdXAuIE9ubHkgVXNlckdyb3VwcyBjcmVhdGVkIGluIHRoaXMgc3RhY2sgY2FuIGJlIG1vZGlmaWVkLicpO1xuICB9XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgd2hlbiBpbXBvcnRpbmcgYSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyR3JvdXBBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIE9uZSBvZiBgdXNlckdyb3VwTmFtZWAgb3IgYHVzZXJHcm91cEFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJHcm91cEFyblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbmdpbmUgdHlwZSBpcyB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogTGlzdCBvZiB1c2VycyBpbiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZXJzIGFyZSB1bmtub3duXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIE9uZSBvZiBgdXNlckdyb3VwTmFtZWAgb3IgYHVzZXJHcm91cEFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJHcm91cE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cEFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGlDYWNoZTo6VXNlckdyb3VwXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBVc2VyR3JvdXAgZXh0ZW5kcyBVc2VyR3JvdXBCYXNlIHtcbiAgLyoqXG4gICAqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdhd3MtY2RrLWxpYi5hd3MtZWxhc3RpY2FjaGUuVXNlckdyb3VwJztcblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIGBVc2VyR3JvdXBgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVXNlckdyb3VwKHg6IGFueSk6IHggaXMgVXNlckdyb3VwIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgKHgpID09PSAnb2JqZWN0JyAmJiBFTEFTVElDQUNIRV9VU0VSR1JPVVBfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgZ3JvdXAgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIHVzZXJHcm91cE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV4aXN0aW5nIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cE5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlckdyb3VwTmFtZTogc3RyaW5nKTogSVVzZXJHcm91cCB7XG4gICAgcmV0dXJuIFVzZXJHcm91cC5mcm9tVXNlckdyb3VwQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlckdyb3VwTmFtZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBncm91cCBieSBBUk5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXBBcm4gVGhlIEFSTiBvZiB0aGUgZXhpc3RpbmcgdXNlciBncm91cFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVXNlckdyb3VwQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHVzZXJHcm91cEFybjogc3RyaW5nKTogSVVzZXJHcm91cCB7XG4gICAgcmV0dXJuIFVzZXJHcm91cC5mcm9tVXNlckdyb3VwQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlckdyb3VwQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGdyb3VwIHVzaW5nIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBhdHRycyBBIGBVc2VyR3JvdXBBdHRyaWJ1dGVzYCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFVzZXJHcm91cEF0dHJpYnV0ZXMpOiBJVXNlckdyb3VwIHtcbiAgICBsZXQgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAgIGxldCB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIGlmIChhdHRycy51c2VyR3JvdXBBcm4gJiYgYXR0cnMudXNlckdyb3VwTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT25seSBvbmUgb2YgdXNlckdyb3VwQXJuIG9yIHVzZXJHcm91cE5hbWUgY2FuIGJlIHByb3ZpZGVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMudXNlckdyb3VwQXJuKSB7XG4gICAgICB1c2VyR3JvdXBBcm4gPSBhdHRycy51c2VyR3JvdXBBcm47XG4gICAgICBjb25zdCBleHRyYWN0ZWRVc2VyR3JvdXBOYW1lID0gc3RhY2suc3BsaXRBcm4oYXR0cnMudXNlckdyb3VwQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuICAgICAgaWYgKCFleHRyYWN0ZWRVc2VyR3JvdXBOYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1VuYWJsZSB0byBleHRyYWN0IHVzZXIgZ3JvdXAgbmFtZSBmcm9tIEFSTi4nLCBzY29wZSk7XG4gICAgICB9XG4gICAgICB1c2VyR3JvdXBOYW1lID0gZXh0cmFjdGVkVXNlckdyb3VwTmFtZTtcbiAgICB9IGVsc2UgaWYgKGF0dHJzLnVzZXJHcm91cE5hbWUpIHtcbiAgICAgIHVzZXJHcm91cE5hbWUgPSBhdHRycy51c2VyR3JvdXBOYW1lO1xuICAgICAgdXNlckdyb3VwQXJuID0gc3RhY2suZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2VsYXN0aWNhY2hlJyxcbiAgICAgICAgcmVzb3VyY2U6ICd1c2VyZ3JvdXAnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGF0dHJzLnVzZXJHcm91cE5hbWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT25lIG9mIHVzZXJHcm91cE5hbWUgb3IgdXNlckdyb3VwQXJuIGlzIHJlcXVpcmVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBVc2VyR3JvdXBCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcblxuICAgICAgcHVibGljIGdldCB1c2VycygpOiBJVXNlcltdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGF0dHJzLnVzZXJzID8gWy4uLmF0dHJzLnVzZXJzXSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3RydWN0b3IoX3VzZXJHcm91cEFybjogc3RyaW5nLCBfdXNlckdyb3VwTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgICAgIHRoaXMudXNlckdyb3VwQXJuID0gX3VzZXJHcm91cEFybjtcbiAgICAgICAgdGhpcy51c2VyR3JvdXBOYW1lID0gX3VzZXJHcm91cE5hbWU7XG4gICAgICAgIHRoaXMuZW5naW5lID0gYXR0cnMuZW5naW5lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHVzZXJHcm91cEFybiwgdXNlckdyb3VwTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdXNlcnM6IElVc2VyW10gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cEFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgdXNlciBncm91cFxuICAgKiBDYW4gYmUgJ2NyZWF0aW5nJywgJ2FjdGl2ZScsICdtb2RpZnlpbmcnLCAnZGVsZXRpbmcnXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBTdGF0dXM6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBDZm5Vc2VyR3JvdXA7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFVzZXJHcm91cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHt9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBwcm9wcy5lbmdpbmUgPz8gVXNlckVuZ2luZS5WQUxLRVk7XG4gICAgdGhpcy51c2VyR3JvdXBOYW1lID0gcHJvcHMudXNlckdyb3VwTmFtZSA/PyBMYXp5LnN0cmluZyh7XG4gICAgICAvLyBFbGFzdGlDYWNoZSBpcyBhbGxvd2luZyBvbmx5IHVwcGVyY2FzZSBhbmQgbWF4IDQwIGNoYXJhY3RlcnMgZm9yIHVzZXIgZ3JvdXAgaWRcbiAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogNDAgfSkudG9Mb2NhbGVMb3dlckNhc2UoKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy51c2Vycykge1xuICAgICAgdGhpcy5fdXNlcnMucHVzaCguLi5wcm9wcy51c2Vycyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Vc2VyR3JvdXAodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZW5naW5lOiB0aGlzLmVuZ2luZSxcbiAgICAgIHVzZXJHcm91cElkOiB0aGlzLnVzZXJHcm91cE5hbWUsXG4gICAgICB1c2VySWRzOiBMYXp5Lmxpc3Qoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVVzZXJzKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJzLm1hcCh1c2VyID0+IHVzZXIudXNlcklkKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnVzZXJzKSB7XG4gICAgICBwcm9wcy51c2Vycy5mb3JFYWNoKHVzZXIgPT4gdGhpcy5hZGRVc2VyRGVwZW5kZW5jeSh1c2VyKSk7XG4gICAgfVxuXG4gICAgdGhpcy51c2VyR3JvdXBBcm4gPSB0aGlzLnJlc291cmNlLmF0dHJBcm47XG4gICAgdGhpcy51c2VyR3JvdXBTdGF0dXMgPSB0aGlzLnJlc291cmNlLmF0dHJTdGF0dXM7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBDbG91ZEZvcm1hdGlvbiBkZXBlbmRlbmN5IG9uIHRoZSB1c2VyIHJlc291cmNlIHRvIGVuc3VyZSBwcm9wZXIgY3JlYXRpb24gb3JkZXIuXG4gICAqL1xuICBwcml2YXRlIGFkZFVzZXJEZXBlbmRlbmN5KHVzZXI6IElVc2VyKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodXNlcik7XG4gIH1cblxuICAvKipcbiAgICogQXJyYXkgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogRG8gbm90IHB1c2ggZGlyZWN0bHkgdG8gdGhpcyBhcnJheS5cbiAgICogVXNlIGFkZFVzZXIoKSBpbnN0ZWFkIHRvIGVuc3VyZSBwcm9wZXIgdmFsaWRhdGlvbiBhbmQgZGVwZW5kZW5jeSBtYW5hZ2VtZW50LlxuICAgKi9cbiAgcHVibGljIGdldCB1c2VycygpOiBJVXNlcltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlcnM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwIGZvciBkdXBsaWNhdGUgdXNlcm5hbWVzIGFuZCBSZWRpcy1zcGVjaWZpYyByZXF1aXJlbWVudHMuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVXNlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgdXNlck5hbWVzID0gdGhpcy5fdXNlcnMubWFwKHVzZXIgPT4gdXNlci51c2VyTmFtZSk7XG4gICAgY29uc3QgZHVwbGljYXRlcyA9IHVzZXJOYW1lcy5maWx0ZXIoKG5hbWUsIGluZGV4KSA9PiB1c2VyTmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gaW5kZXgpO1xuICAgIGlmIChkdXBsaWNhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1VzZXIgZ3JvdXAgY2Fubm90IGhhdmUgdXNlcnMgd2l0aCB0aGUgc2FtZSB1c2VyIG5hbWUuJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZW5naW5lID09PSBVc2VyRW5naW5lLlJFRElTKSB7XG4gICAgICB0aGlzLl91c2Vycy5mb3JFYWNoKHVzZXIgPT4ge1xuICAgICAgICBpZiAodXNlci5lbmdpbmUgIT09IFVzZXJFbmdpbmUuUkVESVMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZWRpcyB1c2VyIGdyb3VwIGNhbiBvbmx5IGNvbnRhaW4gUmVkaXMgdXNlcnMuJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgaGFzRGVmYXVsdFVzZXIgPSB0aGlzLl91c2Vycy5zb21lKHVzZXIgPT4gdXNlci51c2VyTmFtZSA9PT0gJ2RlZmF1bHQnKTtcbiAgICAgIGlmICghaGFzRGVmYXVsdFVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVkaXMgdXNlciBncm91cHMgbmVlZCB0byBjb250YWluIGEgdXNlciB3aXRoIHRoZSB1c2VyIG5hbWUgXCJkZWZhdWx0XCIuJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHVzZXIgdG8gdGhpcyB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIGFkZCB0byB0aGUgZ3JvdXBcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRVc2VyKHVzZXI6IElVc2VyKTogdm9pZCB7XG4gICAgdGhpcy5fdXNlcnMucHVzaCh1c2VyKTtcbiAgICB0aGlzLmFkZFVzZXJEZXBlbmRlbmN5KHVzZXIpO1xuICB9XG59XG4iXX0=
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXItZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQTJEO0FBRTNELDJDQUFxSDtBQUNySCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRTFFLHFDQUFzQztBQUd0QyxNQUFNLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQTBEdEY7O0dBRUc7QUFDSCxNQUFzQixhQUFjLFNBQVEsZUFBUTs7SUFvQmxEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBWTs7Ozs7Ozs7OztRQUN6QixNQUFNLElBQUksOEJBQXVCLENBQUMsK0JBQStCLEVBQUUsbUdBQW1HLENBQUMsQ0FBQztLQUN6Szs7QUEzQkgsc0NBNEJDO0FBb0NEOzs7O0dBSUc7SUFFVSxTQUFTOzRCQURyQixvQ0FBa0I7Ozs7c0JBQ1ksYUFBYTs7O3lCQUFyQixTQUFRLFdBQWE7Ozs7bUNBOEx6QyxJQUFBLGtDQUFjLEdBQUU7WUFDakIsd0tBQU8sT0FBTyw2REFHYjtZQWxNSCw2S0FtTUM7Ozs7O1FBbE1DOztXQUVHO1FBQ0ksTUFBTSxDQUFVLHFCQUFxQixHQUFXLHVDQUF1QyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFNO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLDRCQUE0QixJQUFJLENBQUMsQ0FBQztTQUNuRjtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxhQUFxQjtZQUNqRixPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztT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O29CQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssbUJBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDckMsTUFBTSxJQUFJLHNCQUFlLENBQUMsOEJBQThCLEVBQUUsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3BILENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLGtDQUFrQyxFQUFFLHdFQUF3RSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoSixDQUFDO1lBQ0gsQ0FBQztTQUNGO1FBRUQ7Ozs7V0FJRztRQUVJLE9BQU8sQ0FBQyxJQUFXOzs7Ozs7Ozs7O1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5Qjs7WUFsTVUsdURBQVM7Ozs7O0FBQVQsOEJBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Vc2VyR3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IFJlc291cmNlLCBBcm5Gb3JtYXQsIFN0YWNrLCBMYXp5LCBWYWxpZGF0aW9uRXJyb3IsIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBJVXNlciB9IGZyb20gJy4vdXNlci1iYXNlJztcblxuY29uc3QgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1lbGFzdGljYWNoZS5Vc2VyR3JvdXAnKTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyR3JvdXBQcm9wcyB7XG4gIC8qKlxuICAgKiBFbmZvcmNlcyBhIHBhcnRpY3VsYXIgcGh5c2ljYWwgdXNlciBncm91cCBuYW1lLlxuICAgKiBAZGVmYXVsdCA8Z2VuZXJhdGVkPlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICogRW51bSBvcHRpb25zOiBVc2VyRW5naW5lLlZBTEtFWSwgVXNlckVuZ2luZS5SRURJU1xuICAgKlxuICAgKiBAZGVmYXVsdCBVc2VyRW5naW5lLlZBTEtFWVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW5zaWRlIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdXNlcnNcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJzPzogSVVzZXJbXTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVsYXN0aUNhY2hlIFVzZXJHcm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyR3JvdXAgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSB0eXBlIGZvciB0aGUgdXNlciBncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJzPzogSVVzZXJbXTtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYSB1c2VyIHRvIHRoaXMgdXNlciBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gdXNlciBUaGUgdXNlciB0byBhZGRcbiAgICovXG4gIGFkZFVzZXIodXNlcjogSVVzZXIpOiB2b2lkO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFVzZXJHcm91cCBjb25zdHJ1Y3RzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVc2VyR3JvdXBCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVXNlckdyb3VwIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZCBhIHVzZXIgdG8gdGhpcyB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSBfdXNlciBUaGUgdXNlciB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBhZGRVc2VyKF91c2VyOiBJVXNlcik6IHZvaWQge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcignSW1wb3J0ZWRVc2VyR3JvdXBNb2RpZmljYXRpb24nLCAnQ2Fubm90IGFkZCB1c2VycyB0byBhbiBpbXBvcnRlZCBVc2VyR3JvdXAuIE9ubHkgVXNlckdyb3VwcyBjcmVhdGVkIGluIHRoaXMgc3RhY2sgY2FuIGJlIG1vZGlmaWVkLicpO1xuICB9XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgd2hlbiBpbXBvcnRpbmcgYSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyR3JvdXBBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIE9uZSBvZiBgdXNlckdyb3VwTmFtZWAgb3IgYHVzZXJHcm91cEFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJHcm91cEFyblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbmdpbmUgdHlwZSBpcyB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogTGlzdCBvZiB1c2VycyBpbiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZXJzIGFyZSB1bmtub3duXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIE9uZSBvZiBgdXNlckdyb3VwTmFtZWAgb3IgYHVzZXJHcm91cEFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJHcm91cE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cEFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGlDYWNoZTo6VXNlckdyb3VwXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBVc2VyR3JvdXAgZXh0ZW5kcyBVc2VyR3JvdXBCYXNlIHtcbiAgLyoqXG4gICAqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdhd3MtY2RrLWxpYi5hd3MtZWxhc3RpY2FjaGUuVXNlckdyb3VwJztcblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIGBVc2VyR3JvdXBgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVXNlckdyb3VwKHg6IGFueSk6IHggaXMgVXNlckdyb3VwIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgKHgpID09PSAnb2JqZWN0JyAmJiBFTEFTVElDQUNIRV9VU0VSR1JPVVBfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgZ3JvdXAgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIHVzZXJHcm91cE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV4aXN0aW5nIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cE5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlckdyb3VwTmFtZTogc3RyaW5nKTogSVVzZXJHcm91cCB7XG4gICAgcmV0dXJuIFVzZXJHcm91cC5mcm9tVXNlckdyb3VwQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlckdyb3VwTmFtZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBncm91cCBieSBBUk5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXBBcm4gVGhlIEFSTiBvZiB0aGUgZXhpc3RpbmcgdXNlciBncm91cFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVXNlckdyb3VwQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHVzZXJHcm91cEFybjogc3RyaW5nKTogSVVzZXJHcm91cCB7XG4gICAgcmV0dXJuIFVzZXJHcm91cC5mcm9tVXNlckdyb3VwQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlckdyb3VwQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGdyb3VwIHVzaW5nIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBhdHRycyBBIGBVc2VyR3JvdXBBdHRyaWJ1dGVzYCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFVzZXJHcm91cEF0dHJpYnV0ZXMpOiBJVXNlckdyb3VwIHtcbiAgICBsZXQgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAgIGxldCB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIGlmIChhdHRycy51c2VyR3JvdXBBcm4gJiYgYXR0cnMudXNlckdyb3VwTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignQ29uZmxpY3RpbmdVc2VyR3JvdXBJZGVudGlmaWVycycsICdPbmx5IG9uZSBvZiB1c2VyR3JvdXBBcm4gb3IgdXNlckdyb3VwTmFtZSBjYW4gYmUgcHJvdmlkZWQuJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChhdHRycy51c2VyR3JvdXBBcm4pIHtcbiAgICAgIHVzZXJHcm91cEFybiA9IGF0dHJzLnVzZXJHcm91cEFybjtcbiAgICAgIGNvbnN0IGV4dHJhY3RlZFVzZXJHcm91cE5hbWUgPSBzdGFjay5zcGxpdEFybihhdHRycy51c2VyR3JvdXBBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWU7XG4gICAgICBpZiAoIWV4dHJhY3RlZFVzZXJHcm91cE5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZFVzZXJHcm91cEFybicsICdVbmFibGUgdG8gZXh0cmFjdCB1c2VyIGdyb3VwIG5hbWUgZnJvbSBBUk4uJywgc2NvcGUpO1xuICAgICAgfVxuICAgICAgdXNlckdyb3VwTmFtZSA9IGV4dHJhY3RlZFVzZXJHcm91cE5hbWU7XG4gICAgfSBlbHNlIGlmIChhdHRycy51c2VyR3JvdXBOYW1lKSB7XG4gICAgICB1c2VyR3JvdXBOYW1lID0gYXR0cnMudXNlckdyb3VwTmFtZTtcbiAgICAgIHVzZXJHcm91cEFybiA9IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdlbGFzdGljYWNoZScsXG4gICAgICAgIHJlc291cmNlOiAndXNlcmdyb3VwJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy51c2VyR3JvdXBOYW1lLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ01pc3NpbmdVc2VyR3JvdXBJZGVudGlmaWVyJywgJ09uZSBvZiB1c2VyR3JvdXBOYW1lIG9yIHVzZXJHcm91cEFybiBpcyByZXF1aXJlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG5cbiAgICAgIHB1YmxpYyBnZXQgdXNlcnMoKTogSVVzZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBhdHRycy51c2VycyA/IFsuLi5hdHRycy51c2Vyc10gOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0cnVjdG9yKF91c2VyR3JvdXBBcm46IHN0cmluZywgX3VzZXJHcm91cE5hbWU6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgICAgICB0aGlzLnVzZXJHcm91cEFybiA9IF91c2VyR3JvdXBBcm47XG4gICAgICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IF91c2VyR3JvdXBOYW1lO1xuICAgICAgICB0aGlzLmVuZ2luZSA9IGF0dHJzLmVuZ2luZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh1c2VyR3JvdXBBcm4sIHVzZXJHcm91cE5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZXJzOiBJVXNlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICogQ2FuIGJlICdjcmVhdGluZycsICdhY3RpdmUnLCAnbW9kaWZ5aW5nJywgJ2RlbGV0aW5nJ1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwU3RhdHVzOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogQ2ZuVXNlckdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBVc2VyR3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuZW5naW5lID0gcHJvcHMuZW5naW5lID8/IFVzZXJFbmdpbmUuVkFMS0VZO1xuICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IHByb3BzLnVzZXJHcm91cE5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgLy8gRWxhc3RpQ2FjaGUgaXMgYWxsb3dpbmcgb25seSB1cHBlcmNhc2UgYW5kIG1heCA0MCBjaGFyYWN0ZXJzIGZvciB1c2VyIGdyb3VwIGlkXG4gICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDQwIH0pLnRvTG9jYWxlTG93ZXJDYXNlKCksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudXNlcnMpIHtcbiAgICAgIHRoaXMuX3VzZXJzLnB1c2goLi4ucHJvcHMudXNlcnMpO1xuICAgIH1cblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVXNlckdyb3VwKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGVuZ2luZTogdGhpcy5lbmdpbmUsXG4gICAgICB1c2VyR3JvdXBJZDogdGhpcy51c2VyR3JvdXBOYW1lLFxuICAgICAgdXNlcklkczogTGF6eS5saXN0KHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVVc2VycygpO1xuICAgICAgICAgIHJldHVybiB0aGlzLl91c2Vycy5tYXAodXNlciA9PiB1c2VyLnVzZXJJZCk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy51c2Vycykge1xuICAgICAgcHJvcHMudXNlcnMuZm9yRWFjaCh1c2VyID0+IHRoaXMuYWRkVXNlckRlcGVuZGVuY3kodXNlcikpO1xuICAgIH1cblxuICAgIHRoaXMudXNlckdyb3VwQXJuID0gdGhpcy5yZXNvdXJjZS5hdHRyQXJuO1xuICAgIHRoaXMudXNlckdyb3VwU3RhdHVzID0gdGhpcy5yZXNvdXJjZS5hdHRyU3RhdHVzO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIEVMQVNUSUNBQ0hFX1VTRVJHUk9VUF9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgQ2xvdWRGb3JtYXRpb24gZGVwZW5kZW5jeSBvbiB0aGUgdXNlciByZXNvdXJjZSB0byBlbnN1cmUgcHJvcGVyIGNyZWF0aW9uIG9yZGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRVc2VyRGVwZW5kZW5jeSh1c2VyOiBJVXNlcik6IHZvaWQge1xuICAgIHRoaXMucmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHVzZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIERvIG5vdCBwdXNoIGRpcmVjdGx5IHRvIHRoaXMgYXJyYXkuXG4gICAqIFVzZSBhZGRVc2VyKCkgaW5zdGVhZCB0byBlbnN1cmUgcHJvcGVyIHZhbGlkYXRpb24gYW5kIGRlcGVuZGVuY3kgbWFuYWdlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdXNlcnMoKTogSVVzZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB1c2VycyBpbiB0aGUgdXNlciBncm91cCBmb3IgZHVwbGljYXRlIHVzZXJuYW1lcyBhbmQgUmVkaXMtc3BlY2lmaWMgcmVxdWlyZW1lbnRzLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVVzZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJOYW1lcyA9IHRoaXMuX3VzZXJzLm1hcCh1c2VyID0+IHVzZXIudXNlck5hbWUpO1xuICAgIGNvbnN0IGR1cGxpY2F0ZXMgPSB1c2VyTmFtZXMuZmlsdGVyKChuYW1lLCBpbmRleCkgPT4gdXNlck5hbWVzLmluZGV4T2YobmFtZSkgIT09IGluZGV4KTtcbiAgICBpZiAoZHVwbGljYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdEdXBsaWNhdGVVc2VyTmFtZScsICdVc2VyIGdyb3VwIGNhbm5vdCBoYXZlIHVzZXJzIHdpdGggdGhlIHNhbWUgdXNlciBuYW1lLicsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVuZ2luZSA9PT0gVXNlckVuZ2luZS5SRURJUykge1xuICAgICAgdGhpcy5fdXNlcnMuZm9yRWFjaCh1c2VyID0+IHtcbiAgICAgICAgaWYgKHVzZXIuZW5naW5lICE9PSBVc2VyRW5naW5lLlJFRElTKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVkaXNVc2VyR3JvdXBFbmdpbmVNaXNtYXRjaCcsICdSZWRpcyB1c2VyIGdyb3VwIGNhbiBvbmx5IGNvbnRhaW4gUmVkaXMgdXNlcnMuJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgaGFzRGVmYXVsdFVzZXIgPSB0aGlzLl91c2Vycy5zb21lKHVzZXIgPT4gdXNlci51c2VyTmFtZSA9PT0gJ2RlZmF1bHQnKTtcbiAgICAgIGlmICghaGFzRGVmYXVsdFVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVkaXNVc2VyR3JvdXBNaXNzaW5nRGVmYXVsdFVzZXInLCAnUmVkaXMgdXNlciBncm91cHMgbmVlZCB0byBjb250YWluIGEgdXNlciB3aXRoIHRoZSB1c2VyIG5hbWUgXCJkZWZhdWx0XCIuJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHVzZXIgdG8gdGhpcyB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIGFkZCB0byB0aGUgZ3JvdXBcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRVc2VyKHVzZXI6IElVc2VyKTogdm9pZCB7XG4gICAgdGhpcy5fdXNlcnMucHVzaCh1c2VyKTtcbiAgICB0aGlzLmFkZFVzZXJEZXBlbmRlbmN5KHVzZXIpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-elasticache-alpha",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.244.0-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The CDK Construct Library for AWS::ElastiCache",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -85,18 +85,18 @@
|
|
|
85
85
|
},
|
|
86
86
|
"license": "Apache-2.0",
|
|
87
87
|
"devDependencies": {
|
|
88
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
88
|
+
"@aws-cdk/cdk-build-tools": "2.244.0-alpha.0",
|
|
89
89
|
"@aws-cdk/integ-runner": "^2.196.1",
|
|
90
|
-
"@aws-cdk/pkglint": "2.
|
|
90
|
+
"@aws-cdk/pkglint": "2.244.0-alpha.0",
|
|
91
91
|
"@types/jest": "^29.5.14",
|
|
92
92
|
"jest": "^29.7.0",
|
|
93
|
-
"aws-cdk-lib": "2.
|
|
93
|
+
"aws-cdk-lib": "2.244.0",
|
|
94
94
|
"constructs": "^10.5.0",
|
|
95
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
95
|
+
"@aws-cdk/integ-tests-alpha": "2.244.0-alpha.0"
|
|
96
96
|
},
|
|
97
97
|
"dependencies": {},
|
|
98
98
|
"peerDependencies": {
|
|
99
|
-
"aws-cdk-lib": "^2.
|
|
99
|
+
"aws-cdk-lib": "^2.244.0",
|
|
100
100
|
"constructs": "^10.5.0"
|
|
101
101
|
},
|
|
102
102
|
"engines": {
|