simpo-component-library 3.6.894 → 3.6.896

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 (25) hide show
  1. package/esm2022/lib/directive/sticky-directive.mjs +129 -52
  2. package/esm2022/lib/sections/countdown-banner/countdown-banner.component.mjs +22 -11
  3. package/esm2022/lib/sections/header-section/header-section.component.mjs +88 -40
  4. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  5. package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +40 -20
  6. package/esm2022/lib/sections/navbar-section/navbar-section.model.mjs +1 -1
  7. package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
  8. package/esm2022/lib/styles/index.mjs +15 -1
  9. package/fesm2022/simpo-component-library.mjs +431 -263
  10. package/fesm2022/simpo-component-library.mjs.map +1 -1
  11. package/lib/directive/sticky-directive.d.ts +14 -5
  12. package/lib/ecommerce/sections/featured-category/featured-category.component.d.ts +1 -1
  13. package/lib/ecommerce/sections/featured-category/featured-collection.component.d.ts +1 -1
  14. package/lib/ecommerce/sections/new-collection/new-collection.component.d.ts +1 -1
  15. package/lib/sections/countdown-banner/countdown-banner.component.d.ts +5 -3
  16. package/lib/sections/header-section/header-section.component.d.ts +16 -7
  17. package/lib/sections/header-section/header-section.model.d.ts +9 -1
  18. package/lib/sections/image-grid-hotspot/image-grid-hotspot.component.d.ts +1 -1
  19. package/lib/sections/image-grid-section/image-grid-section.component.d.ts +1 -1
  20. package/lib/sections/navbar-section/navbar-section.component.d.ts +8 -4
  21. package/lib/sections/navbar-section/navbar-section.model.d.ts +5 -1
  22. package/lib/styles/index.d.ts +12 -0
  23. package/package.json +1 -1
  24. package/simpo-component-library-3.6.896.tgz +0 -0
  25. package/simpo-component-library-3.6.894.tgz +0 -0
@@ -1,5 +1,6 @@
1
- import { Directive, Inject, Input, PLATFORM_ID } from '@angular/core';
1
+ import { Directive, EventEmitter, Inject, Input, Output, PLATFORM_ID } from '@angular/core';
2
2
  import { isPlatformBrowser } from '@angular/common';
3
+ import { Sticky_Type } from '../styles/index';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/router";
5
6
  export class SimpoStickyDirective {
@@ -7,69 +8,143 @@ export class SimpoStickyDirective {
7
8
  this.el = el;
8
9
  this.router = router;
9
10
  this.platformId = platformId;
11
+ this.stickyScrolled = new EventEmitter();
10
12
  this.isBrowser = false;
11
13
  this.isBrowser = isPlatformBrowser(this.platformId);
12
14
  }
15
+ get resolvedType() {
16
+ let type;
17
+ if (typeof this.stickyType === 'boolean') {
18
+ type = this.stickyType ? Sticky_Type.STICKY : Sticky_Type.NONE;
19
+ }
20
+ else {
21
+ type = this.stickyType ?? Sticky_Type.NONE;
22
+ }
23
+ // On mobile, animated types degrade to plain STICKY
24
+ if (this.isMobile && (type === Sticky_Type.STICKY_AFTER_SCROLL || type === Sticky_Type.TRANSPARENT_ON_SCROLL)) {
25
+ return Sticky_Type.STICKY;
26
+ }
27
+ return type;
28
+ }
29
+ get isMobile() {
30
+ return this.isBrowser ? window.innerWidth < 475 : false;
31
+ }
13
32
  ngOnChanges() {
14
- if (this.simpoSticky) {
15
- this.el.nativeElement.style.setProperty("position", "fixed");
16
- this.el.nativeElement.style.setProperty("top", "0px");
17
- this.el.nativeElement.style.setProperty("left", '0px');
18
- if (this.isBrowser && localStorage.getItem('REQUEST_FROM') == 'USER')
19
- this.el.nativeElement.style.setProperty("z-index", "10000002");
33
+ this.applyType();
34
+ }
35
+ ngAfterViewInit() {
36
+ if (!this.isBrowser)
37
+ return;
38
+ this.scrollListener = () => this.onScroll();
39
+ this.resizeListener = () => {
40
+ this.applyType();
41
+ this.onScroll();
42
+ };
43
+ window.addEventListener('scroll', this.scrollListener, { passive: true });
44
+ window.addEventListener('resize', this.resizeListener, { passive: true });
45
+ this.onScroll();
46
+ }
47
+ onScroll() {
48
+ if (!this.isBrowser)
49
+ return;
50
+ const scrollY = window.scrollY;
51
+ const type = this.resolvedType;
52
+ const el = this.el.nativeElement;
53
+ if (type === Sticky_Type.SHRINK_ON_SCROLL) {
54
+ el.classList.toggle('header--scrolled', scrollY > 50);
55
+ }
56
+ if (type === Sticky_Type.STICKY_AFTER_SCROLL) {
57
+ const h = el.getBoundingClientRect().height || 80;
58
+ const revealed = scrollY > h;
59
+ el.style.setProperty('position', revealed ? 'fixed' : 'relative');
60
+ if (revealed) {
61
+ el.style.setProperty('top', '0px');
62
+ el.style.setProperty('left', '0px');
63
+ }
20
64
  else {
21
- let url = this.router.url;
22
- this.el.nativeElement.style.setProperty("z-index", "108");
23
- if (url.includes('website-editor'))
24
- this.el.nativeElement.style.setProperty("margin-top", "45px");
25
- else if (url.includes('v3-generator'))
26
- this.el.nativeElement.style.setProperty("margin-top", "70px");
27
- else
28
- this.el.nativeElement.style.setProperty("margin-top", "0px");
65
+ el.style.removeProperty('top');
66
+ el.style.removeProperty('left');
29
67
  }
30
- // setTimeout(() => {
31
- // if (this.isBrowser && window.innerWidth > 475) {
32
- // this.addParentMargin();
33
- // }
34
- // }, 0);
68
+ el.classList.toggle('simpo-sticky-revealed', revealed);
69
+ this.stickyScrolled.emit(revealed);
70
+ return;
35
71
  }
36
- else {
37
- this.el.nativeElement.style.setProperty("position", "relative");
38
- // this.removeParentMargin();
72
+ if (type !== Sticky_Type.NONE) {
73
+ this.stickyScrolled.emit(scrollY > 50);
39
74
  }
40
75
  }
41
- ngAfterViewInit() {
42
- if (!this.isBrowser || typeof ResizeObserver === 'undefined')
76
+ applyType() {
77
+ if (!this.isBrowser)
43
78
  return;
44
- // this.resizeObserver = new ResizeObserver(() => {
45
- // setTimeout(() => {
46
- // if (window.innerWidth > 475 && this.simpoSticky) {
47
- // this.addParentMargin();
48
- // }
49
- // }, 0);
50
- // });
51
- // this.resizeObserver.observe(this.el.nativeElement);
79
+ const el = this.el.nativeElement;
80
+ const type = this.resolvedType;
81
+ // Reset all managed classes
82
+ el.classList.remove('header--scrolled', 'simpo-sticky-revealed');
83
+ switch (type) {
84
+ case Sticky_Type.NONE:
85
+ el.classList.remove('simpo-transparent-type');
86
+ el.style.setProperty('position', 'relative');
87
+ el.style.removeProperty('top');
88
+ el.style.removeProperty('left');
89
+ el.style.removeProperty('z-index');
90
+ el.style.removeProperty('margin-top');
91
+ break;
92
+ case Sticky_Type.STICKY:
93
+ case Sticky_Type.SHRINK_ON_SCROLL:
94
+ el.classList.remove('simpo-transparent-type');
95
+ this.applyFixed();
96
+ break;
97
+ case Sticky_Type.TRANSPARENT_ON_SCROLL:
98
+ el.classList.add('simpo-transparent-type');
99
+ this.applyFixed();
100
+ break;
101
+ case Sticky_Type.STICKY_AFTER_SCROLL:
102
+ el.classList.remove('simpo-transparent-type');
103
+ el.style.setProperty('position', 'relative');
104
+ el.style.removeProperty('top');
105
+ el.style.removeProperty('left');
106
+ this.applyZIndex();
107
+ break;
108
+ }
109
+ // Apply current scroll state immediately
110
+ this.onScroll();
111
+ }
112
+ applyFixed() {
113
+ const el = this.el.nativeElement;
114
+ el.style.setProperty('position', 'fixed');
115
+ el.style.setProperty('top', '0px');
116
+ el.style.setProperty('left', '0px');
117
+ this.applyZIndex();
118
+ }
119
+ applyZIndex() {
120
+ const el = this.el.nativeElement;
121
+ if (localStorage.getItem('REQUEST_FROM') === 'USER') {
122
+ el.style.setProperty('z-index', '10000002');
123
+ }
124
+ else {
125
+ el.style.setProperty('z-index', '108');
126
+ const url = this.router.url;
127
+ if (url.includes('website-editor')) {
128
+ el.style.setProperty('margin-top', '45px');
129
+ }
130
+ else if (url.includes('v3-generator')) {
131
+ el.style.setProperty('margin-top', '70px');
132
+ }
133
+ else {
134
+ el.style.setProperty('margin-top', '0px');
135
+ }
136
+ }
52
137
  }
53
- // private addParentMargin() {
54
- // const nativeElement = this.el.nativeElement as HTMLElement;
55
- // let headerHeight = Math.ceil(nativeElement.getBoundingClientRect().height || nativeElement.offsetHeight || 0);
56
- // const parent = this.el.nativeElement.parentElement;
57
- // if (parent && headerHeight > 0) {
58
- // parent.style.marginBottom = (headerHeight) + 'px';
59
- // }
60
- // }
61
- // private removeParentMargin() {
62
- // const parent = this.el.nativeElement.parentElement;
63
- // if (parent) {
64
- // parent.style.marginBottom = '0px';
65
- // }
66
- // }
67
138
  ngOnDestroy() {
68
- this.resizeObserver?.disconnect();
69
- // this.removeParentMargin();
139
+ if (this.scrollListener) {
140
+ window.removeEventListener('scroll', this.scrollListener);
141
+ }
142
+ if (this.resizeListener) {
143
+ window.removeEventListener('resize', this.resizeListener);
144
+ }
70
145
  }
71
146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SimpoStickyDirective, deps: [{ token: i0.ElementRef }, { token: i1.Router }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
72
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SimpoStickyDirective, isStandalone: true, selector: "[simpoSticky]", inputs: { simpoSticky: "simpoSticky", categoryHeader: "categoryHeader" }, usesOnChanges: true, ngImport: i0 }); }
147
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SimpoStickyDirective, isStandalone: true, selector: "[simpoSticky]", inputs: { stickyType: ["simpoSticky", "stickyType"], categoryHeader: "categoryHeader" }, outputs: { stickyScrolled: "stickyScrolled" }, usesOnChanges: true, ngImport: i0 }); }
73
148
  }
74
149
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SimpoStickyDirective, decorators: [{
75
150
  type: Directive,
@@ -80,11 +155,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
80
155
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Router }, { type: undefined, decorators: [{
81
156
  type: Inject,
82
157
  args: [PLATFORM_ID]
83
- }] }], propDecorators: { simpoSticky: [{
158
+ }] }], propDecorators: { stickyType: [{
84
159
  type: Input,
85
160
  args: ['simpoSticky']
86
161
  }], categoryHeader: [{
87
162
  type: Input,
88
163
  args: ['categoryHeader']
164
+ }], stickyScrolled: [{
165
+ type: Output
89
166
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZGlyZWN0aXZlL3N0aWNreS1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBT3BELE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsWUFBb0IsRUFBYyxFQUN4QixNQUFjLEVBQ08sVUFBa0I7UUFGN0IsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ08sZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUx6QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBT3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFLRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDdEQsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksTUFBTTtnQkFDbEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7aUJBQzNELENBQUM7Z0JBQ0osSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUE7Z0JBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUN6RCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFBO3FCQUMxRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO29CQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQTs7b0JBRTdELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ2hFLENBQUM7WUFDRCxxQkFBcUI7WUFDckIscURBQXFEO1lBQ3JELDhCQUE4QjtZQUM5QixNQUFNO1lBQ04sU0FBUztRQUNYLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEUsNkJBQTZCO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sY0FBYyxLQUFLLFdBQVc7WUFBRSxPQUFPO1FBRXJFLG1EQUFtRDtRQUNuRCx1QkFBdUI7UUFDdkIseURBQXlEO1FBQ3pELGdDQUFnQztRQUNoQyxRQUFRO1FBQ1IsV0FBVztRQUNYLE1BQU07UUFDTixzREFBc0Q7SUFDeEQsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixnRUFBZ0U7SUFDaEUsbUhBQW1IO0lBQ25ILHdEQUF3RDtJQUN4RCxzQ0FBc0M7SUFDdEMseURBQXlEO0lBQ3pELE1BQU07SUFDTixJQUFJO0lBRUosaUNBQWlDO0lBQ2pDLHdEQUF3RDtJQUN4RCxrQkFBa0I7SUFDbEIseUNBQXlDO0lBQ3pDLE1BQU07SUFDTixJQUFJO0lBRUosV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDbEMsNkJBQTZCO0lBQy9CLENBQUM7K0dBNUVVLG9CQUFvQixrRUFRckIsV0FBVzttR0FSVixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBU0ksTUFBTTsyQkFBQyxXQUFXO3lDQVBDLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDSyxjQUFjO3NCQUF0QyxLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tzaW1wb1N0aWNreV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpbXBvU3RpY2t5RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoJ3NpbXBvU3RpY2t5Jykgc2ltcG9TdGlja3k/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgnY2F0ZWdvcnlIZWFkZXInKSBjYXRlZ29yeUhlYWRlcj86IGJvb2xlYW5cclxuICBwcml2YXRlIGlzQnJvd3NlciA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdFxyXG4gICkge1xyXG4gICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAodGhpcy5zaW1wb1N0aWNreSkge1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCJwb3NpdGlvblwiLCBcImZpeGVkXCIpO1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCJ0b3BcIiwgXCIwcHhcIik7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgJzBweCcpXHJcbiAgICAgIGlmICh0aGlzLmlzQnJvd3NlciAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnUkVRVUVTVF9GUk9NJykgPT0gJ1VTRVInKVxyXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcInotaW5kZXhcIiwgXCIxMDAwMDAwMlwiKVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgdXJsID0gdGhpcy5yb3V0ZXIudXJsXHJcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFwiei1pbmRleFwiLCBcIjEwOFwiKVxyXG4gICAgICAgIGlmICh1cmwuaW5jbHVkZXMoJ3dlYnNpdGUtZWRpdG9yJykpXHJcbiAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCJtYXJnaW4tdG9wXCIsIFwiNDVweFwiKVxyXG4gICAgICAgIGVsc2UgaWYgKHVybC5pbmNsdWRlcygndjMtZ2VuZXJhdG9yJykpXHJcbiAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCJtYXJnaW4tdG9wXCIsIFwiNzBweFwiKVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcIm1hcmdpbi10b3BcIiwgXCIwcHhcIilcclxuICAgICAgfVxyXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gICBpZiAodGhpcy5pc0Jyb3dzZXIgJiYgd2luZG93LmlubmVyV2lkdGggPiA0NzUpIHtcclxuICAgICAgLy8gICAgIHRoaXMuYWRkUGFyZW50TWFyZ2luKCk7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9LCAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcInBvc2l0aW9uXCIsIFwicmVsYXRpdmVcIik7XHJcbiAgICAgIC8vIHRoaXMucmVtb3ZlUGFyZW50TWFyZ2luKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyIHx8IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuXHJcbiAgICAvLyB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4gNDc1ICYmIHRoaXMuc2ltcG9TdGlja3kpIHtcclxuICAgIC8vICAgICAgIHRoaXMuYWRkUGFyZW50TWFyZ2luKCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9LCAwKTtcclxuICAgIC8vIH0pO1xyXG4gICAgLy8gdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGFkZFBhcmVudE1hcmdpbigpIHtcclxuICAvLyAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgLy8gICBsZXQgaGVhZGVySGVpZ2h0ID0gTWF0aC5jZWlsKG5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IHx8IG5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDApO1xyXG4gIC8vICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgLy8gICBpZiAocGFyZW50ICYmIGhlYWRlckhlaWdodCA+IDApIHtcclxuICAvLyAgICAgcGFyZW50LnN0eWxlLm1hcmdpbkJvdHRvbSA9IChoZWFkZXJIZWlnaHQpICsgJ3B4JztcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIHByaXZhdGUgcmVtb3ZlUGFyZW50TWFyZ2luKCkge1xyXG4gIC8vICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgLy8gICBpZiAocGFyZW50KSB7XHJcbiAgLy8gICAgIHBhcmVudC5zdHlsZS5tYXJnaW5Cb3R0b20gPSAnMHB4JztcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gICAgLy8gdGhpcy5yZW1vdmVQYXJlbnRNYXJnaW4oKTtcclxuICB9XHJcbn1cclxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZGlyZWN0aXZlL3N0aWNreS1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXdCLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0ksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFNOUMsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixZQUNVLEVBQWMsRUFDZCxNQUFjLEVBQ08sVUFBa0I7UUFGdkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDTyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBVHZDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUvQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBU3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFZLFlBQVk7UUFDdEIsSUFBSSxJQUFpQixDQUFDO1FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2pFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztRQUM3QyxDQUFDO1FBRUQsb0RB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TTsyQkFBQyxXQUFXO3lDQVhDLFVBQVU7c0JBQS9CLEtBQUs7dUJBQUMsYUFBYTtnQkFDSyxjQUFjO3NCQUF0QyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDYixjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RpY2t5X1R5cGUgfSBmcm9tICcuLi9zdHlsZXMvaW5kZXgnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2ltcG9TdGlja3ldJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBTaW1wb1N0aWNreURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdzaW1wb1N0aWNreScpIHN0aWNreVR5cGU/OiBTdGlja3lfVHlwZSB8IGJvb2xlYW47XG4gIEBJbnB1dCgnY2F0ZWdvcnlIZWFkZXInKSBjYXRlZ29yeUhlYWRlcj86IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBzdGlja3lTY3JvbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIGlzQnJvd3NlciA9IGZhbHNlO1xuICBwcml2YXRlIHNjcm9sbExpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZXNpemVMaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0XG4gICkge1xuICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlc29sdmVkVHlwZSgpOiBTdGlja3lfVHlwZSB7XG4gICAgbGV0IHR5cGU6IFN0aWNreV9UeXBlO1xuICAgIGlmICh0eXBlb2YgdGhpcy5zdGlja3lUeXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHR5cGUgPSB0aGlzLnN0aWNreVR5cGUgPyBTdGlja3lfVHlwZS5TVElDS1kgOiBTdGlja3lfVHlwZS5OT05FO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlID0gdGhpcy5zdGlja3lUeXBlID8/IFN0aWNreV9UeXBlLk5PTkU7XG4gICAgfVxuXG4gICAgLy8gT24gbW9iaWxlLCBhbmltYXRlZCB0eXBlcyBkZWdyYWRlIHRvIHBsYWluIFNUSUNLWVxuICAgIGlmICh0aGlzLmlzTW9iaWxlICYmICh0eXBlID09PSBTdGlja3lfVHlwZS5TVElDS1lfQUZURVJfU0NST0xMIHx8IHR5cGUgPT09IFN0aWNreV9UeXBlLlRSQU5TUEFSRU5UX09OX1NDUk9MTCkpIHtcbiAgICAgIHJldHVybiBTdGlja3lfVHlwZS5TVElDS1k7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyB3aW5kb3cuaW5uZXJXaWR0aCA8IDQ3NSA6IGZhbHNlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5hcHBseVR5cGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG5cbiAgICB0aGlzLnNjcm9sbExpc3RlbmVyID0gKCkgPT4gdGhpcy5vblNjcm9sbCgpO1xuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLmFwcGx5VHlwZSgpO1xuICAgICAgdGhpcy5vblNjcm9sbCgpO1xuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGxMaXN0ZW5lciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdGhpcy5vblNjcm9sbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCgpIHtcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG5cbiAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMucmVzb2x2ZWRUeXBlO1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHR5cGUgPT09IFN0aWNreV9UeXBlLlNIUklOS19PTl9TQ1JPTEwpIHtcbiAgICAgIGVsLmNsYXNzTGlzdC50b2dnbGUoJ2hlYWRlci0tc2Nyb2xsZWQnLCBzY3JvbGxZID4gNTApO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBTdGlja3lfVHlwZS5TVElDS1lfQUZURVJfU0NST0xMKSB7XG4gICAgICBjb25zdCBoID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IHx8IDgwO1xuICAgICAgY29uc3QgcmV2ZWFsZWQgPSBzY3JvbGxZID4gaDtcbiAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsIHJldmVhbGVkID8gJ2ZpeGVkJyA6ICdyZWxhdGl2ZScpO1xuICAgICAgaWYgKHJldmVhbGVkKSB7XG4gICAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCd0b3AnLCAnMHB4Jyk7XG4gICAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCdsZWZ0JywgJzBweCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RvcCcpO1xuICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbGVmdCcpO1xuICAgICAgfVxuICAgICAgZWwuY2xhc3NMaXN0LnRvZ2dsZSgnc2ltcG8tc3RpY2t5LXJldmVhbGVkJywgcmV2ZWFsZWQpO1xuICAgICAgdGhpcy5zdGlja3lTY3JvbGxlZC5lbWl0KHJldmVhbGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSAhPT0gU3RpY2t5X1R5cGUuTk9ORSkge1xuICAgICAgdGhpcy5zdGlja3lTY3JvbGxlZC5lbWl0KHNjcm9sbFkgPiA1MCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVR5cGUoKSB7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xuXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMucmVzb2x2ZWRUeXBlO1xuXG4gICAgLy8gUmVzZXQgYWxsIG1hbmFnZWQgY2xhc3Nlc1xuICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2hlYWRlci0tc2Nyb2xsZWQnLCAnc2ltcG8tc3RpY2t5LXJldmVhbGVkJyk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgU3RpY2t5X1R5cGUuTk9ORTpcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnc2ltcG8tdHJhbnNwYXJlbnQtdHlwZScpO1xuICAgICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RvcCcpO1xuICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbGVmdCcpO1xuICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnei1pbmRleCcpO1xuICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWFyZ2luLXRvcCcpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTdGlja3lfVHlwZS5TVElDS1k6XG4gICAgICBjYXNlIFN0aWNreV9UeXBlLlNIUklOS19PTl9TQ1JPTEw6XG4gICAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ3NpbXBvLXRyYW5zcGFyZW50LXR5cGUnKTtcbiAgICAgICAgdGhpcy5hcHBseUZpeGVkKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFN0aWNreV9UeXBlLlRSQU5TUEFSRU5UX09OX1NDUk9MTDpcbiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgnc2ltcG8tdHJhbnNwYXJlbnQtdHlwZScpO1xuICAgICAgICB0aGlzLmFwcGx5Rml4ZWQoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU3RpY2t5X1R5cGUuU1RJQ0tZX0FGVEVSX1NDUk9MTDpcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnc2ltcG8tdHJhbnNwYXJlbnQtdHlwZScpO1xuICAgICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RvcCcpO1xuICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbGVmdCcpO1xuICAgICAgICB0aGlzLmFwcGx5WkluZGV4KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IGN1cnJlbnQgc2Nyb2xsIHN0YXRlIGltbWVkaWF0ZWx5XG4gICAgdGhpcy5vblNjcm9sbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpeGVkKCkge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCd0b3AnLCAnMHB4Jyk7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJ2xlZnQnLCAnMHB4Jyk7XG4gICAgdGhpcy5hcHBseVpJbmRleCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVpJbmRleCgpIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpID09PSAnVVNFUicpIHtcbiAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCd6LWluZGV4JywgJzEwMDAwMDAyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCd6LWluZGV4JywgJzEwOCcpO1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgICAgaWYgKHVybC5pbmNsdWRlcygnd2Vic2l0ZS1lZGl0b3InKSkge1xuICAgICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsICc0NXB4Jyk7XG4gICAgICB9IGVsc2UgaWYgKHVybC5pbmNsdWRlcygndjMtZ2VuZXJhdG9yJykpIHtcbiAgICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCAnNzBweCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCAnMHB4Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc2Nyb2xsTGlzdGVuZXIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbExpc3RlbmVyKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
- import { Component, Input, } from '@angular/core';
1
+ import { Component, Inject, Input, PLATFORM_ID, } from '@angular/core';
2
2
  import { SimpoElementsModule } from '../../elements/index';
3
- import { CommonModule } from '@angular/common';
3
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
4
4
  import { TextEditorComponent } from '../../elements/text-editor/text-editor.component';
5
5
  import { BackgroundDirective } from '../../directive/background-directive';
6
6
  import { HoverDirective } from '../../directive/hover-element-directive';
@@ -18,9 +18,10 @@ import * as i4 from "../../components/hover-elements/hover-elements.component";
18
18
  import * as i5 from "../../components/delete-hover-element/delete-hover-element.component";
19
19
  import * as i6 from "@angular/common";
20
20
  export class CountdownBannerComponent extends BaseSection {
21
- constructor(eventService) {
21
+ constructor(eventService, platformId) {
22
22
  super();
23
23
  this.eventService = eventService;
24
+ this.platformId = platformId;
24
25
  this.days = '00';
25
26
  this.hours = '00';
26
27
  this.minutes = '00';
@@ -33,9 +34,16 @@ export class CountdownBannerComponent extends BaseSection {
33
34
  this.content = this.data?.content;
34
35
  this.style = this.data?.styles;
35
36
  this.bannerText = this.content?.inputText[0].value ?? '';
36
- setInterval(() => {
37
- this.currentTime = Date.now();
38
- }, 1000);
37
+ if (isPlatformBrowser(this.platformId)) {
38
+ this.interval = setInterval(() => {
39
+ this.currentTime = Date.now();
40
+ }, 1000);
41
+ }
42
+ }
43
+ ngOnDestroy() {
44
+ if (this.interval) {
45
+ clearInterval(this.interval);
46
+ }
39
47
  }
40
48
  getDays(dateString) {
41
49
  if (!dateString)
@@ -141,8 +149,8 @@ export class CountdownBannerComponent extends BaseSection {
141
149
  return ''; // fallback
142
150
  }
143
151
  }
144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountdownBannerComponent, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountdownBannerComponent, isStandalone: true, selector: "simpo-countdown-banner", inputs: { edit: "edit", data: "data", customClass: "customClass", nextComponentColor: "nextComponentColor", index: "index", delete: "delete" }, usesInheritance: true, ngImport: i0, template: "<!-- <section [id]=\"data?.id\" [simpoBackground]=\"style?.background\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n class=\"total-container\" [attr.style]=\"customClass\">\r\n <div #mainContainer [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [simpoBorder]=\"style?.border\"\r\n [spacingHorizontal]=\"stylesLayout\" [simpoLayout]=\"style?.layout\" [ngClass]=\"{\r\n 'justify-content-center': style?.layout?.align === 'center',\r\n 'justify-content-start': style?.layout?.align === 'left',\r\n 'justify-content-end': style?.layout?.align === 'right'\r\n }\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <div class=\"w-50\" [id]=\"data?.id\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [ngClass]=\"item.label.includes('Heading') ? 'heading-large lh-2 mb-4' : 'body-large'\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"countdown-container w-50\">\r\n <div class=\"timer\">\r\n <div> \r\n <span id=\"days\">{{days}}</span>\r\n <small>DAYS</small>\r\n </div>\r\n <div>\r\n <span id=\"hours\">{{hours}}</span>\r\n <small>HOURS</small>\r\n </div>\r\n <div>\r\n <span id=\"minutes\">{{minutes}}</span>\r\n <small>MINS</small>\r\n </div>\r\n <div>\r\n <span id=\"seconds\">{{seconds}}</span>\r\n <small>SECS</small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section> -->\r\n\r\n\r\n<section>\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"sale-wrapper total-container\"\r\n [attr.style]=\"customClass\" [simpoBackground]=\"style?.background\" [simpoOverlay]=\"style?.background\">\r\n <div #mainContainer [id]=\"data?.id\" [spacingHorizontal]=\"stylesLayout\" [simpoLayout]=\"style?.layout\"\r\n class=\"sale-bar\">\r\n <!-- LEFT TEXT -->\r\n <div class=\"sale-text\">\r\n <simpo-text-editor [(value)]=\"bannerText\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"0\"></simpo-text-editor>\r\n </div>\r\n\r\n <!-- TIMER -->\r\n <div class=\"sale-timer\" [style.color]=\"getContrastColor(style?.background?.accentColor)\">\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getDays(content?.endDate)}}</span>\r\n <small>DAY</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getHours(content?.endDate) }}</span>\r\n <small>HOUR</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getMinutes(content?.endDate) }}</span>\r\n <small>MIN</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getSeconds(content?.endDate) }}</span>\r\n <small>SEC</small>\r\n </div>\r\n </div>\r\n\r\n <!-- RIGHT ACTION -->\r\n <div class=\"sale-action\">\r\n <ng-container *ngIf=\"data?.action?.display\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\" [edit]=\"edit\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n\r\n <!-- EDIT SELECTOR -->\r\n <div [ngClass]=\"{ hover_effect: edit }\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <!-- DELETE SELECTOR -->\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{ hover_effect: delete }\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n </div>\r\n</section>", styles: [".sale-wrapper{width:100%}.total-container{height:auto;position:relative}.sale-bar{width:100%;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:28px 50px}.sale-text{font-size:26px;font-weight:600}.sale-timer{display:flex;gap:18px}.time-card{background-color:#fff;padding:6px 14px;border-radius:8px;text-align:center;min-width:60px}.time-card span{display:block;font-size:18px;font-weight:600}.time-card small{font-size:11px;letter-spacing:1px;font-weight:500}.sale-action{display:flex;align-items:center;gap:20px}.shop-button{background-color:#fff;color:#1c2a39;border:none;padding:5px 14px;border-radius:30px;font-size:14px;font-weight:500;cursor:pointer;transition:.3s ease}.shop-button:hover{background-color:#f2f2f2}.close-icon{font-size:20px;cursor:pointer;opacity:.8}.close-icon:hover{opacity:1}@media (max-width: 768px){.sale-bar{flex-direction:column;gap:20px;text-align:center}.sale-action{justify-content:center}}\n"], dependencies: [{ kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i2.SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo", "disabled", "loading", "isFullWidth"] }, { kind: "component", type: i3.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i4.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i5.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "isRTE", "sectionId", "label", "type", "inputTextIndex", "itemIndex"], outputs: ["valueChange"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }] }); }
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountdownBannerComponent, deps: [{ token: i1.EventsService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountdownBannerComponent, isStandalone: true, selector: "simpo-countdown-banner", inputs: { edit: "edit", data: "data", customClass: "customClass", nextComponentColor: "nextComponentColor", index: "index", delete: "delete" }, usesInheritance: true, ngImport: i0, template: "<section>\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"sale-wrapper total-container\"\r\n [attr.style]=\"customClass\" [simpoBackground]=\"style?.background\" [simpoOverlay]=\"style?.background\">\r\n <div #mainContainer [id]=\"data?.id\" [spacingHorizontal]=\"stylesLayout\" [simpoLayout]=\"style?.layout\"\r\n class=\"sale-bar\">\r\n <!-- LEFT TEXT -->\r\n <div class=\"sale-text\">\r\n <simpo-text-editor *ngIf=\"content?.inputText?.[0] as countdownText\" [(value)]=\"countdownText.value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"0\"></simpo-text-editor>\r\n </div>\r\n\r\n <!-- TIMER -->\r\n <div class=\"sale-timer\" [style.color]=\"getContrastColor(style?.background?.accentColor)\">\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getDays(content?.endDate)}}</span>\r\n <small>DAY</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getHours(content?.endDate) }}</span>\r\n <small>HOUR</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getMinutes(content?.endDate) }}</span>\r\n <small>MIN</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getSeconds(content?.endDate) }}</span>\r\n <small>SEC</small>\r\n </div>\r\n </div>\r\n\r\n <!-- RIGHT ACTION -->\r\n <div class=\"sale-action\">\r\n <ng-container *ngIf=\"data?.action?.display\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\" [edit]=\"edit\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n\r\n <!-- EDIT SELECTOR -->\r\n <div [ngClass]=\"{ hover_effect: edit }\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <!-- DELETE SELECTOR -->\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{ hover_effect: delete }\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n </div>\r\n</section>", styles: [".sale-wrapper{width:100%}.total-container{height:auto;position:relative}.sale-bar{width:100%;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:28px 50px}.sale-text{font-size:26px;font-weight:600}.sale-timer{display:flex;gap:18px}.time-card{background-color:#fff;padding:6px 14px;border-radius:8px;text-align:center;min-width:60px}.time-card span{display:block;font-size:18px;font-weight:600}.time-card small{font-size:11px;letter-spacing:1px;font-weight:500}.sale-action{display:flex;align-items:center;gap:20px}.shop-button{background-color:#fff;color:#1c2a39;border:none;padding:5px 14px;border-radius:30px;font-size:14px;font-weight:500;cursor:pointer;transition:.3s ease}.shop-button:hover{background-color:#f2f2f2}.close-icon{font-size:20px;cursor:pointer;opacity:.8}.close-icon:hover{opacity:1}@media (max-width: 768px){.sale-bar{flex-direction:column;gap:20px;text-align:center}.sale-action{justify-content:center}}\n"], dependencies: [{ kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i2.SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo", "disabled", "loading", "isFullWidth"] }, { kind: "component", type: i3.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i4.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i5.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "isRTE", "sectionId", "label", "type", "inputTextIndex", "itemIndex"], outputs: ["valueChange"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }] }); }
146
154
  }
147
155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountdownBannerComponent, decorators: [{
148
156
  type: Component,
@@ -157,8 +165,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
157
165
  SpacingHorizontalDirective,
158
166
  BorderDirective,
159
167
  ContentFitDirective
160
- ], template: "<!-- <section [id]=\"data?.id\" [simpoBackground]=\"style?.background\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n class=\"total-container\" [attr.style]=\"customClass\">\r\n <div #mainContainer [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [simpoBorder]=\"style?.border\"\r\n [spacingHorizontal]=\"stylesLayout\" [simpoLayout]=\"style?.layout\" [ngClass]=\"{\r\n 'justify-content-center': style?.layout?.align === 'center',\r\n 'justify-content-start': style?.layout?.align === 'left',\r\n 'justify-content-end': style?.layout?.align === 'right'\r\n }\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <div class=\"w-50\" [id]=\"data?.id\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [ngClass]=\"item.label.includes('Heading') ? 'heading-large lh-2 mb-4' : 'body-large'\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"countdown-container w-50\">\r\n <div class=\"timer\">\r\n <div> \r\n <span id=\"days\">{{days}}</span>\r\n <small>DAYS</small>\r\n </div>\r\n <div>\r\n <span id=\"hours\">{{hours}}</span>\r\n <small>HOURS</small>\r\n </div>\r\n <div>\r\n <span id=\"minutes\">{{minutes}}</span>\r\n <small>MINS</small>\r\n </div>\r\n <div>\r\n <span id=\"seconds\">{{seconds}}</span>\r\n <small>SECS</small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section> -->\r\n\r\n\r\n<section>\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"sale-wrapper total-container\"\r\n [attr.style]=\"customClass\" [simpoBackground]=\"style?.background\" [simpoOverlay]=\"style?.background\">\r\n <div #mainContainer [id]=\"data?.id\" [spacingHorizontal]=\"stylesLayout\" [simpoLayout]=\"style?.layout\"\r\n class=\"sale-bar\">\r\n <!-- LEFT TEXT -->\r\n <div class=\"sale-text\">\r\n <simpo-text-editor [(value)]=\"bannerText\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"0\"></simpo-text-editor>\r\n </div>\r\n\r\n <!-- TIMER -->\r\n <div class=\"sale-timer\" [style.color]=\"getContrastColor(style?.background?.accentColor)\">\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getDays(content?.endDate)}}</span>\r\n <small>DAY</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getHours(content?.endDate) }}</span>\r\n <small>HOUR</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getMinutes(content?.endDate) }}</span>\r\n <small>MIN</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getSeconds(content?.endDate) }}</span>\r\n <small>SEC</small>\r\n </div>\r\n </div>\r\n\r\n <!-- RIGHT ACTION -->\r\n <div class=\"sale-action\">\r\n <ng-container *ngIf=\"data?.action?.display\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\" [edit]=\"edit\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n\r\n <!-- EDIT SELECTOR -->\r\n <div [ngClass]=\"{ hover_effect: edit }\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <!-- DELETE SELECTOR -->\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{ hover_effect: delete }\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n </div>\r\n</section>", styles: [".sale-wrapper{width:100%}.total-container{height:auto;position:relative}.sale-bar{width:100%;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:28px 50px}.sale-text{font-size:26px;font-weight:600}.sale-timer{display:flex;gap:18px}.time-card{background-color:#fff;padding:6px 14px;border-radius:8px;text-align:center;min-width:60px}.time-card span{display:block;font-size:18px;font-weight:600}.time-card small{font-size:11px;letter-spacing:1px;font-weight:500}.sale-action{display:flex;align-items:center;gap:20px}.shop-button{background-color:#fff;color:#1c2a39;border:none;padding:5px 14px;border-radius:30px;font-size:14px;font-weight:500;cursor:pointer;transition:.3s ease}.shop-button:hover{background-color:#f2f2f2}.close-icon{font-size:20px;cursor:pointer;opacity:.8}.close-icon:hover{opacity:1}@media (max-width: 768px){.sale-bar{flex-direction:column;gap:20px;text-align:center}.sale-action{justify-content:center}}\n"] }]
161
- }], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { edit: [{
168
+ ], template: "<section>\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"sale-wrapper total-container\"\r\n [attr.style]=\"customClass\" [simpoBackground]=\"style?.background\" [simpoOverlay]=\"style?.background\">\r\n <div #mainContainer [id]=\"data?.id\" [spacingHorizontal]=\"stylesLayout\" [simpoLayout]=\"style?.layout\"\r\n class=\"sale-bar\">\r\n <!-- LEFT TEXT -->\r\n <div class=\"sale-text\">\r\n <simpo-text-editor *ngIf=\"content?.inputText?.[0] as countdownText\" [(value)]=\"countdownText.value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"0\"></simpo-text-editor>\r\n </div>\r\n\r\n <!-- TIMER -->\r\n <div class=\"sale-timer\" [style.color]=\"getContrastColor(style?.background?.accentColor)\">\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getDays(content?.endDate)}}</span>\r\n <small>DAY</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getHours(content?.endDate) }}</span>\r\n <small>HOUR</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getMinutes(content?.endDate) }}</span>\r\n <small>MIN</small>\r\n </div>\r\n <div class=\"time-card\" [ngStyle]=\"{'background':getAccentBackground() }\">\r\n <span>{{ getSeconds(content?.endDate) }}</span>\r\n <small>SEC</small>\r\n </div>\r\n </div>\r\n\r\n <!-- RIGHT ACTION -->\r\n <div class=\"sale-action\">\r\n <ng-container *ngIf=\"data?.action?.display\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\" [edit]=\"edit\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n\r\n <!-- EDIT SELECTOR -->\r\n <div [ngClass]=\"{ hover_effect: edit }\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <!-- DELETE SELECTOR -->\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{ hover_effect: delete }\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n </div>\r\n</section>", styles: [".sale-wrapper{width:100%}.total-container{height:auto;position:relative}.sale-bar{width:100%;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:28px 50px}.sale-text{font-size:26px;font-weight:600}.sale-timer{display:flex;gap:18px}.time-card{background-color:#fff;padding:6px 14px;border-radius:8px;text-align:center;min-width:60px}.time-card span{display:block;font-size:18px;font-weight:600}.time-card small{font-size:11px;letter-spacing:1px;font-weight:500}.sale-action{display:flex;align-items:center;gap:20px}.shop-button{background-color:#fff;color:#1c2a39;border:none;padding:5px 14px;border-radius:30px;font-size:14px;font-weight:500;cursor:pointer;transition:.3s ease}.shop-button:hover{background-color:#f2f2f2}.close-icon{font-size:20px;cursor:pointer;opacity:.8}.close-icon:hover{opacity:1}@media (max-width: 768px){.sale-bar{flex-direction:column;gap:20px;text-align:center}.sale-action{justify-content:center}}\n"] }]
169
+ }], ctorParameters: () => [{ type: i1.EventsService }, { type: undefined, decorators: [{
170
+ type: Inject,
171
+ args: [PLATFORM_ID]
172
+ }] }], propDecorators: { edit: [{
162
173
  type: Input
163
174
  }], data: [{
164
175
  type: Input
@@ -171,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
171
182
  }], delete: [{
172
183
  type: Input
173
184
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2NvdW50ZG93bi1iYW5uZXIvY291bnRkb3duLWJhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2NvdW50ZG93bi1iYW5uZXIvY291bnRkb3duLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RCxPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFvQnpDLE1BQU0sT0FBTyx3QkFDWCxTQUFRLFdBQVc7SUFxQm5CLFlBQW9CLFlBQTJCO1FBQzdDLEtBQUssRUFBRSxDQUFDO1FBRFUsaUJBQVksR0FBWixZQUFZLENBQWU7UUFSL0MsU0FBSSxHQUFXLElBQUksQ0FBQztRQUNwQixVQUFLLEdBQVcsSUFBSSxDQUFDO1FBQ3JCLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDdkIsWUFBTyxHQUFXLElBQUksQ0FBQztRQUV2QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBVyxxQkFBcUIsQ0FBQztRQUMzQyxnQkFBVyxHQUFXLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUdqQyxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDekQsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFHRCxPQUFPLENBQUMsVUFBa0I7UUFDeEIsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxQixNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1QixNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxJQUFJLFVBQVUsSUFBSSxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxVQUFrQjtRQUN6QixJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTFCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzdDLElBQUksVUFBVSxJQUFJLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUU5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFrQjtRQUMzQixJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTFCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzdDLElBQUksVUFBVSxJQUFJLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUU5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQWtCO1FBQzNCLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFFNUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDN0MsSUFBSSxVQUFVLElBQUksQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQWlCLENBQUM7SUFDbEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQTJCO1FBQzFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFL0IsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBRTNCLGdFQUFnRTtRQUNoRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUM5RCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLGFBQWE7UUFDYixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsYUFBYTthQUNSLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNmLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFeEQsT0FBTyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO1FBRWxDLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFbkIsSUFBSSxFQUFFLENBQUMsb0JBQW9CLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFOUQsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLEtBQUssRUFBRSxDQUFDLFdBQVcsS0FBSyxFQUFFLENBQUMsb0JBQW9CLEdBQUc7WUFDNUUsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxTQUE2QjtRQUNoRCxRQUFRLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTTtnQkFDVCxPQUFPLEVBQUUsQ0FBQyxDQUFDLHlDQUF5QztZQUV0RCxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxPQUFPLENBQUM7WUFFakIsS0FBSyxnQkFBZ0I7Z0JBQ25CLE9BQU8sT0FBTyxDQUFDO1lBRWpCLEtBQUssZUFBZTtnQkFDbEIsT0FBTyxRQUFRLENBQUM7WUFFbEI7Z0JBQ0UsT0FBTyxFQUFFLENBQUMsQ0FBQyxXQUFXO1FBQzFCLENBQUM7SUFDSCxDQUFDOytHQTdKVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix5UEN6Q3JDLHN3TEErR1Usby9CRHBGTixtQkFBbUIsc1hBQ25CLG9CQUFvQixtV0FDcEIsWUFBWSxtYkFDWixtQkFBbUIsNkxBQ25CLG1CQUFtQiwwR0FDbkIsY0FBYyxnRkFDZCxnQkFBZ0IscUZBQ2hCLDBCQUEwQiwyR0FFMUIsbUJBQW1COzs0RkFLVix3QkFBd0I7a0JBbEJwQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLGVBQWU7d0JBQ2YsbUJBQW1CO3FCQUNwQjtrRkFRUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmRNb2RlbCwgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ291bnREb3duQmFubmVyQ29udGVudE1vZGFsLCBDb3VudERvd25CYW5uZXJTZWN0aW9uIH0gZnJvbSAnLi9jb3VudGRvd24tYmFubmVyLmNvbXBvbmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCb3JkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYm9yZGVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcblxyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1jb3VudGRvd24tYmFubmVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFNpbXBvRWxlbWVudHNNb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxyXG4gICAgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY291bnRkb3duLWJhbm5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvdW50ZG93bi1iYW5uZXIuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvdW50ZG93bkJhbm5lckNvbXBvbmVudFxyXG4gIGV4dGVuZHMgQmFzZVNlY3Rpb25cclxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBDb3VudERvd25CYW5uZXJTZWN0aW9uIHwgYW55O1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG5leHRDb21wb25lbnRDb2xvcj86IEJhY2tncm91bmRNb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG5cclxuICBzdHlsZT86IFN0eWxlc01vZGVsO1xyXG4gIGNvbnRlbnQ/OiBDb3VudERvd25CYW5uZXJDb250ZW50TW9kYWw7XHJcblxyXG4gIGRheXM6IHN0cmluZyA9ICcwMCc7XHJcbiAgaG91cnM6IHN0cmluZyA9ICcwMCc7XHJcbiAgbWludXRlczogc3RyaW5nID0gJzAwJztcclxuICBzZWNvbmRzOiBzdHJpbmcgPSAnMDAnO1xyXG4gIGludGVydmFsOiBhbnk7XHJcbiAgYmFubmVyVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgdGFyZ2V0RGF0ZTogc3RyaW5nID0gXCIyMDI2LTAyLTE3VDAwOjAwOjAwXCI7XHJcbiAgY3VycmVudFRpbWU6IG51bWJlciA9IERhdGUubm93KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZSA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5iYW5uZXJUZXh0ID0gdGhpcy5jb250ZW50Py5pbnB1dFRleHRbMF0udmFsdWUgPz8gJyc7XHJcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGF5cyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKS5nZXRUaW1lKCk7XHJcbiAgICBpZiAoaXNOYU4odGFyZ2V0KSkgcmV0dXJuIDA7XHJcblxyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRhcmdldCAtIHRoaXMuY3VycmVudFRpbWU7XHJcbiAgICBpZiAoZGlmZmVyZW5jZSA8PSAwKSByZXR1cm4gMDtcclxuXHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmZXJlbmNlIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcclxuICB9XHJcblxyXG4gIGdldEhvdXJzKGRhdGVTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAwO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpLmdldFRpbWUoKTtcclxuICAgIGlmIChpc05hTih0YXJnZXQpKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gdGFyZ2V0IC0gdGhpcy5jdXJyZW50VGltZTtcclxuICAgIGlmIChkaWZmZXJlbmNlIDw9IDApIHJldHVybiAwO1xyXG5cclxuICAgIHJldHVybiBNYXRoLmZsb29yKChkaWZmZXJlbmNlIC8gKDEwMDAgKiA2MCAqIDYwKSkgJSAyNCk7XHJcbiAgfVxyXG5cclxuICBnZXRNaW51dGVzKGRhdGVTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAwO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpLmdldFRpbWUoKTtcclxuICAgIGlmIChpc05hTih0YXJnZXQpKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gdGFyZ2V0IC0gdGhpcy5jdXJyZW50VGltZTtcclxuICAgIGlmIChkaWZmZXJlbmNlIDw9IDApIHJldHVybiAwO1xyXG5cclxuICAgIHJldHVybiBNYXRoLmZsb29yKChkaWZmZXJlbmNlIC8gKDEwMDAgKiA2MCkpICUgNjApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2Vjb25kcyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKS5nZXRUaW1lKCk7XHJcbiAgICBpZiAoaXNOYU4odGFyZ2V0KSkgcmV0dXJuIDA7XHJcblxyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRhcmdldCAtIHRoaXMuY3VycmVudFRpbWU7XHJcbiAgICBpZiAoZGlmZmVyZW5jZSA8PSAwKSByZXR1cm4gMDtcclxuXHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoZGlmZmVyZW5jZSAvIDEwMDApICUgNjApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN0eWxlc0xheW91dCgpIHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuc3R5bGU/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJhc3RDb2xvcihiZ0NvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFiZ0NvbG9yKSByZXR1cm4gJyMwMDAwMDAnO1xyXG5cclxuICAgIGxldCBjb2xvclRvQ2hlY2sgPSBiZ0NvbG9yO1xyXG5cclxuICAgIC8vIElmIGdyYWRpZW50IOKGkiBleHRyYWN0IGZpcnN0IGNvbG9yIGluc2lkZSBsaW5lYXItZ3JhZGllbnQoLi4uKVxyXG4gICAgaWYgKGJnQ29sb3IuaW5jbHVkZXMoJ2xpbmVhci1ncmFkaWVudCcpKSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gYmdDb2xvci5tYXRjaCgvKCNbMC05QS1GYS1mXXs2fXxyZ2JcXChbXildK1xcKSkvKTtcclxuICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgY29sb3JUb0NoZWNrID0gbWF0Y2hbMF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgciA9IDAsIGcgPSAwLCBiID0gMDtcclxuXHJcbiAgICAvLyBIRVggZm9ybWF0XHJcbiAgICBpZiAoY29sb3JUb0NoZWNrLnN0YXJ0c1dpdGgoJyMnKSkge1xyXG4gICAgICBjb25zdCBoZXggPSBjb2xvclRvQ2hlY2sucmVwbGFjZSgnIycsICcnKTtcclxuICAgICAgciA9IHBhcnNlSW50KGhleC5zdWJzdHJpbmcoMCwgMiksIDE2KTtcclxuICAgICAgZyA9IHBhcnNlSW50KGhleC5zdWJzdHJpbmcoMiwgNCksIDE2KTtcclxuICAgICAgYiA9IHBhcnNlSW50KGhleC5zdWJzdHJpbmcoNCwgNiksIDE2KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSR0IgZm9ybWF0XHJcbiAgICBlbHNlIGlmIChjb2xvclRvQ2hlY2suc3RhcnRzV2l0aCgncmdiJykpIHtcclxuICAgICAgY29uc3QgdmFsdWVzID0gY29sb3JUb0NoZWNrLm1hdGNoKC9cXGQrL2cpO1xyXG4gICAgICBpZiAodmFsdWVzKSB7XHJcbiAgICAgICAgciA9ICt2YWx1ZXNbMF07XHJcbiAgICAgICAgZyA9ICt2YWx1ZXNbMV07XHJcbiAgICAgICAgYiA9ICt2YWx1ZXNbMl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBicmlnaHRuZXNzID0gKHIgKiAyOTkgKyBnICogNTg3ICsgYiAqIDExNCkgLyAxMDAwO1xyXG5cclxuICAgIHJldHVybiBicmlnaHRuZXNzID4gMTI4ID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWNjZW50QmFja2dyb3VuZCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYmcgPSB0aGlzLnN0eWxlPy5iYWNrZ3JvdW5kO1xyXG5cclxuICAgIGlmICghYmcpIHJldHVybiAnJztcclxuXHJcbiAgICBpZiAoYmcuYWNjZW50QmFja2dyb3VuZFR5cGUgPT09ICdTb2xpZCcpIHtcclxuICAgICAgcmV0dXJuIGJnLmFjY2VudENvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFuZ2xlID0gdGhpcy5nZXRHcmFkaWVudERpcmVjdGlvbihiZy5ncmFkaWVudERpcmVjdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGFuZ2xlXHJcbiAgICAgID8gYGxpbmVhci1ncmFkaWVudCgke2FuZ2xlfSwgJHtiZy5hY2NlbnRDb2xvcn0sICR7Ymcuc2Vjb25kYXJ5QWNjZW50Q29sb3J9KWBcclxuICAgICAgOiBgbGluZWFyLWdyYWRpZW50KCR7YmcuYWNjZW50Q29sb3J9LCAke2JnLnNlY29uZGFyeUFjY2VudENvbG9yfSlgO1xyXG4gIH1cclxuICBnZXRHcmFkaWVudERpcmVjdGlvbihkaXJlY3Rpb246IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xyXG4gICAgICBjYXNlICdET1dOJzpcclxuICAgICAgICByZXR1cm4gJyc7IC8vIGRlZmF1bHQgdG9wIOKGkiBib3R0b20gKG5vIGFuZ2xlIG5lZWRlZClcclxuXHJcbiAgICAgIGNhc2UgJ1JJR0hUJzpcclxuICAgICAgICByZXR1cm4gJzkwZGVnJztcclxuXHJcbiAgICAgIGNhc2UgJ0RJQUdPTkFMX1JJR0hUJzpcclxuICAgICAgICByZXR1cm4gJzQ1ZGVnJztcclxuXHJcbiAgICAgIGNhc2UgJ0RJQUdPTkFMX0xFRlQnOlxyXG4gICAgICAgIHJldHVybiAnMTM1ZGVnJztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnOyAvLyBmYWxsYmFja1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxzZWN0aW9uIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGU/LmJhY2tncm91bmRcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiXHJcbiAgICBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcbiAgICA8ZGl2ICNtYWluQ29udGFpbmVyIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb092ZXJsYXldPVwic3R5bGU/LmJhY2tncm91bmRcIiBbc2ltcG9Cb3JkZXJdPVwic3R5bGU/LmJvcmRlclwiXHJcbiAgICAgICAgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtzaW1wb0xheW91dF09XCJzdHlsZT8ubGF5b3V0XCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IHN0eWxlPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJyxcclxuICAgICAgJ2p1c3RpZnktY29udGVudC1zdGFydCc6IHN0eWxlPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcsXHJcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzogc3R5bGU/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCdcclxuICAgIH1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy01MFwiIFtpZF09XCJkYXRhPy5pZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIml0ZW0ubGFiZWwuaW5jbHVkZXMoJ0hlYWRpbmcnKSA/ICdoZWFkaW5nLWxhcmdlIGxoLTIgbWItNCcgOiAnYm9keS1sYXJnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cIml0ZW0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudGRvd24tY29udGFpbmVyIHctNTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwiZGF5c1wiPnt7ZGF5c319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+REFZUzwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJob3Vyc1wiPnt7aG91cnN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkhPVVJTPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cIm1pbnV0ZXNcIj57e21pbnV0ZXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPk1JTlM8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwic2Vjb25kc1wiPnt7c2Vjb25kc319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+U0VDUzwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmRldmlkZXI/LmRpc3BsYXlcIj5cclxuICAgICAgICA8c2ltcG8tc3ZnLWRpdmlkZXIgW2RpdmlkZXJUeXBlXT1cInN0eWxlPy5kZXZpZGVyPy5kZXZpZGVyVHlwZVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJuZXh0Q29tcG9uZW50Q29sb3I/LmNvbG9yXCI+PC9zaW1wby1zdmctZGl2aWRlcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+IC0tPlxyXG5cclxuXHJcbjxzZWN0aW9uPlxyXG4gICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIGNsYXNzPVwic2FsZS13cmFwcGVyIHRvdGFsLWNvbnRhaW5lclwiXHJcbiAgICAgICAgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlPy5iYWNrZ3JvdW5kXCIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZT8uYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDxkaXYgI21haW5Db250YWluZXIgW2lkXT1cImRhdGE/LmlkXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtzaW1wb0xheW91dF09XCJzdHlsZT8ubGF5b3V0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzYWxlLWJhclwiPlxyXG4gICAgICAgICAgICA8IS0tIExFRlQgVEVYVCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhbGUtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cImJhbm5lclRleHRcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaW5wdXRUZXh0SW5kZXhdPVwiMFwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUSU1FUiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhbGUtdGltZXJcIiBbc3R5bGUuY29sb3JdPVwiZ2V0Q29udHJhc3RDb2xvcihzdHlsZT8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jYXJkXCIgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kJzpnZXRBY2NlbnRCYWNrZ3JvdW5kKCkgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdldERheXMoY29udGVudD8uZW5kRGF0ZSl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+REFZPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY2FyZFwiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZCc6Z2V0QWNjZW50QmFja2dyb3VuZCgpIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRIb3Vycyhjb250ZW50Py5lbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+SE9VUjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNhcmRcIiBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnOmdldEFjY2VudEJhY2tncm91bmQoKSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0TWludXRlcyhjb250ZW50Py5lbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+TUlOPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY2FyZFwiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZCc6Z2V0QWNjZW50QmFja2dyb3VuZCgpIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRTZWNvbmRzKGNvbnRlbnQ/LmVuZERhdGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5TRUM8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBSSUdIVCBBQ1RJT04gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYWxlLWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LmFjdGlvbj8uZGlzcGxheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBkYXRhPy5hY3Rpb24/LmJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idXR0b24tZWxlbWVudCBbYnV0dG9uQ29udGVudF09XCJidXR0b24uY29udGVudFwiIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25JZF09XCJidXR0b24uaWRcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW2VkaXRdPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRGl2aWRlciAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmRldmlkZXI/LmRpc3BsYXlcIj5cclxuICAgICAgICAgICAgPHNpbXBvLXN2Zy1kaXZpZGVyIFtkaXZpZGVyVHlwZV09XCJzdHlsZT8uZGV2aWRlcj8uZGV2aWRlclR5cGVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIEVESVQgU0VMRUNUT1IgLS0+XHJcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGhvdmVyX2VmZmVjdDogZWRpdCB9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgICAgICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBERUxFVEUgU0VMRUNUT1IgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7IGhvdmVyX2VmZmVjdDogZGVsZXRlIH1cIj5cclxuICAgICAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2NvdW50ZG93bi1iYW5uZXIvY291bnRkb3duLWJhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2NvdW50ZG93bi1iYW5uZXIvY291bnRkb3duLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBR0wsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUlsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUV2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sV0FBVyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQW9CekMsTUFBTSxPQUFPLHdCQUNYLFNB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QUFZLG1iQUNaLG1CQUFtQiw2TEFDbkIsbUJBQW1CLDBHQUNuQixjQUFjLGdGQUNkLGdCQUFnQixxRkFDaEIsMEJBQTBCLDJHQUUxQixtQkFBbUI7OzRGQUtWLHdCQUF3QjtrQkFsQnBDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLDBCQUEwQjt3QkFDMUIsZUFBZTt3QkFDZixtQkFBbUI7cUJBQ3BCOzswQkE0QkUsTUFBTTsyQkFBQyxXQUFXO3lDQXBCWixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBQTEFURk9STV9JRCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFNpbXBvRWxlbWVudHNNb2R1bGUgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmRNb2RlbCwgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ291bnREb3duQmFubmVyQ29udGVudE1vZGFsLCBDb3VudERvd25CYW5uZXJTZWN0aW9uIH0gZnJvbSAnLi9jb3VudGRvd24tYmFubmVyLmNvbXBvbmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCb3JkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYm9yZGVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcblxyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1jb3VudGRvd24tYmFubmVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFNpbXBvRWxlbWVudHNNb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxyXG4gICAgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY291bnRkb3duLWJhbm5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvdW50ZG93bi1iYW5uZXIuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvdW50ZG93bkJhbm5lckNvbXBvbmVudFxyXG4gIGV4dGVuZHMgQmFzZVNlY3Rpb25cclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGF0YT86IENvdW50RG93bkJhbm5lclNlY3Rpb24gfCBhbnk7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudENvbG9yPzogQmFja2dyb3VuZE1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcblxyXG4gIHN0eWxlPzogU3R5bGVzTW9kZWw7XHJcbiAgY29udGVudD86IENvdW50RG93bkJhbm5lckNvbnRlbnRNb2RhbDtcclxuXHJcbiAgZGF5czogc3RyaW5nID0gJzAwJztcclxuICBob3Vyczogc3RyaW5nID0gJzAwJztcclxuICBtaW51dGVzOiBzdHJpbmcgPSAnMDAnO1xyXG4gIHNlY29uZHM6IHN0cmluZyA9ICcwMCc7XHJcbiAgaW50ZXJ2YWw6IGFueTtcclxuICBiYW5uZXJUZXh0OiBzdHJpbmcgPSAnJztcclxuICB0YXJnZXREYXRlOiBzdHJpbmcgPSBcIjIwMjYtMDItMTdUMDA6MDA6MDBcIjtcclxuICBjdXJyZW50VGltZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3RcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcclxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYmFubmVyVGV4dCA9IHRoaXMuY29udGVudD8uaW5wdXRUZXh0WzBdLnZhbHVlID8/ICcnO1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGF5cyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKS5nZXRUaW1lKCk7XHJcbiAgICBpZiAoaXNOYU4odGFyZ2V0KSkgcmV0dXJuIDA7XHJcblxyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRhcmdldCAtIHRoaXMuY3VycmVudFRpbWU7XHJcbiAgICBpZiAoZGlmZmVyZW5jZSA8PSAwKSByZXR1cm4gMDtcclxuXHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmZXJlbmNlIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcclxuICB9XHJcblxyXG4gIGdldEhvdXJzKGRhdGVTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAwO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpLmdldFRpbWUoKTtcclxuICAgIGlmIChpc05hTih0YXJnZXQpKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gdGFyZ2V0IC0gdGhpcy5jdXJyZW50VGltZTtcclxuICAgIGlmIChkaWZmZXJlbmNlIDw9IDApIHJldHVybiAwO1xyXG5cclxuICAgIHJldHVybiBNYXRoLmZsb29yKChkaWZmZXJlbmNlIC8gKDEwMDAgKiA2MCAqIDYwKSkgJSAyNCk7XHJcbiAgfVxyXG5cclxuICBnZXRNaW51dGVzKGRhdGVTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAwO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpLmdldFRpbWUoKTtcclxuICAgIGlmIChpc05hTih0YXJnZXQpKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gdGFyZ2V0IC0gdGhpcy5jdXJyZW50VGltZTtcclxuICAgIGlmIChkaWZmZXJlbmNlIDw9IDApIHJldHVybiAwO1xyXG5cclxuICAgIHJldHVybiBNYXRoLmZsb29yKChkaWZmZXJlbmNlIC8gKDEwMDAgKiA2MCkpICUgNjApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2Vjb25kcyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKS5nZXRUaW1lKCk7XHJcbiAgICBpZiAoaXNOYU4odGFyZ2V0KSkgcmV0dXJuIDA7XHJcblxyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRhcmdldCAtIHRoaXMuY3VycmVudFRpbWU7XHJcbiAgICBpZiAoZGlmZmVyZW5jZSA8PSAwKSByZXR1cm4gMDtcclxuXHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoZGlmZmVyZW5jZSAvIDEwMDApICUgNjApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN0eWxlc0xheW91dCgpIHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuc3R5bGU/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJhc3RDb2xvcihiZ0NvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFiZ0NvbG9yKSByZXR1cm4gJyMwMDAwMDAnO1xyXG5cclxuICAgIGxldCBjb2xvclRvQ2hlY2sgPSBiZ0NvbG9yO1xyXG5cclxuICAgIC8vIElmIGdyYWRpZW50IOKGkiBleHRyYWN0IGZpcnN0IGNvbG9yIGluc2lkZSBsaW5lYXItZ3JhZGllbnQoLi4uKVxyXG4gICAgaWYgKGJnQ29sb3IuaW5jbHVkZXMoJ2xpbmVhci1ncmFkaWVudCcpKSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gYmdDb2xvci5tYXRjaCgvKCNbMC05QS1GYS1mXXs2fXxyZ2JcXChbXildK1xcKSkvKTtcclxuICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgY29sb3JUb0NoZWNrID0gbWF0Y2hbMF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgciA9IDAsIGcgPSAwLCBiID0gMDtcclxuXHJcbiAgICAvLyBIRVggZm9ybWF0XHJcbiAgICBpZiAoY29sb3JUb0NoZWNrLnN0YXJ0c1dpdGgoJyMnKSkge1xyXG4gICAgICBjb25zdCBoZXggPSBjb2xvclRvQ2hlY2sucmVwbGFjZSgnIycsICcnKTtcclxuICAgICAgciA9IHBhcnNlSW50KGhleC5zdWJzdHJpbmcoMCwgMiksIDE2KTtcclxuICAgICAgZyA9IHBhcnNlSW50KGhleC5zdWJzdHJpbmcoMiwgNCksIDE2KTtcclxuICAgICAgYiA9IHBhcnNlSW50KGhleC5zdWJzdHJpbmcoNCwgNiksIDE2KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSR0IgZm9ybWF0XHJcbiAgICBlbHNlIGlmIChjb2xvclRvQ2hlY2suc3RhcnRzV2l0aCgncmdiJykpIHtcclxuICAgICAgY29uc3QgdmFsdWVzID0gY29sb3JUb0NoZWNrLm1hdGNoKC9cXGQrL2cpO1xyXG4gICAgICBpZiAodmFsdWVzKSB7XHJcbiAgICAgICAgciA9ICt2YWx1ZXNbMF07XHJcbiAgICAgICAgZyA9ICt2YWx1ZXNbMV07XHJcbiAgICAgICAgYiA9ICt2YWx1ZXNbMl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBicmlnaHRuZXNzID0gKHIgKiAyOTkgKyBnICogNTg3ICsgYiAqIDExNCkgLyAxMDAwO1xyXG5cclxuICAgIHJldHVybiBicmlnaHRuZXNzID4gMTI4ID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWNjZW50QmFja2dyb3VuZCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYmcgPSB0aGlzLnN0eWxlPy5iYWNrZ3JvdW5kO1xyXG5cclxuICAgIGlmICghYmcpIHJldHVybiAnJztcclxuXHJcbiAgICBpZiAoYmcuYWNjZW50QmFja2dyb3VuZFR5cGUgPT09ICdTb2xpZCcpIHtcclxuICAgICAgcmV0dXJuIGJnLmFjY2VudENvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFuZ2xlID0gdGhpcy5nZXRHcmFkaWVudERpcmVjdGlvbihiZy5ncmFkaWVudERpcmVjdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGFuZ2xlXHJcbiAgICAgID8gYGxpbmVhci1ncmFkaWVudCgke2FuZ2xlfSwgJHtiZy5hY2NlbnRDb2xvcn0sICR7Ymcuc2Vjb25kYXJ5QWNjZW50Q29sb3J9KWBcclxuICAgICAgOiBgbGluZWFyLWdyYWRpZW50KCR7YmcuYWNjZW50Q29sb3J9LCAke2JnLnNlY29uZGFyeUFjY2VudENvbG9yfSlgO1xyXG4gIH1cclxuICBnZXRHcmFkaWVudERpcmVjdGlvbihkaXJlY3Rpb246IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xyXG4gICAgICBjYXNlICdET1dOJzpcclxuICAgICAgICByZXR1cm4gJyc7IC8vIGRlZmF1bHQgdG9wIOKGkiBib3R0b20gKG5vIGFuZ2xlIG5lZWRlZClcclxuXHJcbiAgICAgIGNhc2UgJ1JJR0hUJzpcclxuICAgICAgICByZXR1cm4gJzkwZGVnJztcclxuXHJcbiAgICAgIGNhc2UgJ0RJQUdPTkFMX1JJR0hUJzpcclxuICAgICAgICByZXR1cm4gJzQ1ZGVnJztcclxuXHJcbiAgICAgIGNhc2UgJ0RJQUdPTkFMX0xFRlQnOlxyXG4gICAgICAgIHJldHVybiAnMTM1ZGVnJztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnOyAvLyBmYWxsYmFja1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbj5cclxuICAgIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBjbGFzcz1cInNhbGUtd3JhcHBlciB0b3RhbC1jb250YWluZXJcIlxyXG4gICAgICAgIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZT8uYmFja2dyb3VuZFwiIFtzaW1wb092ZXJsYXldPVwic3R5bGU/LmJhY2tncm91bmRcIj5cclxuICAgICAgICA8ZGl2ICNtYWluQ29udGFpbmVyIFtpZF09XCJkYXRhPy5pZFwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGU/LmxheW91dFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2FsZS1iYXJcIj5cclxuICAgICAgICAgICAgPCEtLSBMRUZUIFRFWFQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYWxlLXRleHRcIj5cclxuICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciAqbmdJZj1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdIGFzIGNvdW50ZG93blRleHRcIiBbKHZhbHVlKV09XCJjb3VudGRvd25UZXh0LnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lucHV0VGV4dEluZGV4XT1cIjBcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVElNRVIgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYWxlLXRpbWVyXCIgW3N0eWxlLmNvbG9yXT1cImdldENvbnRyYXN0Q29sb3Ioc3R5bGU/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY2FyZFwiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZCc6Z2V0QWNjZW50QmFja2dyb3VuZCgpIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXREYXlzKGNvbnRlbnQ/LmVuZERhdGUpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkRBWTwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNhcmRcIiBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnOmdldEFjY2VudEJhY2tncm91bmQoKSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0SG91cnMoY29udGVudD8uZW5kRGF0ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkhPVVI8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jYXJkXCIgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kJzpnZXRBY2NlbnRCYWNrZ3JvdW5kKCkgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdldE1pbnV0ZXMoY29udGVudD8uZW5kRGF0ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPk1JTjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNhcmRcIiBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnOmdldEFjY2VudEJhY2tncm91bmQoKSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0U2Vjb25kcyhjb250ZW50Py5lbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+U0VDPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUklHSFQgQUNUSU9OIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2FsZS1hY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5hY3Rpb24/LmRpc3BsYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnV0dG9uLWVsZW1lbnQgW2J1dHRvbkNvbnRlbnRdPVwiYnV0dG9uLmNvbnRlbnRcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uSWRdPVwiYnV0dG9uLmlkXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRJbmZvXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZFwiPjwvYXBwLWJ1dHRvbi1lbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIERpdmlkZXIgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5kZXZpZGVyPy5kaXNwbGF5XCI+XHJcbiAgICAgICAgICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGU/LmRldmlkZXI/LmRldmlkZXJUeXBlXCJcclxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJuZXh0Q29tcG9uZW50Q29sb3I/LmNvbG9yXCI+PC9zaW1wby1zdmctZGl2aWRlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBFRElUIFNFTEVDVE9SIC0tPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBob3Zlcl9lZmZlY3Q6IGVkaXQgfVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gREVMRVRFIFNFTEVDVE9SIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieyBob3Zlcl9lZmZlY3Q6IGRlbGV0ZSB9XCI+XHJcbiAgICAgICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19