@tolle_/tolle-ui 0.0.19-beta → 0.0.22-beta
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/esm2022/lib/badge.component.mjs +4 -4
- package/esm2022/lib/button.component.mjs +18 -13
- package/esm2022/lib/card.component.mjs +3 -3
- package/esm2022/lib/data-table.component.mjs +1 -1
- package/esm2022/lib/date-picker.component.mjs +2 -2
- package/esm2022/lib/date-range-picker.component.mjs +1 -1
- package/esm2022/lib/input.component.mjs +125 -32
- package/esm2022/lib/masked-input.component.mjs +118 -30
- package/esm2022/lib/multi-select.component.mjs +1 -1
- package/esm2022/lib/otp-slot.component.mjs +35 -23
- package/esm2022/lib/select.component.mjs +38 -9
- package/esm2022/lib/textarea.component.mjs +130 -26
- package/esm2022/lib/theme.service.mjs +283 -75
- package/fesm2022/tolle-ui.mjs +751 -212
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/button.component.d.ts +2 -3
- package/lib/input.component.d.ts +11 -3
- package/lib/masked-input.component.d.ts +7 -1
- package/lib/otp-slot.component.d.ts +1 -0
- package/lib/select.component.d.ts +1 -0
- package/lib/textarea.component.d.ts +8 -1
- package/lib/theme.service.d.ts +46 -3
- package/package.json +1 -1
- package/preset.js +47 -33
- package/theme.css +204 -168
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, forwardRef } from '@angular/core';
|
|
1
|
+
import { Component, Input, forwardRef, ViewChild } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
4
|
import { cn } from './utils/cn';
|
|
@@ -7,6 +7,7 @@ import * as i1 from "@angular/common";
|
|
|
7
7
|
import * as i2 from "@angular/forms";
|
|
8
8
|
export class InputComponent {
|
|
9
9
|
cdr;
|
|
10
|
+
inputElement;
|
|
10
11
|
id = `input-${Math.random().toString(36).substr(2, 9)}`;
|
|
11
12
|
label = '';
|
|
12
13
|
hint = '';
|
|
@@ -20,12 +21,20 @@ export class InputComponent {
|
|
|
20
21
|
disabled = false;
|
|
21
22
|
readonly = false;
|
|
22
23
|
error = false;
|
|
24
|
+
// Focus behavior
|
|
25
|
+
hideHintOnFocus = true;
|
|
23
26
|
value = '';
|
|
24
27
|
onChange = () => { };
|
|
25
28
|
onTouched = () => { };
|
|
29
|
+
isFocused = false;
|
|
26
30
|
constructor(cdr) {
|
|
27
31
|
this.cdr = cdr;
|
|
28
32
|
}
|
|
33
|
+
ngAfterViewInit() {
|
|
34
|
+
if (this.inputElement?.nativeElement.hasAttribute('autofocus')) {
|
|
35
|
+
setTimeout(() => this.inputElement.nativeElement.focus());
|
|
36
|
+
}
|
|
37
|
+
}
|
|
29
38
|
writeValue(value) {
|
|
30
39
|
this.value = value;
|
|
31
40
|
this.cdr.markForCheck();
|
|
@@ -43,66 +52,132 @@ export class InputComponent {
|
|
|
43
52
|
this.value = val;
|
|
44
53
|
this.onChange(val);
|
|
45
54
|
}
|
|
55
|
+
onFocus() {
|
|
56
|
+
this.isFocused = true;
|
|
57
|
+
}
|
|
58
|
+
onBlur() {
|
|
59
|
+
this.isFocused = false;
|
|
60
|
+
this.onTouched();
|
|
61
|
+
}
|
|
62
|
+
focusInput() {
|
|
63
|
+
if (!this.disabled && this.inputElement) {
|
|
64
|
+
this.inputElement.nativeElement.focus();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
46
67
|
cn = cn;
|
|
68
|
+
get computedLabelClass() {
|
|
69
|
+
return cn("text-sm font-medium text-foreground leading-none transition-opacity duration-200", this.disabled && "opacity-50");
|
|
70
|
+
}
|
|
47
71
|
get computedContainerClass() {
|
|
48
|
-
return cn(
|
|
72
|
+
return cn(
|
|
73
|
+
// Base styles
|
|
74
|
+
"group relative flex items-center w-full rounded-md border transition-all duration-200", "bg-background",
|
|
75
|
+
// Border and shadow
|
|
76
|
+
"border-input shadow-sm",
|
|
49
77
|
// Sizing
|
|
50
|
-
this.size === 'xs' && "h-8 px-2 gap-1.5", this.size === 'sm' && "h-9 px-3 gap-2", this.size === 'default' && "h-10 px-3 gap-2", this.size === 'lg' && "h-11 px-4 gap-3",
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
78
|
+
this.size === 'xs' && "h-8 px-2 gap-1.5 text-xs", this.size === 'sm' && "h-9 px-3 gap-2 text-sm", this.size === 'default' && "h-10 px-3 gap-2 text-sm", this.size === 'lg' && "h-11 px-4 gap-3 text-base",
|
|
79
|
+
// Focus state - SIMPLE AND ELEGANT LIKE ZARDUI
|
|
80
|
+
// The magic happens in CSS: border darkens automatically on focus
|
|
81
|
+
!(this.readonly || this.disabled) && [
|
|
82
|
+
"focus-within:border-primary/80",
|
|
83
|
+
"focus-within:ring-4",
|
|
84
|
+
"focus-within:ring-ring/30",
|
|
85
|
+
"focus-within:ring-offset-0",
|
|
86
|
+
"focus-within:shadow-none",
|
|
87
|
+
],
|
|
88
|
+
// Error state
|
|
89
|
+
this.error && [
|
|
90
|
+
"border-destructive",
|
|
91
|
+
!(this.readonly || this.disabled) && [
|
|
92
|
+
"focus-within:border-destructive/80",
|
|
93
|
+
"focus-within:ring-destructive/30"
|
|
94
|
+
]
|
|
95
|
+
],
|
|
96
|
+
// Disabled state
|
|
97
|
+
this.disabled && [
|
|
98
|
+
"cursor-not-allowed opacity-50",
|
|
99
|
+
"border-opacity-50"
|
|
100
|
+
],
|
|
101
|
+
// Readonly state
|
|
102
|
+
this.readonly && [
|
|
103
|
+
"cursor-default",
|
|
104
|
+
"border-dashed",
|
|
105
|
+
!this.disabled && "focus-within:ring-0 focus-within:border-opacity-100"
|
|
106
|
+
], this.containerClass);
|
|
57
107
|
}
|
|
58
108
|
get computedInputClass() {
|
|
59
|
-
return cn(
|
|
109
|
+
return cn(
|
|
110
|
+
// Base styles
|
|
111
|
+
"flex-1 bg-transparent border-none p-0", "placeholder:text-muted-foreground",
|
|
112
|
+
// Remove all default focus styles
|
|
113
|
+
"focus:outline-none focus:ring-0 focus:shadow-none",
|
|
114
|
+
// Text sizing
|
|
115
|
+
this.size === 'xs' && "text-xs", this.size === 'sm' && "text-sm", this.size === 'default' && "text-sm", this.size === 'lg' && "text-base",
|
|
116
|
+
// Cursor states
|
|
117
|
+
this.disabled && "cursor-not-allowed", this.readonly && "cursor-default",
|
|
118
|
+
// Text color
|
|
119
|
+
"text-foreground",
|
|
120
|
+
// Selection color
|
|
121
|
+
"selection:bg-primary/20 selection:text-foreground", this.class);
|
|
60
122
|
}
|
|
61
123
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InputComponent, isStandalone: true, selector: "tolle-input", inputs: { id: "id", label: "label", hint: "hint", errorMessage: "errorMessage", type: "type", placeholder: "placeholder", size: "size", containerClass: "containerClass", class: "class", disabled: "disabled", readonly: "readonly", error: "error" }, providers: [
|
|
124
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InputComponent, isStandalone: true, selector: "tolle-input", inputs: { id: "id", label: "label", hint: "hint", errorMessage: "errorMessage", type: "type", placeholder: "placeholder", size: "size", containerClass: "containerClass", class: "class", disabled: "disabled", readonly: "readonly", error: "error", hideHintOnFocus: "hideHintOnFocus" }, providers: [
|
|
63
125
|
{
|
|
64
126
|
provide: NG_VALUE_ACCESSOR,
|
|
65
127
|
useExisting: forwardRef(() => InputComponent),
|
|
66
128
|
multi: true
|
|
67
129
|
}
|
|
68
|
-
], ngImport: i0, template: `
|
|
130
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: `
|
|
69
131
|
<div class="flex flex-col gap-1.5 w-full">
|
|
70
132
|
<label
|
|
71
133
|
*ngIf="label"
|
|
72
134
|
[for]="id"
|
|
73
|
-
[class
|
|
74
|
-
class="text-sm font-medium text-foreground leading-none transition-opacity"
|
|
75
|
-
>
|
|
135
|
+
[class]="computedLabelClass">
|
|
76
136
|
{{ label }}
|
|
77
137
|
</label>
|
|
78
138
|
|
|
79
|
-
<div
|
|
80
|
-
|
|
139
|
+
<div
|
|
140
|
+
[class]="computedContainerClass"
|
|
141
|
+
(click)="focusInput()"
|
|
142
|
+
>
|
|
143
|
+
<div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
|
|
81
144
|
<ng-content select="[prefix]"></ng-content>
|
|
82
145
|
</div>
|
|
83
146
|
|
|
84
147
|
<input
|
|
148
|
+
#inputElement
|
|
85
149
|
[id]="id"
|
|
86
150
|
[type]="type"
|
|
87
151
|
[placeholder]="placeholder"
|
|
88
152
|
[disabled]="disabled"
|
|
89
153
|
[readOnly]="readonly"
|
|
90
154
|
[(ngModel)]="value"
|
|
91
|
-
(blur)="
|
|
155
|
+
(blur)="onBlur()"
|
|
156
|
+
(focus)="onFocus()"
|
|
92
157
|
(input)="onInputChange($event)"
|
|
93
158
|
[class]="computedInputClass"
|
|
159
|
+
[attr.aria-invalid]="error"
|
|
160
|
+
[attr.aria-describedby]="error && errorMessage ? id + '-error' : null"
|
|
94
161
|
/>
|
|
95
162
|
|
|
96
|
-
<div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors">
|
|
163
|
+
<div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
|
|
97
164
|
<ng-content select="[suffix]"></ng-content>
|
|
98
165
|
</div>
|
|
99
166
|
</div>
|
|
100
167
|
|
|
101
168
|
<ng-container *ngIf="!disabled">
|
|
102
|
-
<p
|
|
169
|
+
<p
|
|
170
|
+
*ngIf="hint && !error"
|
|
171
|
+
class="text-xs text-muted-foreground px-1 transition-opacity duration-200"
|
|
172
|
+
[class.opacity-0]="isFocused && hideHintOnFocus"
|
|
173
|
+
>
|
|
103
174
|
{{ hint }}
|
|
104
175
|
</p>
|
|
105
|
-
<p
|
|
176
|
+
<p
|
|
177
|
+
*ngIf="error && errorMessage"
|
|
178
|
+
[id]="id + '-error'"
|
|
179
|
+
class="text-xs text-destructive px-1"
|
|
180
|
+
>
|
|
106
181
|
{{ errorMessage }}
|
|
107
182
|
</p>
|
|
108
183
|
</ng-container>
|
|
@@ -127,46 +202,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
127
202
|
<label
|
|
128
203
|
*ngIf="label"
|
|
129
204
|
[for]="id"
|
|
130
|
-
[class
|
|
131
|
-
class="text-sm font-medium text-foreground leading-none transition-opacity"
|
|
132
|
-
>
|
|
205
|
+
[class]="computedLabelClass">
|
|
133
206
|
{{ label }}
|
|
134
207
|
</label>
|
|
135
208
|
|
|
136
|
-
<div
|
|
137
|
-
|
|
209
|
+
<div
|
|
210
|
+
[class]="computedContainerClass"
|
|
211
|
+
(click)="focusInput()"
|
|
212
|
+
>
|
|
213
|
+
<div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
|
|
138
214
|
<ng-content select="[prefix]"></ng-content>
|
|
139
215
|
</div>
|
|
140
216
|
|
|
141
217
|
<input
|
|
218
|
+
#inputElement
|
|
142
219
|
[id]="id"
|
|
143
220
|
[type]="type"
|
|
144
221
|
[placeholder]="placeholder"
|
|
145
222
|
[disabled]="disabled"
|
|
146
223
|
[readOnly]="readonly"
|
|
147
224
|
[(ngModel)]="value"
|
|
148
|
-
(blur)="
|
|
225
|
+
(blur)="onBlur()"
|
|
226
|
+
(focus)="onFocus()"
|
|
149
227
|
(input)="onInputChange($event)"
|
|
150
228
|
[class]="computedInputClass"
|
|
229
|
+
[attr.aria-invalid]="error"
|
|
230
|
+
[attr.aria-describedby]="error && errorMessage ? id + '-error' : null"
|
|
151
231
|
/>
|
|
152
232
|
|
|
153
|
-
<div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors">
|
|
233
|
+
<div class="flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
|
|
154
234
|
<ng-content select="[suffix]"></ng-content>
|
|
155
235
|
</div>
|
|
156
236
|
</div>
|
|
157
237
|
|
|
158
238
|
<ng-container *ngIf="!disabled">
|
|
159
|
-
<p
|
|
239
|
+
<p
|
|
240
|
+
*ngIf="hint && !error"
|
|
241
|
+
class="text-xs text-muted-foreground px-1 transition-opacity duration-200"
|
|
242
|
+
[class.opacity-0]="isFocused && hideHintOnFocus"
|
|
243
|
+
>
|
|
160
244
|
{{ hint }}
|
|
161
245
|
</p>
|
|
162
|
-
<p
|
|
246
|
+
<p
|
|
247
|
+
*ngIf="error && errorMessage"
|
|
248
|
+
[id]="id + '-error'"
|
|
249
|
+
class="text-xs text-destructive px-1"
|
|
250
|
+
>
|
|
163
251
|
{{ errorMessage }}
|
|
164
252
|
</p>
|
|
165
253
|
</ng-container>
|
|
166
254
|
</div>
|
|
167
255
|
`,
|
|
168
256
|
}]
|
|
169
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: {
|
|
257
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { inputElement: [{
|
|
258
|
+
type: ViewChild,
|
|
259
|
+
args: ['inputElement']
|
|
260
|
+
}], id: [{
|
|
170
261
|
type: Input
|
|
171
262
|
}], label: [{
|
|
172
263
|
type: Input
|
|
@@ -190,5 +281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
190
281
|
type: Input
|
|
191
282
|
}], error: [{
|
|
192
283
|
type: Input
|
|
284
|
+
}], hideHintOnFocus: [{
|
|
285
|
+
type: Input
|
|
193
286
|
}] } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7O0FBeURoQyxNQUFNLE9BQU8sY0FBYztJQW9CTDtJQW5CWCxFQUFFLEdBQVcsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoRSxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLElBQUksR0FBVyxFQUFFLENBQUM7SUFDbEIsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixJQUFJLEdBQVcsTUFBTSxDQUFDO0lBQ3RCLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsSUFBSSxHQUFtQyxTQUFTLENBQUM7SUFDakQsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1QixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBRTVCLGFBQWE7SUFDSixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUVoQyxLQUFLLEdBQVEsRUFBRSxDQUFDO0lBQ2hCLFFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUUx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LFVBQVUsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDOzRCQUM3QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVDtpQkFDRjtzRkFFVSxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEuNSB3LWZ1bGxcIj5cbiAgICAgIDxsYWJlbFxuICAgICAgICAqbmdJZj1cImxhYmVsXCJcbiAgICAgICAgW2Zvcl09XCJpZFwiXG4gICAgICAgIFtjbGFzcy5vcGFjaXR5LTUwXT1cImRpc2FibGVkXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCBsZWFkaW5nLW5vbmUgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgID5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ29udGFpbmVyQ2xhc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBncm91cC1mb2N1cy13aXRoaW46dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3ByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtjbGFzc109XCJjb21wdXRlZElucHV0Q2xhc3NcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc2FibGVkXCI+XG4gICAgICAgIDxwICpuZ0lmPVwiaGludCAmJiAhZXJyb3JcIiBjbGFzcz1cInRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHB4LTFcIj5cbiAgICAgICAgICB7eyBoaW50IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgKm5nSWY9XCJlcnJvciAmJiBlcnJvck1lc3NhZ2VcIiBjbGFzcz1cInRleHQteHMgdGV4dC1kZXN0cnVjdGl2ZSBweC0xXCI+XG4gICAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGBpbnB1dC0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSAndGV4dCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAvLyBOZXcgU3RhdGVzXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgdmFsdWU6IGFueSA9ICcnO1xuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCB2YWwgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNuID0gY247XG5cbiAgZ2V0IGNvbXB1dGVkQ29udGFpbmVyQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJncm91cCByZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgdHJhbnNpdGlvbi1hbGwgc2hhZG93LXNtXCIsXG4gICAgICBcImJnLWJhY2tncm91bmQgcmluZy1vZmZzZXQtYmFja2dyb3VuZFwiLFxuXG4gICAgICAvLyBTaXppbmdcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3hzJyAmJiBcImgtOCBweC0yIGdhcC0xLjVcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3NtJyAmJiBcImgtOSBweC0zIGdhcC0yXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdkZWZhdWx0JyAmJiBcImgtMTAgcHgtMyBnYXAtMlwiLFxuICAgICAgdGhpcy5zaXplID09PSAnbGcnICYmIFwiaC0xMSBweC00IGdhcC0zXCIsXG5cbiAgICAgIC8vIEludGVyYWN0aW9uIFN0YXRlcyAoRm9jdXMgcmluZyBkaXNhYmxlZCBmb3IgUmVhZG9ubHkvRGlzYWJsZWQpXG4gICAgICAhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkgJiYgXCJmb2N1cy13aXRoaW46cmluZy0yIGZvY3VzLXdpdGhpbjpyaW5nLXJpbmcgZm9jdXMtd2l0aGluOnJpbmctb2Zmc2V0LTFcIixcblxuICAgICAgLy8gQ29sb3JzICYgQm9yZGVyc1xuICAgICAgdGhpcy5lcnJvciA/IFwiYm9yZGVyLWRlc3RydWN0aXZlIGZvY3VzLXdpdGhpbjpyaW5nLWRlc3RydWN0aXZlXCIgOiBcImJvcmRlci1pbnB1dFwiLFxuXG4gICAgICAvLyBEaXNhYmxlZCB2cyBSZWFkb25seSBzdHlsaW5nXG4gICAgICB0aGlzLmRpc2FibGVkICYmIFwiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTBcIixcbiAgICAgIHRoaXMucmVhZG9ubHkgJiYgXCJjdXJzb3ItZGVmYXVsdCBib3JkZXItZGFzaGVkIGZvY3VzLXdpdGhpbjpyaW5nLTBcIixcblxuICAgICAgdGhpcy5jb250YWluZXJDbGFzc1xuICAgICk7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRJbnB1dENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIFwiZmxleC0xIGJnLXRyYW5zcGFyZW50IGJvcmRlci1ub25lIHAtMCB0ZXh0LXNtIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgXCJ0ZXh0LXhzXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdsZycgJiYgXCJ0ZXh0LWJhc2VcIixcbiAgICAgIHRoaXMuZGlzYWJsZWQgJiYgXCJjdXJzb3Itbm90LWFsbG93ZWRcIixcbiAgICAgIHRoaXMucmVhZG9ubHkgJiYgXCJjdXJzb3ItZGVmYXVsdFwiLFxuICAgICAgdGhpcy5jbGFzc1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFpQyxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFzRWhDLE1BQU0sT0FBTyxjQUFjO0lBMEJMO0lBekJPLFlBQVksQ0FBZ0M7SUFFOUQsRUFBRSxHQUFXLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEUsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsSUFBSSxHQUFXLE1BQU0sQ0FBQztJQUN0QixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLElBQUksR0FBbUMsU0FBUyxDQUFDO0lBQ2pELGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUU1QixhQUFhO0lBQ0osUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEtBQUssR0FBWSxLQUFLLENBQUM7SUFFaEMsaUJBQWlCO0lBQ1IsZUFBZSxHQUFZLElBQUksQ0FBQztJQUV6QyxLQUFLLEdBQVEsRUFBRSxDQUFDO0lBQ2hCLFFBQVEsR0FBUSxHQUFH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURULDJEQS9EUyxZQUFZLGtJQUFFLFdBQVc7OzRGQWlFeEIsY0FBYztrQkFwRTFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDOzRCQUM3QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RFQ7aUJBQ0Y7c0ZBRTRCLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMS41IHctZnVsbFwiPlxuICAgICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwibGFiZWxcIlxuICAgICAgICBbZm9yXT1cImlkXCJcbiAgICAgICAgW2NsYXNzXT1cImNvbXB1dGVkTGFiZWxDbGFzc1wiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3NdPVwiY29tcHV0ZWRDb250YWluZXJDbGFzc1wiXG4gICAgICAgIChjbGljayk9XCJmb2N1c0lucHV0KClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGdyb3VwLWZvY3VzLXdpdGhpbjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3ByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbY2xhc3NdPVwiY29tcHV0ZWRJbnB1dENsYXNzXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiZXJyb3JcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZXJyb3IgJiYgZXJyb3JNZXNzYWdlID8gaWQgKyAnLWVycm9yJyA6IG51bGxcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNhYmxlZFwiPlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwiaGludCAmJiAhZXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQgcHgtMSB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwXCJcbiAgICAgICAgICBbY2xhc3Mub3BhY2l0eS0wXT1cImlzRm9jdXNlZCAmJiBoaWRlSGludE9uRm9jdXNcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaGludCB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJlcnJvciAmJiBlcnJvck1lc3NhZ2VcIlxuICAgICAgICAgIFtpZF09XCJpZCArICctZXJyb3InXCJcbiAgICAgICAgICBjbGFzcz1cInRleHQteHMgdGV4dC1kZXN0cnVjdGl2ZSBweC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGBpbnB1dC0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSAndGV4dCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAvLyBOZXcgU3RhdGVzXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gRm9jdXMgYmVoYXZpb3JcbiAgQElucHV0KCkgaGlkZUhpbnRPbkZvY3VzOiBib29sZWFuID0gdHJ1ZTtcblxuICB2YWx1ZTogYW55ID0gJyc7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcbiAgaXNGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdhdXRvZm9jdXMnKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCkpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCB2YWwgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICB9XG5cbiAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY24gPSBjbjtcblxuICBnZXQgY29tcHV0ZWRMYWJlbENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIFwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmQgbGVhZGluZy1ub25lIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDBcIixcbiAgICAgIHRoaXMuZGlzYWJsZWQgJiYgXCJvcGFjaXR5LTUwXCJcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkQ29udGFpbmVyQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gQmFzZSBzdHlsZXNcbiAgICAgIFwiZ3JvdXAgcmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFwiLFxuICAgICAgXCJiZy1iYWNrZ3JvdW5kXCIsXG5cbiAgICAgIC8vIEJvcmRlciBhbmQgc2hhZG93XG4gICAgICBcImJvcmRlci1pbnB1dCBzaGFkb3ctc21cIixcblxuICAgICAgLy8gU2l6aW5nXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgXCJoLTggcHgtMiBnYXAtMS41IHRleHQteHNcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3NtJyAmJiBcImgtOSBweC0zIGdhcC0yIHRleHQtc21cIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2RlZmF1bHQnICYmIFwiaC0xMCBweC0zIGdhcC0yIHRleHQtc21cIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2xnJyAmJiBcImgtMTEgcHgtNCBnYXAtMyB0ZXh0LWJhc2VcIixcblxuICAgICAgLy8gRm9jdXMgc3RhdGUgLSBTSU1QTEUgQU5EIEVMRUdBTlQgTElLRSBaQVJEVUlcbiAgICAgIC8vIFRoZSBtYWdpYyBoYXBwZW5zIGluIENTUzogYm9yZGVyIGRhcmtlbnMgYXV0b21hdGljYWxseSBvbiBmb2N1c1xuICAgICAgISh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpICYmIFtcbiAgICAgICAgXCJmb2N1cy13aXRoaW46Ym9yZGVyLXByaW1hcnkvODBcIixcbiAgICAgICAgXCJmb2N1cy13aXRoaW46cmluZy00XCIsXG4gICAgICAgIFwiZm9jdXMtd2l0aGluOnJpbmctcmluZy8zMFwiLFxuICAgICAgICBcImZvY3VzLXdpdGhpbjpyaW5nLW9mZnNldC0wXCIsXG4gICAgICAgIFwiZm9jdXMtd2l0aGluOnNoYWRvdy1ub25lXCIsXG4gICAgICBdLFxuXG4gICAgICAvLyBFcnJvciBzdGF0ZVxuICAgICAgdGhpcy5lcnJvciAmJiBbXG4gICAgICAgIFwiYm9yZGVyLWRlc3RydWN0aXZlXCIsXG4gICAgICAgICEodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSAmJiBbXG4gICAgICAgICAgXCJmb2N1cy13aXRoaW46Ym9yZGVyLWRlc3RydWN0aXZlLzgwXCIsXG4gICAgICAgICAgXCJmb2N1cy13aXRoaW46cmluZy1kZXN0cnVjdGl2ZS8zMFwiXG4gICAgICAgIF1cbiAgICAgIF0sXG5cbiAgICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgICB0aGlzLmRpc2FibGVkICYmIFtcbiAgICAgICAgXCJjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MFwiLFxuICAgICAgICBcImJvcmRlci1vcGFjaXR5LTUwXCJcbiAgICAgIF0sXG5cbiAgICAgIC8vIFJlYWRvbmx5IHN0YXRlXG4gICAgICB0aGlzLnJlYWRvbmx5ICYmIFtcbiAgICAgICAgXCJjdXJzb3ItZGVmYXVsdFwiLFxuICAgICAgICBcImJvcmRlci1kYXNoZWRcIixcbiAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiYgXCJmb2N1cy13aXRoaW46cmluZy0wIGZvY3VzLXdpdGhpbjpib3JkZXItb3BhY2l0eS0xMDBcIlxuICAgICAgXSxcblxuICAgICAgdGhpcy5jb250YWluZXJDbGFzc1xuICAgICk7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRJbnB1dENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIC8vIEJhc2Ugc3R5bGVzXG4gICAgICBcImZsZXgtMSBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSBwLTBcIixcbiAgICAgIFwicGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG5cbiAgICAgIC8vIFJlbW92ZSBhbGwgZGVmYXVsdCBmb2N1cyBzdHlsZXNcbiAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpzaGFkb3ctbm9uZVwiLFxuXG4gICAgICAvLyBUZXh0IHNpemluZ1xuICAgICAgdGhpcy5zaXplID09PSAneHMnICYmIFwidGV4dC14c1wiLFxuICAgICAgdGhpcy5zaXplID09PSAnc20nICYmIFwidGV4dC1zbVwiLFxuICAgICAgdGhpcy5zaXplID09PSAnZGVmYXVsdCcgJiYgXCJ0ZXh0LXNtXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdsZycgJiYgXCJ0ZXh0LWJhc2VcIixcblxuICAgICAgLy8gQ3Vyc29yIHN0YXRlc1xuICAgICAgdGhpcy5kaXNhYmxlZCAmJiBcImN1cnNvci1ub3QtYWxsb3dlZFwiLFxuICAgICAgdGhpcy5yZWFkb25seSAmJiBcImN1cnNvci1kZWZhdWx0XCIsXG5cbiAgICAgIC8vIFRleHQgY29sb3JcbiAgICAgIFwidGV4dC1mb3JlZ3JvdW5kXCIsXG5cbiAgICAgIC8vIFNlbGVjdGlvbiBjb2xvclxuICAgICAgXCJzZWxlY3Rpb246YmctcHJpbWFyeS8yMCBzZWxlY3Rpb246dGV4dC1mb3JlZ3JvdW5kXCIsXG5cbiAgICAgIHRoaXMuY2xhc3NcbiAgICApO1xuICB9XG59XG4iXX0=
|