raise-common-lib 0.0.218 → 0.0.220

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.
@@ -43,11 +43,23 @@ var SmartPopupComponent = /** @class */ (function () {
43
43
  }
44
44
  });
45
45
  this.onWindowScroll = (/**
46
+ * @param {?} event
46
47
  * @return {?}
47
48
  */
48
- function () {
49
+ function (event) {
49
50
  if (_this.opened === "yes") {
50
- _this.updatePopupPosition();
51
+ // 检查滚动是否发生在弹窗内部
52
+ /** @type {?} */
53
+ var target = (/** @type {?} */ (event.target));
54
+ /** @type {?} */
55
+ var isScrollOnPopup = _this.popupElement &&
56
+ _this.popupElement.nativeElement &&
57
+ _this.popupElement.nativeElement.contains(target);
58
+ // 如果滚动发生在弹窗内部,不更新位置(避免不必要的计算)
59
+ // 如果滚动发生在外部,更新位置(因为触发元素位置可能改变)
60
+ if (!isScrollOnPopup) {
61
+ _this.updatePopupPosition();
62
+ }
51
63
  }
52
64
  });
53
65
  }
@@ -523,6 +535,38 @@ var SmartPopupComponent = /** @class */ (function () {
523
535
  event.stopPropagation();
524
536
  this.toggle();
525
537
  };
538
+ // 处理弹窗内部的滚轮事件
539
+ // 处理弹窗内部的滚轮事件
540
+ /**
541
+ * @param {?} event
542
+ * @return {?}
543
+ */
544
+ SmartPopupComponent.prototype.onPopupWheel =
545
+ // 处理弹窗内部的滚轮事件
546
+ /**
547
+ * @param {?} event
548
+ * @return {?}
549
+ */
550
+ function (event) {
551
+ // 阻止滚轮事件冒泡,避免触发外部滚动处理
552
+ event.stopPropagation();
553
+ };
554
+ // 处理弹窗内部的滚动事件
555
+ // 处理弹窗内部的滚动事件
556
+ /**
557
+ * @param {?} event
558
+ * @return {?}
559
+ */
560
+ SmartPopupComponent.prototype.onPopupScroll =
561
+ // 处理弹窗内部的滚动事件
562
+ /**
563
+ * @param {?} event
564
+ * @return {?}
565
+ */
566
+ function (event) {
567
+ // 阻止滚动事件冒泡,避免触发外部滚动处理
568
+ event.stopPropagation();
569
+ };
526
570
  // 计算并设置位置(支持固定尺寸,可在打开前调用)
527
571
  // 计算并设置位置(支持固定尺寸,可在打开前调用)
528
572
  /**
@@ -1086,7 +1130,7 @@ var SmartPopupComponent = /** @class */ (function () {
1086
1130
  SmartPopupComponent.decorators = [
1087
1131
  { type: Component, args: [{
1088
1132
  selector: "rs-smart-popup",
1089
- template: "<!-- \u89E6\u53D1\u5143\u7D20\u63D2\u69FD -->\r\n<ng-container #trigger>\r\n <ng-content select=\"[trigger]\"></ng-content>\r\n</ng-container>\r\n\r\n<!-- \u5F39\u7A97\u5185\u5BB9 -->\r\n<div\r\n #popup\r\n class=\"rs-smart-popup-content\"\r\n [attr.data-opened]=\"opened\"\r\n [attr.data-positioning]=\"positioning\"\r\n>\r\n <div *ngIf=\"loading\" class=\"rs-smart-popup-loading\">\r\n <div class=\"loading-spinner\"></div>\r\n </div>\r\n <div *ngIf=\"!loading\" class=\"rs-smart-popup-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n",
1133
+ template: "<!-- \u89E6\u53D1\u5143\u7D20\u63D2\u69FD -->\r\n<ng-container #trigger>\r\n <ng-content select=\"[trigger]\"></ng-content>\r\n</ng-container>\r\n\r\n<!-- \u5F39\u7A97\u5185\u5BB9 -->\r\n<div\r\n #popup\r\n class=\"rs-smart-popup-content\"\r\n [attr.data-opened]=\"opened\"\r\n [attr.data-positioning]=\"positioning\"\r\n (wheel)=\"onPopupWheel($event)\"\r\n (scroll)=\"onPopupScroll($event)\"\r\n>\r\n <div *ngIf=\"loading\" class=\"rs-smart-popup-loading\">\r\n <div class=\"loading-spinner\"></div>\r\n </div>\r\n <div *ngIf=\"!loading\" class=\"rs-smart-popup-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n",
1090
1134
  styles: [".rs-smart-popup-trigger{display:inline-block;cursor:pointer}::ng-deep #rs-smart-popup-fixed-container{width:0;height:0;z-index:100000;pointer-events:none}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content{pointer-events:auto;position:fixed;z-index:100001;padding:8px;border-radius:8px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25);min-width:200px;max-width:400px;max-height:500px;overflow:auto}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content[data-opened=no]{display:none}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content[data-opened=yes]{display:block}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content[data-opened=yes][data-positioning=yes]{display:none!important}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content[data-opened=yes][data-positioning=no]{display:block;visibility:visible;opacity:1;pointer-events:auto;-webkit-animation:.2s ease-out popup-fade-in;animation:.2s ease-out popup-fade-in}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content .rs-smart-popup-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;min-height:100px}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content .rs-smart-popup-loading .loading-spinner{width:24px;height:24px;border:3px solid #f3f3f3;border-top:3px solid #3498db;border-radius:50%;-webkit-animation:1s linear infinite spin;animation:1s linear infinite spin;margin-bottom:12px}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content .rs-smart-popup-loading .loading-text{color:#666;font-size:14px}@-webkit-keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content .rs-smart-popup-body{width:100%}@-webkit-keyframes popup-fade-in{from{opacity:0;transform:translate(var(--translate-x,0),var(--translate-y,0)) scale(.95)}to{opacity:1;transform:translate(var(--translate-x,0),var(--translate-y,0)) scale(1)}}@keyframes popup-fade-in{from{opacity:0;transform:translate(var(--translate-x,0),var(--translate-y,0)) scale(.95)}to{opacity:1;transform:translate(var(--translate-x,0),var(--translate-y,0)) scale(1)}}"]
1091
1135
  }] }
1092
1136
  ];
@@ -1161,4 +1205,4 @@ if (false) {
1161
1205
  */
1162
1206
  SmartPopupComponent.prototype.ref;
1163
1207
  }
1164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zbWFydC1wb3B1cC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFnQnZCO0lBbUVFLDZCQUFvQixHQUFzQjtRQUExQyxpQkFBOEM7UUFBMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzRHRCLGVBQVUsR0FBa0IsWUFBWSxDQUFDO1FBQzVDLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDaEIsZ0JBQVcsR0FBaUIsS0FBSyxDQUFDO1FBQzlCLHNCQUFpQixHQUF1QixJQUFJLENBQUM7UUFDcEQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUM1QixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3RCLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzVCLFlBQU8sR0FBa0IsSUFBSSxDQUFDO1FBMEN6QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFPOUQsMEJBQXFCLEdBQXVCLElBQUksQ0FBQztRQWlKakQsdUJBQWtCLEdBQUcsZ0NBQWdDLENBQUM7UUFZdEQsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFDNUIsZ0JBQVcsR0FBaUIsSUFBSSxDQUFDO1FBQ2pDLG9CQUFlLEdBQXdDLFFBQVEsQ0FBQztRQUNoRSxtQkFBYyxHQUErQixPQUFPLENBQUM7UUErTXJELG1CQUFjOzs7O1FBQUcsVUFBQyxLQUFpQjs7Z0JBQzNCLE1BQU0sR0FBRyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXOztnQkFDaEMsZ0JBQWdCLEdBQ3BCLEtBQUks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ZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5leHBvcnQgdHlwZSBQbGFjZW1lbnRUeXBlID1cclxuICB8IFwiVG9wTGVmdFwiXHJcbiAgfCBcIlRvcENlbnRlclwiXHJcbiAgfCBcIlRvcFJpZ2h0XCJcclxuICB8IFwiQm90dG9tTGVmdFwiXHJcbiAgfCBcIkJvdHRvbUNlbnRlclwiXHJcbiAgfCBcIkJvdHRvbVJpZ2h0XCJcclxuICB8IFwiTGVmdFRvcFwiXHJcbiAgfCBcIkxlZnRDZW50ZXJcIlxyXG4gIHwgXCJMZWZ0Qm90dG9tXCJcclxuICB8IFwiUmlnaHRUb3BcIlxyXG4gIHwgXCJSaWdodENlbnRlclwiXHJcbiAgfCBcIlJpZ2h0Qm90dG9tXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1zbWFydC1wb3B1cFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydFBvcHVwQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xyXG57XHJcbiAgQElucHV0KFwicGxhY2VtZW50XCIpIF9wbGFjZW1lbnQ6IFBsYWNlbWVudFR5cGUgPSBcIkJvdHRvbUxlZnRcIjtcclxuICBASW5wdXQoXCJvZmZzZXRcIikgX29mZnNldDogbnVtYmVyID0gODtcclxuICBASW5wdXQoXCJhdXRvQWRqdXN0XCIpIF9hdXRvQWRqdXN0OiBcInllc1wiIHwgXCJub1wiID0gXCJ5ZXNcIjtcclxuICBASW5wdXQoXCJ0cmlnZ2VyRWxlbWVudFwiKSB0cmlnZ2VyRWxlbWVudFJlZjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoXCJsb2FkaW5nXCIpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoXCJvcGVuXCIpIF9vcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KFwid2lkdGhcIikgX3dpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoXCJoZWlnaHRcIikgX2hlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIOino+aekHBsYWNlbWVudOagvOW8j1xyXG4gIGdldCBwbGFjZW1lbnRJbmZvKCk6IHtcclxuICAgIHBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIjtcclxuICAgIHBvc2l0aW9uOiBcInN0YXJ0XCIgfCBcImNlbnRlclwiIHwgXCJlbmRcIjtcclxuICB9IHtcclxuICAgIGNvbnN0IHBsYWNlbWVudE1hcDoge1xyXG4gICAgICBba2V5OiBzdHJpbmddOiB7XHJcbiAgICAgICAgcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG4gICAgICAgIHBvc2l0aW9uOiBcInN0YXJ0XCIgfCBcImNlbnRlclwiIHwgXCJlbmRcIjtcclxuICAgICAgfTtcclxuICAgIH0gPSB7XHJcbiAgICAgIFRvcExlZnQ6IHsgcGxhY2VtZW50OiBcInRvcFwiLCBwb3NpdGlvbjogXCJzdGFydFwiIH0sXHJcbiAgICAgIFRvcENlbnRlcjogeyBwbGFjZW1lbnQ6IFwidG9wXCIsIHBvc2l0aW9uOiBcImNlbnRlclwiIH0sXHJcbiAgICAgIFRvcFJpZ2h0OiB7IHBsYWNlbWVudDogXCJ0b3BcIiwgcG9zaXRpb246IFwiZW5kXCIgfSxcclxuICAgICAgQm90dG9tTGVmdDogeyBwbGFjZW1lbnQ6IFwiYm90dG9tXCIsIHBvc2l0aW9uOiBcInN0YXJ0XCIgfSxcclxuICAgICAgQm90dG9tQ2VudGVyOiB7IHBsYWNlbWVudDogXCJib3R0b21cIiwgcG9zaXRpb246IFwiY2VudGVyXCIgfSxcclxuICAgICAgQm90dG9tUmlnaHQ6IHsgcGxhY2VtZW50OiBcImJvdHRvbVwiLCBwb3NpdGlvbjogXCJlbmRcIiB9LFxyXG4gICAgICBMZWZ0VG9wOiB7IHBsYWNlbWVudDogXCJsZWZ0XCIsIHBvc2l0aW9uOiBcInN0YXJ0XCIgfSxcclxuICAgICAgTGVmdENlbnRlcjogeyBwbGFjZW1lbnQ6IFwibGVmdFwiLCBwb3NpdGlvbjogXCJjZW50ZXJcIiB9LFxyXG4gICAgICBMZWZ0Qm90dG9tOiB7IHBsYWNlbWVudDogXCJsZWZ0XCIsIHBvc2l0aW9uOiBcImVuZFwiIH0sXHJcbiAgICAgIFJpZ2h0VG9wOiB7IHBsYWNlbWVudDogXCJyaWdodFwiLCBwb3NpdGlvbjogXCJzdGFydFwiIH0sXHJcbiAgICAgIFJpZ2h0Q2VudGVyOiB7IHBsYWNlbWVudDogXCJyaWdodFwiLCBwb3NpdGlvbjogXCJjZW50ZXJcIiB9LFxyXG4gICAgICBSaWdodEJvdHRvbTogeyBwbGFjZW1lbnQ6IFwicmlnaHRcIiwgcG9zaXRpb246IFwiZW5kXCIgfSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBwbGFjZW1lbnRNYXBbdGhpcy5fcGxhY2VtZW50XSB8fCB7XHJcbiAgICAgICAgcGxhY2VtZW50OiBcImJvdHRvbVwiLFxyXG4gICAgICAgIHBvc2l0aW9uOiBcInN0YXJ0XCIsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgb2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX29mZnNldCB8fCA4O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGF1dG9BZGp1c3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXV0b0FkanVzdCA9PT0gXCJ5ZXNcIjtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoXCJvcGVuQ2hhbmdlXCIpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dChcImNvbnRlbnRMb2FkXCIpIGNvbnRlbnRMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwidHJpZ2dlclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBpbnRlcm5hbFRyaWdnZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKFwicG9wdXBcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcG9wdXBFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgY3VycmVudFRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuZml4ZWRDb250YWluZXJFbCA9IHRoaXMuZ2V0Rml4ZWRDb250YWluZXIoKTtcclxuICAgIHRoaXMuZml4ZWRDb250YWluZXJFbC5hcHBlbmQodGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLnVwZGF0ZVRyaWdnZXJFbGVtZW50KCk7XHJcblxyXG4gICAgLy8g5aaC5p6c5o+Q5L6b5LqG5Zu65a6a5bC65a+477yM56uL5Y2z5bqU55SoXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuX3dpZHRoICE9PSBudWxsICYmXHJcbiAgICAgIHRoaXMuX2hlaWdodCAhPT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLnBvcHVwRWxlbWVudCAmJlxyXG4gICAgICB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50XHJcbiAgICApIHtcclxuICAgICAgY29uc3QgcG9wdXBFbCA9IHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIHBvcHVwRWwuc3R5bGUud2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgcG9wdXBFbC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9oZWlnaHQgKyBcInB4XCI7XHJcbiAgICAgIHBvcHVwRWwuc3R5bGUubWluV2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgcG9wdXBFbC5zdHlsZS5tYXhXaWR0aCA9IHRoaXMuX3dpZHRoICsgXCJweFwiO1xyXG4gICAgICBwb3B1cEVsLnN0eWxlLm1pbkhlaWdodCA9IHRoaXMuX2hlaWdodCArIFwicHhcIjtcclxuICAgICAgcG9wdXBFbC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLl9oZWlnaHQgKyBcInB4XCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5aaC5p6c5aSW6YOo5Lyg5YWlIG9wZW4g5bGe5oCn5Li6IHRydWXvvIzoh6rliqjmiZPlvIBcclxuICAgIGlmICh0aGlzLl9vcGVuKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vcGVuKCksIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgLy8g5aSE55CG5Zu65a6a5bC65a+45Y+Y5YyWXHJcbiAgICBpZiAoXHJcbiAgICAgIChjaGFuZ2VzLl93aWR0aCB8fCBjaGFuZ2VzLl9oZWlnaHQpICYmXHJcbiAgICAgIHRoaXMucG9wdXBFbGVtZW50ICYmXHJcbiAgICAgIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcclxuICAgICkge1xyXG4gICAgICBjb25zdCBwb3B1cEVsID0gdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgICAgaWYgKHRoaXMuX3dpZHRoICE9PSBudWxsKSB7XHJcbiAgICAgICAgcG9wdXBFbC5zdHlsZS53aWR0aCA9IHRoaXMuX3dpZHRoICsgXCJweFwiO1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUubWluV2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLm1heFdpZHRoID0gdGhpcy5fd2lkdGggKyBcInB4XCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuX2hlaWdodCAhPT0gbnVsbCkge1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUubWluSGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5YWI5aSE55CG6Kem5Y+R5YWD57Sg5Y+Y5YyW77yI56Gu5L+d5Zyo5omT5byA5YmN5pu05paw6Kem5Y+R5YWD57Sg77yJXHJcbiAgICBpZiAoY2hhbmdlcy50cmlnZ2VyRWxlbWVudFJlZikge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1RyaWdnZXIgPSB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudDtcclxuICAgICAgdGhpcy51cGRhdGVUcmlnZ2VyRWxlbWVudCgpO1xyXG5cclxuICAgICAgLy8g5aaC5p6c5by556qX5bey57uP5omT5byA77yM5LiU6Kem5Y+R5YWD57Sg5Y+R55Sf5LqG5Y+Y5YyW77yM56uL5Y2z5pu05paw5L2N572uXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLm9wZW5lZCA9PT0gXCJ5ZXNcIiAmJlxyXG4gICAgICAgIHByZXZpb3VzVHJpZ2dlciAhPT0gdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQgJiZcclxuICAgICAgICB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudFxyXG4gICAgICApIHtcclxuICAgICAgICAvLyDkvb/nlKjmlrDnmoTmiZPlvIDmlrnlvI/mm7TmlrDkvY3nva5cclxuICAgICAgICB0aGlzLnBvc2l0aW9uaW5nID0gXCJ5ZXNcIjtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3B1cFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25pbmcgPSBcIm5vXCI7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDlpITnkIYgb3BlbiDlj5jljJbvvIjnoa7kv53lnKjop6blj5HlhYPntKDmm7TmlrDlkI7lpITnkIbvvIlcclxuICAgIGlmIChjaGFuZ2VzLl9vcGVuKSB7XHJcbiAgICAgIGlmICh0aGlzLl9vcGVuICYmIHRoaXMub3BlbmVkID09PSBcIm5vXCIpIHtcclxuICAgICAgICAvLyDnoa7kv53op6blj5HlhYPntKDlt7Lmm7TmlrBcclxuICAgICAgICB0aGlzLnVwZGF0ZVRyaWdnZXJFbGVtZW50KCk7XHJcbiAgICAgICAgLy8g5L2/55SoIHNldFRpbWVvdXQg56Gu5L+d5omA5pyJ5Y+Y5pu06YO95bey5aSE55CGXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAvLyDlho3mrKHnoa7kv53op6blj5HlhYPntKDlt7Lmm7TmlrBcclxuICAgICAgICAgIHRoaXMudXBkYXRlVHJpZ2dlckVsZW1lbnQoKTtcclxuICAgICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLl9vcGVuICYmIHRoaXMub3BlbmVkID09PSBcInllc1wiKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5b2T5Yqg6L295a6M5oiQ5pe277yM5pu05paw5L2N572u77yI5aaC5p6c5o+Q5L6b5LqG5Zu65a6a5bC65a+477yM5LiN6ZyA6KaB5pu05paw5L2N572u77yJXHJcbiAgICBpZiAoXHJcbiAgICAgIGNoYW5nZXMubG9hZGluZyAmJlxyXG4gICAgICAhY2hhbmdlcy5sb2FkaW5nLmN1cnJlbnRWYWx1ZSAmJlxyXG4gICAgICBjaGFuZ2VzLmxvYWRpbmcucHJldmlvdXNWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5lZCA9PT0gXCJ5ZXNcIikge1xyXG4gICAgICAgIC8vIOWmguaenOaPkOS+m+S6huWbuuWumuWwuuWvuO+8jOS9jee9ruW3sue7j+iuoeeul+WlveS6hu+8jOS4jemcgOimgeabtOaWsFxyXG4gICAgICAgIGlmICh0aGlzLl93aWR0aCAhPT0gbnVsbCAmJiB0aGlzLl9oZWlnaHQgIT09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuY29udGVudExvYWQuZW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyDlpoLmnpzmraPlnKjlrprkvY3vvIzkuI3pnIDopoHmm7TmlrDkvY3nva5cclxuICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uaW5nID09PSBcIm5vXCIpIHtcclxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvcHVwUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRMb2FkLmVtaXQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDlpoLmnpzmraPlnKjlrprkvY3vvIznrYnlvoXlrprkvY3lrozmiJDlkI7lho3op6blj5Hkuovku7ZcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tQb3NpdGlvbmluZyA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbmluZyA9PT0gXCJub1wiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRMb2FkLmVtaXQoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1Bvc2l0aW9uaW5nLCAxMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjaGVja1Bvc2l0aW9uaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnBvcHVwRWxlbWVudCAmJiB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vbldpbmRvd1Njcm9sbCwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUcmlnZ2VyRWxlbWVudCgpIHtcclxuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRyaWdnZXJFbGVtZW50ID0gdGhpcy50cmlnZ2VyRWxlbWVudFJlZjtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaW50ZXJuYWxUcmlnZ2VyRWxlbWVudCAmJlxyXG4gICAgICB0aGlzLmludGVybmFsVHJpZ2dlckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRyaWdnZXJFbGVtZW50ID0gdGhpcy5pbnRlcm5hbFRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBGSVhFRF9DT05UQUlORVJfSUQgPSBcInJzLXNtYXJ0LXBvcHVwLWZpeGVkLWNvbnRhaW5lclwiO1xyXG4gIGZpeGVkQ29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xyXG4gIGdldEZpeGVkQ29udGFpbmVyKCkge1xyXG4gICAgbGV0IGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLkZJWEVEX0NPTlRBSU5FUl9JRCk7XHJcbiAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQpIHtcclxuICAgICAgY29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKFwiaWRcIiwgdGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXJFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250YWluZXJFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgb3BlbmVkOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG4gIHBvc2l0aW9uaW5nOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG4gIGFjdHVhbFBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIiA9IFwiYm90dG9tXCI7XHJcbiAgYWN0dWFsUG9zaXRpb246IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiID0gXCJzdGFydFwiO1xyXG5cclxuICBvcGVuKHRyaWdnZXJFbGVtZW50PzogSFRNTEVsZW1lbnQpIHtcclxuICAgIC8vIOWmguaenOS8oOWFpeS6huinpuWPkeWFg+e0oO+8jOS9v+eUqOWug1xyXG4gICAgaWYgKHRyaWdnZXJFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRyaWdnZXJFbGVtZW50ID0gdHJpZ2dlckVsZW1lbnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwZGF0ZVRyaWdnZXJFbGVtZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJTbWFydFBvcHVwQ29tcG9uZW50OiBObyB0cmlnZ2VyIGVsZW1lbnQgZm91bmRcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzlt7Lnu4/miZPlvIDvvIzlhYjlhbPpl63lho3miZPlvIDvvIjmm7TmlrDkvY3nva7vvIlcclxuICAgIGlmICh0aGlzLm9wZW5lZCA9PT0gXCJ5ZXNcIikge1xyXG4gICAgICAvLyDlhYjlhbPpl63lvLnnqpdcclxuICAgICAgdGhpcy5vcGVuZWQgPSBcIm5vXCI7XHJcbiAgICAgIHRoaXMucG9zaXRpb25pbmcgPSBcIm5vXCI7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAvLyDnq4vljbPlnKjmlrDkvY3nva7miZPlvIBcclxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAvLyDlho3mrKHnoa7kv53op6blj5HlhYPntKDlt7Lmm7TmlrBcclxuICAgICAgICB0aGlzLnVwZGF0ZVRyaWdnZXJFbGVtZW50KCk7XHJcbiAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDnoa7kv53op6blj5HlhYPntKDlt7Lmm7TmlrBcclxuICAgIHRoaXMudXBkYXRlVHJpZ2dlckVsZW1lbnQoKTtcclxuICAgIHRoaXMub3BlblBvcHVwKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW5Qb3B1cCgpIHtcclxuICAgIC8vIOWGjeasoeehruS/neinpuWPkeWFg+e0oOW3suabtOaWsFxyXG4gICAgdGhpcy51cGRhdGVUcmlnZ2VyRWxlbWVudCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIFwiU21hcnRQb3B1cENvbXBvbmVudDogTm8gdHJpZ2dlciBlbGVtZW50IGZvdW5kIHdoZW4gb3BlbmluZyBwb3B1cFwiXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzmj5Dkvpvkuoblm7rlrprlsLrlr7jvvIzlj6/ku6XlnKjmiZPlvIDliY3lsLHorqHnrpflpb3kvY3nva5cclxuICAgIGlmICh0aGlzLl93aWR0aCAhPT0gbnVsbCAmJiB0aGlzLl9oZWlnaHQgIT09IG51bGwpIHtcclxuICAgICAgLy8g5YWI6K6h566X5L2N572u77yI5LiN5L6d6LWWRE9N5riy5p+T77yM55u05o6l5qC55o2udHJpZ2dlckVsZW1lbnTorqHnrpfvvIlcclxuICAgICAgY29uc3QgdHJpZ2dlclJlY3QgPSB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICAgIGNvbnN0IHBvcHVwU2l6ZSA9IHtcclxuICAgICAgICB3aWR0aDogdGhpcy5fd2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiB0aGlzLl9oZWlnaHQsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBwb3B1cFJlY3Q6IERPTVJlY3QgPSB7XHJcbiAgICAgICAgd2lkdGg6IHBvcHVwU2l6ZS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHBvcHVwU2l6ZS5oZWlnaHQsXHJcbiAgICAgICAgdG9wOiAwLFxyXG4gICAgICAgIGxlZnQ6IDAsXHJcbiAgICAgICAgcmlnaHQ6IHBvcHVwU2l6ZS53aWR0aCxcclxuICAgICAgICBib3R0b206IHBvcHVwU2l6ZS5oZWlnaHQsXHJcbiAgICAgICAgeDogMCxcclxuICAgICAgICB5OiAwLFxyXG4gICAgICAgIHRvSlNPTjogKCkgPT4gKHt9KSxcclxuICAgICAgfSBhcyBET01SZWN0O1xyXG5cclxuICAgICAgY29uc3QgdGFyZ2V0SW5mbyA9IHRoaXMucGxhY2VtZW50SW5mbztcclxuICAgICAgbGV0IGZpbmFsUGxhY2VtZW50ID0gdGFyZ2V0SW5mby5wbGFjZW1lbnQ7XHJcbiAgICAgIGxldCBmaW5hbFBvc2l0aW9uID0gdGFyZ2V0SW5mby5wb3NpdGlvbjtcclxuXHJcbiAgICAgIGlmICh0aGlzLmF1dG9BZGp1c3QpIHtcclxuICAgICAgICBjb25zdCBvcHRpbWFsID0gdGhpcy5jYWxjdWxhdGVPcHRpbWFsUGxhY2VtZW50KFxyXG4gICAgICAgICAgdHJpZ2dlclJlY3QsXHJcbiAgICAgICAgICBwb3B1cFJlY3QsXHJcbiAgICAgICAgICB2aWV3cG9ydFdpZHRoLFxyXG4gICAgICAgICAgdmlld3BvcnRIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICAgIGZpbmFsUGxhY2VtZW50ID0gb3B0aW1hbC5wbGFjZW1lbnQ7XHJcbiAgICAgICAgZmluYWxQb3NpdGlvbiA9IG9wdGltYWwucG9zaXRpb247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYWN0dWFsUGxhY2VtZW50ID0gZmluYWxQbGFjZW1lbnQ7XHJcbiAgICAgIHRoaXMuYWN0dWFsUG9zaXRpb24gPSBmaW5hbFBvc2l0aW9uO1xyXG5cclxuICAgICAgLy8g6K6h566X5L2N572u5Z2Q5qCH77yI5LiN5L6d6LWWRE9N77yM55u05o6l6K6h566X77yJXHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5jYWxjdWxhdGVQb3NpdGlvbkNvb3JkaW5hdGVzKFxyXG4gICAgICAgIHRyaWdnZXJSZWN0LFxyXG4gICAgICAgIGZpbmFsUGxhY2VtZW50LFxyXG4gICAgICAgIGZpbmFsUG9zaXRpb24sXHJcbiAgICAgICAgcG9wdXBTaXplXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyDlhYjorr7nva7miZPlvIDnirbmgIHvvIzkvYbkv53mjIHpmpDol4/vvIhwb3NpdGlvbmluZyA9IHllc++8iVxyXG4gICAgICB0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcbiAgICAgIHRoaXMucG9zaXRpb25pbmcgPSBcInllc1wiO1xyXG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAvLyDlvLrliLbmm7TmlrDop4blm77vvIznoa7kv51ET03lt7Lmm7TmlrBcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgLy8g5aaC5p6c5YWD57Sg5bey57uP5a2Y5Zyo77yM56uL5Y2z6K6+572u5L2N572u77yI5LiN562J5b6FIHJlcXVlc3RBbmltYXRpb25GcmFtZe+8iVxyXG4gICAgICBpZiAodGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHBvcHVwRWwgPSB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICAvLyDnq4vljbPorr7nva7lsLrlr7jlkozkvY3nva5cclxuICAgICAgICBwb3B1cEVsLnN0eWxlLndpZHRoID0gdGhpcy5fd2lkdGggKyBcInB4XCI7XHJcbiAgICAgICAgcG9wdXBFbC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9oZWlnaHQgKyBcInB4XCI7XHJcbiAgICAgICAgcG9wdXBFbC5zdHlsZS5taW5XaWR0aCA9IHRoaXMuX3dpZHRoICsgXCJweFwiO1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUubWF4V2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLm1pbkhlaWdodCA9IHRoaXMuX2hlaWdodCArIFwicHhcIjtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLm1heEhlaWdodCA9IHRoaXMuX2hlaWdodCArIFwicHhcIjtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLnRvcCA9IHBvc2l0aW9uLnRvcDtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLmxlZnQgPSBwb3NpdGlvbi5sZWZ0O1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3Bvc2l0aW9uLnRyYW5zbGF0ZVh9LCAke3Bvc2l0aW9uLnRyYW5zbGF0ZVl9KWA7XHJcblxyXG4gICAgICAgIC8vIOW8uuWItuWQjOatpeW6lOeUqOagt+W8j1xyXG4gICAgICAgIHBvcHVwRWwub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAvLyDkvY3nva7orr7nva7lrozmiJDlkI7vvIznq4vljbPmmL7npLrlvLnnqpdcclxuICAgICAgICB0aGlzLnBvc2l0aW9uaW5nID0gXCJub1wiO1xyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIOWmguaenOWFg+e0oOi/mOS4jeWtmOWcqO+8jOetieW+hea4suafk1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBwb3B1cEVsID0gdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIC8vIOeri+WNs+iuvue9ruWwuuWvuOWSjOS9jee9rlxyXG4gICAgICAgICAgICBwb3B1cEVsLnN0eWxlLndpZHRoID0gdGhpcy5fd2lkdGggKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHBvcHVwRWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgICAgICBwb3B1cEVsLnN0eWxlLm1pbldpZHRoID0gdGhpcy5fd2lkdGggKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHBvcHVwRWwuc3R5bGUubWF4V2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgICAgICAgcG9wdXBFbC5zdHlsZS5taW5IZWlnaHQgPSB0aGlzLl9oZWlnaHQgKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHBvcHVwRWwuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgICAgICBwb3B1cEVsLnN0eWxlLnRvcCA9IHBvc2l0aW9uLnRvcDtcclxuICAgICAgICAgICAgcG9wdXBFbC5zdHlsZS5sZWZ0ID0gcG9zaXRpb24ubGVmdDtcclxuICAgICAgICAgICAgcG9wdXBFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7cG9zaXRpb24udHJhbnNsYXRlWH0sICR7cG9zaXRpb24udHJhbnNsYXRlWX0pYDtcclxuXHJcbiAgICAgICAgICAgIC8vIOW8uuWItuWQjOatpeW6lOeUqOagt+W8j1xyXG4gICAgICAgICAgICBwb3B1cEVsLm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgIC8vIOS9jee9ruiuvue9ruWujOaIkOWQju+8jOeri+WNs+aYvuekuuW8ueeql1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uaW5nID0gXCJub1wiO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8g5rKh5pyJ5Zu65a6a5bC65a+477yM6ZyA6KaB562J5b6FRE9N5riy5p+TXHJcbiAgICAgIHRoaXMucG9zaXRpb25pbmcgPSBcInllc1wiO1xyXG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgIC8vIOeri+WNs+W8uuWItuabtOaWsOinhuWbvu+8jOehruS/nURPTeW3suabtOaWsFxyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAvLyDkvb/nlKggcmVxdWVzdEFuaW1hdGlvbkZyYW1lIOehruS/neWcqOa1j+iniOWZqOa4suafk+S5i+WJjeabtOaWsOS9jee9rlxyXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOehruS/neWFg+e0oOW3sua4suafk+W5tuiOt+WPluWwuuWvuFxyXG4gICAgICAgIGlmICh0aGlzLnBvcHVwRWxlbWVudCAmJiB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAvLyDlvLrliLbph43mlrDorqHnrpfluIPlsYDvvIznoa7kv53lhYPntKDlsLrlr7jlt7LorqHnrpdcclxuICAgICAgICAgIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAgIC8vIOiuoeeul+W5tuiuvue9ruS9jee9rlxyXG4gICAgICAgICAgdGhpcy51cGRhdGVQb3B1cFBvc2l0aW9uKCk7XHJcblxyXG4gICAgICAgICAgLy8g5L2N572u6K6+572u5a6M5oiQ5ZCO77yM56e76Zmk5a6a5L2N54q25oCB77yM5pi+56S65by556qXXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uaW5nID0gXCJub1wiO1xyXG4gICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vbldpbmRvd1Njcm9sbCwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIGlmICh0aGlzLm9wZW5lZCA9PT0gXCJub1wiKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuICAgIHRoaXMucG9zaXRpb25pbmcgPSBcIm5vXCI7XHJcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vbldpbmRvd1Njcm9sbCwgdHJ1ZSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZSgpIHtcclxuICAgIGlmICh0aGlzLm9wZW5lZCA9PT0gXCJ5ZXNcIikge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tUcmlnZ2VyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpc0NsaWNrT25UcmlnZ2VyID1cclxuICAgICAgdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQgJiYgdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQuY29udGFpbnModGFyZ2V0KTtcclxuICAgIGNvbnN0IGlzQ2xpY2tPblBvcHVwID1cclxuICAgICAgdGhpcy5wb3B1cEVsZW1lbnQgJiZcclxuICAgICAgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCk7XHJcblxyXG4gICAgaWYgKCFpc0NsaWNrT25UcmlnZ2VyICYmICFpc0NsaWNrT25Qb3B1cCkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgb25XaW5kb3dTY3JvbGwgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5vcGVuZWQgPT09IFwieWVzXCIpIHtcclxuICAgICAgdGhpcy51cGRhdGVQb3B1cFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy8g6K6h566X5bm26K6+572u5L2N572u77yI5pSv5oyB5Zu65a6a5bC65a+477yM5Y+v5Zyo5omT5byA5YmN6LCD55So77yJXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVBbmRTZXRQb3NpdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRyaWdnZXJSZWN0ID0gdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICAvLyDojrflj5blvLnnqpflsLrlr7jvvIjkvJjlhYjkvb/nlKjlm7rlrprlsLrlr7jvvIlcclxuICAgIGNvbnN0IHBvcHVwU2l6ZSA9IHtcclxuICAgICAgd2lkdGg6XHJcbiAgICAgICAgdGhpcy5fd2lkdGggIT09IG51bGxcclxuICAgICAgICAgID8gdGhpcy5fd2lkdGhcclxuICAgICAgICAgIDogdGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICAgPyB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXHJcbiAgICAgICAgICA6IDMwMCxcclxuICAgICAgaGVpZ2h0OlxyXG4gICAgICAgIHRoaXMuX2hlaWdodCAhPT0gbnVsbFxyXG4gICAgICAgICAgPyB0aGlzLl9oZWlnaHRcclxuICAgICAgICAgIDogdGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICAgPyB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOWIm+W7uuiZmuaLn+eahCBwb3B1cFJlY3TvvIjnlKjkuo7orqHnrpfvvIlcclxuICAgIGNvbnN0IHBvcHVwUmVjdDogRE9NUmVjdCA9IHtcclxuICAgICAgd2lkdGg6IHBvcHVwU2l6ZS53aWR0aCxcclxuICAgICAgaGVpZ2h0OiBwb3B1cFNpemUuaGVpZ2h0LFxyXG4gICAgICB0b3A6IDAsXHJcbiAgICAgIGxlZnQ6IDAsXHJcbiAgICAgIHJpZ2h0OiBwb3B1cFNpemUud2lkdGgsXHJcbiAgICAgIGJvdHRvbTogcG9wdXBTaXplLmhlaWdodCxcclxuICAgICAgeDogMCxcclxuICAgICAgeTogMCxcclxuICAgICAgdG9KU09OOiAoKSA9PiAoe30pLFxyXG4gICAgfSBhcyBET01SZWN0O1xyXG5cclxuICAgIC8vIOiOt+WPluebruagh+S9jee9ruS/oeaBr1xyXG4gICAgY29uc3QgdGFyZ2V0SW5mbyA9IHRoaXMucGxhY2VtZW50SW5mbztcclxuICAgIGxldCBmaW5hbFBsYWNlbWVudCA9IHRhcmdldEluZm8ucGxhY2VtZW50O1xyXG4gICAgbGV0IGZpbmFsUG9zaXRpb24gPSB0YXJnZXRJbmZvLnBvc2l0aW9uO1xyXG5cclxuICAgIGlmICh0aGlzLmF1dG9BZGp1c3QpIHtcclxuICAgICAgY29uc3Qgb3B0aW1hbCA9IHRoaXMuY2FsY3VsYXRlT3B0aW1hbFBsYWNlbWVudChcclxuICAgICAgICB0cmlnZ2VyUmVjdCxcclxuICAgICAgICBwb3B1cFJlY3QsXHJcbiAgICAgICAgdmlld3BvcnRXaWR0aCxcclxuICAgICAgICB2aWV3cG9ydEhlaWdodFxyXG4gICAgICApO1xyXG4gICAgICBmaW5hbFBsYWNlbWVudCA9IG9wdGltYWwucGxhY2VtZW50O1xyXG4gICAgICBmaW5hbFBvc2l0aW9uID0gb3B0aW1hbC5wb3NpdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdHVhbFBsYWNlbWVudCA9IGZpbmFsUGxhY2VtZW50O1xyXG4gICAgdGhpcy5hY3R1YWxQb3NpdGlvbiA9IGZpbmFsUG9zaXRpb247XHJcblxyXG4gICAgLy8g56uL5Y2z6K6+572u5L2N572u77yI5Y2z5L2/5YWD57Sg6L+Y5rKh5a6M5YWo5riy5p+T77yM5Lmf6KaB5YWI6K6+572u5L2N572u77yJXHJcbiAgICBpZiAodGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnNldFBvcHVwUG9zaXRpb24oXHJcbiAgICAgICAgdHJpZ2dlclJlY3QsXHJcbiAgICAgICAgcG9wdXBSZWN0LFxyXG4gICAgICAgIGZpbmFsUGxhY2VtZW50LFxyXG4gICAgICAgIGZpbmFsUG9zaXRpb24sXHJcbiAgICAgICAgcG9wdXBTaXplXHJcbiAgICAgICk7XHJcbiAgICAgIC8vIOW8uuWItuW6lOeUqOagt+W8j++8jOehruS/neS9jee9rueri+WNs+eUn+aViFxyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlpoLmnpzlhYPntKDov5jkuI3lrZjlnKjvvIzlu7bov5/orr7nva7kvY3nva5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9wdXBFbGVtZW50ICYmIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0UG9wdXBQb3NpdGlvbihcclxuICAgICAgICAgICAgdHJpZ2dlclJlY3QsXHJcbiAgICAgICAgICAgIHBvcHVwUmVjdCxcclxuICAgICAgICAgICAgZmluYWxQbGFjZW1lbnQsXHJcbiAgICAgICAgICAgIGZpbmFsUG9zaXRpb24sXHJcbiAgICAgICAgICAgIHBvcHVwU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUG9wdXBQb3NpdGlvbigpIHtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuY3VycmVudFRyaWdnZXJFbGVtZW50IHx8XHJcbiAgICAgICF0aGlzLnBvcHVwRWxlbWVudCB8fFxyXG4gICAgICAhdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzmj5Dkvpvkuoblm7rlrprlsLrlr7jvvIzkvb/nlKjlm7rlrprlsLrlr7jorqHnrpdcclxuICAgIGlmICh0aGlzLl93aWR0aCAhPT0gbnVsbCAmJiB0aGlzLl9oZWlnaHQgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVBbmRTZXRQb3NpdGlvbigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdHJpZ2dlclJlY3QgPSB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHBvcHVwUmVjdCA9IHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICAvLyDojrflj5bnm67moIfkvY3nva7kv6Hmga9cclxuICAgIGNvbnN0IHRhcmdldEluZm8gPSB0aGlzLnBsYWNlbWVudEluZm87XHJcbiAgICBsZXQgZmluYWxQbGFjZW1lbnQgPSB0YXJnZXRJbmZvLnBsYWNlbWVudDtcclxuICAgIGxldCBmaW5hbFBvc2l0aW9uID0gdGFyZ2V0SW5mby5wb3NpdGlvbjtcclxuXHJcbiAgICBpZiAodGhpcy5hdXRvQWRqdXN0KSB7XHJcbiAgICAgIGNvbnN0IG9wdGltYWwgPSB0aGlzLmNhbGN1bGF0ZU9wdGltYWxQbGFjZW1lbnQoXHJcbiAgICAgICAgdHJpZ2dlclJlY3QsXHJcbiAgICAgICAgcG9wdXBSZWN0LFxyXG4gICAgICAgIHZpZXdwb3J0V2lkdGgsXHJcbiAgICAgICAgdmlld3BvcnRIZWlnaHRcclxuICAgICAgKTtcclxuICAgICAgZmluYWxQbGFjZW1lbnQgPSBvcHRpbWFsLnBsYWNlbWVudDtcclxuICAgICAgZmluYWxQb3NpdGlvbiA9IG9wdGltYWwucG9zaXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3R1YWxQbGFjZW1lbnQgPSBmaW5hbFBsYWNlbWVudDtcclxuICAgIHRoaXMuYWN0dWFsUG9zaXRpb24gPSBmaW5hbFBvc2l0aW9uO1xyXG4gICAgdGhpcy5zZXRQb3B1cFBvc2l0aW9uKFxyXG4gICAgICB0cmlnZ2VyUmVjdCxcclxuICAgICAgcG9wdXBSZWN0LFxyXG4gICAgICBmaW5hbFBsYWNlbWVudCxcclxuICAgICAgZmluYWxQb3NpdGlvblxyXG4gICAgKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlT3B0aW1hbFBsYWNlbWVudChcclxuICAgIHRyaWdnZXJSZWN0OiBET01SZWN0IHwgQ2xpZW50UmVjdCxcclxuICAgIHBvcHVwUmVjdDogRE9NUmVjdCB8IENsaWVudFJlY3QsXHJcbiAgICB2aWV3cG9ydFdpZHRoOiBudW1iZXIsXHJcbiAgICB2aWV3cG9ydEhlaWdodDogbnVtYmVyXHJcbiAgKToge1xyXG4gICAgcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG4gICAgcG9zaXRpb246IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiO1xyXG4gIH0ge1xyXG4gICAgY29uc3QgdGFyZ2V0SW5mbyA9IHRoaXMucGxhY2VtZW50SW5mbztcclxuICAgIGNvbnN0IHByZWZlcnJlZCA9IHRhcmdldEluZm8ucGxhY2VtZW50O1xyXG4gICAgY29uc3QgcHJlZmVycmVkUG9zaXRpb24gPSB0YXJnZXRJbmZvLnBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnN0IHNwYWNlID0ge1xyXG4gICAgICB0b3A6IHRyaWdnZXJSZWN0LnRvcCxcclxuICAgICAgYm90dG9tOiB2aWV3cG9ydEhlaWdodCAtIHRyaWdnZXJSZWN0LmJvdHRvbSxcclxuICAgICAgbGVmdDogdHJpZ2dlclJlY3QubGVmdCxcclxuICAgICAgcmlnaHQ6IHZpZXdwb3J0V2lkdGggLSB0cmlnZ2VyUmVjdC5yaWdodCxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcG9wdXBTaXplID0ge1xyXG4gICAgICB3aWR0aDogcG9wdXBSZWN0LndpZHRoIHx8IDMwMCwgLy8g6buY6K6k5a695bqm77yM5aaC5p6c6L+Y5rKh5pyJ5riy5p+TXHJcbiAgICAgIGhlaWdodDogcG9wdXBSZWN0LmhlaWdodCB8fCAyMDAsIC8vIOm7mOiupOmrmOW6plxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmo4Dmn6XpppbpgInkvY3nva7mmK/lkKbmnInotrPlpJ/nqbrpl7RcclxuICAgIGNvbnN0IGhhc0Vub3VnaFNwYWNlID0gKHBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIikgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xyXG4gICAgICAgIGNhc2UgXCJ0b3BcIjpcclxuICAgICAgICAgIHJldHVybiBzcGFjZS50b3AgPj0gcG9wdXBTaXplLmhlaWdodCArIHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIGNhc2UgXCJib3R0b21cIjpcclxuICAgICAgICAgIHJldHVybiBzcGFjZS5ib3R0b20gPj0gcG9wdXBTaXplLmhlaWdodCArIHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICByZXR1cm4gc3BhY2UubGVmdCA+PSBwb3B1cFNpemUud2lkdGggKyB0aGlzLm9mZnNldDtcclxuICAgICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICAgIHJldHVybiBzcGFjZS5yaWdodCA+PSBwb3B1cFNpemUud2lkdGggKyB0aGlzLm9mZnNldDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmo4Dmn6XmjIflrprkvY3nva7mmK/lkKbmnInotrPlpJ/nqbrpl7RcclxuICAgIGNvbnN0IGNoZWNrUG9zaXRpb25TcGFjZSA9IChcclxuICAgICAgcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiLFxyXG4gICAgICBwb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCJcclxuICAgICk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICBpZiAocGxhY2VtZW50ID09PSBcInRvcFwiIHx8IHBsYWNlbWVudCA9PT0gXCJib3R0b21cIikge1xyXG4gICAgICAgIC8vIOWvueS6juS4iuS4i+S9jee9ru+8jOajgOafpeawtOW5s+Wvuem9kOepuumXtFxyXG4gICAgICAgIGNvbnN0IHBvcHVwV2lkdGggPSBwb3B1cFNpemUud2lkdGg7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VMZWZ0ID0gdHJpZ2dlclJlY3QubGVmdDtcclxuICAgICAgICBjb25zdCBzcGFjZVJpZ2h0ID0gdmlld3BvcnRXaWR0aCAtIHRyaWdnZXJSZWN0LnJpZ2h0O1xyXG5cclxuICAgICAgICBpZiAocG9zaXRpb24gPT09IFwiY2VudGVyXCIpIHtcclxuICAgICAgICAgIHJldHVybiBzcGFjZUxlZnQgPj0gcG9wdXBXaWR0aCAvIDIgJiYgc3BhY2VSaWdodCA+PSBwb3B1cFdpZHRoIC8gMjtcclxuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIpIHtcclxuICAgICAgICAgIHJldHVybiBzcGFjZUxlZnQgPj0gcG9wdXBXaWR0aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gZW5kXHJcbiAgICAgICAgICByZXR1cm4gc3BhY2VSaWdodCA+PSBwb3B1cFdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyDlr7nkuo7lt6blj7PkvY3nva7vvIzmo4Dmn6XlnoLnm7Tlr7npvZDnqbrpl7RcclxuICAgICAgICBjb25zdCBwb3B1cEhlaWdodCA9IHBvcHVwU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VUb3AgPSB0cmlnZ2VyUmVjdC50b3A7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VCb3R0b20gPSB2aWV3cG9ydEhlaWdodCAtIHRyaWdnZXJSZWN0LmJvdHRvbTtcclxuXHJcbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBcImNlbnRlclwiKSB7XHJcbiAgICAgICAgICByZXR1cm4gc3BhY2VUb3AgPj0gcG9wdXBIZWlnaHQgLyAyICYmIHNwYWNlQm90dG9tID49IHBvcHVwSGVpZ2h0IC8gMjtcclxuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIpIHtcclxuICAgICAgICAgIHJldHVybiBzcGFjZVRvcCA+PSBwb3B1cEhlaWdodDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gZW5kXHJcbiAgICAgICAgICByZXR1cm4gc3BhY2VCb3R0b20gPj0gcG9wdXBIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOiuoeeul+S9jee9ruaYr+WQpuWQiOmAgu+8iOiAg+iZkeawtOW5sy/lnoLnm7Tlr7npvZDvvIlcclxuICAgIGNvbnN0IGNhbGN1bGF0ZVBvc2l0aW9uID0gKFxyXG4gICAgICBwbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCJcclxuICAgICk6IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiID0+IHtcclxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gXCJ0b3BcIiB8fCBwbGFjZW1lbnQgPT09IFwiYm90dG9tXCIpIHtcclxuICAgICAgICAvLyDlr7nkuo7kuIrkuIvkvY3nva7vvIzmo4Dmn6XmsLTlubPlr7npvZBcclxuICAgICAgICBjb25zdCBwb3B1cFdpZHRoID0gcG9wdXBTaXplLndpZHRoO1xyXG4gICAgICAgIGNvbnN0IHNwYWNlTGVmdCA9IHRyaWdnZXJSZWN0LmxlZnQ7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VSaWdodCA9IHZpZXdwb3J0V2lkdGggLSB0cmlnZ2VyUmVjdC5yaWdodDtcclxuXHJcbiAgICAgICAgLy8g5LyY5YWI5bCd6K+V5L2/55So55So5oi35oyH5a6a55qEcG9zaXRpb25cclxuICAgICAgICBpZiAoY2hlY2tQb3NpdGlvblNwYWNlKHBsYWNlbWVudCwgcHJlZmVycmVkUG9zaXRpb24pKSB7XHJcbiAgICAgICAgICByZXR1cm4gcHJlZmVycmVkUG9zaXRpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlpoLmnpzkuK3lv4Plr7npvZDmnInotrPlpJ/nqbrpl7TvvIzkvJjlhYjkvb/nlKjkuK3lv4NcclxuICAgICAgICBpZiAoc3BhY2VMZWZ0ID49IHBvcHVwV2lkdGggLyAyICYmIHNwYWNlUmlnaHQgPj0gcG9wdXBXaWR0aCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcImNlbnRlclwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzlt6bkvqfnqbrpl7TkuI3otrPvvIzkvb/nlKjlj7Plr7npvZBcclxuICAgICAgICBpZiAoc3BhY2VMZWZ0IDwgcG9wdXBXaWR0aCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcImVuZFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzlj7Pkvqfnqbrpl7TkuI3otrPvvIzkvb/nlKjlt6blr7npvZBcclxuICAgICAgICBpZiAoc3BhY2VSaWdodCA8IHBvcHVwV2lkdGggLyAyKSB7XHJcbiAgICAgICAgICByZXR1cm4gXCJzdGFydFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJlZmVycmVkUG9zaXRpb247XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8g5a+55LqO5bem5Y+z5L2N572u77yM5qOA5p+l5Z6C55u05a+56b2QXHJcbiAgICAgICAgY29uc3QgcG9wdXBIZWlnaHQgPSBwb3B1cFNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IHNwYWNlVG9wID0gdHJpZ2dlclJlY3QudG9wO1xyXG4gICAgICAgIGNvbnN0IHNwYWNlQm90dG9tID0gdmlld3BvcnRIZWlnaHQgLSB0cmlnZ2VyUmVjdC5ib3R0b207XHJcblxyXG4gICAgICAgIC8vIOS8mOWFiOWwneivleS9v+eUqOeUqOaIt+aMh+WumueahHBvc2l0aW9uXHJcbiAgICAgICAgaWYgKGNoZWNrUG9zaXRpb25TcGFjZShwbGFjZW1lbnQsIHByZWZlcnJlZFBvc2l0aW9uKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHByZWZlcnJlZFBvc2l0aW9uO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5aaC5p6c5Lit5b+D5a+56b2Q5pyJ6Laz5aSf56m66Ze077yM5LyY5YWI5L2/55So5Lit5b+DXHJcbiAgICAgICAgaWYgKHNwYWNlVG9wID49IHBvcHVwSGVpZ2h0IC8gMiAmJiBzcGFjZUJvdHRvbSA+PSBwb3B1cEhlaWdodCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcImNlbnRlclwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzkuIrmlrnnqbrpl7TkuI3otrPvvIzkvb/nlKjkuIvlr7npvZBcclxuICAgICAgICBpZiAoc3BhY2VUb3AgPCBwb3B1cEhlaWdodCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcImVuZFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzkuIvmlrnnqbrpl7TkuI3otrPvvIzkvb/nlKjkuIrlr7npvZBcclxuICAgICAgICBpZiAoc3BhY2VCb3R0b20gPCBwb3B1cEhlaWdodCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcInN0YXJ0XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcmVmZXJyZWRQb3NpdGlvbjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDlpoLmnpzpppbpgInkvY3nva7mnInotrPlpJ/nqbrpl7TvvIzkvJjlhYjkvb/nlKjnlKjmiLfmjIflrprnmoRwb3NpdGlvblxyXG4gICAgaWYgKGhhc0Vub3VnaFNwYWNlKHByZWZlcnJlZCkpIHtcclxuICAgICAgLy8g5qOA5p+l55So5oi35oyH5a6a55qEcG9zaXRpb27mmK/lkKbmnInotrPlpJ/nqbrpl7RcclxuICAgICAgaWYgKGNoZWNrUG9zaXRpb25TcGFjZShwcmVmZXJyZWQsIHByZWZlcnJlZFBvc2l0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBwbGFjZW1lbnQ6IHByZWZlcnJlZCxcclxuICAgICAgICAgIHBvc2l0aW9uOiBwcmVmZXJyZWRQb3NpdGlvbixcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOaMh+WumueahHBvc2l0aW9u56m66Ze05LiN6Laz77yM6Ieq5Yqo6K6h566X5pyA5L2zcG9zaXRpb25cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwbGFjZW1lbnQ6IHByZWZlcnJlZCxcclxuICAgICAgICBwb3NpdGlvbjogY2FsY3VsYXRlUG9zaXRpb24ocHJlZmVycmVkKSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmoLnmja7pppbpgInkvY3nva7pgInmi6nlpIfpgInkvY3nva5cclxuICAgIGNvbnN0IGFsdGVybmF0aXZlczoge1xyXG4gICAgICBba2V5OiBzdHJpbmddOiAoXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIilbXTtcclxuICAgIH0gPSB7XHJcbiAgICAgIGJvdHRvbTogW1widG9wXCIsIFwicmlnaHRcIiwgXCJsZWZ0XCJdLFxyXG4gICAgICB0b3A6IFtcImJvdHRvbVwiLCBcInJpZ2h0XCIsIFwibGVmdFwiXSxcclxuICAgICAgcmlnaHQ6IFtcImxlZnRcIiwgXCJib3R0b21cIiwgXCJ0b3BcIl0sXHJcbiAgICAgIGxlZnQ6IFtcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwidG9wXCJdLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBhbHRMaXN0ID0gYWx0ZXJuYXRpdmVzW3ByZWZlcnJlZF0gfHwgW107XHJcblxyXG4gICAgLy8g5bCd6K+V5om+5Yiw56ys5LiA5Liq5pyJ6Laz5aSf56m66Ze055qE5aSH6YCJ5L2N572uXHJcbiAgICBmb3IgKGNvbnN0IGFsdCBvZiBhbHRMaXN0KSB7XHJcbiAgICAgIGlmIChoYXNFbm91Z2hTcGFjZShhbHQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHBsYWNlbWVudDogYWx0LFxyXG4gICAgICAgICAgcG9zaXRpb246IGNhbGN1bGF0ZVBvc2l0aW9uKGFsdCksXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOWmguaenOmDveayoeaciei2s+Wkn+epuumXtO+8jOmAieaLqeepuumXtOacgOWkp+eahOS9jee9rlxyXG4gICAgY29uc3QgbWF4U3BhY2UgPSBNYXRoLm1heChzcGFjZS50b3AsIHNwYWNlLmJvdHRvbSwgc3BhY2UubGVmdCwgc3BhY2UucmlnaHQpO1xyXG4gICAgbGV0IGJlc3RQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCI7XHJcbiAgICBpZiAobWF4U3BhY2UgPT09IHNwYWNlLnRvcCkgYmVzdFBsYWNlbWVudCA9IFwidG9wXCI7XHJcbiAgICBlbHNlIGlmIChtYXhTcGFjZSA9PT0gc3BhY2UuYm90dG9tKSBiZXN0UGxhY2VtZW50ID0gXCJib3R0b21cIjtcclxuICAgIGVsc2UgaWYgKG1heFNwYWNlID09PSBzcGFjZS5sZWZ0KSBiZXN0UGxhY2VtZW50ID0gXCJsZWZ0XCI7XHJcbiAgICBlbHNlIGJlc3RQbGFjZW1lbnQgPSBcInJpZ2h0XCI7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGxhY2VtZW50OiBiZXN0UGxhY2VtZW50LFxyXG4gICAgICBwb3NpdGlvbjogY2FsY3VsYXRlUG9zaXRpb24oYmVzdFBsYWNlbWVudCksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X5L2N572u5Z2Q5qCH77yI57qv6K6h566X77yM5LiN5L6d6LWWRE9N77yM5YyF5ZCr6L6555WM57qm5p2f77yJXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVQb3NpdGlvbkNvb3JkaW5hdGVzKFxyXG4gICAgdHJpZ2dlclJlY3Q6IERPTVJlY3QgfCBDbGllbnRSZWN0LFxyXG4gICAgcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiLFxyXG4gICAgcG9zaXRpb246IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiLFxyXG4gICAgcG9wdXBTaXplOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH1cclxuICApOiB7IHRvcDogc3RyaW5nOyBsZWZ0OiBzdHJpbmc7IHRyYW5zbGF0ZVg6IHN0cmluZzsgdHJhbnNsYXRlWTogc3RyaW5nIH0ge1xyXG4gICAgY29uc3QgdHJpZ2dlcldpZHRoID0gdHJpZ2dlclJlY3Qud2lkdGg7XHJcbiAgICBjb25zdCB0cmlnZ2VySGVpZ2h0ID0gdHJpZ2dlclJlY3QuaGVpZ2h0O1xyXG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICBjb25zdCBzY3JvbGxYID0gd2luZG93LnNjcm9sbFg7XHJcbiAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XHJcblxyXG4gICAgbGV0IHRvcCA9IDA7XHJcbiAgICBsZXQgbGVmdCA9IDA7XHJcbiAgICBsZXQgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG4gICAgbGV0IHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuXHJcbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xyXG4gICAgICBjYXNlIFwidG9wXCI6XHJcbiAgICAgICAgdG9wID0gdHJpZ2dlclJlY3QudG9wICsgc2Nyb2xsWSAtIHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIpIHtcclxuICAgICAgICAgIGxlZnQgPSB0cmlnZ2VyUmVjdC5sZWZ0ICsgc2Nyb2xsWDtcclxuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcImNlbnRlclwiKSB7XHJcbiAgICAgICAgICBsZWZ0ID0gdHJpZ2dlclJlY3QubGVmdCArIHNjcm9sbFggKyB0cmlnZ2VyV2lkdGggLyAyO1xyXG4gICAgICAgICAgdHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZWZ0ID0gdHJpZ2dlclJlY3QubGVmdCArIHNjcm9sbFggKyB0cmlnZ2VyV2lkdGg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDovrnnlYznuqbmnZ/vvJrnoa7kv53lvLnnqpfkuI3otoXlh7rop4blj6NcclxuICAgICAgICBpZiAodG9wIC0gcG9wdXBTaXplLmhlaWdodCA8IHNjcm9sbFkpIHtcclxuICAgICAgICAgIHRvcCA9IHNjcm9sbFkgKyA4OyAvLyDot53nprvpobbpg6joh7PlsJE4cHhcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxlZnQgPCBzY3JvbGxYKSB7XHJcbiAgICAgICAgICBsZWZ0ID0gc2Nyb2xsWCArIDg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVYID0gXCIwXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChsZWZ0ICsgcG9wdXBTaXplLndpZHRoID4gc2Nyb2xsWCArIHZpZXdwb3J0V2lkdGgpIHtcclxuICAgICAgICAgIGxlZnQgPSBzY3JvbGxYICsgdmlld3BvcnRXaWR0aCAtIHBvcHVwU2l6ZS53aWR0aCAtIDg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVYID0gXCIwXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImJvdHRvbVwiOlxyXG4gICAgICAgIHRvcCA9IHRyaWdnZXJSZWN0LmJvdHRvbSArIHNjcm9sbFkgKyB0aGlzLm9mZnNldDtcclxuICAgICAgICBpZiAocG9zaXRpb24gPT09IFwic3RhcnRcIikge1xyXG4gICAgICAgICAgbGVmdCA9IHRyaWdnZXJSZWN0LmxlZnQgKyBzY3JvbGxYO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09IFwiY2VudGVyXCIpIHtcclxuICAgICAgICAgIGxlZnQgPSB0cmlnZ2VyUmVjdC5sZWZ0ICsgc2Nyb2xsWCArIHRyaWdnZXJXaWR0aCAvIDI7XHJcbiAgICAgICAgICB0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxlZnQgPSB0cmlnZ2VyUmVjdC5sZWZ0ICsgc2Nyb2xsWCArIHRyaWdnZXJXaWR0aDtcclxuICAgICAgICAgIHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOi+ueeVjOe6puadn++8muehruS/neW8ueeql+S4jei2heWHuuinhuWPo1xyXG4gICAgICAgIGlmICh0b3AgKyBwb3B1cFNpemUuaGVpZ2h0ID4gc2Nyb2xsWSArIHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0b3AgPSBzY3JvbGxZICsgdmlld3BvcnRIZWlnaHQgLSBwb3B1cFNpemUuaGVpZ2h0IC0gODsgLy8g6Led56a75bqV6YOo6Iez5bCROHB4XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsZWZ0IDwgc2Nyb2xsWCkge1xyXG4gICAgICAgICAgbGVmdCA9IHNjcm9sbFggKyA4O1xyXG4gICAgICAgICAgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobGVmdCArIHBvcHVwU2l6ZS53aWR0aCA+IHNjcm9sbFggKyB2aWV3cG9ydFdpZHRoKSB7XHJcbiAgICAgICAgICBsZWZ0ID0gc2Nyb2xsWCArIHZpZXdwb3J0V2lkdGggLSBwb3B1cFNpemUud2lkdGggLSA4O1xyXG4gICAgICAgICAgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgbGVmdCA9IHRyaWdnZXJSZWN0LmxlZnQgKyBzY3JvbGxYIC0gdGhpcy5vZmZzZXQ7XHJcbiAgICAgICAgdHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuICAgICAgICBpZiAocG9zaXRpb24gPT09IFwic3RhcnRcIikge1xyXG4gICAgICAgICAgdG9wID0gdHJpZ2dlclJlY3QudG9wICsgc2Nyb2xsWTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcImNlbnRlclwiKSB7XHJcbiAgICAgICAgICB0b3AgPSB0cmlnZ2VyUmVjdC50b3AgKyBzY3JvbGxZICsgdHJpZ2dlckhlaWdodCAvIDI7XHJcbiAgICAgICAgICB0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRvcCA9IHRyaWdnZXJSZWN0LnRvcCArIHNjcm9sbFkgKyB0cmlnZ2VySGVpZ2h0O1xyXG4gICAgICAgICAgdHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g6L6555WM57qm5p2f77ya56Gu5L+d5by556qX5LiN6LaF5Ye66KeG5Y+jXHJcbiAgICAgICAgaWYgKGxlZnQgLSBwb3B1cFNpemUud2lkdGggPCBzY3JvbGxYKSB7XHJcbiAgICAgICAgICBsZWZ0ID0gc2Nyb2xsWCArIDg7IC8vIOi3neemu+W3puS+p+iHs+WwkThweFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodG9wIDwgc2Nyb2xsWSkge1xyXG4gICAgICAgICAgdG9wID0gc2Nyb2xsWSArIDg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVZID0gXCIwXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0b3AgKyBwb3B1cFNpemUuaGVpZ2h0ID4gc2Nyb2xsWSArIHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0b3AgPSBzY3JvbGxZICsgdmlld3BvcnRIZWlnaHQgLSBwb3B1cFNpemUuaGVpZ2h0IC0gODtcclxuICAgICAgICAgIHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICBsZWZ0ID0gdHJpZ2dlclJlY3QucmlnaHQgKyBzY3JvbGxYICsgdGhpcy5vZmZzZXQ7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIpIHtcclxuICAgICAgICAgIHRvcCA9IHRyaWdnZXJSZWN0LnRvcCArIHNjcm9sbFk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gXCJjZW50ZXJcIikge1xyXG4gICAgICAgICAgdG9wID0gdHJpZ2dlclJlY3QudG9wICsgc2Nyb2xsWSArIHRyaWdnZXJIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgdHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0b3AgPSB0cmlnZ2VyUmVjdC50b3AgKyBzY3JvbGxZICsgdHJpZ2dlckhlaWdodDtcclxuICAgICAgICAgIHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOi+ueeVjOe6puadn++8muehruS/neW8ueeql+S4jei2heWHuuinhuWPo1xyXG4gICAgICAgIGlmIChsZWZ0ICsgcG9wdXBTaXplLndpZHRoID4gc2Nyb2xsWCArIHZpZXdwb3J0V2lkdGgpIHtcclxuICAgICAgICAgIGxlZnQgPSBzY3JvbGxYICsgdmlld3BvcnRXaWR0aCAtIHBvcHVwU2l6ZS53aWR0aCAtIDg7IC8vIOi3neemu+WPs+S+p+iHs+WwkThweFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodG9wIDwgc2Nyb2xsWSkge1xyXG4gICAgICAgICAgdG9wID0gc2Nyb2xsWSArIDg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVZID0gXCIwXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0b3AgKyBwb3B1cFNpemUuaGVpZ2h0ID4gc2Nyb2xsWSArIHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0b3AgPSBzY3JvbGxZICsgdmlld3BvcnRIZWlnaHQgLSBwb3B1cFNpemUuaGVpZ2h0IC0gODtcclxuICAgICAgICAgIHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG9wOiB0b3AgKyBcInB4XCIsXHJcbiAgICAgIGxlZnQ6IGxlZnQgKyBcInB4XCIsXHJcbiAgICAgIHRyYW5zbGF0ZVgsXHJcbiAgICAgIHRyYW5zbGF0ZVksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc2V0UG9wdXBQb3NpdGlvbihcclxuICAgIHRyaWdnZXJSZWN0OiBET01SZWN0IHwgQ2xpZW50UmVjdCxcclxuICAgIHBvcHVwUmVjdDogRE9NUmVjdCB8IENsaWVudFJlY3QsXHJcbiAgICBwbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCIsXHJcbiAgICBwb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCIsXHJcbiAgICBwb3B1cFNpemU/OiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH1cclxuICApIHtcclxuICAgIGNvbnN0IHBvcHVwRWwgPVxyXG4gICAgICB0aGlzLnBvcHVwRWxlbWVudCAmJiB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgPyB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgaWYgKCFwb3B1cEVsKSB7XHJcbiAgICAgIHJldHVybjsgLy8g5aaC5p6c5YWD57Sg6L+Y5LiN5a2Y5Zyo77yM5peg5rOV6K6+572u5L2N572uXHJcbiAgICB9XHJcblxyXG4gICAgLy8g5LyY5YWI5L2/55So5Lyg5YWl55qE5Zu65a6a5bC65a+477yM5ZCm5YiZ5LuORE9N6I635Y+WXHJcbiAgICBjb25zdCBwb3B1cFdpZHRoID1cclxuICAgICAgcG9wdXBTaXplICYmIHBvcHVwU2l6ZS53aWR0aCAhPT0gbnVsbCAmJiBwb3B1cFNpemUud2lkdGggIT09IHVuZGVmaW5lZFxyXG4gICAgICAgID8gcG9wdXBTaXplLndpZHRoXHJcbiAgICAgICAgOiBwb3B1cFJlY3Qud2lkdGggfHwgcG9wdXBFbC5vZmZzZXRXaWR0aCB8fCAzMDA7XHJcbiAgICBjb25zdCBwb3B1cEhlaWdodCA9XHJcbiAgICAgIHBvcHVwU2l6ZSAmJiBwb3B1cFNpemUuaGVpZ2h0ICE9PSBudWxsICYmIHBvcHVwU2l6ZS5oZWlnaHQgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgID8gcG9wdXBTaXplLmhlaWdodFxyXG4gICAgICAgIDogcG9wdXBSZWN0LmhlaWdodCB8fCBwb3B1cEVsLm9mZnNldEhlaWdodCB8fCAyMDA7XHJcblxyXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uQ29vcmRpbmF0ZXMoXHJcbiAgICAgIHRyaWdnZXJSZWN0LFxyXG4gICAgICBwbGFjZW1lbnQsXHJcbiAgICAgIHBvc2l0aW9uLFxyXG4gICAgICB7IHdpZHRoOiBwb3B1cFdpZHRoLCBoZWlnaHQ6IHBvcHVwSGVpZ2h0IH1cclxuICAgICk7XHJcblxyXG4gICAgcG9wdXBFbC5zdHlsZS50b3AgPSBjb29yZGluYXRlcy50b3A7XHJcbiAgICBwb3B1cEVsLnN0eWxlLmxlZnQgPSBjb29yZGluYXRlcy5sZWZ0O1xyXG4gICAgcG9wdXBFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7Y29vcmRpbmF0ZXMudHJhbnNsYXRlWH0sICR7Y29vcmRpbmF0ZXMudHJhbnNsYXRlWX0pYDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuZWQgPT09IFwieWVzXCIpIHtcclxuICAgICAgdGhpcy51cGRhdGVQb3B1cFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
1208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zbWFydC1wb3B1cC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFnQnZCO0lBbUVFLDZCQUFvQixHQUFzQjtRQUExQyxpQkFBOEM7UUFBMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzRHRCLGVBQVUsR0FBa0IsWUFBWSxDQUFDO1FBQzVDLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDaEIsZ0JBQVcsR0FBaUIsS0FBSyxDQUFDO1FBQzlCLHNCQUFpQixHQUF1QixJQUFJLENBQUM7UUFDcEQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUM1QixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3RCLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzVCLFlBQU8sR0FBa0IsSUFBSSxDQUFDO1FBMEN6QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFPOUQsMEJBQXFCLEdBQXVCLElBQUksQ0FBQztRQWlKakQsdUJBQWtCLEdBQUcsZ0NBQWdDLENBQUM7UUFZdEQsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFDNUIsZ0JBQVcsR0FBaUIsSUFBSSxDQUFDO1FBQ2pDLG9CQUFlLEdBQXdDLFFBQVEsQ0FBQztRQUNoRSxtQkFBYyxHQUErQixPQUFPLENBQUM7UUErTXJELG1CQUFjOzs7O1FBQUcsVUFBQyxLQUFpQjs7Z0JBQzNCLE1BQU0sR0FBRyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXOztnQkFDaEMsZ0JBQWdCLEdBQ3BCLEtBQUks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O2lDQTgzQnBDLFlBQVksU0FBQyxlQUFlOztJQU0vQiwwQkFBQztDQUFBLEFBbDhCRCxJQWs4QkM7U0E3N0JZLG1CQUFtQjs7O0lBRzlCLHlDQUE2RDs7SUFDN0Qsc0NBQXFDOztJQUNyQywwQ0FBdUQ7O0lBQ3ZELGdEQUFzRTs7SUFDdEUsc0NBQTJDOztJQUMzQyxvQ0FBc0M7O0lBQ3RDLHFDQUE2Qzs7SUFDN0Msc0NBQStDOztJQTBDL0MseUNBQStEOztJQUMvRCwwQ0FBOEQ7O0lBRTlELHFEQUNnRDs7SUFDaEQsMkNBQ3lDOztJQUV6QyxvREFBaUQ7O0lBaUpqRCxpREFBc0Q7O0lBQ3RELCtDQUE4Qjs7SUFXOUIscUNBQTRCOztJQUM1QiwwQ0FBaUM7O0lBQ2pDLDhDQUFnRTs7SUFDaEUsNkNBQXFEOztJQStNckQsNkNBWUU7O0lBRUYsNkNBZUU7Ozs7O0lBMVlVLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5leHBvcnQgdHlwZSBQbGFjZW1lbnRUeXBlID1cclxuICB8IFwiVG9wTGVmdFwiXHJcbiAgfCBcIlRvcENlbnRlclwiXHJcbiAgfCBcIlRvcFJpZ2h0XCJcclxuICB8IFwiQm90dG9tTGVmdFwiXHJcbiAgfCBcIkJvdHRvbUNlbnRlclwiXHJcbiAgfCBcIkJvdHRvbVJpZ2h0XCJcclxuICB8IFwiTGVmdFRvcFwiXHJcbiAgfCBcIkxlZnRDZW50ZXJcIlxyXG4gIHwgXCJMZWZ0Qm90dG9tXCJcclxuICB8IFwiUmlnaHRUb3BcIlxyXG4gIHwgXCJSaWdodENlbnRlclwiXHJcbiAgfCBcIlJpZ2h0Qm90dG9tXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1zbWFydC1wb3B1cFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydFBvcHVwQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xyXG57XHJcbiAgQElucHV0KFwicGxhY2VtZW50XCIpIF9wbGFjZW1lbnQ6IFBsYWNlbWVudFR5cGUgPSBcIkJvdHRvbUxlZnRcIjtcclxuICBASW5wdXQoXCJvZmZzZXRcIikgX29mZnNldDogbnVtYmVyID0gODtcclxuICBASW5wdXQoXCJhdXRvQWRqdXN0XCIpIF9hdXRvQWRqdXN0OiBcInllc1wiIHwgXCJub1wiID0gXCJ5ZXNcIjtcclxuICBASW5wdXQoXCJ0cmlnZ2VyRWxlbWVudFwiKSB0cmlnZ2VyRWxlbWVudFJlZjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoXCJsb2FkaW5nXCIpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoXCJvcGVuXCIpIF9vcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KFwid2lkdGhcIikgX3dpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoXCJoZWlnaHRcIikgX2hlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIOino+aekHBsYWNlbWVudOagvOW8j1xyXG4gIGdldCBwbGFjZW1lbnRJbmZvKCk6IHtcclxuICAgIHBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIjtcclxuICAgIHBvc2l0aW9uOiBcInN0YXJ0XCIgfCBcImNlbnRlclwiIHwgXCJlbmRcIjtcclxuICB9IHtcclxuICAgIGNvbnN0IHBsYWNlbWVudE1hcDoge1xyXG4gICAgICBba2V5OiBzdHJpbmddOiB7XHJcbiAgICAgICAgcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG4gICAgICAgIHBvc2l0aW9uOiBcInN0YXJ0XCIgfCBcImNlbnRlclwiIHwgXCJlbmRcIjtcclxuICAgICAgfTtcclxuICAgIH0gPSB7XHJcbiAgICAgIFRvcExlZnQ6IHsgcGxhY2VtZW50OiBcInRvcFwiLCBwb3NpdGlvbjogXCJzdGFydFwiIH0sXHJcbiAgICAgIFRvcENlbnRlcjogeyBwbGFjZW1lbnQ6IFwidG9wXCIsIHBvc2l0aW9uOiBcImNlbnRlclwiIH0sXHJcbiAgICAgIFRvcFJpZ2h0OiB7IHBsYWNlbWVudDogXCJ0b3BcIiwgcG9zaXRpb246IFwiZW5kXCIgfSxcclxuICAgICAgQm90dG9tTGVmdDogeyBwbGFjZW1lbnQ6IFwiYm90dG9tXCIsIHBvc2l0aW9uOiBcInN0YXJ0XCIgfSxcclxuICAgICAgQm90dG9tQ2VudGVyOiB7IHBsYWNlbWVudDogXCJib3R0b21cIiwgcG9zaXRpb246IFwiY2VudGVyXCIgfSxcclxuICAgICAgQm90dG9tUmlnaHQ6IHsgcGxhY2VtZW50OiBcImJvdHRvbVwiLCBwb3NpdGlvbjogXCJlbmRcIiB9LFxyXG4gICAgICBMZWZ0VG9wOiB7IHBsYWNlbWVudDogXCJsZWZ0XCIsIHBvc2l0aW9uOiBcInN0YXJ0XCIgfSxcclxuICAgICAgTGVmdENlbnRlcjogeyBwbGFjZW1lbnQ6IFwibGVmdFwiLCBwb3NpdGlvbjogXCJjZW50ZXJcIiB9LFxyXG4gICAgICBMZWZ0Qm90dG9tOiB7IHBsYWNlbWVudDogXCJsZWZ0XCIsIHBvc2l0aW9uOiBcImVuZFwiIH0sXHJcbiAgICAgIFJpZ2h0VG9wOiB7IHBsYWNlbWVudDogXCJyaWdodFwiLCBwb3NpdGlvbjogXCJzdGFydFwiIH0sXHJcbiAgICAgIFJpZ2h0Q2VudGVyOiB7IHBsYWNlbWVudDogXCJyaWdodFwiLCBwb3NpdGlvbjogXCJjZW50ZXJcIiB9LFxyXG4gICAgICBSaWdodEJvdHRvbTogeyBwbGFjZW1lbnQ6IFwicmlnaHRcIiwgcG9zaXRpb246IFwiZW5kXCIgfSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBwbGFjZW1lbnRNYXBbdGhpcy5fcGxhY2VtZW50XSB8fCB7XHJcbiAgICAgICAgcGxhY2VtZW50OiBcImJvdHRvbVwiLFxyXG4gICAgICAgIHBvc2l0aW9uOiBcInN0YXJ0XCIsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgb2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX29mZnNldCB8fCA4O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGF1dG9BZGp1c3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXV0b0FkanVzdCA9PT0gXCJ5ZXNcIjtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoXCJvcGVuQ2hhbmdlXCIpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dChcImNvbnRlbnRMb2FkXCIpIGNvbnRlbnRMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwidHJpZ2dlclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBpbnRlcm5hbFRyaWdnZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKFwicG9wdXBcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcG9wdXBFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgY3VycmVudFRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuZml4ZWRDb250YWluZXJFbCA9IHRoaXMuZ2V0Rml4ZWRDb250YWluZXIoKTtcclxuICAgIHRoaXMuZml4ZWRDb250YWluZXJFbC5hcHBlbmQodGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLnVwZGF0ZVRyaWdnZXJFbGVtZW50KCk7XHJcblxyXG4gICAgLy8g5aaC5p6c5o+Q5L6b5LqG5Zu65a6a5bC65a+477yM56uL5Y2z5bqU55SoXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuX3dpZHRoICE9PSBudWxsICYmXHJcbiAgICAgIHRoaXMuX2hlaWdodCAhPT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLnBvcHVwRWxlbWVudCAmJlxyXG4gICAgICB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50XHJcbiAgICApIHtcclxuICAgICAgY29uc3QgcG9wdXBFbCA9IHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIHBvcHVwRWwuc3R5bGUud2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgcG9wdXBFbC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9oZWlnaHQgKyBcInB4XCI7XHJcbiAgICAgIHBvcHVwRWwuc3R5bGUubWluV2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgcG9wdXBFbC5zdHlsZS5tYXhXaWR0aCA9IHRoaXMuX3dpZHRoICsgXCJweFwiO1xyXG4gICAgICBwb3B1cEVsLnN0eWxlLm1pbkhlaWdodCA9IHRoaXMuX2hlaWdodCArIFwicHhcIjtcclxuICAgICAgcG9wdXBFbC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLl9oZWlnaHQgKyBcInB4XCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5aaC5p6c5aSW6YOo5Lyg5YWlIG9wZW4g5bGe5oCn5Li6IHRydWXvvIzoh6rliqjmiZPlvIBcclxuICAgIGlmICh0aGlzLl9vcGVuKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vcGVuKCksIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgLy8g5aSE55CG5Zu65a6a5bC65a+45Y+Y5YyWXHJcbiAgICBpZiAoXHJcbiAgICAgIChjaGFuZ2VzLl93aWR0aCB8fCBjaGFuZ2VzLl9oZWlnaHQpICYmXHJcbiAgICAgIHRoaXMucG9wdXBFbGVtZW50ICYmXHJcbiAgICAgIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcclxuICAgICkge1xyXG4gICAgICBjb25zdCBwb3B1cEVsID0gdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgICAgaWYgKHRoaXMuX3dpZHRoICE9PSBudWxsKSB7XHJcbiAgICAgICAgcG9wdXBFbC5zdHlsZS53aWR0aCA9IHRoaXMuX3dpZHRoICsgXCJweFwiO1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUubWluV2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLm1heFdpZHRoID0gdGhpcy5fd2lkdGggKyBcInB4XCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuX2hlaWdodCAhPT0gbnVsbCkge1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUubWluSGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5YWI5aSE55CG6Kem5Y+R5YWD57Sg5Y+Y5YyW77yI56Gu5L+d5Zyo5omT5byA5YmN5pu05paw6Kem5Y+R5YWD57Sg77yJXHJcbiAgICBpZiAoY2hhbmdlcy50cmlnZ2VyRWxlbWVudFJlZikge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1RyaWdnZXIgPSB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudDtcclxuICAgICAgdGhpcy51cGRhdGVUcmlnZ2VyRWxlbWVudCgpO1xyXG5cclxuICAgICAgLy8g5aaC5p6c5by556qX5bey57uP5omT5byA77yM5LiU6Kem5Y+R5YWD57Sg5Y+R55Sf5LqG5Y+Y5YyW77yM56uL5Y2z5pu05paw5L2N572uXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLm9wZW5lZCA9PT0gXCJ5ZXNcIiAmJlxyXG4gICAgICAgIHByZXZpb3VzVHJpZ2dlciAhPT0gdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQgJiZcclxuICAgICAgICB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudFxyXG4gICAgICApIHtcclxuICAgICAgICAvLyDkvb/nlKjmlrDnmoTmiZPlvIDmlrnlvI/mm7TmlrDkvY3nva5cclxuICAgICAgICB0aGlzLnBvc2l0aW9uaW5nID0gXCJ5ZXNcIjtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3B1cFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25pbmcgPSBcIm5vXCI7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDlpITnkIYgb3BlbiDlj5jljJbvvIjnoa7kv53lnKjop6blj5HlhYPntKDmm7TmlrDlkI7lpITnkIbvvIlcclxuICAgIGlmIChjaGFuZ2VzLl9vcGVuKSB7XHJcbiAgICAgIGlmICh0aGlzLl9vcGVuICYmIHRoaXMub3BlbmVkID09PSBcIm5vXCIpIHtcclxuICAgICAgICAvLyDnoa7kv53op6blj5HlhYPntKDlt7Lmm7TmlrBcclxuICAgICAgICB0aGlzLnVwZGF0ZVRyaWdnZXJFbGVtZW50KCk7XHJcbiAgICAgICAgLy8g5L2/55SoIHNldFRpbWVvdXQg56Gu5L+d5omA5pyJ5Y+Y5pu06YO95bey5aSE55CGXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAvLyDlho3mrKHnoa7kv53op6blj5HlhYPntKDlt7Lmm7TmlrBcclxuICAgICAgICAgIHRoaXMudXBkYXRlVHJpZ2dlckVsZW1lbnQoKTtcclxuICAgICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLl9vcGVuICYmIHRoaXMub3BlbmVkID09PSBcInllc1wiKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5b2T5Yqg6L295a6M5oiQ5pe277yM5pu05paw5L2N572u77yI5aaC5p6c5o+Q5L6b5LqG5Zu65a6a5bC65a+477yM5LiN6ZyA6KaB5pu05paw5L2N572u77yJXHJcbiAgICBpZiAoXHJcbiAgICAgIGNoYW5nZXMubG9hZGluZyAmJlxyXG4gICAgICAhY2hhbmdlcy5sb2FkaW5nLmN1cnJlbnRWYWx1ZSAmJlxyXG4gICAgICBjaGFuZ2VzLmxvYWRpbmcucHJldmlvdXNWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5lZCA9PT0gXCJ5ZXNcIikge1xyXG4gICAgICAgIC8vIOWmguaenOaPkOS+m+S6huWbuuWumuWwuuWvuO+8jOS9jee9ruW3sue7j+iuoeeul+WlveS6hu+8jOS4jemcgOimgeabtOaWsFxyXG4gICAgICAgIGlmICh0aGlzLl93aWR0aCAhPT0gbnVsbCAmJiB0aGlzLl9oZWlnaHQgIT09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuY29udGVudExvYWQuZW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyDlpoLmnpzmraPlnKjlrprkvY3vvIzkuI3pnIDopoHmm7TmlrDkvY3nva5cclxuICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uaW5nID09PSBcIm5vXCIpIHtcclxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvcHVwUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRMb2FkLmVtaXQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDlpoLmnpzmraPlnKjlrprkvY3vvIznrYnlvoXlrprkvY3lrozmiJDlkI7lho3op6blj5Hkuovku7ZcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tQb3NpdGlvbmluZyA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbmluZyA9PT0gXCJub1wiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRMb2FkLmVtaXQoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1Bvc2l0aW9uaW5nLCAxMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjaGVja1Bvc2l0aW9uaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnBvcHVwRWxlbWVudCAmJiB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vbldpbmRvd1Njcm9sbCwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUcmlnZ2VyRWxlbWVudCgpIHtcclxuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRyaWdnZXJFbGVtZW50ID0gdGhpcy50cmlnZ2VyRWxlbWVudFJlZjtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaW50ZXJuYWxUcmlnZ2VyRWxlbWVudCAmJlxyXG4gICAgICB0aGlzLmludGVybmFsVHJpZ2dlckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRyaWdnZXJFbGVtZW50ID0gdGhpcy5pbnRlcm5hbFRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBGSVhFRF9DT05UQUlORVJfSUQgPSBcInJzLXNtYXJ0LXBvcHVwLWZpeGVkLWNvbnRhaW5lclwiO1xyXG4gIGZpeGVkQ29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xyXG4gIGdldEZpeGVkQ29udGFpbmVyKCkge1xyXG4gICAgbGV0IGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLkZJWEVEX0NPTlRBSU5FUl9JRCk7XHJcbiAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQpIHtcclxuICAgICAgY29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKFwiaWRcIiwgdGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXJFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250YWluZXJFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgb3BlbmVkOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG4gIHBvc2l0aW9uaW5nOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG4gIGFjdHVhbFBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIiA9IFwiYm90dG9tXCI7XHJcbiAgYWN0dWFsUG9zaXRpb246IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiID0gXCJzdGFydFwiO1xyXG5cclxuICBvcGVuKHRyaWdnZXJFbGVtZW50PzogSFRNTEVsZW1lbnQpIHtcclxuICAgIC8vIOWmguaenOS8oOWFpeS6huinpuWPkeWFg+e0oO+8jOS9v+eUqOWug1xyXG4gICAgaWYgKHRyaWdnZXJFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRyaWdnZXJFbGVtZW50ID0gdHJpZ2dlckVsZW1lbnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwZGF0ZVRyaWdnZXJFbGVtZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJTbWFydFBvcHVwQ29tcG9uZW50OiBObyB0cmlnZ2VyIGVsZW1lbnQgZm91bmRcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzlt7Lnu4/miZPlvIDvvIzlhYjlhbPpl63lho3miZPlvIDvvIjmm7TmlrDkvY3nva7vvIlcclxuICAgIGlmICh0aGlzLm9wZW5lZCA9PT0gXCJ5ZXNcIikge1xyXG4gICAgICAvLyDlhYjlhbPpl63lvLnnqpdcclxuICAgICAgdGhpcy5vcGVuZWQgPSBcIm5vXCI7XHJcbiAgICAgIHRoaXMucG9zaXRpb25pbmcgPSBcIm5vXCI7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAvLyDnq4vljbPlnKjmlrDkvY3nva7miZPlvIBcclxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAvLyDlho3mrKHnoa7kv53op6blj5HlhYPntKDlt7Lmm7TmlrBcclxuICAgICAgICB0aGlzLnVwZGF0ZVRyaWdnZXJFbGVtZW50KCk7XHJcbiAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDnoa7kv53op6blj5HlhYPntKDlt7Lmm7TmlrBcclxuICAgIHRoaXMudXBkYXRlVHJpZ2dlckVsZW1lbnQoKTtcclxuICAgIHRoaXMub3BlblBvcHVwKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW5Qb3B1cCgpIHtcclxuICAgIC8vIOWGjeasoeehruS/neinpuWPkeWFg+e0oOW3suabtOaWsFxyXG4gICAgdGhpcy51cGRhdGVUcmlnZ2VyRWxlbWVudCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIFwiU21hcnRQb3B1cENvbXBvbmVudDogTm8gdHJpZ2dlciBlbGVtZW50IGZvdW5kIHdoZW4gb3BlbmluZyBwb3B1cFwiXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzmj5Dkvpvkuoblm7rlrprlsLrlr7jvvIzlj6/ku6XlnKjmiZPlvIDliY3lsLHorqHnrpflpb3kvY3nva5cclxuICAgIGlmICh0aGlzLl93aWR0aCAhPT0gbnVsbCAmJiB0aGlzLl9oZWlnaHQgIT09IG51bGwpIHtcclxuICAgICAgLy8g5YWI6K6h566X5L2N572u77yI5LiN5L6d6LWWRE9N5riy5p+T77yM55u05o6l5qC55o2udHJpZ2dlckVsZW1lbnTorqHnrpfvvIlcclxuICAgICAgY29uc3QgdHJpZ2dlclJlY3QgPSB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICAgIGNvbnN0IHBvcHVwU2l6ZSA9IHtcclxuICAgICAgICB3aWR0aDogdGhpcy5fd2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiB0aGlzLl9oZWlnaHQsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBwb3B1cFJlY3Q6IERPTVJlY3QgPSB7XHJcbiAgICAgICAgd2lkdGg6IHBvcHVwU2l6ZS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHBvcHVwU2l6ZS5oZWlnaHQsXHJcbiAgICAgICAgdG9wOiAwLFxyXG4gICAgICAgIGxlZnQ6IDAsXHJcbiAgICAgICAgcmlnaHQ6IHBvcHVwU2l6ZS53aWR0aCxcclxuICAgICAgICBib3R0b206IHBvcHVwU2l6ZS5oZWlnaHQsXHJcbiAgICAgICAgeDogMCxcclxuICAgICAgICB5OiAwLFxyXG4gICAgICAgIHRvSlNPTjogKCkgPT4gKHt9KSxcclxuICAgICAgfSBhcyBET01SZWN0O1xyXG5cclxuICAgICAgY29uc3QgdGFyZ2V0SW5mbyA9IHRoaXMucGxhY2VtZW50SW5mbztcclxuICAgICAgbGV0IGZpbmFsUGxhY2VtZW50ID0gdGFyZ2V0SW5mby5wbGFjZW1lbnQ7XHJcbiAgICAgIGxldCBmaW5hbFBvc2l0aW9uID0gdGFyZ2V0SW5mby5wb3NpdGlvbjtcclxuXHJcbiAgICAgIGlmICh0aGlzLmF1dG9BZGp1c3QpIHtcclxuICAgICAgICBjb25zdCBvcHRpbWFsID0gdGhpcy5jYWxjdWxhdGVPcHRpbWFsUGxhY2VtZW50KFxyXG4gICAgICAgICAgdHJpZ2dlclJlY3QsXHJcbiAgICAgICAgICBwb3B1cFJlY3QsXHJcbiAgICAgICAgICB2aWV3cG9ydFdpZHRoLFxyXG4gICAgICAgICAgdmlld3BvcnRIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICAgIGZpbmFsUGxhY2VtZW50ID0gb3B0aW1hbC5wbGFjZW1lbnQ7XHJcbiAgICAgICAgZmluYWxQb3NpdGlvbiA9IG9wdGltYWwucG9zaXRpb247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYWN0dWFsUGxhY2VtZW50ID0gZmluYWxQbGFjZW1lbnQ7XHJcbiAgICAgIHRoaXMuYWN0dWFsUG9zaXRpb24gPSBmaW5hbFBvc2l0aW9uO1xyXG5cclxuICAgICAgLy8g6K6h566X5L2N572u5Z2Q5qCH77yI5LiN5L6d6LWWRE9N77yM55u05o6l6K6h566X77yJXHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5jYWxjdWxhdGVQb3NpdGlvbkNvb3JkaW5hdGVzKFxyXG4gICAgICAgIHRyaWdnZXJSZWN0LFxyXG4gICAgICAgIGZpbmFsUGxhY2VtZW50LFxyXG4gICAgICAgIGZpbmFsUG9zaXRpb24sXHJcbiAgICAgICAgcG9wdXBTaXplXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyDlhYjorr7nva7miZPlvIDnirbmgIHvvIzkvYbkv53mjIHpmpDol4/vvIhwb3NpdGlvbmluZyA9IHllc++8iVxyXG4gICAgICB0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcbiAgICAgIHRoaXMucG9zaXRpb25pbmcgPSBcInllc1wiO1xyXG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAvLyDlvLrliLbmm7TmlrDop4blm77vvIznoa7kv51ET03lt7Lmm7TmlrBcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgLy8g5aaC5p6c5YWD57Sg5bey57uP5a2Y5Zyo77yM56uL5Y2z6K6+572u5L2N572u77yI5LiN562J5b6FIHJlcXVlc3RBbmltYXRpb25GcmFtZe+8iVxyXG4gICAgICBpZiAodGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHBvcHVwRWwgPSB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICAvLyDnq4vljbPorr7nva7lsLrlr7jlkozkvY3nva5cclxuICAgICAgICBwb3B1cEVsLnN0eWxlLndpZHRoID0gdGhpcy5fd2lkdGggKyBcInB4XCI7XHJcbiAgICAgICAgcG9wdXBFbC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9oZWlnaHQgKyBcInB4XCI7XHJcbiAgICAgICAgcG9wdXBFbC5zdHlsZS5taW5XaWR0aCA9IHRoaXMuX3dpZHRoICsgXCJweFwiO1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUubWF4V2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLm1pbkhlaWdodCA9IHRoaXMuX2hlaWdodCArIFwicHhcIjtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLm1heEhlaWdodCA9IHRoaXMuX2hlaWdodCArIFwicHhcIjtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLnRvcCA9IHBvc2l0aW9uLnRvcDtcclxuICAgICAgICBwb3B1cEVsLnN0eWxlLmxlZnQgPSBwb3NpdGlvbi5sZWZ0O1xyXG4gICAgICAgIHBvcHVwRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3Bvc2l0aW9uLnRyYW5zbGF0ZVh9LCAke3Bvc2l0aW9uLnRyYW5zbGF0ZVl9KWA7XHJcblxyXG4gICAgICAgIC8vIOW8uuWItuWQjOatpeW6lOeUqOagt+W8j1xyXG4gICAgICAgIHBvcHVwRWwub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAvLyDkvY3nva7orr7nva7lrozmiJDlkI7vvIznq4vljbPmmL7npLrlvLnnqpdcclxuICAgICAgICB0aGlzLnBvc2l0aW9uaW5nID0gXCJub1wiO1xyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIOWmguaenOWFg+e0oOi/mOS4jeWtmOWcqO+8jOetieW+hea4suafk1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBwb3B1cEVsID0gdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIC8vIOeri+WNs+iuvue9ruWwuuWvuOWSjOS9jee9rlxyXG4gICAgICAgICAgICBwb3B1cEVsLnN0eWxlLndpZHRoID0gdGhpcy5fd2lkdGggKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHBvcHVwRWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgICAgICBwb3B1cEVsLnN0eWxlLm1pbldpZHRoID0gdGhpcy5fd2lkdGggKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHBvcHVwRWwuc3R5bGUubWF4V2lkdGggPSB0aGlzLl93aWR0aCArIFwicHhcIjtcclxuICAgICAgICAgICAgcG9wdXBFbC5zdHlsZS5taW5IZWlnaHQgPSB0aGlzLl9oZWlnaHQgKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHBvcHVwRWwuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy5faGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgICAgICBwb3B1cEVsLnN0eWxlLnRvcCA9IHBvc2l0aW9uLnRvcDtcclxuICAgICAgICAgICAgcG9wdXBFbC5zdHlsZS5sZWZ0ID0gcG9zaXRpb24ubGVmdDtcclxuICAgICAgICAgICAgcG9wdXBFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7cG9zaXRpb24udHJhbnNsYXRlWH0sICR7cG9zaXRpb24udHJhbnNsYXRlWX0pYDtcclxuXHJcbiAgICAgICAgICAgIC8vIOW8uuWItuWQjOatpeW6lOeUqOagt+W8j1xyXG4gICAgICAgICAgICBwb3B1cEVsLm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgIC8vIOS9jee9ruiuvue9ruWujOaIkOWQju+8jOeri+WNs+aYvuekuuW8ueeql1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uaW5nID0gXCJub1wiO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8g5rKh5pyJ5Zu65a6a5bC65a+477yM6ZyA6KaB562J5b6FRE9N5riy5p+TXHJcbiAgICAgIHRoaXMucG9zaXRpb25pbmcgPSBcInllc1wiO1xyXG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgIC8vIOeri+WNs+W8uuWItuabtOaWsOinhuWbvu+8jOehruS/nURPTeW3suabtOaWsFxyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAvLyDkvb/nlKggcmVxdWVzdEFuaW1hdGlvbkZyYW1lIOehruS/neWcqOa1j+iniOWZqOa4suafk+S5i+WJjeabtOaWsOS9jee9rlxyXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOehruS/neWFg+e0oOW3sua4suafk+W5tuiOt+WPluWwuuWvuFxyXG4gICAgICAgIGlmICh0aGlzLnBvcHVwRWxlbWVudCAmJiB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAvLyDlvLrliLbph43mlrDorqHnrpfluIPlsYDvvIznoa7kv53lhYPntKDlsLrlr7jlt7LorqHnrpdcclxuICAgICAgICAgIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAgIC8vIOiuoeeul+W5tuiuvue9ruS9jee9rlxyXG4gICAgICAgICAgdGhpcy51cGRhdGVQb3B1cFBvc2l0aW9uKCk7XHJcblxyXG4gICAgICAgICAgLy8g5L2N572u6K6+572u5a6M5oiQ5ZCO77yM56e76Zmk5a6a5L2N54q25oCB77yM5pi+56S65by556qXXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uaW5nID0gXCJub1wiO1xyXG4gICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vbldpbmRvd1Njcm9sbCwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIGlmICh0aGlzLm9wZW5lZCA9PT0gXCJub1wiKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuICAgIHRoaXMucG9zaXRpb25pbmcgPSBcIm5vXCI7XHJcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vbldpbmRvd1Njcm9sbCwgdHJ1ZSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZSgpIHtcclxuICAgIGlmICh0aGlzLm9wZW5lZCA9PT0gXCJ5ZXNcIikge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tUcmlnZ2VyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpc0NsaWNrT25UcmlnZ2VyID1cclxuICAgICAgdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQgJiYgdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQuY29udGFpbnModGFyZ2V0KTtcclxuICAgIGNvbnN0IGlzQ2xpY2tPblBvcHVwID1cclxuICAgICAgdGhpcy5wb3B1cEVsZW1lbnQgJiZcclxuICAgICAgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCk7XHJcblxyXG4gICAgaWYgKCFpc0NsaWNrT25UcmlnZ2VyICYmICFpc0NsaWNrT25Qb3B1cCkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgb25XaW5kb3dTY3JvbGwgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICBpZiAodGhpcy5vcGVuZWQgPT09IFwieWVzXCIpIHtcclxuICAgICAgLy8g5qOA5p+l5rua5Yqo5piv5ZCm5Y+R55Sf5Zyo5by556qX5YaF6YOoXHJcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBFbGVtZW50O1xyXG4gICAgICBjb25zdCBpc1Njcm9sbE9uUG9wdXAgPVxyXG4gICAgICAgIHRoaXMucG9wdXBFbGVtZW50ICYmXHJcbiAgICAgICAgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KTtcclxuXHJcbiAgICAgIC8vIOWmguaenOa7muWKqOWPkeeUn+WcqOW8ueeql+WGhemDqO+8jOS4jeabtOaWsOS9jee9ru+8iOmBv+WFjeS4jeW/heimgeeahOiuoeeul++8iVxyXG4gICAgICAvLyDlpoLmnpzmu5rliqjlj5HnlJ/lnKjlpJbpg6jvvIzmm7TmlrDkvY3nva7vvIjlm6DkuLrop6blj5HlhYPntKDkvY3nva7lj6/og73mlLnlj5jvvIlcclxuICAgICAgaWYgKCFpc1Njcm9sbE9uUG9wdXApIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBvcHVwUG9zaXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vIOWkhOeQhuW8ueeql+WGhemDqOeahOa7mui9ruS6i+S7tlxyXG4gIG9uUG9wdXBXaGVlbChldmVudDogV2hlZWxFdmVudCkge1xyXG4gICAgLy8g6Zi75q2i5rua6L2u5LqL5Lu25YaS5rOh77yM6YG/5YWN6Kem5Y+R5aSW6YOo5rua5Yqo5aSE55CGXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8vIOWkhOeQhuW8ueeql+WGhemDqOeahOa7muWKqOS6i+S7tlxyXG4gIG9uUG9wdXBTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAvLyDpmLvmraLmu5rliqjkuovku7blhpLms6HvvIzpgb/lhY3op6blj5HlpJbpg6jmu5rliqjlpITnkIZcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X5bm26K6+572u5L2N572u77yI5pSv5oyB5Zu65a6a5bC65a+477yM5Y+v5Zyo5omT5byA5YmN6LCD55So77yJXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVBbmRTZXRQb3NpdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRyaWdnZXJSZWN0ID0gdGhpcy5jdXJyZW50VHJpZ2dlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICAvLyDojrflj5blvLnnqpflsLrlr7jvvIjkvJjlhYjkvb/nlKjlm7rlrprlsLrlr7jvvIlcclxuICAgIGNvbnN0IHBvcHVwU2l6ZSA9IHtcclxuICAgICAgd2lkdGg6XHJcbiAgICAgICAgdGhpcy5fd2lkdGggIT09IG51bGxcclxuICAgICAgICAgID8gdGhpcy5fd2lkdGhcclxuICAgICAgICAgIDogdGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICAgPyB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXHJcbiAgICAgICAgICA6IDMwMCxcclxuICAgICAgaGVpZ2h0OlxyXG4gICAgICAgIHRoaXMuX2hlaWdodCAhPT0gbnVsbFxyXG4gICAgICAgICAgPyB0aGlzLl9oZWlnaHRcclxuICAgICAgICAgIDogdGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICAgPyB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOWIm+W7uuiZmuaLn+eahCBwb3B1cFJlY3TvvIjnlKjkuo7orqHnrpfvvIlcclxuICAgIGNvbnN0IHBvcHVwUmVjdDogRE9NUmVjdCA9IHtcclxuICAgICAgd2lkdGg6IHBvcHVwU2l6ZS53aWR0aCxcclxuICAgICAgaGVpZ2h0OiBwb3B1cFNpemUuaGVpZ2h0LFxyXG4gICAgICB0b3A6IDAsXHJcbiAgICAgIGxlZnQ6IDAsXHJcbiAgICAgIHJpZ2h0OiBwb3B1cFNpemUud2lkdGgsXHJcbiAgICAgIGJvdHRvbTogcG9wdXBTaXplLmhlaWdodCxcclxuICAgICAgeDogMCxcclxuICAgICAgeTogMCxcclxuICAgICAgdG9KU09OOiAoKSA9PiAoe30pLFxyXG4gICAgfSBhcyBET01SZWN0O1xyXG5cclxuICAgIC8vIOiOt+WPluebruagh+S9jee9ruS/oeaBr1xyXG4gICAgY29uc3QgdGFyZ2V0SW5mbyA9IHRoaXMucGxhY2VtZW50SW5mbztcclxuICAgIGxldCBmaW5hbFBsYWNlbWVudCA9IHRhcmdldEluZm8ucGxhY2VtZW50O1xyXG4gICAgbGV0IGZpbmFsUG9zaXRpb24gPSB0YXJnZXRJbmZvLnBvc2l0aW9uO1xyXG5cclxuICAgIGlmICh0aGlzLmF1dG9BZGp1c3QpIHtcclxuICAgICAgY29uc3Qgb3B0aW1hbCA9IHRoaXMuY2FsY3VsYXRlT3B0aW1hbFBsYWNlbWVudChcclxuICAgICAgICB0cmlnZ2VyUmVjdCxcclxuICAgICAgICBwb3B1cFJlY3QsXHJcbiAgICAgICAgdmlld3BvcnRXaWR0aCxcclxuICAgICAgICB2aWV3cG9ydEhlaWdodFxyXG4gICAgICApO1xyXG4gICAgICBmaW5hbFBsYWNlbWVudCA9IG9wdGltYWwucGxhY2VtZW50O1xyXG4gICAgICBmaW5hbFBvc2l0aW9uID0gb3B0aW1hbC5wb3NpdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdHVhbFBsYWNlbWVudCA9IGZpbmFsUGxhY2VtZW50O1xyXG4gICAgdGhpcy5hY3R1YWxQb3NpdGlvbiA9IGZpbmFsUG9zaXRpb247XHJcblxyXG4gICAgLy8g56uL5Y2z6K6+572u5L2N572u77yI5Y2z5L2/5YWD57Sg6L+Y5rKh5a6M5YWo5riy5p+T77yM5Lmf6KaB5YWI6K6+572u5L2N572u77yJXHJcbiAgICBpZiAodGhpcy5wb3B1cEVsZW1lbnQgJiYgdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnNldFBvcHVwUG9zaXRpb24oXHJcbiAgICAgICAgdHJpZ2dlclJlY3QsXHJcbiAgICAgICAgcG9wdXBSZWN0LFxyXG4gICAgICAgIGZpbmFsUGxhY2VtZW50LFxyXG4gICAgICAgIGZpbmFsUG9zaXRpb24sXHJcbiAgICAgICAgcG9wdXBTaXplXHJcbiAgICAgICk7XHJcbiAgICAgIC8vIOW8uuWItuW6lOeUqOagt+W8j++8jOehruS/neS9jee9rueri+WNs+eUn+aViFxyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlpoLmnpzlhYPntKDov5jkuI3lrZjlnKjvvIzlu7bov5/orr7nva7kvY3nva5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9wdXBFbGVtZW50ICYmIHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0UG9wdXBQb3NpdGlvbihcclxuICAgICAgICAgICAgdHJpZ2dlclJlY3QsXHJcbiAgICAgICAgICAgIHBvcHVwUmVjdCxcclxuICAgICAgICAgICAgZmluYWxQbGFjZW1lbnQsXHJcbiAgICAgICAgICAgIGZpbmFsUG9zaXRpb24sXHJcbiAgICAgICAgICAgIHBvcHVwU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUG9wdXBQb3NpdGlvbigpIHtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuY3VycmVudFRyaWdnZXJFbGVtZW50IHx8XHJcbiAgICAgICF0aGlzLnBvcHVwRWxlbWVudCB8fFxyXG4gICAgICAhdGhpcy5wb3B1cEVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzmj5Dkvpvkuoblm7rlrprlsLrlr7jvvIzkvb/nlKjlm7rlrprlsLrlr7jorqHnrpdcclxuICAgIGlmICh0aGlzLl93aWR0aCAhPT0gbnVsbCAmJiB0aGlzLl9oZWlnaHQgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVBbmRTZXRQb3NpdGlvbigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdHJpZ2dlclJlY3QgPSB0aGlzLmN1cnJlbnRUcmlnZ2VyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHBvcHVwUmVjdCA9IHRoaXMucG9wdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICAvLyDojrflj5bnm67moIfkvY3nva7kv6Hmga9cclxuICAgIGNvbnN0IHRhcmdldEluZm8gPSB0aGlzLnBsYWNlbWVudEluZm87XHJcbiAgICBsZXQgZmluYWxQbGFjZW1lbnQgPSB0YXJnZXRJbmZvLnBsYWNlbWVudDtcclxuICAgIGxldCBmaW5hbFBvc2l0aW9uID0gdGFyZ2V0SW5mby5wb3NpdGlvbjtcclxuXHJcbiAgICBpZiAodGhpcy5hdXRvQWRqdXN0KSB7XHJcbiAgICAgIGNvbnN0IG9wdGltYWwgPSB0aGlzLmNhbGN1bGF0ZU9wdGltYWxQbGFjZW1lbnQoXHJcbiAgICAgICAgdHJpZ2dlclJlY3QsXHJcbiAgICAgICAgcG9wdXBSZWN0LFxyXG4gICAgICAgIHZpZXdwb3J0V2lkdGgsXHJcbiAgICAgICAgdmlld3BvcnRIZWlnaHRcclxuICAgICAgKTtcclxuICAgICAgZmluYWxQbGFjZW1lbnQgPSBvcHRpbWFsLnBsYWNlbWVudDtcclxuICAgICAgZmluYWxQb3NpdGlvbiA9IG9wdGltYWwucG9zaXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3R1YWxQbGFjZW1lbnQgPSBmaW5hbFBsYWNlbWVudDtcclxuICAgIHRoaXMuYWN0dWFsUG9zaXRpb24gPSBmaW5hbFBvc2l0aW9uO1xyXG4gICAgdGhpcy5zZXRQb3B1cFBvc2l0aW9uKFxyXG4gICAgICB0cmlnZ2VyUmVjdCxcclxuICAgICAgcG9wdXBSZWN0LFxyXG4gICAgICBmaW5hbFBsYWNlbWVudCxcclxuICAgICAgZmluYWxQb3NpdGlvblxyXG4gICAgKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlT3B0aW1hbFBsYWNlbWVudChcclxuICAgIHRyaWdnZXJSZWN0OiBET01SZWN0IHwgQ2xpZW50UmVjdCxcclxuICAgIHBvcHVwUmVjdDogRE9NUmVjdCB8IENsaWVudFJlY3QsXHJcbiAgICB2aWV3cG9ydFdpZHRoOiBudW1iZXIsXHJcbiAgICB2aWV3cG9ydEhlaWdodDogbnVtYmVyXHJcbiAgKToge1xyXG4gICAgcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG4gICAgcG9zaXRpb246IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiO1xyXG4gIH0ge1xyXG4gICAgY29uc3QgdGFyZ2V0SW5mbyA9IHRoaXMucGxhY2VtZW50SW5mbztcclxuICAgIGNvbnN0IHByZWZlcnJlZCA9IHRhcmdldEluZm8ucGxhY2VtZW50O1xyXG4gICAgY29uc3QgcHJlZmVycmVkUG9zaXRpb24gPSB0YXJnZXRJbmZvLnBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnN0IHNwYWNlID0ge1xyXG4gICAgICB0b3A6IHRyaWdnZXJSZWN0LnRvcCxcclxuICAgICAgYm90dG9tOiB2aWV3cG9ydEhlaWdodCAtIHRyaWdnZXJSZWN0LmJvdHRvbSxcclxuICAgICAgbGVmdDogdHJpZ2dlclJlY3QubGVmdCxcclxuICAgICAgcmlnaHQ6IHZpZXdwb3J0V2lkdGggLSB0cmlnZ2VyUmVjdC5yaWdodCxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcG9wdXBTaXplID0ge1xyXG4gICAgICB3aWR0aDogcG9wdXBSZWN0LndpZHRoIHx8IDMwMCwgLy8g6buY6K6k5a695bqm77yM5aaC5p6c6L+Y5rKh5pyJ5riy5p+TXHJcbiAgICAgIGhlaWdodDogcG9wdXBSZWN0LmhlaWdodCB8fCAyMDAsIC8vIOm7mOiupOmrmOW6plxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmo4Dmn6XpppbpgInkvY3nva7mmK/lkKbmnInotrPlpJ/nqbrpl7RcclxuICAgIGNvbnN0IGhhc0Vub3VnaFNwYWNlID0gKHBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIikgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xyXG4gICAgICAgIGNhc2UgXCJ0b3BcIjpcclxuICAgICAgICAgIHJldHVybiBzcGFjZS50b3AgPj0gcG9wdXBTaXplLmhlaWdodCArIHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIGNhc2UgXCJib3R0b21cIjpcclxuICAgICAgICAgIHJldHVybiBzcGFjZS5ib3R0b20gPj0gcG9wdXBTaXplLmhlaWdodCArIHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICByZXR1cm4gc3BhY2UubGVmdCA+PSBwb3B1cFNpemUud2lkdGggKyB0aGlzLm9mZnNldDtcclxuICAgICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICAgIHJldHVybiBzcGFjZS5yaWdodCA+PSBwb3B1cFNpemUud2lkdGggKyB0aGlzLm9mZnNldDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmo4Dmn6XmjIflrprkvY3nva7mmK/lkKbmnInotrPlpJ/nqbrpl7RcclxuICAgIGNvbnN0IGNoZWNrUG9zaXRpb25TcGFjZSA9IChcclxuICAgICAgcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiLFxyXG4gICAgICBwb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCJcclxuICAgICk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICBpZiAocGxhY2VtZW50ID09PSBcInRvcFwiIHx8IHBsYWNlbWVudCA9PT0gXCJib3R0b21cIikge1xyXG4gICAgICAgIC8vIOWvueS6juS4iuS4i+S9jee9ru+8jOajgOafpeawtOW5s+Wvuem9kOepuumXtFxyXG4gICAgICAgIGNvbnN0IHBvcHVwV2lkdGggPSBwb3B1cFNpemUud2lkdGg7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VMZWZ0ID0gdHJpZ2dlclJlY3QubGVmdDtcclxuICAgICAgICBjb25zdCBzcGFjZVJpZ2h0ID0gdmlld3BvcnRXaWR0aCAtIHRyaWdnZXJSZWN0LnJpZ2h0O1xyXG5cclxuICAgICAgICBpZiAocG9zaXRpb24gPT09IFwiY2VudGVyXCIpIHtcclxuICAgICAgICAgIHJldHVybiBzcGFjZUxlZnQgPj0gcG9wdXBXaWR0aCAvIDIgJiYgc3BhY2VSaWdodCA+PSBwb3B1cFdpZHRoIC8gMjtcclxuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIpIHtcclxuICAgICAgICAgIHJldHVybiBzcGFjZUxlZnQgPj0gcG9wdXBXaWR0aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gZW5kXHJcbiAgICAgICAgICByZXR1cm4gc3BhY2VSaWdodCA+PSBwb3B1cFdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyDlr7nkuo7lt6blj7PkvY3nva7vvIzmo4Dmn6XlnoLnm7Tlr7npvZDnqbrpl7RcclxuICAgICAgICBjb25zdCBwb3B1cEhlaWdodCA9IHBvcHVwU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VUb3AgPSB0cmlnZ2VyUmVjdC50b3A7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VCb3R0b20gPSB2aWV3cG9ydEhlaWdodCAtIHRyaWdnZXJSZWN0LmJvdHRvbTtcclxuXHJcbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBcImNlbnRlclwiKSB7XHJcbiAgICAgICAgICByZXR1cm4gc3BhY2VUb3AgPj0gcG9wdXBIZWlnaHQgLyAyICYmIHNwYWNlQm90dG9tID49IHBvcHVwSGVpZ2h0IC8gMjtcclxuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIpIHtcclxuICAgICAgICAgIHJldHVybiBzcGFjZVRvcCA+PSBwb3B1cEhlaWdodDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gZW5kXHJcbiAgICAgICAgICByZXR1cm4gc3BhY2VCb3R0b20gPj0gcG9wdXBIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOiuoeeul+S9jee9ruaYr+WQpuWQiOmAgu+8iOiAg+iZkeawtOW5sy/lnoLnm7Tlr7npvZDvvIlcclxuICAgIGNvbnN0IGNhbGN1bGF0ZVBvc2l0aW9uID0gKFxyXG4gICAgICBwbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCJcclxuICAgICk6IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiID0+IHtcclxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gXCJ0b3BcIiB8fCBwbGFjZW1lbnQgPT09IFwiYm90dG9tXCIpIHtcclxuICAgICAgICAvLyDlr7nkuo7kuIrkuIvkvY3nva7vvIzmo4Dmn6XmsLTlubPlr7npvZBcclxuICAgICAgICBjb25zdCBwb3B1cFdpZHRoID0gcG9wdXBTaXplLndpZHRoO1xyXG4gICAgICAgIGNvbnN0IHNwYWNlTGVmdCA9IHRyaWdnZXJSZWN0LmxlZnQ7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VSaWdodCA9IHZpZXdwb3J0V2lkdGggLSB0cmlnZ2VyUmVjdC5yaWdodDtcclxuXHJcbiAgICAgICAgLy8g5LyY5YWI5bCd6K+V5L2/55So55So5oi35oyH5a6a55qEcG9zaXRpb25cclxuICAgICAgICBpZiAoY2hlY2tQb3NpdGlvblNwYWNlKHBsYWNlbWVudCwgcHJlZmVycmVkUG9zaXRpb24pKSB7XHJcbiAgICAgICAgICByZXR1cm4gcHJlZmVycmVkUG9zaXRpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlpoLmnpzkuK3lv4Plr7npvZDmnInotrPlpJ/nqbrpl7TvvIzkvJjlhYjkvb/nlKjkuK3lv4NcclxuICAgICAgICBpZiAoc3BhY2VMZWZ0ID49IHBvcHVwV2lkdGggLyAyICYmIHNwYWNlUmlnaHQgPj0gcG9wdXBXaWR0aCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcImNlbnRlclwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzlt6bkvqfnqbrpl7TkuI3otrPvvIzkvb/nlKjlj7Plr7npvZBcclxuICAgICAgICBpZiAoc3BhY2VMZWZ0IDwgcG9wdXBXaWR0aCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcImVuZFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzlj7Pkvqfnqbrpl7TkuI3otrPvvIzkvb/nlKjlt6blr7npvZBcclxuICAgICAgICBpZiAoc3BhY2VSaWdodCA8IHBvcHVwV2lkdGggLyAyKSB7XHJcbiAgICAgICAgICByZXR1cm4gXCJzdGFydFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJlZmVycmVkUG9zaXRpb247XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8g5a+55LqO5bem5Y+z5L2N572u77yM5qOA5p+l5Z6C55u05a+56b2QXHJcbiAgICAgICAgY29uc3QgcG9wdXBIZWlnaHQgPSBwb3B1cFNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IHNwYWNlVG9wID0gdHJpZ2dlclJlY3QudG9wO1xyXG4gICAgICAgIGNvbnN0IHNwYWNlQm90dG9tID0gdmlld3BvcnRIZWlnaHQgLSB0cmlnZ2VyUmVjdC5ib3R0b207XHJcblxyXG4gICAgICAgIC8vIOS8mOWFiOWwneivleS9v+eUqOeUqOaIt+aMh+WumueahHBvc2l0aW9uXHJcbiAgICAgICAgaWYgKGNoZWNrUG9zaXRpb25TcGFjZShwbGFjZW1lbnQsIHByZWZlcnJlZFBvc2l0aW9uKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHByZWZlcnJlZFBvc2l0aW9uO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5aaC5p6c5Lit5b+D5a+56b2Q5pyJ6Laz5aSf56m66Ze077yM5LyY5YWI5L2/55So5Lit5b+DXHJcbiAgICAgICAgaWYgKHNwYWNlVG9wID49IHBvcHVwSGVpZ2h0IC8gMiAmJiBzcGFjZUJvdHRvbSA+PSBwb3B1cEhlaWdodCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcImNlbnRlclwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzkuIrmlrnnqbrpl7TkuI3otrPvvIzkvb/nlKjkuIvlr7npvZBcclxuICAgICAgICBpZiAoc3BhY2VUb3AgPCBwb3B1cEhlaWdodCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcImVuZFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzkuIvmlrnnqbrpl7TkuI3otrPvvIzkvb/nlKjkuIrlr7npvZBcclxuICAgICAgICBpZiAoc3BhY2VCb3R0b20gPCBwb3B1cEhlaWdodCAvIDIpIHtcclxuICAgICAgICAgIHJldHVybiBcInN0YXJ0XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcmVmZXJyZWRQb3NpdGlvbjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDlpoLmnpzpppbpgInkvY3nva7mnInotrPlpJ/nqbrpl7TvvIzkvJjlhYjkvb/nlKjnlKjmiLfmjIflrprnmoRwb3NpdGlvblxyXG4gICAgaWYgKGhhc0Vub3VnaFNwYWNlKHByZWZlcnJlZCkpIHtcclxuICAgICAgLy8g5qOA5p+l55So5oi35oyH5a6a55qEcG9zaXRpb27mmK/lkKbmnInotrPlpJ/nqbrpl7RcclxuICAgICAgaWYgKGNoZWNrUG9zaXRpb25TcGFjZShwcmVmZXJyZWQsIHByZWZlcnJlZFBvc2l0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBwbGFjZW1lbnQ6IHByZWZlcnJlZCxcclxuICAgICAgICAgIHBvc2l0aW9uOiBwcmVmZXJyZWRQb3NpdGlvbixcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOaMh+WumueahHBvc2l0aW9u56m66Ze05LiN6Laz77yM6Ieq5Yqo6K6h566X5pyA5L2zcG9zaXRpb25cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwbGFjZW1lbnQ6IHByZWZlcnJlZCxcclxuICAgICAgICBwb3NpdGlvbjogY2FsY3VsYXRlUG9zaXRpb24ocHJlZmVycmVkKSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmoLnmja7pppbpgInkvY3nva7pgInmi6nlpIfpgInkvY3nva5cclxuICAgIGNvbnN0IGFsdGVybmF0aXZlczoge1xyXG4gICAgICBba2V5OiBzdHJpbmddOiAoXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIilbXTtcclxuICAgIH0gPSB7XHJcbiAgICAgIGJvdHRvbTogW1widG9wXCIsIFwicmlnaHRcIiwgXCJsZWZ0XCJdLFxyXG4gICAgICB0b3A6IFtcImJvdHRvbVwiLCBcInJpZ2h0XCIsIFwibGVmdFwiXSxcclxuICAgICAgcmlnaHQ6IFtcImxlZnRcIiwgXCJib3R0b21cIiwgXCJ0b3BcIl0sXHJcbiAgICAgIGxlZnQ6IFtcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwidG9wXCJdLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBhbHRMaXN0ID0gYWx0ZXJuYXRpdmVzW3ByZWZlcnJlZF0gfHwgW107XHJcblxyXG4gICAgLy8g5bCd6K+V5om+5Yiw56ys5LiA5Liq5pyJ6Laz5aSf56m66Ze055qE5aSH6YCJ5L2N572uXHJcbiAgICBmb3IgKGNvbnN0IGFsdCBvZiBhbHRMaXN0KSB7XHJcbiAgICAgIGlmIChoYXNFbm91Z2hTcGFjZShhbHQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHBsYWNlbWVudDogYWx0LFxyXG4gICAgICAgICAgcG9zaXRpb246IGNhbGN1bGF0ZVBvc2l0aW9uKGFsdCksXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOWmguaenOmDveayoeaciei2s+Wkn+epuumXtO+8jOmAieaLqeepuumXtOacgOWkp+eahOS9jee9rlxyXG4gICAgY29uc3QgbWF4U3BhY2UgPSBNYXRoLm1heChzcGFjZS50b3AsIHNwYWNlLmJvdHRvbSwgc3BhY2UubGVmdCwgc3BhY2UucmlnaHQpO1xyXG4gICAgbGV0IGJlc3RQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCI7XHJcbiAgICBpZiAobWF4U3BhY2UgPT09IHNwYWNlLnRvcCkgYmVzdFBsYWNlbWVudCA9IFwidG9wXCI7XHJcbiAgICBlbHNlIGlmIChtYXhTcGFjZSA9PT0gc3BhY2UuYm90dG9tKSBiZXN0UGxhY2VtZW50ID0gXCJib3R0b21cIjtcclxuICAgIGVsc2UgaWYgKG1heFNwYWNlID09PSBzcGFjZS5sZWZ0KSBiZXN0UGxhY2VtZW50ID0gXCJsZWZ0XCI7XHJcbiAgICBlbHNlIGJlc3RQbGFjZW1lbnQgPSBcInJpZ2h0XCI7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGxhY2VtZW50OiBiZXN0UGxhY2VtZW50LFxyXG4gICAgICBwb3NpdGlvbjogY2FsY3VsYXRlUG9zaXRpb24oYmVzdFBsYWNlbWVudCksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X5L2N572u5Z2Q5qCH77yI57qv6K6h566X77yM5LiN5L6d6LWWRE9N77yM5YyF5ZCr6L6555WM57qm5p2f77yJXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVQb3NpdGlvbkNvb3JkaW5hdGVzKFxyXG4gICAgdHJpZ2dlclJlY3Q6IERPTVJlY3QgfCBDbGllbnRSZWN0LFxyXG4gICAgcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiLFxyXG4gICAgcG9zaXRpb246IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiLFxyXG4gICAgcG9wdXBTaXplOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH1cclxuICApOiB7IHRvcDogc3RyaW5nOyBsZWZ0OiBzdHJpbmc7IHRyYW5zbGF0ZVg6IHN0cmluZzsgdHJhbnNsYXRlWTogc3RyaW5nIH0ge1xyXG4gICAgY29uc3QgdHJpZ2dlcldpZHRoID0gdHJpZ2dlclJlY3Qud2lkdGg7XHJcbiAgICBjb25zdCB0cmlnZ2VySGVpZ2h0ID0gdHJpZ2dlclJlY3QuaGVpZ2h0O1xyXG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICBjb25zdCBzY3JvbGxYID0gd2luZG93LnNjcm9sbFg7XHJcbiAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XHJcblxyXG4gICAgbGV0IHRvcCA9IDA7XHJcbiAgICBsZXQgbGVmdCA9IDA7XHJcbiAgICBsZXQgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG4gICAgbGV0IHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuXHJcbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xyXG4gICAgICBjYXNlIFwidG9wXCI6XHJcbiAgICAgICAgdG9wID0gdHJpZ2dlclJlY3QudG9wICsgc2Nyb2xsWSAtIHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIpIHtcclxuICAgICAgICAgIGxlZnQgPSB0cmlnZ2VyUmVjdC5sZWZ0ICsgc2Nyb2xsWDtcclxuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcImNlbnRlclwiKSB7XHJcbiAgICAgICAgICBsZWZ0ID0gdHJpZ2dlclJlY3QubGVmdCArIHNjcm9sbFggKyB0cmlnZ2VyV2lkdGggLyAyO1xyXG4gICAgICAgICAgdHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZWZ0ID0gdHJpZ2dlclJlY3QubGVmdCArIHNjcm9sbFggKyB0cmlnZ2VyV2lkdGg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDovrnnlYznuqbmnZ/vvJrnoa7kv53lvLnnqpfkuI3otoXlh7rop4blj6NcclxuICAgICAgICBpZiAodG9wIC0gcG9wdXBTaXplLmhlaWdodCA8IHNjcm9sbFkpIHtcclxuICAgICAgICAgIHRvcCA9IHNjcm9sbFkgKyA4OyAvLyDot53nprvpobbpg6joh7PlsJE4cHhcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxlZnQgPCBzY3JvbGxYKSB7XHJcbiAgICAgICAgICBsZWZ0ID0gc2Nyb2xsWCArIDg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVYID0gXCIwXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChsZWZ0ICsgcG9wdXBTaXplLndpZHRoID4gc2Nyb2xsWCArIHZpZXdwb3J0V2lkdGgpIHtcclxuICAgICAgICAgIGxlZnQgPSBzY3JvbGxYICsgdmlld3BvcnRXaWR0aCAtIHBvcHVwU2l6ZS53aWR0aCAtIDg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVYID0gXCIwXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImJvdHRvbVwiOlxyXG4gICAgICAgIHRvcCA9IHRyaWdnZXJSZWN0LmJvdHRvbSArIHNjcm9sbFkgKyB0aGlzLm9mZnNldDtcclxuICAgICAgICBpZiAocG9zaXRpb24gPT09IFwic3RhcnRcIikge1xyXG4gICAgICAgICAgbGVmdCA9IHRyaWdnZXJSZWN0LmxlZnQgKyBzY3JvbGxYO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09IFwiY2VudGVyXCIpIHtcclxuICAgICAgICAgIGxlZnQgPSB0cmlnZ2VyUmVjdC5sZWZ0ICsgc2Nyb2xsWCArIHRyaWdnZXJXaWR0aCAvIDI7XHJcbiAgICAgICAgICB0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxlZnQgPSB0cmlnZ2VyUmVjdC5sZWZ0ICsgc2Nyb2xsWCArIHRyaWdnZXJXaWR0aDtcclxuICAgICAgICAgIHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOi+ueeVjOe6puadn++8muehruS/neW8ueeql+S4jei2heWHuuinhuWPo1xyXG4gICAgICAgIGlmICh0b3AgKyBwb3B1cFNpemUuaGVpZ2h0ID4gc2Nyb2xsWSArIHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0b3AgPSBzY3JvbGxZICsgdmlld3BvcnRIZWlnaHQgLSBwb3B1cFNpemUuaGVpZ2h0IC0gODsgLy8g6Led56a75bqV6YOo6Iez5bCROHB4XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsZWZ0IDwgc2Nyb2xsWCkge1xyXG4gICAgICAgICAgbGVmdCA9IHNjcm9sbFggKyA4O1xyXG4gICAgICAgICAgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobGVmdCArIHBvcHVwU2l6ZS53aWR0aCA+IHNjcm9sbFggKyB2aWV3cG9ydFdpZHRoKSB7XHJcbiAgICAgICAgICBsZWZ0ID0gc2Nyb2xsWCArIHZpZXdwb3J0V2lkdGggLSBwb3B1cFNpemUud2lkdGggLSA4O1xyXG4gICAgICAgICAgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgbGVmdCA9IHRyaWdnZXJSZWN0LmxlZnQgKyBzY3JvbGxYIC0gdGhpcy5vZmZzZXQ7XHJcbiAgICAgICAgdHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuICAgICAgICBpZiAocG9zaXRpb24gPT09IFwic3RhcnRcIikge1xyXG4gICAgICAgICAgdG9wID0gdHJpZ2dlclJlY3QudG9wICsgc2Nyb2xsWTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcImNlbnRlclwiKSB7XHJcbiAgICAgICAgICB0b3AgPSB0cmlnZ2VyUmVjdC50b3AgKyBzY3JvbGxZICsgdHJpZ2dlckhlaWdodCAvIDI7XHJcbiAgICAgICAgICB0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRvcCA9IHRyaWdnZXJSZWN0LnRvcCArIHNjcm9sbFkgKyB0cmlnZ2VySGVpZ2h0O1xyXG4gICAgICAgICAgdHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g6L6555WM57qm5p2f77ya56Gu5L+d5by556qX5LiN6LaF5Ye66KeG5Y+jXHJcbiAgICAgICAgaWYgKGxlZnQgLSBwb3B1cFNpemUud2lkdGggPCBzY3JvbGxYKSB7XHJcbiAgICAgICAgICBsZWZ0ID0gc2Nyb2xsWCArIDg7IC8vIOi3neemu+W3puS+p+iHs+WwkThweFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodG9wIDwgc2Nyb2xsWSkge1xyXG4gICAgICAgICAgdG9wID0gc2Nyb2xsWSArIDg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVZID0gXCIwXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0b3AgKyBwb3B1cFNpemUuaGVpZ2h0ID4gc2Nyb2xsWSArIHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0b3AgPSBzY3JvbGxZICsgdmlld3BvcnRIZWlnaHQgLSBwb3B1cFNpemUuaGVpZ2h0IC0gODtcclxuICAgICAgICAgIHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICBsZWZ0ID0gdHJpZ2dlclJlY3QucmlnaHQgKyBzY3JvbGxYICsgdGhpcy5vZmZzZXQ7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIpIHtcclxuICAgICAgICAgIHRvcCA9IHRyaWdnZXJSZWN0LnRvcCArIHNjcm9sbFk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gXCJjZW50ZXJcIikge1xyXG4gICAgICAgICAgdG9wID0gdHJpZ2dlclJlY3QudG9wICsgc2Nyb2xsWSArIHRyaWdnZXJIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgdHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0b3AgPSB0cmlnZ2VyUmVjdC50b3AgKyBzY3JvbGxZICsgdHJpZ2dlckhlaWdodDtcclxuICAgICAgICAgIHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOi+ueeVjOe6puadn++8muehruS/neW8ueeql+S4jei2heWHuuinhuWPo1xyXG4gICAgICAgIGlmIChsZWZ0ICsgcG9wdXBTaXplLndpZHRoID4gc2Nyb2xsWCArIHZpZXdwb3J0V2lkdGgpIHtcclxuICAgICAgICAgIGxlZnQgPSBzY3JvbGxYICsgdmlld3BvcnRXaWR0aCAtIHBvcHVwU2l6ZS53aWR0aCAtIDg7IC8vIOi3neemu+WPs+S+p+iHs+WwkThweFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodG9wIDwgc2Nyb2xsWSkge1xyXG4gICAgICAgICAgdG9wID0gc2Nyb2xsWSArIDg7XHJcbiAgICAgICAgICB0cmFuc2xhdGVZID0gXCIwXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0b3AgKyBwb3B1cFNpemUuaGVpZ2h0ID4gc2Nyb2xsWSArIHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0b3AgPSBzY3JvbGxZICsgdmlld3BvcnRIZWlnaHQgLSBwb3B1cFNpemUuaGVpZ2h0IC0gODtcclxuICAgICAgICAgIHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG9wOiB0b3AgKyBcInB4XCIsXHJcbiAgICAgIGxlZnQ6IGxlZnQgKyBcInB4XCIsXHJcbiAgICAgIHRyYW5zbGF0ZVgsXHJcbiAgICAgIHRyYW5zbGF0ZVksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc2V0UG9wdXBQb3NpdGlvbihcclxuICAgIHRyaWdnZXJSZWN0OiBET01SZWN0IHwgQ2xpZW50UmVjdCxcclxuICAgIHBvcHVwUmVjdDogRE9NUmVjdCB8IENsaWVudFJlY3QsXHJcbiAgICBwbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCIsXHJcbiAgICBwb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCIsXHJcbiAgICBwb3B1cFNpemU/OiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH1cclxuICApIHtcclxuICAgIGNvbnN0IHBvcHVwRWwgPVxyXG4gICAgICB0aGlzLnBvcHVwRWxlbWVudCAmJiB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgPyB0aGlzLnBvcHVwRWxlbWVudC5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgaWYgKCFwb3B1cEVsKSB7XHJcbiAgICAgIHJldHVybjsgLy8g5aaC5p6c5YWD57Sg6L+Y5LiN5a2Y5Zyo77yM5peg5rOV6K6+572u5L2N572uXHJcbiAgICB9XHJcblxyXG4gICAgLy8g5LyY5YWI5L2/55So5Lyg5YWl55qE5Zu65a6a5bC65a+477yM5ZCm5YiZ5LuORE9N6I635Y+WXHJcbiAgICBjb25zdCBwb3B1cFdpZHRoID1cclxuICAgICAgcG9wdXBTaXplICYmIHBvcHVwU2l6ZS53aWR0aCAhPT0gbnVsbCAmJiBwb3B1cFNpemUud2lkdGggIT09IHVuZGVmaW5lZFxyXG4gICAgICAgID8gcG9wdXBTaXplLndpZHRoXHJcbiAgICAgICAgOiBwb3B1cFJlY3Qud2lkdGggfHwgcG9wdXBFbC5vZmZzZXRXaWR0aCB8fCAzMDA7XHJcbiAgICBjb25zdCBwb3B1cEhlaWdodCA9XHJcbiAgICAgIHBvcHVwU2l6ZSAmJiBwb3B1cFNpemUuaGVpZ2h0ICE9PSBudWxsICYmIHBvcHVwU2l6ZS5oZWlnaHQgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgID8gcG9wdXBTaXplLmhlaWdodFxyXG4gICAgICAgIDogcG9wdXBSZWN0LmhlaWdodCB8fCBwb3B1cEVsLm9mZnNldEhlaWdodCB8fCAyMDA7XHJcblxyXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uQ29vcmRpbmF0ZXMoXHJcbiAgICAgIHRyaWdnZXJSZWN0LFxyXG4gICAgICBwbGFjZW1lbnQsXHJcbiAgICAgIHBvc2l0aW9uLFxyXG4gICAgICB7IHdpZHRoOiBwb3B1cFdpZHRoLCBoZWlnaHQ6IHBvcHVwSGVpZ2h0IH1cclxuICAgICk7XHJcblxyXG4gICAgcG9wdXBFbC5zdHlsZS50b3AgPSBjb29yZGluYXRlcy50b3A7XHJcbiAgICBwb3B1cEVsLnN0eWxlLmxlZnQgPSBjb29yZGluYXRlcy5sZWZ0O1xyXG4gICAgcG9wdXBFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7Y29vcmRpbmF0ZXMudHJhbnNsYXRlWH0sICR7Y29vcmRpbmF0ZXMudHJhbnNsYXRlWX0pYDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuZWQgPT09IFwieWVzXCIpIHtcclxuICAgICAgdGhpcy51cGRhdGVQb3B1cFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -22767,11 +22767,23 @@ class SmartPopupComponent {
22767
22767
  }
22768
22768
  });
22769
22769
  this.onWindowScroll = (/**
22770
+ * @param {?} event
22770
22771
  * @return {?}
22771
22772
  */
22772
- () => {
22773
+ (event) => {
22773
22774
  if (this.opened === "yes") {
22774
- this.updatePopupPosition();
22775
+ // 检查滚动是否发生在弹窗内部
22776
+ /** @type {?} */
22777
+ const target = (/** @type {?} */ (event.target));
22778
+ /** @type {?} */
22779
+ const isScrollOnPopup = this.popupElement &&
22780
+ this.popupElement.nativeElement &&
22781
+ this.popupElement.nativeElement.contains(target);
22782
+ // 如果滚动发生在弹窗内部,不更新位置(避免不必要的计算)
22783
+ // 如果滚动发生在外部,更新位置(因为触发元素位置可能改变)
22784
+ if (!isScrollOnPopup) {
22785
+ this.updatePopupPosition();
22786
+ }
22775
22787
  }
22776
22788
  });
22777
22789
  }
@@ -23195,6 +23207,24 @@ class SmartPopupComponent {
23195
23207
  event.stopPropagation();
23196
23208
  this.toggle();
23197
23209
  }
23210
+ // 处理弹窗内部的滚轮事件
23211
+ /**
23212
+ * @param {?} event
23213
+ * @return {?}
23214
+ */
23215
+ onPopupWheel(event) {
23216
+ // 阻止滚轮事件冒泡,避免触发外部滚动处理
23217
+ event.stopPropagation();
23218
+ }
23219
+ // 处理弹窗内部的滚动事件
23220
+ /**
23221
+ * @param {?} event
23222
+ * @return {?}
23223
+ */
23224
+ onPopupScroll(event) {
23225
+ // 阻止滚动事件冒泡,避免触发外部滚动处理
23226
+ event.stopPropagation();
23227
+ }
23198
23228
  // 计算并设置位置(支持固定尺寸,可在打开前调用)
23199
23229
  /**
23200
23230
  * @private
@@ -23707,7 +23737,7 @@ class SmartPopupComponent {
23707
23737
  SmartPopupComponent.decorators = [
23708
23738
  { type: Component, args: [{
23709
23739
  selector: "rs-smart-popup",
23710
- template: "<!-- \u89E6\u53D1\u5143\u7D20\u63D2\u69FD -->\r\n<ng-container #trigger>\r\n <ng-content select=\"[trigger]\"></ng-content>\r\n</ng-container>\r\n\r\n<!-- \u5F39\u7A97\u5185\u5BB9 -->\r\n<div\r\n #popup\r\n class=\"rs-smart-popup-content\"\r\n [attr.data-opened]=\"opened\"\r\n [attr.data-positioning]=\"positioning\"\r\n>\r\n <div *ngIf=\"loading\" class=\"rs-smart-popup-loading\">\r\n <div class=\"loading-spinner\"></div>\r\n </div>\r\n <div *ngIf=\"!loading\" class=\"rs-smart-popup-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n",
23740
+ template: "<!-- \u89E6\u53D1\u5143\u7D20\u63D2\u69FD -->\r\n<ng-container #trigger>\r\n <ng-content select=\"[trigger]\"></ng-content>\r\n</ng-container>\r\n\r\n<!-- \u5F39\u7A97\u5185\u5BB9 -->\r\n<div\r\n #popup\r\n class=\"rs-smart-popup-content\"\r\n [attr.data-opened]=\"opened\"\r\n [attr.data-positioning]=\"positioning\"\r\n (wheel)=\"onPopupWheel($event)\"\r\n (scroll)=\"onPopupScroll($event)\"\r\n>\r\n <div *ngIf=\"loading\" class=\"rs-smart-popup-loading\">\r\n <div class=\"loading-spinner\"></div>\r\n </div>\r\n <div *ngIf=\"!loading\" class=\"rs-smart-popup-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n",
23711
23741
  styles: [".rs-smart-popup-trigger{display:inline-block;cursor:pointer}::ng-deep #rs-smart-popup-fixed-container{width:0;height:0;z-index:100000;pointer-events:none}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content{pointer-events:auto;position:fixed;z-index:100001;padding:8px;border-radius:8px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25);min-width:200px;max-width:400px;max-height:500px;overflow:auto}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content[data-opened=no]{display:none}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content[data-opened=yes]{display:block}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content[data-opened=yes][data-positioning=yes]{display:none!important}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content[data-opened=yes][data-positioning=no]{display:block;visibility:visible;opacity:1;pointer-events:auto;-webkit-animation:.2s ease-out popup-fade-in;animation:.2s ease-out popup-fade-in}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content .rs-smart-popup-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;min-height:100px}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content .rs-smart-popup-loading .loading-spinner{width:24px;height:24px;border:3px solid #f3f3f3;border-top:3px solid #3498db;border-radius:50%;-webkit-animation:1s linear infinite spin;animation:1s linear infinite spin;margin-bottom:12px}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content .rs-smart-popup-loading .loading-text{color:#666;font-size:14px}@-webkit-keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}::ng-deep #rs-smart-popup-fixed-container .rs-smart-popup-content .rs-smart-popup-body{width:100%}@-webkit-keyframes popup-fade-in{from{opacity:0;transform:translate(var(--translate-x,0),var(--translate-y,0)) scale(.95)}to{opacity:1;transform:translate(var(--translate-x,0),var(--translate-y,0)) scale(1)}}@keyframes popup-fade-in{from{opacity:0;transform:translate(var(--translate-x,0),var(--translate-y,0)) scale(.95)}to{opacity:1;transform:translate(var(--translate-x,0),var(--translate-y,0)) scale(1)}}"]
23712
23742
  }] }
23713
23743
  ];