@hmcts/media-viewer 4.1.9-exui-1580 → 4.1.9-exui-1580-1

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.
@@ -206,4 +206,4 @@ mv-pdf-viewer {
206
206
  .splitToolbarButton.left {
207
207
  float: left;
208
208
  }
209
- }
209
+ }
@@ -4,8 +4,6 @@ export class KeyboardTextHighlightDirective {
4
4
  set enabled(value) {
5
5
  const wasEnabled = this._enabled;
6
6
  this._enabled = value;
7
- // Don't auto-initialize cursor - let it appear on first arrow key press
8
- // This prevents the Enter key from the button click triggering startTextSelection
9
7
  }
10
8
  get enabled() {
11
9
  return this._enabled;
@@ -86,7 +84,6 @@ export class KeyboardTextHighlightDirective {
86
84
  moveCursor(event) {
87
85
  const increment = event.shiftKey ? this.incrementLarge : this.incrementMedium;
88
86
  if (!this.showCursor) {
89
- // we use window dimensions because we're using fixed positioning
90
87
  const viewportWidth = window.innerWidth;
91
88
  const viewportHeight = window.innerHeight;
92
89
  this.cursorX = viewportWidth / 2;
@@ -197,9 +194,6 @@ export class KeyboardTextHighlightDirective {
197
194
  const range = selection.getRangeAt(0);
198
195
  const startNode = range.startContainer;
199
196
  const startOffset = range.startOffset;
200
- // get end position using caret APIs
201
- // caretPositionFromPoint is standard but not supported in all browsers
202
- // caretRangeFromPoint is older and supported in more browsers
203
197
  let endNode = null;
204
198
  let endOffset = 0;
205
199
  if (document.caretPositionFromPoint) {
@@ -237,9 +231,6 @@ export class KeyboardTextHighlightDirective {
237
231
  this.lastValidEndNode = endNode;
238
232
  this.lastValidEndOffset = endOffset;
239
233
  }
240
- // use setBaseAndExtent to handle selection direction with precise offsets
241
- // to ensure the selection always starts from the original start point
242
- // and extends to the exact character position at the cursor
243
234
  selection.setBaseAndExtent(startNode, startOffset, endNode, endOffset);
244
235
  }
245
236
  }
@@ -351,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
351
342
  type: HostListener,
352
343
  args: ['blur']
353
344
  }] } });
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtdGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi1jcmVhdGUvaGlnaGxpZ2h0LWNyZWF0ZS9rZXlib2FyZC10ZXh0LWhpZ2hsaWdodC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBbUI1RyxNQUFNLE9BQU8sOEJBQThCO0lBRXpDLElBQWEsT0FBTyxDQUFDLEtBQWM7UUFDakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUV0Qix3RUFBd0U7UUFDeEUsa0ZBQWtGO0lBQ3BGLENBQUM7SUFDRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzthQXlCYywrQkFBMEIsR0FBRyxLQUFLLEFBQVIsQ0FBUztJQUVsRCxZQUFvQixVQUFtQztRQUFuQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQTFCL0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUVuQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzVDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO1FBQ2xFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVEs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QyxhQUFhO1lBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTtTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7a0lBeFhVLDhCQUE4QjtzSEFBOUIsOEJBQThCOzs0RkFBOUIsOEJBQThCO2tCQUgxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7aUJBQ3RDOytFQUdjLE9BQU87c0JBQW5CLEtBQUs7Z0JBWUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBbUNQLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkNuQyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleWJvYXJkVGV4dEhpZ2hsaWdodEV2ZW50IHtcbiAgcGFnZTogbnVtYmVyO1xuICBzdGFydFg6IG51bWJlcjtcbiAgc3RhcnRZOiBudW1iZXI7XG4gIGVuZFg6IG51bWJlcjtcbiAgZW5kWTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnNvclBvc2l0aW9uIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHZpc2libGU6IGJvb2xlYW47XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttdktleWJvYXJkVGV4dEhpZ2hsaWdodF0nXG59KVxuZXhwb3J0IGNsYXNzIEtleWJvYXJkVGV4dEhpZ2hsaWdodERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgc2V0IGVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB3YXNFbmFibGVkID0gdGhpcy5fZW5hYmxlZDtcbiAgICB0aGlzLl9lbmFibGVkID0gdmFsdWU7XG5cbiAgICAvLyBEb24ndCBhdXRvLWluaXRpYWxpemUgY3Vyc29yIC0gbGV0IGl0IGFwcGVhciBvbiBmaXJzdCBhcnJvdyBrZXkgcHJlc3NcbiAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSBFbnRlciBrZXkgZnJvbSB0aGUgYnV0dG9uIGNsaWNrIHRyaWdnZXJpbmcgc3RhcnRUZXh0U2VsZWN0aW9uXG4gIH1cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGluY3JlbWVudFNtYWxsID0gNTtcbiAgQElucHV0KCkgaW5jcmVtZW50TWVkaXVtID0gMTA7XG4gIEBJbnB1dCgpIGluY3JlbWVudExhcmdlID0gMjA7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvblN0YXJ0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25VcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZFRleHRIaWdobGlnaHRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNvbmZpcm1lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGN1cnNvclBvc2l0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3Vyc29yUG9zaXRpb24+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DdXJzb3JQb3NpdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1cnNvclBvc2l0aW9uPigpO1xuXG4gIHByaXZhdGUgaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjdXJzb3JYOiBudW1iZXI7XG4gIHByaXZhdGUgY3Vyc29yWTogbnVtYmVyO1xuICBwcml2YXRlIHNob3dDdXJzb3IgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25TdGFydFg6IG51bWJlcjtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25TdGFydFk6IG51bWJlcjtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25FbmRYOiBudW1iZXI7XG4gIHByaXZhdGUgc2VsZWN0aW9uRW5kWTogbnVtYmVyO1xuICBwcml2YXRlIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHByaXZhdGUgbGFzdFZhbGlkRW5kTm9kZTogTm9kZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RWYWxpZEVuZE9mZnNldDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBzdGF0aWMgbGFzdEludGVyYWN0aW9uV2FzS2V5Ym9hcmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIEtleWJvYXJkVGV4dEhpZ2hsaWdodERpcmVjdGl2ZS5vbkdsb2JhbEtleURvd24sIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBLZXlib2FyZFRleHRIaWdobGlnaHREaXJlY3RpdmUub25HbG9iYWxNb3VzZURvd24sIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvbkdsb2JhbEtleURvd24oKTogdm9pZCB7XG4gICAgS2V5Ym9hcmRUZXh0SGlnaGxpZ2h0RGlyZWN0aXZlLmxhc3RJbnRlcmFjdGlvbldhc0tleWJvYXJkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9uR2xvYmFsTW91c2VEb3duKCk6IHZvaWQge1xuICAgIEtleWJvYXJkVGV4dEhpZ2hsaWdodERpcmVjdGl2ZS5sYXN0SW50ZXJhY3Rpb25XYXNLZXlib2FyZCA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIGlmICghdGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICB0aGlzLnN0YXJ0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maXJtVGV4dFNlbGVjdGlvbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuY2FuY2VsVGV4dFNlbGVjdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dDdXJzb3IpIHtcbiAgICAgICAgdGhpcy5oaWRlQ3Vyc29yKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFsnQXJyb3dVcCcsICdBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kVGV4dFNlbGVjdGlvbihldmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vdmVDdXJzb3IoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd0N1cnNvciAmJiAhdGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgdGhpcy5oaWRlQ3Vyc29yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5jcmVtZW50ID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmluY3JlbWVudExhcmdlIDogdGhpcy5pbmNyZW1lbnRNZWRpdW07XG5cbiAgICBpZiAoIXRoaXMuc2hvd0N1cnNvcikge1xuICAgICAgLy8gd2UgdXNlIHdpbmRvdyBkaW1lbnNpb25zIGJlY2F1c2Ugd2UncmUgdXNpbmcgZml4ZWQgcG9zaXRpb25pbmdcbiAgICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgICB0aGlzLmN1cnNvclggPSB2aWV3cG9ydFdpZHRoIC8gMjtcbiAgICAgIHRoaXMuY3Vyc29yWSA9IHZpZXdwb3J0SGVpZ2h0IC8gMjtcbiAgICAgIHRoaXMuc2hvd0N1cnNvciA9IHRydWU7XG5cbiAgICAgIHRoaXMuZW1pdEN1cnNvclBvc2l0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLmN1cnNvclkgPSBNYXRoLm1heCgwLCB0aGlzLmN1cnNvclkgLSBpbmNyZW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMuY3Vyc29yWSA9IE1hdGgubWluKHZpZXdwb3J0SGVpZ2h0LCB0aGlzLmN1cnNvclkgKyBpbmNyZW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIHRoaXMuY3Vyc29yWCA9IE1hdGgubWF4KDAsIHRoaXMuY3Vyc29yWCAtIGluY3JlbWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHRoaXMuY3Vyc29yWCA9IE1hdGgubWluKHZpZXdwb3J0V2lkdGgsIHRoaXMuY3Vyc29yWCArIGluY3JlbWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdEN1cnNvclBvc2l0aW9uKCk7XG4gIH1cblxuICAgIHByaXZhdGUgc3RhcnRUZXh0U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dDdXJzb3IpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRYID0gdGhpcy5jdXJzb3JYO1xuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydFkgPSB0aGlzLmN1cnNvclk7XG4gICAgICB0aGlzLnNlbGVjdGlvbkVuZFggPSB0aGlzLmN1cnNvclg7XG4gICAgICB0aGlzLnNlbGVjdGlvbkVuZFkgPSB0aGlzLmN1cnNvclk7XG4gICAgICB0aGlzLnNob3dDdXJzb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuZW1pdEN1cnNvclBvc2l0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRlZmF1bHQgdG8gY2VudGVyXG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0WCA9IHdpbmRvdy5pbm5lcldpZHRoIC8gMjtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRZID0gd2luZG93LmlubmVySGVpZ2h0IC8gMjtcbiAgICAgIHRoaXMuc2VsZWN0aW9uRW5kWCA9IHRoaXMuc2VsZWN0aW9uU3RhcnRYO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmRZID0gdGhpcy5zZWxlY3Rpb25TdGFydFk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKTtcbiAgICB0aGlzLmxhc3RWYWxpZEVuZE5vZGUgPSBudWxsO1xuICAgIHRoaXMubGFzdFZhbGlkRW5kT2Zmc2V0ID0gMDtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ3Vyc29yUG9zaXRpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgeDogdGhpcy5zZWxlY3Rpb25FbmRYLFxuICAgICAgeTogdGhpcy5zZWxlY3Rpb25FbmRZLFxuICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5jcmVhdGVUZXh0U2VsZWN0aW9uQXRQb2ludCh0aGlzLnNlbGVjdGlvblN0YXJ0WCwgdGhpcy5zZWxlY3Rpb25TdGFydFkpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhwYW5kVGV4dFNlbGVjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGluY3JlbWVudCA9IGV2ZW50LnNoaWZ0S2V5ID8gdGhpcy5pbmNyZW1lbnRMYXJnZSA6IHRoaXMuaW5jcmVtZW50U21hbGw7XG5cbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kWCA9IE1hdGgubWluKHZpZXdwb3J0V2lkdGgsIHRoaXMuc2VsZWN0aW9uRW5kWCArIGluY3JlbWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRYID0gTWF0aC5tYXgoMCwgdGhpcy5zZWxlY3Rpb25FbmRYIC0gaW5jcmVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZFkgPSBNYXRoLm1pbih2aWV3cG9ydEhlaWdodCwgdGhpcy5zZWxlY3Rpb25FbmRZICsgaW5jcmVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRZID0gTWF0aC5tYXgoMCwgdGhpcy5zZWxlY3Rpb25FbmRZIC0gaW5jcmVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25DdXJzb3JQb3NpdGlvbkNoYW5nZWQuZW1pdCh7XG4gICAgICB4OiB0aGlzLnNlbGVjdGlvbkVuZFgsXG4gICAgICB5OiB0aGlzLnNlbGVjdGlvbkVuZFksXG4gICAgICB2aXNpYmxlOiB0cnVlXG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZVRleHRTZWxlY3Rpb24oKTtcblxuICAgIHRoaXMuZW1pdFNlbGVjdGlvblVwZGF0ZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGV4dFNlbGVjdGlvbkF0UG9pbnQodmlld3BvcnRYOiBudW1iZXIsIHZpZXdwb3J0WTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgLy8gZ2V0IHByZWNpc2UgY2FyZXQgcG9zaXRpb24gYXQgdGhlIGNvb3JkaW5hdGVzXG4gICAgLy8gY2FyZXRQb3NpdGlvbkZyb21Qb2ludCBpcyBzdGFuZGFyZCBidXQgbm90IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnNcbiAgICAvLyBjYXJldFJhbmdlRnJvbVBvaW50IGlzIG9sZGVyIGFuZCBzdXBwb3J0ZWQgaW4gbW9yZSBicm93c2Vyc1xuICAgIGxldCByYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcblxuICAgIGlmICgoZG9jdW1lbnQgYXMgYW55KS5jYXJldFBvc2l0aW9uRnJvbVBvaW50KSB7XG4gICAgICBjb25zdCBjYXJldFBvc2l0aW9uID0gKGRvY3VtZW50IGFzIGFueSkuY2FyZXRQb3NpdGlvbkZyb21Qb2ludCh2aWV3cG9ydFgsIHZpZXdwb3J0WSk7XG4gICAgICBpZiAoY2FyZXRQb3NpdGlvbikge1xuICAgICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KGNhcmV0UG9zaXRpb24ub2Zmc2V0Tm9kZSwgY2FyZXRQb3NpdGlvbi5vZmZzZXQpO1xuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLmNhcmV0UmFuZ2VGcm9tUG9pbnQpIHtcbiAgICAgIHJhbmdlID0gKGRvY3VtZW50IGFzIGFueSkuY2FyZXRSYW5nZUZyb21Qb2ludCh2aWV3cG9ydFgsIHZpZXdwb3J0WSk7XG4gICAgfVxuXG4gICAgaWYgKHJhbmdlKSB7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGV4dFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyO1xuICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQ7XG5cbiAgICAvLyBnZXQgZW5kIHBvc2l0aW9uIHVzaW5nIGNhcmV0IEFQSXNcbiAgICAvLyBjYXJldFBvc2l0aW9uRnJvbVBvaW50IGlzIHN0YW5kYXJkIGJ1dCBub3Qgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vyc1xuICAgIC8vIGNhcmV0UmFuZ2VGcm9tUG9pbnQgaXMgb2xkZXIgYW5kIHN1cHBvcnRlZCBpbiBtb3JlIGJyb3dzZXJzXG4gICAgbGV0IGVuZE5vZGU6IE5vZGUgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgZW5kT2Zmc2V0ID0gMDtcblxuICAgIGlmICgoZG9jdW1lbnQgYXMgYW55KS5jYXJldFBvc2l0aW9uRnJvbVBvaW50KSB7XG4gICAgICBjb25zdCBjYXJldFBvc2l0aW9uID0gKGRvY3VtZW50IGFzIGFueSkuY2FyZXRQb3NpdGlvbkZyb21Qb2ludCh0aGlzLnNlbGVjdGlvbkVuZFgsIHRoaXMuc2VsZWN0aW9uRW5kWSk7XG4gICAgICBpZiAoY2FyZXRQb3NpdGlvbikge1xuICAgICAgICBlbmROb2RlID0gY2FyZXRQb3NpdGlvbi5vZmZzZXROb2RlO1xuICAgICAgICBlbmRPZmZzZXQgPSBjYXJldFBvc2l0aW9uLm9mZnNldDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLmNhcmV0UmFuZ2VGcm9tUG9pbnQpIHtcbiAgICAgIGNvbnN0IGNhcmV0UmFuZ2UgPSAoZG9jdW1lbnQgYXMgYW55KS5jYXJldFJhbmdlRnJvbVBvaW50KHRoaXMuc2VsZWN0aW9uRW5kWCwgdGhpcy5zZWxlY3Rpb25FbmRZKTtcbiAgICAgIGlmIChjYXJldFJhbmdlKSB7XG4gICAgICAgIGVuZE5vZGUgPSBjYXJldFJhbmdlLnN0YXJ0Q29udGFpbmVyO1xuICAgICAgICBlbmRPZmZzZXQgPSBjYXJldFJhbmdlLnN0YXJ0T2Zmc2V0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmROb2RlKSB7XG4gICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICByYW5nZS5zZXRTdGFydChzdGFydE5vZGUsIHN0YXJ0T2Zmc2V0KTtcbiAgICAgIHJhbmdlLnNldEVuZChlbmROb2RlLCBlbmRPZmZzZXQpO1xuXG4gICAgICBjb25zdCBpc0JhY2t3YXJkID0gcmFuZ2UuY29sbGFwc2VkICYmIChzdGFydE5vZGUgIT09IGVuZE5vZGUgfHwgZW5kT2Zmc2V0IDwgc3RhcnRPZmZzZXQpO1xuICAgICAgY29uc3QgY29tcGFyaXNvbiA9IHN0YXJ0Tm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlbmROb2RlKTtcbiAgICAgIGNvbnN0IGVuZEJlZm9yZVN0YXJ0ID0gKGNvbXBhcmlzb24gJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORykgIT09IDA7XG5cbiAgICAgIGlmIChpc0JhY2t3YXJkIHx8IGVuZEJlZm9yZVN0YXJ0KSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3RWYWxpZEVuZE5vZGUpIHtcbiAgICAgICAgICBlbmROb2RlID0gdGhpcy5sYXN0VmFsaWRFbmROb2RlO1xuICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMubGFzdFZhbGlkRW5kT2Zmc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZE5vZGUgPSBzdGFydE5vZGU7XG4gICAgICAgICAgZW5kT2Zmc2V0ID0gc3RhcnRPZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFzdFZhbGlkRW5kTm9kZSA9IGVuZE5vZGU7XG4gICAgICAgIHRoaXMubGFzdFZhbGlkRW5kT2Zmc2V0ID0gZW5kT2Zmc2V0O1xuICAgICAgfVxuXG4gICAgICAvLyB1c2Ugc2V0QmFzZUFuZEV4dGVudCB0byBoYW5kbGUgc2VsZWN0aW9uIGRpcmVjdGlvbiB3aXRoIHByZWNpc2Ugb2Zmc2V0c1xuICAgICAgLy8gdG8gZW5zdXJlIHRoZSBzZWxlY3Rpb24gYWx3YXlzIHN0YXJ0cyBmcm9tIHRoZSBvcmlnaW5hbCBzdGFydCBwb2ludFxuICAgICAgLy8gYW5kIGV4dGVuZHMgdG8gdGhlIGV4YWN0IGNoYXJhY3RlciBwb3NpdGlvbiBhdCB0aGUgY3Vyc29yXG4gICAgICBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChcbiAgICAgICAgc3RhcnROb2RlLFxuICAgICAgICBzdGFydE9mZnNldCxcbiAgICAgICAgZW5kTm9kZSxcbiAgICAgICAgZW5kT2Zmc2V0XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlybVRleHRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25Db25maXJtZWQuZW1pdCgpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ3Vyc29yUG9zaXRpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgeDogdGhpcy5zZWxlY3Rpb25FbmRYLFxuICAgICAgeTogdGhpcy5zZWxlY3Rpb25FbmRZLFxuICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsVGV4dFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uQ2FuY2VsbGVkLmVtaXQoKTtcbiAgICB0aGlzLnNlbGVjdGlvbkN1cnNvclBvc2l0aW9uQ2hhbmdlZC5lbWl0KHtcbiAgICAgIHg6IHRoaXMuc2VsZWN0aW9uRW5kWCxcbiAgICAgIHk6IHRoaXMuc2VsZWN0aW9uRW5kWSxcbiAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5jbGVhbnVwKCk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVDdXJzb3IoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q3Vyc29yID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0Q3Vyc29yUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q3Vyc29yID0gZmFsc2U7XG4gICAgdGhpcy5jdXJzb3JYID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3Vyc29yWSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGlvblN0YXJ0WCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGlvblN0YXJ0WSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZFggPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3Rpb25FbmRZID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXN0VmFsaWRFbmROb2RlID0gbnVsbDtcbiAgICB0aGlzLmxhc3RWYWxpZEVuZE9mZnNldCA9IDA7XG4gIH1cblxuICBwcml2YXRlIGdldEN1cnJlbnRQYWdlTnVtYmVyKCk6IG51bWJlciB7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmIGN1cnJlbnRFbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoY3VycmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKSB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBwYXJzZUludChjdXJyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGFnZS1udW1iZXInKSwgMTApO1xuICAgICAgICBpZiAocGFnZSkge1xuICAgICAgICAgIHJldHVybiBwYWdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q3Vyc29yUG9zaXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICB4OiB0aGlzLmN1cnNvclgsXG4gICAgICB5OiB0aGlzLmN1cnNvclksXG4gICAgICB2aXNpYmxlOiB0aGlzLnNob3dDdXJzb3JcbiAgICB9O1xuICAgIHRoaXMuY3Vyc29yUG9zaXRpb25DaGFuZ2VkLmVtaXQocG9zaXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uVXBkYXRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvblVwZGF0ZWQuZW1pdCh7XG4gICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgc3RhcnRYOiB0aGlzLnNlbGVjdGlvblN0YXJ0WCxcbiAgICAgIHN0YXJ0WTogdGhpcy5zZWxlY3Rpb25TdGFydFksXG4gICAgICBlbmRYOiB0aGlzLnNlbGVjdGlvbkVuZFgsXG4gICAgICBlbmRZOiB0aGlzLnNlbGVjdGlvbkVuZFlcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgICB0aGlzLmVtaXRDdXJzb3JQb3NpdGlvbigpO1xuICB9XG59Il19
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtdGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi1jcmVhdGUvaGlnaGxpZ2h0LWNyZWF0ZS9rZXlib2FyZC10ZXh0LWhpZ2hsaWdodC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBbUI1RyxNQUFNLE9BQU8sOEJBQThCO0lBRXpDLElBQWEsT0FBTyxDQUFDLEtBQWM7UUFDakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7YUF5QmMsK0JBQTBCLEdBQUcsS0FBSyxBQUFSLENBQVM7SUFFbEQsWUFBb0IsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUExQi9DLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFaEIsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFbkIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM1QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUNsRSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzlDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMsMEJBQXFCLEdBQUcsSUFB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QyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7a0lBOVdVLDhCQUE4QjtzSEFBOUIsOEJBQThCOzs0RkFBOUIsOEJBQThCO2tCQUgxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7aUJBQ3RDOytFQUdjLE9BQU87c0JBQW5CLEtBQUs7Z0JBU0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBbUNQLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkNuQyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleWJvYXJkVGV4dEhpZ2hsaWdodEV2ZW50IHtcbiAgcGFnZTogbnVtYmVyO1xuICBzdGFydFg6IG51bWJlcjtcbiAgc3RhcnRZOiBudW1iZXI7XG4gIGVuZFg6IG51bWJlcjtcbiAgZW5kWTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnNvclBvc2l0aW9uIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHZpc2libGU6IGJvb2xlYW47XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttdktleWJvYXJkVGV4dEhpZ2hsaWdodF0nXG59KVxuZXhwb3J0IGNsYXNzIEtleWJvYXJkVGV4dEhpZ2hsaWdodERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgc2V0IGVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB3YXNFbmFibGVkID0gdGhpcy5fZW5hYmxlZDtcbiAgICB0aGlzLl9lbmFibGVkID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGluY3JlbWVudFNtYWxsID0gNTtcbiAgQElucHV0KCkgaW5jcmVtZW50TWVkaXVtID0gMTA7XG4gIEBJbnB1dCgpIGluY3JlbWVudExhcmdlID0gMjA7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvblN0YXJ0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25VcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZFRleHRIaWdobGlnaHRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNvbmZpcm1lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGN1cnNvclBvc2l0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3Vyc29yUG9zaXRpb24+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DdXJzb3JQb3NpdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1cnNvclBvc2l0aW9uPigpO1xuXG4gIHByaXZhdGUgaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjdXJzb3JYOiBudW1iZXI7XG4gIHByaXZhdGUgY3Vyc29yWTogbnVtYmVyO1xuICBwcml2YXRlIHNob3dDdXJzb3IgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25TdGFydFg6IG51bWJlcjtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25TdGFydFk6IG51bWJlcjtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25FbmRYOiBudW1iZXI7XG4gIHByaXZhdGUgc2VsZWN0aW9uRW5kWTogbnVtYmVyO1xuICBwcml2YXRlIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHByaXZhdGUgbGFzdFZhbGlkRW5kTm9kZTogTm9kZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RWYWxpZEVuZE9mZnNldDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBzdGF0aWMgbGFzdEludGVyYWN0aW9uV2FzS2V5Ym9hcmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIEtleWJvYXJkVGV4dEhpZ2hsaWdodERpcmVjdGl2ZS5vbkdsb2JhbEtleURvd24sIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBLZXlib2FyZFRleHRIaWdobGlnaHREaXJlY3RpdmUub25HbG9iYWxNb3VzZURvd24sIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvbkdsb2JhbEtleURvd24oKTogdm9pZCB7XG4gICAgS2V5Ym9hcmRUZXh0SGlnaGxpZ2h0RGlyZWN0aXZlLmxhc3RJbnRlcmFjdGlvbldhc0tleWJvYXJkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9uR2xvYmFsTW91c2VEb3duKCk6IHZvaWQge1xuICAgIEtleWJvYXJkVGV4dEhpZ2hsaWdodERpcmVjdGl2ZS5sYXN0SW50ZXJhY3Rpb25XYXNLZXlib2FyZCA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIGlmICghdGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICB0aGlzLnN0YXJ0VGV4dFNlbGVjdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maXJtVGV4dFNlbGVjdGlvbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuY2FuY2VsVGV4dFNlbGVjdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dDdXJzb3IpIHtcbiAgICAgICAgdGhpcy5oaWRlQ3Vyc29yKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFsnQXJyb3dVcCcsICdBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kVGV4dFNlbGVjdGlvbihldmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vdmVDdXJzb3IoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd0N1cnNvciAmJiAhdGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgdGhpcy5oaWRlQ3Vyc29yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5jcmVtZW50ID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmluY3JlbWVudExhcmdlIDogdGhpcy5pbmNyZW1lbnRNZWRpdW07XG5cbiAgICBpZiAoIXRoaXMuc2hvd0N1cnNvcikge1xuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgIHRoaXMuY3Vyc29yWCA9IHZpZXdwb3J0V2lkdGggLyAyO1xuICAgICAgdGhpcy5jdXJzb3JZID0gdmlld3BvcnRIZWlnaHQgLyAyO1xuICAgICAgdGhpcy5zaG93Q3Vyc29yID0gdHJ1ZTtcblxuICAgICAgdGhpcy5lbWl0Q3Vyc29yUG9zaXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMuY3Vyc29yWSA9IE1hdGgubWF4KDAsIHRoaXMuY3Vyc29yWSAtIGluY3JlbWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5jdXJzb3JZID0gTWF0aC5taW4odmlld3BvcnRIZWlnaHQsIHRoaXMuY3Vyc29yWSArIGluY3JlbWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgdGhpcy5jdXJzb3JYID0gTWF0aC5tYXgoMCwgdGhpcy5jdXJzb3JYIC0gaW5jcmVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgdGhpcy5jdXJzb3JYID0gTWF0aC5taW4odmlld3BvcnRXaWR0aCwgdGhpcy5jdXJzb3JYICsgaW5jcmVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0Q3Vyc29yUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRUZXh0U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dDdXJzb3IpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRYID0gdGhpcy5jdXJzb3JYO1xuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydFkgPSB0aGlzLmN1cnNvclk7XG4gICAgICB0aGlzLnNlbGVjdGlvbkVuZFggPSB0aGlzLmN1cnNvclg7XG4gICAgICB0aGlzLnNlbGVjdGlvbkVuZFkgPSB0aGlzLmN1cnNvclk7XG4gICAgICB0aGlzLnNob3dDdXJzb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuZW1pdEN1cnNvclBvc2l0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRlZmF1bHQgdG8gY2VudGVyXG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0WCA9IHdpbmRvdy5pbm5lcldpZHRoIC8gMjtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRZID0gd2luZG93LmlubmVySGVpZ2h0IC8gMjtcbiAgICAgIHRoaXMuc2VsZWN0aW9uRW5kWCA9IHRoaXMuc2VsZWN0aW9uU3RhcnRYO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmRZID0gdGhpcy5zZWxlY3Rpb25TdGFydFk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKTtcbiAgICB0aGlzLmxhc3RWYWxpZEVuZE5vZGUgPSBudWxsO1xuICAgIHRoaXMubGFzdFZhbGlkRW5kT2Zmc2V0ID0gMDtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ3Vyc29yUG9zaXRpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgeDogdGhpcy5zZWxlY3Rpb25FbmRYLFxuICAgICAgeTogdGhpcy5zZWxlY3Rpb25FbmRZLFxuICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5jcmVhdGVUZXh0U2VsZWN0aW9uQXRQb2ludCh0aGlzLnNlbGVjdGlvblN0YXJ0WCwgdGhpcy5zZWxlY3Rpb25TdGFydFkpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhwYW5kVGV4dFNlbGVjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGluY3JlbWVudCA9IGV2ZW50LnNoaWZ0S2V5ID8gdGhpcy5pbmNyZW1lbnRMYXJnZSA6IHRoaXMuaW5jcmVtZW50U21hbGw7XG5cbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kWCA9IE1hdGgubWluKHZpZXdwb3J0V2lkdGgsIHRoaXMuc2VsZWN0aW9uRW5kWCArIGluY3JlbWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRYID0gTWF0aC5tYXgoMCwgdGhpcy5zZWxlY3Rpb25FbmRYIC0gaW5jcmVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZFkgPSBNYXRoLm1pbih2aWV3cG9ydEhlaWdodCwgdGhpcy5zZWxlY3Rpb25FbmRZICsgaW5jcmVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRZID0gTWF0aC5tYXgoMCwgdGhpcy5zZWxlY3Rpb25FbmRZIC0gaW5jcmVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25DdXJzb3JQb3NpdGlvbkNoYW5nZWQuZW1pdCh7XG4gICAgICB4OiB0aGlzLnNlbGVjdGlvbkVuZFgsXG4gICAgICB5OiB0aGlzLnNlbGVjdGlvbkVuZFksXG4gICAgICB2aXNpYmxlOiB0cnVlXG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZVRleHRTZWxlY3Rpb24oKTtcblxuICAgIHRoaXMuZW1pdFNlbGVjdGlvblVwZGF0ZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGV4dFNlbGVjdGlvbkF0UG9pbnQodmlld3BvcnRYOiBudW1iZXIsIHZpZXdwb3J0WTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgLy8gZ2V0IHByZWNpc2UgY2FyZXQgcG9zaXRpb24gYXQgdGhlIGNvb3JkaW5hdGVzXG4gICAgLy8gY2FyZXRQb3NpdGlvbkZyb21Qb2ludCBpcyBzdGFuZGFyZCBidXQgbm90IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnNcbiAgICAvLyBjYXJldFJhbmdlRnJvbVBvaW50IGlzIG9sZGVyIGFuZCBzdXBwb3J0ZWQgaW4gbW9yZSBicm93c2Vyc1xuICAgIGxldCByYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcblxuICAgIGlmICgoZG9jdW1lbnQgYXMgYW55KS5jYXJldFBvc2l0aW9uRnJvbVBvaW50KSB7XG4gICAgICBjb25zdCBjYXJldFBvc2l0aW9uID0gKGRvY3VtZW50IGFzIGFueSkuY2FyZXRQb3NpdGlvbkZyb21Qb2ludCh2aWV3cG9ydFgsIHZpZXdwb3J0WSk7XG4gICAgICBpZiAoY2FyZXRQb3NpdGlvbikge1xuICAgICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KGNhcmV0UG9zaXRpb24ub2Zmc2V0Tm9kZSwgY2FyZXRQb3NpdGlvbi5vZmZzZXQpO1xuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLmNhcmV0UmFuZ2VGcm9tUG9pbnQpIHtcbiAgICAgIHJhbmdlID0gKGRvY3VtZW50IGFzIGFueSkuY2FyZXRSYW5nZUZyb21Qb2ludCh2aWV3cG9ydFgsIHZpZXdwb3J0WSk7XG4gICAgfVxuXG4gICAgaWYgKHJhbmdlKSB7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGV4dFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyO1xuICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQ7XG5cbiAgICBsZXQgZW5kTm9kZTogTm9kZSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBlbmRPZmZzZXQgPSAwO1xuXG4gICAgaWYgKChkb2N1bWVudCBhcyBhbnkpLmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQpIHtcbiAgICAgIGNvbnN0IGNhcmV0UG9zaXRpb24gPSAoZG9jdW1lbnQgYXMgYW55KS5jYXJldFBvc2l0aW9uRnJvbVBvaW50KHRoaXMuc2VsZWN0aW9uRW5kWCwgdGhpcy5zZWxlY3Rpb25FbmRZKTtcbiAgICAgIGlmIChjYXJldFBvc2l0aW9uKSB7XG4gICAgICAgIGVuZE5vZGUgPSBjYXJldFBvc2l0aW9uLm9mZnNldE5vZGU7XG4gICAgICAgIGVuZE9mZnNldCA9IGNhcmV0UG9zaXRpb24ub2Zmc2V0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkuY2FyZXRSYW5nZUZyb21Qb2ludCkge1xuICAgICAgY29uc3QgY2FyZXRSYW5nZSA9IChkb2N1bWVudCBhcyBhbnkpLmNhcmV0UmFuZ2VGcm9tUG9pbnQodGhpcy5zZWxlY3Rpb25FbmRYLCB0aGlzLnNlbGVjdGlvbkVuZFkpO1xuICAgICAgaWYgKGNhcmV0UmFuZ2UpIHtcbiAgICAgICAgZW5kTm9kZSA9IGNhcmV0UmFuZ2Uuc3RhcnRDb250YWluZXI7XG4gICAgICAgIGVuZE9mZnNldCA9IGNhcmV0UmFuZ2Uuc3RhcnRPZmZzZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVuZE5vZGUpIHtcbiAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHJhbmdlLnNldFN0YXJ0KHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXQpO1xuICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE5vZGUsIGVuZE9mZnNldCk7XG5cbiAgICAgIGNvbnN0IGlzQmFja3dhcmQgPSByYW5nZS5jb2xsYXBzZWQgJiYgKHN0YXJ0Tm9kZSAhPT0gZW5kTm9kZSB8fCBlbmRPZmZzZXQgPCBzdGFydE9mZnNldCk7XG4gICAgICBjb25zdCBjb21wYXJpc29uID0gc3RhcnROb2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVuZE5vZGUpO1xuICAgICAgY29uc3QgZW5kQmVmb3JlU3RhcnQgPSAoY29tcGFyaXNvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HKSAhPT0gMDtcblxuICAgICAgaWYgKGlzQmFja3dhcmQgfHwgZW5kQmVmb3JlU3RhcnQpIHtcbiAgICAgICAgaWYgKHRoaXMubGFzdFZhbGlkRW5kTm9kZSkge1xuICAgICAgICAgIGVuZE5vZGUgPSB0aGlzLmxhc3RWYWxpZEVuZE5vZGU7XG4gICAgICAgICAgZW5kT2Zmc2V0ID0gdGhpcy5sYXN0VmFsaWRFbmRPZmZzZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kTm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICAgICAgICBlbmRPZmZzZXQgPSBzdGFydE9mZnNldDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sYXN0VmFsaWRFbmROb2RlID0gZW5kTm9kZTtcbiAgICAgICAgdGhpcy5sYXN0VmFsaWRFbmRPZmZzZXQgPSBlbmRPZmZzZXQ7XG4gICAgICB9XG5cbiAgICAgIHNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0ZW50KFxuICAgICAgICBzdGFydE5vZGUsXG4gICAgICAgIHN0YXJ0T2Zmc2V0LFxuICAgICAgICBlbmROb2RlLFxuICAgICAgICBlbmRPZmZzZXRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25maXJtVGV4dFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNvbmZpcm1lZC5lbWl0KCk7XG4gICAgdGhpcy5zZWxlY3Rpb25DdXJzb3JQb3NpdGlvbkNoYW5nZWQuZW1pdCh7XG4gICAgICB4OiB0aGlzLnNlbGVjdGlvbkVuZFgsXG4gICAgICB5OiB0aGlzLnNlbGVjdGlvbkVuZFksXG4gICAgICB2aXNpYmxlOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuY2xlYW51cCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5jZWxUZXh0U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25DYW5jZWxsZWQuZW1pdCgpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ3Vyc29yUG9zaXRpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgeDogdGhpcy5zZWxlY3Rpb25FbmRYLFxuICAgICAgeTogdGhpcy5zZWxlY3Rpb25FbmRZLFxuICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZUN1cnNvcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDdXJzb3IgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXRDdXJzb3JQb3NpdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDdXJzb3IgPSBmYWxzZTtcbiAgICB0aGlzLmN1cnNvclggPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJzb3JZID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRYID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRZID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0aW9uRW5kWCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZFkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxhc3RWYWxpZEVuZE5vZGUgPSBudWxsO1xuICAgIHRoaXMubGFzdFZhbGlkRW5kT2Zmc2V0ID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKTogbnVtYmVyIHtcbiAgICBsZXQgY3VycmVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQgJiYgY3VycmVudEVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50Lm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmIChjdXJyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUpIHtcbiAgICAgICAgY29uc3QgcGFnZSA9IHBhcnNlSW50KGN1cnJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1wYWdlLW51bWJlcicpLCAxMCk7XG4gICAgICAgIGlmIChwYWdlKSB7XG4gICAgICAgICAgcmV0dXJuIHBhZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDdXJzb3JQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHtcbiAgICAgIHg6IHRoaXMuY3Vyc29yWCxcbiAgICAgIHk6IHRoaXMuY3Vyc29yWSxcbiAgICAgIHZpc2libGU6IHRoaXMuc2hvd0N1cnNvclxuICAgIH07XG4gICAgdGhpcy5jdXJzb3JQb3NpdGlvbkNoYW5nZWQuZW1pdChwb3NpdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25VcGRhdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uVXBkYXRlZC5lbWl0KHtcbiAgICAgIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICBzdGFydFg6IHRoaXMuc2VsZWN0aW9uU3RhcnRYLFxuICAgICAgc3RhcnRZOiB0aGlzLnNlbGVjdGlvblN0YXJ0WSxcbiAgICAgIGVuZFg6IHRoaXMuc2VsZWN0aW9uRW5kWCxcbiAgICAgIGVuZFk6IHRoaXMuc2VsZWN0aW9uRW5kWVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIHRoaXMuZW1pdEN1cnNvclBvc2l0aW9uKCk7XG4gIH1cbn0iXX0=
@@ -5185,8 +5185,6 @@ class KeyboardTextHighlightDirective {
5185
5185
  set enabled(value) {
5186
5186
  const wasEnabled = this._enabled;
5187
5187
  this._enabled = value;
5188
- // Don't auto-initialize cursor - let it appear on first arrow key press
5189
- // This prevents the Enter key from the button click triggering startTextSelection
5190
5188
  }
5191
5189
  get enabled() {
5192
5190
  return this._enabled;
@@ -5267,7 +5265,6 @@ class KeyboardTextHighlightDirective {
5267
5265
  moveCursor(event) {
5268
5266
  const increment = event.shiftKey ? this.incrementLarge : this.incrementMedium;
5269
5267
  if (!this.showCursor) {
5270
- // we use window dimensions because we're using fixed positioning
5271
5268
  const viewportWidth = window.innerWidth;
5272
5269
  const viewportHeight = window.innerHeight;
5273
5270
  this.cursorX = viewportWidth / 2;
@@ -5378,9 +5375,6 @@ class KeyboardTextHighlightDirective {
5378
5375
  const range = selection.getRangeAt(0);
5379
5376
  const startNode = range.startContainer;
5380
5377
  const startOffset = range.startOffset;
5381
- // get end position using caret APIs
5382
- // caretPositionFromPoint is standard but not supported in all browsers
5383
- // caretRangeFromPoint is older and supported in more browsers
5384
5378
  let endNode = null;
5385
5379
  let endOffset = 0;
5386
5380
  if (document.caretPositionFromPoint) {
@@ -5418,9 +5412,6 @@ class KeyboardTextHighlightDirective {
5418
5412
  this.lastValidEndNode = endNode;
5419
5413
  this.lastValidEndOffset = endOffset;
5420
5414
  }
5421
- // use setBaseAndExtent to handle selection direction with precise offsets
5422
- // to ensure the selection always starts from the original start point
5423
- // and extends to the exact character position at the cursor
5424
5415
  selection.setBaseAndExtent(startNode, startOffset, endNode, endOffset);
5425
5416
  }
5426
5417
  }