@aws-cdk/aws-imagebuilder-alpha 2.230.0-alpha.0 → 2.232.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/lib/base-image.js CHANGED
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ContainerInstanceImage = exports.BaseContainerImage = exports.BaseImage = void 0;
4
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
4
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
6
  /**
6
7
  * Represents a base image that is used to start from in EC2 Image Builder image builds
7
8
  */
8
9
  class BaseImage {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.BaseImage", version: "2.230.0-alpha.0" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.BaseImage", version: "2.232.0-alpha.0" };
10
11
  /**
11
12
  * The AMI ID to use as a base image in an image recipe
12
13
  *
@@ -15,6 +16,23 @@ class BaseImage {
15
16
  static fromAmiId(amiId) {
16
17
  return new BaseImage(amiId);
17
18
  }
19
+ /**
20
+ * The EC2 Image Builder image to use as a base image in an image recipe
21
+ *
22
+ * @param image The EC2 Image Builder image to use as a base image
23
+ */
24
+ static fromImage(image) {
25
+ try {
26
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_IImage(image);
27
+ }
28
+ catch (error) {
29
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
30
+ Error.captureStackTrace(error, this.fromImage);
31
+ }
32
+ throw error;
33
+ }
34
+ return new BaseImage(image.imageArn);
35
+ }
18
36
  /**
19
37
  * The marketplace product ID for an AMI product to use as the base image in an image recipe
20
38
  *
@@ -61,7 +79,7 @@ exports.BaseImage = BaseImage;
61
79
  * Represents a base image that is used to start from in EC2 Image Builder image builds
62
80
  */
63
81
  class BaseContainerImage {
64
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.BaseContainerImage", version: "2.230.0-alpha.0" };
82
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.BaseContainerImage", version: "2.232.0-alpha.0" };
65
83
  /**
66
84
  * The DockerHub image to use as the base image in a container recipe
67
85
  *
@@ -90,6 +108,23 @@ class BaseContainerImage {
90
108
  static fromEcrPublic(registryAlias, repositoryName, tag) {
91
109
  return new BaseContainerImage(`public.ecr.aws/${registryAlias}/${repositoryName}:${tag}`);
92
110
  }
111
+ /**
112
+ * The EC2 Image Builder image to use as a base image in a container recipe
113
+ *
114
+ * @param image The EC2 Image Builder image to use as a base image
115
+ */
116
+ static fromImage(image) {
117
+ try {
118
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_IImage(image);
119
+ }
120
+ catch (error) {
121
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
122
+ Error.captureStackTrace(error, this.fromImage);
123
+ }
124
+ throw error;
125
+ }
126
+ return new BaseContainerImage(image.imageArn);
127
+ }
93
128
  /**
94
129
  * The string value of the base image to use in a container recipe. This can be an EC2 Image Builder image ARN,
95
130
  * an ECR or ECR public image, or a container URI sourced from a third-party container registry such as DockerHub.
@@ -113,7 +148,7 @@ exports.BaseContainerImage = BaseContainerImage;
113
148
  * EC2 Image Builder container build.
114
149
  */
115
150
  class ContainerInstanceImage {
116
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerInstanceImage", version: "2.230.0-alpha.0" };
151
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerInstanceImage", version: "2.232.0-alpha.0" };
117
152
  /**
118
153
  * The AMI ID to use to launch the instance for building the container image
119
154
  *
@@ -157,4 +192,4 @@ class ContainerInstanceImage {
157
192
  }
158
193
  }
159
194
  exports.ContainerInstanceImage = ContainerInstanceImage;
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2UtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxTQUFTOztJQUNwQjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQ25DLE9BQU8sSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDN0I7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLHdCQUF3QixDQUFDLFNBQWlCO1FBQ3RELE9BQU8sSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDakM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQXlCO1FBQ3RELE9BQU8sSUFBSSxTQUFTLENBQUMsT0FBTyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztLQUN2RDtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsYUFBcUI7UUFDdEQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLGFBQWEsRUFBRSxDQUFDLENBQUM7S0FDOUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBdUI7UUFDOUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN2QztJQUVEOztRQUVJO0lBQ1ksS0FBSyxDQUFTO0lBRTlCLFlBQXNCLEtBQWE7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBdERILDhCQXVEQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxrQkFBa0I7O0lBQzdCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFrQixFQUFFLEdBQVc7UUFDekQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDdkQ7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBMkIsRUFBRSxHQUFXO1FBQzVELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUNwRTtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBcUIsRUFBRSxjQUFzQixFQUFFLEdBQVc7UUFDcEYsT0FBTyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixhQUFhLElBQUksY0FBYyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDM0Y7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsd0JBQWdDO1FBQ3ZELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQ3pEO0lBRUQ7O1FBRUk7SUFDWSxLQUFLLENBQVM7SUFFOUIsWUFBc0IsS0FBYTtRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFqREgsZ0RBa0RDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxzQkFBc0I7O0lBQ2pDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWE7UUFDbkMsT0FBTyxJQUFJLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUErQjtRQUM1RCxPQUFPLElBQUksc0JBQXNCLENBQUMsT0FBTyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztLQUNwRTtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsYUFBcUI7UUFDdEQsT0FBTyxJQUFJLHNCQUFzQixDQUFDLE9BQU8sYUFBYSxFQUFFLENBQUMsQ0FBQztLQUMzRDtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsNEJBQW9DO1FBQzNELE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0tBQ2pFO0lBRUQ7O1FBRUk7SUFDWSxLQUFLLENBQVM7SUFFOUIsWUFBc0IsS0FBYTtRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUE5Q0gsd0RBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBiYXNlIGltYWdlIHRoYXQgaXMgdXNlZCB0byBzdGFydCBmcm9tIGluIEVDMiBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkc1xuICovXG5leHBvcnQgY2xhc3MgQmFzZUltYWdlIHtcbiAgLyoqXG4gICAqIFRoZSBBTUkgSUQgdG8gdXNlIGFzIGEgYmFzZSBpbWFnZSBpbiBhbiBpbWFnZSByZWNpcGVcbiAgICpcbiAgICogQHBhcmFtIGFtaUlkIFRoZSBBTUkgSUQgdG8gdXNlIGFzIHRoZSBiYXNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21BbWlJZChhbWlJZDogc3RyaW5nKTogQmFzZUltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VJbWFnZShhbWlJZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1hcmtldHBsYWNlIHByb2R1Y3QgSUQgZm9yIGFuIEFNSSBwcm9kdWN0IHRvIHVzZSBhcyB0aGUgYmFzZSBpbWFnZSBpbiBhbiBpbWFnZSByZWNpcGVcbiAgICpcbiAgICogQHBhcmFtIHByb2R1Y3RJZCBUaGUgTWFya2V0cGxhY2UgQU1JIHByb2R1Y3QgSUQgdG8gdXNlIGFzIHRoZSBiYXNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21NYXJrZXRwbGFjZVByb2R1Y3RJZChwcm9kdWN0SWQ6IHN0cmluZyk6IEJhc2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBCYXNlSW1hZ2UocHJvZHVjdElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgU1NNIHBhcmFtZXRlciB0byB1c2UgYXMgdGhlIGJhc2UgaW1hZ2UgaW4gYW4gaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXIgVGhlIFNTTSBwYXJhbWV0ZXIgdG8gdXNlIGFzIHRoZSBiYXNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Tc21QYXJhbWV0ZXIocGFyYW1ldGVyOiBzc20uSVBhcmFtZXRlcik6IEJhc2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBCYXNlSW1hZ2UoYHNzbToke3BhcmFtZXRlci5wYXJhbWV0ZXJBcm59YCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgU1NNIHBhcmFtZXRlciB0byB1c2UgYXMgdGhlIGJhc2UgaW1hZ2UgaW4gYW4gaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJOYW1lIFRoZSBuYW1lIG9mIHRoZSBTU00gcGFyYW1ldGVyIHRvIHVzZSBhcyB0aGUgYmFzZSBpbWFnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3NtUGFyYW1ldGVyTmFtZShwYXJhbWV0ZXJOYW1lOiBzdHJpbmcpOiBCYXNlSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgQmFzZUltYWdlKGBzc206JHtwYXJhbWV0ZXJOYW1lfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Qgc3RyaW5nIHZhbHVlIG9mIHRoZSBiYXNlIGltYWdlIHRvIHVzZSBpbiBhbiBpbWFnZSByZWNpcGUuIFRoaXMgY2FuIGJlIGFuIEVDMiBJbWFnZSBCdWlsZGVyIGltYWdlIEFSTixcbiAgICogYW4gU1NNIHBhcmFtZXRlciwgYW4gQVdTIE1hcmtldHBsYWNlIHByb2R1Y3QgSUQsIG9yIGFuIEFNSSBJRC5cbiAgICpcbiAgICogQHBhcmFtIGJhc2VJbWFnZVN0cmluZyBUaGUgYmFzZSBpbWFnZSBhcyBhIGRpcmVjdCBzdHJpbmcgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZyhiYXNlSW1hZ2VTdHJpbmc6IHN0cmluZyk6IEJhc2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBCYXNlSW1hZ2UoYmFzZUltYWdlU3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgYmFzZSBpbWFnZSB0byB1c2VcbiAgICoqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2U6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoaW1hZ2U6IHN0cmluZykge1xuICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBiYXNlIGltYWdlIHRoYXQgaXMgdXNlZCB0byBzdGFydCBmcm9tIGluIEVDMiBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkc1xuICovXG5leHBvcnQgY2xhc3MgQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgLyoqXG4gICAqIFRoZSBEb2NrZXJIdWIgaW1hZ2UgdG8gdXNlIGFzIHRoZSBiYXNlIGltYWdlIGluIGEgY29udGFpbmVyIHJlY2lwZVxuICAgKlxuICAgKiBAcGFyYW0gcmVwb3NpdG9yeSBUaGUgRG9ja2VySHViIHJlcG9zaXRvcnkgd2hlcmUgdGhlIGJhc2UgaW1hZ2UgcmVzaWRlcyBpblxuICAgKiBAcGFyYW0gdGFnIFRoZSB0YWcgb2YgdGhlIGJhc2UgaW1hZ2UgaW4gdGhlIERvY2tlckh1YiByZXBvc2l0b3J5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Eb2NrZXJIdWIocmVwb3NpdG9yeTogc3RyaW5nLCB0YWc6IHN0cmluZyk6IEJhc2VDb250YWluZXJJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBCYXNlQ29udGFpbmVySW1hZ2UoYCR7cmVwb3NpdG9yeX06JHt0YWd9YCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEVDUiBjb250YWluZXIgaW1hZ2UgdG8gdXNlIGFzIHRoZSBiYXNlIGltYWdlIGluIGEgY29udGFpbmVyIHJlY2lwZVxuICAgKlxuICAgKiBAcGFyYW0gcmVwb3NpdG9yeSBUaGUgRUNSIHJlcG9zaXRvcnkgd2hlcmUgdGhlIGJhc2UgaW1hZ2UgcmVzaWRlcyBpblxuICAgKiBAcGFyYW0gdGFnIFRoZSB0YWcgb2YgdGhlIGJhc2UgaW1hZ2UgaW4gdGhlIEVDUiByZXBvc2l0b3J5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FY3IocmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5LCB0YWc6IHN0cmluZyk6IEJhc2VDb250YWluZXJJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBCYXNlQ29udGFpbmVySW1hZ2UocmVwb3NpdG9yeS5yZXBvc2l0b3J5VXJpRm9yVGFnKHRhZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBFQ1IgcHVibGljIGNvbnRhaW5lciBpbWFnZSB0byB1c2UgYXMgdGhlIGJhc2UgaW1hZ2UgaW4gYSBjb250YWluZXIgcmVjaXBlXG4gICAqXG4gICAqIEBwYXJhbSByZWdpc3RyeUFsaWFzIFRoZSBhbGlhcyBvZiB0aGUgRUNSIHB1YmxpYyByZWdpc3RyeSB3aGVyZSB0aGUgYmFzZSBpbWFnZSByZXNpZGVzIGluXG4gICAqIEBwYXJhbSByZXBvc2l0b3J5TmFtZSBUaGUgbmFtZSBvZiB0aGUgRUNSIHB1YmxpYyByZXBvc2l0b3J5LCB3aGVyZSB0aGUgYmFzZSBpbWFnZSByZXNpZGVzIGluXG4gICAqIEBwYXJhbSB0YWcgVGhlIHRhZyBvZiB0aGUgYmFzZSBpbWFnZSBpbiB0aGUgRUNSIHB1YmxpYyByZXBvc2l0b3J5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FY3JQdWJsaWMocmVnaXN0cnlBbGlhczogc3RyaW5nLCByZXBvc2l0b3J5TmFtZTogc3RyaW5nLCB0YWc6IHN0cmluZyk6IEJhc2VDb250YWluZXJJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBCYXNlQ29udGFpbmVySW1hZ2UoYHB1YmxpYy5lY3IuYXdzLyR7cmVnaXN0cnlBbGlhc30vJHtyZXBvc2l0b3J5TmFtZX06JHt0YWd9YCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgYmFzZSBpbWFnZSB0byB1c2UgaW4gYSBjb250YWluZXIgcmVjaXBlLiBUaGlzIGNhbiBiZSBhbiBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZSBBUk4sXG4gICAqIGFuIEVDUiBvciBFQ1IgcHVibGljIGltYWdlLCBvciBhIGNvbnRhaW5lciBVUkkgc291cmNlZCBmcm9tIGEgdGhpcmQtcGFydHkgY29udGFpbmVyIHJlZ2lzdHJ5IHN1Y2ggYXMgRG9ja2VySHViLlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZUNvbnRhaW5lckltYWdlU3RyaW5nIFRoZSBiYXNlIGltYWdlIGFzIGEgZGlyZWN0IHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKGJhc2VDb250YWluZXJJbWFnZVN0cmluZzogc3RyaW5nKTogQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VDb250YWluZXJJbWFnZShiYXNlQ29udGFpbmVySW1hZ2VTdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBiYXNlIGltYWdlIHRvIHVzZVxuICAgKiovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihpbWFnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbWFnZSA9IGltYWdlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbnRhaW5lciBpbnN0YW5jZSBpbWFnZSB0aGF0IGlzIHVzZWQgdG8gbGF1bmNoIHRoZSBpbnN0YW5jZSB1c2VkIGZvciBidWlsZGluZyB0aGUgY29udGFpbmVyIGZvciBhblxuICogRUMyIEltYWdlIEJ1aWxkZXIgY29udGFpbmVyIGJ1aWxkLlxuICovXG5leHBvcnQgY2xhc3MgQ29udGFpbmVySW5zdGFuY2VJbWFnZSB7XG4gIC8qKlxuICAgKiBUaGUgQU1JIElEIHRvIHVzZSB0byBsYXVuY2ggdGhlIGluc3RhbmNlIGZvciBidWlsZGluZyB0aGUgY29udGFpbmVyIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBhbWlJZCBUaGUgQU1JIElEIHRvIHVzZSBhcyB0aGUgY29udGFpbmVyIGluc3RhbmNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21BbWlJZChhbWlJZDogc3RyaW5nKTogQ29udGFpbmVySW5zdGFuY2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBDb250YWluZXJJbnN0YW5jZUltYWdlKGFtaUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgU1NNIHBhcmFtZXRlciB0byB1c2UgdG8gbGF1bmNoIHRoZSBpbnN0YW5jZSBmb3IgYnVpbGRpbmcgdGhlIGNvbnRhaW5lciBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1ldGVyIFRoZSBTU00gcGFyYW1ldGVyIHRvIHVzZSBhcyB0aGUgY29udGFpbmVyIGluc3RhbmNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Tc21QYXJhbWV0ZXIocGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcik6IENvbnRhaW5lckluc3RhbmNlSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgQ29udGFpbmVySW5zdGFuY2VJbWFnZShgc3NtOiR7cGFyYW1ldGVyLnBhcmFtZXRlckFybn1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTU00gcGFyYW1ldGVyIHVzZWQgdG8gbGF1bmNoIHRoZSBpbnN0YW5jZSBmb3IgYnVpbGRpbmcgdGhlIGNvbnRhaW5lciBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1ldGVyTmFtZSBUaGUgbmFtZSBvZiB0aGUgU1NNIHBhcmFtZXRlciB1c2VkIGFzIHRoZSBjb250YWluZXIgaW5zdGFuY2UgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNzbVBhcmFtZXRlck5hbWUocGFyYW1ldGVyTmFtZTogc3RyaW5nKTogQ29udGFpbmVySW5zdGFuY2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBDb250YWluZXJJbnN0YW5jZUltYWdlKGBzc206JHtwYXJhbWV0ZXJOYW1lfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIGNvbnRhaW5lciBpbnN0YW5jZSBpbWFnZSB0byB1c2UgaW4gYSBjb250YWluZXIgcmVjaXBlLiBUaGlzIGNhbiBlaXRoZXIgYmU6XG4gICAqIC0gYW4gU1NNIHBhcmFtZXRlciByZWZlcmVuY2UsIHByZWZpeGVkIHdpdGggYHNzbTpgIGFuZCBmb2xsb3dlZCBieSB0aGUgcGFyYW1ldGVyIG5hbWUgb3IgQVJOXG4gICAqIC0gYW4gQU1JIElEXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJJbnN0YW5jZUltYWdlU3RyaW5nIFRoZSBjb250YWluZXIgaW5zdGFuY2UgaW1hZ2UgYXMgYSBkaXJlY3Qgc3RyaW5nIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcoY29udGFpbmVySW5zdGFuY2VJbWFnZVN0cmluZzogc3RyaW5nKTogQ29udGFpbmVySW5zdGFuY2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBDb250YWluZXJJbnN0YW5jZUltYWdlKGNvbnRhaW5lckluc3RhbmNlSW1hZ2VTdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBjb250YWluZXIgaW5zdGFuY2UgaW1hZ2UgdG8gdXNlXG4gICAqKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGltYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmltYWdlID0gaW1hZ2U7XG4gIH1cbn1cbiJdfQ==
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2UtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQTs7R0FFRztBQUNILE1BQWEsU0FBUzs7SUFDcEI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBYTtRQUNuQyxPQUFPLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzdCO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBYTs7Ozs7Ozs7OztRQUNuQyxPQUFPLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN0QztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQUMsU0FBaUI7UUFDdEQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBeUI7UUFDdEQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxhQUFxQjtRQUN0RCxPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sYUFBYSxFQUFFLENBQUMsQ0FBQztLQUM5QztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUF1QjtRQUM5QyxPQUFPLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3ZDO0lBRUQ7O1FBRUk7SUFDWSxLQUFLLENBQVM7SUFFOUIsWUFBc0IsS0FBYTtRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUEvREgsOEJBZ0VDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjs7SUFDN0I7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQWtCLEVBQUUsR0FBVztRQUN6RCxPQUFPLElBQUksa0JBQWtCLENBQUMsR0FBRyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztLQUN2RDtJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUEyQixFQUFFLEdBQVc7UUFDNUQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ3BFO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFxQixFQUFFLGNBQXNCLEVBQUUsR0FBVztRQUNwRixPQUFPLElBQUksa0JBQWtCLENBQUMsa0JBQWtCLGFBQWEsSUFBSSxjQUFjLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztLQUMzRjtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWE7Ozs7Ozs7Ozs7UUFDbkMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUMvQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyx3QkFBZ0M7UUFDdkQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLENBQUM7S0FDekQ7SUFFRDs7UUFFSTtJQUNZLEtBQUssQ0FBUztJQUU5QixZQUFzQixLQUFhO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQTFESCxnREEyREM7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLHNCQUFzQjs7SUFDakM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBYTtRQUNuQyxPQUFPLElBQUksc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDMUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQStCO1FBQzVELE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxhQUFxQjtRQUN0RCxPQUFPLElBQUksc0JBQXNCLENBQUMsT0FBTyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0tBQzNEO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyw0QkFBb0M7UUFDM0QsT0FBTyxJQUFJLHNCQUFzQixDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDakU7SUFFRDs7UUFFSTtJQUNZLEtBQUssQ0FBUztJQUU5QixZQUFzQixLQUFhO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQTlDSCx3REErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgeyBJSW1hZ2UgfSBmcm9tICcuL2ltYWdlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgYmFzZSBpbWFnZSB0aGF0IGlzIHVzZWQgdG8gc3RhcnQgZnJvbSBpbiBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZSBidWlsZHNcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VJbWFnZSB7XG4gIC8qKlxuICAgKiBUaGUgQU1JIElEIHRvIHVzZSBhcyBhIGJhc2UgaW1hZ2UgaW4gYW4gaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBwYXJhbSBhbWlJZCBUaGUgQU1JIElEIHRvIHVzZSBhcyB0aGUgYmFzZSBpbWFnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQW1pSWQoYW1pSWQ6IHN0cmluZyk6IEJhc2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBCYXNlSW1hZ2UoYW1pSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZSB0byB1c2UgYXMgYSBiYXNlIGltYWdlIGluIGFuIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAcGFyYW0gaW1hZ2UgVGhlIEVDMiBJbWFnZSBCdWlsZGVyIGltYWdlIHRvIHVzZSBhcyBhIGJhc2UgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlKGltYWdlOiBJSW1hZ2UpOiBCYXNlSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgQmFzZUltYWdlKGltYWdlLmltYWdlQXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWFya2V0cGxhY2UgcHJvZHVjdCBJRCBmb3IgYW4gQU1JIHByb2R1Y3QgdG8gdXNlIGFzIHRoZSBiYXNlIGltYWdlIGluIGFuIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAcGFyYW0gcHJvZHVjdElkIFRoZSBNYXJrZXRwbGFjZSBBTUkgcHJvZHVjdCBJRCB0byB1c2UgYXMgdGhlIGJhc2UgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU1hcmtldHBsYWNlUHJvZHVjdElkKHByb2R1Y3RJZDogc3RyaW5nKTogQmFzZUltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VJbWFnZShwcm9kdWN0SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBTU00gcGFyYW1ldGVyIHRvIHVzZSBhcyB0aGUgYmFzZSBpbWFnZSBpbiBhbiBpbWFnZSByZWNpcGVcbiAgICpcbiAgICogQHBhcmFtIHBhcmFtZXRlciBUaGUgU1NNIHBhcmFtZXRlciB0byB1c2UgYXMgdGhlIGJhc2UgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNzbVBhcmFtZXRlcihwYXJhbWV0ZXI6IHNzbS5JUGFyYW1ldGVyKTogQmFzZUltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VJbWFnZShgc3NtOiR7cGFyYW1ldGVyLnBhcmFtZXRlckFybn1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIHRoZSBTU00gcGFyYW1ldGVyIHRvIHVzZSBhcyB0aGUgYmFzZSBpbWFnZSBpbiBhbiBpbWFnZSByZWNpcGVcbiAgICpcbiAgICogQHBhcmFtIHBhcmFtZXRlck5hbWUgVGhlIG5hbWUgb2YgdGhlIFNTTSBwYXJhbWV0ZXIgdG8gdXNlIGFzIHRoZSBiYXNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Tc21QYXJhbWV0ZXJOYW1lKHBhcmFtZXRlck5hbWU6IHN0cmluZyk6IEJhc2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBCYXNlSW1hZ2UoYHNzbToke3BhcmFtZXRlck5hbWV9YCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRpcmVjdCBzdHJpbmcgdmFsdWUgb2YgdGhlIGJhc2UgaW1hZ2UgdG8gdXNlIGluIGFuIGltYWdlIHJlY2lwZS4gVGhpcyBjYW4gYmUgYW4gRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2UgQVJOLFxuICAgKiBhbiBTU00gcGFyYW1ldGVyLCBhbiBBV1MgTWFya2V0cGxhY2UgcHJvZHVjdCBJRCwgb3IgYW4gQU1JIElELlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZUltYWdlU3RyaW5nIFRoZSBiYXNlIGltYWdlIGFzIGEgZGlyZWN0IHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKGJhc2VJbWFnZVN0cmluZzogc3RyaW5nKTogQmFzZUltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VJbWFnZShiYXNlSW1hZ2VTdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBiYXNlIGltYWdlIHRvIHVzZVxuICAgKiovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihpbWFnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbWFnZSA9IGltYWdlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGJhc2UgaW1hZ2UgdGhhdCBpcyB1c2VkIHRvIHN0YXJ0IGZyb20gaW4gRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGRzXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlQ29udGFpbmVySW1hZ2Uge1xuICAvKipcbiAgICogVGhlIERvY2tlckh1YiBpbWFnZSB0byB1c2UgYXMgdGhlIGJhc2UgaW1hZ2UgaW4gYSBjb250YWluZXIgcmVjaXBlXG4gICAqXG4gICAqIEBwYXJhbSByZXBvc2l0b3J5IFRoZSBEb2NrZXJIdWIgcmVwb3NpdG9yeSB3aGVyZSB0aGUgYmFzZSBpbWFnZSByZXNpZGVzIGluXG4gICAqIEBwYXJhbSB0YWcgVGhlIHRhZyBvZiB0aGUgYmFzZSBpbWFnZSBpbiB0aGUgRG9ja2VySHViIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURvY2tlckh1YihyZXBvc2l0b3J5OiBzdHJpbmcsIHRhZzogc3RyaW5nKTogQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VDb250YWluZXJJbWFnZShgJHtyZXBvc2l0b3J5fToke3RhZ31gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgRUNSIGNvbnRhaW5lciBpbWFnZSB0byB1c2UgYXMgdGhlIGJhc2UgaW1hZ2UgaW4gYSBjb250YWluZXIgcmVjaXBlXG4gICAqXG4gICAqIEBwYXJhbSByZXBvc2l0b3J5IFRoZSBFQ1IgcmVwb3NpdG9yeSB3aGVyZSB0aGUgYmFzZSBpbWFnZSByZXNpZGVzIGluXG4gICAqIEBwYXJhbSB0YWcgVGhlIHRhZyBvZiB0aGUgYmFzZSBpbWFnZSBpbiB0aGUgRUNSIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUVjcihyZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnksIHRhZzogc3RyaW5nKTogQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VDb250YWluZXJJbWFnZShyZXBvc2l0b3J5LnJlcG9zaXRvcnlVcmlGb3JUYWcodGFnKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEVDUiBwdWJsaWMgY29udGFpbmVyIGltYWdlIHRvIHVzZSBhcyB0aGUgYmFzZSBpbWFnZSBpbiBhIGNvbnRhaW5lciByZWNpcGVcbiAgICpcbiAgICogQHBhcmFtIHJlZ2lzdHJ5QWxpYXMgVGhlIGFsaWFzIG9mIHRoZSBFQ1IgcHVibGljIHJlZ2lzdHJ5IHdoZXJlIHRoZSBiYXNlIGltYWdlIHJlc2lkZXMgaW5cbiAgICogQHBhcmFtIHJlcG9zaXRvcnlOYW1lIFRoZSBuYW1lIG9mIHRoZSBFQ1IgcHVibGljIHJlcG9zaXRvcnksIHdoZXJlIHRoZSBiYXNlIGltYWdlIHJlc2lkZXMgaW5cbiAgICogQHBhcmFtIHRhZyBUaGUgdGFnIG9mIHRoZSBiYXNlIGltYWdlIGluIHRoZSBFQ1IgcHVibGljIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUVjclB1YmxpYyhyZWdpc3RyeUFsaWFzOiBzdHJpbmcsIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIHRhZzogc3RyaW5nKTogQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VDb250YWluZXJJbWFnZShgcHVibGljLmVjci5hd3MvJHtyZWdpc3RyeUFsaWFzfS8ke3JlcG9zaXRvcnlOYW1lfToke3RhZ31gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2UgdG8gdXNlIGFzIGEgYmFzZSBpbWFnZSBpbiBhIGNvbnRhaW5lciByZWNpcGVcbiAgICpcbiAgICogQHBhcmFtIGltYWdlIFRoZSBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZSB0byB1c2UgYXMgYSBiYXNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZShpbWFnZTogSUltYWdlKTogQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VDb250YWluZXJJbWFnZShpbWFnZS5pbWFnZUFybik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgYmFzZSBpbWFnZSB0byB1c2UgaW4gYSBjb250YWluZXIgcmVjaXBlLiBUaGlzIGNhbiBiZSBhbiBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZSBBUk4sXG4gICAqIGFuIEVDUiBvciBFQ1IgcHVibGljIGltYWdlLCBvciBhIGNvbnRhaW5lciBVUkkgc291cmNlZCBmcm9tIGEgdGhpcmQtcGFydHkgY29udGFpbmVyIHJlZ2lzdHJ5IHN1Y2ggYXMgRG9ja2VySHViLlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZUNvbnRhaW5lckltYWdlU3RyaW5nIFRoZSBiYXNlIGltYWdlIGFzIGEgZGlyZWN0IHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKGJhc2VDb250YWluZXJJbWFnZVN0cmluZzogc3RyaW5nKTogQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgICByZXR1cm4gbmV3IEJhc2VDb250YWluZXJJbWFnZShiYXNlQ29udGFpbmVySW1hZ2VTdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBiYXNlIGltYWdlIHRvIHVzZVxuICAgKiovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihpbWFnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbWFnZSA9IGltYWdlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbnRhaW5lciBpbnN0YW5jZSBpbWFnZSB0aGF0IGlzIHVzZWQgdG8gbGF1bmNoIHRoZSBpbnN0YW5jZSB1c2VkIGZvciBidWlsZGluZyB0aGUgY29udGFpbmVyIGZvciBhblxuICogRUMyIEltYWdlIEJ1aWxkZXIgY29udGFpbmVyIGJ1aWxkLlxuICovXG5leHBvcnQgY2xhc3MgQ29udGFpbmVySW5zdGFuY2VJbWFnZSB7XG4gIC8qKlxuICAgKiBUaGUgQU1JIElEIHRvIHVzZSB0byBsYXVuY2ggdGhlIGluc3RhbmNlIGZvciBidWlsZGluZyB0aGUgY29udGFpbmVyIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBhbWlJZCBUaGUgQU1JIElEIHRvIHVzZSBhcyB0aGUgY29udGFpbmVyIGluc3RhbmNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21BbWlJZChhbWlJZDogc3RyaW5nKTogQ29udGFpbmVySW5zdGFuY2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBDb250YWluZXJJbnN0YW5jZUltYWdlKGFtaUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgU1NNIHBhcmFtZXRlciB0byB1c2UgdG8gbGF1bmNoIHRoZSBpbnN0YW5jZSBmb3IgYnVpbGRpbmcgdGhlIGNvbnRhaW5lciBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1ldGVyIFRoZSBTU00gcGFyYW1ldGVyIHRvIHVzZSBhcyB0aGUgY29udGFpbmVyIGluc3RhbmNlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Tc21QYXJhbWV0ZXIocGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcik6IENvbnRhaW5lckluc3RhbmNlSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgQ29udGFpbmVySW5zdGFuY2VJbWFnZShgc3NtOiR7cGFyYW1ldGVyLnBhcmFtZXRlckFybn1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTU00gcGFyYW1ldGVyIHVzZWQgdG8gbGF1bmNoIHRoZSBpbnN0YW5jZSBmb3IgYnVpbGRpbmcgdGhlIGNvbnRhaW5lciBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1ldGVyTmFtZSBUaGUgbmFtZSBvZiB0aGUgU1NNIHBhcmFtZXRlciB1c2VkIGFzIHRoZSBjb250YWluZXIgaW5zdGFuY2UgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNzbVBhcmFtZXRlck5hbWUocGFyYW1ldGVyTmFtZTogc3RyaW5nKTogQ29udGFpbmVySW5zdGFuY2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBDb250YWluZXJJbnN0YW5jZUltYWdlKGBzc206JHtwYXJhbWV0ZXJOYW1lfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIGNvbnRhaW5lciBpbnN0YW5jZSBpbWFnZSB0byB1c2UgaW4gYSBjb250YWluZXIgcmVjaXBlLiBUaGlzIGNhbiBlaXRoZXIgYmU6XG4gICAqIC0gYW4gU1NNIHBhcmFtZXRlciByZWZlcmVuY2UsIHByZWZpeGVkIHdpdGggYHNzbTpgIGFuZCBmb2xsb3dlZCBieSB0aGUgcGFyYW1ldGVyIG5hbWUgb3IgQVJOXG4gICAqIC0gYW4gQU1JIElEXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJJbnN0YW5jZUltYWdlU3RyaW5nIFRoZSBjb250YWluZXIgaW5zdGFuY2UgaW1hZ2UgYXMgYSBkaXJlY3Qgc3RyaW5nIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcoY29udGFpbmVySW5zdGFuY2VJbWFnZVN0cmluZzogc3RyaW5nKTogQ29udGFpbmVySW5zdGFuY2VJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBDb250YWluZXJJbnN0YW5jZUltYWdlKGNvbnRhaW5lckluc3RhbmNlSW1hZ2VTdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBjb250YWluZXIgaW5zdGFuY2UgaW1hZ2UgdG8gdXNlXG4gICAqKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGltYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmltYWdlID0gaW1hZ2U7XG4gIH1cbn1cbiJdfQ==
package/lib/component.js CHANGED
@@ -51,7 +51,7 @@ const LATEST_VERSION = 'x.x.x';
51
51
  * The value of a constant in a component document
52
52
  */
53
53
  class ComponentConstantValue {
54
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentConstantValue", version: "2.230.0-alpha.0" };
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentConstantValue", version: "2.232.0-alpha.0" };
55
55
  /**
56
56
  * Creates a string type constant in a component document
57
57
  *
@@ -268,7 +268,7 @@ var ComponentSchemaVersion;
268
268
  * Represents the inputs for a step in the component document
269
269
  */
270
270
  class ComponentStepInputs {
271
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepInputs", version: "2.230.0-alpha.0" };
271
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepInputs", version: "2.232.0-alpha.0" };
272
272
  /**
273
273
  * Creates the input value from an object, for the component step
274
274
  *
@@ -298,7 +298,7 @@ exports.ComponentStepInputs = ComponentStepInputs;
298
298
  * Represents an `if` condition in the component document
299
299
  */
300
300
  class ComponentStepIfCondition {
301
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepIfCondition", version: "2.230.0-alpha.0" };
301
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentStepIfCondition", version: "2.232.0-alpha.0" };
302
302
  /**
303
303
  * Creates the `if` value from an object, for the component step
304
304
  *
@@ -320,7 +320,7 @@ exports.ComponentStepIfCondition = ComponentStepIfCondition;
320
320
  * Helper class for referencing and uploading component data
321
321
  */
322
322
  class ComponentData {
323
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentData", version: "2.230.0-alpha.0" };
323
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentData", version: "2.232.0-alpha.0" };
324
324
  /**
325
325
  * Uploads component data from a local file to S3 to use as the component data
326
326
  *
@@ -414,7 +414,7 @@ exports.ComponentData = ComponentData;
414
414
  * Helper class for S3-based component data references, containing additional permission grant methods on the S3 object
415
415
  */
416
416
  class S3ComponentData extends ComponentData {
417
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3ComponentData", version: "2.230.0-alpha.0" };
417
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3ComponentData", version: "2.232.0-alpha.0" };
418
418
  isS3Reference = true;
419
419
  bucket;
420
420
  key;
@@ -461,7 +461,7 @@ class S3ComponentDataFromAsset extends S3ComponentData {
461
461
  * Helper class for working with AWS-managed components
462
462
  */
463
463
  class AwsManagedComponent {
464
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AwsManagedComponent", version: "2.230.0-alpha.0" };
464
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AwsManagedComponent", version: "2.232.0-alpha.0" };
465
465
  /**
466
466
  * Imports the AWS CLI v2 AWS-managed component
467
467
  *
@@ -728,7 +728,7 @@ exports.AwsManagedComponent = AwsManagedComponent;
728
728
  * Helper class for working with AWS Marketplace components
729
729
  */
730
730
  class AwsMarketplaceComponent {
731
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AwsMarketplaceComponent", version: "2.230.0-alpha.0" };
731
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AwsMarketplaceComponent", version: "2.232.0-alpha.0" };
732
732
  /**
733
733
  * Imports an AWS Marketplace component from its attributes
734
734
  *
@@ -801,7 +801,7 @@ let Component = (() => {
801
801
  Component = _classThis = _classDescriptor.value;
802
802
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
803
803
  }
804
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Component", version: "2.230.0-alpha.0" };
804
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Component", version: "2.232.0-alpha.0" };
805
805
  /** Uniquely identifies this class. */
806
806
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Component';
807
807
  /**
@@ -7,7 +7,6 @@ import * as s3assets from 'aws-cdk-lib/aws-s3-assets';
7
7
  import { Construct } from 'constructs';
8
8
  import { BaseContainerImage, ContainerInstanceImage } from './base-image';
9
9
  import { Repository } from './distribution-configuration';
10
- import { IImageRecipe } from './image-recipe';
11
10
  import { OSVersion } from './os-version';
12
11
  import { ComponentConfiguration, IRecipeBase } from './recipe-base';
13
12
  /**
@@ -255,18 +254,6 @@ export declare abstract class ContainerRecipeBase extends cdk.Resource implement
255
254
  * @param grantee The principal
256
255
  */
257
256
  grantRead(grantee: iam.IGrantable): iam.Grant;
258
- /**
259
- * Indicates whether the recipe is a Container Recipe
260
- *
261
- * @internal
262
- */
263
- _isContainerRecipe(): this is IContainerRecipe;
264
- /**
265
- * Indicates whether the recipe is an Image Recipe
266
- *
267
- * @internal
268
- */
269
- _isImageRecipe(): this is IImageRecipe;
270
257
  }
271
258
  /**
272
259
  * Represents an EC2 Image Builder Container Recipe.
@@ -72,7 +72,7 @@ var ContainerType;
72
72
  * Helper class for referencing and uploading dockerfile data for the container recipe
73
73
  */
74
74
  class DockerfileData {
75
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DockerfileData", version: "2.230.0-alpha.0" };
75
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DockerfileData", version: "2.232.0-alpha.0" };
76
76
  /**
77
77
  * Uploads dockerfile data from a local file to S3 to use as the dockerfile data
78
78
  *
@@ -108,7 +108,7 @@ exports.DockerfileData = DockerfileData;
108
108
  * Helper class for S3-based dockerfile data references, containing additional permission grant methods on the S3 object
109
109
  */
110
110
  class S3DockerfileData extends DockerfileData {
111
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3DockerfileData", version: "2.230.0-alpha.0" };
111
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3DockerfileData", version: "2.232.0-alpha.0" };
112
112
  bucket;
113
113
  key;
114
114
  constructor(bucket, key) {
@@ -167,7 +167,7 @@ class S3DockerfileDataFromAsset extends S3DockerfileData {
167
167
  * A new or imported Container Recipe
168
168
  */
169
169
  class ContainerRecipeBase extends cdk.Resource {
170
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipeBase", version: "2.230.0-alpha.0" };
170
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipeBase", version: "2.232.0-alpha.0" };
171
171
  /**
172
172
  * Grant custom actions to the given grantee for the container recipe
173
173
  *
@@ -231,7 +231,7 @@ let ContainerRecipe = (() => {
231
231
  ContainerRecipe = _classThis = _classDescriptor.value;
232
232
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
233
233
  }
234
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipe", version: "2.230.0-alpha.0" };
234
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipe", version: "2.232.0-alpha.0" };
235
235
  /** Uniquely identifies this class. */
236
236
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ContainerRecipe';
237
237
  /**
@@ -86,7 +86,7 @@ var RepositoryService;
86
86
  * A container repository used to distribute container images in EC2 Image Builder
87
87
  */
88
88
  class Repository {
89
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Repository", version: "2.230.0-alpha.0" };
89
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Repository", version: "2.232.0-alpha.0" };
90
90
  /**
91
91
  * The ECR repository to use as the target container repository
92
92
  *
@@ -127,7 +127,7 @@ let DistributionConfiguration = (() => {
127
127
  DistributionConfiguration = _classThis = _classDescriptor.value;
128
128
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
129
129
  }
130
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration", version: "2.230.0-alpha.0" };
130
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration", version: "2.232.0-alpha.0" };
131
131
  /** Uniquely identifies this class. */
132
132
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.DistributionConfiguration';
133
133
  /**
@@ -282,7 +282,7 @@ let ImagePipeline = (() => {
282
282
  ImagePipeline = _classThis = _classDescriptor.value;
283
283
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
284
284
  }
285
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.230.0-alpha.0" };
285
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.232.0-alpha.0" };
286
286
  /** Uniquely identifies this class. */
287
287
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImagePipeline';
288
288
  /**
@@ -466,4 +466,4 @@ let ImagePipeline = (() => {
466
466
  return ImagePipeline = _classThis;
467
467
  })();
468
468
  exports.ImagePipeline = ImagePipeline;
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWlEO0FBQ2pELDJDQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUcxRSxpRkFBMkc7QUFDM0csK0ZBSW1EO0FBQ25ELDJEQUF1RjtBQUl2RixNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQXVTMUY7O0dBRUc7QUFDSCxJQUFZLHNCQVdYO0FBWEQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCx5RUFBK0MsQ0FBQTtJQUUvQzs7O09BR0c7SUFDSCxpSUFBdUcsQ0FBQTtBQUN6RyxDQUFDLEVBWFcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFXakM7QUFFRDs7R0FFRztBQUNILElBQVksbUJBVVg7QUFWRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDBDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsNENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBVTlCO0FBRUQ7O0dBRUc7QUFDSCxNQUFlLGlCQUFrQixTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBV25EOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyQyxPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7T0FJRztJ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SyxTQUFTLElBQUk7b0JBQzNDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxjQUFjO2lCQUN6RCxDQUFDO2FBQ0gsQ0FBQztTQUNIO1FBRUQ7Ozs7O1dBS0c7UUFDSyx5QkFBeUIsR0FBRyxDQUNsQyxLQUF5QixFQUMwQyxFQUFFO1lBQ3JFLE1BQU0sb0JBQW9CLEdBQUc7Z0JBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2RyxDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JGLENBQUMsQ0FBQzs7WUE3TlMsdURBQWE7Ozs7O0FBQWIsc0NBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuSW1hZ2VQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiwgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7XG4gIGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkV29ya2Zsb3dzLFxufSBmcm9tICcuL3ByaXZhdGUvaW1hZ2UtYW5kLXBpcGVsaW5lLXByb3BzLWhlbHBlcic7XG5pbXBvcnQgeyBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSwgZ2V0RXhlY3V0aW9uUm9sZSB9IGZyb20gJy4vcHJpdmF0ZS9wb2xpY3ktaGVscGVyJztcbmltcG9ydCB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3dvcmtmbG93JztcblxuY29uc3QgSU1BR0VfUElQRUxJTkVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlUGlwZWxpbmUgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W107XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRTdGFydEV4ZWN1dGlvbihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uRXZlbnQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uQ1ZFRGV0ZWN0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3RhdGUgY2hhbmdlIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGNvbXBsZXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGZhaWx1cmUgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3VjY2VlZGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZVBpcGVsaW5lQXV0b0Rpc2FibGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uV2FpdEZvckFjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW1hZ2UgUGlwZWxpbmUgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlY2lwZSB0aGF0IGRlZmluZXMgdGhlIGJhc2UgaW1hZ2UsIGNvbXBvbmVudHMsIGFuZCBjdXN0b21pemF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4gVGhpcyBjYW4gZWl0aGVyIGJlXG4gICAqIGFuIGltYWdlIHJlY2lwZSwgb3IgYSBjb250YWluZXIgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlOiBJUmVjaXBlQmFzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9mIHRoZSBpbWFnZSBwaXBlbGluZS4gVGhpcyBjb25maWd1cmVzIGhvdyBvZnRlbiBhbmQgd2hlbiBhIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIG5ld1xuICAgKiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lLCBhIG1hbnVhbCBpbWFnZSBwaXBlbGluZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogSW1hZ2VQaXBlbGluZVNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IEltYWdlUGlwZWxpbmVTdGF0dXMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogSW1hZ2VQaXBlbGluZVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBBIGRlZmF1bHQgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBwcm9maWxlIGFuZCByb2xlIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlXG4gICAqIGltYWdlLCBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbj86IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB1c2VkIGZvciBkaXN0cmlidXRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uPzogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgYSBkZWZhdWx0IHNldCBvZiB3b3JrZmxvd3MgZm9yIHRoZSBidWlsZCB0byBidWlsZCwgdGVzdCwgYW5kIGRpc3RyaWJ1dGUgdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgdG8gcGVyZm9ybSB3b3JrZmxvdyBhY3Rpb25zIHRvIGJ1aWxkIHRoaXMgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgcGlwZWxpbmUsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyL3BpcGVsaW5lLzxwaXBlbGluZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVMb2dHcm91cD86IGxvZ3MuSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIHVzZSBmb3IgaW1hZ2VzIGNyZWF0ZWQgZnJvbSB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZVxuICAgKiBmb3JtYXQgYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBzY2hlZHVsZSBzZXR0aW5ncyBmb3IgdGhlIGltYWdlIHBpcGVsaW5lLCB3aGljaCBkZWZpbmVzIHdoZW4gYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQaXBlbGluZVNjaGVkdWxlIHtcbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZSBleHByZXNzaW9uIHRvIHVzZS4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgY3JvbiBleHByZXNzaW9uIG9yIGEgcmF0ZSBleHByZXNzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwcmVzc2lvbjogZXZlbnRzLlNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWx1cmVzIGFsbG93ZWQgYmVmb3JlIHRoZSBwaXBlbGluZSBpcyBhdXRvbWF0aWNhbGx5IGRpc2FibGVkLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogYmV0d2VlbiAxIGFuZCAxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhdXRvLWRpc2FibGUgcG9saWN5IGlzIGNvbmZpZ3VyZWQgYW5kIHRoZSBwaXBlbGluZSBpcyBub3QgYXV0b21hdGljYWxseSBkaXNhYmxlZCBvbiBjb25zZWN1dGl2ZVxuICAgKiBmYWlsdXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBjb25kaXRpb24gZm9yIHRoZSBwaXBlbGluZSwgaW5kaWNhdGluZyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGEgcGlwZWxpbmUgc2hvdWxkIGJlIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU2NoZWR1bGVTdGFydENvbmRpdGlvbi5FWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFXG4gICAqL1xuICByZWFkb25seSBzdGFydENvbmRpdGlvbj86IFNjaGVkdWxlU3RhcnRDb25kaXRpb247XG59XG5cbi8qKlxuICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICovXG5leHBvcnQgZW51bSBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldFxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9PTkxZID0gJ0VYUFJFU1NJT05fTUFUQ0hfT05MWScsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldCwgYW5kIHRoZXJlIGFyZSBtYXRjaGluZyBkZXBlbmRlbmN5IHVwZGF0ZXMgYXZhaWxhYmxlLFxuICAgKiBzdWNoIGFzIG5ldyB2ZXJzaW9ucyBvZiBjb21wb25lbnRzIG9yIGltYWdlcyB0byB1c2UgaW4gdGhlIHBpcGVsaW5lIGJ1aWxkLlxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9BTkRfREVQRU5ERU5DWV9VUERBVEVTX0FWQUlMQUJMRSA9ICdFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFJyxcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlUGlwZWxpbmVTdGF0dXMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGVuYWJsZWQgZm9yIHNjaGVkdWxpbmdcbiAgICovXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBwaXBlbGluZSBpcyBkaXNhYmxlZCBhbmQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIG9uIHRoZSBzY2hlZHVsZVxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlIFBpcGVsaW5lXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlUGlwZWxpbmVCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUltYWdlUGlwZWxpbmUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIGFjdGlvbnM6IGFjdGlvbnMsXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlUGlwZWxpbmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSB0byBzdGFydCBhbiBleGVjdXRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOlN0YXJ0SW1hZ2VQaXBlbGluZUV4ZWN1dGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGlkLCBvcHRpb25zKTtcbiAgICBydWxlLmFkZFRhcmdldChvcHRpb25zLnRhcmdldCk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbJ2F3cy5pbWFnZWJ1aWxkZXInXSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8ucmVzb3VyY2VzPy5sZW5ndGggJiYgeyByZXNvdXJjZXM6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLnJlc291cmNlcyB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsVHlwZT8ubGVuZ3RoICYmIHsgZGV0YWlsVHlwZTogb3B0aW9ucy5ldmVudFBhdHRlcm4uZGV0YWlsVHlwZSB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsICE9PSB1bmRlZmluZWQgJiYgeyBkZXRhaWw6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbCB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkNWRURldGVjdGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgQ1ZFIERldGVjdGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgU3RhdGUgQ2hhbmdlJ10gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0FWQUlMQUJMRScsICdDQU5DRUxMRUQnLCAnRkFJTEVEJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN1Y2NlZWRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBwaXBlbGluZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFBpcGVsaW5lIEF1dG9tYXRpY2FsbHkgRGlzYWJsZWQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbldhaXRGb3JBY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybiwgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvdyBTdGVwIFdhaXRpbmcnXSB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcGlwZWxpbmVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlUGlwZWxpbmUgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVBcm46IHN0cmluZyk6IElJbWFnZVBpcGVsaW5lIHtcbiAgICBjb25zdCBpbWFnZVBpcGVsaW5lTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbWFnZVBpcGVsaW5lQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlUGlwZWxpbmVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lQXJuID0gaW1hZ2VQaXBlbGluZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZSA9IGltYWdlUGlwZWxpbmVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGxcbiAgICogYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUGlwZWxpbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUGlwZWxpbmVBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZS1waXBlbGluZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogaW1hZ2VQaXBlbGluZU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2VQaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZVBpcGVsaW5lKHg6IGFueSk6IHggaXMgSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1BJUEVMSU5FX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC4gSWYgdGhlcmUgaXMgbm8gZXhlY3V0aW9uIHJvbGUsIHRoZW4gdGhlIGJ1aWxkIHdpbGwgYmUgZXhlY3V0ZWQgd2l0aFxuICAgKiB0aGUgQVdTU2VydmljZVJvbGVGb3JJbWFnZUJ1aWxkZXIgc2VydmljZS1saW5rZWQgcm9sZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5pbWFnZVBpcGVsaW5lTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgSU1BR0VfUElQRUxJTkVfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUltYWdlUGlwZWxpbmVOYW1lKCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPVxuICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID8/IG5ldyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcywgJ0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiBwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBtdXN0IGVpdGhlciBiZSBhbiBJSW1hZ2VSZWNpcGUgb3IgSUNvbnRhaW5lclJlY2lwZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlUGlwZWxpbmUgPSBuZXcgQ2ZuSW1hZ2VQaXBlbGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIC4uLihwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiB7IGltYWdlUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuaW1hZ2VSZWNpcGVBcm4gfSksXG4gICAgICAuLi4ocHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHsgY29udGFpbmVyUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuY29udGFpbmVyUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHByb3BzLnN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHsgc3RhdHVzOiBwcm9wcy5zdGF0dXMgfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlPy5yb2xlQXJuLFxuICAgICAgc2NoZWR1bGU6IHRoaXMuYnVpbGRTY2hlZHVsZShwcm9wcyksXG4gICAgICBsb2dnaW5nQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGltYWdlVGVzdHNDb25maWd1cmF0aW9uOiBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uPFxuICAgICAgICBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICAgICAgIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPihwcm9wcyksXG4gICAgICBpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQaXBlbGluZVByb3BzLFxuICAgICAgICBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVBpcGVsaW5lUHJvcHMsIENmbkltYWdlUGlwZWxpbmUuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXT4ocHJvcHMpLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuaW1hZ2VQaXBlbGluZU5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShpbWFnZVBpcGVsaW5lLmF0dHJOYW1lKTtcbiAgICB0aGlzLmltYWdlUGlwZWxpbmVBcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGltYWdlUGlwZWxpbmUuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2ltYWdlLXBpcGVsaW5lJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcywgdGhpcy5wcm9wcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTY2hlZHVsZShwcm9wczogSW1hZ2VQaXBlbGluZVByb3BzKTogQ2ZuSW1hZ2VQaXBlbGluZS5TY2hlZHVsZVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzY2hlZHVsZSA9IHByb3BzLnNjaGVkdWxlO1xuICAgIGlmICghc2NoZWR1bGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ICE9PSB1bmRlZmluZWQgJiYgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQpKSB7XG4gICAgICBpZiAoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgPCAxIHx8IHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ID4gMTApIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBzY2hlZHVsZS5leHByZXNzaW9uLmV4cHJlc3Npb25TdHJpbmcsXG4gICAgICAuLi4oc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIGF1dG9EaXNhYmxlUG9saWN5OiB7XG4gICAgICAgICAgZmFpbHVyZUNvdW50OiBzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHNjaGVkdWxlLnN0YXJ0Q29uZGl0aW9uICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBwaXBlbGluZUV4ZWN1dGlvblN0YXJ0Q29uZGl0aW9uOiBzY2hlZHVsZS5zdGFydENvbmRpdGlvbixcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBsb2dnaW5nQ29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgTG9nZ2luZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvZ2dpbmdDb25maWd1cmF0aW9uID0gKFxuICAgIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICk6IENmbkltYWdlUGlwZWxpbmUuUGlwZWxpbmVMb2dnaW5nQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBsb2dnaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLihwcm9wcy5pbWFnZUxvZ0dyb3VwICYmIHsgaW1hZ2VMb2dHcm91cE5hbWU6IHByb3BzLmltYWdlTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgICAgLi4uKHByb3BzLmltYWdlUGlwZWxpbmVMb2dHcm91cCAmJiB7IHBpcGVsaW5lTG9nR3JvdXBOYW1lOiBwcm9wcy5pbWFnZVBpcGVsaW5lTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9nZ2luZ0NvbmZpZ3VyYXRpb24pLmxlbmd0aCA/IGxvZ2dpbmdDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9O1xufVxuIl19
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWlEO0FBQ2pELDJDQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUcxRSxpRkFBMkc7QUFDM0csK0ZBSW1EO0FBQ25ELDJEQUF1RjtBQUl2RixNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQXVTMUY7O0dBRUc7QUFDSCxJQUFZLHNCQVdYO0FBWEQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCx5RUFBK0MsQ0FBQTtJQUUvQzs7O09BR0c7SUFDSCxpSUFBdUcsQ0FBQTtBQUN6RyxDQUFDLEVBWFcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFXakM7QUFFRDs7R0FFRztBQUNILElBQVksbUJBVVg7QUFWRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDBDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsNENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBVTlCO0FBRUQ7O0dBRUc7QUFDSCxNQUFlLGlCQUFrQixTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBV25EOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyQyxPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7T0FJRztJ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SyxTQUFTLElBQUk7b0JBQzNDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxjQUFjO2lCQUN6RCxDQUFDO2FBQ0gsQ0FBQztTQUNIO1FBRUQ7Ozs7O1dBS0c7UUFDSyx5QkFBeUIsR0FBRyxDQUNsQyxLQUF5QixFQUMwQyxFQUFFO1lBQ3JFLE1BQU0sb0JBQW9CLEdBQUc7Z0JBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2RyxDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JGLENBQUMsQ0FBQzs7WUE5TlMsdURBQWE7Ozs7O0FBQWIsc0NBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuSW1hZ2VQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiwgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7XG4gIGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkV29ya2Zsb3dzLFxufSBmcm9tICcuL3ByaXZhdGUvaW1hZ2UtYW5kLXBpcGVsaW5lLXByb3BzLWhlbHBlcic7XG5pbXBvcnQgeyBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSwgZ2V0RXhlY3V0aW9uUm9sZSB9IGZyb20gJy4vcHJpdmF0ZS9wb2xpY3ktaGVscGVyJztcbmltcG9ydCB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3dvcmtmbG93JztcblxuY29uc3QgSU1BR0VfUElQRUxJTkVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlUGlwZWxpbmUgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W107XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRTdGFydEV4ZWN1dGlvbihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uRXZlbnQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uQ1ZFRGV0ZWN0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3RhdGUgY2hhbmdlIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGNvbXBsZXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGZhaWx1cmUgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3VjY2VlZGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZVBpcGVsaW5lQXV0b0Rpc2FibGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uV2FpdEZvckFjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW1hZ2UgUGlwZWxpbmUgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlY2lwZSB0aGF0IGRlZmluZXMgdGhlIGJhc2UgaW1hZ2UsIGNvbXBvbmVudHMsIGFuZCBjdXN0b21pemF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4gVGhpcyBjYW4gZWl0aGVyIGJlXG4gICAqIGFuIGltYWdlIHJlY2lwZSwgb3IgYSBjb250YWluZXIgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlOiBJUmVjaXBlQmFzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9mIHRoZSBpbWFnZSBwaXBlbGluZS4gVGhpcyBjb25maWd1cmVzIGhvdyBvZnRlbiBhbmQgd2hlbiBhIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIG5ld1xuICAgKiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lLCBhIG1hbnVhbCBpbWFnZSBwaXBlbGluZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogSW1hZ2VQaXBlbGluZVNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IEltYWdlUGlwZWxpbmVTdGF0dXMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogSW1hZ2VQaXBlbGluZVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBBIGRlZmF1bHQgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBwcm9maWxlIGFuZCByb2xlIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlXG4gICAqIGltYWdlLCBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbj86IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB1c2VkIGZvciBkaXN0cmlidXRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uPzogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgYSBkZWZhdWx0IHNldCBvZiB3b3JrZmxvd3MgZm9yIHRoZSBidWlsZCB0byBidWlsZCwgdGVzdCwgYW5kIGRpc3RyaWJ1dGUgdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgdG8gcGVyZm9ybSB3b3JrZmxvdyBhY3Rpb25zIHRvIGJ1aWxkIHRoaXMgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgcGlwZWxpbmUsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyL3BpcGVsaW5lLzxwaXBlbGluZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVMb2dHcm91cD86IGxvZ3MuSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIHVzZSBmb3IgaW1hZ2VzIGNyZWF0ZWQgZnJvbSB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZVxuICAgKiBmb3JtYXQgYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBzY2hlZHVsZSBzZXR0aW5ncyBmb3IgdGhlIGltYWdlIHBpcGVsaW5lLCB3aGljaCBkZWZpbmVzIHdoZW4gYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQaXBlbGluZVNjaGVkdWxlIHtcbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZSBleHByZXNzaW9uIHRvIHVzZS4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgY3JvbiBleHByZXNzaW9uIG9yIGEgcmF0ZSBleHByZXNzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwcmVzc2lvbjogZXZlbnRzLlNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWx1cmVzIGFsbG93ZWQgYmVmb3JlIHRoZSBwaXBlbGluZSBpcyBhdXRvbWF0aWNhbGx5IGRpc2FibGVkLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogYmV0d2VlbiAxIGFuZCAxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhdXRvLWRpc2FibGUgcG9saWN5IGlzIGNvbmZpZ3VyZWQgYW5kIHRoZSBwaXBlbGluZSBpcyBub3QgYXV0b21hdGljYWxseSBkaXNhYmxlZCBvbiBjb25zZWN1dGl2ZVxuICAgKiBmYWlsdXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBjb25kaXRpb24gZm9yIHRoZSBwaXBlbGluZSwgaW5kaWNhdGluZyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGEgcGlwZWxpbmUgc2hvdWxkIGJlIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU2NoZWR1bGVTdGFydENvbmRpdGlvbi5FWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFXG4gICAqL1xuICByZWFkb25seSBzdGFydENvbmRpdGlvbj86IFNjaGVkdWxlU3RhcnRDb25kaXRpb247XG59XG5cbi8qKlxuICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICovXG5leHBvcnQgZW51bSBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldFxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9PTkxZID0gJ0VYUFJFU1NJT05fTUFUQ0hfT05MWScsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldCwgYW5kIHRoZXJlIGFyZSBtYXRjaGluZyBkZXBlbmRlbmN5IHVwZGF0ZXMgYXZhaWxhYmxlLFxuICAgKiBzdWNoIGFzIG5ldyB2ZXJzaW9ucyBvZiBjb21wb25lbnRzIG9yIGltYWdlcyB0byB1c2UgaW4gdGhlIHBpcGVsaW5lIGJ1aWxkLlxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9BTkRfREVQRU5ERU5DWV9VUERBVEVTX0FWQUlMQUJMRSA9ICdFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFJyxcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlUGlwZWxpbmVTdGF0dXMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGVuYWJsZWQgZm9yIHNjaGVkdWxpbmdcbiAgICovXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBwaXBlbGluZSBpcyBkaXNhYmxlZCBhbmQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIG9uIHRoZSBzY2hlZHVsZVxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlIFBpcGVsaW5lXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlUGlwZWxpbmVCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUltYWdlUGlwZWxpbmUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIGFjdGlvbnM6IGFjdGlvbnMsXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlUGlwZWxpbmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSB0byBzdGFydCBhbiBleGVjdXRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOlN0YXJ0SW1hZ2VQaXBlbGluZUV4ZWN1dGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGlkLCBvcHRpb25zKTtcbiAgICBydWxlLmFkZFRhcmdldChvcHRpb25zLnRhcmdldCk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbJ2F3cy5pbWFnZWJ1aWxkZXInXSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8ucmVzb3VyY2VzPy5sZW5ndGggJiYgeyByZXNvdXJjZXM6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLnJlc291cmNlcyB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsVHlwZT8ubGVuZ3RoICYmIHsgZGV0YWlsVHlwZTogb3B0aW9ucy5ldmVudFBhdHRlcm4uZGV0YWlsVHlwZSB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsICE9PSB1bmRlZmluZWQgJiYgeyBkZXRhaWw6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbCB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkNWRURldGVjdGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgQ1ZFIERldGVjdGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgU3RhdGUgQ2hhbmdlJ10gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0FWQUlMQUJMRScsICdDQU5DRUxMRUQnLCAnRkFJTEVEJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN1Y2NlZWRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBwaXBlbGluZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFBpcGVsaW5lIEF1dG9tYXRpY2FsbHkgRGlzYWJsZWQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbldhaXRGb3JBY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybiwgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvdyBTdGVwIFdhaXRpbmcnXSB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcGlwZWxpbmVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlUGlwZWxpbmUgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVBcm46IHN0cmluZyk6IElJbWFnZVBpcGVsaW5lIHtcbiAgICBjb25zdCBpbWFnZVBpcGVsaW5lTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbWFnZVBpcGVsaW5lQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlUGlwZWxpbmVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lQXJuID0gaW1hZ2VQaXBlbGluZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZSA9IGltYWdlUGlwZWxpbmVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGxcbiAgICogYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUGlwZWxpbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUGlwZWxpbmVBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZS1waXBlbGluZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogaW1hZ2VQaXBlbGluZU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2VQaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZVBpcGVsaW5lKHg6IGFueSk6IHggaXMgSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1BJUEVMSU5FX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb246IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuIElmIHRoZXJlIGlzIG5vIGV4ZWN1dGlvbiByb2xlLCB0aGVuIHRoZSBidWlsZCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGhcbiAgICogdGhlIEFXU1NlcnZpY2VSb2xlRm9ySW1hZ2VCdWlsZGVyIHNlcnZpY2UtbGlua2VkIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHM7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuaW1hZ2VQaXBlbGluZU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElNQUdFX1BJUEVMSU5FX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPVxuICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID8/IG5ldyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcywgJ0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiBwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBtdXN0IGVpdGhlciBiZSBhbiBJSW1hZ2VSZWNpcGUgb3IgSUNvbnRhaW5lclJlY2lwZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlUGlwZWxpbmUgPSBuZXcgQ2ZuSW1hZ2VQaXBlbGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIC4uLihwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiB7IGltYWdlUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuaW1hZ2VSZWNpcGVBcm4gfSksXG4gICAgICAuLi4ocHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHsgY29udGFpbmVyUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuY29udGFpbmVyUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHByb3BzLnN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHsgc3RhdHVzOiBwcm9wcy5zdGF0dXMgfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlPy5yb2xlQXJuLFxuICAgICAgc2NoZWR1bGU6IHRoaXMuYnVpbGRTY2hlZHVsZShwcm9wcyksXG4gICAgICBsb2dnaW5nQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGltYWdlVGVzdHNDb25maWd1cmF0aW9uOiBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uPFxuICAgICAgICBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICAgICAgIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPihwcm9wcyksXG4gICAgICBpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQaXBlbGluZVByb3BzLFxuICAgICAgICBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVBpcGVsaW5lUHJvcHMsIENmbkltYWdlUGlwZWxpbmUuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXT4ocHJvcHMpLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuaW1hZ2VQaXBlbGluZU5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShpbWFnZVBpcGVsaW5lLmF0dHJOYW1lKTtcbiAgICB0aGlzLmltYWdlUGlwZWxpbmVBcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGltYWdlUGlwZWxpbmUuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2ltYWdlLXBpcGVsaW5lJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcywgdGhpcy5wcm9wcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTY2hlZHVsZShwcm9wczogSW1hZ2VQaXBlbGluZVByb3BzKTogQ2ZuSW1hZ2VQaXBlbGluZS5TY2hlZHVsZVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzY2hlZHVsZSA9IHByb3BzLnNjaGVkdWxlO1xuICAgIGlmICghc2NoZWR1bGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ICE9PSB1bmRlZmluZWQgJiYgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQpKSB7XG4gICAgICBpZiAoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgPCAxIHx8IHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ID4gMTApIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBzY2hlZHVsZS5leHByZXNzaW9uLmV4cHJlc3Npb25TdHJpbmcsXG4gICAgICAuLi4oc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIGF1dG9EaXNhYmxlUG9saWN5OiB7XG4gICAgICAgICAgZmFpbHVyZUNvdW50OiBzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHNjaGVkdWxlLnN0YXJ0Q29uZGl0aW9uICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBwaXBlbGluZUV4ZWN1dGlvblN0YXJ0Q29uZGl0aW9uOiBzY2hlZHVsZS5zdGFydENvbmRpdGlvbixcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBsb2dnaW5nQ29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgTG9nZ2luZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvZ2dpbmdDb25maWd1cmF0aW9uID0gKFxuICAgIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICk6IENmbkltYWdlUGlwZWxpbmUuUGlwZWxpbmVMb2dnaW5nQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBsb2dnaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLihwcm9wcy5pbWFnZUxvZ0dyb3VwICYmIHsgaW1hZ2VMb2dHcm91cE5hbWU6IHByb3BzLmltYWdlTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgICAgLi4uKHByb3BzLmltYWdlUGlwZWxpbmVMb2dHcm91cCAmJiB7IHBpcGVsaW5lTG9nR3JvdXBOYW1lOiBwcm9wcy5pbWFnZVBpcGVsaW5lTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9nZ2luZ0NvbmZpZ3VyYXRpb24pLmxlbmd0aCA/IGxvZ2dpbmdDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9O1xufVxuIl19
@@ -3,7 +3,6 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2';
3
3
  import * as iam from 'aws-cdk-lib/aws-iam';
4
4
  import { Construct } from 'constructs';
5
5
  import { BaseImage } from './base-image';
6
- import { IContainerRecipe } from './container-recipe';
7
6
  import { ComponentConfiguration, IRecipeBase } from './recipe-base';
8
7
  /**
9
8
  * An EC2 Image Builder Image Recipe.
@@ -157,18 +156,6 @@ declare abstract class ImageRecipeBase extends cdk.Resource implements IImageRec
157
156
  * @param grantee The principal
158
157
  */
159
158
  grantRead(grantee: iam.IGrantable): iam.Grant;
160
- /**
161
- * Indicates whether the recipe is a Container Recipe
162
- *
163
- * @internal
164
- */
165
- _isContainerRecipe(): this is IContainerRecipe;
166
- /**
167
- * Indicates whether the recipe is an Image Recipe
168
- *
169
- * @internal
170
- */
171
- _isImageRecipe(): this is IImageRecipe;
172
159
  }
173
160
  /**
174
161
  * Represents an EC2 Image Builder Image Recipe.
@@ -123,7 +123,7 @@ let ImageRecipe = (() => {
123
123
  ImageRecipe = _classThis = _classDescriptor.value;
124
124
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
125
125
  }
126
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImageRecipe", version: "2.230.0-alpha.0" };
126
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImageRecipe", version: "2.232.0-alpha.0" };
127
127
  /** Uniquely identifies this class. */
128
128
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImageRecipe';
129
129
  /**