cdk8s-plus-31 2.0.5 → 2.0.7

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/index.js CHANGED
@@ -1,15 +1,20 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
8
12
  }));
9
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.k8s = void 0;
13
18
  __exportStar(require("./base"), exports);
14
19
  __exportStar(require("./config-map"), exports);
15
20
  __exportStar(require("./container"), exports);
@@ -36,4 +41,4 @@ __exportStar(require("./network-policy"), exports);
36
41
  __exportStar(require("./namespace"), exports);
37
42
  __exportStar(require("./api-resource"), exports);
38
43
  exports.k8s = require("./imports/k8s");
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXVCO0FBQ3ZCLCtDQUE2QjtBQUM3Qiw4Q0FBNEI7QUFDNUIsNkNBQTJCO0FBQzNCLCtDQUE2QjtBQUM3Qix3Q0FBc0I7QUFDdEIsd0NBQXNCO0FBQ3RCLDJDQUF5QjtBQUN6QixvREFBa0M7QUFDbEMsNENBQTBCO0FBQzFCLGlEQUErQjtBQUMvQiwyQ0FBeUI7QUFDekIsNENBQTBCO0FBQzFCLDBDQUF3QjtBQUN4Qix3Q0FBc0I7QUFDdEIsdUNBQXFCO0FBQ3JCLDRDQUEwQjtBQUMxQiw4REFBNEM7QUFDNUMsNkNBQTJCO0FBQzNCLCtDQUE2QjtBQUM3Qix5Q0FBdUI7QUFDdkIsaURBQStCO0FBQy9CLG1EQUFpQztBQUNqQyw4Q0FBNEI7QUFFNUIsaURBQStCO0FBQy9CLHVDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1tYXAnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250YWluZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jcm9uLWpvYic7XG5leHBvcnQgKiBmcm9tICcuL2RlcGxveW1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9qb2InO1xuZXhwb3J0ICogZnJvbSAnLi9wb2QnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWNyZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlLWFjY291bnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhdGVmdWwtc2V0JztcbmV4cG9ydCAqIGZyb20gJy4vdm9sdW1lJztcbmV4cG9ydCAqIGZyb20gJy4vaW5ncmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2JlJztcbmV4cG9ydCAqIGZyb20gJy4vcHZjJztcbmV4cG9ydCAqIGZyb20gJy4vcHYnO1xuZXhwb3J0ICogZnJvbSAnLi9oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vaG9yaXpvbnRhbC1wb2QtYXV0b3NjYWxlcic7XG5leHBvcnQgKiBmcm9tICcuL3dvcmtsb2FkJztcbmV4cG9ydCAqIGZyb20gJy4vZGFlbW9uLXNldCc7XG5leHBvcnQgKiBmcm9tICcuL3JvbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yb2xlLWJpbmRpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXR3b3JrLXBvbGljeSc7XG5leHBvcnQgKiBmcm9tICcuL25hbWVzcGFjZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYXBpLXJlc291cmNlJztcbmV4cG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBdUI7QUFDdkIsK0NBQTZCO0FBQzdCLDhDQUE0QjtBQUM1Qiw2Q0FBMkI7QUFDM0IsK0NBQTZCO0FBQzdCLHdDQUFzQjtBQUN0Qix3Q0FBc0I7QUFDdEIsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyw0Q0FBMEI7QUFDMUIsaURBQStCO0FBQy9CLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLHdDQUFzQjtBQUN0Qix1Q0FBcUI7QUFDckIsNENBQTBCO0FBQzFCLDhEQUE0QztBQUM1Qyw2Q0FBMkI7QUFDM0IsK0NBQTZCO0FBQzdCLHlDQUF1QjtBQUN2QixpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLDhDQUE0QjtBQUU1QixpREFBK0I7QUFDL0IsdUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnLW1hcCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRhaW5lcic7XG5leHBvcnQgKiBmcm9tICcuL2Nyb24tam9iJztcbmV4cG9ydCAqIGZyb20gJy4vZGVwbG95bWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2pvYic7XG5leHBvcnQgKiBmcm9tICcuL3BvZCc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3JldCc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2UtYWNjb3VudCc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0ZWZ1bC1zZXQnO1xuZXhwb3J0ICogZnJvbSAnLi92b2x1bWUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbmdyZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvYmUnO1xuZXhwb3J0ICogZnJvbSAnLi9wdmMnO1xuZXhwb3J0ICogZnJvbSAnLi9wdic7XG5leHBvcnQgKiBmcm9tICcuL2hhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9ob3Jpem9udGFsLXBvZC1hdXRvc2NhbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vd29ya2xvYWQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYWVtb24tc2V0JztcbmV4cG9ydCAqIGZyb20gJy4vcm9sZSc7XG5leHBvcnQgKiBmcm9tICcuL3JvbGUtYmluZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL25ldHdvcmstcG9saWN5JztcbmV4cG9ydCAqIGZyb20gJy4vbmFtZXNwYWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9hcGktcmVzb3VyY2UnO1xuZXhwb3J0ICogYXMgazhzIGZyb20gJy4vaW1wb3J0cy9rOHMnO1xuIl19
package/lib/ingress.js CHANGED
@@ -25,7 +25,7 @@ var HttpIngressPathType;
25
25
  * Matching is specified by the underlying IngressClass.
26
26
  */
27
27
  HttpIngressPathType["IMPLEMENTATION_SPECIFIC"] = "ImplementationSpecific";
28
- })(HttpIngressPathType = exports.HttpIngressPathType || (exports.HttpIngressPathType = {}));
28
+ })(HttpIngressPathType || (exports.HttpIngressPathType = HttpIngressPathType = {}));
29
29
  /**
30
30
  * Ingress is a collection of rules that allow inbound connections to reach the
31
31
  * endpoints defined by a backend. An Ingress can be configured to give services
@@ -171,14 +171,11 @@ class Ingress extends base.Resource {
171
171
  }
172
172
  exports.Ingress = Ingress;
173
173
  _a = JSII_RTTI_SYMBOL_1;
174
- Ingress[_a] = { fqn: "cdk8s-plus-31.Ingress", version: "2.0.5" };
174
+ Ingress[_a] = { fqn: "cdk8s-plus-31.Ingress", version: "2.0.7" };
175
175
  /**
176
176
  * The backend for an ingress path.
177
177
  */
178
178
  class IngressBackend {
179
- constructor(backend) {
180
- this.backend = backend;
181
- }
182
179
  /**
183
180
  * A Kubernetes `Service` to use as the backend for this path.
184
181
  * @param serv The service object.
@@ -230,6 +227,9 @@ class IngressBackend {
230
227
  },
231
228
  });
232
229
  }
230
+ constructor(backend) {
231
+ this.backend = backend;
232
+ }
233
233
  /**
234
234
  * @internal
235
235
  */
@@ -237,10 +237,10 @@ class IngressBackend {
237
237
  }
238
238
  exports.IngressBackend = IngressBackend;
239
239
  _b = JSII_RTTI_SYMBOL_1;
240
- IngressBackend[_b] = { fqn: "cdk8s-plus-31.IngressBackend", version: "2.0.5" };
240
+ IngressBackend[_b] = { fqn: "cdk8s-plus-31.IngressBackend", version: "2.0.7" };
241
241
  function sortByPath(lhs, rhs) {
242
242
  const p1 = lhs.path ?? '';
243
243
  const p2 = rhs.path ?? '';
244
244
  return p1.localeCompare(p2);
245
245
  }
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ncmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmdyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQXdDO0FBRXhDLCtCQUErQjtBQUMvQixxQ0FBcUM7QUFpRHJDOzs7O0dBSUc7QUFDSCxJQUFZLG1CQWVYO0FBZkQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCx3Q0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHNDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILHlFQUFrRCxDQUFBO0FBQ3BELENBQUMsRUFmVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQWU5QjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsSUFBSSxDQUFDLFFBQVE7SUFheEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFzQixFQUFFO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFQSCxpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUUxQixrQkFBYSxHQUE4QyxFQUFFLENBQUM7UUFFOUQsZUFBVSxHQUFpQixFQUFFLENBQUM7UUFLN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNyRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsSUFBSSxFQUFFO2dCQUNKLGNBQWMsRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDNUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0JBQ2pDLEtBQUssRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxD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QUksRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUNuQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7YUFDNUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBTUQ7O09BRUc7SUFDSSxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs7QUE3RDNDLHdDQThEQzs7O0FBNEVELFNBQVMsVUFBVSxDQUFDLEdBQXdCLEVBQUUsR0FBd0I7SUFDcEUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDMUIsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDMUIsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QsIExhenkgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCAqIGFzIHNlY3JldCBmcm9tICcuL3NlY3JldCc7XG5pbXBvcnQgKiBhcyBzZXJ2aWNlIGZyb20gJy4vc2VydmljZSc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYEluZ3Jlc3NgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZ3Jlc3NQcm9wcyBleHRlbmRzIGJhc2UuUmVzb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiYWNrZW5kIHNlcnZpY2VzIHJlcXVlc3RzIHRoYXQgZG8gbm90IG1hdGNoIGFueSBydWxlLlxuICAgKlxuICAgKiBVc2luZyB0aGlzIG9wdGlvbiBvciB0aGUgYGFkZERlZmF1bHRCYWNrZW5kKClgIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvXG4gICAqIGFkZGluZyBhIHJ1bGUgd2l0aCBib3RoIGBwYXRoYCBhbmQgYGhvc3RgIHVuZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRCYWNrZW5kPzogSW5ncmVzc0JhY2tlbmQ7XG5cbiAgLyoqXG4gICAqIFJvdXRpbmcgcnVsZXMgZm9yIHRoaXMgaW5ncmVzcy5cbiAgICpcbiAgICogRWFjaCBydWxlIG11c3QgZGVmaW5lIGFuIGBJbmdyZXNzQmFja2VuZGAgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHJlcXVlc3RzXG4gICAqIHRoYXQgbWF0Y2ggdGhpcyBydWxlLiBJZiBib3RoIGBob3N0YCBhbmQgYHBhdGhgIGFyZSBub3Qgc3BlY2lmaWVjLCB0aGlzXG4gICAqIGJhY2tlbmQgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGJhY2tlbmQgb2YgdGhlIGluZ3Jlc3MuXG4gICAqXG4gICAqIFlvdSBjYW4gYWxzbyBhZGQgcnVsZXMgbGF0ZXIgdXNpbmcgYGFkZFJ1bGUoKWAsIGBhZGRIb3N0UnVsZSgpYCxcbiAgICogYGFkZERlZmF1bHRCYWNrZW5kKClgIGFuZCBgYWRkSG9zdERlZmF1bHRCYWNrZW5kKClgLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBJbmdyZXNzUnVsZVtdO1xuXG5cbiAgLyoqXG4gICAqIFRMUyBzZXR0aW5ncyBmb3IgdGhpcyBpbmdyZXNzLlxuICAgKlxuICAgKiBVc2luZyB0aGlzIG9wdGlvbiB0ZWxscyB0aGUgaW5ncmVzcyBjb250cm9sbGVyIHRvIGV4cG9zZSBhIFRMUyBlbmRwb2ludC5cbiAgICogQ3VycmVudGx5IHRoZSBJbmdyZXNzIG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUgVExTIHBvcnQsIDQ0My4gSWYgbXVsdGlwbGVcbiAgICogbWVtYmVycyBvZiB0aGlzIGxpc3Qgc3BlY2lmeSBkaWZmZXJlbnQgaG9zdHMsIHRoZXkgd2lsbCBiZSBtdWx0aXBsZXhlZCBvblxuICAgKiB0aGUgc2FtZSBwb3J0IGFjY29yZGluZyB0byB0aGUgaG9zdG5hbWUgc3BlY2lmaWVkIHRocm91Z2ggdGhlIFNOSSBUTFNcbiAgICogZXh0ZW5zaW9uLCBpZiB0aGUgaW5ncmVzcyBjb250cm9sbGVyIGZ1bGZpbGxpbmcgdGhlIGluZ3Jlc3Mgc3VwcG9ydHMgU05JLlxuICAgKi9cbiAgcmVhZG9ubHkgdGxzPzogSW5ncmVzc1Rsc1tdO1xuXG4gIC8qKlxuICAgKiBDbGFzcyBOYW1lIGZvciB0aGlzIGluZ3Jlc3MuXG4gICAqXG4gICAqIFRoaXMgZmllbGQgaXMgYSByZWZlcmVuY2UgdG8gYW4gSW5ncmVzc0NsYXNzIHJlc291cmNlIHRoYXQgY29udGFpbnNcbiAgICogYWRkaXRpb25hbCBJbmdyZXNzIGNvbmZpZ3VyYXRpb24sIGluY2x1ZGluZyB0aGUgbmFtZSBvZiB0aGUgSW5ncmVzcyBjb250cm9sbGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNwZWNpZnkgaG93IHRoZSBwYXRoIGlzIG1hdGNoZWQgYWdhaW5zdCByZXF1ZXN0IHBhdGhzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvc2VydmljZXMtbmV0d29ya2luZy9pbmdyZXNzLyNwYXRoLXR5cGVzXG4gKi9cbmV4cG9ydCBlbnVtIEh0dHBJbmdyZXNzUGF0aFR5cGUge1xuICAvKipcbiAgICogTWF0Y2hlcyB0aGUgVVJMIHBhdGggZXhhY3RseS5cbiAgICovXG4gIFBSRUZJWCA9ICdQcmVmaXgnLFxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGJhc2VkIG9uIGEgVVJMIHBhdGggcHJlZml4IHNwbGl0IGJ5ICcvJy5cbiAgICovXG4gIEVYQUNUID0gJ0V4YWN0JyxcblxuICAvKipcbiAgICogTWF0Y2hpbmcgaXMgc3BlY2lmaWVkIGJ5IHRoZSB1bmRlcmx5aW5nIEluZ3Jlc3NDbGFzcy5cbiAgICovXG4gIElNUExFTUVOVEFUSU9OX1NQRUNJRklDID0gJ0ltcGxlbWVudGF0aW9uU3BlY2lmaWMnLFxufVxuXG4vKipcbiAqIEluZ3Jlc3MgaXMgYSBjb2xsZWN0aW9uIG9mIHJ1bGVzIHRoYXQgYWxsb3cgaW5ib3VuZCBjb25uZWN0aW9ucyB0byByZWFjaCB0aGVcbiAqIGVuZHBvaW50cyBkZWZpbmVkIGJ5IGEgYmFja2VuZC4gQW4gSW5ncmVzcyBjYW4gYmUgY29uZmlndXJlZCB0byBnaXZlIHNlcnZpY2VzXG4gKiBleHRlcm5hbGx5LXJlYWNoYWJsZSB1cmxzLCBsb2FkIGJhbGFuY2UgdHJhZmZpYywgdGVybWluYXRlIFNTTCwgb2ZmZXIgbmFtZVxuICogYmFzZWQgdmlydHVhbCBob3N0aW5nIGV0Yy5cbiAqL1xuZXhwb3J0IGNsYXNzIEluZ3Jlc3MgZXh0ZW5kcyBiYXNlLlJlc291cmNlIHtcblxuICAvKipcbiAgICogQHNlZSBiYXNlLlJlc291cmNlLmFwaU9iamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaU9iamVjdDogQXBpT2JqZWN0O1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGUgPSAnaW5ncmVzc2VzJztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ydWxlc1Blckhvc3Q6IHsgW2hvc3Q6IHN0cmluZ106IGs4cy5IdHRwSW5ncmVzc1BhdGhbXSB9ID0ge307XG4gIHByaXZhdGUgX2RlZmF1bHRCYWNrZW5kPzogSW5ncmVzc0JhY2tlbmQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rsc0NvbmZpZzogSW5ncmVzc1Rsc1tdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEluZ3Jlc3NQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlSW5ncmVzcyh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBtZXRhZGF0YTogcHJvcHMubWV0YWRhdGEsXG4gICAgICBzcGVjOiB7XG4gICAgICAgIGRlZmF1bHRCYWNrZW5kOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuX2RlZmF1bHRCYWNrZW5kPy5fdG9LdWJlKCkgfSksXG4gICAgICAgIGluZ3Jlc3NDbGFzc05hbWU6IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgcnVsZXM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5zeW50aFJ1bGVzKCkgfSksXG4gICAgICAgIHRsczogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnRsc0NvbmZpZygpIH0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5kZWZhdWx0QmFja2VuZCkge1xuICAgICAgdGhpcy5hZGREZWZhdWx0QmFja2VuZChwcm9wcy5kZWZhdWx0QmFja2VuZCk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRSdWxlcyguLi5wcm9wcy5ydWxlcyA/PyBbXSk7XG5cbiAgICBpZiAocHJvcHMudGxzKSB7XG4gICAgICB0aGlzLmFkZFRscyhwcm9wcy50bHMpO1xuICAgIH1cblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKHsgdmFsaWRhdGU6ICgpID0+IHRoaXMuX3ZhbGlkYXRlKCkgfSk7XG4gIH1cblxuICBwcml2YXRlIF92YWxpZGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuX2RlZmF1bHRCYWNrZW5kICYmIE9iamVjdC5rZXlzKHRoaXMuX3J1bGVzUGVySG9zdCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gWydpbmdyZXNzIHdpdGggbm8gcnVsZXMgb3IgZGVmYXVsdCBiYWNrZW5kJ107XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBkZWZhdWx0IGJhY2tlbmQgZm9yIHRoaXMgaW5ncmVzcy4gQSBkZWZhdWx0IGJhY2tlbmQgY2FwYWJsZSBvZlxuICAgKiBzZXJ2aWNpbmcgcmVxdWVzdHMgdGhhdCBkb24ndCBtYXRjaCBhbnkgcnVsZS5cbiAgICpcbiAgICogQHBhcmFtIGJhY2tlbmQgVGhlIGJhY2tlbmQgdG8gdXNlIGZvciByZXF1ZXN0cyB0aGF0IGRvIG5vdCBtYXRjaCBhbnkgcnVsZS5cbiAgICovXG4gIHB1YmxpYyBhZGREZWZhdWx0QmFja2VuZChiYWNrZW5kOiBJbmdyZXNzQmFja2VuZCkge1xuICAgIHRoaXMuYWRkUnVsZXMoeyBiYWNrZW5kIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBkZWZhdWx0IGJhY2tlbmQgZm9yIGEgc3BlY2lmaWMgaG9zdCBuYW1lLiBUaGlzIGJhY2tlbmQgd2lsbCBiZSB1c2VkIGFzIGEgY2F0Y2gtYWxsIGZvciByZXF1ZXN0c1xuICAgKiB0YXJnZXRlZCB0byB0aGlzIGhvc3QgbmFtZSAodGhlIGBIb3N0YCBoZWFkZXIgbWF0Y2hlcyB0aGlzIHZhbHVlKS5cbiAgICpcbiAgICogQHBhcmFtIGhvc3QgVGhlIGhvc3QgbmFtZSB0byBtYXRjaFxuICAgKiBAcGFyYW0gYmFja2VuZCBUaGUgYmFja2VuZCB0byByb3V0ZSB0b1xuICAgKi9cbiAgcHVibGljIGFkZEhvc3REZWZhdWx0QmFja2VuZChob3N0OiBzdHJpbmcsIGJhY2tlbmQ6IEluZ3Jlc3NCYWNrZW5kKSB7XG4gICAgaWYgKCFob3N0KSB7IHRocm93IG5ldyBFcnJvcignaG9zdCBtdXN0IG5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTsgfVxuICAgIHRoaXMuYWRkUnVsZXMoeyBob3N0LCBiYWNrZW5kIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gaW5ncmVzcyBydWxlIGFwcGxpZWQgdG8gcmVxdWVzdHMgdG8gYSBzcGVjaWZpYyBob3N0IGFuZCBhIHNwZWNpZmljXG4gICAqIEhUVFAgcGF0aCAodGhlIGBIb3N0YCBoZWFkZXIgbWF0Y2hlcyB0aGlzIHZhbHVlKS5cbiAgICpcbiAgICogQHBhcmFtIGhvc3QgVGhlIGhvc3QgbmFtZVxuICAgKiBAcGFyYW0gcGF0aCBUaGUgSFRUUCBwYXRoXG4gICAqIEBwYXJhbSBiYWNrZW5kIFRoZSBiYWNrZW5kIHRvIHJvdXRlIHJlcXVlc3RzIHRvXG4gICAqIEBwYXJhbSBwYXRoVHlwZSBIb3cgdGhlIHBhdGggaXMgbWF0Y2hlZCBhZ2FpbnN0IHJlcXVlc3QgcGF0aHNcbiAgICovXG4gIHB1YmxpYyBhZGRIb3N0UnVsZShob3N0OiBzdHJpbmcsIHBhdGg6IHN0cmluZywgYmFja2VuZDogSW5ncmVzc0JhY2tlbmQsIHBhdGhUeXBlPzogSHR0cEluZ3Jlc3NQYXRoVHlwZSkge1xuICAgIGlmICghaG9zdCkgeyB0aHJvdyBuZXcgRXJyb3IoJ2hvc3QgbXVzdCBub3QgYmUgYW4gZW1wdHkgc3RyaW5nJyk7IH1cbiAgICB0aGlzLmFkZFJ1bGVzKHsgaG9zdCwgYmFja2VuZCwgcGF0aCwgcGF0aFR5cGUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBpbmdyZXNzIHJ1bGUgYXBwbGllZCB0byByZXF1ZXN0cyBzZW50IHRvIGEgc3BlY2lmaWMgSFRUUCBwYXRoLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgSFRUUCBwYXRoXG4gICAqIEBwYXJhbSBiYWNrZW5kIFRoZSBiYWNrZW5kIHRvIHJvdXRlIHJlcXVlc3RzIHRvXG4gICAqIEBwYXJhbSBwYXRoVHlwZSBIb3cgdGhlIHBhdGggaXMgbWF0Y2hlZCBhZ2FpbnN0IHJlcXVlc3QgcGF0aHNcbiAgICovXG4gIHB1YmxpYyBhZGRSdWxlKHBhdGg6IHN0cmluZywgYmFja2VuZDogSW5ncmVzc0JhY2tlbmQsIHBhdGhUeXBlPzogSHR0cEluZ3Jlc3NQYXRoVHlwZSkge1xuICAgIHRoaXMuYWRkUnVsZXMoeyBiYWNrZW5kLCBwYXRoLCBwYXRoVHlwZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHJ1bGVzIHRvIHRoaXMgaW5ncmVzcy5cbiAgICogQHBhcmFtIHJ1bGVzIFRoZSBydWxlcyB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBhZGRSdWxlcyguLi5ydWxlczogSW5ncmVzc1J1bGVbXSkge1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuXG4gICAgICAvLyBkZWZhdWx0IGJhY2tlbmQgaXMgbm90IHJlYWxseSBhIHJ1bGVcbiAgICAgIGlmICghcnVsZS5ob3N0ICYmICFydWxlLnBhdGgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlZmF1bHRCYWNrZW5kKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdhIGRlZmF1bHQgYmFja2VuZCBpcyBhbHJlYWR5IGRlZmluZWQgZm9yIHRoaXMgaW5ncmVzcycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RlZmF1bHRCYWNrZW5kID0gcnVsZS5iYWNrZW5kO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaG9zdCA9IHJ1bGUuaG9zdCA/PyAnJztcbiAgICAgIGNvbnN0IGJhY2tlbmQgPSBydWxlLmJhY2tlbmQ7XG4gICAgICBjb25zdCBwYXRoID0gcnVsZS5wYXRoID8/ICcvJztcbiAgICAgIGNvbnN0IHBhdGhUeXBlID0gcnVsZS5wYXRoVHlwZSA/PyBIdHRwSW5ncmVzc1BhdGhUeXBlLlBSRUZJWDtcblxuICAgICAgaWYgKHBhdGggJiYgIXBhdGguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW5ncmVzcyBwYXRocyBtdXN0IGJlZ2luIHdpdGggYSBcIi9cIjogJHtwYXRofWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByb3V0ZXMgPSB0aGlzLl9ydWxlc1Blckhvc3RbaG9zdF0gPSB0aGlzLl9ydWxlc1Blckhvc3RbaG9zdF0gPz8gW107XG5cbiAgICAgIC8vIGNoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJ1bGUgZm9yIHRoaXMgaG9zdC9wYXRoXG4gICAgICBpZiAocm91dGVzLmZpbmQociA9PiByLnBhdGggPT09IHBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdGhlcmUgaXMgYWxyZWFkeSBhbiBpbmdyZXNzIHJ1bGUgZm9yICR7aG9zdH0ke3BhdGh9YCk7XG4gICAgICB9XG5cbiAgICAgIHJvdXRlcy5wdXNoKHtcbiAgICAgICAgYmFja2VuZDogYmFja2VuZC5fdG9LdWJlKCksXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHBhdGhUeXBlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzeW50aFJ1bGVzKCk6IHVuZGVmaW5lZCB8IGs4cy5JbmdyZXNzUnVsZVtdIHtcbiAgICBjb25zdCBydWxlcyA9IG5ldyBBcnJheTxrOHMuSW5ncmVzc1J1bGU+KCk7XG5cbiAgICBmb3IgKGNvbnN0IFtob3N0LCBwYXRoc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcnVsZXNQZXJIb3N0KSkge1xuICAgICAgcnVsZXMucHVzaCh7XG4gICAgICAgIGhvc3Q6IGhvc3QgPyBob3N0IDogdW5kZWZpbmVkLFxuICAgICAgICBodHRwOiB7IHBhdGhzOiBwYXRocy5zb3J0KHNvcnRCeVBhdGgpIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVsZXMubGVuZ3RoID4gMCA/IHJ1bGVzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGFkZFRscyh0bHM6IEluZ3Jlc3NUbHNbXSkge1xuICAgIHRoaXMuX3Rsc0NvbmZpZy5wdXNoKC4uLnRscyk7XG4gIH1cblxuICBwcml2YXRlIHRsc0NvbmZpZygpOiB1bmRlZmluZWQgfCBrOHMuSW5ncmVzc1Rsc1tdIHtcbiAgICBpZiAodGhpcy5fdGxzQ29uZmlnLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHRscyA9IG5ldyBBcnJheTxrOHMuSW5ncmVzc1Rscz4oKTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuX3Rsc0NvbmZpZykge1xuICAgICAgdGxzLnB1c2goe1xuICAgICAgICBob3N0czogZW50cnkuaG9zdHMsXG4gICAgICAgIHNlY3JldE5hbWU6IGVudHJ5LnNlY3JldD8ubmFtZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0bHM7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzZXR0aW5nIHVwIGJhY2tlbmRzIGZvciBpbmdyZXNzIHJ1bGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VJbmdyZXNzQmFja2VuZE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHBvcnQgdG8gdXNlIHRvIGFjY2VzcyB0aGUgc2VydmljZS5cbiAgICpcbiAgICogLSBUaGlzIG9wdGlvbiB3aWxsIGZhaWwgaWYgdGhlIHNlcnZpY2UgZG9lcyBub3QgZXhwb3NlIGFueSBwb3J0cy5cbiAgICogLSBJZiB0aGUgc2VydmljZSBleHBvc2VzIG11bHRpcGxlIHBvcnRzLCB0aGlzIG9wdGlvbiBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICogLSBJZiB0aGUgc2VydmljZSBleHBvc2VzIGEgc2luZ2xlIHBvcnQsIHRoaXMgb3B0aW9uIGlzIG9wdGlvbmFsIGFuZCBpZlxuICAgKiAgIHNwZWNpZmllZCwgaXQgbXVzdCBiZSB0aGUgc2FtZSBwb3J0IGV4cG9zZWQgYnkgdGhlIHNlcnZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaWYgdGhlIHNlcnZpY2UgZXhwb3NlcyBhIHNpbmdsZSBwb3J0LCB0aGlzIHBvcnQgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgYmFja2VuZCBmb3IgYW4gaW5ncmVzcyBwYXRoLlxuICovXG5leHBvcnQgY2xhc3MgSW5ncmVzc0JhY2tlbmQge1xuICAvKipcbiAgICogQSBLdWJlcm5ldGVzIGBTZXJ2aWNlYCB0byB1c2UgYXMgdGhlIGJhY2tlbmQgZm9yIHRoaXMgcGF0aC5cbiAgICogQHBhcmFtIHNlcnYgVGhlIHNlcnZpY2Ugb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VydmljZShzZXJ2OiBzZXJ2aWNlLlNlcnZpY2UsIG9wdGlvbnM6IFNlcnZpY2VJbmdyZXNzQmFja2VuZE9wdGlvbnMgPSB7fSkge1xuICAgIGlmIChzZXJ2LnBvcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXJ2aWNlIGRvZXMgbm90IGV4cG9zZSBhbnkgcG9ydHMnKTtcbiAgICB9XG5cbiAgICBsZXQgc2VydmljZVBvcnQ7XG4gICAgaWYgKHNlcnYucG9ydHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBzZXJ2aWNlUG9ydCA9IHNlcnYucG9ydHNbMF0ucG9ydDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnMucG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gc2Vydi5wb3J0cy5maW5kKHAgPT4gcC5wb3J0ID09PSBvcHRpb25zLnBvcnQpO1xuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICBzZXJ2aWNlUG9ydCA9IGZvdW5kLnBvcnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzZXJ2aWNlIGV4cG9zZXMgcG9ydHMgJHtzZXJ2LnBvcnRzLm1hcChwID0+IHAucG9ydCkuam9pbignLCcpfSBidXQgYmFja2VuZCBpcyBkZWZpbmVkIHRvIHVzZSBwb3J0ICR7b3B0aW9ucy5wb3J0fWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuYWJsZSB0byBkZXRlcm1pbmUgc2VydmljZSBwb3J0IHNpbmNlIHNlcnZpY2UgZXhwb3NlcyBtdWx0aXBsZSBwb3J0czogJHtzZXJ2LnBvcnRzLm1hcCh4ID0+IHgucG9ydCkuam9pbignLCcpfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBvcnQgIT09IHVuZGVmaW5lZCAmJiBzZXJ2aWNlUG9ydCAhPT0gb3B0aW9ucy5wb3J0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhY2tlbmQgZGVmaW5lcyBwb3J0ICR7b3B0aW9ucy5wb3J0fSBidXQgc2VydmljZSBleHBvc2VzIHBvcnQgJHtzZXJ2aWNlUG9ydH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEluZ3Jlc3NCYWNrZW5kKHtcbiAgICAgIHNlcnZpY2U6IHtcbiAgICAgICAgbmFtZTogc2Vydi5uYW1lLFxuICAgICAgICBwb3J0OiB7IG51bWJlcjogc2VydmljZVBvcnQgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQSBSZXNvdXJjZSBiYWNrZW5kIGlzIGFuIE9iamVjdFJlZiB0byBhbm90aGVyIEt1YmVybmV0ZXMgcmVzb3VyY2VcbiAgICogd2l0aGluIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB0aGUgSW5ncmVzcyBvYmplY3QuXG4gICAqIEEgY29tbW9uIHVzYWdlIGZvciBhIFJlc291cmNlIGJhY2tlbmQgaXMgdG8gaW5ncmVzcyBkYXRhIHRvIGFuIG9iamVjdFxuICAgKiBzdG9yYWdlIGJhY2tlbmQgd2l0aCBzdGF0aWMgYXNzZXRzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUmVzb3VyY2UocmVzb3VyY2U6IGJhc2UuSVJlc291cmNlKSB7XG4gICAgcmV0dXJuIG5ldyBJbmdyZXNzQmFja2VuZCh7XG4gICAgICByZXNvdXJjZToge1xuICAgICAgICBraW5kOiByZXNvdXJjZS5raW5kLFxuICAgICAgICBuYW1lOiByZXNvdXJjZS5uYW1lLFxuICAgICAgICBhcGlHcm91cDogcmVzb3VyY2UuYXBpR3JvdXAsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJhY2tlbmQ6IGs4cy5JbmdyZXNzQmFja2VuZCkge1xuXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvS3ViZSgpIHsgcmV0dXJuIHRoaXMuYmFja2VuZDsgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHJ1bGVzIG1hcHBpbmcgdGhlIHBhdGhzIHVuZGVyIGEgc3BlY2lmaWVkIGhvc3QgdG8gdGhlIHJlbGF0ZWRcbiAqIGJhY2tlbmQgc2VydmljZXMuIEluY29taW5nIHJlcXVlc3RzIGFyZSBmaXJzdCBldmFsdWF0ZWQgZm9yIGEgaG9zdCBtYXRjaCxcbiAqIHRoZW4gcm91dGVkIHRvIHRoZSBiYWNrZW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWF0Y2hpbmcgcGF0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmdyZXNzUnVsZSB7XG4gIC8qKlxuICAgKiBCYWNrZW5kIGRlZmluZXMgdGhlIHJlZmVyZW5jZWQgc2VydmljZSBlbmRwb2ludCB0byB3aGljaCB0aGUgdHJhZmZpYyB3aWxsXG4gICAqIGJlIGZvcndhcmRlZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ6IEluZ3Jlc3NCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBIb3N0IGlzIHRoZSBmdWxseSBxdWFsaWZpZWQgZG9tYWluIG5hbWUgb2YgYSBuZXR3b3JrIGhvc3QsIGFzIGRlZmluZWQgYnlcbiAgICogUkZDIDM5ODYuIE5vdGUgdGhlIGZvbGxvd2luZyBkZXZpYXRpb25zIGZyb20gdGhlIFwiaG9zdFwiIHBhcnQgb2YgdGhlIFVSSSBhc1xuICAgKiBkZWZpbmVkIGluIHRoZSBSRkM6IDEuIElQcyBhcmUgbm90IGFsbG93ZWQuIEN1cnJlbnRseSBhbiBJbmdyZXNzUnVsZVZhbHVlXG4gICAqIGNhbiBvbmx5IGFwcGx5IHRvIHRoZSBJUCBpbiB0aGUgU3BlYyBvZiB0aGUgcGFyZW50IEluZ3Jlc3MuIDIuIFRoZSBgOmBcbiAgICogZGVsaW1pdGVyIGlzIG5vdCByZXNwZWN0ZWQgYmVjYXVzZSBwb3J0cyBhcmUgbm90IGFsbG93ZWQuIEN1cnJlbnRseSB0aGVcbiAgICogcG9ydCBvZiBhbiBJbmdyZXNzIGlzIGltcGxpY2l0bHkgOjgwIGZvciBodHRwIGFuZCA6NDQzIGZvciBodHRwcy4gQm90aFxuICAgKiB0aGVzZSBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIEluY29taW5nIHJlcXVlc3RzIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhlXG4gICAqIGhvc3QgYmVmb3JlIHRoZSBJbmdyZXNzUnVsZVZhbHVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHRoZSBob3N0IGlzIHVuc3BlY2lmaWVkLCB0aGUgSW5ncmVzcyByb3V0ZXMgYWxsIHRyYWZmaWMgYmFzZWRcbiAgICogb24gdGhlIHNwZWNpZmllZCBJbmdyZXNzUnVsZVZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBpcyBhbiBleHRlbmRlZCBQT1NJWCByZWdleCBhcyBkZWZpbmVkIGJ5IElFRUUgU3RkIDEwMDMuMSwgKGkuZSB0aGlzXG4gICAqIGZvbGxvd3MgdGhlIGVncmVwL3VuaXggc3ludGF4LCBub3QgdGhlIHBlcmwgc3ludGF4KSBtYXRjaGVkIGFnYWluc3QgdGhlXG4gICAqIHBhdGggb2YgYW4gaW5jb21pbmcgcmVxdWVzdC4gQ3VycmVudGx5IGl0IGNhbiBjb250YWluIGNoYXJhY3RlcnMgZGlzYWxsb3dlZFxuICAgKiBmcm9tIHRoZSBjb252ZW50aW9uYWwgXCJwYXRoXCIgcGFydCBvZiBhIFVSTCBhcyBkZWZpbmVkIGJ5IFJGQyAzOTg2LiBQYXRoc1xuICAgKiBtdXN0IGJlZ2luIHdpdGggYSAnLycuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgdW5zcGVjaWZpZWQsIHRoZSBwYXRoIGRlZmF1bHRzIHRvIGEgY2F0Y2ggYWxsIHNlbmRpbmcgdHJhZmZpY1xuICAgKiB0byB0aGUgYmFja2VuZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgaG93IHRoZSBwYXRoIGlzIG1hdGNoZWQgYWdhaW5zdCByZXF1ZXN0IHBhdGhzLiBCeSBkZWZhdWx0LCBwYXRoXG4gICAqIHR5cGVzIHdpbGwgYmUgbWF0Y2hlZCBieSBwcmVmaXguXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvc2VydmljZXMtbmV0d29ya2luZy9pbmdyZXNzLyNwYXRoLXR5cGVzXG4gICAqL1xuICByZWFkb25seSBwYXRoVHlwZT86IEh0dHBJbmdyZXNzUGF0aFR5cGU7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgVExTIGNvbmZpZ3VyYXRpb24gbWFwcGluZyB0aGF0IGlzIHBhc3NlZCB0byB0aGUgaW5ncmVzc1xuICogY29udHJvbGxlciBmb3IgU1NMIHRlcm1pbmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZ3Jlc3NUbHMge1xuXG4gIC8qKlxuICAgKiBIb3N0cyBhcmUgYSBsaXN0IG9mIGhvc3RzIGluY2x1ZGVkIGluIHRoZSBUTFMgY2VydGlmaWNhdGUuIFRoZSB2YWx1ZXMgaW5cbiAgICogdGhpcyBsaXN0IG11c3QgbWF0Y2ggdGhlIG5hbWUvcyB1c2VkIGluIHRoZSBUTFMgU2VjcmV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHVuc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byB0aGUgd2lsZGNhcmQgaG9zdCBzZXR0aW5nIGZvclxuICAgKiB0aGUgbG9hZGJhbGFuY2VyIGNvbnRyb2xsZXIgZnVsZmlsbGluZyB0aGlzIEluZ3Jlc3MuXG4gICAqL1xuICByZWFkb25seSBob3N0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTZWNyZXQgaXMgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBjZXJ0aWZpY2F0ZSBhbmQga2V5IHVzZWQgdG9cbiAgICogdGVybWluYXRlIFNTTCB0cmFmZmljIG9uIDQ0My4gSWYgdGhlIFNOSSBob3N0IGluIGEgbGlzdGVuZXIgY29uZmxpY3RzIHdpdGhcbiAgICogdGhlIFwiSG9zdFwiIGhlYWRlciBmaWVsZCB1c2VkIGJ5IGFuIEluZ3Jlc3NSdWxlLCB0aGUgU05JIGhvc3QgaXMgdXNlZCBmb3JcbiAgICogdGVybWluYXRpb24gYW5kIHZhbHVlIG9mIHRoZSBIb3N0IGhlYWRlciBpcyB1c2VkIGZvciByb3V0aW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHVuc3BlY2lmaWVkLCBpdCBhbGxvd3MgU1NMIHJvdXRpbmcgYmFzZWQgb24gU05JIGhvc3RuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0Pzogc2VjcmV0LklTZWNyZXQ7XG59XG5cbmZ1bmN0aW9uIHNvcnRCeVBhdGgobGhzOiBrOHMuSHR0cEluZ3Jlc3NQYXRoLCByaHM6IGs4cy5IdHRwSW5ncmVzc1BhdGgpIHtcbiAgY29uc3QgcDEgPSBsaHMucGF0aCA/PyAnJztcbiAgY29uc3QgcDIgPSByaHMucGF0aCA/PyAnJztcbiAgcmV0dXJuIHAxLmxvY2FsZUNvbXBhcmUocDIpO1xufVxuIl19
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ncmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmdyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQXdDO0FBRXhDLCtCQUErQjtBQUMvQixxQ0FBcUM7QUFpRHJDOzs7O0dBSUc7QUFDSCxJQUFZLG1CQWVYO0FBZkQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCx3Q0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHNDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILHlFQUFrRCxDQUFBO0FBQ3BELENBQUMsRUFmVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQWU5QjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsSUFBSSxDQUFDLFFBQVE7SUFheEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFzQixFQUFFO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFQSCxpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUUxQixrQkFBYSxHQUE4QyxFQUFFLENBQUM7UUFFOUQsZUFBVSxHQUFpQixFQUFFLENBQUM7UUFLN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNyRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsSUFBSSxFQUFFO2dCQUNKLGNBQWMsRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDNUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0JBQ2pDLEtBQUssRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNyRCxH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RUFBRSxXQUFXLEVBQUU7YUFDOUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQXdCO1FBQ2pELE9BQU8sSUFBSSxjQUFjLENBQUM7WUFDeEIsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUNuQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7YUFDNUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBcUMsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7SUFFaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7O0FBN0QzQyx3Q0E4REM7OztBQTRFRCxTQUFTLFVBQVUsQ0FBQyxHQUF3QixFQUFFLEdBQXdCO0lBQ3BFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzFCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzFCLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpT2JqZWN0LCBMYXp5IH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBzZWNyZXQgZnJvbSAnLi9zZWNyZXQnO1xuaW1wb3J0ICogYXMgc2VydmljZSBmcm9tICcuL3NlcnZpY2UnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBJbmdyZXNzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmdyZXNzUHJvcHMgZXh0ZW5kcyBiYXNlLlJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgYmFja2VuZCBzZXJ2aWNlcyByZXF1ZXN0cyB0aGF0IGRvIG5vdCBtYXRjaCBhbnkgcnVsZS5cbiAgICpcbiAgICogVXNpbmcgdGhpcyBvcHRpb24gb3IgdGhlIGBhZGREZWZhdWx0QmFja2VuZCgpYCBtZXRob2QgaXMgZXF1aXZhbGVudCB0b1xuICAgKiBhZGRpbmcgYSBydWxlIHdpdGggYm90aCBgcGF0aGAgYW5kIGBob3N0YCB1bmRlZmluZWQuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QmFja2VuZD86IEluZ3Jlc3NCYWNrZW5kO1xuXG4gIC8qKlxuICAgKiBSb3V0aW5nIHJ1bGVzIGZvciB0aGlzIGluZ3Jlc3MuXG4gICAqXG4gICAqIEVhY2ggcnVsZSBtdXN0IGRlZmluZSBhbiBgSW5ncmVzc0JhY2tlbmRgIHRoYXQgd2lsbCByZWNlaXZlIHRoZSByZXF1ZXN0c1xuICAgKiB0aGF0IG1hdGNoIHRoaXMgcnVsZS4gSWYgYm90aCBgaG9zdGAgYW5kIGBwYXRoYCBhcmUgbm90IHNwZWNpZmllYywgdGhpc1xuICAgKiBiYWNrZW5kIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBiYWNrZW5kIG9mIHRoZSBpbmdyZXNzLlxuICAgKlxuICAgKiBZb3UgY2FuIGFsc28gYWRkIHJ1bGVzIGxhdGVyIHVzaW5nIGBhZGRSdWxlKClgLCBgYWRkSG9zdFJ1bGUoKWAsXG4gICAqIGBhZGREZWZhdWx0QmFja2VuZCgpYCBhbmQgYGFkZEhvc3REZWZhdWx0QmFja2VuZCgpYC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVzPzogSW5ncmVzc1J1bGVbXTtcblxuXG4gIC8qKlxuICAgKiBUTFMgc2V0dGluZ3MgZm9yIHRoaXMgaW5ncmVzcy5cbiAgICpcbiAgICogVXNpbmcgdGhpcyBvcHRpb24gdGVsbHMgdGhlIGluZ3Jlc3MgY29udHJvbGxlciB0byBleHBvc2UgYSBUTFMgZW5kcG9pbnQuXG4gICAqIEN1cnJlbnRseSB0aGUgSW5ncmVzcyBvbmx5IHN1cHBvcnRzIGEgc2luZ2xlIFRMUyBwb3J0LCA0NDMuIElmIG11bHRpcGxlXG4gICAqIG1lbWJlcnMgb2YgdGhpcyBsaXN0IHNwZWNpZnkgZGlmZmVyZW50IGhvc3RzLCB0aGV5IHdpbGwgYmUgbXVsdGlwbGV4ZWQgb25cbiAgICogdGhlIHNhbWUgcG9ydCBhY2NvcmRpbmcgdG8gdGhlIGhvc3RuYW1lIHNwZWNpZmllZCB0aHJvdWdoIHRoZSBTTkkgVExTXG4gICAqIGV4dGVuc2lvbiwgaWYgdGhlIGluZ3Jlc3MgY29udHJvbGxlciBmdWxmaWxsaW5nIHRoZSBpbmdyZXNzIHN1cHBvcnRzIFNOSS5cbiAgICovXG4gIHJlYWRvbmx5IHRscz86IEluZ3Jlc3NUbHNbXTtcblxuICAvKipcbiAgICogQ2xhc3MgTmFtZSBmb3IgdGhpcyBpbmdyZXNzLlxuICAgKlxuICAgKiBUaGlzIGZpZWxkIGlzIGEgcmVmZXJlbmNlIHRvIGFuIEluZ3Jlc3NDbGFzcyByZXNvdXJjZSB0aGF0IGNvbnRhaW5zXG4gICAqIGFkZGl0aW9uYWwgSW5ncmVzcyBjb25maWd1cmF0aW9uLCBpbmNsdWRpbmcgdGhlIG5hbWUgb2YgdGhlIEluZ3Jlc3MgY29udHJvbGxlci5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTcGVjaWZ5IGhvdyB0aGUgcGF0aCBpcyBtYXRjaGVkIGFnYWluc3QgcmVxdWVzdCBwYXRocy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL3NlcnZpY2VzLW5ldHdvcmtpbmcvaW5ncmVzcy8jcGF0aC10eXBlc1xuICovXG5leHBvcnQgZW51bSBIdHRwSW5ncmVzc1BhdGhUeXBlIHtcbiAgLyoqXG4gICAqIE1hdGNoZXMgdGhlIFVSTCBwYXRoIGV4YWN0bHkuXG4gICAqL1xuICBQUkVGSVggPSAnUHJlZml4JyxcblxuICAvKipcbiAgICogTWF0Y2hlcyBiYXNlZCBvbiBhIFVSTCBwYXRoIHByZWZpeCBzcGxpdCBieSAnLycuXG4gICAqL1xuICBFWEFDVCA9ICdFeGFjdCcsXG5cbiAgLyoqXG4gICAqIE1hdGNoaW5nIGlzIHNwZWNpZmllZCBieSB0aGUgdW5kZXJseWluZyBJbmdyZXNzQ2xhc3MuXG4gICAqL1xuICBJTVBMRU1FTlRBVElPTl9TUEVDSUZJQyA9ICdJbXBsZW1lbnRhdGlvblNwZWNpZmljJyxcbn1cblxuLyoqXG4gKiBJbmdyZXNzIGlzIGEgY29sbGVjdGlvbiBvZiBydWxlcyB0aGF0IGFsbG93IGluYm91bmQgY29ubmVjdGlvbnMgdG8gcmVhY2ggdGhlXG4gKiBlbmRwb2ludHMgZGVmaW5lZCBieSBhIGJhY2tlbmQuIEFuIEluZ3Jlc3MgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZ2l2ZSBzZXJ2aWNlc1xuICogZXh0ZXJuYWxseS1yZWFjaGFibGUgdXJscywgbG9hZCBiYWxhbmNlIHRyYWZmaWMsIHRlcm1pbmF0ZSBTU0wsIG9mZmVyIG5hbWVcbiAqIGJhc2VkIHZpcnR1YWwgaG9zdGluZyBldGMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmdyZXNzIGV4dGVuZHMgYmFzZS5SZXNvdXJjZSB7XG5cbiAgLyoqXG4gICAqIEBzZWUgYmFzZS5SZXNvdXJjZS5hcGlPYmplY3RcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlPYmplY3Q6IEFwaU9iamVjdDtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlID0gJ2luZ3Jlc3Nlcyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcnVsZXNQZXJIb3N0OiB7IFtob3N0OiBzdHJpbmddOiBrOHMuSHR0cEluZ3Jlc3NQYXRoW10gfSA9IHt9O1xuICBwcml2YXRlIF9kZWZhdWx0QmFja2VuZD86IEluZ3Jlc3NCYWNrZW5kO1xuICBwcml2YXRlIHJlYWRvbmx5IF90bHNDb25maWc6IEluZ3Jlc3NUbHNbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbmdyZXNzUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmFwaU9iamVjdCA9IG5ldyBrOHMuS3ViZUluZ3Jlc3ModGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbWV0YWRhdGE6IHByb3BzLm1ldGFkYXRhLFxuICAgICAgc3BlYzoge1xuICAgICAgICBkZWZhdWx0QmFja2VuZDogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLl9kZWZhdWx0QmFja2VuZD8uX3RvS3ViZSgpIH0pLFxuICAgICAgICBpbmdyZXNzQ2xhc3NOYW1lOiBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIHJ1bGVzOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuc3ludGhSdWxlcygpIH0pLFxuICAgICAgICB0bHM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy50bHNDb25maWcoKSB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuZGVmYXVsdEJhY2tlbmQpIHtcbiAgICAgIHRoaXMuYWRkRGVmYXVsdEJhY2tlbmQocHJvcHMuZGVmYXVsdEJhY2tlbmQpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkUnVsZXMoLi4ucHJvcHMucnVsZXMgPz8gW10pO1xuXG4gICAgaWYgKHByb3BzLnRscykge1xuICAgICAgdGhpcy5hZGRUbHMocHJvcHMudGxzKTtcbiAgICB9XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7IHZhbGlkYXRlOiAoKSA9PiB0aGlzLl92YWxpZGF0ZSgpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGUoKSB7XG4gICAgaWYgKCF0aGlzLl9kZWZhdWx0QmFja2VuZCAmJiBPYmplY3Qua2V5cyh0aGlzLl9ydWxlc1Blckhvc3QpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFsnaW5ncmVzcyB3aXRoIG5vIHJ1bGVzIG9yIGRlZmF1bHQgYmFja2VuZCddO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZGVmYXVsdCBiYWNrZW5kIGZvciB0aGlzIGluZ3Jlc3MuIEEgZGVmYXVsdCBiYWNrZW5kIGNhcGFibGUgb2ZcbiAgICogc2VydmljaW5nIHJlcXVlc3RzIHRoYXQgZG9uJ3QgbWF0Y2ggYW55IHJ1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBiYWNrZW5kIFRoZSBiYWNrZW5kIHRvIHVzZSBmb3IgcmVxdWVzdHMgdGhhdCBkbyBub3QgbWF0Y2ggYW55IHJ1bGUuXG4gICAqL1xuICBwdWJsaWMgYWRkRGVmYXVsdEJhY2tlbmQoYmFja2VuZDogSW5ncmVzc0JhY2tlbmQpIHtcbiAgICB0aGlzLmFkZFJ1bGVzKHsgYmFja2VuZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGEgZGVmYXVsdCBiYWNrZW5kIGZvciBhIHNwZWNpZmljIGhvc3QgbmFtZS4gVGhpcyBiYWNrZW5kIHdpbGwgYmUgdXNlZCBhcyBhIGNhdGNoLWFsbCBmb3IgcmVxdWVzdHNcbiAgICogdGFyZ2V0ZWQgdG8gdGhpcyBob3N0IG5hbWUgKHRoZSBgSG9zdGAgaGVhZGVyIG1hdGNoZXMgdGhpcyB2YWx1ZSkuXG4gICAqXG4gICAqIEBwYXJhbSBob3N0IFRoZSBob3N0IG5hbWUgdG8gbWF0Y2hcbiAgICogQHBhcmFtIGJhY2tlbmQgVGhlIGJhY2tlbmQgdG8gcm91dGUgdG9cbiAgICovXG4gIHB1YmxpYyBhZGRIb3N0RGVmYXVsdEJhY2tlbmQoaG9zdDogc3RyaW5nLCBiYWNrZW5kOiBJbmdyZXNzQmFja2VuZCkge1xuICAgIGlmICghaG9zdCkgeyB0aHJvdyBuZXcgRXJyb3IoJ2hvc3QgbXVzdCBub3QgYmUgYW4gZW1wdHkgc3RyaW5nJyk7IH1cbiAgICB0aGlzLmFkZFJ1bGVzKHsgaG9zdCwgYmFja2VuZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGluZ3Jlc3MgcnVsZSBhcHBsaWVkIHRvIHJlcXVlc3RzIHRvIGEgc3BlY2lmaWMgaG9zdCBhbmQgYSBzcGVjaWZpY1xuICAgKiBIVFRQIHBhdGggKHRoZSBgSG9zdGAgaGVhZGVyIG1hdGNoZXMgdGhpcyB2YWx1ZSkuXG4gICAqXG4gICAqIEBwYXJhbSBob3N0IFRoZSBob3N0IG5hbWVcbiAgICogQHBhcmFtIHBhdGggVGhlIEhUVFAgcGF0aFxuICAgKiBAcGFyYW0gYmFja2VuZCBUaGUgYmFja2VuZCB0byByb3V0ZSByZXF1ZXN0cyB0b1xuICAgKiBAcGFyYW0gcGF0aFR5cGUgSG93IHRoZSBwYXRoIGlzIG1hdGNoZWQgYWdhaW5zdCByZXF1ZXN0IHBhdGhzXG4gICAqL1xuICBwdWJsaWMgYWRkSG9zdFJ1bGUoaG9zdDogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIGJhY2tlbmQ6IEluZ3Jlc3NCYWNrZW5kLCBwYXRoVHlwZT86IEh0dHBJbmdyZXNzUGF0aFR5cGUpIHtcbiAgICBpZiAoIWhvc3QpIHsgdGhyb3cgbmV3IEVycm9yKCdob3N0IG11c3Qgbm90IGJlIGFuIGVtcHR5IHN0cmluZycpOyB9XG4gICAgdGhpcy5hZGRSdWxlcyh7IGhvc3QsIGJhY2tlbmQsIHBhdGgsIHBhdGhUeXBlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gaW5ncmVzcyBydWxlIGFwcGxpZWQgdG8gcmVxdWVzdHMgc2VudCB0byBhIHNwZWNpZmljIEhUVFAgcGF0aC5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggVGhlIEhUVFAgcGF0aFxuICAgKiBAcGFyYW0gYmFja2VuZCBUaGUgYmFja2VuZCB0byByb3V0ZSByZXF1ZXN0cyB0b1xuICAgKiBAcGFyYW0gcGF0aFR5cGUgSG93IHRoZSBwYXRoIGlzIG1hdGNoZWQgYWdhaW5zdCByZXF1ZXN0IHBhdGhzXG4gICAqL1xuICBwdWJsaWMgYWRkUnVsZShwYXRoOiBzdHJpbmcsIGJhY2tlbmQ6IEluZ3Jlc3NCYWNrZW5kLCBwYXRoVHlwZT86IEh0dHBJbmdyZXNzUGF0aFR5cGUpIHtcbiAgICB0aGlzLmFkZFJ1bGVzKHsgYmFja2VuZCwgcGF0aCwgcGF0aFR5cGUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBydWxlcyB0byB0aGlzIGluZ3Jlc3MuXG4gICAqIEBwYXJhbSBydWxlcyBUaGUgcnVsZXMgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkUnVsZXMoLi4ucnVsZXM6IEluZ3Jlc3NSdWxlW10pIHtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcblxuICAgICAgLy8gZGVmYXVsdCBiYWNrZW5kIGlzIG5vdCByZWFsbHkgYSBydWxlXG4gICAgICBpZiAoIXJ1bGUuaG9zdCAmJiAhcnVsZS5wYXRoKSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWZhdWx0QmFja2VuZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYSBkZWZhdWx0IGJhY2tlbmQgaXMgYWxyZWFkeSBkZWZpbmVkIGZvciB0aGlzIGluZ3Jlc3MnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kZWZhdWx0QmFja2VuZCA9IHJ1bGUuYmFja2VuZDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhvc3QgPSBydWxlLmhvc3QgPz8gJyc7XG4gICAgICBjb25zdCBiYWNrZW5kID0gcnVsZS5iYWNrZW5kO1xuICAgICAgY29uc3QgcGF0aCA9IHJ1bGUucGF0aCA/PyAnLyc7XG4gICAgICBjb25zdCBwYXRoVHlwZSA9IHJ1bGUucGF0aFR5cGUgPz8gSHR0cEluZ3Jlc3NQYXRoVHlwZS5QUkVGSVg7XG5cbiAgICAgIGlmIChwYXRoICYmICFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGluZ3Jlc3MgcGF0aHMgbXVzdCBiZWdpbiB3aXRoIGEgXCIvXCI6ICR7cGF0aH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgcm91dGVzID0gdGhpcy5fcnVsZXNQZXJIb3N0W2hvc3RdID0gdGhpcy5fcnVsZXNQZXJIb3N0W2hvc3RdID8/IFtdO1xuXG4gICAgICAvLyBjaGVjayBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBydWxlIGZvciB0aGlzIGhvc3QvcGF0aFxuICAgICAgaWYgKHJvdXRlcy5maW5kKHIgPT4gci5wYXRoID09PSBwYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHRoZXJlIGlzIGFscmVhZHkgYW4gaW5ncmVzcyBydWxlIGZvciAke2hvc3R9JHtwYXRofWApO1xuICAgICAgfVxuXG4gICAgICByb3V0ZXMucHVzaCh7XG4gICAgICAgIGJhY2tlbmQ6IGJhY2tlbmQuX3RvS3ViZSgpLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXRoVHlwZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3ludGhSdWxlcygpOiB1bmRlZmluZWQgfCBrOHMuSW5ncmVzc1J1bGVbXSB7XG4gICAgY29uc3QgcnVsZXMgPSBuZXcgQXJyYXk8azhzLkluZ3Jlc3NSdWxlPigpO1xuXG4gICAgZm9yIChjb25zdCBbaG9zdCwgcGF0aHNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX3J1bGVzUGVySG9zdCkpIHtcbiAgICAgIHJ1bGVzLnB1c2goe1xuICAgICAgICBob3N0OiBob3N0ID8gaG9zdCA6IHVuZGVmaW5lZCxcbiAgICAgICAgaHR0cDogeyBwYXRoczogcGF0aHMuc29ydChzb3J0QnlQYXRoKSB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGVzLmxlbmd0aCA+IDAgPyBydWxlcyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUbHModGxzOiBJbmdyZXNzVGxzW10pIHtcbiAgICB0aGlzLl90bHNDb25maWcucHVzaCguLi50bHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0bHNDb25maWcoKTogdW5kZWZpbmVkIHwgazhzLkluZ3Jlc3NUbHNbXSB7XG4gICAgaWYgKHRoaXMuX3Rsc0NvbmZpZy5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCB0bHMgPSBuZXcgQXJyYXk8azhzLkluZ3Jlc3NUbHM+KCk7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLl90bHNDb25maWcpIHtcbiAgICAgIHRscy5wdXNoKHtcbiAgICAgICAgaG9zdHM6IGVudHJ5Lmhvc3RzLFxuICAgICAgICBzZWNyZXROYW1lOiBlbnRyeS5zZWNyZXQ/Lm5hbWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGxzO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Igc2V0dGluZyB1cCBiYWNrZW5kcyBmb3IgaW5ncmVzcyBydWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlSW5ncmVzc0JhY2tlbmRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwb3J0IHRvIHVzZSB0byBhY2Nlc3MgdGhlIHNlcnZpY2UuXG4gICAqXG4gICAqIC0gVGhpcyBvcHRpb24gd2lsbCBmYWlsIGlmIHRoZSBzZXJ2aWNlIGRvZXMgbm90IGV4cG9zZSBhbnkgcG9ydHMuXG4gICAqIC0gSWYgdGhlIHNlcnZpY2UgZXhwb3NlcyBtdWx0aXBsZSBwb3J0cywgdGhpcyBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQuXG4gICAqIC0gSWYgdGhlIHNlcnZpY2UgZXhwb3NlcyBhIHNpbmdsZSBwb3J0LCB0aGlzIG9wdGlvbiBpcyBvcHRpb25hbCBhbmQgaWZcbiAgICogICBzcGVjaWZpZWQsIGl0IG11c3QgYmUgdGhlIHNhbWUgcG9ydCBleHBvc2VkIGJ5IHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlmIHRoZSBzZXJ2aWNlIGV4cG9zZXMgYSBzaW5nbGUgcG9ydCwgdGhpcyBwb3J0IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGJhY2tlbmQgZm9yIGFuIGluZ3Jlc3MgcGF0aC5cbiAqL1xuZXhwb3J0IGNsYXNzIEluZ3Jlc3NCYWNrZW5kIHtcbiAgLyoqXG4gICAqIEEgS3ViZXJuZXRlcyBgU2VydmljZWAgdG8gdXNlIGFzIHRoZSBiYWNrZW5kIGZvciB0aGlzIHBhdGguXG4gICAqIEBwYXJhbSBzZXJ2IFRoZSBzZXJ2aWNlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNlcnZpY2Uoc2Vydjogc2VydmljZS5TZXJ2aWNlLCBvcHRpb25zOiBTZXJ2aWNlSW5ncmVzc0JhY2tlbmRPcHRpb25zID0ge30pIHtcbiAgICBpZiAoc2Vydi5wb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2VydmljZSBkb2VzIG5vdCBleHBvc2UgYW55IHBvcnRzJyk7XG4gICAgfVxuXG4gICAgbGV0IHNlcnZpY2VQb3J0O1xuICAgIGlmIChzZXJ2LnBvcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2VydmljZVBvcnQgPSBzZXJ2LnBvcnRzWzBdLnBvcnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zLnBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHNlcnYucG9ydHMuZmluZChwID0+IHAucG9ydCA9PT0gb3B0aW9ucy5wb3J0KTtcbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgc2VydmljZVBvcnQgPSBmb3VuZC5wb3J0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc2VydmljZSBleHBvc2VzIHBvcnRzICR7c2Vydi5wb3J0cy5tYXAocCA9PiBwLnBvcnQpLmpvaW4oJywnKX0gYnV0IGJhY2tlbmQgaXMgZGVmaW5lZCB0byB1c2UgcG9ydCAke29wdGlvbnMucG9ydH1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gZGV0ZXJtaW5lIHNlcnZpY2UgcG9ydCBzaW5jZSBzZXJ2aWNlIGV4cG9zZXMgbXVsdGlwbGUgcG9ydHM6ICR7c2Vydi5wb3J0cy5tYXAoeCA9PiB4LnBvcnQpLmpvaW4oJywnKX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wb3J0ICE9PSB1bmRlZmluZWQgJiYgc2VydmljZVBvcnQgIT09IG9wdGlvbnMucG9ydCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWNrZW5kIGRlZmluZXMgcG9ydCAke29wdGlvbnMucG9ydH0gYnV0IHNlcnZpY2UgZXhwb3NlcyBwb3J0ICR7c2VydmljZVBvcnR9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbmdyZXNzQmFja2VuZCh7XG4gICAgICBzZXJ2aWNlOiB7XG4gICAgICAgIG5hbWU6IHNlcnYubmFtZSxcbiAgICAgICAgcG9ydDogeyBudW1iZXI6IHNlcnZpY2VQb3J0IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgUmVzb3VyY2UgYmFja2VuZCBpcyBhbiBPYmplY3RSZWYgdG8gYW5vdGhlciBLdWJlcm5ldGVzIHJlc291cmNlXG4gICAqIHdpdGhpbiB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgdGhlIEluZ3Jlc3Mgb2JqZWN0LlxuICAgKiBBIGNvbW1vbiB1c2FnZSBmb3IgYSBSZXNvdXJjZSBiYWNrZW5kIGlzIHRvIGluZ3Jlc3MgZGF0YSB0byBhbiBvYmplY3RcbiAgICogc3RvcmFnZSBiYWNrZW5kIHdpdGggc3RhdGljIGFzc2V0cy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVJlc291cmNlKHJlc291cmNlOiBiYXNlLklSZXNvdXJjZSkge1xuICAgIHJldHVybiBuZXcgSW5ncmVzc0JhY2tlbmQoe1xuICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAga2luZDogcmVzb3VyY2Uua2luZCxcbiAgICAgICAgbmFtZTogcmVzb3VyY2UubmFtZSxcbiAgICAgICAgYXBpR3JvdXA6IHJlc291cmNlLmFwaUdyb3VwLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBiYWNrZW5kOiBrOHMuSW5ncmVzc0JhY2tlbmQpIHtcblxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0t1YmUoKSB7IHJldHVybiB0aGlzLmJhY2tlbmQ7IH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBydWxlcyBtYXBwaW5nIHRoZSBwYXRocyB1bmRlciBhIHNwZWNpZmllZCBob3N0IHRvIHRoZSByZWxhdGVkXG4gKiBiYWNrZW5kIHNlcnZpY2VzLiBJbmNvbWluZyByZXF1ZXN0cyBhcmUgZmlyc3QgZXZhbHVhdGVkIGZvciBhIGhvc3QgbWF0Y2gsXG4gKiB0aGVuIHJvdXRlZCB0byB0aGUgYmFja2VuZCBhc3NvY2lhdGVkIHdpdGggdGhlIG1hdGNoaW5nIHBhdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5ncmVzc1J1bGUge1xuICAvKipcbiAgICogQmFja2VuZCBkZWZpbmVzIHRoZSByZWZlcmVuY2VkIHNlcnZpY2UgZW5kcG9pbnQgdG8gd2hpY2ggdGhlIHRyYWZmaWMgd2lsbFxuICAgKiBiZSBmb3J3YXJkZWQgdG8uXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kOiBJbmdyZXNzQmFja2VuZDtcblxuICAvKipcbiAgICogSG9zdCBpcyB0aGUgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIG9mIGEgbmV0d29yayBob3N0LCBhcyBkZWZpbmVkIGJ5XG4gICAqIFJGQyAzOTg2LiBOb3RlIHRoZSBmb2xsb3dpbmcgZGV2aWF0aW9ucyBmcm9tIHRoZSBcImhvc3RcIiBwYXJ0IG9mIHRoZSBVUkkgYXNcbiAgICogZGVmaW5lZCBpbiB0aGUgUkZDOiAxLiBJUHMgYXJlIG5vdCBhbGxvd2VkLiBDdXJyZW50bHkgYW4gSW5ncmVzc1J1bGVWYWx1ZVxuICAgKiBjYW4gb25seSBhcHBseSB0byB0aGUgSVAgaW4gdGhlIFNwZWMgb2YgdGhlIHBhcmVudCBJbmdyZXNzLiAyLiBUaGUgYDpgXG4gICAqIGRlbGltaXRlciBpcyBub3QgcmVzcGVjdGVkIGJlY2F1c2UgcG9ydHMgYXJlIG5vdCBhbGxvd2VkLiBDdXJyZW50bHkgdGhlXG4gICAqIHBvcnQgb2YgYW4gSW5ncmVzcyBpcyBpbXBsaWNpdGx5IDo4MCBmb3IgaHR0cCBhbmQgOjQ0MyBmb3IgaHR0cHMuIEJvdGhcbiAgICogdGhlc2UgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBJbmNvbWluZyByZXF1ZXN0cyBhcmUgbWF0Y2hlZCBhZ2FpbnN0IHRoZVxuICAgKiBob3N0IGJlZm9yZSB0aGUgSW5ncmVzc1J1bGVWYWx1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB0aGUgaG9zdCBpcyB1bnNwZWNpZmllZCwgdGhlIEluZ3Jlc3Mgcm91dGVzIGFsbCB0cmFmZmljIGJhc2VkXG4gICAqIG9uIHRoZSBzcGVjaWZpZWQgSW5ncmVzc1J1bGVWYWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggaXMgYW4gZXh0ZW5kZWQgUE9TSVggcmVnZXggYXMgZGVmaW5lZCBieSBJRUVFIFN0ZCAxMDAzLjEsIChpLmUgdGhpc1xuICAgKiBmb2xsb3dzIHRoZSBlZ3JlcC91bml4IHN5bnRheCwgbm90IHRoZSBwZXJsIHN5bnRheCkgbWF0Y2hlZCBhZ2FpbnN0IHRoZVxuICAgKiBwYXRoIG9mIGFuIGluY29taW5nIHJlcXVlc3QuIEN1cnJlbnRseSBpdCBjYW4gY29udGFpbiBjaGFyYWN0ZXJzIGRpc2FsbG93ZWRcbiAgICogZnJvbSB0aGUgY29udmVudGlvbmFsIFwicGF0aFwiIHBhcnQgb2YgYSBVUkwgYXMgZGVmaW5lZCBieSBSRkMgMzk4Ni4gUGF0aHNcbiAgICogbXVzdCBiZWdpbiB3aXRoIGEgJy8nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHVuc3BlY2lmaWVkLCB0aGUgcGF0aCBkZWZhdWx0cyB0byBhIGNhdGNoIGFsbCBzZW5kaW5nIHRyYWZmaWNcbiAgICogdG8gdGhlIGJhY2tlbmQuXG4gICAqL1xuICByZWFkb25seSBwYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGhvdyB0aGUgcGF0aCBpcyBtYXRjaGVkIGFnYWluc3QgcmVxdWVzdCBwYXRocy4gQnkgZGVmYXVsdCwgcGF0aFxuICAgKiB0eXBlcyB3aWxsIGJlIG1hdGNoZWQgYnkgcHJlZml4LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL3NlcnZpY2VzLW5ldHdvcmtpbmcvaW5ncmVzcy8jcGF0aC10eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGF0aFR5cGU/OiBIdHRwSW5ncmVzc1BhdGhUeXBlO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIFRMUyBjb25maWd1cmF0aW9uIG1hcHBpbmcgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIGluZ3Jlc3NcbiAqIGNvbnRyb2xsZXIgZm9yIFNTTCB0ZXJtaW5hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmdyZXNzVGxzIHtcblxuICAvKipcbiAgICogSG9zdHMgYXJlIGEgbGlzdCBvZiBob3N0cyBpbmNsdWRlZCBpbiB0aGUgVExTIGNlcnRpZmljYXRlLiBUaGUgdmFsdWVzIGluXG4gICAqIHRoaXMgbGlzdCBtdXN0IG1hdGNoIHRoZSBuYW1lL3MgdXNlZCBpbiB0aGUgVExTIFNlY3JldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB1bnNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gdGhlIHdpbGRjYXJkIGhvc3Qgc2V0dGluZyBmb3JcbiAgICogdGhlIGxvYWRiYWxhbmNlciBjb250cm9sbGVyIGZ1bGZpbGxpbmcgdGhpcyBJbmdyZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU2VjcmV0IGlzIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgY2VydGlmaWNhdGUgYW5kIGtleSB1c2VkIHRvXG4gICAqIHRlcm1pbmF0ZSBTU0wgdHJhZmZpYyBvbiA0NDMuIElmIHRoZSBTTkkgaG9zdCBpbiBhIGxpc3RlbmVyIGNvbmZsaWN0cyB3aXRoXG4gICAqIHRoZSBcIkhvc3RcIiBoZWFkZXIgZmllbGQgdXNlZCBieSBhbiBJbmdyZXNzUnVsZSwgdGhlIFNOSSBob3N0IGlzIHVzZWQgZm9yXG4gICAqIHRlcm1pbmF0aW9uIGFuZCB2YWx1ZSBvZiB0aGUgSG9zdCBoZWFkZXIgaXMgdXNlZCBmb3Igcm91dGluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB1bnNwZWNpZmllZCwgaXQgYWxsb3dzIFNTTCByb3V0aW5nIGJhc2VkIG9uIFNOSSBob3N0bmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldD86IHNlY3JldC5JU2VjcmV0O1xufVxuXG5mdW5jdGlvbiBzb3J0QnlQYXRoKGxoczogazhzLkh0dHBJbmdyZXNzUGF0aCwgcmhzOiBrOHMuSHR0cEluZ3Jlc3NQYXRoKSB7XG4gIGNvbnN0IHAxID0gbGhzLnBhdGggPz8gJyc7XG4gIGNvbnN0IHAyID0gcmhzLnBhdGggPz8gJyc7XG4gIHJldHVybiBwMS5sb2NhbGVDb21wYXJlKHAyKTtcbn1cbiJdfQ==
package/lib/job.js CHANGED
@@ -50,5 +50,5 @@ class Job extends workload.Workload {
50
50
  }
51
51
  exports.Job = Job;
52
52
  _a = JSII_RTTI_SYMBOL_1;
53
- Job[_a] = { fqn: "cdk8s-plus-31.Job", version: "2.0.5" };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFrRDtBQUVsRCxxQ0FBcUM7QUFDckMsNkJBQTZCO0FBQzdCLHVDQUF1QztBQW9DdkM7Ozs7OztHQU1HO0FBQ0gsTUFBYSxHQUFJLFNBQVEsUUFBUSxDQUFDLFFBQVE7SUF3QnhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBa0IsRUFBRTtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFDdEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7UUFQVyxpQkFBWSxHQUFHLE1BQU0sQ0FBQztRQVNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixJQUFJLEVBQUUsWUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNsRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ25DLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO2FBQ3hCO1lBQ0QscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7WUFDdkQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLHVCQUF1QixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQy9GLENBQUM7SUFDSixDQUFDOztBQTFESCxrQkE0REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QsIExhenksIER1cmF0aW9uIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBwb2QgZnJvbSAnLi9wb2QnO1xuaW1wb3J0ICogYXMgd29ya2xvYWQgZnJvbSAnLi93b3JrbG9hZCc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYEpvYmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iUHJvcHMgZXh0ZW5kcyB3b3JrbG9hZC5Xb3JrbG9hZFByb3BzIHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBkdXJhdGlvbiB0aGUgam9iIG1heSBiZSBhY3RpdmUgYmVmb3JlIHRoZSBzeXN0ZW0gdHJpZXMgdG8gdGVybWluYXRlIGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHVuc2V0LCB0aGVuIHRoZXJlIGlzIG5vIGRlYWRsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlRGVhZGxpbmU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmV0cmllcyBiZWZvcmUgbWFya2luZyB0aGlzIGpvYiBmYWlsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgbm90IHNldCwgc3lzdGVtIGRlZmF1bHRzIHRvIDYuXG4gICAqL1xuICByZWFkb25seSBiYWNrb2ZmTGltaXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIExpbWl0cyB0aGUgbGlmZXRpbWUgb2YgYSBKb2IgdGhhdCBoYXMgZmluaXNoZWQgZXhlY3V0aW9uIChlaXRoZXIgQ29tcGxldGVcbiAgICogb3IgRmFpbGVkKS4gSWYgdGhpcyBmaWVsZCBpcyBzZXQsIGFmdGVyIHRoZSBKb2IgZmluaXNoZXMsIGl0IGlzIGVsaWdpYmxlIHRvXG4gICAqIGJlIGF1dG9tYXRpY2FsbHkgZGVsZXRlZC4gV2hlbiB0aGUgSm9iIGlzIGJlaW5nIGRlbGV0ZWQsIGl0cyBsaWZlY3ljbGVcbiAgICogZ3VhcmFudGVlcyAoZS5nLiBmaW5hbGl6ZXJzKSB3aWxsIGJlIGhvbm9yZWQuIElmIHRoaXMgZmllbGQgaXMgc2V0IHRvIHplcm8sXG4gICAqIHRoZSBKb2IgYmVjb21lcyBlbGlnaWJsZSB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IGFmdGVyIGl0IGZpbmlzaGVzLiBUaGlzXG4gICAqIGZpZWxkIGlzIGFscGhhLWxldmVsIGFuZCBpcyBvbmx5IGhvbm9yZWQgYnkgc2VydmVycyB0aGF0IGVuYWJsZSB0aGVcbiAgICogYFRUTEFmdGVyRmluaXNoZWRgIGZlYXR1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgdGhpcyBmaWVsZCBpcyB1bnNldCwgdGhlIEpvYiB3b24ndCBiZSBhdXRvbWF0aWNhbGx5IGRlbGV0ZWQuXG4gICAqL1xuICByZWFkb25seSB0dGxBZnRlckZpbmlzaGVkPzogRHVyYXRpb247XG5cbn1cblxuLyoqXG4gKiBBIEpvYiBjcmVhdGVzIG9uZSBvciBtb3JlIFBvZHMgYW5kIGVuc3VyZXMgdGhhdCBhIHNwZWNpZmllZCBudW1iZXIgb2YgdGhlbSBzdWNjZXNzZnVsbHkgdGVybWluYXRlLiBBcyBwb2RzIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSxcbiAqIHRoZSBKb2IgdHJhY2tzIHRoZSBzdWNjZXNzZnVsIGNvbXBsZXRpb25zLiBXaGVuIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzdWNjZXNzZnVsIGNvbXBsZXRpb25zIGlzIHJlYWNoZWQsIHRoZSB0YXNrIChpZSwgSm9iKSBpcyBjb21wbGV0ZS5cbiAqIERlbGV0aW5nIGEgSm9iIHdpbGwgY2xlYW4gdXAgdGhlIFBvZHMgaXQgY3JlYXRlZC4gQSBzaW1wbGUgY2FzZSBpcyB0byBjcmVhdGUgb25lIEpvYiBvYmplY3QgaW4gb3JkZXIgdG8gcmVsaWFibHkgcnVuIG9uZSBQb2QgdG8gY29tcGxldGlvbi5cbiAqIFRoZSBKb2Igb2JqZWN0IHdpbGwgc3RhcnQgYSBuZXcgUG9kIGlmIHRoZSBmaXJzdCBQb2QgZmFpbHMgb3IgaXMgZGVsZXRlZCAoZm9yIGV4YW1wbGUgZHVlIHRvIGEgbm9kZSBoYXJkd2FyZSBmYWlsdXJlIG9yIGEgbm9kZSByZWJvb3QpLlxuICogWW91IGNhbiBhbHNvIHVzZSBhIEpvYiB0byBydW4gbXVsdGlwbGUgUG9kcyBpbiBwYXJhbGxlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEpvYiBleHRlbmRzIHdvcmtsb2FkLldvcmtsb2FkIHtcblxuICAvKipcbiAgICogRHVyYXRpb24gYmVmb3JlIGpvYiBpcyB0ZXJtaW5hdGVkLiBJZiB1bmRlZmluZWQsIHRoZXJlIGlzIG5vIGRlYWRsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZURlYWRsaW5lPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiByZXRyaWVzIGJlZm9yZSBtYXJraW5nIGZhaWxlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBiYWNrb2ZmTGltaXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRUTCBiZWZvcmUgdGhlIGpvYiBpcyBkZWxldGVkIGFmdGVyIGl0IGlzIGZpbmlzaGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHR0bEFmdGVyRmluaXNoZWQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQHNlZSBiYXNlLlJlc291cmNlLmFwaU9iamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaU9iamVjdDogQXBpT2JqZWN0O1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGUgPSAnam9icyc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEpvYlByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHJlc3RhcnRQb2xpY3k6IHBvZC5SZXN0YXJ0UG9saWN5Lk5FVkVSLFxuICAgICAgc2VsZWN0OiBmYWxzZSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hcGlPYmplY3QgPSBuZXcgazhzLkt1YmVKb2IodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbWV0YWRhdGE6IHByb3BzLm1ldGFkYXRhLFxuICAgICAgc3BlYzogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLl90b0t1YmUoKSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWN0aXZlRGVhZGxpbmUgPSBwcm9wcy5hY3RpdmVEZWFkbGluZTtcbiAgICB0aGlzLmJhY2tvZmZMaW1pdCA9IHByb3BzLmJhY2tvZmZMaW1pdDtcbiAgICB0aGlzLnR0bEFmdGVyRmluaXNoZWQgPSBwcm9wcy50dGxBZnRlckZpbmlzaGVkO1xuXG4gICAgaWYgKHRoaXMuaXNvbGF0ZSkge1xuICAgICAgdGhpcy5jb25uZWN0aW9ucy5pc29sYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0t1YmUoKTogazhzLkpvYlNwZWMge1xuICAgIHJldHVybiB7XG4gICAgICB0ZW1wbGF0ZToge1xuICAgICAgICBtZXRhZGF0YTogdGhpcy5wb2RNZXRhZGF0YS50b0pzb24oKSxcbiAgICAgICAgc3BlYzogdGhpcy5fdG9Qb2RTcGVjKCksXG4gICAgICB9LFxuICAgICAgYWN0aXZlRGVhZGxpbmVTZWNvbmRzOiB0aGlzLmFjdGl2ZURlYWRsaW5lPy50b1NlY29uZHMoKSxcbiAgICAgIGJhY2tvZmZMaW1pdDogdGhpcy5iYWNrb2ZmTGltaXQsXG4gICAgICB0dGxTZWNvbmRzQWZ0ZXJGaW5pc2hlZDogdGhpcy50dGxBZnRlckZpbmlzaGVkID8gdGhpcy50dGxBZnRlckZpbmlzaGVkLnRvU2Vjb25kcygpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxufVxuIl19
53
+ Job[_a] = { fqn: "cdk8s-plus-31.Job", version: "2.0.7" };
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFrRDtBQUVsRCxxQ0FBcUM7QUFDckMsNkJBQTZCO0FBQzdCLHVDQUF1QztBQW9DdkM7Ozs7OztHQU1HO0FBQ0gsTUFBYSxHQUFJLFNBQVEsUUFBUSxDQUFDLFFBQVE7SUF3QnhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBa0IsRUFBRTtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFDdEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7UUFQVyxpQkFBWSxHQUFHLE1BQU0sQ0FBQztRQVNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixJQUFJLEVBQUUsWUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNsRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUN4QjtZQUNELHFCQUFxQixFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFO1lBQ3ZELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQix1QkFBdUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUMvRixDQUFDO0lBQ0osQ0FBQzs7QUExREgsa0JBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpT2JqZWN0LCBMYXp5LCBEdXJhdGlvbiB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgazhzIGZyb20gJy4vaW1wb3J0cy9rOHMnO1xuaW1wb3J0ICogYXMgcG9kIGZyb20gJy4vcG9kJztcbmltcG9ydCAqIGFzIHdvcmtsb2FkIGZyb20gJy4vd29ya2xvYWQnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBKb2JgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYlByb3BzIGV4dGVuZHMgd29ya2xvYWQuV29ya2xvYWRQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZHVyYXRpb24gdGhlIGpvYiBtYXkgYmUgYWN0aXZlIGJlZm9yZSB0aGUgc3lzdGVtIHRyaWVzIHRvIHRlcm1pbmF0ZSBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB1bnNldCwgdGhlbiB0aGVyZSBpcyBubyBkZWFkbGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZURlYWRsaW5lPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJldHJpZXMgYmVmb3JlIG1hcmtpbmcgdGhpcyBqb2IgZmFpbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIG5vdCBzZXQsIHN5c3RlbSBkZWZhdWx0cyB0byA2LlxuICAgKi9cbiAgcmVhZG9ubHkgYmFja29mZkxpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMaW1pdHMgdGhlIGxpZmV0aW1lIG9mIGEgSm9iIHRoYXQgaGFzIGZpbmlzaGVkIGV4ZWN1dGlvbiAoZWl0aGVyIENvbXBsZXRlXG4gICAqIG9yIEZhaWxlZCkuIElmIHRoaXMgZmllbGQgaXMgc2V0LCBhZnRlciB0aGUgSm9iIGZpbmlzaGVzLCBpdCBpcyBlbGlnaWJsZSB0b1xuICAgKiBiZSBhdXRvbWF0aWNhbGx5IGRlbGV0ZWQuIFdoZW4gdGhlIEpvYiBpcyBiZWluZyBkZWxldGVkLCBpdHMgbGlmZWN5Y2xlXG4gICAqIGd1YXJhbnRlZXMgKGUuZy4gZmluYWxpemVycykgd2lsbCBiZSBob25vcmVkLiBJZiB0aGlzIGZpZWxkIGlzIHNldCB0byB6ZXJvLFxuICAgKiB0aGUgSm9iIGJlY29tZXMgZWxpZ2libGUgdG8gYmUgZGVsZXRlZCBpbW1lZGlhdGVseSBhZnRlciBpdCBmaW5pc2hlcy4gVGhpc1xuICAgKiBmaWVsZCBpcyBhbHBoYS1sZXZlbCBhbmQgaXMgb25seSBob25vcmVkIGJ5IHNlcnZlcnMgdGhhdCBlbmFibGUgdGhlXG4gICAqIGBUVExBZnRlckZpbmlzaGVkYCBmZWF0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHRoaXMgZmllbGQgaXMgdW5zZXQsIHRoZSBKb2Igd29uJ3QgYmUgYXV0b21hdGljYWxseSBkZWxldGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdHRsQWZ0ZXJGaW5pc2hlZD86IER1cmF0aW9uO1xuXG59XG5cbi8qKlxuICogQSBKb2IgY3JlYXRlcyBvbmUgb3IgbW9yZSBQb2RzIGFuZCBlbnN1cmVzIHRoYXQgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRoZW0gc3VjY2Vzc2Z1bGx5IHRlcm1pbmF0ZS4gQXMgcG9kcyBzdWNjZXNzZnVsbHkgY29tcGxldGUsXG4gKiB0aGUgSm9iIHRyYWNrcyB0aGUgc3VjY2Vzc2Z1bCBjb21wbGV0aW9ucy4gV2hlbiBhIHNwZWNpZmllZCBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjb21wbGV0aW9ucyBpcyByZWFjaGVkLCB0aGUgdGFzayAoaWUsIEpvYikgaXMgY29tcGxldGUuXG4gKiBEZWxldGluZyBhIEpvYiB3aWxsIGNsZWFuIHVwIHRoZSBQb2RzIGl0IGNyZWF0ZWQuIEEgc2ltcGxlIGNhc2UgaXMgdG8gY3JlYXRlIG9uZSBKb2Igb2JqZWN0IGluIG9yZGVyIHRvIHJlbGlhYmx5IHJ1biBvbmUgUG9kIHRvIGNvbXBsZXRpb24uXG4gKiBUaGUgSm9iIG9iamVjdCB3aWxsIHN0YXJ0IGEgbmV3IFBvZCBpZiB0aGUgZmlyc3QgUG9kIGZhaWxzIG9yIGlzIGRlbGV0ZWQgKGZvciBleGFtcGxlIGR1ZSB0byBhIG5vZGUgaGFyZHdhcmUgZmFpbHVyZSBvciBhIG5vZGUgcmVib290KS5cbiAqIFlvdSBjYW4gYWxzbyB1c2UgYSBKb2IgdG8gcnVuIG11bHRpcGxlIFBvZHMgaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBjbGFzcyBKb2IgZXh0ZW5kcyB3b3JrbG9hZC5Xb3JrbG9hZCB7XG5cbiAgLyoqXG4gICAqIER1cmF0aW9uIGJlZm9yZSBqb2IgaXMgdGVybWluYXRlZC4gSWYgdW5kZWZpbmVkLCB0aGVyZSBpcyBubyBkZWFkbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVEZWFkbGluZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcmV0cmllcyBiZWZvcmUgbWFya2luZyBmYWlsZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYmFja29mZkxpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUVEwgYmVmb3JlIHRoZSBqb2IgaXMgZGVsZXRlZCBhZnRlciBpdCBpcyBmaW5pc2hlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0dGxBZnRlckZpbmlzaGVkPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEBzZWUgYmFzZS5SZXNvdXJjZS5hcGlPYmplY3RcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlPYmplY3Q6IEFwaU9iamVjdDtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlID0gJ2pvYnMnO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBKb2JQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICByZXN0YXJ0UG9saWN5OiBwb2QuUmVzdGFydFBvbGljeS5ORVZFUixcbiAgICAgIHNlbGVjdDogZmFsc2UsXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlSm9iKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG1ldGFkYXRhOiBwcm9wcy5tZXRhZGF0YSxcbiAgICAgIHNwZWM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5fdG9LdWJlKCkgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFjdGl2ZURlYWRsaW5lID0gcHJvcHMuYWN0aXZlRGVhZGxpbmU7XG4gICAgdGhpcy5iYWNrb2ZmTGltaXQgPSBwcm9wcy5iYWNrb2ZmTGltaXQ7XG4gICAgdGhpcy50dGxBZnRlckZpbmlzaGVkID0gcHJvcHMudHRsQWZ0ZXJGaW5pc2hlZDtcblxuICAgIGlmICh0aGlzLmlzb2xhdGUpIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbnMuaXNvbGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9LdWJlKCk6IGs4cy5Kb2JTcGVjIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgbWV0YWRhdGE6IHRoaXMucG9kTWV0YWRhdGEudG9Kc29uKCksXG4gICAgICAgIHNwZWM6IHRoaXMuX3RvUG9kU3BlYygpLFxuICAgICAgfSxcbiAgICAgIGFjdGl2ZURlYWRsaW5lU2Vjb25kczogdGhpcy5hY3RpdmVEZWFkbGluZT8udG9TZWNvbmRzKCksXG4gICAgICBiYWNrb2ZmTGltaXQ6IHRoaXMuYmFja29mZkxpbWl0LFxuICAgICAgdHRsU2Vjb25kc0FmdGVyRmluaXNoZWQ6IHRoaXMudHRsQWZ0ZXJGaW5pc2hlZCA/IHRoaXMudHRsQWZ0ZXJGaW5pc2hlZC50b1NlY29uZHMoKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbn1cbiJdfQ==
package/lib/namespace.js CHANGED
@@ -53,7 +53,7 @@ class Namespace extends base.Resource {
53
53
  }
54
54
  exports.Namespace = Namespace;
55
55
  _a = JSII_RTTI_SYMBOL_1;
56
- Namespace[_a] = { fqn: "cdk8s-plus-31.Namespace", version: "2.0.5" };
56
+ Namespace[_a] = { fqn: "cdk8s-plus-31.Namespace", version: "2.0.7" };
57
57
  /**
58
58
  * @see https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#automatic-labelling
59
59
  */
@@ -62,13 +62,6 @@ Namespace.NAME_LABEL = 'kubernetes.io/metadata.name';
62
62
  * Represents a group of namespaces.
63
63
  */
64
64
  class Namespaces extends constructs_1.Construct {
65
- constructor(scope, id, expressions, names, labels) {
66
- super(scope, id);
67
- this.expressions = expressions;
68
- this.names = names;
69
- this.labels = labels;
70
- this._pods = pod.Pods.all(this, 'Pods', { namespaces: this });
71
- }
72
65
  /**
73
66
  * Select specific namespaces.
74
67
  */
@@ -81,6 +74,13 @@ class Namespaces extends constructs_1.Construct {
81
74
  static all(scope, id) {
82
75
  return Namespaces.select(scope, id, { expressions: [], labels: {} });
83
76
  }
77
+ constructor(scope, id, expressions, names, labels) {
78
+ super(scope, id);
79
+ this.expressions = expressions;
80
+ this.names = names;
81
+ this.labels = labels;
82
+ this._pods = pod.Pods.all(this, 'Pods', { namespaces: this });
83
+ }
84
84
  /**
85
85
  * @see INamespaceSelector.toNamespaceSelectorConfig()
86
86
  */
@@ -105,5 +105,5 @@ class Namespaces extends constructs_1.Construct {
105
105
  }
106
106
  exports.Namespaces = Namespaces;
107
107
  _b = JSII_RTTI_SYMBOL_1;
108
- Namespaces[_b] = { fqn: "cdk8s-plus-31.Namespaces", version: "2.0.5" };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25hbWVzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUF3QztBQUN4QywyQ0FBbUQ7QUFDbkQsK0JBQStCO0FBQy9CLHFDQUFxQztBQUVyQyw2QkFBNkI7QUFpQzdCOzs7OztHQUtHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsSUFBSSxDQUFDLFFBQVE7SUFnQjFDLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXdCLEVBQUU7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUxILGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBT2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLElBQUksRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN0QyxVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDMUUsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVEOztPQUVHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7QUF4REgsOEJBMERDOzs7QUF4REM7O0dBRUc7QUFDb0Isb0JBQVUsR0FBRyw2QkFBNkIsQ0FBQztBQXNGcEU7O0dBRUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQWtCdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFDckIsV0FBbUMsRUFDbkMsS0FBZ0IsRUFDaEIsTUFBa0M7UUFDbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUhBLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQTRCO1FBR25ELElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUF2QkQ7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWdDO1FBQ2pGLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFVO1FBQzVDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBYUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTztZQUNMLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUU7WUFDNUYsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7QUFqREgsZ0NBbURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpT2JqZWN0LCBMYXp5IH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBuZXR3b3JrcG9saWN5IGZyb20gJy4vbmV0d29yay1wb2xpY3knO1xuaW1wb3J0ICogYXMgcG9kIGZyb20gJy4vcG9kJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBzZWxlY3RpbmcgbmFtZXNwYWNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYW1lc3BhY2VTZWxlY3RvckNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIEEgc2VsZWN0b3IgdG8gc2VsZWN0IG5hbWVzcGFjZXMgYnkgbGFiZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxTZWxlY3Rvcj86IHBvZC5MYWJlbFNlbGVjdG9yO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbmFtZXMgdG8gc2VsZWN0IG5hbWVzcGFjZXMgYnkgbmFtZXMuXG4gICAqL1xuICByZWFkb25seSBuYW1lcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gb2JqZWN0IHRoYXQgY2FuIHNlbGVjdCBuYW1lc3BhY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOYW1lc3BhY2VTZWxlY3RvciBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoaXMgc2VsZWN0b3IuXG4gICAqL1xuICB0b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKCk6IE5hbWVzcGFjZVNlbGVjdG9yQ29uZmlnO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBOYW1lc3BhY2VgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZVByb3BzIGV4dGVuZHMgYmFzZS5SZXNvdXJjZVByb3BzIHt9XG5cbi8qKlxuICogSW4gS3ViZXJuZXRlcywgbmFtZXNwYWNlcyBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgaXNvbGF0aW5nIGdyb3VwcyBvZiByZXNvdXJjZXMgd2l0aGluIGEgc2luZ2xlIGNsdXN0ZXIuXG4gKiBOYW1lcyBvZiByZXNvdXJjZXMgbmVlZCB0byBiZSB1bmlxdWUgd2l0aGluIGEgbmFtZXNwYWNlLCBidXQgbm90IGFjcm9zcyBuYW1lc3BhY2VzLlxuICogTmFtZXNwYWNlLWJhc2VkIHNjb3BpbmcgaXMgYXBwbGljYWJsZSBvbmx5IGZvciBuYW1lc3BhY2VkIG9iamVjdHMgKGUuZy4gRGVwbG95bWVudHMsIFNlcnZpY2VzLCBldGMpIGFuZFxuICogbm90IGZvciBjbHVzdGVyLXdpZGUgb2JqZWN0cyAoZS5nLiBTdG9yYWdlQ2xhc3MsIE5vZGVzLCBQZXJzaXN0ZW50Vm9sdW1lcywgZXRjKS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZSBleHRlbmRzIGJhc2UuUmVzb3VyY2UgaW1wbGVtZW50cyBJTmFtZXNwYWNlU2VsZWN0b3IsIG5ldHdvcmtwb2xpY3kuSU5ldHdvcmtQb2xpY3lQZWVyIHtcblxuICAvKipcbiAgICogQHNlZSBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9vdmVydmlldy93b3JraW5nLXdpdGgtb2JqZWN0cy9uYW1lc3BhY2VzLyNhdXRvbWF0aWMtbGFiZWxsaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5BTUVfTEFCRUwgPSAna3ViZXJuZXRlcy5pby9tZXRhZGF0YS5uYW1lJztcblxuICAvKipcbiAgICogQHNlZSBiYXNlLlJlc291cmNlLmFwaU9iamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaU9iamVjdDogQXBpT2JqZWN0O1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZyA9ICduYW1lc3BhY2VzJztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9wb2RzOiBwb2QuUG9kcztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5hbWVzcGFjZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hcGlPYmplY3QgPSBuZXcgazhzLkt1YmVOYW1lc3BhY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbWV0YWRhdGE6IHByb3BzLm1ldGFkYXRhLFxuICAgICAgc3BlYzogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLl90b0t1YmUoKSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuX3BvZHMgPSBwb2QuUG9kcy5hbGwodGhpcywgJ1BvZHMnLCB7XG4gICAgICBuYW1lc3BhY2VzOiBOYW1lc3BhY2VzLnNlbGVjdCh0aGlzLCAnTmFtZXNwYWNlcycsIHsgbmFtZXM6IFt0aGlzLm5hbWVdIH0pLFxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmFtZXNwYWNlU2VsZWN0b3IudG9OYW1lc3BhY2VTZWxlY3RvckNvbmZpZygpXG4gICAqL1xuICBwdWJsaWMgdG9OYW1lc3BhY2VTZWxlY3RvckNvbmZpZygpOiBOYW1lc3BhY2VTZWxlY3RvckNvbmZpZyB7XG4gICAgcmV0dXJuIHsgbmFtZXM6IFt0aGlzLm5hbWVdIH07XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpXG4gICAqL1xuICBwdWJsaWMgdG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpOiBuZXR3b3JrcG9saWN5Lk5ldHdvcmtQb2xpY3lQZWVyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fcG9kcy50b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKCk7XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9Qb2RTZWxlY3RvcigpXG4gICAqL1xuICBwdWJsaWMgdG9Qb2RTZWxlY3RvcigpOiBwb2QuSVBvZFNlbGVjdG9yIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcG9kcy50b1BvZFNlbGVjdG9yKCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvS3ViZSgpOiBrOHMuTmFtZXNwYWNlU3BlYyB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgTmFtZXNwYWNlcy5zZWxlY3RgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZXNTZWxlY3RPcHRpb25zIHtcblxuICAvKipcbiAgICogTGFiZWxzIHRoZSBuYW1lc3BhY2VzIG11c3QgaGF2ZS5cbiAgICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIHVzaW5nIGFuICdJcycgc2VsZWN0b3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3RyaWN0IGxhYmVscyByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBsYWJlbHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBOYW1lc3BhY2VzIG11c3Qgc2F0aXNmeSB0aGVzZSBzZWxlY3RvcnMuXG4gICAqIFRoZSBzZWxlY3RvcnMgcXVlcnkgbGFiZWxzLCBqdXN0IGxpa2UgdGhlIGBsYWJlbHNgIHByb3BlcnR5LCBidXQgdGhleVxuICAgKiBwcm92aWRlIGEgbW9yZSBhZHZhbmNlZCBtYXRjaGluZyBtZWNoYW5pc20uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2VsZWN0b3IgcmVxdWlyZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwcmVzc2lvbnM/OiBwb2QuTGFiZWxFeHByZXNzaW9uW107XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZXMgbmFtZXMgbXVzdCBiZSBvbmUgb2YgdGhlc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZSByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBuYW1lcz86IHN0cmluZ1tdO1xuXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdyb3VwIG9mIG5hbWVzcGFjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSU5hbWVzcGFjZVNlbGVjdG9yLCBuZXR3b3JrcG9saWN5LklOZXR3b3JrUG9saWN5UGVlciB7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBzcGVjaWZpYyBuYW1lc3BhY2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZWxlY3Qoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0aW9uczogTmFtZXNwYWNlc1NlbGVjdE9wdGlvbnMpOiBOYW1lc3BhY2VzIHtcbiAgICByZXR1cm4gbmV3IE5hbWVzcGFjZXMoc2NvcGUsIGlkLCBvcHRpb25zLmV4cHJlc3Npb25zLCBvcHRpb25zLm5hbWVzLCBvcHRpb25zLmxhYmVscyk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IGFsbCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbGwoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyk6IE5hbWVzcGFjZXMge1xuICAgIHJldHVybiBOYW1lc3BhY2VzLnNlbGVjdChzY29wZSwgaWQsIHsgZXhwcmVzc2lvbnM6IFtdLCBsYWJlbHM6IHt9IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcG9kczogcG9kLlBvZHM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4cHJlc3Npb25zPzogcG9kLkxhYmVsRXhwcmVzc2lvbltdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZXM/OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxhYmVscz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5fcG9kcyA9IHBvZC5Qb2RzLmFsbCh0aGlzLCAnUG9kcycsIHsgbmFtZXNwYWNlczogdGhpcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOYW1lc3BhY2VTZWxlY3Rvci50b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKClcbiAgICovXG4gIHB1YmxpYyB0b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKCk6IE5hbWVzcGFjZVNlbGVjdG9yQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWxTZWxlY3RvcjogcG9kLkxhYmVsU2VsZWN0b3Iub2YoeyBleHByZXNzaW9uczogdGhpcy5leHByZXNzaW9ucywgbGFiZWxzOiB0aGlzLmxhYmVscyB9ICksXG4gICAgICBuYW1lczogdGhpcy5uYW1lcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5ldHdvcmtQb2xpY3lQZWVyLnRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKVxuICAgKi9cbiAgcHVibGljIHRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKTogbmV0d29ya3BvbGljeS5OZXR3b3JrUG9saWN5UGVlckNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BvZHMudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5ldHdvcmtQb2xpY3lQZWVyLnRvUG9kU2VsZWN0b3IoKVxuICAgKi9cbiAgcHVibGljIHRvUG9kU2VsZWN0b3IoKTogcG9kLklQb2RTZWxlY3RvciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BvZHMudG9Qb2RTZWxlY3RvcigpO1xuICB9XG5cbn1cbiJdfQ==
108
+ Namespaces[_b] = { fqn: "cdk8s-plus-31.Namespaces", version: "2.0.7" };
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25hbWVzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUF3QztBQUN4QywyQ0FBbUQ7QUFDbkQsK0JBQStCO0FBQy9CLHFDQUFxQztBQUVyQyw2QkFBNkI7QUFpQzdCOzs7OztHQUtHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsSUFBSSxDQUFDLFFBQVE7SUFnQjFDLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXdCLEVBQUU7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUxILGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBT2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLElBQUksRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN0QyxVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDMUUsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVEOztPQUVHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7QUF4REgsOEJBMERDOzs7QUF4REM7O0dBRUc7QUFDb0Isb0JBQVUsR0FBRyw2QkFBNkIsQUFBaEMsQ0FBaUM7QUFzRnBFOztHQUVHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFFdkM7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWdDO1FBQ2pGLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFVO1FBQzVDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBSUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFDckIsV0FBbUMsRUFDbkMsS0FBZ0IsRUFDaEIsTUFBa0M7UUFDbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUhBLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQTRCO1FBR25ELElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPO1lBQ0wsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBRTtZQUM1RixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDOztBQWpESCxnQ0FtREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QsIExhenkgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCAqIGFzIG5ldHdvcmtwb2xpY3kgZnJvbSAnLi9uZXR3b3JrLXBvbGljeSc7XG5pbXBvcnQgKiBhcyBwb2QgZnJvbSAnLi9wb2QnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHNlbGVjdGluZyBuYW1lc3BhY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZVNlbGVjdG9yQ29uZmlnIHtcblxuICAvKipcbiAgICogQSBzZWxlY3RvciB0byBzZWxlY3QgbmFtZXNwYWNlcyBieSBsYWJlbHMuXG4gICAqL1xuICByZWFkb25seSBsYWJlbFNlbGVjdG9yPzogcG9kLkxhYmVsU2VsZWN0b3I7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBuYW1lcyB0byBzZWxlY3QgbmFtZXNwYWNlcyBieSBuYW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBvYmplY3QgdGhhdCBjYW4gc2VsZWN0IG5hbWVzcGFjZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5hbWVzcGFjZVNlbGVjdG9yIGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBzZWxlY3Rvci5cbiAgICovXG4gIHRvTmFtZXNwYWNlU2VsZWN0b3JDb25maWcoKTogTmFtZXNwYWNlU2VsZWN0b3JDb25maWc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYE5hbWVzcGFjZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZXNwYWNlUHJvcHMgZXh0ZW5kcyBiYXNlLlJlc291cmNlUHJvcHMge31cblxuLyoqXG4gKiBJbiBLdWJlcm5ldGVzLCBuYW1lc3BhY2VzIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciBpc29sYXRpbmcgZ3JvdXBzIG9mIHJlc291cmNlcyB3aXRoaW4gYSBzaW5nbGUgY2x1c3Rlci5cbiAqIE5hbWVzIG9mIHJlc291cmNlcyBuZWVkIHRvIGJlIHVuaXF1ZSB3aXRoaW4gYSBuYW1lc3BhY2UsIGJ1dCBub3QgYWNyb3NzIG5hbWVzcGFjZXMuXG4gKiBOYW1lc3BhY2UtYmFzZWQgc2NvcGluZyBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIG5hbWVzcGFjZWQgb2JqZWN0cyAoZS5nLiBEZXBsb3ltZW50cywgU2VydmljZXMsIGV0YykgYW5kXG4gKiBub3QgZm9yIGNsdXN0ZXItd2lkZSBvYmplY3RzIChlLmcuIFN0b3JhZ2VDbGFzcywgTm9kZXMsIFBlcnNpc3RlbnRWb2x1bWVzLCBldGMpLlxuICovXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlIGV4dGVuZHMgYmFzZS5SZXNvdXJjZSBpbXBsZW1lbnRzIElOYW1lc3BhY2VTZWxlY3RvciwgbmV0d29ya3BvbGljeS5JTmV0d29ya1BvbGljeVBlZXIge1xuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL292ZXJ2aWV3L3dvcmtpbmctd2l0aC1vYmplY3RzL25hbWVzcGFjZXMvI2F1dG9tYXRpYy1sYWJlbGxpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTkFNRV9MQUJFTCA9ICdrdWJlcm5ldGVzLmlvL21ldGFkYXRhLm5hbWUnO1xuXG4gIC8qKlxuICAgKiBAc2VlIGJhc2UuUmVzb3VyY2UuYXBpT2JqZWN0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpT2JqZWN0OiBBcGlPYmplY3Q7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlVHlwZTogc3RyaW5nID0gJ25hbWVzcGFjZXMnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvZHM6IHBvZC5Qb2RzO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmFtZXNwYWNlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmFwaU9iamVjdCA9IG5ldyBrOHMuS3ViZU5hbWVzcGFjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBtZXRhZGF0YTogcHJvcHMubWV0YWRhdGEsXG4gICAgICBzcGVjOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuX3RvS3ViZSgpIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fcG9kcyA9IHBvZC5Qb2RzLmFsbCh0aGlzLCAnUG9kcycsIHtcbiAgICAgIG5hbWVzcGFjZXM6IE5hbWVzcGFjZXMuc2VsZWN0KHRoaXMsICdOYW1lc3BhY2VzJywgeyBuYW1lczogW3RoaXMubmFtZV0gfSksXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOYW1lc3BhY2VTZWxlY3Rvci50b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKClcbiAgICovXG4gIHB1YmxpYyB0b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKCk6IE5hbWVzcGFjZVNlbGVjdG9yQ29uZmlnIHtcbiAgICByZXR1cm4geyBuYW1lczogW3RoaXMubmFtZV0gfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOZXR3b3JrUG9saWN5UGVlci50b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKClcbiAgICovXG4gIHB1YmxpYyB0b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKCk6IG5ldHdvcmtwb2xpY3kuTmV0d29ya1BvbGljeVBlZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9wb2RzLnRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOZXR3b3JrUG9saWN5UGVlci50b1BvZFNlbGVjdG9yKClcbiAgICovXG4gIHB1YmxpYyB0b1BvZFNlbGVjdG9yKCk6IHBvZC5JUG9kU2VsZWN0b3IgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wb2RzLnRvUG9kU2VsZWN0b3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9LdWJlKCk6IGs4cy5OYW1lc3BhY2VTcGVjIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBOYW1lc3BhY2VzLnNlbGVjdGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZXNwYWNlc1NlbGVjdE9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBMYWJlbHMgdGhlIG5hbWVzcGFjZXMgbXVzdCBoYXZlLlxuICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdXNpbmcgYW4gJ0lzJyBzZWxlY3Rvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdHJpY3QgbGFiZWxzIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVscz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZXMgbXVzdCBzYXRpc2Z5IHRoZXNlIHNlbGVjdG9ycy5cbiAgICogVGhlIHNlbGVjdG9ycyBxdWVyeSBsYWJlbHMsIGp1c3QgbGlrZSB0aGUgYGxhYmVsc2AgcHJvcGVydHksIGJ1dCB0aGV5XG4gICAqIHByb3ZpZGUgYSBtb3JlIGFkdmFuY2VkIG1hdGNoaW5nIG1lY2hhbmlzbS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWxlY3RvciByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBleHByZXNzaW9ucz86IHBvZC5MYWJlbEV4cHJlc3Npb25bXTtcblxuICAvKipcbiAgICogTmFtZXNwYWNlcyBuYW1lcyBtdXN0IGJlIG9uZSBvZiB0aGVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBuYW1lIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzPzogc3RyaW5nW107XG5cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZ3JvdXAgb2YgbmFtZXNwYWNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZXMgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJTmFtZXNwYWNlU2VsZWN0b3IsIG5ldHdvcmtwb2xpY3kuSU5ldHdvcmtQb2xpY3lQZWVyIHtcblxuICAvKipcbiAgICogU2VsZWN0IHNwZWNpZmljIG5hbWVzcGFjZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNlbGVjdChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRpb25zOiBOYW1lc3BhY2VzU2VsZWN0T3B0aW9ucyk6IE5hbWVzcGFjZXMge1xuICAgIHJldHVybiBuZXcgTmFtZXNwYWNlcyhzY29wZSwgaWQsIG9wdGlvbnMuZXhwcmVzc2lvbnMsIG9wdGlvbnMubmFtZXMsIG9wdGlvbnMubGFiZWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYWxsIG5hbWVzcGFjZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFsbChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKTogTmFtZXNwYWNlcyB7XG4gICAgcmV0dXJuIE5hbWVzcGFjZXMuc2VsZWN0KHNjb3BlLCBpZCwgeyBleHByZXNzaW9uczogW10sIGxhYmVsczoge30gfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9wb2RzOiBwb2QuUG9kcztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhwcmVzc2lvbnM/OiBwb2QuTGFiZWxFeHByZXNzaW9uW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lcz86IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFiZWxzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLl9wb2RzID0gcG9kLlBvZHMuYWxsKHRoaXMsICdQb2RzJywgeyBuYW1lc3BhY2VzOiB0aGlzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5hbWVzcGFjZVNlbGVjdG9yLnRvTmFtZXNwYWNlU2VsZWN0b3JDb25maWcoKVxuICAgKi9cbiAgcHVibGljIHRvTmFtZXNwYWNlU2VsZWN0b3JDb25maWcoKTogTmFtZXNwYWNlU2VsZWN0b3JDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbFNlbGVjdG9yOiBwb2QuTGFiZWxTZWxlY3Rvci5vZih7IGV4cHJlc3Npb25zOiB0aGlzLmV4cHJlc3Npb25zLCBsYWJlbHM6IHRoaXMubGFiZWxzIH0gKSxcbiAgICAgIG5hbWVzOiB0aGlzLm5hbWVzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpXG4gICAqL1xuICBwdWJsaWMgdG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpOiBuZXR3b3JrcG9saWN5Lk5ldHdvcmtQb2xpY3lQZWVyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fcG9kcy50b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKCk7XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9Qb2RTZWxlY3RvcigpXG4gICAqL1xuICBwdWJsaWMgdG9Qb2RTZWxlY3RvcigpOiBwb2QuSVBvZFNlbGVjdG9yIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcG9kcy50b1BvZFNlbGVjdG9yKCk7XG4gIH1cblxufVxuIl19
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  var _a, _b, _c;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.validatePeerConfig = exports.NetworkPolicy = exports.NetworkPolicyTrafficDefault = exports.NetworkProtocol = exports.NetworkPolicyIpBlock = exports.NetworkPolicyPort = void 0;
4
+ exports.NetworkPolicy = exports.NetworkPolicyTrafficDefault = exports.NetworkProtocol = exports.NetworkPolicyIpBlock = exports.NetworkPolicyPort = void 0;
5
+ exports.validatePeerConfig = validatePeerConfig;
5
6
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
7
  const cdk8s_1 = require("cdk8s");
7
8
  const constructs_1 = require("constructs");
@@ -14,11 +15,6 @@ const utils_1 = require("./utils");
14
15
  * Describes a port to allow traffic on.
15
16
  */
16
17
  class NetworkPolicyPort {
17
- constructor(port, endPort, protocol) {
18
- this.port = port;
19
- this.endPort = endPort;
20
- this.protocol = protocol;
21
- }
22
18
  /**
23
19
  * Distinct TCP ports
24
20
  */
@@ -61,6 +57,11 @@ class NetworkPolicyPort {
61
57
  static of(props) {
62
58
  return new NetworkPolicyPort(props.port ? k8s.IntOrString.fromNumber(props.port) : undefined, props.endPort, props.protocol);
63
59
  }
60
+ constructor(port, endPort, protocol) {
61
+ this.port = port;
62
+ this.endPort = endPort;
63
+ this.protocol = protocol;
64
+ }
64
65
  /**
65
66
  * @internal
66
67
  */
@@ -70,27 +71,13 @@ class NetworkPolicyPort {
70
71
  }
71
72
  exports.NetworkPolicyPort = NetworkPolicyPort;
72
73
  _a = JSII_RTTI_SYMBOL_1;
73
- NetworkPolicyPort[_a] = { fqn: "cdk8s-plus-31.NetworkPolicyPort", version: "2.0.5" };
74
+ NetworkPolicyPort[_a] = { fqn: "cdk8s-plus-31.NetworkPolicyPort", version: "2.0.7" };
74
75
  /**
75
76
  * Describes a particular CIDR (Ex. "192.168.1.1/24","2001:db9::/64") that is
76
77
  * allowed to the pods matched by a network policy selector.
77
78
  * The except entry describes CIDRs that should not be included within this rule.
78
79
  */
79
80
  class NetworkPolicyIpBlock extends constructs_1.Construct {
80
- constructor(scope, id,
81
- /**
82
- * A string representing the IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64".
83
- */
84
- cidr,
85
- /**
86
- * A slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64".
87
- * Except values will be rejected if they are outside the CIDR range.
88
- */
89
- except) {
90
- super(scope, id);
91
- this.cidr = cidr;
92
- this.except = except;
93
- }
94
81
  /**
95
82
  * Create an IPv4 peer from a CIDR
96
83
  */
@@ -129,6 +116,20 @@ class NetworkPolicyIpBlock extends constructs_1.Construct {
129
116
  static anyIpv6(scope, id) {
130
117
  return new NetworkPolicyIpBlock(scope, id, '::/0');
131
118
  }
119
+ constructor(scope, id,
120
+ /**
121
+ * A string representing the IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64".
122
+ */
123
+ cidr,
124
+ /**
125
+ * A slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64".
126
+ * Except values will be rejected if they are outside the CIDR range.
127
+ */
128
+ except) {
129
+ super(scope, id);
130
+ this.cidr = cidr;
131
+ this.except = except;
132
+ }
132
133
  /**
133
134
  * @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
134
135
  */
@@ -150,7 +151,7 @@ class NetworkPolicyIpBlock extends constructs_1.Construct {
150
151
  }
151
152
  exports.NetworkPolicyIpBlock = NetworkPolicyIpBlock;
152
153
  _b = JSII_RTTI_SYMBOL_1;
153
- NetworkPolicyIpBlock[_b] = { fqn: "cdk8s-plus-31.NetworkPolicyIpBlock", version: "2.0.5" };
154
+ NetworkPolicyIpBlock[_b] = { fqn: "cdk8s-plus-31.NetworkPolicyIpBlock", version: "2.0.7" };
154
155
  /**
155
156
  * Network protocols.
156
157
  */
@@ -168,7 +169,7 @@ var NetworkProtocol;
168
169
  * SCTP.
169
170
  */
170
171
  NetworkProtocol["SCTP"] = "SCTP";
171
- })(NetworkProtocol = exports.NetworkProtocol || (exports.NetworkProtocol = {}));
172
+ })(NetworkProtocol || (exports.NetworkProtocol = NetworkProtocol = {}));
172
173
  /**
173
174
  * Default behaviors of network traffic in policies.
174
175
  */
@@ -186,7 +187,7 @@ var NetworkPolicyTrafficDefault;
186
187
  * subsequently deny the traffic.
187
188
  */
188
189
  NetworkPolicyTrafficDefault["ALLOW"] = "ALLOW";
189
- })(NetworkPolicyTrafficDefault = exports.NetworkPolicyTrafficDefault || (exports.NetworkPolicyTrafficDefault = {}));
190
+ })(NetworkPolicyTrafficDefault || (exports.NetworkPolicyTrafficDefault = NetworkPolicyTrafficDefault = {}));
190
191
  /**
191
192
  * Control traffic flow at the IP address or port level (OSI layer 3 or 4),
192
193
  * network policies are an application-centric construct which allow you
@@ -323,15 +324,15 @@ class NetworkPolicy extends base.Resource {
323
324
  _toKube() {
324
325
  return {
325
326
  podSelector: this._podSelectorConfig.labelSelector._toKube(),
326
- egress: utils_1.undefinedIfEmpty(this._egressRules),
327
- ingress: utils_1.undefinedIfEmpty(this._ingressRules),
328
- policyTypes: utils_1.undefinedIfEmpty(Array.from(this._policyTypes)),
327
+ egress: (0, utils_1.undefinedIfEmpty)(this._egressRules),
328
+ ingress: (0, utils_1.undefinedIfEmpty)(this._ingressRules),
329
+ policyTypes: (0, utils_1.undefinedIfEmpty)(Array.from(this._policyTypes)),
329
330
  };
330
331
  }
331
332
  }
332
333
  exports.NetworkPolicy = NetworkPolicy;
333
334
  _c = JSII_RTTI_SYMBOL_1;
334
- NetworkPolicy[_c] = { fqn: "cdk8s-plus-31.NetworkPolicy", version: "2.0.5" };
335
+ NetworkPolicy[_c] = { fqn: "cdk8s-plus-31.NetworkPolicy", version: "2.0.7" };
335
336
  function validatePeerConfig(peerConfig) {
336
337
  if (!peerConfig.ipBlock && !peerConfig.podSelector) {
337
338
  throw new Error('Inavlid peer: either \'ipBlock\' or \'podSelector\' must be defined');
@@ -340,5 +341,4 @@ function validatePeerConfig(peerConfig) {
340
341
  throw new Error('Inavlid peer: only one of \'ipBlock\' and \'podSelector\' must be defined');
341
342
  }
342
343
  }
343
- exports.validatePeerConfig = validatePeerConfig;
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1wb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBd0M7QUFDeEMsMkNBQW1EO0FBQ25ELCtCQUErQjtBQUMvQixxQ0FBcUM7QUFDckMseUNBQXlDO0FBQ3pDLDZCQUE2QjtBQUM3QixtQ0FBMkM7QUE4QjNDOztHQUVHO0FBQ0gsTUFBYSxpQkFBaUI7SUFtRDVCLFlBQ21CLElBQXNCLEVBQ3RCLE9BQWdCLEVBQ2hCLFFBQTBCO1FBRjFCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFBRyxDQUFDO0lBcERqRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBWTtRQUM1QixPQUFPLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQWlCLEVBQUUsT0FBZTtRQUN2RCxPQUFPLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTTtRQUNsQixPQUFPLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVk7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QUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7U0FDRjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixPQUFPO1lBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO1lBQzVELE1BQU0sRUFBRSx3QkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzNDLE9BQU8sRUFBRSx3QkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzdDLFdBQVcsRUFBRSx3QkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM3RCxDQUFDO0lBQ0osQ0FBQzs7QUE1SUgsc0NBOElDOzs7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxVQUFtQztJQUNwRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0tBQ3hGO0lBQ0QsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0tBQzlGO0FBQ0gsQ0FBQztBQVBELGdEQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpT2JqZWN0LCBMYXp5IH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAnLi9uYW1lc3BhY2UnO1xuaW1wb3J0ICogYXMgcG9kIGZyb20gJy4vcG9kJztcbmltcG9ydCB7IHVuZGVmaW5lZElmRW1wdHkgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgTmV0d29ya1BvbGljeVBvcnRgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtQb2xpY3lQb3J0UHJvcHMge1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpYyBwb3J0IG51bWJlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbGwgcG9ydHMgYXJlIGFsbG93ZWQuXG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFbmQgcG9ydCAocmVsYXRpdmUgdG8gYHBvcnRgKS4gT25seSBhcHBsaWVzIGlmIGBwb3J0YCBpcyBkZWZpbmVkLlxuICAgKiBVc2UgdGhpcyB0byBzcGVjaWZ5IGEgcG9ydCByYW5nZSwgcmF0aGVyIHRoYXQgYSBzcGVjaWZpYyBvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm90IGEgcG9ydCByYW5nZS5cbiAgICovXG4gIHJlYWRvbmx5IGVuZFBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFByb3RvY29sLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOZXR3b3JrUHJvdG9jb2wuVENQXG4gICAqL1xuICByZWFkb25seSBwcm90b2NvbD86IE5ldHdvcmtQcm90b2NvbDtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBwb3J0IHRvIGFsbG93IHRyYWZmaWMgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXR3b3JrUG9saWN5UG9ydCB7XG5cbiAgLyoqXG4gICAqIERpc3RpbmN0IFRDUCBwb3J0c1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0Y3AocG9ydDogbnVtYmVyKTogTmV0d29ya1BvbGljeVBvcnQge1xuICAgIHJldHVybiBuZXcgTmV0d29ya1BvbGljeVBvcnQoazhzLkludE9yU3RyaW5nLmZyb21OdW1iZXIocG9ydCksIHVuZGVmaW5lZCwgTmV0d29ya1Byb3RvY29sLlRDUCk7XG4gIH1cblxuICAvKipcbiAgICogQSBUQ1AgcG9ydCByYW5nZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0Y3BSYW5nZShzdGFydFBvcnQ6IG51bWJlciwgZW5kUG9ydDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrUG9saWN5UG9ydChrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcihzdGFydFBvcnQpLCBlbmRQb3J0LCBOZXR3b3JrUHJvdG9jb2wuVENQKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbnkgVENQIHRyYWZmaWNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWxsVGNwKCkge1xuICAgIHJldHVybiBuZXcgTmV0d29ya1BvbGljeVBvcnQoazhzLkludE9yU3RyaW5nLmZyb21OdW1iZXIoMCksIDY1NTM1LCBOZXR3b3JrUHJvdG9jb2wuVENQKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXN0aW5jdCBVRFAgcG9ydHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdWRwKHBvcnQ6IG51bWJlcik6IE5ldHdvcmtQb2xpY3lQb3J0IHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtQb2xpY3lQb3J0KGs4cy5JbnRPclN0cmluZy5mcm9tTnVtYmVyKHBvcnQpLCB1bmRlZmluZWQsIE5ldHdvcmtQcm90b2NvbC5VRFApO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgVURQIHBvcnQgcmFuZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdWRwUmFuZ2Uoc3RhcnRQb3J0OiBudW1iZXIsIGVuZFBvcnQ6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgTmV0d29ya1BvbGljeVBvcnQoazhzLkludE9yU3RyaW5nLmZyb21OdW1iZXIoc3RhcnRQb3J0KSwgZW5kUG9ydCwgTmV0d29ya1Byb3RvY29sLlVEUCk7XG4gIH1cblxuICAvKipcbiAgICogQW55IFVEUCB0cmFmZmljXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFsbFVkcCgpIHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtQb2xpY3lQb3J0KGs4cy5JbnRPclN0cmluZy5mcm9tTnVtYmVyKDApLCA2NTUzNSwgTmV0d29ya1Byb3RvY29sLlVEUCk7XG4gIH1cblxuICAvKipcbiAgICogQ3VzdG9tIHBvcnQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YocHJvcHM6IE5ldHdvcmtQb2xpY3lQb3J0UHJvcHMpOiBOZXR3b3JrUG9saWN5UG9ydCB7XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrUG9saWN5UG9ydChwcm9wcy5wb3J0ID8gazhzLkludE9yU3RyaW5nLmZyb21OdW1iZXIocHJvcHMucG9ydCkgOiB1bmRlZmluZWQsIHByb3BzLmVuZFBvcnQsIHByb3BzLnByb3RvY29sKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3J0PzogazhzLkludE9yU3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZW5kUG9ydD86IG51bWJlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3RvY29sPzogTmV0d29ya1Byb3RvY29sKSB7fVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9LdWJlKCk6IGs4cy5OZXR3b3JrUG9saWN5UG9ydCB7XG4gICAgcmV0dXJuIHsgcG9ydDogdGhpcy5wb3J0LCBlbmRQb3J0OiB0aGlzLmVuZFBvcnQsIHByb3RvY29sOiB0aGlzLnByb3RvY29sIH07XG4gIH1cblxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIG5ldHdvcmsgcGVlcnMuXG4gKiBBIHBlZXIgY2FuIGVpdGhlciBieSBhbiBpcCBibG9jaywgb3IgYSBzZWxlY3Rpb24gb2YgcG9kcywgbm90IGJvdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1BvbGljeVBlZXJDb25maWcge1xuXG4gIC8qKlxuICAgKiBUaGUgaXAgYmxvY2sgdGhpcyBwZWVyIHJlcHJlc2VudHMuXG4gICAqL1xuICByZWFkb25seSBpcEJsb2NrPzogTmV0d29ya1BvbGljeUlwQmxvY2s7XG5cbiAgLyoqXG4gICAqIFRoZSBwb2Qgc2VsZWN0b3IgdGhpcyBwZWVyIHJlcHJlc2VudHMuXG4gICAqL1xuICByZWFkb25seSBwb2RTZWxlY3Rvcj86IHBvZC5Qb2RTZWxlY3RvckNvbmZpZztcblxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBlZXIgdG8gYWxsb3cgdHJhZmZpYyB0by9mcm9tLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOZXR3b3JrUG9saWN5UGVlciBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoaXMgcGVlci5cbiAgICovXG4gIHRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKTogTmV0d29ya1BvbGljeVBlZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIHBlZXIgaW50byBhIHBvZCBzZWxlY3RvciwgaWYgcG9zc2libGUuXG4gICAqL1xuICB0b1BvZFNlbGVjdG9yKCk6IHBvZC5JUG9kU2VsZWN0b3IgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgcnVsZSBhbGxvd2luZyB0cmFmZmljIGZyb20gLyB0byBwb2RzIG1hdGNoZWQgYnkgYSBuZXR3b3JrIHBvbGljeSBzZWxlY3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrUG9saWN5UnVsZSB7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3J0cyBvZiB0aGUgcnVsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cmFmZmljIGlzIGFsbG93ZWQgb24gYWxsIHBvcnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydHM/OiBOZXR3b3JrUG9saWN5UG9ydFtdO1xuXG4gIC8qKlxuICAgKiBQZWVyIHRoaXMgcnVsZSBpbnRlcmFjdHMgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IHBlZXI6IElOZXR3b3JrUG9saWN5UGVlcjtcblxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBhcnRpY3VsYXIgQ0lEUiAoRXguIFwiMTkyLjE2OC4xLjEvMjRcIixcIjIwMDE6ZGI5OjovNjRcIikgdGhhdCBpc1xuICogYWxsb3dlZCB0byB0aGUgcG9kcyBtYXRjaGVkIGJ5IGEgbmV0d29yayBwb2xpY3kgc2VsZWN0b3IuXG4gKiBUaGUgZXhjZXB0IGVudHJ5IGRlc2NyaWJlcyBDSURScyB0aGF0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgd2l0aGluIHRoaXMgcnVsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtQb2xpY3lJcEJsb2NrIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSU5ldHdvcmtQb2xpY3lQZWVyIHtcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIElQdjQgcGVlciBmcm9tIGEgQ0lEUlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNpZHJJcDogc3RyaW5nLCBleGNlcHQ/OiBzdHJpbmdbXSk6IE5ldHdvcmtQb2xpY3lJcEJsb2NrIHtcbiAgICBjb25zdCBjaWRyTWF0Y2ggPSBjaWRySXAubWF0Y2goL14oXFxkezEsM31cXC4pezN9XFxkezEsM30oXFwvXFxkKyk/JC8pO1xuXG4gICAgaWYgKCFjaWRyTWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJUHY0IENJRFI6IFwiJHtjaWRySXB9XCJgKTtcbiAgICB9XG5cbiAgICBpZiAoIWNpZHJNYXRjaFsyXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDSURSIG1hc2sgaXMgbWlzc2luZyBpbiBJUHY0OiBcIiR7Y2lkcklwfVwiLiBEaWQgeW91IG1lYW4gXCIke2NpZHJJcH0vMzJcIj9gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE5ldHdvcmtQb2xpY3lJcEJsb2NrKHNjb3BlLCBpZCwgY2lkcklwLCBleGNlcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFueSBJUHY0IGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW55SXB2NChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKTogTmV0d29ya1BvbGljeUlwQmxvY2sge1xuICAgIHJldHVybiBuZXcgTmV0d29ya1BvbGljeUlwQmxvY2soc2NvcGUsIGlkLCAnMC4wLjAuMC8wJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIElQdjYgcGVlciBmcm9tIGEgQ0lEUlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY2KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNpZHJJcDogc3RyaW5nLCBleGNlcHQ/OiBzdHJpbmdbXSk6IE5ldHdvcmtQb2xpY3lJcEJsb2NrIHtcblxuICAgIGNvbnN0IGNpZHJNYXRjaCA9IGNpZHJJcC5tYXRjaCgvXihbXFxkYS1mXXswLDR9Oil7Miw3fShbXFxkYS1mXXswLDR9KT8oXFwvXFxkKyk/JC8pO1xuXG4gICAgaWYgKCFjaWRyTWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJUHY2IENJRFI6IFwiJHtjaWRySXB9XCJgKTtcbiAgICB9XG5cbiAgICBpZiAoIWNpZHJNYXRjaFszXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDSURSIG1hc2sgaXMgbWlzc2luZyBpbiBJUHY2OiBcIiR7Y2lkcklwfVwiLiBEaWQgeW91IG1lYW4gXCIke2NpZHJJcH0vMTI4XCI/YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrUG9saWN5SXBCbG9jayhzY29wZSwgaWQsIGNpZHJJcCwgZXhjZXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbnkgSVB2NiBhZGRyZXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFueUlwdjYoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyk6IE5ldHdvcmtQb2xpY3lJcEJsb2NrIHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtQb2xpY3lJcEJsb2NrKHNjb3BlLCBpZCwgJzo6LzAnKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIElQIEJsb2NrIFZhbGlkIGV4YW1wbGVzIGFyZSBcIjE5Mi4xNjguMS4xLzI0XCIgb3IgXCIyMDAxOmRiOTo6LzY0XCIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNpZHI6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBBIHNsaWNlIG9mIENJRFJzIHRoYXQgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCB3aXRoaW4gYW4gSVAgQmxvY2sgVmFsaWQgZXhhbXBsZXMgYXJlIFwiMTkyLjE2OC4xLjEvMjRcIiBvciBcIjIwMDE6ZGI5OjovNjRcIi5cbiAgICAgKiBFeGNlcHQgdmFsdWVzIHdpbGwgYmUgcmVqZWN0ZWQgaWYgdGhleSBhcmUgb3V0c2lkZSB0aGUgQ0lEUiByYW5nZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXhjZXB0Pzogc3RyaW5nW10pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5ldHdvcmtQb2xpY3lQZWVyLnRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKVxuICAgKi9cbiAgcHVibGljIHRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKTogTmV0d29ya1BvbGljeVBlZXJDb25maWcge1xuICAgIHJldHVybiB7IGlwQmxvY2s6IHRoaXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOZXR3b3JrUG9saWN5UGVlci50b1BvZFNlbGVjdG9yKClcbiAgICovXG4gIHB1YmxpYyB0b1BvZFNlbGVjdG9yKCk6IHBvZC5JUG9kU2VsZWN0b3IgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvS3ViZSgpOiBrOHMuSXBCbG9jayB7XG4gICAgcmV0dXJuIHsgY2lkcjogdGhpcy5jaWRyLCBleGNlcHQ6IHRoaXMuZXhjZXB0IH07XG4gIH1cblxufVxuXG4vKipcbiAqIE5ldHdvcmsgcHJvdG9jb2xzLlxuICovXG5leHBvcnQgZW51bSBOZXR3b3JrUHJvdG9jb2wge1xuICAvKipcbiAgICogVENQLlxuICAgKi9cbiAgVENQID0gJ1RDUCcsXG4gIC8qKlxuICAgKiBVRFAuXG4gICAqL1xuICBVRFAgPSAnVURQJyxcbiAgLyoqXG4gICAqIFNDVFAuXG4gICAqL1xuICBTQ1RQID0gJ1NDVFAnLFxufVxuXG4vKipcbiAqIERlZmF1bHQgYmVoYXZpb3JzIG9mIG5ldHdvcmsgdHJhZmZpYyBpbiBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gTmV0d29ya1BvbGljeVRyYWZmaWNEZWZhdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgZGVuaWVzIGFsbCB0cmFmZmljLlxuICAgKiBTaW5jZSBydWxlcyBhcmUgYWRkaXRpdmUsIGFkZGl0aW9uYWwgcnVsZXMgb3IgcG9saWNpZXMgY2FuIGFsbG93XG4gICAqIHNwZWNpZmljIHRyYWZmaWMuXG4gICAqL1xuICBERU5ZID0gJ0RFTlknLFxuICAvKipcbiAgICogVGhlIHBvbGljeSBhbGxvd3MgYWxsIHRyYWZmaWMgKGVpdGhlciBpbmdyZXNzIG9yIGVncmVzcykuXG4gICAqIFNpbmNlIHJ1bGVzIGFyZSBhZGRpdGl2ZSwgbm8gYWRkaXRpb25hbCBydWxlIG9yIHBvbGljaWVzIGNhblxuICAgKiBzdWJzZXF1ZW50bHkgZGVueSB0aGUgdHJhZmZpYy5cbiAgICovXG4gIEFMTE9XID0gJ0FMTE9XJyxcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgaG93IHRoZSBuZXR3b3JrIHBvbGljeSBzaG91bGQgY29uZmlndXJlIGVncmVzcyAvIGluZ3Jlc3MgdHJhZmZpYy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrUG9saWN5VHJhZmZpYyB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgcG9saWN5IHdoZW5cbiAgICogbm8gcnVsZXMgYXJlIGRlZmluZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5zZXQsIHRoZSBwb2xpY3kgZG9lcyBub3QgY2hhbmdlIHRoZSBiZWhhdmlvci5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBOZXR3b3JrUG9saWN5VHJhZmZpY0RlZmF1bHQ7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcnVsZXMgdG8gYmUgYXBwbGllZCB0byB0aGUgc2VsZWN0ZWQgcG9kcy5cbiAgICogSWYgZW1wdHksIHRoZSBiZWhhdmlvciBvZiB0aGUgcG9saWN5IGlzIGRpY3RhdGVkIGJ5IHRoZSBgZGVmYXVsdGAgcHJvcGVydHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVzPzogTmV0d29ya1BvbGljeVJ1bGVbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgTmV0d29ya1BvbGljeS5hZGRFZ3Jlc3NSdWxlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrUG9saWN5QWRkRWdyZXNzUnVsZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBQb3J0cyB0aGUgcnVsZSBzaG91bGQgYWxsb3cgb3V0Z29pbmcgdHJhZmZpYyB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB0aGUgcGVlciBpcyBhIG1hbmFnZWQgcG9kLCB0YWtlIGl0cyBwb3J0cy4gT3RoZXJ3aXNlLCBhbGwgcG9ydHMgYXJlIGFsbG93ZWQuXG4gICAqL1xuICByZWFkb25seSBwb3J0cz86IE5ldHdvcmtQb2xpY3lQb3J0W107XG5cbn1cblxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBOZXR3b3JrUG9saWN5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrUG9saWN5UHJvcHMgZXh0ZW5kcyBiYXNlLlJlc291cmNlUHJvcHMge1xuXG4gIC8qKlxuICAgKiBXaGljaCBwb2RzIGRvZXMgdGhpcyBwb2xpY3kgb2JqZWN0IGFwcGxpZXMgdG8uXG4gICAqXG4gICAqIFRoaXMgY2FuIGVpdGhlciBiZSBhIHNpbmdsZSBwb2QgLyB3b3JrbG9hZCwgb3IgYSBncm91cGluZyBvZiBwb2RzIHNlbGVjdGVkXG4gICAqIHZpYSB0aGUgYFBvZHMuc2VsZWN0YCBmdW5jdGlvbi4gUnVsZXMgaXMgYXBwbGllZCB0byBhbnkgcG9kcyBzZWxlY3RlZCBieSB0aGlzIHByb3BlcnR5LlxuICAgKiBNdWx0aXBsZSBuZXR3b3JrIHBvbGljaWVzIGNhbiBzZWxlY3QgdGhlIHNhbWUgc2V0IG9mIHBvZHMuXG4gICAqIEluIHRoaXMgY2FzZSwgdGhlIHJ1bGVzIGZvciBlYWNoIGFyZSBjb21iaW5lZCBhZGRpdGl2ZWx5LlxuICAgKlxuICAgKiBOb3RlIHRoYXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSB3aWxsIHNlbGVjdCBhbGwgcG9kcyBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBwb2xpY3kuXG4gICAqL1xuICByZWFkb25seSBzZWxlY3Rvcj86IHBvZC5JUG9kU2VsZWN0b3I7XG5cbiAgLyoqXG4gICAqIEVncmVzcyB0cmFmZmljIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHBvbGljeSBkb2Vzbid0IGNoYW5nZSBlZ3Jlc3MgYmVoYXZpb3Igb2YgdGhlIHBvZHMgaXQgc2VsZWN0cy5cbiAgICovXG4gIHJlYWRvbmx5IGVncmVzcz86IE5ldHdvcmtQb2xpY3lUcmFmZmljO1xuXG4gIC8qKlxuICAgKiBJbmdyZXNzIHRyYWZmaWMgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgcG9saWN5IGRvZXNuJ3QgY2hhbmdlIGluZ3Jlc3MgYmVoYXZpb3Igb2YgdGhlIHBvZHMgaXQgc2VsZWN0cy5cbiAgICovXG4gIHJlYWRvbmx5IGluZ3Jlc3M/OiBOZXR3b3JrUG9saWN5VHJhZmZpYztcbn1cblxuLyoqXG4gKiBDb250cm9sIHRyYWZmaWMgZmxvdyBhdCB0aGUgSVAgYWRkcmVzcyBvciBwb3J0IGxldmVsIChPU0kgbGF5ZXIgMyBvciA0KSxcbiAqIG5ldHdvcmsgcG9saWNpZXMgYXJlIGFuIGFwcGxpY2F0aW9uLWNlbnRyaWMgY29uc3RydWN0IHdoaWNoIGFsbG93IHlvdVxuICogdG8gc3BlY2lmeSBob3cgYSBwb2QgaXMgYWxsb3dlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHZhcmlvdXMgbmV0d29yayBwZWVycy5cbiAqXG4gKiAtIE91dGdvaW5nIHRyYWZmaWMgaXMgYWxsb3dlZCBpZiB0aGVyZSBhcmUgbm8gbmV0d29yayBwb2xpY2llcyBzZWxlY3RpbmdcbiAqICAgdGhlIHBvZCAoYW5kIGNsdXN0ZXIgcG9saWN5IG90aGVyd2lzZSBhbGxvd3MgdGhlIHRyYWZmaWMpLFxuICogICBPUiBpZiB0aGUgdHJhZmZpYyBtYXRjaGVzIGF0IGxlYXN0IG9uZSBlZ3Jlc3MgcnVsZSBhY3Jvc3MgYWxsIG9mIHRoZVxuICogICBuZXR3b3JrIHBvbGljaWVzIHRoYXQgc2VsZWN0IHRoZSBwb2QuXG4gKlxuICogLSBJbmNvbWluZyB0cmFmZmljIGlzIGFsbG93ZWQgdG8gYSBwb2QgaWYgdGhlcmUgYXJlIG5vIG5ldHdvcmsgcG9saWNpZXNcbiAqICAgc2VsZWN0aW5nIHRoZSBwb2QgKGFuZCBjbHVzdGVyIHBvbGljeSBvdGhlcndpc2UgYWxsb3dzIHRoZSB0cmFmZmljKSxcbiAqICAgT1IgaWYgdGhlIHRyYWZmaWMgc291cmNlIGlzIHRoZSBwb2QncyBsb2NhbCBub2RlLFxuICogICBPUiBpZiB0aGUgdHJhZmZpYyBtYXRjaGVzIGF0IGxlYXN0IG9uZSBpbmdyZXNzIHJ1bGUgYWNyb3NzIGFsbCBvZlxuICogICB0aGUgbmV0d29yayBwb2xpY2llcyB0aGF0IHNlbGVjdCB0aGUgcG9kLlxuICpcbiAqIE5ldHdvcmsgcG9saWNpZXMgZG8gbm90IGNvbmZsaWN0OyB0aGV5IGFyZSBhZGRpdGl2ZS5cbiAqIElmIGFueSBwb2xpY3kgb3IgcG9saWNpZXMgYXBwbHkgdG8gYSBnaXZlbiBwb2QgZm9yIGEgZ2l2ZW5cbiAqIGRpcmVjdGlvbiwgdGhlIGNvbm5lY3Rpb25zIGFsbG93ZWQgaW4gdGhhdCBkaXJlY3Rpb24gZnJvbVxuICogdGhhdCBwb2QgaXMgdGhlIHVuaW9uIG9mIHdoYXQgdGhlIGFwcGxpY2FibGUgcG9saWNpZXMgYWxsb3cuXG4gKiBUaHVzLCBvcmRlciBvZiBldmFsdWF0aW9uIGRvZXMgbm90IGFmZmVjdCB0aGUgcG9saWN5IHJlc3VsdC5cbiAqXG4gKiBGb3IgYSBjb25uZWN0aW9uIGZyb20gYSBzb3VyY2UgcG9kIHRvIGEgZGVzdGluYXRpb24gcG9kIHRvIGJlIGFsbG93ZWQsXG4gKiBib3RoIHRoZSBlZ3Jlc3MgcG9saWN5IG9uIHRoZSBzb3VyY2UgcG9kIGFuZCB0aGUgaW5ncmVzcyBwb2xpY3kgb24gdGhlXG4gKiBkZXN0aW5hdGlvbiBwb2QgbmVlZCB0byBhbGxvdyB0aGUgY29ubmVjdGlvbi5cbiAqIElmIGVpdGhlciBzaWRlIGRvZXMgbm90IGFsbG93IHRoZSBjb25uZWN0aW9uLCBpdCB3aWxsIG5vdCBoYXBwZW4uXG4gKlxuICogQHNlZSBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9zZXJ2aWNlcy1uZXR3b3JraW5nL25ldHdvcmstcG9saWNpZXMvI25ldHdvcmtwb2xpY3ktcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtQb2xpY3kgZXh0ZW5kcyBiYXNlLlJlc291cmNlIHtcblxuICAvKipcbiAgICogQHNlZSBiYXNlLlJlc291cmNlLmFwaU9iamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaU9iamVjdDogQXBpT2JqZWN0O1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZyA9ICduZXR3b3JrcG9saWNpZXMnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvZFNlbGVjdG9yQ29uZmlnOiBwb2QuUG9kU2VsZWN0b3JDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VncmVzc1J1bGVzOiBrOHMuTmV0d29ya1BvbGljeUVncmVzc1J1bGVbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmdyZXNzUnVsZXM6IGs4cy5OZXR3b3JrUG9saWN5SW5ncmVzc1J1bGVbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wb2xpY3lUeXBlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXR3b3JrUG9saWN5UHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBwb2RTZWxlY3RvciA9IHByb3BzLnNlbGVjdG9yID8/IHBvZC5Qb2RzLmFsbCh0aGlzLCAnQWxsUG9kcycpO1xuICAgIHRoaXMuX3BvZFNlbGVjdG9yQ29uZmlnID0gcG9kU2VsZWN0b3IudG9Qb2RTZWxlY3RvckNvbmZpZygpO1xuXG4gICAgbGV0IG5zO1xuXG4gICAgaWYgKCFwcm9wcy5tZXRhZGF0YT8ubmFtZXNwYWNlKSB7XG5cbiAgICAgIGlmICh0aGlzLl9wb2RTZWxlY3RvckNvbmZpZy5uYW1lc3BhY2VzPy5sYWJlbFNlbGVjdG9yICYmICF0aGlzLl9wb2RTZWxlY3RvckNvbmZpZy5uYW1lc3BhY2VzPy5sYWJlbFNlbGVjdG9yLmlzRW1wdHkoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgYSBuZXR3b3JrIHBvbGljeSBmb3IgYSBzZWxlY3RvciAoJHtwb2RTZWxlY3Rvci5ub2RlLnBhdGh9KSB0aGF0IHNlbGVjdHMgcG9kcyBpbiBuYW1lc3BhY2VzIGJhc2VkIG9uIGxhYmVsc2ApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fcG9kU2VsZWN0b3JDb25maWcubmFtZXNwYWNlcz8ubmFtZXMgJiYgdGhpcy5fcG9kU2VsZWN0b3JDb25maWcubmFtZXNwYWNlcy5uYW1lcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGNyZWF0ZSBhIG5ldHdvcmsgcG9saWN5IGZvciBhIHNlbGVjdG9yICgke3BvZFNlbGVjdG9yLm5vZGUucGF0aH0pIHRoYXQgc2VsZWN0cyBwb2RzIGluIG11bHRpcGxlIG5hbWVzcGFjZXNgKTtcbiAgICAgIH1cblxuICAgICAgbnMgPSB0aGlzLl9wb2RTZWxlY3RvckNvbmZpZy5uYW1lc3BhY2VzPy5uYW1lcyA/IHRoaXMuX3BvZFNlbGVjdG9yQ29uZmlnLm5hbWVzcGFjZXM/Lm5hbWVzWzBdIDogdW5kZWZpbmVkO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIG5zID0gcHJvcHMubWV0YWRhdGEubmFtZXNwYWNlO1xuICAgIH1cblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlTmV0d29ya1BvbGljeSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBtZXRhZGF0YTogeyAuLi5wcm9wcy5tZXRhZGF0YSwgbmFtZXNwYWNlOiBucyB9LFxuICAgICAgc3BlYzogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLl90b0t1YmUoKSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29uZmlndXJlRGVmYXVsdEJlaGF2aW9yKCdFZ3Jlc3MnLCBwcm9wcy5lZ3Jlc3M/LmRlZmF1bHQpO1xuICAgIHRoaXMuY29uZmlndXJlRGVmYXVsdEJlaGF2aW9yKCdJbmdyZXNzJywgcHJvcHMuaW5ncmVzcz8uZGVmYXVsdCk7XG5cbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcHJvcHMuZWdyZXNzPy5ydWxlcyA/PyBbXSkge1xuICAgICAgdGhpcy5hZGRFZ3Jlc3NSdWxlKHJ1bGUucGVlciwgcnVsZS5wb3J0cyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBydWxlIG9mIHByb3BzLmluZ3Jlc3M/LnJ1bGVzID8/IFtdKSB7XG4gICAgICB0aGlzLmFkZEluZ3Jlc3NSdWxlKHJ1bGUucGVlciwgcnVsZS5wb3J0cyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IG91dGdvaW5nIHRyYWZmaWMgdG8gdGhlIHBlZXIuXG4gICAqXG4gICAqIElmIHBvcnRzIGFyZSBub3QgcGFzc2VkLCB0cmFmZmljIHdpbGwgYmUgYWxsb3dlZCBvbiBhbGwgcG9ydHMuXG4gICAqL1xuICBwdWJsaWMgYWRkRWdyZXNzUnVsZShwZWVyOiBJTmV0d29ya1BvbGljeVBlZXIsIHBvcnRzPzogTmV0d29ya1BvbGljeVBvcnRbXSkge1xuICAgIHRoaXMuX3BvbGljeVR5cGVzLmFkZCgnRWdyZXNzJyk7XG4gICAgdGhpcy5fZWdyZXNzUnVsZXMucHVzaCh7IHBvcnRzOiAocG9ydHMgPz8gW10pLm1hcChwID0+IHAuX3RvS3ViZSgpKSwgdG86IHRoaXMuY3JlYXRlTmV0d29ya1BvbGljeVBlZXJzKHBlZXIpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IGluY29taW5nIHRyYWZmaWMgZnJvbSB0aGUgcGVlci5cbiAgICpcbiAgICogSWYgcG9ydHMgYXJlIG5vdCBwYXNzZWQsIHRyYWZmaWMgd2lsbCBiZSBhbGxvd2VkIG9uIGFsbCBwb3J0cy5cbiAgICovXG4gIHB1YmxpYyBhZGRJbmdyZXNzUnVsZShwZWVyOiBJTmV0d29ya1BvbGljeVBlZXIsIHBvcnRzPzogTmV0d29ya1BvbGljeVBvcnRbXSkge1xuICAgIHRoaXMuX3BvbGljeVR5cGVzLmFkZCgnSW5ncmVzcycpO1xuICAgIHRoaXMuX2luZ3Jlc3NSdWxlcy5wdXNoKHsgcG9ydHM6IChwb3J0cyA/PyBbXSkubWFwKHAgPT4gcC5fdG9LdWJlKCkpLCBmcm9tOiB0aGlzLmNyZWF0ZU5ldHdvcmtQb2xpY3lQZWVycyhwZWVyKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV0d29ya1BvbGljeVBlZXJzKHBlZXI6IElOZXR3b3JrUG9saWN5UGVlcik6IGs4cy5OZXR3b3JrUG9saWN5UGVlcltdIHtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHBlZXIudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpO1xuXG4gICAgdmFsaWRhdGVQZWVyQ29uZmlnKGNvbmZpZyk7XG5cbiAgICBpZiAoY29uZmlnLmlwQmxvY2spIHtcbiAgICAgIC8vIGlwIGJsb2NrIGlzIGEgc2luZ2xlIHBlZXIuXG4gICAgICByZXR1cm4gW3sgaXBCbG9jazogY29uZmlnLmlwQmxvY2suX3RvS3ViZSgpIH1dO1xuICAgIH1cblxuICAgIGlmICghY29uZmlnLnBvZFNlbGVjdG9yIS5uYW1lc3BhY2VzPy5uYW1lcykge1xuICAgICAgLy8gd2hlbiBubyBleHBsaWNpdCBuYW1lc3BhY2VzIGFyZSBkZWZpbmVkIHdlIGNhbiBqdXN0IHVzZVxuICAgICAgLy8gdGhlIHNlbGVjdG9yIGFzIGlzXG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgbmFtZXNwYWNlU2VsZWN0b3I6IGNvbmZpZy5wb2RTZWxlY3RvciEubmFtZXNwYWNlcz8ubGFiZWxTZWxlY3Rvcj8uX3RvS3ViZSgpLFxuICAgICAgICBwb2RTZWxlY3RvcjogY29uZmlnLnBvZFNlbGVjdG9yIS5sYWJlbFNlbGVjdG9yLl90b0t1YmUoKSxcbiAgICAgIH1dO1xuICAgIH1cblxuICAgIC8vIHdoZW4gZXhwbGljaXQgbmFtZXNwYWNlcyBhcmUgZGVmaW5lZCwgd2UgbmVlZCB0byBjcmVhdGUgYSBzZXBhcmF0ZVxuICAgIC8vIHBlZXIgZm9yIGVhY2gsIHNpbmNlIGEgbGFiZWwgc2VsZWN0b3IgY2Fubm90IGhhdmUgbXVsdGlwbGUgbmFtZSBsYWJlbHMuICh0aGV5IHdpbGwgY29uZmxpY3QpXG4gICAgY29uc3QgbmFtZXNwYWNlU2VsZWN0b3IgPSBjb25maWcucG9kU2VsZWN0b3I/Lm5hbWVzcGFjZXM/LmxhYmVsU2VsZWN0b3I/Ll90b0t1YmUoKSA/PyB7fTtcbiAgICByZXR1cm4gY29uZmlnLnBvZFNlbGVjdG9yIS5uYW1lc3BhY2VzLm5hbWVzIS5tYXAobiA9PiAoe1xuICAgICAgcG9kU2VsZWN0b3I6IGNvbmZpZy5wb2RTZWxlY3RvciEubGFiZWxTZWxlY3Rvci5fdG9LdWJlKCksXG4gICAgICBuYW1lc3BhY2VTZWxlY3Rvcjoge1xuICAgICAgICBtYXRjaEV4cHJlc3Npb25zOiBuYW1lc3BhY2VTZWxlY3Rvci5tYXRjaEV4cHJlc3Npb25zLFxuICAgICAgICBtYXRjaExhYmVsczoge1xuICAgICAgICAgIC4uLm5hbWVzcGFjZVNlbGVjdG9yLm1hdGNoTGFiZWxzLFxuICAgICAgICAgIFtuYW1lc3BhY2UuTmFtZXNwYWNlLk5BTUVfTEFCRUxdOiBuLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZURlZmF1bHRCZWhhdmlvcihkaXJlY3Rpb246ICdJbmdyZXNzJyB8ICdFZ3Jlc3MnLCBfZGVmYXVsdD86IE5ldHdvcmtQb2xpY3lUcmFmZmljRGVmYXVsdCkge1xuXG4gICAgaWYgKCFfZGVmYXVsdCkgeyByZXR1cm47fVxuXG4gICAgaWYgKF9kZWZhdWx0ID09PSBOZXR3b3JrUG9saWN5VHJhZmZpY0RlZmF1bHQuREVOWSkge1xuICAgICAgLy8gaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvc2VydmljZXMtbmV0d29ya2luZy9uZXR3b3JrLXBvbGljaWVzLyNkZWZhdWx0LWRlbnktYWxsLWVncmVzcy10cmFmZmljXG4gICAgICB0aGlzLl9wb2xpY3lUeXBlcy5hZGQoZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoX2RlZmF1bHQgPT09IE5ldHdvcmtQb2xpY3lUcmFmZmljRGVmYXVsdC5BTExPVykge1xuICAgICAgLy8gaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvc2VydmljZXMtbmV0d29ya2luZy9uZXR3b3JrLXBvbGljaWVzLyNhbGxvdy1hbGwtZWdyZXNzLXRyYWZmaWNcbiAgICAgIHRoaXMuX3BvbGljeVR5cGVzLmFkZChkaXJlY3Rpb24pO1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ0VncmVzcycpIHtcbiAgICAgICAgdGhpcy5fZWdyZXNzUnVsZXMucHVzaCh7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pbmdyZXNzUnVsZXMucHVzaCh7fSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0t1YmUoKTogazhzLk5ldHdvcmtQb2xpY3lTcGVjIHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9kU2VsZWN0b3I6IHRoaXMuX3BvZFNlbGVjdG9yQ29uZmlnLmxhYmVsU2VsZWN0b3IuX3RvS3ViZSgpLFxuICAgICAgZWdyZXNzOiB1bmRlZmluZWRJZkVtcHR5KHRoaXMuX2VncmVzc1J1bGVzKSxcbiAgICAgIGluZ3Jlc3M6IHVuZGVmaW5lZElmRW1wdHkodGhpcy5faW5ncmVzc1J1bGVzKSxcbiAgICAgIHBvbGljeVR5cGVzOiB1bmRlZmluZWRJZkVtcHR5KEFycmF5LmZyb20odGhpcy5fcG9saWN5VHlwZXMpKSxcbiAgICB9O1xuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUGVlckNvbmZpZyhwZWVyQ29uZmlnOiBOZXR3b3JrUG9saWN5UGVlckNvbmZpZykge1xuICBpZiAoIXBlZXJDb25maWcuaXBCbG9jayAmJiAhcGVlckNvbmZpZy5wb2RTZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5hdmxpZCBwZWVyOiBlaXRoZXIgXFwnaXBCbG9ja1xcJyBvciBcXCdwb2RTZWxlY3RvclxcJyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgfVxuICBpZiAocGVlckNvbmZpZy5pcEJsb2NrICYmIHBlZXJDb25maWcucG9kU2VsZWN0b3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luYXZsaWQgcGVlcjogb25seSBvbmUgb2YgXFwnaXBCbG9ja1xcJyBhbmQgXFwncG9kU2VsZWN0b3JcXCcgbXVzdCBiZSBkZWZpbmVkJyk7XG4gIH1cbn1cbiJdfQ==
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1wb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQWdoQkEsZ0RBT0M7O0FBdmhCRCxpQ0FBd0M7QUFDeEMsMkNBQW1EO0FBQ25ELCtCQUErQjtBQUMvQixxQ0FBcUM7QUFDckMseUNBQXlDO0FBQ3pDLDZCQUE2QjtBQUM3QixtQ0FBMkM7QUE4QjNDOztHQUVHO0FBQ0gsTUFBYSxpQkFBaUI7SUFFNUI7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDNUIsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFpQixFQUFFLE9BQWU7UUFDdkQsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7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SUFDL0YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QsIExhenkgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICcuL25hbWVzcGFjZSc7XG5pbXBvcnQgKiBhcyBwb2QgZnJvbSAnLi9wb2QnO1xuaW1wb3J0IHsgdW5kZWZpbmVkSWZFbXB0eSB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBOZXR3b3JrUG9saWN5UG9ydGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1BvbGljeVBvcnRQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIHBvcnQgbnVtYmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCBwb3J0cyBhcmUgYWxsb3dlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZCBwb3J0IChyZWxhdGl2ZSB0byBgcG9ydGApLiBPbmx5IGFwcGxpZXMgaWYgYHBvcnRgIGlzIGRlZmluZWQuXG4gICAqIFVzZSB0aGlzIHRvIHNwZWNpZnkgYSBwb3J0IHJhbmdlLCByYXRoZXIgdGhhdCBhIHNwZWNpZmljIG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub3QgYSBwb3J0IHJhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogUHJvdG9jb2wuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5ldHdvcmtQcm90b2NvbC5UQ1BcbiAgICovXG4gIHJlYWRvbmx5IHByb3RvY29sPzogTmV0d29ya1Byb3RvY29sO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBvcnQgdG8gYWxsb3cgdHJhZmZpYyBvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtQb2xpY3lQb3J0IHtcblxuICAvKipcbiAgICogRGlzdGluY3QgVENQIHBvcnRzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRjcChwb3J0OiBudW1iZXIpOiBOZXR3b3JrUG9saWN5UG9ydCB7XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrUG9saWN5UG9ydChrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcihwb3J0KSwgdW5kZWZpbmVkLCBOZXR3b3JrUHJvdG9jb2wuVENQKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIFRDUCBwb3J0IHJhbmdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRjcFJhbmdlKHN0YXJ0UG9ydDogbnVtYmVyLCBlbmRQb3J0OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtQb2xpY3lQb3J0KGs4cy5JbnRPclN0cmluZy5mcm9tTnVtYmVyKHN0YXJ0UG9ydCksIGVuZFBvcnQsIE5ldHdvcmtQcm90b2NvbC5UQ1ApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFueSBUQ1AgdHJhZmZpY1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbGxUY3AoKSB7XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrUG9saWN5UG9ydChrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcigwKSwgNjU1MzUsIE5ldHdvcmtQcm90b2NvbC5UQ1ApO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3RpbmN0IFVEUCBwb3J0c1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1ZHAocG9ydDogbnVtYmVyKTogTmV0d29ya1BvbGljeVBvcnQge1xuICAgIHJldHVybiBuZXcgTmV0d29ya1BvbGljeVBvcnQoazhzLkludE9yU3RyaW5nLmZyb21OdW1iZXIocG9ydCksIHVuZGVmaW5lZCwgTmV0d29ya1Byb3RvY29sLlVEUCk7XG4gIH1cblxuICAvKipcbiAgICogQSBVRFAgcG9ydCByYW5nZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1ZHBSYW5nZShzdGFydFBvcnQ6IG51bWJlciwgZW5kUG9ydDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrUG9saWN5UG9ydChrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcihzdGFydFBvcnQpLCBlbmRQb3J0LCBOZXR3b3JrUHJvdG9jb2wuVURQKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbnkgVURQIHRyYWZmaWNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWxsVWRwKCkge1xuICAgIHJldHVybiBuZXcgTmV0d29ya1BvbGljeVBvcnQoazhzLkludE9yU3RyaW5nLmZyb21OdW1iZXIoMCksIDY1NTM1LCBOZXR3b3JrUHJvdG9jb2wuVURQKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdXN0b20gcG9ydCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihwcm9wczogTmV0d29ya1BvbGljeVBvcnRQcm9wcyk6IE5ldHdvcmtQb2xpY3lQb3J0IHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtQb2xpY3lQb3J0KHByb3BzLnBvcnQgPyBrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcihwcm9wcy5wb3J0KSA6IHVuZGVmaW5lZCwgcHJvcHMuZW5kUG9ydCwgcHJvcHMucHJvdG9jb2wpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcnQ/OiBrOHMuSW50T3JTdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmRQb3J0PzogbnVtYmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvdG9jb2w/OiBOZXR3b3JrUHJvdG9jb2wpIHt9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0t1YmUoKTogazhzLk5ldHdvcmtQb2xpY3lQb3J0IHtcbiAgICByZXR1cm4geyBwb3J0OiB0aGlzLnBvcnQsIGVuZFBvcnQ6IHRoaXMuZW5kUG9ydCwgcHJvdG9jb2w6IHRoaXMucHJvdG9jb2wgfTtcbiAgfVxuXG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgbmV0d29yayBwZWVycy5cbiAqIEEgcGVlciBjYW4gZWl0aGVyIGJ5IGFuIGlwIGJsb2NrLCBvciBhIHNlbGVjdGlvbiBvZiBwb2RzLCBub3QgYm90aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrUG9saWN5UGVlckNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIFRoZSBpcCBibG9jayB0aGlzIHBlZXIgcmVwcmVzZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGlwQmxvY2s/OiBOZXR3b3JrUG9saWN5SXBCbG9jaztcblxuICAvKipcbiAgICogVGhlIHBvZCBzZWxlY3RvciB0aGlzIHBlZXIgcmVwcmVzZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHBvZFNlbGVjdG9yPzogcG9kLlBvZFNlbGVjdG9yQ29uZmlnO1xuXG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgcGVlciB0byBhbGxvdyB0cmFmZmljIHRvL2Zyb20uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5ldHdvcmtQb2xpY3lQZWVyIGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBwZWVyLlxuICAgKi9cbiAgdG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpOiBOZXR3b3JrUG9saWN5UGVlckNvbmZpZztcblxuICAvKipcbiAgICogQ29udmVydCB0aGUgcGVlciBpbnRvIGEgcG9kIHNlbGVjdG9yLCBpZiBwb3NzaWJsZS5cbiAgICovXG4gIHRvUG9kU2VsZWN0b3IoKTogcG9kLklQb2RTZWxlY3RvciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBydWxlIGFsbG93aW5nIHRyYWZmaWMgZnJvbSAvIHRvIHBvZHMgbWF0Y2hlZCBieSBhIG5ldHdvcmsgcG9saWN5IHNlbGVjdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtQb2xpY3lSdWxlIHtcblxuICAvKipcbiAgICogVGhlIHBvcnRzIG9mIHRoZSBydWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRyYWZmaWMgaXMgYWxsb3dlZCBvbiBhbGwgcG9ydHMuXG4gICAqL1xuICByZWFkb25seSBwb3J0cz86IE5ldHdvcmtQb2xpY3lQb3J0W107XG5cbiAgLyoqXG4gICAqIFBlZXIgdGhpcyBydWxlIGludGVyYWN0cyB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgcGVlcjogSU5ldHdvcmtQb2xpY3lQZWVyO1xuXG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgcGFydGljdWxhciBDSURSIChFeC4gXCIxOTIuMTY4LjEuMS8yNFwiLFwiMjAwMTpkYjk6Oi82NFwiKSB0aGF0IGlzXG4gKiBhbGxvd2VkIHRvIHRoZSBwb2RzIG1hdGNoZWQgYnkgYSBuZXR3b3JrIHBvbGljeSBzZWxlY3Rvci5cbiAqIFRoZSBleGNlcHQgZW50cnkgZGVzY3JpYmVzIENJRFJzIHRoYXQgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCB3aXRoaW4gdGhpcyBydWxlLlxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya1BvbGljeUlwQmxvY2sgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJTmV0d29ya1BvbGljeVBlZXIge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gSVB2NCBwZWVyIGZyb20gYSBDSURSXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlwdjQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY2lkcklwOiBzdHJpbmcsIGV4Y2VwdD86IHN0cmluZ1tdKTogTmV0d29ya1BvbGljeUlwQmxvY2sge1xuICAgIGNvbnN0IGNpZHJNYXRjaCA9IGNpZHJJcC5tYXRjaCgvXihcXGR7MSwzfVxcLil7M31cXGR7MSwzfShcXC9cXGQrKT8kLyk7XG5cbiAgICBpZiAoIWNpZHJNYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIElQdjQgQ0lEUjogXCIke2NpZHJJcH1cImApO1xuICAgIH1cblxuICAgIGlmICghY2lkck1hdGNoWzJdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENJRFIgbWFzayBpcyBtaXNzaW5nIGluIElQdjQ6IFwiJHtjaWRySXB9XCIuIERpZCB5b3UgbWVhbiBcIiR7Y2lkcklwfS8zMlwiP2ApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTmV0d29ya1BvbGljeUlwQmxvY2soc2NvcGUsIGlkLCBjaWRySXAsIGV4Y2VwdCk7XG4gIH1cblxuICAvKipcbiAgICogQW55IElQdjQgYWRkcmVzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbnlJcHY0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBOZXR3b3JrUG9saWN5SXBCbG9jayB7XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrUG9saWN5SXBCbG9jayhzY29wZSwgaWQsICcwLjAuMC4wLzAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gSVB2NiBwZWVyIGZyb20gYSBDSURSXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlwdjYoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY2lkcklwOiBzdHJpbmcsIGV4Y2VwdD86IHN0cmluZ1tdKTogTmV0d29ya1BvbGljeUlwQmxvY2sge1xuXG4gICAgY29uc3QgY2lkck1hdGNoID0gY2lkcklwLm1hdGNoKC9eKFtcXGRhLWZdezAsNH06KXsyLDd9KFtcXGRhLWZdezAsNH0pPyhcXC9cXGQrKT8kLyk7XG5cbiAgICBpZiAoIWNpZHJNYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIElQdjYgQ0lEUjogXCIke2NpZHJJcH1cImApO1xuICAgIH1cblxuICAgIGlmICghY2lkck1hdGNoWzNdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENJRFIgbWFzayBpcyBtaXNzaW5nIGluIElQdjY6IFwiJHtjaWRySXB9XCIuIERpZCB5b3UgbWVhbiBcIiR7Y2lkcklwfS8xMjhcIj9gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE5ldHdvcmtQb2xpY3lJcEJsb2NrKHNjb3BlLCBpZCwgY2lkcklwLCBleGNlcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFueSBJUHY2IGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW55SXB2NihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKTogTmV0d29ya1BvbGljeUlwQmxvY2sge1xuICAgIHJldHVybiBuZXcgTmV0d29ya1BvbGljeUlwQmxvY2soc2NvcGUsIGlkLCAnOjovMCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgSVAgQmxvY2sgVmFsaWQgZXhhbXBsZXMgYXJlIFwiMTkyLjE2OC4xLjEvMjRcIiBvciBcIjIwMDE6ZGI5OjovNjRcIi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2lkcjogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIEEgc2xpY2Ugb2YgQ0lEUnMgdGhhdCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIHdpdGhpbiBhbiBJUCBCbG9jayBWYWxpZCBleGFtcGxlcyBhcmUgXCIxOTIuMTY4LjEuMS8yNFwiIG9yIFwiMjAwMTpkYjk6Oi82NFwiLlxuICAgICAqIEV4Y2VwdCB2YWx1ZXMgd2lsbCBiZSByZWplY3RlZCBpZiB0aGV5IGFyZSBvdXRzaWRlIHRoZSBDSURSIHJhbmdlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBleGNlcHQ/OiBzdHJpbmdbXSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpXG4gICAqL1xuICBwdWJsaWMgdG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpOiBOZXR3b3JrUG9saWN5UGVlckNvbmZpZyB7XG4gICAgcmV0dXJuIHsgaXBCbG9jazogdGhpcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5ldHdvcmtQb2xpY3lQZWVyLnRvUG9kU2VsZWN0b3IoKVxuICAgKi9cbiAgcHVibGljIHRvUG9kU2VsZWN0b3IoKTogcG9kLklQb2RTZWxlY3RvciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9LdWJlKCk6IGs4cy5JcEJsb2NrIHtcbiAgICByZXR1cm4geyBjaWRyOiB0aGlzLmNpZHIsIGV4Y2VwdDogdGhpcy5leGNlcHQgfTtcbiAgfVxuXG59XG5cbi8qKlxuICogTmV0d29yayBwcm90b2NvbHMuXG4gKi9cbmV4cG9ydCBlbnVtIE5ldHdvcmtQcm90b2NvbCB7XG4gIC8qKlxuICAgKiBUQ1AuXG4gICAqL1xuICBUQ1AgPSAnVENQJyxcbiAgLyoqXG4gICAqIFVEUC5cbiAgICovXG4gIFVEUCA9ICdVRFAnLFxuICAvKipcbiAgICogU0NUUC5cbiAgICovXG4gIFNDVFAgPSAnU0NUUCcsXG59XG5cbi8qKlxuICogRGVmYXVsdCBiZWhhdmlvcnMgb2YgbmV0d29yayB0cmFmZmljIGluIHBvbGljaWVzLlxuICovXG5leHBvcnQgZW51bSBOZXR3b3JrUG9saWN5VHJhZmZpY0RlZmF1bHQge1xuICAvKipcbiAgICogVGhlIHBvbGljeSBkZW5pZXMgYWxsIHRyYWZmaWMuXG4gICAqIFNpbmNlIHJ1bGVzIGFyZSBhZGRpdGl2ZSwgYWRkaXRpb25hbCBydWxlcyBvciBwb2xpY2llcyBjYW4gYWxsb3dcbiAgICogc3BlY2lmaWMgdHJhZmZpYy5cbiAgICovXG4gIERFTlkgPSAnREVOWScsXG4gIC8qKlxuICAgKiBUaGUgcG9saWN5IGFsbG93cyBhbGwgdHJhZmZpYyAoZWl0aGVyIGluZ3Jlc3Mgb3IgZWdyZXNzKS5cbiAgICogU2luY2UgcnVsZXMgYXJlIGFkZGl0aXZlLCBubyBhZGRpdGlvbmFsIHJ1bGUgb3IgcG9saWNpZXMgY2FuXG4gICAqIHN1YnNlcXVlbnRseSBkZW55IHRoZSB0cmFmZmljLlxuICAgKi9cbiAgQUxMT1cgPSAnQUxMT1cnLFxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBob3cgdGhlIG5ldHdvcmsgcG9saWN5IHNob3VsZCBjb25maWd1cmUgZWdyZXNzIC8gaW5ncmVzcyB0cmFmZmljLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtQb2xpY3lUcmFmZmljIHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBwb2xpY3kgd2hlblxuICAgKiBubyBydWxlcyBhcmUgZGVmaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1bnNldCwgdGhlIHBvbGljeSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGJlaGF2aW9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdD86IE5ldHdvcmtQb2xpY3lUcmFmZmljRGVmYXVsdDtcblxuICAvKipcbiAgICogTGlzdCBvZiBydWxlcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBzZWxlY3RlZCBwb2RzLlxuICAgKiBJZiBlbXB0eSwgdGhlIGJlaGF2aW9yIG9mIHRoZSBwb2xpY3kgaXMgZGljdGF0ZWQgYnkgdGhlIGBkZWZhdWx0YCBwcm9wZXJ0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBOZXR3b3JrUG9saWN5UnVsZVtdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBOZXR3b3JrUG9saWN5LmFkZEVncmVzc1J1bGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtQb2xpY3lBZGRFZ3Jlc3NSdWxlT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFBvcnRzIHRoZSBydWxlIHNob3VsZCBhbGxvdyBvdXRnb2luZyB0cmFmZmljIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHRoZSBwZWVyIGlzIGEgbWFuYWdlZCBwb2QsIHRha2UgaXRzIHBvcnRzLiBPdGhlcndpc2UsIGFsbCBwb3J0cyBhcmUgYWxsb3dlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnRzPzogTmV0d29ya1BvbGljeVBvcnRbXTtcblxufVxuXG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYE5ldHdvcmtQb2xpY3lgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtQb2xpY3lQcm9wcyBleHRlbmRzIGJhc2UuUmVzb3VyY2VQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFdoaWNoIHBvZHMgZG9lcyB0aGlzIHBvbGljeSBvYmplY3QgYXBwbGllcyB0by5cbiAgICpcbiAgICogVGhpcyBjYW4gZWl0aGVyIGJlIGEgc2luZ2xlIHBvZCAvIHdvcmtsb2FkLCBvciBhIGdyb3VwaW5nIG9mIHBvZHMgc2VsZWN0ZWRcbiAgICogdmlhIHRoZSBgUG9kcy5zZWxlY3RgIGZ1bmN0aW9uLiBSdWxlcyBpcyBhcHBsaWVkIHRvIGFueSBwb2RzIHNlbGVjdGVkIGJ5IHRoaXMgcHJvcGVydHkuXG4gICAqIE11bHRpcGxlIG5ldHdvcmsgcG9saWNpZXMgY2FuIHNlbGVjdCB0aGUgc2FtZSBzZXQgb2YgcG9kcy5cbiAgICogSW4gdGhpcyBjYXNlLCB0aGUgcnVsZXMgZm9yIGVhY2ggYXJlIGNvbWJpbmVkIGFkZGl0aXZlbHkuXG4gICAqXG4gICAqIE5vdGUgdGhhdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHdpbGwgc2VsZWN0IGFsbCBwb2RzIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIHBvbGljeS5cbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdG9yPzogcG9kLklQb2RTZWxlY3RvcjtcblxuICAvKipcbiAgICogRWdyZXNzIHRyYWZmaWMgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgcG9saWN5IGRvZXNuJ3QgY2hhbmdlIGVncmVzcyBiZWhhdmlvciBvZiB0aGUgcG9kcyBpdCBzZWxlY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgZWdyZXNzPzogTmV0d29ya1BvbGljeVRyYWZmaWM7XG5cbiAgLyoqXG4gICAqIEluZ3Jlc3MgdHJhZmZpYyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBwb2xpY3kgZG9lc24ndCBjaGFuZ2UgaW5ncmVzcyBiZWhhdmlvciBvZiB0aGUgcG9kcyBpdCBzZWxlY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5ncmVzcz86IE5ldHdvcmtQb2xpY3lUcmFmZmljO1xufVxuXG4vKipcbiAqIENvbnRyb2wgdHJhZmZpYyBmbG93IGF0IHRoZSBJUCBhZGRyZXNzIG9yIHBvcnQgbGV2ZWwgKE9TSSBsYXllciAzIG9yIDQpLFxuICogbmV0d29yayBwb2xpY2llcyBhcmUgYW4gYXBwbGljYXRpb24tY2VudHJpYyBjb25zdHJ1Y3Qgd2hpY2ggYWxsb3cgeW91XG4gKiB0byBzcGVjaWZ5IGhvdyBhIHBvZCBpcyBhbGxvd2VkIHRvIGNvbW11bmljYXRlIHdpdGggdmFyaW91cyBuZXR3b3JrIHBlZXJzLlxuICpcbiAqIC0gT3V0Z29pbmcgdHJhZmZpYyBpcyBhbGxvd2VkIGlmIHRoZXJlIGFyZSBubyBuZXR3b3JrIHBvbGljaWVzIHNlbGVjdGluZ1xuICogICB0aGUgcG9kIChhbmQgY2x1c3RlciBwb2xpY3kgb3RoZXJ3aXNlIGFsbG93cyB0aGUgdHJhZmZpYyksXG4gKiAgIE9SIGlmIHRoZSB0cmFmZmljIG1hdGNoZXMgYXQgbGVhc3Qgb25lIGVncmVzcyBydWxlIGFjcm9zcyBhbGwgb2YgdGhlXG4gKiAgIG5ldHdvcmsgcG9saWNpZXMgdGhhdCBzZWxlY3QgdGhlIHBvZC5cbiAqXG4gKiAtIEluY29taW5nIHRyYWZmaWMgaXMgYWxsb3dlZCB0byBhIHBvZCBpZiB0aGVyZSBhcmUgbm8gbmV0d29yayBwb2xpY2llc1xuICogICBzZWxlY3RpbmcgdGhlIHBvZCAoYW5kIGNsdXN0ZXIgcG9saWN5IG90aGVyd2lzZSBhbGxvd3MgdGhlIHRyYWZmaWMpLFxuICogICBPUiBpZiB0aGUgdHJhZmZpYyBzb3VyY2UgaXMgdGhlIHBvZCdzIGxvY2FsIG5vZGUsXG4gKiAgIE9SIGlmIHRoZSB0cmFmZmljIG1hdGNoZXMgYXQgbGVhc3Qgb25lIGluZ3Jlc3MgcnVsZSBhY3Jvc3MgYWxsIG9mXG4gKiAgIHRoZSBuZXR3b3JrIHBvbGljaWVzIHRoYXQgc2VsZWN0IHRoZSBwb2QuXG4gKlxuICogTmV0d29yayBwb2xpY2llcyBkbyBub3QgY29uZmxpY3Q7IHRoZXkgYXJlIGFkZGl0aXZlLlxuICogSWYgYW55IHBvbGljeSBvciBwb2xpY2llcyBhcHBseSB0byBhIGdpdmVuIHBvZCBmb3IgYSBnaXZlblxuICogZGlyZWN0aW9uLCB0aGUgY29ubmVjdGlvbnMgYWxsb3dlZCBpbiB0aGF0IGRpcmVjdGlvbiBmcm9tXG4gKiB0aGF0IHBvZCBpcyB0aGUgdW5pb24gb2Ygd2hhdCB0aGUgYXBwbGljYWJsZSBwb2xpY2llcyBhbGxvdy5cbiAqIFRodXMsIG9yZGVyIG9mIGV2YWx1YXRpb24gZG9lcyBub3QgYWZmZWN0IHRoZSBwb2xpY3kgcmVzdWx0LlxuICpcbiAqIEZvciBhIGNvbm5lY3Rpb24gZnJvbSBhIHNvdXJjZSBwb2QgdG8gYSBkZXN0aW5hdGlvbiBwb2QgdG8gYmUgYWxsb3dlZCxcbiAqIGJvdGggdGhlIGVncmVzcyBwb2xpY3kgb24gdGhlIHNvdXJjZSBwb2QgYW5kIHRoZSBpbmdyZXNzIHBvbGljeSBvbiB0aGVcbiAqIGRlc3RpbmF0aW9uIHBvZCBuZWVkIHRvIGFsbG93IHRoZSBjb25uZWN0aW9uLlxuICogSWYgZWl0aGVyIHNpZGUgZG9lcyBub3QgYWxsb3cgdGhlIGNvbm5lY3Rpb24sIGl0IHdpbGwgbm90IGhhcHBlbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL3NlcnZpY2VzLW5ldHdvcmtpbmcvbmV0d29yay1wb2xpY2llcy8jbmV0d29ya3BvbGljeS1yZXNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya1BvbGljeSBleHRlbmRzIGJhc2UuUmVzb3VyY2Uge1xuXG4gIC8qKlxuICAgKiBAc2VlIGJhc2UuUmVzb3VyY2UuYXBpT2JqZWN0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpT2JqZWN0OiBBcGlPYmplY3Q7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlVHlwZTogc3RyaW5nID0gJ25ldHdvcmtwb2xpY2llcyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcG9kU2VsZWN0b3JDb25maWc6IHBvZC5Qb2RTZWxlY3RvckNvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBfZWdyZXNzUnVsZXM6IGs4cy5OZXR3b3JrUG9saWN5RWdyZXNzUnVsZVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luZ3Jlc3NSdWxlczogazhzLk5ldHdvcmtQb2xpY3lJbmdyZXNzUnVsZVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvbGljeVR5cGVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5ldHdvcmtQb2xpY3lQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHBvZFNlbGVjdG9yID0gcHJvcHMuc2VsZWN0b3IgPz8gcG9kLlBvZHMuYWxsKHRoaXMsICdBbGxQb2RzJyk7XG4gICAgdGhpcy5fcG9kU2VsZWN0b3JDb25maWcgPSBwb2RTZWxlY3Rvci50b1BvZFNlbGVjdG9yQ29uZmlnKCk7XG5cbiAgICBsZXQgbnM7XG5cbiAgICBpZiAoIXByb3BzLm1ldGFkYXRhPy5uYW1lc3BhY2UpIHtcblxuICAgICAgaWYgKHRoaXMuX3BvZFNlbGVjdG9yQ29uZmlnLm5hbWVzcGFjZXM/LmxhYmVsU2VsZWN0b3IgJiYgIXRoaXMuX3BvZFNlbGVjdG9yQ29uZmlnLm5hbWVzcGFjZXM/LmxhYmVsU2VsZWN0b3IuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGNyZWF0ZSBhIG5ldHdvcmsgcG9saWN5IGZvciBhIHNlbGVjdG9yICgke3BvZFNlbGVjdG9yLm5vZGUucGF0aH0pIHRoYXQgc2VsZWN0cyBwb2RzIGluIG5hbWVzcGFjZXMgYmFzZWQgb24gbGFiZWxzYCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9wb2RTZWxlY3RvckNvbmZpZy5uYW1lc3BhY2VzPy5uYW1lcyAmJiB0aGlzLl9wb2RTZWxlY3RvckNvbmZpZy5uYW1lc3BhY2VzLm5hbWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY3JlYXRlIGEgbmV0d29yayBwb2xpY3kgZm9yIGEgc2VsZWN0b3IgKCR7cG9kU2VsZWN0b3Iubm9kZS5wYXRofSkgdGhhdCBzZWxlY3RzIHBvZHMgaW4gbXVsdGlwbGUgbmFtZXNwYWNlc2ApO1xuICAgICAgfVxuXG4gICAgICBucyA9IHRoaXMuX3BvZFNlbGVjdG9yQ29uZmlnLm5hbWVzcGFjZXM/Lm5hbWVzID8gdGhpcy5fcG9kU2VsZWN0b3JDb25maWcubmFtZXNwYWNlcz8ubmFtZXNbMF0gOiB1bmRlZmluZWQ7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgbnMgPSBwcm9wcy5tZXRhZGF0YS5uYW1lc3BhY2U7XG4gICAgfVxuXG4gICAgdGhpcy5hcGlPYmplY3QgPSBuZXcgazhzLkt1YmVOZXR3b3JrUG9saWN5KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG1ldGFkYXRhOiB7IC4uLnByb3BzLm1ldGFkYXRhLCBuYW1lc3BhY2U6IG5zIH0sXG4gICAgICBzcGVjOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuX3RvS3ViZSgpIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWd1cmVEZWZhdWx0QmVoYXZpb3IoJ0VncmVzcycsIHByb3BzLmVncmVzcz8uZGVmYXVsdCk7XG4gICAgdGhpcy5jb25maWd1cmVEZWZhdWx0QmVoYXZpb3IoJ0luZ3Jlc3MnLCBwcm9wcy5pbmdyZXNzPy5kZWZhdWx0KTtcblxuICAgIGZvciAoY29uc3QgcnVsZSBvZiBwcm9wcy5lZ3Jlc3M/LnJ1bGVzID8/IFtdKSB7XG4gICAgICB0aGlzLmFkZEVncmVzc1J1bGUocnVsZS5wZWVyLCBydWxlLnBvcnRzKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcHJvcHMuaW5ncmVzcz8ucnVsZXMgPz8gW10pIHtcbiAgICAgIHRoaXMuYWRkSW5ncmVzc1J1bGUocnVsZS5wZWVyLCBydWxlLnBvcnRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgb3V0Z29pbmcgdHJhZmZpYyB0byB0aGUgcGVlci5cbiAgICpcbiAgICogSWYgcG9ydHMgYXJlIG5vdCBwYXNzZWQsIHRyYWZmaWMgd2lsbCBiZSBhbGxvd2VkIG9uIGFsbCBwb3J0cy5cbiAgICovXG4gIHB1YmxpYyBhZGRFZ3Jlc3NSdWxlKHBlZXI6IElOZXR3b3JrUG9saWN5UGVlciwgcG9ydHM/OiBOZXR3b3JrUG9saWN5UG9ydFtdKSB7XG4gICAgdGhpcy5fcG9saWN5VHlwZXMuYWRkKCdFZ3Jlc3MnKTtcbiAgICB0aGlzLl9lZ3Jlc3NSdWxlcy5wdXNoKHsgcG9ydHM6IChwb3J0cyA/PyBbXSkubWFwKHAgPT4gcC5fdG9LdWJlKCkpLCB0bzogdGhpcy5jcmVhdGVOZXR3b3JrUG9saWN5UGVlcnMocGVlcikgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgaW5jb21pbmcgdHJhZmZpYyBmcm9tIHRoZSBwZWVyLlxuICAgKlxuICAgKiBJZiBwb3J0cyBhcmUgbm90IHBhc3NlZCwgdHJhZmZpYyB3aWxsIGJlIGFsbG93ZWQgb24gYWxsIHBvcnRzLlxuICAgKi9cbiAgcHVibGljIGFkZEluZ3Jlc3NSdWxlKHBlZXI6IElOZXR3b3JrUG9saWN5UGVlciwgcG9ydHM/OiBOZXR3b3JrUG9saWN5UG9ydFtdKSB7XG4gICAgdGhpcy5fcG9saWN5VHlwZXMuYWRkKCdJbmdyZXNzJyk7XG4gICAgdGhpcy5faW5ncmVzc1J1bGVzLnB1c2goeyBwb3J0czogKHBvcnRzID8/IFtdKS5tYXAocCA9PiBwLl90b0t1YmUoKSksIGZyb206IHRoaXMuY3JlYXRlTmV0d29ya1BvbGljeVBlZXJzKHBlZXIpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOZXR3b3JrUG9saWN5UGVlcnMocGVlcjogSU5ldHdvcmtQb2xpY3lQZWVyKTogazhzLk5ldHdvcmtQb2xpY3lQZWVyW10ge1xuXG4gICAgY29uc3QgY29uZmlnID0gcGVlci50b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKCk7XG5cbiAgICB2YWxpZGF0ZVBlZXJDb25maWcoY29uZmlnKTtcblxuICAgIGlmIChjb25maWcuaXBCbG9jaykge1xuICAgICAgLy8gaXAgYmxvY2sgaXMgYSBzaW5nbGUgcGVlci5cbiAgICAgIHJldHVybiBbeyBpcEJsb2NrOiBjb25maWcuaXBCbG9jay5fdG9LdWJlKCkgfV07XG4gICAgfVxuXG4gICAgaWYgKCFjb25maWcucG9kU2VsZWN0b3IhLm5hbWVzcGFjZXM/Lm5hbWVzKSB7XG4gICAgICAvLyB3aGVuIG5vIGV4cGxpY2l0IG5hbWVzcGFjZXMgYXJlIGRlZmluZWQgd2UgY2FuIGp1c3QgdXNlXG4gICAgICAvLyB0aGUgc2VsZWN0b3IgYXMgaXNcbiAgICAgIHJldHVybiBbe1xuICAgICAgICBuYW1lc3BhY2VTZWxlY3RvcjogY29uZmlnLnBvZFNlbGVjdG9yIS5uYW1lc3BhY2VzPy5sYWJlbFNlbGVjdG9yPy5fdG9LdWJlKCksXG4gICAgICAgIHBvZFNlbGVjdG9yOiBjb25maWcucG9kU2VsZWN0b3IhLmxhYmVsU2VsZWN0b3IuX3RvS3ViZSgpLFxuICAgICAgfV07XG4gICAgfVxuXG4gICAgLy8gd2hlbiBleHBsaWNpdCBuYW1lc3BhY2VzIGFyZSBkZWZpbmVkLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlXG4gICAgLy8gcGVlciBmb3IgZWFjaCwgc2luY2UgYSBsYWJlbCBzZWxlY3RvciBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBuYW1lIGxhYmVscy4gKHRoZXkgd2lsbCBjb25mbGljdClcbiAgICBjb25zdCBuYW1lc3BhY2VTZWxlY3RvciA9IGNvbmZpZy5wb2RTZWxlY3Rvcj8ubmFtZXNwYWNlcz8ubGFiZWxTZWxlY3Rvcj8uX3RvS3ViZSgpID8/IHt9O1xuICAgIHJldHVybiBjb25maWcucG9kU2VsZWN0b3IhLm5hbWVzcGFjZXMubmFtZXMhLm1hcChuID0+ICh7XG4gICAgICBwb2RTZWxlY3RvcjogY29uZmlnLnBvZFNlbGVjdG9yIS5sYWJlbFNlbGVjdG9yLl90b0t1YmUoKSxcbiAgICAgIG5hbWVzcGFjZVNlbGVjdG9yOiB7XG4gICAgICAgIG1hdGNoRXhwcmVzc2lvbnM6IG5hbWVzcGFjZVNlbGVjdG9yLm1hdGNoRXhwcmVzc2lvbnMsXG4gICAgICAgIG1hdGNoTGFiZWxzOiB7XG4gICAgICAgICAgLi4ubmFtZXNwYWNlU2VsZWN0b3IubWF0Y2hMYWJlbHMsXG4gICAgICAgICAgW25hbWVzcGFjZS5OYW1lc3BhY2UuTkFNRV9MQUJFTF06IG4sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGVmYXVsdEJlaGF2aW9yKGRpcmVjdGlvbjogJ0luZ3Jlc3MnIHwgJ0VncmVzcycsIF9kZWZhdWx0PzogTmV0d29ya1BvbGljeVRyYWZmaWNEZWZhdWx0KSB7XG5cbiAgICBpZiAoIV9kZWZhdWx0KSB7IHJldHVybjt9XG5cbiAgICBpZiAoX2RlZmF1bHQgPT09IE5ldHdvcmtQb2xpY3lUcmFmZmljRGVmYXVsdC5ERU5ZKSB7XG4gICAgICAvLyBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9zZXJ2aWNlcy1uZXR3b3JraW5nL25ldHdvcmstcG9saWNpZXMvI2RlZmF1bHQtZGVueS1hbGwtZWdyZXNzLXRyYWZmaWNcbiAgICAgIHRoaXMuX3BvbGljeVR5cGVzLmFkZChkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIGlmIChfZGVmYXVsdCA9PT0gTmV0d29ya1BvbGljeVRyYWZmaWNEZWZhdWx0LkFMTE9XKSB7XG4gICAgICAvLyBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9zZXJ2aWNlcy1uZXR3b3JraW5nL25ldHdvcmstcG9saWNpZXMvI2FsbG93LWFsbC1lZ3Jlc3MtdHJhZmZpY1xuICAgICAgdGhpcy5fcG9saWN5VHlwZXMuYWRkKGRpcmVjdGlvbik7XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAnRWdyZXNzJykge1xuICAgICAgICB0aGlzLl9lZ3Jlc3NSdWxlcy5wdXNoKHt9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2luZ3Jlc3NSdWxlcy5wdXNoKHt9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvS3ViZSgpOiBrOHMuTmV0d29ya1BvbGljeVNwZWMge1xuICAgIHJldHVybiB7XG4gICAgICBwb2RTZWxlY3RvcjogdGhpcy5fcG9kU2VsZWN0b3JDb25maWcubGFiZWxTZWxlY3Rvci5fdG9LdWJlKCksXG4gICAgICBlZ3Jlc3M6IHVuZGVmaW5lZElmRW1wdHkodGhpcy5fZWdyZXNzUnVsZXMpLFxuICAgICAgaW5ncmVzczogdW5kZWZpbmVkSWZFbXB0eSh0aGlzLl9pbmdyZXNzUnVsZXMpLFxuICAgICAgcG9saWN5VHlwZXM6IHVuZGVmaW5lZElmRW1wdHkoQXJyYXkuZnJvbSh0aGlzLl9wb2xpY3lUeXBlcykpLFxuICAgIH07XG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQZWVyQ29uZmlnKHBlZXJDb25maWc6IE5ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKSB7XG4gIGlmICghcGVlckNvbmZpZy5pcEJsb2NrICYmICFwZWVyQ29uZmlnLnBvZFNlbGVjdG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbmF2bGlkIHBlZXI6IGVpdGhlciBcXCdpcEJsb2NrXFwnIG9yIFxcJ3BvZFNlbGVjdG9yXFwnIG11c3QgYmUgZGVmaW5lZCcpO1xuICB9XG4gIGlmIChwZWVyQ29uZmlnLmlwQmxvY2sgJiYgcGVlckNvbmZpZy5wb2RTZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5hdmxpZCBwZWVyOiBvbmx5IG9uZSBvZiBcXCdpcEJsb2NrXFwnIGFuZCBcXCdwb2RTZWxlY3RvclxcJyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgfVxufVxuIl19