@ethlete/core 2.7.4 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/esm2022/lib/components/structured-data/structured-data.component.mjs +3 -3
  2. package/esm2022/lib/directives/animatable/animatable.directive.mjs +3 -3
  3. package/esm2022/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +3 -3
  4. package/esm2022/lib/directives/animated-overlay/animated-overlay.directive.mjs +3 -3
  5. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +3 -3
  6. package/esm2022/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +3 -3
  7. package/esm2022/lib/directives/delayable/delayable.directive.mjs +3 -3
  8. package/esm2022/lib/directives/is-active-element/is-active-element.directive.mjs +3 -3
  9. package/esm2022/lib/directives/is-element/is-element.directive.mjs +3 -3
  10. package/esm2022/lib/directives/let/let.directive.mjs +3 -3
  11. package/esm2022/lib/directives/observe-content/observe-content.directive.mjs +3 -3
  12. package/esm2022/lib/directives/observe-resize/observe-resize.directive.mjs +3 -3
  13. package/esm2022/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +37 -32
  14. package/esm2022/lib/directives/repeat/repeat.directive.mjs +3 -3
  15. package/esm2022/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +3 -3
  16. package/esm2022/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +3 -3
  17. package/esm2022/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +3 -3
  18. package/esm2022/lib/directives/seo/seo.directive.mjs +3 -3
  19. package/esm2022/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +3 -3
  20. package/esm2022/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +3 -3
  21. package/esm2022/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +3 -3
  22. package/esm2022/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +3 -3
  23. package/esm2022/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +3 -3
  24. package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +3 -3
  25. package/esm2022/lib/services/click-observer.service.mjs +6 -6
  26. package/esm2022/lib/services/content-observer.service.mjs +6 -6
  27. package/esm2022/lib/services/focus-visible.service.mjs +3 -3
  28. package/esm2022/lib/services/resize-observer.service.mjs +6 -6
  29. package/esm2022/lib/services/router-state.service.mjs +3 -3
  30. package/esm2022/lib/services/viewport.service.mjs +7 -7
  31. package/esm2022/lib/utils/cookie.util.mjs +7 -1
  32. package/esm2022/lib/utils/mutation-observable.util.mjs +37 -0
  33. package/esm2022/lib/utils/public-api.mjs +2 -1
  34. package/fesm2022/ethlete-core.mjs +178 -131
  35. package/fesm2022/ethlete-core.mjs.map +1 -1
  36. package/lib/directives/observe-scroll-state/observe-scroll-state.directive.d.ts +3 -3
  37. package/lib/utils/mutation-observable.util.d.ts +7 -0
  38. package/lib/utils/public-api.d.ts +1 -0
  39. package/package.json +5 -5
@@ -5,10 +5,10 @@ export class ToArrayPipe {
5
5
  constructor() {
6
6
  this.transform = toArray;
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.1", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.2", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ToArrayPipe, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ToArrayPipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'toArray', standalone: true }]
14
14
  }] });
@@ -7,10 +7,10 @@ export class ClickObserverFactory {
7
7
  create() {
8
8
  return fromEvent(document, 'click');
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ClickObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ClickObserverFactory, providedIn: 'root' }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ClickObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ClickObserverFactory, providedIn: 'root' }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ClickObserverFactory, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ClickObserverFactory, decorators: [{
14
14
  type: Injectable,
15
15
  args: [{ providedIn: 'root' }]
16
16
  }] });
@@ -63,10 +63,10 @@ export class ClickObserverService {
63
63
  this._observedElements.delete(element);
64
64
  }
65
65
  }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ClickObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ClickObserverService, providedIn: 'root' }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ClickObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ClickObserverService, providedIn: 'root' }); }
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ClickObserverService, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ClickObserverService, decorators: [{
70
70
  type: Injectable,
71
71
  args: [{ providedIn: 'root' }]
72
72
  }] });
@@ -7,10 +7,10 @@ export class MutationObserverFactory {
7
7
  create(callback) {
8
8
  return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MutationObserverFactory, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: MutationObserverFactory, decorators: [{
14
14
  type: Injectable,
15
15
  args: [{ providedIn: 'root' }]
16
16
  }] });
@@ -69,10 +69,10 @@ export class ContentObserverService {
69
69
  this._observedElements.delete(element);
70
70
  }
71
71
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ContentObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
73
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ContentObserverService, providedIn: 'root' }); }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ContentObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
73
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ContentObserverService, providedIn: 'root' }); }
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ContentObserverService, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ContentObserverService, decorators: [{
76
76
  type: Injectable,
77
77
  args: [{ providedIn: 'root' }]
78
78
  }] });
@@ -22,10 +22,10 @@ export class FocusVisibleService {
22
22
  onPointerDown() {
23
23
  this._hadKeyboardEvent = false;
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: FocusVisibleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
26
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: FocusVisibleService, providedIn: 'root' }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: FocusVisibleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: FocusVisibleService, providedIn: 'root' }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: FocusVisibleService, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: FocusVisibleService, decorators: [{
29
29
  type: Injectable,
30
30
  args: [{
31
31
  providedIn: 'root',
@@ -7,10 +7,10 @@ export class ResizeObserverFactory {
7
7
  create(callback) {
8
8
  return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ResizeObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ResizeObserverFactory, providedIn: 'root' }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ResizeObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ResizeObserverFactory, providedIn: 'root' }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ResizeObserverFactory, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ResizeObserverFactory, decorators: [{
14
14
  type: Injectable,
15
15
  args: [{ providedIn: 'root' }]
16
16
  }] });
@@ -65,10 +65,10 @@ export class ResizeObserverService {
65
65
  this._observedElements.delete(element);
66
66
  }
67
67
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
69
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ResizeObserverService, providedIn: 'root' }); }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
69
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ResizeObserverService, providedIn: 'root' }); }
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ResizeObserverService, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ResizeObserverService, decorators: [{
72
72
  type: Injectable,
73
73
  args: [{ providedIn: 'root' }]
74
74
  }] });
@@ -166,10 +166,10 @@ export class RouterStateService {
166
166
  }
167
167
  return changes;
168
168
  }
169
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
170
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: RouterStateService, providedIn: 'root' }); }
169
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
170
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: RouterStateService, providedIn: 'root' }); }
171
171
  }
172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: RouterStateService, decorators: [{
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: RouterStateService, decorators: [{
173
173
  type: Injectable,
174
174
  args: [{
175
175
  providedIn: 'root',
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { BreakpointObserver } from '@angular/cdk/layout';
3
3
  import { Injectable, inject } from '@angular/core';
4
- import { BehaviorSubject, Subject, combineLatest, finalize, map, shareReplay, takeUntil, tap } from 'rxjs';
4
+ import { BehaviorSubject, Subject, combineLatest, debounceTime, finalize, map, shareReplay, takeUntil, tap, } from 'rxjs';
5
5
  import { DEFAULT_VIEWPORT_CONFIG, VIEWPORT_CONFIG } from '../constants';
6
6
  import { Memo } from '../decorators';
7
7
  import { equal } from '../utils';
@@ -73,12 +73,12 @@ export class ViewportService {
73
73
  this._is2Xl$ = new BehaviorSubject(false);
74
74
  this._viewportSize$ = new BehaviorSubject(null);
75
75
  this._scrollbarSize$ = new BehaviorSubject(null);
76
- this.currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(map((val) => this.getCurrentViewport(val)), shareReplay(1));
76
+ this.currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(map((val) => this.getCurrentViewport(val)), debounceTime(0), shareReplay({ bufferSize: 1, refCount: true }));
77
77
  this._observeDefaultBreakpoints();
78
78
  }
79
79
  observe(options) {
80
80
  const mediaQuery = this._buildMediaQuery(options);
81
- return this._breakpointObserver.observe(mediaQuery).pipe(map((x) => x.matches), shareReplay(1));
81
+ return this._breakpointObserver.observe(mediaQuery).pipe(map((x) => x.matches), shareReplay({ bufferSize: 1, refCount: true }));
82
82
  }
83
83
  isMatched(options) {
84
84
  const mediaQuery = this._buildMediaQuery(options);
@@ -210,8 +210,8 @@ export class ViewportService {
210
210
  }
211
211
  return 'xs';
212
212
  }
213
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
214
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ViewportService, providedIn: 'root' }); }
213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
214
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ViewportService, providedIn: 'root' }); }
215
215
  }
216
216
  __decorate([
217
217
  Memo(),
@@ -229,10 +229,10 @@ __decorate([
229
229
  __metadata("design:paramtypes", [Object]),
230
230
  __metadata("design:returntype", void 0)
231
231
  ], ViewportService.prototype, "_buildMediaQuery", null);
232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: ViewportService, decorators: [{
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ViewportService, decorators: [{
233
233
  type: Injectable,
234
234
  args: [{
235
235
  providedIn: 'root',
236
236
  }]
237
237
  }], ctorParameters: function () { return []; }, propDecorators: { _getViewportSize: [], _buildMediaQuery: [] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQVdsRSxNQUFNLE9BQU8sZUFBZTtJQWtCMUIsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUs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QztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7MEVBdU1TLGdCQUFnQixNQXVCaEIsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmluYWxpemUsIG1hcCwgc2hhcmVSZXBsYXksIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBERUZBVUxUX1ZJRVdQT1JUX0NPTkZJRywgVklFV1BPUlRfQ09ORklHIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE1lbW8gfSBmcm9tICcuLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEJyZWFrcG9pbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBlcXVhbCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4vcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnVpbGRNZWRpYVF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vdmlld3BvcnQudHlwZXMnO1xuXG5pbnRlcmZhY2UgU2l6ZSB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KFJlc2l6ZU9ic2VydmVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdwb3J0Q29uZmlnID0gaW5qZWN0KFZJRVdQT1JUX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSB8fCBERUZBVUxUX1ZJRVdQT1JUX0NPTkZJRztcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld3BvcnRNb25pdG9yU3RvcCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9pc1ZpZXdwb3J0TW9uaXRvckVuYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9pc1hzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc1NtJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc01kJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc0xnJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc1hsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pczJYbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwcml2YXRlIF92aWV3cG9ydFNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTaXplIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgX3Njcm9sbGJhclNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTaXplIHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGlzWHMkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1hzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc1hzKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1hzJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc1NtJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTbSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNTbSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTbSQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNNZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzTWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTWQkLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTGckKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0xnJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc0xnKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0xnJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc1hsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYbCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNYbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYbCQudmFsdWU7XG4gIH1cblxuICBnZXQgaXMyWGwkKCkge1xuICAgIHJldHVybiB0aGlzLl9pczJYbCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXMyWGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzMlhsJC52YWx1ZTtcbiAgfVxuXG4gIGdldCB2aWV3cG9ydFNpemUkKCkge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydFNpemUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHZpZXdwb3J0U2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRTaXplJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBzY3JvbGxiYXJTaXplJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsYmFyU2l6ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc2Nyb2xsYmFyU2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsYmFyU2l6ZSQudmFsdWU7XG4gIH1cblxuICBjdXJyZW50Vmlld3BvcnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc1hzJCwgdGhpcy5pc1NtJCwgdGhpcy5pc01kJCwgdGhpcy5pc0xnJCwgdGhpcy5pc1hsJCwgdGhpcy5pczJYbCRdKS5waXBlKFxuICAgIG1hcCgodmFsKSA9PiB0aGlzLmdldEN1cnJlbnRWaWV3cG9ydCh2YWwpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcblxuICBnZXQgY3VycmVudFZpZXdwb3J0KCkge1xuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRWaWV3cG9ydChbdGhpcy5pc1hzLCB0aGlzLmlzU20sIHRoaXMuaXNNZCwgdGhpcy5pc0xnLCB0aGlzLmlzWGwsIHRoaXMuaXMyWGxdKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX29ic2VydmVEZWZhdWx0QnJlYWtwb2ludHMoKTtcbiAgfVxuXG4gIG9ic2VydmUob3B0aW9uczogeyBtaW4/OiBudW1iZXIgfCBCcmVha3BvaW50OyBtYXg/OiBudW1iZXIgfCBCcmVha3BvaW50IH0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy5fYnVpbGRNZWRpYVF1ZXJ5KG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKG1lZGlhUXVlcnkpLnBpcGUoXG4gICAgICBtYXAoKHgpID0+IHgubWF0Y2hlcyksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuICB9XG5cbiAgaXNNYXRjaGVkKG9wdGlvbnM6IHsgbWluPzogbnVtYmVyIHwgQnJlYWtwb2ludDsgbWF4PzogbnVtYmVyIHwgQnJlYWtwb2ludCB9KTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMuX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKG1lZGlhUXVlcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgc2l6ZSBDU1MgdmFyaWFibGVzIHRvIHRoZSBkb2N1bWVudEVsZW1lbnQgaW4gcGl4ZWxzLlxuICAgKiAtIGAtLWV0LXZ3YDogdmlld3BvcnQgd2lkdGggZXhjbHVkaW5nIHNjcm9sbGJhciB3aWR0aFxuICAgKiAtIGAtLWV0LXZoYDogdmlld3BvcnQgaGVpZ2h0IGV4Y2x1ZGluZyBzY3JvbGxiYXIgaGVpZ2h0XG4gICAqIC0gYC0tZXQtc3dgOiBzY3JvbGxiYXIgd2lkdGhcbiAgICogLSBgLS1ldC1zaGA6IHNjcm9sbGJhciBoZWlnaHRcbiAgICovXG4gIG1vbml0b3JWaWV3cG9ydCgpIHtcbiAgICBpZiAodGhpcy5faXNWaWV3cG9ydE1vbml0b3JFbmFibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9pc1ZpZXdwb3J0TW9uaXRvckVuYWJsZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlXG4gICAgICAub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSBlWzBdLmNvbnRlbnRSZWN0LndpZHRoO1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGVbMF0uY29udGVudFJlY3QuaGVpZ2h0O1xuXG4gICAgICAgICAgY29uc3Qgb2JqID0geyB3aWR0aCwgaGVpZ2h0IH07XG5cbiAgICAgICAgICBpZiAoZXF1YWwob2JqLCB0aGlzLl92aWV3cG9ydFNpemUkLnZhbHVlKSkgcmV0dXJuO1xuXG4gICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWV0LXZ3JywgYCR7b2JqLndpZHRofXB4YCk7XG4gICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWV0LXZoJywgYCR7b2JqLmhlaWdodH1weGApO1xuXG4gICAgICAgICAgdGhpcy5fdmlld3BvcnRTaXplJC5uZXh0KG9iaik7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWV0LXZ3Jyk7XG4gICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWV0LXZoJyk7XG5cbiAgICAgICAgICB0aGlzLl92aWV3cG9ydFNpemUkLm5leHQobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdmlld3BvcnRNb25pdG9yU3RvcCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29uc3Qgc2Nyb2xsYmFyUnVsZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzY3JvbGxiYXJSdWxlci5zdHlsZS53aWR0aCA9ICcxMDBweCc7XG4gICAgc2Nyb2xsYmFyUnVsZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMHB4JztcbiAgICBzY3JvbGxiYXJSdWxlci5zdHlsZS5vdmVyZmxvdyA9ICdzY3JvbGwnO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBzY3JvbGxiYXJSdWxlci5zdHlsZS50b3AgPSAnLTk5OTlweCc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JvbGxiYXJSdWxlcik7XG5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgICAgIC5vYnNlcnZlKHNjcm9sbGJhclJ1bGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNpemUgPSBlWzBdLmNvbnRlbnRSZWN0LndpZHRoO1xuXG4gICAgICAgICAgY29uc3Qgb2JqID0geyB3aWR0aDogMTAwIC0gc2l6ZSwgaGVpZ2h0OiAxMDAgLSBzaXplIH07XG5cbiAgICAgICAgICBpZiAoZXF1YWwob2JqLCB0aGlzLl9zY3JvbGxiYXJTaXplJC52YWx1ZSkpIHJldHVybjtcblxuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1zdycsIGAke29iai53aWR0aH1weGApO1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1zaCcsIGAke29iai5oZWlnaHR9cHhgKTtcblxuICAgICAgICAgIHRoaXMuX3Njcm9sbGJhclNpemUkLm5leHQob2JqKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcm9sbGJhclJ1bGVyKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdncnKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdmgnKTtcblxuICAgICAgICAgIHRoaXMuX3Njcm9sbGJhclNpemUkLm5leHQobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdmlld3BvcnRNb25pdG9yU3RvcCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdW5tb25pdG9yVmlld3BvcnQoKSB7XG4gICAgdGhpcy5fdmlld3BvcnRNb25pdG9yU3RvcCQubmV4dCgpO1xuICAgIHRoaXMuX2lzVmlld3BvcnRNb25pdG9yRW5hYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZURlZmF1bHRCcmVha3BvaW50cygpIHtcbiAgICB0aGlzLm9ic2VydmUoeyBtYXg6ICd4cycgfSkuc3Vic2NyaWJlKHRoaXMuX2lzWHMkKTtcbiAgICB0aGlzLm9ic2VydmUoeyBtaW46ICdzbScsIG1heDogJ3NtJyB9KS5zdWJzY3JpYmUodGhpcy5faXNTbSQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ21kJywgbWF4OiAnbWQnIH0pLnN1YnNjcmliZSh0aGlzLl9pc01kJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnbGcnLCBtYXg6ICdsZycgfSkuc3Vic2NyaWJlKHRoaXMuX2lzTGckKTtcbiAgICB0aGlzLm9ic2VydmUoeyBtaW46ICd4bCcsIG1heDogJ3hsJyB9KS5zdWJzY3JpYmUodGhpcy5faXNYbCQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJzJ4bCcgfSkuc3Vic2NyaWJlKHRoaXMuX2lzMlhsJCk7XG4gIH1cblxuICBATWVtbygpXG4gIHByaXZhdGUgX2dldFZpZXdwb3J0U2l6ZSh0eXBlOiBCcmVha3BvaW50LCBvcHRpb246ICdtaW4nIHwgJ21heCcpIHtcbiAgICBjb25zdCBpbmRleCA9IG9wdGlvbiA9PT0gJ21pbicgPyAwIDogMTtcbiAgICBjb25zdCBzaXplID0gdGhpcy5fdmlld3BvcnRDb25maWcuYnJlYWtwb2ludHNbdHlwZV1baW5kZXhdO1xuXG4gICAgaWYgKHNpemUgPT09IEluZmluaXR5IHx8IHNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiBzaXplO1xuICAgIH1cblxuICAgIGlmIChvcHRpb24gPT09ICdtaW4nKSB7XG4gICAgICByZXR1cm4gc2l6ZTtcbiAgICB9XG5cbiAgICAvLyBEdWUgdG8gc2NhbGluZywgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB2aWV3cG9ydCBtYXkgYmUgYSBkZWNpbWFsIG51bWJlci5cbiAgICAvLyBFZy4gb24gV2luZG93cyAxMSB3aXRoIDE1MCUgc2NhbGluZywgdGhlIHZpZXdwb3J0IHNpemUgbWF5IGJlIDE1MzUuMzNweFxuICAgIC8vIGFuZCB0aHVzIG5vdCBtYXRjaGluZyBhbnkgb2YgdGhlIGRlZmF1bHQgYnJlYWtwb2ludHMuXG4gICAgcmV0dXJuIHNpemUgKyAwLjk7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6ICh2OiBCdWlsZE1lZGlhUXVlcnlPcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYCR7di5taW4gPz8gJyd9LSR7di5tYXggPz8gJyd9YDtcbiAgICB9LFxuICB9KVxuICBwcml2YXRlIF9idWlsZE1lZGlhUXVlcnkob3B0aW9uczogQnVpbGRNZWRpYVF1ZXJ5T3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5taW4gJiYgIW9wdGlvbnMubWF4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBvZiBtaW4gb3IgbWF4IG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhUXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChvcHRpb25zLm1pbikge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm1pbiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgbWVkaWFRdWVyeVBhcnRzLnB1c2goYChtaW4td2lkdGg6ICR7b3B0aW9ucy5taW59cHgpYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZWRpYVF1ZXJ5UGFydHMucHVzaChgKG1pbi13aWR0aDogJHt0aGlzLl9nZXRWaWV3cG9ydFNpemUob3B0aW9ucy5taW4sICdtaW4nKX1weClgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5taW4gJiYgb3B0aW9ucy5tYXgpIHtcbiAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKCdhbmQnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5tYXgpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5tYXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKGAobWF4LXdpZHRoOiAke29wdGlvbnMubWF4fXB4KWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVkaWFRdWVyeVBhcnRzLnB1c2goYChtYXgtd2lkdGg6ICR7dGhpcy5fZ2V0Vmlld3BvcnRTaXplKG9wdGlvbnMubWF4LCAnbWF4Jyl9cHgpYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lZGlhUXVlcnlQYXJ0cy5qb2luKCcgJyk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1cnJlbnRWaWV3cG9ydChbaXNYcywgaXNTbSwgaXNNZCwgaXNMZywgaXNYbCwgaXMyWGxdOiBbXG4gICAgYm9vbGVhbixcbiAgICBib29sZWFuLFxuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgICBib29sZWFuLFxuICAgIGJvb2xlYW4sXG4gIF0pOiBCcmVha3BvaW50IHtcbiAgICBpZiAoaXNYcykge1xuICAgICAgcmV0dXJuICd4cyc7XG4gICAgfSBlbHNlIGlmIChpc1NtKSB7XG4gICAgICByZXR1cm4gJ3NtJztcbiAgICB9IGVsc2UgaWYgKGlzTWQpIHtcbiAgICAgIHJldHVybiAnbWQnO1xuICAgIH0gZWxzZSBpZiAoaXNMZykge1xuICAgICAgcmV0dXJuICdsZyc7XG4gICAgfSBlbHNlIGlmIChpc1hsKSB7XG4gICAgICByZXR1cm4gJ3hsJztcbiAgICB9IGVsc2UgaWYgKGlzMlhsKSB7XG4gICAgICByZXR1cm4gJzJ4bCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICd4cyc7XG4gIH1cbn1cbiJdfQ==
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBRWYsT0FBTyxFQUNQLGFBQWEsRUFDYixZQUFZLEVBQ1osUUFBUSxFQUNSLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQVdsRSxNQUFNLE9BQU8sZUFBZTtJQWtCMUIsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZ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QyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7UUFDekMsQ0FBQztLQUNGLENBQUM7Ozs7dURBNkJEOzJGQTFQVSxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjswRUF3TVMsZ0JBQWdCLE1BdUJoQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBERUZBVUxUX1ZJRVdQT1JUX0NPTkZJRywgVklFV1BPUlRfQ09ORklHIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE1lbW8gfSBmcm9tICcuLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEJyZWFrcG9pbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBlcXVhbCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4vcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnVpbGRNZWRpYVF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vdmlld3BvcnQudHlwZXMnO1xuXG5pbnRlcmZhY2UgU2l6ZSB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KFJlc2l6ZU9ic2VydmVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdwb3J0Q29uZmlnID0gaW5qZWN0KFZJRVdQT1JUX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSB8fCBERUZBVUxUX1ZJRVdQT1JUX0NPTkZJRztcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld3BvcnRNb25pdG9yU3RvcCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9pc1ZpZXdwb3J0TW9uaXRvckVuYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9pc1hzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc1NtJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc01kJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc0xnJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc1hsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pczJYbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwcml2YXRlIF92aWV3cG9ydFNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTaXplIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgX3Njcm9sbGJhclNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTaXplIHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGlzWHMkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1hzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc1hzKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1hzJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc1NtJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTbSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNTbSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTbSQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNNZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzTWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTWQkLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTGckKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0xnJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc0xnKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0xnJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc1hsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYbCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNYbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYbCQudmFsdWU7XG4gIH1cblxuICBnZXQgaXMyWGwkKCkge1xuICAgIHJldHVybiB0aGlzLl9pczJYbCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXMyWGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzMlhsJC52YWx1ZTtcbiAgfVxuXG4gIGdldCB2aWV3cG9ydFNpemUkKCkge1xuICAgIHJldHVybiB0aGlzLl92aWV3cG9ydFNpemUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHZpZXdwb3J0U2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRTaXplJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBzY3JvbGxiYXJTaXplJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsYmFyU2l6ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc2Nyb2xsYmFyU2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsYmFyU2l6ZSQudmFsdWU7XG4gIH1cblxuICBjdXJyZW50Vmlld3BvcnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc1hzJCwgdGhpcy5pc1NtJCwgdGhpcy5pc01kJCwgdGhpcy5pc0xnJCwgdGhpcy5pc1hsJCwgdGhpcy5pczJYbCRdKS5waXBlKFxuICAgIG1hcCgodmFsKSA9PiB0aGlzLmdldEN1cnJlbnRWaWV3cG9ydCh2YWwpKSxcbiAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBnZXQgY3VycmVudFZpZXdwb3J0KCkge1xuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRWaWV3cG9ydChbdGhpcy5pc1hzLCB0aGlzLmlzU20sIHRoaXMuaXNNZCwgdGhpcy5pc0xnLCB0aGlzLmlzWGwsIHRoaXMuaXMyWGxdKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX29ic2VydmVEZWZhdWx0QnJlYWtwb2ludHMoKTtcbiAgfVxuXG4gIG9ic2VydmUob3B0aW9uczogeyBtaW4/OiBudW1iZXIgfCBCcmVha3BvaW50OyBtYXg/OiBudW1iZXIgfCBCcmVha3BvaW50IH0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy5fYnVpbGRNZWRpYVF1ZXJ5KG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKG1lZGlhUXVlcnkpLnBpcGUoXG4gICAgICBtYXAoKHgpID0+IHgubWF0Y2hlcyksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICk7XG4gIH1cblxuICBpc01hdGNoZWQob3B0aW9uczogeyBtaW4/OiBudW1iZXIgfCBCcmVha3BvaW50OyBtYXg/OiBudW1iZXIgfCBCcmVha3BvaW50IH0pOiBib29sZWFuIHtcbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy5fYnVpbGRNZWRpYVF1ZXJ5KG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQobWVkaWFRdWVyeSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBzaXplIENTUyB2YXJpYWJsZXMgdG8gdGhlIGRvY3VtZW50RWxlbWVudCBpbiBwaXhlbHMuXG4gICAqIC0gYC0tZXQtdndgOiB2aWV3cG9ydCB3aWR0aCBleGNsdWRpbmcgc2Nyb2xsYmFyIHdpZHRoXG4gICAqIC0gYC0tZXQtdmhgOiB2aWV3cG9ydCBoZWlnaHQgZXhjbHVkaW5nIHNjcm9sbGJhciBoZWlnaHRcbiAgICogLSBgLS1ldC1zd2A6IHNjcm9sbGJhciB3aWR0aFxuICAgKiAtIGAtLWV0LXNoYDogc2Nyb2xsYmFyIGhlaWdodFxuICAgKi9cbiAgbW9uaXRvclZpZXdwb3J0KCkge1xuICAgIGlmICh0aGlzLl9pc1ZpZXdwb3J0TW9uaXRvckVuYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuX2lzVmlld3BvcnRNb25pdG9yRW5hYmxlZCA9IHRydWU7XG5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgICAgIC5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGUpID0+IHtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGVbMF0uY29udGVudFJlY3Qud2lkdGg7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gZVswXS5jb250ZW50UmVjdC5oZWlnaHQ7XG5cbiAgICAgICAgICBjb25zdCBvYmogPSB7IHdpZHRoLCBoZWlnaHQgfTtcblxuICAgICAgICAgIGlmIChlcXVhbChvYmosIHRoaXMuX3ZpZXdwb3J0U2l6ZSQudmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZXQtdncnLCBgJHtvYmoud2lkdGh9cHhgKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZXQtdmgnLCBgJHtvYmouaGVpZ2h0fXB4YCk7XG5cbiAgICAgICAgICB0aGlzLl92aWV3cG9ydFNpemUkLm5leHQob2JqKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdncnKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdmgnKTtcblxuICAgICAgICAgIHRoaXMuX3ZpZXdwb3J0U2l6ZSQubmV4dChudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl92aWV3cG9ydE1vbml0b3JTdG9wJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBzY3JvbGxiYXJSdWxlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLndpZHRoID0gJzEwMHB4JztcbiAgICBzY3JvbGxiYXJSdWxlci5zdHlsZS5oZWlnaHQgPSAnMTAwcHgnO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG4gICAgc2Nyb2xsYmFyUnVsZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLnRvcCA9ICctOTk5OXB4JztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcm9sbGJhclJ1bGVyKTtcblxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyU2VydmljZVxuICAgICAgLm9ic2VydmUoc2Nyb2xsYmFyUnVsZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2l6ZSA9IGVbMF0uY29udGVudFJlY3Qud2lkdGg7XG5cbiAgICAgICAgICBjb25zdCBvYmogPSB7IHdpZHRoOiAxMDAgLSBzaXplLCBoZWlnaHQ6IDEwMCAtIHNpemUgfTtcblxuICAgICAgICAgIGlmIChlcXVhbChvYmosIHRoaXMuX3Njcm9sbGJhclNpemUkLnZhbHVlKSkgcmV0dXJuO1xuXG4gICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWV0LXN3JywgYCR7b2JqLndpZHRofXB4YCk7XG4gICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWV0LXNoJywgYCR7b2JqLmhlaWdodH1weGApO1xuXG4gICAgICAgICAgdGhpcy5fc2Nyb2xsYmFyU2l6ZSQubmV4dChvYmopO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2Nyb2xsYmFyUnVsZXIpO1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1ldC12dycpO1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1ldC12aCcpO1xuXG4gICAgICAgICAgdGhpcy5fc2Nyb2xsYmFyU2l6ZSQubmV4dChudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl92aWV3cG9ydE1vbml0b3JTdG9wJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB1bm1vbml0b3JWaWV3cG9ydCgpIHtcbiAgICB0aGlzLl92aWV3cG9ydE1vbml0b3JTdG9wJC5uZXh0KCk7XG4gICAgdGhpcy5faXNWaWV3cG9ydE1vbml0b3JFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9vYnNlcnZlRGVmYXVsdEJyZWFrcG9pbnRzKCkge1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1heDogJ3hzJyB9KS5zdWJzY3JpYmUodGhpcy5faXNYcyQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ3NtJywgbWF4OiAnc20nIH0pLnN1YnNjcmliZSh0aGlzLl9pc1NtJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnbWQnLCBtYXg6ICdtZCcgfSkuc3Vic2NyaWJlKHRoaXMuX2lzTWQkKTtcbiAgICB0aGlzLm9ic2VydmUoeyBtaW46ICdsZycsIG1heDogJ2xnJyB9KS5zdWJzY3JpYmUodGhpcy5faXNMZyQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ3hsJywgbWF4OiAneGwnIH0pLnN1YnNjcmliZSh0aGlzLl9pc1hsJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnMnhsJyB9KS5zdWJzY3JpYmUodGhpcy5faXMyWGwkKTtcbiAgfVxuXG4gIEBNZW1vKClcbiAgcHJpdmF0ZSBfZ2V0Vmlld3BvcnRTaXplKHR5cGU6IEJyZWFrcG9pbnQsIG9wdGlvbjogJ21pbicgfCAnbWF4Jykge1xuICAgIGNvbnN0IGluZGV4ID0gb3B0aW9uID09PSAnbWluJyA/IDAgOiAxO1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLl92aWV3cG9ydENvbmZpZy5icmVha3BvaW50c1t0eXBlXVtpbmRleF07XG5cbiAgICBpZiAoc2l6ZSA9PT0gSW5maW5pdHkgfHwgc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIHNpemU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbiA9PT0gJ21pbicpIHtcbiAgICAgIHJldHVybiBzaXplO1xuICAgIH1cblxuICAgIC8vIER1ZSB0byBzY2FsaW5nLCB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHZpZXdwb3J0IG1heSBiZSBhIGRlY2ltYWwgbnVtYmVyLlxuICAgIC8vIEVnLiBvbiBXaW5kb3dzIDExIHdpdGggMTUwJSBzY2FsaW5nLCB0aGUgdmlld3BvcnQgc2l6ZSBtYXkgYmUgMTUzNS4zM3B4XG4gICAgLy8gYW5kIHRodXMgbm90IG1hdGNoaW5nIGFueSBvZiB0aGUgZGVmYXVsdCBicmVha3BvaW50cy5cbiAgICByZXR1cm4gc2l6ZSArIDAuOTtcbiAgfVxuXG4gIEBNZW1vKHtcbiAgICByZXNvbHZlcjogKHY6IEJ1aWxkTWVkaWFRdWVyeU9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBgJHt2Lm1pbiA/PyAnJ30tJHt2Lm1heCA/PyAnJ31gO1xuICAgIH0sXG4gIH0pXG4gIHByaXZhdGUgX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zOiBCdWlsZE1lZGlhUXVlcnlPcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLm1pbiAmJiAhb3B0aW9ucy5tYXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIG9mIG1pbiBvciBtYXggbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFRdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG9wdGlvbnMubWluKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMubWluID09PSAnbnVtYmVyJykge1xuICAgICAgICBtZWRpYVF1ZXJ5UGFydHMucHVzaChgKG1pbi13aWR0aDogJHtvcHRpb25zLm1pbn1weClgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKGAobWluLXdpZHRoOiAke3RoaXMuX2dldFZpZXdwb3J0U2l6ZShvcHRpb25zLm1pbiwgJ21pbicpfXB4KWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1pbiAmJiBvcHRpb25zLm1heCkge1xuICAgICAgbWVkaWFRdWVyeVBhcnRzLnB1c2goJ2FuZCcpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1heCkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm1heCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgbWVkaWFRdWVyeVBhcnRzLnB1c2goYChtYXgtd2lkdGg6ICR7b3B0aW9ucy5tYXh9cHgpYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZWRpYVF1ZXJ5UGFydHMucHVzaChgKG1heC13aWR0aDogJHt0aGlzLl9nZXRWaWV3cG9ydFNpemUob3B0aW9ucy5tYXgsICdtYXgnKX1weClgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWVkaWFRdWVyeVBhcnRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFZpZXdwb3J0KFtpc1hzLCBpc1NtLCBpc01kLCBpc0xnLCBpc1hsLCBpczJYbF06IFtcbiAgICBib29sZWFuLFxuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgICBib29sZWFuLFxuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgXSk6IEJyZWFrcG9pbnQge1xuICAgIGlmIChpc1hzKSB7XG4gICAgICByZXR1cm4gJ3hzJztcbiAgICB9IGVsc2UgaWYgKGlzU20pIHtcbiAgICAgIHJldHVybiAnc20nO1xuICAgIH0gZWxzZSBpZiAoaXNNZCkge1xuICAgICAgcmV0dXJuICdtZCc7XG4gICAgfSBlbHNlIGlmIChpc0xnKSB7XG4gICAgICByZXR1cm4gJ2xnJztcbiAgICB9IGVsc2UgaWYgKGlzWGwpIHtcbiAgICAgIHJldHVybiAneGwnO1xuICAgIH0gZWxzZSBpZiAoaXMyWGwpIHtcbiAgICAgIHJldHVybiAnMnhsJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3hzJztcbiAgfVxufVxuIl19
@@ -39,10 +39,16 @@ export const getDomain = () => {
39
39
  if (hostname.includes('localhost')) {
40
40
  return 'localhost';
41
41
  }
42
+ const hostIsIP = hostname.match(
43
+ // eslint-disable-next-line no-useless-escape
44
+ /^(\d{1,3}\.){3}\d{1,3}$/);
45
+ if (hostIsIP) {
46
+ return hostname;
47
+ }
42
48
  const splitHost = hostname.split('.');
43
49
  if (splitHost.length > 2) {
44
50
  return `${splitHost[splitHost.length - 2]}.${splitHost[splitHost.length - 1]}`;
45
51
  }
46
52
  return hostname;
47
53
  };
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9jb29raWUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUN4QyxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRTtRQUNuQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUMzQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUU7UUFDbkMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELHVFQUF1RTtJQUN2RSxPQUFPLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLGFBQWEsR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDaEcsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUU7UUFDbkMsT0FBTztLQUNSO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxhQUFhLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFFbkUsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLHFCQUFxQixJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQy9FLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ25CLFFBQVEsQ0FBQyxNQUFNO1lBQ2IsSUFBSTtnQkFDSixHQUFHO2dCQUNILENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLHdDQUF3QyxDQUFDO0tBQzVDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUM1QixJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsRUFBRTtRQUNwQyxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFFMUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sV0FBVyxDQUFDO0tBQ3BCO0lBRUQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV0QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ2hGO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGhhc0Nvb2tpZSA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jykuc29tZSgoYykgPT4ge1xuICAgIHJldHVybiBjLnRyaW0oKS5zdGFydHNXaXRoKG5hbWUgKyAnPScpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb29raWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBGcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNzMwMzYyL2dldC1jb29raWUtYnktbmFtZVxuICByZXR1cm4gKCc7ICcgKyBkb2N1bWVudC5jb29raWUpLnNwbGl0KGA7ICR7bmFtZX09YCkucG9wKCk/LnNwbGl0KCc7JylbMF07XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q29va2llID0gKG5hbWU6IHN0cmluZywgZGF0YTogc3RyaW5nLCBleHBpcmVzSW5EYXlzID0gMzAsIGRvbWFpbiA9IGdldERvbWFpbigpKSA9PiB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIGV4cGlyZXNJbkRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcblxuICBkb2N1bWVudC5jb29raWUgPSBgJHtuYW1lfT0ke2RhdGF9OyBwYXRoPS87IGV4cGlyZXM9JHtkYXRlLnRvVVRDU3RyaW5nKCl9OyBkb21haW49JHtkb21haW59OyBTYW1lU2l0ZT1MYXg7YDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVDb29raWUgPSAobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIGRvbWFpbiA9IGdldERvbWFpbigpKSA9PiB7XG4gIGlmIChoYXNDb29raWUobmFtZSkpIHtcbiAgICBkb2N1bWVudC5jb29raWUgPVxuICAgICAgbmFtZSArXG4gICAgICAnPScgK1xuICAgICAgKHBhdGggPyAnO3BhdGg9JyArIHBhdGggOiAnJykgK1xuICAgICAgKGRvbWFpbiA/ICc7ZG9tYWluPScgKyBkb21haW4gOiAnJykgK1xuICAgICAgJztleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UJztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldERvbWFpbiA9ICgpID0+IHtcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcblxuICBpZiAoaG9zdG5hbWUuaW5jbHVkZXMoJ2xvY2FsaG9zdCcpKSB7XG4gICAgcmV0dXJuICdsb2NhbGhvc3QnO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRIb3N0ID0gaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICBpZiAoc3BsaXRIb3N0Lmxlbmd0aCA+IDIpIHtcbiAgICByZXR1cm4gYCR7c3BsaXRIb3N0W3NwbGl0SG9zdC5sZW5ndGggLSAyXX0uJHtzcGxpdEhvc3Rbc3BsaXRIb3N0Lmxlbmd0aCAtIDFdfWA7XG4gIH1cblxuICByZXR1cm4gaG9zdG5hbWU7XG59O1xuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9jb29raWUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUN4QyxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRTtRQUNuQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUMzQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUU7UUFDbkMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELHVFQUF1RTtJQUN2RSxPQUFPLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLGFBQWEsR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDaEcsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUU7UUFDbkMsT0FBTztLQUNSO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxhQUFhLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFFbkUsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLHFCQUFxQixJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQy9FLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ25CLFFBQVEsQ0FBQyxNQUFNO1lBQ2IsSUFBSTtnQkFDSixHQUFHO2dCQUNILENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLHdDQUF3QyxDQUFDO0tBQzVDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUM1QixJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsRUFBRTtRQUNwQyxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFFMUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sV0FBVyxDQUFDO0tBQ3BCO0lBRUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUs7SUFDN0IsNkNBQTZDO0lBQzdDLHlCQUF5QixDQUMxQixDQUFDO0lBRUYsSUFBSSxRQUFRLEVBQUU7UUFDWixPQUFPLFFBQVEsQ0FBQztLQUNqQjtJQUVELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN4QixPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNoRjtJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBoYXNDb29raWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLnNvbWUoKGMpID0+IHtcbiAgICByZXR1cm4gYy50cmltKCkuc3RhcnRzV2l0aChuYW1lICsgJz0nKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29va2llID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDczMDM2Mi9nZXQtY29va2llLWJ5LW5hbWVcbiAgcmV0dXJuICgnOyAnICsgZG9jdW1lbnQuY29va2llKS5zcGxpdChgOyAke25hbWV9PWApLnBvcCgpPy5zcGxpdCgnOycpWzBdO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldENvb2tpZSA9IChuYW1lOiBzdHJpbmcsIGRhdGE6IHN0cmluZywgZXhwaXJlc0luRGF5cyA9IDMwLCBkb21haW4gPSBnZXREb21haW4oKSkgPT4ge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyBleHBpcmVzSW5EYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCk7XG5cbiAgZG9jdW1lbnQuY29va2llID0gYCR7bmFtZX09JHtkYXRhfTsgcGF0aD0vOyBleHBpcmVzPSR7ZGF0ZS50b1VUQ1N0cmluZygpfTsgZG9tYWluPSR7ZG9tYWlufTsgU2FtZVNpdGU9TGF4O2A7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQ29va2llID0gKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nLCBkb21haW4gPSBnZXREb21haW4oKSkgPT4ge1xuICBpZiAoaGFzQ29va2llKG5hbWUpKSB7XG4gICAgZG9jdW1lbnQuY29va2llID1cbiAgICAgIG5hbWUgK1xuICAgICAgJz0nICtcbiAgICAgIChwYXRoID8gJztwYXRoPScgKyBwYXRoIDogJycpICtcbiAgICAgIChkb21haW4gPyAnO2RvbWFpbj0nICsgZG9tYWluIDogJycpICtcbiAgICAgICc7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVCc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXREb21haW4gPSAoKSA9PiB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaG9zdG5hbWUgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5cbiAgaWYgKGhvc3RuYW1lLmluY2x1ZGVzKCdsb2NhbGhvc3QnKSkge1xuICAgIHJldHVybiAnbG9jYWxob3N0JztcbiAgfVxuXG4gIGNvbnN0IGhvc3RJc0lQID0gaG9zdG5hbWUubWF0Y2goXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtZXNjYXBlXG4gICAgL14oXFxkezEsM31cXC4pezN9XFxkezEsM30kLyxcbiAgKTtcblxuICBpZiAoaG9zdElzSVApIHtcbiAgICByZXR1cm4gaG9zdG5hbWU7XG4gIH1cblxuICBjb25zdCBzcGxpdEhvc3QgPSBob3N0bmFtZS5zcGxpdCgnLicpO1xuXG4gIGlmIChzcGxpdEhvc3QubGVuZ3RoID4gMikge1xuICAgIHJldHVybiBgJHtzcGxpdEhvc3Rbc3BsaXRIb3N0Lmxlbmd0aCAtIDJdfS4ke3NwbGl0SG9zdFtzcGxpdEhvc3QubGVuZ3RoIC0gMV19YDtcbiAgfVxuXG4gIHJldHVybiBob3N0bmFtZTtcbn07XG4iXX0=
@@ -0,0 +1,37 @@
1
+ import { Observable } from 'rxjs';
2
+ export const createMutationObservable = (config) => {
3
+ const elements = Array.isArray(config.elements) ? config.elements : [config.elements];
4
+ return new Observable((obs) => {
5
+ const observer = new MutationObserver((mutations) => {
6
+ if (config.options?.styleIgnoreList) {
7
+ const allowedMutations = [];
8
+ for (const mutation of mutations) {
9
+ if (mutation.type === 'attributes') {
10
+ const attributeName = mutation.attributeName;
11
+ if (!attributeName || attributeName !== 'style')
12
+ continue;
13
+ const oldValue = mutation.oldValue;
14
+ const newValue = mutation.target.getAttribute('style');
15
+ const oldValueStyles = oldValue?.split(';').map((s) => s.trim()) ?? [];
16
+ const newValueStyles = newValue?.split(';').map((s) => s.trim()) ?? [];
17
+ const changedStyles = newValueStyles.filter((s) => !oldValueStyles.includes(s));
18
+ if (changedStyles.some((s) => config.options?.styleIgnoreList?.includes(s.split(':')[0])))
19
+ continue;
20
+ allowedMutations.push(mutation);
21
+ }
22
+ }
23
+ if (allowedMutations.length) {
24
+ obs.next(allowedMutations);
25
+ }
26
+ }
27
+ else {
28
+ obs.next(mutations);
29
+ }
30
+ });
31
+ for (const element of elements) {
32
+ observer.observe(element, config.options);
33
+ }
34
+ return () => observer.disconnect();
35
+ });
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRpb24tb2JzZXJ2YWJsZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvbXV0YXRpb24tb2JzZXJ2YWJsZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUd4QyxFQUFFLEVBQUU7SUFDSCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEYsT0FBTyxJQUFJLFVBQVUsQ0FBbUIsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbEQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRTtnQkFDbkMsTUFBTSxnQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO2dCQUU5QyxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRTtvQkFDaEMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTt3QkFDbEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQzt3QkFFN0MsSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLEtBQUssT0FBTzs0QkFBRSxTQUFTO3dCQUUxRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO3dCQUNuQyxNQUFNLFFBQVEsR0FBSSxRQUFRLENBQUMsTUFBc0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBRXhFLE1BQU0sY0FBYyxHQUFHLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3ZFLE1BQU0sY0FBYyxHQUFHLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBRXZFLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUVoRixJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQUUsU0FBUzt3QkFFcEcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNqQztpQkFDRjtnQkFFRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtvQkFDM0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUM1QjthQUNGO2lCQUFNO2dCQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzlCLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQztRQUVELE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTXV0YXRpb25PYnNlcnZhYmxlID0gKGNvbmZpZzoge1xuICBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdO1xuICBvcHRpb25zPzogTXV0YXRpb25PYnNlcnZlckluaXQgJiB7IHN0eWxlSWdub3JlTGlzdD86IHN0cmluZ1tdIH07XG59KSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkuaXNBcnJheShjb25maWcuZWxlbWVudHMpID8gY29uZmlnLmVsZW1lbnRzIDogW2NvbmZpZy5lbGVtZW50c107XG5cbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPE11dGF0aW9uUmVjb3JkW10+KChvYnMpID0+IHtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgIGlmIChjb25maWcub3B0aW9ucz8uc3R5bGVJZ25vcmVMaXN0KSB7XG4gICAgICAgIGNvbnN0IGFsbG93ZWRNdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lO1xuXG4gICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZU5hbWUgfHwgYXR0cmlidXRlTmFtZSAhPT0gJ3N0eWxlJykgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gbXV0YXRpb24ub2xkVmFsdWU7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnc3R5bGUnKTtcblxuICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWVTdHlsZXMgPSBvbGRWYWx1ZT8uc3BsaXQoJzsnKS5tYXAoKHMpID0+IHMudHJpbSgpKSA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlU3R5bGVzID0gbmV3VmFsdWU/LnNwbGl0KCc7JykubWFwKChzKSA9PiBzLnRyaW0oKSkgPz8gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRTdHlsZXMgPSBuZXdWYWx1ZVN0eWxlcy5maWx0ZXIoKHMpID0+ICFvbGRWYWx1ZVN0eWxlcy5pbmNsdWRlcyhzKSk7XG5cbiAgICAgICAgICAgIGlmIChjaGFuZ2VkU3R5bGVzLnNvbWUoKHMpID0+IGNvbmZpZy5vcHRpb25zPy5zdHlsZUlnbm9yZUxpc3Q/LmluY2x1ZGVzKHMuc3BsaXQoJzonKVswXSkpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgYWxsb3dlZE11dGF0aW9ucy5wdXNoKG11dGF0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsb3dlZE11dGF0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICBvYnMubmV4dChhbGxvd2VkTXV0YXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JzLm5leHQobXV0YXRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCBjb25maWcub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG59O1xuIl19
@@ -6,6 +6,7 @@ export * from './cookie.util';
6
6
  export * from './destroy.utils';
7
7
  export * from './equal.util';
8
8
  export * from './media-query-observable.util';
9
+ export * from './mutation-observable.util';
9
10
  export * from './reactive-binding.util';
10
11
  export * from './round.utils';
11
12
  export * from './runtime-error.utils';
@@ -14,4 +15,4 @@ export * from './scrollable.utils';
14
15
  export * from './selection-model.utils';
15
16
  export * from './smart-block-scroll-strategy.utils';
16
17
  export * from './viewport.util';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWN0aXZlLXNlbGVjdGlvbi1tb2RlbC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2FuaW1hdGlvbi51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYW1wLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jbG9uZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY29va2llLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXN0cm95LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1YWwudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5LW9ic2VydmFibGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWN0aXZlLWJpbmRpbmcudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdW5kLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS1lcnJvci51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3J4anMudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zY3JvbGxhYmxlLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uLW1vZGVsLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc21hcnQtYmxvY2stc2Nyb2xsLXN0cmF0ZWd5LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlld3BvcnQudXRpbCc7XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3RpdmUtc2VsZWN0aW9uLW1vZGVsLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vYW5pbWF0aW9uLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhbXAudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Nsb25lLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jb29raWUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Rlc3Ryb3kudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9lcXVhbC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVkaWEtcXVlcnktb2JzZXJ2YWJsZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbXV0YXRpb24tb2JzZXJ2YWJsZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVhY3RpdmUtYmluZGluZy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vcm91bmQudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9ydW50aW1lLWVycm9yLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcnhqcy51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbGFibGUudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Rpb24tbW9kZWwudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydC1ibG9jay1zY3JvbGwtc3RyYXRlZ3kudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3cG9ydC51dGlsJztcbiJdfQ==