raise-common-lib 0.0.214 → 0.0.215

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.
@@ -120,10 +120,57 @@ export class FloatBoxComponent {
120
120
  * @return {?}
121
121
  */
122
122
  setFixedContentPosition() {
123
+ const { top: y, left: x, width, height, } = this.rootElement.nativeElement.getBoundingClientRect();
124
+ // 临时显示内容以获取尺寸
125
+ /** @type {?} */
126
+ const wasVisible = this.contentElement.nativeElement.style.display !== "none";
127
+ this.contentElement.nativeElement.style.visibility = "hidden";
128
+ this.contentElement.nativeElement.style.display = "block";
129
+ /** @type {?} */
130
+ const contentRect = this.contentElement.nativeElement.getBoundingClientRect();
131
+ /** @type {?} */
132
+ const contentWidth = contentRect.width;
133
+ /** @type {?} */
134
+ const contentHeight = contentRect.height;
135
+ // 获取视口尺寸
136
+ /** @type {?} */
137
+ const viewportWidth = window.innerWidth;
138
+ /** @type {?} */
139
+ const viewportHeight = window.innerHeight;
140
+ /** @type {?} */
141
+ const SAFE_MARGIN = 12;
142
+ // 边界检测:计算最佳 placement
143
+ /** @type {?} */
144
+ let finalPlacement = this.placement;
145
+ if (this.placement === "top" && y < contentHeight + SAFE_MARGIN) {
146
+ if (viewportHeight - (y + height) >= contentHeight + SAFE_MARGIN) {
147
+ finalPlacement = "bottom";
148
+ }
149
+ }
150
+ else if (this.placement === "bottom" && viewportHeight - (y + height) < contentHeight + SAFE_MARGIN) {
151
+ if (y >= contentHeight + SAFE_MARGIN) {
152
+ finalPlacement = "top";
153
+ }
154
+ }
155
+ else if (this.placement === "left" && x < contentWidth + SAFE_MARGIN) {
156
+ if (viewportWidth - (x + width) >= contentWidth + SAFE_MARGIN) {
157
+ finalPlacement = "right";
158
+ }
159
+ }
160
+ else if (this.placement === "right" && viewportWidth - (x + width) < contentWidth + SAFE_MARGIN) {
161
+ if (x >= contentWidth + SAFE_MARGIN) {
162
+ finalPlacement = "left";
163
+ }
164
+ }
165
+ // 保存调整后的 placement
166
+ this.actualPlacement = finalPlacement;
167
+ // 对于 fixed="no" 的情况,只更新 data-placement,让 CSS 处理
123
168
  if (this.fixed === "no") {
169
+ this.contentElement.nativeElement.style.visibility = "";
170
+ this.contentElement.nativeElement.style.display = wasVisible ? "" : "none";
124
171
  return;
125
172
  }
126
- const { top: y, left: x, width, height, } = this.rootElement.nativeElement.getBoundingClientRect();
173
+ // 对于 fixed="yes" 的情况,计算具体位置
127
174
  /** @type {?} */
128
175
  let top = "0";
129
176
  /** @type {?} */
@@ -132,7 +179,7 @@ export class FloatBoxComponent {
132
179
  let translateX = "0";
133
180
  /** @type {?} */
134
181
  let translateY = "0";
135
- switch (this.placement + "_" + this.position) {
182
+ switch (finalPlacement + "_" + this.position) {
136
183
  case "top_start":
137
184
  top = y + "px";
138
185
  left = x - 8 + "px";
@@ -196,9 +243,49 @@ export class FloatBoxComponent {
196
243
  translateX = "-100%";
197
244
  break;
198
245
  }
246
+ // 计算实际渲染位置(考虑 transform)进行边界调整
247
+ /** @type {?} */
248
+ let actualLeft = parseFloat(left) || 0;
249
+ /** @type {?} */
250
+ let actualTop = parseFloat(top) || 0;
251
+ if (translateX === "-50%") {
252
+ actualLeft = actualLeft - contentWidth / 2;
253
+ }
254
+ else if (translateX === "-100%") {
255
+ actualLeft = actualLeft - contentWidth;
256
+ }
257
+ if (translateY === "-50%") {
258
+ actualTop = actualTop - contentHeight / 2;
259
+ }
260
+ else if (translateY === "-100%") {
261
+ actualTop = actualTop - contentHeight;
262
+ }
263
+ // 水平边界调整
264
+ if (finalPlacement === "top" || finalPlacement === "bottom") {
265
+ if (actualLeft < SAFE_MARGIN) {
266
+ left = (x + SAFE_MARGIN) + "px";
267
+ translateX = "0";
268
+ }
269
+ else if (actualLeft + contentWidth > viewportWidth - SAFE_MARGIN) {
270
+ left = (viewportWidth - contentWidth - SAFE_MARGIN) + "px";
271
+ translateX = "0";
272
+ }
273
+ }
274
+ // 垂直边界调整
275
+ else {
276
+ if (actualTop < SAFE_MARGIN) {
277
+ top = (y + SAFE_MARGIN) + "px";
278
+ translateY = "0";
279
+ }
280
+ else if (actualTop + contentHeight > viewportHeight - SAFE_MARGIN) {
281
+ top = (viewportHeight - contentHeight - SAFE_MARGIN) + "px";
282
+ translateY = "0";
283
+ }
284
+ }
199
285
  this.contentElement.nativeElement.style.top = top;
200
286
  this.contentElement.nativeElement.style.left = left;
201
287
  this.contentElement.nativeElement.style.transform = `translate(${translateX}, ${translateY})`;
288
+ this.contentElement.nativeElement.style.visibility = "visible";
202
289
  }
203
290
  /**
204
291
  * @return {?}
@@ -216,13 +303,15 @@ export class FloatBoxComponent {
216
303
  * @return {?}
217
304
  */
218
305
  onMouseEnter() {
219
- if (this.fixed === "no" || this.trigger !== "hover") {
306
+ if (this.trigger !== "hover") {
220
307
  return;
221
308
  }
222
309
  this.opened = "yes";
223
310
  this.openChange.emit(true);
224
311
  this.setFixedContentPosition();
225
- window.addEventListener("mousemove", this.onMoveOutside);
312
+ if (this.fixed === "yes") {
313
+ window.addEventListener("mousemove", this.onMoveOutside);
314
+ }
226
315
  }
227
316
  /**
228
317
  * @return {?}
@@ -242,7 +331,7 @@ export class FloatBoxComponent {
242
331
  FloatBoxComponent.decorators = [
243
332
  { type: Component, args: [{
244
333
  selector: "rs-float-box",
245
- template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
334
+ template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"actualPlacement || placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
246
335
  styles: [".float-box-container{position:relative}.float-box-container[data-trigger=click]>.float-box-content[data-opened=no],.float-box-container[data-trigger=hover]:not(:hover)>.float-box-content{display:none}.float-box-container>.float-box-content[data-fixed=no]{padding:8px;--top:0;--left:0;--translate-x:0;--translate-y:0;position:absolute;top:var(--top);left:var(--left);transform:translate(var(--translate-x),var(--translate-y));z-index:10}.float-box-container>.float-box-content[data-fixed=no][data-animation=yes]{-webkit-animation:.25s ease-in-out;animation:.25s ease-in-out}.float-box-container>.float-box-content[data-fixed=no][data-placement=top]{--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-animation=true]{-webkit-animation-name:open-from-top;animation-name:open-from-top}.float-box-container>.float-box-content[data-fixed=no][data-placement=left]{--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=right]{--left:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom]{--top:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=start]{--left:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=center]{--left:50%;--translate-x:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=end]{--left:calc(100% + 8px);--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start]{--top:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center]{--top:50%;--translate-y:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end]{--top:calc(100% + 8px);--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end][data-animation=yes]{-webkit-animation-name:open-from-top;animation-name:open-from-top}@-webkit-keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@-webkit-keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}::ng-deep #kt-float-box-fixed-container{width:0;height:0;z-index:100000}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes]{padding:8px;position:fixed;z-index:10}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes][data-opened=no]{display:none}.float-box-show-content{padding:8px 8px 12px;border-radius:8px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25)}"]
247
336
  }] }
248
337
  ];
@@ -272,6 +361,8 @@ if (false) {
272
361
  /** @type {?} */
273
362
  FloatBoxComponent.prototype._fixed;
274
363
  /** @type {?} */
364
+ FloatBoxComponent.prototype.actualPlacement;
365
+ /** @type {?} */
275
366
  FloatBoxComponent.prototype.openChange;
276
367
  /** @type {?} */
277
368
  FloatBoxComponent.prototype.rootElement;
@@ -293,4 +384,4 @@ if (false) {
293
384
  */
294
385
  FloatBoxComponent.prototype.ref;
295
386
  }
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQU92QixNQUFNLE9BQU8saUJBQWlCOzs7O0lBaUQ3QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTlDeEIsYUFBUSxHQUFzQixPQUFPLENBQUM7UUFDcEMsZUFBVSxHQUFpQixJQUFJLENBQUM7UUFDcEMsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFxQ3RCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBb0IvRCx1QkFBa0IsR0FBRyw4QkFBOEIsQ0FBQztRQWtHcEQsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFZNUIsbUJBQWM7Ozs7UUFBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUN0QyxJQUNDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVcsQ0FBQztnQkFDakUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVcsQ0FBQyxFQUN2RDtnQkFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVks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MkM7O0lBZTNDLCtDQUFvRDs7SUFDcEQsNkNBQThCOztJQWlHOUIsbUNBQTRCOztJQVk1QiwyQ0FVRTs7SUFhRiwwQ0FVRTs7Ozs7SUE1SlUsZ0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRBZnRlclZpZXdJbml0LFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRFbGVtZW50UmVmLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbnB1dCxcclxuXHRPbkRlc3Ryb3ksXHJcblx0T3V0cHV0LFxyXG5cdFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6IFwicnMtZmxvYXQtYm94XCIsXHJcblx0dGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG5cdHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsb2F0Qm94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHRASW5wdXQoXCJwbGFjZW1lbnRcIikgX3BsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIjtcclxuXHRASW5wdXQoXCJwb3NpdGlvblwiKSBfcG9zaXRpb246IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiO1xyXG5cdEBJbnB1dChcInRyaWdnZXJcIikgX3RyaWdnZXI6IFwiaG92ZXJcIiB8IFwiY2xpY2tcIiA9IFwiaG92ZXJcIjtcclxuXHRASW5wdXQoXCJhbmltYXRpb25cIikgX2FuaW1hdGlvbjogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHRASW5wdXQoXCJmaXhlZFwiKSBfZml4ZWQ6IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblxyXG5cdGdldCBwbGFjZW1lbnQoKSB7XHJcblx0XHRpZiAoW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCJdLmluY2x1ZGVzKHRoaXMuX3BsYWNlbWVudCkpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuX3BsYWNlbWVudDtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImJvdHRvbVwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IHBvc2l0aW9uKCkge1xyXG5cdFx0aWYgKFtcInN0YXJ0XCIsIFwiY2VudGVyXCIsIFwiZW5kXCJdLmluY2x1ZGVzKHRoaXMuX3Bvc2l0aW9uKSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5fcG9zaXRpb247XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJjZW50ZXJcIjtcclxuXHR9XHJcblxyXG5cdGdldCB0cmlnZ2VyKCkge1xyXG5cdFx0aWYgKHRoaXMuX3RyaWdnZXIgPT09IFwiY2xpY2tcIikge1xyXG5cdFx0XHRyZXR1cm4gXCJjbGlja1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiaG92ZXJcIjtcclxuXHR9XHJcblxyXG5cdGdldCBhbmltYXRpb24oKSB7XHJcblx0XHRpZiAodGhpcy5fYW5pbWF0aW9uID09PSBcInllc1wiKSB7XHJcblx0XHRcdHJldHVybiBcInllc1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwibm9cIjtcclxuXHR9XHJcblxyXG5cdGdldCBmaXhlZCgpIHtcclxuXHRcdGlmICh0aGlzLl9maXhlZCA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHRyZXR1cm4gXCJ5ZXNcIjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcIm5vXCI7XHJcblx0fVxyXG5cclxuXHRAT3V0cHV0KFwib3BlbkNoYW5nZVwiKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuXHRAVmlld0NoaWxkKFwiZWxlbWVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRyb290RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblx0QFZpZXdDaGlsZChcImNvbnRlbnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0Y29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdHRoaXMuZml4ZWRDb250YWluZXJFbCA9IHRoaXMuZ2V0Rml4ZWRDb250YWluZXIoKTtcclxuXHRcdGlmICh0aGlzLmZpeGVkID09PSBcInllc1wiKSB7XHJcblx0XHRcdHRoaXMuZml4ZWRDb250YWluZXJFbC5hcHBlbmQodGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xyXG5cdH1cclxuXHJcblx0RklYRURfQ09OVEFJTkVSX0lEID0gXCJrdC1mbG9hdC1ib3gtZml4ZWQtY29udGFpbmVyXCI7XHJcblx0Zml4ZWRDb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XHJcblx0Z2V0Rml4ZWRDb250YWluZXIoKSB7XHJcblx0XHRsZXQgY29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuRklYRURfQ09OVEFJTkVSX0lEKTtcclxuXHRcdGlmICghY29udGFpbmVyRWxlbWVudCkge1xyXG5cdFx0XHRjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuXHRcdFx0Y29udGFpbmVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCB0aGlzLkZJWEVEX0NPTlRBSU5FUl9JRCk7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kKGNvbnRhaW5lckVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbnRhaW5lckVsZW1lbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRGaXhlZENvbnRlbnRQb3NpdGlvbigpIHtcclxuXHRcdGlmICh0aGlzLmZpeGVkID09PSBcIm5vXCIpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHtcclxuXHRcdFx0dG9wOiB5LFxyXG5cdFx0XHRsZWZ0OiB4LFxyXG5cdFx0XHR3aWR0aCxcclxuXHRcdFx0aGVpZ2h0LFxyXG5cdFx0fSA9IHRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcblx0XHRsZXQgdG9wID0gXCIwXCI7XHJcblx0XHRsZXQgbGVmdCA9IFwiMFwiO1xyXG5cdFx0bGV0IHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdGxldCB0cmFuc2xhdGVZID0gXCIwXCI7XHJcblx0XHRzd2l0Y2ggKHRoaXMucGxhY2VtZW50ICsgXCJfXCIgKyB0aGlzLnBvc2l0aW9uKSB7XHJcblx0XHRcdGNhc2UgXCJ0b3Bfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwidG9wX2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJ0b3BfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoIC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSB0b3A7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQ7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3RyYW5zbGF0ZVh9LCAke3RyYW5zbGF0ZVl9KWA7XHJcblx0fVxyXG5cclxuXHRvcGVuZWQ6IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblx0b25DbGlja0NvbnRhaW5lcigpIHtcclxuXHRcdGlmICh0aGlzLnRyaWdnZXIgIT09IFwiY2xpY2tcIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5vcGVuZWQgPSBcInllc1wiO1xyXG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblx0XHR0aGlzLnNldEZpeGVkQ29udGVudFBvc2l0aW9uKCk7XHJcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG5cdH1cclxuXHJcblx0b25DbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuZml4ZWRDb250YWluZXJFbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRvbk1vdXNlRW50ZXIoKSB7XHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJub1wiIHx8IHRoaXMudHJpZ2dlciAhPT0gXCJob3ZlclwiKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHRcdHRoaXMuc2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25Nb3ZlT3V0c2lkZSk7XHJcblx0fVxyXG5cclxuXHRvbk1vdmVPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcblx0XHRpZiAoXHJcblx0XHRcdCF0aGlzLnJvb3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpICYmXHJcblx0XHRcdCF0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy5vcGVuZWQgPSBcIm5vXCI7XHJcblx0XHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcclxuXHRcdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLm9uTW92ZU91dHNpZGUpO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRjbG9zZSgpIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0fSwgMCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
387
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQU92QixNQUFNLE9BQU8saUJBQWlCOzs7O0lBb0Q3QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWpEeEIsYUFBUSxHQUFzQixPQUFPLENBQUM7UUFDcEMsZUFBVSxHQUFpQixJQUFJLENBQUM7UUFDcEMsV0FBTSxHQUFpQixJQUFJLENBQUM7UUF3Q3RCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBb0IvRCx1QkFBa0IsR0FBRyw4QkFBOEIsQ0FBQztRQThLcEQsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFZNUIsbUJBQWM7Ozs7UUFBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUN0QyxJQUNDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVcsQ0FBQztnQkFDakUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVcsQ0FBQyxFQUN2RDtnQkFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVks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Q0FBQyxDQUFDO1NBQ3pEO0lBQ0YsQ0FBQzs7OztJQWNELEtBQUs7UUFDSixVQUFVOzs7UUFBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBNVNELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsY0FBYztnQkFDeEIscW9CQUFxQzs7YUFFckM7Ozs7WUFkQSxpQkFBaUI7Ozt5QkFnQmhCLEtBQUssU0FBQyxXQUFXO3dCQUNqQixLQUFLLFNBQUMsVUFBVTt1QkFDaEIsS0FBSyxTQUFDLFNBQVM7eUJBQ2YsS0FBSyxTQUFDLFdBQVc7cUJBQ2pCLEtBQUssU0FBQyxPQUFPO3lCQXdDYixNQUFNLFNBQUMsWUFBWTswQkFFbkIsU0FBUyxTQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBRXRDLFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzs7O0lBaER2Qyx1Q0FBb0U7O0lBQ3BFLHNDQUF5RDs7SUFDekQscUNBQXdEOztJQUN4RCx1Q0FBb0Q7O0lBQ3BELG1DQUE0Qzs7SUFzQzVDLDRDQUFxRDs7SUFFckQsdUNBQStEOztJQUUvRCx3Q0FDd0M7O0lBQ3hDLDJDQUMyQzs7SUFlM0MsK0NBQW9EOztJQUNwRCw2Q0FBOEI7O0lBNks5QixtQ0FBNEI7O0lBWTVCLDJDQVVFOztJQWVGLDBDQVVFOzs7OztJQTFPVSxnQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdEFmdGVyVmlld0luaXQsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPdXRwdXQsXHJcblx0Vmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogXCJycy1mbG9hdC1ib3hcIixcclxuXHR0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxvYXRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dChcInBsYWNlbWVudFwiKSBfcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG5cdEBJbnB1dChcInBvc2l0aW9uXCIpIF9wb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCI7XHJcblx0QElucHV0KFwidHJpZ2dlclwiKSBfdHJpZ2dlcjogXCJob3ZlclwiIHwgXCJjbGlja1wiID0gXCJob3ZlclwiO1xyXG5cdEBJbnB1dChcImFuaW1hdGlvblwiKSBfYW5pbWF0aW9uOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG5cdEBJbnB1dChcImZpeGVkXCIpIF9maXhlZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHJcblx0Z2V0IHBsYWNlbWVudCgpIHtcclxuXHRcdGlmIChbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIl0uaW5jbHVkZXModGhpcy5fcGxhY2VtZW50KSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5fcGxhY2VtZW50O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiYm90dG9tXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgcG9zaXRpb24oKSB7XHJcblx0XHRpZiAoW1wic3RhcnRcIiwgXCJjZW50ZXJcIiwgXCJlbmRcIl0uaW5jbHVkZXModGhpcy5fcG9zaXRpb24pKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl9wb3NpdGlvbjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImNlbnRlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRyaWdnZXIoKSB7XHJcblx0XHRpZiAodGhpcy5fdHJpZ2dlciA9PT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybiBcImNsaWNrXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJob3ZlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGFuaW1hdGlvbigpIHtcclxuXHRcdGlmICh0aGlzLl9hbmltYXRpb24gPT09IFwieWVzXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwieWVzXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJub1wiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpeGVkKCkge1xyXG5cdFx0aWYgKHRoaXMuX2ZpeGVkID09PSBcInllc1wiKSB7XHJcblx0XHRcdHJldHVybiBcInllc1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwibm9cIjtcclxuXHR9XHJcblxyXG5cdC8vIOWunumZheS9v+eUqOeahCBwbGFjZW1lbnTvvIjlj6/og73nu4/ov4foh6rliqjosIPmlbTvvIlcclxuXHRhY3R1YWxQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCI7XHJcblxyXG5cdEBPdXRwdXQoXCJvcGVuQ2hhbmdlXCIpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJlbGVtZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHJvb3RFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHRAVmlld0NoaWxkKFwiY29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0dGhpcy5maXhlZENvbnRhaW5lckVsID0gdGhpcy5nZXRGaXhlZENvbnRhaW5lcigpO1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0dGhpcy5maXhlZENvbnRhaW5lckVsLmFwcGVuZCh0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcblx0fVxyXG5cclxuXHRGSVhFRF9DT05UQUlORVJfSUQgPSBcImt0LWZsb2F0LWJveC1maXhlZC1jb250YWluZXJcIjtcclxuXHRmaXhlZENvbnRhaW5lckVsOiBIVE1MRWxlbWVudDtcclxuXHRnZXRGaXhlZENvbnRhaW5lcigpIHtcclxuXHRcdGxldCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG5cdFx0aWYgKCFjb250YWluZXJFbGVtZW50KSB7XHJcblx0XHRcdGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cdFx0XHRjb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMuRklYRURfQ09OVEFJTkVSX0lEKTtcclxuXHRcdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmQoY29udGFpbmVyRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29udGFpbmVyRWxlbWVudDtcclxuXHR9XHJcblxyXG5cdHNldEZpeGVkQ29udGVudFBvc2l0aW9uKCkge1xyXG5cdFx0Y29uc3Qge1xyXG5cdFx0XHR0b3A6IHksXHJcblx0XHRcdGxlZnQ6IHgsXHJcblx0XHRcdHdpZHRoLFxyXG5cdFx0XHRoZWlnaHQsXHJcblx0XHR9ID0gdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuXHRcdC8vIOS4tOaXtuaYvuekuuWGheWuueS7peiOt+WPluWwuuWvuFxyXG5cdFx0Y29uc3Qgd2FzVmlzaWJsZSA9IHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ICE9PSBcIm5vbmVcIjtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xyXG5cdFx0Y29uc3QgY29udGVudFJlY3QgPSB0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRjb25zdCBjb250ZW50V2lkdGggPSBjb250ZW50UmVjdC53aWR0aDtcclxuXHRcdGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBjb250ZW50UmVjdC5oZWlnaHQ7XHJcblxyXG5cdFx0Ly8g6I635Y+W6KeG5Y+j5bC65a+4XHJcblx0XHRjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcblx0XHRjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHRcdGNvbnN0IFNBRkVfTUFSR0lOID0gMTI7XHJcblxyXG5cdFx0Ly8g6L6555WM5qOA5rWL77ya6K6h566X5pyA5L2zIHBsYWNlbWVudFxyXG5cdFx0bGV0IGZpbmFsUGxhY2VtZW50ID0gdGhpcy5wbGFjZW1lbnQ7XHJcblx0XHRpZiAodGhpcy5wbGFjZW1lbnQgPT09IFwidG9wXCIgJiYgeSA8IGNvbnRlbnRIZWlnaHQgKyBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRpZiAodmlld3BvcnRIZWlnaHQgLSAoeSArIGhlaWdodCkgPj0gY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0ZmluYWxQbGFjZW1lbnQgPSBcImJvdHRvbVwiO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09PSBcImJvdHRvbVwiICYmIHZpZXdwb3J0SGVpZ2h0IC0gKHkgKyBoZWlnaHQpIDwgY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh5ID49IGNvbnRlbnRIZWlnaHQgKyBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGZpbmFsUGxhY2VtZW50ID0gXCJ0b3BcIjtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgJiYgeCA8IGNvbnRlbnRXaWR0aCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh2aWV3cG9ydFdpZHRoIC0gKHggKyB3aWR0aCkgPj0gY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0XHRmaW5hbFBsYWNlbWVudCA9IFwicmlnaHRcIjtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gXCJyaWdodFwiICYmIHZpZXdwb3J0V2lkdGggLSAoeCArIHdpZHRoKSA8IGNvbnRlbnRXaWR0aCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh4ID49IGNvbnRlbnRXaWR0aCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0ZmluYWxQbGFjZW1lbnQgPSBcImxlZnRcIjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIOS/neWtmOiwg+aVtOWQjueahCBwbGFjZW1lbnRcclxuXHRcdHRoaXMuYWN0dWFsUGxhY2VtZW50ID0gZmluYWxQbGFjZW1lbnQ7XHJcblxyXG5cdFx0Ly8g5a+55LqOIGZpeGVkPVwibm9cIiDnmoTmg4XlhrXvvIzlj6rmm7TmlrAgZGF0YS1wbGFjZW1lbnTvvIzorqkgQ1NTIOWkhOeQhlxyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwibm9cIikge1xyXG5cdFx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IFwiXCI7XHJcblx0XHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gd2FzVmlzaWJsZSA/IFwiXCIgOiBcIm5vbmVcIjtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIOWvueS6jiBmaXhlZD1cInllc1wiIOeahOaDheWGte+8jOiuoeeul+WFt+S9k+S9jee9rlxyXG5cdFx0bGV0IHRvcCA9IFwiMFwiO1xyXG5cdFx0bGV0IGxlZnQgPSBcIjBcIjtcclxuXHRcdGxldCB0cmFuc2xhdGVYID0gXCIwXCI7XHJcblx0XHRsZXQgdHJhbnNsYXRlWSA9IFwiMFwiO1xyXG5cdFx0c3dpdGNoIChmaW5hbFBsYWNlbWVudCArIFwiX1wiICsgdGhpcy5wb3NpdGlvbikge1xyXG5cdFx0XHRjYXNlIFwidG9wX3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInRvcF9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi01MCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwidG9wX2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwibGVmdF9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwibGVmdF9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJyaWdodF9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJyaWdodF9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0IC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi01MCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImJvdHRvbV9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHJcblx0XHQvLyDorqHnrpflrp7pmYXmuLLmn5PkvY3nva7vvIjogIPomZEgdHJhbnNmb3Jt77yJ6L+b6KGM6L6555WM6LCD5pW0XHJcblx0XHRsZXQgYWN0dWFsTGVmdCA9IHBhcnNlRmxvYXQobGVmdCkgfHwgMDtcclxuXHRcdGxldCBhY3R1YWxUb3AgPSBwYXJzZUZsb2F0KHRvcCkgfHwgMDtcclxuXHRcdGlmICh0cmFuc2xhdGVYID09PSBcIi01MCVcIikge1xyXG5cdFx0XHRhY3R1YWxMZWZ0ID0gYWN0dWFsTGVmdCAtIGNvbnRlbnRXaWR0aCAvIDI7XHJcblx0XHR9IGVsc2UgaWYgKHRyYW5zbGF0ZVggPT09IFwiLTEwMCVcIikge1xyXG5cdFx0XHRhY3R1YWxMZWZ0ID0gYWN0dWFsTGVmdCAtIGNvbnRlbnRXaWR0aDtcclxuXHRcdH1cclxuXHRcdGlmICh0cmFuc2xhdGVZID09PSBcIi01MCVcIikge1xyXG5cdFx0XHRhY3R1YWxUb3AgPSBhY3R1YWxUb3AgLSBjb250ZW50SGVpZ2h0IC8gMjtcclxuXHRcdH0gZWxzZSBpZiAodHJhbnNsYXRlWSA9PT0gXCItMTAwJVwiKSB7XHJcblx0XHRcdGFjdHVhbFRvcCA9IGFjdHVhbFRvcCAtIGNvbnRlbnRIZWlnaHQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5rC05bmz6L6555WM6LCD5pW0XHJcblx0XHRpZiAoZmluYWxQbGFjZW1lbnQgPT09IFwidG9wXCIgfHwgZmluYWxQbGFjZW1lbnQgPT09IFwiYm90dG9tXCIpIHtcclxuXHRcdFx0aWYgKGFjdHVhbExlZnQgPCBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGxlZnQgPSAoeCArIFNBRkVfTUFSR0lOKSArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCIwXCI7XHJcblx0XHRcdH0gZWxzZSBpZiAoYWN0dWFsTGVmdCArIGNvbnRlbnRXaWR0aCA+IHZpZXdwb3J0V2lkdGggLSBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGxlZnQgPSAodmlld3BvcnRXaWR0aCAtIGNvbnRlbnRXaWR0aCAtIFNBRkVfTUFSR0lOKSArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCIwXCI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC8vIOWeguebtOi+ueeVjOiwg+aVtFxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdGlmIChhY3R1YWxUb3AgPCBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdHRvcCA9ICh5ICsgU0FGRV9NQVJHSU4pICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuXHRcdFx0fSBlbHNlIGlmIChhY3R1YWxUb3AgKyBjb250ZW50SGVpZ2h0ID4gdmlld3BvcnRIZWlnaHQgLSBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdHRvcCA9ICh2aWV3cG9ydEhlaWdodCAtIGNvbnRlbnRIZWlnaHQgLSBTQUZFX01BUkdJTikgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiMFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHRvcDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7dHJhbnNsYXRlWH0sICR7dHJhbnNsYXRlWX0pYDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJ2aXNpYmxlXCI7XHJcblx0fVxyXG5cclxuXHRvcGVuZWQ6IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblx0b25DbGlja0NvbnRhaW5lcigpIHtcclxuXHRcdGlmICh0aGlzLnRyaWdnZXIgIT09IFwiY2xpY2tcIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5vcGVuZWQgPSBcInllc1wiO1xyXG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblx0XHR0aGlzLnNldEZpeGVkQ29udGVudFBvc2l0aW9uKCk7XHJcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG5cdH1cclxuXHJcblx0b25DbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuZml4ZWRDb250YWluZXJFbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRvbk1vdXNlRW50ZXIoKSB7XHJcblx0XHRpZiAodGhpcy50cmlnZ2VyICE9PSBcImhvdmVyXCIpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMub3BlbmVkID0gXCJ5ZXNcIjtcclxuXHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xyXG5cdFx0dGhpcy5zZXRGaXhlZENvbnRlbnRQb3NpdGlvbigpO1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbk1vdmVPdXRzaWRlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uTW92ZU91dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25Nb3ZlT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdGNsb3NlKCkge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHR9LCAwKTtcclxuXHR9XHJcbn1cclxuIl19
@@ -150,10 +150,57 @@ var FloatBoxComponent = /** @class */ (function () {
150
150
  * @return {?}
151
151
  */
152
152
  function () {
153
+ var _a = this.rootElement.nativeElement.getBoundingClientRect(), y = _a.top, x = _a.left, width = _a.width, height = _a.height;
154
+ // 临时显示内容以获取尺寸
155
+ /** @type {?} */
156
+ var wasVisible = this.contentElement.nativeElement.style.display !== "none";
157
+ this.contentElement.nativeElement.style.visibility = "hidden";
158
+ this.contentElement.nativeElement.style.display = "block";
159
+ /** @type {?} */
160
+ var contentRect = this.contentElement.nativeElement.getBoundingClientRect();
161
+ /** @type {?} */
162
+ var contentWidth = contentRect.width;
163
+ /** @type {?} */
164
+ var contentHeight = contentRect.height;
165
+ // 获取视口尺寸
166
+ /** @type {?} */
167
+ var viewportWidth = window.innerWidth;
168
+ /** @type {?} */
169
+ var viewportHeight = window.innerHeight;
170
+ /** @type {?} */
171
+ var SAFE_MARGIN = 12;
172
+ // 边界检测:计算最佳 placement
173
+ /** @type {?} */
174
+ var finalPlacement = this.placement;
175
+ if (this.placement === "top" && y < contentHeight + SAFE_MARGIN) {
176
+ if (viewportHeight - (y + height) >= contentHeight + SAFE_MARGIN) {
177
+ finalPlacement = "bottom";
178
+ }
179
+ }
180
+ else if (this.placement === "bottom" && viewportHeight - (y + height) < contentHeight + SAFE_MARGIN) {
181
+ if (y >= contentHeight + SAFE_MARGIN) {
182
+ finalPlacement = "top";
183
+ }
184
+ }
185
+ else if (this.placement === "left" && x < contentWidth + SAFE_MARGIN) {
186
+ if (viewportWidth - (x + width) >= contentWidth + SAFE_MARGIN) {
187
+ finalPlacement = "right";
188
+ }
189
+ }
190
+ else if (this.placement === "right" && viewportWidth - (x + width) < contentWidth + SAFE_MARGIN) {
191
+ if (x >= contentWidth + SAFE_MARGIN) {
192
+ finalPlacement = "left";
193
+ }
194
+ }
195
+ // 保存调整后的 placement
196
+ this.actualPlacement = finalPlacement;
197
+ // 对于 fixed="no" 的情况,只更新 data-placement,让 CSS 处理
153
198
  if (this.fixed === "no") {
199
+ this.contentElement.nativeElement.style.visibility = "";
200
+ this.contentElement.nativeElement.style.display = wasVisible ? "" : "none";
154
201
  return;
155
202
  }
156
- var _a = this.rootElement.nativeElement.getBoundingClientRect(), y = _a.top, x = _a.left, width = _a.width, height = _a.height;
203
+ // 对于 fixed="yes" 的情况,计算具体位置
157
204
  /** @type {?} */
158
205
  var top = "0";
159
206
  /** @type {?} */
@@ -162,7 +209,7 @@ var FloatBoxComponent = /** @class */ (function () {
162
209
  var translateX = "0";
163
210
  /** @type {?} */
164
211
  var translateY = "0";
165
- switch (this.placement + "_" + this.position) {
212
+ switch (finalPlacement + "_" + this.position) {
166
213
  case "top_start":
167
214
  top = y + "px";
168
215
  left = x - 8 + "px";
@@ -226,9 +273,49 @@ var FloatBoxComponent = /** @class */ (function () {
226
273
  translateX = "-100%";
227
274
  break;
228
275
  }
276
+ // 计算实际渲染位置(考虑 transform)进行边界调整
277
+ /** @type {?} */
278
+ var actualLeft = parseFloat(left) || 0;
279
+ /** @type {?} */
280
+ var actualTop = parseFloat(top) || 0;
281
+ if (translateX === "-50%") {
282
+ actualLeft = actualLeft - contentWidth / 2;
283
+ }
284
+ else if (translateX === "-100%") {
285
+ actualLeft = actualLeft - contentWidth;
286
+ }
287
+ if (translateY === "-50%") {
288
+ actualTop = actualTop - contentHeight / 2;
289
+ }
290
+ else if (translateY === "-100%") {
291
+ actualTop = actualTop - contentHeight;
292
+ }
293
+ // 水平边界调整
294
+ if (finalPlacement === "top" || finalPlacement === "bottom") {
295
+ if (actualLeft < SAFE_MARGIN) {
296
+ left = (x + SAFE_MARGIN) + "px";
297
+ translateX = "0";
298
+ }
299
+ else if (actualLeft + contentWidth > viewportWidth - SAFE_MARGIN) {
300
+ left = (viewportWidth - contentWidth - SAFE_MARGIN) + "px";
301
+ translateX = "0";
302
+ }
303
+ }
304
+ // 垂直边界调整
305
+ else {
306
+ if (actualTop < SAFE_MARGIN) {
307
+ top = (y + SAFE_MARGIN) + "px";
308
+ translateY = "0";
309
+ }
310
+ else if (actualTop + contentHeight > viewportHeight - SAFE_MARGIN) {
311
+ top = (viewportHeight - contentHeight - SAFE_MARGIN) + "px";
312
+ translateY = "0";
313
+ }
314
+ }
229
315
  this.contentElement.nativeElement.style.top = top;
230
316
  this.contentElement.nativeElement.style.left = left;
231
317
  this.contentElement.nativeElement.style.transform = "translate(" + translateX + ", " + translateY + ")";
318
+ this.contentElement.nativeElement.style.visibility = "visible";
232
319
  };
233
320
  /**
234
321
  * @return {?}
@@ -252,13 +339,15 @@ var FloatBoxComponent = /** @class */ (function () {
252
339
  * @return {?}
253
340
  */
254
341
  function () {
255
- if (this.fixed === "no" || this.trigger !== "hover") {
342
+ if (this.trigger !== "hover") {
256
343
  return;
257
344
  }
258
345
  this.opened = "yes";
259
346
  this.openChange.emit(true);
260
347
  this.setFixedContentPosition();
261
- window.addEventListener("mousemove", this.onMoveOutside);
348
+ if (this.fixed === "yes") {
349
+ window.addEventListener("mousemove", this.onMoveOutside);
350
+ }
262
351
  };
263
352
  /**
264
353
  * @return {?}
@@ -281,7 +370,7 @@ var FloatBoxComponent = /** @class */ (function () {
281
370
  FloatBoxComponent.decorators = [
282
371
  { type: Component, args: [{
283
372
  selector: "rs-float-box",
284
- template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
373
+ template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"actualPlacement || placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
285
374
  styles: [".float-box-container{position:relative}.float-box-container[data-trigger=click]>.float-box-content[data-opened=no],.float-box-container[data-trigger=hover]:not(:hover)>.float-box-content{display:none}.float-box-container>.float-box-content[data-fixed=no]{padding:8px;--top:0;--left:0;--translate-x:0;--translate-y:0;position:absolute;top:var(--top);left:var(--left);transform:translate(var(--translate-x),var(--translate-y));z-index:10}.float-box-container>.float-box-content[data-fixed=no][data-animation=yes]{-webkit-animation:.25s ease-in-out;animation:.25s ease-in-out}.float-box-container>.float-box-content[data-fixed=no][data-placement=top]{--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-animation=true]{-webkit-animation-name:open-from-top;animation-name:open-from-top}.float-box-container>.float-box-content[data-fixed=no][data-placement=left]{--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=right]{--left:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom]{--top:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=start]{--left:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=center]{--left:50%;--translate-x:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=end]{--left:calc(100% + 8px);--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start]{--top:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center]{--top:50%;--translate-y:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end]{--top:calc(100% + 8px);--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end][data-animation=yes]{-webkit-animation-name:open-from-top;animation-name:open-from-top}@-webkit-keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@-webkit-keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}::ng-deep #kt-float-box-fixed-container{width:0;height:0;z-index:100000}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes]{padding:8px;position:fixed;z-index:10}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes][data-opened=no]{display:none}.float-box-show-content{padding:8px 8px 12px;border-radius:8px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25)}"]
286
375
  }] }
287
376
  ];
@@ -314,6 +403,8 @@ if (false) {
314
403
  /** @type {?} */
315
404
  FloatBoxComponent.prototype._fixed;
316
405
  /** @type {?} */
406
+ FloatBoxComponent.prototype.actualPlacement;
407
+ /** @type {?} */
317
408
  FloatBoxComponent.prototype.openChange;
318
409
  /** @type {?} */
319
410
  FloatBoxComponent.prototype.rootElement;
@@ -335,4 +426,4 @@ if (false) {
335
426
  */
336
427
  FloatBoxComponent.prototype.ref;
337
428
  }
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQXNEQywyQkFBb0IsR0FBc0I7UUFBMUMsaUJBQThDO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBOUN4QixhQUFRLEdBQXNCLE9BQU8sQ0FBQztRQUNwQyxlQUFVLEdBQWlCLElBQUksQ0FBQztRQUNwQyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQXFDdEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFvQi9ELHVCQUFrQixHQUFHLDhCQUE4QixDQUFDO1FBa0dwRCxXQUFNLEdBQWlCLElBQUksQ0FBQztRQVk1QixtQkFBYzs7OztRQUFHLFVBQUMsS0FBaUI7WUFDbEMsSUFDQyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUM7Z0JBQ2pFLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUMsRUFDdkQ7Z0JBQ0QsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekQsS0FBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN4QjtR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cEUsc0NBQXlEOztJQUN6RCxxQ0FBd0Q7O0lBQ3hELHVDQUFvRDs7SUFDcEQsbUNBQTRDOztJQXFDNUMsdUNBQStEOztJQUUvRCx3Q0FDd0M7O0lBQ3hDLDJDQUMyQzs7SUFlM0MsK0NBQW9EOztJQUNwRCw2Q0FBOEI7O0lBaUc5QixtQ0FBNEI7O0lBWTVCLDJDQVVFOztJQWFGLDBDQVVFOzs7OztJQTVKVSxnQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdEFmdGVyVmlld0luaXQsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPdXRwdXQsXHJcblx0Vmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogXCJycy1mbG9hdC1ib3hcIixcclxuXHR0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxvYXRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dChcInBsYWNlbWVudFwiKSBfcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG5cdEBJbnB1dChcInBvc2l0aW9uXCIpIF9wb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCI7XHJcblx0QElucHV0KFwidHJpZ2dlclwiKSBfdHJpZ2dlcjogXCJob3ZlclwiIHwgXCJjbGlja1wiID0gXCJob3ZlclwiO1xyXG5cdEBJbnB1dChcImFuaW1hdGlvblwiKSBfYW5pbWF0aW9uOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG5cdEBJbnB1dChcImZpeGVkXCIpIF9maXhlZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHJcblx0Z2V0IHBsYWNlbWVudCgpIHtcclxuXHRcdGlmIChbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIl0uaW5jbHVkZXModGhpcy5fcGxhY2VtZW50KSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5fcGxhY2VtZW50O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiYm90dG9tXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgcG9zaXRpb24oKSB7XHJcblx0XHRpZiAoW1wic3RhcnRcIiwgXCJjZW50ZXJcIiwgXCJlbmRcIl0uaW5jbHVkZXModGhpcy5fcG9zaXRpb24pKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl9wb3NpdGlvbjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImNlbnRlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRyaWdnZXIoKSB7XHJcblx0XHRpZiAodGhpcy5fdHJpZ2dlciA9PT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybiBcImNsaWNrXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJob3ZlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGFuaW1hdGlvbigpIHtcclxuXHRcdGlmICh0aGlzLl9hbmltYXRpb24gPT09IFwieWVzXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwieWVzXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJub1wiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpeGVkKCkge1xyXG5cdFx0aWYgKHRoaXMuX2ZpeGVkID09PSBcInllc1wiKSB7XHJcblx0XHRcdHJldHVybiBcInllc1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwibm9cIjtcclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoXCJvcGVuQ2hhbmdlXCIpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJlbGVtZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHJvb3RFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHRAVmlld0NoaWxkKFwiY29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0dGhpcy5maXhlZENvbnRhaW5lckVsID0gdGhpcy5nZXRGaXhlZENvbnRhaW5lcigpO1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0dGhpcy5maXhlZENvbnRhaW5lckVsLmFwcGVuZCh0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcblx0fVxyXG5cclxuXHRGSVhFRF9DT05UQUlORVJfSUQgPSBcImt0LWZsb2F0LWJveC1maXhlZC1jb250YWluZXJcIjtcclxuXHRmaXhlZENvbnRhaW5lckVsOiBIVE1MRWxlbWVudDtcclxuXHRnZXRGaXhlZENvbnRhaW5lcigpIHtcclxuXHRcdGxldCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG5cdFx0aWYgKCFjb250YWluZXJFbGVtZW50KSB7XHJcblx0XHRcdGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cdFx0XHRjb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMuRklYRURfQ09OVEFJTkVSX0lEKTtcclxuXHRcdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmQoY29udGFpbmVyRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29udGFpbmVyRWxlbWVudDtcclxuXHR9XHJcblxyXG5cdHNldEZpeGVkQ29udGVudFBvc2l0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwibm9cIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qge1xyXG5cdFx0XHR0b3A6IHksXHJcblx0XHRcdGxlZnQ6IHgsXHJcblx0XHRcdHdpZHRoLFxyXG5cdFx0XHRoZWlnaHQsXHJcblx0XHR9ID0gdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuXHRcdGxldCB0b3AgPSBcIjBcIjtcclxuXHRcdGxldCBsZWZ0ID0gXCIwXCI7XHJcblx0XHRsZXQgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG5cdFx0bGV0IHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuXHRcdHN3aXRjaCAodGhpcy5wbGFjZW1lbnQgKyBcIl9cIiArIHRoaXMucG9zaXRpb24pIHtcclxuXHRcdFx0Y2FzZSBcInRvcF9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJ0b3BfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoIC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInRvcF9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwibGVmdF9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0IC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi01MCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgXCJweFwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJyaWdodF9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImJvdHRvbV9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi01MCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImJvdHRvbV9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHRvcDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7dHJhbnNsYXRlWH0sICR7dHJhbnNsYXRlWX0pYDtcclxuXHR9XHJcblxyXG5cdG9wZW5lZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHRvbkNsaWNrQ29udGFpbmVyKCkge1xyXG5cdFx0aWYgKHRoaXMudHJpZ2dlciAhPT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHRcdHRoaXMuc2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0fVxyXG5cclxuXHRvbkNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5maXhlZENvbnRhaW5lckVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdG9uTW91c2VFbnRlcigpIHtcclxuXHRcdGlmICh0aGlzLmZpeGVkID09PSBcIm5vXCIgfHwgdGhpcy50cmlnZ2VyICE9PSBcImhvdmVyXCIpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMub3BlbmVkID0gXCJ5ZXNcIjtcclxuXHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xyXG5cdFx0dGhpcy5zZXRGaXhlZENvbnRlbnRQb3NpdGlvbigpO1xyXG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbk1vdmVPdXRzaWRlKTtcclxuXHR9XHJcblxyXG5cdG9uTW92ZU91dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25Nb3ZlT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdGNsb3NlKCkge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHR9LCAwKTtcclxuXHR9XHJcbn1cclxuIl19
429
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQXlEQywyQkFBb0IsR0FBc0I7UUFBMUMsaUJBQThDO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakR4QixhQUFRLEdBQXNCLE9BQU8sQ0FBQztRQUNwQyxlQUFVLEdBQWlCLElBQUksQ0FBQztRQUNwQyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQXdDdEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFvQi9ELHVCQUFrQixHQUFHLDhCQUE4QixDQUFDO1FBOEtwRCxXQUFNLEdBQWlCLElBQUksQ0FBQztRQVk1QixtQkFBYzs7OztRQUFHLFVBQUMsS0FBaUI7WUFDbEMsSUFDQyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUM7Z0JBQ2pFLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUMsRUFDdkQ7Z0JBQ0QsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekQsS0FBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN4QjtR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dXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRDb21wb25lbnQsXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25EZXN0cm95LFxyXG5cdE91dHB1dCxcclxuXHRWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInJzLWZsb2F0LWJveFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuXHRzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbG9hdEJveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblx0QElucHV0KFwicGxhY2VtZW50XCIpIF9wbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCI7XHJcblx0QElucHV0KFwicG9zaXRpb25cIikgX3Bvc2l0aW9uOiBcInN0YXJ0XCIgfCBcImNlbnRlclwiIHwgXCJlbmRcIjtcclxuXHRASW5wdXQoXCJ0cmlnZ2VyXCIpIF90cmlnZ2VyOiBcImhvdmVyXCIgfCBcImNsaWNrXCIgPSBcImhvdmVyXCI7XHJcblx0QElucHV0KFwiYW5pbWF0aW9uXCIpIF9hbmltYXRpb246IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblx0QElucHV0KFwiZml4ZWRcIikgX2ZpeGVkOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG5cclxuXHRnZXQgcGxhY2VtZW50KCkge1xyXG5cdFx0aWYgKFtcInRvcFwiLCBcImxlZnRcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiXS5pbmNsdWRlcyh0aGlzLl9wbGFjZW1lbnQpKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl9wbGFjZW1lbnQ7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJib3R0b21cIjtcclxuXHR9XHJcblxyXG5cdGdldCBwb3NpdGlvbigpIHtcclxuXHRcdGlmIChbXCJzdGFydFwiLCBcImNlbnRlclwiLCBcImVuZFwiXS5pbmNsdWRlcyh0aGlzLl9wb3NpdGlvbikpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiY2VudGVyXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgdHJpZ2dlcigpIHtcclxuXHRcdGlmICh0aGlzLl90cmlnZ2VyID09PSBcImNsaWNrXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwiY2xpY2tcIjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImhvdmVyXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgYW5pbWF0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuX2FuaW1hdGlvbiA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHRyZXR1cm4gXCJ5ZXNcIjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcIm5vXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgZml4ZWQoKSB7XHJcblx0XHRpZiAodGhpcy5fZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwieWVzXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJub1wiO1xyXG5cdH1cclxuXHJcblx0Ly8g5a6e6ZmF5L2/55So55qEIHBsYWNlbWVudO+8iOWPr+iDvee7j+i/h+iHquWKqOiwg+aVtO+8iVxyXG5cdGFjdHVhbFBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIjtcclxuXHJcblx0QE91dHB1dChcIm9wZW5DaGFuZ2VcIikgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImVsZW1lbnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cm9vdEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cdEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdGNvbnRlbnRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XHJcblx0XHR0aGlzLmZpeGVkQ29udGFpbmVyRWwgPSB0aGlzLmdldEZpeGVkQ29udGFpbmVyKCk7XHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHR0aGlzLmZpeGVkQ29udGFpbmVyRWwuYXBwZW5kKHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcclxuXHR9XHJcblxyXG5cdEZJWEVEX0NPTlRBSU5FUl9JRCA9IFwia3QtZmxvYXQtYm94LWZpeGVkLWNvbnRhaW5lclwiO1xyXG5cdGZpeGVkQ29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xyXG5cdGdldEZpeGVkQ29udGFpbmVyKCkge1xyXG5cdFx0bGV0IGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLkZJWEVEX0NPTlRBSU5FUl9JRCk7XHJcblx0XHRpZiAoIWNvbnRhaW5lckVsZW1lbnQpIHtcclxuXHRcdFx0Y29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcblx0XHRcdGNvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKFwiaWRcIiwgdGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXJFbGVtZW50KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBjb250YWluZXJFbGVtZW50O1xyXG5cdH1cclxuXHJcblx0c2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKSB7XHJcblx0XHRjb25zdCB7XHJcblx0XHRcdHRvcDogeSxcclxuXHRcdFx0bGVmdDogeCxcclxuXHRcdFx0d2lkdGgsXHJcblx0XHRcdGhlaWdodCxcclxuXHRcdH0gPSB0aGlzLnJvb3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG5cdFx0Ly8g5Li05pe25pi+56S65YaF5a655Lul6I635Y+W5bC65a+4XHJcblx0XHRjb25zdCB3YXNWaXNpYmxlID0gdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgIT09IFwibm9uZVwiO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XHJcblx0XHRjb25zdCBjb250ZW50UmVjdCA9IHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdGNvbnN0IGNvbnRlbnRXaWR0aCA9IGNvbnRlbnRSZWN0LndpZHRoO1xyXG5cdFx0Y29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodDtcclxuXHJcblx0XHQvLyDojrflj5bop4blj6PlsLrlr7hcclxuXHRcdGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuXHRcdGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG5cdFx0Y29uc3QgU0FGRV9NQVJHSU4gPSAxMjtcclxuXHJcblx0XHQvLyDovrnnlYzmo4DmtYvvvJrorqHnrpfmnIDkvbMgcGxhY2VtZW50XHJcblx0XHRsZXQgZmluYWxQbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcclxuXHRcdGlmICh0aGlzLnBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB5IDwgY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh2aWV3cG9ydEhlaWdodCAtICh5ICsgaGVpZ2h0KSA+PSBjb250ZW50SGVpZ2h0ICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0XHRmaW5hbFBsYWNlbWVudCA9IFwiYm90dG9tXCI7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodGhpcy5wbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYgdmlld3BvcnRIZWlnaHQgLSAoeSArIGhlaWdodCkgPCBjb250ZW50SGVpZ2h0ICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHkgPj0gY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0ZmluYWxQbGFjZW1lbnQgPSBcInRvcFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09PSBcImxlZnRcIiAmJiB4IDwgY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHZpZXdwb3J0V2lkdGggLSAoeCArIHdpZHRoKSA+PSBjb250ZW50V2lkdGggKyBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGZpbmFsUGxhY2VtZW50ID0gXCJyaWdodFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09PSBcInJpZ2h0XCIgJiYgdmlld3BvcnRXaWR0aCAtICh4ICsgd2lkdGgpIDwgY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHggPj0gY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0XHRmaW5hbFBsYWNlbWVudCA9IFwibGVmdFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5L+d5a2Y6LCD5pW05ZCO55qEIHBsYWNlbWVudFxyXG5cdFx0dGhpcy5hY3R1YWxQbGFjZW1lbnQgPSBmaW5hbFBsYWNlbWVudDtcclxuXHJcblx0XHQvLyDlr7nkuo4gZml4ZWQ9XCJub1wiIOeahOaDheWGte+8jOWPquabtOaWsCBkYXRhLXBsYWNlbWVudO+8jOiuqSBDU1Mg5aSE55CGXHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJub1wiKSB7XHJcblx0XHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcclxuXHRcdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSB3YXNWaXNpYmxlID8gXCJcIiA6IFwibm9uZVwiO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5a+55LqOIGZpeGVkPVwieWVzXCIg55qE5oOF5Ya177yM6K6h566X5YW35L2T5L2N572uXHJcblx0XHRsZXQgdG9wID0gXCIwXCI7XHJcblx0XHRsZXQgbGVmdCA9IFwiMFwiO1xyXG5cdFx0bGV0IHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdGxldCB0cmFuc2xhdGVZID0gXCIwXCI7XHJcblx0XHRzd2l0Y2ggKGZpbmFsUGxhY2VtZW50ICsgXCJfXCIgKyB0aGlzLnBvc2l0aW9uKSB7XHJcblx0XHRcdGNhc2UgXCJ0b3Bfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwidG9wX2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJ0b3BfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoIC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIOiuoeeul+WunumZhea4suafk+S9jee9ru+8iOiAg+iZkSB0cmFuc2Zvcm3vvInov5vooYzovrnnlYzosIPmlbRcclxuXHRcdGxldCBhY3R1YWxMZWZ0ID0gcGFyc2VGbG9hdChsZWZ0KSB8fCAwO1xyXG5cdFx0bGV0IGFjdHVhbFRvcCA9IHBhcnNlRmxvYXQodG9wKSB8fCAwO1xyXG5cdFx0aWYgKHRyYW5zbGF0ZVggPT09IFwiLTUwJVwiKSB7XHJcblx0XHRcdGFjdHVhbExlZnQgPSBhY3R1YWxMZWZ0IC0gY29udGVudFdpZHRoIC8gMjtcclxuXHRcdH0gZWxzZSBpZiAodHJhbnNsYXRlWCA9PT0gXCItMTAwJVwiKSB7XHJcblx0XHRcdGFjdHVhbExlZnQgPSBhY3R1YWxMZWZ0IC0gY29udGVudFdpZHRoO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRyYW5zbGF0ZVkgPT09IFwiLTUwJVwiKSB7XHJcblx0XHRcdGFjdHVhbFRvcCA9IGFjdHVhbFRvcCAtIGNvbnRlbnRIZWlnaHQgLyAyO1xyXG5cdFx0fSBlbHNlIGlmICh0cmFuc2xhdGVZID09PSBcIi0xMDAlXCIpIHtcclxuXHRcdFx0YWN0dWFsVG9wID0gYWN0dWFsVG9wIC0gY29udGVudEhlaWdodDtcclxuXHRcdH1cclxuXHJcblx0XHQvLyDmsLTlubPovrnnlYzosIPmlbRcclxuXHRcdGlmIChmaW5hbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiB8fCBmaW5hbFBsYWNlbWVudCA9PT0gXCJib3R0b21cIikge1xyXG5cdFx0XHRpZiAoYWN0dWFsTGVmdCA8IFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0bGVmdCA9ICh4ICsgU0FGRV9NQVJHSU4pICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdFx0fSBlbHNlIGlmIChhY3R1YWxMZWZ0ICsgY29udGVudFdpZHRoID4gdmlld3BvcnRXaWR0aCAtIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0bGVmdCA9ICh2aWV3cG9ydFdpZHRoIC0gY29udGVudFdpZHRoIC0gU0FGRV9NQVJHSU4pICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly8g5Z6C55u06L6555WM6LCD5pW0XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0aWYgKGFjdHVhbFRvcCA8IFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0dG9wID0gKHkgKyBTQUZFX01BUkdJTikgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiMFwiO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGFjdHVhbFRvcCArIGNvbnRlbnRIZWlnaHQgPiB2aWV3cG9ydEhlaWdodCAtIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0dG9wID0gKHZpZXdwb3J0SGVpZ2h0IC0gY29udGVudEhlaWdodCAtIFNBRkVfTUFSR0lOKSArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCIwXCI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gdG9wO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0O1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHt0cmFuc2xhdGVYfSwgJHt0cmFuc2xhdGVZfSlgO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcInZpc2libGVcIjtcclxuXHR9XHJcblxyXG5cdG9wZW5lZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHRvbkNsaWNrQ29udGFpbmVyKCkge1xyXG5cdFx0aWYgKHRoaXMudHJpZ2dlciAhPT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHRcdHRoaXMuc2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0fVxyXG5cclxuXHRvbkNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5maXhlZENvbnRhaW5lckVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdG9uTW91c2VFbnRlcigpIHtcclxuXHRcdGlmICh0aGlzLnRyaWdnZXIgIT09IFwiaG92ZXJcIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5vcGVuZWQgPSBcInllc1wiO1xyXG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblx0XHR0aGlzLnNldEZpeGVkQ29udGVudFBvc2l0aW9uKCk7XHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uTW92ZU91dHNpZGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25Nb3ZlT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbk1vdmVPdXRzaWRlKTtcclxuXHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Y2xvc2UoKSB7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5vcGVuZWQgPSBcIm5vXCI7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHR0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcclxuXHRcdH0sIDApO1xyXG5cdH1cclxufVxyXG4iXX0=