@ng-nest/ui 16.0.9 → 16.0.10
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.
- package/drag/drag.directive.d.ts +14 -0
- package/drag/drag.module.d.ts +8 -0
- package/drag/drag.property.d.ts +26 -0
- package/drag/index.d.ts +5 -0
- package/drag/public-api.d.ts +3 -0
- package/esm2022/drag/drag.directive.mjs +71 -0
- package/esm2022/drag/drag.module.mjs +19 -0
- package/esm2022/drag/drag.property.mjs +32 -0
- package/esm2022/drag/ng-nest-ui-drag.mjs +5 -0
- package/esm2022/drag/public-api.mjs +4 -0
- package/esm2022/index.mjs +2 -1
- package/esm2022/input/input.component.mjs +3 -3
- package/esm2022/input/input.property.mjs +12 -2
- package/esm2022/input-number/input-number.component.mjs +40 -15
- package/esm2022/select/select.component.mjs +3 -4
- package/esm2022/slider-select/slider-select.component.mjs +248 -49
- package/esm2022/slider-select/slider-select.module.mjs +29 -4
- package/esm2022/slider-select/slider-select.property.mjs +21 -2
- package/esm2022/table/public-api.mjs +1 -2
- package/esm2022/table/table-head.component.mjs +4 -4
- package/esm2022/table/table.module.mjs +9 -8
- package/esm2022/tooltip/tooltip.directive.mjs +5 -3
- package/esm2022/tree/tree.component.mjs +3 -1
- package/esm2022/tree-select/tree-select.component.mjs +2 -2
- package/fesm2022/ng-nest-ui-drag.mjs +119 -0
- package/fesm2022/ng-nest-ui-drag.mjs.map +1 -0
- package/fesm2022/ng-nest-ui-input-number.mjs +40 -16
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +13 -3
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +2 -3
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +296 -54
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +15 -84
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +4 -2
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +2 -2
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +2 -0
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui.mjs +1 -0
- package/fesm2022/ng-nest-ui.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/input/input.property.d.ts +11 -1
- package/input-number/input-number.component.d.ts +6 -1
- package/package.json +78 -72
- package/slider-select/slider-select.component.d.ts +33 -16
- package/slider-select/slider-select.module.d.ts +3 -1
- package/slider-select/slider-select.property.d.ts +51 -3
- package/table/public-api.d.ts +0 -1
- package/table/table.module.d.ts +18 -18
- package/esm2022/table/drag.directive.mjs +0 -78
- package/table/drag.directive.d.ts +0 -27
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { XTooltipDirective } from '@ng-nest/ui/tooltip';
|
|
2
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild } from '@angular/core';
|
|
2
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, HostBinding, ViewChildren } from '@angular/core';
|
|
3
3
|
import { XSliderSelectProperty, XSliderSelectPrefix } from './slider-select.property';
|
|
4
|
-
import { XIsEmpty, XIsUndefined, XResize, XClearClass } from '@ng-nest/ui/core';
|
|
4
|
+
import { XIsEmpty, XIsUndefined, XResize, XClearClass, XIsNumber, XIsArray, XIsNull } from '@ng-nest/ui/core';
|
|
5
|
+
import { CdkDrag } from '@angular/cdk/drag-drop';
|
|
5
6
|
import { Subject } from 'rxjs';
|
|
6
7
|
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
7
8
|
import { XValueAccessor } from '@ng-nest/ui/base-form';
|
|
@@ -10,14 +11,26 @@ import * as i1 from "@ng-nest/ui/core";
|
|
|
10
11
|
import * as i2 from "@angular/common";
|
|
11
12
|
import * as i3 from "@angular/cdk/drag-drop";
|
|
12
13
|
import * as i4 from "@ng-nest/ui/tooltip";
|
|
14
|
+
import * as i5 from "@ng-nest/ui/outlet";
|
|
13
15
|
class XSliderSelectComponent extends XSliderSelectProperty {
|
|
16
|
+
get getVertical() {
|
|
17
|
+
return this.vertical;
|
|
18
|
+
}
|
|
14
19
|
get requiredIsEmpty() {
|
|
15
20
|
return this.validator && this.required && (XIsEmpty(this.value) || this.value === 0);
|
|
16
21
|
}
|
|
17
22
|
writeValue(value) {
|
|
18
|
-
if (value
|
|
19
|
-
|
|
23
|
+
if (XIsNull(value) || XIsUndefined(value)) {
|
|
24
|
+
if (this.range) {
|
|
25
|
+
value = [Number(this.min), Number(this.min)];
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
value = Number(this.min);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
20
31
|
this.value = value;
|
|
32
|
+
this.isNumber = XIsNumber(this.value) && !XIsArray(this.value);
|
|
33
|
+
this.isArray = XIsArray(this.value);
|
|
21
34
|
this.setLeft();
|
|
22
35
|
this.setDisplayValue();
|
|
23
36
|
}
|
|
@@ -27,16 +40,26 @@ class XSliderSelectComponent extends XSliderSelectProperty {
|
|
|
27
40
|
this.elementRef = elementRef;
|
|
28
41
|
this.cdr = cdr;
|
|
29
42
|
this.configService = configService;
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
32
|
-
this.
|
|
33
|
-
this.
|
|
34
|
-
this.
|
|
43
|
+
this.value = Number(this.min);
|
|
44
|
+
this.startOffset = 0;
|
|
45
|
+
this.startVisible = false;
|
|
46
|
+
this.startManual = false;
|
|
47
|
+
this.startDisplayValue = '0';
|
|
48
|
+
this.showStartTooltip = true;
|
|
49
|
+
this.endOffset = 0;
|
|
50
|
+
this.endVisible = false;
|
|
51
|
+
this.endManual = false;
|
|
52
|
+
this.endDisplayValue = '0';
|
|
53
|
+
this.showEndTooltip = true;
|
|
54
|
+
this.markList = [];
|
|
35
55
|
this._unSubject = new Subject();
|
|
56
|
+
this.isNumber = true;
|
|
57
|
+
this.isArray = false;
|
|
36
58
|
}
|
|
37
59
|
ngOnInit() {
|
|
38
60
|
this.setFlex(this.sliderSelect.nativeElement, this.renderer, this.justify, this.align, this.direction);
|
|
39
61
|
this.setPrecision();
|
|
62
|
+
this.setMarks();
|
|
40
63
|
this.setClassMap();
|
|
41
64
|
}
|
|
42
65
|
ngAfterViewInit() {
|
|
@@ -48,6 +71,12 @@ class XSliderSelectComponent extends XSliderSelectProperty {
|
|
|
48
71
|
this.setDisplayValue();
|
|
49
72
|
this.cdr.detectChanges();
|
|
50
73
|
});
|
|
74
|
+
if (this.tooltips.length > 0) {
|
|
75
|
+
this.tooltipStart = this.tooltips.first;
|
|
76
|
+
}
|
|
77
|
+
if (this.tooltips.length > 1) {
|
|
78
|
+
this.tooltipEnd = this.tooltips.last;
|
|
79
|
+
}
|
|
51
80
|
}
|
|
52
81
|
ngOnDestroy() {
|
|
53
82
|
this._unSubject.next();
|
|
@@ -55,8 +84,22 @@ class XSliderSelectComponent extends XSliderSelectProperty {
|
|
|
55
84
|
this._resizeObserver?.disconnect();
|
|
56
85
|
}
|
|
57
86
|
change() {
|
|
58
|
-
const
|
|
59
|
-
|
|
87
|
+
const getVal = (offset) => {
|
|
88
|
+
return parseFloat(Number(((Number(this.max) - Number(this.min)) * Number(offset)) / 100 + Number(this.min)).toFixed(Number(this.precision)));
|
|
89
|
+
};
|
|
90
|
+
const startVal = getVal(this.startOffset);
|
|
91
|
+
if (this.isNumber) {
|
|
92
|
+
this.value = startVal;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const endVal = getVal(this.endOffset);
|
|
96
|
+
if (endVal < startVal) {
|
|
97
|
+
this.value = [endVal, startVal];
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.value = [startVal, endVal];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
60
103
|
this.setDisplayValue();
|
|
61
104
|
if (this.onChange)
|
|
62
105
|
this.onChange(this.value);
|
|
@@ -65,15 +108,47 @@ class XSliderSelectComponent extends XSliderSelectProperty {
|
|
|
65
108
|
XClearClass(this.labelMap);
|
|
66
109
|
this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;
|
|
67
110
|
}
|
|
111
|
+
getOffset(val) {
|
|
112
|
+
return Math.round(((val + (this.reverse ? -Number(this.min) : Number(this.min))) * 100) /
|
|
113
|
+
(Number(this.max) - Number(this.min)));
|
|
114
|
+
}
|
|
68
115
|
setLeft() {
|
|
69
|
-
|
|
70
|
-
|
|
116
|
+
let startVal = 0, endVal = 0;
|
|
117
|
+
if (this.isNumber) {
|
|
118
|
+
startVal = this.value;
|
|
119
|
+
}
|
|
120
|
+
else if (XIsArray(this.value) && this.value.length > 1) {
|
|
121
|
+
startVal = this.value[0];
|
|
122
|
+
endVal = this.value[1];
|
|
123
|
+
this.endOffset = this.getOffset(endVal);
|
|
124
|
+
const end = this.endOffset;
|
|
125
|
+
this.end = end;
|
|
126
|
+
}
|
|
127
|
+
this.startOffset = this.getOffset(startVal);
|
|
128
|
+
const start = this.startOffset;
|
|
71
129
|
this.start = start;
|
|
72
130
|
this.setDrag();
|
|
73
131
|
this.cdr.detectChanges();
|
|
74
132
|
}
|
|
75
133
|
setDisplayValue() {
|
|
76
|
-
|
|
134
|
+
const displayVal = (val) => {
|
|
135
|
+
return Number(val).toFixed(Number(this.precision));
|
|
136
|
+
};
|
|
137
|
+
if (this.isNumber) {
|
|
138
|
+
this.startDisplayValue = displayVal(this.value);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
if (XIsArray(this.value) && this.value.length > 1) {
|
|
142
|
+
if (this.startOffset > this.endOffset) {
|
|
143
|
+
this.startDisplayValue = displayVal(this.value[1]);
|
|
144
|
+
this.endDisplayValue = displayVal(this.value[0]);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.startDisplayValue = displayVal(this.value[0]);
|
|
148
|
+
this.endDisplayValue = displayVal(this.value[1]);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
77
152
|
this.cdr.detectChanges();
|
|
78
153
|
}
|
|
79
154
|
setPrecision() {
|
|
@@ -88,85 +163,209 @@ class XSliderSelectComponent extends XSliderSelectProperty {
|
|
|
88
163
|
}
|
|
89
164
|
}
|
|
90
165
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
166
|
+
setMarks() {
|
|
167
|
+
if (!this.marks)
|
|
168
|
+
return;
|
|
169
|
+
for (let mark of this.marks) {
|
|
170
|
+
const mk = {
|
|
171
|
+
value: mark.value,
|
|
172
|
+
label: mark.label,
|
|
173
|
+
style: { ...mark.style }
|
|
174
|
+
};
|
|
175
|
+
mk.offset = this.getOffset(mark.value);
|
|
176
|
+
if (this.reverse) {
|
|
177
|
+
if (this.vertical) {
|
|
178
|
+
mk.style['top'] = `${mk.offset}%`;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
mk.style['right'] = `${mk.offset}%`;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
if (this.vertical) {
|
|
186
|
+
mk.style['bottom'] = `${mk.offset}%`;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
mk.style['left'] = `${mk.offset}%`;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
this.markList.push(mk);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
started(drag, type = 'start') {
|
|
196
|
+
if (['start', 'both'].includes(type)) {
|
|
197
|
+
const start = this.startOffset;
|
|
198
|
+
this.start = start;
|
|
199
|
+
if (this.showStartTooltip) {
|
|
200
|
+
this.startManual = true;
|
|
201
|
+
this.startVisible = true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (['end', 'both'].includes(type)) {
|
|
205
|
+
const end = this.endOffset;
|
|
206
|
+
this.end = end;
|
|
207
|
+
if (this.showEndTooltip) {
|
|
208
|
+
this.endManual = true;
|
|
209
|
+
this.endVisible = true;
|
|
210
|
+
}
|
|
98
211
|
}
|
|
99
212
|
this.cdr.detectChanges();
|
|
100
213
|
this.formControlValidator();
|
|
101
214
|
this.dragStartEmit.emit(drag);
|
|
102
215
|
}
|
|
103
|
-
moved(drag) {
|
|
216
|
+
moved(drag, type = 'start') {
|
|
104
217
|
let transform = drag.source.getFreeDragPosition();
|
|
105
|
-
this.setDrag(transform.x);
|
|
218
|
+
this.setDrag(this.vertical ? transform.y : transform.x, type);
|
|
106
219
|
drag.source.reset();
|
|
107
|
-
if (this.
|
|
108
|
-
this.
|
|
220
|
+
if (['start', 'both'].includes(type) && this.showStartTooltip) {
|
|
221
|
+
this.tooltipStart.updatePortal();
|
|
222
|
+
}
|
|
223
|
+
if (['end', 'both'].includes(type) && this.showEndTooltip) {
|
|
224
|
+
this.tooltipEnd.updatePortal();
|
|
109
225
|
}
|
|
110
226
|
this.change();
|
|
111
227
|
this.dragMoveEmit.emit(drag);
|
|
112
228
|
}
|
|
113
|
-
ended(drag) {
|
|
114
|
-
if (
|
|
115
|
-
this.
|
|
116
|
-
|
|
229
|
+
ended(drag, type = 'start') {
|
|
230
|
+
if (['start', 'both'].includes(type)) {
|
|
231
|
+
if (this.showStartTooltip) {
|
|
232
|
+
this.startManual = false;
|
|
233
|
+
this.startVisible = false;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (['end', 'both'].includes(type)) {
|
|
237
|
+
if (this.showEndTooltip) {
|
|
238
|
+
this.endManual = false;
|
|
239
|
+
this.endVisible = false;
|
|
240
|
+
}
|
|
117
241
|
}
|
|
118
242
|
this.cdr.detectChanges();
|
|
119
243
|
this.dragEndEmit.emit(drag);
|
|
120
244
|
}
|
|
121
|
-
setDrag(distance = 0) {
|
|
245
|
+
setDrag(distance = 0, type = 'both') {
|
|
122
246
|
if (typeof this.railRef.nativeElement.getBoundingClientRect !== 'function')
|
|
123
247
|
return;
|
|
124
248
|
let railBox = this.railRef.nativeElement.getBoundingClientRect();
|
|
125
|
-
let
|
|
126
|
-
let
|
|
127
|
-
let
|
|
249
|
+
let railBoxLength = this.vertical ? railBox.height : railBox.width;
|
|
250
|
+
let stepLength = railBoxLength / ((Number(this.max) - Number(this.min)) / Number(this.step));
|
|
251
|
+
let offset = Math.abs(distance % stepLength);
|
|
252
|
+
let dis = offset < stepLength / 2
|
|
128
253
|
? distance > 0
|
|
129
254
|
? distance - offset
|
|
130
255
|
: distance + offset
|
|
131
256
|
: distance > 0
|
|
132
|
-
? distance +
|
|
133
|
-
: distance -
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
257
|
+
? distance + stepLength - offset
|
|
258
|
+
: distance - stepLength + offset;
|
|
259
|
+
const setOffset = (d) => {
|
|
260
|
+
let x1 = (d / 100) * railBoxLength;
|
|
261
|
+
if (this.vertical) {
|
|
262
|
+
x1 += this.reverse ? dis : -dis;
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
x1 += this.reverse ? -dis : dis;
|
|
266
|
+
}
|
|
267
|
+
return Math.round((x1 / railBoxLength) * 100);
|
|
268
|
+
};
|
|
269
|
+
if (type === 'both') {
|
|
270
|
+
this.startOffset = setOffset(this.start);
|
|
271
|
+
this.endOffset = setOffset(this.end);
|
|
272
|
+
}
|
|
273
|
+
else if (type === 'start') {
|
|
274
|
+
this.startOffset = setOffset(this.start);
|
|
275
|
+
}
|
|
276
|
+
else if (type === 'end') {
|
|
277
|
+
this.endOffset = setOffset(this.end);
|
|
278
|
+
}
|
|
279
|
+
this.setDragStyles();
|
|
280
|
+
}
|
|
281
|
+
setDragStyles() {
|
|
282
|
+
if (this.vertical) {
|
|
283
|
+
if (this.isArray) {
|
|
284
|
+
const wd = Math.abs(this.endOffset - this.startOffset);
|
|
285
|
+
const lt = this.endOffset > this.startOffset ? this.startOffset : this.endOffset;
|
|
286
|
+
if (this.reverse) {
|
|
287
|
+
this.renderer.setStyle(this.dragStartRef.nativeElement, 'top', `${this.startOffset}%`);
|
|
288
|
+
this.renderer.setStyle(this.dragEndRef.nativeElement, 'top', `${this.endOffset}%`);
|
|
289
|
+
this.renderer.setStyle(this.processRef.nativeElement, 'top', `${lt}%`);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
this.renderer.setStyle(this.dragStartRef.nativeElement, 'bottom', `${this.startOffset}%`);
|
|
293
|
+
this.renderer.setStyle(this.dragEndRef.nativeElement, 'bottom', `${this.endOffset}%`);
|
|
294
|
+
this.renderer.setStyle(this.processRef.nativeElement, 'bottom', `${lt}%`);
|
|
295
|
+
}
|
|
296
|
+
this.renderer.setStyle(this.processRef.nativeElement, 'height', `${wd}%`);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
if (this.reverse) {
|
|
300
|
+
this.renderer.setStyle(this.dragStartRef.nativeElement, 'top', `${this.startOffset}%`);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
this.renderer.setStyle(this.dragStartRef.nativeElement, 'bottom', `${this.startOffset}%`);
|
|
304
|
+
}
|
|
305
|
+
this.renderer.setStyle(this.processRef.nativeElement, 'height', `${this.startOffset}%`);
|
|
306
|
+
}
|
|
138
307
|
}
|
|
139
308
|
else {
|
|
140
|
-
|
|
309
|
+
if (this.isArray) {
|
|
310
|
+
const wd = Math.abs(this.endOffset - this.startOffset);
|
|
311
|
+
const lt = this.endOffset > this.startOffset ? this.startOffset : this.endOffset;
|
|
312
|
+
if (this.reverse) {
|
|
313
|
+
this.renderer.setStyle(this.dragStartRef.nativeElement, 'right', `${this.startOffset}%`);
|
|
314
|
+
this.renderer.setStyle(this.dragEndRef.nativeElement, 'right', `${this.endOffset}%`);
|
|
315
|
+
this.renderer.setStyle(this.processRef.nativeElement, 'right', `${lt}%`);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
this.renderer.setStyle(this.dragStartRef.nativeElement, 'left', `${this.startOffset}%`);
|
|
319
|
+
this.renderer.setStyle(this.dragEndRef.nativeElement, 'left', `${this.endOffset}%`);
|
|
320
|
+
this.renderer.setStyle(this.processRef.nativeElement, 'left', `${lt}%`);
|
|
321
|
+
}
|
|
322
|
+
this.renderer.setStyle(this.processRef.nativeElement, 'width', `${wd}%`);
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
if (this.reverse) {
|
|
326
|
+
this.renderer.setStyle(this.dragStartRef.nativeElement, 'right', `${this.startOffset}%`);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
this.renderer.setStyle(this.dragStartRef.nativeElement, 'left', `${this.startOffset}%`);
|
|
330
|
+
}
|
|
331
|
+
this.renderer.setStyle(this.processRef.nativeElement, 'width', `${this.startOffset}%`);
|
|
332
|
+
}
|
|
141
333
|
}
|
|
142
|
-
this.renderer.setStyle(this.processRef.nativeElement, 'width', `${this.offset}%`);
|
|
143
|
-
this.renderer.removeStyle(this.dragRef.nativeElement, 'transform');
|
|
144
334
|
}
|
|
145
335
|
formControlChanges() {
|
|
146
336
|
this.ngOnInit();
|
|
147
337
|
this.cdr.detectChanges();
|
|
148
338
|
}
|
|
149
339
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XSliderSelectComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
150
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XSliderSelectComponent, selector: "x-slider-select", providers: [XValueAccessor(XSliderSelectComponent)], viewQueries: [{ propertyName: "sliderSelect", first: true, predicate: ["sliderSelect"], descendants: true, static: true }, { propertyName: "dragRef", first: true, predicate: ["dragRef"], descendants: true, static: true }, { propertyName: "railRef", first: true, predicate: ["railRef"], descendants: true, static: true }, { propertyName: "processRef", first: true, predicate: ["processRef"], descendants: true, static: true }, { propertyName: "tooltip", first: true, predicate: XTooltipDirective, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-slider-select-reverse]=\"reverse\"\r\n>\r\n <label *ngIf=\"label\" [class.x-slider-select-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-slider-select-inner\" #innerRef (click)=\"onInnerClick($event)\">\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div class=\"x-slider-select-process\" #processRef></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div\r\n #dragRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n cdkDragLockAxis=\"x\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event)\"\r\n (cdkDragEnded)=\"ended($event)\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n >\r\n <div\r\n #tooltip\r\n x-tooltip\r\n class=\"x-slider-select-button\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip\"\r\n [content]=\"displayValue\"\r\n [visible]=\"visible\"\r\n [manual]=\"manual\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-slider-select{display:inline-block;width:12rem}.x-slider-select{margin:0;padding:0;width:100%}.x-slider-select.x-flex{display:flex}.x-slider-select.x-justify-start{justify-content:flex-start}.x-slider-select.x-justify-center{justify-content:center}.x-slider-select.x-justify-end{justify-content:flex-end}.x-slider-select.x-justify-space-between{justify-content:space-between}.x-slider-select.x-justify-space-around{justify-content:space-around}.x-slider-select.x-align-start{align-items:flex-start}.x-slider-select.x-align-center{align-items:center}.x-slider-select.x-align-end{align-items:flex-end}.x-slider-select.x-direction-column{flex-direction:column}.x-slider-select.x-direction-column-reverse{flex-direction:column-reverse}.x-slider-select.x-direction-row{flex-direction:row}.x-slider-select.x-direction-row-reverse{flex-direction:row-reverse}.x-slider-select>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);color:var(--x-text-300);font-weight:600}.x-slider-select>label.x-text-align-start{text-align:start}.x-slider-select>label.x-text-align-center{text-align:center}.x-slider-select>label.x-text-align-end{text-align:end}.x-slider-select-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-slider-select-inner{flex:1;position:relative;display:flex;align-items:center;padding-right:1rem}.x-slider-select-rail{position:absolute;margin-left:.5rem;width:calc(100% - 1rem);background-color:var(--x-border-100);height:calc(calc(var(--x-font-size) + .875rem) / 4);border-radius:var(--x-border-radius)}.x-slider-select-rail>div{width:100%;height:100%}.x-slider-select-track{margin-left:.5rem;width:calc(100% - 1rem);position:absolute}.x-slider-select-process{height:calc(calc(var(--x-font-size) + .875rem) / 4);background-color:var(--x-primary);border-radius:var(--x-border-radius);width:0%}.x-slider-select-drags{position:relative;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-drag{position:absolute;cursor:pointer}.x-slider-select-button{width:1rem;height:1rem;border-radius:1rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100)}.x-slider-select.x-invalid>label,.x-slider-select.x-required>label{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row>x-icon,.x-slider-select.x-required>.x-slider-select-row>x-icon{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row:before,.x-slider-select.x-required>.x-slider-select-row:before{content:\" \";z-index:2;position:absolute;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);width:.125rem;background-color:var(--x-danger)}.x-slider-select.x-disabled .x-slider-select-rail{background-color:var(--x-border-300)}.x-slider-select.x-disabled .x-slider-select-process{background-color:var(--x-primary-400)}.x-slider-select.x-disabled .x-slider-select-drag{cursor:not-allowed}.x-slider-select.x-disabled .x-slider-select-button{border-color:var(--x-primary-400)}.x-slider-select.x-flex.x-direction-row>label{padding:0 .5rem 0 0}.x-slider-select.x-flex.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-slider-select.x-flex.x-direction-column,.x-slider-select.x-flex.x-direction-column-reverse{align-items:inherit}.x-slider-select-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-500);padding:0 var(--x-padding-medium);right:0}.x-slider-select:hover:not(.x-disabled) .x-slider-select-track{background-color:var(--x-border-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:var(--x-primary-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-button{border-color:var(--x-primary-100)}.x-slider-select-reverse .x-slider-select-inner{padding-right:0;padding-left:1rem}.x-slider-select-reverse .x-slider-select-rail{margin-left:-.5rem}.x-slider-select-reverse .x-slider-select-track{display:flex;justify-content:flex-end;margin-left:-.5rem}.x-slider-select-reverse .x-slider-select-drags{justify-content:flex-end;right:auto}.x-slider-select:not(.x-slider-select-reverse) .x-slider-select-drag{left:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.XTooltipDirective, selector: "[x-tooltip], x-tooltip" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
340
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XSliderSelectComponent, selector: "x-slider-select", host: { properties: { "class.x-slider-select-vertical": "this.getVertical" } }, providers: [XValueAccessor(XSliderSelectComponent)], viewQueries: [{ propertyName: "sliderSelect", first: true, predicate: ["sliderSelect"], descendants: true, static: true }, { propertyName: "dragStartRef", first: true, predicate: ["dragStartRef"], descendants: true, static: true }, { propertyName: "dragEndRef", first: true, predicate: ["dragEndRef"], descendants: true, static: true }, { propertyName: "railRef", first: true, predicate: ["railRef"], descendants: true, static: true }, { propertyName: "processRef", first: true, predicate: ["processRef"], descendants: true, static: true }, { propertyName: "cdkDrag", first: true, predicate: CdkDrag, descendants: true }, { propertyName: "tooltips", predicate: XTooltipDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-slider-select-reverse]=\"reverse\"\r\n [class.x-slider-select-range]=\"range\"\r\n>\r\n <label\r\n *ngIf=\"label\"\r\n [class.x-slider-select-label-required]=\"required\"\r\n [style.width]=\"labelWidth\"\r\n [ngClass]=\"labelMap\"\r\n >{{ label }}</label\r\n >\r\n <div class=\"x-slider-select-inner\" #innerRef>\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div\r\n #processRef\r\n class=\"x-slider-select-process\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled || !range\"\r\n [cdkDragBoundary]=\"trackRef\"\r\n (cdkDragStarted)=\"started($event, 'both')\"\r\n (cdkDragEnded)=\"ended($event, 'both')\"\r\n (cdkDragMoved)=\"moved($event, 'both')\"\r\n ></div>\r\n </div>\r\n <div class=\"x-slider-select-marks\">\r\n <div class=\"x-slider-select-mark\" [ngStyle]=\"mark.style\" *ngFor=\"let mark of markList\">\r\n <span class=\"x-slider-select-mark-label\">{{ mark.label }}</span>\r\n </div>\r\n </div>\r\n <div\r\n #dragStartRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'start')\"\r\n (cdkDragEnded)=\"ended($event, 'start')\"\r\n (cdkDragMoved)=\"moved($event, 'start')\"\r\n >\r\n <div\r\n #tooltipStart\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"startVisible\"\r\n [class.x-slider-select-custom-button]=\"customButton\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip && !showStartTooltip\"\r\n [content]=\"startDisplayValue\"\r\n [visible]=\"startVisible\"\r\n [manual]=\"startManual\"\r\n >\r\n <ng-container *xOutlet=\"customButton\">{{ customButton }}</ng-container>\r\n </div>\r\n </div>\r\n <div\r\n [hidden]=\"!range\"\r\n #dragEndRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'end')\"\r\n (cdkDragEnded)=\"ended($event, 'end')\"\r\n (cdkDragMoved)=\"moved($event, 'end')\"\r\n >\r\n <div\r\n #tooltipEnd\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"endVisible\"\r\n [class.x-slider-select-custom-button]=\"customButton\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip && !showEndTooltip\"\r\n [content]=\"endDisplayValue\"\r\n [visible]=\"endVisible\"\r\n [manual]=\"endManual\"\r\n >\r\n <ng-container *xOutlet=\"customButton\">{{ customButton }}</ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-slider-select{display:inline-block;width:12rem}.x-slider-select{margin:0;padding:0;width:100%}.x-slider-select.x-flex{display:flex}.x-slider-select.x-justify-start{justify-content:flex-start}.x-slider-select.x-justify-center{justify-content:center}.x-slider-select.x-justify-end{justify-content:flex-end}.x-slider-select.x-justify-space-between{justify-content:space-between}.x-slider-select.x-justify-space-around{justify-content:space-around}.x-slider-select.x-align-start{align-items:flex-start}.x-slider-select.x-align-center{align-items:center}.x-slider-select.x-align-end{align-items:flex-end}.x-slider-select.x-direction-column{flex-direction:column}.x-slider-select.x-direction-column-reverse{flex-direction:column-reverse}.x-slider-select.x-direction-row{flex-direction:row}.x-slider-select.x-direction-row-reverse{flex-direction:row-reverse}.x-slider-select>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);color:var(--x-text-300);font-weight:600}.x-slider-select>label.x-text-align-start{text-align:start}.x-slider-select>label.x-text-align-center{text-align:center}.x-slider-select>label.x-text-align-end{text-align:end}.x-slider-select-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-slider-select-inner{flex:1;position:relative;display:flex;align-items:center;padding-right:.875rem}.x-slider-select-rail{position:absolute;margin-left:.4375rem;width:calc(100% - .875rem);background-color:var(--x-border-100);height:calc(calc(var(--x-font-size) + .875rem) / 5);border-radius:var(--x-border-radius)}.x-slider-select-rail>div{width:100%;height:100%}.x-slider-select-track{margin-left:.4375rem;width:100%;border-radius:var(--x-border-radius);position:absolute}.x-slider-select-process{height:calc(calc(var(--x-font-size) + .875rem) / 5);background-color:var(--x-primary);border-radius:var(--x-border-radius);width:0%;position:relative}.x-slider-select-drags{position:relative;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-drag{position:absolute;cursor:pointer}.x-slider-select-marks{position:absolute;margin-left:.4375rem;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-mark{position:absolute;transform:translate(-50%);border-radius:.875rem;display:flex;align-items:center;justify-content:center}.x-slider-select-mark:before{content:\" \";position:absolute;width:.65625rem;height:.65625rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100);border-radius:.875rem}.x-slider-select-mark-label{transform:translateY(.875rem)}.x-slider-select-button:not(.x-slider-select-custom-button){border-radius:.875rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100)}.x-slider-select-button{width:.875rem;height:.875rem;display:flex;align-items:center;justify-content:center;transition:var(--x-animation-duration-base)}.x-slider-select-button:hover,.x-slider-select-button-actived{transform:scale(1.2)}.x-slider-select-bar{width:100%;height:100%}.x-slider-select.x-invalid>label,.x-slider-select.x-required>label{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row>x-icon,.x-slider-select.x-required>.x-slider-select-row>x-icon{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row:before,.x-slider-select.x-required>.x-slider-select-row:before{content:\" \";z-index:2;position:absolute;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);width:.125rem;background-color:var(--x-danger)}.x-slider-select.x-disabled .x-slider-select-rail{background-color:var(--x-border-300)}.x-slider-select.x-disabled .x-slider-select-process{background-color:var(--x-primary-400)}.x-slider-select.x-disabled .x-slider-select-drag{cursor:not-allowed}.x-slider-select.x-disabled .x-slider-select-button:not(.x-slider-select-custom-button){border-color:var(--x-primary-400)}.x-slider-select.x-flex.x-direction-row>label{padding:0 .5rem 0 0}.x-slider-select.x-flex.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-slider-select.x-flex.x-direction-column,.x-slider-select.x-flex.x-direction-column-reverse{align-items:inherit}.x-slider-select-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-500);padding:0 var(--x-padding-medium);right:0}.x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:var(--x-primary-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-button{border-color:var(--x-primary-100)}.x-slider-select-reverse .x-slider-select-inner{padding-right:0;padding-left:.875rem}.x-slider-select-reverse .x-slider-select-rail{margin-left:-.4375rem}.x-slider-select-reverse .x-slider-select-marks{margin-right:.4375rem}.x-slider-select-reverse .x-slider-select-mark{transform:translate(50%)}.x-slider-select-reverse .x-slider-select-track{display:flex;justify-content:flex-end;margin-right:.4375rem}.x-slider-select-reverse .x-slider-select-drags{justify-content:flex-end;right:auto}.x-slider-select-vertical{width:initial;height:12rem}.x-slider-select-vertical .x-slider-select{height:100%}.x-slider-select-vertical .x-slider-select-inner{padding-right:initial;padding-top:.875rem;align-items:initial;justify-content:center;height:100%}.x-slider-select-vertical .x-slider-select-rail{margin-left:initial;margin-top:-.4375rem;height:calc(100% - .875rem);width:calc(calc(var(--x-font-size) + .875rem) / 5)}.x-slider-select-vertical .x-slider-select-track{display:flex;align-items:flex-end;margin-left:initial;margin-bottom:.4375rem;width:calc(calc(var(--x-font-size) + .875rem) / 5);height:100%}.x-slider-select-vertical .x-slider-select-marks{display:flex;align-items:flex-end;justify-content:center;margin-left:initial;margin-bottom:.4375rem;width:calc(calc(var(--x-font-size) + .875rem) / 5);height:100%}.x-slider-select-vertical .x-slider-select-mark{transform:translate(0) translateY(50%)}.x-slider-select-vertical .x-slider-select-mark-label{transform:translate(50%) translateY(0);margin-left:.875rem}.x-slider-select-vertical .x-slider-select-process{height:0%;width:calc(calc(var(--x-font-size) + .875rem) / 5)}.x-slider-select-vertical .x-slider-select-drags{height:100%;width:calc(var(--x-font-size) + .875rem);align-items:flex-end;justify-content:center;right:auto}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-inner{padding-left:initial;padding-bottom:.875rem;padding-top:initial}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-rail{margin-top:.4375rem}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-track,.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-marks{align-items:flex-start;margin-bottom:-.4375rem;margin-right:initial}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-mark{transform:translate(0) translateY(-50%)}.x-slider-select-range .x-slider-select-process{cursor:pointer}.x-slider-select:not(.x-slider-select-reverse) .x-slider-select-drag{left:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.XTooltipDirective, selector: "[x-tooltip], x-tooltip" }, { kind: "directive", type: i5.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
151
341
|
}
|
|
152
342
|
export { XSliderSelectComponent };
|
|
153
343
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XSliderSelectComponent, decorators: [{
|
|
154
344
|
type: Component,
|
|
155
|
-
args: [{ selector: `${XSliderSelectPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XSliderSelectComponent)], template: "<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-slider-select-reverse]=\"reverse\"\r\n>\r\n <label *ngIf=\"label\" [class.x-slider-select-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-slider-select-inner\" #innerRef (click)=\"onInnerClick($event)\">\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div class=\"x-slider-select-process\" #processRef></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div\r\n #dragRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n cdkDragLockAxis=\"x\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event)\"\r\n (cdkDragEnded)=\"ended($event)\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n >\r\n <div\r\n #tooltip\r\n x-tooltip\r\n class=\"x-slider-select-button\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip\"\r\n [content]=\"displayValue\"\r\n [visible]=\"visible\"\r\n [manual]=\"manual\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-slider-select{display:inline-block;width:12rem}.x-slider-select{margin:0;padding:0;width:100%}.x-slider-select.x-flex{display:flex}.x-slider-select.x-justify-start{justify-content:flex-start}.x-slider-select.x-justify-center{justify-content:center}.x-slider-select.x-justify-end{justify-content:flex-end}.x-slider-select.x-justify-space-between{justify-content:space-between}.x-slider-select.x-justify-space-around{justify-content:space-around}.x-slider-select.x-align-start{align-items:flex-start}.x-slider-select.x-align-center{align-items:center}.x-slider-select.x-align-end{align-items:flex-end}.x-slider-select.x-direction-column{flex-direction:column}.x-slider-select.x-direction-column-reverse{flex-direction:column-reverse}.x-slider-select.x-direction-row{flex-direction:row}.x-slider-select.x-direction-row-reverse{flex-direction:row-reverse}.x-slider-select>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);color:var(--x-text-300);font-weight:600}.x-slider-select>label.x-text-align-start{text-align:start}.x-slider-select>label.x-text-align-center{text-align:center}.x-slider-select>label.x-text-align-end{text-align:end}.x-slider-select-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-slider-select-inner{flex:1;position:relative;display:flex;align-items:center;padding-right:1rem}.x-slider-select-rail{position:absolute;margin-left:.5rem;width:calc(100% - 1rem);background-color:var(--x-border-100);height:calc(calc(var(--x-font-size) + .875rem) / 4);border-radius:var(--x-border-radius)}.x-slider-select-rail>div{width:100%;height:100%}.x-slider-select-track{margin-left:.5rem;width:calc(100% - 1rem);position:absolute}.x-slider-select-process{height:calc(calc(var(--x-font-size) + .875rem) / 4);background-color:var(--x-primary);border-radius:var(--x-border-radius);width:0%}.x-slider-select-drags{position:relative;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-drag{position:absolute;cursor:pointer}.x-slider-select-button{width:1rem;height:1rem;border-radius:1rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100)}.x-slider-select.x-invalid>label,.x-slider-select.x-required>label{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row>x-icon,.x-slider-select.x-required>.x-slider-select-row>x-icon{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row:before,.x-slider-select.x-required>.x-slider-select-row:before{content:\" \";z-index:2;position:absolute;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);width:.125rem;background-color:var(--x-danger)}.x-slider-select.x-disabled .x-slider-select-rail{background-color:var(--x-border-300)}.x-slider-select.x-disabled .x-slider-select-process{background-color:var(--x-primary-400)}.x-slider-select.x-disabled .x-slider-select-drag{cursor:not-allowed}.x-slider-select.x-disabled .x-slider-select-button{border-color:var(--x-primary-400)}.x-slider-select.x-flex.x-direction-row>label{padding:0 .5rem 0 0}.x-slider-select.x-flex.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-slider-select.x-flex.x-direction-column,.x-slider-select.x-flex.x-direction-column-reverse{align-items:inherit}.x-slider-select-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-500);padding:0 var(--x-padding-medium);right:0}.x-slider-select:hover:not(.x-disabled) .x-slider-select-track{background-color:var(--x-border-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:var(--x-primary-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-button{border-color:var(--x-primary-100)}.x-slider-select-reverse .x-slider-select-inner{padding-right:0;padding-left:1rem}.x-slider-select-reverse .x-slider-select-rail{margin-left:-.5rem}.x-slider-select-reverse .x-slider-select-track{display:flex;justify-content:flex-end;margin-left:-.5rem}.x-slider-select-reverse .x-slider-select-drags{justify-content:flex-end;right:auto}.x-slider-select:not(.x-slider-select-reverse) .x-slider-select-drag{left:auto}\n"] }]
|
|
345
|
+
args: [{ selector: `${XSliderSelectPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XSliderSelectComponent)], template: "<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-slider-select-reverse]=\"reverse\"\r\n [class.x-slider-select-range]=\"range\"\r\n>\r\n <label\r\n *ngIf=\"label\"\r\n [class.x-slider-select-label-required]=\"required\"\r\n [style.width]=\"labelWidth\"\r\n [ngClass]=\"labelMap\"\r\n >{{ label }}</label\r\n >\r\n <div class=\"x-slider-select-inner\" #innerRef>\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div\r\n #processRef\r\n class=\"x-slider-select-process\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled || !range\"\r\n [cdkDragBoundary]=\"trackRef\"\r\n (cdkDragStarted)=\"started($event, 'both')\"\r\n (cdkDragEnded)=\"ended($event, 'both')\"\r\n (cdkDragMoved)=\"moved($event, 'both')\"\r\n ></div>\r\n </div>\r\n <div class=\"x-slider-select-marks\">\r\n <div class=\"x-slider-select-mark\" [ngStyle]=\"mark.style\" *ngFor=\"let mark of markList\">\r\n <span class=\"x-slider-select-mark-label\">{{ mark.label }}</span>\r\n </div>\r\n </div>\r\n <div\r\n #dragStartRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'start')\"\r\n (cdkDragEnded)=\"ended($event, 'start')\"\r\n (cdkDragMoved)=\"moved($event, 'start')\"\r\n >\r\n <div\r\n #tooltipStart\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"startVisible\"\r\n [class.x-slider-select-custom-button]=\"customButton\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip && !showStartTooltip\"\r\n [content]=\"startDisplayValue\"\r\n [visible]=\"startVisible\"\r\n [manual]=\"startManual\"\r\n >\r\n <ng-container *xOutlet=\"customButton\">{{ customButton }}</ng-container>\r\n </div>\r\n </div>\r\n <div\r\n [hidden]=\"!range\"\r\n #dragEndRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'end')\"\r\n (cdkDragEnded)=\"ended($event, 'end')\"\r\n (cdkDragMoved)=\"moved($event, 'end')\"\r\n >\r\n <div\r\n #tooltipEnd\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"endVisible\"\r\n [class.x-slider-select-custom-button]=\"customButton\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip && !showEndTooltip\"\r\n [content]=\"endDisplayValue\"\r\n [visible]=\"endVisible\"\r\n [manual]=\"endManual\"\r\n >\r\n <ng-container *xOutlet=\"customButton\">{{ customButton }}</ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-slider-select{display:inline-block;width:12rem}.x-slider-select{margin:0;padding:0;width:100%}.x-slider-select.x-flex{display:flex}.x-slider-select.x-justify-start{justify-content:flex-start}.x-slider-select.x-justify-center{justify-content:center}.x-slider-select.x-justify-end{justify-content:flex-end}.x-slider-select.x-justify-space-between{justify-content:space-between}.x-slider-select.x-justify-space-around{justify-content:space-around}.x-slider-select.x-align-start{align-items:flex-start}.x-slider-select.x-align-center{align-items:center}.x-slider-select.x-align-end{align-items:flex-end}.x-slider-select.x-direction-column{flex-direction:column}.x-slider-select.x-direction-column-reverse{flex-direction:column-reverse}.x-slider-select.x-direction-row{flex-direction:row}.x-slider-select.x-direction-row-reverse{flex-direction:row-reverse}.x-slider-select>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);color:var(--x-text-300);font-weight:600}.x-slider-select>label.x-text-align-start{text-align:start}.x-slider-select>label.x-text-align-center{text-align:center}.x-slider-select>label.x-text-align-end{text-align:end}.x-slider-select-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-slider-select-inner{flex:1;position:relative;display:flex;align-items:center;padding-right:.875rem}.x-slider-select-rail{position:absolute;margin-left:.4375rem;width:calc(100% - .875rem);background-color:var(--x-border-100);height:calc(calc(var(--x-font-size) + .875rem) / 5);border-radius:var(--x-border-radius)}.x-slider-select-rail>div{width:100%;height:100%}.x-slider-select-track{margin-left:.4375rem;width:100%;border-radius:var(--x-border-radius);position:absolute}.x-slider-select-process{height:calc(calc(var(--x-font-size) + .875rem) / 5);background-color:var(--x-primary);border-radius:var(--x-border-radius);width:0%;position:relative}.x-slider-select-drags{position:relative;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-drag{position:absolute;cursor:pointer}.x-slider-select-marks{position:absolute;margin-left:.4375rem;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-mark{position:absolute;transform:translate(-50%);border-radius:.875rem;display:flex;align-items:center;justify-content:center}.x-slider-select-mark:before{content:\" \";position:absolute;width:.65625rem;height:.65625rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100);border-radius:.875rem}.x-slider-select-mark-label{transform:translateY(.875rem)}.x-slider-select-button:not(.x-slider-select-custom-button){border-radius:.875rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100)}.x-slider-select-button{width:.875rem;height:.875rem;display:flex;align-items:center;justify-content:center;transition:var(--x-animation-duration-base)}.x-slider-select-button:hover,.x-slider-select-button-actived{transform:scale(1.2)}.x-slider-select-bar{width:100%;height:100%}.x-slider-select.x-invalid>label,.x-slider-select.x-required>label{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row>x-icon,.x-slider-select.x-required>.x-slider-select-row>x-icon{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row:before,.x-slider-select.x-required>.x-slider-select-row:before{content:\" \";z-index:2;position:absolute;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);width:.125rem;background-color:var(--x-danger)}.x-slider-select.x-disabled .x-slider-select-rail{background-color:var(--x-border-300)}.x-slider-select.x-disabled .x-slider-select-process{background-color:var(--x-primary-400)}.x-slider-select.x-disabled .x-slider-select-drag{cursor:not-allowed}.x-slider-select.x-disabled .x-slider-select-button:not(.x-slider-select-custom-button){border-color:var(--x-primary-400)}.x-slider-select.x-flex.x-direction-row>label{padding:0 .5rem 0 0}.x-slider-select.x-flex.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-slider-select.x-flex.x-direction-column,.x-slider-select.x-flex.x-direction-column-reverse{align-items:inherit}.x-slider-select-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-500);padding:0 var(--x-padding-medium);right:0}.x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:var(--x-primary-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-button{border-color:var(--x-primary-100)}.x-slider-select-reverse .x-slider-select-inner{padding-right:0;padding-left:.875rem}.x-slider-select-reverse .x-slider-select-rail{margin-left:-.4375rem}.x-slider-select-reverse .x-slider-select-marks{margin-right:.4375rem}.x-slider-select-reverse .x-slider-select-mark{transform:translate(50%)}.x-slider-select-reverse .x-slider-select-track{display:flex;justify-content:flex-end;margin-right:.4375rem}.x-slider-select-reverse .x-slider-select-drags{justify-content:flex-end;right:auto}.x-slider-select-vertical{width:initial;height:12rem}.x-slider-select-vertical .x-slider-select{height:100%}.x-slider-select-vertical .x-slider-select-inner{padding-right:initial;padding-top:.875rem;align-items:initial;justify-content:center;height:100%}.x-slider-select-vertical .x-slider-select-rail{margin-left:initial;margin-top:-.4375rem;height:calc(100% - .875rem);width:calc(calc(var(--x-font-size) + .875rem) / 5)}.x-slider-select-vertical .x-slider-select-track{display:flex;align-items:flex-end;margin-left:initial;margin-bottom:.4375rem;width:calc(calc(var(--x-font-size) + .875rem) / 5);height:100%}.x-slider-select-vertical .x-slider-select-marks{display:flex;align-items:flex-end;justify-content:center;margin-left:initial;margin-bottom:.4375rem;width:calc(calc(var(--x-font-size) + .875rem) / 5);height:100%}.x-slider-select-vertical .x-slider-select-mark{transform:translate(0) translateY(50%)}.x-slider-select-vertical .x-slider-select-mark-label{transform:translate(50%) translateY(0);margin-left:.875rem}.x-slider-select-vertical .x-slider-select-process{height:0%;width:calc(calc(var(--x-font-size) + .875rem) / 5)}.x-slider-select-vertical .x-slider-select-drags{height:100%;width:calc(var(--x-font-size) + .875rem);align-items:flex-end;justify-content:center;right:auto}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-inner{padding-left:initial;padding-bottom:.875rem;padding-top:initial}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-rail{margin-top:.4375rem}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-track,.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-marks{align-items:flex-start;margin-bottom:-.4375rem;margin-right:initial}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-mark{transform:translate(0) translateY(-50%)}.x-slider-select-range .x-slider-select-process{cursor:pointer}.x-slider-select:not(.x-slider-select-reverse) .x-slider-select-drag{left:auto}\n"] }]
|
|
156
346
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { sliderSelect: [{
|
|
157
347
|
type: ViewChild,
|
|
158
348
|
args: ['sliderSelect', { static: true }]
|
|
159
|
-
}],
|
|
349
|
+
}], dragStartRef: [{
|
|
350
|
+
type: ViewChild,
|
|
351
|
+
args: ['dragStartRef', { static: true }]
|
|
352
|
+
}], dragEndRef: [{
|
|
160
353
|
type: ViewChild,
|
|
161
|
-
args: ['
|
|
354
|
+
args: ['dragEndRef', { static: true }]
|
|
162
355
|
}], railRef: [{
|
|
163
356
|
type: ViewChild,
|
|
164
357
|
args: ['railRef', { static: true }]
|
|
165
358
|
}], processRef: [{
|
|
166
359
|
type: ViewChild,
|
|
167
360
|
args: ['processRef', { static: true }]
|
|
168
|
-
}],
|
|
361
|
+
}], getVertical: [{
|
|
362
|
+
type: HostBinding,
|
|
363
|
+
args: ['class.x-slider-select-vertical']
|
|
364
|
+
}], tooltips: [{
|
|
365
|
+
type: ViewChildren,
|
|
366
|
+
args: [XTooltipDirective]
|
|
367
|
+
}], cdkDrag: [{
|
|
169
368
|
type: ViewChild,
|
|
170
|
-
args: [
|
|
369
|
+
args: [CdkDrag]
|
|
171
370
|
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9zbGlkZXItc2VsZWN0L3NsaWRlci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvc2xpZGVyLXNlbGVjdC9zbGlkZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixTQUFTLEVBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBbUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFdkQsTUFRYSxzQkFBdUIsU0FBUSxxQkFBcUI7SUFlL0QsSUFBYSxlQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFUSxVQUFVLENBQUMsS0FBYTtRQUMvQixJQUFJLEtBQUssS0FBSyxJQUFJO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM5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RyxtQkFBbUIsRUFBRSxpQkFHbkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsd0JBQXdCLENBQUM7c0xBR04sWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRSxPQUFPO3NCQUE5QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ssVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNPLE9BQU87c0JBQXRELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAbmctbmVzdC91aS90b29sdGlwJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYU2xpZGVyU2VsZWN0UHJvcGVydHksIFhTbGlkZXJTZWxlY3RQcmVmaXggfSBmcm9tICcuL3NsaWRlci1zZWxlY3QucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNFbXB0eSwgWElzVW5kZWZpbmVkLCBYUmVzaXplLCBYQ2xlYXJDbGFzcywgWENvbmZpZ1NlcnZpY2UsIFhSZXNpemVPYnNlcnZlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBDZGtEcmFnTW92ZSwgQ2RrRHJhZ1N0YXJ0LCBDZGtEcmFnRW5kIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYU2xpZGVyU2VsZWN0UHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NsaWRlci1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hWYWx1ZUFjY2Vzc29yKFhTbGlkZXJTZWxlY3RDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFNsaWRlclNlbGVjdENvbXBvbmVudCBleHRlbmRzIFhTbGlkZXJTZWxlY3RQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdzbGlkZXJTZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzbGlkZXJTZWxlY3QhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkcmFnUmVmJywgeyBzdGF0aWM6IHRydWUgfSkgZHJhZ1JlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3JhaWxSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSByYWlsUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncHJvY2Vzc1JlZicsIHsgc3RhdGljOiB0cnVlIH0pIHByb2Nlc3NSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKFhUb29sdGlwRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSB0b29sdGlwITogWFRvb2x0aXBEaXJlY3RpdmU7XHJcbiAgb2Zmc2V0OiBudW1iZXIgPSAwO1xyXG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtYW51YWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGFydCE6IG51bWJlcjtcclxuICBvdmVycmlkZSB2YWx1ZSA9IDA7XHJcbiAgZGlzcGxheVZhbHVlID0gJzAnO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIhOiBYUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gIG92ZXJyaWRlIGdldCByZXF1aXJlZElzRW1wdHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IgJiYgdGhpcy5yZXF1aXJlZCAmJiAoWElzRW1wdHkodGhpcy52YWx1ZSkgfHwgdGhpcy52YWx1ZSA9PT0gMCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgdmFsdWUgPSAwO1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXRMZWZ0KCk7XHJcbiAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEZsZXgodGhpcy5zbGlkZXJTZWxlY3QubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLnNldFByZWNpc2lvbigpO1xyXG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgWFJlc2l6ZSh0aGlzLnNsaWRlclNlbGVjdC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSlcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICB0aGlzLnNldExlZnQoKTtcclxuICAgICAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2UoKSB7XHJcbiAgICBjb25zdCB2YWwgPSBOdW1iZXIoKChOdW1iZXIodGhpcy5tYXgpIC0gTnVtYmVyKHRoaXMubWluKSkgKiBOdW1iZXIodGhpcy5vZmZzZXQpKSAvIDEwMCArIE51bWJlcih0aGlzLm1pbikpLnRvRml4ZWQoXHJcbiAgICAgIE51bWJlcih0aGlzLnByZWNpc2lvbilcclxuICAgICk7XHJcbiAgICB0aGlzLnZhbHVlID0gcGFyc2VGbG9hdCh2YWwpO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5VmFsdWUoKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICBYQ2xlYXJDbGFzcyh0aGlzLmxhYmVsTWFwKTtcclxuICAgIHRoaXMubGFiZWxNYXBbYHgtdGV4dC1hbGlnbi0ke3RoaXMubGFiZWxBbGlnbn1gXSA9IHRoaXMubGFiZWxBbGlnbiA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNldExlZnQoKSB7XHJcbiAgICB0aGlzLm9mZnNldCA9IE1hdGgucm91bmQoXHJcbiAgICAgICgodGhpcy52YWx1ZSArICh0aGlzLnJldmVyc2UgPyBOdW1iZXIodGhpcy5taW4pIDogLU51bWJlcih0aGlzLm1pbikpKSAqIDEwMCkgLyAoTnVtYmVyKHRoaXMubWF4KSAtIE51bWJlcih0aGlzLm1pbikpXHJcbiAgICApO1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLm9mZnNldDtcclxuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcclxuICAgIHRoaXMuc2V0RHJhZygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzcGxheVZhbHVlKCkge1xyXG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBOdW1iZXIodGhpcy52YWx1ZSkudG9GaXhlZChOdW1iZXIodGhpcy5wcmVjaXNpb24pKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFByZWNpc2lvbigpIHtcclxuICAgIGlmIChYSXNVbmRlZmluZWQodGhpcy5wcmVjaXNpb24pIHx8ICFYSXNFbXB0eSh0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGxldCBzdGVwU3RyID0gU3RyaW5nKHRoaXMuc3RlcCk7XHJcbiAgICAgIGxldCBpbmRleHBvaW50ID0gc3RlcFN0ci5pbmRleE9mKCcuJyk7XHJcbiAgICAgIGlmIChpbmRleHBvaW50ID09PSAtMSkge1xyXG4gICAgICAgIHRoaXMucHJlY2lzaW9uID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByZWNpc2lvbiA9IHN0ZXBTdHIubGVuZ3RoIC0gKGluZGV4cG9pbnQgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Jbm5lckNsaWNrKF8kZXZlbnQ6IE1vdXNlRXZlbnQpIHt9XHJcblxyXG4gIHN0YXJ0ZWQoZHJhZzogQ2RrRHJhZ1N0YXJ0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMub2Zmc2V0O1xyXG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xyXG4gICAgaWYgKHRoaXMuc2hvd1Rvb2x0aXApIHtcclxuICAgICAgdGhpcy5tYW51YWwgPSB0cnVlO1xyXG4gICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gICAgdGhpcy5kcmFnU3RhcnRFbWl0LmVtaXQoZHJhZyk7XHJcbiAgfVxyXG5cclxuICBtb3ZlZChkcmFnOiBDZGtEcmFnTW92ZSkge1xyXG4gICAgbGV0IHRyYW5zZm9ybSA9IGRyYWcuc291cmNlLmdldEZyZWVEcmFnUG9zaXRpb24oKTtcclxuICAgIHRoaXMuc2V0RHJhZyh0cmFuc2Zvcm0ueCk7XHJcbiAgICBkcmFnLnNvdXJjZS5yZXNldCgpO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Rvb2x0aXApIHtcclxuICAgICAgdGhpcy50b29sdGlwLnVwZGF0ZVBvcnRhbCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2UoKTtcclxuICAgIHRoaXMuZHJhZ01vdmVFbWl0LmVtaXQoZHJhZyk7XHJcbiAgfVxyXG5cclxuICBlbmRlZChkcmFnOiBDZGtEcmFnRW5kKSB7XHJcbiAgICBpZiAodGhpcy5zaG93VG9vbHRpcCkge1xyXG4gICAgICB0aGlzLm1hbnVhbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZHJhZ0VuZEVtaXQuZW1pdChkcmFnKTtcclxuICB9XHJcblxyXG4gIHNldERyYWcoZGlzdGFuY2U6IG51bWJlciA9IDApIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5yYWlsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XHJcbiAgICBsZXQgcmFpbEJveCA9IHRoaXMucmFpbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgbGV0IHN0ZXBXaWR0aCA9IHJhaWxCb3gud2lkdGggLyAoKE51bWJlcih0aGlzLm1heCkgLSBOdW1iZXIodGhpcy5taW4pKSAvIE51bWJlcih0aGlzLnN0ZXApKTtcclxuICAgIGxldCBvZmZzZXQgPSBNYXRoLmFicyhkaXN0YW5jZSAlIHN0ZXBXaWR0aCk7XHJcbiAgICBsZXQgZGlzID1cclxuICAgICAgb2Zmc2V0IDwgc3RlcFdpZHRoIC8gMlxyXG4gICAgICAgID8gZGlzdGFuY2UgPiAwXHJcbiAgICAgICAgICA/IGRpc3RhbmNlIC0gb2Zmc2V0XHJcbiAgICAgICAgICA6IGRpc3RhbmNlICsgb2Zmc2V0XHJcbiAgICAgICAgOiBkaXN0YW5jZSA+IDBcclxuICAgICAgICA/IGRpc3RhbmNlICsgc3RlcFdpZHRoIC0gb2Zmc2V0XHJcbiAgICAgICAgOiBkaXN0YW5jZSAtIHN0ZXBXaWR0aCArIG9mZnNldDtcclxuXHJcbiAgICBsZXQgeCA9ICh0aGlzLnN0YXJ0IC8gMTAwKSAqIHJhaWxCb3gud2lkdGggKyAodGhpcy5yZXZlcnNlID8gLWRpcyA6IGRpcyk7XHJcbiAgICB0aGlzLm9mZnNldCA9IE1hdGgucm91bmQoKHggLyByYWlsQm94LndpZHRoKSAqIDEwMCk7XHJcbiAgICBpZiAodGhpcy5yZXZlcnNlKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnUmVmLm5hdGl2ZUVsZW1lbnQsICdyaWdodCcsIGAke3RoaXMub2Zmc2V0fSVgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnUmVmLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgYCR7dGhpcy5vZmZzZXR9JWApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByb2Nlc3NSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7dGhpcy5vZmZzZXR9JWApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmRyYWdSZWYubmF0aXZlRWxlbWVudCwgJ3RyYW5zZm9ybScpO1xyXG4gIH1cclxuXHJcbiAgZm9ybUNvbnRyb2xDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgI3NsaWRlclNlbGVjdFxyXG4gIGNsYXNzPVwieC1zbGlkZXItc2VsZWN0XCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkgfHwgYWxpZ24gfHwgZGlyZWN0aW9uXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5XCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWRcIlxyXG4gIFtjbGFzcy54LXNsaWRlci1zZWxlY3QtcmV2ZXJzZV09XCJyZXZlcnNlXCJcclxuPlxyXG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW2NsYXNzLngtc2xpZGVyLXNlbGVjdC1sYWJlbC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtzdHlsZS53aWR0aF09XCJsYWJlbFdpZHRoXCIgW25nQ2xhc3NdPVwibGFiZWxNYXBcIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcbiAgPGRpdiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1pbm5lclwiICNpbm5lclJlZiAoY2xpY2spPVwib25Jbm5lckNsaWNrKCRldmVudClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtcmFpbFwiICNyYWlsUmVmPlxyXG4gICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LXRyYWNrXCIgI3RyYWNrUmVmPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LXByb2Nlc3NcIiAjcHJvY2Vzc1JlZj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1kcmFnc1wiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgI2RyYWdSZWZcclxuICAgICAgICBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1kcmFnXCJcclxuICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXHJcbiAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2Nka0RyYWdCb3VuZGFyeV09XCJpbm5lclJlZlwiXHJcbiAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cInN0YXJ0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJlbmRlZCgkZXZlbnQpXCJcclxuICAgICAgICAoY2RrRHJhZ01vdmVkKT1cIm1vdmVkKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgI3Rvb2x0aXBcclxuICAgICAgICAgIHgtdG9vbHRpcFxyXG4gICAgICAgICAgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtYnV0dG9uXCJcclxuICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNob3dUb29sdGlwXCJcclxuICAgICAgICAgIFtjb250ZW50XT1cImRpc3BsYXlWYWx1ZVwiXHJcbiAgICAgICAgICBbdmlzaWJsZV09XCJ2aXNpYmxlXCJcclxuICAgICAgICAgIFttYW51YWxdPVwibWFudWFsXCJcclxuICAgICAgICA+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
371
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9zbGlkZXItc2VsZWN0L3NsaWRlci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvc2xpZGVyLXNlbGVjdC9zbGlkZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixTQUFTLEVBR1QsV0FBVyxFQUNYLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUVwQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCxRQUFRLEVBQ1IsWUFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBR1gsU0FBUyxFQUNULFFBQVEsRUFDUixPQUFPLEVBQ1IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQXlDLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFdkQsTUFRYSxzQkFDWCxTQUFRLHFCQUFxQjtJQVE3QixJQUFtRCxXQUFXO1FBQzVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBOEJELElBQWEsZUFBZTtRQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFB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LENBQUM7aUlBNVdVLHNCQUFzQjtxSEFBdEIsc0JBQXNCLDBIQUZ0QixDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLGtsQkFrQnhDLE9BQU8sOERBSkosaUJBQWlCLHVFQ3pEakMscWlIQWtHQTs7U0RyRGEsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UsR0FBRyxtQkFBbUIsRUFBRSxpQkFHbkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsd0JBQXdCLENBQUM7c0xBTU4sWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNFLFlBQVk7c0JBQXhELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDQSxVQUFVO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0QsT0FBTztzQkFBOUMsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNLLFVBQVU7c0JBQXBELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDVSxXQUFXO3NCQUE3RCxXQUFXO3VCQUFDLGdDQUFnQztnQkFHWixRQUFRO3NCQUF4QyxZQUFZO3VCQUFDLGlCQUFpQjtnQkFJWCxPQUFPO3NCQUExQixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL3Rvb2x0aXAnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBRdWVyeUxpc3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBYU2xpZGVyU2VsZWN0UHJvcGVydHksXHJcbiAgWFNsaWRlclNlbGVjdFByZWZpeCxcclxuICBYU2xpZGVyU2VsZWN0TWFya1xyXG59IGZyb20gJy4vc2xpZGVyLXNlbGVjdC5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWElzVW5kZWZpbmVkLFxyXG4gIFhSZXNpemUsXHJcbiAgWENsZWFyQ2xhc3MsXHJcbiAgWENvbmZpZ1NlcnZpY2UsXHJcbiAgWFJlc2l6ZU9ic2VydmVyLFxyXG4gIFhJc051bWJlcixcclxuICBYSXNBcnJheSxcclxuICBYSXNOdWxsXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQsIENka0RyYWdFbmQsIENka0RyYWcgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgWFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hTbGlkZXJTZWxlY3RQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2xpZGVyLXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWFNsaWRlclNlbGVjdENvbXBvbmVudCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYU2xpZGVyU2VsZWN0Q29tcG9uZW50XHJcbiAgZXh0ZW5kcyBYU2xpZGVyU2VsZWN0UHJvcGVydHlcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XHJcbntcclxuICBAVmlld0NoaWxkKCdzbGlkZXJTZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzbGlkZXJTZWxlY3QhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkcmFnU3RhcnRSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcmFnU3RhcnRSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkcmFnRW5kUmVmJywgeyBzdGF0aWM6IHRydWUgfSkgZHJhZ0VuZFJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3JhaWxSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSByYWlsUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncHJvY2Vzc1JlZicsIHsgc3RhdGljOiB0cnVlIH0pIHByb2Nlc3NSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLngtc2xpZGVyLXNlbGVjdC12ZXJ0aWNhbCcpIGdldCBnZXRWZXJ0aWNhbCgpIHtcclxuICAgIHJldHVybiB0aGlzLnZlcnRpY2FsO1xyXG4gIH1cclxuICBAVmlld0NoaWxkcmVuKFhUb29sdGlwRGlyZWN0aXZlKSB0b29sdGlwcyE6IFF1ZXJ5TGlzdDxYVG9vbHRpcERpcmVjdGl2ZT47XHJcbiAgdG9vbHRpcFN0YXJ0ITogWFRvb2x0aXBEaXJlY3RpdmU7XHJcbiAgdG9vbHRpcEVuZCE6IFhUb29sdGlwRGlyZWN0aXZlO1xyXG5cclxuICBAVmlld0NoaWxkKENka0RyYWcpIGNka0RyYWchOiBDZGtEcmFnO1xyXG5cclxuICBvdmVycmlkZSB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10gPSBOdW1iZXIodGhpcy5taW4pO1xyXG5cclxuICBzdGFydE9mZnNldDogbnVtYmVyID0gMDtcclxuICBzdGFydFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGFydE1hbnVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0YXJ0ITogbnVtYmVyO1xyXG4gIHN0YXJ0RGlzcGxheVZhbHVlID0gJzAnO1xyXG4gIHNob3dTdGFydFRvb2x0aXAgPSB0cnVlO1xyXG5cclxuICBlbmRPZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgZW5kVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVuZE1hbnVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVuZCE6IG51bWJlcjtcclxuICBlbmREaXNwbGF5VmFsdWUgPSAnMCc7XHJcbiAgc2hvd0VuZFRvb2x0aXAgPSB0cnVlO1xyXG5cclxuICBtYXJrTGlzdDogWFNsaWRlclNlbGVjdE1hcmtbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyITogWFJlc2l6ZU9ic2VydmVyO1xyXG4gIGlzTnVtYmVyID0gdHJ1ZTtcclxuICBpc0FycmF5ID0gZmFsc2U7XHJcblxyXG4gIG92ZXJyaWRlIGdldCByZXF1aXJlZElzRW1wdHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IgJiYgdGhpcy5yZXF1aXJlZCAmJiAoWElzRW1wdHkodGhpcy52YWx1ZSkgfHwgdGhpcy52YWx1ZSA9PT0gMCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSkge1xyXG4gICAgaWYgKFhJc051bGwodmFsdWUpIHx8IFhJc1VuZGVmaW5lZCh2YWx1ZSkpIHtcclxuICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcclxuICAgICAgICB2YWx1ZSA9IFtOdW1iZXIodGhpcy5taW4pLCBOdW1iZXIodGhpcy5taW4pXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcih0aGlzLm1pbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuaXNOdW1iZXIgPSBYSXNOdW1iZXIodGhpcy52YWx1ZSkgJiYgIVhJc0FycmF5KHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5pc0FycmF5ID0gWElzQXJyYXkodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLnNldExlZnQoKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RmxleChcclxuICAgICAgdGhpcy5zbGlkZXJTZWxlY3QubmF0aXZlRWxlbWVudCxcclxuICAgICAgdGhpcy5yZW5kZXJlcixcclxuICAgICAgdGhpcy5qdXN0aWZ5LFxyXG4gICAgICB0aGlzLmFsaWduLFxyXG4gICAgICB0aGlzLmRpcmVjdGlvblxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0UHJlY2lzaW9uKCk7XHJcbiAgICB0aGlzLnNldE1hcmtzKCk7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBYUmVzaXplKHRoaXMuc2xpZGVyU2VsZWN0Lm5hdGl2ZUVsZW1lbnQpXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMCksIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSB4LnJlc2l6ZU9ic2VydmVyO1xyXG4gICAgICAgIHRoaXMuc2V0TGVmdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy50b29sdGlwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcFN0YXJ0ID0gdGhpcy50b29sdGlwcy5maXJzdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRvb2x0aXBzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy50b29sdGlwRW5kID0gdGhpcy50b29sdGlwcy5sYXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlKCkge1xyXG4gICAgY29uc3QgZ2V0VmFsID0gKG9mZnNldDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KFxyXG4gICAgICAgIE51bWJlcihcclxuICAgICAgICAgICgoTnVtYmVyKHRoaXMubWF4KSAtIE51bWJlcih0aGlzLm1pbikpICogTnVtYmVyKG9mZnNldCkpIC8gMTAwICsgTnVtYmVyKHRoaXMubWluKVxyXG4gICAgICAgICkudG9GaXhlZChOdW1iZXIodGhpcy5wcmVjaXNpb24pKVxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHN0YXJ0VmFsID0gZ2V0VmFsKHRoaXMuc3RhcnRPZmZzZXQpO1xyXG4gICAgaWYgKHRoaXMuaXNOdW1iZXIpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHN0YXJ0VmFsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZW5kVmFsID0gZ2V0VmFsKHRoaXMuZW5kT2Zmc2V0KTtcclxuICAgICAgaWYgKGVuZFZhbCA8IHN0YXJ0VmFsKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IFtlbmRWYWwsIHN0YXJ0VmFsXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gW3N0YXJ0VmFsLCBlbmRWYWxdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXREaXNwbGF5VmFsdWUoKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICBYQ2xlYXJDbGFzcyh0aGlzLmxhYmVsTWFwKTtcclxuICAgIHRoaXMubGFiZWxNYXBbYHgtdGV4dC1hbGlnbi0ke3RoaXMubGFiZWxBbGlnbn1gXSA9IHRoaXMubGFiZWxBbGlnbiA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldE9mZnNldCh2YWw6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQoXHJcbiAgICAgICgodmFsICsgKHRoaXMucmV2ZXJzZSA/IC1OdW1iZXIodGhpcy5taW4pIDogTnVtYmVyKHRoaXMubWluKSkpICogMTAwKSAvXHJcbiAgICAgICAgKE51bWJlcih0aGlzLm1heCkgLSBOdW1iZXIodGhpcy5taW4pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldExlZnQoKSB7XHJcbiAgICBsZXQgc3RhcnRWYWwgPSAwLFxyXG4gICAgICBlbmRWYWwgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLmlzTnVtYmVyKSB7XHJcbiAgICAgIHN0YXJ0VmFsID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XHJcbiAgICB9IGVsc2UgaWYgKFhJc0FycmF5KHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMSkge1xyXG4gICAgICBzdGFydFZhbCA9IHRoaXMudmFsdWVbMF07XHJcbiAgICAgIGVuZFZhbCA9IHRoaXMudmFsdWVbMV07XHJcblxyXG4gICAgICB0aGlzLmVuZE9mZnNldCA9IHRoaXMuZ2V0T2Zmc2V0KGVuZFZhbCk7XHJcbiAgICAgIGNvbnN0IGVuZCA9IHRoaXMuZW5kT2Zmc2V0O1xyXG4gICAgICB0aGlzLmVuZCA9IGVuZDtcclxuICAgIH1cclxuICAgIHRoaXMuc3RhcnRPZmZzZXQgPSB0aGlzLmdldE9mZnNldChzdGFydFZhbCk7XHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhcnRPZmZzZXQ7XHJcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XHJcblxyXG4gICAgdGhpcy5zZXREcmFnKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5VmFsdWUoKSB7XHJcbiAgICBjb25zdCBkaXNwbGF5VmFsID0gKHZhbDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiBOdW1iZXIodmFsKS50b0ZpeGVkKE51bWJlcih0aGlzLnByZWNpc2lvbikpO1xyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmlzTnVtYmVyKSB7XHJcbiAgICAgIHRoaXMuc3RhcnREaXNwbGF5VmFsdWUgPSBkaXNwbGF5VmFsKHRoaXMudmFsdWUgYXMgbnVtYmVyKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChYSXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGFydE9mZnNldCA+IHRoaXMuZW5kT2Zmc2V0KSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0RGlzcGxheVZhbHVlID0gZGlzcGxheVZhbCh0aGlzLnZhbHVlWzFdKTtcclxuICAgICAgICAgIHRoaXMuZW5kRGlzcGxheVZhbHVlID0gZGlzcGxheVZhbCh0aGlzLnZhbHVlWzBdKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdGFydERpc3BsYXlWYWx1ZSA9IGRpc3BsYXlWYWwodGhpcy52YWx1ZVswXSk7XHJcbiAgICAgICAgICB0aGlzLmVuZERpc3BsYXlWYWx1ZSA9IGRpc3BsYXlWYWwodGhpcy52YWx1ZVsxXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmVjaXNpb24oKSB7XHJcbiAgICBpZiAoWElzVW5kZWZpbmVkKHRoaXMucHJlY2lzaW9uKSB8fCAhWElzRW1wdHkodGhpcy5zdGVwKSkge1xyXG4gICAgICBsZXQgc3RlcFN0ciA9IFN0cmluZyh0aGlzLnN0ZXApO1xyXG4gICAgICBsZXQgaW5kZXhwb2ludCA9IHN0ZXBTdHIuaW5kZXhPZignLicpO1xyXG4gICAgICBpZiAoaW5kZXhwb2ludCA9PT0gLTEpIHtcclxuICAgICAgICB0aGlzLnByZWNpc2lvbiA9IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVjaXNpb24gPSBzdGVwU3RyLmxlbmd0aCAtIChpbmRleHBvaW50ICsgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE1hcmtzKCkge1xyXG4gICAgaWYgKCF0aGlzLm1hcmtzKSByZXR1cm47XHJcbiAgICBmb3IgKGxldCBtYXJrIG9mIHRoaXMubWFya3MpIHtcclxuICAgICAgY29uc3QgbWs6IFhTbGlkZXJTZWxlY3RNYXJrID0ge1xyXG4gICAgICAgIHZhbHVlOiBtYXJrLnZhbHVlLFxyXG4gICAgICAgIGxhYmVsOiBtYXJrLmxhYmVsLFxyXG4gICAgICAgIHN0eWxlOiB7IC4uLm1hcmsuc3R5bGUgfVxyXG4gICAgICB9O1xyXG4gICAgICBtay5vZmZzZXQgPSB0aGlzLmdldE9mZnNldChtYXJrLnZhbHVlKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnJldmVyc2UpIHtcclxuICAgICAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xyXG4gICAgICAgICAgbWsuc3R5bGUhWyd0b3AnXSA9IGAke21rLm9mZnNldH0lYDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbWsuc3R5bGUhWydyaWdodCddID0gYCR7bWsub2Zmc2V0fSVgO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xyXG4gICAgICAgICAgbWsuc3R5bGUhWydib3R0b20nXSA9IGAke21rLm9mZnNldH0lYDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbWsuc3R5bGUhWydsZWZ0J10gPSBgJHttay5vZmZzZXR9JWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubWFya0xpc3QucHVzaChtayk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydGVkKGRyYWc6IENka0RyYWdTdGFydCwgdHlwZTogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2JvdGgnID0gJ3N0YXJ0Jykge1xyXG4gICAgaWYgKFsnc3RhcnQnLCAnYm90aCddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydE9mZnNldDtcclxuICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xyXG4gICAgICBpZiAodGhpcy5zaG93U3RhcnRUb29sdGlwKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydE1hbnVhbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdGFydFZpc2libGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoWydlbmQnLCAnYm90aCddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgIGNvbnN0IGVuZCA9IHRoaXMuZW5kT2Zmc2V0O1xyXG4gICAgICB0aGlzLmVuZCA9IGVuZDtcclxuICAgICAgaWYgKHRoaXMuc2hvd0VuZFRvb2x0aXApIHtcclxuICAgICAgICB0aGlzLmVuZE1hbnVhbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lbmRWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gICAgdGhpcy5kcmFnU3RhcnRFbWl0LmVtaXQoZHJhZyk7XHJcbiAgfVxyXG5cclxuICBtb3ZlZChkcmFnOiBDZGtEcmFnTW92ZSwgdHlwZTogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2JvdGgnID0gJ3N0YXJ0Jykge1xyXG4gICAgbGV0IHRyYW5zZm9ybSA9IGRyYWcuc291cmNlLmdldEZyZWVEcmFnUG9zaXRpb24oKTtcclxuICAgIHRoaXMuc2V0RHJhZyh0aGlzLnZlcnRpY2FsID8gdHJhbnNmb3JtLnkgOiB0cmFuc2Zvcm0ueCwgdHlwZSk7XHJcbiAgICBkcmFnLnNvdXJjZS5yZXNldCgpO1xyXG4gICAgaWYgKFsnc3RhcnQnLCAnYm90aCddLmluY2x1ZGVzKHR5cGUpICYmIHRoaXMuc2hvd1N0YXJ0VG9vbHRpcCkge1xyXG4gICAgICB0aGlzLnRvb2x0aXBTdGFydC51cGRhdGVQb3J0YWwoKTtcclxuICAgIH1cclxuICAgIGlmIChbJ2VuZCcsICdib3RoJ10uaW5jbHVkZXModHlwZSkgJiYgdGhpcy5zaG93RW5kVG9vbHRpcCkge1xyXG4gICAgICB0aGlzLnRvb2x0aXBFbmQudXBkYXRlUG9ydGFsKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZSgpO1xyXG4gICAgdGhpcy5kcmFnTW92ZUVtaXQuZW1pdChkcmFnKTtcclxuICB9XHJcblxyXG4gIGVuZGVkKGRyYWc6IENka0RyYWdFbmQsIHR5cGU6ICdzdGFydCcgfCAnZW5kJyB8ICdib3RoJyA9ICdzdGFydCcpIHtcclxuICAgIGlmIChbJ3N0YXJ0JywgJ2JvdGgnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICBpZiAodGhpcy5zaG93U3RhcnRUb29sdGlwKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydE1hbnVhbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RhcnRWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChbJ2VuZCcsICdib3RoJ10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgaWYgKHRoaXMuc2hvd0VuZFRvb2x0aXApIHtcclxuICAgICAgICB0aGlzLmVuZE1hbnVhbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZW5kVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmRyYWdFbmRFbWl0LmVtaXQoZHJhZyk7XHJcbiAgfVxyXG5cclxuICBzZXREcmFnKGRpc3RhbmNlOiBudW1iZXIgPSAwLCB0eXBlOiAnc3RhcnQnIHwgJ2VuZCcgfCAnYm90aCcgPSAnYm90aCcpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5yYWlsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XHJcbiAgICBsZXQgcmFpbEJveCA9IHRoaXMucmFpbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgbGV0IHJhaWxCb3hMZW5ndGggPSB0aGlzLnZlcnRpY2FsID8gcmFpbEJveC5oZWlnaHQgOiByYWlsQm94LndpZHRoO1xyXG4gICAgbGV0IHN0ZXBMZW5ndGggPSByYWlsQm94TGVuZ3RoIC8gKChOdW1iZXIodGhpcy5tYXgpIC0gTnVtYmVyKHRoaXMubWluKSkgLyBOdW1iZXIodGhpcy5zdGVwKSk7XHJcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5hYnMoZGlzdGFuY2UgJSBzdGVwTGVuZ3RoKTtcclxuICAgIGxldCBkaXMgPVxyXG4gICAgICBvZmZzZXQgPCBzdGVwTGVuZ3RoIC8gMlxyXG4gICAgICAgID8gZGlzdGFuY2UgPiAwXHJcbiAgICAgICAgICA/IGRpc3RhbmNlIC0gb2Zmc2V0XHJcbiAgICAgICAgICA6IGRpc3RhbmNlICsgb2Zmc2V0XHJcbiAgICAgICAgOiBkaXN0YW5jZSA+IDBcclxuICAgICAgICA/IGRpc3RhbmNlICsgc3RlcExlbmd0aCAtIG9mZnNldFxyXG4gICAgICAgIDogZGlzdGFuY2UgLSBzdGVwTGVuZ3RoICsgb2Zmc2V0O1xyXG5cclxuICAgIGNvbnN0IHNldE9mZnNldCA9IChkOiBudW1iZXIpID0+IHtcclxuICAgICAgbGV0IHgxID0gKGQgLyAxMDApICogcmFpbEJveExlbmd0aDtcclxuICAgICAgaWYgKHRoaXMudmVydGljYWwpIHtcclxuICAgICAgICB4MSArPSB0aGlzLnJldmVyc2UgPyBkaXMgOiAtZGlzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHgxICs9IHRoaXMucmV2ZXJzZSA/IC1kaXMgOiBkaXM7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIE1hdGgucm91bmQoKHgxIC8gcmFpbEJveExlbmd0aCkgKiAxMDApO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ2JvdGgnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRPZmZzZXQgPSBzZXRPZmZzZXQodGhpcy5zdGFydCk7XHJcbiAgICAgIHRoaXMuZW5kT2Zmc2V0ID0gc2V0T2Zmc2V0KHRoaXMuZW5kKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICB0aGlzLnN0YXJ0T2Zmc2V0ID0gc2V0T2Zmc2V0KHRoaXMuc3RhcnQpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLmVuZE9mZnNldCA9IHNldE9mZnNldCh0aGlzLmVuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXREcmFnU3R5bGVzKCk7XHJcbiAgfVxyXG5cclxuICBzZXREcmFnU3R5bGVzKCkge1xyXG4gICAgaWYgKHRoaXMudmVydGljYWwpIHtcclxuICAgICAgaWYgKHRoaXMuaXNBcnJheSkge1xyXG4gICAgICAgIGNvbnN0IHdkID0gTWF0aC5hYnModGhpcy5lbmRPZmZzZXQgLSB0aGlzLnN0YXJ0T2Zmc2V0KTtcclxuICAgICAgICBjb25zdCBsdCA9IHRoaXMuZW5kT2Zmc2V0ID4gdGhpcy5zdGFydE9mZnNldCA/IHRoaXMuc3RhcnRPZmZzZXQgOiB0aGlzLmVuZE9mZnNldDtcclxuICAgICAgICBpZiAodGhpcy5yZXZlcnNlKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJhZ1N0YXJ0UmVmLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHt0aGlzLnN0YXJ0T2Zmc2V0fSVgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnRW5kUmVmLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHt0aGlzLmVuZE9mZnNldH0lYCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJvY2Vzc1JlZi5uYXRpdmVFbGVtZW50LCAndG9wJywgYCR7bHR9JWApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJhZ1N0YXJ0UmVmLm5hdGl2ZUVsZW1lbnQsICdib3R0b20nLCBgJHt0aGlzLnN0YXJ0T2Zmc2V0fSVgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnRW5kUmVmLm5hdGl2ZUVsZW1lbnQsICdib3R0b20nLCBgJHt0aGlzLmVuZE9mZnNldH0lYCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJvY2Vzc1JlZi5uYXRpdmVFbGVtZW50LCAnYm90dG9tJywgYCR7bHR9JWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJvY2Vzc1JlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYCR7d2R9JWApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLnJldmVyc2UpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnU3RhcnRSZWYubmF0aXZlRWxlbWVudCwgJ3RvcCcsIGAke3RoaXMuc3RhcnRPZmZzZXR9JWApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJhZ1N0YXJ0UmVmLm5hdGl2ZUVsZW1lbnQsICdib3R0b20nLCBgJHt0aGlzLnN0YXJ0T2Zmc2V0fSVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByb2Nlc3NSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke3RoaXMuc3RhcnRPZmZzZXR9JWApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5pc0FycmF5KSB7XHJcbiAgICAgICAgY29uc3Qgd2QgPSBNYXRoLmFicyh0aGlzLmVuZE9mZnNldCAtIHRoaXMuc3RhcnRPZmZzZXQpO1xyXG4gICAgICAgIGNvbnN0IGx0ID0gdGhpcy5lbmRPZmZzZXQgPiB0aGlzLnN0YXJ0T2Zmc2V0ID8gdGhpcy5zdGFydE9mZnNldCA6IHRoaXMuZW5kT2Zmc2V0O1xyXG4gICAgICAgIGlmICh0aGlzLnJldmVyc2UpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnU3RhcnRSZWYubmF0aXZlRWxlbWVudCwgJ3JpZ2h0JywgYCR7dGhpcy5zdGFydE9mZnNldH0lYCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJhZ0VuZFJlZi5uYXRpdmVFbGVtZW50LCAncmlnaHQnLCBgJHt0aGlzLmVuZE9mZnNldH0lYCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJvY2Vzc1JlZi5uYXRpdmVFbGVtZW50LCAncmlnaHQnLCBgJHtsdH0lYCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnU3RhcnRSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHt0aGlzLnN0YXJ0T2Zmc2V0fSVgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnRW5kUmVmLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgYCR7dGhpcy5lbmRPZmZzZXR9JWApO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByb2Nlc3NSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHtsdH0lYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcm9jZXNzUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3dkfSVgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5yZXZlcnNlKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJhZ1N0YXJ0UmVmLm5hdGl2ZUVsZW1lbnQsICdyaWdodCcsIGAke3RoaXMuc3RhcnRPZmZzZXR9JWApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJhZ1N0YXJ0UmVmLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgYCR7dGhpcy5zdGFydE9mZnNldH0lYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcm9jZXNzUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3RoaXMuc3RhcnRPZmZzZXR9JWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtQ29udHJvbENoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjc2xpZGVyU2VsZWN0XHJcbiAgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3RcIlxyXG4gIFtjbGFzcy54LWZsZXhdPVwianVzdGlmeSB8fCBhbGlnbiB8fCBkaXJlY3Rpb25cIlxyXG4gIFtjbGFzcy54LWRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICBbY2xhc3MueC1yZXF1aXJlZF09XCJyZXF1aXJlZElzRW1wdHlcIlxyXG4gIFtjbGFzcy54LWludmFsaWRdPVwiaW52YWxpZFwiXHJcbiAgW2NsYXNzLngtc2xpZGVyLXNlbGVjdC1yZXZlcnNlXT1cInJldmVyc2VcIlxyXG4gIFtjbGFzcy54LXNsaWRlci1zZWxlY3QtcmFuZ2VdPVwicmFuZ2VcIlxyXG4+XHJcbiAgPGxhYmVsXHJcbiAgICAqbmdJZj1cImxhYmVsXCJcclxuICAgIFtjbGFzcy54LXNsaWRlci1zZWxlY3QtbGFiZWwtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgW3N0eWxlLndpZHRoXT1cImxhYmVsV2lkdGhcIlxyXG4gICAgW25nQ2xhc3NdPVwibGFiZWxNYXBcIlxyXG4gICAgPnt7IGxhYmVsIH19PC9sYWJlbFxyXG4gID5cclxuICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LWlubmVyXCIgI2lubmVyUmVmPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1yYWlsXCIgI3JhaWxSZWY+XHJcbiAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtZHJhZ3NcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC10cmFja1wiICN0cmFja1JlZj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAjcHJvY2Vzc1JlZlxyXG4gICAgICAgICAgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtcHJvY2Vzc1wiXHJcbiAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICBbY2RrRHJhZ0xvY2tBeGlzXT1cInZlcnRpY2FsID8gJ3knIDogJ3gnXCJcclxuICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgIXJhbmdlXCJcclxuICAgICAgICAgIFtjZGtEcmFnQm91bmRhcnldPVwidHJhY2tSZWZcIlxyXG4gICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cInN0YXJ0ZWQoJGV2ZW50LCAnYm90aCcpXCJcclxuICAgICAgICAgIChjZGtEcmFnRW5kZWQpPVwiZW5kZWQoJGV2ZW50LCAnYm90aCcpXCJcclxuICAgICAgICAgIChjZGtEcmFnTW92ZWQpPVwibW92ZWQoJGV2ZW50LCAnYm90aCcpXCJcclxuICAgICAgICA+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LW1hcmtzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1tYXJrXCIgW25nU3R5bGVdPVwibWFyay5zdHlsZVwiICpuZ0Zvcj1cImxldCBtYXJrIG9mIG1hcmtMaXN0XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1tYXJrLWxhYmVsXCI+e3sgbWFyay5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAjZHJhZ1N0YXJ0UmVmXHJcbiAgICAgICAgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtZHJhZ1wiXHJcbiAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgIFtjZGtEcmFnTG9ja0F4aXNdPVwidmVydGljYWwgPyAneScgOiAneCdcIlxyXG4gICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtjZGtEcmFnQm91bmRhcnldPVwiaW5uZXJSZWZcIlxyXG4gICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJzdGFydGVkKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChjZGtEcmFnRW5kZWQpPVwiZW5kZWQoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJtb3ZlZCgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICN0b29sdGlwU3RhcnRcclxuICAgICAgICAgIHgtdG9vbHRpcFxyXG4gICAgICAgICAgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgIGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LWJ1dHRvblwiXHJcbiAgICAgICAgICBbY2xhc3MueC1zbGlkZXItc2VsZWN0LWJ1dHRvbi1hY3RpdmVkXT1cInN0YXJ0VmlzaWJsZVwiXHJcbiAgICAgICAgICBbY2xhc3MueC1zbGlkZXItc2VsZWN0LWN1c3RvbS1idXR0b25dPVwiY3VzdG9tQnV0dG9uXCJcclxuICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNob3dUb29sdGlwICYmICFzaG93U3RhcnRUb29sdGlwXCJcclxuICAgICAgICAgIFtjb250ZW50XT1cInN0YXJ0RGlzcGxheVZhbHVlXCJcclxuICAgICAgICAgIFt2aXNpYmxlXT1cInN0YXJ0VmlzaWJsZVwiXHJcbiAgICAgICAgICBbbWFudWFsXT1cInN0YXJ0TWFudWFsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiY3VzdG9tQnV0dG9uXCI+e3sgY3VzdG9tQnV0dG9uIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgW2hpZGRlbl09XCIhcmFuZ2VcIlxyXG4gICAgICAgICNkcmFnRW5kUmVmXHJcbiAgICAgICAgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtZHJhZ1wiXHJcbiAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgIFtjZGtEcmFnTG9ja0F4aXNdPVwidmVydGljYWwgPyAneScgOiAneCdcIlxyXG4gICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtjZGtEcmFnQm91bmRhcnldPVwiaW5uZXJSZWZcIlxyXG4gICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJzdGFydGVkKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cImVuZGVkKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAoY2RrRHJhZ01vdmVkKT1cIm1vdmVkKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICN0b29sdGlwRW5kXHJcbiAgICAgICAgICB4LXRvb2x0aXBcclxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1idXR0b25cIlxyXG4gICAgICAgICAgW2NsYXNzLngtc2xpZGVyLXNlbGVjdC1idXR0b24tYWN0aXZlZF09XCJlbmRWaXNpYmxlXCJcclxuICAgICAgICAgIFtjbGFzcy54LXNsaWRlci1zZWxlY3QtY3VzdG9tLWJ1dHRvbl09XCJjdXN0b21CdXR0b25cIlxyXG4gICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2hvd1Rvb2x0aXAgJiYgIXNob3dFbmRUb29sdGlwXCJcclxuICAgICAgICAgIFtjb250ZW50XT1cImVuZERpc3BsYXlWYWx1ZVwiXHJcbiAgICAgICAgICBbdmlzaWJsZV09XCJlbmRWaXNpYmxlXCJcclxuICAgICAgICAgIFttYW51YWxdPVwiZW5kTWFudWFsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiY3VzdG9tQnV0dG9uXCI+e3sgY3VzdG9tQnV0dG9uIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|