@eui/components 18.0.0-rc.29 → 18.0.0-rc.30

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.
@@ -2,8 +2,8 @@
2
2
  https://github.com/kavil/ng2SmoothScroll/blob/master/lib/ng2-SmoothScroll.directive.ts
3
3
  */
4
4
  /* eslint-disable */
5
- import { NgModule, Directive, Input, HostListener, numberAttribute, booleanAttribute } from '@angular/core';
6
- import { CommonModule } from '@angular/common';
5
+ import { NgModule, Directive, Input, HostListener, numberAttribute, booleanAttribute, Inject, PLATFORM_ID, } from '@angular/core';
6
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
7
7
  import * as i0 from "@angular/core";
8
8
  export class EuiSmoothScrollToDirective {
9
9
  onClick() {
@@ -59,7 +59,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
59
59
  args: ['click']
60
60
  }] } });
61
61
  export class EuiSmoothScrollDirective {
62
- constructor(el) {
62
+ constructor(el, platformId) {
63
+ this.platformId = platformId;
63
64
  this.el = el;
64
65
  }
65
66
  onClick(target) {
@@ -73,20 +74,22 @@ export class EuiSmoothScrollDirective {
73
74
  }
74
75
  scroll() {
75
76
  if (typeof this.scrollIf === 'undefined' || this.scrollIf === true) {
76
- setTimeout(() => {
77
- new SmoothScroll(this.el.nativeElement, {
78
- duration: this.duration,
79
- offset: this.offset,
80
- easing: this.easing,
81
- callbackBefore: this.callbackBefore,
82
- callbackAfter: this.callbackAfter,
83
- containerId: this.containerId,
84
- middleAlign: this.middleAlign
85
- });
86
- }, 0);
77
+ if (isPlatformBrowser(this.platformId)) {
78
+ setTimeout(() => {
79
+ new SmoothScroll(this.el.nativeElement, {
80
+ duration: this.duration,
81
+ offset: this.offset,
82
+ easing: this.easing,
83
+ callbackBefore: this.callbackBefore,
84
+ callbackAfter: this.callbackAfter,
85
+ containerId: this.containerId,
86
+ middleAlign: this.middleAlign
87
+ });
88
+ }, 0);
89
+ }
87
90
  }
88
91
  }
89
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiSmoothScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiSmoothScrollDirective, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
90
93
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.0", type: EuiSmoothScrollDirective, selector: "[euiSmoothScroll]", inputs: { scrollIf: "scrollIf", duration: ["duration", "duration", numberAttribute], offset: ["offset", "offset", numberAttribute], easing: "easing", callbackBefore: "callbackBefore", callbackAfter: "callbackAfter", containerId: "containerId", scrollOnClick: ["scrollOnClick", "scrollOnClick", booleanAttribute], middleAlign: "middleAlign" }, host: { listeners: { "click": "onClick($event.target)" } }, ngImport: i0 }); }
91
94
  }
92
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiSmoothScrollDirective, decorators: [{
@@ -94,7 +97,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
94
97
  args: [{
95
98
  selector: '[euiSmoothScroll]'
96
99
  }]
97
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { scrollIf: [{
100
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
101
+ type: Inject,
102
+ args: [PLATFORM_ID]
103
+ }] }], propDecorators: { scrollIf: [{
98
104
  type: Input,
99
105
  args: ['scrollIf']
100
106
  }], duration: [{
@@ -249,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
249
255
  declarations: [EuiSmoothScrollToDirective, EuiSmoothScrollDirective]
250
256
  }]
251
257
  }] });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXNtb290aC1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGlyZWN0aXZlcy9ldWktc21vb3RoLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7QUFDRixvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBc0IsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLDBCQUEwQjtJQVlaLE9BQU87UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNqQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDaEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUFBLENBQUM7OEdBM0JPLDBCQUEwQjtrR0FBMUIsMEJBQTBCLGlIQUlHLGVBQWUsZ0NBQ2pDLGVBQWU7OzJGQUwxQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7aUJBQzVCOzhCQUlnQyxRQUFR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QyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixFQUFFLHdCQUF3QixDQUFDO29CQUMvRCxZQUFZLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSx3QkFBd0IsQ0FBQztpQkFDdkUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9uZzItc21vb3RoLXNjcm9sbFxuICAgaHR0cHM6Ly9naXRodWIuY29tL2thdmlsL25nMlNtb290aFNjcm9sbC9ibG9iL21hc3Rlci9saWIvbmcyLVNtb290aFNjcm9sbC5kaXJlY3RpdmUudHNcbiovXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgTmdNb2R1bGUsIERpcmVjdGl2ZSwgSW5wdXQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBFbGVtZW50UmVmLCBudW1iZXJBdHRyaWJ1dGUsIGJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2V1aVNjcm9sbFRvXSdcbn0pXG5leHBvcnQgY2xhc3MgRXVpU21vb3RoU2Nyb2xsVG9EaXJlY3RpdmUge1xuICAgIHRhcmdldEVsZW1lbnQ6IGFueTtcblxuICAgIEBJbnB1dCgnZXVpU2Nyb2xsVG8nKSBwdWJsaWMgc2Nyb2xsVG86IHN0cmluZztcbiAgICBASW5wdXQoe2FsaWFzOiAnZHVyYXRpb24nLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBwdWJsaWMgZHVyYXRpb246IG51bWJlcjtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBwdWJsaWMgb2Zmc2V0OiBudW1iZXI7XG4gICAgQElucHV0KCdlYXNpbmcnKSBwdWJsaWMgZWFzaW5nOiBzdHJpbmc7XG4gICAgQElucHV0KCdjYWxsYmFja0JlZm9yZScpIHB1YmxpYyBjYWxsYmFja0JlZm9yZTogYW55O1xuICAgIEBJbnB1dCgnY2FsbGJhY2tBZnRlcicpIHB1YmxpYyBjYWxsYmFja0FmdGVyOiBhbnk7XG4gICAgQElucHV0KCdjb250YWluZXJJZCcpIHB1YmxpYyBjb250YWluZXJJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgnbWlkZGxlQWxpZ24nKSBwdWJsaWMgbWlkZGxlQWxpZ246IGFueTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb25DbGljaygpIHtcbiAgICAgICAgdGhpcy50YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zY3JvbGxUbyk7XG4gICAgICAgIGlmICghdGhpcy50YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBuZXcgU21vb3RoU2Nyb2xsKHRoaXMudGFyZ2V0RWxlbWVudCwge1xuICAgICAgICAgICAgZHVyYXRpb246IHRoaXMuZHVyYXRpb24sXG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgZWFzaW5nOiB0aGlzLmVhc2luZyxcbiAgICAgICAgICAgIGNhbGxiYWNrQmVmb3JlOiB0aGlzLmNhbGxiYWNrQmVmb3JlLFxuICAgICAgICAgICAgY2FsbGJhY2tBZnRlcjogdGhpcy5jYWxsYmFja0FmdGVyLFxuICAgICAgICAgICAgY29udGFpbmVySWQ6IHRoaXMuY29udGFpbmVySWQsXG4gICAgICAgICAgICBtaWRkbGVBbGlnbjogdGhpcy5taWRkbGVBbGlnblxuICAgICAgICB9KTtcbiAgICB9O1xuXG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2V1aVNtb290aFNjcm9sbF0nXG59KVxuZXhwb3J0IGNsYXNzIEV1aVNtb290aFNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSBlbDtcblxuICAgIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICB9XG5cbiAgICBASW5wdXQoJ3Njcm9sbElmJykgcHVibGljIHNjcm9sbElmOiBib29sZWFuO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlfSkgcHVibGljIGR1cmF0aW9uOiBudW1iZXI7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGV9KSBwdWJsaWMgb2Zmc2V0OiBudW1iZXI7XG4gICAgQElucHV0KCdlYXNpbmcnKSBwdWJsaWMgZWFzaW5nOiBzdHJpbmc7XG4gICAgQElucHV0KCdjYWxsYmFja0JlZm9yZScpIHB1YmxpYyBjYWxsYmFja0JlZm9yZTogYW55O1xuICAgIEBJbnB1dCgnY2FsbGJhY2tBZnRlcicpIHB1YmxpYyBjYWxsYmFja0FmdGVyOiBhbnk7XG4gICAgQElucHV0KCdjb250YWluZXJJZCcpIHB1YmxpYyBjb250YWluZXJJZDogc3RyaW5nO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwdWJsaWMgc2Nyb2xsT25DbGljazogYm9vbGVhbjtcbiAgICBASW5wdXQoJ21pZGRsZUFsaWduJykgcHVibGljIG1pZGRsZUFsaWduOiBhbnk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKSBvbkNsaWNrKHRhcmdldCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxPbkNsaWNrKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbCgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjcm9sbCgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjcm9sbElmID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLnNjcm9sbElmID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBuZXcgU21vb3RoU2Nyb2xsKHRoaXMuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiB0aGlzLmVhc2luZyxcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tCZWZvcmU6IHRoaXMuY2FsbGJhY2tCZWZvcmUsXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQWZ0ZXI6IHRoaXMuY2FsbGJhY2tBZnRlcixcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySWQ6IHRoaXMuY29udGFpbmVySWQsXG4gICAgICAgICAgICAgICAgICAgIG1pZGRsZUFsaWduOiB0aGlzLm1pZGRsZUFsaWduXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5jbGFzcyBTbW9vdGhTY3JvbGwge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IGFueSwgb3B0aW9uczogYW55KSB7XG4gICAgICAgIHRoaXMuc21vb3RoU2Nyb2xsKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBwcml2YXRlIHNtb290aFNjcm9sbChlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICAgIC8vIE9wdGlvbnNcbiAgICAgICAgbGV0IGR1cmF0aW9uID0gb3B0aW9ucy5kdXJhdGlvbiB8fCA4MDAsXG4gICAgICAgICAgICBvZmZzZXQgPSBvcHRpb25zLm9mZnNldCB8fCAwLFxuICAgICAgICAgICAgZWFzaW5nID0gb3B0aW9ucy5lYXNpbmcgfHwgJ2Vhc2VJbk91dFF1YXJ0JyxcbiAgICAgICAgICAgIGNhbGxiYWNrQmVmb3JlID0gb3B0aW9ucy5jYWxsYmFja0JlZm9yZSB8fCBmdW5jdGlvbiAoKSB7IH0sXG4gICAgICAgICAgICBjYWxsYmFja0FmdGVyID0gb3B0aW9ucy5jYWxsYmFja0FmdGVyIHx8IGZ1bmN0aW9uICgpIHsgfSxcbiAgICAgICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuY29udGFpbmVySWQpIHx8IG51bGwsXG4gICAgICAgICAgICBjb250YWluZXJQcmVzZW50ID0gKGNvbnRhaW5lciAhPSB1bmRlZmluZWQgJiYgY29udGFpbmVyICE9IG51bGwpLFxuICAgICAgICAgICAgbWlkZGxlQWxpZ24gPSBvcHRpb25zLm1pZGRsZUFsaWduIHx8IGZhbHNlO1xuXG5cdFx0LyoqXG5cdFx0ICogUmV0cmlldmUgY3VycmVudCBsb2NhdGlvblxuXHRcdCAqL1xuICAgICAgICBsZXQgZ2V0U2Nyb2xsTG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyUHJlc2VudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LnBhZ2VZT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG5cdFx0LyoqXG5cdFx0ICogQ2FsY3VsYXRlIGVhc2luZyBwYXR0ZXJuLlxuXHRcdCAqXG5cdFx0ICogMjAxNTA3MTMgZWRpdCAtIHplcGhpbnplclxuXHRcdCAqIC0gY2hhbmdlZCBpZi1lbHNlIHRvIHN3aXRjaFxuXHRcdCAqIEBzZWUgaHR0cDovL2FyY2hpdmUub3JlaWxseS5jb20vcHViL2Evc2VydmVyLWFkbWluaXN0cmF0aW9uL2V4Y2VycHRzL2V2ZW4tZmFzdGVyLXdlYnNpdGVzL3dyaXRpbmctZWZmaWNpZW50LWphdmFzY3JpcHQuaHRtbFxuXHRcdCAqL1xuICAgICAgICBsZXQgZ2V0RWFzaW5nUGF0dGVybiA9IGZ1bmN0aW9uICh0eXBlLCB0aW1lKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Vhc2VJblF1YWQnOiByZXR1cm4gdGltZSAqIHRpbWU7IC8vIGFjY2VsZXJhdGluZyBmcm9tIHplcm8gdmVsb2NpdHlcbiAgICAgICAgICAgIGNhc2UgJ2Vhc2VPdXRRdWFkJzogcmV0dXJuIHRpbWUgKiAoMiAtIHRpbWUpOyAvLyBkZWNlbGVyYXRpbmcgdG8gemVybyB2ZWxvY2l0eVxuICAgICAgICAgICAgY2FzZSAnZWFzZUluT3V0UXVhZCc6IHJldHVybiB0aW1lIDwgMC41ID8gMiAqIHRpbWUgKiB0aW1lIDogLTEgKyAoNCAtIDIgKiB0aW1lKSAqIHRpbWU7IC8vIGFjY2VsZXJhdGlvbiB1bnRpbCBoYWxmd2F5LCB0aGVuIGRlY2VsZXJhdGlvblxuICAgICAgICAgICAgY2FzZSAnZWFzZUluQ3ViaWMnOiByZXR1cm4gdGltZSAqIHRpbWUgKiB0aW1lOyAvLyBhY2NlbGVyYXRpbmcgZnJvbSB6ZXJvIHZlbG9jaXR5XG4gICAgICAgICAgICBjYXNlICdlYXNlT3V0Q3ViaWMnOiByZXR1cm4gKC0tdGltZSkgKiB0aW1lICogdGltZSArIDE7IC8vIGRlY2VsZXJhdGluZyB0byB6ZXJvIHZlbG9jaXR5XG4gICAgICAgICAgICBjYXNlICdlYXNlSW5PdXRDdWJpYyc6IHJldHVybiB0aW1lIDwgMC41ID8gNCAqIHRpbWUgKiB0aW1lICogdGltZSA6ICh0aW1lIC0gMSkgKiAoMiAqIHRpbWUgLSAyKSAqICgyICogdGltZSAtIDIpICsgMTsgLy8gYWNjZWxlcmF0aW9uIHVudGlsIGhhbGZ3YXksIHRoZW4gZGVjZWxlcmF0aW9uXG4gICAgICAgICAgICBjYXNlICdlYXNlSW5RdWFydCc6IHJldHVybiB0aW1lICogdGltZSAqIHRpbWUgKiB0aW1lOyAvLyBhY2NlbGVyYXRpbmcgZnJvbSB6ZXJvIHZlbG9jaXR5XG4gICAgICAgICAgICBjYXNlICdlYXNlT3V0UXVhcnQnOiByZXR1cm4gMSAtICgtLXRpbWUpICogdGltZSAqIHRpbWUgKiB0aW1lOyAvLyBkZWNlbGVyYXRpbmcgdG8gemVybyB2ZWxvY2l0eVxuICAgICAgICAgICAgY2FzZSAnZWFzZUluT3V0UXVhcnQnOiByZXR1cm4gdGltZSA8IDAuNSA/IDggKiB0aW1lICogdGltZSAqIHRpbWUgKiB0aW1lIDogMSAtIDggKiAoLS10aW1lKSAqIHRpbWUgKiB0aW1lICogdGltZTsgLy8gYWNjZWxlcmF0aW9uIHVudGlsIGhhbGZ3YXksIHRoZW4gZGVjZWxlcmF0aW9uXG4gICAgICAgICAgICBjYXNlICdlYXNlSW5RdWludCc6IHJldHVybiB0aW1lICogdGltZSAqIHRpbWUgKiB0aW1lICogdGltZTsgLy8gYWNjZWxlcmF0aW5nIGZyb20gemVybyB2ZWxvY2l0eVxuICAgICAgICAgICAgY2FzZSAnZWFzZU91dFF1aW50JzogcmV0dXJuIDEgKyAoLS10aW1lKSAqIHRpbWUgKiB0aW1lICogdGltZSAqIHRpbWU7IC8vIGRlY2VsZXJhdGluZyB0byB6ZXJvIHZlbG9jaXR5XG4gICAgICAgICAgICBjYXNlICdlYXNlSW5PdXRRdWludCc6IHJldHVybiB0aW1lIDwgMC41ID8gMTYgKiB0aW1lICogdGltZSAqIHRpbWUgKiB0aW1lICogdGltZSA6IDEgKyAxNiAqICgtLXRpbWUpICogdGltZSAqIHRpbWUgKiB0aW1lICogdGltZTsgLy8gYWNjZWxlcmF0aW9uIHVudGlsIGhhbGZ3YXksIHRoZW4gZGVjZWxlcmF0aW9uXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gdGltZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuXHRcdC8qKlxuXHRcdCAqIENhbGN1bGF0ZSBob3cgZmFyIHRvIHNjcm9sbFxuXHRcdCAqL1xuICAgICAgICBsZXQgZ2V0RW5kTG9jYXRpb24gPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gMCxcbiAgICAgICAgICAgICAgICBlbGVtZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgICAgICAgICAgYWJzb2x1dGVFbGVtZW50VG9wID0gZWxlbWVudFJlY3QudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAobWlkZGxlQWxpZ24pIHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IChhYnNvbHV0ZUVsZW1lbnRUb3AgKyAoZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyKSkgLSAod2luZG93LmlubmVySGVpZ2h0IC8gMik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gYWJzb2x1dGVFbGVtZW50VG9wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiAtIG9mZnNldDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KGxvY2F0aW9uLCAwKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB3aG9sZSB0aGluZ1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50TG9jYXRpb24gPSBudWxsLFxuICAgICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24gPSBnZXRTY3JvbGxMb2NhdGlvbigpLFxuICAgICAgICAgICAgICAgIGVuZExvY2F0aW9uID0gZ2V0RW5kTG9jYXRpb24oZWxlbWVudCksXG4gICAgICAgICAgICAgICAgdGltZUxhcHNlZCA9IDAsXG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSBlbmRMb2NhdGlvbiAtIHN0YXJ0TG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQ7XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogU3RvcCB0aGUgc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aGVuIHRoZSBhbmNob3IgaXMgcmVhY2hlZCAob3IgYXQgdGhlIHRvcC9ib3R0b20gb2YgdGhlIHBhZ2UpXG5cdFx0XHQgKi9cbiAgICAgICAgICAgIGxldCBzdG9wQW5pbWF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbiA9IGdldFNjcm9sbExvY2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lclByZXNlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQgPSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgY3VycmVudExvY2F0aW9uO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbEhlaWdodCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCArIGN1cnJlbnRMb2NhdGlvbjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICggLy8gY29uZGl0aW9uIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID09IGVuZExvY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgKCAvLyBjb25kaXRpb24gMlxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudExvY2F0aW9uID09IGVuZExvY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgKCAvLyBjb25kaXRpb24gM1xuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQgPiBzY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkgeyAvLyBzdG9wXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocnVuQW5pbWF0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FmdGVyKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogU2Nyb2xsIHRoZSBwYWdlIGJ5IGFuIGluY3JlbWVudCwgYW5kIGNoZWNrIGlmIGl0J3MgdGltZSB0byBzdG9wXG5cdFx0XHQgKi9cbiAgICAgICAgICAgIGxldCBhbmltYXRlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRpbWVMYXBzZWQgKz0gMTY7XG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZSA9ICh0aW1lTGFwc2VkIC8gZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2UgPSAocGVyY2VudGFnZSA+IDEpID8gMSA6IHBlcmNlbnRhZ2U7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBzdGFydExvY2F0aW9uICsgKGRpc3RhbmNlICogZ2V0RWFzaW5nUGF0dGVybihlYXNpbmcsIHBlcmNlbnRhZ2UpKTtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyUHJlc2VudCkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gcG9zaXRpb247XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RvcEFuaW1hdGlvbigpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY2FsbGJhY2tCZWZvcmUoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGxldCBydW5BbmltYXRpb24gPSBzZXRJbnRlcnZhbChhbmltYXRlU2Nyb2xsLCAxNik7XG4gICAgICAgIH0sIDApO1xuXG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtFdWlTbW9vdGhTY3JvbGxUb0RpcmVjdGl2ZSwgRXVpU21vb3RoU2Nyb2xsRGlyZWN0aXZlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtFdWlTbW9vdGhTY3JvbGxUb0RpcmVjdGl2ZSwgRXVpU21vb3RoU2Nyb2xsRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBFdWlTbW9vdGhTY3JvbGxEaXJlY3RpdmVNb2R1bGUgeyB9XG4vKiBlc2xpbnQtZW5hYmxlICovXG4iXX0=
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXNtb290aC1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGlyZWN0aXZlcy9ldWktc21vb3RoLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7QUFDRixvQkFBb0I7QUFDcEIsT0FBTyxFQUNILFFBQVEsRUFDUixTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFHWixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUtsRSxNQUFNLE9BQU8sMEJBQTBCO0lBWVosT0FBTztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUNoQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQUEsQ0FBQzs4R0EzQk8sMEJBQTBCO2tHQUExQiwwQkFBMEIsaUhBSUcsZUFBZSxnQ0FDakMsZUFBZTs7MkZBTDFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDUCxR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QTlCLDhCQUE4QjsrR0FBOUIsOEJBQThCLGlCQXRPOUIsMEJBQTBCLEVBa0MxQix3QkFBd0IsYUFnTXZCLFlBQVksYUFsT2IsMEJBQTBCLEVBa0MxQix3QkFBd0I7K0dBb014Qiw4QkFBOEIsWUFKN0IsWUFBWTs7MkZBSWIsOEJBQThCO2tCQUwxQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsd0JBQXdCLENBQUM7b0JBQy9ELFlBQVksRUFBRSxDQUFDLDBCQUEwQixFQUFFLHdCQUF3QixDQUFDO2lCQUN2RSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL25nMi1zbW9vdGgtc2Nyb2xsXG4gICBodHRwczovL2dpdGh1Yi5jb20va2F2aWwvbmcyU21vb3RoU2Nyb2xsL2Jsb2IvbWFzdGVyL2xpYi9uZzItU21vb3RoU2Nyb2xsLmRpcmVjdGl2ZS50c1xuKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQge1xuICAgIE5nTW9kdWxlLFxuICAgIERpcmVjdGl2ZSxcbiAgICBJbnB1dCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgT25Jbml0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgSW5qZWN0LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tldWlTY3JvbGxUb10nXG59KVxuZXhwb3J0IGNsYXNzIEV1aVNtb290aFNjcm9sbFRvRGlyZWN0aXZlIHtcbiAgICB0YXJnZXRFbGVtZW50OiBhbnk7XG5cbiAgICBASW5wdXQoJ2V1aVNjcm9sbFRvJykgcHVibGljIHNjcm9sbFRvOiBzdHJpbmc7XG4gICAgQElucHV0KHthbGlhczogJ2R1cmF0aW9uJywgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgcHVibGljIGR1cmF0aW9uOiBudW1iZXI7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgcHVibGljIG9mZnNldDogbnVtYmVyO1xuICAgIEBJbnB1dCgnZWFzaW5nJykgcHVibGljIGVhc2luZzogc3RyaW5nO1xuICAgIEBJbnB1dCgnY2FsbGJhY2tCZWZvcmUnKSBwdWJsaWMgY2FsbGJhY2tCZWZvcmU6IGFueTtcbiAgICBASW5wdXQoJ2NhbGxiYWNrQWZ0ZXInKSBwdWJsaWMgY2FsbGJhY2tBZnRlcjogYW55O1xuICAgIEBJbnB1dCgnY29udGFpbmVySWQnKSBwdWJsaWMgY29udGFpbmVySWQ6IHN0cmluZztcbiAgICBASW5wdXQoJ21pZGRsZUFsaWduJykgcHVibGljIG1pZGRsZUFsaWduOiBhbnk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpIG9uQ2xpY2soKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc2Nyb2xsVG8pO1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3IFNtb290aFNjcm9sbCh0aGlzLnRhcmdldEVsZW1lbnQsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLmR1cmF0aW9uLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIGVhc2luZzogdGhpcy5lYXNpbmcsXG4gICAgICAgICAgICBjYWxsYmFja0JlZm9yZTogdGhpcy5jYWxsYmFja0JlZm9yZSxcbiAgICAgICAgICAgIGNhbGxiYWNrQWZ0ZXI6IHRoaXMuY2FsbGJhY2tBZnRlcixcbiAgICAgICAgICAgIGNvbnRhaW5lcklkOiB0aGlzLmNvbnRhaW5lcklkLFxuICAgICAgICAgICAgbWlkZGxlQWxpZ246IHRoaXMubWlkZGxlQWxpZ25cbiAgICAgICAgfSk7XG4gICAgfTtcblxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tldWlTbW9vdGhTY3JvbGxdJ1xufSlcbmV4cG9ydCBjbGFzcyBFdWlTbW9vdGhTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgZWw7XG5cbiAgICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZiwgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3QpIHtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgIH1cblxuICAgIEBJbnB1dCgnc2Nyb2xsSWYnKSBwdWJsaWMgc2Nyb2xsSWY6IGJvb2xlYW47XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGV9KSBwdWJsaWMgZHVyYXRpb246IG51bWJlcjtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZX0pIHB1YmxpYyBvZmZzZXQ6IG51bWJlcjtcbiAgICBASW5wdXQoJ2Vhc2luZycpIHB1YmxpYyBlYXNpbmc6IHN0cmluZztcbiAgICBASW5wdXQoJ2NhbGxiYWNrQmVmb3JlJykgcHVibGljIGNhbGxiYWNrQmVmb3JlOiBhbnk7XG4gICAgQElucHV0KCdjYWxsYmFja0FmdGVyJykgcHVibGljIGNhbGxiYWNrQWZ0ZXI6IGFueTtcbiAgICBASW5wdXQoJ2NvbnRhaW5lcklkJykgcHVibGljIGNvbnRhaW5lcklkOiBzdHJpbmc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHB1YmxpYyBzY3JvbGxPbkNsaWNrOiBib29sZWFuO1xuICAgIEBJbnB1dCgnbWlkZGxlQWxpZ24nKSBwdWJsaWMgbWlkZGxlQWxpZ246IGFueTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pIG9uQ2xpY2sodGFyZ2V0KSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbE9uQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNjcm9sbCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsKCkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2Nyb2xsSWYgPT09ICd1bmRlZmluZWQnIHx8IHRoaXMuc2Nyb2xsSWYgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3IFNtb290aFNjcm9sbCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLmR1cmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogdGhpcy5lYXNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0JlZm9yZTogdGhpcy5jYWxsYmFja0JlZm9yZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQWZ0ZXI6IHRoaXMuY2FsbGJhY2tBZnRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcklkOiB0aGlzLmNvbnRhaW5lcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxlQWxpZ246IHRoaXMubWlkZGxlQWxpZ25cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuY2xhc3MgU21vb3RoU2Nyb2xsIHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50OiBhbnksIG9wdGlvbnM6IGFueSkge1xuICAgICAgICB0aGlzLnNtb290aFNjcm9sbChlbGVtZW50LCBvcHRpb25zKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBzbW9vdGhTY3JvbGwoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICAvLyBPcHRpb25zXG4gICAgICAgIGxldCBkdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24gfHwgODAwLFxuICAgICAgICAgICAgb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIGVhc2luZyA9IG9wdGlvbnMuZWFzaW5nIHx8ICdlYXNlSW5PdXRRdWFydCcsXG4gICAgICAgICAgICBjYWxsYmFja0JlZm9yZSA9IG9wdGlvbnMuY2FsbGJhY2tCZWZvcmUgfHwgZnVuY3Rpb24gKCkgeyB9LFxuICAgICAgICAgICAgY2FsbGJhY2tBZnRlciA9IG9wdGlvbnMuY2FsbGJhY2tBZnRlciB8fCBmdW5jdGlvbiAoKSB7IH0sXG4gICAgICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmNvbnRhaW5lcklkKSB8fCBudWxsLFxuICAgICAgICAgICAgY29udGFpbmVyUHJlc2VudCA9IChjb250YWluZXIgIT0gdW5kZWZpbmVkICYmIGNvbnRhaW5lciAhPSBudWxsKSxcbiAgICAgICAgICAgIG1pZGRsZUFsaWduID0gb3B0aW9ucy5taWRkbGVBbGlnbiB8fCBmYWxzZTtcblxuXHRcdC8qKlxuXHRcdCAqIFJldHJpZXZlIGN1cnJlbnQgbG9jYXRpb25cblx0XHQgKi9cbiAgICAgICAgbGV0IGdldFNjcm9sbExvY2F0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lclByZXNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5wYWdlWU9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuXHRcdC8qKlxuXHRcdCAqIENhbGN1bGF0ZSBlYXNpbmcgcGF0dGVybi5cblx0XHQgKlxuXHRcdCAqIDIwMTUwNzEzIGVkaXQgLSB6ZXBoaW56ZXJcblx0XHQgKiAtIGNoYW5nZWQgaWYtZWxzZSB0byBzd2l0Y2hcblx0XHQgKiBAc2VlIGh0dHA6Ly9hcmNoaXZlLm9yZWlsbHkuY29tL3B1Yi9hL3NlcnZlci1hZG1pbmlzdHJhdGlvbi9leGNlcnB0cy9ldmVuLWZhc3Rlci13ZWJzaXRlcy93cml0aW5nLWVmZmljaWVudC1qYXZhc2NyaXB0Lmh0bWxcblx0XHQgKi9cbiAgICAgICAgbGV0IGdldEVhc2luZ1BhdHRlcm4gPSBmdW5jdGlvbiAodHlwZSwgdGltZSkge1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdlYXNlSW5RdWFkJzogcmV0dXJuIHRpbWUgKiB0aW1lOyAvLyBhY2NlbGVyYXRpbmcgZnJvbSB6ZXJvIHZlbG9jaXR5XG4gICAgICAgICAgICBjYXNlICdlYXNlT3V0UXVhZCc6IHJldHVybiB0aW1lICogKDIgLSB0aW1lKTsgLy8gZGVjZWxlcmF0aW5nIHRvIHplcm8gdmVsb2NpdHlcbiAgICAgICAgICAgIGNhc2UgJ2Vhc2VJbk91dFF1YWQnOiByZXR1cm4gdGltZSA8IDAuNSA/IDIgKiB0aW1lICogdGltZSA6IC0xICsgKDQgLSAyICogdGltZSkgKiB0aW1lOyAvLyBhY2NlbGVyYXRpb24gdW50aWwgaGFsZndheSwgdGhlbiBkZWNlbGVyYXRpb25cbiAgICAgICAgICAgIGNhc2UgJ2Vhc2VJbkN1YmljJzogcmV0dXJuIHRpbWUgKiB0aW1lICogdGltZTsgLy8gYWNjZWxlcmF0aW5nIGZyb20gemVybyB2ZWxvY2l0eVxuICAgICAgICAgICAgY2FzZSAnZWFzZU91dEN1YmljJzogcmV0dXJuICgtLXRpbWUpICogdGltZSAqIHRpbWUgKyAxOyAvLyBkZWNlbGVyYXRpbmcgdG8gemVybyB2ZWxvY2l0eVxuICAgICAgICAgICAgY2FzZSAnZWFzZUluT3V0Q3ViaWMnOiByZXR1cm4gdGltZSA8IDAuNSA/IDQgKiB0aW1lICogdGltZSAqIHRpbWUgOiAodGltZSAtIDEpICogKDIgKiB0aW1lIC0gMikgKiAoMiAqIHRpbWUgLSAyKSArIDE7IC8vIGFjY2VsZXJhdGlvbiB1bnRpbCBoYWxmd2F5LCB0aGVuIGRlY2VsZXJhdGlvblxuICAgICAgICAgICAgY2FzZSAnZWFzZUluUXVhcnQnOiByZXR1cm4gdGltZSAqIHRpbWUgKiB0aW1lICogdGltZTsgLy8gYWNjZWxlcmF0aW5nIGZyb20gemVybyB2ZWxvY2l0eVxuICAgICAgICAgICAgY2FzZSAnZWFzZU91dFF1YXJ0JzogcmV0dXJuIDEgLSAoLS10aW1lKSAqIHRpbWUgKiB0aW1lICogdGltZTsgLy8gZGVjZWxlcmF0aW5nIHRvIHplcm8gdmVsb2NpdHlcbiAgICAgICAgICAgIGNhc2UgJ2Vhc2VJbk91dFF1YXJ0JzogcmV0dXJuIHRpbWUgPCAwLjUgPyA4ICogdGltZSAqIHRpbWUgKiB0aW1lICogdGltZSA6IDEgLSA4ICogKC0tdGltZSkgKiB0aW1lICogdGltZSAqIHRpbWU7IC8vIGFjY2VsZXJhdGlvbiB1bnRpbCBoYWxmd2F5LCB0aGVuIGRlY2VsZXJhdGlvblxuICAgICAgICAgICAgY2FzZSAnZWFzZUluUXVpbnQnOiByZXR1cm4gdGltZSAqIHRpbWUgKiB0aW1lICogdGltZSAqIHRpbWU7IC8vIGFjY2VsZXJhdGluZyBmcm9tIHplcm8gdmVsb2NpdHlcbiAgICAgICAgICAgIGNhc2UgJ2Vhc2VPdXRRdWludCc6IHJldHVybiAxICsgKC0tdGltZSkgKiB0aW1lICogdGltZSAqIHRpbWUgKiB0aW1lOyAvLyBkZWNlbGVyYXRpbmcgdG8gemVybyB2ZWxvY2l0eVxuICAgICAgICAgICAgY2FzZSAnZWFzZUluT3V0UXVpbnQnOiByZXR1cm4gdGltZSA8IDAuNSA/IDE2ICogdGltZSAqIHRpbWUgKiB0aW1lICogdGltZSAqIHRpbWUgOiAxICsgMTYgKiAoLS10aW1lKSAqIHRpbWUgKiB0aW1lICogdGltZSAqIHRpbWU7IC8vIGFjY2VsZXJhdGlvbiB1bnRpbCBoYWxmd2F5LCB0aGVuIGRlY2VsZXJhdGlvblxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIHRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cblx0XHQvKipcblx0XHQgKiBDYWxjdWxhdGUgaG93IGZhciB0byBzY3JvbGxcblx0XHQgKi9cbiAgICAgICAgbGV0IGdldEVuZExvY2F0aW9uID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IDAsXG4gICAgICAgICAgICAgICAgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgICAgICAgIGFic29sdXRlRWxlbWVudFRvcCA9IGVsZW1lbnRSZWN0LnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgICAgICAgaWYgKG1pZGRsZUFsaWduKSB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24gPSAoYWJzb2x1dGVFbGVtZW50VG9wICsgKGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMikpIC0gKHdpbmRvdy5pbm5lckhlaWdodCAvIDIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGFic29sdXRlRWxlbWVudFRvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9mZnNldCkge1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9jYXRpb24gLSBvZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChsb2NhdGlvbiwgMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgd2hvbGUgdGhpbmdcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudExvY2F0aW9uID0gbnVsbCxcbiAgICAgICAgICAgICAgICBzdGFydExvY2F0aW9uID0gZ2V0U2Nyb2xsTG9jYXRpb24oKSxcbiAgICAgICAgICAgICAgICBlbmRMb2NhdGlvbiA9IGdldEVuZExvY2F0aW9uKGVsZW1lbnQpLFxuICAgICAgICAgICAgICAgIHRpbWVMYXBzZWQgPSAwLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gZW5kTG9jYXRpb24gLSBzdGFydExvY2F0aW9uLFxuICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgICAgIGludGVybmFsSGVpZ2h0O1xuXG5cdFx0XHQvKipcblx0XHRcdCAqIFN0b3AgdGhlIHNjcm9sbGluZyBhbmltYXRpb24gd2hlbiB0aGUgYW5jaG9yIGlzIHJlYWNoZWQgKG9yIGF0IHRoZSB0b3AvYm90dG9tIG9mIHRoZSBwYWdlKVxuXHRcdFx0ICovXG4gICAgICAgICAgICBsZXQgc3RvcEFuaW1hdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50TG9jYXRpb24gPSBnZXRTY3JvbGxMb2NhdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJQcmVzZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbEhlaWdodCA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGludGVybmFsSGVpZ2h0ID0gY29udGFpbmVyLmNsaWVudEhlaWdodCArIGN1cnJlbnRMb2NhdGlvbjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQgPSBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgKyBjdXJyZW50TG9jYXRpb247XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAoIC8vIGNvbmRpdGlvbiAxXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9PSBlbmRMb2NhdGlvblxuICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgICggLy8gY29uZGl0aW9uIDJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbiA9PSBlbmRMb2NhdGlvblxuICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgICggLy8gY29uZGl0aW9uIDNcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsSGVpZ2h0ID4gc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApIHsgLy8gc3RvcFxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHJ1bkFuaW1hdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZnRlcihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG5cdFx0XHQvKipcblx0XHRcdCAqIFNjcm9sbCB0aGUgcGFnZSBieSBhbiBpbmNyZW1lbnQsIGFuZCBjaGVjayBpZiBpdCdzIHRpbWUgdG8gc3RvcFxuXHRcdFx0ICovXG4gICAgICAgICAgICBsZXQgYW5pbWF0ZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aW1lTGFwc2VkICs9IDE2O1xuICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2UgPSAodGltZUxhcHNlZCAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICBwZXJjZW50YWdlID0gKHBlcmNlbnRhZ2UgPiAxKSA/IDEgOiBwZXJjZW50YWdlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gc3RhcnRMb2NhdGlvbiArIChkaXN0YW5jZSAqIGdldEVhc2luZ1BhdHRlcm4oZWFzaW5nLCBwZXJjZW50YWdlKSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lclByZXNlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3BBbmltYXRpb24oKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNhbGxiYWNrQmVmb3JlKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBsZXQgcnVuQW5pbWF0aW9uID0gc2V0SW50ZXJ2YWwoYW5pbWF0ZVNjcm9sbCwgMTYpO1xuICAgICAgICB9LCAwKTtcblxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbRXVpU21vb3RoU2Nyb2xsVG9EaXJlY3RpdmUsIEV1aVNtb290aFNjcm9sbERpcmVjdGl2ZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbRXVpU21vb3RoU2Nyb2xsVG9EaXJlY3RpdmUsIEV1aVNtb290aFNjcm9sbERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRXVpU21vb3RoU2Nyb2xsRGlyZWN0aXZlTW9kdWxlIHsgfVxuLyogZXNsaW50LWVuYWJsZSAqL1xuIl19