@scion/components 16.2.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/_index.scss +3 -20
  2. package/esm2022/dimension/dimension.directive.mjs +6 -7
  3. package/esm2022/dimension/dimension.module.mjs +6 -7
  4. package/esm2022/sashbox/element-ref.directive.mjs +6 -7
  5. package/esm2022/sashbox/sash-initializer.directive.mjs +6 -7
  6. package/esm2022/sashbox/sash.directive.mjs +6 -7
  7. package/esm2022/sashbox/sashbox.component.mjs +6 -7
  8. package/esm2022/sashbox/sashbox.module.mjs +6 -7
  9. package/esm2022/splitter/splitter.component.mjs +7 -8
  10. package/esm2022/splitter/splitter.module.mjs +6 -7
  11. package/esm2022/throbber/ellipsis-throbber/ellipsis-throbber.component.mjs +5 -6
  12. package/esm2022/throbber/ripple-throbber/ripple-throbber.component.mjs +5 -6
  13. package/esm2022/throbber/roller-throbber/roller-throbber.component.mjs +5 -6
  14. package/esm2022/throbber/spinner-throbber/spinner-throbber.component.mjs +5 -6
  15. package/esm2022/throbber/throbber.component.mjs +5 -6
  16. package/esm2022/throbber/throbber.module.mjs +6 -7
  17. package/esm2022/viewport/native-scrollbar-track-size-provider.service.mjs +7 -8
  18. package/esm2022/viewport/scrollable.directive.mjs +6 -7
  19. package/esm2022/viewport/scrollbar/scrollbar.component.mjs +7 -8
  20. package/esm2022/viewport/viewport.component.mjs +6 -7
  21. package/esm2022/viewport/viewport.module.mjs +6 -7
  22. package/fesm2022/scion-components-dimension.mjs +8 -8
  23. package/fesm2022/scion-components-dimension.mjs.map +1 -1
  24. package/fesm2022/scion-components-sashbox.mjs +20 -20
  25. package/fesm2022/scion-components-sashbox.mjs.map +1 -1
  26. package/fesm2022/scion-components-splitter.mjs +9 -9
  27. package/fesm2022/scion-components-splitter.mjs.map +1 -1
  28. package/fesm2022/scion-components-throbber.mjs +19 -19
  29. package/fesm2022/scion-components-throbber.mjs.map +1 -1
  30. package/fesm2022/scion-components-viewport.mjs +22 -22
  31. package/fesm2022/scion-components-viewport.mjs.map +1 -1
  32. package/package.json +4 -4
@@ -23,7 +23,7 @@ import * as i1 from "./native-scrollbar-track-size-provider.service";
23
23
  * fill up the entire space (width and height set to 100%). The parent element must have its CSS `overflow` property set to `hidden`
24
24
  * to hide the pushed out native scrollbars.
25
25
  */
26
- class SciScrollableDirective {
26
+ export class SciScrollableDirective {
27
27
  constructor(_host, _renderer, nativeScrollbarTrackSizeProvider) {
28
28
  this._host = _host;
29
29
  this._renderer = _renderer;
@@ -78,18 +78,17 @@ class SciScrollableDirective {
78
78
  ngOnDestroy() {
79
79
  this._destroy$.next();
80
80
  }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SciNativeScrollbarTrackSizeProvider }], target: i0.ɵɵFactoryTarget.Directive }); }
82
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciScrollableDirective, isStandalone: true, selector: "[sciScrollable]", inputs: { isDisplayNativeScrollbar: ["sciScrollableDisplayNativeScrollbar", "isDisplayNativeScrollbar"] }, usesOnChanges: true, ngImport: i0 }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SciNativeScrollbarTrackSizeProvider }], target: i0.ɵɵFactoryTarget.Directive }); }
82
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: SciScrollableDirective, isStandalone: true, selector: "[sciScrollable]", inputs: { isDisplayNativeScrollbar: ["sciScrollableDisplayNativeScrollbar", "isDisplayNativeScrollbar"] }, usesOnChanges: true, ngImport: i0 }); }
83
83
  }
84
- export { SciScrollableDirective };
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciScrollableDirective, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciScrollableDirective, decorators: [{
86
85
  type: Directive,
87
86
  args: [{
88
87
  selector: '[sciScrollable]',
89
88
  standalone: true,
90
89
  }]
91
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SciNativeScrollbarTrackSizeProvider }]; }, propDecorators: { isDisplayNativeScrollbar: [{
90
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SciNativeScrollbarTrackSizeProvider }], propDecorators: { isDisplayNativeScrollbar: [{
92
91
  type: Input,
93
92
  args: ['sciScrollableDisplayNativeScrollbar']
94
93
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUUzRyxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFHcEM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BSWEsc0JBQXNCO0lBWWpDLFlBQW9CLEtBQWlDLEVBQ2pDLFNBQW9CLEVBQzVCLGdDQUFxRTtRQUY3RCxVQUFLLEdBQUwsS0FBSyxDQUE0QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBWGhDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1Qzs7O1dBR0c7UUFFSSw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFLdEMsS0FBSyxDQUNILGdDQUFnQyxDQUFDLFVBQVUsRUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQy9FO2FBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0IsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7WUFDcEMsSUFBSSx3QkFBd0IsS0FBSyxJQUFJLEVBQUUsRUFBRSxrREFBa0Q7Z0JBQ3pGLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzVCO2lCQUNJO2dCQUNILElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQ25IO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUN0QyxRQUFRLEVBQUUsTUFBTTtZQUNoQixLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLENBQUM7WUFDZCxZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxxQkFBcUIsQ0FBQyx3QkFBa0Q7UUFDOUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUN0QyxRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsZUFBZSx3QkFBd0IsQ0FBQyxvQkFBb0IsSUFBSTtZQUN2RSxNQUFNLEVBQUUsZUFBZSx3QkFBd0IsQ0FBQyxxQkFBcUIsSUFBSTtZQUN6RSxXQUFXLEVBQUUsSUFBSSx3QkFBd0IsQ0FBQyxvQkFBb0IsSUFBSTtZQUNsRSxZQUFZLEVBQUUsSUFBSSx3QkFBd0IsQ0FBQyxxQkFBcUIsSUFBSTtTQUNyRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQWdCLEVBQUUsS0FBaUI7UUFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0FsRVUsc0JBQXNCO2tHQUF0QixzQkFBc0I7O1NBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsyS0FXUSx3QkFBd0I7c0JBRDlCLEtBQUs7dUJBQUMscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLCBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcn0gZnJvbSAnLi9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge21hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge21lcmdlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGljdGlvbmFyeX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5cbi8qKlxuICogTWFrZXMgdGhlIGhvc3QgZWxlbWVudCBuYXRpdmVseSBzY3JvbGxhYmxlIGFuZCBoaWRlcyBuYXRpdmUgc2Nyb2xsYmFycyBieSBkZWZhdWx0LCB1bmxlc3MgbmF0aXZlIHNjcm9sbGJhcnNcbiAqIGFscmVhZHkgc2l0IG9uIHRvcCBvZiB0aGUgdmlld3BvcnQgKGUuZy4gaW4gT1MgWCkuXG4gKlxuICogQmVjYXVzZSB0aGVyZSBpcyBubyBjcm9zcy1icm93c2VyIEFQSSB0byBoaWRlIHNjcm9sbGJhcnMgd2l0aG91dCBsb3NpbmcgbmF0aXZlIHNjcm9sbCBzdXBwb3J0LCB3ZSBzZXQgJ292ZXJmbG93J1xuICogdG8gJ3Njcm9sbCcgYnV0IHNoaWZ0IHRoZSBuYXRpdmUgc2Nyb2xsYmFycyBvdXQgb2YgdGhlIHZpc2libGUgdmlld3BvcnQgYXJlYS4gVGhlIHNoaWZ0IG9mZnNldCBpcyBjb21wdXRlZCB1cGZyb250LlxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIGV4cGVjdHMgaXRzIGhvc3QgZWxlbWVudCB0byBiZSB0aGUgb25seSBjaGlsZCBpbiBkb2N1bWVudCBmbG93IGluIGl0cyBwYXJlbnQgRE9NIGVsZW1lbnQuIEl0IG1ha2VzIHRoZSBob3N0IGVsZW1lbnRcbiAqIGZpbGwgdXAgdGhlIGVudGlyZSBzcGFjZSAod2lkdGggYW5kIGhlaWdodCBzZXQgdG8gMTAwJSkuIFRoZSBwYXJlbnQgZWxlbWVudCBtdXN0IGhhdmUgaXRzIENTUyBgb3ZlcmZsb3dgIHByb3BlcnR5IHNldCB0byBgaGlkZGVuYFxuICogdG8gaGlkZSB0aGUgcHVzaGVkIG91dCBuYXRpdmUgc2Nyb2xsYmFycy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NjaVNjcm9sbGFibGVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2NpU2Nyb2xsYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2lucHV0Q2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdG8gZGlzcGxheSBuYXRpdmUgc2Nyb2xsYmFycy5cbiAgICogSGFzIG5vIGVmZmVjdCBpZiB0aGUgbmF0aXZlIHNjcm9sbGJhciBzaXRzIG9uIHRvcCBvZiB0aGUgY29udGVudCwgZS5nLiBpbiBPUyBYLlxuICAgKi9cbiAgQElucHV0KCdzY2lTY3JvbGxhYmxlRGlzcGxheU5hdGl2ZVNjcm9sbGJhcicpLy8gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIHB1YmxpYyBpc0Rpc3BsYXlOYXRpdmVTY3JvbGxiYXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXI6IFNjaU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyKSB7XG4gICAgbWVyZ2UoXG4gICAgICBuYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlci50cmFja1NpemUkLFxuICAgICAgdGhpcy5faW5wdXRDaGFuZ2UkLnBpcGUobWFwKCgpID0+IG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyLnRyYWNrU2l6ZSkpLFxuICAgIClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSA9PiB7XG4gICAgICAgIGlmIChuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgPT09IG51bGwpIHsgLy8gdGhlIG5hdGl2ZSBzY3JvbGxiYXIgc2l0cyBvbiB0b3Agb2YgdGhlIGNvbnRlbnRcbiAgICAgICAgICB0aGlzLnVzZU5hdGl2ZVNjcm9sbGJhcnMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzRGlzcGxheU5hdGl2ZVNjcm9sbGJhciA/IHRoaXMudXNlTmF0aXZlU2Nyb2xsYmFycygpIDogdGhpcy5zaGlmdE5hdGl2ZVNjcm9sbGJhcnMobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlcyB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgd2hlbiBjb250ZW50IG92ZXJmbG93cy5cbiAgICovXG4gIHByaXZhdGUgdXNlTmF0aXZlU2Nyb2xsYmFycygpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0eWxlKHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudCwge1xuICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIG1hcmdpblJpZ2h0OiAwLFxuICAgICAgbWFyZ2luQm90dG9tOiAwLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoaWZ0cyB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgb3V0IG9mIHRoZSB2aXNpYmxlIHZpZXdwb3J0IGFyZWEuXG4gICAqL1xuICBwcml2YXRlIHNoaWZ0TmF0aXZlU2Nyb2xsYmFycyhuYXRpdmVTY3JvbGxiYXJUcmFja1NpemU6IE5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3R5bGUodGhpcy5faG9zdC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBvdmVyZmxvdzogJ3Njcm9sbCcsXG4gICAgICB3aWR0aDogYGNhbGMoMTAwJSArICR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLnZTY3JvbGxiYXJUcmFja1dpZHRofXB4YCxcbiAgICAgIGhlaWdodDogYGNhbGMoMTAwJSArICR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLmhTY3JvbGxiYXJUcmFja0hlaWdodH1weGAsXG4gICAgICBtYXJnaW5SaWdodDogYC0ke25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZS52U2Nyb2xsYmFyVHJhY2tXaWR0aH1weGAsXG4gICAgICBtYXJnaW5Cb3R0b206IGAtJHtuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUuaFNjcm9sbGJhclRyYWNrSGVpZ2h0fXB4YCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3R5bGUoZWxlbWVudDogRWxlbWVudCwgc3R5bGU6IERpY3Rpb25hcnkpOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaChrZXkgPT4gdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwga2V5LCBzdHlsZVtrZXldKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0Q2hhbmdlJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG59XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUUzRyxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFHcEM7Ozs7Ozs7Ozs7R0FVRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7SUFZakMsWUFBb0IsS0FBaUMsRUFDakMsU0FBb0IsRUFDNUIsZ0NBQXFFO1FBRjdELFVBQUssR0FBTCxLQUFLLENBQTRCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFYaEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTVDOzs7V0FHRztRQUVJLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUt0QyxLQUFLLENBQ0gsZ0NBQWdDLENBQUMsVUFBVSxFQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDL0U7YUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUNwQyxJQUFJLHdCQUF3QixLQUFLLElBQUksRUFBRSxFQUFFLGtEQUFrRDtnQkFDekYsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7YUFDNUI7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHdCQUF3QixDQUFDLENBQUM7YUFDbkg7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3RDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQztZQUNkLFlBQVksRUFBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQixDQUFDLHdCQUFrRDtRQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3RDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLEtBQUssRUFBRSxlQUFlLHdCQUF3QixDQUFDLG9CQUFvQixJQUFJO1lBQ3ZFLE1BQU0sRUFBRSxlQUFlLHdCQUF3QixDQUFDLHFCQUFxQixJQUFJO1lBQ3pFLFdBQVcsRUFBRSxJQUFJLHdCQUF3QixDQUFDLG9CQUFvQixJQUFJO1lBQ2xFLFlBQVksRUFBRSxJQUFJLHdCQUF3QixDQUFDLHFCQUFxQixJQUFJO1NBQ3JFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxRQUFRLENBQUMsT0FBZ0IsRUFBRSxLQUFpQjtRQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQWxFVSxzQkFBc0I7a0dBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7eUpBV1Esd0JBQXdCO3NCQUQ5QixLQUFLO3VCQUFDLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSwgU2NpTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXJ9IGZyb20gJy4vbmF0aXZlLXNjcm9sbGJhci10cmFjay1zaXplLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHttZXJnZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0RpY3Rpb25hcnl9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V0aWwnO1xuXG4vKipcbiAqIE1ha2VzIHRoZSBob3N0IGVsZW1lbnQgbmF0aXZlbHkgc2Nyb2xsYWJsZSBhbmQgaGlkZXMgbmF0aXZlIHNjcm9sbGJhcnMgYnkgZGVmYXVsdCwgdW5sZXNzIG5hdGl2ZSBzY3JvbGxiYXJzXG4gKiBhbHJlYWR5IHNpdCBvbiB0b3Agb2YgdGhlIHZpZXdwb3J0IChlLmcuIGluIE9TIFgpLlxuICpcbiAqIEJlY2F1c2UgdGhlcmUgaXMgbm8gY3Jvc3MtYnJvd3NlciBBUEkgdG8gaGlkZSBzY3JvbGxiYXJzIHdpdGhvdXQgbG9zaW5nIG5hdGl2ZSBzY3JvbGwgc3VwcG9ydCwgd2Ugc2V0ICdvdmVyZmxvdydcbiAqIHRvICdzY3JvbGwnIGJ1dCBzaGlmdCB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgb3V0IG9mIHRoZSB2aXNpYmxlIHZpZXdwb3J0IGFyZWEuIFRoZSBzaGlmdCBvZmZzZXQgaXMgY29tcHV0ZWQgdXBmcm9udC5cbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSBleHBlY3RzIGl0cyBob3N0IGVsZW1lbnQgdG8gYmUgdGhlIG9ubHkgY2hpbGQgaW4gZG9jdW1lbnQgZmxvdyBpbiBpdHMgcGFyZW50IERPTSBlbGVtZW50LiBJdCBtYWtlcyB0aGUgaG9zdCBlbGVtZW50XG4gKiBmaWxsIHVwIHRoZSBlbnRpcmUgc3BhY2UgKHdpZHRoIGFuZCBoZWlnaHQgc2V0IHRvIDEwMCUpLiBUaGUgcGFyZW50IGVsZW1lbnQgbXVzdCBoYXZlIGl0cyBDU1MgYG92ZXJmbG93YCBwcm9wZXJ0eSBzZXQgdG8gYGhpZGRlbmBcbiAqIHRvIGhpZGUgdGhlIHB1c2hlZCBvdXQgbmF0aXZlIHNjcm9sbGJhcnMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzY2lTY3JvbGxhYmxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNjaVNjcm9sbGFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9pbnB1dENoYW5nZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIHRvIGRpc3BsYXkgbmF0aXZlIHNjcm9sbGJhcnMuXG4gICAqIEhhcyBubyBlZmZlY3QgaWYgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgc2l0cyBvbiB0b3Agb2YgdGhlIGNvbnRlbnQsIGUuZy4gaW4gT1MgWC5cbiAgICovXG4gIEBJbnB1dCgnc2NpU2Nyb2xsYWJsZURpc3BsYXlOYXRpdmVTY3JvbGxiYXInKS8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBwdWJsaWMgaXNEaXNwbGF5TmF0aXZlU2Nyb2xsYmFyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyOiBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcikge1xuICAgIG1lcmdlKFxuICAgICAgbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXIudHJhY2tTaXplJCxcbiAgICAgIHRoaXMuX2lucHV0Q2hhbmdlJC5waXBlKG1hcCgoKSA9PiBuYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlci50cmFja1NpemUpKSxcbiAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgPT4ge1xuICAgICAgICBpZiAobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplID09PSBudWxsKSB7IC8vIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHNpdHMgb24gdG9wIG9mIHRoZSBjb250ZW50XG4gICAgICAgICAgdGhpcy51c2VOYXRpdmVTY3JvbGxiYXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy5pc0Rpc3BsYXlOYXRpdmVTY3JvbGxiYXIgPyB0aGlzLnVzZU5hdGl2ZVNjcm9sbGJhcnMoKSA6IHRoaXMuc2hpZnROYXRpdmVTY3JvbGxiYXJzKG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXMgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHdoZW4gY29udGVudCBvdmVyZmxvd3MuXG4gICAqL1xuICBwcml2YXRlIHVzZU5hdGl2ZVNjcm9sbGJhcnMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdHlsZSh0aGlzLl9ob3N0Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBtYXJnaW5SaWdodDogMCxcbiAgICAgIG1hcmdpbkJvdHRvbTogMCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaGlmdHMgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIG91dCBvZiB0aGUgdmlzaWJsZSB2aWV3cG9ydCBhcmVhLlxuICAgKi9cbiAgcHJpdmF0ZSBzaGlmdE5hdGl2ZVNjcm9sbGJhcnMobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplOiBOYXRpdmVTY3JvbGxiYXJUcmFja1NpemUpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0eWxlKHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudCwge1xuICAgICAgb3ZlcmZsb3c6ICdzY3JvbGwnLFxuICAgICAgd2lkdGg6IGBjYWxjKDEwMCUgKyAke25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZS52U2Nyb2xsYmFyVHJhY2tXaWR0aH1weGAsXG4gICAgICBoZWlnaHQ6IGBjYWxjKDEwMCUgKyAke25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZS5oU2Nyb2xsYmFyVHJhY2tIZWlnaHR9cHhgLFxuICAgICAgbWFyZ2luUmlnaHQ6IGAtJHtuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUudlNjcm9sbGJhclRyYWNrV2lkdGh9cHhgLFxuICAgICAgbWFyZ2luQm90dG9tOiBgLSR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLmhTY3JvbGxiYXJUcmFja0hlaWdodH1weGAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFN0eWxlKGVsZW1lbnQ6IEVsZW1lbnQsIHN0eWxlOiBEaWN0aW9uYXJ5KTogdm9pZCB7XG4gICAgT2JqZWN0LmtleXMoc3R5bGUpLmZvckVhY2goa2V5ID0+IHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIGtleSwgc3R5bGVba2V5XSkpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dENoYW5nZSQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxufVxuIl19
@@ -38,7 +38,7 @@ import * as i0 from "@angular/core";
38
38
  * }
39
39
  * ```
40
40
  */
41
- class SciScrollbarComponent {
41
+ export class SciScrollbarComponent {
42
42
  /**
43
43
  * Timeout for debouncing viewport resize events that trigger the scroll position computation.
44
44
  *
@@ -293,17 +293,16 @@ class SciScrollbarComponent {
293
293
  ngOnDestroy() {
294
294
  this._destroy$.next();
295
295
  }
296
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciScrollbarComponent, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
297
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: SciScrollbarComponent, isStandalone: true, selector: "sci-scrollbar", inputs: { direction: "direction", setViewport: ["viewport", "setViewport"] }, host: { properties: { "class.vertical": "this.vertical", "class.horizontal": "this.horizontal", "class.scrolling": "this.scrolling" } }, viewQueries: [{ propertyName: "thumbElement", first: true, predicate: ["thumb_handle"], descendants: true, static: true }], ngImport: i0, template: "<!-- scrolltrack to move the viewport client upwards (paging) -->\n<div class=\"scrolltrack-start\" (mousedown)=\"onScrollTrackMouseDown($event, 'up')\"></div>\n\n<!-- scrollthumb -->\n<div #thumb_handle\n class=\"thumb-handle\"\n [class.vertical]=\"vertical\"\n [class.horizontal]=\"horizontal\"\n (mousedown)=\"onMouseDown($event)\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n (touchcancel)=\"onTouchEnd($event)\">\n <div class=\"thumb\"\n [class.vertical]=\"vertical\"\n [class.horizontal]=\"horizontal\">\n </div>\n</div>\n\n<!-- scrolltrack to move the viewport client downwards (paging) -->\n<div class=\"scrolltrack-end\" (mousedown)=\"onScrollTrackMouseDown($event, 'down')\"></div>\n", styles: ["@charset \"UTF-8\";:host{display:flex;border:2px solid transparent;box-sizing:border-box;--\\275sci-scrollbar-color: var(--sci-scrollbar-color, rgb(78, 78, 78));--\\275sci-scrollbar-thumb-position-fr: 0;--\\275sci-scrollbar-thumb-size-fr: 0}:host.vertical{flex-direction:column}:host.horizontal{flex-direction:row}:host>div.scrolltrack-start{flex-grow:var(--\\275sci-scrollbar-thumb-position-fr)}:host>div.thumb-handle{flex-basis:20px;display:flex;flex-grow:var(--\\275sci-scrollbar-thumb-size-fr);align-items:center}:host>div.thumb-handle.vertical{flex-direction:column}:host>div.thumb-handle.horizontal{flex-direction:row}:host>div.thumb-handle>div.thumb{flex:auto;border-radius:4px;background-color:var(--\\275sci-scrollbar-color);opacity:.4;transition-duration:125ms;transition-property:width,height;transition-timing-function:ease-out}:host>div.thumb-handle>div.thumb.vertical{width:60%}:host>div.thumb-handle>div.thumb.horizontal{height:60%}:host>div.scrolltrack-end{flex-grow:calc(1 - (var(--\\275sci-scrollbar-thumb-position-fr) + var(--\\275sci-scrollbar-thumb-size-fr)))}:host-context:not(.overflow){display:none}:host-context:hover>div.thumb-handle>div.thumb,:host-context(.scrolling)>div.thumb-handle>div.thumb{background-color:var(--\\275sci-scrollbar-color);opacity:.75}:host-context:hover>div.thumb-handle>div.thumb.vertical,:host-context(.scrolling)>div.thumb-handle>div.thumb.vertical{width:100%}:host-context:hover>div.thumb-handle>div.thumb.horizontal,:host-context(.scrolling)>div.thumb-handle>div.thumb.horizontal{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
296
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciScrollbarComponent, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
297
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: SciScrollbarComponent, isStandalone: true, selector: "sci-scrollbar", inputs: { direction: "direction", setViewport: ["viewport", "setViewport"] }, host: { properties: { "class.vertical": "this.vertical", "class.horizontal": "this.horizontal", "class.scrolling": "this.scrolling" } }, viewQueries: [{ propertyName: "thumbElement", first: true, predicate: ["thumb_handle"], descendants: true, static: true }], ngImport: i0, template: "<!-- scrolltrack to move the viewport client upwards (paging) -->\n<div class=\"scrolltrack-start\" (mousedown)=\"onScrollTrackMouseDown($event, 'up')\"></div>\n\n<!-- scrollthumb -->\n<div #thumb_handle\n class=\"thumb-handle\"\n [class.vertical]=\"vertical\"\n [class.horizontal]=\"horizontal\"\n (mousedown)=\"onMouseDown($event)\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n (touchcancel)=\"onTouchEnd($event)\">\n <div class=\"thumb\"\n [class.vertical]=\"vertical\"\n [class.horizontal]=\"horizontal\">\n </div>\n</div>\n\n<!-- scrolltrack to move the viewport client downwards (paging) -->\n<div class=\"scrolltrack-end\" (mousedown)=\"onScrollTrackMouseDown($event, 'down')\"></div>\n", styles: ["@charset \"UTF-8\";:host{display:flex;border:2px solid transparent;box-sizing:border-box;--\\275sci-scrollbar-color: var(--sci-scrollbar-color, rgb(78, 78, 78));--\\275sci-scrollbar-thumb-position-fr: 0;--\\275sci-scrollbar-thumb-size-fr: 0}:host.vertical{flex-direction:column}:host.horizontal{flex-direction:row}:host>div.scrolltrack-start{flex-grow:var(--\\275sci-scrollbar-thumb-position-fr)}:host>div.thumb-handle{flex-basis:20px;display:flex;flex-grow:var(--\\275sci-scrollbar-thumb-size-fr);align-items:center}:host>div.thumb-handle.vertical{flex-direction:column}:host>div.thumb-handle.horizontal{flex-direction:row}:host>div.thumb-handle>div.thumb{flex:auto;border-radius:4px;background-color:var(--\\275sci-scrollbar-color);opacity:.4;transition-duration:125ms;transition-property:width,height;transition-timing-function:ease-out}:host>div.thumb-handle>div.thumb.vertical{width:60%}:host>div.thumb-handle>div.thumb.horizontal{height:60%}:host>div.scrolltrack-end{flex-grow:calc(1 - (var(--\\275sci-scrollbar-thumb-position-fr) + var(--\\275sci-scrollbar-thumb-size-fr)))}:host-context:not(.overflow){display:none}:host-context:hover>div.thumb-handle>div.thumb,:host-context(.scrolling)>div.thumb-handle>div.thumb{background-color:var(--\\275sci-scrollbar-color);opacity:.75}:host-context:hover>div.thumb-handle>div.thumb.vertical,:host-context(.scrolling)>div.thumb-handle>div.thumb.vertical{width:100%}:host-context:hover>div.thumb-handle>div.thumb.horizontal,:host-context(.scrolling)>div.thumb-handle>div.thumb.horizontal{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
298
298
  }
299
- export { SciScrollbarComponent };
300
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciScrollbarComponent, decorators: [{
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciScrollbarComponent, decorators: [{
301
300
  type: Component,
302
301
  args: [{ selector: 'sci-scrollbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<!-- scrolltrack to move the viewport client upwards (paging) -->\n<div class=\"scrolltrack-start\" (mousedown)=\"onScrollTrackMouseDown($event, 'up')\"></div>\n\n<!-- scrollthumb -->\n<div #thumb_handle\n class=\"thumb-handle\"\n [class.vertical]=\"vertical\"\n [class.horizontal]=\"horizontal\"\n (mousedown)=\"onMouseDown($event)\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n (touchcancel)=\"onTouchEnd($event)\">\n <div class=\"thumb\"\n [class.vertical]=\"vertical\"\n [class.horizontal]=\"horizontal\">\n </div>\n</div>\n\n<!-- scrolltrack to move the viewport client downwards (paging) -->\n<div class=\"scrolltrack-end\" (mousedown)=\"onScrollTrackMouseDown($event, 'down')\"></div>\n", styles: ["@charset \"UTF-8\";:host{display:flex;border:2px solid transparent;box-sizing:border-box;--\\275sci-scrollbar-color: var(--sci-scrollbar-color, rgb(78, 78, 78));--\\275sci-scrollbar-thumb-position-fr: 0;--\\275sci-scrollbar-thumb-size-fr: 0}:host.vertical{flex-direction:column}:host.horizontal{flex-direction:row}:host>div.scrolltrack-start{flex-grow:var(--\\275sci-scrollbar-thumb-position-fr)}:host>div.thumb-handle{flex-basis:20px;display:flex;flex-grow:var(--\\275sci-scrollbar-thumb-size-fr);align-items:center}:host>div.thumb-handle.vertical{flex-direction:column}:host>div.thumb-handle.horizontal{flex-direction:row}:host>div.thumb-handle>div.thumb{flex:auto;border-radius:4px;background-color:var(--\\275sci-scrollbar-color);opacity:.4;transition-duration:125ms;transition-property:width,height;transition-timing-function:ease-out}:host>div.thumb-handle>div.thumb.vertical{width:60%}:host>div.thumb-handle>div.thumb.horizontal{height:60%}:host>div.scrolltrack-end{flex-grow:calc(1 - (var(--\\275sci-scrollbar-thumb-position-fr) + var(--\\275sci-scrollbar-thumb-size-fr)))}:host-context:not(.overflow){display:none}:host-context:hover>div.thumb-handle>div.thumb,:host-context(.scrolling)>div.thumb-handle>div.thumb{background-color:var(--\\275sci-scrollbar-color);opacity:.75}:host-context:hover>div.thumb-handle>div.thumb.vertical,:host-context(.scrolling)>div.thumb-handle>div.thumb.vertical{width:100%}:host-context:hover>div.thumb-handle>div.thumb.horizontal,:host-context(.scrolling)>div.thumb-handle>div.thumb.horizontal{height:100%}\n"] }]
303
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Document, decorators: [{
302
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: Document, decorators: [{
304
303
  type: Inject,
305
304
  args: [DOCUMENT]
306
- }] }, { type: i0.NgZone }]; }, propDecorators: { thumbElement: [{
305
+ }] }, { type: i0.NgZone }], propDecorators: { thumbElement: [{
307
306
  type: ViewChild,
308
307
  args: ['thumb_handle', { static: true }]
309
308
  }], vertical: [{
@@ -321,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
321
320
  type: Input,
322
321
  args: [{ alias: 'viewport', required: true }]
323
322
  }] } });
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvdmlld3BvcnQvc3JjL3Njcm9sbGJhci9zY3JvbGxiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy92aWV3cG9ydC9zcmMvc2Nyb2xsYmFyL3Njcm9sbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwSCxPQUFPLEVBQUMsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUUsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBRXRFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BT2EscUJBQXFCO0lBRWhDOzs7Ozs7OztPQVFHO2FBQ29CLGtDQUE2QixHQUFHLEVBQUUsQUFBTCxDQUFNO0lBZTFELElBQ1csUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxD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T0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO0lBQzlFLENBQUM7SUFFRCxtQkFBbUI7SUFDWixXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0FuVVUscUJBQXFCLDRDQTJEWixRQUFRO2tHQTNEakIscUJBQXFCLDRaQ2hEbEMsNHlCQXFCQTs7U0QyQmEscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUk7OzBCQTZESCxNQUFNOzJCQUFDLFFBQVE7aUVBbkNyQixZQUFZO3NCQURsQixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBSTlCLFFBQVE7c0JBRGxCLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU1sQixVQUFVO3NCQURwQixXQUFXO3VCQUFDLGtCQUFrQjtnQkFNcEIsU0FBUztzQkFEbkIsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBV3ZCLFNBQVM7c0JBRGYsS0FBSztnQkFPSyxXQUFXO3NCQURyQixLQUFLO3VCQUFDLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZpcnN0LCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRha2VXaGlsZSwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7ZnJvbURpbWVuc2lvbiQsIGZyb21NdXRhdGlvbiR9IGZyb20gJ0BzY2lvbi90b29sa2l0L29ic2VydmFibGUnO1xuaW1wb3J0IHtmaWx0ZXJBcnJheSwgc3Vic2NyaWJlSW5zaWRlfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSB2ZXJ0aWNhbCBvciBob3Jpem9udGFsIHNjcm9sbGJhci5cbiAqXG4gKiBUaGUgc2Nyb2xsYmFyIGZlYXR1cmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbGl0eTpcbiAqIC0gYWxsb3dzIHRvIG1vdmUgdGhlIHRodW1iIGJ5IG1vdXNlIG9yIHRvdWNoXG4gKiAtIGVubGFyZ2VzIHRoZSB0aHVtYiBpZiB0aGUgbW91c2UgcG9pbnRlciBpcyBuZWFyIHRoZSB0aHVtYlxuICogLSBhbGxvd3MgcGFnaW5nIG9uIG1vdXNlZG93biBvbiB0aGUgc2Nyb2xsIHRyYWNrXG4gKlxuICogIyMjIFN0eWxpbmc6XG4gKlxuICogVG8gY3VzdG9taXplIHRoZSBkZWZhdWx0IGxvb2sgb2YgU0NJT04gY29tcG9uZW50cyBvciBzdXBwb3J0IGRpZmZlcmVudCB0aGVtZXMsIGNvbmZpZ3VyZSB0aGUgYEBzY2lvbi9jb21wb25lbnRzYCBTQ1NTIG1vZHVsZSBpbiBgc3R5bGVzLnNjc3NgLlxuICogVG8gc3R5bGUgYSBzcGVjaWZpYyBgc2NpLXNjcm9sbGJhcmAgY29tcG9uZW50LCB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgY2FuIGJlIHNldCBkaXJlY3RseSBvbiB0aGUgY29tcG9uZW50LlxuICpcbiAqIC0gc2NpLXNjcm9sbGJhci1jb2xvcjogICAgU2V0cyB0aGUgY29sb3Igb2YgdGhlIHNjcm9sbGJhci5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYGNzc1xuICpcbiAqIHNjaS1zY3JvbGxiYXIge1xuICogICAtLXNjaS1zY3JvbGxiYXItY29sb3I6IGJsdWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2NpLXNjcm9sbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY3JvbGxiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY3JvbGxiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNjaVNjcm9sbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgZm9yIGRlYm91bmNpbmcgdmlld3BvcnQgcmVzaXplIGV2ZW50cyB0aGF0IHRyaWdnZXIgdGhlIHNjcm9sbCBwb3NpdGlvbiBjb21wdXRhdGlvbi5cbiAgICpcbiAgICogRGVib3VuY2luZyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGluIHRoZSBjb250ZXh0IG9mIEFuZ3VsYXIgYW5pbWF0aW9ucywgc2luY2UgdGhleSBjb250aW51b3VzbHlcbiAgICogdHJpZ2dlciByZXNpemUgZXZlbnRzLiBEZWJvdW5jaW5nIHByZXZlbnRzIHRoZSBzY3JvbGxiYXIgZnJvbSBmbGlja2VyaW5nLCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgdXNlclxuICAgKiBleHBhbmRzIGEgcGFuZWwgdGhhdCBjb250YWlucyBhIHZpZXdwb3J0LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVklFV1BPUlRfUkVTSVpFX0RFQk9VTkNFX1RJTUUgPSA1MDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX3ZpZXdwb3J0ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3ZpZXdwb3J0Q2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2xhc3REcmFnUG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX292ZXJmbG93ID0gZmFsc2U7XG4gIHByaXZhdGUgX3RodW1iU2l6ZUZyID0gMDtcbiAgcHJpdmF0ZSBfdGh1bWJQb3NpdGlvbkZyID0gMDtcblxuICAvKiBAZG9jcy1wcml2YXRlICovXG4gIEBWaWV3Q2hpbGQoJ3RodW1iX2hhbmRsZScsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgdGh1bWJFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy52ZXJ0aWNhbCcpXG4gIHB1YmxpYyBnZXQgdmVydGljYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uID09PSAndnNjcm9sbCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhvcml6b250YWwnKVxuICBwdWJsaWMgZ2V0IGhvcml6b250YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uID09PSAnaHNjcm9sbCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNjcm9sbGluZycpXG4gIHB1YmxpYyBnZXQgc2Nyb2xsaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sYXN0RHJhZ1Bvc2l0aW9uICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzY3JvbGxiYXIuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGlmIG5vdCBzcGVjaWZpZWQsIHJlbmRlcnMgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGlyZWN0aW9uOiAndnNjcm9sbCcgfCAnaHNjcm9sbCcgPSAndnNjcm9sbCc7XG5cbiAgLyoqXG4gICAqIFRoZSB2aWV3cG9ydCB0byBwcm92aWRlIHNjcm9sbGJhcnMgZm9yLlxuICAgKi9cbiAgQElucHV0KHthbGlhczogJ3ZpZXdwb3J0JywgcmVxdWlyZWQ6IHRydWV9KSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgcHVibGljIHNldCBzZXRWaWV3cG9ydCh2aWV3cG9ydDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl92aWV3cG9ydCA9IHZpZXdwb3J0O1xuICAgIHRoaXMuX3ZpZXdwb3J0Q2hhbmdlJC5uZXh0KCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICAgICAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUpIHtcbiAgICB0aGlzLl92aWV3cG9ydENoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5fdmlld3BvcnQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICB0aGlzLnZpZXdwb3J0U2Nyb2xsQ2hhbmdlJCgpLFxuICAgICAgICAgICAgdGhpcy52aWV3cG9ydERpbWVuc2lvbkNoYW5nZSQoe2RlYm91bmNlVGltZTogU2NpU2Nyb2xsYmFyQ29tcG9uZW50LlZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FfSksXG4gICAgICAgICAgICB0aGlzLnZpZXdwb3J0Q2xpZW50RGltZW5zaW9uQ2hhbmdlJCh7ZGVib3VuY2VUaW1lOiBTY2lTY3JvbGxiYXJDb21wb25lbnQuVklFV1BPUlRfUkVTSVpFX0RFQk9VTkNFX1RJTUV9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgc3Vic2NyaWJlSW5zaWRlKGNvbnRpbnVlRm4gPT4gdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcihjb250aW51ZUZuKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdwb3J0KSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMudW5zZXRTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCB1cGRhdGVzIENTUyB2YXJpYWJsZXMgdG8gcmVuZGVyIHRoZSBzY3JvbGwgcG9zaXRpb24gaW4gdGhlIFVJLlxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJTY3JvbGxQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBOZ1pvbmUuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpO1xuICAgIGNvbnN0IHZpZXdwb3J0U2l6ZSA9IHRoaXMudmlld3BvcnRTaXplO1xuICAgIGNvbnN0IHZpZXdwb3J0Q2xpZW50U2l6ZSA9IHRoaXMudmlld3BvcnRDbGllbnRTaXplO1xuICAgIGNvbnN0IHRodW1iUG9zaXRpb25GciA9IHRoaXMuc2Nyb2xsUG9zaXRpb24gLyB2aWV3cG9ydENsaWVudFNpemU7XG4gICAgY29uc3QgdGh1bWJTaXplRnIgPSB2aWV3cG9ydFNpemUgLyB2aWV3cG9ydENsaWVudFNpemU7XG4gICAgY29uc3Qgb3ZlcmZsb3cgPSB2aWV3cG9ydENsaWVudFNpemUgPiB2aWV3cG9ydFNpemU7XG5cbiAgICBpZiAodGh1bWJQb3NpdGlvbkZyICE9PSB0aGlzLl90aHVtYlBvc2l0aW9uRnIgfHwgdGh1bWJTaXplRnIgIT09IHRoaXMuX3RodW1iU2l6ZUZyKSB7XG4gICAgICB0aGlzLl90aHVtYlBvc2l0aW9uRnIgPSB0aHVtYlBvc2l0aW9uRnI7XG4gICAgICB0aGlzLl90aHVtYlNpemVGciA9IHRodW1iU2l6ZUZyO1xuICAgICAgdGhpcy5zZXRDc3NWYXJpYWJsZSgnLS3JtXNjaS1zY3JvbGxiYXItdGh1bWItcG9zaXRpb24tZnInLCB0aHVtYlBvc2l0aW9uRnIpO1xuICAgICAgdGhpcy5zZXRDc3NWYXJpYWJsZSgnLS3JtXNjaS1zY3JvbGxiYXItdGh1bWItc2l6ZS1mcicsIHRodW1iU2l6ZUZyKTtcbiAgICB9XG5cbiAgICBpZiAob3ZlcmZsb3cgIT09IHRoaXMuX292ZXJmbG93KSB7XG4gICAgICB0aGlzLl9vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgb3ZlcmZsb3cgPyB0aGlzLl9ob3N0Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnb3ZlcmZsb3cnKSA6IHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdvdmVyZmxvdycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgQ1NTIHZhcmlhYmxlcyB1c2VkIGZvciByZW5kZXJpbmcgdGhlIHNjcm9sbCBwb3NpdGlvbiBpbiB0aGUgVUkuXG4gICAqL1xuICBwcml2YXRlIHVuc2V0U2Nyb2xsUG9zaXRpb24oKTogdm9pZCB7XG4gICAgTmdab25lLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKTtcbiAgICB0aGlzLl90aHVtYlBvc2l0aW9uRnIgPSAwO1xuICAgIHRoaXMuX3RodW1iU2l6ZUZyID0gMDtcbiAgICB0aGlzLl9vdmVyZmxvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2V0Q3NzVmFyaWFibGUoJy0tybVzY2ktc2Nyb2xsYmFyLXRodW1iLXBvc2l0aW9uLWZyJywgMCk7XG4gICAgdGhpcy5zZXRDc3NWYXJpYWJsZSgnLS3JtXNjaS1zY3JvbGxiYXItdGh1bWItc2l6ZS1mcicsIDApO1xuICAgIHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdvdmVyZmxvdycpO1xuICB9XG5cbiAgLyogQGRvY3MtcHJpdmF0ZSAqL1xuICBwdWJsaWMgb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLl9sYXN0RHJhZ1Bvc2l0aW9uID0gdGhpcy52ZXJ0aWNhbCA/IGV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWSA6IGV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWDtcbiAgfVxuXG4gIC8qIEBkb2NzLXByaXZhdGUgKi9cbiAgcHVibGljIG9uVG91Y2hNb3ZlKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IG5ld0RyYWdQb3NpdGlvblB4ID0gdGhpcy52ZXJ0aWNhbCA/IGV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWSA6IGV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWDtcbiAgICBjb25zdCBzY3JvbGxiYXJQYW5QeCA9IG5ld0RyYWdQb3NpdGlvblB4IC0gdGhpcy5fbGFzdERyYWdQb3NpdGlvbiE7XG4gICAgY29uc3Qgdmlld3BvcnRQYW5QeCA9IHRoaXMudG9WaWV3cG9ydFBhblB4KHNjcm9sbGJhclBhblB4KTtcbiAgICB0aGlzLl9sYXN0RHJhZ1Bvc2l0aW9uID0gbmV3RHJhZ1Bvc2l0aW9uUHg7XG4gICAgdGhpcy5tb3ZlVmlld3BvcnRDbGllbnQodmlld3BvcnRQYW5QeCk7XG4gIH1cblxuICAvKiBAZG9jcy1wcml2YXRlICovXG4gIHB1YmxpYyBvblRvdWNoRW5kKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLl9sYXN0RHJhZ1Bvc2l0aW9uID0gbnVsbDtcbiAgfVxuXG4gIC8qIEBkb2NzLXByaXZhdGUgKi9cbiAgcHVibGljIG9uTW91c2VEb3duKG1vdXNlZG93bkV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKG1vdXNlZG93bkV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG1vdXNlZG93bkV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5fbGFzdERyYWdQb3NpdGlvbiA9IHRoaXMudmVydGljYWwgPyBtb3VzZWRvd25FdmVudC5zY3JlZW5ZIDogbW91c2Vkb3duRXZlbnQuc2NyZWVuWDtcblxuICAgIC8vIExpc3RlbiBmb3IgJ21vdXNlbW92ZScgZXZlbnRzXG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBtb3VzZW1vdmVMaXN0ZW5lciA9IG1lcmdlKGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLl9kb2N1bWVudCwgJ21vdXNlbW92ZScpLCBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZG9jdW1lbnQsICdzY2ktbW91c2Vtb3ZlJykpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUobW91c2Vtb3ZlRXZlbnQgPT4ge1xuICAgICAgICAgIG1vdXNlbW92ZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBjb25zdCBuZXdEcmFnUG9zaXRpb25QeCA9IHRoaXMudmVydGljYWwgPyBtb3VzZW1vdmVFdmVudC5zY3JlZW5ZIDogbW91c2Vtb3ZlRXZlbnQuc2NyZWVuWDtcbiAgICAgICAgICBjb25zdCBzY3JvbGxiYXJQYW5QeCA9IG5ld0RyYWdQb3NpdGlvblB4IC0gdGhpcy5fbGFzdERyYWdQb3NpdGlvbiE7XG4gICAgICAgICAgY29uc3Qgdmlld3BvcnRQYW5QeCA9IHRoaXMudG9WaWV3cG9ydFBhblB4KHNjcm9sbGJhclBhblB4KTtcbiAgICAgICAgICB0aGlzLl9sYXN0RHJhZ1Bvc2l0aW9uID0gbmV3RHJhZ1Bvc2l0aW9uUHg7XG4gICAgICAgICAgdGhpcy5tb3ZlVmlld3BvcnRDbGllbnQodmlld3BvcnRQYW5QeCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBMaXN0ZW4gZm9yICdtb3VzZXVwJyBldmVudHM7IHVzZSAnY2FwdHVyZSBwaGFzZScgYW5kICdzdG9wIHByb3BhZ2F0aW9uJyB0byBub3QgY2xvc2Ugb3ZlcmxheXNcbiAgICAgIG1lcmdlKGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLl9kb2N1bWVudCwgJ21vdXNldXAnLCB7Y2FwdHVyZTogdHJ1ZX0pLCBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZG9jdW1lbnQsICdzY2ktbW91c2V1cCcpKVxuICAgICAgICAucGlwZShmaXJzdCgpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKG1vdXNldXBFdmVudCA9PiB7XG4gICAgICAgICAgbW91c2V1cEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIG1vdXNlbW92ZUxpc3RlbmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5fbGFzdERyYWdQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyogQGRvY3MtcHJpdmF0ZSAqL1xuICBwdWJsaWMgb25TY3JvbGxUcmFja01vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogdm9pZCB7XG4gICAgY29uc3Qgc2lnbnVtID0gKGRpcmVjdGlvbiA9PT0gJ3VwJyA/IC0xIDogKzEpO1xuICAgIHRoaXMuc2Nyb2xsV2hpbGVNb3VzZURvd24odGhpcy50b1ZpZXdwb3J0UGFuUHgoc2lnbnVtICogdGhpcy50aHVtYlNpemUpLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvamVjdHMgdGhlIGdpdmVuIHNjcm9sbGJhciBzY3JvbGwgcGl4ZWxzIGludG8gdmlld3BvcnQgc2Nyb2xsIHBpeGVscy5cbiAgICovXG4gIHByaXZhdGUgdG9WaWV3cG9ydFBhblB4KHNjcm9sbGJhclBhblB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHNjcm9sbFJhbmdlUHggPSB0aGlzLnRyYWNrU2l6ZSAtIHRoaXMudGh1bWJTaXplO1xuICAgIGNvbnN0IHNjcm9sbFJhdGlvID0gc2Nyb2xsYmFyUGFuUHggLyBzY3JvbGxSYW5nZVB4O1xuICAgIHJldHVybiBzY3JvbGxSYXRpbyAqICh0aGlzLnZpZXdwb3J0Q2xpZW50U2l6ZSAtIHRoaXMudmlld3BvcnRTaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgdmlld3BvcnQgY2xpZW50IGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVycyBvZiBwaXhlbHMuXG4gICAqL1xuICBwcml2YXRlIG1vdmVWaWV3cG9ydENsaWVudCh2aWV3cG9ydFBhblB4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xuICAgICAgdGhpcy5fdmlld3BvcnQuc2Nyb2xsVG9wICs9IHZpZXdwb3J0UGFuUHg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fdmlld3BvcnQuc2Nyb2xsTGVmdCArPSB2aWV3cG9ydFBhblB4O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbnRlbnQgb3ZlcmZsb3dzLlxuICAgKi9cbiAgcHVibGljIGdldCBvdmVyZmxvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmZsb3c7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xscyBjb250aW51b3VzbHkgd2hpbGUgaG9sZGluZyB0aGUgbW91c2UgcHJlc3NlZCwgb3IgdW50aWwgdGhlIG1vdXNlIGxlYXZlcyB0aGUgc2Nyb2xsdHJhY2suXG4gICAqL1xuICBwcml2YXRlIHNjcm9sbFdoaWxlTW91c2VEb3duKHZpZXdwb3J0U2Nyb2xsUHg6IG51bWJlciwgbW91c2Vkb3duRXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBUaGUgYEV2ZW50VGFyZ2V0YCB0eXBlIG9mIGBFdmVudC50YXJnZXRgIGlzIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIGBGcm9tRXZlbnRUYXJnZXRgIHVzZWQgaW4gYGZyb21FdmVudGAuXG4gICAgLy8gVGhpcyB3aWxsIGJlIGZpeGVkIGluIHJ4anMgdmVyc2lvbiA3LjAuMC4gUmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL1JlYWN0aXZlWC9yeGpzL2NvbW1pdC81ZjAyMmQ3ODQ1NzA2ODQ2MzJlNmZkNWFlMjQ3ZmMyNTllZTM0YzRiXG4gICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICBjb25zdCBzY3JvbGxUcmFja0VsZW1lbnQgPSBtb3VzZWRvd25FdmVudC50YXJnZXQgYXMgRWxlbWVudDtcblxuICAgIC8vIHNjcm9sbCBjb250aW51b3VzbHkgZXZlcnkgNTBtcyBhZnRlciBhbiBpbml0aWFsIGRlbGF5IG9mIDI1MG1zXG4gICAgdGltZXIoMjUwLCA1MClcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBjb250aW51ZSBjaGFpbiB3aXRoIGxhdGVzdCBtb3VzZSBldmVudFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbShtZXJnZShvZihtb3VzZWRvd25FdmVudCksIGZyb21FdmVudDxNb3VzZUV2ZW50PihzY3JvbGxUcmFja0VsZW1lbnQsICdtb3VzZW1vdmUnKSksICh0aWNrLCBldmVudCkgPT4gZXZlbnQpLFxuICAgICAgICAvLyBzdGFydCBpbW1lZGlhdGVseVxuICAgICAgICBzdGFydFdpdGgobW91c2Vkb3duRXZlbnQpLFxuICAgICAgICAvLyBzdG9wIHNjcm9sbGluZyBpZiB0aGUgdGh1bWIgaGl0cyB0aGUgbW91c2UgcG9pbnRlciBwb3NpdGlvblxuICAgICAgICB0YWtlV2hpbGUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiBzY3JvbGxUcmFja0VsZW1lbnQgPT09IHRoaXMuX2RvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSkpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTApLFxuICAgICAgICAvLyBzdG9wIHNjcm9sbGluZyBvbiBtb3VzZW91dCBvciBtb3VzZXVwXG4gICAgICAgIHRha2VVbnRpbChtZXJnZShmcm9tRXZlbnQoc2Nyb2xsVHJhY2tFbGVtZW50LCAnbW91c2VvdXQnKSwgZnJvbUV2ZW50KHNjcm9sbFRyYWNrRWxlbWVudCwgJ21vdXNldXAnKSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubW92ZVZpZXdwb3J0Q2xpZW50KHZpZXdwb3J0U2Nyb2xsUHgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbmV2ZXIgdGhlIHZpZXdwb3J0IHNjcm9sbHMuXG4gICAqL1xuICBwcml2YXRlIHZpZXdwb3J0U2Nyb2xsQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50KHRoaXMuX3ZpZXdwb3J0LCAnc2Nyb2xsJywge3Bhc3NpdmU6IHRydWV9KS5waXBlKG1hcCgoKSA9PiB1bmRlZmluZWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBvbiBzdWJzY3JpcHRpb24sIGFuZCB0aGVuIGVhY2ggdGltZSB0aGUgc2l6ZSBvZiB0aGUgdmlld3BvcnQgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgdmlld3BvcnREaW1lbnNpb25DaGFuZ2UkKG9wdGlvbnM6IHtkZWJvdW5jZVRpbWU6IG51bWJlcn0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gZnJvbURpbWVuc2lvbiQodGhpcy5fdmlld3BvcnQpXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gRGVib3VuY2luZyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGluIHRoZSBjb250ZXh0IG9mIEFuZ3VsYXIgYW5pbWF0aW9ucywgc2luY2UgdGhleSBjb250aW51b3VzbHlcbiAgICAgICAgLy8gdHJpZ2dlciByZXNpemUgZXZlbnRzLiBEZWJvdW5jaW5nIHByZXZlbnRzIHRoZSBzY3JvbGxiYXIgZnJvbSBmbGlja2VyaW5nLCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgdXNlclxuICAgICAgICAvLyBleHBhbmRzIGEgcGFuZWwgdGhhdCBjb250YWlucyBhIHZpZXdwb3J0LlxuICAgICAgICBkZWJvdW5jZVRpbWUob3B0aW9ucy5kZWJvdW5jZVRpbWUpLFxuICAgICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgb24gc3Vic2NyaXB0aW9uLCBhbmQgdGhlbiBlYWNoIHRpbWUgdGhlIHNpemUgb3Igc3R5bGUgcHJvcGVydHkgb2YgdGhlIHZpZXdwb3J0IGNsaWVudCBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSB2aWV3cG9ydENsaWVudERpbWVuc2lvbkNoYW5nZSQob3B0aW9uczoge2RlYm91bmNlVGltZTogbnVtYmVyfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuJCh0aGlzLl92aWV3cG9ydClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoY2hpbGRyZW4gPT4gbWVyZ2UoLi4uY2hpbGRyZW4ubWFwKGNoaWxkID0+IG1lcmdlKFxuICAgICAgICAgIGZyb21EaW1lbnNpb24kKGNoaWxkKSxcbiAgICAgICAgICAvLyBPYnNlcnZlIHN0eWxlIG11dGF0aW9ucyBzaW5jZSBzb21lIHRyYW5zZm9ybWF0aW9ucyBjaGFuZ2UgdGhlIHNjcm9sbCBwb3NpdGlvbiB3aXRob3V0IG5lY2Vzc2FyaWx5IHRyaWdnZXJpbmcgYSBkaW1lbnNpb24gY2hhbmdlLFxuICAgICAgICAgIC8vIGUuZy4sIGBzY2FsZWAgb3IgYHRyYW5zbGF0ZWAgdXNlZCBieSBzb21lIHZpcnR1YWwgc2Nyb2xsIGltcGxlbWVudGF0aW9uc1xuICAgICAgICAgIGZyb21NdXRhdGlvbiQoY2hpbGQsIHtzdWJ0cmVlOiBmYWxzZSwgY2hpbGRMaXN0OiBmYWxzZSwgYXR0cmlidXRlRmlsdGVyOiBbJ3N0eWxlJ119KSksXG4gICAgICAgICkpKSxcbiAgICAgICAgLy8gRGVib3VuY2luZyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGluIHRoZSBjb250ZXh0IG9mIEFuZ3VsYXIgYW5pbWF0aW9ucywgc2luY2UgdGhleSBjb250aW51b3VzbHlcbiAgICAgICAgLy8gdHJpZ2dlciByZXNpemUgZXZlbnRzLiBEZWJvdW5jaW5nIHByZXZlbnRzIHRoZSBzY3JvbGxiYXIgZnJvbSBmbGlja2VyaW5nLCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgdXNlclxuICAgICAgICAvLyBleHBhbmRzIGEgcGFuZWwgdGhhdCBjb250YWlucyBhIHZpZXdwb3J0LlxuICAgICAgICBkZWJvdW5jZVRpbWUob3B0aW9ucy5kZWJvdW5jZVRpbWUpLFxuICAgICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIGNoaWxkcmVuIG9mIHRoZSBwYXNzZWQgZWxlbWVudCwgYW5kIHRoZW4gZWFjaCB0aW1lIGNoaWxkIGVsZW1lbnRzIGFyZSBhZGRlZCBvciByZW1vdmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBjaGlsZHJlbiQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPEhUTUxFbGVtZW50W10+IHtcbiAgICByZXR1cm4gZnJvbU11dGF0aW9uJChlbGVtZW50LCB7c3VidHJlZTogZmFsc2UsIGNoaWxkTGlzdDogdHJ1ZX0pXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCBhcyB2b2lkKSxcbiAgICAgICAgbWFwKCgpID0+IEFycmF5LmZyb20oZWxlbWVudC5jaGlsZHJlbikpLFxuICAgICAgICBmaWx0ZXJBcnJheSgoY2hpbGQ6IEVsZW1lbnQpOiBjaGlsZCBpcyBIVE1MRWxlbWVudCA9PiBjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldENzc1ZhcmlhYmxlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5faG9zdC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdmlld3BvcnRTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdwb3J0ID8gKHRoaXMudmVydGljYWwgPyB0aGlzLl92aWV3cG9ydC5jbGllbnRIZWlnaHQgOiB0aGlzLl92aWV3cG9ydC5jbGllbnRXaWR0aCkgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdmlld3BvcnRDbGllbnRTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdwb3J0ID8gKHRoaXMudmVydGljYWwgPyB0aGlzLl92aWV3cG9ydC5zY3JvbGxIZWlnaHQgOiB0aGlzLl92aWV3cG9ydC5zY3JvbGxXaWR0aCkgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc2Nyb2xsUG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnQgPyAodGhpcy52ZXJ0aWNhbCA/IHRoaXMuX3ZpZXdwb3J0LnNjcm9sbFRvcCA6IHRoaXMuX3ZpZXdwb3J0LnNjcm9sbExlZnQpIDogMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHRodW1iU2l6ZSgpOiBudW1iZXIge1xuICAgIGNvbnN0IHRodW1iRWxlbWVudCA9IHRoaXMudGh1bWJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuIHRoaXMudmVydGljYWwgPyB0aHVtYkVsZW1lbnQuY2xpZW50SGVpZ2h0IDogdGh1bWJFbGVtZW50LmNsaWVudFdpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdHJhY2tTaXplKCk6IG51bWJlciB7XG4gICAgY29uc3QgdHJhY2tFbGVtZW50ID0gdGhpcy5faG9zdC5uYXRpdmVFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8gdHJhY2tFbGVtZW50LmNsaWVudEhlaWdodCA6IHRyYWNrRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgfVxuXG4gIC8qIEBkb2NzLXByaXZhdGUgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxufVxuIiwiPCEtLSBzY3JvbGx0cmFjayB0byBtb3ZlIHRoZSB2aWV3cG9ydCBjbGllbnQgdXB3YXJkcyAocGFnaW5nKSAtLT5cbjxkaXYgY2xhc3M9XCJzY3JvbGx0cmFjay1zdGFydFwiIChtb3VzZWRvd24pPVwib25TY3JvbGxUcmFja01vdXNlRG93bigkZXZlbnQsICd1cCcpXCI+PC9kaXY+XG5cbjwhLS0gc2Nyb2xsdGh1bWIgLS0+XG48ZGl2ICN0aHVtYl9oYW5kbGVcbiAgICAgY2xhc3M9XCJ0aHVtYi1oYW5kbGVcIlxuICAgICBbY2xhc3MudmVydGljYWxdPVwidmVydGljYWxcIlxuICAgICBbY2xhc3MuaG9yaXpvbnRhbF09XCJob3Jpem9udGFsXCJcbiAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaFN0YXJ0KCRldmVudClcIlxuICAgICAodG91Y2htb3ZlKT1cIm9uVG91Y2hNb3ZlKCRldmVudClcIlxuICAgICAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCJcbiAgICAgKHRvdWNoY2FuY2VsKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwidGh1bWJcIlxuICAgICAgIFtjbGFzcy52ZXJ0aWNhbF09XCJ2ZXJ0aWNhbFwiXG4gICAgICAgW2NsYXNzLmhvcml6b250YWxdPVwiaG9yaXpvbnRhbFwiPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIHNjcm9sbHRyYWNrIHRvIG1vdmUgdGhlIHZpZXdwb3J0IGNsaWVudCBkb3dud2FyZHMgKHBhZ2luZykgLS0+XG48ZGl2IGNsYXNzPVwic2Nyb2xsdHJhY2stZW5kXCIgKG1vdXNlZG93bik9XCJvblNjcm9sbFRyYWNrTW91c2VEb3duKCRldmVudCwgJ2Rvd24nKVwiPjwvZGl2PlxuIl19
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvdmlld3BvcnQvc3JjL3Njcm9sbGJhci9zY3JvbGxiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy92aWV3cG9ydC9zcmMvc2Nyb2xsYmFyL3Njcm9sbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwSCxPQUFPLEVBQUMsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUUsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBRXRFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQVFILE1BQU0sT0FBTyxxQkFBcUI7SUFFaEM7Ozs7Ozs7O09BUUc7YUFDb0Isa0NBQTZCLEdBQUcsRUFBRSxBQUFMLENBQU07SUFlMUQsSUFDVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxT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QUM5QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDOUUsQ0FBQztJQUVELG1CQUFtQjtJQUNaLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQW5VVSxxQkFBcUIsNENBMkRaLFFBQVE7a0dBM0RqQixxQkFBcUIsNFpDaERsQyw0eUJBcUJBOzsyRkQyQmEscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJOzswQkE2REgsTUFBTTsyQkFBQyxRQUFROzhEQW5DckIsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUk5QixRQUFRO3NCQURsQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFNbEIsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBTXBCLFNBQVM7c0JBRG5CLFdBQVc7dUJBQUMsaUJBQWlCO2dCQVd2QixTQUFTO3NCQURmLEtBQUs7Z0JBT0ssV0FBVztzQkFEckIsS0FBSzt1QkFBQyxFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBmaXJzdCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YWtlV2hpbGUsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2Zyb21EaW1lbnNpb24kLCBmcm9tTXV0YXRpb24kfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vYnNlcnZhYmxlJztcbmltcG9ydCB7ZmlsdGVyQXJyYXksIHN1YnNjcmliZUluc2lkZX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBSZW5kZXJzIGEgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBzY3JvbGxiYXIuXG4gKlxuICogVGhlIHNjcm9sbGJhciBmZWF0dXJlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHk6XG4gKiAtIGFsbG93cyB0byBtb3ZlIHRoZSB0aHVtYiBieSBtb3VzZSBvciB0b3VjaFxuICogLSBlbmxhcmdlcyB0aGUgdGh1bWIgaWYgdGhlIG1vdXNlIHBvaW50ZXIgaXMgbmVhciB0aGUgdGh1bWJcbiAqIC0gYWxsb3dzIHBhZ2luZyBvbiBtb3VzZWRvd24gb24gdGhlIHNjcm9sbCB0cmFja1xuICpcbiAqICMjIyBTdHlsaW5nOlxuICpcbiAqIFRvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBsb29rIG9mIFNDSU9OIGNvbXBvbmVudHMgb3Igc3VwcG9ydCBkaWZmZXJlbnQgdGhlbWVzLCBjb25maWd1cmUgdGhlIGBAc2Npb24vY29tcG9uZW50c2AgU0NTUyBtb2R1bGUgaW4gYHN0eWxlcy5zY3NzYC5cbiAqIFRvIHN0eWxlIGEgc3BlY2lmaWMgYHNjaS1zY3JvbGxiYXJgIGNvbXBvbmVudCwgdGhlIGZvbGxvd2luZyBDU1MgdmFyaWFibGVzIGNhbiBiZSBzZXQgZGlyZWN0bHkgb24gdGhlIGNvbXBvbmVudC5cbiAqXG4gKiAtIHNjaS1zY3JvbGxiYXItY29sb3I6ICAgIFNldHMgdGhlIGNvbG9yIG9mIHRoZSBzY3JvbGxiYXIuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBjc3NcbiAqXG4gKiBzY2ktc2Nyb2xsYmFyIHtcbiAqICAgLS1zY2ktc2Nyb2xsYmFyLWNvbG9yOiBibHVlO1xuICogfVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NjaS1zY3JvbGxiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nyb2xsYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nyb2xsYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTY2lTY3JvbGxiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGZvciBkZWJvdW5jaW5nIHZpZXdwb3J0IHJlc2l6ZSBldmVudHMgdGhhdCB0cmlnZ2VyIHRoZSBzY3JvbGwgcG9zaXRpb24gY29tcHV0YXRpb24uXG4gICAqXG4gICAqIERlYm91bmNpbmcgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCBpbiB0aGUgY29udGV4dCBvZiBBbmd1bGFyIGFuaW1hdGlvbnMsIHNpbmNlIHRoZXkgY29udGludW91c2x5XG4gICAqIHRyaWdnZXIgcmVzaXplIGV2ZW50cy4gRGVib3VuY2luZyBwcmV2ZW50cyB0aGUgc2Nyb2xsYmFyIGZyb20gZmxpY2tlcmluZywgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHVzZXJcbiAgICogZXhwYW5kcyBhIHBhbmVsIHRoYXQgY29udGFpbnMgYSB2aWV3cG9ydC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FID0gNTA7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF92aWV3cG9ydCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF92aWV3cG9ydENoYW5nZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9sYXN0RHJhZ1Bvc2l0aW9uOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9vdmVyZmxvdyA9IGZhbHNlO1xuICBwcml2YXRlIF90aHVtYlNpemVGciA9IDA7XG4gIHByaXZhdGUgX3RodW1iUG9zaXRpb25GciA9IDA7XG5cbiAgLyogQGRvY3MtcHJpdmF0ZSAqL1xuICBAVmlld0NoaWxkKCd0aHVtYl9oYW5kbGUnLCB7c3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHRodW1iRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudmVydGljYWwnKVxuICBwdWJsaWMgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbiA9PT0gJ3ZzY3JvbGwnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ob3Jpem9udGFsJylcbiAgcHVibGljIGdldCBob3Jpem9udGFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hzY3JvbGwnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zY3JvbGxpbmcnKVxuICBwdWJsaWMgZ2V0IHNjcm9sbGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGFzdERyYWdQb3NpdGlvbiAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2Nyb2xsYmFyLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBpZiBub3Qgc3BlY2lmaWVkLCByZW5kZXJzIGEgdmVydGljYWwgc2Nyb2xsYmFyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRpcmVjdGlvbjogJ3ZzY3JvbGwnIHwgJ2hzY3JvbGwnID0gJ3ZzY3JvbGwnO1xuXG4gIC8qKlxuICAgKiBUaGUgdmlld3BvcnQgdG8gcHJvdmlkZSBzY3JvbGxiYXJzIGZvci5cbiAgICovXG4gIEBJbnB1dCh7YWxpYXM6ICd2aWV3cG9ydCcsIHJlcXVpcmVkOiB0cnVlfSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIHB1YmxpYyBzZXQgc2V0Vmlld3BvcnQodmlld3BvcnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5fdmlld3BvcnQgPSB2aWV3cG9ydDtcbiAgICB0aGlzLl92aWV3cG9ydENoYW5nZSQubmV4dCgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfem9uZTogTmdab25lKSB7XG4gICAgdGhpcy5fdmlld3BvcnRDaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuX3ZpZXdwb3J0KSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy52aWV3cG9ydFNjcm9sbENoYW5nZSQoKSxcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnREaW1lbnNpb25DaGFuZ2UkKHtkZWJvdW5jZVRpbWU6IFNjaVNjcm9sbGJhckNvbXBvbmVudC5WSUVXUE9SVF9SRVNJWkVfREVCT1VOQ0VfVElNRX0pLFxuICAgICAgICAgICAgdGhpcy52aWV3cG9ydENsaWVudERpbWVuc2lvbkNoYW5nZSQoe2RlYm91bmNlVGltZTogU2NpU2Nyb2xsYmFyQ29tcG9uZW50LlZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN1YnNjcmliZUluc2lkZShjb250aW51ZUZuID0+IHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoY29udGludWVGbikpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl92aWV3cG9ydCkge1xuICAgICAgICAgIHRoaXMucmVuZGVyU2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVuc2V0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIHNjcm9sbCBwb3NpdGlvbiBhbmQgdXBkYXRlcyBDU1MgdmFyaWFibGVzIHRvIHJlbmRlciB0aGUgc2Nyb2xsIHBvc2l0aW9uIGluIHRoZSBVSS5cbiAgICovXG4gIHByaXZhdGUgcmVuZGVyU2Nyb2xsUG9zaXRpb24oKTogdm9pZCB7XG4gICAgTmdab25lLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKTtcbiAgICBjb25zdCB2aWV3cG9ydFNpemUgPSB0aGlzLnZpZXdwb3J0U2l6ZTtcbiAgICBjb25zdCB2aWV3cG9ydENsaWVudFNpemUgPSB0aGlzLnZpZXdwb3J0Q2xpZW50U2l6ZTtcbiAgICBjb25zdCB0aHVtYlBvc2l0aW9uRnIgPSB0aGlzLnNjcm9sbFBvc2l0aW9uIC8gdmlld3BvcnRDbGllbnRTaXplO1xuICAgIGNvbnN0IHRodW1iU2l6ZUZyID0gdmlld3BvcnRTaXplIC8gdmlld3BvcnRDbGllbnRTaXplO1xuICAgIGNvbnN0IG92ZXJmbG93ID0gdmlld3BvcnRDbGllbnRTaXplID4gdmlld3BvcnRTaXplO1xuXG4gICAgaWYgKHRodW1iUG9zaXRpb25GciAhPT0gdGhpcy5fdGh1bWJQb3NpdGlvbkZyIHx8IHRodW1iU2l6ZUZyICE9PSB0aGlzLl90aHVtYlNpemVGcikge1xuICAgICAgdGhpcy5fdGh1bWJQb3NpdGlvbkZyID0gdGh1bWJQb3NpdGlvbkZyO1xuICAgICAgdGhpcy5fdGh1bWJTaXplRnIgPSB0aHVtYlNpemVGcjtcbiAgICAgIHRoaXMuc2V0Q3NzVmFyaWFibGUoJy0tybVzY2ktc2Nyb2xsYmFyLXRodW1iLXBvc2l0aW9uLWZyJywgdGh1bWJQb3NpdGlvbkZyKTtcbiAgICAgIHRoaXMuc2V0Q3NzVmFyaWFibGUoJy0tybVzY2ktc2Nyb2xsYmFyLXRodW1iLXNpemUtZnInLCB0aHVtYlNpemVGcik7XG4gICAgfVxuXG4gICAgaWYgKG92ZXJmbG93ICE9PSB0aGlzLl9vdmVyZmxvdykge1xuICAgICAgdGhpcy5fb3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgIG92ZXJmbG93ID8gdGhpcy5faG9zdC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ292ZXJmbG93JykgOiB0aGlzLl9ob3N0Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcmZsb3cnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIENTUyB2YXJpYWJsZXMgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBzY3JvbGwgcG9zaXRpb24gaW4gdGhlIFVJLlxuICAgKi9cbiAgcHJpdmF0ZSB1bnNldFNjcm9sbFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIE5nWm9uZS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCk7XG4gICAgdGhpcy5fdGh1bWJQb3NpdGlvbkZyID0gMDtcbiAgICB0aGlzLl90aHVtYlNpemVGciA9IDA7XG4gICAgdGhpcy5fb3ZlcmZsb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNldENzc1ZhcmlhYmxlKCctLcm1c2NpLXNjcm9sbGJhci10aHVtYi1wb3NpdGlvbi1mcicsIDApO1xuICAgIHRoaXMuc2V0Q3NzVmFyaWFibGUoJy0tybVzY2ktc2Nyb2xsYmFyLXRodW1iLXNpemUtZnInLCAwKTtcbiAgICB0aGlzLl9ob3N0Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcmZsb3cnKTtcbiAgfVxuXG4gIC8qIEBkb2NzLXByaXZhdGUgKi9cbiAgcHVibGljIG9uVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5fbGFzdERyYWdQb3NpdGlvbiA9IHRoaXMudmVydGljYWwgPyBldmVudC50b3VjaGVzWzBdLnNjcmVlblkgOiBldmVudC50b3VjaGVzWzBdLnNjcmVlblg7XG4gIH1cblxuICAvKiBAZG9jcy1wcml2YXRlICovXG4gIHB1YmxpYyBvblRvdWNoTW92ZShldmVudDogVG91Y2hFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBuZXdEcmFnUG9zaXRpb25QeCA9IHRoaXMudmVydGljYWwgPyBldmVudC50b3VjaGVzWzBdLnNjcmVlblkgOiBldmVudC50b3VjaGVzWzBdLnNjcmVlblg7XG4gICAgY29uc3Qgc2Nyb2xsYmFyUGFuUHggPSBuZXdEcmFnUG9zaXRpb25QeCAtIHRoaXMuX2xhc3REcmFnUG9zaXRpb24hO1xuICAgIGNvbnN0IHZpZXdwb3J0UGFuUHggPSB0aGlzLnRvVmlld3BvcnRQYW5QeChzY3JvbGxiYXJQYW5QeCk7XG4gICAgdGhpcy5fbGFzdERyYWdQb3NpdGlvbiA9IG5ld0RyYWdQb3NpdGlvblB4O1xuICAgIHRoaXMubW92ZVZpZXdwb3J0Q2xpZW50KHZpZXdwb3J0UGFuUHgpO1xuICB9XG5cbiAgLyogQGRvY3MtcHJpdmF0ZSAqL1xuICBwdWJsaWMgb25Ub3VjaEVuZChldmVudDogVG91Y2hFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5fbGFzdERyYWdQb3NpdGlvbiA9IG51bGw7XG4gIH1cblxuICAvKiBAZG9jcy1wcml2YXRlICovXG4gIHB1YmxpYyBvbk1vdXNlRG93bihtb3VzZWRvd25FdmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChtb3VzZWRvd25FdmVudC5idXR0b24gIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtb3VzZWRvd25FdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuX2xhc3REcmFnUG9zaXRpb24gPSB0aGlzLnZlcnRpY2FsID8gbW91c2Vkb3duRXZlbnQuc2NyZWVuWSA6IG1vdXNlZG93bkV2ZW50LnNjcmVlblg7XG5cbiAgICAvLyBMaXN0ZW4gZm9yICdtb3VzZW1vdmUnIGV2ZW50c1xuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgbW91c2Vtb3ZlTGlzdGVuZXIgPSBtZXJnZShmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZG9jdW1lbnQsICdtb3VzZW1vdmUnKSwgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuX2RvY3VtZW50LCAnc2NpLW1vdXNlbW92ZScpKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKG1vdXNlbW92ZUV2ZW50ID0+IHtcbiAgICAgICAgICBtb3VzZW1vdmVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgY29uc3QgbmV3RHJhZ1Bvc2l0aW9uUHggPSB0aGlzLnZlcnRpY2FsID8gbW91c2Vtb3ZlRXZlbnQuc2NyZWVuWSA6IG1vdXNlbW92ZUV2ZW50LnNjcmVlblg7XG4gICAgICAgICAgY29uc3Qgc2Nyb2xsYmFyUGFuUHggPSBuZXdEcmFnUG9zaXRpb25QeCAtIHRoaXMuX2xhc3REcmFnUG9zaXRpb24hO1xuICAgICAgICAgIGNvbnN0IHZpZXdwb3J0UGFuUHggPSB0aGlzLnRvVmlld3BvcnRQYW5QeChzY3JvbGxiYXJQYW5QeCk7XG4gICAgICAgICAgdGhpcy5fbGFzdERyYWdQb3NpdGlvbiA9IG5ld0RyYWdQb3NpdGlvblB4O1xuICAgICAgICAgIHRoaXMubW92ZVZpZXdwb3J0Q2xpZW50KHZpZXdwb3J0UGFuUHgpO1xuICAgICAgICB9KTtcblxuICAgICAgLy8gTGlzdGVuIGZvciAnbW91c2V1cCcgZXZlbnRzOyB1c2UgJ2NhcHR1cmUgcGhhc2UnIGFuZCAnc3RvcCBwcm9wYWdhdGlvbicgdG8gbm90IGNsb3NlIG92ZXJsYXlzXG4gICAgICBtZXJnZShmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZG9jdW1lbnQsICdtb3VzZXVwJywge2NhcHR1cmU6IHRydWV9KSwgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuX2RvY3VtZW50LCAnc2NpLW1vdXNldXAnKSlcbiAgICAgICAgLnBpcGUoZmlyc3QoKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZShtb3VzZXVwRXZlbnQgPT4ge1xuICAgICAgICAgIG1vdXNldXBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBtb3VzZW1vdmVMaXN0ZW5lci51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMuX2xhc3REcmFnUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qIEBkb2NzLXByaXZhdGUgKi9cbiAgcHVibGljIG9uU2Nyb2xsVHJhY2tNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIGNvbnN0IHNpZ251bSA9IChkaXJlY3Rpb24gPT09ICd1cCcgPyAtMSA6ICsxKTtcbiAgICB0aGlzLnNjcm9sbFdoaWxlTW91c2VEb3duKHRoaXMudG9WaWV3cG9ydFBhblB4KHNpZ251bSAqIHRoaXMudGh1bWJTaXplKSwgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2plY3RzIHRoZSBnaXZlbiBzY3JvbGxiYXIgc2Nyb2xsIHBpeGVscyBpbnRvIHZpZXdwb3J0IHNjcm9sbCBwaXhlbHMuXG4gICAqL1xuICBwcml2YXRlIHRvVmlld3BvcnRQYW5QeChzY3JvbGxiYXJQYW5QeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzY3JvbGxSYW5nZVB4ID0gdGhpcy50cmFja1NpemUgLSB0aGlzLnRodW1iU2l6ZTtcbiAgICBjb25zdCBzY3JvbGxSYXRpbyA9IHNjcm9sbGJhclBhblB4IC8gc2Nyb2xsUmFuZ2VQeDtcbiAgICByZXR1cm4gc2Nyb2xsUmF0aW8gKiAodGhpcy52aWV3cG9ydENsaWVudFNpemUgLSB0aGlzLnZpZXdwb3J0U2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgdGhlIHZpZXdwb3J0IGNsaWVudCBieSB0aGUgc3BlY2lmaWVkIG51bWJlcnMgb2YgcGl4ZWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBtb3ZlVmlld3BvcnRDbGllbnQodmlld3BvcnRQYW5QeDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmVydGljYWwpIHtcbiAgICAgIHRoaXMuX3ZpZXdwb3J0LnNjcm9sbFRvcCArPSB2aWV3cG9ydFBhblB4O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX3ZpZXdwb3J0LnNjcm9sbExlZnQgKz0gdmlld3BvcnRQYW5QeDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBjb250ZW50IG92ZXJmbG93cy5cbiAgICovXG4gIHB1YmxpYyBnZXQgb3ZlcmZsb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJmbG93O1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgY29udGludW91c2x5IHdoaWxlIGhvbGRpbmcgdGhlIG1vdXNlIHByZXNzZWQsIG9yIHVudGlsIHRoZSBtb3VzZSBsZWF2ZXMgdGhlIHNjcm9sbHRyYWNrLlxuICAgKi9cbiAgcHJpdmF0ZSBzY3JvbGxXaGlsZU1vdXNlRG93bih2aWV3cG9ydFNjcm9sbFB4OiBudW1iZXIsIG1vdXNlZG93bkV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gVGhlIGBFdmVudFRhcmdldGAgdHlwZSBvZiBgRXZlbnQudGFyZ2V0YCBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCBgRnJvbUV2ZW50VGFyZ2V0YCB1c2VkIGluIGBmcm9tRXZlbnRgLlxuICAgIC8vIFRoaXMgd2lsbCBiZSBmaXhlZCBpbiByeGpzIHZlcnNpb24gNy4wLjAuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9SZWFjdGl2ZVgvcnhqcy9jb21taXQvNWYwMjJkNzg0NTcwNjg0NjMyZTZmZDVhZTI0N2ZjMjU5ZWUzNGM0YlxuICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgY29uc3Qgc2Nyb2xsVHJhY2tFbGVtZW50ID0gbW91c2Vkb3duRXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQ7XG5cbiAgICAvLyBzY3JvbGwgY29udGludW91c2x5IGV2ZXJ5IDUwbXMgYWZ0ZXIgYW4gaW5pdGlhbCBkZWxheSBvZiAyNTBtc1xuICAgIHRpbWVyKDI1MCwgNTApXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gY29udGludWUgY2hhaW4gd2l0aCBsYXRlc3QgbW91c2UgZXZlbnRcbiAgICAgICAgd2l0aExhdGVzdEZyb20obWVyZ2Uob2YobW91c2Vkb3duRXZlbnQpLCBmcm9tRXZlbnQ8TW91c2VFdmVudD4oc2Nyb2xsVHJhY2tFbGVtZW50LCAnbW91c2Vtb3ZlJykpLCAodGljaywgZXZlbnQpID0+IGV2ZW50KSxcbiAgICAgICAgLy8gc3RhcnQgaW1tZWRpYXRlbHlcbiAgICAgICAgc3RhcnRXaXRoKG1vdXNlZG93bkV2ZW50KSxcbiAgICAgICAgLy8gc3RvcCBzY3JvbGxpbmcgaWYgdGhlIHRodW1iIGhpdHMgdGhlIG1vdXNlIHBvaW50ZXIgcG9zaXRpb25cbiAgICAgICAgdGFrZVdoaWxlKChldmVudDogTW91c2VFdmVudCkgPT4gc2Nyb2xsVHJhY2tFbGVtZW50ID09PSB0aGlzLl9kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwKSxcbiAgICAgICAgLy8gc3RvcCBzY3JvbGxpbmcgb24gbW91c2VvdXQgb3IgbW91c2V1cFxuICAgICAgICB0YWtlVW50aWwobWVyZ2UoZnJvbUV2ZW50KHNjcm9sbFRyYWNrRWxlbWVudCwgJ21vdXNlb3V0JyksIGZyb21FdmVudChzY3JvbGxUcmFja0VsZW1lbnQsICdtb3VzZXVwJykpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm1vdmVWaWV3cG9ydENsaWVudCh2aWV3cG9ydFNjcm9sbFB4KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW5ldmVyIHRoZSB2aWV3cG9ydCBzY3JvbGxzLlxuICAgKi9cbiAgcHJpdmF0ZSB2aWV3cG9ydFNjcm9sbENoYW5nZSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb21FdmVudCh0aGlzLl92aWV3cG9ydCwgJ3Njcm9sbCcsIHtwYXNzaXZlOiB0cnVlfSkucGlwZShtYXAoKCkgPT4gdW5kZWZpbmVkKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgb24gc3Vic2NyaXB0aW9uLCBhbmQgdGhlbiBlYWNoIHRpbWUgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0IGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIHZpZXdwb3J0RGltZW5zaW9uQ2hhbmdlJChvcHRpb25zOiB7ZGVib3VuY2VUaW1lOiBudW1iZXJ9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb21EaW1lbnNpb24kKHRoaXMuX3ZpZXdwb3J0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIERlYm91bmNpbmcgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCBpbiB0aGUgY29udGV4dCBvZiBBbmd1bGFyIGFuaW1hdGlvbnMsIHNpbmNlIHRoZXkgY29udGludW91c2x5XG4gICAgICAgIC8vIHRyaWdnZXIgcmVzaXplIGV2ZW50cy4gRGVib3VuY2luZyBwcmV2ZW50cyB0aGUgc2Nyb2xsYmFyIGZyb20gZmxpY2tlcmluZywgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHVzZXJcbiAgICAgICAgLy8gZXhwYW5kcyBhIHBhbmVsIHRoYXQgY29udGFpbnMgYSB2aWV3cG9ydC5cbiAgICAgICAgZGVib3VuY2VUaW1lKG9wdGlvbnMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZCksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIG9uIHN1YnNjcmlwdGlvbiwgYW5kIHRoZW4gZWFjaCB0aW1lIHRoZSBzaXplIG9yIHN0eWxlIHByb3BlcnR5IG9mIHRoZSB2aWV3cG9ydCBjbGllbnQgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgdmlld3BvcnRDbGllbnREaW1lbnNpb25DaGFuZ2UkKG9wdGlvbnM6IHtkZWJvdW5jZVRpbWU6IG51bWJlcn0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbiQodGhpcy5fdmlld3BvcnQpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGNoaWxkcmVuID0+IG1lcmdlKC4uLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBtZXJnZShcbiAgICAgICAgICBmcm9tRGltZW5zaW9uJChjaGlsZCksXG4gICAgICAgICAgLy8gT2JzZXJ2ZSBzdHlsZSBtdXRhdGlvbnMgc2luY2Ugc29tZSB0cmFuc2Zvcm1hdGlvbnMgY2hhbmdlIHRoZSBzY3JvbGwgcG9zaXRpb24gd2l0aG91dCBuZWNlc3NhcmlseSB0cmlnZ2VyaW5nIGEgZGltZW5zaW9uIGNoYW5nZSxcbiAgICAgICAgICAvLyBlLmcuLCBgc2NhbGVgIG9yIGB0cmFuc2xhdGVgIHVzZWQgYnkgc29tZSB2aXJ0dWFsIHNjcm9sbCBpbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICBmcm9tTXV0YXRpb24kKGNoaWxkLCB7c3VidHJlZTogZmFsc2UsIGNoaWxkTGlzdDogZmFsc2UsIGF0dHJpYnV0ZUZpbHRlcjogWydzdHlsZSddfSkpLFxuICAgICAgICApKSksXG4gICAgICAgIC8vIERlYm91bmNpbmcgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCBpbiB0aGUgY29udGV4dCBvZiBBbmd1bGFyIGFuaW1hdGlvbnMsIHNpbmNlIHRoZXkgY29udGludW91c2x5XG4gICAgICAgIC8vIHRyaWdnZXIgcmVzaXplIGV2ZW50cy4gRGVib3VuY2luZyBwcmV2ZW50cyB0aGUgc2Nyb2xsYmFyIGZyb20gZmxpY2tlcmluZywgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHVzZXJcbiAgICAgICAgLy8gZXhwYW5kcyBhIHBhbmVsIHRoYXQgY29udGFpbnMgYSB2aWV3cG9ydC5cbiAgICAgICAgZGVib3VuY2VUaW1lKG9wdGlvbnMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZCksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjaGlsZHJlbiBvZiB0aGUgcGFzc2VkIGVsZW1lbnQsIGFuZCB0aGVuIGVhY2ggdGltZSBjaGlsZCBlbGVtZW50cyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC5cbiAgICovXG4gIHByaXZhdGUgY2hpbGRyZW4kKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudFtdPiB7XG4gICAgcmV0dXJuIGZyb21NdXRhdGlvbiQoZWxlbWVudCwge3N1YnRyZWU6IGZhbHNlLCBjaGlsZExpc3Q6IHRydWV9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQgYXMgdm9pZCksXG4gICAgICAgIG1hcCgoKSA9PiBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGRyZW4pKSxcbiAgICAgICAgZmlsdGVyQXJyYXkoKGNoaWxkOiBFbGVtZW50KTogY2hpbGQgaXMgSFRNTEVsZW1lbnQgPT4gY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDc3NWYXJpYWJsZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHZpZXdwb3J0U2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydCA/ICh0aGlzLnZlcnRpY2FsID8gdGhpcy5fdmlld3BvcnQuY2xpZW50SGVpZ2h0IDogdGhpcy5fdmlld3BvcnQuY2xpZW50V2lkdGgpIDogMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHZpZXdwb3J0Q2xpZW50U2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydCA/ICh0aGlzLnZlcnRpY2FsID8gdGhpcy5fdmlld3BvcnQuc2Nyb2xsSGVpZ2h0IDogdGhpcy5fdmlld3BvcnQuc2Nyb2xsV2lkdGgpIDogMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNjcm9sbFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdwb3J0ID8gKHRoaXMudmVydGljYWwgPyB0aGlzLl92aWV3cG9ydC5zY3JvbGxUb3AgOiB0aGlzLl92aWV3cG9ydC5zY3JvbGxMZWZ0KSA6IDA7XG4gIH1cblxuICBwcml2YXRlIGdldCB0aHVtYlNpemUoKTogbnVtYmVyIHtcbiAgICBjb25zdCB0aHVtYkVsZW1lbnQgPSB0aGlzLnRodW1iRWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8gdGh1bWJFbGVtZW50LmNsaWVudEhlaWdodCA6IHRodW1iRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHRyYWNrU2l6ZSgpOiBudW1iZXIge1xuICAgIGNvbnN0IHRyYWNrRWxlbWVudCA9IHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gdGhpcy52ZXJ0aWNhbCA/IHRyYWNrRWxlbWVudC5jbGllbnRIZWlnaHQgOiB0cmFja0VsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuICAvKiBAZG9jcy1wcml2YXRlICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gIH1cbn1cbiIsIjwhLS0gc2Nyb2xsdHJhY2sgdG8gbW92ZSB0aGUgdmlld3BvcnQgY2xpZW50IHVwd2FyZHMgKHBhZ2luZykgLS0+XG48ZGl2IGNsYXNzPVwic2Nyb2xsdHJhY2stc3RhcnRcIiAobW91c2Vkb3duKT1cIm9uU2Nyb2xsVHJhY2tNb3VzZURvd24oJGV2ZW50LCAndXAnKVwiPjwvZGl2PlxuXG48IS0tIHNjcm9sbHRodW1iIC0tPlxuPGRpdiAjdGh1bWJfaGFuZGxlXG4gICAgIGNsYXNzPVwidGh1bWItaGFuZGxlXCJcbiAgICAgW2NsYXNzLnZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgW2NsYXNzLmhvcml6b250YWxdPVwiaG9yaXpvbnRhbFwiXG4gICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICh0b3VjaHN0YXJ0KT1cIm9uVG91Y2hTdGFydCgkZXZlbnQpXCJcbiAgICAgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQpXCJcbiAgICAgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiXG4gICAgICh0b3VjaGNhbmNlbCk9XCJvblRvdWNoRW5kKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cInRodW1iXCJcbiAgICAgICBbY2xhc3MudmVydGljYWxdPVwidmVydGljYWxcIlxuICAgICAgIFtjbGFzcy5ob3Jpem9udGFsXT1cImhvcml6b250YWxcIj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBzY3JvbGx0cmFjayB0byBtb3ZlIHRoZSB2aWV3cG9ydCBjbGllbnQgZG93bndhcmRzIChwYWdpbmcpIC0tPlxuPGRpdiBjbGFzcz1cInNjcm9sbHRyYWNrLWVuZFwiIChtb3VzZWRvd24pPVwib25TY3JvbGxUcmFja01vdXNlRG93bigkZXZlbnQsICdkb3duJylcIj48L2Rpdj5cbiJdfQ==
@@ -83,7 +83,7 @@ import * as i2 from "@angular/cdk/scrolling";
83
83
  * }
84
84
  * ```
85
85
  */
86
- class SciViewportComponent {
86
+ export class SciViewportComponent {
87
87
  /** @internal */
88
88
  set setViewport(viewport) {
89
89
  this._viewportElement = coerceElement(viewport);
@@ -260,11 +260,10 @@ class SciViewportComponent {
260
260
  } while (el !== this.host.nativeElement);
261
261
  return offset;
262
262
  }
263
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciViewportComponent, deps: [{ token: i0.ElementRef }, { token: i1.SciNativeScrollbarTrackSizeProvider }], target: i0.ɵɵFactoryTarget.Component }); }
264
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: SciViewportComponent, isStandalone: true, selector: "sci-viewport", inputs: { scrollbarStyle: "scrollbarStyle" }, outputs: { scroll: "scroll" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "setViewport", first: true, predicate: ["viewport"], descendants: true, static: true }, { propertyName: "setViewportClient", first: true, predicate: ["viewport_client"], descendants: true, static: true }], ngImport: i0, template: "<!-- viewport and viewport client -->\n<div #viewport\n class=\"viewport\"\n tabindex=\"-1\"\n sciScrollable [sciScrollableDisplayNativeScrollbar]=\"scrollbarStyle === 'native'\"\n cdkScrollable\n (scroll)=\"onScroll($event)\">\n <div #viewport_client class=\"viewport-client\" part=\"content\">\n <slot></slot>\n </div>\n</div>\n\n<!-- render emulated scrollbars which sit on-top -->\n<ng-container *ngIf=\"scrollbarStyle === 'on-top' && (nativeScrollbarTrackSizeProvider.trackSize$ | async) !== null\">\n <sci-scrollbar [direction]=\"'vscroll'\" [viewport]=\"viewport\" class=\"e2e-vertical\"></sci-scrollbar>\n <sci-scrollbar [direction]=\"'hscroll'\" [viewport]=\"viewport\" class=\"e2e-horizontal\"></sci-scrollbar>\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{--\\275sci-viewport-scrollbar-color: var(--sci-viewport-scrollbar-color, rgb(78, 78, 78));display:grid;grid-template-columns:100%;grid-template-rows:100%;position:relative;overflow:hidden;outline:none}:host:host-context(:not(:hover):not(:active)) sci-scrollbar:not(.scrolling){opacity:0}:host>div.viewport{display:grid;position:relative;outline:none;-webkit-overflow-scrolling:touch}:host>div.viewport>div.viewport-client{display:grid}:host>sci-scrollbar{--sci-scrollbar-color: var(--\\275sci-viewport-scrollbar-color);position:absolute;transition-duration:1s;transition-property:opacity;transition-timing-function:ease-out}:host>sci-scrollbar.vertical{top:0;right:0;bottom:0;left:unset;width:12px}:host>sci-scrollbar.horizontal{top:unset;right:0;bottom:0;left:0;height:12px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: SciScrollableDirective, selector: "[sciScrollable]", inputs: ["sciScrollableDisplayNativeScrollbar"] }, { kind: "component", type: SciScrollbarComponent, selector: "sci-scrollbar", inputs: ["direction", "viewport"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
263
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciViewportComponent, deps: [{ token: i0.ElementRef }, { token: i1.SciNativeScrollbarTrackSizeProvider }], target: i0.ɵɵFactoryTarget.Component }); }
264
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: SciViewportComponent, isStandalone: true, selector: "sci-viewport", inputs: { scrollbarStyle: "scrollbarStyle" }, outputs: { scroll: "scroll" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "setViewport", first: true, predicate: ["viewport"], descendants: true, static: true }, { propertyName: "setViewportClient", first: true, predicate: ["viewport_client"], descendants: true, static: true }], ngImport: i0, template: "<!-- viewport and viewport client -->\n<div #viewport\n class=\"viewport\"\n tabindex=\"-1\"\n sciScrollable [sciScrollableDisplayNativeScrollbar]=\"scrollbarStyle === 'native'\"\n cdkScrollable\n (scroll)=\"onScroll($event)\">\n <div #viewport_client class=\"viewport-client\" part=\"content\">\n <slot></slot>\n </div>\n</div>\n\n<!-- render emulated scrollbars which sit on-top -->\n<ng-container *ngIf=\"scrollbarStyle === 'on-top' && (nativeScrollbarTrackSizeProvider.trackSize$ | async) !== null\">\n <sci-scrollbar [direction]=\"'vscroll'\" [viewport]=\"viewport\" class=\"e2e-vertical\"></sci-scrollbar>\n <sci-scrollbar [direction]=\"'hscroll'\" [viewport]=\"viewport\" class=\"e2e-horizontal\"></sci-scrollbar>\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{--\\275sci-viewport-scrollbar-color: var(--sci-viewport-scrollbar-color, rgb(78, 78, 78));display:grid;grid-template-columns:100%;grid-template-rows:100%;position:relative;overflow:hidden;outline:none}:host:host-context(:not(:hover):not(:active)) sci-scrollbar:not(.scrolling){opacity:0}:host>div.viewport{display:grid;position:relative;outline:none;-webkit-overflow-scrolling:touch}:host>div.viewport>div.viewport-client{display:grid}:host>sci-scrollbar{--sci-scrollbar-color: var(--\\275sci-viewport-scrollbar-color);position:absolute;transition-duration:1s;transition-property:opacity;transition-timing-function:ease-out}:host>sci-scrollbar.vertical{top:0;right:0;bottom:0;left:unset;width:12px}:host>sci-scrollbar.horizontal{top:unset;right:0;bottom:0;left:0;height:12px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: SciScrollableDirective, selector: "[sciScrollable]", inputs: ["sciScrollableDisplayNativeScrollbar"] }, { kind: "component", type: SciScrollbarComponent, selector: "sci-scrollbar", inputs: ["direction", "viewport"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
265
265
  }
266
- export { SciViewportComponent };
267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciViewportComponent, decorators: [{
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciViewportComponent, decorators: [{
268
267
  type: Component,
269
268
  args: [{ selector: 'sci-viewport', encapsulation: ViewEncapsulation.ShadowDom, standalone: true, imports: [
270
269
  NgIf,
@@ -273,7 +272,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
273
272
  SciScrollableDirective,
274
273
  SciScrollbarComponent,
275
274
  ], template: "<!-- viewport and viewport client -->\n<div #viewport\n class=\"viewport\"\n tabindex=\"-1\"\n sciScrollable [sciScrollableDisplayNativeScrollbar]=\"scrollbarStyle === 'native'\"\n cdkScrollable\n (scroll)=\"onScroll($event)\">\n <div #viewport_client class=\"viewport-client\" part=\"content\">\n <slot></slot>\n </div>\n</div>\n\n<!-- render emulated scrollbars which sit on-top -->\n<ng-container *ngIf=\"scrollbarStyle === 'on-top' && (nativeScrollbarTrackSizeProvider.trackSize$ | async) !== null\">\n <sci-scrollbar [direction]=\"'vscroll'\" [viewport]=\"viewport\" class=\"e2e-vertical\"></sci-scrollbar>\n <sci-scrollbar [direction]=\"'hscroll'\" [viewport]=\"viewport\" class=\"e2e-horizontal\"></sci-scrollbar>\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{--\\275sci-viewport-scrollbar-color: var(--sci-viewport-scrollbar-color, rgb(78, 78, 78));display:grid;grid-template-columns:100%;grid-template-rows:100%;position:relative;overflow:hidden;outline:none}:host:host-context(:not(:hover):not(:active)) sci-scrollbar:not(.scrolling){opacity:0}:host>div.viewport{display:grid;position:relative;outline:none;-webkit-overflow-scrolling:touch}:host>div.viewport>div.viewport-client{display:grid}:host>sci-scrollbar{--sci-scrollbar-color: var(--\\275sci-viewport-scrollbar-color);position:absolute;transition-duration:1s;transition-property:opacity;transition-timing-function:ease-out}:host>sci-scrollbar.vertical{top:0;right:0;bottom:0;left:unset;width:12px}:host>sci-scrollbar.horizontal{top:unset;right:0;bottom:0;left:0;height:12px}\n"] }]
276
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.SciNativeScrollbarTrackSizeProvider }]; }, propDecorators: { setViewport: [{
275
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SciNativeScrollbarTrackSizeProvider }], propDecorators: { setViewport: [{
277
276
  type: ViewChild,
278
277
  args: ['viewport', { static: true }]
279
278
  }], setViewportClient: [{
@@ -287,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
287
286
  type: HostListener,
288
287
  args: ['focus']
289
288
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy92aWV3cG9ydC9zcmMvdmlld3BvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy92aWV3cG9ydC9zcmMvdmlld3BvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBRWhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRUc7QUFDSCxNQWNhLG9CQUFvQjtJQU0vQixnQkFBZ0I7SUFDaEIsSUFDVyxXQUFXLENBQUMsUUFBb0M7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLElBQ1csaUJBQWlCLENBQUMsY0FBMEM7UUFDckUsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQs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TUFBTSxFQUFFLElBQUksRUFBQztnQkFPMUIsaUJBQWlCO3NCQUQzQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFVakMsY0FBYztzQkFEeEIsS0FBSztnQkFlQyxNQUFNO3NCQURaLE1BQU07Z0JBT0EsS0FBSztzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMTkgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcn0gZnJvbSAnLi9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge2NvZXJjZUVsZW1lbnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1NjaVNjcm9sbGFibGVEaXJlY3RpdmV9IGZyb20gJy4vc2Nyb2xsYWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtTY2lTY3JvbGxiYXJDb21wb25lbnR9IGZyb20gJy4vc2Nyb2xsYmFyL3Njcm9sbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtTY3JvbGxpbmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHZpZXdwb3J0IHdpdGggc2xvdHRlZCBjb250ZW50IChgPG5nLWNvbnRlbnQ+YCkgdXNlZCBhcyBzY3JvbGxhYmxlIGNvbnRlbnQuIEJ5IGRlZmF1bHQsIGNvbnRlbnQgaXMgYWRkZWQgdG8gYSBDU1MgZ3JpZCBsYXlvdXQuXG4gKlxuICogVGhlIHZpZXdwb3J0IGNvbXBvbmVudCBkaXNwbGF5cyBzY3JvbGxiYXJzIHdoZW4gaXRzIGNvbnRlbnQgb3ZlcmZsb3dzLiBTY3JvbGxiYXJzIGFyZSBkaXNwbGF5ZWQgb24gdG9wIG9mIHRoZSBjb250ZW50LCBub3QgbmV4dCB0byBpdC5cbiAqIFRoZSBjb21wb25lbnQgdXNlcyB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaWYgdGhleSBhcmUgYWxyZWFkeSBzaXR0aW5nIG9uIHRvcCwgb3IgZmFsbHMgYmFjayBhbmQgcmVuZGVycyBzY3JvbGxiYXJzIG9uIHRvcCBvdGhlcndpc2UuXG4gKiBUaGUgdmlld3BvcnQgcmVtYWlucyBuYXRpdmVseSBzY3JvbGxhYmxlIHdpdGggdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHNoaWZ0ZWQgb3V0IG9mIHRoZSB2aWV3cG9ydCdzIHZpc2libGUgYXJlYS4gQ29uc2VxdWVudGx5LCB0aGUgdmlld3BvcnQga2VlcHMgc3VwcG9ydGluZ1xuICogbmF0aXZlIHNjcm9sbGluZyBmZWF0dXJlcyBzdWNoIGFzIHRvdWNoIGdlc3R1cmVzLCBzY3JvbGwgc3BlZWQgYWNjZWxlcmF0aW9uLCBvciBzY3JvbGxpbmcgbmVhciB0aGUgdmlld3BvcnQgZWRnZXMgZHVyaW5nIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9ucy5cbiAqXG4gKiBgYGBodG1sXG4gKiA8c2NpLXZpZXdwb3J0PlxuICogICB5b3VyIGNvbnRlbnRcbiAqIDwvc2NpLXZpZXdwb3J0PlxuICogYGBgXG4gKlxuICogIyMgQWRkaW5nIHRoZSB2aWV3cG9ydCB0byBhIGxheW91dFxuICpcbiAqIFR5cGljYWxseSwgeW91IHdvdWxkIGFkZCB0aGUgdmlld3BvcnQgY29tcG9uZW50IHRvIGEgZmxleGlibGUgbGF5b3V0LCBmaWxsaW5nIHRoZSByZW1haW5pbmcgc3BhY2UgdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LCBzdWNoIGFzIGEgZmxleGJveCBjb250YWluZXJcbiAqIHdpdGggdGhlIHZpZXdwb3J0J3MgYGZsZXhgIENTUyBwcm9wZXJ0eSBzZXQgdG8gZWl0aGVyIGBmbGV4OiBhdXRvYCBvciBgZmxleDogMSAxIDBgLlxuICpcbiAqIFRoZSB2aWV3cG9ydCBpcyBzaXplZCBhY2NvcmRpbmcgdG8gaXRzIGNvbnRlbnQgd2lkdGggYW5kIGhlaWdodC4gSXQgZ3Jvd3MgdG8gYWJzb3JiIGFueSBmcmVlIHNwYWNlLCB0aHVzIG92ZXJmbG93aW5nIGl0cyBjb250ZW50IG9ubHkgd2hlbiBlbmNvdW50ZXJpbmdcbiAqIGEgbGF5b3V0IGNvbnN0cmFpbnQuIERlcGVuZGluZyBvbiB0aGUgbGF5b3V0LCBkaWZmZXJlbnQgc3RlcHMgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHRoZSB2aWV3cG9ydCBmcm9tIGdyb3dpbmcgdG8gaW5maW5pdHkuXG4gKlxuICogLSBJZiBwcmFjdGljYWwsIGdpdmUgdGhlIHZpZXdwb3J0IGEgZml4ZWQgc2l6ZSBvciBhIG1heGltdW0gc2l6ZS5cbiAqIC0gSWYgeW91IGFkZCB0aGUgdmlld3BvcnQgdG8gYSBmbGV4Ym94IGxheW91dCwgbWFrZSBzdXJlIHRoYXQgaXQgY2Fubm90IGV4Y2VlZCB0aGUgYXZhaWxhYmxlIHNwYWNlLiBJbnN0ZWFkLCB0aGUgdmlld3BvcnQgc2hvdWxkIGZpbGwgdGhlIHJlbWFpbmluZyBzcGFjZSxcbiAqICAgdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LiBCZSBhd2FyZSB0aGF0LCBieSBkZWZhdWx0LCBhIGZsZXggaXRlbSBkb2VzIG5vdCBzaHJpbmsgYmVsb3cgaXRzIG1pbmltdW0gY29udGVudCBzaXplLiBUbyBjaGFuZ2UgdGhpcywgc2V0IHRoZSB2aWV3cG9ydCdzXG4gKiAgIGBmbGV4LWJhc2lzYCB0byBgMGAgKGluc3RlYWQgb2YgYGF1dG9gKSwgb3IgdXNlIHRoZSBDU1Mgc2hvcnRoYW5kIHByb3BlcnR5IGBmbGV4OiAxIDEgMGAuIFRoZSBgZmxleC1iYXNpc2AgZGVmaW5lcyB0aGUgZGVmYXVsdCBzaXplIG9mIGEgZmxleCBpdGVtIGJlZm9yZVxuICogICB0aGUgcmVtYWluaW5nIGV4dHJhIHNwYWNlIGlzIGRpc3RyaWJ1dGVkLiBJZiB0aGUgdmlld3BvcnQgZG9lcyBub3QgYXBwZWFyIGFmdGVyIHNldHRpbmcgdGhpcyBwcm9wZXJ0eSwgY2hlY2sgaXRzIHBhcmVudCBlbGVtZW50cycgY29udGVudCBzaXplcy5cbiAqICAgQXMgYW4gYWx0ZXJuYXRpdmUgdG8gc2V0dGluZyBgZmxleDogMSAxIDBgLCBjaGFuZ2UgdGhlIHNldHRpbmcgdG8gYGZsZXg6IGF1dG9gIGFuZCBoaWRlIHRoZSBvdmVyZmxvdyBpbiB0aGUgcGFyZW50IGVsZW1lbnQsIGFzIGZvbGxvd3M6IGBvdmVyZmxvdzogaGlkZGVuYC5cbiAqICAgQW5vdGhlciBhcHByb2FjaCB3b3VsZCBiZSB0byBzZXQgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIGFsbCBwYXJlbnRzIHRvIGAwYCwgYXMgZm9sbG93czogYG1pbi1oZWlnaHQ6IDBgLlxuICpcbiAqICAgRm9yIHRoZSBjb21wbGV0ZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBmbGV4IGxheW91dCBhbmQgaXRzIGZlYXR1cmVzLCByZWZlciB0byBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvZmxleC5cbiAqXG4gKlxuICogIyMgTGF5b3V0aW5nIHRoZSB2aWV3cG9ydCdzIHNsb3R0ZWQgY29udGVudFxuICpcbiAqIEJ5IGRlZmF1bHQsIHRoZSB2aWV3cG9ydCdzIGNvbnRlbnQgaXMgYWRkZWQgdG8gYSBDU1MgZ3JpZCBjb250YWluZXIgd2l0aCBhIHNpbmdsZSBjb2x1bW4sIGZpbGxpbmcgcmVtYWluaW5nIHNwYWNlIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseS5cbiAqIFVzaW5nIHRoZSBgOjpwYXJ0KGNvbnRlbnQpYCBwc2V1ZG8gZWxlbWVudCBzZWxlY3RvciwgeW91IGNhbiBjb25maWd1cmUgdGhlIGdyaWQgY29udGFpbmVyIG9yIGFwcGx5IGEgZGlmZmVyZW50IGxheW91dCwgc3VjaCBhcyBhIGZsZXggb3IgZmxvdyBsYXlvdXQuXG4gKlxuICogIyMjIyBFeGFtcGxlIG9mIGFkZGluZyBzbG90dGVkIGNvbnRlbnQgdG8gYSBDU1MgZmxleCBjb250YWluZXJcbiAqIGBgYGNzc1xuICogc2NpLXZpZXdwb3J0OjpwYXJ0KGNvbnRlbnQpIHtcbiAqICAgZGlzcGxheTogZmxleDtcbiAqICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyMgRXhhbXBsZSBvZiBjb25maWd1cmluZyBDU1MgZ3JpZCBjb250YWluZXIgd2l0aCB0d28gY29sdW1uc1xuICogYGBgY3NzXG4gKiBzY2ktdmlld3BvcnQ6OnBhcnQoY29udGVudCkge1xuICogICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gKiAgIGdhcDogMWVtO1xuICogfVxuICogYGBgXG4gKlxuICogIyMgU3R5bGluZ1xuICpcbiAqIFRvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBsb29rIG9mIFNDSU9OIGNvbXBvbmVudHMgb3Igc3VwcG9ydCBkaWZmZXJlbnQgdGhlbWVzLCBjb25maWd1cmUgdGhlIGBAc2Npb24vY29tcG9uZW50c2AgU0NTUyBtb2R1bGUgaW4gYHN0eWxlcy5zY3NzYC5cbiAqIFRvIHN0eWxlIGEgc3BlY2lmaWMgYHNjaS12aWV3cG9ydGAgY29tcG9uZW50LCB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgY2FuIGJlIHNldCBkaXJlY3RseSBvbiB0aGUgY29tcG9uZW50LlxuICpcbiAqIC0gc2NpLXZpZXdwb3J0LXNjcm9sbGJhci1jb2xvcjogICAgIFNldHMgdGhlIGNvbG9yIG9mIHRoZSBzY3JvbGxiYXIuXG4gKlxuICogYGBgY3NzXG4gKiBzY2ktdmlld3BvcnQge1xuICogICAtLXNjaS12aWV3cG9ydC1zY3JvbGxiYXItY29sb3I6IGJsdWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2NpLXZpZXdwb3J0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXdwb3J0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld3BvcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBBc3luY1BpcGUsXG4gICAgU2Nyb2xsaW5nTW9kdWxlLFxuICAgIFNjaVNjcm9sbGFibGVEaXJlY3RpdmUsXG4gICAgU2NpU2Nyb2xsYmFyQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTY2lWaWV3cG9ydENvbXBvbmVudCB7XG5cbiAgcHJpdmF0ZSBfdmlld3BvcnRFbGVtZW50ITogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX3ZpZXdwb3J0Q2xpZW50ITogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX3Njcm9sbGJhclN0eWxlOiBTY3JvbGxiYXJTdHlsZSA9ICdvbi10b3AnO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZCgndmlld3BvcnQnLCB7c3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHNldCBzZXRWaWV3cG9ydCh2aWV3cG9ydDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pIHtcbiAgICB0aGlzLl92aWV3cG9ydEVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KHZpZXdwb3J0KTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZCgndmlld3BvcnRfY2xpZW50Jywge3N0YXRpYzogdHJ1ZX0pXG4gIHB1YmxpYyBzZXQgc2V0Vmlld3BvcnRDbGllbnQodmlld3BvcnRDbGllbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+KSB7XG4gICAgdGhpcy5fdmlld3BvcnRDbGllbnQgPSBjb2VyY2VFbGVtZW50KHZpZXdwb3J0Q2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIHRvIHVzZSBuYXRpdmUgc2Nyb2xsYmFycyBvciwgd2hpY2ggaXMgYnkgZGVmYXVsdCwgZW11bGF0ZWQgc2Nyb2xsYmFycyB0aGF0IHNpdCBvbiB0b3Agb2YgdGhlIHZpZXdwb3J0IGNsaWVudC5cbiAgICogSW4gdGhlIGxhdHRlciwgdGhlIHZpZXdwb3J0IGNsaWVudCByZW1haW5zIG5hdGl2ZWx5IHNjcm9sbGFibGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNjcm9sbGJhclN0eWxlKHNjcm9sbGJhclN0eWxlOiBTY3JvbGxiYXJTdHlsZSkge1xuICAgIHRoaXMuX3Njcm9sbGJhclN0eWxlID0gc2Nyb2xsYmFyU3R5bGUgfHwgJ29uLXRvcCc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNjcm9sbGJhclN0eWxlKCk6IFNjcm9sbGJhclN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsYmFyU3R5bGU7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdXBvbiBhIHNjcm9sbCBldmVudC5cbiAgICpcbiAgICogWW91IGNhbiBhZGQgW3NjaURpbWVuc2lvbl0gZGlyZWN0aXZlIHRvIHRoZSB2aWV3cG9ydCBvciB2aWV3cG9ydCBjbGllbnQgdG8gYmUgbm90aWZpZWQgYWJvdXQgbGF5b3V0IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHB1YmxpYyBuYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcjogU2NpTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXIpIHtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgcHVibGljIGZvY3VzKCk6IHZvaWQgeyAvLyBkbyBub3QgcmVuYW1lIHRvIGV4cG9zZSB0aGUgc2FtZSBmb2N1cyBtZXRob2QgbGlrZSBgSFRNTEVsZW1lbnQuZm9jdXMoKWAuXG4gICAgdGhpcy5fdmlld3BvcnRFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgcHVibGljIG9uU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBwaXhlbHMgdGhhdCB0aGUgdmlld3BvcnQgY2xpZW50IGlzIHNjcm9sbGVkIHZlcnRpY2FsbHkuXG4gICAqXG4gICAqIEBzZWUgRWxlbWVudC5zY3JvbGxUb3BcbiAgICovXG4gIHB1YmxpYyBnZXQgc2Nyb2xsVG9wKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3A7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbnVtYmVyIG9mIHBpeGVscyB0aGF0IHRoZSB2aWV3cG9ydCBjbGllbnQgaXMgc2Nyb2xsZWQgdmVydGljYWxseS5cbiAgICpcbiAgICogQHNlZSBFbGVtZW50LnNjcm9sbFRvcFxuICAgKi9cbiAgcHVibGljIHNldCBzY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIpIHtcbiAgICB0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBwaXhlbHMgdGhhdCB0aGUgdmlld3BvcnQgY2xpZW50IGlzIHNjcm9sbGVkIGhvcml6b250YWxseS5cbiAgICpcbiAgICogQHNlZSBFbGVtZW50LnNjcm9sbExlZnRcbiAgICovXG4gIHB1YmxpYyBnZXQgc2Nyb2xsTGVmdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRoYXQgdGhlIHZpZXdwb3J0IGNsaWVudCBpcyBzY3JvbGxlZCBob3Jpem9udGFsbHkuXG4gICAqXG4gICAqIEBzZWUgRWxlbWVudC5zY3JvbGxMZWZ0XG4gICAqL1xuICBwdWJsaWMgc2V0IHNjcm9sbExlZnQoc2Nyb2xsTGVmdDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQgY2xpZW50LlxuICAgKlxuICAgKiBAc2VlIEVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAqL1xuICBwdWJsaWMgZ2V0IHNjcm9sbEhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHdpZHRoIG9mIHRoZSB2aWV3cG9ydCBjbGllbnQuXG4gICAqXG4gICAqIEBzZWUgRWxlbWVudC5zY3JvbGxXaWR0aFxuICAgKi9cbiAgcHVibGljIGdldCBzY3JvbGxXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmlld3BvcnQge0hUTUxFbGVtZW50fS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmlld3BvcnRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRFbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZpZXdwb3J0IGNsaWVudCB7SFRNTEVsZW1lbnR9LlxuICAgKi9cbiAgcHVibGljIGdldCB2aWV3cG9ydENsaWVudEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydENsaWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBlbGVtZW50IGlzIHNjcm9sbGVkIGludG8gdGhlIHZpZXdwb3J0LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCAtIHRoZSBlbGVtZW50IHRvIGJlIGNoZWNrZWRcbiAgICogQHBhcmFtIGZpdCAtIGNvbnRyb2wgaWYgdGhlIGVsZW1lbnQgbXVzdCBmdWxseSBvciBwYXJ0aWFsbHkgZml0IGludG8gdGhlIHZpZXdwb3J0XG4gICAqIEByZXR1cm4gYHRydWVgIGlmIHRoZSBlbGVtZW50IGlzIHNjcm9sbGVkIGludG8gdGhlIHZpZXdwb3J0LCBvciBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBpc0VsZW1lbnRJblZpZXcoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCwgZml0OiAnZnVsbCcgfCAncGFydGlhbCcpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbFRvcCA9IHRoaXMuY29tcHV0ZU9mZnNldChlbGVtZW50LCAndG9wJyk7XG4gICAgaWYgKGVsVG9wID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGVsTGVmdCA9IHRoaXMuY29tcHV0ZU9mZnNldChlbGVtZW50LCAnbGVmdCcpO1xuICAgIGlmIChlbExlZnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb25zaWRlciBlbGVtZW50cyBhcyBzY3JvbGxlZCBpbnRvIHZpZXcgd2hlbiB0aGVyZSBpcyBubyB2aWV3cG9ydCBvdmVyZmxvdy5cbiAgICAvLyBUaGUgY2FsY3VsYXRpb24gb2Ygd2hldGhlciBhbiBlbGVtZW50IGlzIHNjcm9sbGVkIGludG8gdmlldyBtYXkgYmUgd3JvbmcgYnkgYSBmZXcgcGl4ZWxzIGlmIHRoZSB2aWV3cG9ydCBjb250YWlucyBlbGVtZW50cyB3aXRoIGRlY2ltYWwgc2l6ZXMuXG4gICAgLy8gVGhpcyBjYW4gaGFwcGVuIGJlY2F1c2UgYG9mZnNldExlZnRgIGFuZCBgb2Zmc2V0VG9wYCBvcGVyYXRlIG9uIGFuIGludGVnZXIgKG5vdCBhIGRlY2ltYWwpLCBsb3NpbmcgcHJlY2lzaW9uIHRoYXQgY2FuIGFjY3VtdWxhdGUuXG4gICAgLy8gVG8gYXZvaWQgaW5jb3JyZWN0IGNhbGN1bGF0aW9uIHdoZW4gdGhlcmUgaXMgbm8gdmlld3BvcnQgb3ZlcmZsb3csIHdlIGNvbnNpZGVyIGFsbCBjb250YWluZWQgZWxlbWVudHMgYXMgc2Nyb2xsZWQgaW50byB0aGUgdmlldy5cbiAgICBpZiAodGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFdpZHRoIDw9IHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5jbGllbnRXaWR0aCAmJiB0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IDw9IHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5jbGllbnRIZWlnaHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGVsQm90dG9tID0gZWxUb3AgKyBjb2VyY2VFbGVtZW50KGVsZW1lbnQpLm9mZnNldEhlaWdodDtcbiAgICBjb25zdCBlbFJpZ2h0ID0gZWxMZWZ0ICsgY29lcmNlRWxlbWVudChlbGVtZW50KS5vZmZzZXRXaWR0aDtcblxuICAgIGNvbnN0IHZwVG9wID0gdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcDtcbiAgICBjb25zdCB2cExlZnQgPSB0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBjb25zdCB2cEJvdHRvbSA9IHZwVG9wICsgdGhpcy5fdmlld3BvcnRFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICBjb25zdCB2cFJpZ2h0ID0gdnBMZWZ0ICsgdGhpcy5fdmlld3BvcnRFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgaWYgKGZpdCA9PT0gJ2Z1bGwnKSB7XG4gICAgICByZXR1cm4gKGVsVG9wID49IHZwVG9wICYmIGVsQm90dG9tIDw9IHZwQm90dG9tKSAmJiAoZWxMZWZ0ID49IHZwTGVmdCAmJiBlbFJpZ2h0IDw9IHZwUmlnaHQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiAoZWxCb3R0b20gPj0gdnBUb3AgJiYgZWxUb3AgPD0gdnBCb3R0b20pICYmIChlbFJpZ2h0ID49IHZwTGVmdCAmJiBlbExlZnQgPD0gdnBSaWdodCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgdGhlIHNwZWNpZmllZCBlbGVtZW50IGludG8gdGhlIHZpZXdwb3J0LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCAtIHRoZSBlbGVtZW50IHRvIHNjcm9sbCBpbnRvIHRoZSB2aWV3cG9ydFxuICAgKiBAcGFyYW0gb2Zmc2V0IC0gdGhlIGdhcCBiZXR3ZWVuIHRoZSBlbGVtZW50IGFuZCB0aGUgdmlld3BvcnRcbiAgICovXG4gIHB1YmxpYyBzY3JvbGxJbnRvVmlldyhlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50LCBvZmZzZXQ6IG51bWJlciA9IDUwKTogdm9pZCB7XG4gICAgY29uc3QgdG9wID0gdGhpcy5jb21wdXRlT2Zmc2V0KGVsZW1lbnQsICd0b3AnKTtcbiAgICBpZiAodG9wID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmNvbXB1dGVPZmZzZXQoZWxlbWVudCwgJ2xlZnQnKTtcbiAgICBpZiAobGVmdCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3AgPSB0b3AgLSBvZmZzZXQ7XG4gICAgdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbExlZnQgPSBsZWZ0IC0gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBkaXN0YW5jZSBvZiB0aGUgZWxlbWVudCB0byB0aGUgdmlld3BvcnQncyBsZWZ0IG9yIHRvcCBib3JkZXIuXG4gICAqXG4gICAqIEByZXR1cm4gZGlzdGFuY2Ugb2YgdGhlIGVsZW1lbnQgdG8gdGhlIHZpZXdwb3J0J3MgbGVmdCBvciB0b3AgYm9yZGVyLCBvciBgbnVsbGAgaWYgbm90IGNvbnRhaW5lZFxuICAgKiAgICAgICAgIGluIHRoZSB2aWV3cG9ydCBvciB0aGUgZWxlbWVudCBvciBhbnkgYW5jZXN0b3IgaGFzIHRoZSBgZGlzcGxheWAgcHJvcGVydHkgc2V0IHRvIGBub25lYC5cbiAgICovXG4gIHB1YmxpYyBjb21wdXRlT2Zmc2V0KGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQsIGJvcmRlcjogJ2xlZnQnIHwgJ3RvcCcpOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgZWwgPSBjb2VyY2VFbGVtZW50KGVsZW1lbnQpO1xuICAgIGRvIHtcbiAgICAgIG9mZnNldCArPSAoYm9yZGVyID09PSAnbGVmdCcgPyBlbC5vZmZzZXRMZWZ0IDogZWwub2Zmc2V0VG9wKTtcbiAgICAgIGNvbnN0IG9mZnNldFBhcmVudCA9IGVsLm9mZnNldFBhcmVudDtcbiAgICAgIGlmIChvZmZzZXRQYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgLy8gYG9mZnNldFBhcmVudGAgaXMgYG51bGxgIGluIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uczpcbiAgICAgICAgLy8gLSBUaGUgZWxlbWVudCBvciBhbnkgYW5jZXN0b3IgaGFzIHRoZSBgZGlzcGxheWAgcHJvcGVydHkgc2V0IHRvIGBub25lYFxuICAgICAgICAvLyAtIFRoZSBlbGVtZW50IGhhcyB0aGUgcG9zaXRpb24gcHJvcGVydHkgc2V0IHRvIGZpeGVkIChGaXJlZm94IHJldHVybnMgPGJvZHk+KS5cbiAgICAgICAgLy8gLSBUaGUgZWxlbWVudCBpcyA8Ym9keT4gb3IgPGh0bWw+LlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxFbGVtZW50L29mZnNldFBhcmVudC5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoIShvZmZzZXRQYXJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBlbCA9IG9mZnNldFBhcmVudDtcbiAgICB9IHdoaWxlIChlbCAhPT0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzY3JvbGxiYXIgc3R5bGUuXG4gKi9cbmV4cG9ydCB0eXBlIFNjcm9sbGJhclN0eWxlID0gJ25hdGl2ZScgfCAnb24tdG9wJyB8ICdoaWRkZW4nO1xuIiwiPCEtLSB2aWV3cG9ydCBhbmQgdmlld3BvcnQgY2xpZW50IC0tPlxuPGRpdiAjdmlld3BvcnRcbiAgICAgY2xhc3M9XCJ2aWV3cG9ydFwiXG4gICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICBzY2lTY3JvbGxhYmxlIFtzY2lTY3JvbGxhYmxlRGlzcGxheU5hdGl2ZVNjcm9sbGJhcl09XCJzY3JvbGxiYXJTdHlsZSA9PT0gJ25hdGl2ZSdcIlxuICAgICBjZGtTY3JvbGxhYmxlXG4gICAgIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiPlxuICA8ZGl2ICN2aWV3cG9ydF9jbGllbnQgY2xhc3M9XCJ2aWV3cG9ydC1jbGllbnRcIiBwYXJ0PVwiY29udGVudFwiPlxuICAgIDxzbG90Pjwvc2xvdD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSByZW5kZXIgZW11bGF0ZWQgc2Nyb2xsYmFycyB3aGljaCBzaXQgb24tdG9wIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNjcm9sbGJhclN0eWxlID09PSAnb24tdG9wJyAmJiAobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXIudHJhY2tTaXplJCB8IGFzeW5jKSAhPT0gbnVsbFwiPlxuICA8c2NpLXNjcm9sbGJhciBbZGlyZWN0aW9uXT1cIid2c2Nyb2xsJ1wiIFt2aWV3cG9ydF09XCJ2aWV3cG9ydFwiIGNsYXNzPVwiZTJlLXZlcnRpY2FsXCI+PC9zY2ktc2Nyb2xsYmFyPlxuICA8c2NpLXNjcm9sbGJhciBbZGlyZWN0aW9uXT1cIidoc2Nyb2xsJ1wiIFt2aWV3cG9ydF09XCJ2aWV3cG9ydFwiIGNsYXNzPVwiZTJlLWhvcml6b250YWxcIj48L3NjaS1zY3JvbGxiYXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy92aWV3cG9ydC9zcmMvdmlld3BvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy92aWV3cG9ydC9zcmMvdmlld3BvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBRWhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRUc7QUFlSCxNQUFNLE9BQU8sb0JBQW9CO0lBTS9CLGdCQUFnQjtJQUNoQixJQUNXLFdBQVcsQ0FBQyxRQUFvQztRQUN6RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsSUFDVyxpQkFBaUIsQ0FBQyxjQUEwQztRQUNyRSxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJ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RSxJQUFJLEVBQUM7Z0JBTzFCLGlCQUFpQjtzQkFEM0IsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBVWpDLGNBQWM7c0JBRHhCLEtBQUs7Z0JBZUMsTUFBTTtzQkFEWixNQUFNO2dCQU9BLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2NpTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXJ9IGZyb20gJy4vbmF0aXZlLXNjcm9sbGJhci10cmFjay1zaXplLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtjb2VyY2VFbGVtZW50fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtTY2lTY3JvbGxhYmxlRGlyZWN0aXZlfSBmcm9tICcuL3Njcm9sbGFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7U2NpU2Nyb2xsYmFyQ29tcG9uZW50fSBmcm9tICcuL3Njcm9sbGJhci9zY3JvbGxiYXIuY29tcG9uZW50JztcbmltcG9ydCB7U2Nyb2xsaW5nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7QXN5bmNQaXBlLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB2aWV3cG9ydCB3aXRoIHNsb3R0ZWQgY29udGVudCAoYDxuZy1jb250ZW50PmApIHVzZWQgYXMgc2Nyb2xsYWJsZSBjb250ZW50LiBCeSBkZWZhdWx0LCBjb250ZW50IGlzIGFkZGVkIHRvIGEgQ1NTIGdyaWQgbGF5b3V0LlxuICpcbiAqIFRoZSB2aWV3cG9ydCBjb21wb25lbnQgZGlzcGxheXMgc2Nyb2xsYmFycyB3aGVuIGl0cyBjb250ZW50IG92ZXJmbG93cy4gU2Nyb2xsYmFycyBhcmUgZGlzcGxheWVkIG9uIHRvcCBvZiB0aGUgY29udGVudCwgbm90IG5leHQgdG8gaXQuXG4gKiBUaGUgY29tcG9uZW50IHVzZXMgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlmIHRoZXkgYXJlIGFscmVhZHkgc2l0dGluZyBvbiB0b3AsIG9yIGZhbGxzIGJhY2sgYW5kIHJlbmRlcnMgc2Nyb2xsYmFycyBvbiB0b3Agb3RoZXJ3aXNlLlxuICogVGhlIHZpZXdwb3J0IHJlbWFpbnMgbmF0aXZlbHkgc2Nyb2xsYWJsZSB3aXRoIHRoZSBuYXRpdmUgc2Nyb2xsYmFycyBzaGlmdGVkIG91dCBvZiB0aGUgdmlld3BvcnQncyB2aXNpYmxlIGFyZWEuIENvbnNlcXVlbnRseSwgdGhlIHZpZXdwb3J0IGtlZXBzIHN1cHBvcnRpbmdcbiAqIG5hdGl2ZSBzY3JvbGxpbmcgZmVhdHVyZXMgc3VjaCBhcyB0b3VjaCBnZXN0dXJlcywgc2Nyb2xsIHNwZWVkIGFjY2VsZXJhdGlvbiwgb3Igc2Nyb2xsaW5nIG5lYXIgdGhlIHZpZXdwb3J0IGVkZ2VzIGR1cmluZyBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbnMuXG4gKlxuICogYGBgaHRtbFxuICogPHNjaS12aWV3cG9ydD5cbiAqICAgeW91ciBjb250ZW50XG4gKiA8L3NjaS12aWV3cG9ydD5cbiAqIGBgYFxuICpcbiAqICMjIEFkZGluZyB0aGUgdmlld3BvcnQgdG8gYSBsYXlvdXRcbiAqXG4gKiBUeXBpY2FsbHksIHlvdSB3b3VsZCBhZGQgdGhlIHZpZXdwb3J0IGNvbXBvbmVudCB0byBhIGZsZXhpYmxlIGxheW91dCwgZmlsbGluZyB0aGUgcmVtYWluaW5nIHNwYWNlIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseSwgc3VjaCBhcyBhIGZsZXhib3ggY29udGFpbmVyXG4gKiB3aXRoIHRoZSB2aWV3cG9ydCdzIGBmbGV4YCBDU1MgcHJvcGVydHkgc2V0IHRvIGVpdGhlciBgZmxleDogYXV0b2Agb3IgYGZsZXg6IDEgMSAwYC5cbiAqXG4gKiBUaGUgdmlld3BvcnQgaXMgc2l6ZWQgYWNjb3JkaW5nIHRvIGl0cyBjb250ZW50IHdpZHRoIGFuZCBoZWlnaHQuIEl0IGdyb3dzIHRvIGFic29yYiBhbnkgZnJlZSBzcGFjZSwgdGh1cyBvdmVyZmxvd2luZyBpdHMgY29udGVudCBvbmx5IHdoZW4gZW5jb3VudGVyaW5nXG4gKiBhIGxheW91dCBjb25zdHJhaW50LiBEZXBlbmRpbmcgb24gdGhlIGxheW91dCwgZGlmZmVyZW50IHN0ZXBzIG1heSBiZSBuZWNlc3NhcnkgdG8gcHJldmVudCB0aGUgdmlld3BvcnQgZnJvbSBncm93aW5nIHRvIGluZmluaXR5LlxuICpcbiAqIC0gSWYgcHJhY3RpY2FsLCBnaXZlIHRoZSB2aWV3cG9ydCBhIGZpeGVkIHNpemUgb3IgYSBtYXhpbXVtIHNpemUuXG4gKiAtIElmIHlvdSBhZGQgdGhlIHZpZXdwb3J0IHRvIGEgZmxleGJveCBsYXlvdXQsIG1ha2Ugc3VyZSB0aGF0IGl0IGNhbm5vdCBleGNlZWQgdGhlIGF2YWlsYWJsZSBzcGFjZS4gSW5zdGVhZCwgdGhlIHZpZXdwb3J0IHNob3VsZCBmaWxsIHRoZSByZW1haW5pbmcgc3BhY2UsXG4gKiAgIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseS4gQmUgYXdhcmUgdGhhdCwgYnkgZGVmYXVsdCwgYSBmbGV4IGl0ZW0gZG9lcyBub3Qgc2hyaW5rIGJlbG93IGl0cyBtaW5pbXVtIGNvbnRlbnQgc2l6ZS4gVG8gY2hhbmdlIHRoaXMsIHNldCB0aGUgdmlld3BvcnQnc1xuICogICBgZmxleC1iYXNpc2AgdG8gYDBgIChpbnN0ZWFkIG9mIGBhdXRvYCksIG9yIHVzZSB0aGUgQ1NTIHNob3J0aGFuZCBwcm9wZXJ0eSBgZmxleDogMSAxIDBgLiBUaGUgYGZsZXgtYmFzaXNgIGRlZmluZXMgdGhlIGRlZmF1bHQgc2l6ZSBvZiBhIGZsZXggaXRlbSBiZWZvcmVcbiAqICAgdGhlIHJlbWFpbmluZyBleHRyYSBzcGFjZSBpcyBkaXN0cmlidXRlZC4gSWYgdGhlIHZpZXdwb3J0IGRvZXMgbm90IGFwcGVhciBhZnRlciBzZXR0aW5nIHRoaXMgcHJvcGVydHksIGNoZWNrIGl0cyBwYXJlbnQgZWxlbWVudHMnIGNvbnRlbnQgc2l6ZXMuXG4gKiAgIEFzIGFuIGFsdGVybmF0aXZlIHRvIHNldHRpbmcgYGZsZXg6IDEgMSAwYCwgY2hhbmdlIHRoZSBzZXR0aW5nIHRvIGBmbGV4OiBhdXRvYCBhbmQgaGlkZSB0aGUgb3ZlcmZsb3cgaW4gdGhlIHBhcmVudCBlbGVtZW50LCBhcyBmb2xsb3dzOiBgb3ZlcmZsb3c6IGhpZGRlbmAuXG4gKiAgIEFub3RoZXIgYXBwcm9hY2ggd291bGQgYmUgdG8gc2V0IHRoZSBtaW5pbXVtIGhlaWdodCBvZiBhbGwgcGFyZW50cyB0byBgMGAsIGFzIGZvbGxvd3M6IGBtaW4taGVpZ2h0OiAwYC5cbiAqXG4gKiAgIEZvciB0aGUgY29tcGxldGUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgZmxleCBsYXlvdXQgYW5kIGl0cyBmZWF0dXJlcywgcmVmZXIgdG8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZsZXguXG4gKlxuICpcbiAqICMjIExheW91dGluZyB0aGUgdmlld3BvcnQncyBzbG90dGVkIGNvbnRlbnRcbiAqXG4gKiBCeSBkZWZhdWx0LCB0aGUgdmlld3BvcnQncyBjb250ZW50IGlzIGFkZGVkIHRvIGEgQ1NTIGdyaWQgY29udGFpbmVyIHdpdGggYSBzaW5nbGUgY29sdW1uLCBmaWxsaW5nIHJlbWFpbmluZyBzcGFjZSB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9udGFsbHkuXG4gKiBVc2luZyB0aGUgYDo6cGFydChjb250ZW50KWAgcHNldWRvIGVsZW1lbnQgc2VsZWN0b3IsIHlvdSBjYW4gY29uZmlndXJlIHRoZSBncmlkIGNvbnRhaW5lciBvciBhcHBseSBhIGRpZmZlcmVudCBsYXlvdXQsIHN1Y2ggYXMgYSBmbGV4IG9yIGZsb3cgbGF5b3V0LlxuICpcbiAqICMjIyMgRXhhbXBsZSBvZiBhZGRpbmcgc2xvdHRlZCBjb250ZW50IHRvIGEgQ1NTIGZsZXggY29udGFpbmVyXG4gKiBgYGBjc3NcbiAqIHNjaS12aWV3cG9ydDo6cGFydChjb250ZW50KSB7XG4gKiAgIGRpc3BsYXk6IGZsZXg7XG4gKiAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMjIEV4YW1wbGUgb2YgY29uZmlndXJpbmcgQ1NTIGdyaWQgY29udGFpbmVyIHdpdGggdHdvIGNvbHVtbnNcbiAqIGBgYGNzc1xuICogc2NpLXZpZXdwb3J0OjpwYXJ0KGNvbnRlbnQpIHtcbiAqICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICogICBnYXA6IDFlbTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIFN0eWxpbmdcbiAqXG4gKiBUbyBjdXN0b21pemUgdGhlIGRlZmF1bHQgbG9vayBvZiBTQ0lPTiBjb21wb25lbnRzIG9yIHN1cHBvcnQgZGlmZmVyZW50IHRoZW1lcywgY29uZmlndXJlIHRoZSBgQHNjaW9uL2NvbXBvbmVudHNgIFNDU1MgbW9kdWxlIGluIGBzdHlsZXMuc2Nzc2AuXG4gKiBUbyBzdHlsZSBhIHNwZWNpZmljIGBzY2ktdmlld3BvcnRgIGNvbXBvbmVudCwgdGhlIGZvbGxvd2luZyBDU1MgdmFyaWFibGVzIGNhbiBiZSBzZXQgZGlyZWN0bHkgb24gdGhlIGNvbXBvbmVudC5cbiAqXG4gKiAtIHNjaS12aWV3cG9ydC1zY3JvbGxiYXItY29sb3I6ICAgICBTZXRzIHRoZSBjb2xvciBvZiB0aGUgc2Nyb2xsYmFyLlxuICpcbiAqIGBgYGNzc1xuICogc2NpLXZpZXdwb3J0IHtcbiAqICAgLS1zY2ktdmlld3BvcnQtc2Nyb2xsYmFyLWNvbG9yOiBibHVlO1xuICogfVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NjaS12aWV3cG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3cG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXdwb3J0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgQXN5bmNQaXBlLFxuICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBTY2lTY3JvbGxhYmxlRGlyZWN0aXZlLFxuICAgIFNjaVNjcm9sbGJhckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2NpVmlld3BvcnRDb21wb25lbnQge1xuXG4gIHByaXZhdGUgX3ZpZXdwb3J0RWxlbWVudCE6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF92aWV3cG9ydENsaWVudCE6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9zY3JvbGxiYXJTdHlsZTogU2Nyb2xsYmFyU3R5bGUgPSAnb24tdG9wJztcblxuICAvKiogQGludGVybmFsICovXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdwb3J0Jywge3N0YXRpYzogdHJ1ZX0pXG4gIHB1YmxpYyBzZXQgc2V0Vmlld3BvcnQodmlld3BvcnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+KSB7XG4gICAgdGhpcy5fdmlld3BvcnRFbGVtZW50ID0gY29lcmNlRWxlbWVudCh2aWV3cG9ydCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdwb3J0X2NsaWVudCcsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgc2V0IHNldFZpZXdwb3J0Q2xpZW50KHZpZXdwb3J0Q2xpZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pikge1xuICAgIHRoaXMuX3ZpZXdwb3J0Q2xpZW50ID0gY29lcmNlRWxlbWVudCh2aWV3cG9ydENsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0byB1c2UgbmF0aXZlIHNjcm9sbGJhcnMgb3IsIHdoaWNoIGlzIGJ5IGRlZmF1bHQsIGVtdWxhdGVkIHNjcm9sbGJhcnMgdGhhdCBzaXQgb24gdG9wIG9mIHRoZSB2aWV3cG9ydCBjbGllbnQuXG4gICAqIEluIHRoZSBsYXR0ZXIsIHRoZSB2aWV3cG9ydCBjbGllbnQgcmVtYWlucyBuYXRpdmVseSBzY3JvbGxhYmxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzY3JvbGxiYXJTdHlsZShzY3JvbGxiYXJTdHlsZTogU2Nyb2xsYmFyU3R5bGUpIHtcbiAgICB0aGlzLl9zY3JvbGxiYXJTdHlsZSA9IHNjcm9sbGJhclN0eWxlIHx8ICdvbi10b3AnO1xuICB9XG5cbiAgcHVibGljIGdldCBzY3JvbGxiYXJTdHlsZSgpOiBTY3JvbGxiYXJTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbGJhclN0eWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHVwb24gYSBzY3JvbGwgZXZlbnQuXG4gICAqXG4gICAqIFlvdSBjYW4gYWRkIFtzY2lEaW1lbnNpb25dIGRpcmVjdGl2ZSB0byB0aGUgdmlld3BvcnQgb3Igdmlld3BvcnQgY2xpZW50IHRvIGJlIG5vdGlmaWVkIGFib3V0IGxheW91dCBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG5cbiAgY29uc3RydWN0b3IocHVibGljIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwdWJsaWMgbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXI6IFNjaU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyKSB7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHsgLy8gZG8gbm90IHJlbmFtZSB0byBleHBvc2UgdGhlIHNhbWUgZm9jdXMgbWV0aG9kIGxpa2UgYEhUTUxFbGVtZW50LmZvY3VzKClgLlxuICAgIHRoaXMuX3ZpZXdwb3J0RWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRoYXQgdGhlIHZpZXdwb3J0IGNsaWVudCBpcyBzY3JvbGxlZCB2ZXJ0aWNhbGx5LlxuICAgKlxuICAgKiBAc2VlIEVsZW1lbnQuc2Nyb2xsVG9wXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNjcm9sbFRvcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG51bWJlciBvZiBwaXhlbHMgdGhhdCB0aGUgdmlld3BvcnQgY2xpZW50IGlzIHNjcm9sbGVkIHZlcnRpY2FsbHkuXG4gICAqXG4gICAqIEBzZWUgRWxlbWVudC5zY3JvbGxUb3BcbiAgICovXG4gIHB1YmxpYyBzZXQgc2Nyb2xsVG9wKHNjcm9sbFRvcDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRoYXQgdGhlIHZpZXdwb3J0IGNsaWVudCBpcyBzY3JvbGxlZCBob3Jpem9udGFsbHkuXG4gICAqXG4gICAqIEBzZWUgRWxlbWVudC5zY3JvbGxMZWZ0XG4gICAqL1xuICBwdWJsaWMgZ2V0IHNjcm9sbExlZnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbExlZnQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbnVtYmVyIG9mIHBpeGVscyB0aGF0IHRoZSB2aWV3cG9ydCBjbGllbnQgaXMgc2Nyb2xsZWQgaG9yaXpvbnRhbGx5LlxuICAgKlxuICAgKiBAc2VlIEVsZW1lbnQuc2Nyb2xsTGVmdFxuICAgKi9cbiAgcHVibGljIHNldCBzY3JvbGxMZWZ0KHNjcm9sbExlZnQ6IG51bWJlcikge1xuICAgIHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0IGNsaWVudC5cbiAgICpcbiAgICogQHNlZSBFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgKi9cbiAgcHVibGljIGdldCBzY3JvbGxIZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgdmlld3BvcnQgY2xpZW50LlxuICAgKlxuICAgKiBAc2VlIEVsZW1lbnQuc2Nyb2xsV2lkdGhcbiAgICovXG4gIHB1YmxpYyBnZXQgc2Nyb2xsV2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFdpZHRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZpZXdwb3J0IHtIVE1MRWxlbWVudH0uXG4gICAqL1xuICBwdWJsaWMgZ2V0IHZpZXdwb3J0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdwb3J0RWxlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2aWV3cG9ydCBjbGllbnQge0hUTUxFbGVtZW50fS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmlld3BvcnRDbGllbnRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRDbGllbnQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBpcyBzY3JvbGxlZCBpbnRvIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgLSB0aGUgZWxlbWVudCB0byBiZSBjaGVja2VkXG4gICAqIEBwYXJhbSBmaXQgLSBjb250cm9sIGlmIHRoZSBlbGVtZW50IG11c3QgZnVsbHkgb3IgcGFydGlhbGx5IGZpdCBpbnRvIHRoZSB2aWV3cG9ydFxuICAgKiBAcmV0dXJuIGB0cnVlYCBpZiB0aGUgZWxlbWVudCBpcyBzY3JvbGxlZCBpbnRvIHRoZSB2aWV3cG9ydCwgb3IgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNFbGVtZW50SW5WaWV3KGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQsIGZpdDogJ2Z1bGwnIHwgJ3BhcnRpYWwnKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWxUb3AgPSB0aGlzLmNvbXB1dGVPZmZzZXQoZWxlbWVudCwgJ3RvcCcpO1xuICAgIGlmIChlbFRvcCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBlbExlZnQgPSB0aGlzLmNvbXB1dGVPZmZzZXQoZWxlbWVudCwgJ2xlZnQnKTtcbiAgICBpZiAoZWxMZWZ0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ29uc2lkZXIgZWxlbWVudHMgYXMgc2Nyb2xsZWQgaW50byB2aWV3IHdoZW4gdGhlcmUgaXMgbm8gdmlld3BvcnQgb3ZlcmZsb3cuXG4gICAgLy8gVGhlIGNhbGN1bGF0aW9uIG9mIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBzY3JvbGxlZCBpbnRvIHZpZXcgbWF5IGJlIHdyb25nIGJ5IGEgZmV3IHBpeGVscyBpZiB0aGUgdmlld3BvcnQgY29udGFpbnMgZWxlbWVudHMgd2l0aCBkZWNpbWFsIHNpemVzLlxuICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBiZWNhdXNlIGBvZmZzZXRMZWZ0YCBhbmQgYG9mZnNldFRvcGAgb3BlcmF0ZSBvbiBhbiBpbnRlZ2VyIChub3QgYSBkZWNpbWFsKSwgbG9zaW5nIHByZWNpc2lvbiB0aGF0IGNhbiBhY2N1bXVsYXRlLlxuICAgIC8vIFRvIGF2b2lkIGluY29ycmVjdCBjYWxjdWxhdGlvbiB3aGVuIHRoZXJlIGlzIG5vIHZpZXdwb3J0IG92ZXJmbG93LCB3ZSBjb25zaWRlciBhbGwgY29udGFpbmVkIGVsZW1lbnRzIGFzIHNjcm9sbGVkIGludG8gdGhlIHZpZXcuXG4gICAgaWYgKHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxXaWR0aCA8PSB0aGlzLl92aWV3cG9ydEVsZW1lbnQuY2xpZW50V2lkdGggJiYgdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbEhlaWdodCA8PSB0aGlzLl92aWV3cG9ydEVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbEJvdHRvbSA9IGVsVG9wICsgY29lcmNlRWxlbWVudChlbGVtZW50KS5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3QgZWxSaWdodCA9IGVsTGVmdCArIGNvZXJjZUVsZW1lbnQoZWxlbWVudCkub2Zmc2V0V2lkdGg7XG5cbiAgICBjb25zdCB2cFRvcCA9IHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3A7XG4gICAgY29uc3QgdnBMZWZ0ID0gdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgY29uc3QgdnBCb3R0b20gPSB2cFRvcCArIHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgdnBSaWdodCA9IHZwTGVmdCArIHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgIGlmIChmaXQgPT09ICdmdWxsJykge1xuICAgICAgcmV0dXJuIChlbFRvcCA+PSB2cFRvcCAmJiBlbEJvdHRvbSA8PSB2cEJvdHRvbSkgJiYgKGVsTGVmdCA+PSB2cExlZnQgJiYgZWxSaWdodCA8PSB2cFJpZ2h0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gKGVsQm90dG9tID49IHZwVG9wICYmIGVsVG9wIDw9IHZwQm90dG9tKSAmJiAoZWxSaWdodCA+PSB2cExlZnQgJiYgZWxMZWZ0IDw9IHZwUmlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGxzIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBpbnRvIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgLSB0aGUgZWxlbWVudCB0byBzY3JvbGwgaW50byB0aGUgdmlld3BvcnRcbiAgICogQHBhcmFtIG9mZnNldCAtIHRoZSBnYXAgYmV0d2VlbiB0aGUgZWxlbWVudCBhbmQgdGhlIHZpZXdwb3J0XG4gICAqL1xuICBwdWJsaWMgc2Nyb2xsSW50b1ZpZXcoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCwgb2Zmc2V0OiBudW1iZXIgPSA1MCk6IHZvaWQge1xuICAgIGNvbnN0IHRvcCA9IHRoaXMuY29tcHV0ZU9mZnNldChlbGVtZW50LCAndG9wJyk7XG4gICAgaWYgKHRvcCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBsZWZ0ID0gdGhpcy5jb21wdXRlT2Zmc2V0KGVsZW1lbnQsICdsZWZ0Jyk7XG4gICAgaWYgKGxlZnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wID0gdG9wIC0gb2Zmc2V0O1xuICAgIHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxMZWZ0ID0gbGVmdCAtIG9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgZGlzdGFuY2Ugb2YgdGhlIGVsZW1lbnQgdG8gdGhlIHZpZXdwb3J0J3MgbGVmdCBvciB0b3AgYm9yZGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIGRpc3RhbmNlIG9mIHRoZSBlbGVtZW50IHRvIHRoZSB2aWV3cG9ydCdzIGxlZnQgb3IgdG9wIGJvcmRlciwgb3IgYG51bGxgIGlmIG5vdCBjb250YWluZWRcbiAgICogICAgICAgICBpbiB0aGUgdmlld3BvcnQgb3IgdGhlIGVsZW1lbnQgb3IgYW55IGFuY2VzdG9yIGhhcyB0aGUgYGRpc3BsYXlgIHByb3BlcnR5IHNldCB0byBgbm9uZWAuXG4gICAqL1xuICBwdWJsaWMgY29tcHV0ZU9mZnNldChlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50LCBib3JkZXI6ICdsZWZ0JyB8ICd0b3AnKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgbGV0IGVsID0gY29lcmNlRWxlbWVudChlbGVtZW50KTtcbiAgICBkbyB7XG4gICAgICBvZmZzZXQgKz0gKGJvcmRlciA9PT0gJ2xlZnQnID8gZWwub2Zmc2V0TGVmdCA6IGVsLm9mZnNldFRvcCk7XG4gICAgICBjb25zdCBvZmZzZXRQYXJlbnQgPSBlbC5vZmZzZXRQYXJlbnQ7XG4gICAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBudWxsKSB7XG4gICAgICAgIC8vIGBvZmZzZXRQYXJlbnRgIGlzIGBudWxsYCBpbiB0aGUgZm9sbG93aW5nIHNpdHVhdGlvbnM6XG4gICAgICAgIC8vIC0gVGhlIGVsZW1lbnQgb3IgYW55IGFuY2VzdG9yIGhhcyB0aGUgYGRpc3BsYXlgIHByb3BlcnR5IHNldCB0byBgbm9uZWBcbiAgICAgICAgLy8gLSBUaGUgZWxlbWVudCBoYXMgdGhlIHBvc2l0aW9uIHByb3BlcnR5IHNldCB0byBmaXhlZCAoRmlyZWZveCByZXR1cm5zIDxib2R5PikuXG4gICAgICAgIC8vIC0gVGhlIGVsZW1lbnQgaXMgPGJvZHk+IG9yIDxodG1sPi5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MRWxlbWVudC9vZmZzZXRQYXJlbnQuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKCEob2Zmc2V0UGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZWwgPSBvZmZzZXRQYXJlbnQ7XG4gICAgfSB3aGlsZSAoZWwgIT09IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KTtcblxuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2Nyb2xsYmFyIHN0eWxlLlxuICovXG5leHBvcnQgdHlwZSBTY3JvbGxiYXJTdHlsZSA9ICduYXRpdmUnIHwgJ29uLXRvcCcgfCAnaGlkZGVuJztcbiIsIjwhLS0gdmlld3BvcnQgYW5kIHZpZXdwb3J0IGNsaWVudCAtLT5cbjxkaXYgI3ZpZXdwb3J0XG4gICAgIGNsYXNzPVwidmlld3BvcnRcIlxuICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgc2NpU2Nyb2xsYWJsZSBbc2NpU2Nyb2xsYWJsZURpc3BsYXlOYXRpdmVTY3JvbGxiYXJdPVwic2Nyb2xsYmFyU3R5bGUgPT09ICduYXRpdmUnXCJcbiAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudClcIj5cbiAgPGRpdiAjdmlld3BvcnRfY2xpZW50IGNsYXNzPVwidmlld3BvcnQtY2xpZW50XCIgcGFydD1cImNvbnRlbnRcIj5cbiAgICA8c2xvdD48L3Nsb3Q+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gcmVuZGVyIGVtdWxhdGVkIHNjcm9sbGJhcnMgd2hpY2ggc2l0IG9uLXRvcCAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzY3JvbGxiYXJTdHlsZSA9PT0gJ29uLXRvcCcgJiYgKG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyLnRyYWNrU2l6ZSQgfCBhc3luYykgIT09IG51bGxcIj5cbiAgPHNjaS1zY3JvbGxiYXIgW2RpcmVjdGlvbl09XCIndnNjcm9sbCdcIiBbdmlld3BvcnRdPVwidmlld3BvcnRcIiBjbGFzcz1cImUyZS12ZXJ0aWNhbFwiPjwvc2NpLXNjcm9sbGJhcj5cbiAgPHNjaS1zY3JvbGxiYXIgW2RpcmVjdGlvbl09XCInaHNjcm9sbCdcIiBbdmlld3BvcnRdPVwidmlld3BvcnRcIiBjbGFzcz1cImUyZS1ob3Jpem9udGFsXCI+PC9zY2ktc2Nyb2xsYmFyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -15,17 +15,16 @@ import * as i0 from "@angular/core";
15
15
  /**
16
16
  * Provides a viewport component with scrollbars that sit on top of the viewport client.
17
17
  */
18
- class SciViewportModule {
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciViewportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
20
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SciViewportModule, imports: [SciViewportComponent,
18
+ export class SciViewportModule {
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciViewportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
20
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.2", ngImport: i0, type: SciViewportModule, imports: [SciViewportComponent,
21
21
  SciScrollbarComponent,
22
22
  SciScrollableDirective], exports: [SciViewportComponent,
23
23
  SciScrollbarComponent,
24
24
  SciScrollableDirective] }); }
25
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciViewportModule, imports: [SciViewportComponent] }); }
25
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciViewportModule, imports: [SciViewportComponent] }); }
26
26
  }
27
- export { SciViewportModule };
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciViewportModule, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciViewportModule, decorators: [{
29
28
  type: NgModule,
30
29
  args: [{
31
30
  imports: [
@@ -40,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
40
39
  ],
41
40
  }]
42
41
  }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy92aWV3cG9ydC9zcmMvdmlld3BvcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFOUQ7O0dBRUc7QUFDSCxNQVlhLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsWUFWMUIsb0JBQW9CO1lBQ3BCLHFCQUFxQjtZQUNyQixzQkFBc0IsYUFHdEIsb0JBQW9CO1lBQ3BCLHFCQUFxQjtZQUNyQixzQkFBc0I7K0dBR2IsaUJBQWlCLFlBVjFCLG9CQUFvQjs7U0FVWCxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFaN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLHNCQUFzQjtxQkFDdkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NjaVZpZXdwb3J0Q29tcG9uZW50fSBmcm9tICcuL3ZpZXdwb3J0LmNvbXBvbmVudCc7XG5pbXBvcnQge1NjaVNjcm9sbGJhckNvbXBvbmVudH0gZnJvbSAnLi9zY3JvbGxiYXIvc2Nyb2xsYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1NjaVNjcm9sbGFibGVEaXJlY3RpdmV9IGZyb20gJy4vc2Nyb2xsYWJsZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgdmlld3BvcnQgY29tcG9uZW50IHdpdGggc2Nyb2xsYmFycyB0aGF0IHNpdCBvbiB0b3Agb2YgdGhlIHZpZXdwb3J0IGNsaWVudC5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIFNjaVZpZXdwb3J0Q29tcG9uZW50LFxuICAgIFNjaVNjcm9sbGJhckNvbXBvbmVudCxcbiAgICBTY2lTY3JvbGxhYmxlRGlyZWN0aXZlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2NpVmlld3BvcnRDb21wb25lbnQsXG4gICAgU2NpU2Nyb2xsYmFyQ29tcG9uZW50LFxuICAgIFNjaVNjcm9sbGFibGVEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjaVZpZXdwb3J0TW9kdWxlIHtcbn1cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy92aWV3cG9ydC9zcmMvdmlld3BvcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFOUQ7O0dBRUc7QUFhSCxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixZQVYxQixvQkFBb0I7WUFDcEIscUJBQXFCO1lBQ3JCLHNCQUFzQixhQUd0QixvQkFBb0I7WUFDcEIscUJBQXFCO1lBQ3JCLHNCQUFzQjsrR0FHYixpQkFBaUIsWUFWMUIsb0JBQW9COzsyRkFVWCxpQkFBaUI7a0JBWjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3FCQUN2QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTY2lWaWV3cG9ydENvbXBvbmVudH0gZnJvbSAnLi92aWV3cG9ydC5jb21wb25lbnQnO1xuaW1wb3J0IHtTY2lTY3JvbGxiYXJDb21wb25lbnR9IGZyb20gJy4vc2Nyb2xsYmFyL3Njcm9sbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtTY2lTY3JvbGxhYmxlRGlyZWN0aXZlfSBmcm9tICcuL3Njcm9sbGFibGUuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIHZpZXdwb3J0IGNvbXBvbmVudCB3aXRoIHNjcm9sbGJhcnMgdGhhdCBzaXQgb24gdG9wIG9mIHRoZSB2aWV3cG9ydCBjbGllbnQuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBTY2lWaWV3cG9ydENvbXBvbmVudCxcbiAgICBTY2lTY3JvbGxiYXJDb21wb25lbnQsXG4gICAgU2NpU2Nyb2xsYWJsZURpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNjaVZpZXdwb3J0Q29tcG9uZW50LFxuICAgIFNjaVNjcm9sbGJhckNvbXBvbmVudCxcbiAgICBTY2lTY3JvbGxhYmxlRGlyZWN0aXZlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTY2lWaWV3cG9ydE1vZHVsZSB7XG59XG4iXX0=
@@ -66,17 +66,17 @@ class SciDimensionDirective {
66
66
  ngOnDestroy() {
67
67
  this._destroy$.next();
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
70
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciDimensionDirective, isStandalone: true, selector: "[sciDimension]", inputs: { emitOutsideAngular: "emitOutsideAngular" }, outputs: { dimensionChange: "sciDimensionChange" }, exportAs: ["sciDimension"], ngImport: i0 }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciDimensionDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
70
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: SciDimensionDirective, isStandalone: true, selector: "[sciDimension]", inputs: { emitOutsideAngular: "emitOutsideAngular" }, outputs: { dimensionChange: "sciDimensionChange" }, exportAs: ["sciDimension"], ngImport: i0 }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionDirective, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciDimensionDirective, decorators: [{
73
73
  type: Directive,
74
74
  args: [{
75
75
  selector: '[sciDimension]',
76
76
  exportAs: 'sciDimension',
77
77
  standalone: true,
78
78
  }]
79
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { dimensionChange: [{
79
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dimensionChange: [{
80
80
  type: Output,
81
81
  args: ['sciDimensionChange']
82
82
  }], emitOutsideAngular: [{
@@ -98,11 +98,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
98
98
  * @see fromDimension$
99
99
  */
100
100
  class SciDimensionModule {
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
102
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionModule, imports: [SciDimensionDirective], exports: [SciDimensionDirective] }); }
103
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionModule }); }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciDimensionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
102
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.2", ngImport: i0, type: SciDimensionModule, imports: [SciDimensionDirective], exports: [SciDimensionDirective] }); }
103
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciDimensionModule }); }
104
104
  }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionModule, decorators: [{
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SciDimensionModule, decorators: [{
106
106
  type: NgModule,
107
107
  args: [{
108
108
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"scion-components-dimension.mjs","sources":["../../../../projects/scion/components/dimension/src/dimension.directive.ts","../../../../projects/scion/components/dimension/src/dimension.module.ts","../../../../projects/scion/components/dimension/src/public_api.ts","../../../../projects/scion/components/dimension/src/scion-components-dimension.ts"],"sourcesContent":["/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {captureElementDimension, Dimension, fromDimension$} from '@scion/toolkit/observable';\n\n/**\n * Allows observing changes to host element's size.\n *\n * See {@link fromDimension$} Observable for more information.\n *\n * ---\n * Usage:\n *\n * <div sciDimension (sciDimensionChange)=\"onDimensionChange($event)\"></div>\n */\n@Directive({\n selector: '[sciDimension]',\n exportAs: 'sciDimension',\n standalone: true,\n})\nexport class SciDimensionDirective implements OnInit, OnDestroy {\n\n private readonly _host: HTMLElement;\n private _destroy$ = new Subject<void>();\n\n /**\n * Upon subscription, it emits the host element's dimension, and then continuously emits when the dimension of the host element changes.\n */\n @Output('sciDimensionChange') // eslint-disable-line @angular-eslint/no-output-rename\n public dimensionChange = new EventEmitter<SciDimension>();\n\n /**\n * Controls if to emit a dimension change inside or outside of the Angular zone.\n * If emitted outside of the Angular zone no change detection cycle is triggered.\n *\n * By default, if not specified, emits inside the Angular zone.\n */\n @Input()\n public emitOutsideAngular = false;\n\n constructor(host: ElementRef<HTMLElement>, private _ngZone: NgZone) {\n this._host = host.nativeElement;\n }\n\n public ngOnInit(): void {\n this.installDimensionListener();\n }\n\n private installDimensionListener(): void {\n this._ngZone.runOutsideAngular(() => {\n fromDimension$(this._host)\n .pipe(takeUntil(this._destroy$))\n .subscribe((dimension: SciDimension) => {\n if (this.emitOutsideAngular) {\n this.dimensionChange.emit(dimension);\n }\n else {\n this._ngZone.run(() => this.dimensionChange.emit(dimension));\n }\n });\n });\n }\n\n /**\n * Returns the current dimension of its host element.\n */\n public get dimension(): SciDimension {\n return captureElementDimension(this._host);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n }\n}\n\n/**\n * Represents the dimension of an element.\n */\nexport type SciDimension = Dimension;\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {NgModule} from '@angular/core';\nimport {SciDimensionDirective} from './dimension.directive';\n\n/**\n * Provides a directive for observing changes to the size of the host element.\n *\n * @see fromDimension$\n */\n@NgModule({\n imports: [\n SciDimensionDirective,\n ],\n exports: [\n SciDimensionDirective,\n ],\n})\nexport class SciDimensionModule {\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\n/*\n * Secondary entrypoint: '@scion/components/dimension'\n *\n * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md\n */\nexport {SciDimensionModule} from './dimension.module';\nexport {SciDimensionDirective, SciDimension} from './dimension.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;AAQG;AAOH;;;;;;;;;AASG;AACH,MAKa,qBAAqB,CAAA;IAoBhC,WAAY,CAAA,IAA6B,EAAU,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AAjB1D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAExC;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAgB,CAAC;AAE1D;;;;;AAKG;QAEI,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAGhC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;KACjC;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAEO,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,iBAAA,SAAS,CAAC,CAAC,SAAuB,KAAI;gBACrC,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtC,iBAAA;AACI,qBAAA;AACH,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9D,iBAAA;AACH,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5C;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACvB;8GApDU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;sHAUQ,eAAe,EAAA,CAAA;sBADrB,MAAM;uBAAC,oBAAoB,CAAA;gBAUrB,kBAAkB,EAAA,CAAA;sBADxB,KAAK;;;AC/CR;;;;;;;;AAQG;AAKH;;;;AAIG;AACH,MAQa,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,OAAA,EAAA,CAN3B,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAGrB,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAGZ,kBAAkB,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;AACtB,qBAAA;AACF,iBAAA,CAAA;;;ACzBD;;;;;;;;AAQG;AAEH;;;;AAIG;;ACdH;;AAEG;;;;"}
1
+ {"version":3,"file":"scion-components-dimension.mjs","sources":["../../../../projects/scion/components/dimension/src/dimension.directive.ts","../../../../projects/scion/components/dimension/src/dimension.module.ts","../../../../projects/scion/components/dimension/src/public_api.ts","../../../../projects/scion/components/dimension/src/scion-components-dimension.ts"],"sourcesContent":["/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {captureElementDimension, Dimension, fromDimension$} from '@scion/toolkit/observable';\n\n/**\n * Allows observing changes to host element's size.\n *\n * See {@link fromDimension$} Observable for more information.\n *\n * ---\n * Usage:\n *\n * <div sciDimension (sciDimensionChange)=\"onDimensionChange($event)\"></div>\n */\n@Directive({\n selector: '[sciDimension]',\n exportAs: 'sciDimension',\n standalone: true,\n})\nexport class SciDimensionDirective implements OnInit, OnDestroy {\n\n private readonly _host: HTMLElement;\n private _destroy$ = new Subject<void>();\n\n /**\n * Upon subscription, it emits the host element's dimension, and then continuously emits when the dimension of the host element changes.\n */\n @Output('sciDimensionChange') // eslint-disable-line @angular-eslint/no-output-rename\n public dimensionChange = new EventEmitter<SciDimension>();\n\n /**\n * Controls if to emit a dimension change inside or outside of the Angular zone.\n * If emitted outside of the Angular zone no change detection cycle is triggered.\n *\n * By default, if not specified, emits inside the Angular zone.\n */\n @Input()\n public emitOutsideAngular = false;\n\n constructor(host: ElementRef<HTMLElement>, private _ngZone: NgZone) {\n this._host = host.nativeElement;\n }\n\n public ngOnInit(): void {\n this.installDimensionListener();\n }\n\n private installDimensionListener(): void {\n this._ngZone.runOutsideAngular(() => {\n fromDimension$(this._host)\n .pipe(takeUntil(this._destroy$))\n .subscribe((dimension: SciDimension) => {\n if (this.emitOutsideAngular) {\n this.dimensionChange.emit(dimension);\n }\n else {\n this._ngZone.run(() => this.dimensionChange.emit(dimension));\n }\n });\n });\n }\n\n /**\n * Returns the current dimension of its host element.\n */\n public get dimension(): SciDimension {\n return captureElementDimension(this._host);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n }\n}\n\n/**\n * Represents the dimension of an element.\n */\nexport type SciDimension = Dimension;\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {NgModule} from '@angular/core';\nimport {SciDimensionDirective} from './dimension.directive';\n\n/**\n * Provides a directive for observing changes to the size of the host element.\n *\n * @see fromDimension$\n */\n@NgModule({\n imports: [\n SciDimensionDirective,\n ],\n exports: [\n SciDimensionDirective,\n ],\n})\nexport class SciDimensionModule {\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\n/*\n * Secondary entrypoint: '@scion/components/dimension'\n *\n * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md\n */\nexport {SciDimensionModule} from './dimension.module';\nexport {SciDimensionDirective, SciDimension} from './dimension.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}