@pecb-ui/components 1.1.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +556 -556
- package/fesm2022/pecb-ui-components.mjs +998 -1907
- package/fesm2022/pecb-ui-components.mjs.map +1 -1
- package/index.d.ts +2439 -3
- package/package.json +6 -8
- package/esm2022/lib/components/button/button.component.mjs +0 -171
- package/esm2022/lib/components/card/card.component.mjs +0 -182
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -126
- package/esm2022/lib/components/datepicker/datepicker.component.mjs +0 -349
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -329
- package/esm2022/lib/components/input/input.component.mjs +0 -321
- package/esm2022/lib/components/pagination/pagination.component.mjs +0 -197
- package/esm2022/lib/components/radio/radio.component.mjs +0 -147
- package/esm2022/lib/components/right-modal/right-modal.component.mjs +0 -234
- package/esm2022/lib/components/sidebar/sidebar.component.mjs +0 -155
- package/esm2022/lib/components/status/status.component.mjs +0 -50
- package/esm2022/lib/components/tab/tab.component.mjs +0 -151
- package/esm2022/lib/components/table/table.component.mjs +0 -503
- package/esm2022/lib/components/toggle/toggle.component.mjs +0 -126
- package/esm2022/lib/pecb-components.module.mjs +0 -118
- package/esm2022/lib/services/loading.service.mjs +0 -182
- package/esm2022/lib/services/notification.service.mjs +0 -144
- package/esm2022/lib/services/theme.service.mjs +0 -232
- package/esm2022/lib/shared/interfaces/component.interfaces.mjs +0 -2
- package/esm2022/lib/shared/types/common.types.mjs +0 -6
- package/esm2022/lib/shared/utils/accessibility.utils.mjs +0 -223
- package/esm2022/lib/shared/utils/dom.utils.mjs +0 -240
- package/esm2022/lib/shared/utils/error.utils.mjs +0 -277
- package/esm2022/lib/shared/utils/string.utils.mjs +0 -204
- package/esm2022/pecb-ui-components.mjs +0 -5
- package/esm2022/public-api.mjs +0 -53
- package/lib/components/button/button.component.d.ts +0 -130
- package/lib/components/card/card.component.d.ts +0 -140
- package/lib/components/checkbox/checkbox.component.d.ts +0 -74
- package/lib/components/datepicker/datepicker.component.d.ts +0 -155
- package/lib/components/dropdown/dropdown.component.d.ts +0 -144
- package/lib/components/input/input.component.d.ts +0 -215
- package/lib/components/pagination/pagination.component.d.ts +0 -53
- package/lib/components/radio/radio.component.d.ts +0 -93
- package/lib/components/right-modal/right-modal.component.d.ts +0 -137
- package/lib/components/sidebar/sidebar.component.d.ts +0 -97
- package/lib/components/status/status.component.d.ts +0 -19
- package/lib/components/tab/tab.component.d.ts +0 -102
- package/lib/components/table/table.component.d.ts +0 -403
- package/lib/components/toggle/toggle.component.d.ts +0 -74
- package/lib/pecb-components.module.d.ts +0 -37
- package/lib/services/loading.service.d.ts +0 -129
- package/lib/services/notification.service.d.ts +0 -136
- package/lib/services/theme.service.d.ts +0 -142
- package/lib/shared/interfaces/component.interfaces.d.ts +0 -283
- package/lib/shared/types/common.types.d.ts +0 -86
- package/lib/shared/utils/accessibility.utils.d.ts +0 -167
- package/lib/shared/utils/dom.utils.d.ts +0 -108
- package/lib/shared/utils/error.utils.d.ts +0 -191
- package/lib/shared/utils/string.utils.d.ts +0 -144
- package/public-api.d.ts +0 -24
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, forwardRef, ViewChild } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import { generateUniqueId } from '../../shared/utils/dom.utils';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/platform-browser";
|
|
7
|
-
import * as i2 from "@angular/common";
|
|
8
|
-
/**
|
|
9
|
-
* A professional input component with floating label and multiple types.
|
|
10
|
-
* Fully accessible with WCAG 2.1 AA compliance and reactive forms support.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```html
|
|
14
|
-
* <pecb-input
|
|
15
|
-
* label="Email"
|
|
16
|
-
* type="email"
|
|
17
|
-
* placeholder="Enter your email"
|
|
18
|
-
* [(ngModel)]="email"
|
|
19
|
-
* ></pecb-input>
|
|
20
|
-
*
|
|
21
|
-
* <!-- With predefined icon -->
|
|
22
|
-
* <pecb-input
|
|
23
|
-
* label="Email"
|
|
24
|
-
* type="email"
|
|
25
|
-
* icon="email"
|
|
26
|
-
* iconPosition="left"
|
|
27
|
-
* ></pecb-input>
|
|
28
|
-
*
|
|
29
|
-
* <!-- With custom SVG icon -->
|
|
30
|
-
* <pecb-input
|
|
31
|
-
* label="Phone"
|
|
32
|
-
* type="tel"
|
|
33
|
-
* [icon]="'<svg>...</svg>'"
|
|
34
|
-
* iconPosition="left"
|
|
35
|
-
* ></pecb-input>
|
|
36
|
-
*
|
|
37
|
-
* <!-- With error state -->
|
|
38
|
-
* <pecb-input
|
|
39
|
-
* label="Password"
|
|
40
|
-
* type="password"
|
|
41
|
-
* [error]="true"
|
|
42
|
-
* errorMessage="Password is required"
|
|
43
|
-
* ></pecb-input>
|
|
44
|
-
* ```
|
|
45
|
-
*
|
|
46
|
-
* @publicApi
|
|
47
|
-
*/
|
|
48
|
-
export class InputComponent {
|
|
49
|
-
constructor(cdr, sanitizer) {
|
|
50
|
-
this.cdr = cdr;
|
|
51
|
-
this.sanitizer = sanitizer;
|
|
52
|
-
/**
|
|
53
|
-
* Unique ID for the input element
|
|
54
|
-
*/
|
|
55
|
-
this.id = generateUniqueId('input');
|
|
56
|
-
/**
|
|
57
|
-
* Input type
|
|
58
|
-
*/
|
|
59
|
-
this.type = 'text';
|
|
60
|
-
/**
|
|
61
|
-
* Placeholder text (shown when label is not present)
|
|
62
|
-
*/
|
|
63
|
-
this.placeholder = '';
|
|
64
|
-
/**
|
|
65
|
-
* The size of the input
|
|
66
|
-
*/
|
|
67
|
-
this.size = 'md';
|
|
68
|
-
/**
|
|
69
|
-
* Whether the field is required
|
|
70
|
-
*/
|
|
71
|
-
this.required = false;
|
|
72
|
-
/**
|
|
73
|
-
* Whether the input is disabled
|
|
74
|
-
*/
|
|
75
|
-
this.disabled = false;
|
|
76
|
-
/**
|
|
77
|
-
* Whether the input is readonly
|
|
78
|
-
*/
|
|
79
|
-
this.readonly = false;
|
|
80
|
-
/**
|
|
81
|
-
* Whether to show error state
|
|
82
|
-
*/
|
|
83
|
-
this.error = false;
|
|
84
|
-
/**
|
|
85
|
-
* Icon position (left or right)
|
|
86
|
-
*/
|
|
87
|
-
this.iconPosition = 'left';
|
|
88
|
-
/**
|
|
89
|
-
* Whether to show clear button
|
|
90
|
-
*/
|
|
91
|
-
this.clearable = false;
|
|
92
|
-
/**
|
|
93
|
-
* Event emitted when value changes
|
|
94
|
-
*/
|
|
95
|
-
this.valueChange = new EventEmitter();
|
|
96
|
-
/**
|
|
97
|
-
* Event emitted on blur
|
|
98
|
-
*/
|
|
99
|
-
this.blurred = new EventEmitter();
|
|
100
|
-
/**
|
|
101
|
-
* Event emitted on focus
|
|
102
|
-
*/
|
|
103
|
-
this.focused = new EventEmitter();
|
|
104
|
-
/**
|
|
105
|
-
* Event emitted when clear button is clicked
|
|
106
|
-
*/
|
|
107
|
-
this.cleared = new EventEmitter();
|
|
108
|
-
// Internal state
|
|
109
|
-
this.value = '';
|
|
110
|
-
this.isFocused = false;
|
|
111
|
-
this.showPassword = false;
|
|
112
|
-
// ControlValueAccessor
|
|
113
|
-
this.onChange = () => { };
|
|
114
|
-
this.onTouched = () => { };
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Get CSS classes for the input wrapper
|
|
118
|
-
*/
|
|
119
|
-
get wrapperClasses() {
|
|
120
|
-
return [
|
|
121
|
-
'pecb-input',
|
|
122
|
-
`pecb-input--${this.size}`,
|
|
123
|
-
this.disabled ? 'pecb-input--disabled' : '',
|
|
124
|
-
this.error ? 'pecb-input--error' : '',
|
|
125
|
-
this.readonly ? 'pecb-input--readonly' : '',
|
|
126
|
-
this.isFocused ? 'pecb-input--focused' : '',
|
|
127
|
-
this.value ? 'pecb-input--has-value' : ''
|
|
128
|
-
].filter(Boolean);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Get the actual input type (handles password visibility toggle)
|
|
132
|
-
*/
|
|
133
|
-
get inputType() {
|
|
134
|
-
if (this.type === 'password' && this.showPassword) {
|
|
135
|
-
return 'text';
|
|
136
|
-
}
|
|
137
|
-
return this.type;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Check if clear button should be shown
|
|
141
|
-
*/
|
|
142
|
-
get showClearButton() {
|
|
143
|
-
return this.clearable && !!this.value && !this.disabled && !this.readonly;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Check if password toggle should be shown
|
|
147
|
-
*/
|
|
148
|
-
get showPasswordToggle() {
|
|
149
|
-
return this.type === 'password' && !!this.value && !this.disabled && !this.readonly;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Get computed left icon
|
|
153
|
-
*/
|
|
154
|
-
get computedLeftIcon() {
|
|
155
|
-
// New API takes precedence
|
|
156
|
-
if (this.icon && this.iconPosition === 'left') {
|
|
157
|
-
return this.icon;
|
|
158
|
-
}
|
|
159
|
-
// Fallback to old API
|
|
160
|
-
return this.leftIcon;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Get computed right icon
|
|
164
|
-
*/
|
|
165
|
-
get computedRightIcon() {
|
|
166
|
-
// New API takes precedence
|
|
167
|
-
if (this.icon && this.iconPosition === 'right') {
|
|
168
|
-
return this.icon;
|
|
169
|
-
}
|
|
170
|
-
// Fallback to old API
|
|
171
|
-
return this.rightIcon;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Handle input change
|
|
175
|
-
*/
|
|
176
|
-
onInput(event) {
|
|
177
|
-
const target = event.target;
|
|
178
|
-
this.value = target.value;
|
|
179
|
-
this.onChange(this.value);
|
|
180
|
-
this.valueChange.emit(this.value);
|
|
181
|
-
this.cdr.markForCheck();
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Handle focus event
|
|
185
|
-
*/
|
|
186
|
-
onFocus() {
|
|
187
|
-
this.isFocused = true;
|
|
188
|
-
this.focused.emit();
|
|
189
|
-
this.cdr.markForCheck();
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Handle blur event
|
|
193
|
-
*/
|
|
194
|
-
onBlur() {
|
|
195
|
-
this.isFocused = false;
|
|
196
|
-
this.onTouched();
|
|
197
|
-
this.blurred.emit();
|
|
198
|
-
this.cdr.markForCheck();
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Clear input value
|
|
202
|
-
*/
|
|
203
|
-
clearValue(event) {
|
|
204
|
-
event.stopPropagation();
|
|
205
|
-
this.value = '';
|
|
206
|
-
this.onChange(this.value);
|
|
207
|
-
this.valueChange.emit(this.value);
|
|
208
|
-
this.cleared.emit();
|
|
209
|
-
this.inputElement?.nativeElement.focus();
|
|
210
|
-
this.cdr.markForCheck();
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Toggle password visibility
|
|
214
|
-
*/
|
|
215
|
-
togglePasswordVisibility(event) {
|
|
216
|
-
event.stopPropagation();
|
|
217
|
-
this.showPassword = !this.showPassword;
|
|
218
|
-
this.cdr.markForCheck();
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Focus the input
|
|
222
|
-
*/
|
|
223
|
-
focus() {
|
|
224
|
-
this.inputElement?.nativeElement.focus();
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Sanitize custom icon HTML/SVG
|
|
228
|
-
*/
|
|
229
|
-
sanitizeIcon(icon) {
|
|
230
|
-
if (!icon)
|
|
231
|
-
return '';
|
|
232
|
-
return this.sanitizer.bypassSecurityTrustHtml(icon);
|
|
233
|
-
}
|
|
234
|
-
// ControlValueAccessor implementation
|
|
235
|
-
writeValue(value) {
|
|
236
|
-
this.value = value || '';
|
|
237
|
-
this.cdr.markForCheck();
|
|
238
|
-
}
|
|
239
|
-
registerOnChange(fn) {
|
|
240
|
-
this.onChange = fn;
|
|
241
|
-
}
|
|
242
|
-
registerOnTouched(fn) {
|
|
243
|
-
this.onTouched = fn;
|
|
244
|
-
}
|
|
245
|
-
setDisabledState(isDisabled) {
|
|
246
|
-
this.disabled = isDisabled;
|
|
247
|
-
this.cdr.markForCheck();
|
|
248
|
-
}
|
|
249
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
250
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputComponent, isStandalone: true, selector: "pecb-input", inputs: { id: "id", type: "type", label: "label", placeholder: "placeholder", size: "size", required: "required", disabled: "disabled", readonly: "readonly", error: "error", errorMessage: "errorMessage", helperText: "helperText", icon: "icon", iconPosition: "iconPosition", leftIcon: "leftIcon", rightIcon: "rightIcon", clearable: "clearable", maxLength: "maxLength", min: "min", max: "max", step: "step", autocomplete: "autocomplete" }, outputs: { valueChange: "valueChange", blurred: "blurred", focused: "focused", cleared: "cleared" }, providers: [
|
|
251
|
-
{
|
|
252
|
-
provide: NG_VALUE_ACCESSOR,
|
|
253
|
-
useExisting: forwardRef(() => InputComponent),
|
|
254
|
-
multi: true
|
|
255
|
-
}
|
|
256
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div [class]=\"wrapperClasses.join(' ')\">\r\n <!-- Input Wrapper -->\r\n <div class=\"pecb-input__wrapper\">\r\n <!-- Left Icon -->\r\n <span\r\n *ngIf=\"computedLeftIcon\"\r\n class=\"pecb-input__icon pecb-input__icon--left\"\r\n aria-hidden=\"true\"\r\n >\r\n <ng-container [ngSwitch]=\"computedLeftIcon\">\r\n <svg *ngSwitchCase=\"'email'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M2 3H14C14.55 3 15 3.45 15 4V12C15 12.55 14.55 13 14 13H2C1.45 13 1 12.55 1 12V4C1 3.45 1.45 3 2 3ZM8 8.5L2.5 5V11.5H13.5V5L8 8.5ZM8 7L13.5 3.5H2.5L8 7Z\"/>\r\n </svg>\r\n <svg *ngSwitchCase=\"'search'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z\"/>\r\n </svg>\r\n <svg *ngSwitchCase=\"'user'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 8C10.21 8 12 6.21 12 4C12 1.79 10.21 0 8 0C5.79 0 4 1.79 4 4C4 6.21 5.79 8 8 8ZM8 10C5.33 10 0 11.34 0 14V16H16V14C16 11.34 10.67 10 8 10Z\"/>\r\n </svg>\r\n <span *ngSwitchDefault [innerHTML]=\"sanitizeIcon(computedLeftIcon)\"></span>\r\n </ng-container>\r\n </span>\r\n\r\n <!-- Input -->\r\n <input\r\n #inputElement\r\n [id]=\"id\"\r\n [type]=\"inputType\"\r\n class=\"pecb-input__field\"\r\n [value]=\"value\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n [attr.maxlength]=\"maxLength\"\r\n [attr.min]=\"min\"\r\n [attr.max]=\"max\"\r\n [attr.step]=\"step\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [attr.aria-label]=\"label || placeholder\"\r\n [attr.aria-required]=\"required\"\r\n [attr.aria-invalid]=\"error\"\r\n [attr.aria-describedby]=\"helperText || errorMessage ? id + '-description' : null\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <!-- Floating Label -->\r\n <label\r\n *ngIf=\"label\"\r\n [attr.for]=\"id\"\r\n class=\"pecb-input__label\"\r\n >\r\n {{ label }}<span *ngIf=\"required\" class=\"pecb-input__required\">*</span>\r\n </label>\r\n\r\n <!-- Clear Button -->\r\n <button\r\n *ngIf=\"showClearButton\"\r\n type=\"button\"\r\n class=\"pecb-input__icon pecb-input__icon--clear\"\r\n [attr.aria-label]=\"'Clear input'\"\r\n (click)=\"clearValue($event)\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 0C3.6 0 0 3.6 0 8C0 12.4 3.6 16 8 16C12.4 16 16 12.4 16 8C16 3.6 12.4 0 8 0ZM11.5 10.1L10.1 11.5L8 9.4L5.9 11.5L4.5 10.1L6.6 8L4.5 5.9L5.9 4.5L8 6.6L10.1 4.5L11.5 5.9L9.4 8L11.5 10.1Z\"/>\r\n </svg>\r\n </button>\r\n\r\n <!-- Password Toggle -->\r\n <button\r\n *ngIf=\"showPasswordToggle\"\r\n type=\"button\"\r\n class=\"pecb-input__icon pecb-input__icon--password\"\r\n [attr.aria-label]=\"showPassword ? 'Hide password' : 'Show password'\"\r\n (click)=\"togglePasswordVisibility($event)\"\r\n >\r\n <svg *ngIf=\"!showPassword\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 3C4.5 3 1.5 5.5 0 8C1.5 10.5 4.5 13 8 13C11.5 13 14.5 10.5 16 8C14.5 5.5 11.5 3 8 3ZM8 11C6.34 11 5 9.66 5 8C5 6.34 6.34 5 8 5C9.66 5 11 6.34 11 8C11 9.66 9.66 11 8 11ZM8 6.5C7.17 6.5 6.5 7.17 6.5 8C6.5 8.83 7.17 9.5 8 9.5C8.83 9.5 9.5 8.83 9.5 8C9.5 7.17 8.83 6.5 8 6.5Z\"/>\r\n </svg>\r\n <svg *ngIf=\"showPassword\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 3C11.5 3 14.5 5.5 16 8C15.4 9.1 14.5 10 13.5 10.7L11.9 9.1C12.3 8.8 12.5 8.4 12.5 8C12.5 6.62 11.38 5.5 10 5.5C9.6 5.5 9.2 5.7 8.9 5.9L7.3 4.3C7.5 4.1 7.7 4 8 4C8 4 8 4 8 3ZM1.3 2.3L3 4C1.8 4.9 0.8 6.1 0 8C1.5 10.5 4.5 13 8 13C9.3 13 10.5 12.6 11.6 12L13.7 14.1L15.1 12.7L2.7 0.3L1.3 2.3ZM5.5 6.8L7.2 8.5C7.1 8.6 7 8.8 7 9C7 9.83 7.67 10.5 8.5 10.5C8.7 10.5 8.9 10.4 9 10.3L10.7 12C9.9 12.3 9 12.5 8 12.5C4.5 12.5 1.5 10 0 7.5C0.7 6.4 1.6 5.4 2.7 4.8L5.5 6.8Z\"/>\r\n </svg>\r\n </button>\r\n\r\n <!-- Right Icon -->\r\n <span\r\n *ngIf=\"computedRightIcon && !showClearButton && !showPasswordToggle\"\r\n class=\"pecb-input__icon pecb-input__icon--right\"\r\n aria-hidden=\"true\"\r\n >\r\n <ng-container [ngSwitch]=\"computedRightIcon\">\r\n <svg *ngSwitchCase=\"'email'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M2 3H14C14.55 3 15 3.45 15 4V12C15 12.55 14.55 13 14 13H2C1.45 13 1 12.55 1 12V4C1 3.45 1.45 3 2 3ZM8 8.5L2.5 5V11.5H13.5V5L8 8.5ZM8 7L13.5 3.5H2.5L8 7Z\"/>\r\n </svg>\r\n <svg *ngSwitchCase=\"'search'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z\"/>\r\n </svg>\r\n <svg *ngSwitchCase=\"'user'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 8C10.21 8 12 6.21 12 4C12 1.79 10.21 0 8 0C5.79 0 4 1.79 4 4C4 6.21 5.79 8 8 8ZM8 10C5.33 10 0 11.34 0 14V16H16V14C16 11.34 10.67 10 8 10Z\"/>\r\n </svg>\r\n <span *ngSwitchDefault [innerHTML]=\"sanitizeIcon(computedRightIcon)\"></span>\r\n </ng-container>\r\n </span>\r\n </div>\r\n\r\n <!-- Helper Text / Error Message -->\r\n <div\r\n *ngIf=\"helperText || errorMessage\"\r\n [id]=\"id + '-description'\"\r\n class=\"pecb-input__description\"\r\n [class.pecb-input__description--error]=\"error && errorMessage\"\r\n >\r\n <span *ngIf=\"error && errorMessage\">{{ errorMessage }}</span>\r\n <span *ngIf=\"!error && helperText\">{{ helperText }}</span>\r\n </div>\r\n</div>\r\n", styles: [".pecb-input{position:relative;display:flex;flex-direction:column;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;width:100%}.pecb-input__wrapper{position:relative;display:flex;align-items:center}.pecb-input__label{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:14px;font-weight:400;color:#919191;background-color:transparent;padding:0 4px;pointer-events:none;z-index:1;transition:top .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1),font-size .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),font-weight .2s cubic-bezier(.4,0,.2,1)}.pecb-input__required{color:#dc3545;margin-left:2px}.pecb-input__field:focus~.pecb-input__label,.pecb-input--focused .pecb-input__label,.pecb-input--has-value .pecb-input__label{top:0;transform:translateY(-50%) scale(1);font-size:12px;color:#a11e29;background-color:#fff;font-weight:500}.pecb-input--error .pecb-input__field:focus~.pecb-input__label,.pecb-input--error.pecb-input--focused .pecb-input__label,.pecb-input--error.pecb-input--has-value .pecb-input__label{color:#dc3545}.pecb-input--disabled .pecb-input__label{color:#919191}.pecb-input--disabled .pecb-input__field:focus~.pecb-input__label,.pecb-input--disabled.pecb-input--focused .pecb-input__label,.pecb-input--disabled.pecb-input--has-value .pecb-input__label{background-color:#ececec}.pecb-input--sm .pecb-input__label,.pecb-input--md .pecb-input__label{left:12px}.pecb-input--lg .pecb-input__label{left:16px}.pecb-input__field{flex:1;width:100%;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:400;color:#313131;background-color:#fff;border:1px solid #c2c2c2;border-radius:8px;outline:none;transition-property:border-color,box-shadow;transition-duration:.25s ease-in-out;transition-timing-function:ease-in-out}.pecb-input__field::placeholder{color:#919191;opacity:0;transition:opacity .2s}.pecb-input__field:focus::placeholder{opacity:1}.pecb-input__field:hover:not(:disabled):not(:focus){border-color:#919191}.pecb-input__field:focus{border-color:#a11e29;box-shadow:0 0 0 3px #a11e291a}.pecb-input__field:disabled{background-color:#ececec;color:#919191;cursor:not-allowed;border-color:#c2c2c2}.pecb-input__field:read-only{background-color:#ececec;cursor:default}.pecb-input--error .pecb-input__field{border-color:#dc3545}.pecb-input--error .pecb-input__field:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a}.pecb-input__icon{position:absolute;display:inline-flex;align-items:center;justify-content:center;color:#616161;background:none;border:none;cursor:pointer;padding:0;transition-property:color,opacity,transform;transition-duration:.25s ease-in-out;transition-timing-function:ease-in-out}.pecb-input__icon svg{flex-shrink:0}.pecb-input__icon--left{left:12px;pointer-events:none}.pecb-input__icon--right{right:12px;pointer-events:none}.pecb-input__icon--clear,.pecb-input__icon--password{right:12px;opacity:0;transform:scale(.8);pointer-events:none;color:#919191}.pecb-input__icon--clear:hover,.pecb-input__icon--password:hover{color:#313131}.pecb-input__icon--clear:hover{color:#dc3545}.pecb-input__icon:hover:not(:disabled){color:#313131}.pecb-input__icon:disabled{color:#919191;cursor:not-allowed}.pecb-input--has-value .pecb-input__icon--clear,.pecb-input--has-value .pecb-input__icon--password{opacity:1;transform:scale(1);pointer-events:auto}.pecb-input--sm .pecb-input__field{padding:8px 12px;font-size:12px;height:32px}.pecb-input--sm .pecb-input__label{left:12px;font-size:12px}.pecb-input--sm .pecb-input__field:focus~.pecb-input__label,.pecb-input--sm.pecb-input--focused .pecb-input__label,.pecb-input--sm.pecb-input--has-value .pecb-input__label{font-size:10px}.pecb-input--sm .pecb-input__icon svg{width:14px;height:14px}.pecb-input--sm .pecb-input__icon--left{left:8px}.pecb-input--sm .pecb-input__icon--right,.pecb-input--sm .pecb-input__icon--clear,.pecb-input--sm .pecb-input__icon--password{right:8px}.pecb-input--sm:has(.pecb-input__icon--left) .pecb-input__field{padding-left:28px}.pecb-input--sm:has(.pecb-input__icon--left) .pecb-input__label{left:28px}.pecb-input--sm:has(.pecb-input__icon--right) .pecb-input__field,.pecb-input--sm.pecb-input--has-value .pecb-input__field{padding-right:32px}.pecb-input--md .pecb-input__field{padding:12px;font-size:14px;height:40px}.pecb-input--md .pecb-input__label{left:12px;font-size:14px}.pecb-input--md .pecb-input__field:focus~.pecb-input__label,.pecb-input--md.pecb-input--focused .pecb-input__label,.pecb-input--md.pecb-input--has-value .pecb-input__label{font-size:12px}.pecb-input--md .pecb-input__icon svg{width:16px;height:16px}.pecb-input--md .pecb-input__icon--left{left:12px}.pecb-input--md .pecb-input__icon--right,.pecb-input--md .pecb-input__icon--clear,.pecb-input--md .pecb-input__icon--password{right:12px}.pecb-input--md:has(.pecb-input__icon--left) .pecb-input__field{padding-left:36px}.pecb-input--md:has(.pecb-input__icon--left) .pecb-input__label{left:36px}.pecb-input--md:has(.pecb-input__icon--right) .pecb-input__field,.pecb-input--md.pecb-input--has-value .pecb-input__field{padding-right:40px}.pecb-input--lg .pecb-input__field{padding:16px;font-size:16px;height:48px}.pecb-input--lg .pecb-input__label{left:16px;font-size:16px}.pecb-input--lg .pecb-input__field:focus~.pecb-input__label,.pecb-input--lg.pecb-input--focused .pecb-input__label,.pecb-input--lg.pecb-input--has-value .pecb-input__label{font-size:13px}.pecb-input--lg .pecb-input__icon svg{width:18px;height:18px}.pecb-input--lg .pecb-input__icon--left{left:16px}.pecb-input--lg .pecb-input__icon--right,.pecb-input--lg .pecb-input__icon--clear,.pecb-input--lg .pecb-input__icon--password{right:16px}.pecb-input--lg:has(.pecb-input__icon--left) .pecb-input__field{padding-left:44px}.pecb-input--lg:has(.pecb-input__icon--left) .pecb-input__label{left:44px}.pecb-input--lg:has(.pecb-input__icon--right) .pecb-input__field,.pecb-input--lg.pecb-input--has-value .pecb-input__field{padding-right:48px}.pecb-input__description{margin-top:6px;font-size:12px;color:#616161;line-height:1.5}.pecb-input__description--error{color:#dc3545}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
257
|
-
}
|
|
258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputComponent, decorators: [{
|
|
259
|
-
type: Component,
|
|
260
|
-
args: [{ selector: 'pecb-input', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
261
|
-
{
|
|
262
|
-
provide: NG_VALUE_ACCESSOR,
|
|
263
|
-
useExisting: forwardRef(() => InputComponent),
|
|
264
|
-
multi: true
|
|
265
|
-
}
|
|
266
|
-
], template: "<div [class]=\"wrapperClasses.join(' ')\">\r\n <!-- Input Wrapper -->\r\n <div class=\"pecb-input__wrapper\">\r\n <!-- Left Icon -->\r\n <span\r\n *ngIf=\"computedLeftIcon\"\r\n class=\"pecb-input__icon pecb-input__icon--left\"\r\n aria-hidden=\"true\"\r\n >\r\n <ng-container [ngSwitch]=\"computedLeftIcon\">\r\n <svg *ngSwitchCase=\"'email'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M2 3H14C14.55 3 15 3.45 15 4V12C15 12.55 14.55 13 14 13H2C1.45 13 1 12.55 1 12V4C1 3.45 1.45 3 2 3ZM8 8.5L2.5 5V11.5H13.5V5L8 8.5ZM8 7L13.5 3.5H2.5L8 7Z\"/>\r\n </svg>\r\n <svg *ngSwitchCase=\"'search'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z\"/>\r\n </svg>\r\n <svg *ngSwitchCase=\"'user'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 8C10.21 8 12 6.21 12 4C12 1.79 10.21 0 8 0C5.79 0 4 1.79 4 4C4 6.21 5.79 8 8 8ZM8 10C5.33 10 0 11.34 0 14V16H16V14C16 11.34 10.67 10 8 10Z\"/>\r\n </svg>\r\n <span *ngSwitchDefault [innerHTML]=\"sanitizeIcon(computedLeftIcon)\"></span>\r\n </ng-container>\r\n </span>\r\n\r\n <!-- Input -->\r\n <input\r\n #inputElement\r\n [id]=\"id\"\r\n [type]=\"inputType\"\r\n class=\"pecb-input__field\"\r\n [value]=\"value\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n [attr.maxlength]=\"maxLength\"\r\n [attr.min]=\"min\"\r\n [attr.max]=\"max\"\r\n [attr.step]=\"step\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [attr.aria-label]=\"label || placeholder\"\r\n [attr.aria-required]=\"required\"\r\n [attr.aria-invalid]=\"error\"\r\n [attr.aria-describedby]=\"helperText || errorMessage ? id + '-description' : null\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <!-- Floating Label -->\r\n <label\r\n *ngIf=\"label\"\r\n [attr.for]=\"id\"\r\n class=\"pecb-input__label\"\r\n >\r\n {{ label }}<span *ngIf=\"required\" class=\"pecb-input__required\">*</span>\r\n </label>\r\n\r\n <!-- Clear Button -->\r\n <button\r\n *ngIf=\"showClearButton\"\r\n type=\"button\"\r\n class=\"pecb-input__icon pecb-input__icon--clear\"\r\n [attr.aria-label]=\"'Clear input'\"\r\n (click)=\"clearValue($event)\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 0C3.6 0 0 3.6 0 8C0 12.4 3.6 16 8 16C12.4 16 16 12.4 16 8C16 3.6 12.4 0 8 0ZM11.5 10.1L10.1 11.5L8 9.4L5.9 11.5L4.5 10.1L6.6 8L4.5 5.9L5.9 4.5L8 6.6L10.1 4.5L11.5 5.9L9.4 8L11.5 10.1Z\"/>\r\n </svg>\r\n </button>\r\n\r\n <!-- Password Toggle -->\r\n <button\r\n *ngIf=\"showPasswordToggle\"\r\n type=\"button\"\r\n class=\"pecb-input__icon pecb-input__icon--password\"\r\n [attr.aria-label]=\"showPassword ? 'Hide password' : 'Show password'\"\r\n (click)=\"togglePasswordVisibility($event)\"\r\n >\r\n <svg *ngIf=\"!showPassword\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 3C4.5 3 1.5 5.5 0 8C1.5 10.5 4.5 13 8 13C11.5 13 14.5 10.5 16 8C14.5 5.5 11.5 3 8 3ZM8 11C6.34 11 5 9.66 5 8C5 6.34 6.34 5 8 5C9.66 5 11 6.34 11 8C11 9.66 9.66 11 8 11ZM8 6.5C7.17 6.5 6.5 7.17 6.5 8C6.5 8.83 7.17 9.5 8 9.5C8.83 9.5 9.5 8.83 9.5 8C9.5 7.17 8.83 6.5 8 6.5Z\"/>\r\n </svg>\r\n <svg *ngIf=\"showPassword\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 3C11.5 3 14.5 5.5 16 8C15.4 9.1 14.5 10 13.5 10.7L11.9 9.1C12.3 8.8 12.5 8.4 12.5 8C12.5 6.62 11.38 5.5 10 5.5C9.6 5.5 9.2 5.7 8.9 5.9L7.3 4.3C7.5 4.1 7.7 4 8 4C8 4 8 4 8 3ZM1.3 2.3L3 4C1.8 4.9 0.8 6.1 0 8C1.5 10.5 4.5 13 8 13C9.3 13 10.5 12.6 11.6 12L13.7 14.1L15.1 12.7L2.7 0.3L1.3 2.3ZM5.5 6.8L7.2 8.5C7.1 8.6 7 8.8 7 9C7 9.83 7.67 10.5 8.5 10.5C8.7 10.5 8.9 10.4 9 10.3L10.7 12C9.9 12.3 9 12.5 8 12.5C4.5 12.5 1.5 10 0 7.5C0.7 6.4 1.6 5.4 2.7 4.8L5.5 6.8Z\"/>\r\n </svg>\r\n </button>\r\n\r\n <!-- Right Icon -->\r\n <span\r\n *ngIf=\"computedRightIcon && !showClearButton && !showPasswordToggle\"\r\n class=\"pecb-input__icon pecb-input__icon--right\"\r\n aria-hidden=\"true\"\r\n >\r\n <ng-container [ngSwitch]=\"computedRightIcon\">\r\n <svg *ngSwitchCase=\"'email'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M2 3H14C14.55 3 15 3.45 15 4V12C15 12.55 14.55 13 14 13H2C1.45 13 1 12.55 1 12V4C1 3.45 1.45 3 2 3ZM8 8.5L2.5 5V11.5H13.5V5L8 8.5ZM8 7L13.5 3.5H2.5L8 7Z\"/>\r\n </svg>\r\n <svg *ngSwitchCase=\"'search'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z\"/>\r\n </svg>\r\n <svg *ngSwitchCase=\"'user'\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M8 8C10.21 8 12 6.21 12 4C12 1.79 10.21 0 8 0C5.79 0 4 1.79 4 4C4 6.21 5.79 8 8 8ZM8 10C5.33 10 0 11.34 0 14V16H16V14C16 11.34 10.67 10 8 10Z\"/>\r\n </svg>\r\n <span *ngSwitchDefault [innerHTML]=\"sanitizeIcon(computedRightIcon)\"></span>\r\n </ng-container>\r\n </span>\r\n </div>\r\n\r\n <!-- Helper Text / Error Message -->\r\n <div\r\n *ngIf=\"helperText || errorMessage\"\r\n [id]=\"id + '-description'\"\r\n class=\"pecb-input__description\"\r\n [class.pecb-input__description--error]=\"error && errorMessage\"\r\n >\r\n <span *ngIf=\"error && errorMessage\">{{ errorMessage }}</span>\r\n <span *ngIf=\"!error && helperText\">{{ helperText }}</span>\r\n </div>\r\n</div>\r\n", styles: [".pecb-input{position:relative;display:flex;flex-direction:column;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;width:100%}.pecb-input__wrapper{position:relative;display:flex;align-items:center}.pecb-input__label{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:14px;font-weight:400;color:#919191;background-color:transparent;padding:0 4px;pointer-events:none;z-index:1;transition:top .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1),font-size .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),font-weight .2s cubic-bezier(.4,0,.2,1)}.pecb-input__required{color:#dc3545;margin-left:2px}.pecb-input__field:focus~.pecb-input__label,.pecb-input--focused .pecb-input__label,.pecb-input--has-value .pecb-input__label{top:0;transform:translateY(-50%) scale(1);font-size:12px;color:#a11e29;background-color:#fff;font-weight:500}.pecb-input--error .pecb-input__field:focus~.pecb-input__label,.pecb-input--error.pecb-input--focused .pecb-input__label,.pecb-input--error.pecb-input--has-value .pecb-input__label{color:#dc3545}.pecb-input--disabled .pecb-input__label{color:#919191}.pecb-input--disabled .pecb-input__field:focus~.pecb-input__label,.pecb-input--disabled.pecb-input--focused .pecb-input__label,.pecb-input--disabled.pecb-input--has-value .pecb-input__label{background-color:#ececec}.pecb-input--sm .pecb-input__label,.pecb-input--md .pecb-input__label{left:12px}.pecb-input--lg .pecb-input__label{left:16px}.pecb-input__field{flex:1;width:100%;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:400;color:#313131;background-color:#fff;border:1px solid #c2c2c2;border-radius:8px;outline:none;transition-property:border-color,box-shadow;transition-duration:.25s ease-in-out;transition-timing-function:ease-in-out}.pecb-input__field::placeholder{color:#919191;opacity:0;transition:opacity .2s}.pecb-input__field:focus::placeholder{opacity:1}.pecb-input__field:hover:not(:disabled):not(:focus){border-color:#919191}.pecb-input__field:focus{border-color:#a11e29;box-shadow:0 0 0 3px #a11e291a}.pecb-input__field:disabled{background-color:#ececec;color:#919191;cursor:not-allowed;border-color:#c2c2c2}.pecb-input__field:read-only{background-color:#ececec;cursor:default}.pecb-input--error .pecb-input__field{border-color:#dc3545}.pecb-input--error .pecb-input__field:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a}.pecb-input__icon{position:absolute;display:inline-flex;align-items:center;justify-content:center;color:#616161;background:none;border:none;cursor:pointer;padding:0;transition-property:color,opacity,transform;transition-duration:.25s ease-in-out;transition-timing-function:ease-in-out}.pecb-input__icon svg{flex-shrink:0}.pecb-input__icon--left{left:12px;pointer-events:none}.pecb-input__icon--right{right:12px;pointer-events:none}.pecb-input__icon--clear,.pecb-input__icon--password{right:12px;opacity:0;transform:scale(.8);pointer-events:none;color:#919191}.pecb-input__icon--clear:hover,.pecb-input__icon--password:hover{color:#313131}.pecb-input__icon--clear:hover{color:#dc3545}.pecb-input__icon:hover:not(:disabled){color:#313131}.pecb-input__icon:disabled{color:#919191;cursor:not-allowed}.pecb-input--has-value .pecb-input__icon--clear,.pecb-input--has-value .pecb-input__icon--password{opacity:1;transform:scale(1);pointer-events:auto}.pecb-input--sm .pecb-input__field{padding:8px 12px;font-size:12px;height:32px}.pecb-input--sm .pecb-input__label{left:12px;font-size:12px}.pecb-input--sm .pecb-input__field:focus~.pecb-input__label,.pecb-input--sm.pecb-input--focused .pecb-input__label,.pecb-input--sm.pecb-input--has-value .pecb-input__label{font-size:10px}.pecb-input--sm .pecb-input__icon svg{width:14px;height:14px}.pecb-input--sm .pecb-input__icon--left{left:8px}.pecb-input--sm .pecb-input__icon--right,.pecb-input--sm .pecb-input__icon--clear,.pecb-input--sm .pecb-input__icon--password{right:8px}.pecb-input--sm:has(.pecb-input__icon--left) .pecb-input__field{padding-left:28px}.pecb-input--sm:has(.pecb-input__icon--left) .pecb-input__label{left:28px}.pecb-input--sm:has(.pecb-input__icon--right) .pecb-input__field,.pecb-input--sm.pecb-input--has-value .pecb-input__field{padding-right:32px}.pecb-input--md .pecb-input__field{padding:12px;font-size:14px;height:40px}.pecb-input--md .pecb-input__label{left:12px;font-size:14px}.pecb-input--md .pecb-input__field:focus~.pecb-input__label,.pecb-input--md.pecb-input--focused .pecb-input__label,.pecb-input--md.pecb-input--has-value .pecb-input__label{font-size:12px}.pecb-input--md .pecb-input__icon svg{width:16px;height:16px}.pecb-input--md .pecb-input__icon--left{left:12px}.pecb-input--md .pecb-input__icon--right,.pecb-input--md .pecb-input__icon--clear,.pecb-input--md .pecb-input__icon--password{right:12px}.pecb-input--md:has(.pecb-input__icon--left) .pecb-input__field{padding-left:36px}.pecb-input--md:has(.pecb-input__icon--left) .pecb-input__label{left:36px}.pecb-input--md:has(.pecb-input__icon--right) .pecb-input__field,.pecb-input--md.pecb-input--has-value .pecb-input__field{padding-right:40px}.pecb-input--lg .pecb-input__field{padding:16px;font-size:16px;height:48px}.pecb-input--lg .pecb-input__label{left:16px;font-size:16px}.pecb-input--lg .pecb-input__field:focus~.pecb-input__label,.pecb-input--lg.pecb-input--focused .pecb-input__label,.pecb-input--lg.pecb-input--has-value .pecb-input__label{font-size:13px}.pecb-input--lg .pecb-input__icon svg{width:18px;height:18px}.pecb-input--lg .pecb-input__icon--left{left:16px}.pecb-input--lg .pecb-input__icon--right,.pecb-input--lg .pecb-input__icon--clear,.pecb-input--lg .pecb-input__icon--password{right:16px}.pecb-input--lg:has(.pecb-input__icon--left) .pecb-input__field{padding-left:44px}.pecb-input--lg:has(.pecb-input__icon--left) .pecb-input__label{left:44px}.pecb-input--lg:has(.pecb-input__icon--right) .pecb-input__field,.pecb-input--lg.pecb-input--has-value .pecb-input__field{padding-right:48px}.pecb-input__description{margin-top:6px;font-size:12px;color:#616161;line-height:1.5}.pecb-input__description--error{color:#dc3545}\n"] }]
|
|
267
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }], propDecorators: { inputElement: [{
|
|
268
|
-
type: ViewChild,
|
|
269
|
-
args: ['inputElement']
|
|
270
|
-
}], id: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], type: [{
|
|
273
|
-
type: Input
|
|
274
|
-
}], label: [{
|
|
275
|
-
type: Input
|
|
276
|
-
}], placeholder: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}], size: [{
|
|
279
|
-
type: Input
|
|
280
|
-
}], required: [{
|
|
281
|
-
type: Input
|
|
282
|
-
}], disabled: [{
|
|
283
|
-
type: Input
|
|
284
|
-
}], readonly: [{
|
|
285
|
-
type: Input
|
|
286
|
-
}], error: [{
|
|
287
|
-
type: Input
|
|
288
|
-
}], errorMessage: [{
|
|
289
|
-
type: Input
|
|
290
|
-
}], helperText: [{
|
|
291
|
-
type: Input
|
|
292
|
-
}], icon: [{
|
|
293
|
-
type: Input
|
|
294
|
-
}], iconPosition: [{
|
|
295
|
-
type: Input
|
|
296
|
-
}], leftIcon: [{
|
|
297
|
-
type: Input
|
|
298
|
-
}], rightIcon: [{
|
|
299
|
-
type: Input
|
|
300
|
-
}], clearable: [{
|
|
301
|
-
type: Input
|
|
302
|
-
}], maxLength: [{
|
|
303
|
-
type: Input
|
|
304
|
-
}], min: [{
|
|
305
|
-
type: Input
|
|
306
|
-
}], max: [{
|
|
307
|
-
type: Input
|
|
308
|
-
}], step: [{
|
|
309
|
-
type: Input
|
|
310
|
-
}], autocomplete: [{
|
|
311
|
-
type: Input
|
|
312
|
-
}], valueChange: [{
|
|
313
|
-
type: Output
|
|
314
|
-
}], blurred: [{
|
|
315
|
-
type: Output
|
|
316
|
-
}], focused: [{
|
|
317
|
-
type: Output
|
|
318
|
-
}], cleared: [{
|
|
319
|
-
type: Output
|
|
320
|
-
}] } });
|
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLFNBQVMsRUFHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBS2hFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q0c7QUFnQkgsTUFBTSxPQUFPLGNBQWM7SUF5SXpCLFlBQ1UsR0FBc0IsRUFDdEIsU0FBdUI7UUFEdkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQXhJakM7O1dBRUc7UUFDTSxPQUFFLEdBQVcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEQ7O1dBRUc7UUFDTSxTQUFJLEdBQWMsTUFBTSxDQUFDO1FBT2xDOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxTQUFJLEdBQWMsSUFBSSxDQUFDO1FBRWhDOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOztXQUVHO1FBQ00sVUFBSyxHQUFHLEtBQUssQ0FBQztRQWlCdkI7O1dBRUc7UUFDTSxpQkFBWSxHQUFxQixNQUFNLENBQUM7UUFZakQ7O1dBRUc7UUFDTSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBMkIzQjs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVuRDs7V0FFRztRQUNPLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTdDOztXQUVHO1FBQ08sWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFN0M7O1dBRUc7UUFDTyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU3QyxpQkFBaUI7UUFDakIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLHVCQUF1QjtRQUNmLGFBQVEsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzdDLGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFLdEMsQ0FBQztJQUVKOztPQUVHO0lBQ0gsSUFBSSxjQUFjO1FBQ2hCLE9BQU87WUFDTCxZQUFZO1lBQ1osZUFBZSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN0RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQiwyQkFBMkI7UUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxzQkFBc0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksaUJBQWlCO1FBQ25CLDJCQUEyQjtRQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLEtBQVk7UUFDbEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQWlCO1FBQzFCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QixDQUFDLEtBQWlCO1FBQ3hDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsSUFBd0I7UUFDbkMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBMkI7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0FqU1UsY0FBYzttR0FBZCxjQUFjLG9sQkFSZDtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysd0lDeEVILHNsTUFxSEEsNG1NRHZEWSxZQUFZOzs0RkFZWCxjQUFjO2tCQWYxQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUM7NEJBQzdDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lIQUcwQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBS2hCLEVBQUU7c0JBQVYsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtJLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csT0FBTztzQkFBaEIsTUFBTTtnQkFLRyxPQUFPO3NCQUFoQixNQUFNO2dCQUtHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGdlbmVyYXRlVW5pcXVlSWQgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbHMvZG9tLnV0aWxzJztcclxuXHJcbmV4cG9ydCB0eXBlIElucHV0VHlwZSA9ICd0ZXh0JyB8ICdlbWFpbCcgfCAncGFzc3dvcmQnIHwgJ251bWJlcicgfCAndGVsJyB8ICd1cmwnIHwgJ3NlYXJjaCc7XHJcbmV4cG9ydCB0eXBlIElucHV0U2l6ZSA9ICdzbScgfCAnbWQnIHwgJ2xnJztcclxuXHJcbi8qKlxyXG4gKiBBIHByb2Zlc3Npb25hbCBpbnB1dCBjb21wb25lbnQgd2l0aCBmbG9hdGluZyBsYWJlbCBhbmQgbXVsdGlwbGUgdHlwZXMuXHJcbiAqIEZ1bGx5IGFjY2Vzc2libGUgd2l0aCBXQ0FHIDIuMSBBQSBjb21wbGlhbmNlIGFuZCByZWFjdGl2ZSBmb3JtcyBzdXBwb3J0LlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxwZWNiLWlucHV0XHJcbiAqICAgbGFiZWw9XCJFbWFpbFwiXHJcbiAqICAgdHlwZT1cImVtYWlsXCJcclxuICogICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgZW1haWxcIlxyXG4gKiAgIFsobmdNb2RlbCldPVwiZW1haWxcIlxyXG4gKiA+PC9wZWNiLWlucHV0PlxyXG4gKlxyXG4gKiA8IS0tIFdpdGggcHJlZGVmaW5lZCBpY29uIC0tPlxyXG4gKiA8cGVjYi1pbnB1dFxyXG4gKiAgIGxhYmVsPVwiRW1haWxcIlxyXG4gKiAgIHR5cGU9XCJlbWFpbFwiXHJcbiAqICAgaWNvbj1cImVtYWlsXCJcclxuICogICBpY29uUG9zaXRpb249XCJsZWZ0XCJcclxuICogPjwvcGVjYi1pbnB1dD5cclxuICpcclxuICogPCEtLSBXaXRoIGN1c3RvbSBTVkcgaWNvbiAtLT5cclxuICogPHBlY2ItaW5wdXRcclxuICogICBsYWJlbD1cIlBob25lXCJcclxuICogICB0eXBlPVwidGVsXCJcclxuICogICBbaWNvbl09XCInPHN2Zz4uLi48L3N2Zz4nXCJcclxuICogICBpY29uUG9zaXRpb249XCJsZWZ0XCJcclxuICogPjwvcGVjYi1pbnB1dD5cclxuICpcclxuICogPCEtLSBXaXRoIGVycm9yIHN0YXRlIC0tPlxyXG4gKiA8cGVjYi1pbnB1dFxyXG4gKiAgIGxhYmVsPVwiUGFzc3dvcmRcIlxyXG4gKiAgIHR5cGU9XCJwYXNzd29yZFwiXHJcbiAqICAgW2Vycm9yXT1cInRydWVcIlxyXG4gKiAgIGVycm9yTWVzc2FnZT1cIlBhc3N3b3JkIGlzIHJlcXVpcmVkXCJcclxuICogPjwvcGVjYi1pbnB1dD5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBwdWJsaWNBcGlcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGVjYi1pbnB1dCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogVW5pcXVlIElEIGZvciB0aGUgaW5wdXQgZWxlbWVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSBnZW5lcmF0ZVVuaXF1ZUlkKCdpbnB1dCcpO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCB0eXBlXHJcbiAgICovXHJcbiAgQElucHV0KCkgdHlwZTogSW5wdXRUeXBlID0gJ3RleHQnO1xyXG5cclxuICAvKipcclxuICAgKiBMYWJlbCB0ZXh0IHRvIGRpc3BsYXlcclxuICAgKi9cclxuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogUGxhY2Vob2xkZXIgdGV4dCAoc2hvd24gd2hlbiBsYWJlbCBpcyBub3QgcHJlc2VudClcclxuICAgKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgaW5wdXRcclxuICAgKi9cclxuICBASW5wdXQoKSBzaXplOiBJbnB1dFNpemUgPSAnbWQnO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBpcyByZXF1aXJlZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGRpc2FibGVkXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgaW5wdXQgaXMgcmVhZG9ubHlcclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRvIHNob3cgZXJyb3Igc3RhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSBlcnJvciA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXlcclxuICAgKi9cclxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciB0ZXh0IHRvIGRpc3BsYXkgYmVsb3cgaW5wdXRcclxuICAgKi9cclxuICBASW5wdXQoKSBoZWxwZXJUZXh0Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBJY29uIHRvIGRpc3BsYXkgLSBjYW4gYmUgYSBwcmVkZWZpbmVkIG5hbWUgKCdlbWFpbCcsICdzZWFyY2gnLCAndXNlcicpIG9yIGN1c3RvbSBTVkcgc3RyaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgaWNvbj86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSWNvbiBwb3NpdGlvbiAobGVmdCBvciByaWdodClcclxuICAgKi9cclxuICBASW5wdXQoKSBpY29uUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIExlZnQgaWNvbiBuYW1lIG9yIEhUTUwgKGRlcHJlY2F0ZWQgLSB1c2UgaWNvbiB3aXRoIGljb25Qb3NpdGlvbiBpbnN0ZWFkKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxlZnRJY29uPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBSaWdodCBpY29uIG5hbWUgb3IgSFRNTCAoZGVwcmVjYXRlZCAtIHVzZSBpY29uIHdpdGggaWNvblBvc2l0aW9uIGluc3RlYWQpXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmlnaHRJY29uPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRvIHNob3cgY2xlYXIgYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgY2xlYXJhYmxlID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heGltdW0gbGVuZ3RoIG9mIGlucHV0XHJcbiAgICovXHJcbiAgQElucHV0KCkgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBNaW5pbXVtIHZhbHVlIChmb3IgbnVtYmVyIHR5cGUpXHJcbiAgICovXHJcbiAgQElucHV0KCkgbWluPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBNYXhpbXVtIHZhbHVlIChmb3IgbnVtYmVyIHR5cGUpXHJcbiAgICovXHJcbiAgQElucHV0KCkgbWF4PzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBTdGVwIHZhbHVlIChmb3IgbnVtYmVyIHR5cGUpXHJcbiAgICovXHJcbiAgQElucHV0KCkgc3RlcD86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQXV0b2NvbXBsZXRlIGF0dHJpYnV0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHZhbHVlIGNoYW5nZXNcclxuICAgKi9cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCBvbiBibHVyXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGJsdXJyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgb24gZm9jdXNcclxuICAgKi9cclxuICBAT3V0cHV0KCkgZm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8vIEludGVybmFsIHN0YXRlXHJcbiAgdmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gIHNob3dQYXNzd29yZCA9IGZhbHNlO1xyXG5cclxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgQ1NTIGNsYXNzZXMgZm9yIHRoZSBpbnB1dCB3cmFwcGVyXHJcbiAgICovXHJcbiAgZ2V0IHdyYXBwZXJDbGFzc2VzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgICdwZWNiLWlucHV0JyxcclxuICAgICAgYHBlY2ItaW5wdXQtLSR7dGhpcy5zaXplfWAsXHJcbiAgICAgIHRoaXMuZGlzYWJsZWQgPyAncGVjYi1pbnB1dC0tZGlzYWJsZWQnIDogJycsXHJcbiAgICAgIHRoaXMuZXJyb3IgPyAncGVjYi1pbnB1dC0tZXJyb3InIDogJycsXHJcbiAgICAgIHRoaXMucmVhZG9ubHkgPyAncGVjYi1pbnB1dC0tcmVhZG9ubHknIDogJycsXHJcbiAgICAgIHRoaXMuaXNGb2N1c2VkID8gJ3BlY2ItaW5wdXQtLWZvY3VzZWQnIDogJycsXHJcbiAgICAgIHRoaXMudmFsdWUgPyAncGVjYi1pbnB1dC0taGFzLXZhbHVlJyA6ICcnXHJcbiAgICBdLmZpbHRlcihCb29sZWFuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgYWN0dWFsIGlucHV0IHR5cGUgKGhhbmRsZXMgcGFzc3dvcmQgdmlzaWJpbGl0eSB0b2dnbGUpXHJcbiAgICovXHJcbiAgZ2V0IGlucHV0VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiB0aGlzLnNob3dQYXNzd29yZCkge1xyXG4gICAgICByZXR1cm4gJ3RleHQnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudHlwZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNsZWFyIGJ1dHRvbiBzaG91bGQgYmUgc2hvd25cclxuICAgKi9cclxuICBnZXQgc2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xlYXJhYmxlICYmICEhdGhpcy52YWx1ZSAmJiAhdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHBhc3N3b3JkIHRvZ2dsZSBzaG91bGQgYmUgc2hvd25cclxuICAgKi9cclxuICBnZXQgc2hvd1Bhc3N3b3JkVG9nZ2xlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiAhIXRoaXMudmFsdWUgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY29tcHV0ZWQgbGVmdCBpY29uXHJcbiAgICovXHJcbiAgZ2V0IGNvbXB1dGVkTGVmdEljb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIC8vIE5ldyBBUEkgdGFrZXMgcHJlY2VkZW5jZVxyXG4gICAgaWYgKHRoaXMuaWNvbiAmJiB0aGlzLmljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmljb247XHJcbiAgICB9XHJcbiAgICAvLyBGYWxsYmFjayB0byBvbGQgQVBJXHJcbiAgICByZXR1cm4gdGhpcy5sZWZ0SWNvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBjb21wdXRlZCByaWdodCBpY29uXHJcbiAgICovXHJcbiAgZ2V0IGNvbXB1dGVkUmlnaHRJY29uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAvLyBOZXcgQVBJIHRha2VzIHByZWNlZGVuY2VcclxuICAgIGlmICh0aGlzLmljb24gJiYgdGhpcy5pY29uUG9zaXRpb24gPT09ICdyaWdodCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaWNvbjtcclxuICAgIH1cclxuICAgIC8vIEZhbGxiYWNrIHRvIG9sZCBBUElcclxuICAgIHJldHVybiB0aGlzLnJpZ2h0SWNvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBpbnB1dCBjaGFuZ2VcclxuICAgKi9cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICB0aGlzLnZhbHVlID0gdGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGZvY3VzIGV2ZW50XHJcbiAgICovXHJcbiAgb25Gb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuZm9jdXNlZC5lbWl0KCk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBibHVyIGV2ZW50XHJcbiAgICovXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLmJsdXJyZWQuZW1pdCgpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBpbnB1dCB2YWx1ZVxyXG4gICAqL1xyXG4gIGNsZWFyVmFsdWUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuY2xlYXJlZC5lbWl0KCk7XHJcbiAgICB0aGlzLmlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgcGFzc3dvcmQgdmlzaWJpbGl0eVxyXG4gICAqL1xyXG4gIHRvZ2dsZVBhc3N3b3JkVmlzaWJpbGl0eShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnNob3dQYXNzd29yZCA9ICF0aGlzLnNob3dQYXNzd29yZDtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9jdXMgdGhlIGlucHV0XHJcbiAgICovXHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2FuaXRpemUgY3VzdG9tIGljb24gSFRNTC9TVkdcclxuICAgKi9cclxuICBzYW5pdGl6ZUljb24oaWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkKTogU2FmZUh0bWwge1xyXG4gICAgaWYgKCFpY29uKSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaWNvbik7XHJcbiAgfVxyXG5cclxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2NsYXNzXT1cIndyYXBwZXJDbGFzc2VzLmpvaW4oJyAnKVwiPlxyXG4gIDwhLS0gSW5wdXQgV3JhcHBlciAtLT5cclxuICA8ZGl2IGNsYXNzPVwicGVjYi1pbnB1dF9fd3JhcHBlclwiPlxyXG4gICAgPCEtLSBMZWZ0IEljb24gLS0+XHJcbiAgICA8c3BhblxyXG4gICAgICAqbmdJZj1cImNvbXB1dGVkTGVmdEljb25cIlxyXG4gICAgICBjbGFzcz1cInBlY2ItaW5wdXRfX2ljb24gcGVjYi1pbnB1dF9faWNvbi0tbGVmdFwiXHJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbXB1dGVkTGVmdEljb25cIj5cclxuICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInZW1haWwnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMiAzSDE0QzE0LjU1IDMgMTUgMy40NSAxNSA0VjEyQzE1IDEyLjU1IDE0LjU1IDEzIDE0IDEzSDJDMS40NSAxMyAxIDEyLjU1IDEgMTJWNEMxIDMuNDUgMS40NSAzIDIgM1pNOCA4LjVMMi41IDVWMTEuNUgxMy41VjVMOCA4LjVaTTggN0wxMy41IDMuNUgyLjVMOCA3WlwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInc2VhcmNoJ1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTExLjc0MiAxMC4zNDRhNi41IDYuNSAwIDEgMC0xLjM5NyAxLjM5OGgtLjAwMWMuMDMuMDQuMDYyLjA3OC4wOTguMTE1bDMuODUgMy44NWExIDEgMCAwIDAgMS40MTUtMS40MTRsLTMuODUtMy44NWExLjAwNyAxLjAwNyAwIDAgMC0uMTE1LS4xek0xMiA2LjVhNS41IDUuNSAwIDEgMS0xMSAwIDUuNSA1LjUgMCAwIDEgMTEgMHpcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXInXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNOCA4QzEwLjIxIDggMTIgNi4yMSAxMiA0QzEyIDEuNzkgMTAuMjEgMCA4IDBDNS43OSAwIDQgMS43OSA0IDRDNCA2LjIxIDUuNzkgOCA4IDhaTTggMTBDNS4zMyAxMCAwIDExLjM0IDAgMTRWMTZIMTZWMTRDMTYgMTEuMzQgMTAuNjcgMTAgOCAxMFpcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdCBbaW5uZXJIVE1MXT1cInNhbml0aXplSWNvbihjb21wdXRlZExlZnRJY29uKVwiPjwvc3Bhbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPCEtLSBJbnB1dCAtLT5cclxuICAgIDxpbnB1dFxyXG4gICAgICAjaW5wdXRFbGVtZW50XHJcbiAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgIFt0eXBlXT1cImlucHV0VHlwZVwiXHJcbiAgICAgIGNsYXNzPVwicGVjYi1pbnB1dF9fZmllbGRcIlxyXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgW2F0dHIubWluXT1cIm1pblwiXHJcbiAgICAgIFthdHRyLm1heF09XCJtYXhcIlxyXG4gICAgICBbYXR0ci5zdGVwXT1cInN0ZXBcIlxyXG4gICAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbCB8fCBwbGFjZWhvbGRlclwiXHJcbiAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiZXJyb3JcIlxyXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhlbHBlclRleHQgfHwgZXJyb3JNZXNzYWdlID8gaWQgKyAnLWRlc2NyaXB0aW9uJyA6IG51bGxcIlxyXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPCEtLSBGbG9hdGluZyBMYWJlbCAtLT5cclxuICAgIDxsYWJlbFxyXG4gICAgICAqbmdJZj1cImxhYmVsXCJcclxuICAgICAgW2F0dHIuZm9yXT1cImlkXCJcclxuICAgICAgY2xhc3M9XCJwZWNiLWlucHV0X19sYWJlbFwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGxhYmVsIH19PHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiIGNsYXNzPVwicGVjYi1pbnB1dF9fcmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuXHJcbiAgICA8IS0tIENsZWFyIEJ1dHRvbiAtLT5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJzaG93Q2xlYXJCdXR0b25cIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJwZWNiLWlucHV0X19pY29uIHBlY2ItaW5wdXRfX2ljb24tLWNsZWFyXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ2xlYXIgaW5wdXQnXCJcclxuICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMEMzLjYgMCAwIDMuNiAwIDhDMCAxMi40IDMuNiAxNiA4IDE2QzEyLjQgMTYgMTYgMTIuNCAxNiA4QzE2IDMuNiAxMi40IDAgOCAwWk0xMS41IDEwLjFMMTAuMSAxMS41TDggOS40TDUuOSAxMS41TDQuNSAxMC4xTDYuNiA4TDQuNSA1LjlMNS45IDQuNUw4IDYuNkwxMC4xIDQuNUwxMS41IDUuOUw5LjQgOEwxMS41IDEwLjFaXCIvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gUGFzc3dvcmQgVG9nZ2xlIC0tPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNob3dQYXNzd29yZFRvZ2dsZVwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjbGFzcz1cInBlY2ItaW5wdXRfX2ljb24gcGVjYi1pbnB1dF9faWNvbi0tcGFzc3dvcmRcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNob3dQYXNzd29yZCA/ICdIaWRlIHBhc3N3b3JkJyA6ICdTaG93IHBhc3N3b3JkJ1wiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgIDxzdmcgKm5nSWY9XCIhc2hvd1Bhc3N3b3JkXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTggM0M0LjUgMyAxLjUgNS41IDAgOEMxLjUgMTAuNSA0LjUgMTMgOCAxM0MxMS41IDEzIDE0LjUgMTAuNSAxNiA4QzE0LjUgNS41IDExLjUgMyA4IDNaTTggMTFDNi4zNCAxMSA1IDkuNjYgNSA4QzUgNi4zNCA2LjM0IDUgOCA1QzkuNjYgNSAxMSA2LjM0IDExIDhDMTEgOS42NiA5LjY2IDExIDggMTFaTTggNi41QzcuMTcgNi41IDYuNSA3LjE3IDYuNSA4QzYuNSA4LjgzIDcuMTcgOS41IDggOS41QzguODMgOS41IDkuNSA4LjgzIDkuNSA4QzkuNSA3LjE3IDguODMgNi41IDggNi41WlwiLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICAgIDxzdmcgKm5nSWY9XCJzaG93UGFzc3dvcmRcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNOCAzQzExLjUgMyAxNC41IDUuNSAxNiA4QzE1LjQgOS4xIDE0LjUgMTAgMTMuNSAxMC43TDExLjkgOS4xQzEyLjMgOC44IDEyLjUgOC40IDEyLjUgOEMxMi41IDYuNjIgMTEuMzggNS41IDEwIDUuNUM5LjYgNS41IDkuMiA1LjcgOC45IDUuOUw3LjMgNC4zQzcuNSA0LjEgNy43IDQgOCA0QzggNCA4IDQgOCAzWk0xLjMgMi4zTDMgNEMxLjggNC45IDAuOCA2LjEgMCA4QzEuNSAxMC41IDQuNSAxMyA4IDEzQzkuMyAxMyAxMC41IDEyLjYgMTEuNiAxMkwxMy43IDE0LjFMMTUuMSAxMi43TDIuNyAwLjNMMS4zIDIuM1pNNS41IDYuOEw3LjIgOC41QzcuMSA4LjYgNyA4LjggNyA5QzcgOS44MyA3LjY3IDEwLjUgOC41IDEwLjVDOC43IDEwLjUgOC45IDEwLjQgOSAxMC4zTDEwLjcgMTJDOS45IDEyLjMgOSAxMi41IDggMTIuNUM0LjUgMTIuNSAxLjUgMTAgMCA3LjVDMC43IDYuNCAxLjYgNS40IDIuNyA0LjhMNS41IDYuOFpcIi8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLSBSaWdodCBJY29uIC0tPlxyXG4gICAgPHNwYW5cclxuICAgICAgKm5nSWY9XCJjb21wdXRlZFJpZ2h0SWNvbiAmJiAhc2hvd0NsZWFyQnV0dG9uICYmICFzaG93UGFzc3dvcmRUb2dnbGVcIlxyXG4gICAgICBjbGFzcz1cInBlY2ItaW5wdXRfX2ljb24gcGVjYi1pbnB1dF9faWNvbi0tcmlnaHRcIlxyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb21wdXRlZFJpZ2h0SWNvblwiPlxyXG4gICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidlbWFpbCdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0yIDNIMTRDMTQuNTUgMyAxNSAzLjQ1IDE1IDRWMTJDMTUgMTIuNTUgMTQuNTUgMTMgMTQgMTNIMkMxLjQ1IDEzIDEgMTIuNTUgMSAxMlY0QzEgMy40NSAxLjQ1IDMgMiAzWk04IDguNUwyLjUgNVYxMS41SDEzLjVWNUw4IDguNVpNOCA3TDEzLjUgMy41SDIuNUw4IDdaXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidzZWFyY2gnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNzQyIDEwLjM0NGE2LjUgNi41IDAgMSAwLTEuMzk3IDEuMzk4aC0uMDAxYy4wMy4wNC4wNjIuMDc4LjA5OC4xMTVsMy44NSAzLjg1YTEgMSAwIDAgMCAxLjQxNS0xLjQxNGwtMy44NS0zLjg1YTEuMDA3IDEuMDA3IDAgMCAwLS4xMTUtLjF6TTEyIDYuNWE1LjUgNS41IDAgMSAxLTExIDAgNS41IDUuNSAwIDAgMSAxMSAwelwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCIndXNlcidcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk04IDhDMTAuMjEgOCAxMiA2LjIxIDEyIDRDMTIgMS43OSAxMC4yMSAwIDggMEM1Ljc5IDAgNCAxLjc5IDQgNEM0IDYuMjEgNS43OSA4IDggOFpNOCAxMEM1LjMzIDEwIDAgMTEuMzQgMCAxNFYxNkgxNlYxNEMxNiAxMS4zNCAxMC42NyAxMCA4IDEwWlwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0IFtpbm5lckhUTUxdPVwic2FuaXRpemVJY29uKGNvbXB1dGVkUmlnaHRJY29uKVwiPjwvc3Bhbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gSGVscGVyIFRleHQgLyBFcnJvciBNZXNzYWdlIC0tPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiaGVscGVyVGV4dCB8fCBlcnJvck1lc3NhZ2VcIlxyXG4gICAgW2lkXT1cImlkICsgJy1kZXNjcmlwdGlvbidcIlxyXG4gICAgY2xhc3M9XCJwZWNiLWlucHV0X19kZXNjcmlwdGlvblwiXHJcbiAgICBbY2xhc3MucGVjYi1pbnB1dF9fZGVzY3JpcHRpb24tLWVycm9yXT1cImVycm9yICYmIGVycm9yTWVzc2FnZVwiXHJcbiAgPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJlcnJvciAmJiBlcnJvck1lc3NhZ2VcIj57eyBlcnJvck1lc3NhZ2UgfX08L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFlcnJvciAmJiBoZWxwZXJUZXh0XCI+e3sgaGVscGVyVGV4dCB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|