@aws-cdk/aws-imagebuilder-alpha 2.261.0-alpha.0 → 2.262.1-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 +93 -6
- package/.jsii.tabl.json.gz +0 -0
- package/lib/amazon-managed-component.js +1 -1
- package/lib/amazon-managed-image.js +1 -1
- package/lib/amazon-managed-workflow.js +1 -1
- package/lib/base-image.js +3 -3
- package/lib/component.js +7 -7
- package/lib/container-recipe.js +4 -4
- package/lib/distribution-configuration.js +2 -2
- package/lib/image-pipeline.js +7 -2
- package/lib/image-recipe.js +1 -1
- package/lib/image.js +7 -2
- package/lib/infrastructure-configuration.js +1 -1
- package/lib/lifecycle-policy.js +1 -1
- package/lib/os-version.js +1 -1
- package/lib/recipe-base.js +1 -1
- package/lib/workflow.js +4 -4
- package/package.json +8 -8
package/.jsii
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"yaml": "1.10.3"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"aws-cdk-lib": "^2.
|
|
14
|
+
"aws-cdk-lib": "^2.262.1",
|
|
15
15
|
"constructs": "^10.5.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencyClosure": {
|
|
@@ -1153,6 +1153,19 @@
|
|
|
1153
1153
|
}
|
|
1154
1154
|
}
|
|
1155
1155
|
},
|
|
1156
|
+
"aws-cdk-lib.aws_controlcatalog": {
|
|
1157
|
+
"targets": {
|
|
1158
|
+
"dotnet": {
|
|
1159
|
+
"namespace": "Amazon.CDK.AWS.ControlCatalog"
|
|
1160
|
+
},
|
|
1161
|
+
"java": {
|
|
1162
|
+
"package": "software.amazon.awscdk.services.controlcatalog"
|
|
1163
|
+
},
|
|
1164
|
+
"python": {
|
|
1165
|
+
"module": "aws_cdk.aws_controlcatalog"
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
},
|
|
1156
1169
|
"aws-cdk-lib.aws_controltower": {
|
|
1157
1170
|
"targets": {
|
|
1158
1171
|
"dotnet": {
|
|
@@ -1205,6 +1218,19 @@
|
|
|
1205
1218
|
}
|
|
1206
1219
|
}
|
|
1207
1220
|
},
|
|
1221
|
+
"aws-cdk-lib.aws_dataexchange": {
|
|
1222
|
+
"targets": {
|
|
1223
|
+
"dotnet": {
|
|
1224
|
+
"namespace": "Amazon.CDK.AWS.DataExchange"
|
|
1225
|
+
},
|
|
1226
|
+
"java": {
|
|
1227
|
+
"package": "software.amazon.awscdk.services.dataexchange"
|
|
1228
|
+
},
|
|
1229
|
+
"python": {
|
|
1230
|
+
"module": "aws_cdk.aws_dataexchange"
|
|
1231
|
+
}
|
|
1232
|
+
}
|
|
1233
|
+
},
|
|
1208
1234
|
"aws-cdk-lib.aws_datapipeline": {
|
|
1209
1235
|
"targets": {
|
|
1210
1236
|
"dotnet": {
|
|
@@ -3018,6 +3044,19 @@
|
|
|
3018
3044
|
}
|
|
3019
3045
|
}
|
|
3020
3046
|
},
|
|
3047
|
+
"aws-cdk-lib.aws_outposts": {
|
|
3048
|
+
"targets": {
|
|
3049
|
+
"dotnet": {
|
|
3050
|
+
"namespace": "Amazon.CDK.AWS.Outposts"
|
|
3051
|
+
},
|
|
3052
|
+
"java": {
|
|
3053
|
+
"package": "software.amazon.awscdk.services.outposts"
|
|
3054
|
+
},
|
|
3055
|
+
"python": {
|
|
3056
|
+
"module": "aws_cdk.aws_outposts"
|
|
3057
|
+
}
|
|
3058
|
+
}
|
|
3059
|
+
},
|
|
3021
3060
|
"aws-cdk-lib.aws_panorama": {
|
|
3022
3061
|
"targets": {
|
|
3023
3062
|
"dotnet": {
|
|
@@ -5467,6 +5506,22 @@
|
|
|
5467
5506
|
}
|
|
5468
5507
|
}
|
|
5469
5508
|
},
|
|
5509
|
+
"aws-cdk-lib.interfaces.aws_controlcatalog": {
|
|
5510
|
+
"targets": {
|
|
5511
|
+
"dotnet": {
|
|
5512
|
+
"namespace": "Amazon.CDK.Interfaces.ControlCatalog"
|
|
5513
|
+
},
|
|
5514
|
+
"go": {
|
|
5515
|
+
"packageName": "interfacesawscontrolcatalog"
|
|
5516
|
+
},
|
|
5517
|
+
"java": {
|
|
5518
|
+
"package": "software.amazon.awscdk.interfaces.controlcatalog"
|
|
5519
|
+
},
|
|
5520
|
+
"python": {
|
|
5521
|
+
"module": "aws_cdk.interfaces.aws_controlcatalog"
|
|
5522
|
+
}
|
|
5523
|
+
}
|
|
5524
|
+
},
|
|
5470
5525
|
"aws-cdk-lib.interfaces.aws_controltower": {
|
|
5471
5526
|
"targets": {
|
|
5472
5527
|
"dotnet": {
|
|
@@ -5531,6 +5586,22 @@
|
|
|
5531
5586
|
}
|
|
5532
5587
|
}
|
|
5533
5588
|
},
|
|
5589
|
+
"aws-cdk-lib.interfaces.aws_dataexchange": {
|
|
5590
|
+
"targets": {
|
|
5591
|
+
"dotnet": {
|
|
5592
|
+
"namespace": "Amazon.CDK.Interfaces.DataExchange"
|
|
5593
|
+
},
|
|
5594
|
+
"go": {
|
|
5595
|
+
"packageName": "interfacesawsdataexchange"
|
|
5596
|
+
},
|
|
5597
|
+
"java": {
|
|
5598
|
+
"package": "software.amazon.awscdk.interfaces.dataexchange"
|
|
5599
|
+
},
|
|
5600
|
+
"python": {
|
|
5601
|
+
"module": "aws_cdk.interfaces.aws_dataexchange"
|
|
5602
|
+
}
|
|
5603
|
+
}
|
|
5604
|
+
},
|
|
5534
5605
|
"aws-cdk-lib.interfaces.aws_datapipeline": {
|
|
5535
5606
|
"targets": {
|
|
5536
5607
|
"dotnet": {
|
|
@@ -7547,6 +7618,22 @@
|
|
|
7547
7618
|
}
|
|
7548
7619
|
}
|
|
7549
7620
|
},
|
|
7621
|
+
"aws-cdk-lib.interfaces.aws_outposts": {
|
|
7622
|
+
"targets": {
|
|
7623
|
+
"dotnet": {
|
|
7624
|
+
"namespace": "Amazon.CDK.Interfaces.Outposts"
|
|
7625
|
+
},
|
|
7626
|
+
"go": {
|
|
7627
|
+
"packageName": "interfacesawsoutposts"
|
|
7628
|
+
},
|
|
7629
|
+
"java": {
|
|
7630
|
+
"package": "software.amazon.awscdk.interfaces.outposts"
|
|
7631
|
+
},
|
|
7632
|
+
"python": {
|
|
7633
|
+
"module": "aws_cdk.interfaces.aws_outposts"
|
|
7634
|
+
}
|
|
7635
|
+
}
|
|
7636
|
+
},
|
|
7550
7637
|
"aws-cdk-lib.interfaces.aws_panorama": {
|
|
7551
7638
|
"targets": {
|
|
7552
7639
|
"dotnet": {
|
|
@@ -14889,7 +14976,7 @@
|
|
|
14889
14976
|
},
|
|
14890
14977
|
"locationInModule": {
|
|
14891
14978
|
"filename": "core/lib/resource.ts",
|
|
14892
|
-
"line":
|
|
14979
|
+
"line": 125
|
|
14893
14980
|
},
|
|
14894
14981
|
"parameters": [
|
|
14895
14982
|
{
|
|
@@ -18546,7 +18633,7 @@
|
|
|
18546
18633
|
},
|
|
18547
18634
|
"locationInModule": {
|
|
18548
18635
|
"filename": "lib/image-pipeline.ts",
|
|
18549
|
-
"line":
|
|
18636
|
+
"line": 719
|
|
18550
18637
|
},
|
|
18551
18638
|
"name": "grantDefaultExecutionRolePermissions",
|
|
18552
18639
|
"overrides": "@aws-cdk/aws-imagebuilder-alpha.IImagePipeline",
|
|
@@ -18968,7 +19055,7 @@
|
|
|
18968
19055
|
"immutable": true,
|
|
18969
19056
|
"locationInModule": {
|
|
18970
19057
|
"filename": "lib/image-pipeline.ts",
|
|
18971
|
-
"line":
|
|
19058
|
+
"line": 704
|
|
18972
19059
|
},
|
|
18973
19060
|
"name": "imagePipelineArn",
|
|
18974
19061
|
"overrides": "@aws-cdk/aws-imagebuilder-alpha.IImagePipeline",
|
|
@@ -18984,7 +19071,7 @@
|
|
|
18984
19071
|
"immutable": true,
|
|
18985
19072
|
"locationInModule": {
|
|
18986
19073
|
"filename": "lib/image-pipeline.ts",
|
|
18987
|
-
"line":
|
|
19074
|
+
"line": 699
|
|
18988
19075
|
},
|
|
18989
19076
|
"name": "imagePipelineName",
|
|
18990
19077
|
"overrides": "@aws-cdk/aws-imagebuilder-alpha.IImagePipeline",
|
|
@@ -25150,6 +25237,6 @@
|
|
|
25150
25237
|
"symbolId": "lib/workflow:WorkflowType"
|
|
25151
25238
|
}
|
|
25152
25239
|
},
|
|
25153
|
-
"version": "2.
|
|
25240
|
+
"version": "2.262.1-alpha.0",
|
|
25154
25241
|
"fingerprint": "**********"
|
|
25155
25242
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
|
@@ -45,7 +45,7 @@ const constants_1 = require("./private/constants");
|
|
|
45
45
|
* Helper class for working with Amazon-managed components
|
|
46
46
|
*/
|
|
47
47
|
class AmazonManagedComponent {
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedComponent", version: "2.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedComponent", version: "2.262.1-alpha.0" };
|
|
49
49
|
/**
|
|
50
50
|
* Imports the AWS CLI v2 Amazon-managed component
|
|
51
51
|
*
|
|
@@ -44,7 +44,7 @@ const constants_1 = require("./private/constants");
|
|
|
44
44
|
* Helper class for working with Amazon-managed images
|
|
45
45
|
*/
|
|
46
46
|
class AmazonManagedImage {
|
|
47
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedImage", version: "2.
|
|
47
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedImage", version: "2.262.1-alpha.0" };
|
|
48
48
|
/**
|
|
49
49
|
* Imports the Amazon Linux 2 Amazon-managed image
|
|
50
50
|
*
|
|
@@ -44,7 +44,7 @@ const workflow_1 = require("./workflow");
|
|
|
44
44
|
* Helper class for working with Amazon-managed workflows
|
|
45
45
|
*/
|
|
46
46
|
class AmazonManagedWorkflow {
|
|
47
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedWorkflow", version: "2.
|
|
47
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedWorkflow", version: "2.262.1-alpha.0" };
|
|
48
48
|
/**
|
|
49
49
|
* Imports the build-container Amazon-managed workflow
|
|
50
50
|
*
|
package/lib/base-image.js
CHANGED
|
@@ -7,7 +7,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
7
7
|
* Represents a base image that is used to start from in EC2 Image Builder image builds
|
|
8
8
|
*/
|
|
9
9
|
class BaseImage {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.BaseImage", version: "2.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.BaseImage", version: "2.262.1-alpha.0" };
|
|
11
11
|
/**
|
|
12
12
|
* The AMI ID to use as a base image in an image recipe
|
|
13
13
|
*
|
|
@@ -79,7 +79,7 @@ exports.BaseImage = BaseImage;
|
|
|
79
79
|
* Represents a base image that is used to start from in EC2 Image Builder image builds
|
|
80
80
|
*/
|
|
81
81
|
class BaseContainerImage {
|
|
82
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.BaseContainerImage", version: "2.
|
|
82
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.BaseContainerImage", version: "2.262.1-alpha.0" };
|
|
83
83
|
/**
|
|
84
84
|
* The DockerHub image to use as the base image in a container recipe
|
|
85
85
|
*
|
|
@@ -148,7 +148,7 @@ exports.BaseContainerImage = BaseContainerImage;
|
|
|
148
148
|
* EC2 Image Builder container build.
|
|
149
149
|
*/
|
|
150
150
|
class ContainerInstanceImage {
|
|
151
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerInstanceImage", version: "2.
|
|
151
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerInstanceImage", version: "2.262.1-alpha.0" };
|
|
152
152
|
/**
|
|
153
153
|
* The AMI ID to use to launch the instance for building the container image
|
|
154
154
|
*
|
package/lib/component.js
CHANGED
|
@@ -84,7 +84,7 @@ const LATEST_VERSION = 'x.x.x';
|
|
|
84
84
|
* The value of a constant in a component document
|
|
85
85
|
*/
|
|
86
86
|
class ComponentConstantValue {
|
|
87
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentConstantValue", version: "2.
|
|
87
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentConstantValue", version: "2.262.1-alpha.0" };
|
|
88
88
|
/**
|
|
89
89
|
* Creates a string type constant in a component document
|
|
90
90
|
*
|
|
@@ -301,7 +301,7 @@ var ComponentSchemaVersion;
|
|
|
301
301
|
* Represents the inputs for a step in the component document
|
|
302
302
|
*/
|
|
303
303
|
class ComponentStepInputs {
|
|
304
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepInputs", version: "2.
|
|
304
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepInputs", version: "2.262.1-alpha.0" };
|
|
305
305
|
/**
|
|
306
306
|
* Creates the input value from an object, for the component step
|
|
307
307
|
*
|
|
@@ -331,7 +331,7 @@ exports.ComponentStepInputs = ComponentStepInputs;
|
|
|
331
331
|
* Represents an `if` condition in the component document
|
|
332
332
|
*/
|
|
333
333
|
class ComponentStepIfCondition {
|
|
334
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepIfCondition", version: "2.
|
|
334
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepIfCondition", version: "2.262.1-alpha.0" };
|
|
335
335
|
/**
|
|
336
336
|
* Creates the `if` value from an object, for the component step
|
|
337
337
|
*
|
|
@@ -353,7 +353,7 @@ exports.ComponentStepIfCondition = ComponentStepIfCondition;
|
|
|
353
353
|
* Helper class for referencing and uploading component data
|
|
354
354
|
*/
|
|
355
355
|
class ComponentData {
|
|
356
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentData", version: "2.
|
|
356
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentData", version: "2.262.1-alpha.0" };
|
|
357
357
|
/**
|
|
358
358
|
* Uploads component data from a local file to S3 to use as the component data
|
|
359
359
|
*
|
|
@@ -440,7 +440,7 @@ exports.ComponentData = ComponentData;
|
|
|
440
440
|
* Helper class for S3-based component data references, containing additional permission grant methods on the S3 object
|
|
441
441
|
*/
|
|
442
442
|
class S3ComponentData extends ComponentData {
|
|
443
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3ComponentData", version: "2.
|
|
443
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3ComponentData", version: "2.262.1-alpha.0" };
|
|
444
444
|
bucket;
|
|
445
445
|
key;
|
|
446
446
|
constructor(bucket, key) {
|
|
@@ -501,7 +501,7 @@ class S3ComponentDataFromAsset extends S3ComponentData {
|
|
|
501
501
|
* Helper class for working with AWS Marketplace components
|
|
502
502
|
*/
|
|
503
503
|
class AwsMarketplaceComponent {
|
|
504
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AwsMarketplaceComponent", version: "2.
|
|
504
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AwsMarketplaceComponent", version: "2.262.1-alpha.0" };
|
|
505
505
|
/**
|
|
506
506
|
* Imports an AWS Marketplace component from its attributes
|
|
507
507
|
*
|
|
@@ -587,7 +587,7 @@ let Component = (() => {
|
|
|
587
587
|
Component = _classThis = _classDescriptor.value;
|
|
588
588
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
589
589
|
}
|
|
590
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Component", version: "2.
|
|
590
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Component", version: "2.262.1-alpha.0" };
|
|
591
591
|
/** Uniquely identifies this class. */
|
|
592
592
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Component';
|
|
593
593
|
/**
|
package/lib/container-recipe.js
CHANGED
|
@@ -106,7 +106,7 @@ var ContainerType;
|
|
|
106
106
|
* Helper class for referencing and uploading dockerfile data for the container recipe
|
|
107
107
|
*/
|
|
108
108
|
class DockerfileData {
|
|
109
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DockerfileData", version: "2.
|
|
109
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DockerfileData", version: "2.262.1-alpha.0" };
|
|
110
110
|
/**
|
|
111
111
|
* Uploads dockerfile data from a local file to S3 to use as the dockerfile data
|
|
112
112
|
*
|
|
@@ -142,7 +142,7 @@ exports.DockerfileData = DockerfileData;
|
|
|
142
142
|
* Helper class for S3-based dockerfile data references, containing additional permission grant methods on the S3 object
|
|
143
143
|
*/
|
|
144
144
|
class S3DockerfileData extends DockerfileData {
|
|
145
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3DockerfileData", version: "2.
|
|
145
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3DockerfileData", version: "2.262.1-alpha.0" };
|
|
146
146
|
bucket;
|
|
147
147
|
key;
|
|
148
148
|
constructor(bucket, key) {
|
|
@@ -203,7 +203,7 @@ class S3DockerfileDataFromAsset extends S3DockerfileData {
|
|
|
203
203
|
* A new or imported Container Recipe
|
|
204
204
|
*/
|
|
205
205
|
class ContainerRecipeBase extends cdk.Resource {
|
|
206
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipeBase", version: "2.
|
|
206
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipeBase", version: "2.262.1-alpha.0" };
|
|
207
207
|
/**
|
|
208
208
|
* Grant custom actions to the given grantee for the container recipe
|
|
209
209
|
* [disable-awslint:no-grants]
|
|
@@ -278,7 +278,7 @@ let ContainerRecipe = (() => {
|
|
|
278
278
|
ContainerRecipe = _classThis = _classDescriptor.value;
|
|
279
279
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
280
280
|
}
|
|
281
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipe", version: "2.
|
|
281
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipe", version: "2.262.1-alpha.0" };
|
|
282
282
|
/** Uniquely identifies this class. */
|
|
283
283
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ContainerRecipe';
|
|
284
284
|
/**
|
|
@@ -122,7 +122,7 @@ var RepositoryService;
|
|
|
122
122
|
* A container repository used to distribute container images in EC2 Image Builder
|
|
123
123
|
*/
|
|
124
124
|
class Repository {
|
|
125
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Repository", version: "2.
|
|
125
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Repository", version: "2.262.1-alpha.0" };
|
|
126
126
|
/**
|
|
127
127
|
* The ECR repository to use as the target container repository
|
|
128
128
|
*
|
|
@@ -169,7 +169,7 @@ let DistributionConfiguration = (() => {
|
|
|
169
169
|
DistributionConfiguration = _classThis = _classDescriptor.value;
|
|
170
170
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
171
171
|
}
|
|
172
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration", version: "2.
|
|
172
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration", version: "2.262.1-alpha.0" };
|
|
173
173
|
/** Uniquely identifies this class. */
|
|
174
174
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.DistributionConfiguration';
|
|
175
175
|
/**
|
package/lib/image-pipeline.js
CHANGED
|
@@ -326,7 +326,7 @@ let ImagePipeline = (() => {
|
|
|
326
326
|
ImagePipeline = _classThis = _classDescriptor.value;
|
|
327
327
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
328
328
|
}
|
|
329
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.
|
|
329
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.262.1-alpha.0" };
|
|
330
330
|
/** Uniquely identifies this class. */
|
|
331
331
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImagePipeline';
|
|
332
332
|
/**
|
|
@@ -422,6 +422,11 @@ let ImagePipeline = (() => {
|
|
|
422
422
|
workflows: (0, image_and_pipeline_props_helper_1.buildWorkflows)(props),
|
|
423
423
|
tags: props.tags,
|
|
424
424
|
});
|
|
425
|
+
// https://github.com/aws-cloudformation/cloudformation-validate/issues/186
|
|
426
|
+
cdk.Validations.of(imagePipeline).acknowledge({
|
|
427
|
+
id: 'CloudFormation-Validate::W3030',
|
|
428
|
+
reason: 'OnFailure "Abort" is a valid value that works, leaving it for legacy reasons.',
|
|
429
|
+
});
|
|
425
430
|
this.resource = imagePipeline;
|
|
426
431
|
}
|
|
427
432
|
get imagePipelineName() {
|
|
@@ -509,4 +514,4 @@ let ImagePipeline = (() => {
|
|
|
509
514
|
return ImagePipeline = _classThis;
|
|
510
515
|
})();
|
|
511
516
|
exports.ImagePipeline = ImagePipeline;
|
|
512
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFFbkMsK0RBQWlEO0FBQ2pELHlEQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsNEVBQTRFO0FBQzVFLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFJMUUsaUZBQTZFO0FBQzdFLCtGQUltRDtBQUNuRCwyREFBdUY7QUFJdkYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUF1UzFGOztHQUVHO0FBQ0gsSUFBWSxzQkFXWDtBQVhELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gseUVBQStDLENBQUE7SUFFL0M7OztPQUdHO0lBQ0gsaUlBQXVHLENBQUE7QUFDekcsQ0FBQyxFQVhXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBV2pDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCwwQ0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILDRDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQVU5QjtBQUVEOztHQUVHO0FBQ0gsTUFBZSxpQkFBa0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVduRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3JDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEtB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dHlwZSAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkltYWdlUGlwZWxpbmUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCB0eXBlICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciwgbGl0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJztcbmltcG9ydCB0eXBlIHsgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtcbiAgYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbixcbiAgYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbixcbiAgYnVpbGRXb3JrZmxvd3MsXG59IGZyb20gJy4vcHJpdmF0ZS9pbWFnZS1hbmQtcGlwZWxpbmUtcHJvcHMtaGVscGVyJztcbmltcG9ydCB7IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5LCBnZXRFeGVjdXRpb25Sb2xlIH0gZnJvbSAnLi9wcml2YXRlL3BvbGljeS1oZWxwZXInO1xuaW1wb3J0IHR5cGUgeyBJUmVjaXBlQmFzZSB9IGZyb20gJy4vcmVjaXBlLWJhc2UnO1xuaW1wb3J0IHR5cGUgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3dvcmtmbG93JztcblxuY29uc3QgSU1BR0VfUElQRUxJTkVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlUGlwZWxpbmUgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W107XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRTdGFydEV4ZWN1dGlvbihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uRXZlbnQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uQ1ZFRGV0ZWN0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3RhdGUgY2hhbmdlIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGNvbXBsZXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGZhaWx1cmUgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3VjY2VlZGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZVBpcGVsaW5lQXV0b0Rpc2FibGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uV2FpdEZvckFjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW1hZ2UgUGlwZWxpbmUgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlY2lwZSB0aGF0IGRlZmluZXMgdGhlIGJhc2UgaW1hZ2UsIGNvbXBvbmVudHMsIGFuZCBjdXN0b21pemF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4gVGhpcyBjYW4gZWl0aGVyIGJlXG4gICAqIGFuIGltYWdlIHJlY2lwZSwgb3IgYSBjb250YWluZXIgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlOiBJUmVjaXBlQmFzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9mIHRoZSBpbWFnZSBwaXBlbGluZS4gVGhpcyBjb25maWd1cmVzIGhvdyBvZnRlbiBhbmQgd2hlbiBhIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIG5ld1xuICAgKiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lLCBhIG1hbnVhbCBpbWFnZSBwaXBlbGluZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogSW1hZ2VQaXBlbGluZVNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IEltYWdlUGlwZWxpbmVTdGF0dXMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogSW1hZ2VQaXBlbGluZVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBBIGRlZmF1bHQgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBwcm9maWxlIGFuZCByb2xlIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlXG4gICAqIGltYWdlLCBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbj86IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB1c2VkIGZvciBkaXN0cmlidXRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uPzogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgYSBkZWZhdWx0IHNldCBvZiB3b3JrZmxvd3MgZm9yIHRoZSBidWlsZCB0byBidWlsZCwgdGVzdCwgYW5kIGRpc3RyaWJ1dGUgdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgdG8gcGVyZm9ybSB3b3JrZmxvdyBhY3Rpb25zIHRvIGJ1aWxkIHRoaXMgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgcGlwZWxpbmUsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyL3BpcGVsaW5lLzxwaXBlbGluZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVMb2dHcm91cD86IGxvZ3MuSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIHVzZSBmb3IgaW1hZ2VzIGNyZWF0ZWQgZnJvbSB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZVxuICAgKiBmb3JtYXQgYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBzY2hlZHVsZSBzZXR0aW5ncyBmb3IgdGhlIGltYWdlIHBpcGVsaW5lLCB3aGljaCBkZWZpbmVzIHdoZW4gYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQaXBlbGluZVNjaGVkdWxlIHtcbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZSBleHByZXNzaW9uIHRvIHVzZS4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgY3JvbiBleHByZXNzaW9uIG9yIGEgcmF0ZSBleHByZXNzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwcmVzc2lvbjogZXZlbnRzLlNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWx1cmVzIGFsbG93ZWQgYmVmb3JlIHRoZSBwaXBlbGluZSBpcyBhdXRvbWF0aWNhbGx5IGRpc2FibGVkLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogYmV0d2VlbiAxIGFuZCAxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhdXRvLWRpc2FibGUgcG9saWN5IGlzIGNvbmZpZ3VyZWQgYW5kIHRoZSBwaXBlbGluZSBpcyBub3QgYXV0b21hdGljYWxseSBkaXNhYmxlZCBvbiBjb25zZWN1dGl2ZVxuICAgKiBmYWlsdXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBjb25kaXRpb24gZm9yIHRoZSBwaXBlbGluZSwgaW5kaWNhdGluZyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGEgcGlwZWxpbmUgc2hvdWxkIGJlIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU2NoZWR1bGVTdGFydENvbmRpdGlvbi5FWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFXG4gICAqL1xuICByZWFkb25seSBzdGFydENvbmRpdGlvbj86IFNjaGVkdWxlU3RhcnRDb25kaXRpb247XG59XG5cbi8qKlxuICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICovXG5leHBvcnQgZW51bSBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldFxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9PTkxZID0gJ0VYUFJFU1NJT05fTUFUQ0hfT05MWScsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldCwgYW5kIHRoZXJlIGFyZSBtYXRjaGluZyBkZXBlbmRlbmN5IHVwZGF0ZXMgYXZhaWxhYmxlLFxuICAgKiBzdWNoIGFzIG5ldyB2ZXJzaW9ucyBvZiBjb21wb25lbnRzIG9yIGltYWdlcyB0byB1c2UgaW4gdGhlIHBpcGVsaW5lIGJ1aWxkLlxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9BTkRfREVQRU5ERU5DWV9VUERBVEVTX0FWQUlMQUJMRSA9ICdFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFJyxcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlUGlwZWxpbmVTdGF0dXMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGVuYWJsZWQgZm9yIHNjaGVkdWxpbmdcbiAgICovXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBwaXBlbGluZSBpcyBkaXNhYmxlZCBhbmQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIG9uIHRoZSBzY2hlZHVsZVxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlIFBpcGVsaW5lXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlUGlwZWxpbmVCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUltYWdlUGlwZWxpbmUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgcHVibGljIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdIHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5KHRoaXMpO1xuICAgIHJldHVybiBwb2xpY2llcy5tYXAoKHBvbGljeSkgPT5cbiAgICAgIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICAgIHJlc291cmNlQXJuczogcG9saWN5LnJlc291cmNlcyxcbiAgICAgICAgYWN0aW9uczogcG9saWN5LmFjdGlvbnMsXG4gICAgICAgIGNvbmRpdGlvbnM6IHBvbGljeS5jb25kaXRpb25zLFxuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlUGlwZWxpbmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSB0byBzdGFydCBhbiBleGVjdXRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRTdGFydEV4ZWN1dGlvbihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpTdGFydEltYWdlUGlwZWxpbmVFeGVjdXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uRXZlbnQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgY29uc3QgcnVsZSA9IG5ldyBldmVudHMuUnVsZSh0aGlzLCBpZCwgb3B0aW9ucyk7XG4gICAgcnVsZS5hZGRUYXJnZXQob3B0aW9ucy50YXJnZXQpO1xuICAgIHJ1bGUuYWRkRXZlbnRQYXR0ZXJuKHtcbiAgICAgIHNvdXJjZTogWydhd3MuaW1hZ2VidWlsZGVyJ10sXG4gICAgICAuLi4ob3B0aW9ucy5ldmVudFBhdHRlcm4/LnJlc291cmNlcz8ubGVuZ3RoICYmIHsgcmVzb3VyY2VzOiBvcHRpb25zLmV2ZW50UGF0dGVybi5yZXNvdXJjZXMgfSksXG4gICAgICAuLi4ob3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbFR5cGU/Lmxlbmd0aCAmJiB7IGRldGFpbFR5cGU6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbFR5cGUgfSksXG4gICAgICAuLi4ob3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCAhPT0gdW5kZWZpbmVkICYmIHsgZGV0YWlsOiBvcHRpb25zLmV2ZW50UGF0dGVybi5kZXRhaWwgfSksXG4gICAgfSk7XG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIENWRSBkZXRlY3RlZCBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25DVkVEZXRlY3RlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkV2ZW50KGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIENWRSBEZXRlY3RlZCddLFxuICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmltYWdlUGlwZWxpbmVBcm5dLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3RhdGUgY2hhbmdlIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkV2ZW50KGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLCBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFN0YXRlIENoYW5nZSddIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGNvbXBsZXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZENvbXBsZXRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnLCAnQ0FOQ0VMTEVEJywgJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGZhaWx1cmUgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZEZhaWxlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydGQUlMRUQnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdWNjZXNzIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlQnVpbGRTdWNjZWVkZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25JbWFnZUJ1aWxkU3RhdGVDaGFuZ2UoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbDogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsLCBzdGF0ZTogeyBzdGF0dXM6IFsnQVZBSUxBQkxFJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgcGlwZWxpbmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZVBpcGVsaW5lQXV0b0Rpc2FibGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZSBBdXRvbWF0aWNhbGx5IERpc2FibGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciB3YWl0IGZvciBhY3Rpb24gZXZlbnRzXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25XYWl0Rm9yQWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgV29ya2Zsb3cgU3RlcCBXYWl0aW5nJ10gfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUGlwZWxpbmUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvbWFuYWdlLXBpcGVsaW5lcy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBJbWFnZVBpcGVsaW5lIGV4dGVuZHMgSW1hZ2VQaXBlbGluZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW1hZ2VQaXBlbGluZSc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBwaXBlbGluZSBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VQaXBlbGluZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZVBpcGVsaW5lQXJuOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgY29uc3QgaW1hZ2VQaXBlbGluZU5hbWUgPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAgaW1hZ2VQaXBlbGluZUFybixcbiAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybiA9IGltYWdlUGlwZWxpbmVBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZU5hbWUgPSBpbWFnZVBpcGVsaW5lTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBwaXBlbGluZSBnaXZlbiBpdHMgbmFtZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsXG4gICAqIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nKTogSUltYWdlUGlwZWxpbmUge1xuICAgIHJldHVybiB0aGlzLmZyb21JbWFnZVBpcGVsaW5lQXJuKFxuICAgICAgc2NvcGUsXG4gICAgICBpZCxcbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnaW1hZ2UtcGlwZWxpbmUnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGltYWdlUGlwZWxpbmVOYW1lLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIEltYWdlUGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzSW1hZ2VQaXBlbGluZSh4OiBhbnkpOiB4IGlzIEltYWdlUGlwZWxpbmUge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBJTUFHRV9QSVBFTElORV9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb246IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuIElmIHRoZXJlIGlzIG5vIGV4ZWN1dGlvbiByb2xlLCB0aGVuIHRoZSBidWlsZCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGhcbiAgICogdGhlIEFXU1NlcnZpY2VSb2xlRm9ySW1hZ2VCdWlsZGVyIHNlcnZpY2UtbGlua2VkIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IENmbkltYWdlUGlwZWxpbmU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuaW1hZ2VQaXBlbGluZU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElNQUdFX1BJUEVMSU5FX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPVxuICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID8/IG5ldyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcywgJ0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiBwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YFJlY2lwZUNhbm5vdEJlQm90aGAsICd0aGUgcmVjaXBlIGNhbm5vdCBiZSBib3RoIGFuIElJbWFnZVJlY2lwZSBhbmQgYW4gSUNvbnRhaW5lclJlY2lwZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICghcHJvcHMucmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkgJiYgIXByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YFJlY2lwZVJlcXVpcmVkYCwgJ3RoZSByZWNpcGUgbXVzdCBlaXRoZXIgYmUgYW4gSUltYWdlUmVjaXBlIG9yIElDb250YWluZXJSZWNpcGUnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbWFnZVBpcGVsaW5lID0gbmV3IENmbkltYWdlUGlwZWxpbmUodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAuLi4ocHJvcHMucmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkgJiYgeyBpbWFnZVJlY2lwZUFybjogcHJvcHMucmVjaXBlLmltYWdlUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSAmJiB7IGNvbnRhaW5lclJlY2lwZUFybjogcHJvcHMucmVjaXBlLmNvbnRhaW5lclJlY2lwZUFybiB9KSxcbiAgICAgIC4uLihwcm9wcy5zdGF0dXMgIT09IHVuZGVmaW5lZCAmJiB7IHN0YXR1czogcHJvcHMuc3RhdHVzIH0pLFxuICAgICAgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuOiB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuOiBwcm9wcy5kaXN0cmlidXRpb25Db25maWd1cmF0aW9uPy5kaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuLFxuICAgICAgZW5oYW5jZWRJbWFnZU1ldGFkYXRhRW5hYmxlZDogcHJvcHMuZW5oYW5jZWRJbWFnZU1ldGFkYXRhRW5hYmxlZCxcbiAgICAgIGV4ZWN1dGlvblJvbGU6IHRoaXMuZXhlY3V0aW9uUm9sZT8ucm9sZUFybixcbiAgICAgIHNjaGVkdWxlOiB0aGlzLmJ1aWxkU2NoZWR1bGUocHJvcHMpLFxuICAgICAgbG9nZ2luZ0NvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRMb2dnaW5nQ29uZmlndXJhdGlvbihwcm9wcyksXG4gICAgICBpbWFnZVRlc3RzQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQaXBlbGluZVByb3BzLFxuICAgICAgICBDZm5JbWFnZVBpcGVsaW5lLkltYWdlVGVzdHNDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4ocHJvcHMpLFxuICAgICAgaW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb246IGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb248XG4gICAgICAgIEltYWdlUGlwZWxpbmVQcm9wcyxcbiAgICAgICAgQ2ZuSW1hZ2VQaXBlbGluZS5JbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvblByb3BlcnR5XG4gICAgICA+KHRoaXMsIHByb3BzKSxcbiAgICAgIHdvcmtmbG93czogYnVpbGRXb3JrZmxvd3M8SW1hZ2VQaXBlbGluZVByb3BzLCBDZm5JbWFnZVBpcGVsaW5lLldvcmtmbG93Q29uZmlndXJhdGlvblByb3BlcnR5W10+KHByb3BzKSxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gaW1hZ2VQaXBlbGluZTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGltYWdlUGlwZWxpbmVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ck5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VQaXBlbGluZUFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2ltYWdlLXBpcGVsaW5lJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdIHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5KHRoaXMsIHRoaXMucHJvcHMpO1xuICAgIHJldHVybiBwb2xpY2llcy5tYXAoKHBvbGljeSkgPT5cbiAgICAgIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICAgIHJlc291cmNlQXJuczogcG9saWN5LnJlc291cmNlcyxcbiAgICAgICAgYWN0aW9uczogcG9saWN5LmFjdGlvbnMsXG4gICAgICAgIGNvbmRpdGlvbnM6IHBvbGljeS5jb25kaXRpb25zLFxuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW1hZ2VQaXBlbGluZU5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBJbWFnZVBpcGVsaW5lTmFtZVRvb0xvbmdgLCAnVGhlIGltYWdlUGlwZWxpbmVOYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnICcpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW1hZ2VQaXBlbGluZU5hbWVOb1NwYWNlc2AsICdUaGUgaW1hZ2VQaXBlbGluZU5hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBJbWFnZVBpcGVsaW5lTmFtZU5vVW5kZXJzY29yZXNgLCAnVGhlIGltYWdlUGlwZWxpbmVOYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW1hZ2VQaXBlbGluZU5hbWVNdXN0QmVMb3dlcmNhc2VgLCAnVGhlIGltYWdlUGlwZWxpbmVOYW1lIG11c3QgYmUgbG93ZXJjYXNlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNjaGVkdWxlKHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMpOiBDZm5JbWFnZVBpcGVsaW5lLlNjaGVkdWxlUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNjaGVkdWxlID0gcHJvcHMuc2NoZWR1bGU7XG4gICAgaWYgKCFzY2hlZHVsZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgIT09IHVuZGVmaW5lZCAmJiAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCkpIHtcbiAgICAgIGlmIChzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCA8IDEgfHwgc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgPiAxMCkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgQXV0b0Rpc2FibGVGYWlsdXJlQ291bnRPdXRPZlJhbmdlYCwgJ3RoZSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBzY2hlZHVsZS5leHByZXNzaW9uLmV4cHJlc3Npb25TdHJpbmcsXG4gICAgICAuLi4oc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIGF1dG9EaXNhYmxlUG9saWN5OiB7XG4gICAgICAgICAgZmFpbHVyZUNvdW50OiBzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHNjaGVkdWxlLnN0YXJ0Q29uZGl0aW9uICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBwaXBlbGluZUV4ZWN1dGlvblN0YXJ0Q29uZGl0aW9uOiBzY2hlZHVsZS5zdGFydENvbmRpdGlvbixcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBsb2dnaW5nQ29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgTG9nZ2luZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvZ2dpbmdDb25maWd1cmF0aW9uID0gKFxuICAgIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICk6IENmbkltYWdlUGlwZWxpbmUuUGlwZWxpbmVMb2dnaW5nQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBsb2dnaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLihwcm9wcy5pbWFnZUxvZ0dyb3VwICYmIHsgaW1hZ2VMb2dHcm91cE5hbWU6IHByb3BzLmltYWdlTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgICAgLi4uKHByb3BzLmltYWdlUGlwZWxpbmVMb2dHcm91cCAmJiB7IHBpcGVsaW5lTG9nR3JvdXBOYW1lOiBwcm9wcy5pbWFnZVBpcGVsaW5lTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9nZ2luZ0NvbmZpZ3VyYXRpb24pLmxlbmd0aCA/IGxvZ2dpbmdDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9O1xufVxuIl19
|
|
517
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFFbkMsK0RBQWlEO0FBQ2pELHlEQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsNEVBQTRFO0FBQzVFLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFJMUUsaUZBQTZFO0FBQzdFLCtGQUltRDtBQUNuRCwyREFBdUY7QUFJdkYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUF1UzFGOztHQUVHO0FBQ0gsSUFBWSxzQkFXWDtBQVhELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gseUVBQStDLENBQUE7SUFFL0M7OztPQUdHO0lBQ0gsaUlBQXVHLENBQUE7QUFDekcsQ0FBQyxFQVhXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBV2pDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCwwQ0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILDRDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQVU5QjtBQUVEOztHQUVHO0FBQ0gsTUFBZSxpQkFBa0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVduRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3JDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEtB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QW9CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNyRixDQUFDLENBQUM7O1lBck9TLHVEQUFhOzs7OztBQUFiLHNDQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuSW1hZ2VQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0IHR5cGUgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyLCBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1xuICBidWlsZEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uLFxuICBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uLFxuICBidWlsZFdvcmtmbG93cyxcbn0gZnJvbSAnLi9wcml2YXRlL2ltYWdlLWFuZC1waXBlbGluZS1wcm9wcy1oZWxwZXInO1xuaW1wb3J0IHsgZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3ksIGdldEV4ZWN1dGlvblJvbGUgfSBmcm9tICcuL3ByaXZhdGUvcG9saWN5LWhlbHBlcic7XG5pbXBvcnQgdHlwZSB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vd29ya2Zsb3cnO1xuXG5jb25zdCBJTUFHRV9QSVBFTElORV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlUGlwZWxpbmUnKTtcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2VQaXBlbGluZSBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXTtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgdG8gc3RhcnQgYW4gZXhlY3V0aW9uIG9mIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBDVkUgZGV0ZWN0ZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25DVkVEZXRlY3RlZChpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3RhdGVDaGFuZ2UoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRDb21wbGV0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRGYWlsZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3VjY2VzcyBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRTdWNjZWVkZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgcGlwZWxpbmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgd2FpdCBmb3IgYWN0aW9uIGV2ZW50c1xuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25XYWl0Rm9yQWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBJbWFnZSBQaXBlbGluZSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVjaXBlIHRoYXQgZGVmaW5lcyB0aGUgYmFzZSBpbWFnZSwgY29tcG9uZW50cywgYW5kIGN1c3RvbWl6YXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLiBUaGlzIGNhbiBlaXRoZXIgYmVcbiAgICogYW4gaW1hZ2UgcmVjaXBlLCBvciBhIGNvbnRhaW5lciByZWNpcGUuXG4gICAqL1xuICByZWFkb25seSByZWNpcGU6IElSZWNpcGVCYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLiBUaGlzIGNvbmZpZ3VyZXMgaG93IG9mdGVuIGFuZCB3aGVuIGEgcGlwZWxpbmUgYXV0b21hdGljYWxseSBjcmVhdGVzIGEgbmV3XG4gICAqIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUsIGEgbWFudWFsIGltYWdlIHBpcGVsaW5lIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBJbWFnZVBpcGVsaW5lU2NoZWR1bGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwaXBlbGluZSBpcyBlbmFibGVkIHRvIGJlIHRyaWdnZXJlZCBieSB0aGUgcHJvdmlkZWQgc2NoZWR1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgSW1hZ2VQaXBlbGluZVN0YXR1cy5FTkFCTEVEXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBJbWFnZVBpcGVsaW5lU3RhdHVzO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciBidWlsZGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEEgZGVmYXVsdCBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zIG5lZWRlZCB0byBidWlsZCB0aGVcbiAgICogaW1hZ2UsIGF0dGFjaGVkIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWQgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nc1xuICAgKi9cbiAgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uPzogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIHVzZWQgZm9yIGRpc3RyaWJ1dGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/OiBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygd29ya2Zsb3cgY29uZmlndXJhdGlvbnMgdXNlZCB0byBidWlsZCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW1hZ2UgQnVpbGRlciB3aWxsIHVzZSBhIGRlZmF1bHQgc2V0IG9mIHdvcmtmbG93cyBmb3IgdGhlIGJ1aWxkIHRvIGJ1aWxkLCB0ZXN0LCBhbmQgZGlzdHJpYnV0ZSB0aGUgaW1hZ2VcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93cz86IFdvcmtmbG93Q29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCB0byBwZXJmb3JtIHdvcmtmbG93IGFjdGlvbnMgdG8gYnVpbGQgdGhpcyBpbWFnZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIEltYWdlIEJ1aWxkZXIgU2VydmljZSBMaW5rZWQgUm9sZSAoU0xSKSB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBhbmQgdXNlZCBhcyB0aGUgZXhlY3V0aW9uXG4gICAqIHJvbGUuIEhvd2V2ZXIsIHdoZW4gcHJvdmlkaW5nIGEgY3VzdG9tIHNldCBvZiBpbWFnZSB3b3JrZmxvd3MgZm9yIHRoZSBwaXBlbGluZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZVxuICAgKiBnZW5lcmF0ZWQgd2l0aCB0aGUgbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSB0aGUgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgdGhlIFNMUiBpZiBwb3NzaWJsZS4gT3RoZXJ3aXNlLCBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB0byB1c2UgZm9yIHRoZSBpbWFnZSBwaXBlbGluZS4gQnkgZGVmYXVsdCwgYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGZvcm1hdFxuICAgKiBgL2F3cy9pbWFnZWJ1aWxkZXIvcGlwZWxpbmUvPHBpcGVsaW5lLW5hbWU+YFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciBpbWFnZXMgY3JlYXRlZCBmcm9tIHRoZSBpbWFnZSBwaXBlbGluZS4gQnkgZGVmYXVsdCwgYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlXG4gICAqIGZvcm1hdCBgL2F3cy9pbWFnZWJ1aWxkZXIvPGltYWdlLW5hbWU+YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlTG9nR3JvdXA/OiBsb2dzLklMb2dHcm91cDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgSW1hZ2UgQnVpbGRlciBrZWVwcyBhIHNuYXBzaG90IG9mIHRoZSB2dWxuZXJhYmlsaXR5IHNjYW5zIHRoYXQgQW1hem9uIEluc3BlY3RvciBydW5zIGFnYWluc3QgdGhlXG4gICAqIGJ1aWxkIGluc3RhbmNlIHdoZW4geW91IGNyZWF0ZSBhIG5ldyBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlU2Nhbm5pbmdFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciByZXBvc2l0b3J5IHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2FucyB0byBpZGVudGlmeSBmaW5kaW5ncyBmb3IgeW91ciBjb250YWluZXIgaW1hZ2VzLiBJZiBhXG4gICAqIHJlcG9zaXRvcnkgaXMgbm90IHByb3ZpZGVkLCBJbWFnZSBCdWlsZGVyIGNyZWF0ZXMgYSByZXBvc2l0b3J5IG5hbWVkIGBpbWFnZS1idWlsZGVyLWltYWdlLXNjYW5uaW5nLXJlcG9zaXRvcnlgXG4gICAqIGZvciB2dWxuZXJhYmlsaXR5IHNjYW5uaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlmIHNjYW5uaW5nIGlzIGVuYWJsZWQsIGEgcmVwb3NpdG9yeSB3aWxsIGJlIGNyZWF0ZWQgYnkgSW1hZ2UgQnVpbGRlciBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyUmVwb3NpdG9yeT86IGVjci5JUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgZm9yIEltYWdlIEJ1aWxkZXIgdG8gYXBwbHkgdG8gdGhlIG91dHB1dCBjb250YWluZXIgaW1hZ2UgdGhhdCBBbWF6b24gSW5zcGVjdG9yIHNjYW5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBjb2xsZWN0cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbWFnZSBiZWluZyBjcmVhdGVkLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKE9TKVxuICAgKiB2ZXJzaW9uIGFuZCBwYWNrYWdlIGxpc3QgZm9yIHRoZSBBTUkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJ1biB0ZXN0cyBhZnRlciBidWlsZGluZyBhbiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUZXN0c0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogVGhlIHNjaGVkdWxlIHNldHRpbmdzIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUsIHdoaWNoIGRlZmluZXMgd2hlbiBhIHBpcGVsaW5lIHNob3VsZCBiZSB0cmlnZ2VyZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lU2NoZWR1bGUge1xuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIGV4cHJlc3Npb24gdG8gdXNlLiBUaGlzIGNhbiBlaXRoZXIgYmUgYSBjcm9uIGV4cHJlc3Npb24gb3IgYSByYXRlIGV4cHJlc3Npb24uXG4gICAqL1xuICByZWFkb25seSBleHByZXNzaW9uOiBldmVudHMuU2NoZWR1bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgZmFpbHVyZXMgYWxsb3dlZCBiZWZvcmUgdGhlIHBpcGVsaW5lIGlzIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBiZXR3ZWVuIDEgYW5kIDEwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGF1dG8tZGlzYWJsZSBwb2xpY3kgaXMgY29uZmlndXJlZCBhbmQgdGhlIHBpcGVsaW5lIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIG9uIGNvbnNlY3V0aXZlXG4gICAqIGZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uLkVYUFJFU1NJT05fTUFUQ0hfQU5EX0RFUEVOREVOQ1lfVVBEQVRFU19BVkFJTEFCTEVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0Q29uZGl0aW9uPzogU2NoZWR1bGVTdGFydENvbmRpdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgc3RhcnQgY29uZGl0aW9uIGZvciB0aGUgcGlwZWxpbmUsIGluZGljYXRpbmcgdGhlIGNvbmRpdGlvbiB1bmRlciB3aGljaCBhIHBpcGVsaW5lIHNob3VsZCBiZSB0cmlnZ2VyZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFNjaGVkdWxlU3RhcnRDb25kaXRpb24ge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRvIHRyaWdnZXIgYSBwaXBlbGluZSB3aGVuZXZlciBpdHMgc2NoZWR1bGUgaXMgbWV0XG4gICAqL1xuICBFWFBSRVNTSU9OX01BVENIX09OTFkgPSAnRVhQUkVTU0lPTl9NQVRDSF9PTkxZJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRvIHRyaWdnZXIgYSBwaXBlbGluZSB3aGVuZXZlciBpdHMgc2NoZWR1bGUgaXMgbWV0LCBhbmQgdGhlcmUgYXJlIG1hdGNoaW5nIGRlcGVuZGVuY3kgdXBkYXRlcyBhdmFpbGFibGUsXG4gICAqIHN1Y2ggYXMgbmV3IHZlcnNpb25zIG9mIGNvbXBvbmVudHMgb3IgaW1hZ2VzIHRvIHVzZSBpbiB0aGUgcGlwZWxpbmUgYnVpbGQuXG4gICAqL1xuICBFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFID0gJ0VYUFJFU1NJT05fTUFUQ0hfQU5EX0RFUEVOREVOQ1lfVVBEQVRFU19BVkFJTEFCTEUnLFxufVxuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwaXBlbGluZSBpcyBlbmFibGVkIHRvIGJlIHRyaWdnZXJlZCBieSB0aGUgcHJvdmlkZWQgc2NoZWR1bGVcbiAqL1xuZXhwb3J0IGVudW0gSW1hZ2VQaXBlbGluZVN0YXR1cyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCBmb3Igc2NoZWR1bGluZ1xuICAgKi9cbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGRpc2FibGVkIGFuZCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgb24gdGhlIHNjaGVkdWxlXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgSW1hZ2UgUGlwZWxpbmVcbiAqL1xuYWJzdHJhY3QgY2xhc3MgSW1hZ2VQaXBlbGluZUJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJSW1hZ2VQaXBlbGluZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIGFjdGlvbnM6IGFjdGlvbnMsXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0SW1hZ2VQaXBlbGluZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOlN0YXJ0SW1hZ2VQaXBlbGluZUV4ZWN1dGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGlkLCBvcHRpb25zKTtcbiAgICBydWxlLmFkZFRhcmdldChvcHRpb25zLnRhcmdldCk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbJ2F3cy5pbWFnZWJ1aWxkZXInXSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8ucmVzb3VyY2VzPy5sZW5ndGggJiYgeyByZXNvdXJjZXM6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLnJlc291cmNlcyB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsVHlwZT8ubGVuZ3RoICYmIHsgZGV0YWlsVHlwZTogb3B0aW9ucy5ldmVudFBhdHRlcm4uZGV0YWlsVHlwZSB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsICE9PSB1bmRlZmluZWQgJiYgeyBkZXRhaWw6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbCB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkNWRURldGVjdGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgQ1ZFIERldGVjdGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgU3RhdGUgQ2hhbmdlJ10gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0FWQUlMQUJMRScsICdDQU5DRUxMRUQnLCAnRkFJTEVEJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN1Y2NlZWRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBwaXBlbGluZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFBpcGVsaW5lIEF1dG9tYXRpY2FsbHkgRGlzYWJsZWQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbldhaXRGb3JBY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybiwgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvdyBTdGVwIFdhaXRpbmcnXSB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcGlwZWxpbmVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlUGlwZWxpbmUgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVBcm46IHN0cmluZyk6IElJbWFnZVBpcGVsaW5lIHtcbiAgICBjb25zdCBpbWFnZVBpcGVsaW5lTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbWFnZVBpcGVsaW5lQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlUGlwZWxpbmVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lQXJuID0gaW1hZ2VQaXBlbGluZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZSA9IGltYWdlUGlwZWxpbmVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGxcbiAgICogYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUGlwZWxpbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUGlwZWxpbmVBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZS1waXBlbGluZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogaW1hZ2VQaXBlbGluZU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2VQaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZVBpcGVsaW5lKHg6IGFueSk6IHggaXMgSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1BJUEVMSU5FX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC4gSWYgdGhlcmUgaXMgbm8gZXhlY3V0aW9uIHJvbGUsIHRoZW4gdGhlIGJ1aWxkIHdpbGwgYmUgZXhlY3V0ZWQgd2l0aFxuICAgKiB0aGUgQVdTU2VydmljZVJvbGVGb3JJbWFnZUJ1aWxkZXIgc2VydmljZS1saW5rZWQgcm9sZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcztcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogQ2ZuSW1hZ2VQaXBlbGluZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5pbWFnZVBpcGVsaW5lTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgSU1BR0VfUElQRUxJTkVfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUltYWdlUGlwZWxpbmVOYW1lKCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiA9XG4gICAgICBwcm9wcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPz8gbmV3IEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbih0aGlzLCAnSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uJyk7XG4gICAgdGhpcy5leGVjdXRpb25Sb2xlID0gZ2V0RXhlY3V0aW9uUm9sZShcbiAgICAgIHRoaXMsXG4gICAgICAoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpID0+IHRoaXMuZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWUpLFxuICAgICAgcHJvcHMsXG4gICAgKTtcblxuICAgIGlmIChJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uaXNJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24pKSB7XG4gICAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5fYmluZCh7IGlzQ29udGFpbmVyQnVpbGQ6IHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSB9KTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkgJiYgcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgUmVjaXBlQ2Fubm90QmVCb3RoYCwgJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgUmVjaXBlUmVxdWlyZWRgLCAndGhlIHJlY2lwZSBtdXN0IGVpdGhlciBiZSBhbiBJSW1hZ2VSZWNpcGUgb3IgSUNvbnRhaW5lclJlY2lwZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlUGlwZWxpbmUgPSBuZXcgQ2ZuSW1hZ2VQaXBlbGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIC4uLihwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiB7IGltYWdlUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuaW1hZ2VSZWNpcGVBcm4gfSksXG4gICAgICAuLi4ocHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHsgY29udGFpbmVyUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuY29udGFpbmVyUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHByb3BzLnN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHsgc3RhdHVzOiBwcm9wcy5zdGF0dXMgfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlPy5yb2xlQXJuLFxuICAgICAgc2NoZWR1bGU6IHRoaXMuYnVpbGRTY2hlZHVsZShwcm9wcyksXG4gICAgICBsb2dnaW5nQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGltYWdlVGVzdHNDb25maWd1cmF0aW9uOiBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uPFxuICAgICAgICBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICAgICAgIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPihwcm9wcyksXG4gICAgICBpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQaXBlbGluZVByb3BzLFxuICAgICAgICBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVBpcGVsaW5lUHJvcHMsIENmbkltYWdlUGlwZWxpbmUuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXT4ocHJvcHMpLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MtY2xvdWRmb3JtYXRpb24vY2xvdWRmb3JtYXRpb24tdmFsaWRhdGUvaXNzdWVzLzE4NlxuICAgIGNkay5WYWxpZGF0aW9ucy5vZihpbWFnZVBpcGVsaW5lKS5hY2tub3dsZWRnZSh7XG4gICAgICBpZDogJ0Nsb3VkRm9ybWF0aW9uLVZhbGlkYXRlOjpXMzAzMCcsXG4gICAgICByZWFzb246ICdPbkZhaWx1cmUgXCJBYm9ydFwiIGlzIGEgdmFsaWQgdmFsdWUgdGhhdCB3b3JrcywgbGVhdmluZyBpdCBmb3IgbGVnYWN5IHJlYXNvbnMuJyxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBpbWFnZVBpcGVsaW5lO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VQaXBlbGluZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyTmFtZSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZVBpcGVsaW5lQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnaW1hZ2UtcGlwZWxpbmUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcywgdGhpcy5wcm9wcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YEltYWdlUGlwZWxpbmVOYW1lVG9vTG9uZ2AsICdUaGUgaW1hZ2VQaXBlbGluZU5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBJbWFnZVBpcGVsaW5lTmFtZU5vU3BhY2VzYCwgJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YEltYWdlUGlwZWxpbmVOYW1lTm9VbmRlcnNjb3Jlc2AsICdUaGUgaW1hZ2VQaXBlbGluZU5hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUgIT09IHRoaXMucGh5c2ljYWxOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBJbWFnZVBpcGVsaW5lTmFtZU11c3RCZUxvd2VyY2FzZWAsICdUaGUgaW1hZ2VQaXBlbGluZU5hbWUgbXVzdCBiZSBsb3dlcmNhc2UnLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2NoZWR1bGUocHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcyk6IENmbkltYWdlUGlwZWxpbmUuU2NoZWR1bGVQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc2NoZWR1bGUgPSBwcm9wcy5zY2hlZHVsZTtcbiAgICBpZiAoIXNjaGVkdWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCAhPT0gdW5kZWZpbmVkICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50KSkge1xuICAgICAgaWYgKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50IDwgMSB8fCBzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCA+IDEwKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBBdXRvRGlzYWJsZUZhaWx1cmVDb3VudE91dE9mUmFuZ2VgLCAndGhlIGF1dG9EaXNhYmxlRmFpbHVyZUNvdW50IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMCcsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246IHNjaGVkdWxlLmV4cHJlc3Npb24uZXhwcmVzc2lvblN0cmluZyxcbiAgICAgIC4uLihzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgYXV0b0Rpc2FibGVQb2xpY3k6IHtcbiAgICAgICAgICBmYWlsdXJlQ291bnQ6IHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICAuLi4oc2NoZWR1bGUuc3RhcnRDb25kaXRpb24gIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIHBpcGVsaW5lRXhlY3V0aW9uU3RhcnRDb25kaXRpb246IHNjaGVkdWxlLnN0YXJ0Q29uZGl0aW9uLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGxvZ2dpbmdDb25maWd1cmF0aW9uIHByb3BlcnR5IGludG8gdGhlIGBMb2dnaW5nQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDFcbiAgICogZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFByb3BzIGlucHV0IGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9nZ2luZ0NvbmZpZ3VyYXRpb24gPSAoXG4gICAgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcyxcbiAgKTogQ2ZuSW1hZ2VQaXBlbGluZS5QaXBlbGluZUxvZ2dpbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGxvZ2dpbmdDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4uKHByb3BzLmltYWdlTG9nR3JvdXAgJiYgeyBpbWFnZUxvZ0dyb3VwTmFtZTogcHJvcHMuaW1hZ2VMb2dHcm91cC5sb2dHcm91cE5hbWUgfSksXG4gICAgICAuLi4ocHJvcHMuaW1hZ2VQaXBlbGluZUxvZ0dyb3VwICYmIHsgcGlwZWxpbmVMb2dHcm91cE5hbWU6IHByb3BzLmltYWdlUGlwZWxpbmVMb2dHcm91cC5sb2dHcm91cE5hbWUgfSksXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhsb2dnaW5nQ29uZmlndXJhdGlvbikubGVuZ3RoID8gbG9nZ2luZ0NvbmZpZ3VyYXRpb24gOiB1bmRlZmluZWQ7XG4gIH07XG59XG4iXX0=
|
package/lib/image-recipe.js
CHANGED
|
@@ -168,7 +168,7 @@ let ImageRecipe = (() => {
|
|
|
168
168
|
ImageRecipe = _classThis = _classDescriptor.value;
|
|
169
169
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
170
170
|
}
|
|
171
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImageRecipe", version: "2.
|
|
171
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImageRecipe", version: "2.262.1-alpha.0" };
|
|
172
172
|
/** Uniquely identifies this class. */
|
|
173
173
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImageRecipe';
|
|
174
174
|
/**
|
package/lib/image.js
CHANGED
|
@@ -204,7 +204,7 @@ let Image = (() => {
|
|
|
204
204
|
Image = _classThis = _classDescriptor.value;
|
|
205
205
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
206
206
|
}
|
|
207
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Image", version: "2.
|
|
207
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Image", version: "2.262.1-alpha.0" };
|
|
208
208
|
/** Uniquely identifies this class. */
|
|
209
209
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Image';
|
|
210
210
|
/**
|
|
@@ -382,6 +382,11 @@ let Image = (() => {
|
|
|
382
382
|
deletionSettings: this.buildDeletionSettings(props),
|
|
383
383
|
tags: props.tags,
|
|
384
384
|
});
|
|
385
|
+
// https://github.com/aws-cloudformation/cloudformation-validate/issues/186
|
|
386
|
+
cdk.Validations.of(image).acknowledge({
|
|
387
|
+
id: 'CloudFormation-Validate::W3030',
|
|
388
|
+
reason: 'OnFailure "Abort" is a valid value that works, leaving it for legacy reasons.',
|
|
389
|
+
});
|
|
385
390
|
return [image, recipe];
|
|
386
391
|
}
|
|
387
392
|
/**
|
|
@@ -414,4 +419,4 @@ let Image = (() => {
|
|
|
414
419
|
return Image = _classThis;
|
|
415
420
|
})();
|
|
416
421
|
exports.Image = Image;
|
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFFbkMseURBQTJDO0FBQzNDLG1FQUF3RDtBQUV4RCw0RUFBNEU7QUFDNUUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUUxRSw2Q0FBNkQ7QUFHN0QsaUZBQTZFO0FBQzdFLG1EQUFxRDtBQUNyRCwrRkFJbUQ7QUFDbkQsMkRBQXVGO0FBSXZGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztBQXdNekU7O0dBRUc7QUFDSCxJQUFZLGlCQVVYO0FBVkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxvQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFVNUI7QUFFRDs7R0FFRztBQUNILElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILHdCQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDhCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxTQUFTLHlCQUFULFNBQVMsUUFVcEI7QUFFRDs7R0FFRztBQUNILE1BQWUsU0FBVSxTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBZ0IzQzs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdCLE9BQU87U0FDUixDQUFDLENBQUM7S0FDSjtJQUVEOzs7Ozs7T0FNRztJQUNJLG9DQUFvQyxDQUFD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IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkltYWdlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgdHlwZSAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlQ29udGFpbmVySW1hZ2UsIEJhc2VJbWFnZSB9IGZyb20gJy4vYmFzZS1pbWFnZSc7XG5pbXBvcnQgdHlwZSB7IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9kaXN0cmlidXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgdHlwZSB7IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IExBVEVTVF9WRVJTSU9OIH0gZnJvbSAnLi9wcml2YXRlL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBidWlsZEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uLFxuICBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uLFxuICBidWlsZFdvcmtmbG93cyxcbn0gZnJvbSAnLi9wcml2YXRlL2ltYWdlLWFuZC1waXBlbGluZS1wcm9wcy1oZWxwZXInO1xuaW1wb3J0IHsgZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3ksIGdldEV4ZWN1dGlvblJvbGUgfSBmcm9tICcuL3ByaXZhdGUvcG9saWN5LWhlbHBlcic7XG5pbXBvcnQgdHlwZSB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vd29ya2Zsb3cnO1xuXG5jb25zdCBJTUFHRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2UgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbWFnZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdO1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGFuIGltYWdlIHJlY2lwZVxuICAgKi9cbiAgdG9CYXNlSW1hZ2UoKTogQmFzZUltYWdlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBDb250YWluZXJCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGEgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgdG9Db250YWluZXJCYXNlSW1hZ2UoKTogQmFzZUNvbnRhaW5lckltYWdlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEltYWdlIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVjaXBlIHRoYXQgZGVmaW5lcyB0aGUgYmFzZSBpbWFnZSwgY29tcG9uZW50cywgYW5kIGN1c3RvbWl6YXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLiBUaGlzIGNhbiBlaXRoZXIgYmVcbiAgICogYW4gaW1hZ2UgcmVjaXBlLCBvciBhIGNvbnRhaW5lciByZWNpcGUuXG4gICAqL1xuICByZWFkb25seSByZWNpcGU6IElSZWNpcGVCYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciBidWlsZGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEEgZGVmYXVsdCBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zIG5lZWRlZCB0byBidWlsZCB0aGVcbiAgICogaW1hZ2UsIGF0dGFjaGVkIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqXG4gICAqIElNRFN2MiB3aWxsIGJlIHJlcXVpcmVkIGJ5IGRlZmF1bHQgb24gdGhlIGluc3RhbmNlcyB1c2VkIHRvIGJ1aWxkIGFuZCB0ZXN0IHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbiBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzXG4gICAqL1xuICByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24/OiBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgZGlzdHJpYnV0aW5nIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbj86IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB3b3JrZmxvdyBjb25maWd1cmF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIGEgZGVmYXVsdCBzZXQgb2Ygd29ya2Zsb3dzIGZvciB0aGUgYnVpbGQgdG8gYnVpbGQsIHRlc3QsIGFuZCBkaXN0cmlidXRlIHRoZVxuICAgKiBpbWFnZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dzPzogV29ya2Zsb3dDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIHRvIHBlcmZvcm0gd29ya2Zsb3cgYWN0aW9ucyB0byBidWlsZCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgaW1hZ2UsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHRvIHVzZSBmb3IgZGVsZXRpbmcgdGhlIGltYWdlIGFzIHdlbGwgYXMgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VzLCBzdWNoIGFzIHRoZSBBTUlzLCBzbmFwc2hvdHMsXG4gICAqIGFuZCBjb250YWluZXJzLiBUaGlzIHJvbGUgc2hvdWxkIGNvbnRhaW4gcmVzb3VyY2UgbGlmZWN5Y2xlIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIGRlbGV0ZSB0aGUgdW5kZXJseWluZ1xuICAgKiBBTUlzL2NvbnRhaW5lcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhlY3V0aW9uIHJvbGUuIE9ubHkgdGhlIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugd2lsbCBiZSBkZWxldGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRpb25FeGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYW4gRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdGhlIGltYWdlTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB0aGUgaW1hZ2VBcm5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBpbWFnZSwgeC54LnhcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZW51bSBJbWFnZUFyY2hpdGVjdHVyZSB7XG4gIC8qKlxuICAgKiA2NCBiaXQgYXJjaGl0ZWN0dXJlIHdpdGggdGhlIEFSTSBpbnN0cnVjdGlvbiBzZXRcbiAgICovXG4gIEFSTTY0ID0gJ2FybTY0JyxcblxuICAvKipcbiAgICogNjQgYml0IGFyY2hpdGVjdHVyZSB3aXRoIHg4NiBpbnN0cnVjdGlvbiBzZXRcbiAgICovXG4gIFg4Nl82NCA9ICd4ODZfNjQnLFxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZW51bSBJbWFnZVR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBpbWFnZSBwcm9kdWNlZCBpcyBhbiBBTUlcbiAgICovXG4gIEFNSSA9ICdBTUknLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGltYWdlIHByb2R1Y2VkIGlzIGEgRG9ja2VyIGltYWdlXG4gICAqL1xuICBET0NLRVIgPSAnRE9DS0VSJyxcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBJbWFnZVxuICovXG5hYnN0cmFjdCBjbGFzcyBJbWFnZUJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJSW1hZ2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2VcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZUFybl0sXG4gICAgICBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXRJbWFnZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIEJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYW4gaW1hZ2UgcmVjaXBlXG4gICAqL1xuICBwdWJsaWMgdG9CYXNlSW1hZ2UoKTogQmFzZUltYWdlIHtcbiAgICByZXR1cm4gQmFzZUltYWdlLmZyb21JbWFnZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBDb250YWluZXJCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGEgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHRvQ29udGFpbmVyQmFzZUltYWdlKCk6IEJhc2VDb250YWluZXJJbWFnZSB7XG4gICAgcmV0dXJuIEJhc2VDb250YWluZXJJbWFnZS5mcm9tSW1hZ2UodGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIEltYWdlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2NyZWF0ZS1pbWFnZXMuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgSW1hZ2UgZXh0ZW5kcyBJbWFnZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW1hZ2UnO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW1hZ2UgZ2l2ZW4gaXRzIEFSTlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgaW1hZ2VBcm46IHN0cmluZyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsXG4gICAqIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZU5hbWU6IHN0cmluZyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBieSBwcm92aWRpbmcgaXRzIGF0dHJpYnV0ZXMuIElmIHRoZSBpbWFnZSBuYW1lIGlzIHByb3ZpZGVkIGFzIGFuIGF0dHJpYnV0ZSwgaXQgbXVzdCBiZVxuICAgKiBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoXG4gICAqIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IEltYWdlQXR0cmlidXRlcyk6IElJbWFnZSB7XG4gICAgaWYgKCFhdHRycy5pbWFnZUFybiAmJiAhYXR0cnMuaW1hZ2VOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgRWl0aGVySW1hZ2VBcm5PckltYWdlTmFtZVJlcXVpcmVkYCwgJ2VpdGhlciBpbWFnZUFybiBvciBpbWFnZU5hbWUgaXMgcmVxdWlyZWQnLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VBcm4gPVxuICAgICAgYXR0cnMuaW1hZ2VBcm4gPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnaW1hZ2UnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGAke2F0dHJzLmltYWdlTmFtZX0vJHthdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgW2ltYWdlTmFtZSwgaW1hZ2VWZXJzaW9uXSA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMuaW1hZ2VOYW1lKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMuaW1hZ2VOYW1lLCBhdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT05dO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbWFnZU5hbWVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihpbWFnZUFybiwgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgICBjb25zdCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQgPSBjZGsuRm4uc3BsaXQoJy8nLCBpbWFnZU5hbWVWZXJzaW9uKTtcbiAgICAgIHJldHVybiBbY2RrLkZuLnNlbGVjdCgwLCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQpLCBjZGsuRm4uc2VsZWN0KDEsIGltYWdlTmFtZVZlcnNpb25TcGxpdCldO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBJbWFnZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlQXJuID0gaW1hZ2VBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VOYW1lID0gaW1hZ2VOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlVmVyc2lvbiA9IGltYWdlVmVyc2lvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzSW1hZ2UoeDogYW55KTogeCBpcyBJbWFnZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogSW1hZ2VQcm9wcztcbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuSW1hZ2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBJTUFHRV9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiA9XG4gICAgICBwcm9wcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPz8gbmV3IEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbih0aGlzLCAnSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uJyk7XG5cbiAgICB0aGlzLmV4ZWN1dGlvblJvbGUgPSBnZXRFeGVjdXRpb25Sb2xlKFxuICAgICAgdGhpcyxcbiAgICAgIChncmFudGVlOiBpYW0uSUdyYW50YWJsZSkgPT4gdGhpcy5ncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZSksXG4gICAgICB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBpbWFnZUxvZ0dyb3VwOiBwcm9wcy5sb2dHcm91cCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IFtpbWFnZSwgX10gPSB0aGlzLmNyZWF0ZUltYWdlRnJvbVJlY2lwZShwcm9wcyk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IGltYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzLCB0aGlzLnByb3BzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ck5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRyQXJuO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5wcm9wcy5yZWNpcGU7XG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpKSB7XG4gICAgICByZXR1cm4gcmVjaXBlLmltYWdlUmVjaXBlVmVyc2lvbjtcbiAgICB9IGVsc2UgaWYgKHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgcmV0dXJuIHJlY2lwZS5jb250YWluZXJSZWNpcGVWZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZFJlY2lwZVR5cGVgLCAncmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIGltYWdlIHJlY2lwZSBvciBjb250YWluZXIgcmVjaXBlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBTUkgSUQgb2YgdGhlIEVDMiBBTUksIG9yIFVSSSBmb3IgdGhlIGNvbnRhaW5lclxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5wcm9wcy5yZWNpcGU7XG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRySW1hZ2VJZDtcbiAgICB9IGVsc2UgaWYgKHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuYXR0ckltYWdlVXJpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZFJlY2lwZVR5cGVgLCAncmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIGltYWdlIHJlY2lwZSBvciBjb250YWluZXIgcmVjaXBlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDZm5JbWFnZSByZXNvdXJjZSBmcm9tIHRoZSByZWNpcGUgYW5kIHByb3BzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlSW1hZ2VGcm9tUmVjaXBlKHByb3BzOiBJbWFnZVByb3BzKTogW0NmbkltYWdlLCBJUmVjaXBlQmFzZV0ge1xuICAgIGNvbnN0IHJlY2lwZSA9IHByb3BzLnJlY2lwZTtcbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiByZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YFJlY2lwZUNhbm5vdEJlQm90aEltYWdlQW5kQ29udGFpbmVyYCwgJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFyZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgUmVjaXBlTXVzdEJlSW1hZ2VPckNvbnRhaW5lcmAsICd0aGUgcmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIElJbWFnZVJlY2lwZSBvciBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgQ2ZuSW1hZ2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgLi4uKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHsgaW1hZ2VSZWNpcGVBcm46IHJlY2lwZS5pbWFnZVJlY2lwZUFybiB9KSxcbiAgICAgIC4uLihyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgJiYgeyBjb250YWluZXJSZWNpcGVBcm46IHJlY2lwZS5jb250YWluZXJSZWNpcGVBcm4gfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgbG9nZ2luZ0NvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRMb2dnaW5nQ29uZmlndXJhdGlvbihwcm9wcyksXG4gICAgICBpbWFnZVRlc3RzQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbjxJbWFnZVByb3BzLCBDZm5JbWFnZS5JbWFnZVRlc3RzQ29uZmlndXJhdGlvblByb3BlcnR5PihcbiAgICAgICAgcHJvcHMsXG4gICAgICApLFxuICAgICAgaW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb246IGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb248XG4gICAgICAgIEltYWdlUHJvcHMsXG4gICAgICAgIENmbkltYWdlLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVByb3BzLCBDZm5JbWFnZS5Xb3JrZmxvd0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdPihwcm9wcyksXG4gICAgICBkZWxldGlvblNldHRpbmdzOiB0aGlzLmJ1aWxkRGVsZXRpb25TZXR0aW5ncyhwcm9wcyksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtpbWFnZSwgcmVjaXBlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGxvZ2dpbmdDb25maWd1cmF0aW9uIHByb3BlcnR5IGludG8gdGhlIGBMb2dnaW5nQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDFcbiAgICogZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFByb3BzIGlucHV0IGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9nZ2luZ0NvbmZpZ3VyYXRpb24ocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5JbWFnZUxvZ2dpbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMubG9nR3JvdXApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbG9nR3JvdXBOYW1lOiBwcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGRlbGV0aW9uU2V0dGluZ3MgcHJvcGVydHkgaW50byB0aGUgYERlbGV0aW9uU2V0dGluZ3NgIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZERlbGV0aW9uU2V0dGluZ3MocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5EZWxldGlvblNldHRpbmdzUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBleGVjdXRpb25Sb2xlOiBwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUucm9sZUFybiB9O1xuICB9XG59XG4iXX0=
|
|
422
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFFbkMseURBQTJDO0FBQzNDLG1FQUF3RDtBQUV4RCw0RUFBNEU7QUFDNUUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUUxRSw2Q0FBNkQ7QUFHN0QsaUZBQTZFO0FBQzdFLG1EQUFxRDtBQUNyRCwrRkFJbUQ7QUFDbkQsMkRBQXVGO0FBSXZGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztBQXdNekU7O0dBRUc7QUFDSCxJQUFZLGlCQVVYO0FBVkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxvQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFVNUI7QUFFRDs7R0FFRztBQUNILElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILHdCQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDhCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxTQUFTLHlCQUFULFNBQVMsUUFVcEI7QUFFRDs7R0FFRztBQUNILE1BQWUsU0FBVSxTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBZ0IzQzs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdCLE9BQU87U0FDUixDQUFDLENBQUM7S0FDSjtJQUVEOzs7Ozs7T0FNRztJQUNJLG9DQUFvQyxDQUFD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QUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBRUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0Q7O1lBM09VLHVEQUFLOzs7OztBQUFMLHNCQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuSW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCB0eXBlICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciwgbGl0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJhc2VDb250YWluZXJJbWFnZSwgQmFzZUltYWdlIH0gZnJvbSAnLi9iYXNlLWltYWdlJztcbmltcG9ydCB0eXBlIHsgSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJztcbmltcG9ydCB0eXBlIHsgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgTEFURVNUX1ZFUlNJT04gfSBmcm9tICcuL3ByaXZhdGUvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkV29ya2Zsb3dzLFxufSBmcm9tICcuL3ByaXZhdGUvaW1hZ2UtYW5kLXBpcGVsaW5lLXByb3BzLWhlbHBlcic7XG5pbXBvcnQgeyBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSwgZ2V0RXhlY3V0aW9uUm9sZSB9IGZyb20gJy4vcHJpdmF0ZS9wb2xpY3ktaGVscGVyJztcbmltcG9ydCB0eXBlIHsgSVJlY2lwZUJhc2UgfSBmcm9tICcuL3JlY2lwZS1iYXNlJztcbmltcG9ydCB0eXBlIHsgV29ya2Zsb3dDb25maWd1cmF0aW9uIH0gZnJvbSAnLi93b3JrZmxvdyc7XG5cbmNvbnN0IElNQUdFX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW1hZ2UnKTtcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJbWFnZSBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W107XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIEJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYW4gaW1hZ2UgcmVjaXBlXG4gICAqL1xuICB0b0Jhc2VJbWFnZSgpOiBCYXNlSW1hZ2U7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIENvbnRhaW5lckJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYSBjb250YWluZXIgcmVjaXBlXG4gICAqL1xuICB0b0NvbnRhaW5lckJhc2VJbWFnZSgpOiBCYXNlQ29udGFpbmVySW1hZ2U7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW1hZ2UgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZWNpcGUgdGhhdCBkZWZpbmVzIHRoZSBiYXNlIGltYWdlLCBjb21wb25lbnRzLCBhbmQgY3VzdG9taXphdGlvbnMgdXNlZCB0byBidWlsZCB0aGUgaW1hZ2UuIFRoaXMgY2FuIGVpdGhlciBiZVxuICAgKiBhbiBpbWFnZSByZWNpcGUsIG9yIGEgY29udGFpbmVyIHJlY2lwZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlY2lwZTogSVJlY2lwZUJhc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQSBkZWZhdWx0IGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSB1c2VkIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gd2lsbCBjcmVhdGUgYW4gaW5zdGFuY2UgcHJvZmlsZSBhbmQgcm9sZSB3aXRoIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGJ1aWxkIHRoZVxuICAgKiBpbWFnZSwgYXR0YWNoZWQgdG8gdGhlIEVDMiBpbnN0YW5jZS5cbiAgICpcbiAgICogSU1EU3YyIHdpbGwgYmUgcmVxdWlyZWQgYnkgZGVmYXVsdCBvbiB0aGUgaW5zdGFuY2VzIHVzZWQgdG8gYnVpbGQgYW5kIHRlc3QgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbj86IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB1c2VkIGZvciBkaXN0cmlidXRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uPzogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgYSBkZWZhdWx0IHNldCBvZiB3b3JrZmxvd3MgZm9yIHRoZSBidWlsZCB0byBidWlsZCwgdGVzdCwgYW5kIGRpc3RyaWJ1dGUgdGhlXG4gICAqIGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgdG8gcGVyZm9ybSB3b3JrZmxvdyBhY3Rpb25zIHRvIGJ1aWxkIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIEltYWdlIEJ1aWxkZXIgU2VydmljZSBMaW5rZWQgUm9sZSAoU0xSKSB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBhbmQgdXNlZCBhcyB0aGUgZXhlY3V0aW9uXG4gICAqIHJvbGUuIEhvd2V2ZXIsIHdoZW4gcHJvdmlkaW5nIGEgY3VzdG9tIHNldCBvZiBpbWFnZSB3b3JrZmxvd3MgZm9yIHRoZSBpbWFnZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZVxuICAgKiBnZW5lcmF0ZWQgd2l0aCB0aGUgbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSB0aGUgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgdGhlIFNMUiBpZiBwb3NzaWJsZS4gT3RoZXJ3aXNlLCBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB0byB1c2UgZm9yIHRoZSBpbWFnZS4gQnkgZGVmYXVsdCwgYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGZvcm1hdFxuICAgKiBgL2F3cy9pbWFnZWJ1aWxkZXIvPGltYWdlLW5hbWU+YFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBsb2dzLklMb2dHcm91cDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgSW1hZ2UgQnVpbGRlciBrZWVwcyBhIHNuYXBzaG90IG9mIHRoZSB2dWxuZXJhYmlsaXR5IHNjYW5zIHRoYXQgQW1hem9uIEluc3BlY3RvciBydW5zIGFnYWluc3QgdGhlXG4gICAqIGJ1aWxkIGluc3RhbmNlIHdoZW4geW91IGNyZWF0ZSBhIG5ldyBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlU2Nhbm5pbmdFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciByZXBvc2l0b3J5IHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2FucyB0byBpZGVudGlmeSBmaW5kaW5ncyBmb3IgeW91ciBjb250YWluZXIgaW1hZ2VzLiBJZiBhXG4gICAqIHJlcG9zaXRvcnkgaXMgbm90IHByb3ZpZGVkLCBJbWFnZSBCdWlsZGVyIGNyZWF0ZXMgYSByZXBvc2l0b3J5IG5hbWVkIGBpbWFnZS1idWlsZGVyLWltYWdlLXNjYW5uaW5nLXJlcG9zaXRvcnlgXG4gICAqIGZvciB2dWxuZXJhYmlsaXR5IHNjYW5uaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlmIHNjYW5uaW5nIGlzIGVuYWJsZWQsIGEgcmVwb3NpdG9yeSB3aWxsIGJlIGNyZWF0ZWQgYnkgSW1hZ2UgQnVpbGRlciBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyUmVwb3NpdG9yeT86IGVjci5JUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgZm9yIEltYWdlIEJ1aWxkZXIgdG8gYXBwbHkgdG8gdGhlIG91dHB1dCBjb250YWluZXIgaW1hZ2UgdGhhdCBBbWF6b24gSW5zcGVjdG9yIHNjYW5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBjb2xsZWN0cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbWFnZSBiZWluZyBjcmVhdGVkLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKE9TKVxuICAgKiB2ZXJzaW9uIGFuZCBwYWNrYWdlIGxpc3QgZm9yIHRoZSBBTUkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJ1biB0ZXN0cyBhZnRlciBidWlsZGluZyBhbiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUZXN0c0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdG8gdXNlIGZvciBkZWxldGluZyB0aGUgaW1hZ2UgYXMgd2VsbCBhcyB0aGUgdW5kZXJseWluZyByZXNvdXJjZXMsIHN1Y2ggYXMgdGhlIEFNSXMsIHNuYXBzaG90cyxcbiAgICogYW5kIGNvbnRhaW5lcnMuIFRoaXMgcm9sZSBzaG91bGQgY29udGFpbiByZXNvdXJjZSBsaWZlY3ljbGUgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gZGVsZXRlIHRoZSB1bmRlcmx5aW5nXG4gICAqIEFNSXMvY29udGFpbmVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGVjdXRpb24gcm9sZS4gT25seSB0aGUgSW1hZ2UgQnVpbGRlciBpbWFnZSB3aWxsIGJlIGRlbGV0ZWQuXG4gICAqL1xuICByZWFkb25seSBkZWxldGlvbkV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB0aGUgaW1hZ2VOYW1lXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHRoZSBpbWFnZUFyblxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGltYWdlLCB4LngueFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGltYWdlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlQXJjaGl0ZWN0dXJlIHtcbiAgLyoqXG4gICAqIDY0IGJpdCBhcmNoaXRlY3R1cmUgd2l0aCB0aGUgQVJNIGluc3RydWN0aW9uIHNldFxuICAgKi9cbiAgQVJNNjQgPSAnYXJtNjQnLFxuXG4gIC8qKlxuICAgKiA2NCBiaXQgYXJjaGl0ZWN0dXJlIHdpdGggeDg2IGluc3RydWN0aW9uIHNldFxuICAgKi9cbiAgWDg2XzY0ID0gJ3g4Nl82NCcsXG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIGltYWdlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGltYWdlIHByb2R1Y2VkIGlzIGFuIEFNSVxuICAgKi9cbiAgQU1JID0gJ0FNSScsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgaW1hZ2UgcHJvZHVjZWQgaXMgYSBEb2NrZXIgaW1hZ2VcbiAgICovXG4gIERPQ0tFUiA9ICdET0NLRVInLFxufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElJbWFnZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmltYWdlQXJuXSxcbiAgICAgIGFjdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgcHVibGljIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdIHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5KHRoaXMpO1xuICAgIHJldHVybiBwb2xpY2llcy5tYXAoKHBvbGljeSkgPT5cbiAgICAgIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICAgIHJlc291cmNlQXJuczogcG9saWN5LnJlc291cmNlcyxcbiAgICAgICAgYWN0aW9uczogcG9saWN5LmFjdGlvbnMsXG4gICAgICAgIGNvbmRpdGlvbnM6IHBvbGljeS5jb25kaXRpb25zLFxuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlJyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGltYWdlIHRvIGEgQmFzZUltYWdlLCB0byB1c2UgYXMgdGhlIHBhcmVudCBpbWFnZSBpbiBhbiBpbWFnZSByZWNpcGVcbiAgICovXG4gIHB1YmxpYyB0b0Jhc2VJbWFnZSgpOiBCYXNlSW1hZ2Uge1xuICAgIHJldHVybiBCYXNlSW1hZ2UuZnJvbUltYWdlKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIENvbnRhaW5lckJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYSBjb250YWluZXIgcmVjaXBlXG4gICAqL1xuICBwdWJsaWMgdG9Db250YWluZXJCYXNlSW1hZ2UoKTogQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgICByZXR1cm4gQmFzZUNvbnRhaW5lckltYWdlLmZyb21JbWFnZSh0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvY3JlYXRlLWltYWdlcy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBJbWFnZSBleHRlbmRzIEltYWdlQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZSc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBnaXZlbiBpdHMgQVJOXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZUFybjogc3RyaW5nKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tSW1hZ2VBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBpbWFnZUFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW1hZ2UgZ2l2ZW4gaXRzIG5hbWUuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nIGFsbCBhbHBoYWJldGljYWxcbiAgICogY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlTmFtZTogc3RyaW5nKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tSW1hZ2VBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBpbWFnZU5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIGJ5IHByb3ZpZGluZyBpdHMgYXR0cmlidXRlcy4gSWYgdGhlIGltYWdlIG5hbWUgaXMgcHJvdmlkZWQgYXMgYW4gYXR0cmlidXRlLCBpdCBtdXN0IGJlXG4gICAqIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGhcbiAgICogaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlQXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogSW1hZ2VBdHRyaWJ1dGVzKTogSUltYWdlIHtcbiAgICBpZiAoIWF0dHJzLmltYWdlQXJuICYmICFhdHRycy5pbWFnZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBFaXRoZXJJbWFnZUFybk9ySW1hZ2VOYW1lUmVxdWlyZWRgLCAnZWl0aGVyIGltYWdlQXJuIG9yIGltYWdlTmFtZSBpcyByZXF1aXJlZCcsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbWFnZUFybiA9XG4gICAgICBhdHRycy5pbWFnZUFybiA/P1xuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogYCR7YXR0cnMuaW1hZ2VOYW1lfS8ke2F0dHJzLmltYWdlVmVyc2lvbiA/PyBMQVRFU1RfVkVSU0lPTn1gLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBbaW1hZ2VOYW1lLCBpbWFnZVZlcnNpb25dID0gKCgpID0+IHtcbiAgICAgIGlmIChhdHRycy5pbWFnZU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIFthdHRycy5pbWFnZU5hbWUsIGF0dHJzLmltYWdlVmVyc2lvbiA/PyBMQVRFU1RfVkVSU0lPTl07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGltYWdlTmFtZVZlcnNpb24gPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKGltYWdlQXJuLCBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZSE7XG5cbiAgICAgIGNvbnN0IGltYWdlTmFtZVZlcnNpb25TcGxpdCA9IGNkay5Gbi5zcGxpdCgnLycsIGltYWdlTmFtZVZlcnNpb24pO1xuICAgICAgcmV0dXJuIFtjZGsuRm4uc2VsZWN0KDAsIGltYWdlTmFtZVZlcnNpb25TcGxpdCksIGNkay5Gbi5zZWxlY3QoMSwgaW1hZ2VOYW1lVmVyc2lvblNwbGl0KV07XG4gICAgfSkoKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VBcm4gPSBpbWFnZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZU5hbWUgPSBpbWFnZU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VWZXJzaW9uID0gaW1hZ2VWZXJzaW9uO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhbiBJbWFnZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZSh4OiBhbnkpOiB4IGlzIEltYWdlIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgSU1BR0VfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uOiBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJbWFnZVByb3BzO1xuICBwcml2YXRlIHJlc291cmNlOiBDZm5JbWFnZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEltYWdlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElNQUdFX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID1cbiAgICAgIHByb3BzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiA/PyBuZXcgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMsICdJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24nKTtcblxuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGltYWdlTG9nR3JvdXA6IHByb3BzLmxvZ0dyb3VwLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY29uc3QgW2ltYWdlLCBfXSA9IHRoaXMuY3JlYXRlSW1hZ2VGcm9tUmVjaXBlKHByb3BzKTtcbiAgICB0aGlzLnJlc291cmNlID0gaW1hZ2U7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdIHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5KHRoaXMsIHRoaXMucHJvcHMpO1xuICAgIHJldHVybiBwb2xpY2llcy5tYXAoKHBvbGljeSkgPT5cbiAgICAgIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICAgIHJlc291cmNlQXJuczogcG9saWN5LnJlc291cmNlcyxcbiAgICAgICAgYWN0aW9uczogcG9saWN5LmFjdGlvbnMsXG4gICAgICAgIGNvbmRpdGlvbnM6IHBvbGljeS5jb25kaXRpb25zLFxuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyTmFtZSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZUFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmF0dHJBcm47XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBjb25zdCByZWNpcGUgPSB0aGlzLnByb3BzLnJlY2lwZTtcbiAgICBpZiAocmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkpIHtcbiAgICAgIHJldHVybiByZWNpcGUuaW1hZ2VSZWNpcGVWZXJzaW9uO1xuICAgIH0gZWxzZSBpZiAocmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICByZXR1cm4gcmVjaXBlLmNvbnRhaW5lclJlY2lwZVZlcnNpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBJbnZhbGlkUmVjaXBlVHlwZWAsICdyZWNpcGUgbXVzdCBlaXRoZXIgYmUgYW4gaW1hZ2UgcmVjaXBlIG9yIGNvbnRhaW5lciByZWNpcGUnLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFNSSBJRCBvZiB0aGUgRUMyIEFNSSwgb3IgVVJJIGZvciB0aGUgY29udGFpbmVyXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGltYWdlSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZWNpcGUgPSB0aGlzLnByb3BzLnJlY2lwZTtcbiAgICBpZiAocmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmF0dHJJbWFnZUlkO1xuICAgIH0gZWxzZSBpZiAocmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRySW1hZ2VVcmk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBJbnZhbGlkUmVjaXBlVHlwZWAsICdyZWNpcGUgbXVzdCBlaXRoZXIgYmUgYW4gaW1hZ2UgcmVjaXBlIG9yIGNvbnRhaW5lciByZWNpcGUnLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENmbkltYWdlIHJlc291cmNlIGZyb20gdGhlIHJlY2lwZSBhbmQgcHJvcHMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVJbWFnZUZyb21SZWNpcGUocHJvcHM6IEltYWdlUHJvcHMpOiBbQ2ZuSW1hZ2UsIElSZWNpcGVCYXNlXSB7XG4gICAgY29uc3QgcmVjaXBlID0gcHJvcHMucmVjaXBlO1xuICAgIGlmIChJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uaXNJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24pKSB7XG4gICAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5fYmluZCh7IGlzQ29udGFpbmVyQnVpbGQ6IHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkgJiYgcmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgUmVjaXBlQ2Fubm90QmVCb3RoSW1hZ2VBbmRDb250YWluZXJgLCAndGhlIHJlY2lwZSBjYW5ub3QgYmUgYm90aCBhbiBJSW1hZ2VSZWNpcGUgYW5kIGFuIElDb250YWluZXJSZWNpcGUnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmICFyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBSZWNpcGVNdXN0QmVJbWFnZU9yQ29udGFpbmVyYCwgJ3RoZSByZWNpcGUgbXVzdCBlaXRoZXIgYmUgYW4gSUltYWdlUmVjaXBlIG9yIElDb250YWluZXJSZWNpcGUnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbWFnZSA9IG5ldyBDZm5JbWFnZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICAuLi4ocmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkgJiYgeyBpbWFnZVJlY2lwZUFybjogcmVjaXBlLmltYWdlUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSAmJiB7IGNvbnRhaW5lclJlY2lwZUFybjogcmVjaXBlLmNvbnRhaW5lclJlY2lwZUFybiB9KSxcbiAgICAgIGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybjogdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuLFxuICAgICAgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjogcHJvcHMuZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbj8uZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGV4ZWN1dGlvblJvbGU6IHRoaXMuZXhlY3V0aW9uUm9sZT8ucm9sZUFybixcbiAgICAgIGVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQ6IHByb3BzLmVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQsXG4gICAgICBsb2dnaW5nQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGltYWdlVGVzdHNDb25maWd1cmF0aW9uOiBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uPEltYWdlUHJvcHMsIENmbkltYWdlLkltYWdlVGVzdHNDb25maWd1cmF0aW9uUHJvcGVydHk+KFxuICAgICAgICBwcm9wcyxcbiAgICAgICksXG4gICAgICBpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQcm9wcyxcbiAgICAgICAgQ2ZuSW1hZ2UuSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPih0aGlzLCBwcm9wcyksXG4gICAgICB3b3JrZmxvd3M6IGJ1aWxkV29ya2Zsb3dzPEltYWdlUHJvcHMsIENmbkltYWdlLldvcmtmbG93Q29uZmlndXJhdGlvblByb3BlcnR5W10+KHByb3BzKSxcbiAgICAgIGRlbGV0aW9uU2V0dGluZ3M6IHRoaXMuYnVpbGREZWxldGlvblNldHRpbmdzKHByb3BzKSxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgfSk7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy1jbG91ZGZvcm1hdGlvbi9jbG91ZGZvcm1hdGlvbi12YWxpZGF0ZS9pc3N1ZXMvMTg2XG4gICAgY2RrLlZhbGlkYXRpb25zLm9mKGltYWdlKS5hY2tub3dsZWRnZSh7XG4gICAgICBpZDogJ0Nsb3VkRm9ybWF0aW9uLVZhbGlkYXRlOjpXMzAzMCcsXG4gICAgICByZWFzb246ICdPbkZhaWx1cmUgXCJBYm9ydFwiIGlzIGEgdmFsaWQgdmFsdWUgdGhhdCB3b3JrcywgbGVhdmluZyBpdCBmb3IgbGVnYWN5IHJlYXNvbnMuJyxcbiAgICB9KTtcblxuICAgIHJldHVybiBbaW1hZ2UsIHJlY2lwZV07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBsb2dnaW5nQ29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgTG9nZ2luZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzOiBJbWFnZVByb3BzKTogQ2ZuSW1hZ2UuSW1hZ2VMb2dnaW5nQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXByb3BzLmxvZ0dyb3VwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7IGxvZ0dyb3VwTmFtZTogcHJvcHMubG9nR3JvdXAubG9nR3JvdXBOYW1lIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBkZWxldGlvblNldHRpbmdzIHByb3BlcnR5IGludG8gdGhlIGBEZWxldGlvblNldHRpbmdzYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMSBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGREZWxldGlvblNldHRpbmdzKHByb3BzOiBJbWFnZVByb3BzKTogQ2ZuSW1hZ2UuRGVsZXRpb25TZXR0aW5nc1Byb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocHJvcHMuZGVsZXRpb25FeGVjdXRpb25Sb2xlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgZXhlY3V0aW9uUm9sZTogcHJvcHMuZGVsZXRpb25FeGVjdXRpb25Sb2xlLnJvbGVBcm4gfTtcbiAgfVxufVxuIl19
|
|
@@ -168,7 +168,7 @@ let InfrastructureConfiguration = (() => {
|
|
|
168
168
|
InfrastructureConfiguration = _classThis = _classDescriptor.value;
|
|
169
169
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
170
170
|
}
|
|
171
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.InfrastructureConfiguration", version: "2.
|
|
171
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.InfrastructureConfiguration", version: "2.262.1-alpha.0" };
|
|
172
172
|
/** Uniquely identifies this class. */
|
|
173
173
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.InfrastructureConfiguration';
|
|
174
174
|
/**
|
package/lib/lifecycle-policy.js
CHANGED
|
@@ -168,7 +168,7 @@ let LifecyclePolicy = (() => {
|
|
|
168
168
|
LifecyclePolicy = _classThis = _classDescriptor.value;
|
|
169
169
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
170
170
|
}
|
|
171
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy", version: "2.
|
|
171
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy", version: "2.262.1-alpha.0" };
|
|
172
172
|
/** Uniquely identifies this class. */
|
|
173
173
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.LifecyclePolicy';
|
|
174
174
|
/**
|
package/lib/os-version.js
CHANGED
|
@@ -25,7 +25,7 @@ var Platform;
|
|
|
25
25
|
* Represents an OS version for an EC2 Image Builder image
|
|
26
26
|
*/
|
|
27
27
|
class OSVersion {
|
|
28
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.OSVersion", version: "2.
|
|
28
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.OSVersion", version: "2.262.1-alpha.0" };
|
|
29
29
|
/**
|
|
30
30
|
* OS version for all Linux images
|
|
31
31
|
*/
|
package/lib/recipe-base.js
CHANGED
|
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
6
6
|
* The parameter value for a component parameter
|
|
7
7
|
*/
|
|
8
8
|
class ComponentParameterValue {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentParameterValue", version: "2.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentParameterValue", version: "2.262.1-alpha.0" };
|
|
10
10
|
/**
|
|
11
11
|
* The value of the parameter as a string
|
|
12
12
|
*
|
package/lib/workflow.js
CHANGED
|
@@ -235,7 +235,7 @@ var WorkflowType;
|
|
|
235
235
|
* Helper class for referencing and uploading workflow data
|
|
236
236
|
*/
|
|
237
237
|
class WorkflowData {
|
|
238
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowData", version: "2.
|
|
238
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowData", version: "2.262.1-alpha.0" };
|
|
239
239
|
/**
|
|
240
240
|
* Uploads workflow data from a local file to S3 to use as the workflow data
|
|
241
241
|
*
|
|
@@ -280,7 +280,7 @@ exports.WorkflowData = WorkflowData;
|
|
|
280
280
|
* Helper class for S3-based workflow data references, containing additional permission grant methods on the S3 object
|
|
281
281
|
*/
|
|
282
282
|
class S3WorkflowData extends WorkflowData {
|
|
283
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3WorkflowData", version: "2.
|
|
283
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3WorkflowData", version: "2.262.1-alpha.0" };
|
|
284
284
|
bucket;
|
|
285
285
|
key;
|
|
286
286
|
constructor(bucket, key) {
|
|
@@ -341,7 +341,7 @@ class S3WorkflowDataFromAsset extends S3WorkflowData {
|
|
|
341
341
|
* The parameter value for a workflow parameter
|
|
342
342
|
*/
|
|
343
343
|
class WorkflowParameterValue {
|
|
344
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowParameterValue", version: "2.
|
|
344
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowParameterValue", version: "2.262.1-alpha.0" };
|
|
345
345
|
/**
|
|
346
346
|
* The value of the parameter as a boolean
|
|
347
347
|
*
|
|
@@ -437,7 +437,7 @@ let Workflow = (() => {
|
|
|
437
437
|
Workflow = _classThis = _classDescriptor.value;
|
|
438
438
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
439
439
|
}
|
|
440
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Workflow", version: "2.
|
|
440
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Workflow", version: "2.262.1-alpha.0" };
|
|
441
441
|
/** Uniquely identifies this class. */
|
|
442
442
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Workflow';
|
|
443
443
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-imagebuilder-alpha",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.262.1-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The CDK Construct Library for EC2 Image Builder",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -77,14 +77,14 @@
|
|
|
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.262.1-alpha.0",
|
|
81
|
+
"@aws-cdk/integ-runner": "^2.202.3",
|
|
82
|
+
"@aws-cdk/integ-tests-alpha": "2.262.1-alpha.0",
|
|
83
|
+
"@aws-cdk/pkglint": "2.262.1-alpha.0",
|
|
84
84
|
"@aws-sdk/client-inspector2": "^3",
|
|
85
|
-
"@types/aws-lambda": "^8.10.
|
|
85
|
+
"@types/aws-lambda": "^8.10.162",
|
|
86
86
|
"@types/jest": "^29.5.14",
|
|
87
|
-
"aws-cdk-lib": "2.
|
|
87
|
+
"aws-cdk-lib": "2.262.1",
|
|
88
88
|
"constructs": "^10.5.0",
|
|
89
89
|
"jest": "^29.7.0"
|
|
90
90
|
},
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
],
|
|
97
97
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
98
98
|
"peerDependencies": {
|
|
99
|
-
"aws-cdk-lib": "^2.
|
|
99
|
+
"aws-cdk-lib": "^2.262.1",
|
|
100
100
|
"constructs": "^10.5.0"
|
|
101
101
|
},
|
|
102
102
|
"engines": {
|