@aws-cdk/aws-imagebuilder-alpha 2.235.0-alpha.0 → 2.236.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +539 -539
- package/.jsii.tabl.json.gz +0 -0
- package/awslint.json +11 -1
- 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.d.ts +6 -11
- package/lib/component.js +47 -38
- package/lib/container-recipe.d.ts +4 -12
- package/lib/container-recipe.js +28 -23
- package/lib/distribution-configuration.d.ts +3 -8
- package/lib/distribution-configuration.js +18 -14
- package/lib/image-pipeline.d.ts +3 -8
- package/lib/image-pipeline.js +18 -13
- package/lib/image-recipe.d.ts +4 -12
- package/lib/image-recipe.js +25 -20
- package/lib/image.d.ts +10 -18
- package/lib/image.js +54 -35
- package/lib/infrastructure-configuration.d.ts +3 -8
- package/lib/infrastructure-configuration.js +26 -20
- package/lib/lifecycle-policy.d.ts +3 -8
- package/lib/lifecycle-policy.js +26 -20
- package/lib/os-version.js +1 -1
- package/lib/recipe-base.js +1 -1
- package/lib/workflow.d.ts +3 -8
- package/lib/workflow.js +29 -24
- package/package.json +7 -7
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/awslint.json
CHANGED
|
@@ -46,6 +46,16 @@
|
|
|
46
46
|
"prefer-ref-interface:aws-cdk-lib.aws_ec2.InterfaceVpcEndpointOptions.securityGroups",
|
|
47
47
|
"prefer-ref-interface:@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicyResourceSelection.recipes",
|
|
48
48
|
"prefer-ref-interface:@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicyProps.executionRole",
|
|
49
|
-
"prefer-ref-interface:@aws-cdk/aws-imagebuilder-alpha.WorkflowProps.kmsKey"
|
|
49
|
+
"prefer-ref-interface:@aws-cdk/aws-imagebuilder-alpha.WorkflowProps.kmsKey",
|
|
50
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IComponent",
|
|
51
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IContainerRecipe",
|
|
52
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IDistributionConfiguration",
|
|
53
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IImage",
|
|
54
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IImagePipeline",
|
|
55
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IImageRecipe",
|
|
56
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IInfrastructureConfiguration",
|
|
57
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.ILifecyclePolicy",
|
|
58
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IRecipeBase",
|
|
59
|
+
"interface-extends-ref:@aws-cdk/aws-imagebuilder-alpha.IWorkflow"
|
|
50
60
|
]
|
|
51
61
|
}
|
|
@@ -11,7 +11,7 @@ const constants_1 = require("./private/constants");
|
|
|
11
11
|
* Helper class for working with Amazon-managed components
|
|
12
12
|
*/
|
|
13
13
|
class AmazonManagedComponent {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedComponent", version: "2.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedComponent", version: "2.236.0-alpha.0" };
|
|
15
15
|
/**
|
|
16
16
|
* Imports the AWS CLI v2 Amazon-managed component
|
|
17
17
|
*
|
|
@@ -10,7 +10,7 @@ const constants_1 = require("./private/constants");
|
|
|
10
10
|
* Helper class for working with Amazon-managed images
|
|
11
11
|
*/
|
|
12
12
|
class AmazonManagedImage {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedImage", version: "2.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedImage", version: "2.236.0-alpha.0" };
|
|
14
14
|
/**
|
|
15
15
|
* Imports the Amazon Linux 2 Amazon-managed image
|
|
16
16
|
*
|
|
@@ -10,7 +10,7 @@ const workflow_1 = require("./workflow");
|
|
|
10
10
|
* Helper class for working with Amazon-managed workflows
|
|
11
11
|
*/
|
|
12
12
|
class AmazonManagedWorkflow {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedWorkflow", version: "2.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedWorkflow", version: "2.236.0-alpha.0" };
|
|
14
14
|
/**
|
|
15
15
|
* Imports the build-container Amazon-managed workflow
|
|
16
16
|
*
|
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.236.0-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.236.0-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.236.0-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.d.ts
CHANGED
|
@@ -724,14 +724,6 @@ export declare class Component extends ComponentBase {
|
|
|
724
724
|
* Return whether the given object is a Component.
|
|
725
725
|
*/
|
|
726
726
|
static isComponent(x: any): x is Component;
|
|
727
|
-
/**
|
|
728
|
-
* The ARN of the component
|
|
729
|
-
*/
|
|
730
|
-
readonly componentArn: string;
|
|
731
|
-
/**
|
|
732
|
-
* The name of the component
|
|
733
|
-
*/
|
|
734
|
-
readonly componentName: string;
|
|
735
727
|
/**
|
|
736
728
|
* The version of the component
|
|
737
729
|
*/
|
|
@@ -740,14 +732,17 @@ export declare class Component extends ComponentBase {
|
|
|
740
732
|
* Whether the component is encrypted
|
|
741
733
|
*/
|
|
742
734
|
readonly encrypted: boolean;
|
|
735
|
+
protected readonly kmsKey?: kms.IKey;
|
|
736
|
+
private resource;
|
|
737
|
+
constructor(scope: Construct, id: string, props: ComponentProps);
|
|
738
|
+
get componentName(): string;
|
|
739
|
+
get componentArn(): string;
|
|
743
740
|
/**
|
|
744
741
|
* The type of the component
|
|
745
742
|
*
|
|
746
743
|
* @attribute
|
|
747
744
|
*/
|
|
748
|
-
|
|
749
|
-
protected readonly kmsKey?: kms.IKey;
|
|
750
|
-
constructor(scope: Construct, id: string, props: ComponentProps);
|
|
745
|
+
get componentType(): string;
|
|
751
746
|
private validateComponentName;
|
|
752
747
|
}
|
|
753
748
|
export {};
|
package/lib/component.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
3
|
+
var useValue = arguments.length > 2;
|
|
4
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
5
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
6
|
+
}
|
|
7
|
+
return useValue ? value : void 0;
|
|
8
|
+
};
|
|
2
9
|
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
10
|
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
11
|
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
@@ -26,13 +33,6 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
|
|
|
26
33
|
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
34
|
done = true;
|
|
28
35
|
};
|
|
29
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
-
var useValue = arguments.length > 2;
|
|
31
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
-
}
|
|
34
|
-
return useValue ? value : void 0;
|
|
35
|
-
};
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
37
|
exports.Component = exports.AwsMarketplaceComponent = exports.S3ComponentData = exports.ComponentData = exports.ComponentStepIfCondition = exports.ComponentStepInputs = exports.ComponentSchemaVersion = exports.ComponentPhaseName = exports.ComponentParameterType = exports.ComponentOnFailure = exports.ComponentAction = exports.ComponentConstantValue = void 0;
|
|
38
38
|
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
@@ -41,6 +41,7 @@ const cdk = require("aws-cdk-lib");
|
|
|
41
41
|
const iam = require("aws-cdk-lib/aws-iam");
|
|
42
42
|
const aws_imagebuilder_1 = require("aws-cdk-lib/aws-imagebuilder");
|
|
43
43
|
const s3assets = require("aws-cdk-lib/aws-s3-assets");
|
|
44
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
44
45
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
45
46
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
46
47
|
const yaml = require("yaml");
|
|
@@ -50,7 +51,7 @@ const LATEST_VERSION = 'x.x.x';
|
|
|
50
51
|
* The value of a constant in a component document
|
|
51
52
|
*/
|
|
52
53
|
class ComponentConstantValue {
|
|
53
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentConstantValue", version: "2.
|
|
54
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentConstantValue", version: "2.236.0-alpha.0" };
|
|
54
55
|
/**
|
|
55
56
|
* Creates a string type constant in a component document
|
|
56
57
|
*
|
|
@@ -267,7 +268,7 @@ var ComponentSchemaVersion;
|
|
|
267
268
|
* Represents the inputs for a step in the component document
|
|
268
269
|
*/
|
|
269
270
|
class ComponentStepInputs {
|
|
270
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepInputs", version: "2.
|
|
271
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepInputs", version: "2.236.0-alpha.0" };
|
|
271
272
|
/**
|
|
272
273
|
* Creates the input value from an object, for the component step
|
|
273
274
|
*
|
|
@@ -297,7 +298,7 @@ exports.ComponentStepInputs = ComponentStepInputs;
|
|
|
297
298
|
* Represents an `if` condition in the component document
|
|
298
299
|
*/
|
|
299
300
|
class ComponentStepIfCondition {
|
|
300
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepIfCondition", version: "2.
|
|
301
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepIfCondition", version: "2.236.0-alpha.0" };
|
|
301
302
|
/**
|
|
302
303
|
* Creates the `if` value from an object, for the component step
|
|
303
304
|
*
|
|
@@ -319,7 +320,7 @@ exports.ComponentStepIfCondition = ComponentStepIfCondition;
|
|
|
319
320
|
* Helper class for referencing and uploading component data
|
|
320
321
|
*/
|
|
321
322
|
class ComponentData {
|
|
322
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentData", version: "2.
|
|
323
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentData", version: "2.236.0-alpha.0" };
|
|
323
324
|
/**
|
|
324
325
|
* Uploads component data from a local file to S3 to use as the component data
|
|
325
326
|
*
|
|
@@ -406,7 +407,7 @@ exports.ComponentData = ComponentData;
|
|
|
406
407
|
* Helper class for S3-based component data references, containing additional permission grant methods on the S3 object
|
|
407
408
|
*/
|
|
408
409
|
class S3ComponentData extends ComponentData {
|
|
409
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3ComponentData", version: "2.
|
|
410
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3ComponentData", version: "2.236.0-alpha.0" };
|
|
410
411
|
bucket;
|
|
411
412
|
key;
|
|
412
413
|
constructor(bucket, key) {
|
|
@@ -467,7 +468,7 @@ class S3ComponentDataFromAsset extends S3ComponentData {
|
|
|
467
468
|
* Helper class for working with AWS Marketplace components
|
|
468
469
|
*/
|
|
469
470
|
class AwsMarketplaceComponent {
|
|
470
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AwsMarketplaceComponent", version: "2.
|
|
471
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AwsMarketplaceComponent", version: "2.236.0-alpha.0" };
|
|
471
472
|
/**
|
|
472
473
|
* Imports an AWS Marketplace component from its attributes
|
|
473
474
|
*
|
|
@@ -535,15 +536,25 @@ let Component = (() => {
|
|
|
535
536
|
let _classExtraInitializers = [];
|
|
536
537
|
let _classThis;
|
|
537
538
|
let _classSuper = ComponentBase;
|
|
539
|
+
let _instanceExtraInitializers = [];
|
|
540
|
+
let _get_componentName_decorators;
|
|
541
|
+
let _get_componentArn_decorators;
|
|
542
|
+
let _get_componentType_decorators;
|
|
538
543
|
var Component = class extends _classSuper {
|
|
539
544
|
static { _classThis = this; }
|
|
540
545
|
static {
|
|
541
546
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
547
|
+
_get_componentName_decorators = [helpers_internal_1.memoizedGetter];
|
|
548
|
+
_get_componentArn_decorators = [helpers_internal_1.memoizedGetter];
|
|
549
|
+
_get_componentType_decorators = [helpers_internal_1.memoizedGetter];
|
|
550
|
+
__esDecorate(this, null, _get_componentName_decorators, { kind: "getter", name: "componentName", static: false, private: false, access: { has: obj => "componentName" in obj, get: obj => obj.componentName }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
551
|
+
__esDecorate(this, null, _get_componentArn_decorators, { kind: "getter", name: "componentArn", static: false, private: false, access: { has: obj => "componentArn" in obj, get: obj => obj.componentArn }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
552
|
+
__esDecorate(this, null, _get_componentType_decorators, { kind: "getter", name: "componentType", static: false, private: false, access: { has: obj => "componentType" in obj, get: obj => obj.componentType }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
542
553
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
543
554
|
Component = _classThis = _classDescriptor.value;
|
|
544
555
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
545
556
|
}
|
|
546
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Component", version: "2.
|
|
557
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Component", version: "2.236.0-alpha.0" };
|
|
547
558
|
/** Uniquely identifies this class. */
|
|
548
559
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Component';
|
|
549
560
|
/**
|
|
@@ -607,29 +618,16 @@ let Component = (() => {
|
|
|
607
618
|
static isComponent(x) {
|
|
608
619
|
return x !== null && typeof x === 'object' && COMPONENT_SYMBOL in x;
|
|
609
620
|
}
|
|
610
|
-
/**
|
|
611
|
-
* The ARN of the component
|
|
612
|
-
*/
|
|
613
|
-
componentArn;
|
|
614
|
-
/**
|
|
615
|
-
* The name of the component
|
|
616
|
-
*/
|
|
617
|
-
componentName;
|
|
618
621
|
/**
|
|
619
622
|
* The version of the component
|
|
620
623
|
*/
|
|
621
|
-
componentVersion;
|
|
624
|
+
componentVersion = __runInitializers(this, _instanceExtraInitializers);
|
|
622
625
|
/**
|
|
623
626
|
* Whether the component is encrypted
|
|
624
627
|
*/
|
|
625
628
|
encrypted;
|
|
626
|
-
/**
|
|
627
|
-
* The type of the component
|
|
628
|
-
*
|
|
629
|
-
* @attribute
|
|
630
|
-
*/
|
|
631
|
-
componentType;
|
|
632
629
|
kmsKey;
|
|
630
|
+
resource;
|
|
633
631
|
constructor(scope, id, props) {
|
|
634
632
|
super(scope, id, {
|
|
635
633
|
physicalName: props.componentName ??
|
|
@@ -661,7 +659,7 @@ let Component = (() => {
|
|
|
661
659
|
});
|
|
662
660
|
const componentVersion = props.componentVersion ?? '1.0.0';
|
|
663
661
|
const supportedOsVersions = props.supportedOsVersions?.filter((osVersion) => osVersion.osVersion !== undefined);
|
|
664
|
-
|
|
662
|
+
this.resource = new aws_imagebuilder_1.CfnComponent(this, 'Resource', {
|
|
665
663
|
name: this.physicalName,
|
|
666
664
|
version: componentVersion,
|
|
667
665
|
changeDescription: props.changeDescription,
|
|
@@ -674,17 +672,28 @@ let Component = (() => {
|
|
|
674
672
|
}),
|
|
675
673
|
...props.data.render(),
|
|
676
674
|
});
|
|
677
|
-
this.componentName = this.getResourceNameAttribute(component.attrName);
|
|
678
|
-
this.componentArn = this.getResourceArnAttribute(component.attrArn, {
|
|
679
|
-
service: 'imagebuilder',
|
|
680
|
-
resource: 'component',
|
|
681
|
-
resourceName: `${this.physicalName}/${componentVersion}`,
|
|
682
|
-
});
|
|
683
675
|
this.componentVersion = componentVersion;
|
|
684
676
|
this.encrypted = true; // Components are always encrypted
|
|
685
|
-
this.componentType = component.attrType;
|
|
686
677
|
this.kmsKey = props.kmsKey;
|
|
687
678
|
}
|
|
679
|
+
get componentName() {
|
|
680
|
+
return this.getResourceNameAttribute(this.resource.attrName);
|
|
681
|
+
}
|
|
682
|
+
get componentArn() {
|
|
683
|
+
return this.getResourceArnAttribute(this.resource.attrArn, {
|
|
684
|
+
service: 'imagebuilder',
|
|
685
|
+
resource: 'component',
|
|
686
|
+
resourceName: `${this.physicalName}/${this.componentVersion}`,
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* The type of the component
|
|
691
|
+
*
|
|
692
|
+
* @attribute
|
|
693
|
+
*/
|
|
694
|
+
get componentType() {
|
|
695
|
+
return this.resource.attrType;
|
|
696
|
+
}
|
|
688
697
|
validateComponentName() {
|
|
689
698
|
if (cdk.Token.isUnresolved(this.physicalName)) {
|
|
690
699
|
return; // Cannot validate unresolved tokens, given their actual value is rendered at deployment time
|
|
@@ -709,4 +718,4 @@ let Component = (() => {
|
|
|
709
718
|
return Component = _classThis;
|
|
710
719
|
})();
|
|
711
720
|
exports.Component = Component;
|
|
712
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFtQztBQUNuQywyQ0FBMkM7QUFDM0MsbUVBQTREO0FBRzVELHNEQUFzRDtBQUN0RCw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRTFFLDZCQUE2QjtBQUc3QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQztBQUVqRixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUM7QUErVC9COztHQUVHO0FBQ0gsTUFBYSxzQkFBc0I7O0lBQ2pDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWE7UUFDcEMsT0FBTyxJQUFJLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNwRDtJQUVEOztPQUVHO0lBQ2EsSUFBSSxDQUFTO0lBRTdCOztPQUVHO0lBQ2EsS0FBSyxDQUFNO0lBRTNCLFlBQXNCLElBQVksRUFBRSxLQUFVO1FBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQXZCSCx3REF3QkM7QUEwQkQ7O0dBRUc7QUFDSCxJQUFZLGVBd0pYO0FBeEpELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILDZDQUEwQixDQUFBO0lBRTFCOzs7T0FHRztJQUNILG9DQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gseUNBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCw2Q0FBMEIsQ0FBQTtJQUUxQjs7T0FFRztJQUNILDZDQUEwQixDQUFBO0lBRTFCOztPQUVHO0lBQ0gsaURBQThCLENBQUE7SUFFOUI7O09BRUc7SUFDSCxtREFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDZDQUEwQixD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QUFpRSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQ3JGLElBQUksQ0FDTCxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsa0RBQWtELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyx1REFBdUQsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25ILENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUMxRCxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyw4Q0FBOEMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzFHLENBQUM7U0FDRjs7WUF4TFUsdURBQVM7Ozs7O0FBQVQsOEJBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuQ29tcG9uZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNhc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBPU1ZlcnNpb24sIFBsYXRmb3JtIH0gZnJvbSAnLi9vcy12ZXJzaW9uJztcblxuY29uc3QgQ09NUE9ORU5UX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuQ29tcG9uZW50Jyk7XG5cbmNvbnN0IExBVEVTVF9WRVJTSU9OID0gJ3gueC54JztcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBDb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBvbmVudCBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjb21wb25lbnRWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIENvbXBvbmVudCByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgZG9jdW1lbnQgY29udGVudCB0aGF0IGRlZmluZXMgdGhlIGJ1aWxkLCB2YWxpZGF0aW9uLCBvciB0ZXN0IHN0ZXBzIHRvIGJlIGV4ZWN1dGVkIGR1cmluZyB0aGUgaW1hZ2VcbiAgICogYnVpbGRpbmcgcHJvY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IENvbXBvbmVudERhdGE7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpbmcgc3lzdGVtIHBsYXRmb3JtIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogUGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgMS4wLjBcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNoYW5nZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29tcG9uZW50LiBEZXNjcmliZXMgd2hhdCBjaGFuZ2UgaGFzIGJlZW4gbWFkZSBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudCwgb3JcbiAgICogd2hhdCBtYWtlcyB0aGlzIHZlcnNpb24gZGlmZmVyZW50IGZyb20gb3RoZXIgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZURlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhpcyBjb21wb25lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gSW1hZ2UgQnVpbGRlciBvd25lZCBrZXkgd2lsbCBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkT3NWZXJzaW9ucz86IE9TVmVyc2lvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFuIEVDMiBJbWFnZSBCdWlsZGVyIGNvbXBvbmVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIEFSTiBpcyBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdGVkIGlmIGEgY29tcG9uZW50TmFtZSBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGEgY29tcG9uZW50QXJuIGlzXG4gICAqICAgICAgICAgICAgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBuYW1lIGlzIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0ZWQgaWYgYSBjb21wb25lbnRBcm4gaXMgcHJvdmlkZWQsIG90aGVyd2lzZSBhIGNvbXBvbmVudE5hbWUgaXNcbiAgICogICAgICAgICAgICByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgY29tcG9uZW50LCB4LngueFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50VmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFQzIgSW1hZ2UgQnVpbGRlciBBV1MgTWFya2V0cGxhY2UgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXdzTWFya2V0cGxhY2VDb21wb25lbnRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBV1MgTWFya2V0cGxhY2UgY29tcG9uZW50LiBUaGlzIG5hbWUgc2hvdWxkIGV4Y2x1ZGUgdGhlIG1hcmtldHBsYWNlIHByb2R1Y3QgSUQgZnJvbSBpdFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWFya2V0cGxhY2UgcHJvZHVjdCBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcmVhZG9ubHkgbWFya2V0cGxhY2VQcm9kdWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEFXUyBNYXJrZXRwbGFjZSBjb21wb25lbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudCwgeC54LnhcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudFZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhbiBFQzIgSW1hZ2UgQnVpbGRlciBDb21wb25lbnQgRG9jdW1lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREb2N1bWVudCB7XG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZW1hVmVyc2lvbjogQ29tcG9uZW50U2NoZW1hVmVyc2lvbjtcblxuICAvKipcbiAgICogVGhlIHBoYXNlcyB3aGljaCBkZWZpbmUgdGhlIGdyb3VwaW5nIG9mIHN0ZXBzIHRvIHJ1biBpbiB0aGUgYnVpbGQgYW5kIHRlc3Qgd29ya2Zsb3dzIG9mIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHJlYWRvbmx5IHBoYXNlczogQ29tcG9uZW50RG9jdW1lbnRQaGFzZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBkb2N1bWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50cyB0byBkZWZpbmUgaW4gdGhlIGRvY3VtZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0YW50cz86IHsgW2NvbnN0YW50TmFtZTogc3RyaW5nXTogQ29tcG9uZW50Q29uc3RhbnRWYWx1ZSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVycyB0byBkZWZpbmUgaW4gdGhlIGRvY3VtZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiB7IFtwYXJhbWV0ZXJOYW1lOiBzdHJpbmddOiBDb21wb25lbnREb2N1bWVudFBhcmFtZXRlckRlZmluaXRpb24gfTtcbn1cblxuLyoqXG4gKiBUaGUgcGhhc2UgdG8gcnVuIGluIGEgc3BlY2lmaWMgd29ya2Zsb3cgaW4gYW4gaW1hZ2UgYnVpbGQsIHdoaWNoIGRlZmluZSB0aGUgc3RlcHMgdG8gZXhlY3V0ZSB0byBjdXN0b21pemUgb3IgdGVzdFxuICogdGhlIGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERvY3VtZW50UGhhc2Uge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBoYXNlXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBDb21wb25lbnRQaGFzZU5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHN0ZXBzIHRvIGV4ZWN1dGUgdG8gbW9kaWZ5IG9yIHRlc3QgdGhlIGJ1aWxkL3Rlc3QgaW5zdGFuY2VcbiAgICovXG4gIHJlYWRvbmx5IHN0ZXBzOiBDb21wb25lbnREb2N1bWVudFN0ZXBbXTtcbn1cblxuLyoqXG4gKiBUaGUgc3RlcCB0byBydW4gaW4gYSBzcGVjaWZpYyBwaGFzZSBvZiB0aGUgaW1hZ2UgYnVpbGQsIHdoaWNoIGRlZmluZXMgdGhlIHN0ZXAgdG8gZXhlY3V0ZSB0byBjdXN0b21pemUgb3IgdGVzdCB0aGVcbiAqIGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERvY3VtZW50U3RlcCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3RlcFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gaW4gdGhlIHN0ZXBcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbjogQ29tcG9uZW50QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBDb250YWlucyBwYXJhbWV0ZXJzIHJlcXVpcmVkIGJ5IHRoZSBhY3Rpb24gdG8gcnVuIHRoZSBzdGVwXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL3RvZS1hY3Rpb24tbW9kdWxlcy5odG1sXG4gICAqL1xuICByZWFkb25seSBpbnB1dHM6IENvbXBvbmVudFN0ZXBJbnB1dHM7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25kaXRpb24gdG8gYXBwbHkgdG8gdGhlIHN0ZXAuIElmIHRoZSBjb25kaXRpb24gaXMgZmFsc2UsIHRoZW4gdGhlIHN0ZXAgaXMgc2tpcHBlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbmRpdGlvbiBpcyBhcHBsaWVkIHRvIHRoZSBzdGVwIGFuZCBpdCBnZXRzIGV4ZWN1dGVkXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL3RvZS1jb25kaXRpb25hbC1jb25zdHJ1Y3RzLmh0bWxcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvdG9lLWNvbXBhcmlzb24tb3BlcmF0b3JzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGlmPzogQ29tcG9uZW50U3RlcElmQ29uZGl0aW9uO1xuXG4gIC8qKlxuICAgKiBBIGxvb3BpbmcgY29uc3RydWN0IGRlZmluaW5nIGEgcmVwZWF0ZWQgc2VxdWVuY2Ugb2YgaW5zdHJ1Y3Rpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb3A/OiBDb21wb25lbnREb2N1bWVudExvb3A7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IG9mIHRoZSBzdGVwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMTIwIG1pbnV0ZXNcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGF0IHRoZSBzdGVwIHNob3VsZCBkbyBpbiBjYXNlIG9mIGZhaWx1cmVcbiAgICpcbiAgICogQGRlZmF1bHQgQ29tcG9uZW50T25GYWlsdXJlLkFCT1JUXG4gICAqL1xuICByZWFkb25seSBvbkZhaWx1cmU/OiBDb21wb25lbnRPbkZhaWx1cmU7XG59XG5cbi8qKlxuICogVGhlIGxvb3BpbmcgY29uc3RydWN0IG9mIGEgY29tcG9uZW50IGRlZmluZXMgYSByZXBlYXRlZCBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREb2N1bWVudExvb3Age1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxvb3AsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZVxuICAgKlxuICAgKiBAZGVmYXVsdCBsb29wXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9yIGxvb3AgaXRlcmF0ZXMgb24gYSByYW5nZSBvZiBpbnRlZ2VycyBzcGVjaWZpZWQgd2l0aGluIGEgYm91bmRhcnkgb3V0bGluZWQgYnkgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlXG4gICAqIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgYGZvckVhY2hgIGlzIHByb3ZpZGVkLiBvdGhlcndpc2UsIGBmb3JgIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9yPzogQ29tcG9uZW50RG9jdW1lbnRGb3JMb29wO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9yRWFjaCBsb29wIGl0ZXJhdGVzIG9uIGFuIGV4cGxpY2l0IGxpc3Qgb2YgdmFsdWVzLCB3aGljaCBjYW4gYmUgc3RyaW5ncyBhbmQgY2hhaW5lZCBleHByZXNzaW9uc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgYGZvcmAgaXMgcHJvdmlkZWQuIG90aGVyd2lzZSwgYGZvckVhY2hgIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9yRWFjaD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBmb3IgbG9vcCBpdGVyYXRlcyBvbiBhIHJhbmdlIG9mIGludGVnZXJzIHNwZWNpZmllZCB3aXRoaW4gYSBib3VuZGFyeSBvdXRsaW5lZCBieSB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGVcbiAqIHZhcmlhYmxlcy4gVGhlIGl0ZXJhdGluZyB2YWx1ZXMgYXJlIGluIHRoZSBzZXQgW3N0YXJ0LCBlbmRdIGFuZCBpbmNsdWRlcyBib3VuZGFyeSB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RG9jdW1lbnRGb3JMb29wIHtcbiAgLyoqXG4gICAqIFN0YXJ0aW5nIHZhbHVlIG9mIGl0ZXJhdGlvbi4gRG9lcyBub3QgYWNjZXB0IGNoYWluaW5nIGV4cHJlc3Npb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEVuZGluZyB2YWx1ZSBvZiBpdGVyYXRpb24uIERvZXMgbm90IGFjY2VwdCBjaGFpbmluZyBleHByZXNzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGVuZDogbnVtYmVyO1xuICAvKipcbiAgICogRGlmZmVyZW5jZSBieSB3aGljaCBhbiBpdGVyYXRpbmcgdmFsdWUgaXMgdXBkYXRlZCB0aHJvdWdoIGFkZGl0aW9uLiBJdCBtdXN0IGJlIGEgbmVnYXRpdmUgb3IgcG9zaXRpdmUgbm9uLXplcm9cbiAgICogdmFsdWUuIERvZXMgbm90IGFjY2VwdCBjaGFpbmluZyBleHByZXNzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZUJ5OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHZhbHVlIG9mIGEgY29uc3RhbnQgaW4gYSBjb21wb25lbnQgZG9jdW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvbmVudENvbnN0YW50VmFsdWUge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHN0cmluZyB0eXBlIGNvbnN0YW50IGluIGEgY29tcG9uZW50IGRvY3VtZW50XG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGNvbnN0YW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IENvbXBvbmVudENvbnN0YW50VmFsdWUge1xuICAgIHJldHVybiBuZXcgQ29tcG9uZW50Q29uc3RhbnRWYWx1ZSgnc3RyaW5nJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIHR5cGUgb2YgdGhlIGNvbnN0YW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGNvbnN0YW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgcGFyYW1ldGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RG9jdW1lbnRQYXJhbWV0ZXJEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXJcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IENvbXBvbmVudFBhcmFtZXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lLCBpbmRpY2F0aW5nIHRoZSBwYXJhbWV0ZXIgaXMgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gZm9yIGEgc3RlcCB3aXRoaW4gdGhlIGNvbXBvbmVudCBkb2N1bWVudFxuICovXG5leHBvcnQgZW51bSBDb21wb25lbnRBY3Rpb24ge1xuICAvKipcbiAgICogVGhlIEFwcGVuZEZpbGUgYWN0aW9uIGFkZHMgdGhlIHByb3ZpZGVkIGNvbnRlbnQgdG8gdGhlIHByZS1leGlzdGluZyBjb250ZW50IG9mIGEgZmlsZVxuICAgKi9cbiAgQVBQRU5EX0ZJTEUgPSAnQXBwZW5kRmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBBc3NlcnQgYWN0aW9uIHBlcmZvcm1zIHZhbHVlIHdpdGggY29tcGFyaXNvbi9sb2dpYyBvcGVyYXRvcnMsIGFuZCBzdWNjZWVkcy9mYWlscyB0aGUgc3RlcCBiYXNlZCBvbiB0aGUgb3V0Y29tZVxuICAgKiBvZiB0aGUgYXNzZXJ0aW9uXG4gICAqL1xuICBBU1NFUlQgPSAnQXNzZXJ0JyxcblxuICAvKipcbiAgICogVGhlIENvcHlGaWxlIGFjdGlvbiBjb3BpZXMgZmlsZXMgZnJvbSBhIHNvdXJjZSBmaWxlIHRvIGEgZGVzdGluYXRpb25cbiAgICovXG4gIENPUFlfRklMRSA9ICdDb3B5RmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBDb3B5Rm9sZGVyIGFjdGlvbiBjb3BpZXMgZm9sZGVycyBmcm9tIGEgc291cmNlIHRvIGEgZGVzdGluYXRpb25cbiAgICovXG4gIENPUFlfRk9MREVSID0gJ0NvcHlGb2xkZXInLFxuXG4gIC8qKlxuICAgKiBUaGUgQ3JlYXRlRmlsZSBhY3Rpb24gY3JlYXRlcyBhIGZpbGUgaW4gdGhlIHByb3ZpZGVkIGxvY2F0aW9uXG4gICAqL1xuICBDUkVBVEVfRklMRSA9ICdDcmVhdGVGaWxlJyxcblxuICAvKipcbiAgICogVGhlIENyZWF0ZUZvbGRlciBhY3Rpb24gY3JlYXRlcyBhIGZvbGRlciBpbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIENSRUFURV9GT0xERVIgPSAnQ3JlYXRlRm9sZGVyJyxcblxuICAvKipcbiAgICogVGhlIENyZWF0ZVN5bWxpbmsgYWN0aW9uIGNyZWF0ZXMgc3ltYm9saWMgbGlua3MgZnJvbSBhIGdpdmVuIHBhdGggdG8gYSB0YXJnZXRcbiAgICovXG4gIENSRUFURV9TWU1MSU5LID0gJ0NyZWF0ZVN5bWxpbmsnLFxuXG4gIC8qKlxuICAgKiBUaGUgRGVsZXRlRmlsZSBhY3Rpb24gZGVsZXRlcyBmaWxlKHMpIGluIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgREVMRVRFX0ZJTEUgPSAnRGVsZXRlRmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBEZWxldGVGb2xkZXIgYWN0aW9uIGRlbGV0ZXMgZm9sZGVycyBpbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIERFTEVURV9GT0xERVIgPSAnRGVsZXRlRm9sZGVyJyxcblxuICAvKipcbiAgICogVGhlIEV4ZWN1dGVCYXNoIGFjdGlvbiBydW5zIGJhc2ggc2NyaXB0cyB3aXRoIGlubGluZSBiYXNoIGNvbW1hbmRzXG4gICAqL1xuICBFWEVDVVRFX0JBU0ggPSAnRXhlY3V0ZUJhc2gnLFxuXG4gIC8qKlxuICAgKiBUaGUgRXhlY3V0ZUJpbmFyeSBhY3Rpb24gcnVucyBhIHByb3ZpZGVkIGJpbmFyeSBleGVjdXRhYmxlXG4gICAqL1xuICBFWEVDVVRFX0JJTkFSWSA9ICdFeGVjdXRlQmluYXJ5JyxcblxuICAvKipcbiAgICogVGhlIEV4ZWN1dGVEb2N1bWVudCBhY3Rpb24gYWxsb3dzIHJ1bm5pbmcgb3RoZXIgY29tcG9uZW50IGRvY3VtZW50cyBmcm9tIHdpdGhpbiBhIGdpdmVuIGNvbXBvbmVudFxuICAgKi9cbiAgRVhFQ1VURV9ET0NVTUVOVCA9ICdFeGVjdXRlRG9jdW1lbnQnLFxuXG4gIC8qKlxuICAgKiBUaGUgRXhlY3V0ZVBvd2Vyc2hlbGwgYWN0aW9uIHJ1bnMgUG93ZXJTaGVsbCBzY3JpcHRzIHdpdGggaW5saW5lIFBvd2VyU2hlbGwgY29tbWFuZHNcbiAgICovXG4gIEVYRUNVVEVfUE9XRVJTSEVMTCA9ICdFeGVjdXRlUG93ZXJTaGVsbCcsXG5cbiAgLyoqXG4gICAqIFRoZSBJbnN0YWxsTVNJIGFjdGlvbiBydW5zIGEgV2luZG93cyBhcHBsaWNhdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBNU0kgZmlsZVxuICAgKi9cbiAgSU5TVEFMTF9NU0kgPSAnSW5zdGFsbE1TSScsXG5cbiAgLyoqXG4gICAqIFRoZSBMaXN0RmlsZXMgYWN0aW9uIGxpc3RzIGZpbGVzIGluIHRoZSBwcm92aWRlZCBmb2xkZXJcbiAgICovXG4gIExJU1RfRklMRVMgPSAnTGlzdEZpbGVzJyxcblxuICAvKipcbiAgICogVGhlIE1vdmVGaWxlIGFjdGlvbiBtb3ZlcyBmaWxlcyBmcm9tIGEgc291cmNlIHRvIGEgZGVzdGluYXRpb25cbiAgICovXG4gIE1PVkVfRklMRSA9ICdNb3ZlRmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBNb3ZlRm9sZGVyIGFjdGlvbiBtb3ZlcyBmb2xkZXJzIGZyb20gYSBzb3VyY2UgdG8gYSBkZXN0aW5hdGlvblxuICAgKi9cbiAgTU9WRV9GT0xERVIgPSAnTW92ZUZvbGRlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBSZWFkRmlsZSBhY3Rpb24gcmVhZHMgdGhlIGNvbnRlbnQgb2YgYSB0ZXh0IGZpbGVcbiAgICovXG4gIFJFQURfRklMRSA9ICdSZWFkRmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBSZWJvb3QgYWN0aW9uIHJlYm9vdHMgdGhlIGluc3RhbmNlXG4gICAqL1xuICBSRUJPT1QgPSAnUmVib290JyxcblxuICAvKipcbiAgICogVGhlIFNldEZpbGVFbmNvZGluZyBhY3Rpb24gbW9kaWZpZXMgdGhlIGVuY29kaW5nIHByb3BlcnR5IG9mIGFuIGV4aXN0aW5nIGZpbGVcbiAgICovXG4gIFNFVF9GSUxFX0VOQ09ESU5HID0gJ1NldEZpbGVFbmNvZGluZycsXG5cbiAgLyoqXG4gICAqIFRoZSBTZXRGaWxlT3duZXIgYWN0aW9uIG1vZGlmaWVzIHRoZSBvd25lciBhbmQgZ3JvdXAgb3duZXJzaGlwIHByb3BlcnRpZXMgb2YgYW4gZXhpc3RpbmcgZmlsZVxuICAgKi9cbiAgU0VUX0ZJTEVfT1dORVIgPSAnU2V0RmlsZU93bmVyJyxcblxuICAvKipcbiAgICogVGhlIFNldEZvbGRlck93bmVyIGFjdGlvbiByZWN1cnNpdmVseSBtb2RpZmllcyB0aGUgb3duZXIgYW5kIGdyb3VwIG93bmVyc2hpcCBwcm9wZXJ0aWVzIG9mIGFuIGV4aXN0aW5nIGZvbGRlclxuICAgKi9cbiAgU0VUX0ZPTERFUl9PV05FUiA9ICdTZXRGb2xkZXJPd25lcicsXG5cbiAgLyoqXG4gICAqIFRoZSBTZXRGaWxlUGVybWlzc2lvbnMgYWN0aW9uIG1vZGlmaWVzIHRoZSBwZXJtaXNzaW9uIG9mIGFuIGV4aXN0aW5nIGZpbGVcbiAgICovXG4gIFNFVF9GSUxFX1BFUk1JU1NJT05TID0gJ1NldEZpbGVQZXJtaXNzaW9ucycsXG5cbiAgLyoqXG4gICAqIFRoZSBTZXRGb2xkZXJQZXJtaXNzaW9ucyBhY3Rpb24gcmVjdXJzaXZlbHkgbW9kaWZpZXMgdGhlIHBlcm1pc3Npb25zIG9mIGFuIGV4aXN0aW5nIGZvbGRlciBhbmQgYWxsIG9mIGl0cyBzdWJmaWxlc1xuICAgKiBhbmQgc3ViZm9sZGVyc1xuICAgKi9cbiAgU0VUX0ZPTERFUl9QRVJNSVNTSU9OUyA9ICdTZXRGb2xkZXJQZXJtaXNzaW9ucycsXG5cbiAgLyoqXG4gICAqIFRoZSBTZXRSZWdpc3RyeSBhY3Rpb24gc2V0cyB0aGUgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgV2luZG93cyByZWdpc3RyeSBrZXlcbiAgICovXG4gIFNFVF9SRUdJU1RSWSA9ICdTZXRSZWdpc3RyeScsXG5cbiAgLyoqXG4gICAqIFRoZSBTM0Rvd25sb2FkIGFjdGlvbiBkb3dubG9hZHMgYW4gQW1hem9uIFMzIG9iamVjdC9mb2xkZXIgdG8gYSBsb2NhbCBkZXN0aW5hdGlvblxuICAgKi9cbiAgUzNfRE9XTkxPQUQgPSAnUzNEb3dubG9hZCcsXG5cbiAgLyoqXG4gICAqIFRoZSBTM1VwbG9hZCBhY3Rpb24gdXBsb2FkcyBhIGZpbGUgb3IgZm9sZGVyIHRvIGFuIEFtYXpvbiBTMyBsb2NhdGlvblxuICAgKi9cbiAgUzNfVVBMT0FEID0gJ1MzVXBsb2FkJyxcblxuICAvKipcbiAgICogVGhlIFVuaW5zdGFsbE1TSSBhY3Rpb24gcmVtb3ZlcyBhIFdpbmRvd3MgYXBwbGljYXRpb24gdXNpbmcgYW4gTVNJIGZpbGVcbiAgICovXG4gIFVOSU5TVEFMTF9NU0kgPSAnVW5pbnN0YWxsTVNJJyxcblxuICAvKipcbiAgICogVGhlIFVwZGF0ZU9TIGFjdGlvbiBpbnN0YWxscyBPUyB1cGRhdGVzXG4gICAqL1xuICBVUERBVEVfT1MgPSAnVXBkYXRlT1MnLFxuXG4gIC8qKlxuICAgKiBUaGUgV2ViRG93bmxvYWQgYWN0aW9uIGRvd25sb2FkcyBmaWxlcyBmcm9tIGEgVVJMIHRvIGEgbG9jYWwgZGVzdGluYXRpb25cbiAgICovXG4gIFdFQl9ET1dOTE9BRCA9ICdXZWJEb3dubG9hZCcsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHdoYXQgdGhlIHN0ZXAgc2hvdWxkIGRvIGluIGNhc2Ugb2YgZmFpbHVyZVxuICovXG5leHBvcnQgZW51bSBDb21wb25lbnRPbkZhaWx1cmUge1xuICAvKipcbiAgICogRmFpbHMgdGhlIHN0ZXAgYW5kIGRvY3VtZW50IGV4ZWN1dGlvblxuICAgKi9cbiAgQUJPUlQgPSAnQWJvcnQnLFxuXG4gIC8qKlxuICAgKiBGYWlscyB0aGUgc3RlcCBhbmQgcHJvY2VlZHMgdG8gZXhlY3V0ZSB0aGUgbmV4dCBzdGVwIGluIHRoZSBkb2N1bWVudFxuICAgKi9cbiAgQ09OVElOVUUgPSAnQ29udGludWUnLFxuXG4gIC8qKlxuICAgKiBJZ25vcmVzIHRoZSBzdGVwIGFuZCBwcm9jZWVkcyB0byBleGVjdXRlIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIGRvY3VtZW50XG4gICAqL1xuICBJR05PUkUgPSAnSWdub3JlJyxcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVyIHR5cGUgaW4gYSBjb21wb25lbnQgZG9jdW1lbnRcbiAqL1xuZXhwb3J0IGVudW0gQ29tcG9uZW50UGFyYW1ldGVyVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBhcmFtZXRlciB2YWx1ZSBpcyBhIHN0cmluZ1xuICAgKi9cbiAgU1RSSU5HID0gJ3N0cmluZycsXG59XG5cbi8qKlxuICogVGhlIHBoYXNlcyBvZiBhIGNvbXBvbmVudCBkb2N1bWVudFxuICovXG5leHBvcnQgZW51bSBDb21wb25lbnRQaGFzZU5hbWUge1xuICAvKipcbiAgICogQnVpbGQgcGhhc2Ugb2YgdGhlIGNvbXBvbmVudC4gVGhpcyBwaGFzZSBpcyBydW4gZHVyaW5nIHRoZSBCVUlMRElORyBwaGFzZSBvZiB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBCVUlMRCA9ICdidWlsZCcsXG5cbiAgLyoqXG4gICAqIFRlc3QgcGhhc2Ugb2YgdGhlIGNvbXBvbmVudCwgZXhlY3V0ZWQgZGlyZWN0bHkgb24gdGhlIGluc3RhbmNlIHdoaWNoIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGNvbnRhaW5lciBpbWFnZS4gVGhpc1xuICAgKiBwaGFzZSBpcyBydW4gZHVyaW5nIHRoZSBURVNUSU5HIHBoYXNlIG9mIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIENPTlRBSU5FUl9IT1NUX1RFU1QgPSAnY29udGFpbmVyLWhvc3QtdGVzdCcsXG5cbiAgLyoqXG4gICAqIFRlc3QgcGhhc2Ugb2YgdGhlIGNvbXBvbmVudC4gVGhpcyBwaGFzZSBpcyBydW4gZHVyaW5nIHRoZSBURVNUSU5HIHBoYXNlIG9mIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIFRFU1QgPSAndGVzdCcsXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHBoYXNlIG9mIHRoZSBjb21wb25lbnQuIFRoaXMgcGhhc2UgaXMgcnVuIGR1cmluZyB0aGUgQlVJTERJTkcgcGhhc2Ugb2YgdGhlIGltYWdlIGJ1aWxkLCBhZnRlciB0aGUgYnVpbGRcbiAgICogc3RlcCBvZiB0aGUgY29tcG9uZW50IGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgVkFMSURBVEUgPSAndmFsaWRhdGUnLFxufVxuXG4vKipcbiAqIFRoZSBzY2hlbWEgdmVyc2lvbiBvZiB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBlbnVtIENvbXBvbmVudFNjaGVtYVZlcnNpb24ge1xuICAvKipcbiAgICogU2NoZW1hIHZlcnNpb24gMS4wIGZvciB0aGUgY29tcG9uZW50IGRvY3VtZW50XG4gICAqL1xuICBWMV8wID0gJzEuMCcsXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgaW5wdXRzIGZvciBhIHN0ZXAgaW4gdGhlIGNvbXBvbmVudCBkb2N1bWVudFxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50U3RlcElucHV0cyB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBpbnB1dCB2YWx1ZSBmcm9tIGFuIG9iamVjdCwgZm9yIHRoZSBjb21wb25lbnQgc3RlcFxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRzT2JqZWN0IFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgaW5wdXQgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21PYmplY3QoaW5wdXRzT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogQ29tcG9uZW50U3RlcElucHV0cyB7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRTdGVwSW5wdXRzKGlucHV0c09iamVjdCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgaW5wdXQgdmFsdWUgZnJvbSBhIGxpc3Qgb2YgaW5wdXQgb2JqZWN0cywgZm9yIHRoZSBjb21wb25lbnQgc3RlcFxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRzT2JqZWN0TGlzdCBUaGUgbGlzdCBvZiBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGlucHV0IHZhbHVlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTGlzdChpbnB1dHNPYmplY3RMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10pOiBDb21wb25lbnRTdGVwSW5wdXRzIHtcbiAgICByZXR1cm4gbmV3IENvbXBvbmVudFN0ZXBJbnB1dHMoaW5wdXRzT2JqZWN0TGlzdCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIGlucHV0IHZhbHVlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5wdXRzOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGlucHV0OiBhbnkpIHtcbiAgICB0aGlzLmlucHV0cyA9IGlucHV0O1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBgaWZgIGNvbmRpdGlvbiBpbiB0aGUgY29tcG9uZW50IGRvY3VtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRTdGVwSWZDb25kaXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgYGlmYCB2YWx1ZSBmcm9tIGFuIG9iamVjdCwgZm9yIHRoZSBjb21wb25lbnQgc3RlcFxuICAgKlxuICAgKiBAcGFyYW0gaWZPYmplY3QgVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBgaWZgIGNvbmRpdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tT2JqZWN0KGlmT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogQ29tcG9uZW50U3RlcElmQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IENvbXBvbmVudFN0ZXBJZkNvbmRpdGlvbihpZk9iamVjdCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIGlucHV0IHZhbHVlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWZDb25kaXRpb246IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoaWZDb25kaXRpb246IGFueSkge1xuICAgIHRoaXMuaWZDb25kaXRpb24gPSBpZkNvbmRpdGlvbjtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSByZW5kZXJlZCBjb21wb25lbnQgZGF0YSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAqIC0gRm9yIGlubGluZSBjb21wb25lbnRzLCBkYXRhIGlzIHRoZSBjb21wb25lbnQgdGV4dFxuICogLSBGb3IgUzMtYmFja2VkIGNvbXBvbmVudHMsIHVyaSBpcyB0aGUgUzMgVVJMXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YUNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgY29tcG9uZW50IGRhdGEsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIHVyaSBpcyBzZXRcbiAgICovXG4gIHJlYWRvbmx5IGRhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBjb21wb25lbnQgZGF0YSBVUkksIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIGRhdGEgaXMgc2V0XG4gICAqL1xuICByZWFkb25seSB1cmk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciByZWZlcmVuY2luZyBhbmQgdXBsb2FkaW5nIGNvbXBvbmVudCBkYXRhXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wb25lbnREYXRhIHtcbiAgLyoqXG4gICAqIFVwbG9hZHMgY29tcG9uZW50IGRhdGEgZnJvbSBhIGxvY2FsIGZpbGUgdG8gUzMgdG8gdXNlIGFzIHRoZSBjb21wb25lbnQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgSWRlbnRpZmllciBvZiB0aGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBwYXRoIFRoZSBsb2NhbCBwYXRoIHRvIHRoZSBjb21wb25lbnQgZGF0YSBmaWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIFMzIGFzc2V0IHVwbG9hZCBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Bc3NldChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHMzYXNzZXRzLkFzc2V0T3B0aW9ucyA9IHt9LFxuICApOiBTM0NvbXBvbmVudERhdGEge1xuICAgIGNvbnN0IGFzc2V0ID0gbmV3IHMzYXNzZXRzLkFzc2V0KHNjb3BlLCBpZCwgeyAuLi5vcHRpb25zLCBwYXRoIH0pO1xuICAgIHJldHVybiBuZXcgUzNDb21wb25lbnREYXRhRnJvbUFzc2V0KGFzc2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2VzIGNvbXBvbmVudCBkYXRhIGZyb20gYSBwcmUtZXhpc3RpbmcgUzMgb2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBidWNrZXQgVGhlIFMzIGJ1Y2tldCB3aGVyZSB0aGUgY29tcG9uZW50IGRhdGEgaXMgc3RvcmVkXG4gICAqIEBwYXJhbSBrZXkgVGhlIFMzIGtleSBvZiB0aGUgY29tcG9uZW50IGRhdGEgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUzMoYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZyk6IFMzQ29tcG9uZW50RGF0YSB7XG4gICAgcmV0dXJuIG5ldyBTM0NvbXBvbmVudERhdGFGcm9tQnVja2V0S2V5KGJ1Y2tldCwga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBKU09OIG9iamVjdCBhcyB0aGUgY29tcG9uZW50IGRhdGFcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgQW4gaW5saW5lIEpTT04gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50IGRhdGFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUpzb25PYmplY3QoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IENvbXBvbmVudERhdGEge1xuICAgIGNvbnN0IGlubGluZURhdGEgPSB5YW1sLnN0cmluZ2lmeShkYXRhLCB7IGluZGVudDogMiB9KTtcbiAgICByZXR1cm4gbmV3IElubGluZUNvbXBvbmVudERhdGEoaW5saW5lRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlcyBhbiBpbmxpbmUgSlNPTiBvYmplY3QgYXMgdGhlIGNvbXBvbmVudCBkYXRhLCB1c2luZyB0aGUgQ29tcG9uZW50RG9jdW1lbnQgaW50ZXJmYWNlXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIEFuIGlubGluZSBKU09OIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Db21wb25lbnREb2N1bWVudEpzb25PYmplY3QoZGF0YTogQ29tcG9uZW50RG9jdW1lbnQpOiBDb21wb25lbnREYXRhIHtcbiAgICBjb25zdCB7IG5hbWUsIGRlc2NyaXB0aW9uLCBzY2hlbWFWZXJzaW9uLCBjb25zdGFudHMsIHBhcmFtZXRlcnMsIHBoYXNlcyB9ID0gZGF0YTtcbiAgICByZXR1cm4gdGhpcy5mcm9tSnNvbk9iamVjdCh7XG4gICAgICAuLi4obmFtZSAhPT0gdW5kZWZpbmVkICYmIHsgbmFtZSB9KSxcbiAgICAgIC4uLihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgICBzY2hlbWFWZXJzaW9uOiBzY2hlbWFWZXJzaW9uLFxuICAgICAgLi4uKGNvbnN0YW50cyAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgY29uc3RhbnRzOiBPYmplY3QuZW50cmllcyhjb25zdGFudHMpLm1hcCgoW2NvbnN0YW50TmFtZSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgIFtjb25zdGFudE5hbWVdOiB7IHR5cGU6IHZhbHVlLnR5cGUsIHZhbHVlOiB2YWx1ZS52YWx1ZSB9LFxuICAgICAgICB9KSksXG4gICAgICB9KSxcbiAgICAgIC4uLihwYXJhbWV0ZXJzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBwYXJhbWV0ZXJzOiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKS5tYXAoKFtwYXJhbWV0ZXJOYW1lLCB2YWx1ZV0pID0+ICh7IFtwYXJhbWV0ZXJOYW1lXTogdmFsdWUgfSkpLFxuICAgICAgfSksXG4gICAgICBwaGFzZXM6IHBoYXNlcy5tYXAoKHBoYXNlKSA9PiAoe1xuICAgICAgICBuYW1lOiBwaGFzZS5uYW1lLFxuICAgICAgICBzdGVwczogcGhhc2Uuc3RlcHMubWFwKChzdGVwKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IHN0ZXAubmFtZSxcbiAgICAgICAgICBhY3Rpb246IHN0ZXAuYWN0aW9uLFxuICAgICAgICAgIC4uLihzdGVwLm9uRmFpbHVyZSAhPT0gdW5kZWZpbmVkICYmIHsgb25GYWlsdXJlOiBzdGVwLm9uRmFpbHVyZSB9KSxcbiAgICAgICAgICAuLi4oc3RlcC50aW1lb3V0ICE9PSB1bmRlZmluZWQgJiYgeyB0aW1lb3V0U2Vjb25kczogc3RlcC50aW1lb3V0LnRvU2Vjb25kcygpIH0pLFxuICAgICAgICAgIC4uLihzdGVwLmlmICE9PSB1bmRlZmluZWQgJiYgeyBpZjogc3RlcC5pZi5pZkNvbmRpdGlvbiB9KSxcbiAgICAgICAgICAuLi4oc3RlcC5sb29wICE9PSB1bmRlZmluZWQgJiYgeyBsb29wOiBzdGVwLmxvb3AgfSksXG4gICAgICAgICAgaW5wdXRzOiBzdGVwLmlucHV0cy5pbnB1dHMsXG4gICAgICAgIH0pKSxcbiAgICAgIH0pKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBKU09OL1lBTUwgc3RyaW5nIGFzIHRoZSBjb21wb25lbnQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBBbiBpbmxpbmUgSlNPTi9ZQU1MIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmxpbmUoZGF0YTogc3RyaW5nKTogQ29tcG9uZW50RGF0YSB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVDb21wb25lbnREYXRhKGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBjb21wb25lbnQgZGF0YSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAgICogLSBGb3IgaW5saW5lIGNvbXBvbmVudHMsIGRhdGEgaXMgdGhlIGNvbXBvbmVudCB0ZXh0XG4gICAqIC0gRm9yIFMzLWJhY2tlZCBjb21wb25lbnRzLCB1cmkgaXMgdGhlIFMzIFVSTFxuICAgKi9cbiAgYWJzdHJhY3QgcmVuZGVyKCk6IENvbXBvbmVudERhdGFDb25maWc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBTMy1iYXNlZCBjb21wb25lbnQgZGF0YSByZWZlcmVuY2VzLCBjb250YWluaW5nIGFkZGl0aW9uYWwgcGVybWlzc2lvbiBncmFudCBtZXRob2RzIG9uIHRoZSBTMyBvYmplY3RcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFMzQ29tcG9uZW50RGF0YSBleHRlbmRzIENvbXBvbmVudERhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnVja2V0OiBzMy5JQnVja2V0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5idWNrZXQgPSBidWNrZXQ7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIGNvbXBvbmVudCBkYXRhIHRleHQsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogQ29tcG9uZW50RGF0YUNvbmZpZyB7XG4gICAgcmV0dXJuIHsgdXJpOiB0aGlzLmJ1Y2tldC5zM1VybEZvck9iamVjdCh0aGlzLmtleSkgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdXQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb21wb25lbnQgZGF0YSBpbiBTM1xuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UHV0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRQdXQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb21wb25lbnQgZGF0YSBpbiBTM1xuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYnVja2V0LmdyYW50UmVhZChncmFudGVlLCB0aGlzLmtleSk7XG4gIH1cbn1cblxuY2xhc3MgSW5saW5lQ29tcG9uZW50RGF0YSBleHRlbmRzIENvbXBvbmVudERhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRhOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgY29tcG9uZW50IGRhdGEgdGV4dCwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBDb21wb25lbnREYXRhQ29uZmlnIHtcbiAgICByZXR1cm4geyBkYXRhOiB0aGlzLmRhdGEgfTtcbiAgfVxufVxuXG5jbGFzcyBTM0NvbXBvbmVudERhdGFGcm9tQnVja2V0S2V5IGV4dGVuZHMgUzNDb21wb25lbnREYXRhIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcihidWNrZXQsIGtleSk7XG4gIH1cbn1cblxuY2xhc3MgUzNDb21wb25lbnREYXRhRnJvbUFzc2V0IGV4dGVuZHMgUzNDb21wb25lbnREYXRhIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGFzc2V0OiBzM2Fzc2V0cy5Bc3NldCkge1xuICAgIHN1cGVyKGFzc2V0LmJ1Y2tldCwgYXNzZXQuczNPYmplY3RLZXkpO1xuICB9XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciB3b3JraW5nIHdpdGggQVdTIE1hcmtldHBsYWNlIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEF3c01hcmtldHBsYWNlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEltcG9ydHMgYW4gQVdTIE1hcmtldHBsYWNlIGNvbXBvbmVudCBmcm9tIGl0cyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBBV1MtbWFuYWdlZCBjb21wb25lbnQgYXR0cmlidXRlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQXdzTWFya2V0cGxhY2VDb21wb25lbnRBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogQXdzTWFya2V0cGxhY2VDb21wb25lbnRBdHRyaWJ1dGVzLFxuICApOiBJQ29tcG9uZW50IHtcbiAgICByZXR1cm4gQ29tcG9uZW50LmZyb21Db21wb25lbnRBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgYWNjb3VudDogJ2F3cy1tYXJrZXRwbGFjZScsXG4gICAgICAgIHJlc291cmNlOiAnY29tcG9uZW50JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy5jb21wb25lbnROYW1lfS0ke2F0dHJzLm1hcmtldHBsYWNlUHJvZHVjdElkfS8ke2F0dHJzLmNvbXBvbmVudFZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBDb21wb25lbnRcbiAqL1xuYWJzdHJhY3QgY2xhc3MgQ29tcG9uZW50QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29tcG9uZW50XG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBjb21wb25lbnRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnRcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBjb21wb25lbnRcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbXBvbmVudFZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb21wb25lbnRcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuY29tcG9uZW50QXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb21wb25lbnRcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0Q29tcG9uZW50Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIENvbXBvbmVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtY29tcG9uZW50cy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkNvbXBvbmVudCc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBjb21wb25lbnQgZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbXBvbmVudEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb21wb25lbnRBcm46IHN0cmluZyk6IElDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLmZyb21Db21wb25lbnRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBjb21wb25lbnRBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGNvbXBvbmVudCBnaXZlbiBpdHMgbmFtZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbFxuICAgKiBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Db21wb25lbnROYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IElDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLmZyb21Db21wb25lbnRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBjb21wb25lbnROYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBjb21wb25lbnQgYnkgcHJvdmlkaW5nIGl0cyBhdHRyaWJ1dGVzLiBJZiB0aGUgY29tcG9uZW50IG5hbWUgaXMgcHJvdmlkZWQgYXMgYW4gYXR0cmlidXRlLCBpdFxuICAgKiBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzXG4gICAqIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbXBvbmVudEF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IENvbXBvbmVudEF0dHJpYnV0ZXMpOiBJQ29tcG9uZW50IHtcbiAgICBpZiAoYXR0cnMuY29tcG9uZW50QXJuICYmIChhdHRycy5jb21wb25lbnROYW1lIHx8IGF0dHJzLmNvbXBvbmVudFZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ2EgY29tcG9uZW50TmFtZSBvciBjb21wb25lbnRWZXJzaW9uIGNhbm5vdCBiZSBwcm92aWRlZCB3aGVuIGEgY29tcG9uZW50QXJuIGlzIHByb3ZpZGVkJyxcbiAgICAgICAgc2NvcGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghYXR0cnMuY29tcG9uZW50QXJuICYmICFhdHRycy5jb21wb25lbnROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignZWl0aGVyIGNvbXBvbmVudEFybiBvciBjb21wb25lbnROYW1lIGlzIHJlcXVpcmVkJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBvbmVudEFybiA9XG4gICAgICBhdHRycy5jb21wb25lbnRBcm4gPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnY29tcG9uZW50JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy5jb21wb25lbnROYW1lfS8ke2F0dHJzLmNvbXBvbmVudFZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgW2NvbXBvbmVudE5hbWUsIGNvbXBvbmVudFZlcnNpb25dID0gKCgpID0+IHtcbiAgICAgIGlmIChhdHRycy5jb21wb25lbnROYW1lKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMuY29tcG9uZW50TmFtZSwgYXR0cnMuY29tcG9uZW50VmVyc2lvbiA/PyBMQVRFU1RfVkVSU0lPTl07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgICAgY29tcG9uZW50QXJuLFxuICAgICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWVWZXJzaW9uU3BsaXQgPSBjZGsuRm4uc3BsaXQoJy8nLCBjb21wb25lbnROYW1lVmVyc2lvbik7XG4gICAgICByZXR1cm4gW2Nkay5Gbi5zZWxlY3QoMCwgY29tcG9uZW50TmFtZVZlcnNpb25TcGxpdCksIGNkay5Gbi5zZWxlY3QoMSwgY29tcG9uZW50TmFtZVZlcnNpb25TcGxpdCldO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRBcm4gPSBjb21wb25lbnRBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50VmVyc2lvbiA9IGNvbXBvbmVudFZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgQ29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0NvbXBvbmVudCh4OiBhbnkpOiB4IGlzIENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIENPTVBPTkVOVF9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBjb21wb25lbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudFZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGVuY3J5cHRlZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVuY3J5cHRlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGNvbXBvbmVudFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50VHlwZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvbXBvbmVudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzLmNvbXBvbmVudE5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIENPTVBPTkVOVF9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnZhbGlkYXRlQ29tcG9uZW50TmFtZSgpO1xuXG4gICAgcHJvcHMuc3VwcG9ydGVkT3NWZXJzaW9ucz8uZm9yRWFjaCgob3NWZXJzaW9uKSA9PiB7XG4gICAgICBpZiAob3NWZXJzaW9uLnBsYXRmb3JtICE9PSBwcm9wcy5wbGF0Zm9ybSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBgb3MgdmVyc2lvbiAke29zVmVyc2lvbi5vc1ZlcnNpb259IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggcGxhdGZvcm0gJHtwcm9wcy5wbGF0Zm9ybX1gLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wb25lbnRWZXJzaW9uID0gcHJvcHMuY29tcG9uZW50VmVyc2lvbiA/PyAnMS4wLjAnO1xuICAgIGNvbnN0IHN1cHBvcnRlZE9zVmVyc2lvbnMgPSBwcm9wcy5zdXBwb3J0ZWRPc1ZlcnNpb25zPy5maWx0ZXIoKG9zVmVyc2lvbikgPT4gb3NWZXJzaW9uLm9zVmVyc2lvbiAhPT0gdW5kZWZpbmVkKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudCA9IG5ldyBDZm5Db21wb25lbnQodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICB2ZXJzaW9uOiBjb21wb25lbnRWZXJzaW9uLFxuICAgICAgY2hhbmdlRGVzY3JpcHRpb246IHByb3BzLmNoYW5nZURlc2NyaXB0aW9uLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgcGxhdGZvcm06IHByb3BzLnBsYXRmb3JtLFxuICAgICAga21zS2V5SWQ6IHByb3BzLmttc0tleT8ua2V5QXJuLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIC4uLihzdXBwb3J0ZWRPc1ZlcnNpb25zPy5sZW5ndGggJiYge1xuICAgICAgICBzdXBwb3J0ZWRPc1ZlcnNpb25zOiBzdXBwb3J0ZWRPc1ZlcnNpb25zLm1hcCgob3NWZXJzaW9uKSA9PiBvc1ZlcnNpb24ub3NWZXJzaW9uISksXG4gICAgICB9KSxcbiAgICAgIC4uLnByb3BzLmRhdGEucmVuZGVyKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbXBvbmVudE5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShjb21wb25lbnQuYXR0ck5hbWUpO1xuICAgIHRoaXMuY29tcG9uZW50QXJuID0gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZShjb21wb25lbnQuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2NvbXBvbmVudCcsXG4gICAgICByZXNvdXJjZU5hbWU6IGAke3RoaXMucGh5c2ljYWxOYW1lfS8ke2NvbXBvbmVudFZlcnNpb259YCxcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBvbmVudFZlcnNpb24gPSBjb21wb25lbnRWZXJzaW9uO1xuICAgIHRoaXMuZW5jcnlwdGVkID0gdHJ1ZTsgLy8gQ29tcG9uZW50cyBhcmUgYWx3YXlzIGVuY3J5cHRlZFxuICAgIHRoaXMuY29tcG9uZW50VHlwZSA9IGNvbXBvbmVudC5hdHRyVHlwZTtcbiAgICB0aGlzLmttc0tleSA9IHByb3BzLmttc0tleTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVDb21wb25lbnROYW1lKCkge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucGh5c2ljYWxOYW1lKSkge1xuICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgdmFsaWRhdGUgdW5yZXNvbHZlZCB0b2tlbnMsIGdpdmVuIHRoZWlyIGFjdHVhbCB2YWx1ZSBpcyByZW5kZXJlZCBhdCBkZXBsb3ltZW50IHRpbWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYHRoZSBjb21wb25lbnROYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycywgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGB0aGUgY29tcG9uZW50TmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMsIGdvdDogJyR7dGhpcy5waHlzaWNhbE5hbWV9J2AsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihgdGhlIGNvbXBvbmVudE5hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMsIGdvdDogJyR7dGhpcy5waHlzaWNhbE5hbWV9J2AsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHRoZSBjb21wb25lbnROYW1lIG11c3QgYmUgbG93ZXJjYXNlLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLCB0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
721
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFtQztBQUNuQywyQ0FBMkM7QUFDM0MsbUVBQTREO0FBRzVELHNEQUFzRDtBQUN0RCw0RUFBdUU7QUFDdkUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSw2QkFBNkI7QUFHN0IsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFFakYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBK1QvQjs7R0FFRztBQUNILE1BQWEsc0JBQXNCOztJQUNqQzs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDcEQ7SUFFRDs7T0FFRztJQUNhLElBQUksQ0FBUztJQUU3Qjs7T0FFRztJQUNhLEtBQUssQ0FBTTtJQUUzQixZQUFzQixJQUFZLEVBQUUsS0FBVTtRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUF2Qkgsd0RBd0JDO0FBMEJEOztHQUVHO0FBQ0gsSUFBWSxlQXdKWDtBQXhKRCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCw2Q0FBMEIsQ0FBQTtJQUUxQjs7O09BR0c7SUFDSCxvQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHlDQUFzQixDQUFBO0lBRXRCOztPQUVHO0lBQ0gsNkNBQTBCLENBQUE7SUFFMUI7O09BRUc7SUFDSCw2Q0FBMEIsQ0FBQTtJQUUxQjs7T0FFRztJQUNILGlEQUE4QixDQUFBO0lBRTlCOztPQUVHO0lBQ0gsbURBQWdDLENBQUE7SUFFaEM7O09BRUc7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QUFZLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxPQUFPLENBQUMsNkZBQTZGO1lBQ3ZHLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FDM0IsaUVBQWlFLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFDckYsSUFBSSxDQUNMLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxrREFBa0QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlHLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLHVEQUF1RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkgsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLDhDQUE4QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUcsQ0FBQztTQUNGOztZQXpMVSx1REFBUzs7Ozs7QUFBVCw4QkFBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5Db21wb25lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzM2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBPU1ZlcnNpb24sIFBsYXRmb3JtIH0gZnJvbSAnLi9vcy12ZXJzaW9uJztcblxuY29uc3QgQ09NUE9ORU5UX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuQ29tcG9uZW50Jyk7XG5cbmNvbnN0IExBVEVTVF9WRVJTSU9OID0gJ3gueC54JztcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBDb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBvbmVudCBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjb21wb25lbnRWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIENvbXBvbmVudCByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgZG9jdW1lbnQgY29udGVudCB0aGF0IGRlZmluZXMgdGhlIGJ1aWxkLCB2YWxpZGF0aW9uLCBvciB0ZXN0IHN0ZXBzIHRvIGJlIGV4ZWN1dGVkIGR1cmluZyB0aGUgaW1hZ2VcbiAgICogYnVpbGRpbmcgcHJvY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IENvbXBvbmVudERhdGE7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpbmcgc3lzdGVtIHBsYXRmb3JtIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogUGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgMS4wLjBcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNoYW5nZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29tcG9uZW50LiBEZXNjcmliZXMgd2hhdCBjaGFuZ2UgaGFzIGJlZW4gbWFkZSBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudCwgb3JcbiAgICogd2hhdCBtYWtlcyB0aGlzIHZlcnNpb24gZGlmZmVyZW50IGZyb20gb3RoZXIgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZURlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhpcyBjb21wb25lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gSW1hZ2UgQnVpbGRlciBvd25lZCBrZXkgd2lsbCBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkT3NWZXJzaW9ucz86IE9TVmVyc2lvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFuIEVDMiBJbWFnZSBCdWlsZGVyIGNvbXBvbmVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIEFSTiBpcyBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdGVkIGlmIGEgY29tcG9uZW50TmFtZSBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGEgY29tcG9uZW50QXJuIGlzXG4gICAqICAgICAgICAgICAgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBuYW1lIGlzIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0ZWQgaWYgYSBjb21wb25lbnRBcm4gaXMgcHJvdmlkZWQsIG90aGVyd2lzZSBhIGNvbXBvbmVudE5hbWUgaXNcbiAgICogICAgICAgICAgICByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgY29tcG9uZW50LCB4LngueFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50VmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFQzIgSW1hZ2UgQnVpbGRlciBBV1MgTWFya2V0cGxhY2UgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXdzTWFya2V0cGxhY2VDb21wb25lbnRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBV1MgTWFya2V0cGxhY2UgY29tcG9uZW50LiBUaGlzIG5hbWUgc2hvdWxkIGV4Y2x1ZGUgdGhlIG1hcmtldHBsYWNlIHByb2R1Y3QgSUQgZnJvbSBpdFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWFya2V0cGxhY2UgcHJvZHVjdCBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcmVhZG9ubHkgbWFya2V0cGxhY2VQcm9kdWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEFXUyBNYXJrZXRwbGFjZSBjb21wb25lbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudCwgeC54LnhcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudFZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhbiBFQzIgSW1hZ2UgQnVpbGRlciBDb21wb25lbnQgRG9jdW1lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREb2N1bWVudCB7XG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIHZlcnNpb24gb2YgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZW1hVmVyc2lvbjogQ29tcG9uZW50U2NoZW1hVmVyc2lvbjtcblxuICAvKipcbiAgICogVGhlIHBoYXNlcyB3aGljaCBkZWZpbmUgdGhlIGdyb3VwaW5nIG9mIHN0ZXBzIHRvIHJ1biBpbiB0aGUgYnVpbGQgYW5kIHRlc3Qgd29ya2Zsb3dzIG9mIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHJlYWRvbmx5IHBoYXNlczogQ29tcG9uZW50RG9jdW1lbnRQaGFzZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBkb2N1bWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbnN0YW50cyB0byBkZWZpbmUgaW4gdGhlIGRvY3VtZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0YW50cz86IHsgW2NvbnN0YW50TmFtZTogc3RyaW5nXTogQ29tcG9uZW50Q29uc3RhbnRWYWx1ZSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVycyB0byBkZWZpbmUgaW4gdGhlIGRvY3VtZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiB7IFtwYXJhbWV0ZXJOYW1lOiBzdHJpbmddOiBDb21wb25lbnREb2N1bWVudFBhcmFtZXRlckRlZmluaXRpb24gfTtcbn1cblxuLyoqXG4gKiBUaGUgcGhhc2UgdG8gcnVuIGluIGEgc3BlY2lmaWMgd29ya2Zsb3cgaW4gYW4gaW1hZ2UgYnVpbGQsIHdoaWNoIGRlZmluZSB0aGUgc3RlcHMgdG8gZXhlY3V0ZSB0byBjdXN0b21pemUgb3IgdGVzdFxuICogdGhlIGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERvY3VtZW50UGhhc2Uge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBoYXNlXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBDb21wb25lbnRQaGFzZU5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHN0ZXBzIHRvIGV4ZWN1dGUgdG8gbW9kaWZ5IG9yIHRlc3QgdGhlIGJ1aWxkL3Rlc3QgaW5zdGFuY2VcbiAgICovXG4gIHJlYWRvbmx5IHN0ZXBzOiBDb21wb25lbnREb2N1bWVudFN0ZXBbXTtcbn1cblxuLyoqXG4gKiBUaGUgc3RlcCB0byBydW4gaW4gYSBzcGVjaWZpYyBwaGFzZSBvZiB0aGUgaW1hZ2UgYnVpbGQsIHdoaWNoIGRlZmluZXMgdGhlIHN0ZXAgdG8gZXhlY3V0ZSB0byBjdXN0b21pemUgb3IgdGVzdCB0aGVcbiAqIGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERvY3VtZW50U3RlcCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3RlcFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gaW4gdGhlIHN0ZXBcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbjogQ29tcG9uZW50QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBDb250YWlucyBwYXJhbWV0ZXJzIHJlcXVpcmVkIGJ5IHRoZSBhY3Rpb24gdG8gcnVuIHRoZSBzdGVwXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL3RvZS1hY3Rpb24tbW9kdWxlcy5odG1sXG4gICAqL1xuICByZWFkb25seSBpbnB1dHM6IENvbXBvbmVudFN0ZXBJbnB1dHM7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25kaXRpb24gdG8gYXBwbHkgdG8gdGhlIHN0ZXAuIElmIHRoZSBjb25kaXRpb24gaXMgZmFsc2UsIHRoZW4gdGhlIHN0ZXAgaXMgc2tpcHBlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbmRpdGlvbiBpcyBhcHBsaWVkIHRvIHRoZSBzdGVwIGFuZCBpdCBnZXRzIGV4ZWN1dGVkXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL3RvZS1jb25kaXRpb25hbC1jb25zdHJ1Y3RzLmh0bWxcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvdG9lLWNvbXBhcmlzb24tb3BlcmF0b3JzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGlmPzogQ29tcG9uZW50U3RlcElmQ29uZGl0aW9uO1xuXG4gIC8qKlxuICAgKiBBIGxvb3BpbmcgY29uc3RydWN0IGRlZmluaW5nIGEgcmVwZWF0ZWQgc2VxdWVuY2Ugb2YgaW5zdHJ1Y3Rpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb3A/OiBDb21wb25lbnREb2N1bWVudExvb3A7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IG9mIHRoZSBzdGVwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMTIwIG1pbnV0ZXNcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGF0IHRoZSBzdGVwIHNob3VsZCBkbyBpbiBjYXNlIG9mIGZhaWx1cmVcbiAgICpcbiAgICogQGRlZmF1bHQgQ29tcG9uZW50T25GYWlsdXJlLkFCT1JUXG4gICAqL1xuICByZWFkb25seSBvbkZhaWx1cmU/OiBDb21wb25lbnRPbkZhaWx1cmU7XG59XG5cbi8qKlxuICogVGhlIGxvb3BpbmcgY29uc3RydWN0IG9mIGEgY29tcG9uZW50IGRlZmluZXMgYSByZXBlYXRlZCBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREb2N1bWVudExvb3Age1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxvb3AsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZVxuICAgKlxuICAgKiBAZGVmYXVsdCBsb29wXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9yIGxvb3AgaXRlcmF0ZXMgb24gYSByYW5nZSBvZiBpbnRlZ2VycyBzcGVjaWZpZWQgd2l0aGluIGEgYm91bmRhcnkgb3V0bGluZWQgYnkgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlXG4gICAqIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgYGZvckVhY2hgIGlzIHByb3ZpZGVkLiBvdGhlcndpc2UsIGBmb3JgIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9yPzogQ29tcG9uZW50RG9jdW1lbnRGb3JMb29wO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9yRWFjaCBsb29wIGl0ZXJhdGVzIG9uIGFuIGV4cGxpY2l0IGxpc3Qgb2YgdmFsdWVzLCB3aGljaCBjYW4gYmUgc3RyaW5ncyBhbmQgY2hhaW5lZCBleHByZXNzaW9uc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgYGZvcmAgaXMgcHJvdmlkZWQuIG90aGVyd2lzZSwgYGZvckVhY2hgIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9yRWFjaD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBmb3IgbG9vcCBpdGVyYXRlcyBvbiBhIHJhbmdlIG9mIGludGVnZXJzIHNwZWNpZmllZCB3aXRoaW4gYSBib3VuZGFyeSBvdXRsaW5lZCBieSB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGVcbiAqIHZhcmlhYmxlcy4gVGhlIGl0ZXJhdGluZyB2YWx1ZXMgYXJlIGluIHRoZSBzZXQgW3N0YXJ0LCBlbmRdIGFuZCBpbmNsdWRlcyBib3VuZGFyeSB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RG9jdW1lbnRGb3JMb29wIHtcbiAgLyoqXG4gICAqIFN0YXJ0aW5nIHZhbHVlIG9mIGl0ZXJhdGlvbi4gRG9lcyBub3QgYWNjZXB0IGNoYWluaW5nIGV4cHJlc3Npb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEVuZGluZyB2YWx1ZSBvZiBpdGVyYXRpb24uIERvZXMgbm90IGFjY2VwdCBjaGFpbmluZyBleHByZXNzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGVuZDogbnVtYmVyO1xuICAvKipcbiAgICogRGlmZmVyZW5jZSBieSB3aGljaCBhbiBpdGVyYXRpbmcgdmFsdWUgaXMgdXBkYXRlZCB0aHJvdWdoIGFkZGl0aW9uLiBJdCBtdXN0IGJlIGEgbmVnYXRpdmUgb3IgcG9zaXRpdmUgbm9uLXplcm9cbiAgICogdmFsdWUuIERvZXMgbm90IGFjY2VwdCBjaGFpbmluZyBleHByZXNzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZUJ5OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHZhbHVlIG9mIGEgY29uc3RhbnQgaW4gYSBjb21wb25lbnQgZG9jdW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvbmVudENvbnN0YW50VmFsdWUge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHN0cmluZyB0eXBlIGNvbnN0YW50IGluIGEgY29tcG9uZW50IGRvY3VtZW50XG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGNvbnN0YW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IENvbXBvbmVudENvbnN0YW50VmFsdWUge1xuICAgIHJldHVybiBuZXcgQ29tcG9uZW50Q29uc3RhbnRWYWx1ZSgnc3RyaW5nJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIHR5cGUgb2YgdGhlIGNvbnN0YW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGNvbnN0YW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgcGFyYW1ldGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RG9jdW1lbnRQYXJhbWV0ZXJEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXJcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IENvbXBvbmVudFBhcmFtZXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lLCBpbmRpY2F0aW5nIHRoZSBwYXJhbWV0ZXIgaXMgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gZm9yIGEgc3RlcCB3aXRoaW4gdGhlIGNvbXBvbmVudCBkb2N1bWVudFxuICovXG5leHBvcnQgZW51bSBDb21wb25lbnRBY3Rpb24ge1xuICAvKipcbiAgICogVGhlIEFwcGVuZEZpbGUgYWN0aW9uIGFkZHMgdGhlIHByb3ZpZGVkIGNvbnRlbnQgdG8gdGhlIHByZS1leGlzdGluZyBjb250ZW50IG9mIGEgZmlsZVxuICAgKi9cbiAgQVBQRU5EX0ZJTEUgPSAnQXBwZW5kRmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBBc3NlcnQgYWN0aW9uIHBlcmZvcm1zIHZhbHVlIHdpdGggY29tcGFyaXNvbi9sb2dpYyBvcGVyYXRvcnMsIGFuZCBzdWNjZWVkcy9mYWlscyB0aGUgc3RlcCBiYXNlZCBvbiB0aGUgb3V0Y29tZVxuICAgKiBvZiB0aGUgYXNzZXJ0aW9uXG4gICAqL1xuICBBU1NFUlQgPSAnQXNzZXJ0JyxcblxuICAvKipcbiAgICogVGhlIENvcHlGaWxlIGFjdGlvbiBjb3BpZXMgZmlsZXMgZnJvbSBhIHNvdXJjZSBmaWxlIHRvIGEgZGVzdGluYXRpb25cbiAgICovXG4gIENPUFlfRklMRSA9ICdDb3B5RmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBDb3B5Rm9sZGVyIGFjdGlvbiBjb3BpZXMgZm9sZGVycyBmcm9tIGEgc291cmNlIHRvIGEgZGVzdGluYXRpb25cbiAgICovXG4gIENPUFlfRk9MREVSID0gJ0NvcHlGb2xkZXInLFxuXG4gIC8qKlxuICAgKiBUaGUgQ3JlYXRlRmlsZSBhY3Rpb24gY3JlYXRlcyBhIGZpbGUgaW4gdGhlIHByb3ZpZGVkIGxvY2F0aW9uXG4gICAqL1xuICBDUkVBVEVfRklMRSA9ICdDcmVhdGVGaWxlJyxcblxuICAvKipcbiAgICogVGhlIENyZWF0ZUZvbGRlciBhY3Rpb24gY3JlYXRlcyBhIGZvbGRlciBpbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIENSRUFURV9GT0xERVIgPSAnQ3JlYXRlRm9sZGVyJyxcblxuICAvKipcbiAgICogVGhlIENyZWF0ZVN5bWxpbmsgYWN0aW9uIGNyZWF0ZXMgc3ltYm9saWMgbGlua3MgZnJvbSBhIGdpdmVuIHBhdGggdG8gYSB0YXJnZXRcbiAgICovXG4gIENSRUFURV9TWU1MSU5LID0gJ0NyZWF0ZVN5bWxpbmsnLFxuXG4gIC8qKlxuICAgKiBUaGUgRGVsZXRlRmlsZSBhY3Rpb24gZGVsZXRlcyBmaWxlKHMpIGluIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgREVMRVRFX0ZJTEUgPSAnRGVsZXRlRmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBEZWxldGVGb2xkZXIgYWN0aW9uIGRlbGV0ZXMgZm9sZGVycyBpbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIERFTEVURV9GT0xERVIgPSAnRGVsZXRlRm9sZGVyJyxcblxuICAvKipcbiAgICogVGhlIEV4ZWN1dGVCYXNoIGFjdGlvbiBydW5zIGJhc2ggc2NyaXB0cyB3aXRoIGlubGluZSBiYXNoIGNvbW1hbmRzXG4gICAqL1xuICBFWEVDVVRFX0JBU0ggPSAnRXhlY3V0ZUJhc2gnLFxuXG4gIC8qKlxuICAgKiBUaGUgRXhlY3V0ZUJpbmFyeSBhY3Rpb24gcnVucyBhIHByb3ZpZGVkIGJpbmFyeSBleGVjdXRhYmxlXG4gICAqL1xuICBFWEVDVVRFX0JJTkFSWSA9ICdFeGVjdXRlQmluYXJ5JyxcblxuICAvKipcbiAgICogVGhlIEV4ZWN1dGVEb2N1bWVudCBhY3Rpb24gYWxsb3dzIHJ1bm5pbmcgb3RoZXIgY29tcG9uZW50IGRvY3VtZW50cyBmcm9tIHdpdGhpbiBhIGdpdmVuIGNvbXBvbmVudFxuICAgKi9cbiAgRVhFQ1VURV9ET0NVTUVOVCA9ICdFeGVjdXRlRG9jdW1lbnQnLFxuXG4gIC8qKlxuICAgKiBUaGUgRXhlY3V0ZVBvd2Vyc2hlbGwgYWN0aW9uIHJ1bnMgUG93ZXJTaGVsbCBzY3JpcHRzIHdpdGggaW5saW5lIFBvd2VyU2hlbGwgY29tbWFuZHNcbiAgICovXG4gIEVYRUNVVEVfUE9XRVJTSEVMTCA9ICdFeGVjdXRlUG93ZXJTaGVsbCcsXG5cbiAgLyoqXG4gICAqIFRoZSBJbnN0YWxsTVNJIGFjdGlvbiBydW5zIGEgV2luZG93cyBhcHBsaWNhdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBNU0kgZmlsZVxuICAgKi9cbiAgSU5TVEFMTF9NU0kgPSAnSW5zdGFsbE1TSScsXG5cbiAgLyoqXG4gICAqIFRoZSBMaXN0RmlsZXMgYWN0aW9uIGxpc3RzIGZpbGVzIGluIHRoZSBwcm92aWRlZCBmb2xkZXJcbiAgICovXG4gIExJU1RfRklMRVMgPSAnTGlzdEZpbGVzJyxcblxuICAvKipcbiAgICogVGhlIE1vdmVGaWxlIGFjdGlvbiBtb3ZlcyBmaWxlcyBmcm9tIGEgc291cmNlIHRvIGEgZGVzdGluYXRpb25cbiAgICovXG4gIE1PVkVfRklMRSA9ICdNb3ZlRmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBNb3ZlRm9sZGVyIGFjdGlvbiBtb3ZlcyBmb2xkZXJzIGZyb20gYSBzb3VyY2UgdG8gYSBkZXN0aW5hdGlvblxuICAgKi9cbiAgTU9WRV9GT0xERVIgPSAnTW92ZUZvbGRlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBSZWFkRmlsZSBhY3Rpb24gcmVhZHMgdGhlIGNvbnRlbnQgb2YgYSB0ZXh0IGZpbGVcbiAgICovXG4gIFJFQURfRklMRSA9ICdSZWFkRmlsZScsXG5cbiAgLyoqXG4gICAqIFRoZSBSZWJvb3QgYWN0aW9uIHJlYm9vdHMgdGhlIGluc3RhbmNlXG4gICAqL1xuICBSRUJPT1QgPSAnUmVib290JyxcblxuICAvKipcbiAgICogVGhlIFNldEZpbGVFbmNvZGluZyBhY3Rpb24gbW9kaWZpZXMgdGhlIGVuY29kaW5nIHByb3BlcnR5IG9mIGFuIGV4aXN0aW5nIGZpbGVcbiAgICovXG4gIFNFVF9GSUxFX0VOQ09ESU5HID0gJ1NldEZpbGVFbmNvZGluZycsXG5cbiAgLyoqXG4gICAqIFRoZSBTZXRGaWxlT3duZXIgYWN0aW9uIG1vZGlmaWVzIHRoZSBvd25lciBhbmQgZ3JvdXAgb3duZXJzaGlwIHByb3BlcnRpZXMgb2YgYW4gZXhpc3RpbmcgZmlsZVxuICAgKi9cbiAgU0VUX0ZJTEVfT1dORVIgPSAnU2V0RmlsZU93bmVyJyxcblxuICAvKipcbiAgICogVGhlIFNldEZvbGRlck93bmVyIGFjdGlvbiByZWN1cnNpdmVseSBtb2RpZmllcyB0aGUgb3duZXIgYW5kIGdyb3VwIG93bmVyc2hpcCBwcm9wZXJ0aWVzIG9mIGFuIGV4aXN0aW5nIGZvbGRlclxuICAgKi9cbiAgU0VUX0ZPTERFUl9PV05FUiA9ICdTZXRGb2xkZXJPd25lcicsXG5cbiAgLyoqXG4gICAqIFRoZSBTZXRGaWxlUGVybWlzc2lvbnMgYWN0aW9uIG1vZGlmaWVzIHRoZSBwZXJtaXNzaW9uIG9mIGFuIGV4aXN0aW5nIGZpbGVcbiAgICovXG4gIFNFVF9GSUxFX1BFUk1JU1NJT05TID0gJ1NldEZpbGVQZXJtaXNzaW9ucycsXG5cbiAgLyoqXG4gICAqIFRoZSBTZXRGb2xkZXJQZXJtaXNzaW9ucyBhY3Rpb24gcmVjdXJzaXZlbHkgbW9kaWZpZXMgdGhlIHBlcm1pc3Npb25zIG9mIGFuIGV4aXN0aW5nIGZvbGRlciBhbmQgYWxsIG9mIGl0cyBzdWJmaWxlc1xuICAgKiBhbmQgc3ViZm9sZGVyc1xuICAgKi9cbiAgU0VUX0ZPTERFUl9QRVJNSVNTSU9OUyA9ICdTZXRGb2xkZXJQZXJtaXNzaW9ucycsXG5cbiAgLyoqXG4gICAqIFRoZSBTZXRSZWdpc3RyeSBhY3Rpb24gc2V0cyB0aGUgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgV2luZG93cyByZWdpc3RyeSBrZXlcbiAgICovXG4gIFNFVF9SRUdJU1RSWSA9ICdTZXRSZWdpc3RyeScsXG5cbiAgLyoqXG4gICAqIFRoZSBTM0Rvd25sb2FkIGFjdGlvbiBkb3dubG9hZHMgYW4gQW1hem9uIFMzIG9iamVjdC9mb2xkZXIgdG8gYSBsb2NhbCBkZXN0aW5hdGlvblxuICAgKi9cbiAgUzNfRE9XTkxPQUQgPSAnUzNEb3dubG9hZCcsXG5cbiAgLyoqXG4gICAqIFRoZSBTM1VwbG9hZCBhY3Rpb24gdXBsb2FkcyBhIGZpbGUgb3IgZm9sZGVyIHRvIGFuIEFtYXpvbiBTMyBsb2NhdGlvblxuICAgKi9cbiAgUzNfVVBMT0FEID0gJ1MzVXBsb2FkJyxcblxuICAvKipcbiAgICogVGhlIFVuaW5zdGFsbE1TSSBhY3Rpb24gcmVtb3ZlcyBhIFdpbmRvd3MgYXBwbGljYXRpb24gdXNpbmcgYW4gTVNJIGZpbGVcbiAgICovXG4gIFVOSU5TVEFMTF9NU0kgPSAnVW5pbnN0YWxsTVNJJyxcblxuICAvKipcbiAgICogVGhlIFVwZGF0ZU9TIGFjdGlvbiBpbnN0YWxscyBPUyB1cGRhdGVzXG4gICAqL1xuICBVUERBVEVfT1MgPSAnVXBkYXRlT1MnLFxuXG4gIC8qKlxuICAgKiBUaGUgV2ViRG93bmxvYWQgYWN0aW9uIGRvd25sb2FkcyBmaWxlcyBmcm9tIGEgVVJMIHRvIGEgbG9jYWwgZGVzdGluYXRpb25cbiAgICovXG4gIFdFQl9ET1dOTE9BRCA9ICdXZWJEb3dubG9hZCcsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHdoYXQgdGhlIHN0ZXAgc2hvdWxkIGRvIGluIGNhc2Ugb2YgZmFpbHVyZVxuICovXG5leHBvcnQgZW51bSBDb21wb25lbnRPbkZhaWx1cmUge1xuICAvKipcbiAgICogRmFpbHMgdGhlIHN0ZXAgYW5kIGRvY3VtZW50IGV4ZWN1dGlvblxuICAgKi9cbiAgQUJPUlQgPSAnQWJvcnQnLFxuXG4gIC8qKlxuICAgKiBGYWlscyB0aGUgc3RlcCBhbmQgcHJvY2VlZHMgdG8gZXhlY3V0ZSB0aGUgbmV4dCBzdGVwIGluIHRoZSBkb2N1bWVudFxuICAgKi9cbiAgQ09OVElOVUUgPSAnQ29udGludWUnLFxuXG4gIC8qKlxuICAgKiBJZ25vcmVzIHRoZSBzdGVwIGFuZCBwcm9jZWVkcyB0byBleGVjdXRlIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIGRvY3VtZW50XG4gICAqL1xuICBJR05PUkUgPSAnSWdub3JlJyxcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVyIHR5cGUgaW4gYSBjb21wb25lbnQgZG9jdW1lbnRcbiAqL1xuZXhwb3J0IGVudW0gQ29tcG9uZW50UGFyYW1ldGVyVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBhcmFtZXRlciB2YWx1ZSBpcyBhIHN0cmluZ1xuICAgKi9cbiAgU1RSSU5HID0gJ3N0cmluZycsXG59XG5cbi8qKlxuICogVGhlIHBoYXNlcyBvZiBhIGNvbXBvbmVudCBkb2N1bWVudFxuICovXG5leHBvcnQgZW51bSBDb21wb25lbnRQaGFzZU5hbWUge1xuICAvKipcbiAgICogQnVpbGQgcGhhc2Ugb2YgdGhlIGNvbXBvbmVudC4gVGhpcyBwaGFzZSBpcyBydW4gZHVyaW5nIHRoZSBCVUlMRElORyBwaGFzZSBvZiB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBCVUlMRCA9ICdidWlsZCcsXG5cbiAgLyoqXG4gICAqIFRlc3QgcGhhc2Ugb2YgdGhlIGNvbXBvbmVudCwgZXhlY3V0ZWQgZGlyZWN0bHkgb24gdGhlIGluc3RhbmNlIHdoaWNoIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGNvbnRhaW5lciBpbWFnZS4gVGhpc1xuICAgKiBwaGFzZSBpcyBydW4gZHVyaW5nIHRoZSBURVNUSU5HIHBoYXNlIG9mIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIENPTlRBSU5FUl9IT1NUX1RFU1QgPSAnY29udGFpbmVyLWhvc3QtdGVzdCcsXG5cbiAgLyoqXG4gICAqIFRlc3QgcGhhc2Ugb2YgdGhlIGNvbXBvbmVudC4gVGhpcyBwaGFzZSBpcyBydW4gZHVyaW5nIHRoZSBURVNUSU5HIHBoYXNlIG9mIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIFRFU1QgPSAndGVzdCcsXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHBoYXNlIG9mIHRoZSBjb21wb25lbnQuIFRoaXMgcGhhc2UgaXMgcnVuIGR1cmluZyB0aGUgQlVJTERJTkcgcGhhc2Ugb2YgdGhlIGltYWdlIGJ1aWxkLCBhZnRlciB0aGUgYnVpbGRcbiAgICogc3RlcCBvZiB0aGUgY29tcG9uZW50IGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgVkFMSURBVEUgPSAndmFsaWRhdGUnLFxufVxuXG4vKipcbiAqIFRoZSBzY2hlbWEgdmVyc2lvbiBvZiB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBlbnVtIENvbXBvbmVudFNjaGVtYVZlcnNpb24ge1xuICAvKipcbiAgICogU2NoZW1hIHZlcnNpb24gMS4wIGZvciB0aGUgY29tcG9uZW50IGRvY3VtZW50XG4gICAqL1xuICBWMV8wID0gJzEuMCcsXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgaW5wdXRzIGZvciBhIHN0ZXAgaW4gdGhlIGNvbXBvbmVudCBkb2N1bWVudFxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50U3RlcElucHV0cyB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBpbnB1dCB2YWx1ZSBmcm9tIGFuIG9iamVjdCwgZm9yIHRoZSBjb21wb25lbnQgc3RlcFxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRzT2JqZWN0IFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgaW5wdXQgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21PYmplY3QoaW5wdXRzT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogQ29tcG9uZW50U3RlcElucHV0cyB7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRTdGVwSW5wdXRzKGlucHV0c09iamVjdCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgaW5wdXQgdmFsdWUgZnJvbSBhIGxpc3Qgb2YgaW5wdXQgb2JqZWN0cywgZm9yIHRoZSBjb21wb25lbnQgc3RlcFxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRzT2JqZWN0TGlzdCBUaGUgbGlzdCBvZiBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGlucHV0IHZhbHVlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTGlzdChpbnB1dHNPYmplY3RMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10pOiBDb21wb25lbnRTdGVwSW5wdXRzIHtcbiAgICByZXR1cm4gbmV3IENvbXBvbmVudFN0ZXBJbnB1dHMoaW5wdXRzT2JqZWN0TGlzdCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIGlucHV0IHZhbHVlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5wdXRzOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGlucHV0OiBhbnkpIHtcbiAgICB0aGlzLmlucHV0cyA9IGlucHV0O1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBgaWZgIGNvbmRpdGlvbiBpbiB0aGUgY29tcG9uZW50IGRvY3VtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRTdGVwSWZDb25kaXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgYGlmYCB2YWx1ZSBmcm9tIGFuIG9iamVjdCwgZm9yIHRoZSBjb21wb25lbnQgc3RlcFxuICAgKlxuICAgKiBAcGFyYW0gaWZPYmplY3QgVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBgaWZgIGNvbmRpdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tT2JqZWN0KGlmT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogQ29tcG9uZW50U3RlcElmQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IENvbXBvbmVudFN0ZXBJZkNvbmRpdGlvbihpZk9iamVjdCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIGlucHV0IHZhbHVlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWZDb25kaXRpb246IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoaWZDb25kaXRpb246IGFueSkge1xuICAgIHRoaXMuaWZDb25kaXRpb24gPSBpZkNvbmRpdGlvbjtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSByZW5kZXJlZCBjb21wb25lbnQgZGF0YSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAqIC0gRm9yIGlubGluZSBjb21wb25lbnRzLCBkYXRhIGlzIHRoZSBjb21wb25lbnQgdGV4dFxuICogLSBGb3IgUzMtYmFja2VkIGNvbXBvbmVudHMsIHVyaSBpcyB0aGUgUzMgVVJMXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YUNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgY29tcG9uZW50IGRhdGEsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIHVyaSBpcyBzZXRcbiAgICovXG4gIHJlYWRvbmx5IGRhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBjb21wb25lbnQgZGF0YSBVUkksIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIGRhdGEgaXMgc2V0XG4gICAqL1xuICByZWFkb25seSB1cmk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciByZWZlcmVuY2luZyBhbmQgdXBsb2FkaW5nIGNvbXBvbmVudCBkYXRhXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wb25lbnREYXRhIHtcbiAgLyoqXG4gICAqIFVwbG9hZHMgY29tcG9uZW50IGRhdGEgZnJvbSBhIGxvY2FsIGZpbGUgdG8gUzMgdG8gdXNlIGFzIHRoZSBjb21wb25lbnQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgSWRlbnRpZmllciBvZiB0aGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBwYXRoIFRoZSBsb2NhbCBwYXRoIHRvIHRoZSBjb21wb25lbnQgZGF0YSBmaWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIFMzIGFzc2V0IHVwbG9hZCBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Bc3NldChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHMzYXNzZXRzLkFzc2V0T3B0aW9ucyA9IHt9LFxuICApOiBTM0NvbXBvbmVudERhdGEge1xuICAgIGNvbnN0IGFzc2V0ID0gbmV3IHMzYXNzZXRzLkFzc2V0KHNjb3BlLCBpZCwgeyAuLi5vcHRpb25zLCBwYXRoIH0pO1xuICAgIHJldHVybiBuZXcgUzNDb21wb25lbnREYXRhRnJvbUFzc2V0KGFzc2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2VzIGNvbXBvbmVudCBkYXRhIGZyb20gYSBwcmUtZXhpc3RpbmcgUzMgb2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBidWNrZXQgVGhlIFMzIGJ1Y2tldCB3aGVyZSB0aGUgY29tcG9uZW50IGRhdGEgaXMgc3RvcmVkXG4gICAqIEBwYXJhbSBrZXkgVGhlIFMzIGtleSBvZiB0aGUgY29tcG9uZW50IGRhdGEgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUzMoYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZyk6IFMzQ29tcG9uZW50RGF0YSB7XG4gICAgcmV0dXJuIG5ldyBTM0NvbXBvbmVudERhdGFGcm9tQnVja2V0S2V5KGJ1Y2tldCwga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBKU09OIG9iamVjdCBhcyB0aGUgY29tcG9uZW50IGRhdGFcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgQW4gaW5saW5lIEpTT04gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50IGRhdGFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUpzb25PYmplY3QoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IENvbXBvbmVudERhdGEge1xuICAgIGNvbnN0IGlubGluZURhdGEgPSB5YW1sLnN0cmluZ2lmeShkYXRhLCB7IGluZGVudDogMiB9KTtcbiAgICByZXR1cm4gbmV3IElubGluZUNvbXBvbmVudERhdGEoaW5saW5lRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlcyBhbiBpbmxpbmUgSlNPTiBvYmplY3QgYXMgdGhlIGNvbXBvbmVudCBkYXRhLCB1c2luZyB0aGUgQ29tcG9uZW50RG9jdW1lbnQgaW50ZXJmYWNlXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIEFuIGlubGluZSBKU09OIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Db21wb25lbnREb2N1bWVudEpzb25PYmplY3QoZGF0YTogQ29tcG9uZW50RG9jdW1lbnQpOiBDb21wb25lbnREYXRhIHtcbiAgICBjb25zdCB7IG5hbWUsIGRlc2NyaXB0aW9uLCBzY2hlbWFWZXJzaW9uLCBjb25zdGFudHMsIHBhcmFtZXRlcnMsIHBoYXNlcyB9ID0gZGF0YTtcbiAgICByZXR1cm4gdGhpcy5mcm9tSnNvbk9iamVjdCh7XG4gICAgICAuLi4obmFtZSAhPT0gdW5kZWZpbmVkICYmIHsgbmFtZSB9KSxcbiAgICAgIC4uLihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgICBzY2hlbWFWZXJzaW9uOiBzY2hlbWFWZXJzaW9uLFxuICAgICAgLi4uKGNvbnN0YW50cyAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgY29uc3RhbnRzOiBPYmplY3QuZW50cmllcyhjb25zdGFudHMpLm1hcCgoW2NvbnN0YW50TmFtZSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgIFtjb25zdGFudE5hbWVdOiB7IHR5cGU6IHZhbHVlLnR5cGUsIHZhbHVlOiB2YWx1ZS52YWx1ZSB9LFxuICAgICAgICB9KSksXG4gICAgICB9KSxcbiAgICAgIC4uLihwYXJhbWV0ZXJzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBwYXJhbWV0ZXJzOiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKS5tYXAoKFtwYXJhbWV0ZXJOYW1lLCB2YWx1ZV0pID0+ICh7IFtwYXJhbWV0ZXJOYW1lXTogdmFsdWUgfSkpLFxuICAgICAgfSksXG4gICAgICBwaGFzZXM6IHBoYXNlcy5tYXAoKHBoYXNlKSA9PiAoe1xuICAgICAgICBuYW1lOiBwaGFzZS5uYW1lLFxuICAgICAgICBzdGVwczogcGhhc2Uuc3RlcHMubWFwKChzdGVwKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IHN0ZXAubmFtZSxcbiAgICAgICAgICBhY3Rpb246IHN0ZXAuYWN0aW9uLFxuICAgICAgICAgIC4uLihzdGVwLm9uRmFpbHVyZSAhPT0gdW5kZWZpbmVkICYmIHsgb25GYWlsdXJlOiBzdGVwLm9uRmFpbHVyZSB9KSxcbiAgICAgICAgICAuLi4oc3RlcC50aW1lb3V0ICE9PSB1bmRlZmluZWQgJiYgeyB0aW1lb3V0U2Vjb25kczogc3RlcC50aW1lb3V0LnRvU2Vjb25kcygpIH0pLFxuICAgICAgICAgIC4uLihzdGVwLmlmICE9PSB1bmRlZmluZWQgJiYgeyBpZjogc3RlcC5pZi5pZkNvbmRpdGlvbiB9KSxcbiAgICAgICAgICAuLi4oc3RlcC5sb29wICE9PSB1bmRlZmluZWQgJiYgeyBsb29wOiBzdGVwLmxvb3AgfSksXG4gICAgICAgICAgaW5wdXRzOiBzdGVwLmlucHV0cy5pbnB1dHMsXG4gICAgICAgIH0pKSxcbiAgICAgIH0pKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBKU09OL1lBTUwgc3RyaW5nIGFzIHRoZSBjb21wb25lbnQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBBbiBpbmxpbmUgSlNPTi9ZQU1MIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmxpbmUoZGF0YTogc3RyaW5nKTogQ29tcG9uZW50RGF0YSB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVDb21wb25lbnREYXRhKGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBjb21wb25lbnQgZGF0YSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAgICogLSBGb3IgaW5saW5lIGNvbXBvbmVudHMsIGRhdGEgaXMgdGhlIGNvbXBvbmVudCB0ZXh0XG4gICAqIC0gRm9yIFMzLWJhY2tlZCBjb21wb25lbnRzLCB1cmkgaXMgdGhlIFMzIFVSTFxuICAgKi9cbiAgYWJzdHJhY3QgcmVuZGVyKCk6IENvbXBvbmVudERhdGFDb25maWc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBTMy1iYXNlZCBjb21wb25lbnQgZGF0YSByZWZlcmVuY2VzLCBjb250YWluaW5nIGFkZGl0aW9uYWwgcGVybWlzc2lvbiBncmFudCBtZXRob2RzIG9uIHRoZSBTMyBvYmplY3RcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFMzQ29tcG9uZW50RGF0YSBleHRlbmRzIENvbXBvbmVudERhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnVja2V0OiBzMy5JQnVja2V0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5idWNrZXQgPSBidWNrZXQ7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIGNvbXBvbmVudCBkYXRhIHRleHQsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogQ29tcG9uZW50RGF0YUNvbmZpZyB7XG4gICAgcmV0dXJuIHsgdXJpOiB0aGlzLmJ1Y2tldC5zM1VybEZvck9iamVjdCh0aGlzLmtleSkgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdXQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb21wb25lbnQgZGF0YSBpbiBTM1xuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UHV0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRQdXQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb21wb25lbnQgZGF0YSBpbiBTM1xuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYnVja2V0LmdyYW50UmVhZChncmFudGVlLCB0aGlzLmtleSk7XG4gIH1cbn1cblxuY2xhc3MgSW5saW5lQ29tcG9uZW50RGF0YSBleHRlbmRzIENvbXBvbmVudERhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRhOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgY29tcG9uZW50IGRhdGEgdGV4dCwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBDb21wb25lbnREYXRhQ29uZmlnIHtcbiAgICByZXR1cm4geyBkYXRhOiB0aGlzLmRhdGEgfTtcbiAgfVxufVxuXG5jbGFzcyBTM0NvbXBvbmVudERhdGFGcm9tQnVja2V0S2V5IGV4dGVuZHMgUzNDb21wb25lbnREYXRhIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcihidWNrZXQsIGtleSk7XG4gIH1cbn1cblxuY2xhc3MgUzNDb21wb25lbnREYXRhRnJvbUFzc2V0IGV4dGVuZHMgUzNDb21wb25lbnREYXRhIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGFzc2V0OiBzM2Fzc2V0cy5Bc3NldCkge1xuICAgIHN1cGVyKGFzc2V0LmJ1Y2tldCwgYXNzZXQuczNPYmplY3RLZXkpO1xuICB9XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciB3b3JraW5nIHdpdGggQVdTIE1hcmtldHBsYWNlIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEF3c01hcmtldHBsYWNlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEltcG9ydHMgYW4gQVdTIE1hcmtldHBsYWNlIGNvbXBvbmVudCBmcm9tIGl0cyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBBV1MtbWFuYWdlZCBjb21wb25lbnQgYXR0cmlidXRlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQXdzTWFya2V0cGxhY2VDb21wb25lbnRBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogQXdzTWFya2V0cGxhY2VDb21wb25lbnRBdHRyaWJ1dGVzLFxuICApOiBJQ29tcG9uZW50IHtcbiAgICByZXR1cm4gQ29tcG9uZW50LmZyb21Db21wb25lbnRBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgYWNjb3VudDogJ2F3cy1tYXJrZXRwbGFjZScsXG4gICAgICAgIHJlc291cmNlOiAnY29tcG9uZW50JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy5jb21wb25lbnROYW1lfS0ke2F0dHJzLm1hcmtldHBsYWNlUHJvZHVjdElkfS8ke2F0dHJzLmNvbXBvbmVudFZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBDb21wb25lbnRcbiAqL1xuYWJzdHJhY3QgY2xhc3MgQ29tcG9uZW50QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29tcG9uZW50XG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBjb21wb25lbnRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnRcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBjb21wb25lbnRcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbXBvbmVudFZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb21wb25lbnRcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuY29tcG9uZW50QXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb21wb25lbnRcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0Q29tcG9uZW50Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIENvbXBvbmVudC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtY29tcG9uZW50cy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkNvbXBvbmVudCc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBjb21wb25lbnQgZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbXBvbmVudEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb21wb25lbnRBcm46IHN0cmluZyk6IElDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLmZyb21Db21wb25lbnRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBjb21wb25lbnRBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGNvbXBvbmVudCBnaXZlbiBpdHMgbmFtZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbFxuICAgKiBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Db21wb25lbnROYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IElDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLmZyb21Db21wb25lbnRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBjb21wb25lbnROYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBjb21wb25lbnQgYnkgcHJvdmlkaW5nIGl0cyBhdHRyaWJ1dGVzLiBJZiB0aGUgY29tcG9uZW50IG5hbWUgaXMgcHJvdmlkZWQgYXMgYW4gYXR0cmlidXRlLCBpdFxuICAgKiBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzXG4gICAqIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbXBvbmVudEF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IENvbXBvbmVudEF0dHJpYnV0ZXMpOiBJQ29tcG9uZW50IHtcbiAgICBpZiAoYXR0cnMuY29tcG9uZW50QXJuICYmIChhdHRycy5jb21wb25lbnROYW1lIHx8IGF0dHJzLmNvbXBvbmVudFZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ2EgY29tcG9uZW50TmFtZSBvciBjb21wb25lbnRWZXJzaW9uIGNhbm5vdCBiZSBwcm92aWRlZCB3aGVuIGEgY29tcG9uZW50QXJuIGlzIHByb3ZpZGVkJyxcbiAgICAgICAgc2NvcGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghYXR0cnMuY29tcG9uZW50QXJuICYmICFhdHRycy5jb21wb25lbnROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignZWl0aGVyIGNvbXBvbmVudEFybiBvciBjb21wb25lbnROYW1lIGlzIHJlcXVpcmVkJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBvbmVudEFybiA9XG4gICAgICBhdHRycy5jb21wb25lbnRBcm4gPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnY29tcG9uZW50JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy5jb21wb25lbnROYW1lfS8ke2F0dHJzLmNvbXBvbmVudFZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgW2NvbXBvbmVudE5hbWUsIGNvbXBvbmVudFZlcnNpb25dID0gKCgpID0+IHtcbiAgICAgIGlmIChhdHRycy5jb21wb25lbnROYW1lKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMuY29tcG9uZW50TmFtZSwgYXR0cnMuY29tcG9uZW50VmVyc2lvbiA/PyBMQVRFU1RfVkVSU0lPTl07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgICAgY29tcG9uZW50QXJuLFxuICAgICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWVWZXJzaW9uU3BsaXQgPSBjZGsuRm4uc3BsaXQoJy8nLCBjb21wb25lbnROYW1lVmVyc2lvbik7XG4gICAgICByZXR1cm4gW2Nkay5Gbi5zZWxlY3QoMCwgY29tcG9uZW50TmFtZVZlcnNpb25TcGxpdCksIGNkay5Gbi5zZWxlY3QoMSwgY29tcG9uZW50TmFtZVZlcnNpb25TcGxpdCldO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRBcm4gPSBjb21wb25lbnRBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50VmVyc2lvbiA9IGNvbXBvbmVudFZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgQ29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0NvbXBvbmVudCh4OiBhbnkpOiB4IGlzIENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIENPTVBPTkVOVF9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50VmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZW5jcnlwdGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5jcnlwdGVkOiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29tcG9uZW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuY29tcG9uZW50TmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgQ09NUE9ORU5UX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVDb21wb25lbnROYW1lKCk7XG5cbiAgICBwcm9wcy5zdXBwb3J0ZWRPc1ZlcnNpb25zPy5mb3JFYWNoKChvc1ZlcnNpb24pID0+IHtcbiAgICAgIGlmIChvc1ZlcnNpb24ucGxhdGZvcm0gIT09IHByb3BzLnBsYXRmb3JtKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGBvcyB2ZXJzaW9uICR7b3NWZXJzaW9uLm9zVmVyc2lvbn0gaXMgbm90IGNvbXBhdGlibGUgd2l0aCBwbGF0Zm9ybSAke3Byb3BzLnBsYXRmb3JtfWAsXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXBvbmVudFZlcnNpb24gPSBwcm9wcy5jb21wb25lbnRWZXJzaW9uID8/ICcxLjAuMCc7XG4gICAgY29uc3Qgc3VwcG9ydGVkT3NWZXJzaW9ucyA9IHByb3BzLnN1cHBvcnRlZE9zVmVyc2lvbnM/LmZpbHRlcigob3NWZXJzaW9uKSA9PiBvc1ZlcnNpb24ub3NWZXJzaW9uICE9PSB1bmRlZmluZWQpO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Db21wb25lbnQodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICB2ZXJzaW9uOiBjb21wb25lbnRWZXJzaW9uLFxuICAgICAgY2hhbmdlRGVzY3JpcHRpb246IHByb3BzLmNoYW5nZURlc2NyaXB0aW9uLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgcGxhdGZvcm06IHByb3BzLnBsYXRmb3JtLFxuICAgICAga21zS2V5SWQ6IHByb3BzLmttc0tleT8ua2V5QXJuLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIC4uLihzdXBwb3J0ZWRPc1ZlcnNpb25zPy5sZW5ndGggJiYge1xuICAgICAgICBzdXBwb3J0ZWRPc1ZlcnNpb25zOiBzdXBwb3J0ZWRPc1ZlcnNpb25zLm1hcCgob3NWZXJzaW9uKSA9PiBvc1ZlcnNpb24ub3NWZXJzaW9uISksXG4gICAgICB9KSxcbiAgICAgIC4uLnByb3BzLmRhdGEucmVuZGVyKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbXBvbmVudFZlcnNpb24gPSBjb21wb25lbnRWZXJzaW9uO1xuICAgIHRoaXMuZW5jcnlwdGVkID0gdHJ1ZTsgLy8gQ29tcG9uZW50cyBhcmUgYWx3YXlzIGVuY3J5cHRlZFxuICAgIHRoaXMua21zS2V5ID0gcHJvcHMua21zS2V5O1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgY29tcG9uZW50TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmF0dHJOYW1lKTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGNvbXBvbmVudEFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2NvbXBvbmVudCcsXG4gICAgICByZXNvdXJjZU5hbWU6IGAke3RoaXMucGh5c2ljYWxOYW1lfS8ke3RoaXMuY29tcG9uZW50VmVyc2lvbn1gLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBjb21wb25lbnRcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgY29tcG9uZW50VHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmF0dHJUeXBlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbXBvbmVudE5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgdGhlIGNvbXBvbmVudE5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHRoZSBjb21wb25lbnROYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcywgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGB0aGUgY29tcG9uZW50TmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcywgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihgdGhlIGNvbXBvbmVudE5hbWUgbXVzdCBiZSBsb3dlcmNhc2UsIGdvdDogJyR7dGhpcy5waHlzaWNhbE5hbWV9J2AsIHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -299,20 +299,12 @@ export declare class ContainerRecipe extends ContainerRecipeBase {
|
|
|
299
299
|
* Return whether the given object is a ContainerRecipe.
|
|
300
300
|
*/
|
|
301
301
|
static isContainerRecipe(x: any): x is ContainerRecipe;
|
|
302
|
-
/**
|
|
303
|
-
* The ARN of the container recipe
|
|
304
|
-
*/
|
|
305
|
-
readonly containerRecipeArn: string;
|
|
306
|
-
/**
|
|
307
|
-
* The name of the container recipe
|
|
308
|
-
*/
|
|
309
|
-
readonly containerRecipeName: string;
|
|
310
|
-
/**
|
|
311
|
-
* The version of the container recipe
|
|
312
|
-
*/
|
|
313
|
-
readonly containerRecipeVersion: string;
|
|
314
302
|
private readonly instanceBlockDevices;
|
|
303
|
+
private resource;
|
|
315
304
|
constructor(scope: Construct, id: string, props: ContainerRecipeProps);
|
|
305
|
+
get containerRecipeName(): string;
|
|
306
|
+
get containerRecipeArn(): string;
|
|
307
|
+
get containerRecipeVersion(): string;
|
|
316
308
|
/**
|
|
317
309
|
* Adds block devices to attach to the instance used for building, testing, and distributing the container image.
|
|
318
310
|
*
|