@aws-cdk/aws-ec2-alpha 2.171.0-alpha.0 → 2.172.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 +2 -2
- package/.jsii.tabl.json.gz +0 -0
- package/lib/ipam.js +1 -1
- package/lib/route.js +9 -9
- package/lib/subnet-v2.js +2 -2
- package/lib/util.js +1 -1
- package/lib/vpc-v2-base.js +2 -2
- package/lib/vpc-v2.js +3 -3
- package/package.json +7 -7
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.172.0",
|
|
12
12
|
"constructs": "^10.0.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -9907,6 +9907,6 @@
|
|
|
9907
9907
|
"symbolId": "lib/vpc-v2:VpcV2Props"
|
|
9908
9908
|
}
|
|
9909
9909
|
},
|
|
9910
|
-
"version": "2.
|
|
9910
|
+
"version": "2.172.0-alpha.0",
|
|
9911
9911
|
"fingerprint": "**********"
|
|
9912
9912
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/lib/ipam.js
CHANGED
|
@@ -236,7 +236,7 @@ class Ipam extends aws_cdk_lib_1.Resource {
|
|
|
236
236
|
}
|
|
237
237
|
exports.Ipam = Ipam;
|
|
238
238
|
_a = JSII_RTTI_SYMBOL_1;
|
|
239
|
-
Ipam[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.Ipam", version: "2.
|
|
239
|
+
Ipam[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.Ipam", version: "2.172.0-alpha.0" };
|
|
240
240
|
/**
|
|
241
241
|
* Function to create IpamPool under scope
|
|
242
242
|
* @internal
|
package/lib/route.js
CHANGED
|
@@ -49,7 +49,7 @@ class EgressOnlyInternetGateway extends core_1.Resource {
|
|
|
49
49
|
}
|
|
50
50
|
exports.EgressOnlyInternetGateway = EgressOnlyInternetGateway;
|
|
51
51
|
_a = JSII_RTTI_SYMBOL_1;
|
|
52
|
-
EgressOnlyInternetGateway[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.EgressOnlyInternetGateway", version: "2.
|
|
52
|
+
EgressOnlyInternetGateway[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.EgressOnlyInternetGateway", version: "2.172.0-alpha.0" };
|
|
53
53
|
/**
|
|
54
54
|
* Creates an internet gateway
|
|
55
55
|
* @resource AWS::EC2::InternetGateway
|
|
@@ -79,7 +79,7 @@ class InternetGateway extends core_1.Resource {
|
|
|
79
79
|
}
|
|
80
80
|
exports.InternetGateway = InternetGateway;
|
|
81
81
|
_b = JSII_RTTI_SYMBOL_1;
|
|
82
|
-
InternetGateway[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.InternetGateway", version: "2.
|
|
82
|
+
InternetGateway[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.InternetGateway", version: "2.172.0-alpha.0" };
|
|
83
83
|
/**
|
|
84
84
|
* Creates a virtual private gateway
|
|
85
85
|
* @resource AWS::EC2::VPNGateway
|
|
@@ -127,7 +127,7 @@ class VPNGatewayV2 extends core_1.Resource {
|
|
|
127
127
|
}
|
|
128
128
|
exports.VPNGatewayV2 = VPNGatewayV2;
|
|
129
129
|
_c = JSII_RTTI_SYMBOL_1;
|
|
130
|
-
VPNGatewayV2[_c] = { fqn: "@aws-cdk/aws-ec2-alpha.VPNGatewayV2", version: "2.
|
|
130
|
+
VPNGatewayV2[_c] = { fqn: "@aws-cdk/aws-ec2-alpha.VPNGatewayV2", version: "2.172.0-alpha.0" };
|
|
131
131
|
/**
|
|
132
132
|
* Creates a network address translation (NAT) gateway
|
|
133
133
|
* @resource AWS::EC2::NatGateway
|
|
@@ -179,7 +179,7 @@ class NatGateway extends core_1.Resource {
|
|
|
179
179
|
}
|
|
180
180
|
exports.NatGateway = NatGateway;
|
|
181
181
|
_d = JSII_RTTI_SYMBOL_1;
|
|
182
|
-
NatGateway[_d] = { fqn: "@aws-cdk/aws-ec2-alpha.NatGateway", version: "2.
|
|
182
|
+
NatGateway[_d] = { fqn: "@aws-cdk/aws-ec2-alpha.NatGateway", version: "2.172.0-alpha.0" };
|
|
183
183
|
/**
|
|
184
184
|
* Creates a peering connection between two VPCs
|
|
185
185
|
* @resource AWS::EC2::VPCPeeringConnection
|
|
@@ -255,7 +255,7 @@ class VPCPeeringConnection extends core_1.Resource {
|
|
|
255
255
|
}
|
|
256
256
|
exports.VPCPeeringConnection = VPCPeeringConnection;
|
|
257
257
|
_e = JSII_RTTI_SYMBOL_1;
|
|
258
|
-
VPCPeeringConnection[_e] = { fqn: "@aws-cdk/aws-ec2-alpha.VPCPeeringConnection", version: "2.
|
|
258
|
+
VPCPeeringConnection[_e] = { fqn: "@aws-cdk/aws-ec2-alpha.VPCPeeringConnection", version: "2.172.0-alpha.0" };
|
|
259
259
|
/**
|
|
260
260
|
* The gateway or endpoint targeted by the route.
|
|
261
261
|
*/
|
|
@@ -281,7 +281,7 @@ class RouteTargetType {
|
|
|
281
281
|
}
|
|
282
282
|
exports.RouteTargetType = RouteTargetType;
|
|
283
283
|
_f = JSII_RTTI_SYMBOL_1;
|
|
284
|
-
RouteTargetType[_f] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTargetType", version: "2.
|
|
284
|
+
RouteTargetType[_f] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTargetType", version: "2.172.0-alpha.0" };
|
|
285
285
|
/**
|
|
286
286
|
* Creates a new route with added functionality.
|
|
287
287
|
* @resource AWS::EC2::Route
|
|
@@ -335,7 +335,7 @@ class Route extends core_1.Resource {
|
|
|
335
335
|
}
|
|
336
336
|
exports.Route = Route;
|
|
337
337
|
_g = JSII_RTTI_SYMBOL_1;
|
|
338
|
-
Route[_g] = { fqn: "@aws-cdk/aws-ec2-alpha.Route", version: "2.
|
|
338
|
+
Route[_g] = { fqn: "@aws-cdk/aws-ec2-alpha.Route", version: "2.172.0-alpha.0" };
|
|
339
339
|
/**
|
|
340
340
|
* Creates a route table for the specified VPC
|
|
341
341
|
* @resource AWS::EC2::RouteTable
|
|
@@ -383,7 +383,7 @@ class RouteTable extends core_1.Resource {
|
|
|
383
383
|
}
|
|
384
384
|
exports.RouteTable = RouteTable;
|
|
385
385
|
_h = JSII_RTTI_SYMBOL_1;
|
|
386
|
-
RouteTable[_h] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTable", version: "2.
|
|
386
|
+
RouteTable[_h] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTable", version: "2.172.0-alpha.0" };
|
|
387
387
|
function routerTypeToPropName(routerType) {
|
|
388
388
|
return ({
|
|
389
389
|
[aws_ec2_1.RouterType.CARRIER_GATEWAY]: 'carrierGatewayId',
|
|
@@ -398,4 +398,4 @@ function routerTypeToPropName(routerType) {
|
|
|
398
398
|
[aws_ec2_1.RouterType.VPC_ENDPOINT]: 'vpcEndpointId',
|
|
399
399
|
})[routerType];
|
|
400
400
|
}
|
|
401
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBa1M7QUFFbFMsMkNBQThFO0FBRTlFLGlDQUFtRTtBQUduRTs7OztHQUlHO0FBQ0gsSUFBWSxtQkFTWDtBQVRELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsd0NBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCwwQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVFcsbUJBQW1CLG1DQUFuQixtQkFBbUIsUUFTOUI7QUE4TEQ7OztHQUdHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxlQUFRO0lBZ0JyRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzsrQ0FqQlIseUJBQXlCOzs7O1FBbUJsQyxJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFVLENBQUMsNEJBQTRCLENBQUM7UUFFMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNDQUE0QixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDN0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSztTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7S0FDNUM7O0FBM0JILDhEQTRCQzs7O0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLGVBQVE7SUFxQjNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7OytDQXRCUixlQUFlOzs7O1FBd0J4QixJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDO1FBRXJDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw0QkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDO1FBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFN0IsSUFBSSxpQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ2hELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYztTQUN2QyxDQUFDLENBQUM7S0FDSjs7QUFwQ0gsMENBcUNDOzs7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSxlQUFRO0lBK0J4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzsrQ0FoQ1IsWUFBWTs7OztRQWtDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQztRQUVyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQzdDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUV2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFFckQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksaUNBQXVCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUMvRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1NBQzdDLENBQUMsQ0FBQztRQUVILHFFQUFxRTtRQUNyRSxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7UUFDNUQsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEYsTUFBTSxhQUFhLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0Isa0JBQVcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLDJDQUEyQyxFQUFFLG1DQUFtQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDck0sQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHVDQUE2QixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUNuRixhQUFhO1lBQ2IsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ2xDLENBQUMsQ0FBQztRQUNILCtFQUErRTtRQUMvRSxpREFBaUQ7UUFDakQsZ0hBQWdIO1FBQ2hILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM3RDs7QUFuRUgsb0NBb0VDOzs7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFVBQVcsU0FBUSxlQUFRO0lBK0J0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzsrQ0FoQ1IsVUFBVTs7OztRQWtDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLFdBQVcsQ0FBQztRQUV6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUM3RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLGVBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxJQUFJLEdBQXVCLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxnQkFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7b0JBQ2hDLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUs7aUJBQ3pCLENBQUMsQ0FBQztnQkFDSCxHQUFHLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx1QkFBYSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDcEQsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUMvQixZQUFZLEVBQUUsR0FBRztZQUNqQix1QkFBdUIsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFO1lBQzVELHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDcEQsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0tBQ3ZFOztBQXJFSCxnQ0FzRUM7OztBQUVEOzs7R0FHRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsZUFBUTtJQWlCaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQztRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBbEJSLG9CQUFvQjs7OztRQW9CN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLHNCQUFzQixDQUFDO1FBRXBELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBRTlGLElBQUksQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxjQUFjLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkYsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMscUZBQXFGLENBQUMsQ0FBQztRQUN6RyxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGlDQUF1QixDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUN4RSxLQUFLLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQy9CLFNBQVMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUs7WUFDbEMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYztZQUM3QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNO1lBQ3BDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDNUQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0tBQ3hDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLHNCQUFzQixDQUFDLFlBQW9CLEVBQUUsV0FBbUI7UUFFdEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbEQsSUFBSSxZQUFZLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNwQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLGtCQUFrQjtpQkFDbkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztpQkFDN0IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksV0FBVyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDbkMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0I7aUJBQ2pELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7aUJBQzdCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxLQUFLLE1BQU0sYUFBYSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNwRCxNQUFNLGdCQUFnQixHQUFxQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUU1RixLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLGdCQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sZUFBZSxHQUFxQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFFekYsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7b0JBQ3BFLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7O0FBekZILG9EQTJGQzs7O0FBdUJEOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBaUIxQixZQUFZLEtBQXVCOzs7Ozs7K0NBakJ4QixlQUFlOzs7O1FBa0J4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3RSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDL0UsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2pDLENBQUM7S0FDRjs7QUF4QkgsMENBeUJDOzs7QUF5REQ7OztHQUdHO0FBQ0gsTUFBYSxLQUFNLFNBQVEsZUFBUTtJQXVDakMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQjtRQUN6RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBeENSLEtBQUs7Ozs7UUEwQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsTUFBTSxpQkFBaUIsR0FBRyxtQkFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDL0MsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLG9CQUFVLENBQUMsNEJBQTRCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNyRyxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxvQkFBVSxDQUFDLFlBQVksQ0FBQztRQUV2RywrR0FBK0c7UUFDL0csSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLFlBQVksNEJBQWtCLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVk7Z0JBQzFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQzlDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQ2xELENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3ZHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDbkUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFdkMsaUVBQWlFO1FBQ2pFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDO0tBQ0Y7O0FBN0VILHNCQThFQzs7O0FBbUJEOzs7R0FHRztBQUNILE1BQWEsVUFBVyxTQUFRLGVBQVE7SUFXdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBWlIsVUFBVTs7OztRQWNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3BELEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUV2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7S0FDcEQ7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxFQUFVLEVBQUUsV0FBbUIsRUFBRSxNQUF1Qjs7Ozs7Ozs7OztRQUN0RSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2xCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO0tBQ0o7O0FBbENILGdDQW1DQzs7O0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxVQUFzQjtJQUNsRCxPQUFPLENBQUM7UUFDTixDQUFDLG9CQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsa0JBQWtCO1FBQ2hELENBQUMsb0JBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLDZCQUE2QjtRQUN4RSxDQUFDLG9CQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVztRQUNqQyxDQUFDLG9CQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWTtRQUNuQyxDQUFDLG9CQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsZ0JBQWdCO1FBQzVDLENBQUMsb0JBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxjQUFjO1FBQ3hDLENBQUMsb0JBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLG9CQUFvQjtRQUNwRCxDQUFDLG9CQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsa0JBQWtCO1FBQ2hELENBQUMsb0JBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLHdCQUF3QjtRQUM3RCxDQUFDLG9CQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsZUFBZTtLQUMzQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbkVJUCwgQ2ZuRWdyZXNzT25seUludGVybmV0R2F0ZXdheSwgQ2ZuSW50ZXJuZXRHYXRld2F5LCBDZm5OYXRHYXRld2F5LCBDZm5WUENQZWVyaW5nQ29ubmVjdGlvbiwgQ2ZuUm91dGUsIENmblJvdXRlVGFibGUsIENmblZQQ0dhdGV3YXlBdHRhY2htZW50LCBDZm5WUE5HYXRld2F5LCBDZm5WUE5HYXRld2F5Um91dGVQcm9wYWdhdGlvbiwgR2F0ZXdheVZwY0VuZHBvaW50LCBJUm91dGVUYWJsZSwgSVZwY0VuZHBvaW50LCBSb3V0ZXJUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBbm5vdGF0aW9ucywgRHVyYXRpb24sIElSZXNvdXJjZSwgUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IElWcGNWMiwgVlBOR2F0ZXdheVYyT3B0aW9ucyB9IGZyb20gJy4vdnBjLXYyLWJhc2UnO1xuaW1wb3J0IHsgTmV0d29ya1V0aWxzLCBhbGxSb3V0ZVRhYmxlSWRzLCBDaWRyQmxvY2sgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSVN1Ym5ldFYyIH0gZnJvbSAnLi9zdWJuZXQtdjInO1xuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBOQVQgZ2F0ZXdheSBzdXBwb3J0cyBwdWJsaWMgb3IgcHJpdmF0ZSBjb25uZWN0aXZpdHkuXG4gKiBUaGUgZGVmYXVsdCBpcyBwdWJsaWMgY29ubmVjdGl2aXR5LlxuICogU2VlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLW5hdGdhdGV3YXkuaHRtbCNjZm4tZWMyLW5hdGdhdGV3YXktY29ubmVjdGl2aXR5dHlwZVxuICovXG5leHBvcnQgZW51bSBOYXRDb25uZWN0aXZpdHlUeXBlIHtcbiAgLyoqXG4gICAqIFNldHMgQ29ubmVjdGl2aXR5IHR5cGUgdG8gUFVCTElDXG4gICAqL1xuICBQVUJMSUMgPSAncHVibGljJyxcbiAgLyoqXG4gICAqIFNldHMgQ29ubmVjdGl2aXR5IHR5cGUgdG8gUFJJVkFURVxuICAgKi9cbiAgUFJJVkFURSA9ICdwcml2YXRlJyxcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIGEgcm91dGluZyB0YXJnZXQsIHN1Y2ggYXMgYW5cbiAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIGVuZHBvaW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVRhcmdldCBleHRlbmRzIElEZXBlbmRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhbiBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByZXNvdXJjZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhbiBpbnRlcm5ldCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmV0R2F0ZXdheVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGZvciB3aGljaCB0byBjcmVhdGUgdGhlIGludGVybmV0IGdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSB2cGM6IElWcGNWMjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIGludGVybmV0IGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJlc291cmNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIFZQTiBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQTkdhdGV3YXlWMlByb3BzIGV4dGVuZHMgVlBOR2F0ZXdheVYyT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGZvciB3aGljaCB0byBjcmVhdGUgdGhlIFZQTiBnYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgYSBOQVQgZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRHYXRld2F5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc3VibmV0IGluIHdoaWNoIHRoZSBOQVQgZ2F0ZXdheSBpcyBsb2NhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0OiBJU3VibmV0VjI7XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRpb25JRCBvZiBFbGFzdGljIElQIGFkZHJlc3MgdGhhdCdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgTkFUIGdhdGV3YXkuIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgZm9yIGEgcHVibGljIE5BVFxuICAgKiBnYXRld2F5IGFuZCBjYW5ub3QgYmUgc3BlY2lmaWVkIHdpdGggYSBwcml2YXRlIE5BVCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF0dHIuYWxsb2NhdGlvbklEIG9mIGEgbmV3IEVsYXN0aWMgSVAgY3JlYXRlZCBieSBkZWZhdWx0XG4gICAqIC8vVE9ETzogQUREIEwyIGZvciBlbGFzdGljIGlwXG4gICAqL1xuICByZWFkb25seSBhbGxvY2F0aW9uSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBOQVQgZ2F0ZXdheSBzdXBwb3J0cyBwdWJsaWMgb3IgcHJpdmF0ZSBjb25uZWN0aXZpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5hdENvbm5lY3Rpdml0eVR5cGUuUHVibGljXG4gICAqL1xuICByZWFkb25seSBjb25uZWN0aXZpdHlUeXBlPzogTmF0Q29ubmVjdGl2aXR5VHlwZTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2libHkgcmVsZWFzaW5nIHRoZVxuICAgKiBJUCBhZGRyZXNzZXMgaWYgY29ubmVjdGlvbnMgYXJlIHN0aWxsIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAzNTBzZWNvbmRzXG4gICAqL1xuICByZWFkb25seSBtYXhEcmFpbkR1cmF0aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBwcml2YXRlIElQdjQgYWRkcmVzcyB0byBhc3NpZ24gdG8gdGhlIE5BVCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHlvdSBkb24ndCBwcm92aWRlIGFuIGFkZHJlc3MsIGEgcHJpdmF0ZSBJUHY0IGFkZHJlc3Mgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZUlwQWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IEVJUCBhbGxvY2F0aW9uIElEcy5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLW5hdC1nYXRld2F5Lmh0bWwjbmF0LWdhdGV3YXktY3JlYXRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWNvbmRhcnkgYWxsb2NhdGlvbiBJRHMgYXR0YWNoZWQgdG8gTkFUR1dcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUFsbG9jYXRpb25JZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBzZWNvbmRhcnkgcHJpdmF0ZSBJUHY0IGFkZHJlc3NlcyB5b3VcbiAgICogd2FudCB0byBhc3NpZ24gdG8gdGhlIE5BVCBnYXRld2F5LlxuICAgKlxuICAgKiBgU2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc0NvdW50YCBhbmQgYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3Nlc2AgY2Fubm90IGJlXG4gICAqIHNldCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtbmF0LWdhdGV3YXkuaHRtbCNuYXQtZ2F0ZXdheS1jcmVhdGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNlY29uZGFyeSBhbGxvY2F0aW9uIElEcyBhc3NvY2lhdGVkIHdpdGggTkFUR1dcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzZXMuXG4gICAqXG4gICAqIGBTZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnRgIGFuZCBgU2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc2VzYCBjYW5ub3QgYmVcbiAgICogc2V0IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sI25hdC1nYXRld2F5LWNyZWF0aW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2Vjb25kYXJ5IHByaXZhdGUgSXBBZGRyZXNzZXMgYXNzb2NpYXRlZCB3aXRoIE5BVEdXXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIE5BVCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5BVEdXIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hdEdhdGV3YXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgTkFUIGdhdGV3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0R2F0ZXdheVByb3BzIGV4dGVuZHMgTmF0R2F0ZXdheU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgaW4gd2hpY2ggdGhlIE5BVCBnYXRld2F5IGlzIGxvY2F0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZWxhc3RpYyBpcCBhc3NvY2lhdGVkLCByZXF1aXJlZCBpbiBjYXNlIG9mIHB1YmxpYyBjb25uZWN0aXZpdHkgaWYgYEFsbG9jYXRpb25JZGAgaXMgbm90IGRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGNWMjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBhIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhhdCBpcyBhY2NlcHRpbmcgdGhlIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFjY2VwdG9yVnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIGFybiBjcmVhdGVkIGluIHRoZSBhY2NlcHRvciBhY2NvdW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHBlZXJSb2xlQXJuIG5lZWRlZCBpZiBub3QgY3Jvc3MgYWNjb3VudCBjb25uZWN0aW9uXG4gICAqL1xuICByZWFkb25seSBwZWVyUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwZWVyaW5nIGNvbm5lY3Rpb24gcHJvdmlzaW9uZWQgd2l0aG91dCBhbnkgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjUGVlcmluZ0Nvbm5lY3Rpb25OYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUENQZWVyaW5nQ29ubmVjdGlvblByb3BzIGV4dGVuZHMgVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhhdCBpcyByZXF1ZXN0aW5nIHRoZSBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0b3JWcGM6IElWcGNWMjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6RWdyZXNzT25seUludGVybmV0R2F0ZXdheVxuICovXG5leHBvcnQgY2xhc3MgRWdyZXNzT25seUludGVybmV0R2F0ZXdheSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBDZm5FZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5FZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KHRoaXMsICdFSUdXJywge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwYy52cGNJZCxcbiAgICB9KTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmF0dHJJZDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gaW50ZXJuZXQgZ2F0ZXdheVxuICogQHJlc291cmNlIEFXUzo6RUMyOjpJbnRlcm5ldEdhdGV3YXlcbiAqL1xuZXhwb3J0IGNsYXNzIEludGVybmV0R2F0ZXdheSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuZXQgZ2F0ZXdheSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmbkludGVybmV0R2F0ZXdheTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSW50ZXJuZXRHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5HQVRFV0FZO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5JbnRlcm5ldEdhdGV3YXkodGhpcywgJ0lHVycsIHt9KTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmF0dHJJbnRlcm5ldEdhdGV3YXlJZDtcbiAgICB0aGlzLnZwY0lkID0gcHJvcHMudnBjLnZwY0lkO1xuXG4gICAgbmV3IENmblZQQ0dhdGV3YXlBdHRhY2htZW50KHRoaXMsICdHV0F0dGFjaG1lbnQnLCB7XG4gICAgICB2cGNJZDogdGhpcy52cGNJZCxcbiAgICAgIGludGVybmV0R2F0ZXdheUlkOiB0aGlzLnJvdXRlclRhcmdldElkLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHZpcnR1YWwgcHJpdmF0ZSBnYXRld2F5XG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlZQTkdhdGV3YXlcbiAqL1xuZXhwb3J0IGNsYXNzIFZQTkdhdGV3YXlWMiBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgVlBOIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQTiBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBOR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIFZQTiBHYXRld2F5IEF0dGFjaG1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2F0dGFjaG1lbnQ6IENmblZQQ0dhdGV3YXlBdHRhY2htZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgVlBOIEdhdGV3YXkgUm91dGUgUHJvcG9nYXRpb25cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlUHJvcGFnYXRpb246IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUE5HYXRld2F5VjJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLkdBVEVXQVk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblZQTkdhdGV3YXkodGhpcywgJ0lHVycsIHtcbiAgICAgIHR5cGU6IHByb3BzLnR5cGUsXG4gICAgICBhbWF6b25TaWRlQXNuOiBwcm9wcy5hbWF6b25TaWRlQXNuLFxuICAgIH0pO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IHRoaXMucmVzb3VyY2UuYXR0clZwbkdhdGV3YXlJZDtcblxuICAgIHRoaXMudnBjSWQgPSBwcm9wcy52cGMudnBjSWQ7XG4gICAgdGhpcy5fYXR0YWNobWVudCA9IG5ldyBDZm5WUENHYXRld2F5QXR0YWNobWVudCh0aGlzLCAnVlBDVlBOR1cnLCB7XG4gICAgICB2cGNJZDogdGhpcy52cGNJZCxcbiAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5yZXNvdXJjZS5hdHRyVnBuR2F0ZXdheUlkLFxuICAgIH0pO1xuXG4gICAgLy8gUHJvcGFnYXRlIHJvdXRlcyBvbiByb3V0ZSB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByaWdodCBzdWJuZXRzXG4gICAgY29uc3QgdnBuUm91dGVQcm9wYWdhdGlvbiA9IHByb3BzLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW107XG4gICAgY29uc3Qgc3VibmV0cyA9IHZwblJvdXRlUHJvcGFnYXRpb24ubWFwKHMgPT4gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cykuZmxhdCgpO1xuICAgIGNvbnN0IHJvdXRlVGFibGVJZHMgPSBhbGxSb3V0ZVRhYmxlSWRzKHN1Ym5ldHMpO1xuXG4gICAgaWYgKHJvdXRlVGFibGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZihzY29wZSkuYWRkV2FybmluZ1YyKCdAYXdzLWNkazphd3MtZWMyLWVscGhhOmVuYWJsZVZwbkdhdGV3YXlWMicsIGBObyBzdWJuZXRzIG1hdGNoaW5nIHNlbGVjdGlvbjogJyR7SlNPTi5zdHJpbmdpZnkodnBuUm91dGVQcm9wYWdhdGlvbil9Jy4gU2VsZWN0IG90aGVyIHN1Ym5ldHMgdG8gYWRkIHJvdXRlcyB0by5gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uID0gbmV3IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uKHRoaXMsICdSb3V0ZVByb3BhZ2F0aW9uJywge1xuICAgICAgcm91dGVUYWJsZUlkcyxcbiAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICB9KTtcbiAgICAvLyBUaGUgQVdTOjpFQzI6OlZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uIHJlc291cmNlIGNhbm5vdCB1c2UgdGhlIFZQTiBnYXRld2F5XG4gICAgLy8gdW50aWwgaXQgaGFzIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZCB0byB0aGUgVlBDLlxuICAgIC8vIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwbi1nYXRld2F5cm91dGVwcm9wLmh0bWxcbiAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLl9hdHRhY2htZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXR3b3JrIGFkZHJlc3MgdHJhbnNsYXRpb24gKE5BVCkgZ2F0ZXdheVxuICogQHJlc291cmNlIEFXUzo6RUMyOjpOYXRHYXRld2F5XG4gKi9cbmV4cG9ydCBjbGFzcyBOYXRHYXRld2F5IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBwdWJsaWNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aXZpdHlUeXBlPzogTmF0Q29ubmVjdGl2aXR5VHlwZTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2libHkgcmVsZWFzaW5nIHRoZVxuICAgKiBJUCBhZGRyZXNzZXMgaWYgY29ubmVjdGlvbnMgYXJlIHN0aWxsIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnMzUwIHNlY29uZHMnXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF4RHJhaW5EdXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgTkFUIGdhdGV3YXkgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBDZm5OYXRHYXRld2F5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOYXRHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5OQVRfR0FURVdBWTtcblxuICAgIHRoaXMuY29ubmVjdGl2aXR5VHlwZSA9IHByb3BzLmNvbm5lY3Rpdml0eVR5cGUgfHwgTmF0Q29ubmVjdGl2aXR5VHlwZS5QVUJMSUM7XG4gICAgdGhpcy5tYXhEcmFpbkR1cmF0aW9uID0gcHJvcHMubWF4RHJhaW5EdXJhdGlvbiB8fCBEdXJhdGlvbi5zZWNvbmRzKDM1MCk7XG5cbiAgICBpZiAodGhpcy5jb25uZWN0aXZpdHlUeXBlID09PSBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQykge1xuICAgICAgaWYgKCFwcm9wcy52cGMgJiYgIXByb3BzLmFsbG9jYXRpb25JZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBwcm92aWRlIHZwYyBvciBhbGxvY2F0aW9uSWQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB1c2VyIGRvZXMgbm90IHByb3ZpZGUgRUlQLCBnZW5lcmF0ZSBvbmUgZm9yIHRoZW1cbiAgICB2YXIgYUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuY29ubmVjdGl2aXR5VHlwZSA9PT0gTmF0Q29ubmVjdGl2aXR5VHlwZS5QVUJMSUMpIHtcbiAgICAgIGlmICghcHJvcHMuYWxsb2NhdGlvbklkKSB7XG4gICAgICAgIGxldCBlaXAgPSBuZXcgQ2ZuRUlQKHRoaXMsICdFSVAnLCB7XG4gICAgICAgICAgZG9tYWluOiBwcm9wcy52cGM/LnZwY0lkLFxuICAgICAgICB9KTtcbiAgICAgICAgYUlkID0gZWlwLmF0dHJBbGxvY2F0aW9uSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhSWQgPSBwcm9wcy5hbGxvY2F0aW9uSWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5OYXRHYXRld2F5KHRoaXMsICdOQVRHYXRld2F5Jywge1xuICAgICAgc3VibmV0SWQ6IHByb3BzLnN1Ym5ldC5zdWJuZXRJZCxcbiAgICAgIGFsbG9jYXRpb25JZDogYUlkLFxuICAgICAgbWF4RHJhaW5EdXJhdGlvblNlY29uZHM6IHByb3BzLm1heERyYWluRHVyYXRpb24/LnRvU2Vjb25kcygpLFxuICAgICAgc2Vjb25kYXJ5QWxsb2NhdGlvbklkczogcHJvcHMuc2Vjb25kYXJ5QWxsb2NhdGlvbklkcyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IHRoaXMucmVzb3VyY2UuYXR0ck5hdEdhdGV3YXlJZDtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5zdWJuZXQuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcGVlcmluZyBjb25uZWN0aW9uIGJldHdlZW4gdHdvIFZQQ3NcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6VlBDUGVlcmluZ0Nvbm5lY3Rpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFZQQ1BlZXJpbmdDb25uZWN0aW9uIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdXNlZCBpbiB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgcGVlcmluZyBjb25uZWN0aW9uIENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBDUGVlcmluZ0Nvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZQQ1BlZXJpbmdDb25uZWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5WUENfUEVFUklOR19DT05ORUNUSU9OO1xuXG4gICAgY29uc3QgaXNDcm9zc0FjY291bnQgPSBwcm9wcy5yZXF1ZXN0b3JWcGMub3duZXJBY2NvdW50SWQgIT09IHByb3BzLmFjY2VwdG9yVnBjLm93bmVyQWNjb3VudElkO1xuXG4gICAgaWYgKCFpc0Nyb3NzQWNjb3VudCAmJiBwcm9wcy5wZWVyUm9sZUFybikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwZWVyUm9sZUFybiBpcyBub3QgbmVlZGVkIGZvciBzYW1lIGFjY291bnQgcGVlcmluZycpO1xuICAgIH1cblxuICAgIGlmIChpc0Nyb3NzQWNjb3VudCAmJiAhcHJvcHMucGVlclJvbGVBcm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3Jvc3MgYWNjb3VudCBWUEMgcGVlcmluZyByZXF1aXJlcyBwZWVyUm9sZUFybicpO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXAgPSB0aGlzLnZhbGlkYXRlVnBjQ2lkck92ZXJsYXAocHJvcHMucmVxdWVzdG9yVnBjLCBwcm9wcy5hY2NlcHRvclZwYyk7XG4gICAgaWYgKG92ZXJsYXApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ0lEUiBibG9jayBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBlYWNoIG90aGVyIGZvciBlc3RhYmxpc2hpbmcgYSBwZWVyaW5nIGNvbm5lY3Rpb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblZQQ1BlZXJpbmdDb25uZWN0aW9uKHRoaXMsICdWUENQZWVyaW5nQ29ubmVjdGlvbicsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy5yZXF1ZXN0b3JWcGMudnBjSWQsXG4gICAgICBwZWVyVnBjSWQ6IHByb3BzLmFjY2VwdG9yVnBjLnZwY0lkLFxuICAgICAgcGVlck93bmVySWQ6IHByb3BzLmFjY2VwdG9yVnBjLm93bmVyQWNjb3VudElkLFxuICAgICAgcGVlclJlZ2lvbjogcHJvcHMuYWNjZXB0b3JWcGMucmVnaW9uLFxuICAgICAgcGVlclJvbGVBcm46IGlzQ3Jvc3NBY2NvdW50ID8gcHJvcHMucGVlclJvbGVBcm4gOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5hdHRySWQ7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGlmIHRoZSBwcm92aWRlZCBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3Mgd2l0aGluIHRoZSBnaXZlbiBWUEMuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0b3JWcGMgVGhlIFZQQyBvZiB0aGUgcmVxdWVzdG9yLlxuICAgKiBAcGFyYW0gYWNjZXB0b3JWcGMgVGhlIFZQQyBvZiB0aGUgYWNjZXB0b3IuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGVhY2ggb3RoZXIgZm9yIHR3byBWUENzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVZwY0NpZHJPdmVybGFwKHJlcXVlc3RvclZwYzogSVZwY1YyLCBhY2NlcHRvclZwYzogSVZwY1YyKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCByZXF1ZXN0b3JDaWRycyA9IFtyZXF1ZXN0b3JWcGMuaXB2NENpZHJCbG9ja107XG4gICAgY29uc3QgYWNjZXB0b3JDaWRycyA9IFthY2NlcHRvclZwYy5pcHY0Q2lkckJsb2NrXTtcblxuICAgIGlmIChyZXF1ZXN0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICByZXF1ZXN0b3JDaWRycy5wdXNoKC4uLnJlcXVlc3RvclZwYy5zZWNvbmRhcnlDaWRyQmxvY2tcbiAgICAgICAgLm1hcChibG9jayA9PiBibG9jay5jaWRyQmxvY2spXG4gICAgICAgIC5maWx0ZXIoKGNpZHIpOiBjaWRyIGlzIHN0cmluZyA9PiBjaWRyICE9PSB1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBpZiAoYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBhY2NlcHRvckNpZHJzLnB1c2goLi4uYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrXG4gICAgICAgIC5tYXAoYmxvY2sgPT4gYmxvY2suY2lkckJsb2NrKVxuICAgICAgICAuZmlsdGVyKChjaWRyKTogY2lkciBpcyBzdHJpbmcgPT4gY2lkciAhPT0gdW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByZXF1ZXN0b3JDaWRyIG9mIHJlcXVlc3RvckNpZHJzKSB7XG4gICAgICBjb25zdCByZXF1ZXN0b3JSYW5nZSA9IG5ldyBDaWRyQmxvY2socmVxdWVzdG9yQ2lkcik7XG4gICAgICBjb25zdCByZXF1ZXN0b3JJcFJhbmdlOiBbc3RyaW5nLCBzdHJpbmddID0gW3JlcXVlc3RvclJhbmdlLm1pbklwKCksIHJlcXVlc3RvclJhbmdlLm1heElwKCldO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY2VwdG9yQ2lkciBvZiBhY2NlcHRvckNpZHJzKSB7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9yUmFuZ2UgPSBuZXcgQ2lkckJsb2NrKGFjY2VwdG9yQ2lkcik7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9ySXBSYW5nZTogW3N0cmluZywgc3RyaW5nXSA9IFthY2NlcHRvclJhbmdlLm1pbklwKCksIGFjY2VwdG9yUmFuZ2UubWF4SXAoKV07XG5cbiAgICAgICAgaWYgKHJlcXVlc3RvclJhbmdlLnJhbmdlc092ZXJsYXAoYWNjZXB0b3JJcFJhbmdlLCByZXF1ZXN0b3JJcFJhbmdlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBlbmRwb2ludCBvciBnYXRld2F5IGJlaW5nIHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVRhcmdldFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHJvdXRlIHRhcmdldC4gVGhpcyBpcyB1c2VkIGZvciB0YXJnZXRzIHN1Y2ggYXNcbiAgICogZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBvciBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGEgZ2F0ZXdheSwgaW4gdGhpcyBjYXNlIGFuIGVuZHBvaW50IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk/OiBJUm91dGVUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBlbmRwb2ludCByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIFZQQyBlbmRwb2ludHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFyZ2V0IGlzIG5vdCBzZXQgdG8gYW4gZW5kcG9pbnQsIGluIHRoaXMgY2FzZSBhIGdhdGV3YXkgaXMgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ/OiBJVnBjRW5kcG9pbnQ7XG59XG5cbi8qKlxuICogVGhlIGdhdGV3YXkgb3IgZW5kcG9pbnQgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICovXG5leHBvcnQgY2xhc3MgUm91dGVUYXJnZXRUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHJvdXRlIHRhcmdldC4gVGhpcyBpcyB1c2VkIGZvciB0YXJnZXRzIHN1Y2ggYXNcbiAgICogZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBvciBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGEgZ2F0ZXdheSwgaW4gdGhpcyBjYXNlIGFuIGVuZHBvaW50IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk/OiBJUm91dGVUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBlbmRwb2ludCByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIFZQQyBlbmRwb2ludHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFyZ2V0IGlzIG5vdCBzZXQgdG8gYW4gZW5kcG9pbnQsIGluIHRoaXMgY2FzZSBhIGdhdGV3YXkgaXMgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ/OiBJVnBjRW5kcG9pbnQ7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFJvdXRlVGFyZ2V0UHJvcHMpIHtcbiAgICBpZiAoKHByb3BzLmdhdGV3YXkgJiYgcHJvcHMuZW5kcG9pbnQpIHx8ICghcHJvcHMuZ2F0ZXdheSAmJiAhcHJvcHMuZW5kcG9pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4YWN0bHkgb25lIG9mIGBnYXRld2F5YCBvciBgZW5kcG9pbnRgIG11c3QgYmUgc3BlY2lmaWVkLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhdGV3YXkgPSBwcm9wcy5nYXRld2F5O1xuICAgICAgdGhpcy5lbmRwb2ludCA9IHByb3BzLmVuZHBvaW50O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgYSByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm91dGVWMiBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqIEBhdHRyaWJ1dGUgcm91dGVUYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqXG4gICAqIFJvdXRpbmcgZGVjaXNpb25zIGFyZSBiYXNlZCBvbiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaC5cbiAgICogVE9ETzogTG9vayBmb3Igc3Ryb25nIElQIHR5cGUgaW1wbGVtZW50YXRpb24gaGVyZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgcm91dGVUYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqXG4gICAqIFJvdXRpbmcgZGVjaXNpb25zIGFyZSBiYXNlZCBvbiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJvdXRlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHJvdXRlIHdpdGggYWRkZWQgZnVuY3Rpb25hbGl0eS5cbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6Um91dGVcbiAqL1xuZXhwb3J0IGNsYXNzIFJvdXRlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVWMiB7XG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzdGluYXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGdhdGV3YXkgb3IgZW5kcG9pbnQgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcm91dGUgdGFibGUgZm9yIHRoZSByb3V0ZS5cbiAgICogQGF0dHJpYnV0ZSByb3V0ZVRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB0aGUgcm91dGUgaXMgdGFyZ2V0dGluZ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSByb3V0ZSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U/OiBDZm5Sb3V0ZTtcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gY2lkciBibG9jayBmb3IgaXB2NlxuICAgKi9cbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbklwdjZDaWRyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBjaWRyIGJsb2NrIGZvciBpcHY0XG4gICAqL1xuICBwcml2YXRlIGRlc3RpbmF0aW9uSXB2NENpZHI/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy50YXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgdGhpcy5yb3V0ZVRhYmxlID0gcHJvcHMucm91dGVUYWJsZTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgY29uc3QgaXNEZXN0aW5hdGlvbklwdjQgPSBOZXR3b3JrVXRpbHMudmFsaWRJcChwcm9wcy5kZXN0aW5hdGlvbik7XG4gICAgaWYgKCFpc0Rlc3RpbmF0aW9uSXB2NCkge1xuICAgICAgLy9UT0RPIFZhbGlkYXRlIGZvciBJUHY2IENJRFIgcmFuZ2VcbiAgICAgIHRoaXMuZGVzdGluYXRpb25JcHY2Q2lkciA9IHByb3BzLmRlc3RpbmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uSXB2NENpZHIgPSBwcm9wcy5kZXN0aW5hdGlvbjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXQuZ2F0ZXdheT8ucm91dGVyVHlwZSA9PT0gUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZICYmIGlzRGVzdGluYXRpb25JcHY0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VncmVzcyBvbmx5IGludGVybmV0IGdhdGV3YXkgZG9lcyBub3Qgc3VwcG9ydCBJUHY0IHJvdXRpbmcnKTtcbiAgICB9XG4gICAgdGhpcy50YXJnZXRSb3V0ZXJUeXBlID0gdGhpcy50YXJnZXQuZ2F0ZXdheSA/IHRoaXMudGFyZ2V0LmdhdGV3YXkucm91dGVyVHlwZSA6IFJvdXRlclR5cGUuVlBDX0VORFBPSU5UO1xuXG4gICAgLy8gR2F0ZXdheSBnZW5lcmF0ZXMgcm91dGUgYXV0b21hdGljYWxseSB2aWEgaXRzIFJvdXRlVGFibGUsIHRodXMgd2UgZG9uJ3QgbmVlZCB0byBnZW5lcmF0ZSB0aGUgcmVzb3VyY2UgZm9yIGl0XG4gICAgaWYgKCEodGhpcy50YXJnZXQuZW5kcG9pbnQgaW5zdGFuY2VvZiBHYXRld2F5VnBjRW5kcG9pbnQpKSB7XG4gICAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblJvdXRlKHRoaXMsICdSb3V0ZScsIHtcbiAgICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGUucm91dGVUYWJsZUlkLFxuICAgICAgICBkZXN0aW5hdGlvbkNpZHJCbG9jazogdGhpcy5kZXN0aW5hdGlvbklwdjRDaWRyLFxuICAgICAgICBkZXN0aW5hdGlvbklwdjZDaWRyQmxvY2s6IHRoaXMuZGVzdGluYXRpb25JcHY2Q2lkcixcbiAgICAgICAgW3JvdXRlclR5cGVUb1Byb3BOYW1lKHRoaXMudGFyZ2V0Um91dGVyVHlwZSldOiB0aGlzLnRhcmdldC5nYXRld2F5ID8gdGhpcy50YXJnZXQuZ2F0ZXdheS5yb3V0ZXJUYXJnZXRJZCA6XG4gICAgICAgICAgdGhpcy50YXJnZXQuZW5kcG9pbnQgPyB0aGlzLnRhcmdldC5lbmRwb2ludC52cGNFbmRwb2ludElkIDogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIC8vQ3JlYXRlIGEgcm91dGUgb25seSBhZnRlciB0YXJnZXQgZ2F0ZXdheSBvciBlbmRwb2ludCBpcyBjcmVhdGVkXG4gICAgaWYgKHRoaXMudGFyZ2V0LmdhdGV3YXkpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMudGFyZ2V0LmdhdGV3YXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy50YXJnZXQuZW5kcG9pbnQpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMudGFyZ2V0LmVuZHBvaW50KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIHJvdXRlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlVGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgcm91dGUgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJvdXRlIHRhYmxlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSByb3V0ZSB0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBWUENcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6Um91dGVUYWJsZVxuICovXG5leHBvcnQgY2xhc3MgUm91dGVUYWJsZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFibGUge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZVRhYmxlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJvdXRlIHRhYmxlIENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuUm91dGVUYWJsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUm91dGVUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuUm91dGVUYWJsZSh0aGlzLCAnUm91dGVUYWJsZScsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgfSk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlVGFibGVJZCA9IHRoaXMucmVzb3VyY2UuYXR0clJvdXRlVGFibGVJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGN1c3RvbSByb3V0ZSB0byB0aGUgcm91dGUgdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBkZXN0aW5hdGlvbiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHB1YmxpYyBhZGRSb3V0ZShpZDogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nLCB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZSkge1xuICAgIG5ldyBSb3V0ZSh0aGlzLCBpZCwge1xuICAgICAgcm91dGVUYWJsZTogdGhpcyxcbiAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcbiAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJvdXRlclR5cGVUb1Byb3BOYW1lKHJvdXRlclR5cGU6IFJvdXRlclR5cGUpIHtcbiAgcmV0dXJuICh7XG4gICAgW1JvdXRlclR5cGUuQ0FSUklFUl9HQVRFV0FZXTogJ2NhcnJpZXJHYXRld2F5SWQnLFxuICAgIFtSb3V0ZXJUeXBlLkVHUkVTU19PTkxZX0lOVEVSTkVUX0dBVEVXQVldOiAnZWdyZXNzT25seUludGVybmV0R2F0ZXdheUlkJyxcbiAgICBbUm91dGVyVHlwZS5HQVRFV0FZXTogJ2dhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuSU5TVEFOQ0VdOiAnaW5zdGFuY2VJZCcsXG4gICAgW1JvdXRlclR5cGUuTE9DQUxfR0FURVdBWV06ICdsb2NhbEdhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuTkFUX0dBVEVXQVldOiAnbmF0R2F0ZXdheUlkJyxcbiAgICBbUm91dGVyVHlwZS5ORVRXT1JLX0lOVEVSRkFDRV06ICduZXR3b3JrSW50ZXJmYWNlSWQnLFxuICAgIFtSb3V0ZXJUeXBlLlRSQU5TSVRfR0FURVdBWV06ICd0cmFuc2l0R2F0ZXdheUlkJyxcbiAgICBbUm91dGVyVHlwZS5WUENfUEVFUklOR19DT05ORUNUSU9OXTogJ3ZwY1BlZXJpbmdDb25uZWN0aW9uSWQnLFxuICAgIFtSb3V0ZXJUeXBlLlZQQ19FTkRQT0lOVF06ICd2cGNFbmRwb2ludElkJyxcbiAgfSlbcm91dGVyVHlwZV07XG59Il19
|
|
401
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBa1M7QUFFbFMsMkNBQThFO0FBRTlFLGlDQUFtRTtBQUduRTs7OztHQUlHO0FBQ0gsSUFBWSxtQkFTWDtBQVRELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsd0NBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCwwQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVFcsbUJBQW1CLG1DQUFuQixtQkFBbUIsUUFTOUI7QUE4TEQ7OztHQUdHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxlQUFRO0lBZ0JyRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzsrQ0FqQlIseUJBQXlCOzs7O1FBbUJsQyxJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFVLENBQUMsNEJBQTRCLENBQUM7UUFFMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNDQUE0QixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDN0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSztTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7S0FDNUM7O0FBM0JILDhEQTRCQzs7O0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLGVBQVE7SUFxQjNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7OytDQXRCUixlQUFlOzs7O1FBd0J4QixJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDO1FBRXJDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw0QkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDO1FBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFN0IsSUFBSSxpQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ2hELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYztTQUN2QyxDQUFDLENBQUM7S0FDSjs7QUFwQ0gsMENBcUNDOzs7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSxlQUFRO0lBK0J4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzsrQ0FoQ1IsWUFBWTs7OztRQWtDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQztRQUVyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQzdDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUV2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFFckQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksaUNBQXVCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUMvRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1NBQzdDLENBQUMsQ0FBQztRQUVILHFFQUFxRTtRQUNyRSxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7UUFDNUQsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEYsTUFBTSxhQUFhLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0Isa0JBQVcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLDJDQUEyQyxFQUFFLG1DQUFtQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDck0sQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHVDQUE2QixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUNuRixhQUFhO1lBQ2IsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ2xDLENBQUMsQ0FBQztRQUNILCtFQUErRTtRQUMvRSxpREFBaUQ7UUFDakQsZ0hBQWdIO1FBQ2hILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM3RDs7QUFuRUgsb0NBb0VDOzs7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFVBQVcsU0FBUSxlQUFRO0lBK0J0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzsrQ0FoQ1IsVUFBVTs7OztRQWtDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLFdBQVcsQ0FBQztRQUV6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUM3RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLGVBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxJQUFJLEdBQXVCLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxnQkFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7b0JBQ2hDLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUs7aUJBQ3pCLENBQUMsQ0FBQztnQkFDSCxHQUFHLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx1QkFBYSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDcEQsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUMvQixZQUFZLEVBQUUsR0FBRztZQUNqQix1QkFBdUIsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFO1lBQzVELHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDcEQsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0tBQ3ZFOztBQXJFSCxnQ0FzRUM7OztBQUVEOzs7R0FHRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsZUFBUTtJQWlCaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQztRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBbEJSLG9CQUFvQjs7OztRQW9CN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLHNCQUFzQixDQUFDO1FBRXBELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBRTlGLElBQUksQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxjQUFjLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkYsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMscUZBQXFGLENBQUMsQ0FBQztRQUN6RyxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGlDQUF1QixDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUN4RSxLQUFLLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQy9CLFNBQVMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUs7WUFDbEMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYztZQUM3QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNO1lBQ3BDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDNUQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0tBQ3hDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLHNCQUFzQixDQUFDLFlBQW9CLEVBQUUsV0FBbUI7UUFFdEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbEQsSUFBSSxZQUFZLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNwQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLGtCQUFrQjtpQkFDbkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztpQkFDN0IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksV0FBVyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDbkMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0I7aUJBQ2pELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7aUJBQzdCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxLQUFLLE1BQU0sYUFBYSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNwRCxNQUFNLGdCQUFnQixHQUFxQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUU1RixLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLGdCQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sZUFBZSxHQUFxQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFFekYsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7b0JBQ3BFLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7O0FBekZILG9EQTJGQzs7O0FBdUJEOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBaUIxQixZQUFZLEtBQXVCOzs7Ozs7K0NBakJ4QixlQUFlOzs7O1FBa0J4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3RSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDL0UsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2pDLENBQUM7S0FDRjs7QUF4QkgsMENBeUJDOzs7QUF5REQ7OztHQUdHO0FBQ0gsTUFBYSxLQUFNLFNBQVEsZUFBUTtJQXVDakMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQjtRQUN6RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBeENSLEtBQUs7Ozs7UUEwQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsTUFBTSxpQkFBaUIsR0FBRyxtQkFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDL0MsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLG9CQUFVLENBQUMsNEJBQTRCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNyRyxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxvQkFBVSxDQUFDLFlBQVksQ0FBQztRQUV2RywrR0FBK0c7UUFDL0csSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLFlBQVksNEJBQWtCLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVk7Z0JBQzFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQzlDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQ2xELENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3ZHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDbkUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFdkMsaUVBQWlFO1FBQ2pFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDO0tBQ0Y7O0FBN0VILHNCQThFQzs7O0FBbUJEOzs7R0FHRztBQUNILE1BQWEsVUFBVyxTQUFRLGVBQVE7SUFXdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBWlIsVUFBVTs7OztRQWNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3BELEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUV2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7S0FDcEQ7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxFQUFVLEVBQUUsV0FBbUIsRUFBRSxNQUF1Qjs7Ozs7Ozs7OztRQUN0RSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2xCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO0tBQ0o7O0FBbENILGdDQW1DQzs7O0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxVQUFzQjtJQUNsRCxPQUFPLENBQUM7UUFDTixDQUFDLG9CQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsa0JBQWtCO1FBQ2hELENBQUMsb0JBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLDZCQUE2QjtRQUN4RSxDQUFDLG9CQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVztRQUNqQyxDQUFDLG9CQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWTtRQUNuQyxDQUFDLG9CQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsZ0JBQWdCO1FBQzVDLENBQUMsb0JBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxjQUFjO1FBQ3hDLENBQUMsb0JBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLG9CQUFvQjtRQUNwRCxDQUFDLG9CQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsa0JBQWtCO1FBQ2hELENBQUMsb0JBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLHdCQUF3QjtRQUM3RCxDQUFDLG9CQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsZUFBZTtLQUMzQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbkVJUCwgQ2ZuRWdyZXNzT25seUludGVybmV0R2F0ZXdheSwgQ2ZuSW50ZXJuZXRHYXRld2F5LCBDZm5OYXRHYXRld2F5LCBDZm5WUENQZWVyaW5nQ29ubmVjdGlvbiwgQ2ZuUm91dGUsIENmblJvdXRlVGFibGUsIENmblZQQ0dhdGV3YXlBdHRhY2htZW50LCBDZm5WUE5HYXRld2F5LCBDZm5WUE5HYXRld2F5Um91dGVQcm9wYWdhdGlvbiwgR2F0ZXdheVZwY0VuZHBvaW50LCBJUm91dGVUYWJsZSwgSVZwY0VuZHBvaW50LCBSb3V0ZXJUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBbm5vdGF0aW9ucywgRHVyYXRpb24sIElSZXNvdXJjZSwgUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IElWcGNWMiwgVlBOR2F0ZXdheVYyT3B0aW9ucyB9IGZyb20gJy4vdnBjLXYyLWJhc2UnO1xuaW1wb3J0IHsgTmV0d29ya1V0aWxzLCBhbGxSb3V0ZVRhYmxlSWRzLCBDaWRyQmxvY2sgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSVN1Ym5ldFYyIH0gZnJvbSAnLi9zdWJuZXQtdjInO1xuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBOQVQgZ2F0ZXdheSBzdXBwb3J0cyBwdWJsaWMgb3IgcHJpdmF0ZSBjb25uZWN0aXZpdHkuXG4gKiBUaGUgZGVmYXVsdCBpcyBwdWJsaWMgY29ubmVjdGl2aXR5LlxuICogU2VlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLW5hdGdhdGV3YXkuaHRtbCNjZm4tZWMyLW5hdGdhdGV3YXktY29ubmVjdGl2aXR5dHlwZVxuICovXG5leHBvcnQgZW51bSBOYXRDb25uZWN0aXZpdHlUeXBlIHtcbiAgLyoqXG4gICAqIFNldHMgQ29ubmVjdGl2aXR5IHR5cGUgdG8gUFVCTElDXG4gICAqL1xuICBQVUJMSUMgPSAncHVibGljJyxcbiAgLyoqXG4gICAqIFNldHMgQ29ubmVjdGl2aXR5IHR5cGUgdG8gUFJJVkFURVxuICAgKi9cbiAgUFJJVkFURSA9ICdwcml2YXRlJyxcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIGEgcm91dGluZyB0YXJnZXQsIHN1Y2ggYXMgYW5cbiAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIGVuZHBvaW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVRhcmdldCBleHRlbmRzIElEZXBlbmRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhbiBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByZXNvdXJjZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhbiBpbnRlcm5ldCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmV0R2F0ZXdheVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGZvciB3aGljaCB0byBjcmVhdGUgdGhlIGludGVybmV0IGdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSB2cGM6IElWcGNWMjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIGludGVybmV0IGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJlc291cmNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIFZQTiBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQTkdhdGV3YXlWMlByb3BzIGV4dGVuZHMgVlBOR2F0ZXdheVYyT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGZvciB3aGljaCB0byBjcmVhdGUgdGhlIFZQTiBnYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgYSBOQVQgZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRHYXRld2F5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc3VibmV0IGluIHdoaWNoIHRoZSBOQVQgZ2F0ZXdheSBpcyBsb2NhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0OiBJU3VibmV0VjI7XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRpb25JRCBvZiBFbGFzdGljIElQIGFkZHJlc3MgdGhhdCdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgTkFUIGdhdGV3YXkuIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgZm9yIGEgcHVibGljIE5BVFxuICAgKiBnYXRld2F5IGFuZCBjYW5ub3QgYmUgc3BlY2lmaWVkIHdpdGggYSBwcml2YXRlIE5BVCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF0dHIuYWxsb2NhdGlvbklEIG9mIGEgbmV3IEVsYXN0aWMgSVAgY3JlYXRlZCBieSBkZWZhdWx0XG4gICAqIC8vVE9ETzogQUREIEwyIGZvciBlbGFzdGljIGlwXG4gICAqL1xuICByZWFkb25seSBhbGxvY2F0aW9uSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBOQVQgZ2F0ZXdheSBzdXBwb3J0cyBwdWJsaWMgb3IgcHJpdmF0ZSBjb25uZWN0aXZpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5hdENvbm5lY3Rpdml0eVR5cGUuUHVibGljXG4gICAqL1xuICByZWFkb25seSBjb25uZWN0aXZpdHlUeXBlPzogTmF0Q29ubmVjdGl2aXR5VHlwZTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2libHkgcmVsZWFzaW5nIHRoZVxuICAgKiBJUCBhZGRyZXNzZXMgaWYgY29ubmVjdGlvbnMgYXJlIHN0aWxsIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAzNTBzZWNvbmRzXG4gICAqL1xuICByZWFkb25seSBtYXhEcmFpbkR1cmF0aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBwcml2YXRlIElQdjQgYWRkcmVzcyB0byBhc3NpZ24gdG8gdGhlIE5BVCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHlvdSBkb24ndCBwcm92aWRlIGFuIGFkZHJlc3MsIGEgcHJpdmF0ZSBJUHY0IGFkZHJlc3Mgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZUlwQWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IEVJUCBhbGxvY2F0aW9uIElEcy5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLW5hdC1nYXRld2F5Lmh0bWwjbmF0LWdhdGV3YXktY3JlYXRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWNvbmRhcnkgYWxsb2NhdGlvbiBJRHMgYXR0YWNoZWQgdG8gTkFUR1dcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUFsbG9jYXRpb25JZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBzZWNvbmRhcnkgcHJpdmF0ZSBJUHY0IGFkZHJlc3NlcyB5b3VcbiAgICogd2FudCB0byBhc3NpZ24gdG8gdGhlIE5BVCBnYXRld2F5LlxuICAgKlxuICAgKiBgU2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc0NvdW50YCBhbmQgYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3Nlc2AgY2Fubm90IGJlXG4gICAqIHNldCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtbmF0LWdhdGV3YXkuaHRtbCNuYXQtZ2F0ZXdheS1jcmVhdGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNlY29uZGFyeSBhbGxvY2F0aW9uIElEcyBhc3NvY2lhdGVkIHdpdGggTkFUR1dcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzZXMuXG4gICAqXG4gICAqIGBTZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnRgIGFuZCBgU2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc2VzYCBjYW5ub3QgYmVcbiAgICogc2V0IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sI25hdC1nYXRld2F5LWNyZWF0aW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2Vjb25kYXJ5IHByaXZhdGUgSXBBZGRyZXNzZXMgYXNzb2NpYXRlZCB3aXRoIE5BVEdXXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIE5BVCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5BVEdXIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hdEdhdGV3YXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgTkFUIGdhdGV3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0R2F0ZXdheVByb3BzIGV4dGVuZHMgTmF0R2F0ZXdheU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgaW4gd2hpY2ggdGhlIE5BVCBnYXRld2F5IGlzIGxvY2F0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZWxhc3RpYyBpcCBhc3NvY2lhdGVkLCByZXF1aXJlZCBpbiBjYXNlIG9mIHB1YmxpYyBjb25uZWN0aXZpdHkgaWYgYEFsbG9jYXRpb25JZGAgaXMgbm90IGRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGNWMjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBhIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhhdCBpcyBhY2NlcHRpbmcgdGhlIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFjY2VwdG9yVnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIGFybiBjcmVhdGVkIGluIHRoZSBhY2NlcHRvciBhY2NvdW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHBlZXJSb2xlQXJuIG5lZWRlZCBpZiBub3QgY3Jvc3MgYWNjb3VudCBjb25uZWN0aW9uXG4gICAqL1xuICByZWFkb25seSBwZWVyUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwZWVyaW5nIGNvbm5lY3Rpb24gcHJvdmlzaW9uZWQgd2l0aG91dCBhbnkgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjUGVlcmluZ0Nvbm5lY3Rpb25OYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUENQZWVyaW5nQ29ubmVjdGlvblByb3BzIGV4dGVuZHMgVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhhdCBpcyByZXF1ZXN0aW5nIHRoZSBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0b3JWcGM6IElWcGNWMjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6RWdyZXNzT25seUludGVybmV0R2F0ZXdheVxuICovXG5leHBvcnQgY2xhc3MgRWdyZXNzT25seUludGVybmV0R2F0ZXdheSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBDZm5FZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5FZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KHRoaXMsICdFSUdXJywge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwYy52cGNJZCxcbiAgICB9KTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmF0dHJJZDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gaW50ZXJuZXQgZ2F0ZXdheVxuICogQHJlc291cmNlIEFXUzo6RUMyOjpJbnRlcm5ldEdhdGV3YXlcbiAqL1xuZXhwb3J0IGNsYXNzIEludGVybmV0R2F0ZXdheSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuZXQgZ2F0ZXdheSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmbkludGVybmV0R2F0ZXdheTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSW50ZXJuZXRHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5HQVRFV0FZO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5JbnRlcm5ldEdhdGV3YXkodGhpcywgJ0lHVycsIHt9KTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmF0dHJJbnRlcm5ldEdhdGV3YXlJZDtcbiAgICB0aGlzLnZwY0lkID0gcHJvcHMudnBjLnZwY0lkO1xuXG4gICAgbmV3IENmblZQQ0dhdGV3YXlBdHRhY2htZW50KHRoaXMsICdHV0F0dGFjaG1lbnQnLCB7XG4gICAgICB2cGNJZDogdGhpcy52cGNJZCxcbiAgICAgIGludGVybmV0R2F0ZXdheUlkOiB0aGlzLnJvdXRlclRhcmdldElkLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHZpcnR1YWwgcHJpdmF0ZSBnYXRld2F5XG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlZQTkdhdGV3YXlcbiAqL1xuZXhwb3J0IGNsYXNzIFZQTkdhdGV3YXlWMiBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgVlBOIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQTiBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBOR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIFZQTiBHYXRld2F5IEF0dGFjaG1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2F0dGFjaG1lbnQ6IENmblZQQ0dhdGV3YXlBdHRhY2htZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgVlBOIEdhdGV3YXkgUm91dGUgUHJvcG9nYXRpb25cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlUHJvcGFnYXRpb246IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUE5HYXRld2F5VjJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLkdBVEVXQVk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblZQTkdhdGV3YXkodGhpcywgJ0lHVycsIHtcbiAgICAgIHR5cGU6IHByb3BzLnR5cGUsXG4gICAgICBhbWF6b25TaWRlQXNuOiBwcm9wcy5hbWF6b25TaWRlQXNuLFxuICAgIH0pO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IHRoaXMucmVzb3VyY2UuYXR0clZwbkdhdGV3YXlJZDtcblxuICAgIHRoaXMudnBjSWQgPSBwcm9wcy52cGMudnBjSWQ7XG4gICAgdGhpcy5fYXR0YWNobWVudCA9IG5ldyBDZm5WUENHYXRld2F5QXR0YWNobWVudCh0aGlzLCAnVlBDVlBOR1cnLCB7XG4gICAgICB2cGNJZDogdGhpcy52cGNJZCxcbiAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5yZXNvdXJjZS5hdHRyVnBuR2F0ZXdheUlkLFxuICAgIH0pO1xuXG4gICAgLy8gUHJvcGFnYXRlIHJvdXRlcyBvbiByb3V0ZSB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByaWdodCBzdWJuZXRzXG4gICAgY29uc3QgdnBuUm91dGVQcm9wYWdhdGlvbiA9IHByb3BzLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW107XG4gICAgY29uc3Qgc3VibmV0cyA9IHZwblJvdXRlUHJvcGFnYXRpb24ubWFwKHMgPT4gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cykuZmxhdCgpO1xuICAgIGNvbnN0IHJvdXRlVGFibGVJZHMgPSBhbGxSb3V0ZVRhYmxlSWRzKHN1Ym5ldHMpO1xuXG4gICAgaWYgKHJvdXRlVGFibGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZihzY29wZSkuYWRkV2FybmluZ1YyKCdAYXdzLWNkazphd3MtZWMyLWVscGhhOmVuYWJsZVZwbkdhdGV3YXlWMicsIGBObyBzdWJuZXRzIG1hdGNoaW5nIHNlbGVjdGlvbjogJyR7SlNPTi5zdHJpbmdpZnkodnBuUm91dGVQcm9wYWdhdGlvbil9Jy4gU2VsZWN0IG90aGVyIHN1Ym5ldHMgdG8gYWRkIHJvdXRlcyB0by5gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uID0gbmV3IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uKHRoaXMsICdSb3V0ZVByb3BhZ2F0aW9uJywge1xuICAgICAgcm91dGVUYWJsZUlkcyxcbiAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICB9KTtcbiAgICAvLyBUaGUgQVdTOjpFQzI6OlZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uIHJlc291cmNlIGNhbm5vdCB1c2UgdGhlIFZQTiBnYXRld2F5XG4gICAgLy8gdW50aWwgaXQgaGFzIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZCB0byB0aGUgVlBDLlxuICAgIC8vIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwbi1nYXRld2F5cm91dGVwcm9wLmh0bWxcbiAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLl9hdHRhY2htZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXR3b3JrIGFkZHJlc3MgdHJhbnNsYXRpb24gKE5BVCkgZ2F0ZXdheVxuICogQHJlc291cmNlIEFXUzo6RUMyOjpOYXRHYXRld2F5XG4gKi9cbmV4cG9ydCBjbGFzcyBOYXRHYXRld2F5IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBwdWJsaWNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aXZpdHlUeXBlPzogTmF0Q29ubmVjdGl2aXR5VHlwZTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2libHkgcmVsZWFzaW5nIHRoZVxuICAgKiBJUCBhZGRyZXNzZXMgaWYgY29ubmVjdGlvbnMgYXJlIHN0aWxsIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnMzUwIHNlY29uZHMnXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF4RHJhaW5EdXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgTkFUIGdhdGV3YXkgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBDZm5OYXRHYXRld2F5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOYXRHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5OQVRfR0FURVdBWTtcblxuICAgIHRoaXMuY29ubmVjdGl2aXR5VHlwZSA9IHByb3BzLmNvbm5lY3Rpdml0eVR5cGUgfHwgTmF0Q29ubmVjdGl2aXR5VHlwZS5QVUJMSUM7XG4gICAgdGhpcy5tYXhEcmFpbkR1cmF0aW9uID0gcHJvcHMubWF4RHJhaW5EdXJhdGlvbiB8fCBEdXJhdGlvbi5zZWNvbmRzKDM1MCk7XG5cbiAgICBpZiAodGhpcy5jb25uZWN0aXZpdHlUeXBlID09PSBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQykge1xuICAgICAgaWYgKCFwcm9wcy52cGMgJiYgIXByb3BzLmFsbG9jYXRpb25JZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBwcm92aWRlIHZwYyBvciBhbGxvY2F0aW9uSWQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB1c2VyIGRvZXMgbm90IHByb3ZpZGUgRUlQLCBnZW5lcmF0ZSBvbmUgZm9yIHRoZW1cbiAgICB2YXIgYUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuY29ubmVjdGl2aXR5VHlwZSA9PT0gTmF0Q29ubmVjdGl2aXR5VHlwZS5QVUJMSUMpIHtcbiAgICAgIGlmICghcHJvcHMuYWxsb2NhdGlvbklkKSB7XG4gICAgICAgIGxldCBlaXAgPSBuZXcgQ2ZuRUlQKHRoaXMsICdFSVAnLCB7XG4gICAgICAgICAgZG9tYWluOiBwcm9wcy52cGM/LnZwY0lkLFxuICAgICAgICB9KTtcbiAgICAgICAgYUlkID0gZWlwLmF0dHJBbGxvY2F0aW9uSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhSWQgPSBwcm9wcy5hbGxvY2F0aW9uSWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5OYXRHYXRld2F5KHRoaXMsICdOQVRHYXRld2F5Jywge1xuICAgICAgc3VibmV0SWQ6IHByb3BzLnN1Ym5ldC5zdWJuZXRJZCxcbiAgICAgIGFsbG9jYXRpb25JZDogYUlkLFxuICAgICAgbWF4RHJhaW5EdXJhdGlvblNlY29uZHM6IHByb3BzLm1heERyYWluRHVyYXRpb24/LnRvU2Vjb25kcygpLFxuICAgICAgc2Vjb25kYXJ5QWxsb2NhdGlvbklkczogcHJvcHMuc2Vjb25kYXJ5QWxsb2NhdGlvbklkcyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IHRoaXMucmVzb3VyY2UuYXR0ck5hdEdhdGV3YXlJZDtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5zdWJuZXQuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcGVlcmluZyBjb25uZWN0aW9uIGJldHdlZW4gdHdvIFZQQ3NcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6VlBDUGVlcmluZ0Nvbm5lY3Rpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFZQQ1BlZXJpbmdDb25uZWN0aW9uIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdXNlZCBpbiB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgcGVlcmluZyBjb25uZWN0aW9uIENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBDUGVlcmluZ0Nvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZQQ1BlZXJpbmdDb25uZWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5WUENfUEVFUklOR19DT05ORUNUSU9OO1xuXG4gICAgY29uc3QgaXNDcm9zc0FjY291bnQgPSBwcm9wcy5yZXF1ZXN0b3JWcGMub3duZXJBY2NvdW50SWQgIT09IHByb3BzLmFjY2VwdG9yVnBjLm93bmVyQWNjb3VudElkO1xuXG4gICAgaWYgKCFpc0Nyb3NzQWNjb3VudCAmJiBwcm9wcy5wZWVyUm9sZUFybikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwZWVyUm9sZUFybiBpcyBub3QgbmVlZGVkIGZvciBzYW1lIGFjY291bnQgcGVlcmluZycpO1xuICAgIH1cblxuICAgIGlmIChpc0Nyb3NzQWNjb3VudCAmJiAhcHJvcHMucGVlclJvbGVBcm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3Jvc3MgYWNjb3VudCBWUEMgcGVlcmluZyByZXF1aXJlcyBwZWVyUm9sZUFybicpO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXAgPSB0aGlzLnZhbGlkYXRlVnBjQ2lkck92ZXJsYXAocHJvcHMucmVxdWVzdG9yVnBjLCBwcm9wcy5hY2NlcHRvclZwYyk7XG4gICAgaWYgKG92ZXJsYXApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ0lEUiBibG9jayBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBlYWNoIG90aGVyIGZvciBlc3RhYmxpc2hpbmcgYSBwZWVyaW5nIGNvbm5lY3Rpb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblZQQ1BlZXJpbmdDb25uZWN0aW9uKHRoaXMsICdWUENQZWVyaW5nQ29ubmVjdGlvbicsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy5yZXF1ZXN0b3JWcGMudnBjSWQsXG4gICAgICBwZWVyVnBjSWQ6IHByb3BzLmFjY2VwdG9yVnBjLnZwY0lkLFxuICAgICAgcGVlck93bmVySWQ6IHByb3BzLmFjY2VwdG9yVnBjLm93bmVyQWNjb3VudElkLFxuICAgICAgcGVlclJlZ2lvbjogcHJvcHMuYWNjZXB0b3JWcGMucmVnaW9uLFxuICAgICAgcGVlclJvbGVBcm46IGlzQ3Jvc3NBY2NvdW50ID8gcHJvcHMucGVlclJvbGVBcm4gOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5hdHRySWQ7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGlmIHRoZSBwcm92aWRlZCBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3Mgd2l0aGluIHRoZSBnaXZlbiBWUEMuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0b3JWcGMgVGhlIFZQQyBvZiB0aGUgcmVxdWVzdG9yLlxuICAgKiBAcGFyYW0gYWNjZXB0b3JWcGMgVGhlIFZQQyBvZiB0aGUgYWNjZXB0b3IuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGVhY2ggb3RoZXIgZm9yIHR3byBWUENzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVZwY0NpZHJPdmVybGFwKHJlcXVlc3RvclZwYzogSVZwY1YyLCBhY2NlcHRvclZwYzogSVZwY1YyKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCByZXF1ZXN0b3JDaWRycyA9IFtyZXF1ZXN0b3JWcGMuaXB2NENpZHJCbG9ja107XG4gICAgY29uc3QgYWNjZXB0b3JDaWRycyA9IFthY2NlcHRvclZwYy5pcHY0Q2lkckJsb2NrXTtcblxuICAgIGlmIChyZXF1ZXN0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICByZXF1ZXN0b3JDaWRycy5wdXNoKC4uLnJlcXVlc3RvclZwYy5zZWNvbmRhcnlDaWRyQmxvY2tcbiAgICAgICAgLm1hcChibG9jayA9PiBibG9jay5jaWRyQmxvY2spXG4gICAgICAgIC5maWx0ZXIoKGNpZHIpOiBjaWRyIGlzIHN0cmluZyA9PiBjaWRyICE9PSB1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBpZiAoYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBhY2NlcHRvckNpZHJzLnB1c2goLi4uYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrXG4gICAgICAgIC5tYXAoYmxvY2sgPT4gYmxvY2suY2lkckJsb2NrKVxuICAgICAgICAuZmlsdGVyKChjaWRyKTogY2lkciBpcyBzdHJpbmcgPT4gY2lkciAhPT0gdW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByZXF1ZXN0b3JDaWRyIG9mIHJlcXVlc3RvckNpZHJzKSB7XG4gICAgICBjb25zdCByZXF1ZXN0b3JSYW5nZSA9IG5ldyBDaWRyQmxvY2socmVxdWVzdG9yQ2lkcik7XG4gICAgICBjb25zdCByZXF1ZXN0b3JJcFJhbmdlOiBbc3RyaW5nLCBzdHJpbmddID0gW3JlcXVlc3RvclJhbmdlLm1pbklwKCksIHJlcXVlc3RvclJhbmdlLm1heElwKCldO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY2VwdG9yQ2lkciBvZiBhY2NlcHRvckNpZHJzKSB7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9yUmFuZ2UgPSBuZXcgQ2lkckJsb2NrKGFjY2VwdG9yQ2lkcik7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9ySXBSYW5nZTogW3N0cmluZywgc3RyaW5nXSA9IFthY2NlcHRvclJhbmdlLm1pbklwKCksIGFjY2VwdG9yUmFuZ2UubWF4SXAoKV07XG5cbiAgICAgICAgaWYgKHJlcXVlc3RvclJhbmdlLnJhbmdlc092ZXJsYXAoYWNjZXB0b3JJcFJhbmdlLCByZXF1ZXN0b3JJcFJhbmdlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBlbmRwb2ludCBvciBnYXRld2F5IGJlaW5nIHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVRhcmdldFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHJvdXRlIHRhcmdldC4gVGhpcyBpcyB1c2VkIGZvciB0YXJnZXRzIHN1Y2ggYXNcbiAgICogZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBvciBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGEgZ2F0ZXdheSwgaW4gdGhpcyBjYXNlIGFuIGVuZHBvaW50IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk/OiBJUm91dGVUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBlbmRwb2ludCByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIFZQQyBlbmRwb2ludHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFyZ2V0IGlzIG5vdCBzZXQgdG8gYW4gZW5kcG9pbnQsIGluIHRoaXMgY2FzZSBhIGdhdGV3YXkgaXMgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ/OiBJVnBjRW5kcG9pbnQ7XG59XG5cbi8qKlxuICogVGhlIGdhdGV3YXkgb3IgZW5kcG9pbnQgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICovXG5leHBvcnQgY2xhc3MgUm91dGVUYXJnZXRUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHJvdXRlIHRhcmdldC4gVGhpcyBpcyB1c2VkIGZvciB0YXJnZXRzIHN1Y2ggYXNcbiAgICogZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBvciBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGEgZ2F0ZXdheSwgaW4gdGhpcyBjYXNlIGFuIGVuZHBvaW50IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk/OiBJUm91dGVUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBlbmRwb2ludCByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIFZQQyBlbmRwb2ludHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFyZ2V0IGlzIG5vdCBzZXQgdG8gYW4gZW5kcG9pbnQsIGluIHRoaXMgY2FzZSBhIGdhdGV3YXkgaXMgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ/OiBJVnBjRW5kcG9pbnQ7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFJvdXRlVGFyZ2V0UHJvcHMpIHtcbiAgICBpZiAoKHByb3BzLmdhdGV3YXkgJiYgcHJvcHMuZW5kcG9pbnQpIHx8ICghcHJvcHMuZ2F0ZXdheSAmJiAhcHJvcHMuZW5kcG9pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4YWN0bHkgb25lIG9mIGBnYXRld2F5YCBvciBgZW5kcG9pbnRgIG11c3QgYmUgc3BlY2lmaWVkLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhdGV3YXkgPSBwcm9wcy5nYXRld2F5O1xuICAgICAgdGhpcy5lbmRwb2ludCA9IHByb3BzLmVuZHBvaW50O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgYSByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm91dGVWMiBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqIEBhdHRyaWJ1dGUgcm91dGVUYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqXG4gICAqIFJvdXRpbmcgZGVjaXNpb25zIGFyZSBiYXNlZCBvbiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaC5cbiAgICogVE9ETzogTG9vayBmb3Igc3Ryb25nIElQIHR5cGUgaW1wbGVtZW50YXRpb24gaGVyZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgcm91dGVUYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqXG4gICAqIFJvdXRpbmcgZGVjaXNpb25zIGFyZSBiYXNlZCBvbiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJvdXRlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHJvdXRlIHdpdGggYWRkZWQgZnVuY3Rpb25hbGl0eS5cbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6Um91dGVcbiAqL1xuZXhwb3J0IGNsYXNzIFJvdXRlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVWMiB7XG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzdGluYXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGdhdGV3YXkgb3IgZW5kcG9pbnQgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcm91dGUgdGFibGUgZm9yIHRoZSByb3V0ZS5cbiAgICogQGF0dHJpYnV0ZSByb3V0ZVRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB0aGUgcm91dGUgaXMgdGFyZ2V0dGluZ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSByb3V0ZSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U/OiBDZm5Sb3V0ZTtcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gY2lkciBibG9jayBmb3IgaXB2NlxuICAgKi9cbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbklwdjZDaWRyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBjaWRyIGJsb2NrIGZvciBpcHY0XG4gICAqL1xuICBwcml2YXRlIGRlc3RpbmF0aW9uSXB2NENpZHI/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy50YXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgdGhpcy5yb3V0ZVRhYmxlID0gcHJvcHMucm91dGVUYWJsZTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgY29uc3QgaXNEZXN0aW5hdGlvbklwdjQgPSBOZXR3b3JrVXRpbHMudmFsaWRJcChwcm9wcy5kZXN0aW5hdGlvbik7XG4gICAgaWYgKCFpc0Rlc3RpbmF0aW9uSXB2NCkge1xuICAgICAgLy9UT0RPIFZhbGlkYXRlIGZvciBJUHY2IENJRFIgcmFuZ2VcbiAgICAgIHRoaXMuZGVzdGluYXRpb25JcHY2Q2lkciA9IHByb3BzLmRlc3RpbmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uSXB2NENpZHIgPSBwcm9wcy5kZXN0aW5hdGlvbjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXQuZ2F0ZXdheT8ucm91dGVyVHlwZSA9PT0gUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZICYmIGlzRGVzdGluYXRpb25JcHY0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VncmVzcyBvbmx5IGludGVybmV0IGdhdGV3YXkgZG9lcyBub3Qgc3VwcG9ydCBJUHY0IHJvdXRpbmcnKTtcbiAgICB9XG4gICAgdGhpcy50YXJnZXRSb3V0ZXJUeXBlID0gdGhpcy50YXJnZXQuZ2F0ZXdheSA/IHRoaXMudGFyZ2V0LmdhdGV3YXkucm91dGVyVHlwZSA6IFJvdXRlclR5cGUuVlBDX0VORFBPSU5UO1xuXG4gICAgLy8gR2F0ZXdheSBnZW5lcmF0ZXMgcm91dGUgYXV0b21hdGljYWxseSB2aWEgaXRzIFJvdXRlVGFibGUsIHRodXMgd2UgZG9uJ3QgbmVlZCB0byBnZW5lcmF0ZSB0aGUgcmVzb3VyY2UgZm9yIGl0XG4gICAgaWYgKCEodGhpcy50YXJnZXQuZW5kcG9pbnQgaW5zdGFuY2VvZiBHYXRld2F5VnBjRW5kcG9pbnQpKSB7XG4gICAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblJvdXRlKHRoaXMsICdSb3V0ZScsIHtcbiAgICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGUucm91dGVUYWJsZUlkLFxuICAgICAgICBkZXN0aW5hdGlvbkNpZHJCbG9jazogdGhpcy5kZXN0aW5hdGlvbklwdjRDaWRyLFxuICAgICAgICBkZXN0aW5hdGlvbklwdjZDaWRyQmxvY2s6IHRoaXMuZGVzdGluYXRpb25JcHY2Q2lkcixcbiAgICAgICAgW3JvdXRlclR5cGVUb1Byb3BOYW1lKHRoaXMudGFyZ2V0Um91dGVyVHlwZSldOiB0aGlzLnRhcmdldC5nYXRld2F5ID8gdGhpcy50YXJnZXQuZ2F0ZXdheS5yb3V0ZXJUYXJnZXRJZCA6XG4gICAgICAgICAgdGhpcy50YXJnZXQuZW5kcG9pbnQgPyB0aGlzLnRhcmdldC5lbmRwb2ludC52cGNFbmRwb2ludElkIDogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIC8vQ3JlYXRlIGEgcm91dGUgb25seSBhZnRlciB0YXJnZXQgZ2F0ZXdheSBvciBlbmRwb2ludCBpcyBjcmVhdGVkXG4gICAgaWYgKHRoaXMudGFyZ2V0LmdhdGV3YXkpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMudGFyZ2V0LmdhdGV3YXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy50YXJnZXQuZW5kcG9pbnQpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMudGFyZ2V0LmVuZHBvaW50KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIHJvdXRlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlVGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgcm91dGUgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJvdXRlIHRhYmxlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSByb3V0ZSB0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBWUENcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6Um91dGVUYWJsZVxuICovXG5leHBvcnQgY2xhc3MgUm91dGVUYWJsZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFibGUge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZVRhYmxlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJvdXRlIHRhYmxlIENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuUm91dGVUYWJsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUm91dGVUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuUm91dGVUYWJsZSh0aGlzLCAnUm91dGVUYWJsZScsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgfSk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlVGFibGVJZCA9IHRoaXMucmVzb3VyY2UuYXR0clJvdXRlVGFibGVJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGN1c3RvbSByb3V0ZSB0byB0aGUgcm91dGUgdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBkZXN0aW5hdGlvbiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHB1YmxpYyBhZGRSb3V0ZShpZDogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nLCB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZSkge1xuICAgIG5ldyBSb3V0ZSh0aGlzLCBpZCwge1xuICAgICAgcm91dGVUYWJsZTogdGhpcyxcbiAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcbiAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJvdXRlclR5cGVUb1Byb3BOYW1lKHJvdXRlclR5cGU6IFJvdXRlclR5cGUpIHtcbiAgcmV0dXJuICh7XG4gICAgW1JvdXRlclR5cGUuQ0FSUklFUl9HQVRFV0FZXTogJ2NhcnJpZXJHYXRld2F5SWQnLFxuICAgIFtSb3V0ZXJUeXBlLkVHUkVTU19PTkxZX0lOVEVSTkVUX0dBVEVXQVldOiAnZWdyZXNzT25seUludGVybmV0R2F0ZXdheUlkJyxcbiAgICBbUm91dGVyVHlwZS5HQVRFV0FZXTogJ2dhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuSU5TVEFOQ0VdOiAnaW5zdGFuY2VJZCcsXG4gICAgW1JvdXRlclR5cGUuTE9DQUxfR0FURVdBWV06ICdsb2NhbEdhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuTkFUX0dBVEVXQVldOiAnbmF0R2F0ZXdheUlkJyxcbiAgICBbUm91dGVyVHlwZS5ORVRXT1JLX0lOVEVSRkFDRV06ICduZXR3b3JrSW50ZXJmYWNlSWQnLFxuICAgIFtSb3V0ZXJUeXBlLlRSQU5TSVRfR0FURVdBWV06ICd0cmFuc2l0R2F0ZXdheUlkJyxcbiAgICBbUm91dGVyVHlwZS5WUENfUEVFUklOR19DT05ORUNUSU9OXTogJ3ZwY1BlZXJpbmdDb25uZWN0aW9uSWQnLFxuICAgIFtSb3V0ZXJUeXBlLlZQQ19FTkRQT0lOVF06ICd2cGNFbmRwb2ludElkJyxcbiAgfSlbcm91dGVyVHlwZV07XG59XG4iXX0=
|
package/lib/subnet-v2.js
CHANGED
|
@@ -19,7 +19,7 @@ class IpCidr {
|
|
|
19
19
|
}
|
|
20
20
|
exports.IpCidr = IpCidr;
|
|
21
21
|
_a = JSII_RTTI_SYMBOL_1;
|
|
22
|
-
IpCidr[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.IpCidr", version: "2.
|
|
22
|
+
IpCidr[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.IpCidr", version: "2.172.0-alpha.0" };
|
|
23
23
|
/**
|
|
24
24
|
* The SubnetV2 class represents a subnet within a VPC (Virtual Private Cloud) in AWS.
|
|
25
25
|
* It extends the Resource class and implements the ISubnet interface.
|
|
@@ -207,7 +207,7 @@ class SubnetV2 extends aws_cdk_lib_1.Resource {
|
|
|
207
207
|
}
|
|
208
208
|
exports.SubnetV2 = SubnetV2;
|
|
209
209
|
_b = JSII_RTTI_SYMBOL_1;
|
|
210
|
-
SubnetV2[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.SubnetV2", version: "2.
|
|
210
|
+
SubnetV2[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.SubnetV2", version: "2.172.0-alpha.0" };
|
|
211
211
|
const subnetTypeMap = {
|
|
212
212
|
[aws_ec2_1.SubnetType.PRIVATE_ISOLATED]: (vpc, subnet) => vpc.isolatedSubnets.push(subnet),
|
|
213
213
|
[aws_ec2_1.SubnetType.PUBLIC]: (vpc, subnet) => vpc.publicSubnets.push(subnet),
|
package/lib/util.js
CHANGED
|
@@ -307,4 +307,4 @@ class CidrBlockIpv6 {
|
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
309
|
exports.CidrBlockIpv6 = CidrBlockIpv6;
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTs7O0FBU3JFLHdFQUVDO0FBS0QsNEJBRUM7QUFLRCw0Q0FRQztBQUVELDBCQUVDO0FBL0JEOzs7O0dBSUc7QUFDSCxTQUFnQiw4QkFBOEIsQ0FBQyxNQUFlO0lBQzVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsSUFBWSxFQUFFLENBQVM7SUFDOUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBa0I7SUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hELEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLEVBQVM7SUFDbEMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUV2Qjs7Ozs7Ozs7O09BU0c7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNB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QU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sYUFBYSxHQUFHLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQztRQUVqQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3JCO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWSxDQUFDLFdBQW1CO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQiwrQkFBK0I7WUFDL0IsVUFBVSxHQUFHLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7S0FDbkI7Q0FDRjtBQTdGRCxzQ0E2RkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKmVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wiflwiLCBcInxcIiwgXCI8PFwiLCBcIiZcIl0gfV0gKi9cblxuaW1wb3J0IHsgSVN1Ym5ldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuXG4vKipcbiAqIFJldHVybiBhIHN1Ym5ldCBuYW1lIGZyb20gaXRzIGNvbnN0cnVjdCBJRFxuICpcbiAqIEFsbCBzdWJuZXQgbmFtZXMgbG9vayBsaWtlIE5BTUUgPD4gXCJTdWJuZXRcIiA8PiBJTkRFWFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkKHN1Ym5ldDogSVN1Ym5ldCkge1xuICByZXR1cm4gc3VibmV0Lm5vZGUuaWQucmVwbGFjZSgvU3VibmV0XFxkKyQvLCAnJyk7XG59XG5cbi8qKlxuICogTWFrZSB0aGUgc3VibmV0IGNvbnN0cnVjdCBJRCBmcm9tIGEgbmFtZSBhbmQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJuZXRJZChuYW1lOiBzdHJpbmcsIGk6IG51bWJlcikge1xuICByZXR1cm4gYCR7bmFtZX1TdWJuZXQke2kgKyAxfWA7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSB1bmlvbiBvZiB0YWJsZSBJRHMgZnJvbSBhbGwgc2VsZWN0ZWQgc3VibmV0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsUm91dGVUYWJsZUlkcyhzdWJuZXRzOiBJU3VibmV0W10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBzdWJuZXRzKSB7XG4gICAgaWYgKHN1Ym5ldC5yb3V0ZVRhYmxlICYmIHN1Ym5ldC5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCkge1xuICAgICAgcmV0LmFkZChzdWJuZXQucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gQXJyYXkuZnJvbShyZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbjxBPih4czogQVtdW10pOiBBW10ge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgeHMpO1xufVxuXG4vKipcbiAqIE5ldHdvcmtVdGlscyBjb250YWlucyBoZWxwZXJzIHRvIHdvcmsgd2l0aCBuZXR3b3JrIGNvbnN0cnVjdHMgKHN1Ym5ldHMvcmFuZ2VzKVxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya1V0aWxzIHtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuIElQdjQgYWRkcmVzcyBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBpcEFkZHJlc3MgVGhlIElQdjQgYWRkcmVzcyBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBJUHY0IGFkZHJlc3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogVmFsaWRhdGVzIGFuIElQdjQgc3RyaW5nXG4gICAqXG4gICAqIHJldHVybnMgdHJ1ZSBvZiB0aGUgc3RyaW5nIGNvbnRhaW5zIDQgbnVtYmVycyBiZXR3ZWVuIDAtMjU1IGRlbGltaXRlZCBieVxuICAgKiBhIGAuYCBjaGFyYWN0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmFsaWRJcChpcEFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9jdGV0cyA9IGlwQWRkcmVzcy5zcGxpdCgnLicpO1xuICAgIGlmIChvY3RldHMubGVuZ3RoICE9PSA0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBvY3RldHMubWFwKChvY3RldDogc3RyaW5nKSA9PiBwYXJzZUludChvY3RldCwgMTApKS5cbiAgICAgIGV2ZXJ5KChvY3RldDogbnVtYmVyKSA9PiBvY3RldCA+PSAwICYmIG9jdGV0IDw9IDI1NSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NCBhZGRyZXNzIHRvIGl0cyBjb3JyZXNwb25kaW5nIG51bWVyaWNhbCB2YWx1ZS5cbiAgICpcbiAgICogVXNlcyB0aGUgZm9ybXVsYTpcbiAgICogKGZpcnN0IG9jdGV0ICogMjU2wrMpICsgKHNlY29uZCBvY3RldCAqIDI1NsKyKSArICh0aGlyZCBvY3RldCAqIDI1NikgK1xuICAgKiAoZm91cnRoIG9jdGV0KVxuICAgKlxuICAgKiBAcGFyYW0gIGlwQWRkcmVzcyB0aGUgSVAgYWRkcmVzcyAoZS5nLiAxNzQuNjYuMTczLjE2OClcbiAgICogQHJldHVybnMgdGhlIGludGVnZXIgdmFsdWUgb2YgdGhlIElQIGFkZHJlc3MgKGUuZyAyOTIzNjA1NDE2KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcFRvTnVtKGlwQWRkcmVzczogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudmFsaWRJcChpcEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXBBZGRyZXNzfSBpcyBub3QgdmFsaWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXBBZGRyZXNzXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKHA6IG51bWJlciwgYzogc3RyaW5nLCBpOiBudW1iZXIpID0+IHAgKyBwYXJzZUludChjLCAxMCkgKiAyNTYgKiogKDMgLSBpKSxcbiAgICAgICAgMCxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGFrZXMgbnVtYmVyIGFuZCBjb252ZXJ0cyBpdCB0byBJUHY0IGFkZHJlc3Mgc3RyaW5nXG4gICAqXG4gICAqIFRha2VzIGEgbnVtYmVyIChlLmcgMjkyMzYwNTQxNikgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIElQdjQgYWRkcmVzcyBzdHJpbmdcbiAgICogY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgSVB2NFxuICAgKlxuICAgKiBAcGFyYW0gaXBOdW0gaW50ZWdlciB2YWx1ZSBvZiB0aGUgSVAgYWRkcmVzcyAoZS5nIDI5MjM2MDU0MTYpXG4gICAqIEByZXR1cm5zIElQdjQgYWRkcmVzcyAoZS5nLiAxNzQuNjYuMTczLjE2OClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtVG9JcChpcE51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAvLyB0aGlzIGFsbCBiZWNhdXNlIGJpdHdpc2UgbWF0aCBpcyBzaWduZWRcbiAgICBsZXQgcmVtYWluaW5nID0gaXBOdW07XG4gICAgY29uc3QgYWRkcmVzcyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgIGlmIChyZW1haW5pbmcgIT09IDApIHtcbiAgICAgICAgYWRkcmVzcy5wdXNoKE1hdGguZmxvb3IocmVtYWluaW5nIC8gMjU2ICoqICgzIC0gaSkpKTtcbiAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nICUgMjU2ICoqICgzIC0gaSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRyZXNzLnB1c2goMCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlwQWRkcmVzczogc3RyaW5nID0gYWRkcmVzcy5qb2luKCcuJyk7XG4gICAgaWYgKCAhdGhpcy52YWxpZElwKGlwQWRkcmVzcykgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXBBZGRyZXNzfSBpcyBub3QgYSB2YWxpZCBJUCBBZGRyZXNzYCk7XG4gICAgfVxuICAgIHJldHVybiBpcEFkZHJlc3M7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBjbGFzcyBmcm9tIFZQQyB0byBzdXBwb3J0IHN1Ym5ldCBmaWx0ZXJpbmdcbiAqIGFuZCBDSURSIHZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIENpZHJCbG9jayB7XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG5ldG1hc2sgZm9yIGEgZ2l2ZW4gQ0lEUiBtYXNrXG4gICAqXG4gICAqIFRoZSBuZXRtYXNrIGlzIGEgMzItYml0IGJpbmFyeSB2YWx1ZSB1c2VkIHRvIHNlcGFyYXRlIHRoZSBuZXR3b3JrIHBvcnRpb24gZnJvbSB0aGUgaG9zdCBwb3J0aW9uIG9mIGFuIElQdjQgYWRkcmVzcy5cbiAgICogSXQgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgQ0lEUiBwcmVmaXggbGVuZ3RoICh0aGUgbnVtYmVyIG9mIGJpdHMgdXNlZCB0byByZXByZXNlbnQgdGhlIG5ldHdvcmsgcG9ydGlvbikuXG4gICAqXG4gICAqIEZvciBleGFtcGxlOlxuICAgKiBDaWRyQmxvY2suY2FsY3VsYXRlTmV0bWFzaygyNCkgcmV0dXJucyAnMjU1LjI1NS4yNTUuMCdcbiAgICpcbiAgICogQHBhcmFtIG1hc2sgVGhlIENJRFIgcHJlZml4IGxlbmd0aCAoYmV0d2VlbiAwIGFuZCAzMikgZm9yIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgbmV0bWFzay5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIG5ldG1hc2sgYnkgcGVyZm9ybWluZyBhIGJpdHdpc2UgTk9UIG9uIHRoZSByZXN1bHQgb2YgKDJeMzIgLSAyXigzMiAtIG1hc2spKVxuICAgKiBAcmV0dXJucyBUaGUgbmV0bWFzayBzdHJpbmcgaW4gSVB2NCBhZGRyZXNzIGZvcm1hdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlTmV0bWFzayhtYXNrOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBOZXR3b3JrVXRpbHMubnVtVG9JcCgyICoqIDMyIC0gMiAqKiAoMzIgLSBtYXNrKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIElQIGFkZHJlc3NlcyBpbiBhIENJRFIgTWFza1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogQ2lkckJsb2NrLmNhbGN1bGF0ZU5ldHNpemUoMTYpIHJldHVybnMgNjU1MzZcbiAgICpcbiAgICogQHBhcmFtIG1hc2sgVGhlIENJRFIgcHJlZml4IGxlbmd0aCAoYmV0d2VlbiAwIGFuZCAzMikgZm9yIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgbmV0d29yayBzaXplLlxuICAgKiBDaWRyQmxvY2suY2FsY3VsYXRlTmV0c2l6ZSgyNCkgcmV0dXJucyAyNTZcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlTmV0c2l6ZShtYXNrOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiAyICoqICgzMiAtIG1hc2spO1xuICB9XG5cbiAgLyoqXG4gICAqIElQIGFkZHJlc3MgaW4gdGhlIENJRFIgYmxvY2suXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2lkcjogc3RyaW5nO1xuXG4gIC8qXG4gICAqIFRoZSBDSURSIG1hc2sgZS5nLiBmb3IgQ0lEUiAnMTAuMC4wLjAvMjEnIHJldHVybnMgMjFcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtYXNrOiBudW1iZXI7XG5cbiAgLypcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBJUCBhZGRyZXNzZXMgaW4gdGhlIENJRFJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuZXR3b3JrU2l6ZTogbnVtYmVyO1xuXG4gIC8qXG4gICAqIFRoZSBuZXR3b3JrIGFkZHJlc3MgcHJvdmlkZWQgaW4gQ0lEUiBjcmVhdGlvbiBvZmZzZXQgYnkgdGhlIE5ldHNpemUgLTFcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbmV0d29ya0FkZHJlc3M6IG51bWJlcjtcblxuICAvKlxuICAgKiBQYXJzZXMgZWl0aGVyIENJRFIgbm90YXRpb24gU3RyaW5nIG9yIHR3byBudW1iZXJzIHJlcHJlc2VudGluZyB0aGUgSVBcbiAgICogc3BhY2VcbiAgICpcbiAgICogY2lkciBleHBlY3RzIGEgc3RyaW5nICcxMC4wLjAuMC8xNidcbiAgICogaXBBZGRyZXNzIGV4cGVjdHMgYSBudW1iZXJcbiAgICogbWFzayBleHBlY3RzIGEgbnVtYmVyXG4gICAqXG4gICAqIElmIHRoZSBnaXZlbiBgY2lkcmAgb3IgYGlwQWRkcmVzc2AgaXMgbm90IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrLFxuICAgKiB0aGVuIHRoZSBuZXh0IGF2YWlsYWJsZSBibG9jayB3aWxsIGJlIHJldHVybmVkLiBGb3IgZXhhbXBsZSwgaWZcbiAgICogYDEwLjAuMy4xLzI4YCBpcyBnaXZlbiB0aGUgcmV0dXJuZWQgYmxvY2sgd2lsbCByZXByZXNlbnQgYDEwLjAuMy4xNi8yOGAuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjaWRyOiBzdHJpbmcpXG4gIGNvbnN0cnVjdG9yKGlwQWRkcmVzczogbnVtYmVyLCBtYXNrOiBudW1iZXIpXG4gIGNvbnN0cnVjdG9yKGlwQWRkcmVzc09yQ2lkcjogc3RyaW5nIHwgbnVtYmVyLCBtYXNrPzogbnVtYmVyKSB7XG4gICAgaWYgKHR5cGVvZiBpcEFkZHJlc3NPckNpZHIgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLm1hc2sgPSBwYXJzZUludChpcEFkZHJlc3NPckNpZHIuc3BsaXQoJy8nKVsxXSwgMTApO1xuICAgICAgdGhpcy5uZXR3b3JrQWRkcmVzcyA9IE5ldHdvcmtVdGlscy5pcFRvTnVtKGlwQWRkcmVzc09yQ2lkci5zcGxpdCgnLycpWzBdKSArXG4gICAgICAgIENpZHJCbG9jay5jYWxjdWxhdGVOZXRzaXplKHRoaXMubWFzaykgLSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIG1hc2sgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHRoaXMubWFzayA9IG1hc2s7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlXG4gICAgICAgIHRoaXMubWFzayA9IDE2O1xuICAgICAgfVxuICAgICAgdGhpcy5uZXR3b3JrQWRkcmVzcyA9IGlwQWRkcmVzc09yQ2lkciArIENpZHJCbG9jay5jYWxjdWxhdGVOZXRzaXplKHRoaXMubWFzaykgLSAxO1xuICAgICAgdGhpcy5uZXR3b3JrU2l6ZSA9IDIgKiogKDMyIC0gdGhpcy5tYXNrKTtcbiAgICB9XG4gICAgdGhpcy5uZXR3b3JrU2l6ZSA9IDIgKiogKDMyIC0gdGhpcy5tYXNrKTtcbiAgICB0aGlzLmNpZHIgPSBgJHt0aGlzLm1pbklwKCl9LyR7dGhpcy5tYXNrfWA7XG4gIH1cblxuICAvKlxuICAgKiBUaGUgbWF4aW11bSBJUCBpbiB0aGUgQ0lEUiBCbG9jayBlLmcuICcxMC4wLjguMjU1J1xuICAgKi9cbiAgcHVibGljIG1heElwKCk6IHN0cmluZyB7XG4gICAgLy8gbWluICsgKDJeKDMyLW1hc2spKSAtIDEgW3plcm8gbmVlZHMgdG8gY291bnRdXG4gICAgcmV0dXJuIE5ldHdvcmtVdGlscy5udW1Ub0lwKHRoaXMubWF4QWRkcmVzcygpKTtcbiAgfVxuXG4gIC8qXG4gICAqIENoZWNrcyBpZiB0aGlzIENJRFIgYmxvY2sgZnVsbHkgY29udGFpbnMgdGhlIHByb3ZpZGVkIENJRFIgYmxvY2suXG4gICAqXG4gICAqIEBwYXJhbSBvdGhlciBUaGUgQ0lEUiBibG9jayB0byBjaGVjayBmb3IgY29udGFpbm1lbnQuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhpcyBDSURSIGJsb2NrIGZ1bGx5IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBDSURSIGJsb2NrLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIFRoZSBtaW5pbXVtIElQIGluIHRoZSBDSURSIEJsb2NrIGUuZy4gJzEwLjAuMC4wJ1xuICAgKi9cbiAgcHVibGljIG1pbklwKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE5ldHdvcmtVdGlscy5udW1Ub0lwKHRoaXMubWluQWRkcmVzcygpKTtcbiAgfVxuXG4gIC8qXG4gICAqIFJldHVybnMgdGhlIG51bWJlciByZXByZXNlbnRhdGlvbiBmb3IgdGhlIG1pbmltdW0gSVB2NCBhZGRyZXNzXG4gICAqL1xuICBwdWJsaWMgbWluQWRkcmVzcygpOiBudW1iZXIge1xuICAgIGNvbnN0IGRpdiA9IHRoaXMubmV0d29ya0FkZHJlc3MgJSB0aGlzLm5ldHdvcmtTaXplO1xuICAgIHJldHVybiB0aGlzLm5ldHdvcmtBZGRyZXNzIC0gZGl2O1xuICB9XG5cbiAgLypcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgbWF4aW11bSBJUHY0IGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBtYXhBZGRyZXNzKCk6IG51bWJlciB7XG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gSVAgYWRkcmVzcyBpbiB0aGUgQ0lEUiBibG9jayBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIGFkZHJlc3MgKyAoMl4oMzItbWFzaykpIC0gMS5cbiAgICAgKiBUaGlzIGlzIGJlY2F1c2UgdGhlIG1pbmltdW0gYWRkcmVzcyByZXByZXNlbnRzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGFuZCB0aGUgbWF4aW11bSBhZGRyZXNzIGlzIHRoZSBicm9hZGNhc3QgYWRkcmVzcy5cbiAgICAgKi9cbiAgICAvLyBtaW4gKyAoMl4oMzItbWFzaykpIC0gMSBbemVybyBuZWVkcyB0byBjb3VudF1cbiAgICByZXR1cm4gdGhpcy5taW5BZGRyZXNzKCkgKyB0aGlzLm5ldHdvcmtTaXplIC0gMTtcbiAgfVxuXG4gIC8qXG4gICAqIFJldHVybnMgdGhlIG5leHQgY29uc2VjdXRpdmUgQ0lEUiBibG9jayBvZiB0aGUgc2FtZSBtYXNrIHNpemUgZm9sbG93aW5nIHRoaXMgQ0lEUiBibG9jay5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoaXMgQ0lEUiBibG9jayBpcyAnMTAuMC4wLjAvMjQnLCB0aGUgbmV4dCBibG9jayB3b3VsZCBiZSAnMTAuMC4xLjAvMjQnLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBuZXh0IENJRFIgQmxvY2sgb2YgdGhlIHNhbWUgbWFzayBzaXplXG4gICAqL1xuICBwdWJsaWMgbmV4dEJsb2NrKCk6IENpZHJCbG9jayB7XG4gICAgcmV0dXJuIG5ldyBDaWRyQmxvY2sodGhpcy5tYXhBZGRyZXNzKCkgKyAxLCB0aGlzLm1hc2spO1xuICB9XG5cbiAgLypcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgQ2lkckJsb2NrIGZ1bGx5IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBDaWRyQmxvY2tcbiAgICovXG4gIHB1YmxpYyBjb250YWluc0NpZHIob3RoZXI6IENpZHJCbG9jayk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5tYXhBZGRyZXNzKCkgPj0gb3RoZXIubWF4QWRkcmVzcygpKSAmJlxuICAgICAgKHRoaXMubWluQWRkcmVzcygpIDw9IG90aGVyLm1pbkFkZHJlc3MoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBJUCBhZGRyZXNzIHJhbmdlcyBvdmVybGFwLlxuICAgKlxuICAgKiBAcGFyYW0gcmFuZ2UxIFRoZSBmaXJzdCBJUCBhZGRyZXNzIHJhbmdlIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IFtzdGFydCwgZW5kXS5cbiAgICogQHBhcmFtIHJhbmdlMiBUaGUgc2Vjb25kIElQIGFkZHJlc3MgcmFuZ2UgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgW3N0YXJ0LCBlbmRdLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB0d28gSVAgYWRkcmVzcyByYW5nZXMgb3ZlcmxhcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmQgYWRkcmVzc2VzIGFyZSB2YWxpZCBJUHY0IGFkZHJlc3Nlcy5cbiAgICovXG4gIHB1YmxpYyByYW5nZXNPdmVybGFwKHJhbmdlMTogW3N0cmluZywgc3RyaW5nXSwgcmFuZ2UyOiBbc3RyaW5nLCBzdHJpbmddKTogYm9vbGVhbiB7XG4gICAgY29uc3QgW3N0YXJ0MSwgZW5kMV0gPSByYW5nZTE7XG4gICAgY29uc3QgW3N0YXJ0MiwgZW5kMl0gPSByYW5nZTI7XG5cbiAgICAvLyBDaGVjayBpZiByYW5nZXMgb3ZlcmxhcFxuICAgIHJldHVybiBzdGFydDEgPD0gZW5kMiAmJiBzdGFydDIgPD0gZW5kMTtcbiAgfVxuXG59XG5cbi8qKlxuICogQ2xhc3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zIHRvIHN1cHBvcnRcbiAqIFN1Ym5ldCBJcHY2IEFkZHJlc3MgVmFsaWRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIElQdjYgQ0lEUiBibG9ja3MsIGluY2x1ZGluZyBjYWxjdWxhdGluZyB0aGUgbWluaW11bSBhbmQgbWF4aW11bVxuICogSVAgYWRkcmVzc2VzIGluIGEgQ0lEUiBibG9jaywgYW5kIGNoZWNraW5nIGlmIHR3byBDSURSIGJsb2NrcyBvdmVybGFwLlxuICovXG5leHBvcnQgY2xhc3MgQ2lkckJsb2NrSXB2NiB7XG5cbiAgLyoqXG4gICAqIElwdjYgQ0lEUiByYW5nZVxuICAgKi9cbiAgcHVibGljIGNpZHI6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBDSURSIHByZWZpeCBsZW5ndGggKG51bWJlciBvZiBiaXRzIHVzZWQgZm9yIHRoZSBuZXR3b3JrIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MpLlxuICAgKi9cbiAgcHVibGljIGNpZHJQcmVmaXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBpcFBhcnRzOiBiaWdpbnRbXTtcbiAgcHJpdmF0ZSBuZXR3b3JrQml0czogbnVtYmVyO1xuICBwcml2YXRlIG5ldHdvcmtQYXJ0OiBiaWdpbnRbXTtcblxuICBjb25zdHJ1Y3RvcihjaWRyOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNpZHIgPSBjaWRyO1xuICAgIGNvbnN0IFtpcEFkZHJlc3MsIHByZWZpeF0gPSBjaWRyLnNwbGl0KCcvJyk7XG4gICAgdGhpcy5jaWRyUHJlZml4ID0gcGFyc2VJbnQocHJlZml4LCAxMCk7XG4gICAgdGhpcy5pcFBhcnRzID0gdGhpcy5wYXJzZUJpZ0ludFBhcnRzKGlwQWRkcmVzcyk7XG4gICAgdGhpcy5uZXR3b3JrQml0cyA9IHRoaXMuY2lkclByZWZpeDtcbiAgICB0aGlzLm5ldHdvcmtQYXJ0ID0gdGhpcy5pcFBhcnRzLnNsaWNlKDAsIE1hdGguY2VpbCh0aGlzLm5ldHdvcmtCaXRzIC8gMTYpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWdJbnRQYXJ0cyhpcEFkZHJlc3M6IHN0cmluZyk6IGJpZ2ludFtdIHtcbiAgICByZXR1cm4gaXBBZGRyZXNzLnNwbGl0KCc6JykubWFwKChwYXJ0KSA9PiBCaWdJbnQoYDB4JHtwYXJ0LnBhZFN0YXJ0KDQsICcwJyl9YCB8fCAnMCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBNaW5pbXVtIElQdjYgYWRkcmVzcyBmb3IgYSBwcm92aWRlZCBDSURSXG4gICAqL1xuICBwdWJsaWMgbWluSXAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFydElQID0gWy4uLnRoaXMubmV0d29ya1BhcnRdO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLm5ldHdvcmtQYXJ0Lmxlbmd0aDsgaSA8IDg7IGkrKykge1xuICAgICAgc3RhcnRJUC5wdXNoKEJpZ0ludCgwKSk7XG4gICAgfVxuICAgIHJldHVybiBzdGFydElQLm1hcCh0aGlzLmZvcm1hdElQdjZQYXJ0KS5qb2luKCc6Jyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgTWF4aW11bSBJUHY2IGFkZHJlc3MgZm9yIGEgcHJvdmlkZWQgQ0lEUlxuICAgKi9cbiAgcHVibGljIG1heElwKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5kSVAgPSBbLi4udGhpcy5uZXR3b3JrUGFydF07XG4gICAgY29uc3QgaG9zdFBhcnQgPSBBcnJheSg4IC0gdGhpcy5uZXR3b3JrUGFydC5sZW5ndGgpLmZpbGwoQmlnSW50KDB4ZmZmZikpO1xuICAgIGVuZElQLnB1c2goLi4uaG9zdFBhcnQpO1xuXG4gICAgcmV0dXJuIGVuZElQLm1hcCh0aGlzLmZvcm1hdElQdjZQYXJ0KS5qb2luKCc6Jyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdElQdjZQYXJ0ID0gKHBhcnQ6IGJpZ2ludCkgPT4gcGFydC50b1N0cmluZygxNikucGFkU3RhcnQoNCwgJzAnKTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHJhbmdlMSBJcHY2IENJRFIgcmFuZ2UgdG8gY29tcGFyZVxuICAgKiBAcGFyYW0gcmFuZ2UyIElwdjYgQ0lEUiByYW5nZSB0byBjb21wYXJlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdHdvIHJhbmdlcyBvdmVybGFwLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyByYW5nZXNPdmVybGFwKHJhbmdlMTogc3RyaW5nLCByYW5nZTI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFtzdGFydDEsIGVuZDFdID0gdGhpcy5nZXRJUHY2UmFuZ2UocmFuZ2UxKTtcbiAgICBjb25zdCBbc3RhcnQyLCBlbmQyXSA9IHRoaXMuZ2V0SVB2NlJhbmdlKHJhbmdlMik7XG5cbiAgICByZXR1cm4gKHN0YXJ0MSA8PSBlbmQyKSAmJiAoc3RhcnQyIDw9IGVuZDEpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjaWRyXG4gICAqIEByZXR1cm5zIFJhbmdlIGluIHRoZSBmcm9tIG9mIGJpZyBpbnQgbnVtYmVyIFtzdGFydCwgZW5kXVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRJUHY2UmFuZ2UoY2lkcjogc3RyaW5nKTogW2JpZ2ludCwgYmlnaW50XSB7XG4gICAgY29uc3QgW2lwdjZBZGRyZXNzLCBwcmVmaXhMZW5ndGhdID0gY2lkci5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGlwdjZOdW1iZXIgPSB0aGlzLmlwdjZUb051bWJlcihpcHY2QWRkcmVzcyk7XG4gICAgY29uc3QgbWFzayA9IChCaWdJbnQoMSkgPDwgQmlnSW50KDEyOCAtIE51bWJlcihwcmVmaXhMZW5ndGgpKSkgLSBCaWdJbnQoMSk7XG4gICAgY29uc3QgbmV0d29ya1ByZWZpeCA9IGlwdjZOdW1iZXIgJiB+bWFzaztcbiAgICBjb25zdCBzdGFydCA9IG5ldHdvcmtQcmVmaXg7XG4gICAgY29uc3QgZW5kID0gbmV0d29ya1ByZWZpeCB8IG1hc2s7XG5cbiAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpcHY2QWRkcmVzc1xuICAgKiBAcmV0dXJucyBDb252ZXJ0cyBnaXZlbiBpcHY2IGFkZHJlc3MgcmFuZ2UgdG8gYmlnIGludCBudW1iZXJcbiAgICovXG4gIHByaXZhdGUgaXB2NlRvTnVtYmVyKGlwdjZBZGRyZXNzOiBzdHJpbmcpOiBiaWdpbnQge1xuICAgIGNvbnN0IGJsb2NrcyA9IHRoaXMucGFyc2VCaWdJbnRQYXJ0cyhpcHY2QWRkcmVzcyk7XG4gICAgbGV0IGlwdjZOdW1iZXIgPSBCaWdJbnQoMCk7XG4gICAgZm9yIChjb25zdCBibG9jayBvZiBibG9ja3MpIHtcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWJpdHdpc2UgKi9cbiAgICAgIGlwdjZOdW1iZXIgPSAoaXB2Nk51bWJlciA8PCBCaWdJbnQoMTYpKSArIGJsb2NrO1xuICAgIH1cbiAgICByZXR1cm4gaXB2Nk51bWJlcjtcbiAgfVxufSJdfQ==
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTs7O0FBU3JFLHdFQUVDO0FBS0QsNEJBRUM7QUFLRCw0Q0FRQztBQUVELDBCQUVDO0FBL0JEOzs7O0dBSUc7QUFDSCxTQUFnQiw4QkFBOEIsQ0FBQyxNQUFlO0lBQzVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsSUFBWSxFQUFFLENBQVM7SUFDOUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBa0I7SUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hELEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLEVBQVM7SUFDbEMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUV2Qjs7Ozs7Ozs7O09BU0c7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNB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QU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sYUFBYSxHQUFHLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQztRQUVqQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3JCO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWSxDQUFDLFdBQW1CO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQiwrQkFBK0I7WUFDL0IsVUFBVSxHQUFHLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7S0FDbkI7Q0FDRjtBQTdGRCxzQ0E2RkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKmVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wiflwiLCBcInxcIiwgXCI8PFwiLCBcIiZcIl0gfV0gKi9cblxuaW1wb3J0IHsgSVN1Ym5ldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuXG4vKipcbiAqIFJldHVybiBhIHN1Ym5ldCBuYW1lIGZyb20gaXRzIGNvbnN0cnVjdCBJRFxuICpcbiAqIEFsbCBzdWJuZXQgbmFtZXMgbG9vayBsaWtlIE5BTUUgPD4gXCJTdWJuZXRcIiA8PiBJTkRFWFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkKHN1Ym5ldDogSVN1Ym5ldCkge1xuICByZXR1cm4gc3VibmV0Lm5vZGUuaWQucmVwbGFjZSgvU3VibmV0XFxkKyQvLCAnJyk7XG59XG5cbi8qKlxuICogTWFrZSB0aGUgc3VibmV0IGNvbnN0cnVjdCBJRCBmcm9tIGEgbmFtZSBhbmQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJuZXRJZChuYW1lOiBzdHJpbmcsIGk6IG51bWJlcikge1xuICByZXR1cm4gYCR7bmFtZX1TdWJuZXQke2kgKyAxfWA7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSB1bmlvbiBvZiB0YWJsZSBJRHMgZnJvbSBhbGwgc2VsZWN0ZWQgc3VibmV0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsUm91dGVUYWJsZUlkcyhzdWJuZXRzOiBJU3VibmV0W10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBzdWJuZXRzKSB7XG4gICAgaWYgKHN1Ym5ldC5yb3V0ZVRhYmxlICYmIHN1Ym5ldC5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCkge1xuICAgICAgcmV0LmFkZChzdWJuZXQucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gQXJyYXkuZnJvbShyZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbjxBPih4czogQVtdW10pOiBBW10ge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgeHMpO1xufVxuXG4vKipcbiAqIE5ldHdvcmtVdGlscyBjb250YWlucyBoZWxwZXJzIHRvIHdvcmsgd2l0aCBuZXR3b3JrIGNvbnN0cnVjdHMgKHN1Ym5ldHMvcmFuZ2VzKVxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya1V0aWxzIHtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuIElQdjQgYWRkcmVzcyBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBpcEFkZHJlc3MgVGhlIElQdjQgYWRkcmVzcyBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBJUHY0IGFkZHJlc3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogVmFsaWRhdGVzIGFuIElQdjQgc3RyaW5nXG4gICAqXG4gICAqIHJldHVybnMgdHJ1ZSBvZiB0aGUgc3RyaW5nIGNvbnRhaW5zIDQgbnVtYmVycyBiZXR3ZWVuIDAtMjU1IGRlbGltaXRlZCBieVxuICAgKiBhIGAuYCBjaGFyYWN0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmFsaWRJcChpcEFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9jdGV0cyA9IGlwQWRkcmVzcy5zcGxpdCgnLicpO1xuICAgIGlmIChvY3RldHMubGVuZ3RoICE9PSA0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBvY3RldHMubWFwKChvY3RldDogc3RyaW5nKSA9PiBwYXJzZUludChvY3RldCwgMTApKS5cbiAgICAgIGV2ZXJ5KChvY3RldDogbnVtYmVyKSA9PiBvY3RldCA+PSAwICYmIG9jdGV0IDw9IDI1NSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NCBhZGRyZXNzIHRvIGl0cyBjb3JyZXNwb25kaW5nIG51bWVyaWNhbCB2YWx1ZS5cbiAgICpcbiAgICogVXNlcyB0aGUgZm9ybXVsYTpcbiAgICogKGZpcnN0IG9jdGV0ICogMjU2wrMpICsgKHNlY29uZCBvY3RldCAqIDI1NsKyKSArICh0aGlyZCBvY3RldCAqIDI1NikgK1xuICAgKiAoZm91cnRoIG9jdGV0KVxuICAgKlxuICAgKiBAcGFyYW0gIGlwQWRkcmVzcyB0aGUgSVAgYWRkcmVzcyAoZS5nLiAxNzQuNjYuMTczLjE2OClcbiAgICogQHJldHVybnMgdGhlIGludGVnZXIgdmFsdWUgb2YgdGhlIElQIGFkZHJlc3MgKGUuZyAyOTIzNjA1NDE2KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcFRvTnVtKGlwQWRkcmVzczogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudmFsaWRJcChpcEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXBBZGRyZXNzfSBpcyBub3QgdmFsaWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXBBZGRyZXNzXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKHA6IG51bWJlciwgYzogc3RyaW5nLCBpOiBudW1iZXIpID0+IHAgKyBwYXJzZUludChjLCAxMCkgKiAyNTYgKiogKDMgLSBpKSxcbiAgICAgICAgMCxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGFrZXMgbnVtYmVyIGFuZCBjb252ZXJ0cyBpdCB0byBJUHY0IGFkZHJlc3Mgc3RyaW5nXG4gICAqXG4gICAqIFRha2VzIGEgbnVtYmVyIChlLmcgMjkyMzYwNTQxNikgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIElQdjQgYWRkcmVzcyBzdHJpbmdcbiAgICogY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgSVB2NFxuICAgKlxuICAgKiBAcGFyYW0gaXBOdW0gaW50ZWdlciB2YWx1ZSBvZiB0aGUgSVAgYWRkcmVzcyAoZS5nIDI5MjM2MDU0MTYpXG4gICAqIEByZXR1cm5zIElQdjQgYWRkcmVzcyAoZS5nLiAxNzQuNjYuMTczLjE2OClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtVG9JcChpcE51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAvLyB0aGlzIGFsbCBiZWNhdXNlIGJpdHdpc2UgbWF0aCBpcyBzaWduZWRcbiAgICBsZXQgcmVtYWluaW5nID0gaXBOdW07XG4gICAgY29uc3QgYWRkcmVzcyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgIGlmIChyZW1haW5pbmcgIT09IDApIHtcbiAgICAgICAgYWRkcmVzcy5wdXNoKE1hdGguZmxvb3IocmVtYWluaW5nIC8gMjU2ICoqICgzIC0gaSkpKTtcbiAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nICUgMjU2ICoqICgzIC0gaSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRyZXNzLnB1c2goMCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlwQWRkcmVzczogc3RyaW5nID0gYWRkcmVzcy5qb2luKCcuJyk7XG4gICAgaWYgKCAhdGhpcy52YWxpZElwKGlwQWRkcmVzcykgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXBBZGRyZXNzfSBpcyBub3QgYSB2YWxpZCBJUCBBZGRyZXNzYCk7XG4gICAgfVxuICAgIHJldHVybiBpcEFkZHJlc3M7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBjbGFzcyBmcm9tIFZQQyB0byBzdXBwb3J0IHN1Ym5ldCBmaWx0ZXJpbmdcbiAqIGFuZCBDSURSIHZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIENpZHJCbG9jayB7XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG5ldG1hc2sgZm9yIGEgZ2l2ZW4gQ0lEUiBtYXNrXG4gICAqXG4gICAqIFRoZSBuZXRtYXNrIGlzIGEgMzItYml0IGJpbmFyeSB2YWx1ZSB1c2VkIHRvIHNlcGFyYXRlIHRoZSBuZXR3b3JrIHBvcnRpb24gZnJvbSB0aGUgaG9zdCBwb3J0aW9uIG9mIGFuIElQdjQgYWRkcmVzcy5cbiAgICogSXQgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgQ0lEUiBwcmVmaXggbGVuZ3RoICh0aGUgbnVtYmVyIG9mIGJpdHMgdXNlZCB0byByZXByZXNlbnQgdGhlIG5ldHdvcmsgcG9ydGlvbikuXG4gICAqXG4gICAqIEZvciBleGFtcGxlOlxuICAgKiBDaWRyQmxvY2suY2FsY3VsYXRlTmV0bWFzaygyNCkgcmV0dXJucyAnMjU1LjI1NS4yNTUuMCdcbiAgICpcbiAgICogQHBhcmFtIG1hc2sgVGhlIENJRFIgcHJlZml4IGxlbmd0aCAoYmV0d2VlbiAwIGFuZCAzMikgZm9yIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgbmV0bWFzay5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIG5ldG1hc2sgYnkgcGVyZm9ybWluZyBhIGJpdHdpc2UgTk9UIG9uIHRoZSByZXN1bHQgb2YgKDJeMzIgLSAyXigzMiAtIG1hc2spKVxuICAgKiBAcmV0dXJucyBUaGUgbmV0bWFzayBzdHJpbmcgaW4gSVB2NCBhZGRyZXNzIGZvcm1hdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlTmV0bWFzayhtYXNrOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBOZXR3b3JrVXRpbHMubnVtVG9JcCgyICoqIDMyIC0gMiAqKiAoMzIgLSBtYXNrKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIElQIGFkZHJlc3NlcyBpbiBhIENJRFIgTWFza1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogQ2lkckJsb2NrLmNhbGN1bGF0ZU5ldHNpemUoMTYpIHJldHVybnMgNjU1MzZcbiAgICpcbiAgICogQHBhcmFtIG1hc2sgVGhlIENJRFIgcHJlZml4IGxlbmd0aCAoYmV0d2VlbiAwIGFuZCAzMikgZm9yIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgbmV0d29yayBzaXplLlxuICAgKiBDaWRyQmxvY2suY2FsY3VsYXRlTmV0c2l6ZSgyNCkgcmV0dXJucyAyNTZcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlTmV0c2l6ZShtYXNrOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiAyICoqICgzMiAtIG1hc2spO1xuICB9XG5cbiAgLyoqXG4gICAqIElQIGFkZHJlc3MgaW4gdGhlIENJRFIgYmxvY2suXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2lkcjogc3RyaW5nO1xuXG4gIC8qXG4gICAqIFRoZSBDSURSIG1hc2sgZS5nLiBmb3IgQ0lEUiAnMTAuMC4wLjAvMjEnIHJldHVybnMgMjFcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtYXNrOiBudW1iZXI7XG5cbiAgLypcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBJUCBhZGRyZXNzZXMgaW4gdGhlIENJRFJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuZXR3b3JrU2l6ZTogbnVtYmVyO1xuXG4gIC8qXG4gICAqIFRoZSBuZXR3b3JrIGFkZHJlc3MgcHJvdmlkZWQgaW4gQ0lEUiBjcmVhdGlvbiBvZmZzZXQgYnkgdGhlIE5ldHNpemUgLTFcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbmV0d29ya0FkZHJlc3M6IG51bWJlcjtcblxuICAvKlxuICAgKiBQYXJzZXMgZWl0aGVyIENJRFIgbm90YXRpb24gU3RyaW5nIG9yIHR3byBudW1iZXJzIHJlcHJlc2VudGluZyB0aGUgSVBcbiAgICogc3BhY2VcbiAgICpcbiAgICogY2lkciBleHBlY3RzIGEgc3RyaW5nICcxMC4wLjAuMC8xNidcbiAgICogaXBBZGRyZXNzIGV4cGVjdHMgYSBudW1iZXJcbiAgICogbWFzayBleHBlY3RzIGEgbnVtYmVyXG4gICAqXG4gICAqIElmIHRoZSBnaXZlbiBgY2lkcmAgb3IgYGlwQWRkcmVzc2AgaXMgbm90IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrLFxuICAgKiB0aGVuIHRoZSBuZXh0IGF2YWlsYWJsZSBibG9jayB3aWxsIGJlIHJldHVybmVkLiBGb3IgZXhhbXBsZSwgaWZcbiAgICogYDEwLjAuMy4xLzI4YCBpcyBnaXZlbiB0aGUgcmV0dXJuZWQgYmxvY2sgd2lsbCByZXByZXNlbnQgYDEwLjAuMy4xNi8yOGAuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjaWRyOiBzdHJpbmcpXG4gIGNvbnN0cnVjdG9yKGlwQWRkcmVzczogbnVtYmVyLCBtYXNrOiBudW1iZXIpXG4gIGNvbnN0cnVjdG9yKGlwQWRkcmVzc09yQ2lkcjogc3RyaW5nIHwgbnVtYmVyLCBtYXNrPzogbnVtYmVyKSB7XG4gICAgaWYgKHR5cGVvZiBpcEFkZHJlc3NPckNpZHIgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLm1hc2sgPSBwYXJzZUludChpcEFkZHJlc3NPckNpZHIuc3BsaXQoJy8nKVsxXSwgMTApO1xuICAgICAgdGhpcy5uZXR3b3JrQWRkcmVzcyA9IE5ldHdvcmtVdGlscy5pcFRvTnVtKGlwQWRkcmVzc09yQ2lkci5zcGxpdCgnLycpWzBdKSArXG4gICAgICAgIENpZHJCbG9jay5jYWxjdWxhdGVOZXRzaXplKHRoaXMubWFzaykgLSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIG1hc2sgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHRoaXMubWFzayA9IG1hc2s7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlXG4gICAgICAgIHRoaXMubWFzayA9IDE2O1xuICAgICAgfVxuICAgICAgdGhpcy5uZXR3b3JrQWRkcmVzcyA9IGlwQWRkcmVzc09yQ2lkciArIENpZHJCbG9jay5jYWxjdWxhdGVOZXRzaXplKHRoaXMubWFzaykgLSAxO1xuICAgICAgdGhpcy5uZXR3b3JrU2l6ZSA9IDIgKiogKDMyIC0gdGhpcy5tYXNrKTtcbiAgICB9XG4gICAgdGhpcy5uZXR3b3JrU2l6ZSA9IDIgKiogKDMyIC0gdGhpcy5tYXNrKTtcbiAgICB0aGlzLmNpZHIgPSBgJHt0aGlzLm1pbklwKCl9LyR7dGhpcy5tYXNrfWA7XG4gIH1cblxuICAvKlxuICAgKiBUaGUgbWF4aW11bSBJUCBpbiB0aGUgQ0lEUiBCbG9jayBlLmcuICcxMC4wLjguMjU1J1xuICAgKi9cbiAgcHVibGljIG1heElwKCk6IHN0cmluZyB7XG4gICAgLy8gbWluICsgKDJeKDMyLW1hc2spKSAtIDEgW3plcm8gbmVlZHMgdG8gY291bnRdXG4gICAgcmV0dXJuIE5ldHdvcmtVdGlscy5udW1Ub0lwKHRoaXMubWF4QWRkcmVzcygpKTtcbiAgfVxuXG4gIC8qXG4gICAqIENoZWNrcyBpZiB0aGlzIENJRFIgYmxvY2sgZnVsbHkgY29udGFpbnMgdGhlIHByb3ZpZGVkIENJRFIgYmxvY2suXG4gICAqXG4gICAqIEBwYXJhbSBvdGhlciBUaGUgQ0lEUiBibG9jayB0byBjaGVjayBmb3IgY29udGFpbm1lbnQuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhpcyBDSURSIGJsb2NrIGZ1bGx5IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBDSURSIGJsb2NrLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIFRoZSBtaW5pbXVtIElQIGluIHRoZSBDSURSIEJsb2NrIGUuZy4gJzEwLjAuMC4wJ1xuICAgKi9cbiAgcHVibGljIG1pbklwKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE5ldHdvcmtVdGlscy5udW1Ub0lwKHRoaXMubWluQWRkcmVzcygpKTtcbiAgfVxuXG4gIC8qXG4gICAqIFJldHVybnMgdGhlIG51bWJlciByZXByZXNlbnRhdGlvbiBmb3IgdGhlIG1pbmltdW0gSVB2NCBhZGRyZXNzXG4gICAqL1xuICBwdWJsaWMgbWluQWRkcmVzcygpOiBudW1iZXIge1xuICAgIGNvbnN0IGRpdiA9IHRoaXMubmV0d29ya0FkZHJlc3MgJSB0aGlzLm5ldHdvcmtTaXplO1xuICAgIHJldHVybiB0aGlzLm5ldHdvcmtBZGRyZXNzIC0gZGl2O1xuICB9XG5cbiAgLypcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgbWF4aW11bSBJUHY0IGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBtYXhBZGRyZXNzKCk6IG51bWJlciB7XG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gSVAgYWRkcmVzcyBpbiB0aGUgQ0lEUiBibG9jayBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIGFkZHJlc3MgKyAoMl4oMzItbWFzaykpIC0gMS5cbiAgICAgKiBUaGlzIGlzIGJlY2F1c2UgdGhlIG1pbmltdW0gYWRkcmVzcyByZXByZXNlbnRzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGFuZCB0aGUgbWF4aW11bSBhZGRyZXNzIGlzIHRoZSBicm9hZGNhc3QgYWRkcmVzcy5cbiAgICAgKi9cbiAgICAvLyBtaW4gKyAoMl4oMzItbWFzaykpIC0gMSBbemVybyBuZWVkcyB0byBjb3VudF1cbiAgICByZXR1cm4gdGhpcy5taW5BZGRyZXNzKCkgKyB0aGlzLm5ldHdvcmtTaXplIC0gMTtcbiAgfVxuXG4gIC8qXG4gICAqIFJldHVybnMgdGhlIG5leHQgY29uc2VjdXRpdmUgQ0lEUiBibG9jayBvZiB0aGUgc2FtZSBtYXNrIHNpemUgZm9sbG93aW5nIHRoaXMgQ0lEUiBibG9jay5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoaXMgQ0lEUiBibG9jayBpcyAnMTAuMC4wLjAvMjQnLCB0aGUgbmV4dCBibG9jayB3b3VsZCBiZSAnMTAuMC4xLjAvMjQnLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBuZXh0IENJRFIgQmxvY2sgb2YgdGhlIHNhbWUgbWFzayBzaXplXG4gICAqL1xuICBwdWJsaWMgbmV4dEJsb2NrKCk6IENpZHJCbG9jayB7XG4gICAgcmV0dXJuIG5ldyBDaWRyQmxvY2sodGhpcy5tYXhBZGRyZXNzKCkgKyAxLCB0aGlzLm1hc2spO1xuICB9XG5cbiAgLypcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgQ2lkckJsb2NrIGZ1bGx5IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBDaWRyQmxvY2tcbiAgICovXG4gIHB1YmxpYyBjb250YWluc0NpZHIob3RoZXI6IENpZHJCbG9jayk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5tYXhBZGRyZXNzKCkgPj0gb3RoZXIubWF4QWRkcmVzcygpKSAmJlxuICAgICAgKHRoaXMubWluQWRkcmVzcygpIDw9IG90aGVyLm1pbkFkZHJlc3MoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBJUCBhZGRyZXNzIHJhbmdlcyBvdmVybGFwLlxuICAgKlxuICAgKiBAcGFyYW0gcmFuZ2UxIFRoZSBmaXJzdCBJUCBhZGRyZXNzIHJhbmdlIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IFtzdGFydCwgZW5kXS5cbiAgICogQHBhcmFtIHJhbmdlMiBUaGUgc2Vjb25kIElQIGFkZHJlc3MgcmFuZ2UgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgW3N0YXJ0LCBlbmRdLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB0d28gSVAgYWRkcmVzcyByYW5nZXMgb3ZlcmxhcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmQgYWRkcmVzc2VzIGFyZSB2YWxpZCBJUHY0IGFkZHJlc3Nlcy5cbiAgICovXG4gIHB1YmxpYyByYW5nZXNPdmVybGFwKHJhbmdlMTogW3N0cmluZywgc3RyaW5nXSwgcmFuZ2UyOiBbc3RyaW5nLCBzdHJpbmddKTogYm9vbGVhbiB7XG4gICAgY29uc3QgW3N0YXJ0MSwgZW5kMV0gPSByYW5nZTE7XG4gICAgY29uc3QgW3N0YXJ0MiwgZW5kMl0gPSByYW5nZTI7XG5cbiAgICAvLyBDaGVjayBpZiByYW5nZXMgb3ZlcmxhcFxuICAgIHJldHVybiBzdGFydDEgPD0gZW5kMiAmJiBzdGFydDIgPD0gZW5kMTtcbiAgfVxuXG59XG5cbi8qKlxuICogQ2xhc3Mgd2l0aCBoZWxwZXIgZnVuY3Rpb25zIHRvIHN1cHBvcnRcbiAqIFN1Ym5ldCBJcHY2IEFkZHJlc3MgVmFsaWRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIElQdjYgQ0lEUiBibG9ja3MsIGluY2x1ZGluZyBjYWxjdWxhdGluZyB0aGUgbWluaW11bSBhbmQgbWF4aW11bVxuICogSVAgYWRkcmVzc2VzIGluIGEgQ0lEUiBibG9jaywgYW5kIGNoZWNraW5nIGlmIHR3byBDSURSIGJsb2NrcyBvdmVybGFwLlxuICovXG5leHBvcnQgY2xhc3MgQ2lkckJsb2NrSXB2NiB7XG5cbiAgLyoqXG4gICAqIElwdjYgQ0lEUiByYW5nZVxuICAgKi9cbiAgcHVibGljIGNpZHI6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBDSURSIHByZWZpeCBsZW5ndGggKG51bWJlciBvZiBiaXRzIHVzZWQgZm9yIHRoZSBuZXR3b3JrIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MpLlxuICAgKi9cbiAgcHVibGljIGNpZHJQcmVmaXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBpcFBhcnRzOiBiaWdpbnRbXTtcbiAgcHJpdmF0ZSBuZXR3b3JrQml0czogbnVtYmVyO1xuICBwcml2YXRlIG5ldHdvcmtQYXJ0OiBiaWdpbnRbXTtcblxuICBjb25zdHJ1Y3RvcihjaWRyOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNpZHIgPSBjaWRyO1xuICAgIGNvbnN0IFtpcEFkZHJlc3MsIHByZWZpeF0gPSBjaWRyLnNwbGl0KCcvJyk7XG4gICAgdGhpcy5jaWRyUHJlZml4ID0gcGFyc2VJbnQocHJlZml4LCAxMCk7XG4gICAgdGhpcy5pcFBhcnRzID0gdGhpcy5wYXJzZUJpZ0ludFBhcnRzKGlwQWRkcmVzcyk7XG4gICAgdGhpcy5uZXR3b3JrQml0cyA9IHRoaXMuY2lkclByZWZpeDtcbiAgICB0aGlzLm5ldHdvcmtQYXJ0ID0gdGhpcy5pcFBhcnRzLnNsaWNlKDAsIE1hdGguY2VpbCh0aGlzLm5ldHdvcmtCaXRzIC8gMTYpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWdJbnRQYXJ0cyhpcEFkZHJlc3M6IHN0cmluZyk6IGJpZ2ludFtdIHtcbiAgICByZXR1cm4gaXBBZGRyZXNzLnNwbGl0KCc6JykubWFwKChwYXJ0KSA9PiBCaWdJbnQoYDB4JHtwYXJ0LnBhZFN0YXJ0KDQsICcwJyl9YCB8fCAnMCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBNaW5pbXVtIElQdjYgYWRkcmVzcyBmb3IgYSBwcm92aWRlZCBDSURSXG4gICAqL1xuICBwdWJsaWMgbWluSXAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFydElQID0gWy4uLnRoaXMubmV0d29ya1BhcnRdO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLm5ldHdvcmtQYXJ0Lmxlbmd0aDsgaSA8IDg7IGkrKykge1xuICAgICAgc3RhcnRJUC5wdXNoKEJpZ0ludCgwKSk7XG4gICAgfVxuICAgIHJldHVybiBzdGFydElQLm1hcCh0aGlzLmZvcm1hdElQdjZQYXJ0KS5qb2luKCc6Jyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgTWF4aW11bSBJUHY2IGFkZHJlc3MgZm9yIGEgcHJvdmlkZWQgQ0lEUlxuICAgKi9cbiAgcHVibGljIG1heElwKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5kSVAgPSBbLi4udGhpcy5uZXR3b3JrUGFydF07XG4gICAgY29uc3QgaG9zdFBhcnQgPSBBcnJheSg4IC0gdGhpcy5uZXR3b3JrUGFydC5sZW5ndGgpLmZpbGwoQmlnSW50KDB4ZmZmZikpO1xuICAgIGVuZElQLnB1c2goLi4uaG9zdFBhcnQpO1xuXG4gICAgcmV0dXJuIGVuZElQLm1hcCh0aGlzLmZvcm1hdElQdjZQYXJ0KS5qb2luKCc6Jyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdElQdjZQYXJ0ID0gKHBhcnQ6IGJpZ2ludCkgPT4gcGFydC50b1N0cmluZygxNikucGFkU3RhcnQoNCwgJzAnKTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHJhbmdlMSBJcHY2IENJRFIgcmFuZ2UgdG8gY29tcGFyZVxuICAgKiBAcGFyYW0gcmFuZ2UyIElwdjYgQ0lEUiByYW5nZSB0byBjb21wYXJlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdHdvIHJhbmdlcyBvdmVybGFwLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyByYW5nZXNPdmVybGFwKHJhbmdlMTogc3RyaW5nLCByYW5nZTI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFtzdGFydDEsIGVuZDFdID0gdGhpcy5nZXRJUHY2UmFuZ2UocmFuZ2UxKTtcbiAgICBjb25zdCBbc3RhcnQyLCBlbmQyXSA9IHRoaXMuZ2V0SVB2NlJhbmdlKHJhbmdlMik7XG5cbiAgICByZXR1cm4gKHN0YXJ0MSA8PSBlbmQyKSAmJiAoc3RhcnQyIDw9IGVuZDEpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjaWRyXG4gICAqIEByZXR1cm5zIFJhbmdlIGluIHRoZSBmcm9tIG9mIGJpZyBpbnQgbnVtYmVyIFtzdGFydCwgZW5kXVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRJUHY2UmFuZ2UoY2lkcjogc3RyaW5nKTogW2JpZ2ludCwgYmlnaW50XSB7XG4gICAgY29uc3QgW2lwdjZBZGRyZXNzLCBwcmVmaXhMZW5ndGhdID0gY2lkci5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGlwdjZOdW1iZXIgPSB0aGlzLmlwdjZUb051bWJlcihpcHY2QWRkcmVzcyk7XG4gICAgY29uc3QgbWFzayA9IChCaWdJbnQoMSkgPDwgQmlnSW50KDEyOCAtIE51bWJlcihwcmVmaXhMZW5ndGgpKSkgLSBCaWdJbnQoMSk7XG4gICAgY29uc3QgbmV0d29ya1ByZWZpeCA9IGlwdjZOdW1iZXIgJiB+bWFzaztcbiAgICBjb25zdCBzdGFydCA9IG5ldHdvcmtQcmVmaXg7XG4gICAgY29uc3QgZW5kID0gbmV0d29ya1ByZWZpeCB8IG1hc2s7XG5cbiAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpcHY2QWRkcmVzc1xuICAgKiBAcmV0dXJucyBDb252ZXJ0cyBnaXZlbiBpcHY2IGFkZHJlc3MgcmFuZ2UgdG8gYmlnIGludCBudW1iZXJcbiAgICovXG4gIHByaXZhdGUgaXB2NlRvTnVtYmVyKGlwdjZBZGRyZXNzOiBzdHJpbmcpOiBiaWdpbnQge1xuICAgIGNvbnN0IGJsb2NrcyA9IHRoaXMucGFyc2VCaWdJbnRQYXJ0cyhpcHY2QWRkcmVzcyk7XG4gICAgbGV0IGlwdjZOdW1iZXIgPSBCaWdJbnQoMCk7XG4gICAgZm9yIChjb25zdCBibG9jayBvZiBibG9ja3MpIHtcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWJpdHdpc2UgKi9cbiAgICAgIGlwdjZOdW1iZXIgPSAoaXB2Nk51bWJlciA8PCBCaWdJbnQoMTYpKSArIGJsb2NrO1xuICAgIH1cbiAgICByZXR1cm4gaXB2Nk51bWJlcjtcbiAgfVxufVxuIl19
|
package/lib/vpc-v2-base.js
CHANGED
|
@@ -450,7 +450,7 @@ class VpcV2Base extends aws_cdk_lib_1.Resource {
|
|
|
450
450
|
}
|
|
451
451
|
exports.VpcV2Base = VpcV2Base;
|
|
452
452
|
_a = JSII_RTTI_SYMBOL_1;
|
|
453
|
-
VpcV2Base[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2Base", version: "2.
|
|
453
|
+
VpcV2Base[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2Base", version: "2.172.0-alpha.0" };
|
|
454
454
|
class CompositeDependable {
|
|
455
455
|
constructor() {
|
|
456
456
|
this.dependables = new Array();
|
|
@@ -479,4 +479,4 @@ function tap(x, fn) {
|
|
|
479
479
|
fn(x);
|
|
480
480
|
return x;
|
|
481
481
|
}
|
|
482
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2cGMtdjItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2Q0FBeUQ7QUFDekQsaURBQWtjO0FBQ2xjLGlDQUFtRjtBQUNuRiwyQ0FBa0Y7QUFDbEYsbUNBQWlNO0FBRWpNLGlEQUFzRjtBQWtLdEY7Ozs7R0FJRztBQUNILE1BQXNCLFNBQVUsU0FBUSxzQkFBUTtJQUFoRDs7UUFpQkU7O1VBRUU7UUFDYyxrQkFBYSxHQUFjLEVBQUUsQ0FBQztRQUU5Qzs7VUFFRTtRQUNjLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBTy9DOztVQUVFO1FBQ2Msc0JBQWlCLEdBQWEsRUFBRSxDQUFDO1FBT2pEOzs7O1dBSUc7UUFDZ0IscUNBQWdDLEdBQUcsSUFBSSw0QkFBZSxFQUFFLENBQUM7UUFpQzVFOztVQUVFO1FBQ1EsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBUXREOzs7V0FHRztRQUNPLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztLQXdabkM7SUF0WkM7Ozs7O01BS0U7SUFDSyxhQUFhLENBQUMsWUFBNkIsRUFBRTtRQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpDLE9BQU87WUFDTCxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDdkMsSUFBSSxpQkFBaUIsS0FBZSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEYsK0JBQStCLEVBQUUsR0FBRyxDQUFDLElBQUksbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENB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LG1CQUFtQjtJQUd2QjtRQUZpQixnQkFBVyxHQUFHLElBQUksS0FBSyxFQUFlLENBQUM7UUFHdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLHVCQUFVLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtZQUN6QixJQUFJLGVBQWU7Z0JBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7Z0JBQ3BDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNuQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsdUJBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2xELENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7TUFFRTtJQUNLLEdBQUcsQ0FBQyxHQUFnQjtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUM1QjtDQUNGO0FBRUQ7O0VBRUU7QUFDRixTQUFTLEdBQUcsQ0FBSSxDQUFJLEVBQUUsRUFBa0I7SUFDdEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sT0FBTyxDQUFDLENBQUM7QUFFWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzLCBSZXNvdXJjZSwgQW5ub3RhdGlvbnMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJVnBjLCBJU3VibmV0LCBTdWJuZXRTZWxlY3Rpb24sIFNlbGVjdGVkU3VibmV0cywgRW5hYmxlVnBuR2F0ZXdheU9wdGlvbnMsIFZwbkdhdGV3YXksIFZwbkNvbm5lY3Rpb25UeXBlLCBDZm5WUENHYXRld2F5QXR0YWNobWVudCwgQ2ZuVlBOR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24sIFZwbkNvbm5lY3Rpb25PcHRpb25zLCBWcG5Db25uZWN0aW9uLCBDbGllbnRWcG5FbmRwb2ludE9wdGlvbnMsIENsaWVudFZwbkVuZHBvaW50LCBJbnRlcmZhY2VWcGNFbmRwb2ludE9wdGlvbnMsIEludGVyZmFjZVZwY0VuZHBvaW50LCBHYXRld2F5VnBjRW5kcG9pbnRPcHRpb25zLCBHYXRld2F5VnBjRW5kcG9pbnQsIEZsb3dMb2dPcHRpb25zLCBGbG93TG9nLCBGbG93TG9nUmVzb3VyY2VUeXBlLCBTdWJuZXRUeXBlLCBTdWJuZXRGaWx0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IGFsbFJvdXRlVGFibGVJZHMsIGZsYXR0ZW4sIHN1Ym5ldEdyb3VwTmFtZUZyb21Db25zdHJ1Y3RJZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBJRGVwZW5kYWJsZSwgRGVwZW5kYWJsZSwgSUNvbnN0cnVjdCwgRGVwZW5kZW5jeUdyb3VwIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LCBJbnRlcm5ldEdhdGV3YXksIE5hdENvbm5lY3Rpdml0eVR5cGUsIE5hdEdhdGV3YXksIE5hdEdhdGV3YXlPcHRpb25zLCBSb3V0ZSwgVlBDUGVlcmluZ0Nvbm5lY3Rpb24sIFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucywgVlBOR2F0ZXdheVYyIH0gZnJvbSAnLi9yb3V0ZSc7XG5pbXBvcnQgeyBJU3VibmV0VjIgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyBBY2NvdW50UHJpbmNpcGFsLCBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCwgUm9sZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgSVZQQ0NpZHJCbG9jayB9IGZyb20gJy4vdnBjLXYyJztcblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5IGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHN1Ym5ldHMgd2hlcmUgcm91dGUgdG8gRUdXIHdpbGwgYmUgYWRkZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByb3V0ZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uW107XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9uIElwdjYgYWRkcmVzcyBmb3IgRUdXIHJvdXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJzo6LzAnIGFsbCBJcHY2IHRyYWZmaWNcbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIEludGVybmV0R2F0ZXdheSBmb3IgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuZXRHYXRld2F5T3B0aW9uc3tcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gSXB2NiBhZGRyZXNzIGZvciBFR1cgcm91dGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSAnMC4wLjAuMCcgYWxsIElwdjQgdHJhZmZpY1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NERlc3RpbmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBJcHY2IGFkZHJlc3MgZm9yIEVHVyByb3V0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtICc6Oi8wJyBhbGwgSXB2NiB0cmFmZmljXG4gICAqL1xuICByZWFkb25seSBpcHY2RGVzdGluYXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgVlBOR2F0ZXdheVYyIGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUE5HYXRld2F5VjJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFZQTiBjb25uZWN0aW9uIHRoZSB2aXJ0dWFsIHByaXZhdGUgZ2F0ZXdheSBzdXBwb3J0cy5cbiAgICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBuZ2F0ZXdheS5odG1sI2Nmbi1lYzItdnBuZ2F0ZXdheS10eXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBWcG5Db25uZWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogVGhlIHByaXZhdGUgQXV0b25vbW91cyBTeXN0ZW0gTnVtYmVyIChBU04pIGZvciB0aGUgQW1hem9uIHNpZGUgb2YgYSBCR1Agc2Vzc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBBU04gc2V0IGZvciBCR1Agc2Vzc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgYW1hem9uU2lkZUFzbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIFZQTiBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlc291cmNlIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdWJuZXRzIHdoZXJlIHRoZSByb3V0ZSBwcm9wYWdhdGlvbiBzaG91bGQgYmUgYWRkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcG9nYXRpb24gZm9yIHJvdXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgdnBuUm91dGVQcm9wYWdhdGlvbj86IFN1Ym5ldFNlbGVjdGlvbltdO1xufVxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIHRvIHNlZSB3aGF0IGV4dHJhIHByb3BzIHdlIG1pZ2h0IG5lZWQsXG4gKiB3aWxsIGJlIGFkZGVkIHRvIG9yaWdpbmFsIElWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVnBjVjIgZXh0ZW5kcyBJVnBjIHtcbiAgLyoqXG4gICAqIFRoZSBzZWNvbmRhcnkgQ0lEUiBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXJlc2l6ZX0uXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQy5cbiAgICogTmVlZGVkIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSB2cGMgcmFuZ2Ugb2Ygc3VibmV0XG4gICAqIGN1cnJlbnQgcHJvcCB2cGNDaWRyQmxvY2sgcmVmZXJzIHRvIHRoZSB0b2tlbiB2YWx1ZVxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1jaWRyLWJsb2Nrcy5odG1sI3ZwYy1zaXppbmctaXB2NH0uXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRvIG92ZXJyaWRlIGluZmVycmVkIHJlZ2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgc3RhY2sncyBlbnZpcm9ubWVudCByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRoYXQgb3ducyB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGFjY291bnQgaWQgb2YgdGhlIHBhcmVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSVB2NCBDSURSIHByb3Zpc2lvbmVkIHVuZGVyIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNIHBvb2xcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gRWdyZXNzIG9ubHkgSW50ZXJuZXQgR2F0ZXdheSB0byBjdXJyZW50IFZQQy5cbiAgICogQ2FuIG9ubHkgYmUgdXNlZCBmb3IgaXB2NiBlbmFibGVkIFZQQ3MuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvZWdyZXNzLW9ubHktaW50ZXJuZXQtZ2F0ZXdheS1iYXNpY3MuaHRtbH0uXG4gICAqL1xuICBhZGRFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gSW50ZXJuZXQgR2F0ZXdheSB0byBjdXJyZW50IFZQQy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtaWd3LWludGVybmV0LWFjY2Vzcy5odG1sfS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZpbmVzIHJvdXRlIGZvciBhbGwgaXB2NCgnMC4wLjAuMCcpIGFuZCBpcHY2IGFkZHJlc3NlcygnOjovMCcpXG4gICAqL1xuICBhZGRJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEludGVybmV0R2F0ZXdheU9wdGlvbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGRzIFZQTiBHYXRld2F5IHRvIFZQQyBhbmQgc2V0IHJvdXRlIHByb3BvZ2F0aW9uLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG5nYXRld2F5Lmh0bWx9LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJvdXRlIHByb3BvZ2F0aW9uXG4gICAqL1xuICBlbmFibGVWcG5HYXRld2F5VjIob3B0aW9uczogVlBOR2F0ZXdheVYyT3B0aW9ucyk6IFZQTkdhdGV3YXlWMjtcblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBOQVQgR2F0ZXdheSB0byBWUENcbiAgICogQSBOQVQgZ2F0ZXdheSBpcyBhIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiAoTkFUKSBzZXJ2aWNlLiBOQVQgR2F0ZXdheSBDb25uZWN0aXZpdHkgY2FuIGJlIG9mIHR5cGUgYFB1YmxpY2Agb3IgYFByaXZhdGVgLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sfS5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29ubmVjdGl2aXR5VHlwZS5QdWJsaWNcbiAgICovXG4gIGFkZE5hdEdhdGV3YXkob3B0aW9uczogTmF0R2F0ZXdheU9wdGlvbnMpOiBOYXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IHJvbGUgdG8gYWNjZXB0b3IgVlBDIGFjY291bnRcbiAgICogQSBjcm9zcyBhY2NvdW50IHJvbGUgaXMgcmVxdWlyZWQgZm9yIHRoZSBWUEMgdG8gcGVlciB3aXRoIGFub3RoZXIgYWNjb3VudC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3BlZXItd2l0aC12cGMtaW4tYW5vdGhlci1hY2NvdW50Lmh0bWx9LlxuICAgKi9cbiAgY3JlYXRlQWNjZXB0b3JWcGNSb2xlKHJlcXVlc3RvckFjY291bnRJZDogc3RyaW5nKTogUm9sZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICogQSBwZWVyaW5nIGNvbm5lY3Rpb24gaXMgYSBwcml2YXRlIHZpcnR1YWwgbmV0d29yayBlc3RhYmxpc2hlZCBiZXR3ZWVuIHR3byBWUENzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvcGVlcmluZy93aGF0LWlzLXZwYy1wZWVyaW5nLmh0bWx9LlxuICAgKi9cbiAgY3JlYXRlUGVlcmluZ0Nvbm5lY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zKTogVlBDUGVlcmluZ0Nvbm5lY3Rpb247XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgYSBWUEMgKFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCkgaW4gQVdTLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi9kb2NzL2F3cy1jZGstbGliLmF3c19lYzIuVnBjLmh0bWx8QVdTIENESyBEb2N1bWVudGF0aW9uIG9uIFZQQ3N9LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVnBjVjJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVnBjVjIge1xuXG4gIC8qKlxuICAqIElkZW50aWZpZXIgZm9yIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAqIEFybiBvZiB0aGlzIFZQQ1xuICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdnBjQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICogQ0lEUiByYW5nZSBmb3IgdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0NpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAqIExpc3Qgb2YgcHVibGljIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY1N1Ym5ldHM6IElTdWJuZXRbXSA9IFtdO1xuXG4gIC8qKlxuICAqIExpc3Qgb2YgcHJpdmF0ZSBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyByZWFkb25seSBwcml2YXRlU3VibmV0czogSVN1Ym5ldFtdID0gW107XG5cbiAgLyoqXG4gICogTGlzdCBvZiBpc29sYXRlZCBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IElTdWJuZXRbXTtcblxuICAvKipcbiAgKiBBWnMgZm9yIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgKiBEZXBlbmRhYmxlIHRoYXQgY2FuIGJlIGRlcGVuZGVkIHVwb24gdG8gZm9yY2UgaW50ZXJuZXQgY29ubmVjdGl2aXR5IGVzdGFibGlzaGVkIG9uIHRoZSBWUENcbiAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRhYmxlIHRoYXQgY2FuIGJlIGRlcGVuZGVkIHVwb24gdG8gZm9yY2UgaW50ZXJuZXQgY29ubmVjdGl2aXR5IGVzdGFibGlzaGVkIG9uIHRoZSBWUENcbiAgICogQWRkIGlndyB0byB0aGlzIGlmIGl0cyBhIHB1YmxpYyBzdWJuZXRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBJUHMgZm9yIHRoZSBWUEMsIGNhbiBiZSBtdWx0aXBsZSBJcHY0IG9yIElwdjZcbiAgICogSXB2NCBzaG91bGQgYmUgd2l0aGluIFJGQyMxOTE4IHJhbmdlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc2Vjb25kYXJ5Q2lkckJsb2NrPzogSVZQQ0NpZHJCbG9ja1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBJUHY0IENJRFIgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqIE5lZWRlZCBpbiBvcmRlciB0byB2YWxpZGF0ZSB0aGUgdnBjIHJhbmdlIG9mIHN1Ym5ldFxuICAgKiBjdXJyZW50IHByb3AgdnBjQ2lkckJsb2NrIHJlZmVycyB0byB0aGUgdG9rZW4gdmFsdWVcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtY2lkci1ibG9ja3MuaHRtbCN2cGMtc2l6aW5nLWlwdjR9LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgKiBSZWdpb24gZm9yIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgKiBJZGVudGlmaWVyIG9mIHRoZSBvd25lciBmb3IgdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG93bmVyQWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBwcm92aXNpb25lZCB1bmRlciBwb29sXG4gICAqIFJlcXVpcmVkIHRvIGNoZWNrIGZvciBvdmVybGFwcGluZyBDSURScyBhZnRlciBwcm92aXNpb25pbmdcbiAgICogaXMgY29tcGxldGUgdW5kZXIgSVBBTSBwb29sXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgZG9uJ3QgZXJyb3Igb3V0IG9uIHRyeWluZyB0byBzZWxlY3Qgc3VibmV0c1xuICAqL1xuICBwcm90ZWN0ZWQgaW5jb21wbGV0ZVN1Ym5ldERlZmluaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTXV0YWJsZSBwcml2YXRlIGZpZWxkIGZvciB0aGUgdnBuR2F0ZXdheUlkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIF92cG5HYXRld2F5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE11dGFibGUgcHJpdmF0ZSBmaWVsZCBmb3IgdGhlIGludGVybmV0R2F0ZXdheUlkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIF9pbnRlcm5ldEdhdGV3YXlJZCA9ICcnO1xuXG4gIC8qKlxuICAqIFJldHVybiBpbmZvcm1hdGlvbiBvbiB0aGUgc3VibmV0cyBhcHByb3ByaWF0ZSBmb3IgdGhlIGdpdmVuIHNlbGVjdGlvbiBzdHJhdGVneVxuICAqXG4gICogUmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgc3VibmV0IGlzIG1hdGNoZWQsIHRocm93cyBhIGRlc2NyaXB0aXZlXG4gICogZXJyb3IgbWVzc2FnZSBvdGhlcndpc2UuXG4gICovXG4gIHB1YmxpYyBzZWxlY3RTdWJuZXRzKHNlbGVjdGlvbjogU3VibmV0U2VsZWN0aW9uID0ge30pOiBTZWxlY3RlZFN1Ym5ldHMge1xuICAgIGNvbnN0IHN1Ym5ldHMgPSB0aGlzLnNlbGVjdFN1Ym5ldE9iamVjdHMoc2VsZWN0aW9uKTtcbiAgICBjb25zdCBwdWJzID0gbmV3IFNldCh0aGlzLnB1YmxpY1N1Ym5ldHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Ym5ldElkczogc3VibmV0cy5tYXAocyA9PiBzLnN1Ym5ldElkKSxcbiAgICAgIGdldCBhdmFpbGFiaWxpdHlab25lcygpOiBzdHJpbmdbXSB7IHJldHVybiBzdWJuZXRzLm1hcChzID0+IHMuYXZhaWxhYmlsaXR5Wm9uZSk7IH0sXG4gICAgICBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiB0YXAobmV3IENvbXBvc2l0ZURlcGVuZGFibGUoKSwgZCA9PiBzdWJuZXRzLmZvckVhY2gocyA9PiBkLmFkZChzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQpKSksXG4gICAgICBzdWJuZXRzLFxuICAgICAgaGFzUHVibGljOiBzdWJuZXRzLnNvbWUocyA9PiBwdWJzLmhhcyhzKSksXG4gICAgICBpc1BlbmRpbmdMb29rdXA6IHRoaXMuaW5jb21wbGV0ZVN1Ym5ldERlZmluaXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZHMgYSBWUE4gR2F0ZXdheSB0byB0aGlzIFZQQ1xuICAqIEBkZXByZWNhdGVkIHVzZSBlbmFibGVWcG5HYXRld2F5VjIgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBWUENWMi5Sb3V0ZVxuICAqL1xuICBwdWJsaWMgZW5hYmxlVnBuR2F0ZXdheShvcHRpb25zOiBFbmFibGVWcG5HYXRld2F5T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZwbkdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgVlBOIEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZwbkdhdGV3YXkgPSBuZXcgVnBuR2F0ZXdheSh0aGlzLCAnVnBuR2F0ZXdheScsIHtcbiAgICAgIGFtYXpvblNpZGVBc246IG9wdGlvbnMuYW1hem9uU2lkZUFzbixcbiAgICAgIHR5cGU6IFZwbkNvbm5lY3Rpb25UeXBlLklQU0VDXzEsXG4gICAgfSk7XG5cbiAgICB0aGlzLl92cG5HYXRld2F5SWQgPSB2cG5HYXRld2F5LmdhdGV3YXlJZDtcblxuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBuZXcgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQodGhpcywgJ1ZQQ1ZQTkdXJywge1xuICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICB2cG5HYXRld2F5SWQ6IHRoaXMuX3ZwbkdhdGV3YXlJZCxcbiAgICB9KTtcblxuICAgIC8vIFByb3BhZ2F0ZSByb3V0ZXMgb24gcm91dGUgdGFibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmlnaHQgc3VibmV0c1xuICAgIGNvbnN0IHZwblJvdXRlUHJvcGFnYXRpb24gPSBvcHRpb25zLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW3t9XTtcbiAgICBjb25zdCByb3V0ZVRhYmxlSWRzID0gYWxsUm91dGVUYWJsZUlkcyhmbGF0dGVuKHZwblJvdXRlUHJvcGFnYXRpb24ubWFwKHMgPT4gdGhpcy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpKSk7XG5cbiAgICBpZiAocm91dGVUYWJsZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZEVycm9yKGBlbmFibGVWcG5HYXRld2F5OiBubyBzdWJuZXRzIG1hdGNoaW5nIHNlbGVjdGlvbjogJyR7SlNPTi5zdHJpbmdpZnkodnBuUm91dGVQcm9wYWdhdGlvbil9Jy4gU2VsZWN0IG90aGVyIHN1Ym5ldHMgdG8gYWRkIHJvdXRlcyB0by5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3V0ZVByb3BhZ2F0aW9uID0gbmV3IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uKHRoaXMsICdSb3V0ZVByb3BhZ2F0aW9uJywge1xuICAgICAgcm91dGVUYWJsZUlkcyxcbiAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5fdnBuR2F0ZXdheUlkLFxuICAgIH0pO1xuICAgICAgLy8gVGhlIEFXUzo6RUMyOjpWUE5HYXRld2F5Um91dGVQcm9wYWdhdGlvbiByZXNvdXJjZSBjYW5ub3QgdXNlIHRoZSBWUE4gZ2F0ZXdheVxuICAgICAgLy8gdW50aWwgaXQgaGFzIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZCB0byB0aGUgVlBDLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBuLWdhdGV3YXlyb3V0ZXByb3AuaHRtbFxuICAgIHJvdXRlUHJvcGFnYXRpb24ubm9kZS5hZGREZXBlbmRlbmN5KGF0dGFjaG1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgVlBOR0F0ZXdheVYyIHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlVnBuR2F0ZXdheVYyKG9wdGlvbnM6IFZQTkdhdGV3YXlWMk9wdGlvbnMpOiBWUE5HYXRld2F5VjIge1xuICAgIGlmICh0aGlzLnZwbkdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgVlBOIEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZwbkdhdGV3YXkgPSBuZXcgVlBOR2F0ZXdheVYyKHRoaXMsICdWcG5HYXRld2F5Jywge1xuICAgICAgdnBjOiB0aGlzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQuYWRkKHZwbkdhdGV3YXkpO1xuICAgIHRoaXMuX3ZwbkdhdGV3YXlJZCA9IHZwbkdhdGV3YXkucm91dGVyVGFyZ2V0SWQ7XG5cbiAgICByZXR1cm4gdnBuR2F0ZXdheTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZHMgYSBuZXcgVlBOIGNvbm5lY3Rpb24gdG8gdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFkZFZwbkNvbm5lY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogVnBuQ29ubmVjdGlvbk9wdGlvbnMpOiBWcG5Db25uZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFZwbkNvbm5lY3Rpb24odGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBBZGRzIGEgbmV3IGNsaWVudCBWUE4gZW5kcG9pbnQgdG8gdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFkZENsaWVudFZwbkVuZHBvaW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IENsaWVudFZwbkVuZHBvaW50T3B0aW9ucyk6IENsaWVudFZwbkVuZHBvaW50IHtcbiAgICByZXR1cm4gbmV3IENsaWVudFZwbkVuZHBvaW50KHRoaXMsIGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdnBjOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogQWRkcyBhIG5ldyBpbnRlcmZhY2UgZW5kcG9pbnQgdG8gdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFkZEludGVyZmFjZUVuZHBvaW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IEludGVyZmFjZVZwY0VuZHBvaW50T3B0aW9ucyk6IEludGVyZmFjZVZwY0VuZHBvaW50IHtcbiAgICByZXR1cm4gbmV3IEludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIGlkLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogQWRkcyBhIG5ldyBnYXRld2F5IGVuZHBvaW50IHRvIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyBhZGRHYXRld2F5RW5kcG9pbnQoaWQ6IHN0cmluZywgb3B0aW9uczogR2F0ZXdheVZwY0VuZHBvaW50T3B0aW9ucyk6IEdhdGV3YXlWcGNFbmRwb2ludCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VnBjRW5kcG9pbnQodGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBFZ3Jlc3MgT25seSBJbnRlcm5ldCBHYXRld2F5IHRvIHRoaXMgVlBDIGFuZCBkZWZpbmVzIGEgbmV3IHJvdXRlXG4gICAqIHRvIHRoZSByb3V0ZSB0YWJsZSBvZiBnaXZlbiBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluIGNhc2Ugb2Ygbm8gaW5wdXQgc3VibmV0cywgbm8gcm91dGUgaXMgY3JlYXRlZFxuICAgKi9cbiAgcHVibGljIGFkZEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgZWd3ID0gbmV3IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkodGhpcywgJ0VncmVzc09ubHlHVycsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICB9KTtcblxuICAgIGxldCB1c2VJcHY2O1xuICAgIGlmICh0aGlzLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgICAgdXNlSXB2NiA9ICh0aGlzLnNlY29uZGFyeUNpZHJCbG9jay5zb21lKChzZWNvbmRhcnlBZGRyZXNzKSA9PiBzZWNvbmRhcnlBZGRyZXNzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA9PT0gdHJ1ZSB8fFxuICAgIHNlY29uZGFyeUFkZHJlc3MuaXB2NklwYW1Qb29sSWQgIT0gdW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgaWYgKCF1c2VJcHY2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VncmVzcyBvbmx5IElHVyBjYW4gb25seSBiZSBhZGRlZCB0byBJcHY2IGVuYWJsZWQgVlBDJyk7XG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zPy5zdWJuZXRzKSB7XG4gICAgICBjb25zdCBzdWJuZXRzID0gZmxhdHRlbihvcHRpb25zLnN1Ym5ldHMubWFwKHMgPT4gdGhpcy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpKTtcbiAgICAgIHN1Ym5ldHMuZm9yRWFjaCgoc3VibmV0KSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlRWdyZXNzUm91dGUoc3VibmV0LCBlZ3csIG9wdGlvbnMuZGVzdGluYXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByb3V0ZSBmb3IgRUdXIHdpdGggZGVzdGluYXRpb24gc2V0IHRvIG91dGJvdW5kIElQdjYoJzo6LzAnKSBvciBjdXN0b20gaXB2NiBhZGRyZXNzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRWdyZXNzUm91dGUoc3VibmV0OiBJU3VibmV0VjIsIGVndzogRWdyZXNzT25seUludGVybmV0R2F0ZXdheSwgZGVzdGluYXRpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbklwdjYgPSBkZXN0aW5hdGlvbiA/PyAnOjovMCc7XG4gICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1FZ3Jlc3NSb3V0ZWAsIHtcbiAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uSXB2NiwgLy8gSVB2NiBkZWZhdWx0IHJvdXRlXG4gICAgICB0YXJnZXQ6IHsgZ2F0ZXdheTogZWd3IH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBJbnRlcm5ldCBHYXRld2F5IHRvIHRoaXMgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3JlYXRlcyBhIG5ldyByb3V0ZSBmb3IgcHVibGljIHN1Ym5ldHMod2l0aCBhbGwgb3V0Ym91bmQgYWNjZXNzKSB0byB0aGUgSW50ZXJuZXQgR2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyBhZGRJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEludGVybmV0R2F0ZXdheU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW50ZXJuZXRHYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEludGVybmV0IEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGlndyA9IG5ldyBJbnRlcm5ldEdhdGV3YXkodGhpcywgJ0ludGVybmV0R2F0ZXdheScsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICB9KTtcblxuICAgIHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQuYWRkKGlndyk7XG4gICAgdGhpcy5faW50ZXJuZXRHYXRld2F5SWQgPSBpZ3cucm91dGVyVGFyZ2V0SWQ7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gcHVibGljIHN1Ym5ldHMgZGVmaW5lZCwgbm8gZGVmYXVsdCByb3V0ZSB3aWxsIGJlIGFkZGVkXG4gICAgaWYgKHRoaXMucHVibGljU3VibmV0cykge1xuICAgICAgdGhpcy5wdWJsaWNTdWJuZXRzLmZvckVhY2goIChzKSA9PiB0aGlzLmFkZERlZmF1bHRJbnRlcm5ldFJvdXRlKHMsIGlndywgb3B0aW9ucykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGRlZmF1bHQgcm91dGUgZm9yIHRoZSBpbnRlcm5ldCBnYXRld2F5XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhZGREZWZhdWx0SW50ZXJuZXRSb3V0ZShzdWJuZXQ6IElTdWJuZXRWMiwgaWd3OiBJbnRlcm5ldEdhdGV3YXksIG9wdGlvbnM/OiBJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogdm9pZCB7XG5cbiAgICBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgIT09IFN1Ym5ldFR5cGUuUFVCTElDKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHB1YmxpYyBzdWJuZXRzIGRlZmluZWQgdG8gYWRkIHJvdXRlIGZvciBpbnRlcm5ldCBnYXRld2F5Jyk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGRlZmF1bHQgcm91dGUgdG8gSUdXIGZvciBJUHY2XG4gICAgaWYgKHN1Ym5ldC5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICBuZXcgUm91dGUodGhpcywgYCR7c3VibmV0Lm5vZGUuaWR9LURlZmF1bHRJUHY2Um91dGVgLCB7XG4gICAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgICBkZXN0aW5hdGlvbjogb3B0aW9ucz8uaXB2NkRlc3RpbmF0aW9uID8/ICc6Oi8wJyxcbiAgICAgICAgdGFyZ2V0OiB7IGdhdGV3YXk6IGlndyB9LFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vQWRkIGRlZmF1bHQgcm91dGUgdG8gSUdXIGZvciBJUHY0XG4gICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1EZWZhdWx0Um91dGVgLCB7XG4gICAgICByb3V0ZVRhYmxlOiBzdWJuZXQucm91dGVUYWJsZSxcbiAgICAgIGRlc3RpbmF0aW9uOiBvcHRpb25zPy5pcHY0RGVzdGluYXRpb24gPz8gJzAuMC4wLjAvMCcsXG4gICAgICB0YXJnZXQ6IHsgZ2F0ZXdheTogaWd3IH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBOQVQgR2F0ZXdheSB0byB0aGUgZ2l2ZW4gc3VibmV0IG9mIHRoaXMgVlBDXG4gICAqIG9mIGdpdmVuIHN1Ym5ldHMuXG4gICAqL1xuICBwdWJsaWMgYWRkTmF0R2F0ZXdheShvcHRpb25zOiBOYXRHYXRld2F5T3B0aW9ucyk6IE5hdEdhdGV3YXkge1xuICAgIGlmIChvcHRpb25zLmNvbm5lY3Rpdml0eVR5cGUgPT09IE5hdENvbm5lY3Rpdml0eVR5cGUuUFVCTElDICYmICF0aGlzLl9pbnRlcm5ldEdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYWRkIGEgUHVibGljIE5BVCBHYXRld2F5IHdpdGhvdXQgYW4gSW50ZXJuZXQgR2F0ZXdheSBlbmFibGVkIG9uIFZQQycpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE5hdEdhdGV3YXkodGhpcywgJ05BVEdhdGV3YXknLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogQWRkcyBhIG5ldyBmbG93IGxvZyB0byB0aGlzIFZQQ1xuICAqL1xuICBwdWJsaWMgYWRkRmxvd0xvZyhpZDogc3RyaW5nLCBvcHRpb25zPzogRmxvd0xvZ09wdGlvbnMpOiBGbG93TG9nIHtcbiAgICByZXR1cm4gbmV3IEZsb3dMb2codGhpcywgaWQsIHtcbiAgICAgIHJlc291cmNlVHlwZTogRmxvd0xvZ1Jlc291cmNlVHlwZS5mcm9tVnBjKHRoaXMpLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIENyZWF0ZXMgcGVlcmluZyBjb25uZWN0aW9uIHJvbGUgZm9yIGFjY2VwdG9yIFZQQ1xuICAqL1xuICBwdWJsaWMgY3JlYXRlQWNjZXB0b3JWcGNSb2xlKHJlcXVlc3RvckFjY291bnRJZDogc3RyaW5nKTogUm9sZSB7XG4gICAgY29uc3QgcGVlcmluZ1JvbGUgPSBuZXcgUm9sZSh0aGlzLCAnVnBjUGVlcmluZ1JvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBBY2NvdW50UHJpbmNpcGFsKHJlcXVlc3RvckFjY291bnRJZCksXG4gICAgICByb2xlTmFtZTogJ1ZwY1BlZXJpbmdSb2xlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVzdHJpY3RpdmUgcm9sZSBmb3IgVlBDIHBlZXJpbmcnLFxuICAgIH0pO1xuXG4gICAgcGVlcmluZ1JvbGUuYWRkVG9Qb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFsnZWMyOkFjY2VwdFZwY1BlZXJpbmdDb25uZWN0aW9uJ10sXG4gICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06ZWMyOiR7dGhpcy5yZWdpb259OiR7dGhpcy5vd25lckFjY291bnRJZH06dnBjLyR7dGhpcy52cGNJZH1gXSxcbiAgICB9KSk7XG5cbiAgICBwZWVyaW5nUm9sZS5hZGRUb1BvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsnZWMyOkFjY2VwdFZwY1BlZXJpbmdDb25uZWN0aW9uJ10sXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTplYzI6JHt0aGlzLnJlZ2lvbn06JHt0aGlzLm93bmVyQWNjb3VudElkfTp2cGMtcGVlcmluZy1jb25uZWN0aW9uLypgXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgJ2VjMjpBY2NlcHRlclZwYyc6IGBhcm46JHtBd3MuUEFSVElUSU9OfTplYzI6JHt0aGlzLnJlZ2lvbn06JHt0aGlzLm93bmVyQWNjb3VudElkfTp2cGMvJHt0aGlzLnZwY0lkfWAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIHJldHVybiBwZWVyaW5nUm9sZTtcbiAgfVxuXG4gIC8qKlxuICAqIENyZWF0ZXMgYSBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgKi9cbiAgcHVibGljIGNyZWF0ZVBlZXJpbmdDb25uZWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM6IFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyk6IFZQQ1BlZXJpbmdDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFZQQ1BlZXJpbmdDb25uZWN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICByZXF1ZXN0b3JWcGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogUmV0dXJucyB0aGUgaWQgb2YgdGhlIFZQTiBHYXRld2F5IChpZiBlbmFibGVkKVxuICAqL1xuICBwdWJsaWMgZ2V0IHZwbkdhdGV3YXlJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92cG5HYXRld2F5SWQ7XG4gIH1cblxuICAvKipcbiAgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgSW50ZXJuZXQgR2F0ZXdheSAoaWYgZW5hYmxlZClcbiAgKi9cbiAgcHVibGljIGdldCBpbnRlcm5ldEdhdGV3YXlJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcm5ldEdhdGV3YXlJZDtcbiAgfVxuXG4gIC8qKlxuICAqIFJldHVybiB0aGUgc3VibmV0cyBhcHByb3ByaWF0ZSBmb3IgdGhlIHBsYWNlbWVudCBzdHJhdGVneVxuICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0U3VibmV0T2JqZWN0cyhzZWxlY3Rpb246IFN1Ym5ldFNlbGVjdGlvbiA9IHt9KTogSVN1Ym5ldFtdIHtcbiAgICBzZWxlY3Rpb24gPSB0aGlzLnJlaWZ5U2VsZWN0aW9uRGVmYXVsdHMoc2VsZWN0aW9uKTtcblxuICAgIGlmIChzZWxlY3Rpb24uc3VibmV0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uLnN1Ym5ldHM7XG4gICAgfVxuXG4gICAgbGV0IHN1Ym5ldHM7XG5cbiAgICBpZiAoc2VsZWN0aW9uLnN1Ym5ldEdyb3VwTmFtZSAhPT0gdW5kZWZpbmVkKSB7IC8vIFNlbGVjdCBieSBuYW1lXG4gICAgICBzdWJuZXRzID0gdGhpcy5zZWxlY3RTdWJuZXRPYmplY3RzQnlOYW1lKHNlbGVjdGlvbi5zdWJuZXRHcm91cE5hbWUpO1xuXG4gICAgfSBlbHNlIHsgLy8gT3Igc3BlY2lmeSBieSB0eXBlXG4gICAgICBjb25zdCB0eXBlID0gc2VsZWN0aW9uLnN1Ym5ldFR5cGUgfHwgU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTO1xuICAgICAgc3VibmV0cyA9IHRoaXMuc2VsZWN0U3VibmV0T2JqZWN0c0J5VHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBhbGwgdGhlIGZpbHRlcnNcbiAgICBzdWJuZXRzID0gdGhpcy5hcHBseVN1Ym5ldEZpbHRlcnMoc3VibmV0cywgc2VsZWN0aW9uLnN1Ym5ldEZpbHRlcnMgPz8gW10pO1xuXG4gICAgcmV0dXJuIHN1Ym5ldHM7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3VibmV0RmlsdGVycyhzdWJuZXRzOiBJU3VibmV0W10sIGZpbHRlcnM6IFN1Ym5ldEZpbHRlcltdKTogSVN1Ym5ldFtdIHtcbiAgICBsZXQgZmlsdGVyZWQgPSBzdWJuZXRzO1xuICAgIC8vIEFwcGx5IGVhY2ggZmlsdGVyIGluIHNlcXVlbmNlXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXIuc2VsZWN0U3VibmV0cyhmaWx0ZXJlZCk7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0U3VibmV0T2JqZWN0c0J5TmFtZShncm91cE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGFsbFN1Ym5ldHMgPSBbLi4udGhpcy5wdWJsaWNTdWJuZXRzLCAuLi50aGlzLnByaXZhdGVTdWJuZXRzLCAuLi50aGlzLmlzb2xhdGVkU3VibmV0c107XG4gICAgY29uc3Qgc3VibmV0cyA9IGFsbFN1Ym5ldHMuZmlsdGVyKHMgPT4gc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkKHMpID09PSBncm91cE5hbWUpO1xuXG4gICAgaWYgKHN1Ym5ldHMubGVuZ3RoID09PSAwICYmICF0aGlzLmluY29tcGxldGVTdWJuZXREZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IEFycmF5LmZyb20obmV3IFNldChhbGxTdWJuZXRzLm1hcChzdWJuZXRHcm91cE5hbWVGcm9tQ29uc3RydWN0SWQpKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGFyZSBubyBzdWJuZXQgZ3JvdXBzIHdpdGggbmFtZSAnJHtncm91cE5hbWV9JyBpbiB0aGlzIFZQQy4gQXZhaWxhYmxlIG5hbWVzOiAke25hbWVzfWApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJuZXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RTdWJuZXRPYmplY3RzQnlUeXBlKHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUpIHtcbiAgICBjb25zdCBhbGxTdWJuZXRzID0ge1xuICAgICAgW1N1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRF06IHRoaXMuaXNvbGF0ZWRTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuSVNPTEFURURdOiB0aGlzLmlzb2xhdGVkU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9OQVRdOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU106IHRoaXMucHJpdmF0ZVN1Ym5ldHMsXG4gICAgICBbU3VibmV0VHlwZS5QUklWQVRFXTogdGhpcy5wcml2YXRlU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBVQkxJQ106IHRoaXMucHVibGljU3VibmV0cyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VibmV0cyA9IGFsbFN1Ym5ldHNbc3VibmV0VHlwZV07XG5cbiAgICAvLyBGb3JjZSBtZXJnZSBjb25mbGljdCBoZXJlIHdpdGggaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvNDA4OVxuICAgIC8vIHNlZSBJbXBvcnRlZFZwY1xuXG4gICAgaWYgKHN1Ym5ldHMubGVuZ3RoID09PSAwICYmICF0aGlzLmluY29tcGxldGVTdWJuZXREZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVUeXBlcyA9IE9iamVjdC5lbnRyaWVzKGFsbFN1Ym5ldHMpLmZpbHRlcigoW18sIHN1YnNdKSA9PiBzdWJzLmxlbmd0aCA+IDApLm1hcCgoW3R5cGVOYW1lLCBfXSkgPT4gdHlwZU5hbWUpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBhcmUgbm8gJyR7c3VibmV0VHlwZX0nIHN1Ym5ldCBncm91cHMgaW4gdGhpcyBWUEMuIEF2YWlsYWJsZSB0eXBlczogJHthdmFpbGFibGVUeXBlc31gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VibmV0cztcbiAgfVxuXG4gIC8qKlxuICAqIFZhbGlkYXRlIHRoZSBmaWVsZHMgaW4gYSBTdWJuZXRTZWxlY3Rpb24gb2JqZWN0LCBhbmQgcmVpZnkgZGVmYXVsdHMgaWYgbmVjZXNzYXJ5XG4gICpcbiAgKiBJbiBjYXNlIG9mIGRlZmF1bHQgc2VsZWN0aW9uLCBzZWxlY3QgdGhlIGZpcnN0IHR5cGUgb2YgUFJJVkFURSwgSVNPTEFURUQsXG4gICogUFVCTElDIChpbiB0aGF0IG9yZGVyKSB0aGF0IGhhcyBhbnkgc3VibmV0cy5cbiAgKi9cbiAgcHJpdmF0ZSByZWlmeVNlbGVjdGlvbkRlZmF1bHRzKHBsYWNlbWVudDogU3VibmV0U2VsZWN0aW9uKTogU3VibmV0U2VsZWN0aW9uIHtcblxuICAgIC8vIFRPRE86IHRocm93IGVycm9yIGFzIG5ldyBWcGNWMiBjYW5ub3Qgc3VwcG9ydCBzdWJuZXROYW1lIG9yIHN1Ym5ldEdyb3VwTmFtZSBhbnltb3JlXG4gICAgaWYgKHBsYWNlbWVudC5zdWJuZXROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChwbGFjZW1lbnQuc3VibmV0R3JvdXBOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgdXNlIG9ubHkgXFwnc3VibmV0R3JvdXBOYW1lXFwnIChcXCdzdWJuZXROYW1lXFwnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyB0aGUgc2FtZSBiZWhhdmlvciknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMignQGF3cy1jZGsvYXdzLWVjMjpzdWJuZXROYW1lRGVwcmVjYXRlZCcsICdVc2FnZSBvZiBcXCdzdWJuZXROYW1lXFwnIGluIFN1Ym5ldFNlbGVjdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgXFwnc3VibmV0R3JvdXBOYW1lXFwnIGluc3RlYWQnKTtcbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudCA9IHsgLi4ucGxhY2VtZW50LCBzdWJuZXRHcm91cE5hbWU6IHBsYWNlbWVudC5zdWJuZXROYW1lIH07XG4gICAgfVxuXG4gICAgY29uc3QgZXhjbHVzaXZlU2VsZWN0aW9uczogQXJyYXk8a2V5b2YgU3VibmV0U2VsZWN0aW9uPiA9IFsnc3VibmV0cycsICdzdWJuZXRUeXBlJywgJ3N1Ym5ldEdyb3VwTmFtZSddO1xuICAgIGNvbnN0IHByb3ZpZGVkU2VsZWN0aW9ucyA9IGV4Y2x1c2l2ZVNlbGVjdGlvbnMuZmlsdGVyKGtleSA9PiBwbGFjZW1lbnRba2V5XSAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAocHJvdmlkZWRTZWxlY3Rpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSBvbmUgb2YgJyR7cHJvdmlkZWRTZWxlY3Rpb25zfScgY2FuIGJlIHN1cHBsaWVkIHRvIHN1Ym5ldCBzZWxlY3Rpb24uYCk7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudC5zdWJuZXRUeXBlID09PSB1bmRlZmluZWQgJiYgcGxhY2VtZW50LnN1Ym5ldEdyb3VwTmFtZSA9PT0gdW5kZWZpbmVkICYmIHBsYWNlbWVudC5zdWJuZXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFJldHVybiBkZWZhdWx0IHN1Ym5ldCB0eXBlIGJhc2VkIG9uIHN1Ym5ldHMgdGhhdCBhY3R1YWxseSBleGlzdFxuICAgICAgbGV0IHN1Ym5ldFR5cGUgPSB0aGlzLnByaXZhdGVTdWJuZXRzLmxlbmd0aFxuICAgICAgICA/IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyA6IHRoaXMuaXNvbGF0ZWRTdWJuZXRzLmxlbmd0aCA/IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCA6IFN1Ym5ldFR5cGUuUFVCTElDO1xuICAgICAgcGxhY2VtZW50ID0geyAuLi5wbGFjZW1lbnQsIHN1Ym5ldFR5cGU6IHN1Ym5ldFR5cGUgfTtcbiAgICB9XG5cbiAgICAvLyBFc3RhYmxpc2ggd2hpY2ggc3VibmV0IGZpbHRlcnMgYXJlIGdvaW5nIHRvIGJlIHVzZWRcbiAgICBsZXQgc3VibmV0RmlsdGVycyA9IHBsYWNlbWVudC5zdWJuZXRGaWx0ZXJzID8/IFtdO1xuXG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBgYXZhaWxhYmlsaXR5Wm9uZXNgIGFuZCBgb25lUGVyQXpgIGZ1bmN0aW9uYWxpdHlcbiAgICBpZiAocGxhY2VtZW50LmF2YWlsYWJpbGl0eVpvbmVzICE9PSB1bmRlZmluZWQpIHsgLy8gRmlsdGVyIGJ5IEFacywgaWYgc3BlY2lmaWVkXG4gICAgICBzdWJuZXRGaWx0ZXJzLnB1c2goU3VibmV0RmlsdGVyLmF2YWlsYWJpbGl0eVpvbmVzKHBsYWNlbWVudC5hdmFpbGFiaWxpdHlab25lcykpO1xuICAgIH1cbiAgICBpZiAoISFwbGFjZW1lbnQub25lUGVyQXopIHsgLy8gRW5zdXJlIG9uZSBwZXIgQVogaWYgc3BlY2lmaWVkXG4gICAgICBzdWJuZXRGaWx0ZXJzLnB1c2goU3VibmV0RmlsdGVyLm9uZVBlckF6KCkpO1xuICAgIH1cblxuICAgIC8vIE92ZXJ3cml0ZSB0aGUgcHJvdmlkZWQgcGxhY2VtZW50IGZpbHRlcnMgYW5kIHJlbW92ZSB0aGUgYXZhaWxhYmlsaXR5Wm9uZXMgYW5kIG9uZVBlckF6IHByb3BlcnRpZXNcbiAgICBwbGFjZW1lbnQgPSB7IC4uLnBsYWNlbWVudCwgc3VibmV0RmlsdGVyczogc3VibmV0RmlsdGVycywgYXZhaWxhYmlsaXR5Wm9uZXM6IHVuZGVmaW5lZCwgb25lUGVyQXo6IHVuZGVmaW5lZCB9O1xuICAgIGNvbnN0IHsgYXZhaWxhYmlsaXR5Wm9uZXMsIG9uZVBlckF6LCAuLi5yZXN0IH0gPSBwbGFjZW1lbnQ7XG5cbiAgICByZXR1cm4gcmVzdDtcbiAgfVxuXG59XG5cbmNsYXNzIENvbXBvc2l0ZURlcGVuZGFibGUgaW1wbGVtZW50cyBJRGVwZW5kYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kYWJsZXMgPSBuZXcgQXJyYXk8SURlcGVuZGFibGU+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgRGVwZW5kYWJsZS5pbXBsZW1lbnQodGhpcywge1xuICAgICAgZ2V0IGRlcGVuZGVuY3lSb290cygpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PElDb25zdHJ1Y3Q+KCk7XG4gICAgICAgIGZvciAoY29uc3QgZGVwIG9mIHNlbGYuZGVwZW5kYWJsZXMpIHtcbiAgICAgICAgICByZXQucHVzaCguLi5EZXBlbmRhYmxlLm9mKGRlcCkuZGVwZW5kZW5jeVJvb3RzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZCBhIGNvbnN0cnVjdCB0byB0aGUgZGVwZW5kZW5jeSByb290c1xuICAqL1xuICBwdWJsaWMgYWRkKGRlcDogSURlcGVuZGFibGUpIHtcbiAgICB0aGlzLmRlcGVuZGFibGVzLnB1c2goZGVwKTtcbiAgfVxufVxuXG4vKipcbiogSW52b2tlIGEgZnVuY3Rpb24gb24gYSB2YWx1ZSAoZm9yIGl0cyBzaWRlIGVmZmVjdCkgYW5kIHJldHVybiB0aGUgdmFsdWVcbiovXG5mdW5jdGlvbiB0YXA8VD4oeDogVCwgZm46ICh4OiBUKSA9PiB2b2lkKTogVCB7XG4gIGZuKHgpO1xuICByZXR1cm4geDtcblxufSJdfQ==
|
|
482
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2cGMtdjItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2Q0FBeUQ7QUFDekQsaURBQWtjO0FBQ2xjLGlDQUFtRjtBQUNuRiwyQ0FBa0Y7QUFDbEYsbUNBQWlNO0FBRWpNLGlEQUFzRjtBQWtLdEY7Ozs7R0FJRztBQUNILE1BQXNCLFNBQVUsU0FBUSxzQkFBUTtJQUFoRDs7UUFpQkU7O1VBRUU7UUFDYyxrQkFBYSxHQUFjLEVBQUUsQ0FBQztRQUU5Qzs7VUFFRTtRQUNjLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBTy9DOztVQUVFO1FBQ2Msc0JBQWlCLEdBQWEsRUFBRSxDQUFDO1FBT2pEOzs7O1dBSUc7UUFDZ0IscUNBQWdDLEdBQUcsSUFBSSw0QkFBZSxFQUFFLENBQUM7UUFpQzVFOztVQUVFO1FBQ1EsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBUXREOzs7V0FHRztRQUNPLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztLQXdabkM7SUF0WkM7Ozs7O01BS0U7SUFDSyxhQUFhLENBQUMsWUFBNkIsRUFBRTtRQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpDLE9BQU87WUFDTCxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDdkMsSUFBSSxpQkFBaUIsS0FBZSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEYsK0JBQStCLEVBQUUsR0FBRyxDQUFDLElBQUksbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENB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LG1CQUFtQjtJQUd2QjtRQUZpQixnQkFBVyxHQUFHLElBQUksS0FBSyxFQUFlLENBQUM7UUFHdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLHVCQUFVLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtZQUN6QixJQUFJLGVBQWU7Z0JBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7Z0JBQ3BDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNuQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsdUJBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2xELENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7TUFFRTtJQUNLLEdBQUcsQ0FBQyxHQUFnQjtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUM1QjtDQUNGO0FBRUQ7O0VBRUU7QUFDRixTQUFTLEdBQUcsQ0FBSSxDQUFJLEVBQUUsRUFBa0I7SUFDdEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sT0FBTyxDQUFDLENBQUM7QUFFWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzLCBSZXNvdXJjZSwgQW5ub3RhdGlvbnMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJVnBjLCBJU3VibmV0LCBTdWJuZXRTZWxlY3Rpb24sIFNlbGVjdGVkU3VibmV0cywgRW5hYmxlVnBuR2F0ZXdheU9wdGlvbnMsIFZwbkdhdGV3YXksIFZwbkNvbm5lY3Rpb25UeXBlLCBDZm5WUENHYXRld2F5QXR0YWNobWVudCwgQ2ZuVlBOR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24sIFZwbkNvbm5lY3Rpb25PcHRpb25zLCBWcG5Db25uZWN0aW9uLCBDbGllbnRWcG5FbmRwb2ludE9wdGlvbnMsIENsaWVudFZwbkVuZHBvaW50LCBJbnRlcmZhY2VWcGNFbmRwb2ludE9wdGlvbnMsIEludGVyZmFjZVZwY0VuZHBvaW50LCBHYXRld2F5VnBjRW5kcG9pbnRPcHRpb25zLCBHYXRld2F5VnBjRW5kcG9pbnQsIEZsb3dMb2dPcHRpb25zLCBGbG93TG9nLCBGbG93TG9nUmVzb3VyY2VUeXBlLCBTdWJuZXRUeXBlLCBTdWJuZXRGaWx0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IGFsbFJvdXRlVGFibGVJZHMsIGZsYXR0ZW4sIHN1Ym5ldEdyb3VwTmFtZUZyb21Db25zdHJ1Y3RJZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBJRGVwZW5kYWJsZSwgRGVwZW5kYWJsZSwgSUNvbnN0cnVjdCwgRGVwZW5kZW5jeUdyb3VwIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LCBJbnRlcm5ldEdhdGV3YXksIE5hdENvbm5lY3Rpdml0eVR5cGUsIE5hdEdhdGV3YXksIE5hdEdhdGV3YXlPcHRpb25zLCBSb3V0ZSwgVlBDUGVlcmluZ0Nvbm5lY3Rpb24sIFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucywgVlBOR2F0ZXdheVYyIH0gZnJvbSAnLi9yb3V0ZSc7XG5pbXBvcnQgeyBJU3VibmV0VjIgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyBBY2NvdW50UHJpbmNpcGFsLCBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCwgUm9sZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgSVZQQ0NpZHJCbG9jayB9IGZyb20gJy4vdnBjLXYyJztcblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5IGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHN1Ym5ldHMgd2hlcmUgcm91dGUgdG8gRUdXIHdpbGwgYmUgYWRkZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByb3V0ZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uW107XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9uIElwdjYgYWRkcmVzcyBmb3IgRUdXIHJvdXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJzo6LzAnIGFsbCBJcHY2IHRyYWZmaWNcbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIEludGVybmV0R2F0ZXdheSBmb3IgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuZXRHYXRld2F5T3B0aW9uc3tcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gSXB2NiBhZGRyZXNzIGZvciBFR1cgcm91dGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSAnMC4wLjAuMCcgYWxsIElwdjQgdHJhZmZpY1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NERlc3RpbmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBJcHY2IGFkZHJlc3MgZm9yIEVHVyByb3V0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtICc6Oi8wJyBhbGwgSXB2NiB0cmFmZmljXG4gICAqL1xuICByZWFkb25seSBpcHY2RGVzdGluYXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgVlBOR2F0ZXdheVYyIGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUE5HYXRld2F5VjJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFZQTiBjb25uZWN0aW9uIHRoZSB2aXJ0dWFsIHByaXZhdGUgZ2F0ZXdheSBzdXBwb3J0cy5cbiAgICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBuZ2F0ZXdheS5odG1sI2Nmbi1lYzItdnBuZ2F0ZXdheS10eXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBWcG5Db25uZWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogVGhlIHByaXZhdGUgQXV0b25vbW91cyBTeXN0ZW0gTnVtYmVyIChBU04pIGZvciB0aGUgQW1hem9uIHNpZGUgb2YgYSBCR1Agc2Vzc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBBU04gc2V0IGZvciBCR1Agc2Vzc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgYW1hem9uU2lkZUFzbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIFZQTiBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlc291cmNlIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdWJuZXRzIHdoZXJlIHRoZSByb3V0ZSBwcm9wYWdhdGlvbiBzaG91bGQgYmUgYWRkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcG9nYXRpb24gZm9yIHJvdXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgdnBuUm91dGVQcm9wYWdhdGlvbj86IFN1Ym5ldFNlbGVjdGlvbltdO1xufVxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIHRvIHNlZSB3aGF0IGV4dHJhIHByb3BzIHdlIG1pZ2h0IG5lZWQsXG4gKiB3aWxsIGJlIGFkZGVkIHRvIG9yaWdpbmFsIElWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVnBjVjIgZXh0ZW5kcyBJVnBjIHtcbiAgLyoqXG4gICAqIFRoZSBzZWNvbmRhcnkgQ0lEUiBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXJlc2l6ZX0uXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQy5cbiAgICogTmVlZGVkIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSB2cGMgcmFuZ2Ugb2Ygc3VibmV0XG4gICAqIGN1cnJlbnQgcHJvcCB2cGNDaWRyQmxvY2sgcmVmZXJzIHRvIHRoZSB0b2tlbiB2YWx1ZVxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1jaWRyLWJsb2Nrcy5odG1sI3ZwYy1zaXppbmctaXB2NH0uXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRvIG92ZXJyaWRlIGluZmVycmVkIHJlZ2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgc3RhY2sncyBlbnZpcm9ubWVudCByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRoYXQgb3ducyB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGFjY291bnQgaWQgb2YgdGhlIHBhcmVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSVB2NCBDSURSIHByb3Zpc2lvbmVkIHVuZGVyIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNIHBvb2xcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gRWdyZXNzIG9ubHkgSW50ZXJuZXQgR2F0ZXdheSB0byBjdXJyZW50IFZQQy5cbiAgICogQ2FuIG9ubHkgYmUgdXNlZCBmb3IgaXB2NiBlbmFibGVkIFZQQ3MuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvZWdyZXNzLW9ubHktaW50ZXJuZXQtZ2F0ZXdheS1iYXNpY3MuaHRtbH0uXG4gICAqL1xuICBhZGRFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gSW50ZXJuZXQgR2F0ZXdheSB0byBjdXJyZW50IFZQQy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtaWd3LWludGVybmV0LWFjY2Vzcy5odG1sfS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZpbmVzIHJvdXRlIGZvciBhbGwgaXB2NCgnMC4wLjAuMCcpIGFuZCBpcHY2IGFkZHJlc3NlcygnOjovMCcpXG4gICAqL1xuICBhZGRJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEludGVybmV0R2F0ZXdheU9wdGlvbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGRzIFZQTiBHYXRld2F5IHRvIFZQQyBhbmQgc2V0IHJvdXRlIHByb3BvZ2F0aW9uLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG5nYXRld2F5Lmh0bWx9LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJvdXRlIHByb3BvZ2F0aW9uXG4gICAqL1xuICBlbmFibGVWcG5HYXRld2F5VjIob3B0aW9uczogVlBOR2F0ZXdheVYyT3B0aW9ucyk6IFZQTkdhdGV3YXlWMjtcblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBOQVQgR2F0ZXdheSB0byBWUENcbiAgICogQSBOQVQgZ2F0ZXdheSBpcyBhIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiAoTkFUKSBzZXJ2aWNlLiBOQVQgR2F0ZXdheSBDb25uZWN0aXZpdHkgY2FuIGJlIG9mIHR5cGUgYFB1YmxpY2Agb3IgYFByaXZhdGVgLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sfS5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29ubmVjdGl2aXR5VHlwZS5QdWJsaWNcbiAgICovXG4gIGFkZE5hdEdhdGV3YXkob3B0aW9uczogTmF0R2F0ZXdheU9wdGlvbnMpOiBOYXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IHJvbGUgdG8gYWNjZXB0b3IgVlBDIGFjY291bnRcbiAgICogQSBjcm9zcyBhY2NvdW50IHJvbGUgaXMgcmVxdWlyZWQgZm9yIHRoZSBWUEMgdG8gcGVlciB3aXRoIGFub3RoZXIgYWNjb3VudC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3BlZXItd2l0aC12cGMtaW4tYW5vdGhlci1hY2NvdW50Lmh0bWx9LlxuICAgKi9cbiAgY3JlYXRlQWNjZXB0b3JWcGNSb2xlKHJlcXVlc3RvckFjY291bnRJZDogc3RyaW5nKTogUm9sZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICogQSBwZWVyaW5nIGNvbm5lY3Rpb24gaXMgYSBwcml2YXRlIHZpcnR1YWwgbmV0d29yayBlc3RhYmxpc2hlZCBiZXR3ZWVuIHR3byBWUENzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvcGVlcmluZy93aGF0LWlzLXZwYy1wZWVyaW5nLmh0bWx9LlxuICAgKi9cbiAgY3JlYXRlUGVlcmluZ0Nvbm5lY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zKTogVlBDUGVlcmluZ0Nvbm5lY3Rpb247XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgYSBWUEMgKFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCkgaW4gQVdTLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi9kb2NzL2F3cy1jZGstbGliLmF3c19lYzIuVnBjLmh0bWx8QVdTIENESyBEb2N1bWVudGF0aW9uIG9uIFZQQ3N9LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVnBjVjJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVnBjVjIge1xuXG4gIC8qKlxuICAqIElkZW50aWZpZXIgZm9yIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAqIEFybiBvZiB0aGlzIFZQQ1xuICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdnBjQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICogQ0lEUiByYW5nZSBmb3IgdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0NpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAqIExpc3Qgb2YgcHVibGljIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY1N1Ym5ldHM6IElTdWJuZXRbXSA9IFtdO1xuXG4gIC8qKlxuICAqIExpc3Qgb2YgcHJpdmF0ZSBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyByZWFkb25seSBwcml2YXRlU3VibmV0czogSVN1Ym5ldFtdID0gW107XG5cbiAgLyoqXG4gICogTGlzdCBvZiBpc29sYXRlZCBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IElTdWJuZXRbXTtcblxuICAvKipcbiAgKiBBWnMgZm9yIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgKiBEZXBlbmRhYmxlIHRoYXQgY2FuIGJlIGRlcGVuZGVkIHVwb24gdG8gZm9yY2UgaW50ZXJuZXQgY29ubmVjdGl2aXR5IGVzdGFibGlzaGVkIG9uIHRoZSBWUENcbiAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRhYmxlIHRoYXQgY2FuIGJlIGRlcGVuZGVkIHVwb24gdG8gZm9yY2UgaW50ZXJuZXQgY29ubmVjdGl2aXR5IGVzdGFibGlzaGVkIG9uIHRoZSBWUENcbiAgICogQWRkIGlndyB0byB0aGlzIGlmIGl0cyBhIHB1YmxpYyBzdWJuZXRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBJUHMgZm9yIHRoZSBWUEMsIGNhbiBiZSBtdWx0aXBsZSBJcHY0IG9yIElwdjZcbiAgICogSXB2NCBzaG91bGQgYmUgd2l0aGluIFJGQyMxOTE4IHJhbmdlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc2Vjb25kYXJ5Q2lkckJsb2NrPzogSVZQQ0NpZHJCbG9ja1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBJUHY0IENJRFIgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqIE5lZWRlZCBpbiBvcmRlciB0byB2YWxpZGF0ZSB0aGUgdnBjIHJhbmdlIG9mIHN1Ym5ldFxuICAgKiBjdXJyZW50IHByb3AgdnBjQ2lkckJsb2NrIHJlZmVycyB0byB0aGUgdG9rZW4gdmFsdWVcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtY2lkci1ibG9ja3MuaHRtbCN2cGMtc2l6aW5nLWlwdjR9LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgKiBSZWdpb24gZm9yIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgKiBJZGVudGlmaWVyIG9mIHRoZSBvd25lciBmb3IgdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG93bmVyQWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBwcm92aXNpb25lZCB1bmRlciBwb29sXG4gICAqIFJlcXVpcmVkIHRvIGNoZWNrIGZvciBvdmVybGFwcGluZyBDSURScyBhZnRlciBwcm92aXNpb25pbmdcbiAgICogaXMgY29tcGxldGUgdW5kZXIgSVBBTSBwb29sXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgZG9uJ3QgZXJyb3Igb3V0IG9uIHRyeWluZyB0byBzZWxlY3Qgc3VibmV0c1xuICAqL1xuICBwcm90ZWN0ZWQgaW5jb21wbGV0ZVN1Ym5ldERlZmluaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTXV0YWJsZSBwcml2YXRlIGZpZWxkIGZvciB0aGUgdnBuR2F0ZXdheUlkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIF92cG5HYXRld2F5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE11dGFibGUgcHJpdmF0ZSBmaWVsZCBmb3IgdGhlIGludGVybmV0R2F0ZXdheUlkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIF9pbnRlcm5ldEdhdGV3YXlJZCA9ICcnO1xuXG4gIC8qKlxuICAqIFJldHVybiBpbmZvcm1hdGlvbiBvbiB0aGUgc3VibmV0cyBhcHByb3ByaWF0ZSBmb3IgdGhlIGdpdmVuIHNlbGVjdGlvbiBzdHJhdGVneVxuICAqXG4gICogUmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgc3VibmV0IGlzIG1hdGNoZWQsIHRocm93cyBhIGRlc2NyaXB0aXZlXG4gICogZXJyb3IgbWVzc2FnZSBvdGhlcndpc2UuXG4gICovXG4gIHB1YmxpYyBzZWxlY3RTdWJuZXRzKHNlbGVjdGlvbjogU3VibmV0U2VsZWN0aW9uID0ge30pOiBTZWxlY3RlZFN1Ym5ldHMge1xuICAgIGNvbnN0IHN1Ym5ldHMgPSB0aGlzLnNlbGVjdFN1Ym5ldE9iamVjdHMoc2VsZWN0aW9uKTtcbiAgICBjb25zdCBwdWJzID0gbmV3IFNldCh0aGlzLnB1YmxpY1N1Ym5ldHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Ym5ldElkczogc3VibmV0cy5tYXAocyA9PiBzLnN1Ym5ldElkKSxcbiAgICAgIGdldCBhdmFpbGFiaWxpdHlab25lcygpOiBzdHJpbmdbXSB7IHJldHVybiBzdWJuZXRzLm1hcChzID0+IHMuYXZhaWxhYmlsaXR5Wm9uZSk7IH0sXG4gICAgICBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiB0YXAobmV3IENvbXBvc2l0ZURlcGVuZGFibGUoKSwgZCA9PiBzdWJuZXRzLmZvckVhY2gocyA9PiBkLmFkZChzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQpKSksXG4gICAgICBzdWJuZXRzLFxuICAgICAgaGFzUHVibGljOiBzdWJuZXRzLnNvbWUocyA9PiBwdWJzLmhhcyhzKSksXG4gICAgICBpc1BlbmRpbmdMb29rdXA6IHRoaXMuaW5jb21wbGV0ZVN1Ym5ldERlZmluaXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZHMgYSBWUE4gR2F0ZXdheSB0byB0aGlzIFZQQ1xuICAqIEBkZXByZWNhdGVkIHVzZSBlbmFibGVWcG5HYXRld2F5VjIgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBWUENWMi5Sb3V0ZVxuICAqL1xuICBwdWJsaWMgZW5hYmxlVnBuR2F0ZXdheShvcHRpb25zOiBFbmFibGVWcG5HYXRld2F5T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZwbkdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgVlBOIEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZwbkdhdGV3YXkgPSBuZXcgVnBuR2F0ZXdheSh0aGlzLCAnVnBuR2F0ZXdheScsIHtcbiAgICAgIGFtYXpvblNpZGVBc246IG9wdGlvbnMuYW1hem9uU2lkZUFzbixcbiAgICAgIHR5cGU6IFZwbkNvbm5lY3Rpb25UeXBlLklQU0VDXzEsXG4gICAgfSk7XG5cbiAgICB0aGlzLl92cG5HYXRld2F5SWQgPSB2cG5HYXRld2F5LmdhdGV3YXlJZDtcblxuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBuZXcgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQodGhpcywgJ1ZQQ1ZQTkdXJywge1xuICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICB2cG5HYXRld2F5SWQ6IHRoaXMuX3ZwbkdhdGV3YXlJZCxcbiAgICB9KTtcblxuICAgIC8vIFByb3BhZ2F0ZSByb3V0ZXMgb24gcm91dGUgdGFibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmlnaHQgc3VibmV0c1xuICAgIGNvbnN0IHZwblJvdXRlUHJvcGFnYXRpb24gPSBvcHRpb25zLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW3t9XTtcbiAgICBjb25zdCByb3V0ZVRhYmxlSWRzID0gYWxsUm91dGVUYWJsZUlkcyhmbGF0dGVuKHZwblJvdXRlUHJvcGFnYXRpb24ubWFwKHMgPT4gdGhpcy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpKSk7XG5cbiAgICBpZiAocm91dGVUYWJsZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZEVycm9yKGBlbmFibGVWcG5HYXRld2F5OiBubyBzdWJuZXRzIG1hdGNoaW5nIHNlbGVjdGlvbjogJyR7SlNPTi5zdHJpbmdpZnkodnBuUm91dGVQcm9wYWdhdGlvbil9Jy4gU2VsZWN0IG90aGVyIHN1Ym5ldHMgdG8gYWRkIHJvdXRlcyB0by5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3V0ZVByb3BhZ2F0aW9uID0gbmV3IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uKHRoaXMsICdSb3V0ZVByb3BhZ2F0aW9uJywge1xuICAgICAgcm91dGVUYWJsZUlkcyxcbiAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5fdnBuR2F0ZXdheUlkLFxuICAgIH0pO1xuICAgICAgLy8gVGhlIEFXUzo6RUMyOjpWUE5HYXRld2F5Um91dGVQcm9wYWdhdGlvbiByZXNvdXJjZSBjYW5ub3QgdXNlIHRoZSBWUE4gZ2F0ZXdheVxuICAgICAgLy8gdW50aWwgaXQgaGFzIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZCB0byB0aGUgVlBDLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBuLWdhdGV3YXlyb3V0ZXByb3AuaHRtbFxuICAgIHJvdXRlUHJvcGFnYXRpb24ubm9kZS5hZGREZXBlbmRlbmN5KGF0dGFjaG1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgVlBOR0F0ZXdheVYyIHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlVnBuR2F0ZXdheVYyKG9wdGlvbnM6IFZQTkdhdGV3YXlWMk9wdGlvbnMpOiBWUE5HYXRld2F5VjIge1xuICAgIGlmICh0aGlzLnZwbkdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgVlBOIEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZwbkdhdGV3YXkgPSBuZXcgVlBOR2F0ZXdheVYyKHRoaXMsICdWcG5HYXRld2F5Jywge1xuICAgICAgdnBjOiB0aGlzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQuYWRkKHZwbkdhdGV3YXkpO1xuICAgIHRoaXMuX3ZwbkdhdGV3YXlJZCA9IHZwbkdhdGV3YXkucm91dGVyVGFyZ2V0SWQ7XG5cbiAgICByZXR1cm4gdnBuR2F0ZXdheTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZHMgYSBuZXcgVlBOIGNvbm5lY3Rpb24gdG8gdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFkZFZwbkNvbm5lY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogVnBuQ29ubmVjdGlvbk9wdGlvbnMpOiBWcG5Db25uZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFZwbkNvbm5lY3Rpb24odGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgKiBBZGRzIGEgbmV3IGNsaWVudCBWUE4gZW5kcG9pbnQgdG8gdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFkZENsaWVudFZwbkVuZHBvaW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IENsaWVudFZwbkVuZHBvaW50T3B0aW9ucyk6IENsaWVudFZwbkVuZHBvaW50IHtcbiAgICByZXR1cm4gbmV3IENsaWVudFZwbkVuZHBvaW50KHRoaXMsIGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdnBjOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogQWRkcyBhIG5ldyBpbnRlcmZhY2UgZW5kcG9pbnQgdG8gdGhpcyBWUENcbiAgKi9cbiAgcHVibGljIGFkZEludGVyZmFjZUVuZHBvaW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IEludGVyZmFjZVZwY0VuZHBvaW50T3B0aW9ucyk6IEludGVyZmFjZVZwY0VuZHBvaW50IHtcbiAgICByZXR1cm4gbmV3IEludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIGlkLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogQWRkcyBhIG5ldyBnYXRld2F5IGVuZHBvaW50IHRvIHRoaXMgVlBDXG4gICovXG4gIHB1YmxpYyBhZGRHYXRld2F5RW5kcG9pbnQoaWQ6IHN0cmluZywgb3B0aW9uczogR2F0ZXdheVZwY0VuZHBvaW50T3B0aW9ucyk6IEdhdGV3YXlWcGNFbmRwb2ludCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VnBjRW5kcG9pbnQodGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBFZ3Jlc3MgT25seSBJbnRlcm5ldCBHYXRld2F5IHRvIHRoaXMgVlBDIGFuZCBkZWZpbmVzIGEgbmV3IHJvdXRlXG4gICAqIHRvIHRoZSByb3V0ZSB0YWJsZSBvZiBnaXZlbiBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluIGNhc2Ugb2Ygbm8gaW5wdXQgc3VibmV0cywgbm8gcm91dGUgaXMgY3JlYXRlZFxuICAgKi9cbiAgcHVibGljIGFkZEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgZWd3ID0gbmV3IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkodGhpcywgJ0VncmVzc09ubHlHVycsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICB9KTtcblxuICAgIGxldCB1c2VJcHY2O1xuICAgIGlmICh0aGlzLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgICAgdXNlSXB2NiA9ICh0aGlzLnNlY29uZGFyeUNpZHJCbG9jay5zb21lKChzZWNvbmRhcnlBZGRyZXNzKSA9PiBzZWNvbmRhcnlBZGRyZXNzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA9PT0gdHJ1ZSB8fFxuICAgIHNlY29uZGFyeUFkZHJlc3MuaXB2NklwYW1Qb29sSWQgIT0gdW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgaWYgKCF1c2VJcHY2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VncmVzcyBvbmx5IElHVyBjYW4gb25seSBiZSBhZGRlZCB0byBJcHY2IGVuYWJsZWQgVlBDJyk7XG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zPy5zdWJuZXRzKSB7XG4gICAgICBjb25zdCBzdWJuZXRzID0gZmxhdHRlbihvcHRpb25zLnN1Ym5ldHMubWFwKHMgPT4gdGhpcy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpKTtcbiAgICAgIHN1Ym5ldHMuZm9yRWFjaCgoc3VibmV0KSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlRWdyZXNzUm91dGUoc3VibmV0LCBlZ3csIG9wdGlvbnMuZGVzdGluYXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByb3V0ZSBmb3IgRUdXIHdpdGggZGVzdGluYXRpb24gc2V0IHRvIG91dGJvdW5kIElQdjYoJzo6LzAnKSBvciBjdXN0b20gaXB2NiBhZGRyZXNzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRWdyZXNzUm91dGUoc3VibmV0OiBJU3VibmV0VjIsIGVndzogRWdyZXNzT25seUludGVybmV0R2F0ZXdheSwgZGVzdGluYXRpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbklwdjYgPSBkZXN0aW5hdGlvbiA/PyAnOjovMCc7XG4gICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1FZ3Jlc3NSb3V0ZWAsIHtcbiAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uSXB2NiwgLy8gSVB2NiBkZWZhdWx0IHJvdXRlXG4gICAgICB0YXJnZXQ6IHsgZ2F0ZXdheTogZWd3IH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBJbnRlcm5ldCBHYXRld2F5IHRvIHRoaXMgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3JlYXRlcyBhIG5ldyByb3V0ZSBmb3IgcHVibGljIHN1Ym5ldHMod2l0aCBhbGwgb3V0Ym91bmQgYWNjZXNzKSB0byB0aGUgSW50ZXJuZXQgR2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyBhZGRJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEludGVybmV0R2F0ZXdheU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW50ZXJuZXRHYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEludGVybmV0IEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGlndyA9IG5ldyBJbnRlcm5ldEdhdGV3YXkodGhpcywgJ0ludGVybmV0R2F0ZXdheScsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICB9KTtcblxuICAgIHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQuYWRkKGlndyk7XG4gICAgdGhpcy5faW50ZXJuZXRHYXRld2F5SWQgPSBpZ3cucm91dGVyVGFyZ2V0SWQ7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gcHVibGljIHN1Ym5ldHMgZGVmaW5lZCwgbm8gZGVmYXVsdCByb3V0ZSB3aWxsIGJlIGFkZGVkXG4gICAgaWYgKHRoaXMucHVibGljU3VibmV0cykge1xuICAgICAgdGhpcy5wdWJsaWNTdWJuZXRzLmZvckVhY2goIChzKSA9PiB0aGlzLmFkZERlZmF1bHRJbnRlcm5ldFJvdXRlKHMsIGlndywgb3B0aW9ucykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGRlZmF1bHQgcm91dGUgZm9yIHRoZSBpbnRlcm5ldCBnYXRld2F5XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhZGREZWZhdWx0SW50ZXJuZXRSb3V0ZShzdWJuZXQ6IElTdWJuZXRWMiwgaWd3OiBJbnRlcm5ldEdhdGV3YXksIG9wdGlvbnM/OiBJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogdm9pZCB7XG5cbiAgICBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgIT09IFN1Ym5ldFR5cGUuUFVCTElDKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHB1YmxpYyBzdWJuZXRzIGRlZmluZWQgdG8gYWRkIHJvdXRlIGZvciBpbnRlcm5ldCBnYXRld2F5Jyk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGRlZmF1bHQgcm91dGUgdG8gSUdXIGZvciBJUHY2XG4gICAgaWYgKHN1Ym5ldC5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICBuZXcgUm91dGUodGhpcywgYCR7c3VibmV0Lm5vZGUuaWR9LURlZmF1bHRJUHY2Um91dGVgLCB7XG4gICAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgICBkZXN0aW5hdGlvbjogb3B0aW9ucz8uaXB2NkRlc3RpbmF0aW9uID8/ICc6Oi8wJyxcbiAgICAgICAgdGFyZ2V0OiB7IGdhdGV3YXk6IGlndyB9LFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vQWRkIGRlZmF1bHQgcm91dGUgdG8gSUdXIGZvciBJUHY0XG4gICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1EZWZhdWx0Um91dGVgLCB7XG4gICAgICByb3V0ZVRhYmxlOiBzdWJuZXQucm91dGVUYWJsZSxcbiAgICAgIGRlc3RpbmF0aW9uOiBvcHRpb25zPy5pcHY0RGVzdGluYXRpb24gPz8gJzAuMC4wLjAvMCcsXG4gICAgICB0YXJnZXQ6IHsgZ2F0ZXdheTogaWd3IH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBOQVQgR2F0ZXdheSB0byB0aGUgZ2l2ZW4gc3VibmV0IG9mIHRoaXMgVlBDXG4gICAqIG9mIGdpdmVuIHN1Ym5ldHMuXG4gICAqL1xuICBwdWJsaWMgYWRkTmF0R2F0ZXdheShvcHRpb25zOiBOYXRHYXRld2F5T3B0aW9ucyk6IE5hdEdhdGV3YXkge1xuICAgIGlmIChvcHRpb25zLmNvbm5lY3Rpdml0eVR5cGUgPT09IE5hdENvbm5lY3Rpdml0eVR5cGUuUFVCTElDICYmICF0aGlzLl9pbnRlcm5ldEdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYWRkIGEgUHVibGljIE5BVCBHYXRld2F5IHdpdGhvdXQgYW4gSW50ZXJuZXQgR2F0ZXdheSBlbmFibGVkIG9uIFZQQycpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE5hdEdhdGV3YXkodGhpcywgJ05BVEdhdGV3YXknLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogQWRkcyBhIG5ldyBmbG93IGxvZyB0byB0aGlzIFZQQ1xuICAqL1xuICBwdWJsaWMgYWRkRmxvd0xvZyhpZDogc3RyaW5nLCBvcHRpb25zPzogRmxvd0xvZ09wdGlvbnMpOiBGbG93TG9nIHtcbiAgICByZXR1cm4gbmV3IEZsb3dMb2codGhpcywgaWQsIHtcbiAgICAgIHJlc291cmNlVHlwZTogRmxvd0xvZ1Jlc291cmNlVHlwZS5mcm9tVnBjKHRoaXMpLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIENyZWF0ZXMgcGVlcmluZyBjb25uZWN0aW9uIHJvbGUgZm9yIGFjY2VwdG9yIFZQQ1xuICAqL1xuICBwdWJsaWMgY3JlYXRlQWNjZXB0b3JWcGNSb2xlKHJlcXVlc3RvckFjY291bnRJZDogc3RyaW5nKTogUm9sZSB7XG4gICAgY29uc3QgcGVlcmluZ1JvbGUgPSBuZXcgUm9sZSh0aGlzLCAnVnBjUGVlcmluZ1JvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBBY2NvdW50UHJpbmNpcGFsKHJlcXVlc3RvckFjY291bnRJZCksXG4gICAgICByb2xlTmFtZTogJ1ZwY1BlZXJpbmdSb2xlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVzdHJpY3RpdmUgcm9sZSBmb3IgVlBDIHBlZXJpbmcnLFxuICAgIH0pO1xuXG4gICAgcGVlcmluZ1JvbGUuYWRkVG9Qb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFsnZWMyOkFjY2VwdFZwY1BlZXJpbmdDb25uZWN0aW9uJ10sXG4gICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06ZWMyOiR7dGhpcy5yZWdpb259OiR7dGhpcy5vd25lckFjY291bnRJZH06dnBjLyR7dGhpcy52cGNJZH1gXSxcbiAgICB9KSk7XG5cbiAgICBwZWVyaW5nUm9sZS5hZGRUb1BvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsnZWMyOkFjY2VwdFZwY1BlZXJpbmdDb25uZWN0aW9uJ10sXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTplYzI6JHt0aGlzLnJlZ2lvbn06JHt0aGlzLm93bmVyQWNjb3VudElkfTp2cGMtcGVlcmluZy1jb25uZWN0aW9uLypgXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgJ2VjMjpBY2NlcHRlclZwYyc6IGBhcm46JHtBd3MuUEFSVElUSU9OfTplYzI6JHt0aGlzLnJlZ2lvbn06JHt0aGlzLm93bmVyQWNjb3VudElkfTp2cGMvJHt0aGlzLnZwY0lkfWAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIHJldHVybiBwZWVyaW5nUm9sZTtcbiAgfVxuXG4gIC8qKlxuICAqIENyZWF0ZXMgYSBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgKi9cbiAgcHVibGljIGNyZWF0ZVBlZXJpbmdDb25uZWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM6IFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyk6IFZQQ1BlZXJpbmdDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFZQQ1BlZXJpbmdDb25uZWN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICByZXF1ZXN0b3JWcGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogUmV0dXJucyB0aGUgaWQgb2YgdGhlIFZQTiBHYXRld2F5IChpZiBlbmFibGVkKVxuICAqL1xuICBwdWJsaWMgZ2V0IHZwbkdhdGV3YXlJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92cG5HYXRld2F5SWQ7XG4gIH1cblxuICAvKipcbiAgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgSW50ZXJuZXQgR2F0ZXdheSAoaWYgZW5hYmxlZClcbiAgKi9cbiAgcHVibGljIGdldCBpbnRlcm5ldEdhdGV3YXlJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcm5ldEdhdGV3YXlJZDtcbiAgfVxuXG4gIC8qKlxuICAqIFJldHVybiB0aGUgc3VibmV0cyBhcHByb3ByaWF0ZSBmb3IgdGhlIHBsYWNlbWVudCBzdHJhdGVneVxuICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0U3VibmV0T2JqZWN0cyhzZWxlY3Rpb246IFN1Ym5ldFNlbGVjdGlvbiA9IHt9KTogSVN1Ym5ldFtdIHtcbiAgICBzZWxlY3Rpb24gPSB0aGlzLnJlaWZ5U2VsZWN0aW9uRGVmYXVsdHMoc2VsZWN0aW9uKTtcblxuICAgIGlmIChzZWxlY3Rpb24uc3VibmV0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uLnN1Ym5ldHM7XG4gICAgfVxuXG4gICAgbGV0IHN1Ym5ldHM7XG5cbiAgICBpZiAoc2VsZWN0aW9uLnN1Ym5ldEdyb3VwTmFtZSAhPT0gdW5kZWZpbmVkKSB7IC8vIFNlbGVjdCBieSBuYW1lXG4gICAgICBzdWJuZXRzID0gdGhpcy5zZWxlY3RTdWJuZXRPYmplY3RzQnlOYW1lKHNlbGVjdGlvbi5zdWJuZXRHcm91cE5hbWUpO1xuXG4gICAgfSBlbHNlIHsgLy8gT3Igc3BlY2lmeSBieSB0eXBlXG4gICAgICBjb25zdCB0eXBlID0gc2VsZWN0aW9uLnN1Ym5ldFR5cGUgfHwgU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTO1xuICAgICAgc3VibmV0cyA9IHRoaXMuc2VsZWN0U3VibmV0T2JqZWN0c0J5VHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBhbGwgdGhlIGZpbHRlcnNcbiAgICBzdWJuZXRzID0gdGhpcy5hcHBseVN1Ym5ldEZpbHRlcnMoc3VibmV0cywgc2VsZWN0aW9uLnN1Ym5ldEZpbHRlcnMgPz8gW10pO1xuXG4gICAgcmV0dXJuIHN1Ym5ldHM7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3VibmV0RmlsdGVycyhzdWJuZXRzOiBJU3VibmV0W10sIGZpbHRlcnM6IFN1Ym5ldEZpbHRlcltdKTogSVN1Ym5ldFtdIHtcbiAgICBsZXQgZmlsdGVyZWQgPSBzdWJuZXRzO1xuICAgIC8vIEFwcGx5IGVhY2ggZmlsdGVyIGluIHNlcXVlbmNlXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXIuc2VsZWN0U3VibmV0cyhmaWx0ZXJlZCk7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0U3VibmV0T2JqZWN0c0J5TmFtZShncm91cE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGFsbFN1Ym5ldHMgPSBbLi4udGhpcy5wdWJsaWNTdWJuZXRzLCAuLi50aGlzLnByaXZhdGVTdWJuZXRzLCAuLi50aGlzLmlzb2xhdGVkU3VibmV0c107XG4gICAgY29uc3Qgc3VibmV0cyA9IGFsbFN1Ym5ldHMuZmlsdGVyKHMgPT4gc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkKHMpID09PSBncm91cE5hbWUpO1xuXG4gICAgaWYgKHN1Ym5ldHMubGVuZ3RoID09PSAwICYmICF0aGlzLmluY29tcGxldGVTdWJuZXREZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IEFycmF5LmZyb20obmV3IFNldChhbGxTdWJuZXRzLm1hcChzdWJuZXRHcm91cE5hbWVGcm9tQ29uc3RydWN0SWQpKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGFyZSBubyBzdWJuZXQgZ3JvdXBzIHdpdGggbmFtZSAnJHtncm91cE5hbWV9JyBpbiB0aGlzIFZQQy4gQXZhaWxhYmxlIG5hbWVzOiAke25hbWVzfWApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJuZXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RTdWJuZXRPYmplY3RzQnlUeXBlKHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUpIHtcbiAgICBjb25zdCBhbGxTdWJuZXRzID0ge1xuICAgICAgW1N1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRF06IHRoaXMuaXNvbGF0ZWRTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuSVNPTEFURURdOiB0aGlzLmlzb2xhdGVkU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9OQVRdOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU106IHRoaXMucHJpdmF0ZVN1Ym5ldHMsXG4gICAgICBbU3VibmV0VHlwZS5QUklWQVRFXTogdGhpcy5wcml2YXRlU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBVQkxJQ106IHRoaXMucHVibGljU3VibmV0cyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VibmV0cyA9IGFsbFN1Ym5ldHNbc3VibmV0VHlwZV07XG5cbiAgICAvLyBGb3JjZSBtZXJnZSBjb25mbGljdCBoZXJlIHdpdGggaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvNDA4OVxuICAgIC8vIHNlZSBJbXBvcnRlZFZwY1xuXG4gICAgaWYgKHN1Ym5ldHMubGVuZ3RoID09PSAwICYmICF0aGlzLmluY29tcGxldGVTdWJuZXREZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVUeXBlcyA9IE9iamVjdC5lbnRyaWVzKGFsbFN1Ym5ldHMpLmZpbHRlcigoW18sIHN1YnNdKSA9PiBzdWJzLmxlbmd0aCA+IDApLm1hcCgoW3R5cGVOYW1lLCBfXSkgPT4gdHlwZU5hbWUpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBhcmUgbm8gJyR7c3VibmV0VHlwZX0nIHN1Ym5ldCBncm91cHMgaW4gdGhpcyBWUEMuIEF2YWlsYWJsZSB0eXBlczogJHthdmFpbGFibGVUeXBlc31gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VibmV0cztcbiAgfVxuXG4gIC8qKlxuICAqIFZhbGlkYXRlIHRoZSBmaWVsZHMgaW4gYSBTdWJuZXRTZWxlY3Rpb24gb2JqZWN0LCBhbmQgcmVpZnkgZGVmYXVsdHMgaWYgbmVjZXNzYXJ5XG4gICpcbiAgKiBJbiBjYXNlIG9mIGRlZmF1bHQgc2VsZWN0aW9uLCBzZWxlY3QgdGhlIGZpcnN0IHR5cGUgb2YgUFJJVkFURSwgSVNPTEFURUQsXG4gICogUFVCTElDIChpbiB0aGF0IG9yZGVyKSB0aGF0IGhhcyBhbnkgc3VibmV0cy5cbiAgKi9cbiAgcHJpdmF0ZSByZWlmeVNlbGVjdGlvbkRlZmF1bHRzKHBsYWNlbWVudDogU3VibmV0U2VsZWN0aW9uKTogU3VibmV0U2VsZWN0aW9uIHtcblxuICAgIC8vIFRPRE86IHRocm93IGVycm9yIGFzIG5ldyBWcGNWMiBjYW5ub3Qgc3VwcG9ydCBzdWJuZXROYW1lIG9yIHN1Ym5ldEdyb3VwTmFtZSBhbnltb3JlXG4gICAgaWYgKHBsYWNlbWVudC5zdWJuZXROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChwbGFjZW1lbnQuc3VibmV0R3JvdXBOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgdXNlIG9ubHkgXFwnc3VibmV0R3JvdXBOYW1lXFwnIChcXCdzdWJuZXROYW1lXFwnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyB0aGUgc2FtZSBiZWhhdmlvciknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMignQGF3cy1jZGsvYXdzLWVjMjpzdWJuZXROYW1lRGVwcmVjYXRlZCcsICdVc2FnZSBvZiBcXCdzdWJuZXROYW1lXFwnIGluIFN1Ym5ldFNlbGVjdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgXFwnc3VibmV0R3JvdXBOYW1lXFwnIGluc3RlYWQnKTtcbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudCA9IHsgLi4ucGxhY2VtZW50LCBzdWJuZXRHcm91cE5hbWU6IHBsYWNlbWVudC5zdWJuZXROYW1lIH07XG4gICAgfVxuXG4gICAgY29uc3QgZXhjbHVzaXZlU2VsZWN0aW9uczogQXJyYXk8a2V5b2YgU3VibmV0U2VsZWN0aW9uPiA9IFsnc3VibmV0cycsICdzdWJuZXRUeXBlJywgJ3N1Ym5ldEdyb3VwTmFtZSddO1xuICAgIGNvbnN0IHByb3ZpZGVkU2VsZWN0aW9ucyA9IGV4Y2x1c2l2ZVNlbGVjdGlvbnMuZmlsdGVyKGtleSA9PiBwbGFjZW1lbnRba2V5XSAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAocHJvdmlkZWRTZWxlY3Rpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSBvbmUgb2YgJyR7cHJvdmlkZWRTZWxlY3Rpb25zfScgY2FuIGJlIHN1cHBsaWVkIHRvIHN1Ym5ldCBzZWxlY3Rpb24uYCk7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudC5zdWJuZXRUeXBlID09PSB1bmRlZmluZWQgJiYgcGxhY2VtZW50LnN1Ym5ldEdyb3VwTmFtZSA9PT0gdW5kZWZpbmVkICYmIHBsYWNlbWVudC5zdWJuZXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFJldHVybiBkZWZhdWx0IHN1Ym5ldCB0eXBlIGJhc2VkIG9uIHN1Ym5ldHMgdGhhdCBhY3R1YWxseSBleGlzdFxuICAgICAgbGV0IHN1Ym5ldFR5cGUgPSB0aGlzLnByaXZhdGVTdWJuZXRzLmxlbmd0aFxuICAgICAgICA/IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyA6IHRoaXMuaXNvbGF0ZWRTdWJuZXRzLmxlbmd0aCA/IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCA6IFN1Ym5ldFR5cGUuUFVCTElDO1xuICAgICAgcGxhY2VtZW50ID0geyAuLi5wbGFjZW1lbnQsIHN1Ym5ldFR5cGU6IHN1Ym5ldFR5cGUgfTtcbiAgICB9XG5cbiAgICAvLyBFc3RhYmxpc2ggd2hpY2ggc3VibmV0IGZpbHRlcnMgYXJlIGdvaW5nIHRvIGJlIHVzZWRcbiAgICBsZXQgc3VibmV0RmlsdGVycyA9IHBsYWNlbWVudC5zdWJuZXRGaWx0ZXJzID8/IFtdO1xuXG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBgYXZhaWxhYmlsaXR5Wm9uZXNgIGFuZCBgb25lUGVyQXpgIGZ1bmN0aW9uYWxpdHlcbiAgICBpZiAocGxhY2VtZW50LmF2YWlsYWJpbGl0eVpvbmVzICE9PSB1bmRlZmluZWQpIHsgLy8gRmlsdGVyIGJ5IEFacywgaWYgc3BlY2lmaWVkXG4gICAgICBzdWJuZXRGaWx0ZXJzLnB1c2goU3VibmV0RmlsdGVyLmF2YWlsYWJpbGl0eVpvbmVzKHBsYWNlbWVudC5hdmFpbGFiaWxpdHlab25lcykpO1xuICAgIH1cbiAgICBpZiAoISFwbGFjZW1lbnQub25lUGVyQXopIHsgLy8gRW5zdXJlIG9uZSBwZXIgQVogaWYgc3BlY2lmaWVkXG4gICAgICBzdWJuZXRGaWx0ZXJzLnB1c2goU3VibmV0RmlsdGVyLm9uZVBlckF6KCkpO1xuICAgIH1cblxuICAgIC8vIE92ZXJ3cml0ZSB0aGUgcHJvdmlkZWQgcGxhY2VtZW50IGZpbHRlcnMgYW5kIHJlbW92ZSB0aGUgYXZhaWxhYmlsaXR5Wm9uZXMgYW5kIG9uZVBlckF6IHByb3BlcnRpZXNcbiAgICBwbGFjZW1lbnQgPSB7IC4uLnBsYWNlbWVudCwgc3VibmV0RmlsdGVyczogc3VibmV0RmlsdGVycywgYXZhaWxhYmlsaXR5Wm9uZXM6IHVuZGVmaW5lZCwgb25lUGVyQXo6IHVuZGVmaW5lZCB9O1xuICAgIGNvbnN0IHsgYXZhaWxhYmlsaXR5Wm9uZXMsIG9uZVBlckF6LCAuLi5yZXN0IH0gPSBwbGFjZW1lbnQ7XG5cbiAgICByZXR1cm4gcmVzdDtcbiAgfVxuXG59XG5cbmNsYXNzIENvbXBvc2l0ZURlcGVuZGFibGUgaW1wbGVtZW50cyBJRGVwZW5kYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kYWJsZXMgPSBuZXcgQXJyYXk8SURlcGVuZGFibGU+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgRGVwZW5kYWJsZS5pbXBsZW1lbnQodGhpcywge1xuICAgICAgZ2V0IGRlcGVuZGVuY3lSb290cygpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PElDb25zdHJ1Y3Q+KCk7XG4gICAgICAgIGZvciAoY29uc3QgZGVwIG9mIHNlbGYuZGVwZW5kYWJsZXMpIHtcbiAgICAgICAgICByZXQucHVzaCguLi5EZXBlbmRhYmxlLm9mKGRlcCkuZGVwZW5kZW5jeVJvb3RzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZCBhIGNvbnN0cnVjdCB0byB0aGUgZGVwZW5kZW5jeSByb290c1xuICAqL1xuICBwdWJsaWMgYWRkKGRlcDogSURlcGVuZGFibGUpIHtcbiAgICB0aGlzLmRlcGVuZGFibGVzLnB1c2goZGVwKTtcbiAgfVxufVxuXG4vKipcbiogSW52b2tlIGEgZnVuY3Rpb24gb24gYSB2YWx1ZSAoZm9yIGl0cyBzaWRlIGVmZmVjdCkgYW5kIHJldHVybiB0aGUgdmFsdWVcbiovXG5mdW5jdGlvbiB0YXA8VD4oeDogVCwgZm46ICh4OiBUKSA9PiB2b2lkKTogVCB7XG4gIGZuKHgpO1xuICByZXR1cm4geDtcblxufVxuIl19
|
package/lib/vpc-v2.js
CHANGED
|
@@ -77,7 +77,7 @@ class IpAddresses {
|
|
|
77
77
|
}
|
|
78
78
|
exports.IpAddresses = IpAddresses;
|
|
79
79
|
_a = JSII_RTTI_SYMBOL_1;
|
|
80
|
-
IpAddresses[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.IpAddresses", version: "2.
|
|
80
|
+
IpAddresses[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.IpAddresses", version: "2.172.0-alpha.0" };
|
|
81
81
|
/**
|
|
82
82
|
* This class provides a foundation for creating and configuring a VPC with advanced features such as IPAM (IP Address Management) and IPv6 support.
|
|
83
83
|
*
|
|
@@ -273,7 +273,7 @@ class VpcV2 extends vpc_v2_base_1.VpcV2Base {
|
|
|
273
273
|
}
|
|
274
274
|
exports.VpcV2 = VpcV2;
|
|
275
275
|
_b = JSII_RTTI_SYMBOL_1;
|
|
276
|
-
VpcV2[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2", version: "2.
|
|
276
|
+
VpcV2[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2", version: "2.172.0-alpha.0" };
|
|
277
277
|
/**
|
|
278
278
|
* Supports assigning IPv4 address to VPC
|
|
279
279
|
*/
|
|
@@ -409,4 +409,4 @@ function validateIpv4address(cidr1, cidr2) {
|
|
|
409
409
|
(ip1.octet1 === 192 && ip1.octet2 === 168 && ip2.octet1 === 192 && ip2.octet2 === 168) ||
|
|
410
410
|
(ip1.octet1 === 172 && ip1.octet2 === 16 && ip2.octet1 === 172 && ip2.octet2 === 16); // CIDR ranges belong to same private IP address ranges
|
|
411
411
|
}
|
|
412
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGlEQUEyRztBQUMzRywyQ0FBMkU7QUFDM0UsMkNBQXFFO0FBRXJFLCtDQUFrRDtBQUNsRCwyQ0FBc0U7QUFDdEUsNkNBQTBDO0FBYTFDOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBRXRCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFnQixFQUFFLEtBQTZCOzs7Ozs7Ozs7O1FBQ2hFLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDaEQ7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBNEI7Ozs7Ozs7Ozs7UUFDakQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN0QztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUE0Qjs7Ozs7Ozs7OztRQUNqRCxPQUFPLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBNEI7Ozs7Ozs7Ozs7UUFDM0QsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQzs7QUE1Qkgsa0NBNkJDOzs7QUEwTUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxLQUFNLFNBQVEsdUJBQVM7SUFFbEM7O09BRUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7Ozs7Ozs7Ozs7UUFDcEY7OztVQUdFO1FBQ0YsTUFBTSxhQUFjLFNBQVEsdUJBQVM7WUEyQm5DLFlBQVksU0FBb0IsRUFBRSxXQUFtQixFQUFFLEtBQXNCO2dCQUMzRSxLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQXhCaEIsa0JBQWEsR0FBZ0IsRUFB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RSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBb0I7UUFDM0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7S0FDdkIsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDO1FBQ3RGLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLHVEQUF1RDtBQUNqSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuVlBDLCBDZm5WUENDaWRyQmxvY2ssIERlZmF1bHRJbnN0YW5jZVRlbmFuY3ksIElTdWJuZXQsIFN1Ym5ldFR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IEFybiwgQ2ZuUmVzb3VyY2UsIExhenksIE5hbWVzLCBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBEZXBlbmRlbmN5R3JvdXAsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJcGFtT3B0aW9ucywgSUlwYW1Qb29sIH0gZnJvbSAnLi9pcGFtJztcbmltcG9ydCB7IElWcGNWMiwgVnBjVjJCYXNlIH0gZnJvbSAnLi92cGMtdjItYmFzZSc7XG5pbXBvcnQgeyBJU3VibmV0VjIsIFN1Ym5ldFYyLCBTdWJuZXRWMkF0dHJpYnV0ZXMgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyByZWdpb25faW5mbyB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiBBZGRpdGlvbmFsIHByb3BzIG5lZWRlZCBmb3Igc2Vjb25kYXJ5IEFkZHJlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWNvbmRhcnlBZGRyZXNzUHJvcHMge1xuICAvKipcbiAgICogUmVxdWlyZWQgdG8gc2V0IFNlY29uZGFyeSBjaWRyIGJsb2NrIHJlc291cmNlIG5hbWVcbiAgICogaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdW5pcXVlIGxvZ2ljYWwgaWQgZm9yIHRoZSByZXNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9ja05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJcEFkZHJlc3Mgb3B0aW9ucyB0byBkZWZpbmUgVlBDIFYyXG4gKi9cbmV4cG9ydCBjbGFzcyBJcEFkZHJlc3NlcyB7XG5cbiAgLyoqXG4gICAqIEFuIElQdjQgQ0lEUiBSYW5nZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY0KGlwdjRDaWRyOiBzdHJpbmcsIHByb3BzPzogU2Vjb25kYXJ5QWRkcmVzc1Byb3BzKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IGlwdjRDaWRyQWxsb2NhdGlvbihpcHY0Q2lkciwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIElwdjQgSXBhbSBQb29sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlwdjRJcGFtKGlwdjRJcGFtT3B0aW9uczogSXBhbU9wdGlvbnMpOiBJSXBBZGRyZXNzZXMge1xuICAgIHJldHVybiBuZXcgSXBhbUlwdjQoaXB2NElwYW1PcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBJcHY2IElwYW0gUG9vbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY2SXBhbShpcHY2SXBhbU9wdGlvbnM6IElwYW1PcHRpb25zKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IElwYW1JcHY2KGlwdjZJcGFtT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjYgcmFuZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW1hem9uUHJvdmlkZWRJcHY2KHByb3BzOiBTZWNvbmRhcnlBZGRyZXNzUHJvcHMpIDogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IEFtYXpvblByb3ZpZGVkKHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnNvbGlkYXRlZCByZXR1cm4gcGFyYW1ldGVycyB0byBwYXNzIHRvIFZQQyBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNDaWRyT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAnMTAuMC4wLjAvMTYnXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDSURSIE1hc2sgZm9yIFZwY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBJUEFNIElwdjRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjROZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJcHY0IElQQU0gUG9vbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBJUEFNIElwdjRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUG9vbD86IElJcGFtUG9vbDtcblxuICAvKipcbiAgICogQ0lEUiBNYXNrIGZvciBWcGNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBPbmx5IHJlcXVpcmVkIHdoZW4gdXNpbmcgQVdTIElwYW1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjZOZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJcHY2IElQQU0gcG9vbCBpZCBmb3IgVlBDIHJhbmdlLCBjYW4gb25seSBiZSBkZWZpbmVkXG4gICAqIHVuZGVyIHB1YmxpYyBzY29wZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHBvb2wgaWRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZJcGFtUG9vbD86IElJcGFtUG9vbDtcblxuICAvKipcbiAgICogVXNlIGFtYXpvbiBwcm92aWRlZCBJUCByYW5nZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1hem9uUHJvdmlkZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IHRvIGFzc29jaWF0ZSBJcHY2IENJRFIgYmxvY2tcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXBlbmRlbmN5XG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBDZm5SZXNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlZCB0byBzZXQgU2Vjb25kYXJ5IGNpZHIgYmxvY2sgcmVzb3VyY2UgbmFtZVxuICAgKiBpbiBvcmRlciB0byBnZW5lcmF0ZSB1bmlxdWUgbG9naWNhbCBpZCBmb3IgdGhlIHJlc291cmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWUgZm9yIHByaW1hcnkgYWRkcmVzc2VzXG4gICAqL1xuICByZWFkb25seSBjaWRyQmxvY2tOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gSVB2NCBDSURSIHJhbmdlIGlzIHByb3Zpc2lvbmVkIHVzaW5nIElQQU1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgaXAgYWRkcmVzcyBhbGxvY2F0aW9uIGFjY29yZGluZyB0byB0aGUgSVBBZHJlc3MgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJcEFkZHJlc3NlcyB7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBkZWZpbmUgdGhlIGltcGxlbWVudGF0aW9uIGxvZ2ljIG9mXG4gICAqIElQIGFkZHJlc3MgYWxsb2NhdGlvblxuICAgKi9cbiAgYWxsb2NhdGVWcGNDaWRyKCkgOiBWcGNDaWRyT3B0aW9ucztcblxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIFZQQ1xuICogW2Rpc2FibGUtYXdzbGludDpmcm9tLW1ldGhvZF1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNWMlByb3BzIHtcblxuICAvKiogQSBtdXN0IElQdjQgQ0lEUiBibG9jayBmb3IgdGhlIFZQQ1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtY2lkci1ibG9ja3MuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElwdjQgQ0lEUiBCbG9jayAoJzEwLjAuMC4wLzE2JylcbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlBZGRyZXNzQmxvY2s/OiBJSXBBZGRyZXNzZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNvbmRhcnkgQ0lEUiBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqIENhbiBiZSAgSVB2NCBvciBJUHY2LCB0d28gSVB2NCByYW5nZXMgbXVzdCBmb2xsb3cgUkZDIzE5MTggY29udmVudGlvblxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXJlc2l6ZX0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2Vjb25kYXJ5IElQIGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUFkZHJlc3NCbG9ja3M/OiBJSXBBZGRyZXNzZXNbXTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGUgVlBDIGdldCBETlMgaG9zdG5hbWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVEbnNIb3N0bmFtZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRE5TIHJlc29sdXRpb24gaXMgc3VwcG9ydGVkIGZvciB0aGUgVlBDLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVEbnNTdXBwb3J0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdGVuYW5jeSBvZiBpbnN0YW5jZXMgbGF1bmNoZWQgaW50byB0aGUgVlBDLlxuICAgKlxuICAgKiBCeSBzZXR0aW5nIHRoaXMgdG8gZGVkaWNhdGVkIHRlbmFuY3ksIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIG9uXG4gICAqIGhhcmR3YXJlIGRlZGljYXRlZCB0byBhIHNpbmdsZSBBV1MgY3VzdG9tZXIsIHVubGVzcyBzcGVjaWZpY2FsbHkgc3BlY2lmaWVkXG4gICAqIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLiBQbGVhc2Ugbm90ZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBhcmUgdXNhYmxlXG4gICAqIHdpdGggRGVkaWNhdGVkIHRlbmFuY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IERlZmF1bHRJbnN0YW5jZVRlbmFuY3kuRGVmYXVsdCAoc2hhcmVkKSB0ZW5hbmN5XG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0SW5zdGFuY2VUZW5hbmN5PzogRGVmYXVsdEluc3RhbmNlVGVuYW5jeTtcblxuICAvKipcbiAgICogUGh5c2ljYWwgbmFtZSBmb3IgdGhlIFZQQ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG9nZW5lcmF0ZWQgYnkgQ0RLXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gaW1wb3J0IGEgVlBDIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREsgc3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNWMkF0dHJpYnV0ZXMge1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEXG4gICAqIFJlZmVycyB0byBwaHlzaWNhbCBJZCBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBpbiB3aGljaCBpbXBvcnRlZCBWUEMgaXMgaG9zdGVkXG4gICAqIHJlcXVpcmVkIGluIGNhc2Ugb2YgY3Jvc3MgcmVnaW9uIFZQQ1xuICAgKiBhcyBnaXZlbiB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gc2V0IGZpZWxkIHJlZ2lvbiBmb3IgaW1wb3J0ZWQgVlBDLFxuICAgKiB3aGljaCB0aGVuIGxhdGVyIGNhbiBiZSB1c2VkIGZvciBlc3RhYmxpc2hpbmcgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjb25zdHJ1Y3RlZCB3aXRoIHN0YWNrIHJlZ2lvbiB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRoYXQgb3ducyB0aGUgaW1wb3J0ZWQgVlBDXG4gICAqIHJlcXVpcmVkIGluIGNhc2Ugb2YgY3Jvc3MgYWNjb3VudCBWUENcbiAgICogYXMgZ2l2ZW4gdmFsdWUgd2lsbCBiZSB1c2VkIHRvIHNldCBmaWVsZCBhY2NvdW50IGZvciBpbXBvcnRlZCBWUEMsXG4gICAqIHdoaWNoIHRoZW4gbGF0ZXIgY2FuIGJlIHVzZWQgZm9yIGVzdGFibGlzaGluZyBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNvbnN0cnVjdGVkIHdpdGggc3RhY2sgYWNjb3VudCB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByaW1hcnkgVlBDIENJRFIgQmxvY2sgb2YgdGhlIGltcG9ydGVkIFZQQ1xuICAgKiBDYW4gb25seSBiZSBJUHY0XG4gICAqL1xuICByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogQSBWUE4gR2F0ZXdheSBpcyBhdHRhY2hlZCB0byB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gVlBOIEdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3VibmV0cyBhc3NvY2lhdGVkIHdpdGggaW1wb3J0ZWQgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3VibmV0cyBwcm92aWRlZCB0byBiZSBpbXBvcnRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0cz86IFN1Ym5ldFYyQXR0cmlidXRlc1tdO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgU2Vjb25kYXJ5IENJRFIgYmxvY2tzIGFzc29jaWF0ZWQgd2l0aCBWUENcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBzZWNvbmRhcnkgSVAgYWRkcmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5Q2lkckJsb2Nrcz86IFZQQ0NpZHJCbG9ja2F0dHJpYnV0ZXNbXTtcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgZm91bmRhdGlvbiBmb3IgY3JlYXRpbmcgYW5kIGNvbmZpZ3VyaW5nIGEgVlBDIHdpdGggYWR2YW5jZWQgZmVhdHVyZXMgc3VjaCBhcyBJUEFNIChJUCBBZGRyZXNzIE1hbmFnZW1lbnQpIGFuZCBJUHY2IHN1cHBvcnQuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5WcGMuaHRtbHxBV1MgQ0RLIERvY3VtZW50YXRpb24gb24gVlBDc30uXG4gKlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpWUENcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1YyIGV4dGVuZHMgVnBjVjJCYXNlIHtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgVlBDIGZyb20gZXhpc3RpbmcgYXR0cmlidXRlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVnBjVjJBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBWcGNWMkF0dHJpYnV0ZXMpOiBJVnBjVjIge1xuICAgIC8qKlxuICAgICogSW50ZXJuYWwgY2xhc3MgdG8gYWxsb3cgdXNlcnMgdG8gaW1wb3J0IFZQQ1xuICAgICogQGludGVybmFsXG4gICAgKi9cbiAgICBjbGFzcyBJbXBvcnRlZFZwY1YyIGV4dGVuZHMgVnBjVjJCYXNlIHtcblxuICAgICAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdnBjQXJuOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFYyW10gPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwcml2YXRlU3VibmV0czogSVN1Ym5ldFYyW10gPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IElTdWJuZXRWMltdID0gW107XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGUgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IG93bmVyQWNjb3VudElkOiBzdHJpbmc7XG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0aXRpb24/OiBzdHJpbmc7XG5cbiAgICAgIC8qXG4gICAgICAqIFJlZmVyZW5jZSB0byBhbGwgc2Vjb25kYXJ5IGJsb2NrcyBhdHRhY2hlZFxuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgICAgIC8qKlxuICAgICAgKiBSZWZlcnMgdG8gYWN0dWFsIFZQQyBSZXNvdXJjZSBhdHRyaWJ1dGUgaW4gbm9uLWltcG9ydGVkIFZQQ1xuICAgICAgKiBSZXF1aXJlZCB0byBpbXBsZW1lbnQgaGVyZSBkdWUgdG8gZXh0ZW5zaW9uIGZyb20gQmFzZSBjbGFzc1xuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAgICAgLy8gUmVxdWlyZWQgdG8gZG8gQ0lEUiByYW5nZSB0ZXN0IG9uIGltcG9ydGVkIFZQQ3MgdG8gY3JlYXRlIG5ldyBzdWJuZXRzXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBjb25zdHJ1Y3Rvcihjb25zdHJ1Y3Q6IENvbnN0cnVjdCwgY29uc3RydWN0SWQ6IHN0cmluZywgcHJvcHM6IFZwY1YyQXR0cmlidXRlcykge1xuICAgICAgICBzdXBlcihjb25zdHJ1Y3QsIGNvbnN0cnVjdElkKTtcbiAgICAgICAgdGhpcy52cGNJZCA9IHByb3BzLnZwY0lkLFxuICAgICAgICB0aGlzLnJlZ2lvbiA9IHByb3BzLnJlZ2lvbiA/PyB0aGlzLnN0YWNrLnJlZ2lvbixcbiAgICAgICAgdGhpcy5vd25lckFjY291bnRJZCA9IHByb3BzLm93bmVyQWNjb3VudElkID8/IHRoaXMuc3RhY2suYWNjb3VudCxcbiAgICAgICAgdGhpcy5fcGFydGl0aW9uID0gcmVnaW9uX2luZm8uUmVnaW9uSW5mby5nZXQodGhpcy5yZWdpb24pLnBhcnRpdGlvbixcbiAgICAgICAgdGhpcy52cGNBcm4gPSBBcm4uZm9ybWF0KHtcbiAgICAgICAgICBzZXJ2aWNlOiAnZWMyJyxcbiAgICAgICAgICByZXNvdXJjZTogJ3ZwYycsXG4gICAgICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnZwY0lkLFxuICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sXG4gICAgICAgICAgYWNjb3VudDogdGhpcy5vd25lckFjY291bnRJZCxcbiAgICAgICAgICBwYXJ0aXRpb246IHRoaXMuX3BhcnRpdGlvbixcbiAgICAgICAgfSwgdGhpcy5zdGFjayk7XG5cbiAgICAgICAgLy8gUG9wdWxhdGUgcmVnaW9uIGFuZCBhY2NvdW50IGZpZWxkcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB1cCBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICAgICAgLy8gc2FtcGxlIHZwYyBBcm4gLSBhcm46YXdzOmVjMjp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOnZwYy92cGMtMDEyMzQ1Njc4OWFiY2RlZjBcbiAgICAgICAgdGhpcy5yZWdpb24gPSB0aGlzLnZwY0Fybi5zcGxpdCgnOicpWzNdO1xuICAgICAgICB0aGlzLm93bmVyQWNjb3VudElkID0gdGhpcy52cGNBcm4uc3BsaXQoJzonKVs0XTtcbiAgICAgICAgLy8gUmVmZXJzIHRvIGFjdHVhbCBWUEMgUmVzb3VyY2UgYXR0cmlidXRlIGluIG5vbi1pbXBvcnRlZCBWUENcbiAgICAgICAgdGhpcy52cGNDaWRyQmxvY2sgPSBwcm9wcy52cGNDaWRyQmxvY2s7XG4gICAgICAgIC8vIFJlcXVpcmVkIGZvciBzdWJuZXQgcmFuZ2UgcmVsYXRlZCBjaGVja3NcbiAgICAgICAgdGhpcy5pcHY0Q2lkckJsb2NrID0gcHJvcHMudnBjQ2lkckJsb2NrO1xuICAgICAgICB0aGlzLl92cG5HYXRld2F5SWQgPSBwcm9wcy52cG5HYXRld2F5SWQ7XG5cbiAgICAgICAgaWYgKHByb3BzLnN1Ym5ldHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBwcm9wcy5zdWJuZXRzKSB7XG4gICAgICAgICAgICBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB8fCBzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfTkFUIHx8XG4gICAgICAgICAgICAgIHN1Ym5ldC5zdWJuZXRUeXBlID09PSBTdWJuZXRUeXBlLlBSSVZBVEUpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcml2YXRlU3VibmV0cy5wdXNoKFN1Ym5ldFYyLmZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGUsIHN1Ym5ldC5zdWJuZXROYW1lPz8gJ0ltcG9ydGVkUHJpdmF0ZVN1Ym5ldCcsIHN1Ym5ldCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgICAgICAgICAgdGhpcy5wdWJsaWNTdWJuZXRzLnB1c2goU3VibmV0VjIuZnJvbVN1Ym5ldFYyQXR0cmlidXRlcyhzY29wZSwgc3VibmV0LnN1Ym5ldE5hbWU/PyAnSW1wb3J0ZWRQdWJsaWNTdWJuZXQnLCBzdWJuZXQpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuSVNPTEFURUQgfHwgc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCkge1xuICAgICAgICAgICAgICB0aGlzLmlzb2xhdGVkU3VibmV0cy5wdXNoKFN1Ym5ldFYyLmZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGUsIHN1Ym5ldC5zdWJuZXROYW1lPz8gJ0ltcG9ydGVkSXNvbGF0ZWRTdWJuZXQnLCBzdWJuZXQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWNvbmRhcnlDaWRyQmxvY2sgPSBwcm9wcy5zZWNvbmRhcnlDaWRyQmxvY2tzPy5tYXAoY2lkckJsb2NrID0+IFZQQ0NpZHJCbG9jay5mcm9tVlBDQ2lkckJsb2NrYXR0cmlidXRlcyhzY29wZSwgY2lkckJsb2NrLmNpZHJCbG9ja05hbWUgPz8gJ0ltcG9ydGVkU2Vjb25kYXJ5Q2lkckJsb2NrJywgeyAuLi5jaWRyQmxvY2sgfSkpO1xuICAgICAgICBpZiAocHJvcHMuc2Vjb25kYXJ5Q2lkckJsb2Nrcykge1xuICAgICAgICAgIGZvciAoY29uc3QgY2lkckJsb2NrIG9mIHByb3BzLnNlY29uZGFyeUNpZHJCbG9ja3MpIHtcbiAgICAgICAgICAgIGlmIChjaWRyQmxvY2suaXB2NElwYW1Qcm92aXNpb25lZENpZHJzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzLnB1c2goLi4uY2lkckJsb2NrLmlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRWcGNWMihzY29wZSwgaWQsIGF0dHJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0NpZHJCbG9jazogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElQdjYgQ0lEUiBibG9ja3MgZm9yIHRoZSBWUEMuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwYy5odG1sI2F3cy1yZXNvdXJjZS1lYzItdnBjLXJldHVybi12YWx1ZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpcHY2Q2lkckJsb2Nrczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBvZiBpcHY0IGFkZHJlc3Nlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwQWRkcmVzc2VzOiBJSXBBZGRyZXNzZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgcmVwcmVzZW50aW5nIHRoZSBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmblZQQztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGlzIFZQQyB3aWxsIGhhdmUgcHVibGljIEROUyBob3N0bmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZG5zSG9zdG5hbWVzRW5hYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIEROUyBzdXBwb3J0IGlzIGVuYWJsZWQgZm9yIHRoaXMgVlBDLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRuc1N1cHBvcnRFbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJc29sYXRlZCBTdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNvbGF0ZWRTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBTdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFtdO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgU3VibmV0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgVlBDLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFRvIGRlZmluZSBkZXBlbmRlbmN5IG9uIGludGVybmV0IGNvbm5lY3Rpdml0eVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiByZWZlcmVuY2UgdG8gYWxsIHNlY29uZGFyeSBibG9ja3MgYXR0YWNoZWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW10gPSBuZXcgQXJyYXk8SVZQQ0NpZHJCbG9jaz47XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBwcm92aXNpb25lZCB1c2luZyBJUEFNIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgb3duZXIgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRm9yIHZhbGlkYXRpb24gdG8gZGVmaW5lIElQdjYgc3VibmV0cywgc2V0IHRvIHRydWUgaW4gY2FzZSBvZlxuICAgKiBBbWF6b24gUHJvdmlkZWQgSVB2NiBjaWRyIHJhbmdlXG4gICAqIGlmIHRydWUsIElQdjYgYWRkcmVzc2VzIGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgc3VibmV0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VJcHY2OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWcGNWMlByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMudnBjTmFtZSA/PyBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMTI4LCBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICdfJyB9KSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pcEFkZHJlc3NlcyA9IHByb3BzLnByaW1hcnlBZGRyZXNzQmxvY2sgPz8gSXBBZGRyZXNzZXMuaXB2NCgnMTAuMC4wLjAvMTYnKTtcbiAgICBjb25zdCB2cGNPcHRpb25zID0gdGhpcy5pcEFkZHJlc3Nlcy5hbGxvY2F0ZVZwY0NpZHIoKTtcblxuICAgIHRoaXMuZG5zSG9zdG5hbWVzRW5hYmxlZCA9IHByb3BzLmVuYWJsZURuc0hvc3RuYW1lcyA9PSBudWxsID8gdHJ1ZSA6IHByb3BzLmVuYWJsZURuc0hvc3RuYW1lcztcbiAgICB0aGlzLmRuc1N1cHBvcnRFbmFibGVkID0gcHJvcHMuZW5hYmxlRG5zU3VwcG9ydCA9PSBudWxsID8gdHJ1ZSA6IHByb3BzLmVuYWJsZURuc1N1cHBvcnQ7XG4gICAgY29uc3QgaW5zdGFuY2VUZW5hbmN5ID0gcHJvcHMuZGVmYXVsdEluc3RhbmNlVGVuYW5jeSB8fCAnZGVmYXVsdCc7XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5WUEModGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgY2lkckJsb2NrOiB2cGNPcHRpb25zLmlwdjRDaWRyQmxvY2ssIC8vZm9yIElwdjQgYWRkcmVzc2VzIENJRFIgYmxvY2tcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdGhpcy5kbnNIb3N0bmFtZXNFbmFibGVkLFxuICAgICAgZW5hYmxlRG5zU3VwcG9ydDogdGhpcy5kbnNTdXBwb3J0RW5hYmxlZCxcbiAgICAgIGlwdjRJcGFtUG9vbElkOiB2cGNPcHRpb25zLmlwdjRJcGFtUG9vbD8uaXBhbVBvb2xJZCwgLy8gZm9yIElwdjQgaXBhbSBvcHRpb25cbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiB2cGNPcHRpb25zLmlwdjROZXRtYXNrTGVuZ3RoLCAvLyBmb3IgSXB2NCBpcGFtIG9wdGlvblxuICAgICAgaW5zdGFuY2VUZW5hbmN5OiBpbnN0YW5jZVRlbmFuY3ksXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLnZwY0NpZHJCbG9jayA9IHRoaXMucmVzb3VyY2UuYXR0ckNpZHJCbG9jaztcbiAgICBpZiAodnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrKSB7XG4gICAgICB0aGlzLmlwdjRDaWRyQmxvY2sgPSB2cGNPcHRpb25zLmlwdjRDaWRyQmxvY2s7XG4gICAgfVxuICAgIHRoaXMuaXB2NkNpZHJCbG9ja3MgPSB0aGlzLnJlc291cmNlLmF0dHJJcHY2Q2lkckJsb2NrcztcbiAgICB0aGlzLnZwY0lkID0gdGhpcy5yZXNvdXJjZS5hdHRyVnBjSWQ7XG4gICAgdGhpcy52cGNBcm4gPSBBcm4uZm9ybWF0KHtcbiAgICAgIHNlcnZpY2U6ICdlYzInLFxuICAgICAgcmVzb3VyY2U6ICd2cGMnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnZwY0lkLFxuICAgIH0sIHRoaXMuc3RhY2spO1xuICAgIHRoaXMucmVnaW9uID0gdGhpcy5zdGFjay5yZWdpb247XG4gICAgdGhpcy5vd25lckFjY291bnRJZCA9IHRoaXMuc3RhY2suYWNjb3VudDtcblxuICAgIGlmIChwcm9wcy5zZWNvbmRhcnlBZGRyZXNzQmxvY2tzKSB7XG4gICAgICBjb25zdCBzZWNvbmRhcnlBZGRyZXNzQmxvY2tzOiBJSXBBZGRyZXNzZXNbXSA9IHByb3BzLnNlY29uZGFyeUFkZHJlc3NCbG9ja3M7XG5cbiAgICAgIGZvciAoY29uc3Qgc2Vjb25kYXJ5QWRkcmVzc0Jsb2NrIG9mIHNlY29uZGFyeUFkZHJlc3NCbG9ja3MpIHtcblxuICAgICAgICBjb25zdCBzZWNvbmRhcnlWcGNPcHRpb25zOiBWcGNDaWRyT3B0aW9ucyA9IHNlY29uZGFyeUFkZHJlc3NCbG9jay5hbGxvY2F0ZVZwY0NpZHIoKTtcbiAgICAgICAgaWYgKCFzZWNvbmRhcnlWcGNPcHRpb25zLmNpZHJCbG9ja05hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NpZHIgQmxvY2sgTmFtZSBpcyByZXF1aXJlZCB0byBjcmVhdGUgc2Vjb25kYXJ5IElQIGFkZHJlc3MnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWNvbmRhcnlWcGNPcHRpb25zLmFtYXpvblByb3ZpZGVkIHx8IHNlY29uZGFyeVZwY09wdGlvbnMuaXB2NklwYW1Qb29sKSB7XG4gICAgICAgICAgdGhpcy51c2VJcHY2ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvL3ZhbGlkYXRlIENJRFIgcmFuZ2VzIHBlciBSRkMgMTkxOFxuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrISkge1xuICAgICAgICAgIGNvbnN0IHJldCA9IHZhbGlkYXRlSXB2NGFkZHJlc3Moc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrLCB0aGlzLnJlc291cmNlLmNpZHJCbG9jayk7XG4gICAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ0lEUiBibG9jayBzaG91bGQgYmUgaW4gdGhlIHNhbWUgUkZDIDE5MTggcmFuZ2UgaW4gdGhlIFZQQycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMhKSB7XG4gICAgICAgICAgdGhpcy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnM/LnB1c2goLi4uc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZwY0NpZHJCbG9jayA9IG5ldyBWUENDaWRyQmxvY2sodGhpcywgc2Vjb25kYXJ5VnBjT3B0aW9ucy5jaWRyQmxvY2tOYW1lLCB7XG4gICAgICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICAgICAgY2lkckJsb2NrOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjRDaWRyQmxvY2ssXG4gICAgICAgICAgaXB2NElwYW1Qb29sSWQ6IHNlY29uZGFyeVZwY09wdGlvbnMuaXB2NElwYW1Qb29sPy5pcGFtUG9vbElkLFxuICAgICAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjROZXRtYXNrTGVuZ3RoLFxuICAgICAgICAgIGlwdjZOZXRtYXNrTGVuZ3RoOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjZOZXRtYXNrTGVuZ3RoLFxuICAgICAgICAgIGlwdjZJcGFtUG9vbElkOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjZJcGFtUG9vbD8uaXBhbVBvb2xJZCxcbiAgICAgICAgICBhbWF6b25Qcm92aWRlZElwdjZDaWRyQmxvY2s6IHNlY29uZGFyeVZwY09wdGlvbnMuYW1hem9uUHJvdmlkZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBzZWNvbmRhcnlWcGNPcHRpb25zLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgdnBjQ2lkckJsb2NrLm5vZGUuYWRkRGVwZW5kZW5jeShkZXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL0NyZWF0ZSBzZWNvbmRhcnkgYmxvY2tzIGZvciBJcHY0IGFuZCBJcHY2XG4gICAgICAgIHRoaXMuc2Vjb25kYXJ5Q2lkckJsb2NrPy5wdXNoKHZwY0NpZHJCbG9jayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1wdHkgYXJyYXkgZm9yIGlzb2xhdGVkIHN1Ym5ldHNcbiAgICAgKi9cbiAgICB0aGlzLmlzb2xhdGVkU3VibmV0cyA9IG5ldyBBcnJheTxJU3VibmV0PjtcblxuICAgIC8qKlxuICAgICAqIEVtcHR5IGFycmF5IGZvciBwdWJsaWMgc3VibmV0c1xuICAgICAqL1xuICAgIHRoaXMucHVibGljU3VibmV0cyA9IG5ldyBBcnJheTxJU3VibmV0PjtcblxuICAgIC8qKlxuICAgICAqIEVtcHR5IGFycmF5IGZvciBwcml2YXRlIHN1Ym5ldHNcbiAgICAgKi9cbiAgICB0aGlzLnByaXZhdGVTdWJuZXRzID0gbmV3IEFycmF5PElTdWJuZXQ+O1xuXG4gICAgLyoqXG4gICAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAgICogQWRkIGlndyB0byB0aGlzIGlmIGl0cyBhIHB1YmxpYyBzdWJuZXRcbiAgICAgKi9cbiAgICB0aGlzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkO1xuICB9XG59XG4vKipcbiAqIFN1cHBvcnRzIGFzc2lnbmluZyBJUHY0IGFkZHJlc3MgdG8gVlBDXG4gKi9cbmNsYXNzIGlwdjRDaWRyQWxsb2NhdGlvbiBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjaWRyQmxvY2s6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBwcm9wcz86IHsgY2lkckJsb2NrTmFtZTogc3RyaW5nfSkge1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIENJRFIgYmxvY2sgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdG8gc2V0IElQdjRcbiAgICovXG4gIGFsbG9jYXRlVnBjQ2lkcigpOiBWcGNDaWRyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwdjRDaWRyQmxvY2s6IHRoaXMuY2lkckJsb2NrLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcz8uY2lkckJsb2NrTmFtZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogU3VwcG9ydHMgQW1hem9uIFByb3ZpZGVkIElwdjYgcmFuZ2VzXG4gKi9cbmNsYXNzIEFtYXpvblByb3ZpZGVkIGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYW4gQW1hem9uLXByb3ZpZGVkIElQdjYgQ0lEUiByYW5nZSBmb3IgYSBWUEMuXG4gICAqXG4gICAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgSUlwQWRkcmVzc2VzIGludGVyZmFjZSBhbmQgaXMgdXNlZCB0byBhbGxvY2F0ZSBhbiBBbWF6b24tcHJvdmlkZWRcbiAgICogSVB2NiBDSURSIHJhbmdlIGZvciBhIFZQQy4gV2hlbiBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHVzZWQgdG8gYWxsb2NhdGUgdGhlIFZQQyBDSURSLFxuICAgKiBBbWF6b24gd2lsbCBhdXRvbWF0aWNhbGx5IGFzc2lnbiBhbiBJUHY2IENJRFIgcmFuZ2UgZnJvbSBpdHMgcG9vbCBvZiBhdmFpbGFibGUgYWRkcmVzc2VzLlxuICAgKi9cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiB7IGNpZHJCbG9ja05hbWU6IHN0cmluZ30pIHt9O1xuXG4gIGFsbG9jYXRlVnBjQ2lkcigpOiBWcGNDaWRyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFtYXpvblByb3ZpZGVkOiB0cnVlLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcy5jaWRyQmxvY2tOYW1lLFxuICAgIH07XG4gIH1cblxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gSVB2NCBhZGRyZXNzIHJhbmdlIG1hbmFnZWQgYnkgQVdTIElQIEFkZHJlc3MgTWFuYWdlciAoSVBBTSkuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItaXBhbS5odG1sXG4gKi9cbmNsYXNzIElwYW1JcHY2IGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJcGFtT3B0aW9ucykge1xuICB9XG5cbiAgYWxsb2NhdGVWcGNDaWRyKCk6IFZwY0NpZHJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXB2Nk5ldG1hc2tMZW5ndGg6IHRoaXMucHJvcHMubmV0bWFza0xlbmd0aCxcbiAgICAgIGlwdjZJcGFtUG9vbDogdGhpcy5wcm9wcy5pcGFtUG9vbCxcbiAgICAgIGRlcGVuZGVuY2llczogdGhpcy5wcm9wcy5pcGFtUG9vbD8uaXBhbUNpZHJzLm1hcChjID0+IGMgYXMgQ2ZuUmVzb3VyY2UpLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcy5jaWRyQmxvY2tOYW1lLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyByYW5nZSBtYW5hZ2VkIGJ5IEFXUyBJUCBBZGRyZXNzIE1hbmFnZXIgKElQQU0pLlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLWlwYW0uaHRtbFxuICovXG5jbGFzcyBJcGFtSXB2NCBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogSXBhbU9wdGlvbnMpIHtcbiAgfVxuICBhbGxvY2F0ZVZwY0NpZHIoKTogVnBjQ2lkck9wdGlvbnMge1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiB0aGlzLnByb3BzLm5ldG1hc2tMZW5ndGgsXG4gICAgICBpcHY0SXBhbVBvb2w6IHRoaXMucHJvcHMuaXBhbVBvb2wsXG4gICAgICBjaWRyQmxvY2tOYW1lOiB0aGlzLnByb3BzPy5jaWRyQmxvY2tOYW1lLFxuICAgICAgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzOiB0aGlzLnByb3BzLmlwYW1Qb29sPy5pcGFtSXB2NENpZHJzLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gY3JlYXRlIEwyIGZvciBWUEMgQ2lkciBCbG9ja1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElWUENDaWRyQmxvY2sge1xuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjZcbiAgICovXG4gIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYmxvY2sgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogSVBBTSBwb29sIGZvciBJUHY2IGFkZHJlc3MgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NklwYW1Qb29sSWQgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUEFNIHBvb2wgZm9yIElQdjQgYWRkcmVzcyB0eXBlXG4gICAqL1xuICByZWFkb25seSBpcHY0SXBhbVBvb2xJZCA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgVlBDQ2lkckJsb2NrIHVzZWQgZm9yIGRlZmluaW5nIGEgbmV3IENJRFIgQmxvY2tcbiAqIGFuZCBhbHNvIGZvciBpbXBvcnRpbmcgYW4gZXhpc3RpbmcgQ0lEUlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQQ0NpZHJCbG9ja2F0dHJpYnV0ZXMge1xuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjZcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYmxvY2sgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAqXG4gICogQGRlZmF1bHQgLSBubyBDSURSIGJsb2NrIHByb3ZpZGVkXG4gICovXG4gIHJlYWRvbmx5IGNpZHJCbG9ja05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldCBtYXNrIGxlbmd0aCBmb3IgSVB2NiBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBOZXQgbWFzayBsZW5ndGggY29uZmlndXJlZCBmb3IgSVB2NlxuICAgKi9cbiAgcmVhZG9ubHkgaXB2Nk5ldG1hc2tMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE5ldCBtYXNrIGxlbmd0aCBmb3IgSVB2NCBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBOZXQgbWFzayBsZW5ndGggY29uZmlndXJlZCBmb3IgSVB2NFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NE5ldG1hc2tMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElQQU0gcG9vbCBmb3IgSVB2NiBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBJUEFNIHBvb2wgSWQgcHJvdmlkZWQgZm9yIElQdjZcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZJcGFtUG9vbElkID86IHN0cmluZztcblxuICAvKipcbiAgICogSVBBTSBwb29sIGZvciBJUHY0IGFkZHJlc3MgdHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gcG9vbCBJZCBwcm92aWRlZCBmb3IgSVB2NFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NElwYW1Qb29sSWQgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gSVB2NCBDSURSIHJhbmdlIGlzIHByb3Zpc2lvbmVkIHVzaW5nIElQQU1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBWUENDaWRyQmxvY2tcbiAqL1xuaW50ZXJmYWNlIFZQQ0NpZHJCbG9ja1Byb3BzIGV4dGVuZHMgVlBDQ2lkckJsb2NrYXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIElkIGZvciBhc3NvY2lhdGluZyBDSURSIEJsb2NrIGFzIGEgc2Vjb25kYXJ5IGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgTDIgdG8gZGVmaW5lIGEgbmV3IFZQQyBDSURSIEJsb2NrXG4gKiBAaW50ZXJuYWxcbiAqL1xuY2xhc3MgVlBDQ2lkckJsb2NrIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVlBDQ2lkckJsb2NrIHtcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIFZQQyBDSURSIEJsb2NrXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21WUENDaWRyQmxvY2thdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUENDaWRyQmxvY2thdHRyaWJ1dGVzKSA6IElWUENDaWRyQmxvY2sge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVZQQ0NpZHJCbG9jayB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2lkckJsb2NrID0gcHJvcHMuY2lkckJsb2NrO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA/OiBib29sZWFuID0gcHJvcHMuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrOztcbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY2SXBhbVBvb2xJZCA/OiBzdHJpbmcgPSBwcm9wcy5pcHY2SXBhbVBvb2xJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY0SXBhbVBvb2xJZCA/OiBzdHJpbmcgPSBwcm9wcy5pcHY0SXBhbVBvb2xJZDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBDQ2lkckJsb2NrO1xuXG4gIHB1YmxpYyByZWFkb25seSBjaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz86IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IGlwdjZJcGFtUG9vbElkPzogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBpcHY0SXBhbVBvb2xJZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVlBDQ2lkckJsb2NrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVlBDQ2lkckJsb2NrKHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG4gICAgdGhpcy5jaWRyQmxvY2sgPSBwcm9wcy5jaWRyQmxvY2s7XG4gICAgdGhpcy5pcHY2SXBhbVBvb2xJZCA9IHByb3BzLmlwdjZJcGFtUG9vbElkO1xuICAgIHRoaXMuaXB2NElwYW1Qb29sSWQgPSBwcm9wcy5pcHY0SXBhbVBvb2xJZDtcbiAgICB0aGlzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA9IHByb3BzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaztcbiAgfVxufVxuXG4vL0BpbnRlcm5hbCBGaXJzdCB0d28gT2N0ZXQgdG8gdmVyaWZ5IFJGQyAxOTE4XG5pbnRlcmZhY2UgSVBhZGRyZXNzQ29uZmlnIHtcbiAgb2N0ZXQxOiBudW1iZXI7XG4gIG9jdGV0MjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc2Vjb25kYXJ5IElQdjQgYWRkcmVzcyBpcyB3aXRoaW4gdGhlIHNhbWUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlIGFzIHRoZSBwcmltYXJ5IElQdjQgYWRkcmVzcy5cbiAqXG4gKiBAcGFyYW0gY2lkcjEgVGhlIHNlY29uZGFyeSBJUHY0IENJRFIgYmxvY2sgdG8gYmUgdmFsaWRhdGVkLlxuICogQHBhcmFtIGNpZHIyIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayB0byB2YWxpZGF0ZSBhZ2FpbnN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBibG9jayBpcyB3aXRoaW4gdGhlIHNhbWUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlIGFzIHRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jaywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKiBUaGUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlcyBhcmUgZGVmaW5lZCBieSBSRkMgMTkxOCBhcyAxMC4wLjAuMC84LCAxNzIuMTYuMC4wLzEyLCBhbmQgMTkyLjE2OC4wLjAvMTYuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlSXB2NGFkZHJlc3MoY2lkcjE/OiBzdHJpbmcsIGNpZHIyPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghY2lkcjEgfHwgIWNpZHIyKSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYW5kbGUgY2FzZXMgd2hlcmUgQ0lEUiByYW5nZXMgYXJlIG5vdCBwcm92aWRlZFxuICB9XG5cbiAgY29uc3Qgb2N0ZXRzQ2lkcjE6IG51bWJlcltdID0gY2lkcjEuc3BsaXQoJy4nKS5tYXAob2N0ZXQgPT4gcGFyc2VJbnQob2N0ZXQsIDEwKSk7XG4gIGNvbnN0IG9jdGV0c0NpZHIyOiBudW1iZXJbXSA9IGNpZHIyLnNwbGl0KCcuJykubWFwKG9jdGV0ID0+IHBhcnNlSW50KG9jdGV0LCAxMCkpO1xuXG4gIGlmIChvY3RldHNDaWRyMS5sZW5ndGggIT09IDQgfHwgb2N0ZXRzQ2lkcjIubGVuZ3RoICE9PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYW5kbGUgaW52YWxpZCBDSURSIHJhbmdlc1xuICB9XG5cbiAgY29uc3QgaXAxOiBJUGFkZHJlc3NDb25maWcgPSB7XG4gICAgb2N0ZXQxOiBvY3RldHNDaWRyMVswXSxcbiAgICBvY3RldDI6IG9jdGV0c0NpZHIxWzFdLFxuICB9O1xuXG4gIGNvbnN0IGlwMjogSVBhZGRyZXNzQ29uZmlnID0ge1xuICAgIG9jdGV0MTogb2N0ZXRzQ2lkcjJbMF0sXG4gICAgb2N0ZXQyOiBvY3RldHNDaWRyMlsxXSxcbiAgfTtcblxuICByZXR1cm4gKGlwMS5vY3RldDEgPT09IDEwICYmIGlwMi5vY3RldDEgPT09IDEwKSB8fFxuICAgIChpcDEub2N0ZXQxID09PSAxOTIgJiYgaXAxLm9jdGV0MiA9PT0gMTY4ICYmIGlwMi5vY3RldDEgPT09IDE5MiAmJiBpcDIub2N0ZXQyID09PSAxNjgpIHx8XG4gICAgKGlwMS5vY3RldDEgPT09IDE3MiAmJiBpcDEub2N0ZXQyID09PSAxNiAmJiBpcDIub2N0ZXQxID09PSAxNzIgJiYgaXAyLm9jdGV0MiA9PT0gMTYpOyAvLyBDSURSIHJhbmdlcyBiZWxvbmcgdG8gc2FtZSBwcml2YXRlIElQIGFkZHJlc3MgcmFuZ2VzXG59Il19
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGlEQUEyRztBQUMzRywyQ0FBMkU7QUFDM0UsMkNBQXFFO0FBRXJFLCtDQUFrRDtBQUNsRCwyQ0FBc0U7QUFDdEUsNkNBQTBDO0FBYTFDOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBRXRCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFnQixFQUFFLEtBQTZCOzs7Ozs7Ozs7O1FBQ2hFLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDaEQ7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBNEI7Ozs7Ozs7Ozs7UUFDakQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN0QztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUE0Qjs7Ozs7Ozs7OztRQUNqRCxPQUFPLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBNEI7Ozs7Ozs7Ozs7UUFDM0QsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQzs7QUE1Qkgsa0NBNkJDOzs7QUEwTUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxLQUFNLFNBQVEsdUJBQVM7SUFFbEM7O09BRUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7Ozs7Ozs7Ozs7UUFDcEY7OztVQUdFO1FBQ0YsTUFBTSxhQUFjLFNBQVEsdUJBQVM7WUEyQm5DLFlBQVksU0FBb0IsRUFBRSxXQUFtQixFQUFFLEtBQXNCO2dCQUMzRSxLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQXhCaEIsa0JBQWEsR0FBZ0IsRUFB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RSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBb0I7UUFDM0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7S0FDdkIsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDO1FBQ3RGLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLHVEQUF1RDtBQUNqSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuVlBDLCBDZm5WUENDaWRyQmxvY2ssIERlZmF1bHRJbnN0YW5jZVRlbmFuY3ksIElTdWJuZXQsIFN1Ym5ldFR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IEFybiwgQ2ZuUmVzb3VyY2UsIExhenksIE5hbWVzLCBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBEZXBlbmRlbmN5R3JvdXAsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJcGFtT3B0aW9ucywgSUlwYW1Qb29sIH0gZnJvbSAnLi9pcGFtJztcbmltcG9ydCB7IElWcGNWMiwgVnBjVjJCYXNlIH0gZnJvbSAnLi92cGMtdjItYmFzZSc7XG5pbXBvcnQgeyBJU3VibmV0VjIsIFN1Ym5ldFYyLCBTdWJuZXRWMkF0dHJpYnV0ZXMgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyByZWdpb25faW5mbyB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiBBZGRpdGlvbmFsIHByb3BzIG5lZWRlZCBmb3Igc2Vjb25kYXJ5IEFkZHJlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWNvbmRhcnlBZGRyZXNzUHJvcHMge1xuICAvKipcbiAgICogUmVxdWlyZWQgdG8gc2V0IFNlY29uZGFyeSBjaWRyIGJsb2NrIHJlc291cmNlIG5hbWVcbiAgICogaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdW5pcXVlIGxvZ2ljYWwgaWQgZm9yIHRoZSByZXNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9ja05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJcEFkZHJlc3Mgb3B0aW9ucyB0byBkZWZpbmUgVlBDIFYyXG4gKi9cbmV4cG9ydCBjbGFzcyBJcEFkZHJlc3NlcyB7XG5cbiAgLyoqXG4gICAqIEFuIElQdjQgQ0lEUiBSYW5nZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY0KGlwdjRDaWRyOiBzdHJpbmcsIHByb3BzPzogU2Vjb25kYXJ5QWRkcmVzc1Byb3BzKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IGlwdjRDaWRyQWxsb2NhdGlvbihpcHY0Q2lkciwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIElwdjQgSXBhbSBQb29sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlwdjRJcGFtKGlwdjRJcGFtT3B0aW9uczogSXBhbU9wdGlvbnMpOiBJSXBBZGRyZXNzZXMge1xuICAgIHJldHVybiBuZXcgSXBhbUlwdjQoaXB2NElwYW1PcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBJcHY2IElwYW0gUG9vbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY2SXBhbShpcHY2SXBhbU9wdGlvbnM6IElwYW1PcHRpb25zKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IElwYW1JcHY2KGlwdjZJcGFtT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjYgcmFuZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW1hem9uUHJvdmlkZWRJcHY2KHByb3BzOiBTZWNvbmRhcnlBZGRyZXNzUHJvcHMpIDogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IEFtYXpvblByb3ZpZGVkKHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnNvbGlkYXRlZCByZXR1cm4gcGFyYW1ldGVycyB0byBwYXNzIHRvIFZQQyBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNDaWRyT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAnMTAuMC4wLjAvMTYnXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDSURSIE1hc2sgZm9yIFZwY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBJUEFNIElwdjRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjROZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJcHY0IElQQU0gUG9vbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBJUEFNIElwdjRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUG9vbD86IElJcGFtUG9vbDtcblxuICAvKipcbiAgICogQ0lEUiBNYXNrIGZvciBWcGNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBPbmx5IHJlcXVpcmVkIHdoZW4gdXNpbmcgQVdTIElwYW1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjZOZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJcHY2IElQQU0gcG9vbCBpZCBmb3IgVlBDIHJhbmdlLCBjYW4gb25seSBiZSBkZWZpbmVkXG4gICAqIHVuZGVyIHB1YmxpYyBzY29wZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHBvb2wgaWRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZJcGFtUG9vbD86IElJcGFtUG9vbDtcblxuICAvKipcbiAgICogVXNlIGFtYXpvbiBwcm92aWRlZCBJUCByYW5nZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1hem9uUHJvdmlkZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IHRvIGFzc29jaWF0ZSBJcHY2IENJRFIgYmxvY2tcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXBlbmRlbmN5XG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBDZm5SZXNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlZCB0byBzZXQgU2Vjb25kYXJ5IGNpZHIgYmxvY2sgcmVzb3VyY2UgbmFtZVxuICAgKiBpbiBvcmRlciB0byBnZW5lcmF0ZSB1bmlxdWUgbG9naWNhbCBpZCBmb3IgdGhlIHJlc291cmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWUgZm9yIHByaW1hcnkgYWRkcmVzc2VzXG4gICAqL1xuICByZWFkb25seSBjaWRyQmxvY2tOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gSVB2NCBDSURSIHJhbmdlIGlzIHByb3Zpc2lvbmVkIHVzaW5nIElQQU1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgaXAgYWRkcmVzcyBhbGxvY2F0aW9uIGFjY29yZGluZyB0byB0aGUgSVBBZHJlc3MgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJcEFkZHJlc3NlcyB7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBkZWZpbmUgdGhlIGltcGxlbWVudGF0aW9uIGxvZ2ljIG9mXG4gICAqIElQIGFkZHJlc3MgYWxsb2NhdGlvblxuICAgKi9cbiAgYWxsb2NhdGVWcGNDaWRyKCkgOiBWcGNDaWRyT3B0aW9ucztcblxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIFZQQ1xuICogW2Rpc2FibGUtYXdzbGludDpmcm9tLW1ldGhvZF1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNWMlByb3BzIHtcblxuICAvKiogQSBtdXN0IElQdjQgQ0lEUiBibG9jayBmb3IgdGhlIFZQQ1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtY2lkci1ibG9ja3MuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElwdjQgQ0lEUiBCbG9jayAoJzEwLjAuMC4wLzE2JylcbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlBZGRyZXNzQmxvY2s/OiBJSXBBZGRyZXNzZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNvbmRhcnkgQ0lEUiBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqIENhbiBiZSAgSVB2NCBvciBJUHY2LCB0d28gSVB2NCByYW5nZXMgbXVzdCBmb2xsb3cgUkZDIzE5MTggY29udmVudGlvblxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXJlc2l6ZX0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2Vjb25kYXJ5IElQIGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUFkZHJlc3NCbG9ja3M/OiBJSXBBZGRyZXNzZXNbXTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGUgVlBDIGdldCBETlMgaG9zdG5hbWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVEbnNIb3N0bmFtZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRE5TIHJlc29sdXRpb24gaXMgc3VwcG9ydGVkIGZvciB0aGUgVlBDLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVEbnNTdXBwb3J0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdGVuYW5jeSBvZiBpbnN0YW5jZXMgbGF1bmNoZWQgaW50byB0aGUgVlBDLlxuICAgKlxuICAgKiBCeSBzZXR0aW5nIHRoaXMgdG8gZGVkaWNhdGVkIHRlbmFuY3ksIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIG9uXG4gICAqIGhhcmR3YXJlIGRlZGljYXRlZCB0byBhIHNpbmdsZSBBV1MgY3VzdG9tZXIsIHVubGVzcyBzcGVjaWZpY2FsbHkgc3BlY2lmaWVkXG4gICAqIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLiBQbGVhc2Ugbm90ZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBhcmUgdXNhYmxlXG4gICAqIHdpdGggRGVkaWNhdGVkIHRlbmFuY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IERlZmF1bHRJbnN0YW5jZVRlbmFuY3kuRGVmYXVsdCAoc2hhcmVkKSB0ZW5hbmN5XG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0SW5zdGFuY2VUZW5hbmN5PzogRGVmYXVsdEluc3RhbmNlVGVuYW5jeTtcblxuICAvKipcbiAgICogUGh5c2ljYWwgbmFtZSBmb3IgdGhlIFZQQ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG9nZW5lcmF0ZWQgYnkgQ0RLXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gaW1wb3J0IGEgVlBDIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREsgc3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNWMkF0dHJpYnV0ZXMge1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEXG4gICAqIFJlZmVycyB0byBwaHlzaWNhbCBJZCBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBpbiB3aGljaCBpbXBvcnRlZCBWUEMgaXMgaG9zdGVkXG4gICAqIHJlcXVpcmVkIGluIGNhc2Ugb2YgY3Jvc3MgcmVnaW9uIFZQQ1xuICAgKiBhcyBnaXZlbiB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gc2V0IGZpZWxkIHJlZ2lvbiBmb3IgaW1wb3J0ZWQgVlBDLFxuICAgKiB3aGljaCB0aGVuIGxhdGVyIGNhbiBiZSB1c2VkIGZvciBlc3RhYmxpc2hpbmcgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjb25zdHJ1Y3RlZCB3aXRoIHN0YWNrIHJlZ2lvbiB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRoYXQgb3ducyB0aGUgaW1wb3J0ZWQgVlBDXG4gICAqIHJlcXVpcmVkIGluIGNhc2Ugb2YgY3Jvc3MgYWNjb3VudCBWUENcbiAgICogYXMgZ2l2ZW4gdmFsdWUgd2lsbCBiZSB1c2VkIHRvIHNldCBmaWVsZCBhY2NvdW50IGZvciBpbXBvcnRlZCBWUEMsXG4gICAqIHdoaWNoIHRoZW4gbGF0ZXIgY2FuIGJlIHVzZWQgZm9yIGVzdGFibGlzaGluZyBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNvbnN0cnVjdGVkIHdpdGggc3RhY2sgYWNjb3VudCB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByaW1hcnkgVlBDIENJRFIgQmxvY2sgb2YgdGhlIGltcG9ydGVkIFZQQ1xuICAgKiBDYW4gb25seSBiZSBJUHY0XG4gICAqL1xuICByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogQSBWUE4gR2F0ZXdheSBpcyBhdHRhY2hlZCB0byB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gVlBOIEdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3VibmV0cyBhc3NvY2lhdGVkIHdpdGggaW1wb3J0ZWQgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3VibmV0cyBwcm92aWRlZCB0byBiZSBpbXBvcnRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0cz86IFN1Ym5ldFYyQXR0cmlidXRlc1tdO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgU2Vjb25kYXJ5IENJRFIgYmxvY2tzIGFzc29jaWF0ZWQgd2l0aCBWUENcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBzZWNvbmRhcnkgSVAgYWRkcmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5Q2lkckJsb2Nrcz86IFZQQ0NpZHJCbG9ja2F0dHJpYnV0ZXNbXTtcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgZm91bmRhdGlvbiBmb3IgY3JlYXRpbmcgYW5kIGNvbmZpZ3VyaW5nIGEgVlBDIHdpdGggYWR2YW5jZWQgZmVhdHVyZXMgc3VjaCBhcyBJUEFNIChJUCBBZGRyZXNzIE1hbmFnZW1lbnQpIGFuZCBJUHY2IHN1cHBvcnQuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5WcGMuaHRtbHxBV1MgQ0RLIERvY3VtZW50YXRpb24gb24gVlBDc30uXG4gKlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpWUENcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1YyIGV4dGVuZHMgVnBjVjJCYXNlIHtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgVlBDIGZyb20gZXhpc3RpbmcgYXR0cmlidXRlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVnBjVjJBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBWcGNWMkF0dHJpYnV0ZXMpOiBJVnBjVjIge1xuICAgIC8qKlxuICAgICogSW50ZXJuYWwgY2xhc3MgdG8gYWxsb3cgdXNlcnMgdG8gaW1wb3J0IFZQQ1xuICAgICogQGludGVybmFsXG4gICAgKi9cbiAgICBjbGFzcyBJbXBvcnRlZFZwY1YyIGV4dGVuZHMgVnBjVjJCYXNlIHtcblxuICAgICAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdnBjQXJuOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFYyW10gPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwcml2YXRlU3VibmV0czogSVN1Ym5ldFYyW10gPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IElTdWJuZXRWMltdID0gW107XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGUgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IG93bmVyQWNjb3VudElkOiBzdHJpbmc7XG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0aXRpb24/OiBzdHJpbmc7XG5cbiAgICAgIC8qXG4gICAgICAqIFJlZmVyZW5jZSB0byBhbGwgc2Vjb25kYXJ5IGJsb2NrcyBhdHRhY2hlZFxuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgICAgIC8qKlxuICAgICAgKiBSZWZlcnMgdG8gYWN0dWFsIFZQQyBSZXNvdXJjZSBhdHRyaWJ1dGUgaW4gbm9uLWltcG9ydGVkIFZQQ1xuICAgICAgKiBSZXF1aXJlZCB0byBpbXBsZW1lbnQgaGVyZSBkdWUgdG8gZXh0ZW5zaW9uIGZyb20gQmFzZSBjbGFzc1xuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAgICAgLy8gUmVxdWlyZWQgdG8gZG8gQ0lEUiByYW5nZSB0ZXN0IG9uIGltcG9ydGVkIFZQQ3MgdG8gY3JlYXRlIG5ldyBzdWJuZXRzXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBjb25zdHJ1Y3Rvcihjb25zdHJ1Y3Q6IENvbnN0cnVjdCwgY29uc3RydWN0SWQ6IHN0cmluZywgcHJvcHM6IFZwY1YyQXR0cmlidXRlcykge1xuICAgICAgICBzdXBlcihjb25zdHJ1Y3QsIGNvbnN0cnVjdElkKTtcbiAgICAgICAgdGhpcy52cGNJZCA9IHByb3BzLnZwY0lkLFxuICAgICAgICB0aGlzLnJlZ2lvbiA9IHByb3BzLnJlZ2lvbiA/PyB0aGlzLnN0YWNrLnJlZ2lvbixcbiAgICAgICAgdGhpcy5vd25lckFjY291bnRJZCA9IHByb3BzLm93bmVyQWNjb3VudElkID8/IHRoaXMuc3RhY2suYWNjb3VudCxcbiAgICAgICAgdGhpcy5fcGFydGl0aW9uID0gcmVnaW9uX2luZm8uUmVnaW9uSW5mby5nZXQodGhpcy5yZWdpb24pLnBhcnRpdGlvbixcbiAgICAgICAgdGhpcy52cGNBcm4gPSBBcm4uZm9ybWF0KHtcbiAgICAgICAgICBzZXJ2aWNlOiAnZWMyJyxcbiAgICAgICAgICByZXNvdXJjZTogJ3ZwYycsXG4gICAgICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnZwY0lkLFxuICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sXG4gICAgICAgICAgYWNjb3VudDogdGhpcy5vd25lckFjY291bnRJZCxcbiAgICAgICAgICBwYXJ0aXRpb246IHRoaXMuX3BhcnRpdGlvbixcbiAgICAgICAgfSwgdGhpcy5zdGFjayk7XG5cbiAgICAgICAgLy8gUG9wdWxhdGUgcmVnaW9uIGFuZCBhY2NvdW50IGZpZWxkcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB1cCBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICAgICAgLy8gc2FtcGxlIHZwYyBBcm4gLSBhcm46YXdzOmVjMjp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOnZwYy92cGMtMDEyMzQ1Njc4OWFiY2RlZjBcbiAgICAgICAgdGhpcy5yZWdpb24gPSB0aGlzLnZwY0Fybi5zcGxpdCgnOicpWzNdO1xuICAgICAgICB0aGlzLm93bmVyQWNjb3VudElkID0gdGhpcy52cGNBcm4uc3BsaXQoJzonKVs0XTtcbiAgICAgICAgLy8gUmVmZXJzIHRvIGFjdHVhbCBWUEMgUmVzb3VyY2UgYXR0cmlidXRlIGluIG5vbi1pbXBvcnRlZCBWUENcbiAgICAgICAgdGhpcy52cGNDaWRyQmxvY2sgPSBwcm9wcy52cGNDaWRyQmxvY2s7XG4gICAgICAgIC8vIFJlcXVpcmVkIGZvciBzdWJuZXQgcmFuZ2UgcmVsYXRlZCBjaGVja3NcbiAgICAgICAgdGhpcy5pcHY0Q2lkckJsb2NrID0gcHJvcHMudnBjQ2lkckJsb2NrO1xuICAgICAgICB0aGlzLl92cG5HYXRld2F5SWQgPSBwcm9wcy52cG5HYXRld2F5SWQ7XG5cbiAgICAgICAgaWYgKHByb3BzLnN1Ym5ldHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBwcm9wcy5zdWJuZXRzKSB7XG4gICAgICAgICAgICBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB8fCBzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfTkFUIHx8XG4gICAgICAgICAgICAgIHN1Ym5ldC5zdWJuZXRUeXBlID09PSBTdWJuZXRUeXBlLlBSSVZBVEUpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcml2YXRlU3VibmV0cy5wdXNoKFN1Ym5ldFYyLmZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGUsIHN1Ym5ldC5zdWJuZXROYW1lPz8gJ0ltcG9ydGVkUHJpdmF0ZVN1Ym5ldCcsIHN1Ym5ldCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgICAgICAgICAgdGhpcy5wdWJsaWNTdWJuZXRzLnB1c2goU3VibmV0VjIuZnJvbVN1Ym5ldFYyQXR0cmlidXRlcyhzY29wZSwgc3VibmV0LnN1Ym5ldE5hbWU/PyAnSW1wb3J0ZWRQdWJsaWNTdWJuZXQnLCBzdWJuZXQpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuSVNPTEFURUQgfHwgc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCkge1xuICAgICAgICAgICAgICB0aGlzLmlzb2xhdGVkU3VibmV0cy5wdXNoKFN1Ym5ldFYyLmZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGUsIHN1Ym5ldC5zdWJuZXROYW1lPz8gJ0ltcG9ydGVkSXNvbGF0ZWRTdWJuZXQnLCBzdWJuZXQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWNvbmRhcnlDaWRyQmxvY2sgPSBwcm9wcy5zZWNvbmRhcnlDaWRyQmxvY2tzPy5tYXAoY2lkckJsb2NrID0+IFZQQ0NpZHJCbG9jay5mcm9tVlBDQ2lkckJsb2NrYXR0cmlidXRlcyhzY29wZSwgY2lkckJsb2NrLmNpZHJCbG9ja05hbWUgPz8gJ0ltcG9ydGVkU2Vjb25kYXJ5Q2lkckJsb2NrJywgeyAuLi5jaWRyQmxvY2sgfSkpO1xuICAgICAgICBpZiAocHJvcHMuc2Vjb25kYXJ5Q2lkckJsb2Nrcykge1xuICAgICAgICAgIGZvciAoY29uc3QgY2lkckJsb2NrIG9mIHByb3BzLnNlY29uZGFyeUNpZHJCbG9ja3MpIHtcbiAgICAgICAgICAgIGlmIChjaWRyQmxvY2suaXB2NElwYW1Qcm92aXNpb25lZENpZHJzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzLnB1c2goLi4uY2lkckJsb2NrLmlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRWcGNWMihzY29wZSwgaWQsIGF0dHJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0NpZHJCbG9jazogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElQdjYgQ0lEUiBibG9ja3MgZm9yIHRoZSBWUEMuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwYy5odG1sI2F3cy1yZXNvdXJjZS1lYzItdnBjLXJldHVybi12YWx1ZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpcHY2Q2lkckJsb2Nrczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBvZiBpcHY0IGFkZHJlc3Nlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwQWRkcmVzc2VzOiBJSXBBZGRyZXNzZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgcmVwcmVzZW50aW5nIHRoZSBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmblZQQztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGlzIFZQQyB3aWxsIGhhdmUgcHVibGljIEROUyBob3N0bmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZG5zSG9zdG5hbWVzRW5hYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIEROUyBzdXBwb3J0IGlzIGVuYWJsZWQgZm9yIHRoaXMgVlBDLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRuc1N1cHBvcnRFbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJc29sYXRlZCBTdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNvbGF0ZWRTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBTdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFtdO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgU3VibmV0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgVlBDLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFRvIGRlZmluZSBkZXBlbmRlbmN5IG9uIGludGVybmV0IGNvbm5lY3Rpdml0eVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiByZWZlcmVuY2UgdG8gYWxsIHNlY29uZGFyeSBibG9ja3MgYXR0YWNoZWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW10gPSBuZXcgQXJyYXk8SVZQQ0NpZHJCbG9jaz47XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBwcm92aXNpb25lZCB1c2luZyBJUEFNIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgb3duZXIgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRm9yIHZhbGlkYXRpb24gdG8gZGVmaW5lIElQdjYgc3VibmV0cywgc2V0IHRvIHRydWUgaW4gY2FzZSBvZlxuICAgKiBBbWF6b24gUHJvdmlkZWQgSVB2NiBjaWRyIHJhbmdlXG4gICAqIGlmIHRydWUsIElQdjYgYWRkcmVzc2VzIGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgc3VibmV0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VJcHY2OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWcGNWMlByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMudnBjTmFtZSA/PyBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMTI4LCBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICdfJyB9KSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pcEFkZHJlc3NlcyA9IHByb3BzLnByaW1hcnlBZGRyZXNzQmxvY2sgPz8gSXBBZGRyZXNzZXMuaXB2NCgnMTAuMC4wLjAvMTYnKTtcbiAgICBjb25zdCB2cGNPcHRpb25zID0gdGhpcy5pcEFkZHJlc3Nlcy5hbGxvY2F0ZVZwY0NpZHIoKTtcblxuICAgIHRoaXMuZG5zSG9zdG5hbWVzRW5hYmxlZCA9IHByb3BzLmVuYWJsZURuc0hvc3RuYW1lcyA9PSBudWxsID8gdHJ1ZSA6IHByb3BzLmVuYWJsZURuc0hvc3RuYW1lcztcbiAgICB0aGlzLmRuc1N1cHBvcnRFbmFibGVkID0gcHJvcHMuZW5hYmxlRG5zU3VwcG9ydCA9PSBudWxsID8gdHJ1ZSA6IHByb3BzLmVuYWJsZURuc1N1cHBvcnQ7XG4gICAgY29uc3QgaW5zdGFuY2VUZW5hbmN5ID0gcHJvcHMuZGVmYXVsdEluc3RhbmNlVGVuYW5jeSB8fCAnZGVmYXVsdCc7XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5WUEModGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgY2lkckJsb2NrOiB2cGNPcHRpb25zLmlwdjRDaWRyQmxvY2ssIC8vZm9yIElwdjQgYWRkcmVzc2VzIENJRFIgYmxvY2tcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdGhpcy5kbnNIb3N0bmFtZXNFbmFibGVkLFxuICAgICAgZW5hYmxlRG5zU3VwcG9ydDogdGhpcy5kbnNTdXBwb3J0RW5hYmxlZCxcbiAgICAgIGlwdjRJcGFtUG9vbElkOiB2cGNPcHRpb25zLmlwdjRJcGFtUG9vbD8uaXBhbVBvb2xJZCwgLy8gZm9yIElwdjQgaXBhbSBvcHRpb25cbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiB2cGNPcHRpb25zLmlwdjROZXRtYXNrTGVuZ3RoLCAvLyBmb3IgSXB2NCBpcGFtIG9wdGlvblxuICAgICAgaW5zdGFuY2VUZW5hbmN5OiBpbnN0YW5jZVRlbmFuY3ksXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLnZwY0NpZHJCbG9jayA9IHRoaXMucmVzb3VyY2UuYXR0ckNpZHJCbG9jaztcbiAgICBpZiAodnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrKSB7XG4gICAgICB0aGlzLmlwdjRDaWRyQmxvY2sgPSB2cGNPcHRpb25zLmlwdjRDaWRyQmxvY2s7XG4gICAgfVxuICAgIHRoaXMuaXB2NkNpZHJCbG9ja3MgPSB0aGlzLnJlc291cmNlLmF0dHJJcHY2Q2lkckJsb2NrcztcbiAgICB0aGlzLnZwY0lkID0gdGhpcy5yZXNvdXJjZS5hdHRyVnBjSWQ7XG4gICAgdGhpcy52cGNBcm4gPSBBcm4uZm9ybWF0KHtcbiAgICAgIHNlcnZpY2U6ICdlYzInLFxuICAgICAgcmVzb3VyY2U6ICd2cGMnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnZwY0lkLFxuICAgIH0sIHRoaXMuc3RhY2spO1xuICAgIHRoaXMucmVnaW9uID0gdGhpcy5zdGFjay5yZWdpb247XG4gICAgdGhpcy5vd25lckFjY291bnRJZCA9IHRoaXMuc3RhY2suYWNjb3VudDtcblxuICAgIGlmIChwcm9wcy5zZWNvbmRhcnlBZGRyZXNzQmxvY2tzKSB7XG4gICAgICBjb25zdCBzZWNvbmRhcnlBZGRyZXNzQmxvY2tzOiBJSXBBZGRyZXNzZXNbXSA9IHByb3BzLnNlY29uZGFyeUFkZHJlc3NCbG9ja3M7XG5cbiAgICAgIGZvciAoY29uc3Qgc2Vjb25kYXJ5QWRkcmVzc0Jsb2NrIG9mIHNlY29uZGFyeUFkZHJlc3NCbG9ja3MpIHtcblxuICAgICAgICBjb25zdCBzZWNvbmRhcnlWcGNPcHRpb25zOiBWcGNDaWRyT3B0aW9ucyA9IHNlY29uZGFyeUFkZHJlc3NCbG9jay5hbGxvY2F0ZVZwY0NpZHIoKTtcbiAgICAgICAgaWYgKCFzZWNvbmRhcnlWcGNPcHRpb25zLmNpZHJCbG9ja05hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NpZHIgQmxvY2sgTmFtZSBpcyByZXF1aXJlZCB0byBjcmVhdGUgc2Vjb25kYXJ5IElQIGFkZHJlc3MnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWNvbmRhcnlWcGNPcHRpb25zLmFtYXpvblByb3ZpZGVkIHx8IHNlY29uZGFyeVZwY09wdGlvbnMuaXB2NklwYW1Qb29sKSB7XG4gICAgICAgICAgdGhpcy51c2VJcHY2ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvL3ZhbGlkYXRlIENJRFIgcmFuZ2VzIHBlciBSRkMgMTkxOFxuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrISkge1xuICAgICAgICAgIGNvbnN0IHJldCA9IHZhbGlkYXRlSXB2NGFkZHJlc3Moc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrLCB0aGlzLnJlc291cmNlLmNpZHJCbG9jayk7XG4gICAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ0lEUiBibG9jayBzaG91bGQgYmUgaW4gdGhlIHNhbWUgUkZDIDE5MTggcmFuZ2UgaW4gdGhlIFZQQycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMhKSB7XG4gICAgICAgICAgdGhpcy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnM/LnB1c2goLi4uc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZwY0NpZHJCbG9jayA9IG5ldyBWUENDaWRyQmxvY2sodGhpcywgc2Vjb25kYXJ5VnBjT3B0aW9ucy5jaWRyQmxvY2tOYW1lLCB7XG4gICAgICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICAgICAgY2lkckJsb2NrOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjRDaWRyQmxvY2ssXG4gICAgICAgICAgaXB2NElwYW1Qb29sSWQ6IHNlY29uZGFyeVZwY09wdGlvbnMuaXB2NElwYW1Qb29sPy5pcGFtUG9vbElkLFxuICAgICAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjROZXRtYXNrTGVuZ3RoLFxuICAgICAgICAgIGlwdjZOZXRtYXNrTGVuZ3RoOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjZOZXRtYXNrTGVuZ3RoLFxuICAgICAgICAgIGlwdjZJcGFtUG9vbElkOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjZJcGFtUG9vbD8uaXBhbVBvb2xJZCxcbiAgICAgICAgICBhbWF6b25Qcm92aWRlZElwdjZDaWRyQmxvY2s6IHNlY29uZGFyeVZwY09wdGlvbnMuYW1hem9uUHJvdmlkZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBzZWNvbmRhcnlWcGNPcHRpb25zLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgdnBjQ2lkckJsb2NrLm5vZGUuYWRkRGVwZW5kZW5jeShkZXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL0NyZWF0ZSBzZWNvbmRhcnkgYmxvY2tzIGZvciBJcHY0IGFuZCBJcHY2XG4gICAgICAgIHRoaXMuc2Vjb25kYXJ5Q2lkckJsb2NrPy5wdXNoKHZwY0NpZHJCbG9jayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1wdHkgYXJyYXkgZm9yIGlzb2xhdGVkIHN1Ym5ldHNcbiAgICAgKi9cbiAgICB0aGlzLmlzb2xhdGVkU3VibmV0cyA9IG5ldyBBcnJheTxJU3VibmV0PjtcblxuICAgIC8qKlxuICAgICAqIEVtcHR5IGFycmF5IGZvciBwdWJsaWMgc3VibmV0c1xuICAgICAqL1xuICAgIHRoaXMucHVibGljU3VibmV0cyA9IG5ldyBBcnJheTxJU3VibmV0PjtcblxuICAgIC8qKlxuICAgICAqIEVtcHR5IGFycmF5IGZvciBwcml2YXRlIHN1Ym5ldHNcbiAgICAgKi9cbiAgICB0aGlzLnByaXZhdGVTdWJuZXRzID0gbmV3IEFycmF5PElTdWJuZXQ+O1xuXG4gICAgLyoqXG4gICAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAgICogQWRkIGlndyB0byB0aGlzIGlmIGl0cyBhIHB1YmxpYyBzdWJuZXRcbiAgICAgKi9cbiAgICB0aGlzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkO1xuICB9XG59XG4vKipcbiAqIFN1cHBvcnRzIGFzc2lnbmluZyBJUHY0IGFkZHJlc3MgdG8gVlBDXG4gKi9cbmNsYXNzIGlwdjRDaWRyQWxsb2NhdGlvbiBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjaWRyQmxvY2s6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBwcm9wcz86IHsgY2lkckJsb2NrTmFtZTogc3RyaW5nfSkge1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIENJRFIgYmxvY2sgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdG8gc2V0IElQdjRcbiAgICovXG4gIGFsbG9jYXRlVnBjQ2lkcigpOiBWcGNDaWRyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwdjRDaWRyQmxvY2s6IHRoaXMuY2lkckJsb2NrLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcz8uY2lkckJsb2NrTmFtZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogU3VwcG9ydHMgQW1hem9uIFByb3ZpZGVkIElwdjYgcmFuZ2VzXG4gKi9cbmNsYXNzIEFtYXpvblByb3ZpZGVkIGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYW4gQW1hem9uLXByb3ZpZGVkIElQdjYgQ0lEUiByYW5nZSBmb3IgYSBWUEMuXG4gICAqXG4gICAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgSUlwQWRkcmVzc2VzIGludGVyZmFjZSBhbmQgaXMgdXNlZCB0byBhbGxvY2F0ZSBhbiBBbWF6b24tcHJvdmlkZWRcbiAgICogSVB2NiBDSURSIHJhbmdlIGZvciBhIFZQQy4gV2hlbiBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHVzZWQgdG8gYWxsb2NhdGUgdGhlIFZQQyBDSURSLFxuICAgKiBBbWF6b24gd2lsbCBhdXRvbWF0aWNhbGx5IGFzc2lnbiBhbiBJUHY2IENJRFIgcmFuZ2UgZnJvbSBpdHMgcG9vbCBvZiBhdmFpbGFibGUgYWRkcmVzc2VzLlxuICAgKi9cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiB7IGNpZHJCbG9ja05hbWU6IHN0cmluZ30pIHt9O1xuXG4gIGFsbG9jYXRlVnBjQ2lkcigpOiBWcGNDaWRyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFtYXpvblByb3ZpZGVkOiB0cnVlLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcy5jaWRyQmxvY2tOYW1lLFxuICAgIH07XG4gIH1cblxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gSVB2NCBhZGRyZXNzIHJhbmdlIG1hbmFnZWQgYnkgQVdTIElQIEFkZHJlc3MgTWFuYWdlciAoSVBBTSkuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItaXBhbS5odG1sXG4gKi9cbmNsYXNzIElwYW1JcHY2IGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJcGFtT3B0aW9ucykge1xuICB9XG5cbiAgYWxsb2NhdGVWcGNDaWRyKCk6IFZwY0NpZHJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXB2Nk5ldG1hc2tMZW5ndGg6IHRoaXMucHJvcHMubmV0bWFza0xlbmd0aCxcbiAgICAgIGlwdjZJcGFtUG9vbDogdGhpcy5wcm9wcy5pcGFtUG9vbCxcbiAgICAgIGRlcGVuZGVuY2llczogdGhpcy5wcm9wcy5pcGFtUG9vbD8uaXBhbUNpZHJzLm1hcChjID0+IGMgYXMgQ2ZuUmVzb3VyY2UpLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcy5jaWRyQmxvY2tOYW1lLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyByYW5nZSBtYW5hZ2VkIGJ5IEFXUyBJUCBBZGRyZXNzIE1hbmFnZXIgKElQQU0pLlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLWlwYW0uaHRtbFxuICovXG5jbGFzcyBJcGFtSXB2NCBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogSXBhbU9wdGlvbnMpIHtcbiAgfVxuICBhbGxvY2F0ZVZwY0NpZHIoKTogVnBjQ2lkck9wdGlvbnMge1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiB0aGlzLnByb3BzLm5ldG1hc2tMZW5ndGgsXG4gICAgICBpcHY0SXBhbVBvb2w6IHRoaXMucHJvcHMuaXBhbVBvb2wsXG4gICAgICBjaWRyQmxvY2tOYW1lOiB0aGlzLnByb3BzPy5jaWRyQmxvY2tOYW1lLFxuICAgICAgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzOiB0aGlzLnByb3BzLmlwYW1Qb29sPy5pcGFtSXB2NENpZHJzLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gY3JlYXRlIEwyIGZvciBWUEMgQ2lkciBCbG9ja1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElWUENDaWRyQmxvY2sge1xuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjZcbiAgICovXG4gIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYmxvY2sgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogSVBBTSBwb29sIGZvciBJUHY2IGFkZHJlc3MgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NklwYW1Qb29sSWQgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUEFNIHBvb2wgZm9yIElQdjQgYWRkcmVzcyB0eXBlXG4gICAqL1xuICByZWFkb25seSBpcHY0SXBhbVBvb2xJZCA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgVlBDQ2lkckJsb2NrIHVzZWQgZm9yIGRlZmluaW5nIGEgbmV3IENJRFIgQmxvY2tcbiAqIGFuZCBhbHNvIGZvciBpbXBvcnRpbmcgYW4gZXhpc3RpbmcgQ0lEUlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQQ0NpZHJCbG9ja2F0dHJpYnV0ZXMge1xuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjZcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYmxvY2sgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAqXG4gICogQGRlZmF1bHQgLSBubyBDSURSIGJsb2NrIHByb3ZpZGVkXG4gICovXG4gIHJlYWRvbmx5IGNpZHJCbG9ja05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldCBtYXNrIGxlbmd0aCBmb3IgSVB2NiBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBOZXQgbWFzayBsZW5ndGggY29uZmlndXJlZCBmb3IgSVB2NlxuICAgKi9cbiAgcmVhZG9ubHkgaXB2Nk5ldG1hc2tMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE5ldCBtYXNrIGxlbmd0aCBmb3IgSVB2NCBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBOZXQgbWFzayBsZW5ndGggY29uZmlndXJlZCBmb3IgSVB2NFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NE5ldG1hc2tMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElQQU0gcG9vbCBmb3IgSVB2NiBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBJUEFNIHBvb2wgSWQgcHJvdmlkZWQgZm9yIElQdjZcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZJcGFtUG9vbElkID86IHN0cmluZztcblxuICAvKipcbiAgICogSVBBTSBwb29sIGZvciBJUHY0IGFkZHJlc3MgdHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gcG9vbCBJZCBwcm92aWRlZCBmb3IgSVB2NFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NElwYW1Qb29sSWQgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gSVB2NCBDSURSIHJhbmdlIGlzIHByb3Zpc2lvbmVkIHVzaW5nIElQQU1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBWUENDaWRyQmxvY2tcbiAqL1xuaW50ZXJmYWNlIFZQQ0NpZHJCbG9ja1Byb3BzIGV4dGVuZHMgVlBDQ2lkckJsb2NrYXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIElkIGZvciBhc3NvY2lhdGluZyBDSURSIEJsb2NrIGFzIGEgc2Vjb25kYXJ5IGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgTDIgdG8gZGVmaW5lIGEgbmV3IFZQQyBDSURSIEJsb2NrXG4gKiBAaW50ZXJuYWxcbiAqL1xuY2xhc3MgVlBDQ2lkckJsb2NrIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVlBDQ2lkckJsb2NrIHtcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIFZQQyBDSURSIEJsb2NrXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21WUENDaWRyQmxvY2thdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUENDaWRyQmxvY2thdHRyaWJ1dGVzKSA6IElWUENDaWRyQmxvY2sge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVZQQ0NpZHJCbG9jayB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2lkckJsb2NrID0gcHJvcHMuY2lkckJsb2NrO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA/OiBib29sZWFuID0gcHJvcHMuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrOztcbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY2SXBhbVBvb2xJZCA/OiBzdHJpbmcgPSBwcm9wcy5pcHY2SXBhbVBvb2xJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY0SXBhbVBvb2xJZCA/OiBzdHJpbmcgPSBwcm9wcy5pcHY0SXBhbVBvb2xJZDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBDQ2lkckJsb2NrO1xuXG4gIHB1YmxpYyByZWFkb25seSBjaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz86IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IGlwdjZJcGFtUG9vbElkPzogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBpcHY0SXBhbVBvb2xJZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVlBDQ2lkckJsb2NrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVlBDQ2lkckJsb2NrKHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG4gICAgdGhpcy5jaWRyQmxvY2sgPSBwcm9wcy5jaWRyQmxvY2s7XG4gICAgdGhpcy5pcHY2SXBhbVBvb2xJZCA9IHByb3BzLmlwdjZJcGFtUG9vbElkO1xuICAgIHRoaXMuaXB2NElwYW1Qb29sSWQgPSBwcm9wcy5pcHY0SXBhbVBvb2xJZDtcbiAgICB0aGlzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA9IHByb3BzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaztcbiAgfVxufVxuXG4vL0BpbnRlcm5hbCBGaXJzdCB0d28gT2N0ZXQgdG8gdmVyaWZ5IFJGQyAxOTE4XG5pbnRlcmZhY2UgSVBhZGRyZXNzQ29uZmlnIHtcbiAgb2N0ZXQxOiBudW1iZXI7XG4gIG9jdGV0MjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc2Vjb25kYXJ5IElQdjQgYWRkcmVzcyBpcyB3aXRoaW4gdGhlIHNhbWUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlIGFzIHRoZSBwcmltYXJ5IElQdjQgYWRkcmVzcy5cbiAqXG4gKiBAcGFyYW0gY2lkcjEgVGhlIHNlY29uZGFyeSBJUHY0IENJRFIgYmxvY2sgdG8gYmUgdmFsaWRhdGVkLlxuICogQHBhcmFtIGNpZHIyIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayB0byB2YWxpZGF0ZSBhZ2FpbnN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBibG9jayBpcyB3aXRoaW4gdGhlIHNhbWUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlIGFzIHRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jaywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKiBUaGUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlcyBhcmUgZGVmaW5lZCBieSBSRkMgMTkxOCBhcyAxMC4wLjAuMC84LCAxNzIuMTYuMC4wLzEyLCBhbmQgMTkyLjE2OC4wLjAvMTYuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlSXB2NGFkZHJlc3MoY2lkcjE/OiBzdHJpbmcsIGNpZHIyPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghY2lkcjEgfHwgIWNpZHIyKSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYW5kbGUgY2FzZXMgd2hlcmUgQ0lEUiByYW5nZXMgYXJlIG5vdCBwcm92aWRlZFxuICB9XG5cbiAgY29uc3Qgb2N0ZXRzQ2lkcjE6IG51bWJlcltdID0gY2lkcjEuc3BsaXQoJy4nKS5tYXAob2N0ZXQgPT4gcGFyc2VJbnQob2N0ZXQsIDEwKSk7XG4gIGNvbnN0IG9jdGV0c0NpZHIyOiBudW1iZXJbXSA9IGNpZHIyLnNwbGl0KCcuJykubWFwKG9jdGV0ID0+IHBhcnNlSW50KG9jdGV0LCAxMCkpO1xuXG4gIGlmIChvY3RldHNDaWRyMS5sZW5ndGggIT09IDQgfHwgb2N0ZXRzQ2lkcjIubGVuZ3RoICE9PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYW5kbGUgaW52YWxpZCBDSURSIHJhbmdlc1xuICB9XG5cbiAgY29uc3QgaXAxOiBJUGFkZHJlc3NDb25maWcgPSB7XG4gICAgb2N0ZXQxOiBvY3RldHNDaWRyMVswXSxcbiAgICBvY3RldDI6IG9jdGV0c0NpZHIxWzFdLFxuICB9O1xuXG4gIGNvbnN0IGlwMjogSVBhZGRyZXNzQ29uZmlnID0ge1xuICAgIG9jdGV0MTogb2N0ZXRzQ2lkcjJbMF0sXG4gICAgb2N0ZXQyOiBvY3RldHNDaWRyMlsxXSxcbiAgfTtcblxuICByZXR1cm4gKGlwMS5vY3RldDEgPT09IDEwICYmIGlwMi5vY3RldDEgPT09IDEwKSB8fFxuICAgIChpcDEub2N0ZXQxID09PSAxOTIgJiYgaXAxLm9jdGV0MiA9PT0gMTY4ICYmIGlwMi5vY3RldDEgPT09IDE5MiAmJiBpcDIub2N0ZXQyID09PSAxNjgpIHx8XG4gICAgKGlwMS5vY3RldDEgPT09IDE3MiAmJiBpcDEub2N0ZXQyID09PSAxNiAmJiBpcDIub2N0ZXQxID09PSAxNzIgJiYgaXAyLm9jdGV0MiA9PT0gMTYpOyAvLyBDSURSIHJhbmdlcyBiZWxvbmcgdG8gc2FtZSBwcml2YXRlIElQIGFkZHJlc3MgcmFuZ2VzXG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-ec2-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.172.0-alpha.0",
|
|
5
5
|
"description": "The CDK construct library for VPC V2",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -77,17 +77,17 @@
|
|
|
77
77
|
},
|
|
78
78
|
"license": "Apache-2.0",
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
81
|
-
"@aws-cdk/integ-runner": "2.
|
|
82
|
-
"@aws-cdk/integ-tests-alpha": "^2.
|
|
83
|
-
"@aws-cdk/pkglint": "2.
|
|
80
|
+
"@aws-cdk/cdk-build-tools": "2.172.0-alpha.0",
|
|
81
|
+
"@aws-cdk/integ-runner": "2.172.0-alpha.0",
|
|
82
|
+
"@aws-cdk/integ-tests-alpha": "^2.172.0-alpha.0",
|
|
83
|
+
"@aws-cdk/pkglint": "2.172.0-alpha.0",
|
|
84
84
|
"@types/jest": "^29.5.14",
|
|
85
|
-
"aws-cdk-lib": "2.
|
|
85
|
+
"aws-cdk-lib": "2.172.0",
|
|
86
86
|
"jest": "^29.7.0"
|
|
87
87
|
},
|
|
88
88
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
89
89
|
"peerDependencies": {
|
|
90
|
-
"aws-cdk-lib": "^2.
|
|
90
|
+
"aws-cdk-lib": "^2.172.0",
|
|
91
91
|
"constructs": "^10.0.0"
|
|
92
92
|
},
|
|
93
93
|
"separate-module": false,
|