@dev-tcloud/tcloud-ui 4.1.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,79 +1,14 @@
1
1
  import { Directive, Input, HostListener } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class TCloudUiTooltipDirective {
4
- onMouseOver(event) {
5
- let hoverInCallback = () => {
6
- this.remove = false;
7
- };
8
- let hoverOutCallback = () => {
9
- this.remove = true;
10
- const customDivAll = document.querySelectorAll('.tc-directive-tooltip');
11
- if (customDivAll && customDivAll.length > 0) {
12
- customDivAll.forEach((_customDiv) => {
13
- if (_customDiv) {
14
- _customDiv.remove();
15
- }
16
- });
17
- }
18
- };
19
- hoverOutCallback;
20
- setTimeout(() => {
21
- const scrollTop = window?.scrollY || window?.pageYOffset;
22
- const tooltip = this.renderer.createElement('div');
23
- const rect = this.el.nativeElement?.getBoundingClientRect();
24
- // const direction = this.el.nativeElement?.attributes['ng-reflect--t-cdirection']?.value || 'top';
25
- const direction = this._direction || 'top';
26
- const el_position_x = (rect?.left) ? parseInt(rect?.left) : 0;
27
- const el_position_y = (rect?.top) ? parseInt(rect?.top + scrollTop) : 0;
28
- let width = 0;
29
- let height = 0;
30
- if (event && event.target) {
31
- const _event = event.target;
32
- height = _event.offsetHeight;
33
- width = _event.offsetWidth;
34
- }
35
- const top = `${(el_position_y - ((height / 2) + 10))}px`;
36
- const left = `${el_position_x + (width / 2)}px`;
37
- this.renderer.setStyle(tooltip, 'top', '0px');
38
- this.renderer.setStyle(tooltip, 'left', '0px');
39
- this.renderer.setStyle(tooltip, 'opacity', '0');
40
- this.renderer.addClass(tooltip, 'tc-directive-tooltip');
41
- this.renderer.addClass(tooltip, `tc-directive-tooltip-${direction}`);
42
- const id = this.generateID();
43
- this.renderer.setAttribute(tooltip, 'id', id);
44
- const textNode = this.info_text;
45
- if (textNode !== undefined && textNode !== null && textNode !== '') {
46
- tooltip.innerHTML = textNode;
47
- this.renderer.appendChild(document.body, tooltip);
48
- this.start_tooltip(id, height, width, el_position_x, el_position_y, direction);
49
- if (tooltip) {
50
- tooltip.addEventListener('mouseenter', hoverInCallback);
51
- tooltip.addEventListener('mouseleave', hoverOutCallback);
52
- }
53
- }
54
- });
55
- }
56
- onMouseOut(event) {
57
- this.remove = true;
58
- const customDivAll = document.querySelectorAll('.tc-directive-tooltip');
59
- if (customDivAll && customDivAll.length > 0) {
60
- setTimeout(() => {
61
- if (this.remove) {
62
- customDivAll.forEach((_customDiv) => {
63
- if (_customDiv) {
64
- _customDiv.remove();
65
- }
66
- });
67
- }
68
- }, 25);
69
- }
70
- }
71
4
  set TCtooltip(tooltip) {
72
5
  if (tooltip) {
73
- if (typeof tooltip === 'object') {
74
- }
75
- else {
76
- this.info_text = tooltip;
6
+ this.info_text = typeof tooltip === 'object' ? '' : tooltip;
7
+ if (this.tooltipVisible && this.tooltipElement) {
8
+ // Atualiza o conteúdo do tooltip diretamente
9
+ this.tooltipElement.innerHTML = this.info_text;
10
+ // Reaplica a posição calculada anteriormente para manter a centralização
11
+ this.repositionTooltip();
77
12
  }
78
13
  }
79
14
  }
@@ -85,12 +20,121 @@ export class TCloudUiTooltipDirective {
85
20
  constructor(el, renderer) {
86
21
  this.el = el;
87
22
  this.renderer = renderer;
23
+ this.tooltipMode = 'hover';
88
24
  this.remove = false;
89
25
  this.info_text = '';
26
+ this.tooltipVisible = false;
27
+ this.tooltipElement = null;
90
28
  this._direction = 'top';
91
29
  }
30
+ onDocumentClick(event) {
31
+ if (this.tooltipMode === 'click' && this.tooltipVisible && this.info_text) {
32
+ const clickedInside = this.el.nativeElement.contains(event.target) || (this.tooltipElement?.contains(event.target));
33
+ if (!clickedInside) {
34
+ this.removeTooltip();
35
+ }
36
+ }
37
+ }
38
+ onMouseOver(event) {
39
+ if (this.tooltipMode === 'hover' && !this.tooltipVisible && this.info_text) {
40
+ this.createTooltip(event);
41
+ this.tooltipVisible = true;
42
+ }
43
+ }
44
+ onMouseOut(event) {
45
+ if (this.tooltipVisible) {
46
+ const relatedTarget = event.relatedTarget;
47
+ if (!this.el.nativeElement.contains(relatedTarget) && !this.tooltipElement?.contains(relatedTarget)) {
48
+ this.removeTooltip();
49
+ }
50
+ }
51
+ }
52
+ onClick(event) {
53
+ if (this.tooltipMode === 'click') {
54
+ if (this.tooltipVisible) {
55
+ this.removeTooltip();
56
+ }
57
+ else {
58
+ this.createTooltip(event);
59
+ }
60
+ this.tooltipVisible = !this.tooltipVisible;
61
+ }
62
+ }
63
+ createTooltip(event) {
64
+ const scrollTop = window?.scrollY || window?.pageYOffset;
65
+ const tooltip = this.renderer.createElement('div');
66
+ const rect = this.el.nativeElement?.getBoundingClientRect();
67
+ const direction = this._direction || 'top';
68
+ const el_position_x = rect?.left || 0;
69
+ const el_position_y = rect?.top + scrollTop || 0;
70
+ let width = 0;
71
+ let height = 0;
72
+ if (event && event.target) {
73
+ const _event = event.target;
74
+ height = _event.offsetHeight;
75
+ width = _event.offsetWidth;
76
+ }
77
+ this.renderer.setStyle(tooltip, 'top', '0px');
78
+ this.renderer.setStyle(tooltip, 'left', '0px');
79
+ this.renderer.setStyle(tooltip, 'opacity', '0');
80
+ this.renderer.addClass(tooltip, 'tc-directive-tooltip');
81
+ this.renderer.addClass(tooltip, `tc-directive-tooltip-${direction}`);
82
+ const id = this.generateID();
83
+ this.renderer.setAttribute(tooltip, 'id', id);
84
+ tooltip.innerHTML = this.info_text;
85
+ this.renderer.appendChild(document.body, tooltip);
86
+ this.start_tooltip(id, height, width, el_position_x, el_position_y, direction);
87
+ this.tooltipElement = tooltip;
88
+ tooltip.addEventListener('mouseenter', () => this.tooltipVisible = true);
89
+ tooltip.addEventListener('mouseleave', () => this.removeTooltip());
90
+ }
91
+ removeTooltip() {
92
+ const customDivAll = document.querySelectorAll('.tc-directive-tooltip');
93
+ if (customDivAll && customDivAll.length > 0) {
94
+ setTimeout(() => {
95
+ customDivAll.forEach((_customDiv) => {
96
+ if (_customDiv) {
97
+ _customDiv.remove();
98
+ }
99
+ });
100
+ }, 25);
101
+ }
102
+ this.tooltipVisible = false;
103
+ this.tooltipElement = null;
104
+ }
105
+ repositionTooltip() {
106
+ if (!this.tooltipElement)
107
+ return;
108
+ const rect = this.el.nativeElement?.getBoundingClientRect();
109
+ const height = this.el.nativeElement.offsetHeight;
110
+ const width = this.el.nativeElement.offsetWidth;
111
+ const tooltipHeight = this.tooltipElement.clientHeight;
112
+ const tooltipWidth = this.tooltipElement.clientWidth;
113
+ let p_y = 0;
114
+ let p_x = 0;
115
+ const scrollTop = window?.scrollY || window?.pageYOffset;
116
+ const center_position = (rect.left + (width / 2)) - (tooltipWidth / 2);
117
+ if (this._direction === 'top') {
118
+ p_y = (rect.top + scrollTop - tooltipHeight) - 15;
119
+ p_x = center_position;
120
+ }
121
+ else if (this._direction === 'bottom') {
122
+ p_y = (rect.top + scrollTop + height) + 15;
123
+ p_x = center_position;
124
+ }
125
+ else if (this._direction === 'left') {
126
+ p_y = (rect.top + scrollTop - (tooltipHeight / 2) + (height / 2));
127
+ p_x = rect.left - tooltipWidth - 15;
128
+ }
129
+ else if (this._direction === 'right') {
130
+ p_y = (rect.top + scrollTop - (tooltipHeight / 2) + (height / 2));
131
+ p_x = rect.left + width + 15;
132
+ }
133
+ this.renderer.setStyle(this.tooltipElement, 'top', `${p_y}px`);
134
+ this.renderer.setStyle(this.tooltipElement, 'left', `${p_x}px`);
135
+ }
92
136
  generateID(target) {
93
- const ref = (target) ? `-${target}` : '';
137
+ const ref = target ? `-${target}` : '';
94
138
  return `tc-tooltip-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}${ref}`;
95
139
  }
96
140
  start_tooltip(id, height, width, el_position_x, el_position_y, direction) {
@@ -98,13 +142,6 @@ export class TCloudUiTooltipDirective {
98
142
  const tooltip = document.getElementById(id);
99
143
  const tooltip_height = tooltip.clientHeight;
100
144
  const tooltip_width = tooltip.clientWidth;
101
- /*
102
- console.log('altura do target: ', height);
103
- console.log('largura do target: ', width);
104
- console.log('el_position_x do target: ', el_position_x);
105
- console.log('el_position_y do target: ', el_position_y);
106
- console.log('direction do tooltip: ', direction);
107
- */
108
145
  let p_y = 0;
109
146
  let p_x = 0;
110
147
  const center_position = (el_position_x + (width / 2)) - (tooltip_width / 2);
@@ -130,22 +167,30 @@ export class TCloudUiTooltipDirective {
130
167
  });
131
168
  }
132
169
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: TCloudUiTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
133
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: TCloudUiTooltipDirective, selector: "[TCtooltip]", inputs: { TCtooltip: "TCtooltip", TCdirection: "TCdirection" }, host: { listeners: { "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)" } }, ngImport: i0 }); }
170
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: TCloudUiTooltipDirective, selector: "[TCtooltip]", inputs: { tooltipMode: "tooltipMode", TCtooltip: "TCtooltip", TCdirection: "TCdirection" }, host: { listeners: { "document:click": "onDocumentClick($event)", "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)", "click": "onClick($event)" } }, ngImport: i0 }); }
134
171
  }
135
172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: TCloudUiTooltipDirective, decorators: [{
136
173
  type: Directive,
137
174
  args: [{
138
175
  selector: '[TCtooltip]'
139
176
  }]
140
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { onMouseOver: [{
177
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { tooltipMode: [{
178
+ type: Input
179
+ }], TCtooltip: [{
180
+ type: Input
181
+ }], TCdirection: [{
182
+ type: Input
183
+ }], onDocumentClick: [{
184
+ type: HostListener,
185
+ args: ['document:click', ['$event']]
186
+ }], onMouseOver: [{
141
187
  type: HostListener,
142
188
  args: ['mouseover', ['$event']]
143
189
  }], onMouseOut: [{
144
190
  type: HostListener,
145
191
  args: ['mouseout', ['$event']]
146
- }], TCtooltip: [{
147
- type: Input
148
- }], TCdirection: [{
149
- type: Input
192
+ }], onClick: [{
193
+ type: HostListener,
194
+ args: ['click', ['$event']]
150
195
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLEtBQUssRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTXJGLE1BQU0sT0FBTyx3QkFBd0I7SUFNSSxXQUFXLENBQUMsS0FBaUI7UUFFbEUsSUFBSSxlQUFlLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUMsQ0FBQTtRQUVELElBQUksZ0JBQWdCLEdBQUcsR0FBRyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLE1BQU0sWUFBWSxHQUFTLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzlFLElBQUcsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDLENBQUM7Z0JBQzFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBRSxVQUFlLEVBQUUsRUFBRTtvQkFDeEMsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQUMsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFBO1FBRUQsZ0JBQWdCLENBQUM7UUFFakIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLFdBQVcsQ0FBQztZQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxNQUFNLElBQUksR0FBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO1lBQzdELG1HQUFtRztZQUNuRyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztZQUMzQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQWEsQ0FBQztnQkFDbkMsTUFBTSxHQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQzlCLEtBQUssR0FBSyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQy9CLENBQUM7WUFFRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUUsSUFBSSxDQUFDO1lBQ3hELE1BQU0sSUFBSSxHQUFHLEdBQUcsYUFBYSxHQUFHLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBRSxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHdCQUF3QixTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFFaEMsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUVuRSxPQUFPLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUUvRSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7b0JBQ3hELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztZQUNILENBQUM7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFcUMsVUFBVSxDQUFDLEtBQWlCO1FBQ2hFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sWUFBWSxHQUFTLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzlFLElBQUcsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDLENBQUM7WUFDMUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFFLFVBQWUsRUFBRSxFQUFFO3dCQUN4QyxJQUFJLFVBQVUsRUFBRSxDQUFDOzRCQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFBQyxDQUFDO29CQUMxQyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFHRCxJQUFhLFNBQVMsQ0FBRSxPQUFZO1FBQ2xDLElBQUksT0FBTyxFQUFDLENBQUM7WUFDWCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLENBQUM7aUJBQUksQ0FBQztnQkFDSixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFHRCxJQUFhLFdBQVcsQ0FBRSxTQUFjO1FBQ3RDLElBQUksU0FBUyxFQUFDLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQ1UsRUFBYyxFQUNkLFFBQW1CO1FBRG5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbkc3QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUF3RmYsZUFBVSxHQUF3QyxLQUFLLENBQUM7SUFVN0QsQ0FBQztJQUdKLFVBQVUsQ0FBQyxNQUFlO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNsRyxDQUFDO0lBRUQsYUFBYSxDQUFDLEVBQVUsRUFBRSxNQUFjLEVBQUUsS0FBYSxFQUFFLGFBQXFCLEVBQUUsYUFBcUIsRUFBRSxTQUFpQjtRQUN0SCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxPQUFPLEdBQVEsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQzVDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFFMUM7Ozs7OztjQU1FO1lBRUYsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1osSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1osTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBQyxDQUFDLENBQUMsQ0FBQztZQUV4RSxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsR0FBRyxHQUFHLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDNUMsR0FBRyxHQUFHLGVBQWUsQ0FBQztZQUN4QixDQUFDO1lBRUQsSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzNCLEdBQUcsR0FBRyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3BDLEdBQUcsR0FBRyxlQUFlLENBQUM7WUFDeEIsQ0FBQztZQUVELElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixHQUFHLEdBQUcsYUFBYSxHQUFHLENBQUMsY0FBYyxHQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxHQUFHLEdBQUcsZUFBZSxHQUFHLGFBQWEsR0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekQsQ0FBQztZQUVELElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixHQUFHLEdBQUcsYUFBYSxHQUFHLENBQUMsY0FBYyxHQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxHQUFHLEdBQUcsZUFBZSxHQUFHLGFBQWEsR0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekQsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F6SlUsd0JBQXdCO2tHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO3VHQU93QyxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE4REMsVUFBVTtzQkFBL0MsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZXZCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBVU8sV0FBVztzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBJbnB1dCwgSG9zdExpc3RlbmVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tUQ3Rvb2x0aXBdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlUb29sdGlwRGlyZWN0aXZlIHtcclxuXHJcbiAgcmVtb3ZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGluZm9fdGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicsIFsnJGV2ZW50J10pIG9uTW91c2VPdmVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcblxyXG4gICAgbGV0IGhvdmVySW5DYWxsYmFjayA9ICgpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaG92ZXJPdXRDYWxsYmFjayA9ICgpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUgPSB0cnVlOyBcclxuICAgICAgY29uc3QgY3VzdG9tRGl2QWxsID0gPGFueT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRjLWRpcmVjdGl2ZS10b29sdGlwJyk7XHJcbiAgICAgIGlmKGN1c3RvbURpdkFsbCAmJiBjdXN0b21EaXZBbGwubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgY3VzdG9tRGl2QWxsLmZvckVhY2goKCBfY3VzdG9tRGl2OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmKCBfY3VzdG9tRGl2ICl7IF9jdXN0b21EaXYucmVtb3ZlKCk7IH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhvdmVyT3V0Q2FsbGJhY2s7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdz8uc2Nyb2xsWSB8fCB3aW5kb3c/LnBhZ2VZT2Zmc2V0O1xyXG4gICAgICBjb25zdCB0b29sdGlwID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29uc3QgcmVjdCAgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAvLyBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ/LmF0dHJpYnV0ZXNbJ25nLXJlZmxlY3QtLXQtY2RpcmVjdGlvbiddPy52YWx1ZSB8fCAndG9wJztcclxuICAgICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5fZGlyZWN0aW9uIHx8ICd0b3AnO1xyXG4gICAgICBjb25zdCBlbF9wb3NpdGlvbl94ID0gKHJlY3Q/LmxlZnQpID8gcGFyc2VJbnQocmVjdD8ubGVmdCkgOiAwO1xyXG4gICAgICBjb25zdCBlbF9wb3NpdGlvbl95ID0gKHJlY3Q/LnRvcCApID8gcGFyc2VJbnQocmVjdD8udG9wICArIHNjcm9sbFRvcCkgOiAwO1xyXG5cclxuICAgICAgbGV0IHdpZHRoID0gMDtcclxuICAgICAgbGV0IGhlaWdodCA9IDA7XHJcbiAgICAgIGlmKCBldmVudCAmJiBldmVudC50YXJnZXQgKXtcclxuICAgICAgICBjb25zdCBfZXZlbnQgPSBldmVudC50YXJnZXQgYXMgYW55O1xyXG4gICAgICAgIGhlaWdodCAgPSBfZXZlbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIHdpZHRoICAgPSBfZXZlbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHRvcCA9IGAkeyhlbF9wb3NpdGlvbl95IC0gKChoZWlnaHQvMikgKyAxMCkgKX1weGA7XHJcbiAgICAgIGNvbnN0IGxlZnQgPSBgJHtlbF9wb3NpdGlvbl94ICsgKHdpZHRoLzIpIH1weGA7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcCwgJ3RvcCcsICcwcHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwLCAnbGVmdCcsICcwcHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwLCAnb3BhY2l0eScsICcwJyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModG9vbHRpcCwgJ3RjLWRpcmVjdGl2ZS10b29sdGlwJyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModG9vbHRpcCwgYHRjLWRpcmVjdGl2ZS10b29sdGlwLSR7ZGlyZWN0aW9ufWApO1xyXG4gICAgICBjb25zdCBpZCA9IHRoaXMuZ2VuZXJhdGVJRCgpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0b29sdGlwLCAnaWQnLCBpZCk7XHJcbiAgICAgIGNvbnN0IHRleHROb2RlID0gdGhpcy5pbmZvX3RleHQ7XHJcblxyXG4gICAgICBpZiggdGV4dE5vZGUgIT09IHVuZGVmaW5lZCAmJiB0ZXh0Tm9kZSAhPT0gbnVsbCAmJiB0ZXh0Tm9kZSAhPT0gJycgKXtcclxuXHJcbiAgICAgICAgdG9vbHRpcC5pbm5lckhUTUwgPSB0ZXh0Tm9kZTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRvb2x0aXApOyAgICBcclxuICAgICAgICB0aGlzLnN0YXJ0X3Rvb2x0aXAoaWQsIGhlaWdodCwgd2lkdGgsIGVsX3Bvc2l0aW9uX3gsIGVsX3Bvc2l0aW9uX3ksIGRpcmVjdGlvbik7XHJcblxyXG4gICAgICAgIGlmICh0b29sdGlwKSB7XHJcbiAgICAgICAgICB0b29sdGlwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBob3ZlckluQ2FsbGJhY2spO1xyXG4gICAgICAgICAgdG9vbHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaG92ZXJPdXRDYWxsYmFjayk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH0gIFxyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW91dCcsIFsnJGV2ZW50J10pIG9uTW91c2VPdXQoZXZlbnQ6IE1vdXNlRXZlbnQpIHsgICBcclxuICAgIHRoaXMucmVtb3ZlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGN1c3RvbURpdkFsbCA9IDxhbnk+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50Yy1kaXJlY3RpdmUtdG9vbHRpcCcpO1xyXG4gICAgaWYoY3VzdG9tRGl2QWxsICYmIGN1c3RvbURpdkFsbC5sZW5ndGggPiAwKXtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYoIHRoaXMucmVtb3ZlICl7XHJcbiAgICAgICAgICBjdXN0b21EaXZBbGwuZm9yRWFjaCgoIF9jdXN0b21EaXY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiggX2N1c3RvbURpdiApeyBfY3VzdG9tRGl2LnJlbW92ZSgpOyB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDI1KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKSBzZXQgVEN0b29sdGlwICh0b29sdGlwOiBhbnkpe1xyXG4gICAgaWYgKHRvb2x0aXApe1xyXG4gICAgICBpZiggdHlwZW9mIHRvb2x0aXAgPT09ICdvYmplY3QnICl7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuaW5mb190ZXh0ID0gdG9vbHRpcDtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGlyZWN0aW9uOiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyA9ICd0b3AnO1xyXG4gIEBJbnB1dCgpIHNldCBUQ2RpcmVjdGlvbiAoZGlyZWN0aW9uOiBhbnkpe1xyXG4gICAgaWYgKGRpcmVjdGlvbil7XHJcbiAgICAgIHRoaXMuX2RpcmVjdGlvbiA9IGRpcmVjdGlvbjtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXHJcbiAgKSB7fVxyXG5cclxuXHJcbiAgZ2VuZXJhdGVJRCh0YXJnZXQ/OiBzdHJpbmcpOiBzdHJpbmd7XHJcbiAgICBjb25zdCByZWYgPSAodGFyZ2V0KSA/IGAtJHt0YXJnZXR9YCA6ICcnO1xyXG4gICAgcmV0dXJuIGB0Yy10b29sdGlwLSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogRGF0ZS5ub3coKSkpfSR7cmVmfWA7XHJcbiAgfVxyXG5cclxuICBzdGFydF90b29sdGlwKGlkOiBzdHJpbmcsIGhlaWdodDogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBlbF9wb3NpdGlvbl94OiBudW1iZXIsIGVsX3Bvc2l0aW9uX3k6IG51bWJlciwgZGlyZWN0aW9uOiBzdHJpbmcpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7ICAgICAgXHJcbiAgICAgIGNvbnN0IHRvb2x0aXA6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgY29uc3QgdG9vbHRpcF9oZWlnaHQgPSB0b29sdGlwLmNsaWVudEhlaWdodDtcclxuICAgICAgY29uc3QgdG9vbHRpcF93aWR0aCA9IHRvb2x0aXAuY2xpZW50V2lkdGg7XHJcblxyXG4gICAgICAvKlxyXG4gICAgICBjb25zb2xlLmxvZygnYWx0dXJhIGRvIHRhcmdldDogJywgaGVpZ2h0KTtcclxuICAgICAgY29uc29sZS5sb2coJ2xhcmd1cmEgZG8gdGFyZ2V0OiAnLCB3aWR0aCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdlbF9wb3NpdGlvbl94IGRvIHRhcmdldDogJywgZWxfcG9zaXRpb25feCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdlbF9wb3NpdGlvbl95IGRvIHRhcmdldDogJywgZWxfcG9zaXRpb25feSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkaXJlY3Rpb24gZG8gdG9vbHRpcDogJywgZGlyZWN0aW9uKTtcclxuICAgICAgKi9cclxuXHJcbiAgICAgIGxldCBwX3kgPSAwO1xyXG4gICAgICBsZXQgcF94ID0gMDtcclxuICAgICAgY29uc3QgY2VudGVyX3Bvc2l0aW9uID0gKGVsX3Bvc2l0aW9uX3ggKyAod2lkdGgvMikpIC0gKHRvb2x0aXBfd2lkdGgvMik7XHJcblxyXG4gICAgICBpZiggZGlyZWN0aW9uID09PSAndG9wJyApe1xyXG4gICAgICAgIHBfeSA9IChlbF9wb3NpdGlvbl95IC0gdG9vbHRpcF9oZWlnaHQpIC0gMTU7XHJcbiAgICAgICAgcF94ID0gY2VudGVyX3Bvc2l0aW9uO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiggZGlyZWN0aW9uID09PSAnYm90dG9tJyApe1xyXG4gICAgICAgIHBfeSA9IChlbF9wb3NpdGlvbl95ICsgaGVpZ2h0KSArIDE1O1xyXG4gICAgICAgIHBfeCA9IGNlbnRlcl9wb3NpdGlvbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIGRpcmVjdGlvbiA9PT0gJ2xlZnQnICl7XHJcbiAgICAgICAgcF95ID0gZWxfcG9zaXRpb25feSAtICh0b29sdGlwX2hlaWdodC8yKSArIChoZWlnaHQvMik7XHJcbiAgICAgICAgcF94ID0gY2VudGVyX3Bvc2l0aW9uIC0gdG9vbHRpcF93aWR0aC8yIC0gd2lkdGgvMiAtIDE1O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiggZGlyZWN0aW9uID09PSAncmlnaHQnICl7XHJcbiAgICAgICAgcF95ID0gZWxfcG9zaXRpb25feSAtICh0b29sdGlwX2hlaWdodC8yKSArIChoZWlnaHQvMik7XHJcbiAgICAgICAgcF94ID0gY2VudGVyX3Bvc2l0aW9uICsgdG9vbHRpcF93aWR0aC8yICsgd2lkdGgvMiArIDE1O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRvb2x0aXAsICd0b3AnLCBgJHtwX3l9cHhgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwLCAnbGVmdCcsIGAke3BfeH1weGApO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRvb2x0aXAsICd0Yy10b29sdGlwLWZhZGUtaW4nKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59Il19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3RGLE1BQU0sT0FBTyx3QkFBd0I7SUFVbkMsSUFBYSxTQUFTLENBQUMsT0FBWTtRQUVqQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzVELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQy9DLDZDQUE2QztnQkFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFFL0MseUVBQXlFO2dCQUN6RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFhLFdBQVcsQ0FBQyxTQUFjO1FBQ3JDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQ1UsRUFBYyxFQUNkLFFBQW1CO1FBRG5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBOUJwQixnQkFBVyxHQUFzQixPQUFPLENBQUM7UUFDbEQsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLG1CQUFjLEdBQVksS0FB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LEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFdkUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzlCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsRCxHQUFHLEdBQUcsZUFBZSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDeEMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNDLEdBQUcsR0FBRyxlQUFlLENBQUM7UUFDeEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN0QyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN2QyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxD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QUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7dUdBR1UsV0FBVztzQkFBbkIsS0FBSztnQkFRTyxTQUFTO3NCQUFyQixLQUFLO2dCQWNPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBV3NDLGVBQWU7c0JBQTFELFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU0gsV0FBVztzQkFBakQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBT0MsVUFBVTtzQkFBL0MsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU0QsT0FBTztzQkFBekMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgSW5wdXQsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbVEN0b29sdGlwXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRDbG91ZFVpVG9vbHRpcERpcmVjdGl2ZSB7XHJcblxyXG4gIEBJbnB1dCgpIHRvb2x0aXBNb2RlOiAnY2xpY2snIHwgJ2hvdmVyJyA9ICdob3Zlcic7XHJcbiAgcmVtb3ZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaW5mb190ZXh0OiBzdHJpbmcgPSAnJztcclxuICB0b29sdGlwVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdG9vbHRpcEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX2RpcmVjdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAndG9wJztcclxuXHJcbiAgQElucHV0KCkgc2V0IFRDdG9vbHRpcCh0b29sdGlwOiBhbnkpIHtcclxuXHJcbiAgICBpZiAodG9vbHRpcCkge1xyXG4gICAgICB0aGlzLmluZm9fdGV4dCA9IHR5cGVvZiB0b29sdGlwID09PSAnb2JqZWN0JyA/ICcnIDogdG9vbHRpcDtcclxuICAgICAgaWYgKHRoaXMudG9vbHRpcFZpc2libGUgJiYgdGhpcy50b29sdGlwRWxlbWVudCkge1xyXG4gICAgICAgIC8vIEF0dWFsaXphIG8gY29udGXDumRvIGRvIHRvb2x0aXAgZGlyZXRhbWVudGVcclxuICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuaW5mb190ZXh0O1xyXG5cclxuICAgICAgICAvLyBSZWFwbGljYSBhIHBvc2nDp8OjbyBjYWxjdWxhZGEgYW50ZXJpb3JtZW50ZSBwYXJhIG1hbnRlciBhIGNlbnRyYWxpemHDp8Ojb1xyXG4gICAgICAgIHRoaXMucmVwb3NpdGlvblRvb2x0aXAoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IFRDZGlyZWN0aW9uKGRpcmVjdGlvbjogYW55KSB7XHJcbiAgICBpZiAoZGlyZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuX2RpcmVjdGlvbiA9IGRpcmVjdGlvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkge31cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKSBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXBNb2RlID09PSAnY2xpY2snICYmIHRoaXMudG9vbHRpcFZpc2libGUgJiYgdGhpcy5pbmZvX3RleHQpIHtcclxuICAgICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpIHx8ICh0aGlzLnRvb2x0aXBFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xyXG4gICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZVRvb2x0aXAoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdmVyJywgWyckZXZlbnQnXSkgb25Nb3VzZU92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXBNb2RlID09PSAnaG92ZXInICYmICF0aGlzLnRvb2x0aXBWaXNpYmxlICYmIHRoaXMuaW5mb190ZXh0KSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcChldmVudCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcFZpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdXQnLCBbJyRldmVudCddKSBvbk1vdXNlT3V0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy50b29sdGlwVmlzaWJsZSkge1xyXG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlO1xyXG4gICAgICBpZiAoIXRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhyZWxhdGVkVGFyZ2V0KSAmJiAhdGhpcy50b29sdGlwRWxlbWVudD8uY29udGFpbnMocmVsYXRlZFRhcmdldCkpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZVRvb2x0aXAoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKSBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy50b29sdGlwTW9kZSA9PT0gJ2NsaWNrJykge1xyXG4gICAgICBpZiAodGhpcy50b29sdGlwVmlzaWJsZSkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlVG9vbHRpcCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcChldmVudCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50b29sdGlwVmlzaWJsZSA9ICF0aGlzLnRvb2x0aXBWaXNpYmxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVUb29sdGlwKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB3aW5kb3c/LnNjcm9sbFkgfHwgd2luZG93Py5wYWdlWU9mZnNldDtcclxuICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLl9kaXJlY3Rpb24gfHwgJ3RvcCc7XHJcbiAgICBjb25zdCBlbF9wb3NpdGlvbl94ID0gcmVjdD8ubGVmdCB8fCAwO1xyXG4gICAgY29uc3QgZWxfcG9zaXRpb25feSA9IHJlY3Q/LnRvcCArIHNjcm9sbFRvcCB8fCAwO1xyXG5cclxuICAgIGxldCB3aWR0aCA9IDA7XHJcbiAgICBsZXQgaGVpZ2h0ID0gMDtcclxuICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQpIHtcclxuICAgICAgY29uc3QgX2V2ZW50ID0gZXZlbnQudGFyZ2V0IGFzIGFueTtcclxuICAgICAgaGVpZ2h0ID0gX2V2ZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgd2lkdGggPSBfZXZlbnQub2Zmc2V0V2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwLCAndG9wJywgJzBweCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwLCAnbGVmdCcsICcwcHgnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcCwgJ29wYWNpdHknLCAnMCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0b29sdGlwLCAndGMtZGlyZWN0aXZlLXRvb2x0aXAnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModG9vbHRpcCwgYHRjLWRpcmVjdGl2ZS10b29sdGlwLSR7ZGlyZWN0aW9ufWApO1xyXG4gICAgY29uc3QgaWQgPSB0aGlzLmdlbmVyYXRlSUQoKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRvb2x0aXAsICdpZCcsIGlkKTtcclxuICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGhpcy5pbmZvX3RleHQ7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRvb2x0aXApO1xyXG4gICAgdGhpcy5zdGFydF90b29sdGlwKGlkLCBoZWlnaHQsIHdpZHRoLCBlbF9wb3NpdGlvbl94LCBlbF9wb3NpdGlvbl95LCBkaXJlY3Rpb24pO1xyXG4gICAgdGhpcy50b29sdGlwRWxlbWVudCA9IHRvb2x0aXA7XHJcblxyXG4gICAgdG9vbHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4gdGhpcy50b29sdGlwVmlzaWJsZSA9IHRydWUpO1xyXG4gICAgdG9vbHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4gdGhpcy5yZW1vdmVUb29sdGlwKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVUb29sdGlwKCkge1xyXG4gICAgY29uc3QgY3VzdG9tRGl2QWxsID0gPGFueT5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGMtZGlyZWN0aXZlLXRvb2x0aXAnKTtcclxuICAgIGlmIChjdXN0b21EaXZBbGwgJiYgY3VzdG9tRGl2QWxsLmxlbmd0aCA+IDApIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY3VzdG9tRGl2QWxsLmZvckVhY2goKF9jdXN0b21EaXY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKF9jdXN0b21EaXYpIHsgX2N1c3RvbURpdi5yZW1vdmUoKTsgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCAyNSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnRvb2x0aXBFbGVtZW50ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVwb3NpdGlvblRvb2x0aXAoKSB7XHJcbiAgICBpZiAoIXRoaXMudG9vbHRpcEVsZW1lbnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCByZWN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgIGNvbnN0IHRvb2x0aXBIZWlnaHQgPSB0aGlzLnRvb2x0aXBFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgIGNvbnN0IHRvb2x0aXBXaWR0aCA9IHRoaXMudG9vbHRpcEVsZW1lbnQuY2xpZW50V2lkdGg7XHJcblxyXG4gICAgbGV0IHBfeSA9IDA7XHJcbiAgICBsZXQgcF94ID0gMDtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdz8uc2Nyb2xsWSB8fCB3aW5kb3c/LnBhZ2VZT2Zmc2V0O1xyXG4gICAgY29uc3QgY2VudGVyX3Bvc2l0aW9uID0gKHJlY3QubGVmdCArICh3aWR0aCAvIDIpKSAtICh0b29sdGlwV2lkdGggLyAyKTtcclxuXHJcbiAgICBpZiAodGhpcy5fZGlyZWN0aW9uID09PSAndG9wJykge1xyXG4gICAgICBwX3kgPSAocmVjdC50b3AgKyBzY3JvbGxUb3AgLSB0b29sdGlwSGVpZ2h0KSAtIDE1O1xyXG4gICAgICBwX3ggPSBjZW50ZXJfcG9zaXRpb247XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2RpcmVjdGlvbiA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgcF95ID0gKHJlY3QudG9wICsgc2Nyb2xsVG9wICsgaGVpZ2h0KSArIDE1O1xyXG4gICAgICBwX3ggPSBjZW50ZXJfcG9zaXRpb247XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2RpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgIHBfeSA9IChyZWN0LnRvcCArIHNjcm9sbFRvcCAtICh0b29sdGlwSGVpZ2h0IC8gMikgKyAoaGVpZ2h0IC8gMikpO1xyXG4gICAgICBwX3ggPSByZWN0LmxlZnQgLSB0b29sdGlwV2lkdGggLSAxNTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5fZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XHJcbiAgICAgIHBfeSA9IChyZWN0LnRvcCArIHNjcm9sbFRvcCAtICh0b29sdGlwSGVpZ2h0IC8gMikgKyAoaGVpZ2h0IC8gMikpO1xyXG4gICAgICBwX3ggPSByZWN0LmxlZnQgKyB3aWR0aCArIDE1O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwRWxlbWVudCwgJ3RvcCcsIGAke3BfeX1weGApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXBFbGVtZW50LCAnbGVmdCcsIGAke3BfeH1weGApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUlEKHRhcmdldD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZWYgPSB0YXJnZXQgPyBgLSR7dGFyZ2V0fWAgOiAnJztcclxuICAgIHJldHVybiBgdGMtdG9vbHRpcC0ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIERhdGUubm93KCkpKX0ke3JlZn1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydF90b29sdGlwKGlkOiBzdHJpbmcsIGhlaWdodDogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBlbF9wb3NpdGlvbl94OiBudW1iZXIsIGVsX3Bvc2l0aW9uX3k6IG51bWJlciwgZGlyZWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB0b29sdGlwOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgIGNvbnN0IHRvb2x0aXBfaGVpZ2h0ID0gdG9vbHRpcC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgIGNvbnN0IHRvb2x0aXBfd2lkdGggPSB0b29sdGlwLmNsaWVudFdpZHRoO1xyXG5cclxuICAgICAgbGV0IHBfeSA9IDA7XHJcbiAgICAgIGxldCBwX3ggPSAwO1xyXG4gICAgICBjb25zdCBjZW50ZXJfcG9zaXRpb24gPSAoZWxfcG9zaXRpb25feCArICh3aWR0aCAvIDIpKSAtICh0b29sdGlwX3dpZHRoIC8gMik7XHJcblxyXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndG9wJykge1xyXG4gICAgICAgIHBfeSA9IChlbF9wb3NpdGlvbl95IC0gdG9vbHRpcF9oZWlnaHQpIC0gMTU7XHJcbiAgICAgICAgcF94ID0gY2VudGVyX3Bvc2l0aW9uO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAnYm90dG9tJykge1xyXG4gICAgICAgIHBfeSA9IChlbF9wb3NpdGlvbl95ICsgaGVpZ2h0KSArIDE1O1xyXG4gICAgICAgIHBfeCA9IGNlbnRlcl9wb3NpdGlvbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgcF95ID0gZWxfcG9zaXRpb25feSAtICh0b29sdGlwX2hlaWdodCAvIDIpICsgKGhlaWdodCAvIDIpO1xyXG4gICAgICAgIHBfeCA9IGNlbnRlcl9wb3NpdGlvbiAtIHRvb2x0aXBfd2lkdGggLyAyIC0gd2lkdGggLyAyIC0gMTU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcclxuICAgICAgICBwX3kgPSBlbF9wb3NpdGlvbl95IC0gKHRvb2x0aXBfaGVpZ2h0IC8gMikgKyAoaGVpZ2h0IC8gMik7XHJcbiAgICAgICAgcF94ID0gY2VudGVyX3Bvc2l0aW9uICsgdG9vbHRpcF93aWR0aCAvIDIgKyB3aWR0aCAvIDIgKyAxNTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwLCAndG9wJywgYCR7cF95fXB4YCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcCwgJ2xlZnQnLCBgJHtwX3h9cHhgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0b29sdGlwLCAndGMtdG9vbHRpcC1mYWRlLWluJyk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -4688,79 +4688,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
4688
4688
  }] } });
4689
4689
 
4690
4690
  class TCloudUiTooltipDirective {
4691
- onMouseOver(event) {
4692
- let hoverInCallback = () => {
4693
- this.remove = false;
4694
- };
4695
- let hoverOutCallback = () => {
4696
- this.remove = true;
4697
- const customDivAll = document.querySelectorAll('.tc-directive-tooltip');
4698
- if (customDivAll && customDivAll.length > 0) {
4699
- customDivAll.forEach((_customDiv) => {
4700
- if (_customDiv) {
4701
- _customDiv.remove();
4702
- }
4703
- });
4704
- }
4705
- };
4706
- hoverOutCallback;
4707
- setTimeout(() => {
4708
- const scrollTop = window?.scrollY || window?.pageYOffset;
4709
- const tooltip = this.renderer.createElement('div');
4710
- const rect = this.el.nativeElement?.getBoundingClientRect();
4711
- // const direction = this.el.nativeElement?.attributes['ng-reflect--t-cdirection']?.value || 'top';
4712
- const direction = this._direction || 'top';
4713
- const el_position_x = (rect?.left) ? parseInt(rect?.left) : 0;
4714
- const el_position_y = (rect?.top) ? parseInt(rect?.top + scrollTop) : 0;
4715
- let width = 0;
4716
- let height = 0;
4717
- if (event && event.target) {
4718
- const _event = event.target;
4719
- height = _event.offsetHeight;
4720
- width = _event.offsetWidth;
4721
- }
4722
- const top = `${(el_position_y - ((height / 2) + 10))}px`;
4723
- const left = `${el_position_x + (width / 2)}px`;
4724
- this.renderer.setStyle(tooltip, 'top', '0px');
4725
- this.renderer.setStyle(tooltip, 'left', '0px');
4726
- this.renderer.setStyle(tooltip, 'opacity', '0');
4727
- this.renderer.addClass(tooltip, 'tc-directive-tooltip');
4728
- this.renderer.addClass(tooltip, `tc-directive-tooltip-${direction}`);
4729
- const id = this.generateID();
4730
- this.renderer.setAttribute(tooltip, 'id', id);
4731
- const textNode = this.info_text;
4732
- if (textNode !== undefined && textNode !== null && textNode !== '') {
4733
- tooltip.innerHTML = textNode;
4734
- this.renderer.appendChild(document.body, tooltip);
4735
- this.start_tooltip(id, height, width, el_position_x, el_position_y, direction);
4736
- if (tooltip) {
4737
- tooltip.addEventListener('mouseenter', hoverInCallback);
4738
- tooltip.addEventListener('mouseleave', hoverOutCallback);
4739
- }
4740
- }
4741
- });
4742
- }
4743
- onMouseOut(event) {
4744
- this.remove = true;
4745
- const customDivAll = document.querySelectorAll('.tc-directive-tooltip');
4746
- if (customDivAll && customDivAll.length > 0) {
4747
- setTimeout(() => {
4748
- if (this.remove) {
4749
- customDivAll.forEach((_customDiv) => {
4750
- if (_customDiv) {
4751
- _customDiv.remove();
4752
- }
4753
- });
4754
- }
4755
- }, 25);
4756
- }
4757
- }
4758
4691
  set TCtooltip(tooltip) {
4759
4692
  if (tooltip) {
4760
- if (typeof tooltip === 'object') {
4761
- }
4762
- else {
4763
- this.info_text = tooltip;
4693
+ this.info_text = typeof tooltip === 'object' ? '' : tooltip;
4694
+ if (this.tooltipVisible && this.tooltipElement) {
4695
+ // Atualiza o conteúdo do tooltip diretamente
4696
+ this.tooltipElement.innerHTML = this.info_text;
4697
+ // Reaplica a posição calculada anteriormente para manter a centralização
4698
+ this.repositionTooltip();
4764
4699
  }
4765
4700
  }
4766
4701
  }
@@ -4772,12 +4707,121 @@ class TCloudUiTooltipDirective {
4772
4707
  constructor(el, renderer) {
4773
4708
  this.el = el;
4774
4709
  this.renderer = renderer;
4710
+ this.tooltipMode = 'hover';
4775
4711
  this.remove = false;
4776
4712
  this.info_text = '';
4713
+ this.tooltipVisible = false;
4714
+ this.tooltipElement = null;
4777
4715
  this._direction = 'top';
4778
4716
  }
4717
+ onDocumentClick(event) {
4718
+ if (this.tooltipMode === 'click' && this.tooltipVisible && this.info_text) {
4719
+ const clickedInside = this.el.nativeElement.contains(event.target) || (this.tooltipElement?.contains(event.target));
4720
+ if (!clickedInside) {
4721
+ this.removeTooltip();
4722
+ }
4723
+ }
4724
+ }
4725
+ onMouseOver(event) {
4726
+ if (this.tooltipMode === 'hover' && !this.tooltipVisible && this.info_text) {
4727
+ this.createTooltip(event);
4728
+ this.tooltipVisible = true;
4729
+ }
4730
+ }
4731
+ onMouseOut(event) {
4732
+ if (this.tooltipVisible) {
4733
+ const relatedTarget = event.relatedTarget;
4734
+ if (!this.el.nativeElement.contains(relatedTarget) && !this.tooltipElement?.contains(relatedTarget)) {
4735
+ this.removeTooltip();
4736
+ }
4737
+ }
4738
+ }
4739
+ onClick(event) {
4740
+ if (this.tooltipMode === 'click') {
4741
+ if (this.tooltipVisible) {
4742
+ this.removeTooltip();
4743
+ }
4744
+ else {
4745
+ this.createTooltip(event);
4746
+ }
4747
+ this.tooltipVisible = !this.tooltipVisible;
4748
+ }
4749
+ }
4750
+ createTooltip(event) {
4751
+ const scrollTop = window?.scrollY || window?.pageYOffset;
4752
+ const tooltip = this.renderer.createElement('div');
4753
+ const rect = this.el.nativeElement?.getBoundingClientRect();
4754
+ const direction = this._direction || 'top';
4755
+ const el_position_x = rect?.left || 0;
4756
+ const el_position_y = rect?.top + scrollTop || 0;
4757
+ let width = 0;
4758
+ let height = 0;
4759
+ if (event && event.target) {
4760
+ const _event = event.target;
4761
+ height = _event.offsetHeight;
4762
+ width = _event.offsetWidth;
4763
+ }
4764
+ this.renderer.setStyle(tooltip, 'top', '0px');
4765
+ this.renderer.setStyle(tooltip, 'left', '0px');
4766
+ this.renderer.setStyle(tooltip, 'opacity', '0');
4767
+ this.renderer.addClass(tooltip, 'tc-directive-tooltip');
4768
+ this.renderer.addClass(tooltip, `tc-directive-tooltip-${direction}`);
4769
+ const id = this.generateID();
4770
+ this.renderer.setAttribute(tooltip, 'id', id);
4771
+ tooltip.innerHTML = this.info_text;
4772
+ this.renderer.appendChild(document.body, tooltip);
4773
+ this.start_tooltip(id, height, width, el_position_x, el_position_y, direction);
4774
+ this.tooltipElement = tooltip;
4775
+ tooltip.addEventListener('mouseenter', () => this.tooltipVisible = true);
4776
+ tooltip.addEventListener('mouseleave', () => this.removeTooltip());
4777
+ }
4778
+ removeTooltip() {
4779
+ const customDivAll = document.querySelectorAll('.tc-directive-tooltip');
4780
+ if (customDivAll && customDivAll.length > 0) {
4781
+ setTimeout(() => {
4782
+ customDivAll.forEach((_customDiv) => {
4783
+ if (_customDiv) {
4784
+ _customDiv.remove();
4785
+ }
4786
+ });
4787
+ }, 25);
4788
+ }
4789
+ this.tooltipVisible = false;
4790
+ this.tooltipElement = null;
4791
+ }
4792
+ repositionTooltip() {
4793
+ if (!this.tooltipElement)
4794
+ return;
4795
+ const rect = this.el.nativeElement?.getBoundingClientRect();
4796
+ const height = this.el.nativeElement.offsetHeight;
4797
+ const width = this.el.nativeElement.offsetWidth;
4798
+ const tooltipHeight = this.tooltipElement.clientHeight;
4799
+ const tooltipWidth = this.tooltipElement.clientWidth;
4800
+ let p_y = 0;
4801
+ let p_x = 0;
4802
+ const scrollTop = window?.scrollY || window?.pageYOffset;
4803
+ const center_position = (rect.left + (width / 2)) - (tooltipWidth / 2);
4804
+ if (this._direction === 'top') {
4805
+ p_y = (rect.top + scrollTop - tooltipHeight) - 15;
4806
+ p_x = center_position;
4807
+ }
4808
+ else if (this._direction === 'bottom') {
4809
+ p_y = (rect.top + scrollTop + height) + 15;
4810
+ p_x = center_position;
4811
+ }
4812
+ else if (this._direction === 'left') {
4813
+ p_y = (rect.top + scrollTop - (tooltipHeight / 2) + (height / 2));
4814
+ p_x = rect.left - tooltipWidth - 15;
4815
+ }
4816
+ else if (this._direction === 'right') {
4817
+ p_y = (rect.top + scrollTop - (tooltipHeight / 2) + (height / 2));
4818
+ p_x = rect.left + width + 15;
4819
+ }
4820
+ this.renderer.setStyle(this.tooltipElement, 'top', `${p_y}px`);
4821
+ this.renderer.setStyle(this.tooltipElement, 'left', `${p_x}px`);
4822
+ }
4779
4823
  generateID(target) {
4780
- const ref = (target) ? `-${target}` : '';
4824
+ const ref = target ? `-${target}` : '';
4781
4825
  return `tc-tooltip-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}${ref}`;
4782
4826
  }
4783
4827
  start_tooltip(id, height, width, el_position_x, el_position_y, direction) {
@@ -4785,13 +4829,6 @@ class TCloudUiTooltipDirective {
4785
4829
  const tooltip = document.getElementById(id);
4786
4830
  const tooltip_height = tooltip.clientHeight;
4787
4831
  const tooltip_width = tooltip.clientWidth;
4788
- /*
4789
- console.log('altura do target: ', height);
4790
- console.log('largura do target: ', width);
4791
- console.log('el_position_x do target: ', el_position_x);
4792
- console.log('el_position_y do target: ', el_position_y);
4793
- console.log('direction do tooltip: ', direction);
4794
- */
4795
4832
  let p_y = 0;
4796
4833
  let p_x = 0;
4797
4834
  const center_position = (el_position_x + (width / 2)) - (tooltip_width / 2);
@@ -4817,23 +4854,31 @@ class TCloudUiTooltipDirective {
4817
4854
  });
4818
4855
  }
4819
4856
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: TCloudUiTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
4820
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: TCloudUiTooltipDirective, selector: "[TCtooltip]", inputs: { TCtooltip: "TCtooltip", TCdirection: "TCdirection" }, host: { listeners: { "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)" } }, ngImport: i0 }); }
4857
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: TCloudUiTooltipDirective, selector: "[TCtooltip]", inputs: { tooltipMode: "tooltipMode", TCtooltip: "TCtooltip", TCdirection: "TCdirection" }, host: { listeners: { "document:click": "onDocumentClick($event)", "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)", "click": "onClick($event)" } }, ngImport: i0 }); }
4821
4858
  }
4822
4859
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: TCloudUiTooltipDirective, decorators: [{
4823
4860
  type: Directive,
4824
4861
  args: [{
4825
4862
  selector: '[TCtooltip]'
4826
4863
  }]
4827
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { onMouseOver: [{
4864
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { tooltipMode: [{
4865
+ type: Input
4866
+ }], TCtooltip: [{
4867
+ type: Input
4868
+ }], TCdirection: [{
4869
+ type: Input
4870
+ }], onDocumentClick: [{
4871
+ type: HostListener,
4872
+ args: ['document:click', ['$event']]
4873
+ }], onMouseOver: [{
4828
4874
  type: HostListener,
4829
4875
  args: ['mouseover', ['$event']]
4830
4876
  }], onMouseOut: [{
4831
4877
  type: HostListener,
4832
4878
  args: ['mouseout', ['$event']]
4833
- }], TCtooltip: [{
4834
- type: Input
4835
- }], TCdirection: [{
4836
- type: Input
4879
+ }], onClick: [{
4880
+ type: HostListener,
4881
+ args: ['click', ['$event']]
4837
4882
  }] } });
4838
4883
 
4839
4884
  class TCloudUiElCopyDirective {