@phenixrts/sdk 2025.2.4-beta.612 → 2025.2.4-beta.613

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.
Files changed (42) hide show
  1. package/channels/debug/channels.js +200 -177
  2. package/channels/debug/package.json +1 -1
  3. package/channels/debug.private/channels.js +200 -177
  4. package/channels/debug.private/package.json +1 -1
  5. package/channels/debug.provideGlobalScope/channels.js +200 -177
  6. package/channels/debug.provideGlobalScope/package.json +1 -1
  7. package/channels/es5.debug.private/channels.js +198 -175
  8. package/channels/es5.debug.private/package.json +1 -1
  9. package/channels/min/channels.js +1 -1
  10. package/channels/min/channels.js.map +1 -1
  11. package/channels/min/package.json +1 -1
  12. package/channels/min.private/channels.js +1 -1
  13. package/channels/min.private/channels.js.map +1 -1
  14. package/channels/min.private/package.json +1 -1
  15. package/channels/min.provideGlobalScope/channels.js +1 -1
  16. package/channels/min.provideGlobalScope/channels.js.map +1 -1
  17. package/channels/min.provideGlobalScope/package.json +1 -1
  18. package/channels/package.json +1 -1
  19. package/full/debug/full.js +292 -285
  20. package/full/debug/package.json +1 -1
  21. package/full/debug.private/full.js +292 -285
  22. package/full/debug.private/package.json +1 -1
  23. package/full/min/full.js +1 -1
  24. package/full/min/full.js.map +1 -1
  25. package/full/min/package.json +1 -1
  26. package/full/min.private/full.js +1 -1
  27. package/full/min.private/full.js.map +1 -1
  28. package/full/min.private/package.json +1 -1
  29. package/full/package.json +1 -1
  30. package/package.json +1 -1
  31. package/publish/debug/package.json +1 -1
  32. package/publish/debug/publish.js +142 -123
  33. package/publish/debug.private/package.json +1 -1
  34. package/publish/debug.private/publish.js +142 -123
  35. package/publish/min/package.json +1 -1
  36. package/publish/min/publish.js +1 -1
  37. package/publish/min/publish.js.map +1 -1
  38. package/publish/min.private/package.json +1 -1
  39. package/publish/min.private/publish.js +1 -1
  40. package/publish/min.private/publish.js.map +1 -1
  41. package/publish/package.json +1 -1
  42. package/types/sdk/context/PeerConnectionContext.d.ts +7 -1
@@ -400,6 +400,7 @@ var ConfigurationParameterReader = /*#__PURE__*/function () {
400
400
  /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1__);
401
401
  /* harmony import */ var _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../globalScope/GlobalScope */ "./src/globalScope/GlobalScope.ts");
402
402
  /* harmony import */ var _environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../environment/FeatureEnablement */ "./src/environment/FeatureEnablement.ts");
403
+ /* harmony import */ var _sdk_SDK__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../sdk/SDK */ "./src/sdk/SDK.ts");
403
404
 
404
405
 
405
406
  /**
@@ -408,6 +409,7 @@ var ConfigurationParameterReader = /*#__PURE__*/function () {
408
409
 
409
410
 
410
411
 
412
+
411
413
  var GarbageCollectorManager = /*#__PURE__*/function () {
412
414
  function GarbageCollectorManager() {
413
415
  _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0___default()(this, GarbageCollectorManager);
@@ -416,6 +418,9 @@ var GarbageCollectorManager = /*#__PURE__*/function () {
416
418
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1___default()(GarbageCollectorManager, null, [{
417
419
  key: "forceGarbageCollection",
418
420
  value: function forceGarbageCollection() {
421
+ if (_environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_3__["default"].isMobile && _sdk_SDK__WEBPACK_IMPORTED_MODULE_4__["default"].skipGarbageCollectionOnMobileDevices) {
422
+ return;
423
+ }
419
424
  if (_environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_3__["default"].isForceChromeGarbageCollectionSupported) {
420
425
  this.forceChromeGarbageCollection();
421
426
  }
@@ -4790,13 +4795,14 @@ var BitrateMode = /*#__PURE__*/function (BitrateMode) {
4790
4795
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4791
4796
  /* harmony export */ "default": () => (/* binding */ PeerConnectionContext)
4792
4797
  /* harmony export */ });
4793
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/createClass.js */ "./node_modules/@babel/runtime/helpers/createClass.js");
4794
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_0__);
4795
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
4796
- /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1__);
4798
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
4799
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0__);
4800
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/createClass.js */ "./node_modules/@babel/runtime/helpers/createClass.js");
4801
+ /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1__);
4797
4802
  /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/defineProperty.js */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
4798
4803
  /* harmony import */ var _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2__);
4799
4804
  /* harmony import */ var _rx_Subject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../rx/Subject */ "./src/rx/Subject.ts");
4805
+ /* harmony import */ var _dom_GarbageCollectorManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../dom/GarbageCollectorManager */ "./src/dom/GarbageCollectorManager.ts");
4800
4806
 
4801
4807
 
4802
4808
 
@@ -4805,15 +4811,44 @@ var BitrateMode = /*#__PURE__*/function (BitrateMode) {
4805
4811
  */
4806
4812
 
4807
4813
 
4808
- var PeerConnectionContext = /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_0___default()(function PeerConnectionContext() {
4809
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1___default()(this, PeerConnectionContext);
4810
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "mediaStream", void 0);
4811
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "peerConnection", void 0);
4812
- _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "peerConnectionReconnectAttempts", void 0);
4813
- this.mediaStream = new _rx_Subject__WEBPACK_IMPORTED_MODULE_3__["default"](null);
4814
- this.peerConnection = new _rx_Subject__WEBPACK_IMPORTED_MODULE_3__["default"](null);
4815
- this.peerConnectionReconnectAttempts = 0;
4816
- });
4814
+
4815
+ var PeerConnectionContext = /*#__PURE__*/function () {
4816
+ function PeerConnectionContext(options) {
4817
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0___default()(this, PeerConnectionContext);
4818
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_forceGarbageCollectionOnRestart", void 0);
4819
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "mediaStream", void 0);
4820
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "peerConnection", void 0);
4821
+ _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "peerConnectionReconnectAttempts", void 0);
4822
+ this._forceGarbageCollectionOnRestart = options.forceGarbageCollectionOnRestart;
4823
+ this.mediaStream = new _rx_Subject__WEBPACK_IMPORTED_MODULE_3__["default"](null);
4824
+ this.peerConnection = new _rx_Subject__WEBPACK_IMPORTED_MODULE_3__["default"](null);
4825
+ this.peerConnectionReconnectAttempts = 0;
4826
+ }
4827
+ return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1___default()(PeerConnectionContext, [{
4828
+ key: "disposePeerConnection",
4829
+ value: function disposePeerConnection() {
4830
+ var peerConnection = this.peerConnection.value;
4831
+ if (!peerConnection) {
4832
+ return;
4833
+ }
4834
+ this.peerConnection.value = null;
4835
+ peerConnection.close();
4836
+ peerConnection.dispose();
4837
+ if (this._forceGarbageCollectionOnRestart) {
4838
+ _dom_GarbageCollectorManager__WEBPACK_IMPORTED_MODULE_4__["default"].forceGarbageCollection();
4839
+ }
4840
+ }
4841
+ }, {
4842
+ key: "disposeMediaStream",
4843
+ value: function disposeMediaStream() {
4844
+ var _this$mediaStream$val;
4845
+ (_this$mediaStream$val = this.mediaStream.value) === null || _this$mediaStream$val === void 0 ? void 0 : _this$mediaStream$val.getTracks().forEach(function (track) {
4846
+ return track.stop();
4847
+ });
4848
+ this.mediaStream.value = null;
4849
+ }
4850
+ }]);
4851
+ }();
4817
4852
 
4818
4853
 
4819
4854
  /***/ }),
@@ -6462,21 +6497,19 @@ var EndPoint = /*#__PURE__*/function () {
6462
6497
  /* harmony import */ var _rx_ReadOnlySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../rx/ReadOnlySubject */ "./src/rx/ReadOnlySubject.ts");
6463
6498
  /* harmony import */ var _time_ExponentialBackoff__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../time/ExponentialBackoff */ "./src/time/ExponentialBackoff.ts");
6464
6499
  /* harmony import */ var _SDK__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../SDK */ "./src/sdk/SDK.ts");
6465
- /* harmony import */ var _dom_GarbageCollectorManager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../dom/GarbageCollectorManager */ "./src/dom/GarbageCollectorManager.ts");
6466
- /* harmony import */ var _PublisherState__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PublisherState */ "./src/sdk/publish/PublisherState.ts");
6467
- /* harmony import */ var _lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../lang/assertUnreachable */ "./src/lang/assertUnreachable.ts");
6468
- /* harmony import */ var _lang_Disposable__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../lang/Disposable */ "./src/lang/Disposable.ts");
6469
- /* harmony import */ var _video_SessionTelemetry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../video/SessionTelemetry */ "./src/video/SessionTelemetry.ts");
6470
- /* harmony import */ var _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../edgeAuth/EdgeAuthParser */ "./src/edgeAuth/EdgeAuthParser.ts");
6471
- /* harmony import */ var _context_TokenContext__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../context/TokenContext */ "./src/sdk/context/TokenContext.ts");
6472
- /* harmony import */ var _PublisherContext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PublisherContext */ "./src/sdk/publish/PublisherContext.ts");
6473
- /* harmony import */ var _context_PeerConnectionContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../context/PeerConnectionContext */ "./src/sdk/context/PeerConnectionContext.ts");
6474
- /* harmony import */ var _context_StateContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../context/StateContext */ "./src/sdk/context/StateContext.ts");
6475
- /* harmony import */ var _discovery_Discovery__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../discovery/Discovery */ "./src/sdk/discovery/Discovery.ts");
6476
- /* harmony import */ var _discovery_DiscoveryUri__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../discovery/DiscoveryUri */ "./src/sdk/discovery/DiscoveryUri.ts");
6477
- /* harmony import */ var _metrics_MetricsFactory__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../metrics/MetricsFactory */ "./src/metrics/MetricsFactory.ts");
6478
- /* harmony import */ var _RealTimePublisher__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./RealTimePublisher */ "./src/sdk/publish/RealTimePublisher.ts");
6479
- /* harmony import */ var _environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../environment/FeatureEnablement */ "./src/environment/FeatureEnablement.ts");
6500
+ /* harmony import */ var _PublisherState__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PublisherState */ "./src/sdk/publish/PublisherState.ts");
6501
+ /* harmony import */ var _lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../lang/assertUnreachable */ "./src/lang/assertUnreachable.ts");
6502
+ /* harmony import */ var _lang_Disposable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../lang/Disposable */ "./src/lang/Disposable.ts");
6503
+ /* harmony import */ var _video_SessionTelemetry__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../video/SessionTelemetry */ "./src/video/SessionTelemetry.ts");
6504
+ /* harmony import */ var _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../edgeAuth/EdgeAuthParser */ "./src/edgeAuth/EdgeAuthParser.ts");
6505
+ /* harmony import */ var _context_TokenContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../context/TokenContext */ "./src/sdk/context/TokenContext.ts");
6506
+ /* harmony import */ var _PublisherContext__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./PublisherContext */ "./src/sdk/publish/PublisherContext.ts");
6507
+ /* harmony import */ var _context_PeerConnectionContext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../context/PeerConnectionContext */ "./src/sdk/context/PeerConnectionContext.ts");
6508
+ /* harmony import */ var _context_StateContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../context/StateContext */ "./src/sdk/context/StateContext.ts");
6509
+ /* harmony import */ var _discovery_Discovery__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../discovery/Discovery */ "./src/sdk/discovery/Discovery.ts");
6510
+ /* harmony import */ var _discovery_DiscoveryUri__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../discovery/DiscoveryUri */ "./src/sdk/discovery/DiscoveryUri.ts");
6511
+ /* harmony import */ var _metrics_MetricsFactory__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../metrics/MetricsFactory */ "./src/metrics/MetricsFactory.ts");
6512
+ /* harmony import */ var _RealTimePublisher__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./RealTimePublisher */ "./src/sdk/publish/RealTimePublisher.ts");
6480
6513
  /* provided dependency */ var Promise = __webpack_require__(/*! ./src/promise/Promise */ "./src/promise/Promise.ts")["default"];
6481
6514
 
6482
6515
 
@@ -6505,8 +6538,6 @@ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try {
6505
6538
 
6506
6539
 
6507
6540
 
6508
-
6509
-
6510
6541
 
6511
6542
  var defaultStreamTerminationReason = 'client:termination';
6512
6543
  var failureCountCleanUpIntervalInMilliseconds = 3000;
@@ -6541,10 +6572,13 @@ var Publisher = /*#__PURE__*/function () {
6541
6572
  _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default()(this, "_readOnlyMediaStream", void 0);
6542
6573
  _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default()(this, "_metricsService", void 0);
6543
6574
  _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_3___default()(this, "_sessionTelemetry", void 0);
6544
- this._tokenContext = new _context_TokenContext__WEBPACK_IMPORTED_MODULE_15__["default"](token);
6545
- this._publisherContext = new _PublisherContext__WEBPACK_IMPORTED_MODULE_16__["default"](name);
6546
- this._peerConnectionContext = new _context_PeerConnectionContext__WEBPACK_IMPORTED_MODULE_17__["default"]();
6547
- this._stateContext = new _context_StateContext__WEBPACK_IMPORTED_MODULE_18__["default"]();
6575
+ var peerConnectionContextOptions = {
6576
+ forceGarbageCollectionOnRestart: _SDK__WEBPACK_IMPORTED_MODULE_8__["default"].forceGarbageCollectionOnRestart
6577
+ };
6578
+ this._tokenContext = new _context_TokenContext__WEBPACK_IMPORTED_MODULE_14__["default"](token);
6579
+ this._publisherContext = new _PublisherContext__WEBPACK_IMPORTED_MODULE_15__["default"](name);
6580
+ this._peerConnectionContext = new _context_PeerConnectionContext__WEBPACK_IMPORTED_MODULE_16__["default"](peerConnectionContextOptions);
6581
+ this._stateContext = new _context_StateContext__WEBPACK_IMPORTED_MODULE_17__["default"]();
6548
6582
  this._exponentialBackoff = new _time_ExponentialBackoff__WEBPACK_IMPORTED_MODULE_7__["default"]();
6549
6583
  this._publisherStartTime = Date.now();
6550
6584
  this._readOnlyToken = new _rx_ReadOnlySubject__WEBPACK_IMPORTED_MODULE_6__["default"](this._tokenContext.token);
@@ -6563,12 +6597,12 @@ var Publisher = /*#__PURE__*/function () {
6563
6597
  this._readOnlyRtcStatistics = new _rx_ReadOnlySubject__WEBPACK_IMPORTED_MODULE_6__["default"](this._publisherContext.rtcStatistics);
6564
6598
  this._readOnlyMediaStream = new _rx_ReadOnlySubject__WEBPACK_IMPORTED_MODULE_6__["default"](this._peerConnectionContext.mediaStream);
6565
6599
  this._peerConnectionContext.mediaStream.value = mediaStream;
6566
- var edgeToken = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_14__["default"].parseToken(this._tokenContext.token.value);
6600
+ var edgeToken = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_13__["default"].parseToken(this._tokenContext.token.value);
6567
6601
  var discoveryUri = (edgeToken.uri || _SDK__WEBPACK_IMPORTED_MODULE_8__["default"].discoveryUri.value).toString();
6568
6602
  _SDK__WEBPACK_IMPORTED_MODULE_8__["default"].tenancy.value = edgeToken.tenancy || _SDK__WEBPACK_IMPORTED_MODULE_8__["default"].tenancy.value;
6569
- _discovery_DiscoveryUri__WEBPACK_IMPORTED_MODULE_20__["default"].uri.value = discoveryUri;
6570
- this._metricsService = _metrics_MetricsFactory__WEBPACK_IMPORTED_MODULE_21__["default"].getMetricsService(discoveryUri);
6571
- this._sessionTelemetry = new _video_SessionTelemetry__WEBPACK_IMPORTED_MODULE_13__["default"](_SDK__WEBPACK_IMPORTED_MODULE_8__["default"].pageLoadTime, this._metricsService);
6603
+ _discovery_DiscoveryUri__WEBPACK_IMPORTED_MODULE_19__["default"].uri.value = discoveryUri;
6604
+ this._metricsService = _metrics_MetricsFactory__WEBPACK_IMPORTED_MODULE_20__["default"].getMetricsService(discoveryUri);
6605
+ this._sessionTelemetry = new _video_SessionTelemetry__WEBPACK_IMPORTED_MODULE_12__["default"](_SDK__WEBPACK_IMPORTED_MODULE_8__["default"].pageLoadTime, this._metricsService);
6572
6606
  this._publisherContext.publisherDisposables.add(this._sessionTelemetry);
6573
6607
  this._publisherContext.publisherDisposables.add(this._publisherContext.state.subscribe(function (state) {
6574
6608
  if (_this._publisherContext.clearFailureCountTimeout) {
@@ -6577,7 +6611,7 @@ var Publisher = /*#__PURE__*/function () {
6577
6611
  if (!_this._publisherContext.failureCount.value) {
6578
6612
  return;
6579
6613
  }
6580
- if (state !== _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Publishing) {
6614
+ if (state !== _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Publishing) {
6581
6615
  return;
6582
6616
  }
6583
6617
  _this._publisherContext.clearFailureCountTimeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_4__["default"].value.setTimeout(function () {
@@ -6590,7 +6624,7 @@ var Publisher = /*#__PURE__*/function () {
6590
6624
  }
6591
6625
  };
6592
6626
  _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_4__["default"].value.addWindowEventListener('beforeunload', destroyStreamOnUnmount);
6593
- this._publisherContext.publisherDisposables.add(new _lang_Disposable__WEBPACK_IMPORTED_MODULE_12__["default"](function () {
6627
+ this._publisherContext.publisherDisposables.add(new _lang_Disposable__WEBPACK_IMPORTED_MODULE_11__["default"](function () {
6594
6628
  _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_4__["default"].value.removeWindowEventListener('beforeunload', destroyStreamOnUnmount);
6595
6629
  }));
6596
6630
  this.start();
@@ -6604,11 +6638,11 @@ var Publisher = /*#__PURE__*/function () {
6604
6638
  this._publisherContext.disposables.dispose();
6605
6639
  this._tokenContext.token.value = token;
6606
6640
  this._tokenContext.tokenExpiring.value = false;
6607
- var edgeToken = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_14__["default"].parseToken(this._tokenContext.token.value);
6641
+ var edgeToken = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_13__["default"].parseToken(this._tokenContext.token.value);
6608
6642
  var discoveryUri = (edgeToken.uri || _SDK__WEBPACK_IMPORTED_MODULE_8__["default"].discoveryUri.value).toString();
6609
6643
  _SDK__WEBPACK_IMPORTED_MODULE_8__["default"].tenancy.value = edgeToken.tenancy || _SDK__WEBPACK_IMPORTED_MODULE_8__["default"].tenancy.value;
6610
- _discovery_DiscoveryUri__WEBPACK_IMPORTED_MODULE_20__["default"].uri.value = discoveryUri;
6611
- this._metricsService = _metrics_MetricsFactory__WEBPACK_IMPORTED_MODULE_21__["default"].getMetricsService(discoveryUri);
6644
+ _discovery_DiscoveryUri__WEBPACK_IMPORTED_MODULE_19__["default"].uri.value = discoveryUri;
6645
+ this._metricsService = _metrics_MetricsFactory__WEBPACK_IMPORTED_MODULE_20__["default"].getMetricsService(discoveryUri);
6612
6646
  this.start();
6613
6647
  }
6614
6648
  }, {
@@ -6723,7 +6757,7 @@ var Publisher = /*#__PURE__*/function () {
6723
6757
  this._peerConnectionContext.peerConnection.value.close();
6724
6758
  this._peerConnectionContext.peerConnection.value = null;
6725
6759
  }
6726
- this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Stopped;
6760
+ this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Stopped;
6727
6761
  }
6728
6762
  }, {
6729
6763
  key: "dispose",
@@ -6748,7 +6782,7 @@ var Publisher = /*#__PURE__*/function () {
6748
6782
  }, {
6749
6783
  key: "getUri",
6750
6784
  value: function getUri(token) {
6751
- var url = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_14__["default"].parseToken(token).uri;
6785
+ var url = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_13__["default"].parseToken(token).uri;
6752
6786
  if (url) {
6753
6787
  return url;
6754
6788
  }
@@ -6794,16 +6828,16 @@ var Publisher = /*#__PURE__*/function () {
6794
6828
  return _regenerator().w(function (_context4) {
6795
6829
  while (1) switch (_context4.n) {
6796
6830
  case 0:
6797
- this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Starting;
6831
+ this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Starting;
6798
6832
  this.cleanUpResources('client:start');
6799
6833
  token = this._tokenContext.token.value;
6800
6834
  listenOnStreamSetup = this._sessionTelemetry.listenOnStreamSetup();
6801
- if (_edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_14__["default"].isEncodedEdgeTokenValid(token)) {
6835
+ if (_edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_13__["default"].isEncodedEdgeTokenValid(token)) {
6802
6836
  _context4.n = 1;
6803
6837
  break;
6804
6838
  }
6805
6839
  this._logger.error('Failed to parse token [%s]', token);
6806
- this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Unauthorized;
6840
+ this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Unauthorized;
6807
6841
  this._publisherContext.authorized.value = false;
6808
6842
  this._stateContext.isStarting.value = false;
6809
6843
  return _context4.a(2);
@@ -6811,8 +6845,8 @@ var Publisher = /*#__PURE__*/function () {
6811
6845
  this._publisherContext.loading.value = true;
6812
6846
  uri = this.getUri(token);
6813
6847
  this._publisherContext.disposables.add(this._publisherContext.state.subscribe(function (state) {
6814
- if (state === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Error || state === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Recovering) {
6815
- _discovery_Discovery__WEBPACK_IMPORTED_MODULE_19__["default"].clearCachedClosestEndpoint(uri);
6848
+ if (state === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Error || state === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Recovering) {
6849
+ _discovery_Discovery__WEBPACK_IMPORTED_MODULE_18__["default"].clearCachedClosestEndpoint(uri);
6816
6850
  }
6817
6851
  }));
6818
6852
  handleStreamFailureCallback = function handleStreamFailureCallback() {
@@ -6822,7 +6856,7 @@ var Publisher = /*#__PURE__*/function () {
6822
6856
  return resolve(_this4.handleStreamFailure());
6823
6857
  });
6824
6858
  };
6825
- streamPublisher = new _RealTimePublisher__WEBPACK_IMPORTED_MODULE_22__["default"](this._publisherContext, this._peerConnectionContext, handleStreamFailureCallback);
6859
+ streamPublisher = new _RealTimePublisher__WEBPACK_IMPORTED_MODULE_21__["default"](this._publisherContext, this._peerConnectionContext, handleStreamFailureCallback);
6826
6860
  return _context4.a(2, streamPublisher.start(uri, token, listenOnStreamSetup).then(function () {
6827
6861
  _this4._publisherContext.loading.value = false;
6828
6862
  }).catch(function (e) {
@@ -6830,11 +6864,11 @@ var Publisher = /*#__PURE__*/function () {
6830
6864
  _this4._publisherContext.failureCount.value++;
6831
6865
  _this4._publisherContext.online.value = false;
6832
6866
  _this4.cleanUpResources('client:cleanup-after-failed-setup');
6833
- _this4._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].ClientStartError;
6867
+ _this4._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].ClientStartError;
6834
6868
  _this4._logger.error('Failed to start publishing', e);
6835
6869
  }).finally(function () {
6836
6870
  _this4._stateContext.isStarting.value = false;
6837
- if (_this4._publisherContext.state.value === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Publishing || !_SDK__WEBPACK_IMPORTED_MODULE_8__["default"].automaticRetryOnFailure) {
6871
+ if (_this4._publisherContext.state.value === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Publishing || !_SDK__WEBPACK_IMPORTED_MODULE_8__["default"].automaticRetryOnFailure) {
6838
6872
  _this4._publisherContext.startReconnectionAttemptsTimeInMilliseconds = 0;
6839
6873
  return;
6840
6874
  }
@@ -6843,7 +6877,7 @@ var Publisher = /*#__PURE__*/function () {
6843
6877
  _this4._logger.error('Failed handling stream failure', e);
6844
6878
  });
6845
6879
  }, _this4.getRetryInterval());
6846
- _this4._publisherContext.disposables.add(new _lang_Disposable__WEBPACK_IMPORTED_MODULE_12__["default"](function () {
6880
+ _this4._publisherContext.disposables.add(new _lang_Disposable__WEBPACK_IMPORTED_MODULE_11__["default"](function () {
6847
6881
  _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_4__["default"].value.clearTimeout(timeoutId);
6848
6882
  }));
6849
6883
  }));
@@ -6876,28 +6910,28 @@ var Publisher = /*#__PURE__*/function () {
6876
6910
  key: "getRetryInterval",
6877
6911
  value: function getRetryInterval() {
6878
6912
  switch (this._publisherContext.state.value) {
6879
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Offline:
6913
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Offline:
6880
6914
  return standbyPollingIntervalInMilliseconds;
6881
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Initializing:
6882
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].NotFound:
6883
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Error:
6884
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Recovering:
6885
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Unauthorized:
6886
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].GeoRestricted:
6887
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].GeoBlocked:
6888
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Stopped:
6889
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Starting:
6890
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Publishing:
6891
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Reconnecting:
6892
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].UnsupportedFeature:
6893
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].ConfigurationError:
6894
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].TransientConfigurationError:
6895
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].ConnectionError:
6896
- case _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].ClientStartError:
6915
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Initializing:
6916
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].NotFound:
6917
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Error:
6918
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Recovering:
6919
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Unauthorized:
6920
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].GeoRestricted:
6921
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].GeoBlocked:
6922
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Stopped:
6923
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Starting:
6924
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Publishing:
6925
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Reconnecting:
6926
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].UnsupportedFeature:
6927
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].ConfigurationError:
6928
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].TransientConfigurationError:
6929
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].ConnectionError:
6930
+ case _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].ClientStartError:
6897
6931
  // First and second attempt fast, after that exponential with backoff interval
6898
6932
  return this._exponentialBackoff.getExponentialBackoffIntervalByFailureCount(this._publisherContext.failureCount.value);
6899
6933
  default:
6900
- (0,_lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_11__["default"])(this._publisherContext.state.value);
6934
+ (0,_lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_10__["default"])(this._publisherContext.state.value);
6901
6935
  }
6902
6936
  }
6903
6937
  }, {
@@ -6910,7 +6944,7 @@ var Publisher = /*#__PURE__*/function () {
6910
6944
  case 0:
6911
6945
  reconnectingAttemptsInterval = 0;
6912
6946
  _t = this._publisherContext.state.value;
6913
- _context5.n = _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Error ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Reconnecting ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Offline ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Recovering ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].TransientConfigurationError ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].ConnectionError ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].ClientStartError ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Unauthorized ? 3 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].GeoRestricted ? 4 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].GeoBlocked ? 5 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Stopped ? 6 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Publishing ? 7 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Initializing ? 8 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].Starting ? 9 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].UnsupportedFeature ? 10 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].NotFound ? 11 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"].ConfigurationError ? 12 : 13;
6947
+ _context5.n = _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Error ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Reconnecting ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Offline ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Recovering ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].TransientConfigurationError ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].ConnectionError ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].ClientStartError ? 1 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Unauthorized ? 3 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].GeoRestricted ? 4 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].GeoBlocked ? 5 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Stopped ? 6 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Publishing ? 7 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Initializing ? 8 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].Starting ? 9 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].UnsupportedFeature ? 10 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].NotFound ? 11 : _t === _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"].ConfigurationError ? 12 : 13;
6914
6948
  break;
6915
6949
  case 1:
6916
6950
  if (!this._publisherContext.startReconnectionAttemptsTimeInMilliseconds) {
@@ -6921,10 +6955,10 @@ var Publisher = /*#__PURE__*/function () {
6921
6955
  _context5.n = 2;
6922
6956
  break;
6923
6957
  }
6924
- this._logger.info('Publisher stopped with state [%s] [%s] after exceeding timeout', this._publisherContext.state.value, _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"][this._publisherContext.state.value]);
6958
+ this._logger.info('Publisher stopped with state [%s] [%s] after exceeding timeout', this._publisherContext.state.value, _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"][this._publisherContext.state.value]);
6925
6959
  return _context5.a(2);
6926
6960
  case 2:
6927
- this._logger.info('Retry start with initial state [%s] [%s]', this._publisherContext.state.value, _PublisherState__WEBPACK_IMPORTED_MODULE_10__["default"][this._publisherContext.state.value]);
6961
+ this._logger.info('Retry start with initial state [%s] [%s]', this._publisherContext.state.value, _PublisherState__WEBPACK_IMPORTED_MODULE_9__["default"][this._publisherContext.state.value]);
6928
6962
  return _context5.a(3, 14);
6929
6963
  case 3:
6930
6964
  this._logger.info('Publisher is unauthorized, skipping retry of start. Please provide a new token and invoke start()');
@@ -6957,7 +6991,7 @@ var Publisher = /*#__PURE__*/function () {
6957
6991
  this._logger.info('Publisher is stopped due to configuration error, skipping retry of start.');
6958
6992
  return _context5.a(2);
6959
6993
  case 13:
6960
- (0,_lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_11__["default"])(this._publisherContext.state.value);
6994
+ (0,_lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_10__["default"])(this._publisherContext.state.value);
6961
6995
  case 14:
6962
6996
  return _context5.a(2, this.start());
6963
6997
  }
@@ -6974,15 +7008,7 @@ var Publisher = /*#__PURE__*/function () {
6974
7008
  var _this6 = this;
6975
7009
  var reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultStreamTerminationReason;
6976
7010
  this._publisherContext.disposables.dispose();
6977
- var peerConnection = this._peerConnectionContext.peerConnection.value;
6978
- if (peerConnection) {
6979
- this._peerConnectionContext.peerConnection.value = null;
6980
- peerConnection.close();
6981
- peerConnection.dispose();
6982
- if (_SDK__WEBPACK_IMPORTED_MODULE_8__["default"].forceGarbageCollectionOnRestart && !(_environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_23__["default"].isMobile && _SDK__WEBPACK_IMPORTED_MODULE_8__["default"].skipGarbageCollectionOnMobileDevices)) {
6983
- _dom_GarbageCollectorManager__WEBPACK_IMPORTED_MODULE_9__["default"].forceGarbageCollection();
6984
- }
6985
- }
7011
+ this._peerConnectionContext.disposePeerConnection();
6986
7012
  this._publisherContext.publishing.value = false;
6987
7013
  this._publisherContext.stopped.value = true;
6988
7014
  this._publisherContext.standby.value = false;
@@ -7311,13 +7337,12 @@ var Publishers = /*#__PURE__*/function () {
7311
7337
  /* harmony import */ var _lang_Disposable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../lang/Disposable */ "./src/lang/Disposable.ts");
7312
7338
  /* harmony import */ var _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../logger/LoggerFactory */ "./src/logger/LoggerFactory.ts");
7313
7339
  /* harmony import */ var _SDK__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../SDK */ "./src/sdk/SDK.ts");
7314
- /* harmony import */ var _dom_GarbageCollectorManager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../dom/GarbageCollectorManager */ "./src/dom/GarbageCollectorManager.ts");
7315
- /* harmony import */ var _environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../environment/FeatureEnablement */ "./src/environment/FeatureEnablement.ts");
7316
- /* harmony import */ var _discovery_Discovery__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../discovery/Discovery */ "./src/sdk/discovery/Discovery.ts");
7317
- /* harmony import */ var _rtc_PeerConnectionService__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../rtc/PeerConnectionService */ "./src/rtc/PeerConnectionService.ts");
7318
- /* harmony import */ var _rtc_RtcPublishMonitor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../rtc/RtcPublishMonitor */ "./src/rtc/RtcPublishMonitor.ts");
7319
- /* harmony import */ var _rtc_RtcConfigurationManager__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../rtc/RtcConfigurationManager */ "./src/rtc/RtcConfigurationManager.ts");
7320
- /* harmony import */ var _PublisherState__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PublisherState */ "./src/sdk/publish/PublisherState.ts");
7340
+ /* harmony import */ var _environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../environment/FeatureEnablement */ "./src/environment/FeatureEnablement.ts");
7341
+ /* harmony import */ var _discovery_Discovery__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../discovery/Discovery */ "./src/sdk/discovery/Discovery.ts");
7342
+ /* harmony import */ var _rtc_PeerConnectionService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../rtc/PeerConnectionService */ "./src/rtc/PeerConnectionService.ts");
7343
+ /* harmony import */ var _rtc_RtcPublishMonitor__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../rtc/RtcPublishMonitor */ "./src/rtc/RtcPublishMonitor.ts");
7344
+ /* harmony import */ var _rtc_RtcConfigurationManager__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../rtc/RtcConfigurationManager */ "./src/rtc/RtcConfigurationManager.ts");
7345
+ /* harmony import */ var _PublisherState__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./PublisherState */ "./src/sdk/publish/PublisherState.ts");
7321
7346
  /* provided dependency */ var Promise = __webpack_require__(/*! ./src/promise/Promise */ "./src/promise/Promise.ts")["default"];
7322
7347
 
7323
7348
 
@@ -7343,7 +7368,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
7343
7368
 
7344
7369
 
7345
7370
 
7346
-
7347
7371
  var iceCandidateAccumulationInterval = 100;
7348
7372
  var softRestartInterval = 1000;
7349
7373
  var RealTimePublisher = /*#__PURE__*/function () {
@@ -7362,13 +7386,13 @@ var RealTimePublisher = /*#__PURE__*/function () {
7362
7386
  value: function start(uri, token, listenOnStreamSetup) {
7363
7387
  var _this = this;
7364
7388
  if (!_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.navigatorIsOnLine) {
7365
- this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Offline;
7389
+ this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Offline;
7366
7390
  return Promise.resolve();
7367
7391
  }
7368
7392
  var mediaStream = this._peerConnectionContext.mediaStream.value;
7369
7393
  if (!mediaStream) {
7370
7394
  this._logger.error('Publish failed no media stream provided');
7371
- this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].ConfigurationError;
7395
+ this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].ConfigurationError;
7372
7396
  return Promise.resolve();
7373
7397
  }
7374
7398
  var mediaTracks = mediaStream.getTracks();
@@ -7380,7 +7404,7 @@ var RealTimePublisher = /*#__PURE__*/function () {
7380
7404
  }
7381
7405
  return accumulator;
7382
7406
  }, []);
7383
- return Promise.all([_discovery_Discovery__WEBPACK_IMPORTED_MODULE_12__["default"].discoverClosestEndPointWithCaching(uri), _rtc_PeerConnectionService__WEBPACK_IMPORTED_MODULE_13__["default"].createPeerConnectionOffer('sendonly', trackKinds).then(function (_ref) {
7407
+ return Promise.all([_discovery_Discovery__WEBPACK_IMPORTED_MODULE_11__["default"].discoverClosestEndPointWithCaching(uri), _rtc_PeerConnectionService__WEBPACK_IMPORTED_MODULE_12__["default"].createPeerConnectionOffer('sendonly', trackKinds).then(function (_ref) {
7384
7408
  var localOffer = _ref.localOffer,
7385
7409
  peerConnection = _ref.peerConnection;
7386
7410
  _this._peerConnectionContext.peerConnection.value = peerConnection;
@@ -7398,13 +7422,8 @@ var RealTimePublisher = /*#__PURE__*/function () {
7398
7422
  _this._publisherContext.endPoint.value = endPoint;
7399
7423
  _this._logger.info('Connecting to [%s]', endPoint.toString());
7400
7424
  _this._logger.info('Local offer:\n' + localOffer.sdp);
7401
- if (_environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_11__["default"].clientOfferDisabled || !peerConnection.supportsSetConfiguration || !peerConnection.supportsGetConfiguration || _this._publisherContext.failureCount.value > 0) {
7402
- peerConnection.close();
7403
- peerConnection.dispose();
7404
- if (_SDK__WEBPACK_IMPORTED_MODULE_9__["default"].forceGarbageCollectionOnRestart && !(_environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_11__["default"].isMobile && _SDK__WEBPACK_IMPORTED_MODULE_9__["default"].skipGarbageCollectionOnMobileDevices)) {
7405
- _dom_GarbageCollectorManager__WEBPACK_IMPORTED_MODULE_10__["default"].forceGarbageCollection();
7406
- }
7407
- _this._peerConnectionContext.peerConnection.value = null;
7425
+ if (_environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_10__["default"].clientOfferDisabled || !peerConnection.supportsSetConfiguration || !peerConnection.supportsGetConfiguration || _this._publisherContext.failureCount.value > 0) {
7426
+ _this._peerConnectionContext.disposePeerConnection();
7408
7427
  return endPoint.publish(_this._publisherContext.name, token, null, _this._publisherContext.failureCount.value);
7409
7428
  }
7410
7429
  return endPoint.publish(_this._publisherContext.name, token, localOffer, _this._publisherContext.failureCount.value);
@@ -7490,7 +7509,7 @@ var RealTimePublisher = /*#__PURE__*/function () {
7490
7509
  return;
7491
7510
  }
7492
7511
  _this._logger.error('[%s] Failed to add ICE candidates', _this._publisherContext.streamId, e);
7493
- _this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].ConnectionError;
7512
+ _this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].ConnectionError;
7494
7513
  _this._publisherContext.applyUnhandledError();
7495
7514
  var ignored = _this._handleStreamFailure().catch(function (e) {
7496
7515
  _this._logger.error('[%s] Failed handling stream failure after peer connection failed to add ICE candidates', _this._publisherContext.streamId, e);
@@ -7509,7 +7528,7 @@ var RealTimePublisher = /*#__PURE__*/function () {
7509
7528
  var retryCallback = function retryCallback() {
7510
7529
  // If we stop normally the peer connection is unregistered first.
7511
7530
  // Thus anytime we see a closed peer connection that is still valid, it is an error.
7512
- _this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].ConnectionError;
7531
+ _this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].ConnectionError;
7513
7532
  _this._publisherContext.publishing.value = false;
7514
7533
  _this._publisherContext.loading.value = true;
7515
7534
  var ignored = _this._handleStreamFailure().catch(function (e) {
@@ -7593,12 +7612,12 @@ var RealTimePublisher = /*#__PURE__*/function () {
7593
7612
  }).then(function () {
7594
7613
  var _this$_publisherConte2;
7595
7614
  listenOnStreamSetup.success(_this._publisherContext.streamId);
7596
- if (_this._publisherContext.state.value !== _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Starting) {
7615
+ if (_this._publisherContext.state.value !== _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Starting) {
7597
7616
  return Promise.resolve();
7598
7617
  }
7599
- _this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Publishing;
7618
+ _this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Publishing;
7600
7619
  _this._publisherContext.publishing.value = true;
7601
- var rtcPublishMonitor = new _rtc_RtcPublishMonitor__WEBPACK_IMPORTED_MODULE_14__["default"](peerConnection, (_this$_publisherConte2 = _this._publisherContext.endPoint.value) !== null && _this$_publisherConte2 !== void 0 && _this$_publisherConte2.roundTripTime ? _this._publisherContext.endPoint.value.roundTripTime / 4 : 0, _SDK__WEBPACK_IMPORTED_MODULE_9__["default"].applicationActivityMonitor.isForeground);
7620
+ var rtcPublishMonitor = new _rtc_RtcPublishMonitor__WEBPACK_IMPORTED_MODULE_13__["default"](peerConnection, (_this$_publisherConte2 = _this._publisherContext.endPoint.value) !== null && _this$_publisherConte2 !== void 0 && _this$_publisherConte2.roundTripTime ? _this._publisherContext.endPoint.value.roundTripTime / 4 : 0, _SDK__WEBPACK_IMPORTED_MODULE_9__["default"].applicationActivityMonitor.isForeground);
7602
7621
  _this._publisherContext.disposables.add(rtcPublishMonitor);
7603
7622
  var ignored = rtcPublishMonitor.rtcStatistic.subscribe(function (statistics) {
7604
7623
  _this._publisherContext.rtcStatistics.value = statistics;
@@ -7620,7 +7639,7 @@ var RealTimePublisher = /*#__PURE__*/function () {
7620
7639
  _context.n = 1;
7621
7640
  break;
7622
7641
  }
7623
- rtcConfiguration = _rtc_RtcConfigurationManager__WEBPACK_IMPORTED_MODULE_15__["default"].truncateIceServers(rtcConfiguration);
7642
+ rtcConfiguration = _rtc_RtcConfigurationManager__WEBPACK_IMPORTED_MODULE_14__["default"].truncateIceServers(rtcConfiguration);
7624
7643
  return _context.a(2, _SDK__WEBPACK_IMPORTED_MODULE_9__["default"].peerConnectionFactory.value.createPeerConnection(rtcConfiguration));
7625
7644
  case 1:
7626
7645
  newRtcConfiguration = _objectSpread(_objectSpread({}, optionalPeerConnection.getConfiguration()), rtcConfiguration);
@@ -7641,12 +7660,12 @@ var RealTimePublisher = /*#__PURE__*/function () {
7641
7660
  if (peerConnection.iceConnectionState === 'closed') {
7642
7661
  return;
7643
7662
  }
7644
- this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Reconnecting;
7663
+ this._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Reconnecting;
7645
7664
  if (this._peerConnectionContext.peerConnectionReconnectAttempts < _SDK__WEBPACK_IMPORTED_MODULE_9__["default"].maximalNumberOfPeerConnectionReconnectAttempts || !_SDK__WEBPACK_IMPORTED_MODULE_9__["default"].automaticallyReconnectPeerConnection) {
7646
7665
  var _peerConnection$curre;
7647
7666
  this._peerConnectionContext.peerConnectionReconnectAttempts++;
7648
7667
  var isClientOfferFlow = ((_peerConnection$curre = peerConnection.currentLocalDescription) === null || _peerConnection$curre === void 0 ? void 0 : _peerConnection$curre.type) === 'offer';
7649
- if (_environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_11__["default"].clientOfferDisabled || !peerConnection.supportsSetConfiguration || !peerConnection.supportsGetConfiguration || !isClientOfferFlow) {
7668
+ if (_environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_10__["default"].clientOfferDisabled || !peerConnection.supportsSetConfiguration || !peerConnection.supportsGetConfiguration || !isClientOfferFlow) {
7650
7669
  var reconnectPeerConnectionTimeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.setTimeout(function () {
7651
7670
  _this2.reconnectPeerConnection(peerConnection, retryCallback);
7652
7671
  }, softRestartInterval);
@@ -7670,7 +7689,7 @@ var RealTimePublisher = /*#__PURE__*/function () {
7670
7689
  return _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(_reconnectPeerConnectionTimeout);
7671
7690
  }));
7672
7691
  } else {
7673
- _this2._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Publishing;
7692
+ _this2._publisherContext.state.value = _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Publishing;
7674
7693
  }
7675
7694
  });
7676
7695
  });
@@ -7690,17 +7709,17 @@ var RealTimePublisher = /*#__PURE__*/function () {
7690
7709
  value: function mapSetRemoteDescriptionStatusToPublisherStatus(status) {
7691
7710
  switch (status) {
7692
7711
  case 'ok':
7693
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Starting;
7712
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Starting;
7694
7713
  case 'unauthorized':
7695
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Unauthorized;
7714
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Unauthorized;
7696
7715
  case 'not-found':
7697
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].NotFound;
7716
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].NotFound;
7698
7717
  case 'capacity':
7699
7718
  case 'rate-limited':
7700
7719
  case 'timeout':
7701
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Recovering;
7720
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Recovering;
7702
7721
  case 'failed':
7703
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Error;
7722
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Error;
7704
7723
  default:
7705
7724
  (0,_lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_6__["default"])(status);
7706
7725
  }
@@ -7712,15 +7731,15 @@ var RealTimePublisher = /*#__PURE__*/function () {
7712
7731
  case 'ok':
7713
7732
  return this._publisherContext.state.value;
7714
7733
  case 'unauthorized':
7715
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Unauthorized;
7734
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Unauthorized;
7716
7735
  case 'not-found':
7717
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].NotFound;
7736
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].NotFound;
7718
7737
  case 'capacity':
7719
7738
  case 'rate-limited':
7720
7739
  case 'timeout':
7721
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Recovering;
7740
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Recovering;
7722
7741
  case 'failed':
7723
- return _PublisherState__WEBPACK_IMPORTED_MODULE_16__["default"].Error;
7742
+ return _PublisherState__WEBPACK_IMPORTED_MODULE_15__["default"].Error;
7724
7743
  default:
7725
7744
  (0,_lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_6__["default"])(status);
7726
7745
  }
@@ -7761,7 +7780,7 @@ var VersionManager = /*#__PURE__*/function () {
7761
7780
  key: "sdkVersion",
7762
7781
  get: function get() {
7763
7782
  try {
7764
- return "2026-06-18T23:32:52.868Z (2025.2.4-beta.612)";
7783
+ return "2026-06-23T22:33:37.874Z (2025.2.4-beta.613)";
7765
7784
  } catch (e) {
7766
7785
  return this._defaultVersion;
7767
7786
  }
@@ -8942,4 +8961,4 @@ __webpack_require__.r(__webpack_exports__);
8942
8961
  /******/ })()
8943
8962
  ;
8944
8963
  });
8945
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0EsRTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEEsd0Y7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdELEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBOztBQUV5QjtBQUNhO0FBQ1E7QUFLOUI7QUFHaEIsK0RBQWU7RUFDYjNpQyxHQUFHLEVBQUhBLDRDQUFHO0VBQ0g4N0IsVUFBVSxFQUFWQSxtREFBVTtFQUNWOUYsY0FBYyxFQUFkQSx1REFBY0E7QUFDaEIsQ0FBQyxFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vQnJvd3NlckRldGVjdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNQdWJsaXNoTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1NkcFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1JlYWRPbmx5U3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvU3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvU0RLLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvVGVsZW1ldHJ5VXJsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZU1vZGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVTdGF0ZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0VuZFBvaW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlckNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlclN0YXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9SZWFsVGltZVB1Ymxpc2hlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9TZXNzaW9uVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRoSG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlUmVzdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVNwcmVhZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG5jb25zdCB2aXNpYmlsaXR5Q2hhbmdlRXZlbnQgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRm9yZWdyb3VuZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBwcml2YXRlIF9sYXN0QmFja2dyb3VuZER1cmF0aW9uOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2lzRm9yZWdyb3VuZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kID0gbmV3IFJlYWRPbmx5U3ViamVjdCh0aGlzLl9pc0ZvcmVncm91bmQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9yZWdyb3VuZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpOiBNaWxsaXNlY29uZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGxldCBiYWNrZ3JvdW5kRW50cnlUaW1lOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc05vd0ZvcmVncm91bmQgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcblxuICAgICAgaWYgKCFpc05vd0ZvcmVncm91bmQpIHtcbiAgICAgICAgYmFja2dyb3VuZEVudHJ5VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChiYWNrZ3JvdW5kRW50cnlUaW1lKSB7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBEYXRlLm5vdygpIC0gYmFja2dyb3VuZEVudHJ5VGltZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gaXNOb3dGb3JlZ3JvdW5kO1xuICAgIH07XG5cbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIge1xuICBwdWJsaWMgc3RhdGljIGdldFN0cmluZ1ZhbHVlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lKSB8fFxuICAgICAgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclVSSVZhbHVlKGAke25hbWV9LXVyaS1wYXJhbWV0ZXItbmFtZWApIHx8XG4gICAgICBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnIHx8IHZhbHVlID09PSAnT24nO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlRnJvbVVyaSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZShgJHtuYW1lfS11cmktcGFyYW1ldGVyLW5hbWVgKTtcblxuICAgIGlmICh2YWx1ZUZyb21VcmkpIHtcbiAgICAgIHJldHVybiB2YWx1ZUZyb21VcmkgPT09ICd0cnVlJyB8fCB2YWx1ZUZyb21VcmkgPT09ICcxJyB8fCB2YWx1ZUZyb21VcmkgPT09ICdPbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldGFWYWx1ZSA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50UXVlcnlTZWxlY3RvcihgbWV0YVtuYW1lPScke25hbWV9J11gKTtcblxuICAgIGlmICghbWV0YVZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBtZXRhVmFsdWUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVVJJVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2YWx1ZVVSSVBhcmFtZXRlck5hbWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVmFsdWUobmFtZSk7XG5cbiAgICBpZiAoIXZhbHVlVVJJUGFyYW1ldGVyTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTFNlYXJjaFBhcmFtcyhHbG9iYWxTY29wZS52YWx1ZS5sb2NhdGlvblNlYXJjaCkuZ2V0KHZhbHVlVVJJUGFyYW1ldGVyTmFtZSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIHtcbiAgc3RhdGljIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSBHbG9iYWxTY29wZS52YWx1ZS5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uZG9jdW1lbnRDcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LkhUTUxWaWRlb0VsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZFxuICAgICAgJiYgKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19QQVJBTUVURVJTX186IHtcbiAgZGlzY292ZXJ5OiBJRGlzY292ZXJ5UGFyYW1ldGVyO1xufTtcblxuaW50ZXJmYWNlIElEaXNjb3ZlcnlQYXJhbWV0ZXJ7XG4gIGludGVudGlvbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIHByaXZhdGUgc3RhdGljIF9kaXNjb3ZlcnlQYXJhbWV0ZXJzOiBJRGlzY292ZXJ5UGFyYW1ldGVyIDtcblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhcmFtZXRlcnMoKTogSURpc2NvdmVyeVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gX19QQVJBTUVURVJTX187XG5cbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSAnZGlzY292ZXJ5JyBpbiBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy5kaXNjb3ZlcnkgOiB7aW50ZW50aW9uczogJyd9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSB7aW50ZW50aW9uczogJyd9O1xuICAgIH1cbiAgfVxufVxuXG5QYXJhbWV0ZXJzLmFwcGx5UGFyYW1ldGVycygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbnR5cGUgQnJvd3Nlckdsb2JhbFNjb3BlID0gSVByb3ZpZGVkR2xvYmFsU2NvcGU7XG5cbmNvbnN0IGJyb3dzZXJHbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlID0ge1xuICBkb2N1bWVudCxcbiAgbG9jYXRpb24sXG4gIG5hdmlnYXRvcixcbiAgd2luZG93XG59O1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2NvcGUgaW1wbGVtZW50cyBJR2xvYmFsU2NvcGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5zdGFuY2UgPSBuZXcgU3ViamVjdDxJR2xvYmFsU2NvcGU+KG5ldyBHbG9iYWxTY29wZShicm93c2VyR2xvYmFsU2NvcGUpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5zdGFuY2U6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+ID0gbmV3IFJlYWRPbmx5U3ViamVjdChHbG9iYWxTY29wZS5faW5zdGFuY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogSURvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhdGlvbjogSUxvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0b3I6IElOYXZpZ2F0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpbmRvdzogSVdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihnbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBnbG9iYWxTY29wZS5kb2N1bWVudDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IGdsb2JhbFNjb3BlLm5hdmlnYXRvcjtcbiAgICB0aGlzLl93aW5kb3cgPSBnbG9iYWxTY29wZS53aW5kb3c7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCB0byBtYWludGFpbiBBUEkgY29uc2lzdGVuY3kgd2l0aCBQcm92aWRlZEdsb2JhbFNjb3BlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2UocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBHbG9iYWxTY29wZScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWJzY3JpYmUoY2FsbGJhY2s6ICh2YWx1ZTogSUdsb2JhbFNjb3BlIHwgbnVsbCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2Uuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldCBGb3JtRGF0YSgpOiB0eXBlb2YgRm9ybURhdGEge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuRm9ybURhdGE7XG4gIH1cblxuICBnZXQgSFRNTFZpZGVvRWxlbWVudCgpOiB0eXBlb2YgSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5IVE1MVmlkZW9FbGVtZW50O1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtKCk6IHR5cGVvZiBNZWRpYVN0cmVhbSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbVRyYWNrKCk6IHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtVHJhY2s7XG4gIH1cblxuICBnZXQgTWVkaWFTb3VyY2UoKTogdHlwZW9mIE1lZGlhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU291cmNlO1xuICB9XG5cbiAgZ2V0IFJUQ1BlZXJDb25uZWN0aW9uKCk6IHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBSVENTZXNzaW9uRGVzY3JpcHRpb24oKTogdHlwZW9mIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENTZXNzaW9uRGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgUlRDSWNlQ2FuZGlkYXRlKCk6IHR5cGVvZiBSVENJY2VDYW5kaWRhdGUge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDSWNlQ2FuZGlkYXRlO1xuICB9XG5cbiAgZ2V0IFVSTCgpOiB0eXBlb2YgVVJMIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTDtcbiAgfVxuXG4gIGdldCBVUkxTZWFyY2hQYXJhbXMoKTogdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkxTZWFyY2hQYXJhbXM7XG4gIH1cblxuICBnZXQgYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBhZGRXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFySW50ZXJ2YWwoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFySW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFyVGltZW91dCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudENyZWF0ZUVsZW1lbnQoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50LmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SGFzRm9jdXMoKTogKCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Lmhhc0ZvY3VzLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZG9jdW1lbnQuaGlkZGVuO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50UXVlcnlTZWxlY3RvcigpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGZldGNoKCk6IChpbnB1dDogc3RyaW5nIHwgVVJMIHwgUmVxdWVzdCwgaW5pdD86IFJlcXVlc3RJbml0KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5mZXRjaC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgbG9jYXRpb25Ib3N0bmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5ob3N0bmFtZTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvblNlYXJjaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5zZWFyY2g7XG4gIH1cblxuICBnZXQgbmF2aWdhdG9yQ29ubmVjdGlvbigpOiBJTmV0d29ya0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLmNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgbmF2aWdhdG9ySXNPbkxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5vbkxpbmU7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvd1snX19waGVuaXhQYWdlTG9hZFRpbWUnXSB8fCB0aGlzLl93aW5kb3dbJ19fcGFnZUxvYWRUaW1lJ107XG4gIH1cblxuICBnZXQgcXVldWVNaWNyb3Rhc2soKTogKG1pY3JvdGFzazogKCkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5xdWV1ZU1pY3JvdGFzay5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTogKGNhbGxiYWNrOiBGcmFtZVJlcXVlc3RDYWxsYmFjaykgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRJbnRlcnZhbCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0VGltZW91dCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZGlzcG9zYWJsZTogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihkaXNwb3NhYmxlOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlID0gZGlzcG9zYWJsZTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3Bvc2FibGUuY2FsbCh0aGlzKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IElEaXNwb3NhYmxlW10gPSBbXTtcblxuICBhZGQoZGlzcG9zYWJsZTogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LnB1c2goZGlzcG9zYWJsZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QuZm9yRWFjaChkaXNwb3NhYmxlID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKTtcbiAgICB0aGlzLl9saXN0Lmxlbmd0aCA9IDA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRGlzcG9zYWJsZUxpc3RbZGlzcG9zYWJsZXM9JHt0aGlzLl9saXN0Lmxlbmd0aH1dYDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ3Mge1xuICBzdGF0aWMgcmFuZG9tKGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5kb20xM0NoYXJhY3RlcnMgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMiwgMTUpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb29wczogbnVtYmVyID0gTWF0aC5jZWlsKGxlbmd0aCAvIDEzKTtcblxuICAgIHJldHVybiBuZXcgQXJyYXkobG9vcHMpLmZpbGwocmFuZG9tMTNDaGFyYWN0ZXJzKS5yZWR1Y2UoKHN0cmluZywgZnVuYykgPT4ge1xuICAgICAgcmV0dXJuIHN0cmluZyArIGZ1bmMoKTtcbiAgICB9LCAnJykuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RyaW5ncyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4OiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIFske3h9XS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZGApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NlcnRVbnJlYWNoYWJsZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uc29sZUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxNZXNzYWdlID0gYCR7ZGF0ZS50b0lTT1N0cmluZygpfSBbJHtjYXRlZ29yeX1dIFske0xvZ2dpbmdMZXZlbFtsb2dMZXZlbF19XSAke21lc3NhZ2V9YDtcblxuICAgIGlmIChsb2dMZXZlbCA8IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICBjb25zb2xlLmxvZyhmdWxsTWVzc2FnZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGZ1bGxNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGVudW0gTG9nZ2luZ0xldmVsIHtcbiAgQWxsID0gLTEsXG4gIFRyYWNlID0gMTAsXG4gIERlYnVnID0gMjAsXG4gIEluZm8gPSAzMCxcbiAgV2FybiA9IDQwLFxuICBFcnJvciA9IDUwLFxuICBGYXRhbCA9IDYwLFxuICBPZmYgPSAxMDAsXG59XG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbFR5cGUgPSAnT2ZmJyB8ICdUcmFjZScgfCAnRGVidWcnIHwgJ0luZm8nIHwgJ1dhcm4nIHwgJ0Vycm9yJyB8ICdGYXRhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2F0ZWdvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwZW5kZXJzOiBBcHBlbmRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZDtcblxuICBnZXQgY2F0ZWdvcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnk7XG4gIH1cblxuICBnZXQgYXBwZW5kZXJzKCk6IEFwcGVuZGVycyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ1RocmVzaG9sZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHRyYWNlKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5UcmFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5UcmFjZSwgYXJncyk7XG4gIH1cblxuICBkZWJ1ZyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRGVidWcsIGFyZ3MpO1xuICB9XG5cbiAgaW5mbyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5JbmZvLCBhcmdzKTtcbiAgfVxuXG4gIHdhcm4oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuV2FybiwgYXJncyk7XG4gIH1cblxuICBlcnJvciguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRXJyb3IsIGFyZ3MpO1xuICB9XG5cbiAgZmF0YWwoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkZhdGFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkZhdGFsLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKGxldmVsOiBudW1iZXIsIGFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnJlcGxhY2VQbGFjZWhvbGRlcnMoYXJncyk7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMudmFsdWUuZm9yRWFjaCgoYXBwZW5kZXI6IElBcHBlbmRlcikgPT4ge1xuICAgICAgYXBwZW5kZXIubG9nKGxldmVsLCBtZXNzYWdlLCB0aGlzLmNhdGVnb3J5LCBkYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gYXJnc1swXTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZiAmJiBhcmdzLmxlbmd0aCA+IDEgJiYgaW5kZXggPj0gMCkge1xuICAgICAgaW5kZXggPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YoJyUnLCBpbmRleCk7XG5cbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSwgaW5kZXggKyAyKTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIC8vIEVzY2FwZWQgJyUlJyB0dXJucyBpbnRvICclJ1xuICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJyVkJyBvciAnJXMnIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJWonIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnN0cmluZ2lmeShhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGFyZ3MgPSBhcmdzLnJlZHVjZSgoYWNjdW11bGF0b3I6IHN0cmluZywgY3VycmVudFZhbHVlOiBzdHJpbmcgfCBFcnJvciwgaW5kZXg6IG51bWJlciwgYXJyYXk6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGlmIChpbmRleCArIDEgPT09IGFycmF5Lmxlbmd0aCAmJiBjdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5lcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5tZXNzYWdlKSArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgYFske3RoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlKX1dYDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FjaGU6IG9iamVjdFtdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhcmcgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMudG9TdHJpbmcoYXJnKSA6IGFyZyxcbiAgICAgICAgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICc8cmVjdXJzaXZlPic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhY2hlLnB1c2godmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJ1tvYmplY3QgaW52YWxpZCBKU09OLnN0cmluZ2lmeV0nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUFyZ3VtZW50KGFyZ3VtZW50OiBhbnksIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmc6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHRoaXMudG9TdHJpbmcoYXJndW1lbnQpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAyKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TdHJpbmcoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGRhdGEgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IHRvU3RyaW5nU3RyID0gJyc7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9ICdbb2JqZWN0IGludmFsaWQgdG9TdHJpbmcoKV0nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvU3RyaW5nU3RyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoY2F0ZWdvcnk6IHN0cmluZywgYXBwZW5kZXJzOiBBcHBlbmRlcnMsIHRocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCkge1xuICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gYXBwZW5kZXJzO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyLCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4vQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2Vyczoge1tjYXRlZ29yeTogc3RyaW5nXTogSUxvZ2dlcn0gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGVuZGVyczogQXBwZW5kZXJzID0gbmV3IEFwcGVuZGVycygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkID0gbmV3IExvZ2dpbmdUaHJlc2hvbGQoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBuZXcgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2dnZXIoY2F0ZWdvcnk6IHN0cmluZyk6IElMb2dnZXIge1xuICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjYXRlZ29yeSA9ICdTREsnO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV0gPSBuZXcgTG9nZ2VyKGNhdGVnb3J5LCB0aGlzLl9hcHBlbmRlcnMsIHRoaXMuX3RocmVzaG9sZCk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2luZ0xldmVsKCk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCdjb25zb2xlJywgTG9nZ2VyRmFjdG9yeS5hcHBseUNvbnNvbGVMb2dnZXIuYmluZCh0aGlzKSk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCd0ZWxlbWV0cnknLCBMb2dnZXJGYWN0b3J5LmFwcGx5VGVsZW1ldHJ5TG9nZ2VyLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlMb2dnaW5nTGV2ZWwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbG9nZ2luZy1sZXZlbCcpIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSkge1xuICAgICAgdGhpcy5fdGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKG5hbWU6IHN0cmluZywgYXBwbHlBcHBlbmRlcjogKGxldmVsOiBMb2dnaW5nTGV2ZWwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoYHBoZW5peC0ke25hbWV9LWxvZ2dpbmctbGV2ZWxgKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKHBhcmFtZXRlclZhbHVlID09PSAnT2ZmJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFwcGx5QXBwZW5kZXIoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUNvbnNvbGVMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlUZWxlbWV0cnlMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gbGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdMb2dnZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5Mb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShsb2dnaW5nTGV2ZWw6IExvZ2dpbmdMZXZlbCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsKSB7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLlRyYWNlOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkRlYnVnOlxuICAgICAgICByZXR1cm4gJ0RlYnVnJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkluZm86XG4gICAgICAgIHJldHVybiAnSW5mbyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5XYXJuOlxuICAgICAgICByZXR1cm4gJ1dhcm4nO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRXJyb3I6XG4gICAgICAgIHJldHVybiAnRXJyb3InO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRmF0YWw6XG4gICAgICAgIHJldHVybiAnRmF0YWwnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKGxvZ2dpbmdMZXZlbFR5cGU6IExvZ2dpbmdMZXZlbFR5cGUpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5PZmY7XG4gICAgICBjYXNlICdUcmFjZSc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuVHJhY2U7XG4gICAgICBjYXNlICdEZWJ1Zyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRGVidWc7XG4gICAgICBjYXNlICdJbmZvJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICAgICAgY2FzZSAnV2Fybic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuV2FybjtcbiAgICAgIGNhc2UgJ0Vycm9yJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5FcnJvcjtcbiAgICAgIGNhc2UgJ0ZhdGFsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5GYXRhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nVGhyZXNob2xkIHtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB2YWx1ZSgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXRUaHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNUeXBlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljczogTWV0cmljc1R5cGU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljczogTWV0cmljc1R5cGUpIHtcbiAgICB0aGlzLl9tZXRyaWNzID0gbWV0cmljcztcbiAgfVxuXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWV0cmljc1R5cGVbdGhpcy5fbWV0cmljc107XG4gIH1cblxuICBnZXRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0aGlzLl9tZXRyaWNzKSB7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlN0YWxsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkJ1ZmZlcmluZzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuTmV0d29ya1R5cGU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX21ldHJpY3MpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4vVGVsZW1ldHJ5RGVmYXVsdCc7XG5cbmV4cG9ydCBlbnVtIFRlbGVtZXRyeUxldmVsIHtcbiAgT2ZmID0gMTAwLFxuICBFc3NlbnRpYWwgPSAxMCxcbiAgQWxsID0gLTFcbn1cblxuZXhwb3J0IHR5cGUgVGVsZW1ldHJ5TGV2ZWxUeXBlID0gJ09mZicgfCAnRXNzZW50aWFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gIHByaXZhdGUgX3VybCA9ICdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeS9tZXRyaWNzJztcbiAgcHJpdmF0ZSBfdGVuYW5jeTogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCA9IFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IG1ldHJpY3NVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICBtZXRyaWNzVXJsLnBhdGhuYW1lID0gbWV0cmljc1VybC5wYXRobmFtZSArICcvbWV0cmljcyc7XG5cbiAgICB0aGlzLl91cmwgPSBtZXRyaWNzVXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuLi9zZGsvVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi9zZGsvRW52aXJvbm1lbnQnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZXM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IE1ldHJpY3NTZXJ2aWNlfSA9IHt9O1xuXG4gIHN0YXRpYyBnZXRNZXRyaWNzU2VydmljZSh1cmw6IHN0cmluZyk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdXJsIG11c3QgYmUgYSBzdHJpbmcgaW5zdGVhZCByZWNlaXZlZCBbJHt0eXBlb2YgdXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF07XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzKSB7XG4gICAgICByZXR1cm4gbWV0cmljc1NlcnZpY2VzO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbmV3IE1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodXJsKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChTREsudGVsZW1ldHJ5TGV2ZWwpO1xuXG4gICAgcmV0dXJuIE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXSA9IG5ldyBNZXRyaWNzU2VydmljZShtZXRyaWNzQ29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogdm9pZCB7XG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gT2JqZWN0LnZhbHVlcyhNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzKTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMgJiYgbWV0cmljc1NlcnZpY2VzLmxlbmd0aCkge1xuICAgICAgbWV0cmljc1NlcnZpY2VzLmZvckVhY2gobWV0cmljc1NlcnZpY2UgPT4ge1xuICAgICAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IHRlbGVtZXRyeUxldmVsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldHJpY3NGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuL01ldHJpY1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uIGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gMTAyNDtcbmNvbnN0IG1heEJ1ZmZlcmVkUmVjb3JkcyA9IDIwNDg7XG5cbmludGVyZmFjZSBJVmFsdWUge1xuICBzdHJpbmc/OiBzdHJpbmc7XG4gIHVpbnQ2ND86IG51bWJlcjtcbiAgZmxvYXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTWV0cmljUmVjb3JkIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWM6IHN0cmluZztcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNZXRyaWMge1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljVHlwZTogTWV0cmljc1R5cGU7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdNZXRyaWNzU2VydmljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIF9tZXRyaWNzOiBBcnJheTxJTWV0cmljUmVjb3JkPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IobWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWV0cmljc0NvbmZpZ3VyYXRpb24oKTogTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobWV0cmljOiBJTWV0cmljKTogdm9pZCB7XG4gICAgY29uc3Qge3N0cmVhbUlkLCB2YWx1ZSwgcHJldmlvdXNWYWx1ZSwgcnVudGltZSwgcmVzb3VyY2UsIGtpbmR9ID0gbWV0cmljO1xuICAgIGNvbnN0IG1ldHJpY1R5cGUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWMubWV0cmljVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID4gbWV0cmljVHlwZS5nZXRUZWxlbWV0cnlMZXZlbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpYzogbWV0cmljVHlwZS5nZXROYW1lKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIHJ1bnRpbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGtpbmRcbiAgICB9O1xuXG4gICAgdGhpcy5fbWV0cmljcy5wdXNoKG1ldHJpY1JlY29yZCk7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXM6IEFycmF5PElNZXRyaWNSZWNvcmQ+KTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IG1ldHJpY3NNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1ldHJpY3NNZXNzYWdlcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UoMCwgcmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICB0aGlzLl9tZXRyaWNzID0gdGhpcy5fbWV0cmljcy5zbGljZShyZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZShyZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IG1heEJ1ZmZlcmVkUmVjb3Jkcykge1xuICAgICAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCsrO1xuXG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9tZXRyaWNzID0gWy4uLm1ldHJpY3NNZXNzYWdlcywgLi4udGhpcy5fbWV0cmljc107XG5cbiAgICAgICAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgICAgICAgIH0sIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2ZhaWx1cmVDb3VudCkpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUb28gbWFueSBjYWNoZWQgbWV0cmljIHJlY29yZHMgWyVzXSwgZHJvcHBpbmcgWyVzXSByZWNvcmRzJywgdGhpcy5fbWV0cmljcy5sZW5ndGgsIG1ldHJpY3NNZXNzYWdlcy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCA9IDA7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUoe3N0YXR1c306IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eNVxcZHsyfSQvLnRlc3Qoc3RhdHVzLnRvU3RyaW5nKCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIE1ldHJpY3NUeXBlIHtcbiAgVGltZVRvRmlyc3RGcmFtZSxcbiAgQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgU3RhbGxlZCxcbiAgQnVmZmVyaW5nLFxuICBTZXR1cENvbXBsZXRlZCxcbiAgU2V0dXBGYWlsZWQsXG4gIFJvdW5kVHJpcFRpbWUsXG4gIERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LFxuICBOZXR3b3JrVHlwZSxcbiAgUmVzb2x1dGlvbkNoYW5nZWQsXG4gIEFwcGxpY2F0aW9uRm9yZWdyb3VuZCxcbiAgQXBwbGljYXRpb25CYWNrZ3JvdW5kXG59XG5cbmV4cG9ydCBkZWZhdWx0IE1ldHJpY3NUeXBlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbCkge1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsOlxuICAgICAgICByZXR1cm4gJ0Vzc2VudGlhbCc7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbFR5cGU6IFRlbGVtZXRyeUxldmVsVHlwZSk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLk9mZjtcbiAgICAgIGNhc2UgJ0Vzc2VudGlhbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeURlZmF1bHQge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsW0J1aWxkRmVhdHVyZXMuc2VuZE1ldHJpY3NdO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vLyBOb3RlOiBUaGlzIFByb21pc2UgcG9seWZpbGwgaXMgaW5jbHVkZWQgZm9yIGJyb3dzZXIgYnVpbGRzIG9ubHkgdG8gYWRkcmVzcyBjb21wYXRpYmlsaXR5IGlzc3Vlc1xuLy8gd2l0aCBvbGRlciBicm93c2VycyB3aG9zZSBuYXRpdmUgUHJvbWlzZTxUPmltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgLmZpbmFsbHkuXG5cbmltcG9ydCBQcm9taXNlSGFuZGxlciBmcm9tICcuL1Byb21pc2VIYW5kbGVyJztcblxuY2xhc3MgUHJvbWlzZTxUPiB7XG4gIF9zdGF0ZTogbnVtYmVyO1xuICBfaGFuZGxlZDogYm9vbGVhbjtcbiAgX3ZhbHVlOiBUIHwgdW5rbm93bjtcbiAgX2RlZmVycmVkczogQXJyYXk8UHJvbWlzZUhhbmRsZXI8VD4+O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgdGhlbihvbkZ1bGZpbGxlZDogRnVuY3Rpb24gfCBudWxsLCBvblJlamVjdGVkOiBGdW5jdGlvbiB8IG51bGwpOiBQcm9taXNlPFQ+fCB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZSA9IDA7XG4gICAgdGhpcy5faGFuZGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcblxuICAgIHRoaXMuZG9SZXNvbHZlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGRvUmVzb2x2ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBsZXQgZG9uZSA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNhbGxiYWNrKFxuICAgICAgICAodmFsdWU6IFByb21pc2U8VD58IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICAocmVhc29uOiBQcm9taXNlPFQ+fCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZWplY3QocmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIHRoaXMucHJvbWlzZVJlamVjdChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlc29sdmUobmV3VmFsdWU6IFByb21pc2U8VD58IG51bGwgfCB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTxUPjtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQcm9taXNlPFQ+UmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qcm9taXNlcy1hcGx1cy9Qcm9taXNlcy1zcGVjI3RoZS1Qcm9taXNlLXJlc29sdXRpb24tcHJvY2VkdXJlXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHByb21pc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQSBQcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0IHNlbGYuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZSAmJiAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIC8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciBuZXh0IGxpbmUgdG8gbm90IGRvIGV4dHJhIGlmIHN0YXRlbWVudHNcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHRoZW4gPSBuZXdWYWx1ZS50aGVuO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICBwcm9taXNlLl9zdGF0ZSA9IDM7XG4gICAgICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICBwcm9taXNlLmZpbmFsZSgpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcHJvbWlzZS5kb1Jlc29sdmUoZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgICAgICB0aGVuLmFwcGx5KG5ld1ZhbHVlLCBhcmd1bWVudHMgYXMgdW5rbm93biBhcyBbb25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbl0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByb21pc2UuX3N0YXRlID0gMTtcbiAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICBwcm9taXNlLmZpbmFsZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHByb21pc2UucHJvbWlzZVJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVqZWN0KG5ld1ZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAyO1xuICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5maW5hbGUoKTtcbiAgfVxuXG4gIGZpbmFsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09IDIgJiYgdGhpcy5fZGVmZXJyZWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9oYW5kbGVkKSB7XG4gICAgICAgICAgUHJvbWlzZS5fdW5oYW5kbGVkUmVqZWN0aW9uKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuX2RlZmVycmVkcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgdGhpcy5oYW5kbGUodGhpcy5fZGVmZXJyZWRzW2ldKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcbiAgfVxuXG4gIGhhbmRsZShkZWZlcnJlZDogUHJvbWlzZUhhbmRsZXI8VD4pOiB2b2lkIHtcbiAgICBsZXQgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTxUPjtcblxuICAgIHdoaWxlIChwcm9taXNlLl9zdGF0ZSA9PT0gMykge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UuX3ZhbHVlIGFzIFByb21pc2U8VD47XG4gICAgfVxuXG4gICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAwKSB7XG4gICAgICBwcm9taXNlLl9kZWZlcnJlZHMucHVzaChkZWZlcnJlZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9taXNlLl9oYW5kbGVkID0gdHJ1ZTtcbiAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSBwcm9taXNlLl9zdGF0ZSA9PT0gMSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQub25SZWplY3RlZDtcblxuICAgICAgaWYgKGNhbGxiYWNrID09PSBudWxsKSB7XG4gICAgICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMSkge1xuICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCByZXN1bHQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShyZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFsbChhcnI6IEFycmF5PFByb21pc2U8dW5rbm93bj4+KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLmFsbCBhY2NlcHRzIGFuIGFycmF5JykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKTtcblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xuICAgICAgY29uc3QgbWFuYWdlUmVzcG9uc2UgPSAoaTogbnVtYmVyLCB2YWx1ZTogUHJvbWlzZTx1bmtub3duPik6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICBjb25zdCB0aGVuID0gdmFsdWUudGhlbjtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAodmFsdWU6IFByb21pc2U8dW5rbm93bj4pID0+IG1hbmFnZVJlc3BvbnNlKGksIHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXJnc1tpXSA9IHZhbHVlO1xuXG4gICAgICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7XG4gICAgICAgICAgICByZXNvbHZlKGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbWFuYWdlUmVzcG9uc2UoaSwgYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcmVzb2x2ZSh2YWx1ZTogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4gcmVzb2x2ZSh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJlamVjdCh2YWx1ZTogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoXzogdW5kZWZpbmVkLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiByZWplY3QodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByYWNlKGFycjogQXJyYXk8UHJvbWlzZTx1bmtub3duPj4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UucmFjZSBhY2NlcHRzIGFuIGFycmF5JykpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZShhcnJbaV0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBfaW1tZWRpYXRlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGlnbm9yZWQgPSB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMCk7XG4gIH1cblxuICBzdGF0aWMgX3VuaGFuZGxlZFJlamVjdGlvbihlcnJvcjogUHJvbWlzZTx1bmtub3duPnwgbnVsbCB8IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOicsIGVycm9yKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59XG5cbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uKG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogdW5rbm93biB7XG4gIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XG59O1xuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWyd0aGVuJ10gPSBmdW5jdGlvbihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogUHJvbWlzZTx1bmtub3duPnwgdm9pZCB7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgoKTogbnVsbCA9PiBudWxsKTtcblxuICB0aGlzLmhhbmRsZShuZXcgUHJvbWlzZUhhbmRsZXI8dW5rbm93bj4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHByb21pc2UpKTtcblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ2ZpbmFsbHknXSA9IGZ1bmN0aW9uKGNhbGxiYWNrOiBGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj58IHZvaWQge1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgICh2YWx1ZTogUHJvbWlzZTx1bmtub3duPnwgdW5kZWZpbmVkKSA9PiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiB2YWx1ZSwgKCk6IG51bGwgPT4gbnVsbCksXG4gICAgKHJlYXNvbjogRXJyb3IgfCBzdHJpbmcpID0+IFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IFByb21pc2UucmVqZWN0KHJlYXNvbiksICgpOiBudWxsID0+IG51bGwpXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9taXNlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFByb21pc2UgZnJvbSAnLi9Qcm9taXNlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJvbWlzZUhhbmRsZXI8VD4ge1xuICBvbkZ1bGZpbGxlZDogRnVuY3Rpb24gfCBudWxsO1xuICBvblJlamVjdGVkOiBGdW5jdGlvbiB8IG51bGw7XG4gIHByb21pc2U6IFByb21pc2U8VD47XG5cbiAgY29uc3RydWN0b3Iob25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbiwgcHJvbWlzZTogUHJvbWlzZTxUPikge1xuICAgIHRoaXMub25GdWxmaWxsZWQgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IG51bGw7XG4gICAgdGhpcy5vblJlamVjdGVkID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdmdW5jdGlvbicgPyBvblJlamVjdGVkIDogbnVsbDtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcblxuZXhwb3J0IGludGVyZmFjZSBJUGVlckNvbm5lY3Rpb25PZmZlckluaXQge1xuICBhdWRpb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHZpZGVvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbjtcbiAgbG9jYWxPZmZlcjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuZXhwb3J0IGVudW0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIHtcbiAgRGlzYWJsZWQsXG4gIEVuYWJsZWRcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUcmFja0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10gPSBbJ2F1ZGlvJywgJ3ZpZGVvJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUGVlckNvbm5lY3Rpb25TZXJ2aWNlJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlZDoge1xuICAgIGRpcmVjdGlvbj86IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uO1xuICAgIHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD47XG4gIH0gfCBudWxsO1xuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1ByZWNhY2hpbmdFbmFibGVkKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IFBlZXJDb25uZWN0aW9uU2VydmljZS5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHJlLWNhY2hlIHBlZXIgY29ubmVjdGlvbiBvZmZlcicsIGUpKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKCk6IFByb21pc2U8eyBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQgfCB2b2lkPjsgZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiB9PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0ge1xuICAgICAgZGlyZWN0aW9uOiAncmVjdm9ubHknLFxuICAgICAgcGVlckNvbm5lY3Rpb246IFBlZXJDb25uZWN0aW9uU2VydmljZS5jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gPSAncmVjdm9ubHknLCB0cmFja0tpbmRzID0gZGVmYXVsdFRyYWNrS2luZHMsIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+IHtcbiAgICBpZiAoUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgJiYgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQuZGlyZWN0aW9uID09PSBkaXJlY3Rpb24gJiYgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zID09PSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQgJiYgdGhpcy5pc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCh0cmFja0tpbmRzKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5wZWVyQ29ubmVjdGlvbjtcblxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCA9IEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkID8ge2VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogZW5jb2RlZEluc2VydGFibGVTdHJlYW1zID09PSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRW5hYmxlZH0gOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbilcbiAgICAgIC50aGVuKGFzeW5jIHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydHNBZGRUcmFuc2NlaXZlciA9IHBlZXJDb25uZWN0aW9uLnN1cHBvcnRzQWRkVHJhbnNjZWl2ZXI7XG4gICAgICAgIGNvbnN0IGF1ZGlvVHJhbnNjZWl2ZXJzOiBSVENSdHBUcmFuc2NlaXZlcltdID0gW107XG4gICAgICAgIGNvbnN0IHZpZGVvVHJhbnNjZWl2ZXJzOiBSVENSdHBUcmFuc2NlaXZlcltdID0gW107XG5cbiAgICAgICAgaWYgKHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIpIHtcbiAgICAgICAgICB0cmFja0tpbmRzLmZvckVhY2goa2luZCA9PiB7XG4gICAgICAgICAgICBpZiAoa2luZCA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycy5wdXNoKHBlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKGtpbmQsIHtkaXJlY3Rpb259KSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycy5wdXNoKHBlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKGtpbmQsIHtkaXJlY3Rpb259KSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgICBsb2NhbE9mZmVyOiBhd2FpdCBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih1bmRlZmluZWQpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBkaXJlY3Rpb24gPT09ICdyZWN2b25seScgPyB7XG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlXG4gICAgICAgIH0gOiB7fTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICBsb2NhbE9mZmVyOiBhd2FpdCBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCh0cmFja3NLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHRyYWNrc0tpbmRzLmxlbmd0aCAhPT0gZGVmYXVsdFRyYWNrS2luZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnRUcmFja0tpbmRzID0gKGFycmF5OiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pID0+IGFycmF5LnJlZHVjZSgodHJhY2tLaW5kQ291bnQsIGtpbmQpID0+IHtcbiAgICAgIHRyYWNrS2luZENvdW50W2tpbmRdID0gKHRyYWNrS2luZENvdW50W2tpbmRdIHx8IDApICsgMTtcblxuICAgICAgcmV0dXJuIHRyYWNrS2luZENvdW50O1xuICAgIH0sIHtcbiAgICAgIGF1ZGlvOiAwLFxuICAgICAgdmlkZW86IDBcbiAgICB9KTtcbiAgICBjb25zdCBjb3VudGVkVHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyh0cmFja3NLaW5kcyk7XG4gICAgY29uc3QgY291bnRlZERlZmF1bHRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKGRlZmF1bHRUcmFja0tpbmRzKTtcblxuICAgIHJldHVybiBjb3VudGVkVHJhY2tLaW5kcy5hdWRpbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLmF1ZGlvICYmIGNvdW50ZWRUcmFja0tpbmRzLnZpZGVvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMudmlkZW87XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5QZWVyQ29ubmVjdGlvblNlcnZpY2UuaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIge1xuICBzdGF0aWMgdHJ1bmNhdGVJY2VTZXJ2ZXJzKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMjsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCB1cmwgPSBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF07XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIHVybHMucHVzaChjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgIHVybHM6IHVybHMsXG4gICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFNkcFBhcnNlciBmcm9tICcuL1NkcFBhcnNlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHtcbiAgW2tpbmQ6IHN0cmluZ106IElSdGNQdWJsaXNoU3RhdGlzdGljO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydCB7XG4gIHJlc3VsdDogKCkgPT4gSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW0gZXh0ZW5kcyBSVENTdGF0c1JlcG9ydCB7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZXM6ICgpID0+IHN0cmluZ1tdO1xuICBzdGF0OiAobmFtZTogc3RyaW5nKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y1B1Ymxpc2hTdGF0aXN0aWMge1xuICBsYXN0UGFja2V0U2VudFRpbWVzdGFtcD86IG51bWJlcjtcbiAgc3NyYzogc3RyaW5nO1xuICBtZWRpYVR5cGU6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGJpdHJhdGU/OiBudW1iZXI7XG4gIGJ5dGVzU2VudDogbnVtYmVyO1xuICBwYWNrZXRzU2VudDogbnVtYmVyO1xuICByZXRyYW5zbWl0dGVkQnl0ZXNTZW50PzogbnVtYmVyO1xuICBmaXJDb3VudD86IG51bWJlcjtcbiAgZnJhbWVIZWlnaHQ/OiBudW1iZXI7XG4gIGZyYW1lV2lkdGg/OiBudW1iZXI7XG4gIGZyYW1lc0VuY29kZWQ/OiBudW1iZXI7XG4gIGZyYW1lc1NlbnQ/OiBudW1iZXI7XG4gIGhlYWRlckJ5dGVzU2VudD86IG51bWJlcjtcbiAgaHVnZUZyYW1lc1NlbnQ/OiBudW1iZXI7XG4gIHBsaUNvdW50PzogbnVtYmVyO1xuICBxcFN1bT86IG51bWJlcjtcbiAgdG90YWxFbmNvZGVUaW1lPzogbnVtYmVyO1xuICB0b3RhbEVuY29kZWRCeXRlc1RhcmdldD86IG51bWJlcjtcbiAgY29kZWM6IHN0cmluZztcbiAgZnBzPzogbnVtYmVyO1xuICByb3VuZFRyaXBUaW1lOiBudW1iZXI7XG59XG5cbmNvbnN0IHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQgPSAxMDAwO1xuY29uc3QgZ2V0U3RhdHNUaW1lb3V0RHVyYXRpb24gPSA1MDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNQdWJsaXNoTW9uaXRvciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1J0Y1B1Ymxpc2hNb25pdG9yJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkVmlkZW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRBdWRpb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0Y1N0YXRpc3RpYzogU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWM+ID0gbmV3IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbDtcbiAgcHJpdmF0ZSBfaXNNb25pdG9yUnVubmluZyA9IHRydWU7XG4gIHByaXZhdGUgX3VwZGF0ZVRpbWVvdXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfbW9uaXRvckdlbmVyYXRpb24gPSAwO1xuICBwcml2YXRlIF9hdmFpbGFibGVUcmFja3M6IHtcbiAgICBhdWRpbzogYm9vbGVhbjtcbiAgICB2aWRlbzogYm9vbGVhbjtcbiAgfSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIGVzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlciwgaXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IHBlZXJDb25uZWN0aW9uO1xuICAgIHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUgPSBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uICYmIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8uc2RwICYmIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24/LnNkcCkge1xuICAgICAgY29uc3QgcGFyc2VkTG9jYWxEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb24uc2RwKTtcbiAgICAgIGNvbnN0IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyA9IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmF1ZGlvQ29kZWM7XG4gICAgICB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjID0gcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24udmlkZW9Db2RlYztcblxuICAgICAgdGhpcy5fYXZhaWxhYmxlVHJhY2tzID0ge1xuICAgICAgICBhdWRpbzogcGFyc2VkTG9jYWxEZXNjcmlwdGlvbi5pc0F1ZGlvVHJhY2tFbmFibGVkICYmIHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmlzQXVkaW9UcmFja0VuYWJsZWQsXG4gICAgICAgIHZpZGVvOiBwYXJzZWRMb2NhbERlc2NyaXB0aW9uLmlzVmlkZW9UcmFja0VuYWJsZWQgJiYgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uaXNWaWRlb1RyYWNrRW5hYmxlZFxuICAgICAgfTtcblxuICAgICAgbGV0IGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gdHJ1ZTtcblxuICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICBpc0ZvcmVncm91bmQuc3Vic2NyaWJlKGZvcmVncm91bmQgPT4ge1xuICAgICAgICAgIGlmIChpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjaykge1xuICAgICAgICAgICAgaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2sgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghZm9yZWdyb3VuZCB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEludmFsaWRhdGUgYW55IGluLWZsaWdodCBwb2xsIGZyb20gYmVmb3JlIHRoZSBmcmVlemVcbiAgICAgICAgICB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbisrO1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnUmVzdGFydGluZyBzdGF0cyBwb2xsaW5nIGFmdGVyIGZvcmVncm91bmQgdHJhbnNpdGlvbicpO1xuICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWMoKTogU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWM+IHtcbiAgICByZXR1cm4gdGhpcy5fcnRjU3RhdGlzdGljO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9uaXRvckdlbmVyYXRpb24rKztcbiAgICB0aGlzLl9pc01vbml0b3JSdW5uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG4gICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5nZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0ge1xuICAgICAgICBhdWRpbzogMCxcbiAgICAgICAgdmlkZW86IDBcbiAgICAgIH07XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBnZW5lcmF0aW9uID0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb247XG4gICAgLy8gU2FmYXJpIDExIGRvZXNudCBoYXZlIGtpbmQgb3IgbWVkaWFUeXBlIHNvIHdlIG5lZWQgdG8gdGFrZSBpdCBmcm9tIHRoZSBpbmJvdW5kLXJ0cCBvYmplY3QgaWRcbiAgICBjb25zdCBnZXRLaW5kRm9yU2FmYXJpMTEgPSAoaXRlbToge2lkOiBzdHJpbmd9KTogc3RyaW5nID0+IGl0ZW0uaWQuaW5jbHVkZXMoJ0F1ZGlvJykgPyAnYXVkaW8nIDogaXRlbS5pZC5pbmNsdWRlcygnVmlkZW8nKSA/ICd2aWRlbycgOiAnJztcbiAgICBsZXQgdGltZW91dEhhbmRsZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzUHJvbWlzZSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRTdGF0cyhudWxsKTtcblxuICAgICAgaWYgKCFzdGF0c1Byb21pc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lb3V0UHJvbWlzZSA9IG5ldyBQcm9taXNlPHVuZGVmaW5lZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIHRpbWVvdXRIYW5kbGUgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlc29sdmUodW5kZWZpbmVkKSwgZ2V0U3RhdHNUaW1lb3V0RHVyYXRpb24pO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IFByb21pc2UucmFjZShbc3RhdHNQcm9taXNlLCB0aW1lb3V0UHJvbWlzZV0pO1xuXG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXN0YXRzKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnZ2V0U3RhdHMoKSB0aW1lZCBvdXQsIHNraXBwaW5nIHN0YXRzIHByb2Nlc3NpbmcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyA9IHt9O1xuICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgIGxldCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIHN0YXRzLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdjYW5kaWRhdGUtcGFpcicgJiYgcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lKSB7XG4gICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1snYXVkaW8nXS5yb3VuZFRyaXBUaW1lID0gcm91bmRUcmlwVGltZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5yb3VuZFRyaXBUaW1lID0gcm91bmRUcmlwVGltZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdjYW5kaWRhdGUtcGFpcicgJiYgcmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wKSB7XG4gICAgICAgICAgICBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1snYXVkaW8nXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLmxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnb3V0Ym91bmQtcnRwJykge1xuICAgICAgICAgICAgY29uc3Qga2luZDogJ3ZpZGVvJyB8ICdhdWRpbycgfCB1bmRlZmluZWQgPSByZXBvcnQua2luZCB8fCByZXBvcnQubWVkaWFUeXBlIHx8IGdldEtpbmRGb3JTYWZhcmkxMShyZXBvcnQpO1xuICAgICAgICAgICAgbGV0IGNvZGVjID0gJyc7XG5cbiAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSByZXBvcnQuY29kZWNJZCkge1xuICAgICAgICAgICAgICAgIGNvZGVjID0gaXRlbS5taW1lVHlwZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChraW5kICYmIHRoaXMuX2F2YWlsYWJsZVRyYWNrcz8uW2tpbmRdKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gcmVwb3J0LmJ5dGVzU2VudCB8fCAwO1xuICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0J5dGVzU2VudCA9IHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy5ieXRlc1NlbnQgPz8gMDtcbiAgICAgICAgICAgICAgY29uc3QgYnl0ZXNEZWx0YSA9IGJ5dGVzIC0gcHJldmlvdXNCeXRlc1NlbnQ7XG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVEZWx0YSA9IHJlcG9ydC50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8udGltZXN0YW1wO1xuICAgICAgICAgICAgICBjb25zdCBiaXRyYXRlID0gYnl0ZXNEZWx0YSAmJiB0aW1lRGVsdGEgPyBNYXRoLmZsb29yKDggKiBieXRlc0RlbHRhIC9cbiAgICAgICAgICAgICAgICB0aW1lRGVsdGEgKiAxMDAwKSA6IDA7XG5cbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXSA9IHtcbiAgICAgICAgICAgICAgICBzc3JjOiByZXBvcnQuc3NyYyxcbiAgICAgICAgICAgICAgICBtZWRpYVR5cGU6IGtpbmQsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiByZXBvcnQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgIGJpdHJhdGUsXG4gICAgICAgICAgICAgICAgYnl0ZXNTZW50OiByZXBvcnQuYnl0ZXNTZW50LFxuICAgICAgICAgICAgICAgIHBhY2tldHNTZW50OiByZXBvcnQucGFja2V0c1NlbnQsXG4gICAgICAgICAgICAgICAgcmV0cmFuc21pdHRlZEJ5dGVzU2VudDogcmVwb3J0LnJldHJhbnNtaXR0ZWRCeXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgY29kZWM6IGNvZGVjIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUoa2luZCksXG4gICAgICAgICAgICAgICAgcm91bmRUcmlwVGltZVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGlmIChyZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdLmxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wIHx8IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmaXJDb3VudCddID0gcmVwb3J0LmZpckNvdW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lSGVpZ2h0J10gPSByZXBvcnQuZnJhbWVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVXaWR0aCddID0gcmVwb3J0LmZyYW1lV2lkdGg7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRW5jb2RlZCddID0gcmVwb3J0LmZyYW1lc0VuY29kZWQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzU2VudCddID0gcmVwb3J0LmZyYW1lc1NlbnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnaGVhZGVyQnl0ZXNTZW50J10gPSByZXBvcnQuaGVhZGVyQnl0ZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2h1Z2VGcmFtZXNTZW50J10gPSByZXBvcnQuaHVnZUZyYW1lc1NlbnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsncGxpQ291bnQnXSA9IHJlcG9ydC5wbGlDb3VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydxcFN1bSddID0gcmVwb3J0LnFwU3VtO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlVGltZSddID0gcmVwb3J0LnRvdGFsRW5jb2RlVGltZTtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWyd0b3RhbEVuY29kZWRCeXRlc1RhcmdldCddID0gcmVwb3J0LnRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8udmlkZW8/LmZyYW1lc0VuY29kZWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRW5jb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNFbmNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAgICAgKHJ0Y1N0YXRpc3RpY3Nba2luZF0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgICAgICAgICAgIDEwMDA7XG5cbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZwcyddID0gZnBzID8gTWF0aC5yb3VuZChmcHMgKiAxMDApIC8gMTAwIDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdnZXRTdGF0cygpIHJlamVjdGVkJywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgJiYgZ2VuZXJhdGlvbiA9PT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNkcFBhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NkcDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdWRpb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNWaWRlb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzZHA6IHN0cmluZykge1xuICAgIHRoaXMuX3NkcCA9IHNkcDtcblxuICAgIGNvbnN0IHNkcFNwbGl0QnlMaW5lcyA9IHRoaXMuX3NkcC5zcGxpdCgvKFxcclxcbnxcXHJ8XFxuKS8pO1xuICAgIGNvbnN0IHNkcFNwbGl0QnlUcmFja3MgPSB0aGlzLl9zZHAuc3BsaXQoLyg/Ol58W1xcclxcbl0pbT0vKTtcblxuICAgIHRoaXMuX2F1ZGlvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ2F1ZGlvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl92aWRlb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCd2aWRlbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ2F1ZGlvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gICAgdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ3ZpZGVvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gIH1cblxuICBnZXQgYXVkaW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb0NvZGVjO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9Db2RlYztcbiAgfVxuXG4gIGdldCBpc0F1ZGlvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzVmlkZW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzVHJhY2tCeVR5cGVFbmFibGVkKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeVRyYWNrczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBzZHBTZWN0aW9uRm9yVHlwZSA9IHNkcFNwbGl0QnlUcmFja3MuZmluZChzZHBUcmFjayA9PiBzZHBUcmFjay5zdGFydHNXaXRoKHR5cGUpKTtcblxuICAgIGlmICghc2RwU2VjdGlvbkZvclR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNkcFNlY3Rpb25Gb3JUeXBlLmluY2x1ZGVzKGBhPWluYWN0aXZlYCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29kZWModHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5TGluZXM6IHN0cmluZyBbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcnRtYXAgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYG09JHt0eXBlfWApKT8uc3BsaXQoJyAnKVszXSB8fCAnJztcbiAgICBjb25zdCB1c2VkQ29kZWNMaW5lID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBhPXJ0cG1hcDoke3J0bWFwfWApKTtcbiAgICBjb25zdCB1c2VkQ29kZWMgPSB1c2VkQ29kZWNMaW5lPy5zcGxpdCgnICcpWzFdIHx8ICcnO1xuICAgIGNvbnN0IGNvZGVjTmFtZSA9IHVzZWRDb2RlYy5zcGxpdCgnLycpWzBdO1xuXG4gICAgcmV0dXJuIGNvZGVjTmFtZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lMZWdhY3lSVENTdGF0c1JlcG9ydH0gZnJvbSAnLi9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5cbmNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdWYW5pbGxhUGVlckNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbikge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC53ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5SVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGdldCBuYXRpdmUoKTogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgY3VycmVudExvY2FsRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdGF0ZSgpOiBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBpY2VDb25uZWN0aW9uU3RhdGUoKTogUlRDSWNlQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5pY2VDb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uc2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldFRyYW5zY2VpdmVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmdldFRyYW5zY2VpdmVyc0Rpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0VHJhbnNjZWl2ZXJzID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5hZGRUcmFuc2NlaXZlciA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9mZmVyKG9wdGlvbnM/OiBSVENPZmZlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVPZmZlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVBbnN3ZXIob3B0aW9ucz86IFJUQ0Fuc3dlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVBbnN3ZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzQ3J5cHRvID0gZGVzY3JpcHRpb24uc2RwPy5tYXRjaCgvYT1jcnlwdG86L2kpO1xuXG4gICAgaWYgKGhhc0NyeXB0bykge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NEUCBhPWNyeXB0byBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgZ2V0U2VuZGVycygpOiBSVENSdHBTZW5kZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTZW5kZXJzKCk7XG4gIH1cblxuICBnZXRSZWNlaXZlcnMoKTogUlRDUnRwUmVjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgfVxuXG4gIGdldFN0YXRzKHNlbGVjdG9yPzogTWVkaWFTdHJlYW1UcmFjayB8IG51bGwpOiBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhzZWxlY3Rvcik7XG4gIH1cblxuICBnZXRTdGF0c0xlZ2FjeSgpOiBQcm9taXNlPElMZWdhY3lSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAvLyBJZ25vcmVkIGR1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgbGVnYWN5ICdnZXRTdGF0cycgbWV0aG9kIHR5cGUgZGVmaW5pdGlvblxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlICdnZXRTdGF0cycgbWV0aG9kIGZvclxuICAgICAgLy8gQ2hyb21lQDw9IDY2IGRldGFpbGVkIGhlcmU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYyNzgxNlxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRUcmFuc2NlaXZlcnMoKTogUlRDUnRwVHJhbnNjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKTtcbiAgfVxuXG4gIGFkZFRyYW5zY2VpdmVyKG5hbWU6IHN0cmluZywgb3B0aW9uczogUlRDUnRwVHJhbnNjZWl2ZXJJbml0KTogUlRDUnRwVHJhbnNjZWl2ZXIge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhZGRTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogdm9pZCB7XG4gICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhY2sodHJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc2V0IG9udHJhY2soaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbnRyYWNrKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjaztcbiAgfVxuXG4gIHNldCBvbmljZWNhbmRpZGF0ZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNhbmRpZGF0ZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlO1xuICB9XG5cbiAgc2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIHNldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY2xvc2UoKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbkZhY3Rvcnkge1xuICBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ocmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlKG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbikpO1xuICAgICAgICBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi9TdWJqZWN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhZE9ubHlTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3ViamVjdDogU3ViamVjdDxUPjtcblxuICBjb25zdHJ1Y3RvcihzdWJqZWN0OiBTdWJqZWN0PFQ+KSB7XG4gICAgdGhpcy5fc3ViamVjdCA9IHN1YmplY3Q7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3QudmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBUW10sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6ICgodmFsdWU6IFQpID0+IHZvaWQpW107XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLl9saXN0ZW5lcnNdKSB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPCh2YWx1ZTogVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgc3RhdGljIGdldEVudmlyb25tZW50RnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICAgIHJldHVybiBiYXNlVVJMLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSUdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQge0dsb2JhbFNjb3BlfSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi4vbG9nZ2VyL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgZnJvbSAnLi4vZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4uL3J0Yy9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4vVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL0Vudmlyb25tZW50JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQge1NoYWthUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVNoYWthUGxheWVyJztcbmltcG9ydCB7SGxzUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSUhsc1BsYXllcic7XG5pbXBvcnQge1dlYlBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lXZWJQbGF5ZXInO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcblxuY29uc3QgcGFnZUxvYWRUaW1lID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZT8ucGFnZUxvYWRUaW1lIHx8IERhdGUubm93KCk7XG5cbmludGVyZmFjZSBJSW5pdE9wdGlvbnMge1xuICBkaXNjb3ZlcnlVcmk/OiBzdHJpbmc7XG4gIHBlZXJDb25uZWN0aW9uRmFjdG9yeT86IElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIHRlbGVtZXRyeUxldmVsPzogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBjb25zb2xlTG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbT86IGJvb2xlYW47XG4gIGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlPzogYm9vbGVhbjtcbiAgd2ViUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBzaGFrYVBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBobHNKc0xvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0RLIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICBwcml2YXRlIHN0YXRpYyBfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICBwcml2YXRlIHN0YXRpYyBfd2ViUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYVBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9obHNKc0xvYWRlcjogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Vudmlyb25tZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeVVybDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSA4O1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5TGV2ZWw6IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+ID0gbmV3IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+KFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdChCdWlsZEZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdGVuYW5jeTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9jbGllbnRTZXNzaW9uSWQ6IHN0cmluZyA9IFN0cmluZ3MucmFuZG9tKDMyKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvYWRlZFRpbWVzdGFtcDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU0RLJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbml0aWFsaXplZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5pdGlhbGl6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4oU0RLLl9pbml0aWFsaXplZCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seURpc2NvdmVyeVVyaTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4oRGlzY292ZXJ5VXJpLnVyaSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5KTtcblxuICBzdGF0aWMgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogU3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbmFuY3koKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgY2xpZW50U2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNESy5fY2xpZW50U2Vzc2lvbklkO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2FkZWRUaW1lc3RhbXAoKTogRGF0ZSB7XG4gICAgcmV0dXJuIFNESy5fbG9hZGVkVGltZXN0YW1wO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbml0aWFsaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5SW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVVyaSgpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlEaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2ViUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYVBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBobHNKc0xvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9obHNKc0xvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWV0cmljc1NlcnZpY2UoKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIHJldHVybiBTREsuX21ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5VXJsKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbGVtZXRyeVVybDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzO1xuICB9XG5cbiAgc3RhdGljIHNldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKHJldHJpZXNBbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSByZXRyaWVzQW1vdW50O1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSh0aGlzLl9sb2dnZXIudGhyZXNob2xkLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyRGV0ZWN0b3IoKTogQnJvd3NlckRldGVjdG9yIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gTG9nZ2VyRmFjdG9yeS50ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lID0gU0RLLnBhZ2VMb2FkVGltZTtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlcikge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSBVUkwgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIgJiYgdGVuYW5jeSkge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSB0ZW5hbmN5IHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSk7XG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IFNESy5fbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1tZXRyaWNzLWxldmVsJykgYXMgVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbChUZWxlbWV0cnlMZXZlbFt2YWx1ZV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWRUZWxlbWV0cnlMZXZlbCA9IFNESy5fdGVsZW1ldHJ5TGV2ZWwuc3Vic2NyaWJlKHRlbGVtZXRyeUxldmVsID0+IHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuZGlzY292ZXJ5VXJpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsudGVsZW1ldHJ5VXJsLnZhbHVlID0gU0RLLmdldFRlbGVtZXRyeVVybCh2YWx1ZSk7XG4gICAgICBTREsuX2Vudmlyb25tZW50LnZhbHVlID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYW5uZWxUb2tlbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1jaGFubmVsLXRva2VuJyk7XG5cbiAgICBpZiAoY2hhbm5lbFRva2VuKSB7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKGNoYW5uZWxUb2tlbik7XG5cbiAgICAgIFNESy5fdGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5O1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVyaVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LXVyaScpO1xuXG4gICAgaWYgKHVyaVZhbHVlKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpVmFsdWU7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVSSVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWJhc2UtdXJpJyk7XG5cbiAgICBpZiAoYmFzZVVSSVZhbHVlKSB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU7XG4gICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKGJhc2VVUklWYWx1ZSk7XG5cbiAgICAgIHVyaS5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LWJhc2UtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBvbkxvYWQoZ2xvYmFsU2NvcGU6IElHbG9iYWxTY29wZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2luaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RLIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBnbG9iYWxTY29wZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCd1bmxvYWQnLCAoKSA9PiB7XG4gICAgICBTREsuZGlzcG9zZSgpO1xuICAgIH0pO1xuXG4gICAgU0RLLmFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG5ldyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHRoaXMuX2luaXRpYWxpemVkLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0KG9wdGlvbnM/OiBJSW5pdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGU6IElJbml0T3B0aW9ucyAmIHtnbG9iYWxTY29wZT86IElQcm92aWRlZEdsb2JhbFNjb3BlfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKSB7XG4gICAgICBHbG9iYWxTY29wZS5zZXRJbnN0YW5jZShvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2NvdmVyeVVyaSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IG9wdGlvbnMuZGlzY292ZXJ5VXJpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeSkge1xuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZSA9IG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnRlbGVtZXRyeUxldmVsICYmIFRlbGVtZXRyeUxldmVsW29wdGlvbnMudGVsZW1ldHJ5TGV2ZWxdKSB7XG4gICAgICBTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5sb2dnaW5nTGV2ZWxdKSB7XG4gICAgICB0aGlzLl9sb2dnZXIudGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5sb2dnaW5nTGV2ZWwpKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWxdKSB7XG4gICAgICBjb25zdCBjb25zb2xlQXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBDb25zb2xlQXBwZW5kZXIpO1xuXG4gICAgICBpZiAoY29uc29sZUFwcGVuZGVyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKGNvbnNvbGVBcHBlbmRlcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgIT09ICdPZmYnKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMud2ViUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl93ZWJQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLndlYlBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhsc0pzTG9hZGVyKSB7XG4gICAgICB0aGlzLl9obHNKc0xvYWRlciA9IG9wdGlvbnMuaGxzSnNMb2FkZXI7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgU0RLLl9pbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkdsb2JhbFNjb3BlLnN1YnNjcmliZShTREsub25Mb2FkLmJpbmQoU0RLKSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlVcmwge1xuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gYmFzZVVSTC5ob3N0bmFtZS5zcGxpdCgnLicpO1xuXG4gICAgICBzd2l0Y2ggKGJhc2VVUkwucHJvdG9jb2wpIHtcbiAgICAgICAgY2FzZSAnd3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHA6JztcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd3c3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHBzOic7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAyIHx8XG4gICAgICAgICAgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMyAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAyXS5sZW5ndGggPD0gMiAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5sZW5ndGggPD0gMylcbiAgICAgICkge1xuICAgICAgICBzZWdtZW50cy51bnNoaWZ0KCd0ZWxlbWV0cnknKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnc3RnLScpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctc3RnJykgfHwgc2VnbWVudHNbMF0uaW5jbHVkZXMoJy1zdGctJykgfHwgc2VnbWVudHNbMF0gPT09ICdzdGcnKSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeS1zdGcnO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdsb2NhbCcpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctbG9jYWwnKSkge1xuICAgICAgICAvLyBMZWF2ZSBVUkwgdW5jaGFuZ2VkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnknO1xuICAgICAgfVxuXG4gICAgICBiYXNlVVJMLmhvc3RuYW1lID0gc2VnbWVudHMuam9pbignLicpO1xuXG4gICAgICByZXR1cm4gYCR7YmFzZVVSTC5vcmlnaW59L3RlbGVtZXRyeWA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25Db250ZXh0IHtcbiAgbWVkaWFTdHJlYW06IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb246IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gbmV3IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlQ29udGV4dCB7XG4gIGlzU3RhcnRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGlzRGlzcG9zZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pc1N0YXJ0aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuaXNEaXNwb3NlZCA9IGZhbHNlO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuQ29udGV4dCB7XG4gIHRva2VuOiBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICB0b2tlbkV4cGlyaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+KHRva2VuKTtcbiAgICB0aGlzLnRva2VuRXhwaXJpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHREaXNjb3ZlcnlVcmkgPSAnaHR0cHM6Ly9wY2FzdC5waGVuaXhydHMuY29tL3BjYXN0L2VuZFBvaW50cyc7XG5cbmV4cG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlTW9kZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVNb2RlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUpOiBCaXRyYXRlTW9kZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZU1vZGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuTm9ybWFsOlxuICAgICAgICByZXR1cm4gJ05vcm1hbCc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLkZvcmNlOlxuICAgICAgICByZXR1cm4gJ0ZvcmNlJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZU1vZGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEVuZFBvaW50PihyZXNvbHZlRW5kUG9pbnRQcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgICAgICAudGhlbihyZXNvbHZlRW5kUG9pbnRQcm9taXNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaTogVVJMKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbmNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkucHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMjAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGlzY292ZXJ5Jyk7XG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfdXJpOiBVUkw7XG5cbiAgY29uc3RydWN0b3IodXJpOiBVUkwpIHtcbiAgICBpZiAoIXVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdXJpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZSh1cmkudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJOZWFyYnlFbmRQb2ludHModXJpOiBVUkwsIHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8RW5kUG9pbnRbXT4ge1xuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdGltZW91dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaXNjb3ZlcnkgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aW1lb3V0KSlcbiAgICBdKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5ib2R5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgd2l0aCBubyBkYXRhIFske3VybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNTdHJpbmcgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXNTdHJpbmcuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IG5ldyBFbmRQb2ludChlbmRQb2ludCwgdGltZW91dCkpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQodGltZW91dDogbnVtYmVyID0gZGVmYXVsdFRpbWVvdXQpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gRGlzY292ZXJ5VXJpLmJ1aWxkRGlzY292ZXJ5VXJsKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXdhaXQgdGhpcy5kaXNjb3Zlck5lYXJieUVuZFBvaW50cyhuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCksIHRpbWVvdXQpO1xuICAgIGxldCBmYWlsZWRSZXF1ZXN0cyA9IDA7XG4gICAgY29uc3QgcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZmFpbGVkUmVxdWVzdHMgPj0gZW5kUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWplY3QoYERpc2NvdmVyeSBvZiBbJHtlbmRQb2ludHMubGVuZ3RofV0gZW5kcG9pbnRzIGZyb20gWyR7dXJsfV0gZmFpbGVkLCBwcmV2ZW50aW5nIGl0IGZyb20gY29tcGxldGluZ2ApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gYXdhaXQgUHJvbWlzZS5yYWNlKGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gZW5kUG9pbnRcbiAgICAgIC5waW5nKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwaW5nIGVuZCBwb2ludCBbJXNdJywgZW5kUG9pbnQsIGUpO1xuXG4gICAgICAgIGZhaWxlZFJlcXVlc3RzKys7XG5cbiAgICAgICAgcmV0dXJuIHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4odGltZSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyZWQgZW5kIHBvaW50IFslc10gd2l0aCB0aW1lIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpLCB0aW1lKTtcbiAgICAgICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgICAgICBydW50aW1lOiAobm93IC0gU0RLLnBhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lIHx8IDB9LFxuICAgICAgICAgIHJlc291cmNlOiBlbmRQb2ludC50b1N0cmluZygpLFxuICAgICAgICAgIGtpbmQ6ICdwaW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQ7XG4gICAgICB9KSkpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmltcG9ydCB7XG4gIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UsXG4gIElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdFxufSBmcm9tICcuLi9hcGkvU3Vic2NyaWJlJztcbmltcG9ydCB7SVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCwgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9TZXRSZW1vdGVEZXNjcmlwdGlvbic7XG5pbXBvcnQge0lEZXN0cm95U3RyZWFtUmVxdWVzdCwgSURlc3Ryb3lTdHJlYW1SZXNwb25zZX0gZnJvbSAnLi4vYXBpL0Rlc3Ryb3lTdHJlYW0nO1xuaW1wb3J0IHtJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QsIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9BZGRJY2VDYW5kaWRhdGVzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlLCBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgQml0cmF0ZU1vZGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZU1vZGVNYXBwaW5nJztcbmltcG9ydCBCaXRyYXRlU3RhdGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZVN0YXRlTWFwcGluZyc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge1xuICBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnOiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB7XG4gIChyZXF1ZXN0OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB7XG4gIChyZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZU9wdGlvbnMgPSB7XG4gIG9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnbm90LWZvdW5kJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufTtcblxuaW50ZXJmYWNlIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXM7XG4gIHNlc3Npb25EZXNjcmlwdGlvbj86IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmludGVyZmFjZSBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cztcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cztcbn1cblxuaW50ZXJmYWNlIElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRQb2ludCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbmRQb2ludCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fdGltZW91dCA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIGdldCByb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGhpcy5fdGltZW91dCkpXG4gICAgXSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykgeyAvKiBIYW5kbGUgKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gZmluaXNoZWQgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyLCBvcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge30pOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgbGV0IHJlcXVlc3RCb2R5OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0O1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz8uKHJlcXVlc3RCb2R5KTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBTdWJzY3JpYmUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4ocmVzcG9uc2UpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIG5ldyBFcnJvcihgUHVibGlzaCB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBQdWJsaXNoU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHB1Ymxpc2ggcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtPy5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIG5ldyBFcnJvcihgU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgbGltaXRCaXRyYXRlKFxuICAgIHN0cmVhbTogSVN0cmVhbSxcbiAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcixcbiAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBCaXRzUGVyU2Vjb25kLFxuICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlLFxuICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSxcbiAgKTogUHJvbWlzZTxJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2JpdHJhdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlKSxcbiAgICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZU1hcHBpbmcuY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGUpXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIG5ldyBFcnJvcihgU2V0IGxpbWl0IGJpdHJhdGUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3Qgc2V0IGxpbWl0IGJpdHJhdGUgcmVzcG9uc2UgWyVzXSBpbiBbJXNdIG1zJywgc3RhdHVzLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiB7c3RhdHVzfTtcbiAgfVxuXG4gIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgbmV3IEVycm9yKGBBZGQgaWNlIGNhbmRpZGF0ZXMgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBzdHJlYW0nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtT25Vbm1vdW50KHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvcj8uc2VuZEJlYWNvbikge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwNjpcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTdWJzY3JpYmVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogRGVzdHJveVN0cmVhbVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlO1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0LFxuICAgICAgbGFnLFxuICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXRcbiAgICAgIH0sXG4gICAgICBsYWcsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9O1xuXG4gICAgaWYgKHJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZTtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5vcHRpb25zKSB7XG4gICAgICAgIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZS5vcHRpb25zID0gZGF0YS5vcHRpb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJRGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW06IElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y1B1Ymxpc2hNb25pdG9yJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuXG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IFRva2VuQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1Rva2VuQ29udGV4dCc7XG5pbXBvcnQgUHVibGlzaGVyQ29udGV4dCBmcm9tICcuL1B1Ymxpc2hlckNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFJlYWxUaW1lUHVibGlzaGVyIGZyb20gJy4vUmVhbFRpbWVQdWJsaXNoZXInO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuY29uc3QgZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uID0gJ2NsaWVudDp0ZXJtaW5hdGlvbic7XG5jb25zdCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDMwMDA7XG5jb25zdCBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAxNTAwMDtcbmNvbnN0IG9uZUhvdXJJbk1pbGxpc2Vjb25kcyA9IDM2MDAgKiAxMDAwO1xuY29uc3QgbWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMiAqIG9uZUhvdXJJbk1pbGxpc2Vjb25kcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUHVibGlzaGVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuQ29udGV4dDogVG9rZW5Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbjogUmVhZE9ubHlTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhdGU6IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW5FeHBpcmluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dGhvcml6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlPbmxpbmU6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMb2FkaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UHVibGlzaGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YW5kYnk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdG9wcGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RmFpbHVyZUNvdW50OiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFbmRQb2ludDogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RyZWFtOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJ0Y1N0YXRpc3RpY3M6IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuXG4gIGNvbnN0cnVjdG9yKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIG5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0ID0gbmV3IFB1Ymxpc2hlckNvbnRleHQobmFtZSk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gbmV3IFBlZXJDb25uZWN0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuX3N0YXRlQ29udGV4dCA9IG5ldyBTdGF0ZUNvbnRleHQoKTtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5fcHVibGlzaGVyU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbik7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YXRlID0gbmV3IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmF1dGhvcml6ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5T25saW5lID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlMb2FkaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UHVibGlzaGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YW5kYnkgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhbmRieSk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdG9wcGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0pO1xuICAgIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcyA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5ydGNTdGF0aXN0aWNzKTtcbiAgICB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbSk7XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcbiAgICB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5ID0gbmV3IFNlc3Npb25UZWxlbWV0cnkoU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlICE9PSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIH0sIGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzKTtcbiAgICAgIH0pKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCAnY2xpZW50OnRlcm1pbmF0aW9uLW9uLXdpbmRvdy11bmxvYWQnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgdG9rZW4oKTogRW5jb2RlZEVkZ2VUb2tlbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgfVxuXG4gIHNldCB0b2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHBlZXJDb25uZWN0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgc3RhdGUoKTogUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhdGU7XG4gIH1cblxuICBnZXQgdG9rZW5FeHBpcmluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmc7XG4gIH1cblxuICBnZXQgYXV0aG9yaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQ7XG4gIH1cblxuICBnZXQgb25saW5lKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5T25saW5lO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHB1Ymxpc2hpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQdWJsaXNoaW5nO1xuICB9XG5cbiAgZ2V0IHN0YW5kYnkoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGFuZGJ5O1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdG9wcGVkO1xuICB9XG5cbiAgZ2V0IGZhaWx1cmVDb3VudCgpOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50O1xuICB9XG5cbiAgZ2V0IGVuZFBvaW50KCk6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlFbmRQb2ludDtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RyZWFtO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQ7XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljcygpOiBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3M7XG4gIH1cblxuICBnZXQgbWVkaWFTdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcyhyZWFzb24pO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLmNsb3NlKCk7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9wKCdjbGllbnQ6Y2hhbm5lbC1kaXNwb3NlJykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFVyaSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IFVSTCB7XG4gICAgY29uc3QgdXJsID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudXJpO1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGRpc2NvdmVyIFVSSSBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHN0YXJ0Jyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1N0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpzdGFydCcpO1xuXG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJpKHRva2VuKTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IFB1Ymxpc2hlclN0YXRlLkVycm9yIHx8IHN0YXRlID09PSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUHVibGlzaGVyID0gbmV3IFJlYWxUaW1lUHVibGlzaGVyKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIHJldHVybiBzdHJlYW1QdWJsaXNoZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXApXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgcHVibGlzaGluZycsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZyB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gMDtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0TWVkaWFTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKG1lZGlhVHJhY2sgPT4ge1xuICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWU/LmdldFNlbmRlcnMoKS5mb3JFYWNoKHNlbmRlciA9PiB7XG4gICAgICAgICAgaWYgKG1lZGlhVHJhY2sua2luZCA9PT0gc2VuZGVyPy50cmFjaz8ua2luZCAmJiBtZWRpYVRyYWNrLmlkICE9PSBzZW5kZXIudHJhY2suaWQpIHtcbiAgICAgICAgICAgIHNlbmRlci5yZXBsYWNlVHJhY2sobWVkaWFUcmFjayk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmV0cnlJbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lOlxuICAgICAgICByZXR1cm4gc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwgPSAwO1xuXG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICBpZiAoIXRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsID0gRGF0ZS5ub3coKSAtIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcztcblxuICAgICAgICBpZiAobWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIDw9IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdIFslc10gYWZ0ZXIgZXhjZWVkaW5nIHRpbWVvdXQnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlLCBQdWJsaXNoZXJTdGF0ZVt0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUsIFB1Ymxpc2hlclN0YXRlW3RoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgcHVibGlzaGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBpbml0aWFsaXppbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gY2hhbm5lbCBub3QgZm91bmQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIGNvbmZpZ3VyYXRpb24gZXJyb3IsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlO1xuXG4gICAgaWYgKHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ICYmICEoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykpIHtcbiAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBFbmRQb2ludCwge1xuICBJU3RyZWFtLFxuICBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzLFxuICBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1xufSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuaW1wb3J0IHtQdWJsaXNoU3RhdHVzfSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlckNvbnRleHQge1xuICBwdWJsaXNoZXJJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBwdWJsaXNoZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHN0YXRlOiBTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPjtcbiAgYXV0aG9yaXplZDogU3ViamVjdDxib29sZWFuPjtcbiAgb25saW5lOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaXNoaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdGFuZGJ5OiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdG9wcGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG4gIHN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5wdWJsaXNoZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucHVibGlzaGVySW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4oUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnB1Ymxpc2hpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5zdHJlYW0gPSBuZXcgU3ViamVjdDxJU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5ydGNTdGF0aXN0aWNzID0gbmV3IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSAwO1xuICAgIHRoaXMubmFtZSA9IG5hbWUgJiYgbmFtZS5sZW5ndGggPyBuYW1lIDogdGhpcy5nZW5lcmF0ZVNjcmVlbk5hbWUoKTtcbiAgICB0aGlzLnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSAwO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1czogUHVibGlzaFN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXBwbHlVbmF1dGhvcml6ZWQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmFwcGx5Tm90Rm91bmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMoc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBtYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBQdWJsaXNoU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc6XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlVbmhhbmRsZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgYXBwbHlVbmF1dGhvcml6ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgYXBwbHlOb3RGb3VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlU2NyZWVuTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmdzLnJhbmRvbSgxMik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gUHVibGlzaGVyU3RhdGUge1xuICBJbml0aWFsaXppbmcgPSAwLFxuICBPZmZsaW5lID0gMSxcbiAgU3RhcnRpbmcgPSAyLFxuICBQdWJsaXNoaW5nID0gMyxcbiAgUmVjb3ZlcmluZyA9IDQsXG4gIFJlY29ubmVjdGluZyA9IDUsXG4gIFN0b3BwZWQgPSA2LFxuICBVbmF1dGhvcml6ZWQgPSA3LFxuICBHZW9SZXN0cmljdGVkID0gOCxcbiAgR2VvQmxvY2tlZCA9IDksXG4gIFVuc3VwcG9ydGVkRmVhdHVyZSA9IDEwLFxuICBOb3RGb3VuZCA9IDExLFxuICBDb25maWd1cmF0aW9uRXJyb3IgPSAxMixcbiAgVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIENvbm5lY3Rpb25FcnJvciA9IDE0LFxuICBDbGllbnRTdGFydEVycm9yID0gMTUsXG4gIEVycm9yID0gMTZcbn1cblxuZXhwb3J0IGRlZmF1bHQgUHVibGlzaGVyU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IFB1Ymxpc2hlciBmcm9tICcuL1B1Ymxpc2hlcic7XG5cbnR5cGUgQ3JlYXRlUHVibGlzaGVyT3B0aW9ucyA9IHtcbiAgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtO1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgbmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlcnMge1xuICBzdGF0aWMgY3JlYXRlUHVibGlzaGVyKG9wdGlvbnM6IENyZWF0ZVB1Ymxpc2hlck9wdGlvbnMpOiBQdWJsaXNoZXIge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHVibGlzaGVyKG9wdGlvbnMubWVkaWFTdHJlYW0sIG9wdGlvbnMudG9rZW4sIG9wdGlvbnMubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHVibGlzaGVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtBZGRJY2VDYW5kaWRhdGVzU3RhdHVzLCBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFJ0Y1B1Ymxpc2hNb25pdG9yIGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5cbmltcG9ydCBSdGNDb25maWd1cmF0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXInO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IFB1Ymxpc2hlckNvbnRleHQgZnJvbSAnLi9QdWJsaXNoZXJDb250ZXh0JztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBzb2Z0UmVzdGFydEludGVydmFsID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVQdWJsaXNoZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUmVhbFRpbWVQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG5cbiAgY29uc3RydWN0b3IocHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0ID0gcHVibGlzaGVyQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1B1Ymxpc2ggZmFpbGVkIG5vIG1lZGlhIHN0cmVhbSBwcm92aWRlZCcpO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhVHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCk7XG4gICAgY29uc3QgdHJhY2tLaW5kcyA9IG1lZGlhVHJhY2tzLnJlZHVjZSgoYWNjdW11bGF0b3I6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSwgdHJhY2spID0+IHtcbiAgICAgIGlmICh0cmFjay5raW5kID09PSAnYXVkaW8nIHx8IHRyYWNrLmtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgYWNjdW11bGF0b3IucHVzaCh0cmFjay5raW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFRyYWNrIGtpbmQgaXMgbm90IHN1cHBvcnRlZCcsIHRyYWNrLmtpbmQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcignc2VuZG9ubHknLCB0cmFja0tpbmRzKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA+IDApIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHJldHVybiBlbmRQb2ludC5wdWJsaXNoKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubmFtZSwgdG9rZW4sIG51bGwsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5wdWJsaXNoKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubmFtZSwgdG9rZW4sIGxvY2FsT2ZmZXIsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IHtzdGF0dXN9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAnWyVzXSBQdWJsaXNoIGZhaWxlZCB3aXRoIHN0YXR1cyBbJXNdJyxcbiAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBQdWJsaXNoIGNvbXBsZXRlZCBbJXNdIFslal0gWyVqXSBbJWpdIFslal0nLFxuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbiBhcyBSVENDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDogdW5kZWZpbmVkIHwgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZFN0cmVhbSh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgYXMgTWVkaWFTdHJlYW0pO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwQWRkSWNlQ2FuZGlkYXRlc1N0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIGZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgdHJ5aW5nIHRvIHJlY29ubmVjdCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHJldHJ5aW5nIHRvIGNvbm5lY3QnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSBhcyBuZXZlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24/LnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFuc3dlciA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgYW5zd2VyLnNkcCk7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgaWYgKCFlbmRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uLCBFbmRQb2ludCBpcyBub3Qgc2V0Jyk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbj8uc2RwKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2NyaXB0aW9uIGFzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuc3VjY2Vzcyh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZztcblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y1B1Ymxpc2hNb25pdG9yID0gbmV3IFJ0Y1B1Ymxpc2hNb25pdG9yKFxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU/LnJvdW5kVHJpcFRpbWUgPyB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlLnJvdW5kVHJpcFRpbWUgLyA0IDogMCxcbiAgICAgICAgICAgICAgICBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHJ0Y1B1Ymxpc2hNb25pdG9yKTtcblxuICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gcnRjUHVibGlzaE1vbml0b3IucnRjU3RhdGlzdGljLnN1YnNjcmliZShzdGF0aXN0aWNzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnJ0Y1N0YXRpc3RpY3MudmFsdWUgPSBzdGF0aXN0aWNzO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPCBTREsubWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyB8fCAhU0RLLmF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMrKztcblxuICAgICAgY29uc3QgaXNDbGllbnRPZmZlckZsb3cgPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8udHlwZSA9PT0gJ29mZmVyJztcblxuICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFpc0NsaWVudE9mZmVyRmxvd1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICB9LCBzb2Z0UmVzdGFydEludGVydmFsKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQocmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0KSkpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JlY29ubmVjdGluZyBwZWVyIGNvbm5lY3Rpb24gYnkgcmVzdGFydGluZyBJQ0UnKTtcblxuICAgICAgY29uc3QgY3VycmVudExvY2FsRGVzY3JpcHRpb24gPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih7aWNlUmVzdGFydDogdHJ1ZX0pLnRoZW4ob2ZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oY3VycmVudExvY2FsRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdkaXNjb25uZWN0ZWQnIHx8IHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0sIHNvZnRSZXN0YXJ0SW50ZXJ2YWwpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCkpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWU7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fQlVJTERfVkVSU0lPTl9fOiBzdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlcnNpb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlZmF1bHRWZXJzaW9uID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIHN0YXRpYyBnZXQgc2RrVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gX19CVUlMRF9WRVJTSU9OX187XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWZXJzaW9uO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeVNlcnZpY2UgZnJvbSAnLi9UZWxlbWV0cnlTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4vVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi4vbG9nZ2VyL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5U2VydmljZTogVGVsZW1ldHJ5U2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVuYW5jeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgY29uc3RydWN0b3IodGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3k7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQ7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQ7XG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZSA9IG5ldyBUZWxlbWV0cnlTZXJ2aWNlKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UucHVzaChsb2dMZXZlbCwgbWVzc2FnZSwgY2F0ZWdvcnksIGRhdGUpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTnVtYmVycyBmcm9tICcuLi9sYW5nL051bWJlcnMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSA4MTkyO1xuXG5pbnRlcmZhY2UgSUxvZ0l0ZW0ge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBsZXZlbDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSBfbG9nczogQXJyYXk8SUxvZ0l0ZW0+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBwdXNoKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgdGltZXN0YW1wOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVudGltZSA9ICh0aW1lc3RhbXAudmFsdWVPZigpIC0gdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsb2dSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcC50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgbGV2ZWw6IExvZ2dpbmdMZXZlbFtsb2dMZXZlbF0sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIHJ1bnRpbWVcbiAgICB9O1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dzLnB1c2gobG9nUmVjb3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9ncy51bnNoaWZ0KGxvZ1JlY29yZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3MobG9nTWVzc2FnZXM6IEFycmF5PElMb2dJdGVtPik6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbG9nTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbG9ncy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG51bWJlck9mTG9nc1RvU2VuZCA9IDA7XG4gICAgbGV0IHNpemVPZkxvZ3NUb1NlbmQgPSAwO1xuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGdldEl0ZW1TaXplID0gKGl0ZW06IG51bWJlciB8IHN0cmluZykgPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHVyYXRpb25zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHVyYXRpb246IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkdXJhdGlvbiA9IDApIHtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICB9XG5cbiAgdG9Jc29TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiAnUDBTJztcbiAgICB9XG5cbiAgICBjb25zdCBpc05lZ2F0aXZlID0gdGhpcy5fZHVyYXRpb24gPCAwO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gaXNOZWdhdGl2ZSA/IE1hdGguYWJzKHRoaXMuX2R1cmF0aW9uKSA6IHRoaXMuX2R1cmF0aW9uO1xuICAgIGxldCBvZmZzZXQgPSBNYXRoLmZsb29yKGR1cmF0aW9uKTtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBvZmZzZXQgJSAxMDAwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyAxMDAwKTtcblxuICAgIGNvbnN0IHNlY29uZHMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgbWludXRlcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBob3VycyA9IG9mZnNldCAlIDI0O1xuICAgIGNvbnN0IHBhcnRzID0gWydQVCddO1xuXG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy0nKTtcbiAgICB9XG5cbiAgICBpZiAoaG91cnMpIHtcbiAgICAgIHBhcnRzLnB1c2goaG91cnMgKyAnSCcpO1xuICAgIH1cblxuICAgIGlmIChtaW51dGVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKG1pbnV0ZXMgKyAnTScpO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmRzIHx8IG1pbGxpc2Vjb25kcykge1xuICAgICAgcGFydHMucHVzaChTdHJpbmcoc2Vjb25kcykpO1xuXG4gICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIHBhcnRzLnB1c2goJy4nICsgdGhpcy5wYWRTdGFydChtaWxsaXNlY29uZHMudG9TdHJpbmcoKSwgMywgJzAnKSk7XG4gICAgICB9XG5cbiAgICAgIHBhcnRzLnB1c2goJ1MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gIH1cblxuICBwYWRTdGFydChpdGVtOiBzdHJpbmcsIHRhcmdldExlbmd0aDogbnVtYmVyLCBwYWRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoID4+IDA7XG4gICAgcGFkU3RyaW5nID0gU3RyaW5nKCh0eXBlb2YgcGFkU3RyaW5nICE9PSAndW5kZWZpbmVkJyA/IHBhZFN0cmluZyA6ICcgJykpO1xuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoID4gdGFyZ2V0TGVuZ3RoKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggLSBpdGVtLmxlbmd0aDtcblxuICAgIGlmICh0YXJnZXRMZW5ndGggPiBwYWRTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBwYWRTdHJpbmcgKz0gcGFkU3RyaW5nLnJlcGVhdCh0YXJnZXRMZW5ndGggLyBwYWRTdHJpbmcubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFkU3RyaW5nLnNsaWNlKDAsIHRhcmdldExlbmd0aCkgKyBpdGVtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uVGVsZW1ldHJ5IEZhaWxlZDogTm8gYXBwbGljYXRpb24gbW9uaXRvciBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25ldHdvcmtNb25pdG9yLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoaXNGb3JlZ3JvdW5kID0+IHtcbiAgICAgIHRoaXMucmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IucnR0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3Rlbk9uU3RyZWFtU2V0dXAoKTogU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1TZXR1cExpc3RlbmVyKHRoaXMuX3BhZ2VMb2FkVGltZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RDaGFuZ2UgPSB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgaWYgKCF0aW1lU2luY2VMYXN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSA9IHJlcXVpcmUoXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIik7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBuLmxlbmd0aDsgcisrKSBvID0gbltyXSwgdC5pbmRleE9mKG8pID49IDAgfHwge30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBvKSAmJiAoaVtvXSA9IGVbb10pO1xuICB9XG4gIHJldHVybiBpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShyLCBlKSB7XG4gIGlmIChudWxsID09IHIpIHJldHVybiB7fTtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgbiBpbiByKSBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChyLCBuKSkge1xuICAgIGlmIChlLmluZGV4T2YobikgPj0gMCkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBQdWJsaXNoZXJzIGZyb20gJy4vUHVibGlzaGVycyc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5cbmV4cG9ydCB7XG4gIFNESyxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbiIsIl9sYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiYmFja2dyb3VuZEVudHJ5VGltZSIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc05vd0ZvcmVncm91bmQiLCJkb2N1bWVudElzSGlkZGVuIiwidXNlRXZlbnRDYXB0dXJlUGhhc2UiLCJhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJhZGQiLCJyZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJkZWZhdWx0IiwiQnJvd3NlckRldGVjdG9yIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIl9icm93c2VyTmFtZSIsIl9icm93c2VyTWFqb3JWZXJzaW9uIiwiX2lzQW5kcm9pZCIsIl9pc0Nocm9tZTY5IiwiX2lzQ2hyb21lNzAiLCJfaXNDaHJvbWU3MSIsIl9pc0Nocm9tZTcyIiwiX2lzQ2hyb21lNzQiLCJfaXNDaHJvbWU3NSIsIl9pc0Nocm9tZTc2IiwiX2lzQ2hyb21lNzciLCJpc01vYmlsZSIsIl9pc01vYmlsZSIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibWF0Y2giLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFIiwicGFyc2VCcm93c2VyTmFtZSIsImJyb3dzZXJOYW1lTGlzdCIsInNwbGl0IiwicGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uIiwiYnJvd3NlclZlcnNpb25MaXN0IiwiZnVsbFZlcnNpb24iLCJOdW1iZXIiLCJtc2llIiwiaW5kZXhPZiIsImNvbmNhdCIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwidHJpZGVudCIsInZlcnNpb24iLCJfQnJvd3NlckRldGVjdG9yIiwidGVzdCIsIl9uYXZpZ2F0b3IiLCJfbmF2aWdhdG9yMiIsImluY2x1ZGVzIiwiTG9nZ2VyRGVmYXVsdHMiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiVGVsZW1ldHJ5RGVmYXVsdCIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJyZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlIiwicmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZSIsImRlZmF1bHRTdHJpbmdWYWx1ZSIsImdldEJvb2xlYW5WYWx1ZSIsInZhbHVlRnJvbVVyaSIsImRlZmF1bHRCb29sZWFuVmFsdWUiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSIsImRlZmF1bHRUZWxlbWV0cnlMZXZlbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUiLCJkZWZhdWx0TG9nZ2luZ0xldmVsIiwiZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsIiwibWV0YVZhbHVlIiwiZG9jdW1lbnRRdWVyeVNlbGVjdG9yIiwiZ2V0QXR0cmlidXRlIiwidmFsdWVVUklQYXJhbWV0ZXJOYW1lIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb25TZWFyY2giLCJ1bmRlZmluZWQiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlJHZhbHVlMyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCIsImlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJQYXJhbWV0ZXJzIiwiX2Rpc2NvdmVyeVBhcmFtZXRlcnMiLCJhcHBseVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwiX19QQVJBTUVURVJTX18iLCJkaXNjb3ZlcnkiLCJpbnRlbnRpb25zIiwiYnJvd3Nlckdsb2JhbFNjb3BlIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsIndpbmRvdyIsImdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiX2xvY2F0aW9uIiwiX3dpbmRvdyIsIkZvcm1EYXRhIiwiTWVkaWFTdHJlYW0iLCJNZWRpYVN0cmVhbVRyYWNrIiwiTWVkaWFTb3VyY2UiLCJSVENQZWVyQ29ubmVjdGlvbiIsIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIlJUQ0ljZUNhbmRpZGF0ZSIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJjcmVhdGVFbGVtZW50IiwiaGFzRm9jdXMiLCJoaWRkZW4iLCJxdWVyeVNlbGVjdG9yIiwiZmV0Y2giLCJob3N0bmFtZSIsInNlYXJjaCIsImNvbm5lY3Rpb24iLCJvbkxpbmUiLCJzZXRJbnRlcnZhbCIsInNldEluc3RhbmNlIiwicHJvdmlkZWRHbG9iYWxTY29wZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsIl9pbnN0YW5jZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJkYXRhIiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJsb2dnZXIiLCJfbG9nZ2VycyIsImFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUxvZ2dpbmdMZXZlbCIsImFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwiLCJhcHBseUNvbnNvbGVMb2dnZXIiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwic2V0VGhyZXNob2xkIiwiYXBwbHlBcHBlbmRlciIsImxvZ2dpbmdMZXZlbCIsIk9mZiIsIkFsbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwiLCJsb2dnaW5nTGV2ZWxUeXBlIiwiVGVsZW1ldHJ5TGV2ZWwiLCJtZXRyaWNzIiwiX21ldHJpY3MiLCJnZXRUZWxlbWV0cnlMZXZlbCIsIlRpbWVUb0ZpcnN0RnJhbWUiLCJFc3NlbnRpYWwiLCJDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiU3RhbGxlZCIsIkJ1ZmZlcmluZyIsIlJvdW5kVHJpcFRpbWUiLCJEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIk5ldHdvcmtUeXBlIiwiUmVzb2x1dGlvbkNoYW5nZWQiLCJBcHBsaWNhdGlvbkZvcmVncm91bmQiLCJBcHBsaWNhdGlvbkJhY2tncm91bmQiLCJNZXRyaWNzQ29uZmlndXJhdGlvbiIsIl91cmwiLCJzZXQiLCJ1cmwiLCJtZXRyaWNzVXJsIiwicGF0aG5hbWUiLCJfZW52aXJvbm1lbnQiLCJlbnZpcm9ubWVudCIsIl90ZW5hbmN5IiwidGVuYW5jeSIsIl9zZXNzaW9uSWQiLCJzZXNzaW9uSWQiLCJNZXRyaWNzU2VydmljZSIsIlRlbGVtZXRyeVVybCIsIkVudmlyb25tZW50IiwiTWV0cmljc0ZhY3RvcnkiLCJnZXRNZXRyaWNzU2VydmljZSIsIl90eXBlb2YiLCJtZXRyaWNzU2VydmljZXMiLCJfbWV0cmljc1NlcnZpY2VzIiwibWV0cmljc0NvbmZpZ3VyYXRpb24iLCJjbGllbnRTZXNzaW9uSWQiLCJnZXRUZWxlbWV0cnlVcmwiLCJnZXRFbnZpcm9ubWVudEZyb21VcmwiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCIsInRlbGVtZXRyeUxldmVsIiwic2V0VGVsZW1ldHJ5TGV2ZWwiLCJ2YWx1ZXMiLCJ0IiwiciIsIlN5bWJvbCIsIm4iLCJpdGVyYXRvciIsIm8iLCJ0b1N0cmluZ1RhZyIsImkiLCJjIiwiR2VuZXJhdG9yIiwidSIsImNyZWF0ZSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwibCIsIlR5cGVFcnJvciIsImRvbmUiLCJyZXR1cm4iLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJFeHBvbmVudGlhbEJhY2tvZmYiLCJWZXJzaW9uTWFuYWdlciIsInJlcXVlc3RTaXplTGltaXQiLCJtYXhCdWZmZXJlZFJlY29yZHMiLCJfbWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfZXhwb25lbnRpYWxCYWNrb2ZmIiwiZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSIsInRoZW4iLCJsb2NhdGlvbkhvc3RuYW1lIiwiX2RvbWFpbiIsIm1ldHJpYyIsInByZXZpb3VzVmFsdWUiLCJyZXNvdXJjZSIsImtpbmQiLCJtZXRyaWNSZWNvcmQiLCJ0aW1lc3RhbXAiLCJmdWxsUXVhbGlmaWVkTmFtZSIsInNka1ZlcnNpb24iLCJpZ25vcmVkIiwic2VuZE1ldHJpY3NJZkFibGUiLCJQcm9taXNlIiwicmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUiLCJnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX2NhbGxlZSIsIm1ldHJpY3NNZXNzYWdlcyIsImZvcm1EYXRhIiwiX2NvbnRleHQiLCJhcHBlbmQiLCJyZWNvcmRzIiwibWV0aG9kIiwiYm9keSIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInJlc3BvbnNlIiwiaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUiLCJfZmFpbHVyZUNvdW50IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCIsImNhdGNoIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiUHJvbWlzZUhhbmRsZXIiLCJfc3RhdGUiLCJfaGFuZGxlZCIsIl92YWx1ZSIsIl9kZWZlcnJlZHMiLCJkb1Jlc29sdmUiLCJwcm9taXNlUmVzb2x2ZSIsInJlYXNvbiIsInByb21pc2VSZWplY3QiLCJuZXdWYWx1ZSIsInByb21pc2UiLCJmaW5hbGUiLCJfaW1tZWRpYXRlIiwiX3VuaGFuZGxlZFJlamVjdGlvbiIsImxlbiIsImhhbmRsZSIsImRlZmVycmVkIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwicmVzdWx0IiwiYWxsIiwiYXJyIiwicmVzb2x2ZSIsInJlamVjdCIsImlzQXJyYXkiLCJyZW1haW5pbmciLCJtYW5hZ2VSZXNwb25zZSIsImNvbnN0cnVjdG9yIiwicmFjZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJkZWZhdWx0VHJhY2tLaW5kcyIsIlBlZXJDb25uZWN0aW9uU2VydmljZSIsIl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nIiwiaXNQcmVjYWNoaW5nRW5hYmxlZCIsInByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FjaGVkIiwiZGlyZWN0aW9uIiwicGVlckNvbm5lY3Rpb24iLCJjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FsbGVlMyIsInRyYWNrS2luZHMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NvbnRleHQzIiwiRGlzYWJsZWQiLCJpc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCIsIkVuYWJsZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJhdWRpb1RyYW5zY2VpdmVycyIsInZpZGVvVHJhbnNjZWl2ZXJzIiwib3B0aW9ucyIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0IiwiX3Q1IiwiX3Q2IiwiYWRkVHJhbnNjZWl2ZXIiLCJjcmVhdGVPZmZlciIsImxvY2FsT2ZmZXIiLCJvZmZlclRvUmVjZWl2ZUF1ZGlvIiwib2ZmZXJUb1JlY2VpdmVWaWRlbyIsInRyYWNrc0tpbmRzIiwiY291bnRUcmFja0tpbmRzIiwidHJhY2tLaW5kQ291bnQiLCJhdWRpbyIsInZpZGVvIiwiY291bnRlZFRyYWNrS2luZHMiLCJjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMiLCJSdGNDb25maWd1cmF0aW9uTWFuYWdlciIsInRydW5jYXRlSWNlU2VydmVycyIsImljZVNlcnZlcnMiLCJ1cmxzIiwidXNlcm5hbWUiLCJjcmVkZW50aWFsIiwiU2RwUGFyc2VyIiwidXBkYXRlU3RhdGlzdGljVGltZW91dCIsImdldFN0YXRzVGltZW91dER1cmF0aW9uIiwiUnRjUHVibGlzaE1vbml0b3IiLCJlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiaXNGb3JlZ3JvdW5kIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uMiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiX3BlZXJDb25uZWN0aW9uIiwiX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiIsInNkcCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInBhcnNlZExvY2FsRGVzY3JpcHRpb24iLCJwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsIl9hdmFpbGFibGVUcmFja3MiLCJpc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNWaWRlb1RyYWNrRW5hYmxlZCIsImlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrIiwiZm9yZWdyb3VuZCIsIl9pc01vbml0b3JSdW5uaW5nIiwiX21vbml0b3JHZW5lcmF0aW9uIiwiX3VwZGF0ZVRpbWVvdXQiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX3VwZGF0ZVN0YXRpc3RpYyIsImdlbmVyYXRpb24iLCJnZXRLaW5kRm9yU2FmYXJpMTEiLCJ0aW1lb3V0SGFuZGxlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNSIsInN0YXRzUHJvbWlzZSIsInRpbWVvdXRQcm9taXNlIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRTZW50VGltZXN0YW1wIiwiZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCIsImlkIiwiZ2V0U3RhdHMiLCJyZXBvcnQiLCJjdXJyZW50Um91bmRUcmlwVGltZSIsIl90aGlzMiRfYXZhaWxhYmxlVHJhYyIsIm1lZGlhVHlwZSIsImNvZGVjIiwiY29kZWNJZCIsIm1pbWVUeXBlIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMiIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDMiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ0IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNSIsImJ5dGVzIiwiYnl0ZXNTZW50IiwicHJldmlvdXNCeXRlc1NlbnQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzU2VudCIsInJldHJhbnNtaXR0ZWRCeXRlc1NlbnQiLCJnZXRDb2RlY0J5VHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDYiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ3IiwiZmlyQ291bnQiLCJmcmFtZUhlaWdodCIsImZyYW1lV2lkdGgiLCJmcmFtZXNFbmNvZGVkIiwiZnJhbWVzU2VudCIsImhlYWRlckJ5dGVzU2VudCIsImh1Z2VGcmFtZXNTZW50IiwicGxpQ291bnQiLCJxcFN1bSIsInRvdGFsRW5jb2RlVGltZSIsInRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0IiwiZnBzIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY29ubmVjdGlvblN0YXRlIiwiaWNlQ29ubmVjdGlvblN0YXRlIiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJnZXRTdGF0c0xlZ2FjeSIsIl90aGlzMyIsImFkZFN0cmVhbSIsIm1lZGlhU3RyZWFtIiwiX3RoaXM0IiwiZ2V0VHJhY2tzIiwidHJhY2siLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb245IiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uIiwicmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSIsInN1YmplY3QiLCJfc3ViamVjdCIsIkRpc3Bvc2FibGVMaXN0ZW5lciIsIl9EaXNwb3NhYmxlIiwibGlzdGVuZXJzIiwiX2NhbGxTdXBlciIsImlkeCIsIl9pbmhlcml0cyIsIl9saXN0ZW5lcnMiLCJjaGFuZ2VkIiwiY29tcGFyYWJsZSIsImVxdWFscyIsIl9pIiwiX2FyciIsImJhc2VVUkwiLCJvcmlnaW4iLCJEaXNjb3ZlcnlVcmkiLCJfR2xvYmFsU2NvcGUkZ2V0SW5zdGEiLCJfY2xpZW50U2Vzc2lvbklkIiwiX2xvYWRlZFRpbWVzdGFtcCIsIl9yZWFkT25seUluaXRpYWxpemVkIiwiX3JlYWRPbmx5RGlzY292ZXJ5VXJpIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSIsIl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsIl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwiX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsIl93ZWJQbGF5ZXJMb2FkZXIiLCJfc2hha2FQbGF5ZXJMb2FkZXIiLCJfaGxzSnNMb2FkZXIiLCJfbWV0cmljc1NlcnZpY2UiLCJfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfdGVsZW1ldHJ5VXJsIiwiX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJyZXRyaWVzQW1vdW50IiwiX3RlbGVtZXRyeUxldmVsIiwiYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwidGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImlnbm9yZWRFbnZpcm9ubWVudCIsImlnbm9yZWREaXNjb3ZlcnlVcmkiLCJ0ZWxlbWV0cnlVcmwiLCJ0ZWxlbWV0cnlBcHBlbmRlciIsImlnbm9yZWRUZW5hbmN5IiwiYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbiIsImlnbm9yZWRUZWxlbWV0cnlMZXZlbCIsImFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJkaXNjb3ZlcnlVcmkiLCJjaGFubmVsVG9rZW4iLCJ1cmlWYWx1ZSIsImJhc2VVUklWYWx1ZSIsIm9uTG9hZCIsIl9pbml0aWFsaXplZCIsImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiLCJpbml0Iiwib3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfdGhpcyRfYXBwbGljYXRpb25BY3QiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIlBlZXJDb25uZWN0aW9uQ29udGV4dCIsInBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJTdGF0ZUNvbnRleHQiLCJpc1N0YXJ0aW5nIiwiaXNEaXNwb3NlZCIsIlRva2VuQ29udGV4dCIsInRva2VuRXhwaXJpbmciLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIk5vcm1hbCIsIkZvcmNlIiwiUmVzZXQiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIktlZXAiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIkRpc2NvdmVyeSIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsIm9rIiwidGV4dCIsIm1hcCIsImVuZFBvaW50IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsInN0YXJ0IiwiZmluaXNoZWQiLCJidWlsZFBpbmdVcmwiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJmYWlsdXJlQ291bnQiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIzIiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiaHR0cFJlc3BvbnNlIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMiIsIl9yZXNwb25zZSIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJmaW5hbGx5IiwibWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzIiwib25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwiY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJfcHVibGlzaCIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzdHJlYW0iLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIl9jYWxsZWU1IiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiYml0cmF0ZUluQml0c1BlclNlY29uZCIsIl90aGlzNSIsIl9jb250ZXh0NSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwibGltaXRCaXRyYXRlIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX2FkZEljZUNhbmRpZGF0ZXMiLCJfY2FsbGVlNiIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJfdGhpczYiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJfY29udGV4dDYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiX2NhbGxlZTciLCJfdGhpczciLCJkZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY29udGV4dDciLCJtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlIiwiZGVzdHJveVN0cmVhbSIsIl94MTYiLCJfeDE3IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJfY2FsbGVlOCIsIl9jb250ZXh0OCIsInNlbmRCZWFjb24iLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX3gxOCIsIl94MTkiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJfY2FsbGVlOSIsImxhZyIsInJ0Y0NvbmZpZ3VyYXRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwib3RoZXJQcm9wZXJ0aWVzIiwiX2NvbnRleHQ5IiwianNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIl9vYmplY3RTcHJlYWQiLCJjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24iLCJfeDIwIiwiX3gyMSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMCIsInB1Ymxpc2hSZXNwb25zZSIsIl9jb250ZXh0MCIsIl94MjIiLCJfeDIzIiwiYnVuZGxlUG9saWN5IiwiaWNlQ2FuZGlkYXRlUG9vbFNpemUiLCJpY2VUcmFuc3BvcnRQb2xpY3kiLCJydGNwTXV4UG9saWN5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfY2FsbGVlMSIsIl9jb250ZXh0MSIsIl94MjQiLCJfY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2NhbGxlZTEwIiwiX2NvbnRleHQxMCIsIl94MjUiLCJfY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlIiwiX2NhbGxlZTExIiwiX2NvbnRleHQxMSIsIl94MjYiLCJQdWJsaXNoZXJTdGF0ZSIsIlNlc3Npb25UZWxlbWV0cnkiLCJQdWJsaXNoZXJDb250ZXh0IiwiUmVhbFRpbWVQdWJsaXNoZXIiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIm9uZUhvdXJJbk1pbGxpc2Vjb25kcyIsIm1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIlB1Ymxpc2hlciIsIl90b2tlbkNvbnRleHQiLCJfcHVibGlzaGVyQ29udGV4dCIsIl9wZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJfc3RhdGVDb250ZXh0IiwiX3B1Ymxpc2hlclN0YXJ0VGltZSIsIl9yZWFkT25seVRva2VuIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5VG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQdWJsaXNoaW5nIiwicHVibGlzaGluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlGYWlsdXJlQ291bnQiLCJfcmVhZE9ubHlFbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwicHVibGlzaGVyRGlzcG9zYWJsZXMiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQdWJsaXNoaW5nIiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsImRpc3Bvc2FibGVzIiwiX3N0b3AiLCJwcm9jZXNzU3RvcCIsInN0b3AiLCJjbGVhblVwUmVzb3VyY2VzIiwiU3RvcHBlZCIsIl9kaXNwb3NlIiwiZ2V0VXJpIiwiX3N0YXJ0IiwicHJvY2Vzc1N0YXJ0IiwiX3Byb2Nlc3NTdGFydCIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2siLCJzdHJlYW1QdWJsaXNoZXIiLCJTdGFydGluZyIsIlVuYXV0aG9yaXplZCIsIlJlY292ZXJpbmciLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwic3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyIsInRpbWVvdXRJZCIsImdldFJldHJ5SW50ZXJ2YWwiLCJzZXRNZWRpYVN0cmVhbSIsIm1lZGlhVHJhY2siLCJfdGhpczUkX3BlZXJDb25uZWN0aW8iLCJzZW5kZXIiLCJfc2VuZGVyJHRyYWNrIiwicmVwbGFjZVRyYWNrIiwiT2ZmbGluZSIsIkluaXRpYWxpemluZyIsIk5vdEZvdW5kIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJSZWNvbm5lY3RpbmciLCJVbnN1cHBvcnRlZEZlYXR1cmUiLCJDb25maWd1cmF0aW9uRXJyb3IiLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsInJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0Iiwic2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwicHVibGlzaGVySW5pdGlhbGl6YXRpb24iLCJnZW5lcmF0ZVNjcmVlbk5hbWUiLCJhcHBseVB1Ymxpc2hTdGF0dXMiLCJhcHBseVVuYXV0aG9yaXplZCIsImFwcGx5Tm90Rm91bmQiLCJhcHBseVVuaGFuZGxlZEVycm9yIiwiYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsIm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIlB1Ymxpc2hlcnMiLCJjcmVhdGVQdWJsaXNoZXIiLCJpbml0aWFsaXplZCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsInNvZnRSZXN0YXJ0SW50ZXJ2YWwiLCJwdWJsaXNoZXJDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0IiwibmF2aWdhdG9ySXNPbkxpbmUiLCJtZWRpYVRyYWNrcyIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJfcmVmMyQiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfcHVibGlzaGVyQ29udGUiLCJfcmVmNCIsIm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsInJldHJ5Q2FsbGJhY2siLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9jcmVhdGVBbnN3ZXJEZXNjcmlwdCIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIl90aGlzJF9wdWJsaXNoZXJDb250ZTIiLCJydGNQdWJsaXNoTW9uaXRvciIsImFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJpc0NsaWVudE9mZmVyRmxvdyIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCIsImljZVJlc3RhcnQiLCJvZmZlciIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVPZiIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIl9uZXR3b3JrTW9uaXRvciIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJmbG9hdCJdLCJzb3VyY2VSb290IjoiIn0=
8964
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LHNHQUFpQztBQUMvQyxrQkFBa0IsbUJBQU8sQ0FBQyw4RUFBa0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MseUJBQXlCLFNBQVMseUJBQXlCLGtCOzs7Ozs7Ozs7O0FDTjNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEdBQUcsRUFBRSx5QkFBeUIsU0FBUyx5QkFBeUI7QUFDaEU7QUFDQSwwQkFBMEIseUJBQXlCLFNBQVMseUJBQXlCLGtCOzs7Ozs7Ozs7O0FDVHJGLHVCQUF1QixtQkFBTyxDQUFDLHdGQUF1QjtBQUN0RDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHlCQUF5QixTQUFTLHlCQUF5QixrQjs7Ozs7O1VDUnpHO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBLEU7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQSxFOzs7OztXQ1BBLHdGOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RCxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTs7QUFFeUI7QUFDYTtBQUNRO0FBSzlCO0FBR2hCLCtEQUFlO0VBQ2JybUMsR0FBRyxFQUFIQSw0Q0FBRztFQUNIdy9CLFVBQVUsRUFBVkEsbURBQVU7RUFDVjVGLGNBQWMsRUFBZEEsdURBQWNBO0FBQ2hCLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL05ldHdvcmtNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2VkZ2VBdXRoL0VkZ2VUb2tlbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L1BhcmFtZXRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZUxpc3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvTnVtYmVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9TdHJpbmdzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQXBwZW5kZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQ29uc29sZUFwcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdUaHJlc2hvbGQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjUHVibGlzaE1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdGF0ZUNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1Rva2VuQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUmVhbFRpbWVQdWJsaXNoZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vU2Vzc2lvblRlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuY29uc3QgdmlzaWJpbGl0eUNoYW5nZUV2ZW50ID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBfbGFzdEJhY2tncm91bmREdXJhdGlvbjogTWlsbGlzZWNvbmQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RCYWNrZ3JvdW5kRHVyYXRpb24oKTogTWlsbGlzZWNvbmQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBsZXQgYmFja2dyb3VuZEVudHJ5VGltZTogTWlsbGlzZWNvbmQgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNOb3dGb3JlZ3JvdW5kID0gIUdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50SXNIaWRkZW47XG5cbiAgICAgIGlmICghaXNOb3dGb3JlZ3JvdW5kKSB7XG4gICAgICAgIGJhY2tncm91bmRFbnRyeVRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoYmFja2dyb3VuZEVudHJ5VGltZSkge1xuICAgICAgICB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGJhY2tncm91bmRFbnRyeVRpbWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzRm9yZWdyb3VuZC52YWx1ZSA9IGlzTm93Rm9yZWdyb3VuZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXNlRXZlbnRDYXB0dXJlUGhhc2UgPSBmYWxzZTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSkpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckRldGVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4ID0gLyhNU0lFfCg/IUdlY2tvLispRmlyZWZveHwoPyFBcHBsZVdlYktpdC4rQ2hyb21lLispU2FmYXJpfCg/IUFwcGxlV2ViS2l0LispQ2hyb21lfEFwcGxlV2ViS2l0KD8hLitDaHJvbWV8LitTYWZhcmkpfEdlY2tvKD8hLitGaXJlZm94KSkoPzogfFxcLykoW1xcZC5hcHJlXSspL2c7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJNYWpvclZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlID0gKC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxPcGVyYSBNaW5pL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkID0gKC9BbmRyb2lkL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTY5ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS82OS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzAgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcwLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzEuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcyID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Mi4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzQgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc0LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzUuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc2ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ni4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzcgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc3LicpO1xuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTWFqb3JWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNBbmRyb2lkO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTY5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNjk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcxO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc1O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc01vYmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUFuZFZlcnNpb24gPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgpO1xuXG4gICAgaWYgKGJyb3dzZXJOYW1lQW5kVmVyc2lvbiAmJiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF0pIHtcbiAgICAgIHJldHVybiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJOYW1lTGlzdCB8fCAhYnJvd3Nlck5hbWVMaXN0WzBdKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJWZXJzaW9uTGlzdCB8fCAhYnJvd3NlclZlcnNpb25MaXN0WzFdKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsVmVyc2lvbiA9IGJyb3dzZXJWZXJzaW9uTGlzdFsxXTtcblxuICAgIGlmICghZnVsbFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXIoZnVsbFZlcnNpb24uc3BsaXQoJy4nKVswXSkgfHwgMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgY29uc3QgbXNpZSA9IHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFICcpO1xuXG4gICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKG1zaWUgKyA1LCB1c2VyQWdlbnQuaW5kZXhPZignLicsIG1zaWUpKSwgMTApfWA7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZGVudCA9IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG4gICAgaWYgKHRyaWRlbnQgPiAwKSB7XG4gICAgICAvLyBJRSAxMSA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VyQWdlbnQuaW5kZXhPZigncnY6Jyk7XG5cbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKHZlcnNpb24gKyAzLCB1c2VyQWdlbnQuaW5kZXhPZignLicsIHZlcnNpb24pKSwgMTApfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVmFsdWUobmFtZSkgfHxcbiAgICAgIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZShgJHtuYW1lfS11cmktcGFyYW1ldGVyLW5hbWVgKSB8fFxuICAgICAgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0U3RyaW5nVmFsdWVbbmFtZV07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEJvb2xlYW5WYWx1ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lKTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSAndHJ1ZScgfHwgdmFsdWUgPT09ICcxJyB8fCB2YWx1ZSA9PT0gJ09uJztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUZyb21VcmkgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVVJJVmFsdWUoYCR7bmFtZX0tdXJpLXBhcmFtZXRlci1uYW1lYCk7XG5cbiAgICBpZiAodmFsdWVGcm9tVXJpKSB7XG4gICAgICByZXR1cm4gdmFsdWVGcm9tVXJpID09PSAndHJ1ZScgfHwgdmFsdWVGcm9tVXJpID09PSAnMScgfHwgdmFsdWVGcm9tVXJpID09PSAnT24nO1xuICAgIH1cblxuICAgIHJldHVybiBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRCb29sZWFuVmFsdWVbbmFtZV0gPT09IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdFN0cmluZ1ZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZ30ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LW1ldHJpY3MtbGV2ZWwnOiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpLFxuICAgICAgJ3BoZW5peC1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jb25zb2xlLWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC10ZWxlbWV0cnktbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY2hhbm5lbC10b2tlbic6ICcnLFxuICAgICAgJ3BoZW5peC11cmknOiAnJyxcbiAgICAgICdwaGVuaXgtYmFzZS11cmknOiAnJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtZXRhVmFsdWUgPSBHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudFF1ZXJ5U2VsZWN0b3IoYG1ldGFbbmFtZT0nJHtuYW1lfSddYCk7XG5cbiAgICBpZiAoIW1ldGFWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbWV0YVZhbHVlLmdldEF0dHJpYnV0ZSgndmFsdWUnKTtcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclVSSVZhbHVlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmFsdWVVUklQYXJhbWV0ZXJOYW1lID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlKG5hbWUpO1xuXG4gICAgaWYgKCF2YWx1ZVVSSVBhcmFtZXRlck5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkxTZWFyY2hQYXJhbXMoR2xvYmFsU2NvcGUudmFsdWUubG9jYXRpb25TZWFyY2gpLmdldCh2YWx1ZVVSSVBhcmFtZXRlck5hbWUpIHx8IHVuZGVmaW5lZDtcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIge1xuICBzdGF0aWMgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnF1ZXVlTWljcm90YXNrKHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50Q3JlYXRlRWxlbWVudDxIVE1MSW1hZ2VFbGVtZW50PignaW1nJyk7XG5cbiAgICBpbWcuc3JjID0gR2xvYmFsU2NvcGUudmFsdWUuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEwZSs3KV0pKTsgLy8gMTAwTWIgb3IgbGVzcyBvciBtb3JlIGRlcGVuZGluZyBvbiBhcyB5b3Ugd2lzaCB0byBmb3JjZS9pbnZva2UgR0MgY3ljbGUgcnVuXG4gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuXG4gICAgICBpbWcgPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrTW9uaXRvciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzU3VwcG9ydGVkOiBib29sZWFuID0gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbiAhPT0gdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydHQ6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWZmZWN0aXZlVHlwZTogU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG4gIH1cblxuICBnZXQgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VwcG9ydGVkO1xuICB9XG5cbiAgZ2V0IHJ0dCgpOiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9ydHQ7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlVHlwZSgpOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9lZmZlY3RpdmVUeXBlO1xuICB9XG5cbiAgZ2V0IGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmRvd25saW5rID8/IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmRvd25saW5rTWF4ID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmVmZmVjdGl2ZVR5cGUgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8udHlwZSA/PyAnVW5rbm93bic7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8ucnR0ID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoKTogdm9pZCA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcikpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGlzdGljcygpOiB2b2lkIHtcbiAgICB0aGlzLl9ydHQudmFsdWUgPSB0aGlzLmdldFJvdW5kVHJpcFRpbWUoKTtcbiAgICB0aGlzLl9lZmZlY3RpdmVUeXBlLnZhbHVlID0gdGhpcy5nZXRFZmZlY3RpdmVUeXBlKCk7XG4gICAgdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkudmFsdWUgPSB0aGlzLmdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5cbmV4cG9ydCBjbGFzcyBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVNldHVwTGlzdGVuZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXRyaWNzU2VydmljZSA9IFNESy5tZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIF9tZXRyaWNTdWJtaXR0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3VjY2VzcyhzdHJlYW1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRTdHJlYW1NZXRyaWMoTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQsIHN0cmVhbUlkKTtcbiAgfVxuXG4gIGZhaWwoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRTdHJlYW1NZXRyaWMoTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRTdHJlYW1NZXRyaWMobWV0cmljVHlwZTogTWV0cmljc1R5cGUsIHN0cmVhbUlkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX21ldHJpY1N1Ym1pdHRlZCkge1xuICAgICAgcmV0dXJuIDtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNTdWJtaXR0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXR1cFRpbWUgPSBub3cgLSB0aGlzLl9zdGFydFRpbWU7XG4gICAgY29uc3QgbWV0cmljTmFtZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpY1R5cGUpLmdldE5hbWUoKTtcblxuICAgIHRoaXMubWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHNldHVwVGltZX0sXG4gICAgICBzdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFN0cmVhbSBtZXRyaWMgWyVzXSBpbiBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgbmV3IER1cmF0aW9ucyhzZXR1cFRpbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VUb2tlbiBmcm9tICcuL0VkZ2VUb2tlbic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4vRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmNvbnN0IGVkZ2VBdXRoVG9rZW5QcmVmaXggPSAnRElHRVNUOic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VBdXRoUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFZGdlQXV0aFBhcnNlcicpO1xuXG4gIHN0YXRpYyBwYXJzZVRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogRWRnZVRva2VuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdUb2tlbiBpcyBub3QgdmFsaWQgWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGF0b2IodG9rZW4uc3Vic3RyKGVkZ2VBdXRoVG9rZW5QcmVmaXgubGVuZ3RoKSk7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBKU09OLnBhcnNlKGRlY29kZWRUb2tlbik7XG5cbiAgICAgIGVkZ2VUb2tlbi50b2tlbiA9IEpTT04ucGFyc2UoZWRnZVRva2VuLnRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4oZWRnZVRva2VuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdDYW5ub3QgcGFyc2UgdG9rZW4gdmFsdWUnLCBlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdG9rZW4gJiYgdG9rZW4uc3RhcnRzV2l0aChlZGdlQXV0aFRva2VuUHJlZml4KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuaW50ZXJmYWNlIElUb2tlbiB7XG4gIHVyaTogVVJMIHwgbnVsbDtcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElFZGdlVG9rZW4ge1xuICBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBJVG9rZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VUb2tlbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW46IElUb2tlbjtcblxuICBjb25zdHJ1Y3RvcihlZGdlVG9rZW46IElFZGdlVG9rZW4gfCBudWxsKSB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25JZCA9IGVkZ2VUb2tlbj8uYXBwbGljYXRpb25JZCB8fCAnJztcbiAgICB0aGlzLl90b2tlbiA9IHtcbiAgICAgIHVyaTogZWRnZVRva2VuPy50b2tlbj8udXJpID8gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChlZGdlVG9rZW4udG9rZW4udXJpKSA6IG51bGwsXG4gICAgICBjYXBhYmlsaXRpZXM6IGVkZ2VUb2tlbj8udG9rZW4/LmNhcGFiaWxpdGllcyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBnZXQgdXJpKCk6IFVSTCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi51cmk7XG4gIH1cblxuICBnZXQgY2FwYWJpbGl0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4uY2FwYWJpbGl0aWVzO1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25JZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZGVjbGFyZSBjb25zdCBfX0ZFQVRVUkVTX186IHtcbiAgc2VuZExvY2FsQ2FuZGlkYXRlczogYm9vbGVhbjtcbiAgc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHNlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ1RvQ29uc29sZTogTG9nZ2luZ0xldmVsVHlwZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkRmVhdHVyZXMge1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvY2FsQ2FuZGlkYXRlczogYm9vbGVhbjtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ1RvQ29uc29sZTogTG9nZ2luZ0xldmVsVHlwZTtcblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2dzKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9ncztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZE1ldHJpY3MoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZE1ldHJpY3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ1RvQ29uc29sZSgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nVG9Db25zb2xlO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RmVhdHVyZXMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gX19GRUFUVVJFU19fO1xuXG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gJ3NlbmRMb2NhbENhbmRpZGF0ZXMnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyA6IHRydWU7XG4gICAgICB0aGlzLl9zZW5kTG9ncyA9ICdzZW5kTG9ncycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9ncyA6ICdBbGwnO1xuICAgICAgdGhpcy5fc2VuZE1ldHJpY3MgPSAnc2VuZE1ldHJpY3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZE1ldHJpY3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZSA9ICdsb2dUb0NvbnNvbGUnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMubG9nVG9Db25zb2xlIDogJ0FsbCc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9IHRydWU7XG4gICAgICB0aGlzLl9zZW5kTG9ncyA9ICdBbGwnO1xuICAgICAgdGhpcy5fc2VuZE1ldHJpY3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZSA9ICdBbGwnO1xuICAgIH1cbiAgfVxufVxuXG5CdWlsZEZlYXR1cmVzLmFwcGx5RmVhdHVyZXMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlRW5hYmxlbWVudCB7XG4gIHN0YXRpYyBnZXQgY2xpZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDbGllbnQgb2ZmZXIgd29ya2Zsb3cgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vyc1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzUgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc2IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYWRkVHJhbmNlaXZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENocm9tZSA2OSwgNzAsIDcxLCA3MiBleHBvc2VzIGBhZGRUcmFuY2VpdmVyYCBidXQgaXQgZG9lcyBub3Qgd29yayBjb3JyZWN0bHlcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcwIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldEN1cnJlbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgb25UcmFja0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDYzIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU1O1xuICB9XG5cbiAgc3RhdGljIGdldCBwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNob3VsZFVzZU5hdGl2ZUhscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2Ftc3VuZ0Jyb3dzZXInO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1ByZWNhY2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdJRSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LmRvY3VtZW50Q3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0eXBlb2YgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yID09PSAndW5kZWZpbmVkJyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBSVENSdHBSZWNlaXZlci5wcm90b3R5cGUuY3JlYXRlRW5jb2RlZFN0cmVhbXMgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5pc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWRcbiAgICAgICYmIChGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdTYWZhcmknO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEb2N1bWVudCBmcm9tICcuL0lEb2N1bWVudCc7XG5pbXBvcnQgSUxvY2F0aW9uIGZyb20gJy4vSUxvY2F0aW9uJztcbmltcG9ydCBJTmV0d29ya0luZm9ybWF0aW9uIGZyb20gJy4vSU5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgSU5hdmlnYXRvciBmcm9tICcuL0lOYXZpZ2F0b3InO1xuaW1wb3J0IElXaW5kb3cgZnJvbSAnLi9JV2luZG93JztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG50eXBlIEJyb3dzZXJHbG9iYWxTY29wZSA9IElQcm92aWRlZEdsb2JhbFNjb3BlO1xuXG5jb25zdCBicm93c2VyR2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSA9IHtcbiAgZG9jdW1lbnQsXG4gIGxvY2F0aW9uLFxuICBuYXZpZ2F0b3IsXG4gIHdpbmRvd1xufTtcblxuZXhwb3J0IGNsYXNzIEdsb2JhbFNjb3BlIGltcGxlbWVudHMgSUdsb2JhbFNjb3BlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luc3RhbmNlID0gbmV3IFN1YmplY3Q8SUdsb2JhbFNjb3BlPihuZXcgR2xvYmFsU2NvcGUoYnJvd3Nlckdsb2JhbFNjb3BlKSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluc3RhbmNlOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiA9IG5ldyBSZWFkT25seVN1YmplY3QoR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IoZ2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSkge1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZ2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBnbG9iYWxTY29wZS5sb2NhdGlvbjtcbiAgICB0aGlzLl9uYXZpZ2F0b3IgPSBnbG9iYWxTY29wZS5uYXZpZ2F0b3I7XG4gICAgdGhpcy5fd2luZG93ID0gZ2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgdG8gbWFpbnRhaW4gQVBJIGNvbnNpc3RlbmN5IHdpdGggUHJvdmlkZWRHbG9iYWxTY29wZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKHByb3ZpZGVkR2xvYmFsU2NvcGU6IElQcm92aWRlZEdsb2JhbFNjb3BlKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyB0aGUgR2xvYmFsU2NvcGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgRm9ybURhdGEoKTogdHlwZW9mIEZvcm1EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkZvcm1EYXRhO1xuICB9XG5cbiAgZ2V0IEhUTUxWaWRlb0VsZW1lbnQoKTogdHlwZW9mIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuSFRNTFZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbSgpOiB0eXBlb2YgTWVkaWFTdHJlYW0ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW1UcmFjaygpOiB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbVRyYWNrO1xuICB9XG5cbiAgZ2V0IE1lZGlhU291cmNlKCk6IHR5cGVvZiBNZWRpYVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVNvdXJjZTtcbiAgfVxuXG4gIGdldCBSVENQZWVyQ29ubmVjdGlvbigpOiB0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCk6IHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ0ljZUNhbmRpZGF0ZSgpOiB0eXBlb2YgUlRDSWNlQ2FuZGlkYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ0ljZUNhbmRpZGF0ZTtcbiAgfVxuXG4gIGdldCBVUkwoKTogdHlwZW9mIFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkw7XG4gIH1cblxuICBnZXQgVVJMU2VhcmNoUGFyYW1zKCk6IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMU2VhcmNoUGFyYW1zO1xuICB9XG5cbiAgZ2V0IGFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgYWRkV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhckludGVydmFsKCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhckludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhclRpbWVvdXQoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFyVGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRDcmVhdGVFbGVtZW50KCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudEhhc0ZvY3VzKCk6ICgpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5oYXNGb2N1cy5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudElzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RvY3VtZW50LmhpZGRlbjtcbiAgfVxuXG4gIGdldCBkb2N1bWVudFF1ZXJ5U2VsZWN0b3IoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBmZXRjaCgpOiAoaW5wdXQ6IHN0cmluZyB8IFVSTCB8IFJlcXVlc3QsIGluaXQ/OiBSZXF1ZXN0SW5pdCkgPT4gUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuZmV0Y2guYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uSG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICBnZXQgbG9jYXRpb25TZWFyY2goKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNoO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvckNvbm5lY3Rpb24oKTogSU5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5jb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvcklzT25MaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iub25MaW5lO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgdGhpcy5fd2luZG93WydfX3BhZ2VMb2FkVGltZSddO1xuICB9XG5cbiAgZ2V0IHF1ZXVlTWljcm90YXNrKCk6IChtaWNyb3Rhc2s6ICgpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucXVldWVNaWNyb3Rhc2suYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk6IChjYWxsYmFjazogRnJhbWVSZXF1ZXN0Q2FsbGJhY2spID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0SW50ZXJ2YWwoKTogKGhhbmRsZXI6IHN0cmluZyB8IEZ1bmN0aW9uLCB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuc2V0SW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldFRpbWVvdXQoKTogKGhhbmRsZXI6IHN0cmluZyB8IEZ1bmN0aW9uLCB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuc2V0VGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2Rpc3Bvc2FibGU6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoZGlzcG9zYWJsZTogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGU7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLl9kaXNwb3NhYmxlLmNhbGwodGhpcyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8vIEFzIGZsb2F0IGluIEVDTUFTY3JpcHQgdXNlIDY0LWJpdCBmb3JtYXQgaXQgY2Fubm90IGhhdmUvaGFuZGxlIG1vcmUgdGhhbiAxNSBzeW1ib2xzIGFmdGVyIGRvdC5cbmNvbnN0IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCA9IDE1O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOdW1iZXJzIHtcbiAgc3RhdGljIGNvdW50TnVtYmVyTGVuZ3RoKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlID0gMDtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgbnVtYmVyICo9IC0xO1xuICAgICAgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSsrO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXJzLmNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbChudW1iZXIpICsgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSArIChudW1iZXIgIT09IE1hdGguZmxvb3IobnVtYmVyKSA/IE51bWJlcnMuY291bnREaWdpdHNBZnRlckRlY2ltYWwobnVtYmVyKSArIDEgOiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpeFJvdW5kaW5nKHZhbHVlOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBwb3dlciA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuXG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBwb3dlcikgLyBwb3dlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgZGlnaXRzQmVmb3JlRGVjaW1hbCA9IDE7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgd2hpbGUgKG51bWJlciA+PSAxMCkge1xuICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTA7XG4gICAgICBkaWdpdHNCZWZvcmVEZWNpbWFsKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZ2l0c0JlZm9yZURlY2ltYWw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgbGV0IG1vZGlmaWVkVmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgd2hpbGUgKG1vZGlmaWVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUgJiYgY291bnQgPCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgICBtb2RpZmllZFZhbHVlID0gTnVtYmVycy5maXhSb3VuZGluZyhvcmlnaW5hbFZhbHVlLCBjb3VudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ051bWJlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdzIHtcbiAgc3RhdGljIHJhbmRvbShsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmFuZG9tMTNDaGFyYWN0ZXJzID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDIsIDE1KTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9vcHM6IG51bWJlciA9IE1hdGguY2VpbChsZW5ndGggLyAxMyk7XG5cbiAgICByZXR1cm4gbmV3IEFycmF5KGxvb3BzKS5maWxsKHJhbmRvbTEzQ2hhcmFjdGVycykucmVkdWNlKChzdHJpbmcsIGZ1bmMpID0+IHtcbiAgICAgIHJldHVybiBzdHJpbmcgKyBmdW5jKCk7XG4gICAgfSwgJycpLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmluZ3MgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBlbmRlcnMge1xuICBwcml2YXRlIF9hcHBlbmRlcnM6IEFycmF5PElBcHBlbmRlcj4gPSBbXTtcblxuICBnZXQgdmFsdWUoKTogQXJyYXk8SUFwcGVuZGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGFkZChhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLnB1c2goYXBwZW5kZXIpO1xuICB9XG5cbiAgcmVtb3ZlKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSB0aGlzLl9hcHBlbmRlcnMucmVkdWNlKChpdGVtcywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCEoaXRlbSA9PT0gYXBwZW5kZXIpKSB7XG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9LCBbXSBhcyBBcnJheTxJQXBwZW5kZXI+KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGAke2RhdGUudG9JU09TdHJpbmcoKX0gWyR7Y2F0ZWdvcnl9XSBbJHtMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdfV0gJHttZXNzYWdlfWA7XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgY29uc29sZS5sb2coZnVsbE1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihmdWxsTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgRXJyb3IsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJEZWZhdWx0cyB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTG9nc107XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLmxvZ1RvQ29uc29sZV07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlciwge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcnM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IElMb2dnZXJ9ID0ge307XG4gIHByaXZhdGUgc3RhdGljIF9hcHBlbmRlcnM6IEFwcGVuZGVycyA9IG5ldyBBcHBlbmRlcnMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCA9IG5ldyBMb2dnaW5nVGhyZXNob2xkKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uID0gbmV3IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9nZ2VyKGNhdGVnb3J5OiBzdHJpbmcpOiBJTG9nZ2VyIHtcbiAgICBpZiAodHlwZW9mIGNhdGVnb3J5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY2F0ZWdvcnkgPSAnU0RLJztcbiAgICB9XG5cbiAgICBjb25zdCBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldID0gbmV3IExvZ2dlcihjYXRlZ29yeSwgdGhpcy5fYXBwZW5kZXJzLCB0aGlzLl90aHJlc2hvbGQpO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dpbmdMZXZlbCgpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgnY29uc29sZScsIExvZ2dlckZhY3RvcnkuYXBwbHlDb25zb2xlTG9nZ2VyLmJpbmQodGhpcykpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgndGVsZW1ldHJ5JywgTG9nZ2VyRmFjdG9yeS5hcHBseVRlbGVtZXRyeUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5TG9nZ2luZ0xldmVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWxvZ2dpbmctbGV2ZWwnKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pIHtcbiAgICAgIHRoaXMuX3RocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbChuYW1lOiBzdHJpbmcsIGFwcGx5QXBwZW5kZXI6IChsZXZlbDogTG9nZ2luZ0xldmVsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKGBwaGVuaXgtJHtuYW1lfS1sb2dnaW5nLWxldmVsYCkgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChwYXJhbWV0ZXJWYWx1ZSA9PT0gJ09mZicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcHBseUFwcGVuZGVyKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlDb25zb2xlTG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIobGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5VGVsZW1ldHJ5TG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9nZ2VyRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ0luZm8nO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljVHlwZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3M6IE1ldHJpY3NUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3M6IE1ldHJpY3NUeXBlKSB7XG4gICAgdGhpcy5fbWV0cmljcyA9IG1ldHJpY3M7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1ldHJpY3NUeXBlW3RoaXMuX21ldHJpY3NdO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGhpcy5fbWV0cmljcykge1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TdGFsbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5CdWZmZXJpbmc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5SZXNvbHV0aW9uQ2hhbmdlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9tZXRyaWNzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi9NZXRyaWNUeXBlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDEwMjQ7XG5jb25zdCBtYXhCdWZmZXJlZFJlY29yZHMgPSAyMDQ4O1xuXG5pbnRlcmZhY2UgSVZhbHVlIHtcbiAgc3RyaW5nPzogc3RyaW5nO1xuICB1aW50NjQ/OiBudW1iZXI7XG4gIGZsb2F0PzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpY1JlY29yZCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljOiBzdHJpbmc7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTWV0cmljIHtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignTWV0cmljc1NlcnZpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSBfbWV0cmljczogQXJyYXk8SU1ldHJpY1JlY29yZD4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZhaWx1cmVDb3VudCA9IDA7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1ldHJpY3NDb25maWd1cmF0aW9uKCk6IE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdXNoKG1ldHJpYzogSU1ldHJpYyk6IHZvaWQge1xuICAgIGNvbnN0IHtzdHJlYW1JZCwgdmFsdWUsIHByZXZpb3VzVmFsdWUsIHJ1bnRpbWUsIHJlc291cmNlLCBraW5kfSA9IG1ldHJpYztcbiAgICBjb25zdCBtZXRyaWNUeXBlID0gbmV3IE1ldHJpY1R5cGUobWV0cmljLm1ldHJpY1R5cGUpO1xuXG4gICAgaWYgKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA+IG1ldHJpY1R5cGUuZ2V0VGVsZW1ldHJ5TGV2ZWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWM6IG1ldHJpY1R5cGUuZ2V0TmFtZSgpLFxuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBydW50aW1lLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBraW5kXG4gICAgfTtcblxuICAgIHRoaXMuX21ldHJpY3MucHVzaChtZXRyaWNSZWNvcmQpO1xuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzOiBBcnJheTxJTWV0cmljUmVjb3JkPik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBtZXRyaWNzTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRyaWNzTWVzc2FnZXMgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKDAsIHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgdGhpcy5fbWV0cmljcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UocmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUocmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSBtYXhCdWZmZXJlZFJlY29yZHMpIHtcbiAgICAgICAgICB0aGlzLl9mYWlsdXJlQ291bnQrKztcblxuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWV0cmljcyA9IFsuLi5tZXRyaWNzTWVzc2FnZXMsIC4uLnRoaXMuX21ldHJpY3NdO1xuXG4gICAgICAgICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICAgICAgICB9LCB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9mYWlsdXJlQ291bnQpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVG9vIG1hbnkgY2FjaGVkIG1ldHJpYyByZWNvcmRzIFslc10sIGRyb3BwaW5nIFslc10gcmVjb3JkcycsIHRoaXMuX21ldHJpY3MubGVuZ3RoLCBtZXRyaWNzTWVzc2FnZXMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQgPSAwO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHtzdGF0dXN9OiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXjVcXGR7Mn0kLy50ZXN0KHN0YXR1cy50b1N0cmluZygpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlEZWZhdWx0IHtcbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRNZXRyaWNzXTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gTm90ZTogVGhpcyBQcm9taXNlIHBvbHlmaWxsIGlzIGluY2x1ZGVkIGZvciBicm93c2VyIGJ1aWxkcyBvbmx5IHRvIGFkZHJlc3MgY29tcGF0aWJpbGl0eSBpc3N1ZXNcbi8vIHdpdGggb2xkZXIgYnJvd3NlcnMgd2hvc2UgbmF0aXZlIFByb21pc2U8VD5pbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IC5maW5hbGx5LlxuXG5pbXBvcnQgUHJvbWlzZUhhbmRsZXIgZnJvbSAnLi9Qcm9taXNlSGFuZGxlcic7XG5cbmNsYXNzIFByb21pc2U8VD4ge1xuICBfc3RhdGU6IG51bWJlcjtcbiAgX2hhbmRsZWQ6IGJvb2xlYW47XG4gIF92YWx1ZTogVCB8IHVua25vd247XG4gIF9kZWZlcnJlZHM6IEFycmF5PFByb21pc2VIYW5kbGVyPFQ+PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIHRoZW4ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uIHwgbnVsbCwgb25SZWplY3RlZDogRnVuY3Rpb24gfCBudWxsKTogUHJvbWlzZTxUPnwgdm9pZDtcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUgPSAwO1xuICAgIHRoaXMuX2hhbmRsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG5cbiAgICB0aGlzLmRvUmVzb2x2ZShjYWxsYmFjayk7XG4gIH1cblxuICBkb1Jlc29sdmUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgbGV0IGRvbmUgPSBmYWxzZTtcblxuICAgIHRyeSB7XG4gICAgICBjYWxsYmFjayhcbiAgICAgICAgKHZhbHVlOiBQcm9taXNlPFQ+fCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKHJlYXNvbjogUHJvbWlzZTxUPnwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9uZSA9IHRydWU7XG4gICAgICB0aGlzLnByb21pc2VSZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZXNvbHZlKG5ld1ZhbHVlOiBQcm9taXNlPFQ+fCBudWxsIHwgdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U8VD47XG5cbiAgICB0cnkge1xuICAgICAgLy8gUHJvbWlzZTxUPlJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vUHJvbWlzZXMtYXBsdXMvUHJvbWlzZXMtc3BlYyN0aGUtUHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuICAgICAgaWYgKG5ld1ZhbHVlID09PSBwcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0EgUHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdCBzZWxmLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAvLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgbmV4dCBsaW5lIHRvIG5vdCBkbyBleHRyYSBpZiBzdGF0ZW1lbnRzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCB0aGVuID0gbmV3VmFsdWUudGhlbjtcblxuICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcHJvbWlzZS5fc3RhdGUgPSAzO1xuICAgICAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHByb21pc2UuZG9SZXNvbHZlKGZ1bmN0aW9uKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICAgICAgdGhlbi5hcHBseShuZXdWYWx1ZSwgYXJndW1lbnRzIGFzIHVua25vd24gYXMgW29uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb25dKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcm9taXNlLl9zdGF0ZSA9IDE7XG4gICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgcHJvbWlzZS5maW5hbGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBwcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlamVjdChuZXdWYWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gMjtcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMuZmluYWxlKCk7XG4gIH1cblxuICBmaW5hbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAyICYmIHRoaXMuX2RlZmVycmVkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5faGFuZGxlZCkge1xuICAgICAgICAgIFByb21pc2UuX3VuaGFuZGxlZFJlamVjdGlvbih0aGlzLl92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRoaXMuaGFuZGxlKHRoaXMuX2RlZmVycmVkc1tpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG4gIH1cblxuICBoYW5kbGUoZGVmZXJyZWQ6IFByb21pc2VIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgbGV0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U8VD47XG5cbiAgICB3aGlsZSAocHJvbWlzZS5fc3RhdGUgPT09IDMpIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLl92YWx1ZSBhcyBQcm9taXNlPFQ+O1xuICAgIH1cblxuICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMCkge1xuICAgICAgcHJvbWlzZS5fZGVmZXJyZWRzLnB1c2goZGVmZXJyZWQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvbWlzZS5faGFuZGxlZCA9IHRydWU7XG4gICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gcHJvbWlzZS5fc3RhdGUgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG5cbiAgICAgIGlmIChjYWxsYmFjayA9PT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDEpIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhwcm9taXNlLl92YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhbGwoYXJyOiBBcnJheTxQcm9taXNlPHVua25vd24+Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5hbGwgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZW1haW5pbmcgPSBhcmdzLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1hbmFnZVJlc3BvbnNlID0gKGk6IG51bWJlciwgdmFsdWU6IFByb21pc2U8dW5rbm93bj4pOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgY29uc3QgdGhlbiA9IHZhbHVlLnRoZW47XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGVuLmNhbGwoXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgKHZhbHVlOiBQcm9taXNlPHVua25vd24+KSA9PiBtYW5hZ2VSZXNwb25zZShpLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVqZWN0XG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFyZ3NbaV0gPSB2YWx1ZTtcblxuICAgICAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkge1xuICAgICAgICAgICAgcmVzb2x2ZShhcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1hbmFnZVJlc3BvbnNlKGksIGFyZ3NbaV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmUodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHJlc29sdmUodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByZWplY3QodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF86IHVuZGVmaW5lZCwgcmVqZWN0OiBGdW5jdGlvbikgPT4gcmVqZWN0KHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmFjZShhcnI6IEFycmF5PFByb21pc2U8dW5rbm93bj4+KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLnJhY2UgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoYXJyW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgX2ltbWVkaWF0ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBpZ25vcmVkID0gd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICB9XG5cbiAgc3RhdGljIF91bmhhbmRsZWRSZWplY3Rpb24oZXJyb3I6IFByb21pc2U8dW5rbm93bj58IG51bGwgfCB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjonLCBlcnJvcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIH1cbiAgfVxufVxuXG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ2NhdGNoJ10gPSBmdW5jdGlvbihvblJlamVjdGVkOiBGdW5jdGlvbik6IHVua25vd24ge1xuICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xufTtcbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsndGhlbiddID0gZnVuY3Rpb24ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj58IHZvaWQge1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKCk6IG51bGwgPT4gbnVsbCk7XG5cbiAgdGhpcy5oYW5kbGUobmV3IFByb21pc2VIYW5kbGVyPHVua25vd24+KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKSk7XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWydmaW5hbGx5J10gPSBmdW5jdGlvbihjYWxsYmFjazogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+fCB2b2lkIHtcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAodmFsdWU6IFByb21pc2U8dW5rbm93bj58IHVuZGVmaW5lZCkgPT4gUHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gdmFsdWUsICgpOiBudWxsID0+IG51bGwpLFxuICAgIChyZWFzb246IEVycm9yIHwgc3RyaW5nKSA9PiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiBQcm9taXNlLnJlamVjdChyZWFzb24pLCAoKTogbnVsbCA9PiBudWxsKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbWlzZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBQcm9taXNlIGZyb20gJy4vUHJvbWlzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb21pc2VIYW5kbGVyPFQ+IHtcbiAgb25GdWxmaWxsZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgb25SZWplY3RlZDogRnVuY3Rpb24gfCBudWxsO1xuICBwcm9taXNlOiBQcm9taXNlPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24sIHByb21pc2U6IFByb21pc2U8VD4pIHtcbiAgICB0aGlzLm9uRnVsZmlsbGVkID0gdHlwZW9mIG9uRnVsZmlsbGVkID09PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiBudWxsO1xuICAgIHRoaXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWplY3RlZCA6IG51bGw7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjUHVibGlzaFN0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWU6IHN0cmluZykgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoU3RhdGlzdGljIHtcbiAgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA/OiBudW1iZXI7XG4gIHNzcmM6IHN0cmluZztcbiAgbWVkaWFUeXBlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBiaXRyYXRlPzogbnVtYmVyO1xuICBieXRlc1NlbnQ6IG51bWJlcjtcbiAgcGFja2V0c1NlbnQ6IG51bWJlcjtcbiAgcmV0cmFuc21pdHRlZEJ5dGVzU2VudD86IG51bWJlcjtcbiAgZmlyQ291bnQ/OiBudW1iZXI7XG4gIGZyYW1lSGVpZ2h0PzogbnVtYmVyO1xuICBmcmFtZVdpZHRoPzogbnVtYmVyO1xuICBmcmFtZXNFbmNvZGVkPzogbnVtYmVyO1xuICBmcmFtZXNTZW50PzogbnVtYmVyO1xuICBoZWFkZXJCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGh1Z2VGcmFtZXNTZW50PzogbnVtYmVyO1xuICBwbGlDb3VudD86IG51bWJlcjtcbiAgcXBTdW0/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlVGltZT86IG51bWJlcjtcbiAgdG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ/OiBudW1iZXI7XG4gIGNvZGVjOiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZTogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcbmNvbnN0IGdldFN0YXRzVGltZW91dER1cmF0aW9uID0gNTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjUHVibGlzaE1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSdGNQdWJsaXNoTW9uaXRvcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgX2lzTW9uaXRvclJ1bm5pbmcgPSB0cnVlO1xuICBwcml2YXRlIF91cGRhdGVUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX21vbml0b3JHZW5lcmF0aW9uID0gMDtcbiAgcHJpdmF0ZSBfYXZhaWxhYmxlVHJhY2tzOiB7XG4gICAgYXVkaW86IGJvb2xlYW47XG4gICAgdmlkZW86IGJvb2xlYW47XG4gIH0gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIsIGlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbiAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnNkcCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgIGNvbnN0IHBhcnNlZExvY2FsRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLnNkcCk7XG4gICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjO1xuICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLnZpZGVvQ29kZWM7XG5cbiAgICAgIHRoaXMuX2F2YWlsYWJsZVRyYWNrcyA9IHtcbiAgICAgICAgYXVkaW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc0F1ZGlvVHJhY2tFbmFibGVkLFxuICAgICAgICB2aWRlbzogcGFyc2VkTG9jYWxEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkICYmIHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmlzVmlkZW9UcmFja0VuYWJsZWRcbiAgICAgIH07XG5cbiAgICAgIGxldCBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IHRydWU7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShmb3JlZ3JvdW5kID0+IHtcbiAgICAgICAgICBpZiAoaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWZvcmVncm91bmQgfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJbnZhbGlkYXRlIGFueSBpbi1mbGlnaHQgcG9sbCBmcm9tIGJlZm9yZSB0aGUgZnJlZXplXG4gICAgICAgICAgdGhpcy5fbW9uaXRvckdlbmVyYXRpb24rKztcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1Jlc3RhcnRpbmcgc3RhdHMgcG9sbGluZyBhZnRlciBmb3JlZ3JvdW5kIHRyYW5zaXRpb24nKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHtcbiAgICAgICAgYXVkaW86IDAsXG4gICAgICAgIHZpZGVvOiAwXG4gICAgICB9O1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uO1xuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW06IHtpZDogc3RyaW5nfSk6IHN0cmluZyA9PiBpdGVtLmlkLmluY2x1ZGVzKCdBdWRpbycpID8gJ2F1ZGlvJyA6IGl0ZW0uaWQuaW5jbHVkZXMoJ1ZpZGVvJykgPyAndmlkZW8nIDogJyc7XG4gICAgbGV0IHRpbWVvdXRIYW5kbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0c1Byb21pc2UgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbCk7XG5cbiAgICAgIGlmICghc3RhdHNQcm9taXNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZTx1bmRlZmluZWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHVuZGVmaW5lZCksIGdldFN0YXRzVGltZW91dER1cmF0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3N0YXRzUHJvbWlzZSwgdGltZW91dFByb21pc2VdKTtcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdGF0cykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ2dldFN0YXRzKCkgdGltZWQgb3V0LCBza2lwcGluZyBzdGF0cyBwcm9jZXNzaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICBsZXQgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgICAgICBzdGF0cy5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSAqIDEwMDA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ291dGJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbmQ6ICd2aWRlbycgfCAnYXVkaW8nIHwgdW5kZWZpbmVkID0gcmVwb3J0LmtpbmQgfHwgcmVwb3J0Lm1lZGlhVHlwZSB8fCBnZXRLaW5kRm9yU2FmYXJpMTEocmVwb3J0KTtcbiAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gcmVwb3J0LmNvZGVjSWQpIHtcbiAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl9hdmFpbGFibGVUcmFja3M/LltraW5kXSkge1xuICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1NlbnQgfHwgMDtcbiAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1NlbnQgPSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8uYnl0ZXNTZW50ID8/IDA7XG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVzRGVsdGEgPSBieXRlcyAtIHByZXZpb3VzQnl0ZXNTZW50O1xuICAgICAgICAgICAgICBjb25zdCB0aW1lRGVsdGEgPSByZXBvcnQudGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgY29uc3QgYml0cmF0ZSA9IGJ5dGVzRGVsdGEgJiYgdGltZURlbHRhID8gTWF0aC5mbG9vcig4ICogYnl0ZXNEZWx0YSAvXG4gICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgc3NyYzogcmVwb3J0LnNzcmMsXG4gICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBiaXRyYXRlLFxuICAgICAgICAgICAgICAgIGJ5dGVzU2VudDogcmVwb3J0LmJ5dGVzU2VudCxcbiAgICAgICAgICAgICAgICBwYWNrZXRzU2VudDogcmVwb3J0LnBhY2tldHNTZW50LFxuICAgICAgICAgICAgICAgIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ6IHJlcG9ydC5yZXRyYW5zbWl0dGVkQnl0ZXNTZW50LFxuICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wIHx8IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZmlyQ291bnQnXSA9IHJlcG9ydC5maXJDb3VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZUhlaWdodCddID0gcmVwb3J0LmZyYW1lSGVpZ2h0O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lV2lkdGgnXSA9IHJlcG9ydC5mcmFtZVdpZHRoO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0VuY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNFbmNvZGVkO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc1NlbnQnXSA9IHJlcG9ydC5mcmFtZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2hlYWRlckJ5dGVzU2VudCddID0gcmVwb3J0LmhlYWRlckJ5dGVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydodWdlRnJhbWVzU2VudCddID0gcmVwb3J0Lmh1Z2VGcmFtZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3BsaUNvdW50J10gPSByZXBvcnQucGxpQ291bnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsncXBTdW0nXSA9IHJlcG9ydC5xcFN1bTtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWyd0b3RhbEVuY29kZVRpbWUnXSA9IHJlcG9ydC50b3RhbEVuY29kZVRpbWU7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsndG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQnXSA9IHJlcG9ydC50b3RhbEVuY29kZWRCeXRlc1RhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LnZpZGVvPy5mcmFtZXNFbmNvZGVkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmcHMgPSAocmVwb3J0LmZyYW1lc0VuY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRW5jb2RlZCkgL1xuICAgICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgICAxMDAwO1xuXG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcHMnXSA9IGZwcyA/IE1hdGgucm91bmQoZnBzICogMTAwKSAvIDEwMCA6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIud2FybignZ2V0U3RhdHMoKSByZWplY3RlZCcsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nICYmIGdlbmVyYXRpb24gPT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2RlY0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZHBQYXJzZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZHA6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzQXVkaW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzVmlkZW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2RwOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZHAgPSBzZHA7XG5cbiAgICBjb25zdCBzZHBTcGxpdEJ5TGluZXMgPSB0aGlzLl9zZHAuc3BsaXQoLyhcXHJcXG58XFxyfFxcbikvKTtcbiAgICBjb25zdCBzZHBTcGxpdEJ5VHJhY2tzID0gdGhpcy5fc2RwLnNwbGl0KC8oPzpefFtcXHJcXG5dKW09Lyk7XG5cbiAgICB0aGlzLl9hdWRpb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCdhdWRpbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5fdmlkZW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygndmlkZW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCdhdWRpbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICAgIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCd2aWRlbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICB9XG5cbiAgZ2V0IGF1ZGlvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9Db2RlYztcbiAgfVxuXG4gIGdldCB2aWRlb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZGVvQ29kZWM7XG4gIH1cblxuICBnZXQgaXNBdWRpb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1ZpZGVvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyYWNrQnlUeXBlRW5hYmxlZCh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlUcmFja3M6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2RwU2VjdGlvbkZvclR5cGUgPSBzZHBTcGxpdEJ5VHJhY2tzLmZpbmQoc2RwVHJhY2sgPT4gc2RwVHJhY2suc3RhcnRzV2l0aCh0eXBlKSk7XG5cbiAgICBpZiAoIXNkcFNlY3Rpb25Gb3JUeXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICFzZHBTZWN0aW9uRm9yVHlwZS5pbmNsdWRlcyhgYT1pbmFjdGl2ZWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvZGVjKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeUxpbmVzOiBzdHJpbmcgW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ0bWFwID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBtPSR7dHlwZX1gKSk/LnNwbGl0KCcgJylbM10gfHwgJyc7XG4gICAgY29uc3QgdXNlZENvZGVjTGluZSA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgYT1ydHBtYXA6JHtydG1hcH1gKSk7XG4gICAgY29uc3QgdXNlZENvZGVjID0gdXNlZENvZGVjTGluZT8uc3BsaXQoJyAnKVsxXSB8fCAnJztcbiAgICBjb25zdCBjb2RlY05hbWUgPSB1c2VkQ29kZWMuc3BsaXQoJy8nKVswXTtcblxuICAgIHJldHVybiBjb2RlY05hbWU7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJTGVnYWN5UlRDU3RhdHNSZXBvcnR9IGZyb20gJy4vUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuXG5jbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb24gaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmFuaWxsYVBlZXJDb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQud2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBnZXQgbmF0aXZlKCk6IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjb25uZWN0aW9uU3RhdGUoKTogUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgaWNlQ29ubmVjdGlvblN0YXRlKCk6IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uaWNlQ29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LnNldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5nZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFRyYW5zY2VpdmVycyA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uYWRkVHJhbnNjZWl2ZXIgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPZmZlcihvcHRpb25zPzogUlRDT2ZmZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlT2ZmZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQW5zd2VyKG9wdGlvbnM/OiBSVENBbnN3ZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlQW5zd2VyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0NyeXB0byA9IGRlc2NyaXB0aW9uLnNkcD8ubWF0Y2goL2E9Y3J5cHRvOi9pKTtcblxuICAgIGlmIChoYXNDcnlwdG8pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTRFAgYT1jcnlwdG8gaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGdldFNlbmRlcnMoKTogUlRDUnRwU2VuZGVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U2VuZGVycygpO1xuICB9XG5cbiAgZ2V0UmVjZWl2ZXJzKCk6IFJUQ1J0cFJlY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gIH1cblxuICBnZXRTdGF0cyhzZWxlY3Rvcj86IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsKTogUHJvbWlzZTxSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMoc2VsZWN0b3IpO1xuICB9XG5cbiAgZ2V0U3RhdHNMZWdhY3koKTogUHJvbWlzZTxJTGVnYWN5UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgLy8gSWdub3JlZCBkdWUgdG8gdHlwZXNjcmlwdCBub3QgaGF2aW5nIGxlZ2FjeSAnZ2V0U3RhdHMnIG1ldGhvZCB0eXBlIGRlZmluaXRpb25cbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSAnZ2V0U3RhdHMnIG1ldGhvZCBmb3JcbiAgICAgIC8vIENocm9tZUA8PSA2NiBkZXRhaWxlZCBoZXJlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02Mjc4MTZcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMocmVzb2x2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VHJhbnNjZWl2ZXJzKCk6IFJUQ1J0cFRyYW5zY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCk7XG4gIH1cblxuICBhZGRUcmFuc2NlaXZlcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCk6IFJUQ1J0cFRyYW5zY2VpdmVyIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IHZvaWQge1xuICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYWNrKHRyYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbmZpZ3VyYXRpb24oKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBzZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHNldCBvbnRyYWNrKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjayA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb250cmFjaygpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2s7XG4gIH1cblxuICBzZXQgb25pY2VjYW5kaWRhdGUoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2VjYW5kaWRhdGUoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZTtcbiAgfVxuXG4gIHNldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBzZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNsb3NlKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYW5pbGxhUGVlckNvbm5lY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IHtcbiAgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+KHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZShuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogVFtdLCBsaXN0ZW5lcjogVCkge1xuICAgIHN1cGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiAoKHZhbHVlOiBUKSA9PiB2b2lkKVtdO1xuICBwcml2YXRlIF92YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlICE9PSB2YWx1ZTtcblxuICAgIGlmIChjaGFuZ2VkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBjb21wYXJhYmxlID0gdmFsdWUgYXMgdW5rbm93biBhcyBJQ29tcGFyYWJsZTxUPjtcblxuICAgICAgaWYgKHR5cGVvZiBjb21wYXJhYmxlLmVxdWFscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjaGFuZ2VkID0gIWNvbXBhcmFibGUuZXF1YWxzKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBbLi4udGhpcy5fbGlzdGVuZXJzXSkge1xuICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICBsaXN0ZW5lcih0aGlzLl92YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGVMaXN0ZW5lcjwodmFsdWU6IFQpID0+IHZvaWQ+KHRoaXMuX2xpc3RlbmVycywgbGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHN0YXRpYyBnZXRFbnZpcm9ubWVudEZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgICByZXR1cm4gYmFzZVVSTC5vcmlnaW47XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtHbG9iYWxTY29wZX0gZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4uL2xvZ2dlci9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuaW1wb3J0IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGZyb20gJy4uL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuLi9ydGMvSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9FbnZpcm9ubWVudCc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IHtTaGFrYVBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lTaGFrYVBsYXllcic7XG5pbXBvcnQge0hsc1BsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lIbHNQbGF5ZXInO1xuaW1wb3J0IHtXZWJQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JV2ViUGxheWVyJztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JUHJvdmlkZWRHbG9iYWxTY29wZSc7XG5cbmNvbnN0IHBhZ2VMb2FkVGltZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU/LnBhZ2VMb2FkVGltZSB8fCBEYXRlLm5vdygpO1xuXG5pbnRlcmZhY2UgSUluaXRPcHRpb25zIHtcbiAgZGlzY292ZXJ5VXJpPzogc3RyaW5nO1xuICBwZWVyQ29ubmVjdGlvbkZhY3Rvcnk/OiBJUGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB0ZWxlbWV0cnlMZXZlbD86IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgY29uc29sZUxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0/OiBib29sZWFuO1xuICBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZT86IGJvb2xlYW47XG4gIHdlYlBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgc2hha2FQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgaGxzSnNMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNESyB7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3dlYlBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfc2hha2FQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfaGxzSnNMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9lbnZpcm9ubWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlVcmw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gODtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUxldmVsOiBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPiA9IG5ldyBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPihUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCk7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoQnVpbGRGZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RlbmFuY3k6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSBTdHJpbmdzLnJhbmRvbSgzMik7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2FkZWRUaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1NESycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5pdGlhbGl6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluaXRpYWxpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KFNESy5faW5pdGlhbGl6ZWQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlEaXNjb3ZlcnlVcmk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KERpc2NvdmVyeVVyaS51cmkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4oUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeSk7XG5cbiAgc3RhdGljIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZW5hbmN5KCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGNsaWVudFNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTREsuX2NsaWVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9hZGVkVGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiBTREsuX2xvYWRlZFRpbWVzdGFtcDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5pdGlhbGl6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seUluaXRpYWxpemVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlVcmkoKTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5RGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljUmV0cnlPbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICB9XG5cbiAgc3RhdGljIGdldCBza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2ViUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dlYlBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hha2FQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9zaGFrYVBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaGxzSnNMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5faGxzSnNMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1ldHJpY3NTZXJ2aWNlKCk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICByZXR1cm4gU0RLLl9tZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeVVybCgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZWxlbWV0cnlVcmw7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cztcbiAgfVxuXG4gIHN0YXRpYyBzZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyhyZXRyaWVzQW1vdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gcmV0cmllc0Ftb3VudDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUodGhpcy5fbG9nZ2VyLnRocmVzaG9sZC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3NlckRldGVjdG9yKCk6IEJyb3dzZXJEZXRlY3RvciB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IExvZ2dlckZhY3RvcnkudGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSA9IFNESy5wYWdlTG9hZFRpbWU7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgVVJMIHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyICYmIHRlbmFuY3kpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgdGVuYW5jeSB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKERpc2NvdmVyeVVyaS51cmkudmFsdWUpO1xuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBTREsuX21ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbWV0cmljcy1sZXZlbCcpIGFzIFRlbGVtZXRyeUxldmVsVHlwZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwoVGVsZW1ldHJ5TGV2ZWxbdmFsdWVdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwgPSBTREsuX3RlbGVtZXRyeUxldmVsLnN1YnNjcmliZSh0ZWxlbWV0cnlMZXZlbCA9PiB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLmRpc2NvdmVyeVVyaS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLnRlbGVtZXRyeVVybC52YWx1ZSA9IFNESy5nZXRUZWxlbWV0cnlVcmwodmFsdWUpO1xuICAgICAgU0RLLl9lbnZpcm9ubWVudC52YWx1ZSA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjaGFubmVsVG9rZW4gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtY2hhbm5lbC10b2tlbicpO1xuXG4gICAgaWYgKGNoYW5uZWxUb2tlbikge1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbihjaGFubmVsVG9rZW4pO1xuXG4gICAgICBTREsuX3RlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeTtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmlWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC11cmknKTtcblxuICAgIGlmICh1cmlWYWx1ZSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaVZhbHVlO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVUklWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1iYXNlLXVyaScpO1xuXG4gICAgaWYgKGJhc2VVUklWYWx1ZSkge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlO1xuICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChiYXNlVVJJVmFsdWUpO1xuXG4gICAgICB1cmkucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC1iYXNlLXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgb25Mb2FkKGdsb2JhbFNjb3BlOiBJR2xvYmFsU2NvcGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NESyBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ2xvYmFsU2NvcGUuYWRkV2luZG93RXZlbnRMaXN0ZW5lcigndW5sb2FkJywgKCkgPT4ge1xuICAgICAgU0RLLmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIFNESy5hcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBuZXcgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBzdGF0aWMgaW5pdChvcHRpb25zPzogSUluaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlOiBJSW5pdE9wdGlvbnMgJiB7Z2xvYmFsU2NvcGU/OiBJUHJvdmlkZWRHbG9iYWxTY29wZX0gPSBvcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSkge1xuICAgICAgR2xvYmFsU2NvcGUuc2V0SW5zdGFuY2Uob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kaXNjb3ZlcnlVcmkpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBvcHRpb25zLmRpc2NvdmVyeVVyaTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpIHtcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUgPSBvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCAmJiBUZWxlbWV0cnlMZXZlbFtvcHRpb25zLnRlbGVtZXRyeUxldmVsXSkge1xuICAgICAgU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChvcHRpb25zLnRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMubG9nZ2luZ0xldmVsXSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLnRocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMubG9nZ2luZ0xldmVsKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsXSkge1xuICAgICAgY29uc3QgY29uc29sZUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgQ29uc29sZUFwcGVuZGVyKTtcblxuICAgICAgaWYgKGNvbnNvbGVBcHBlbmRlcikge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZShjb25zb2xlQXBwZW5kZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICE9PSAnT2ZmJykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLndlYlBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fd2ViUGxheWVyTG9hZGVyID0gb3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyID0gb3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5obHNKc0xvYWRlcikge1xuICAgICAgdGhpcy5faGxzSnNMb2FkZXIgPSBvcHRpb25zLmhsc0pzTG9hZGVyO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIFNESy5faW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5HbG9iYWxTY29wZS5zdWJzY3JpYmUoU0RLLm9uTG9hZC5iaW5kKFNESykpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgdHlwZSBCaXRyYXRlU3RhdGVUeXBlID0gJ0tlZXAnIHwgJ1Jlc2V0JztcbmV4cG9ydCB0eXBlIEJpdHJhdGVNb2RlVHlwZSA9ICdOb3JtYWwnIHwgJ0ZvcmNlJyB8ICdSZXNldCc7XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVTdGF0ZSB7XG4gIEtlZXAsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVNb2RlIHtcbiAgTm9ybWFsLFxuICBGb3JjZSxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUge1xuICBhcGlWZXJzaW9uOiBudW1iZXI7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgYml0cmF0ZUluQml0c1BlclNlY29uZDogbnVtYmVyO1xuICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZVR5cGU7XG4gIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZVR5cGU7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcblxuZXhwb3J0IHR5cGUgUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtcbiAgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBvcHRpb25zLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmICghcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgIGlmICh0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KSB7XG4gICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VNZWRpYVN0cmVhbSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtLnZhbHVlPy5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkNvbnRleHQge1xuICB0b2tlbjogU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgdG9rZW5FeHBpcmluZzogU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPih0b2tlbik7XG4gICAgdGhpcy50b2tlbkV4cGlyaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0RGlzY292ZXJ5VXJpID0gJ2h0dHBzOi8vcGNhc3QucGhlbml4cnRzLmNvbS9wY2FzdC9lbmRQb2ludHMnO1xuXG5leHBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc2NvdmVyeVNlcnZpY2UgZnJvbSAnLi9EaXNjb3ZlcnlTZXJ2aWNlJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCA9IDYwMDAwO1xuXG5pbnRlcmZhY2UgSVBlclVSSUVuZHBvaW50IHsgW3g6IHN0cmluZ106IFByb21pc2U8RW5kUG9pbnQ+IH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBJUGVyVVJJRW5kcG9pbnQgPSB7fTtcblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxFbmRQb2ludD4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpXG4gICAgICAgICAgLnRoZW4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSlcbiAgICAgICAgICAudGhlbigoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmk6IFVSTCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgcmV0dXJuIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlTZXJ2aWNlID0gbmV3IERpc2NvdmVyeVNlcnZpY2UodXJpKTtcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9IGRpc2NvdmVyeVNlcnZpY2UuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQoKTtcbiAgICBjb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaWdub3JlZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID09PSBjYWNoZWRWYWx1ZSkge1xuICAgICAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgICAgIH1cbiAgICAgIH0sIGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwpO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpOiBVUkwpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5jb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5LnByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dCkpXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9IGZyb20gJy4uL2RlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5VXJpIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Rpc2NvdmVyeVVyaTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPihkZWZhdWx0RGlzY292ZXJ5VXJpKTtcblxuICBzdGF0aWMgZ2V0IHVyaSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBEaXNjb3ZlcnlVcmkuX2Rpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZERpc2NvdmVyeVVybCh1cmk6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnlVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQge1xuICBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlLFxuICBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Rcbn0gZnJvbSAnLi4vYXBpL1N1YnNjcmliZSc7XG5pbXBvcnQge0lTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QsIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlfSBmcm9tICcuLi9hcGkvU2V0UmVtb3RlRGVzY3JpcHRpb24nO1xuaW1wb3J0IHtJRGVzdHJveVN0cmVhbVJlcXVlc3QsIElEZXN0cm95U3RyZWFtUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9EZXN0cm95U3RyZWFtJztcbmltcG9ydCB7SUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0LCBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlfSBmcm9tICcuLi9hcGkvQWRkSWNlQ2FuZGlkYXRlcyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZSwgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEJpdHJhdGVNb2RlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVNb2RlTWFwcGluZyc7XG5pbXBvcnQgQml0cmF0ZVN0YXRlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVTdGF0ZU1hcHBpbmcnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtcbiAgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UsXG4gIElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0LFxuICBQdWJsaXNoU3RhdHVzXG59IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuY29uc3QgYXBpVmVyc2lvbiA9IDc7XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZVN0YXR1cyA9ICdvaycgfCAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFJlbW92ZVRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgRGVzdHJveVN0cmVhbVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW0ge1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sge1xuICAocmVxdWVzdDogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sge1xuICAocmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVPcHRpb25zID0ge1xuICBvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ25vdC1mb3VuZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn07XG5cbmludGVyZmFjZSBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzO1xuICBzZXNzaW9uRGVzY3JpcHRpb24/OiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5pbnRlcmZhY2UgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXM7XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXM7XG59XG5cbmludGVyZmFjZSBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kUG9pbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRW5kUG9pbnQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcm91bmRUcmlwVGltZTogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IHN0cmluZywgdGltZW91dDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXQgPSB0aW1lb3V0O1xuXG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCBwb2ludCByZXF1aXJlcyBhIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEVuZFBvaW50W3VyaT0ke3RoaXMuX3VyaX1dYDtcbiAgfVxuXG4gIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkUGluZ1VybCgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+XG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgUGluZyB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRoaXMuX3RpbWVvdXQpKVxuICAgIF0pO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHsgLyogSGFuZGxlICovXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcm91bmRUcmlwVGltZSA9IGZpbmlzaGVkIC0gc3RhcnQ7XG5cbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIGFzeW5jIHN1YnNjcmliZSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlciwgb3B0aW9uczogU3Vic2NyaWJlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdzdWJzY3JpYmUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGxldCByZXF1ZXN0Qm9keTogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdDtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH1cblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/LihyZXF1ZXN0Qm9keSk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkocmVxdWVzdEJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIG5ldyBFcnJvcihgU3Vic2NyaWJlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU3Vic2NyaWJlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHN1YnNjcmliZSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzdWJzY3JpYmVSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHN1YnNjcmliZVJlc3BvbnNlKTtcblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIHB1Ymxpc2gobmFtZTogc3RyaW5nLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlcik6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdwdWJsaXNoJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRoT2ZmZXI6IElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRoT2ZmZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYm9keVdpdGhvdXRPZmZlcjogSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhvdXRPZmZlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHB1Ymxpc2gnLCBuZXcgRXJyb3IoYFB1Ymxpc2ggdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogUHVibGlzaFN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlKHRlbmFuY3ksIGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBwdWJsaXNoIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbTogSVN0cmVhbSwgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc2NyaXB0aW9uJywgJ3JlbW90ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbT8uc2hhcmVkU2VjcmV0LFxuICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IHNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICBzZHA6IHNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBuZXcgRXJyb3IoYFNldCByZW1vdGUgZGVzY3JpcHRpb24gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHNldCByZW1vdGUgZGVzY3JpcHRpb24gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGxpbWl0Qml0cmF0ZShcbiAgICBzdHJlYW06IElTdHJlYW0sXG4gICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgYml0cmF0ZUluQml0c1BlclNlY29uZDogQml0c1BlclNlY29uZCxcbiAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSxcbiAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUsXG4gICk6IFByb21pc2U8SVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdiaXRyYXRlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZSksXG4gICAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlKVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBuZXcgRXJyb3IoYFNldCBsaW1pdCBiaXRyYXRlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IHNldCBsaW1pdCBiaXRyYXRlIHJlc3BvbnNlIFslc10gaW4gWyVzXSBtcycsIHN0YXR1cywgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4ge3N0YXR1c307XG4gIH1cblxuICBhc3luYyBhZGRJY2VDYW5kaWRhdGVzKHN0cmVhbTogSVN0cmVhbSwgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10sIGRpc2NvdmVyeUNvbXBsZXRlZDogYm9vbGVhbiwgb3B0aW9uczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2ljZScsICdjYW5kaWRhdGVzJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgY2FuZGlkYXRlcyxcbiAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCxcbiAgICAgIG9wdGlvbnNcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIG5ldyBFcnJvcihgQWRkIGljZSBjYW5kaWRhdGVzIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBhZGQgSUNFIGNhbmRpZGF0ZXMgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtKHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIG5ldyBFcnJvcihgRGVsZXRlIHN0cmVhbSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgc3RyZWFtJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGRlc3Ryb3kgc3RyZWFtIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGRlc3Ryb3lTdHJlYW1SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFuYXZpZ2F0b3I/LnNlbmRCZWFjb24pIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmRlc3Ryb3lTdHJlYW0oc3RyZWFtLCByZWFzb24pO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBuYXZpZ2F0b3Iuc2VuZEJlYWNvbih1cmwsIGZvcm1EYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwocGF0aDogc3RyaW5nW10pOiBVUkwge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBwYXRoQXNBcnJheSA9IHVyaS5wYXRobmFtZS5zcGxpdCgnLycpO1xuXG4gICAgcGF0aEFzQXJyYXkubGVuZ3RoID0gcGF0aEFzQXJyYXkubGVuZ3RoIC0gMTtcblxuICAgIHVyaS5wYXRobmFtZSA9IHBhdGhBc0FycmF5LmNvbmNhdCguLi5wYXRoKS5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gdXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBpbmdVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3R5cGUnLCAnaHR0cCcpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogUHVibGlzaFN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDY6XG4gICAgICAgIHJldHVybiAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU3Vic2NyaWJlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IERlc3Ryb3lTdHJlYW1TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZTtcbiAgICBjb25zdCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIHNoYXJlZFNlY3JldCxcbiAgICAgIGxhZyxcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIC4uLm90aGVyUHJvcGVydGllc1xuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0XG4gICAgICB9LFxuICAgICAgbGFnLFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfTtcblxuICAgIGlmIChydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2U7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkOiBkYXRhLnN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXQ6IGRhdGEuc2hhcmVkU2VjcmV0XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oZGF0YS5ydGNDb25maWd1cmF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwdWJsaXNoUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbiA9IHtpY2VTZXJ2ZXJzOiBbXX07XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5ID0gY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID09PSAnbnVtYmVyJykge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9IGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemU7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgICB1cmxzOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJscyxcbiAgICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgPSBjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kgPSBjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3k7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ0Y0NvbmZpZ3VyYXRpb247XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlOiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24gPSBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlOiBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSURlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtOiBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi8uLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi8uLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5cbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBQdWJsaXNoZXJDb250ZXh0IGZyb20gJy4vUHVibGlzaGVyQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0LCB7UGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0YXRlQ29udGV4dCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBSZWFsVGltZVB1Ymxpc2hlciBmcm9tICcuL1JlYWxUaW1lUHVibGlzaGVyJztcblxuY29uc3QgZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uID0gJ2NsaWVudDp0ZXJtaW5hdGlvbic7XG5jb25zdCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDMwMDA7XG5jb25zdCBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAxNTAwMDtcbmNvbnN0IG9uZUhvdXJJbk1pbGxpc2Vjb25kcyA9IDM2MDAgKiAxMDAwO1xuY29uc3QgbWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMiAqIG9uZUhvdXJJbk1pbGxpc2Vjb25kcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUHVibGlzaGVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuQ29udGV4dDogVG9rZW5Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbjogUmVhZE9ubHlTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhdGU6IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW5FeHBpcmluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dGhvcml6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlPbmxpbmU6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMb2FkaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UHVibGlzaGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YW5kYnk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdG9wcGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RmFpbHVyZUNvdW50OiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFbmRQb2ludDogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RyZWFtOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJ0Y1N0YXRpc3RpY3M6IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuXG4gIGNvbnN0cnVjdG9yKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIG5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zOiBQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zID0ge2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0fTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dCA9IG5ldyBUb2tlbkNvbnRleHQodG9rZW4pO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQgPSBuZXcgUHVibGlzaGVyQ29udGV4dChuYW1lKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KHBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3N0YXRlQ29udGV4dCA9IG5ldyBTdGF0ZUNvbnRleHQoKTtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5fcHVibGlzaGVyU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbik7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YXRlID0gbmV3IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmF1dGhvcml6ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5T25saW5lID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlMb2FkaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UHVibGlzaGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YW5kYnkgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhbmRieSk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdG9wcGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0pO1xuICAgIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcyA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5ydGNTdGF0aXN0aWNzKTtcbiAgICB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbSk7XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcbiAgICB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5ID0gbmV3IFNlc3Npb25UZWxlbWV0cnkoU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlICE9PSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIH0sIGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzKTtcbiAgICAgIH0pKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCAnY2xpZW50OnRlcm1pbmF0aW9uLW9uLXdpbmRvdy11bmxvYWQnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgdG9rZW4oKTogRW5jb2RlZEVkZ2VUb2tlbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgfVxuXG4gIHNldCB0b2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHBlZXJDb25uZWN0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgc3RhdGUoKTogUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhdGU7XG4gIH1cblxuICBnZXQgdG9rZW5FeHBpcmluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmc7XG4gIH1cblxuICBnZXQgYXV0aG9yaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQ7XG4gIH1cblxuICBnZXQgb25saW5lKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5T25saW5lO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHB1Ymxpc2hpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQdWJsaXNoaW5nO1xuICB9XG5cbiAgZ2V0IHN0YW5kYnkoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGFuZGJ5O1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdG9wcGVkO1xuICB9XG5cbiAgZ2V0IGZhaWx1cmVDb3VudCgpOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50O1xuICB9XG5cbiAgZ2V0IGVuZFBvaW50KCk6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlFbmRQb2ludDtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RyZWFtO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQ7XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljcygpOiBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3M7XG4gIH1cblxuICBnZXQgbWVkaWFTdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcyhyZWFzb24pO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLmNsb3NlKCk7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9wKCdjbGllbnQ6Y2hhbm5lbC1kaXNwb3NlJykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFVyaSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IFVSTCB7XG4gICAgY29uc3QgdXJsID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudXJpO1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGRpc2NvdmVyIFVSSSBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHN0YXJ0Jyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1N0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpzdGFydCcpO1xuXG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJpKHRva2VuKTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IFB1Ymxpc2hlclN0YXRlLkVycm9yIHx8IHN0YXRlID09PSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUHVibGlzaGVyID0gbmV3IFJlYWxUaW1lUHVibGlzaGVyKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIHJldHVybiBzdHJlYW1QdWJsaXNoZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXApXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgcHVibGlzaGluZycsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZyB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gMDtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0TWVkaWFTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKG1lZGlhVHJhY2sgPT4ge1xuICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWU/LmdldFNlbmRlcnMoKS5mb3JFYWNoKHNlbmRlciA9PiB7XG4gICAgICAgICAgaWYgKG1lZGlhVHJhY2sua2luZCA9PT0gc2VuZGVyPy50cmFjaz8ua2luZCAmJiBtZWRpYVRyYWNrLmlkICE9PSBzZW5kZXIudHJhY2suaWQpIHtcbiAgICAgICAgICAgIHNlbmRlci5yZXBsYWNlVHJhY2sobWVkaWFUcmFjayk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmV0cnlJbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lOlxuICAgICAgICByZXR1cm4gc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwgPSAwO1xuXG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICBpZiAoIXRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsID0gRGF0ZS5ub3coKSAtIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcztcblxuICAgICAgICBpZiAobWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIDw9IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdIFslc10gYWZ0ZXIgZXhjZWVkaW5nIHRpbWVvdXQnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlLCBQdWJsaXNoZXJTdGF0ZVt0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUsIFB1Ymxpc2hlclN0YXRlW3RoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgcHVibGlzaGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBpbml0aWFsaXppbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gY2hhbm5lbCBub3QgZm91bmQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIGNvbmZpZ3VyYXRpb24gZXJyb3IsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQuZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0b3BwZWQudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhbmRieS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW0odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUsIHJlYXNvbilcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRGVzdHJveWVkIHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0nLCB0aGlzLnN0cmVhbUlkLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgRW5kUG9pbnQsIHtcbiAgSVN0cmVhbSxcbiAgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyxcbiAgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNcbn0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uLy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0lSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y1B1Ymxpc2hNb25pdG9yJztcbmltcG9ydCB7UHVibGlzaFN0YXR1c30gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXJDb250ZXh0IHtcbiAgcHVibGlzaGVySW5pdGlhbGl6YXRpb246IERhdGU7XG4gIGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgcHVibGlzaGVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBzdGF0ZTogU3ViamVjdDxQdWJsaXNoZXJTdGF0ZT47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGlzaGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgZmFpbHVyZUNvdW50OiBTdWJqZWN0PG51bWJlcj47XG4gIGVuZFBvaW50OiBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD47XG4gIHN0cmVhbTogU3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHJ0Y1N0YXRpc3RpY3M6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIGNsZWFyRmFpbHVyZUNvdW50VGltZW91dDogbnVtYmVyO1xuICBzdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucHVibGlzaGVyRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnB1Ymxpc2hlckluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KFB1Ymxpc2hlclN0YXRlLkluaXRpYWxpemluZyk7XG4gICAgdGhpcy5hdXRob3JpemVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmUgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5wdWJsaXNoaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RhbmRieSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BwZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQgPSBuZXcgU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHRoaXMuZW5kUG9pbnQgPSBuZXcgU3ViamVjdDxFbmRQb2ludCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuc3RyZWFtID0gbmV3IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gMDtcbiAgICB0aGlzLm5hbWUgPSBuYW1lICYmIG5hbWUubGVuZ3RoID8gbmFtZSA6IHRoaXMuZ2VuZXJhdGVTY3JlZW5OYW1lKCk7XG4gICAgdGhpcy5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gMDtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbS5zdHJlYW1JZDtcbiAgfVxuXG4gIGFwcGx5UHVibGlzaFN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICB0aGlzLmFwcGx5VW5hdXRob3JpemVkKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5hcHBseU5vdEZvdW5kKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHRoaXMuYXBwbHlVbmF1dGhvcml6ZWQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmFwcGx5Tm90Rm91bmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHRoaXMuYXBwbHlVbmF1dGhvcml6ZWQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmFwcGx5Tm90Rm91bmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgbWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogUHVibGlzaFN0YXR1cyk6IFB1Ymxpc2hlclN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ7XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkO1xuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnOlxuICAgICAgY2FzZSAnZm9yYmlkZGVuLXRhZyc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5VW5oYW5kbGVkRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUrKztcbiAgICB0aGlzLnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIGFwcGx5VW5hdXRob3JpemVkKCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICB0aGlzLnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIGFwcGx5Tm90Rm91bmQoKTogdm9pZCB7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVNjcmVlbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5ncy5yYW5kb20oMTIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIFB1Ymxpc2hlclN0YXRlIHtcbiAgSW5pdGlhbGl6aW5nID0gMCxcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nID0gMixcbiAgUHVibGlzaGluZyA9IDMsXG4gIFJlY292ZXJpbmcgPSA0LFxuICBSZWNvbm5lY3RpbmcgPSA1LFxuICBTdG9wcGVkID0gNixcbiAgVW5hdXRob3JpemVkID0gNyxcbiAgR2VvUmVzdHJpY3RlZCA9IDgsXG4gIEdlb0Jsb2NrZWQgPSA5LFxuICBVbnN1cHBvcnRlZEZlYXR1cmUgPSAxMCxcbiAgTm90Rm91bmQgPSAxMSxcbiAgQ29uZmlndXJhdGlvbkVycm9yID0gMTIsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciA9IDEzLFxuICBDb25uZWN0aW9uRXJyb3IgPSAxNCxcbiAgQ2xpZW50U3RhcnRFcnJvciA9IDE1LFxuICBFcnJvciA9IDE2XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1Ymxpc2hlclN0YXRlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBQdWJsaXNoZXIgZnJvbSAnLi9QdWJsaXNoZXInO1xuXG50eXBlIENyZWF0ZVB1Ymxpc2hlck9wdGlvbnMgPSB7XG4gIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbTtcbiAgdG9rZW46IEVuY29kZWRFZGdlVG9rZW47XG4gIG5hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXJzIHtcbiAgc3RhdGljIGNyZWF0ZVB1Ymxpc2hlcihvcHRpb25zOiBDcmVhdGVQdWJsaXNoZXJPcHRpb25zKTogUHVibGlzaGVyIHtcbiAgICBpZiAoIVNESy5pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgbm90IGxvYWRlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFB1Ymxpc2hlcihvcHRpb25zLm1lZGlhU3RyZWFtLCBvcHRpb25zLnRva2VuLCBvcHRpb25zLm5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1B1Ymxpc2hlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uLy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMsIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uLy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgUnRjUHVibGlzaE1vbml0b3IgZnJvbSAnLi4vLi4vcnRjL1J0Y1B1Ymxpc2hNb25pdG9yJztcblxuaW1wb3J0IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlcic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgUHVibGlzaGVyQ29udGV4dCBmcm9tICcuL1B1Ymxpc2hlckNvbnRleHQnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IHNvZnRSZXN0YXJ0SW50ZXJ2YWwgPSAxMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFsVGltZVB1Ymxpc2hlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSZWFsVGltZVB1Ymxpc2hlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQgPSBwdWJsaXNoZXJDb250ZXh0O1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IHBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXJ0KHVyaTogVVJMLCB0b2tlbjogc3RyaW5nLCBsaXN0ZW5PblN0cmVhbVNldHVwOiBTdHJlYW1TZXR1cExpc3RlbmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZWRpYVN0cmVhbSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghbWVkaWFTdHJlYW0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignUHVibGlzaCBmYWlsZWQgbm8gbWVkaWEgc3RyZWFtIHByb3ZpZGVkJyk7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFUcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKTtcbiAgICBjb25zdCB0cmFja0tpbmRzID0gbWVkaWFUcmFja3MucmVkdWNlKChhY2N1bXVsYXRvcjogKCdhdWRpbycgfCAndmlkZW8nKVtdLCB0cmFjaykgPT4ge1xuICAgICAgaWYgKHRyYWNrLmtpbmQgPT09ICdhdWRpbycgfHwgdHJhY2sua2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICBhY2N1bXVsYXRvci5wdXNoKHRyYWNrLmtpbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gVHJhY2sga2luZCBpcyBub3Qgc3VwcG9ydGVkJywgdHJhY2sua2luZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKSxcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKCdzZW5kb25seScsIHRyYWNrS2luZHMpXG4gICAgICAgIC50aGVuKCh7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259KSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYWxPZmZlcixcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICBdKVxuICAgICAgLnRoZW4oKFtlbmRQb2ludCwge2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufV0pID0+IHtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gZW5kUG9pbnQ7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW5nIHRvIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0xvY2FsIG9mZmVyOlxcbicgKyBsb2NhbE9mZmVyLnNkcCk7XG5cbiAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID4gMCkge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5kaXNwb3NlUGVlckNvbm5lY3Rpb24oKTtcblxuICAgICAgICAgIHJldHVybiBlbmRQb2ludC5wdWJsaXNoKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubmFtZSwgdG9rZW4sIG51bGwsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5wdWJsaXNoKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubmFtZSwgdG9rZW4sIGxvY2FsT2ZmZXIsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IHtzdGF0dXN9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAnWyVzXSBQdWJsaXNoIGZhaWxlZCB3aXRoIHN0YXR1cyBbJXNdJyxcbiAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBQdWJsaXNoIGNvbXBsZXRlZCBbJXNdIFslal0gWyVqXSBbJWpdIFslal0nLFxuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbiBhcyBSVENDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDogdW5kZWZpbmVkIHwgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZFN0cmVhbSh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgYXMgTWVkaWFTdHJlYW0pO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwQWRkSWNlQ2FuZGlkYXRlc1N0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIGZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgdHJ5aW5nIHRvIHJlY29ubmVjdCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHJldHJ5aW5nIHRvIGNvbm5lY3QnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSBhcyBuZXZlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24/LnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFuc3dlciA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgYW5zd2VyLnNkcCk7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgaWYgKCFlbmRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uLCBFbmRQb2ludCBpcyBub3Qgc2V0Jyk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbj8uc2RwKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2NyaXB0aW9uIGFzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuc3VjY2Vzcyh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZztcblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y1B1Ymxpc2hNb25pdG9yID0gbmV3IFJ0Y1B1Ymxpc2hNb25pdG9yKFxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU/LnJvdW5kVHJpcFRpbWUgPyB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlLnJvdW5kVHJpcFRpbWUgLyA0IDogMCxcbiAgICAgICAgICAgICAgICBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHJ0Y1B1Ymxpc2hNb25pdG9yKTtcblxuICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gcnRjUHVibGlzaE1vbml0b3IucnRjU3RhdGlzdGljLnN1YnNjcmliZShzdGF0aXN0aWNzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnJ0Y1N0YXRpc3RpY3MudmFsdWUgPSBzdGF0aXN0aWNzO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPCBTREsubWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyB8fCAhU0RLLmF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMrKztcblxuICAgICAgY29uc3QgaXNDbGllbnRPZmZlckZsb3cgPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8udHlwZSA9PT0gJ29mZmVyJztcblxuICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFpc0NsaWVudE9mZmVyRmxvd1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICB9LCBzb2Z0UmVzdGFydEludGVydmFsKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQocmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0KSkpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JlY29ubmVjdGluZyBwZWVyIGNvbm5lY3Rpb24gYnkgcmVzdGFydGluZyBJQ0UnKTtcblxuICAgICAgY29uc3QgY3VycmVudExvY2FsRGVzY3JpcHRpb24gPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih7aWNlUmVzdGFydDogdHJ1ZX0pLnRoZW4ob2ZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oY3VycmVudExvY2FsRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdkaXNjb25uZWN0ZWQnIHx8IHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0sIHNvZnRSZXN0YXJ0SW50ZXJ2YWwpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCkpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWU7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fQlVJTERfVkVSU0lPTl9fOiBzdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlcnNpb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlZmF1bHRWZXJzaW9uID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIHN0YXRpYyBnZXQgc2RrVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gX19CVUlMRF9WRVJTSU9OX187XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWZXJzaW9uO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeVNlcnZpY2UgZnJvbSAnLi9UZWxlbWV0cnlTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4vVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi4vbG9nZ2VyL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5U2VydmljZTogVGVsZW1ldHJ5U2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVuYW5jeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgY29uc3RydWN0b3IodGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3k7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQ7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQ7XG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZSA9IG5ldyBUZWxlbWV0cnlTZXJ2aWNlKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UucHVzaChsb2dMZXZlbCwgbWVzc2FnZSwgY2F0ZWdvcnksIGRhdGUpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTnVtYmVycyBmcm9tICcuLi9sYW5nL051bWJlcnMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSA4MTkyO1xuXG5pbnRlcmZhY2UgSUxvZ0l0ZW0ge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBsZXZlbDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSBfbG9nczogQXJyYXk8SUxvZ0l0ZW0+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBwdXNoKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgdGltZXN0YW1wOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVudGltZSA9ICh0aW1lc3RhbXAudmFsdWVPZigpIC0gdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsb2dSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcC50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgbGV2ZWw6IExvZ2dpbmdMZXZlbFtsb2dMZXZlbF0sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIHJ1bnRpbWVcbiAgICB9O1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dzLnB1c2gobG9nUmVjb3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9ncy51bnNoaWZ0KGxvZ1JlY29yZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3MobG9nTWVzc2FnZXM6IEFycmF5PElMb2dJdGVtPik6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbG9nTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbG9ncy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG51bWJlck9mTG9nc1RvU2VuZCA9IDA7XG4gICAgbGV0IHNpemVPZkxvZ3NUb1NlbmQgPSAwO1xuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGdldEl0ZW1TaXplID0gKGl0ZW06IG51bWJlciB8IHN0cmluZykgPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHVyYXRpb25zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHVyYXRpb246IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkdXJhdGlvbiA9IDApIHtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICB9XG5cbiAgdG9Jc29TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiAnUDBTJztcbiAgICB9XG5cbiAgICBjb25zdCBpc05lZ2F0aXZlID0gdGhpcy5fZHVyYXRpb24gPCAwO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gaXNOZWdhdGl2ZSA/IE1hdGguYWJzKHRoaXMuX2R1cmF0aW9uKSA6IHRoaXMuX2R1cmF0aW9uO1xuICAgIGxldCBvZmZzZXQgPSBNYXRoLmZsb29yKGR1cmF0aW9uKTtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBvZmZzZXQgJSAxMDAwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyAxMDAwKTtcblxuICAgIGNvbnN0IHNlY29uZHMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgbWludXRlcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBob3VycyA9IG9mZnNldCAlIDI0O1xuICAgIGNvbnN0IHBhcnRzID0gWydQVCddO1xuXG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy0nKTtcbiAgICB9XG5cbiAgICBpZiAoaG91cnMpIHtcbiAgICAgIHBhcnRzLnB1c2goaG91cnMgKyAnSCcpO1xuICAgIH1cblxuICAgIGlmIChtaW51dGVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKG1pbnV0ZXMgKyAnTScpO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmRzIHx8IG1pbGxpc2Vjb25kcykge1xuICAgICAgcGFydHMucHVzaChTdHJpbmcoc2Vjb25kcykpO1xuXG4gICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIHBhcnRzLnB1c2goJy4nICsgdGhpcy5wYWRTdGFydChtaWxsaXNlY29uZHMudG9TdHJpbmcoKSwgMywgJzAnKSk7XG4gICAgICB9XG5cbiAgICAgIHBhcnRzLnB1c2goJ1MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gIH1cblxuICBwYWRTdGFydChpdGVtOiBzdHJpbmcsIHRhcmdldExlbmd0aDogbnVtYmVyLCBwYWRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoID4+IDA7XG4gICAgcGFkU3RyaW5nID0gU3RyaW5nKCh0eXBlb2YgcGFkU3RyaW5nICE9PSAndW5kZWZpbmVkJyA/IHBhZFN0cmluZyA6ICcgJykpO1xuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoID4gdGFyZ2V0TGVuZ3RoKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggLSBpdGVtLmxlbmd0aDtcblxuICAgIGlmICh0YXJnZXRMZW5ndGggPiBwYWRTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBwYWRTdHJpbmcgKz0gcGFkU3RyaW5nLnJlcGVhdCh0YXJnZXRMZW5ndGggLyBwYWRTdHJpbmcubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFkU3RyaW5nLnNsaWNlKDAsIHRhcmdldExlbmd0aCkgKyBpdGVtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uVGVsZW1ldHJ5IEZhaWxlZDogTm8gYXBwbGljYXRpb24gbW9uaXRvciBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25ldHdvcmtNb25pdG9yLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoaXNGb3JlZ3JvdW5kID0+IHtcbiAgICAgIHRoaXMucmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IucnR0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3Rlbk9uU3RyZWFtU2V0dXAoKTogU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1TZXR1cExpc3RlbmVyKHRoaXMuX3BhZ2VMb2FkVGltZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RDaGFuZ2UgPSB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgaWYgKCF0aW1lU2luY2VMYXN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSA9IHJlcXVpcmUoXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIik7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBuLmxlbmd0aDsgcisrKSBvID0gbltyXSwgdC5pbmRleE9mKG8pID49IDAgfHwge30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBvKSAmJiAoaVtvXSA9IGVbb10pO1xuICB9XG4gIHJldHVybiBpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShyLCBlKSB7XG4gIGlmIChudWxsID09IHIpIHJldHVybiB7fTtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgbiBpbiByKSBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChyLCBuKSkge1xuICAgIGlmIChlLmluZGV4T2YobikgPj0gMCkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBQdWJsaXNoZXJzIGZyb20gJy4vUHVibGlzaGVycyc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5cbmV4cG9ydCB7XG4gIFNESyxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbiIsIl9sYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiYmFja2dyb3VuZEVudHJ5VGltZSIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc05vd0ZvcmVncm91bmQiLCJkb2N1bWVudElzSGlkZGVuIiwidXNlRXZlbnRDYXB0dXJlUGhhc2UiLCJhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJhZGQiLCJyZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJkZWZhdWx0IiwiQnJvd3NlckRldGVjdG9yIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIl9icm93c2VyTmFtZSIsIl9icm93c2VyTWFqb3JWZXJzaW9uIiwiX2lzQW5kcm9pZCIsIl9pc0Nocm9tZTY5IiwiX2lzQ2hyb21lNzAiLCJfaXNDaHJvbWU3MSIsIl9pc0Nocm9tZTcyIiwiX2lzQ2hyb21lNzQiLCJfaXNDaHJvbWU3NSIsIl9pc0Nocm9tZTc2IiwiX2lzQ2hyb21lNzciLCJpc01vYmlsZSIsIl9pc01vYmlsZSIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibWF0Y2giLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFIiwicGFyc2VCcm93c2VyTmFtZSIsImJyb3dzZXJOYW1lTGlzdCIsInNwbGl0IiwicGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uIiwiYnJvd3NlclZlcnNpb25MaXN0IiwiZnVsbFZlcnNpb24iLCJOdW1iZXIiLCJtc2llIiwiaW5kZXhPZiIsImNvbmNhdCIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwidHJpZGVudCIsInZlcnNpb24iLCJfQnJvd3NlckRldGVjdG9yIiwidGVzdCIsIl9uYXZpZ2F0b3IiLCJfbmF2aWdhdG9yMiIsImluY2x1ZGVzIiwiTG9nZ2VyRGVmYXVsdHMiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiVGVsZW1ldHJ5RGVmYXVsdCIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJyZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlIiwicmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZSIsImRlZmF1bHRTdHJpbmdWYWx1ZSIsImdldEJvb2xlYW5WYWx1ZSIsInZhbHVlRnJvbVVyaSIsImRlZmF1bHRCb29sZWFuVmFsdWUiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSIsImRlZmF1bHRUZWxlbWV0cnlMZXZlbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUiLCJkZWZhdWx0TG9nZ2luZ0xldmVsIiwiZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsIiwibWV0YVZhbHVlIiwiZG9jdW1lbnRRdWVyeVNlbGVjdG9yIiwiZ2V0QXR0cmlidXRlIiwidmFsdWVVUklQYXJhbWV0ZXJOYW1lIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb25TZWFyY2giLCJ1bmRlZmluZWQiLCJGZWF0dXJlRW5hYmxlbWVudCIsIlNESyIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwic2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlJHZhbHVlMyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCIsImlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJQYXJhbWV0ZXJzIiwiX2Rpc2NvdmVyeVBhcmFtZXRlcnMiLCJhcHBseVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwiX19QQVJBTUVURVJTX18iLCJkaXNjb3ZlcnkiLCJpbnRlbnRpb25zIiwiYnJvd3Nlckdsb2JhbFNjb3BlIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsIndpbmRvdyIsImdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiX2xvY2F0aW9uIiwiX3dpbmRvdyIsIkZvcm1EYXRhIiwiTWVkaWFTdHJlYW0iLCJNZWRpYVN0cmVhbVRyYWNrIiwiTWVkaWFTb3VyY2UiLCJSVENQZWVyQ29ubmVjdGlvbiIsIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIlJUQ0ljZUNhbmRpZGF0ZSIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJjcmVhdGVFbGVtZW50IiwiaGFzRm9jdXMiLCJoaWRkZW4iLCJxdWVyeVNlbGVjdG9yIiwiZmV0Y2giLCJob3N0bmFtZSIsInNlYXJjaCIsImNvbm5lY3Rpb24iLCJvbkxpbmUiLCJzZXRJbnRlcnZhbCIsInNldEluc3RhbmNlIiwicHJvdmlkZWRHbG9iYWxTY29wZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsIl9pbnN0YW5jZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJkYXRhIiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJsb2dnZXIiLCJfbG9nZ2VycyIsImFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUxvZ2dpbmdMZXZlbCIsImFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwiLCJhcHBseUNvbnNvbGVMb2dnZXIiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwic2V0VGhyZXNob2xkIiwiYXBwbHlBcHBlbmRlciIsImxvZ2dpbmdMZXZlbCIsIk9mZiIsIkFsbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwiLCJsb2dnaW5nTGV2ZWxUeXBlIiwiVGVsZW1ldHJ5TGV2ZWwiLCJtZXRyaWNzIiwiX21ldHJpY3MiLCJnZXRUZWxlbWV0cnlMZXZlbCIsIlRpbWVUb0ZpcnN0RnJhbWUiLCJFc3NlbnRpYWwiLCJDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiU3RhbGxlZCIsIkJ1ZmZlcmluZyIsIlJvdW5kVHJpcFRpbWUiLCJEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIk5ldHdvcmtUeXBlIiwiUmVzb2x1dGlvbkNoYW5nZWQiLCJBcHBsaWNhdGlvbkZvcmVncm91bmQiLCJBcHBsaWNhdGlvbkJhY2tncm91bmQiLCJNZXRyaWNzQ29uZmlndXJhdGlvbiIsIl91cmwiLCJzZXQiLCJ1cmwiLCJtZXRyaWNzVXJsIiwicGF0aG5hbWUiLCJfZW52aXJvbm1lbnQiLCJlbnZpcm9ubWVudCIsIl90ZW5hbmN5IiwidGVuYW5jeSIsIl9zZXNzaW9uSWQiLCJzZXNzaW9uSWQiLCJNZXRyaWNzU2VydmljZSIsIlRlbGVtZXRyeVVybCIsIkVudmlyb25tZW50IiwiTWV0cmljc0ZhY3RvcnkiLCJnZXRNZXRyaWNzU2VydmljZSIsIl90eXBlb2YiLCJtZXRyaWNzU2VydmljZXMiLCJfbWV0cmljc1NlcnZpY2VzIiwibWV0cmljc0NvbmZpZ3VyYXRpb24iLCJjbGllbnRTZXNzaW9uSWQiLCJnZXRUZWxlbWV0cnlVcmwiLCJnZXRFbnZpcm9ubWVudEZyb21VcmwiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCIsInRlbGVtZXRyeUxldmVsIiwic2V0VGVsZW1ldHJ5TGV2ZWwiLCJ2YWx1ZXMiLCJ0IiwiciIsIlN5bWJvbCIsIm4iLCJpdGVyYXRvciIsIm8iLCJ0b1N0cmluZ1RhZyIsImkiLCJjIiwiR2VuZXJhdG9yIiwidSIsImNyZWF0ZSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwibCIsIlR5cGVFcnJvciIsImRvbmUiLCJyZXR1cm4iLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJFeHBvbmVudGlhbEJhY2tvZmYiLCJWZXJzaW9uTWFuYWdlciIsInJlcXVlc3RTaXplTGltaXQiLCJtYXhCdWZmZXJlZFJlY29yZHMiLCJfbWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfZXhwb25lbnRpYWxCYWNrb2ZmIiwiZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSIsInRoZW4iLCJsb2NhdGlvbkhvc3RuYW1lIiwiX2RvbWFpbiIsIm1ldHJpYyIsInByZXZpb3VzVmFsdWUiLCJyZXNvdXJjZSIsImtpbmQiLCJtZXRyaWNSZWNvcmQiLCJ0aW1lc3RhbXAiLCJmdWxsUXVhbGlmaWVkTmFtZSIsInNka1ZlcnNpb24iLCJpZ25vcmVkIiwic2VuZE1ldHJpY3NJZkFibGUiLCJQcm9taXNlIiwicmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUiLCJnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX2NhbGxlZSIsIm1ldHJpY3NNZXNzYWdlcyIsImZvcm1EYXRhIiwiX2NvbnRleHQiLCJhcHBlbmQiLCJyZWNvcmRzIiwibWV0aG9kIiwiYm9keSIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInJlc3BvbnNlIiwiaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUiLCJfZmFpbHVyZUNvdW50IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCIsImNhdGNoIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiUHJvbWlzZUhhbmRsZXIiLCJfc3RhdGUiLCJfaGFuZGxlZCIsIl92YWx1ZSIsIl9kZWZlcnJlZHMiLCJkb1Jlc29sdmUiLCJwcm9taXNlUmVzb2x2ZSIsInJlYXNvbiIsInByb21pc2VSZWplY3QiLCJuZXdWYWx1ZSIsInByb21pc2UiLCJmaW5hbGUiLCJfaW1tZWRpYXRlIiwiX3VuaGFuZGxlZFJlamVjdGlvbiIsImxlbiIsImhhbmRsZSIsImRlZmVycmVkIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwicmVzdWx0IiwiYWxsIiwiYXJyIiwicmVzb2x2ZSIsInJlamVjdCIsImlzQXJyYXkiLCJyZW1haW5pbmciLCJtYW5hZ2VSZXNwb25zZSIsImNvbnN0cnVjdG9yIiwicmFjZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJkZWZhdWx0VHJhY2tLaW5kcyIsIlBlZXJDb25uZWN0aW9uU2VydmljZSIsIl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nIiwiaXNQcmVjYWNoaW5nRW5hYmxlZCIsInByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FjaGVkIiwiZGlyZWN0aW9uIiwicGVlckNvbm5lY3Rpb24iLCJjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FsbGVlMyIsInRyYWNrS2luZHMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NvbnRleHQzIiwiRGlzYWJsZWQiLCJpc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCIsIkVuYWJsZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJhdWRpb1RyYW5zY2VpdmVycyIsInZpZGVvVHJhbnNjZWl2ZXJzIiwib3B0aW9ucyIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0IiwiX3Q1IiwiX3Q2IiwiYWRkVHJhbnNjZWl2ZXIiLCJjcmVhdGVPZmZlciIsImxvY2FsT2ZmZXIiLCJvZmZlclRvUmVjZWl2ZUF1ZGlvIiwib2ZmZXJUb1JlY2VpdmVWaWRlbyIsInRyYWNrc0tpbmRzIiwiY291bnRUcmFja0tpbmRzIiwidHJhY2tLaW5kQ291bnQiLCJhdWRpbyIsInZpZGVvIiwiY291bnRlZFRyYWNrS2luZHMiLCJjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMiLCJSdGNDb25maWd1cmF0aW9uTWFuYWdlciIsInRydW5jYXRlSWNlU2VydmVycyIsImljZVNlcnZlcnMiLCJ1cmxzIiwidXNlcm5hbWUiLCJjcmVkZW50aWFsIiwiU2RwUGFyc2VyIiwidXBkYXRlU3RhdGlzdGljVGltZW91dCIsImdldFN0YXRzVGltZW91dER1cmF0aW9uIiwiUnRjUHVibGlzaE1vbml0b3IiLCJlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiaXNGb3JlZ3JvdW5kIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uMiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiX3BlZXJDb25uZWN0aW9uIiwiX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiIsInNkcCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInBhcnNlZExvY2FsRGVzY3JpcHRpb24iLCJwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsIl9hdmFpbGFibGVUcmFja3MiLCJpc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNWaWRlb1RyYWNrRW5hYmxlZCIsImlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrIiwiZm9yZWdyb3VuZCIsIl9pc01vbml0b3JSdW5uaW5nIiwiX21vbml0b3JHZW5lcmF0aW9uIiwiX3VwZGF0ZVRpbWVvdXQiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX3VwZGF0ZVN0YXRpc3RpYyIsImdlbmVyYXRpb24iLCJnZXRLaW5kRm9yU2FmYXJpMTEiLCJ0aW1lb3V0SGFuZGxlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNSIsInN0YXRzUHJvbWlzZSIsInRpbWVvdXRQcm9taXNlIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRTZW50VGltZXN0YW1wIiwiZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCIsImlkIiwiZ2V0U3RhdHMiLCJyZXBvcnQiLCJjdXJyZW50Um91bmRUcmlwVGltZSIsIl90aGlzMiRfYXZhaWxhYmxlVHJhYyIsIm1lZGlhVHlwZSIsImNvZGVjIiwiY29kZWNJZCIsIm1pbWVUeXBlIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMiIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDMiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ0IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNSIsImJ5dGVzIiwiYnl0ZXNTZW50IiwicHJldmlvdXNCeXRlc1NlbnQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzU2VudCIsInJldHJhbnNtaXR0ZWRCeXRlc1NlbnQiLCJnZXRDb2RlY0J5VHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDYiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ3IiwiZmlyQ291bnQiLCJmcmFtZUhlaWdodCIsImZyYW1lV2lkdGgiLCJmcmFtZXNFbmNvZGVkIiwiZnJhbWVzU2VudCIsImhlYWRlckJ5dGVzU2VudCIsImh1Z2VGcmFtZXNTZW50IiwicGxpQ291bnQiLCJxcFN1bSIsInRvdGFsRW5jb2RlVGltZSIsInRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0IiwiZnBzIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY29ubmVjdGlvblN0YXRlIiwiaWNlQ29ubmVjdGlvblN0YXRlIiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJnZXRTdGF0c0xlZ2FjeSIsIl90aGlzMyIsImFkZFN0cmVhbSIsIm1lZGlhU3RyZWFtIiwiX3RoaXM0IiwiZ2V0VHJhY2tzIiwidHJhY2siLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb245IiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uIiwicmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSIsInN1YmplY3QiLCJfc3ViamVjdCIsIkRpc3Bvc2FibGVMaXN0ZW5lciIsIl9EaXNwb3NhYmxlIiwibGlzdGVuZXJzIiwiX2NhbGxTdXBlciIsImlkeCIsIl9pbmhlcml0cyIsIl9saXN0ZW5lcnMiLCJjaGFuZ2VkIiwiY29tcGFyYWJsZSIsImVxdWFscyIsIl9pIiwiX2FyciIsImJhc2VVUkwiLCJvcmlnaW4iLCJEaXNjb3ZlcnlVcmkiLCJfR2xvYmFsU2NvcGUkZ2V0SW5zdGEiLCJfY2xpZW50U2Vzc2lvbklkIiwiX2xvYWRlZFRpbWVzdGFtcCIsIl9yZWFkT25seUluaXRpYWxpemVkIiwiX3JlYWRPbmx5RGlzY292ZXJ5VXJpIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSIsIl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsIl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwiX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsIl93ZWJQbGF5ZXJMb2FkZXIiLCJfc2hha2FQbGF5ZXJMb2FkZXIiLCJfaGxzSnNMb2FkZXIiLCJfbWV0cmljc1NlcnZpY2UiLCJfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfdGVsZW1ldHJ5VXJsIiwiX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJyZXRyaWVzQW1vdW50IiwiX3RlbGVtZXRyeUxldmVsIiwiYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwidGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImlnbm9yZWRFbnZpcm9ubWVudCIsImlnbm9yZWREaXNjb3ZlcnlVcmkiLCJ0ZWxlbWV0cnlVcmwiLCJ0ZWxlbWV0cnlBcHBlbmRlciIsImlnbm9yZWRUZW5hbmN5IiwiYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbiIsImlnbm9yZWRUZWxlbWV0cnlMZXZlbCIsImFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJkaXNjb3ZlcnlVcmkiLCJjaGFubmVsVG9rZW4iLCJ1cmlWYWx1ZSIsImJhc2VVUklWYWx1ZSIsIm9uTG9hZCIsIl9pbml0aWFsaXplZCIsImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiLCJpbml0Iiwib3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfdGhpcyRfYXBwbGljYXRpb25BY3QiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIlBlZXJDb25uZWN0aW9uQ29udGV4dCIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiZGlzcG9zZVBlZXJDb25uZWN0aW9uIiwiZGlzcG9zZU1lZGlhU3RyZWFtIiwiX3RoaXMkbWVkaWFTdHJlYW0kdmFsIiwic3RvcCIsIlN0YXRlQ29udGV4dCIsImlzU3RhcnRpbmciLCJpc0Rpc3Bvc2VkIiwiVG9rZW5Db250ZXh0IiwidG9rZW5FeHBpcmluZyIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiTm9ybWFsIiwiRm9yY2UiLCJSZXNldCIsIkJpdHJhdGVTdGF0ZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlIiwiYml0cmF0ZVN0YXRlIiwiS2VlcCIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiRGlzY292ZXJ5IiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwicmVzb2x2ZUVuZFBvaW50UHJvbWlzZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwiZGlzY292ZXJ5U2VydmljZSIsImNhY2hlZFZhbHVlIiwiX2NhY2hlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsIkVuZFBvaW50IiwiZGVmYXVsdFRpbWVvdXQiLCJfdXJpIiwiX2Rpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwidGltZW91dCIsImFzU3RyaW5nIiwiZW5kUG9pbnRzIiwib2siLCJ0ZXh0IiwibWFwIiwiZW5kUG9pbnQiLCJkaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImZhaWxlZFJlcXVlc3RzIiwicHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQiLCJfYXJnczIiLCJidWlsZERpc2NvdmVyeVVybCIsInBpbmciLCJ0aW1lIiwiX2Rpc2NvdmVyeVVyaSIsImRpc2NvdmVyeVBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJhcGlWZXJzaW9uIiwiX3RpbWVvdXQiLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwic3RhcnQiLCJmaW5pc2hlZCIsImJ1aWxkUGluZ1VybCIsIl9zdWJzY3JpYmUiLCJsb2NhbFNlc3Npb25EZXNjcmlwdGlvbiIsImZhaWx1cmVDb3VudCIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUiIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjMiLCJjbGllbnRWZXJzaW9uIiwicmVxdWVzdEJvZHkiLCJodHRwUmVzcG9uc2UiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIyIiwiX3Jlc3BvbnNlIiwic3Vic2NyaWJlUmVzcG9uc2UiLCJidWlsZFVybCIsImJlYXJlclRva2VuIiwiaHR0cFJvdW5kVHJpcFRpbWUiLCJzZXNzaW9uRGVzY3JpcHRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbiIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb24iLCJvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsImZpbmFsbHkiLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwiYm9keVdpdGhPZmZlciIsImJvZHlXaXRob3V0T2ZmZXIiLCJtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlIiwicHVibGlzaCIsIl94NSIsIl94NiIsIl94NyIsInN0cmVhbSIsInNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJzaGFyZWRTZWNyZXQiLCJtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwiX2NhbGxlZTUiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiX3RoaXM1IiwiX2NvbnRleHQ1IiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJsaW1pdEJpdHJhdGUiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsIl9jYWxsZWU2IiwiY2FuZGlkYXRlcyIsImRpc2NvdmVyeUNvbXBsZXRlZCIsIl90aGlzNiIsImFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9hcmdzNiIsIl9jb250ZXh0NiIsIm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJhZGRJY2VDYW5kaWRhdGVzIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiX2Rlc3Ryb3lTdHJlYW0iLCJfY2FsbGVlNyIsIl90aGlzNyIsImRlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jb250ZXh0NyIsIm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJkZXN0cm95U3RyZWFtIiwiX3gxNiIsIl94MTciLCJfZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsIl9jYWxsZWU4IiwiX2NvbnRleHQ4Iiwic2VuZEJlYWNvbiIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJfeDE4IiwiX3gxOSIsInBhdGgiLCJwYXRoQXNBcnJheSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsIl9jYWxsZWU5IiwibGFnIiwicnRjQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJvdGhlclByb3BlcnRpZXMiLCJfY29udGV4dDkiLCJqc29uIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiX29iamVjdFNwcmVhZCIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsIl94MjAiLCJfeDIxIiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsIl9jYWxsZWUwIiwicHVibGlzaFJlc3BvbnNlIiwiX2NvbnRleHQwIiwiX3gyMiIsIl94MjMiLCJidW5kbGVQb2xpY3kiLCJpY2VDYW5kaWRhdGVQb29sU2l6ZSIsImljZVRyYW5zcG9ydFBvbGljeSIsInJ0Y3BNdXhQb2xpY3kiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsIl9jYWxsZWUxIiwiX2NvbnRleHQxIiwiX3gyNCIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyNSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY2FsbGVlMTEiLCJfY29udGV4dDExIiwiX3gyNiIsIlB1Ymxpc2hlclN0YXRlIiwiU2Vzc2lvblRlbGVtZXRyeSIsIlB1Ymxpc2hlckNvbnRleHQiLCJSZWFsVGltZVB1Ymxpc2hlciIsImRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiIsImZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwic3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwib25lSG91ckluTWlsbGlzZWNvbmRzIiwibWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiUHVibGlzaGVyIiwicGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyIsIl90b2tlbkNvbnRleHQiLCJfcHVibGlzaGVyQ29udGV4dCIsIl9wZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJfc3RhdGVDb250ZXh0IiwiX3B1Ymxpc2hlclN0YXJ0VGltZSIsIl9yZWFkT25seVRva2VuIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5VG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQdWJsaXNoaW5nIiwicHVibGlzaGluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlGYWlsdXJlQ291bnQiLCJfcmVhZE9ubHlFbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwicHVibGlzaGVyRGlzcG9zYWJsZXMiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQdWJsaXNoaW5nIiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsImRpc3Bvc2FibGVzIiwiX3N0b3AiLCJwcm9jZXNzU3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJTdG9wcGVkIiwiX2Rpc3Bvc2UiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwibGlzdGVuT25TdHJlYW1TZXR1cCIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVB1Ymxpc2hlciIsIlN0YXJ0aW5nIiwiVW5hdXRob3JpemVkIiwiUmVjb3ZlcmluZyIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJDbGllbnRTdGFydEVycm9yIiwiYXV0b21hdGljUmV0cnlPbkZhaWx1cmUiLCJzdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsInNldE1lZGlhU3RyZWFtIiwibWVkaWFUcmFjayIsIl90aGlzNSRfcGVlckNvbm5lY3RpbyIsInNlbmRlciIsIl9zZW5kZXIkdHJhY2siLCJyZXBsYWNlVHJhY2siLCJPZmZsaW5lIiwiSW5pdGlhbGl6aW5nIiwiTm90Rm91bmQiLCJHZW9SZXN0cmljdGVkIiwiR2VvQmxvY2tlZCIsIlJlY29ubmVjdGluZyIsIlVuc3VwcG9ydGVkRmVhdHVyZSIsIkNvbmZpZ3VyYXRpb25FcnJvciIsIlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciIsIkNvbm5lY3Rpb25FcnJvciIsIl9oYW5kbGVTdHJlYW1GYWlsdXJlIiwicmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCIsInB1Ymxpc2hlckluaXRpYWxpemF0aW9uIiwiZ2VuZXJhdGVTY3JlZW5OYW1lIiwiYXBwbHlQdWJsaXNoU3RhdHVzIiwiYXBwbHlVbmF1dGhvcml6ZWQiLCJhcHBseU5vdEZvdW5kIiwiYXBwbHlVbmhhbmRsZWRFcnJvciIsImFwcGx5U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJhcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJtYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMiLCJQdWJsaXNoZXJzIiwiY3JlYXRlUHVibGlzaGVyIiwiaW5pdGlhbGl6ZWQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwiLCJzb2Z0UmVzdGFydEludGVydmFsIiwicHVibGlzaGVyQ29udGV4dCIsInBlZXJDb25uZWN0aW9uQ29udGV4dCIsIm5hdmlnYXRvcklzT25MaW5lIiwibWVkaWFUcmFja3MiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwiX3JlZjMkIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsImFwcGx5UnRjQ29uZmlndXJhdGlvbiIsInN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0IiwiY2FuY2VsRGlzY292ZXJ5IiwiY2FuZGlkYXRlIiwiX3RoaXMkX3B1Ymxpc2hlckNvbnRlIiwiX3JlZjQiLCJtYXBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMiLCJyZXRyeUNhbGxiYWNrIiwicmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfY3JlYXRlQW5zd2VyRGVzY3JpcHQiLCJhbnN3ZXIiLCJfcmVmNSIsIm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMiLCJfdGhpcyRfcHVibGlzaGVyQ29udGUyIiwicnRjUHVibGlzaE1vbml0b3IiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsInJ0Y1N0YXRpc3RpYyIsInN0YXRpc3RpY3MiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlIiwiaXNDbGllbnRPZmZlckZsb3ciLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQiLCJpY2VSZXN0YXJ0Iiwib2ZmZXIiLCJfX0JVSUxEX1ZFUlNJT05fXyIsIl9kZWZhdWx0VmVyc2lvbiIsIlRlbGVtZXRyeVNlcnZpY2UiLCJfdGVsZW1ldHJ5U2VydmljZSIsInZhbHVlT2YiLCJsb2dSZWNvcmQiLCJfbG9ncyIsInNlbmRMb2dzSWZBYmxlIiwibG9nTWVzc2FnZXMiLCJfc2VuZExvZ3NJZkFibGUiLCJudW1iZXJPZkxvZ3NUb1NlbmQiLCJzaXplT2ZMb2dzVG9TZW5kIiwiZ2V0SXRlbVNpemUiLCJnZXRMb2dTaXplIiwic3VtIiwiZHVyYXRpb24iLCJfZHVyYXRpb24iLCJpc05lZ2F0aXZlIiwiYWJzIiwib2Zmc2V0IiwibWlsbGlzZWNvbmRzIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsInBhcnRzIiwiU3RyaW5nIiwicGFkU3RhcnQiLCJ0YXJnZXRMZW5ndGgiLCJwYWRTdHJpbmciLCJyZXBlYXQiLCJkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMiLCJyYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQiLCJtYXgiLCJtaW4iLCJfbmV0d29ya01vbml0b3IiLCJyZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlIiwicmVjb3JkTmV0d29ya1JUVFVwZGF0ZSIsInJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlIiwiZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJyZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUiLCJ0aW1lU2luY2VMYXN0Q2hhbmdlIiwibmV3UlRUIiwib2xkUnR0IiwiX2xhc3ROZXR3b3JrU3RhdGlzdGljcyIsIm5ld05ldHdvcmtUeXBlIiwib2xkTmV0d29ya1R5cGUiLCJuZXdDYXBhY2l0eSIsIm9sZENhcGFjaXR5IiwiZmxvYXQiXSwic291cmNlUm9vdCI6IiJ9