@villedemontreal/angular-ui 15.3.1 → 16.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/{esm2020 → esm2022}/lib/alert/alert.component.mjs +16 -16
- package/{esm2020 → esm2022}/lib/alert/module.mjs +13 -13
- package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/avatar/module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/badge/badge.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/badge/module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/bao.module.mjs +57 -57
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/breadcrumb/module.mjs +5 -5
- package/esm2022/lib/button/button.component.mjs +100 -0
- package/{esm2020 → esm2022}/lib/button/module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/card/card.component.mjs +16 -16
- package/{esm2020 → esm2022}/lib/card/module.mjs +13 -13
- package/{esm2020 → esm2022}/lib/checkbox/checkbox-group.component.mjs +4 -4
- package/esm2022/lib/checkbox/checkbox.component.mjs +304 -0
- package/{esm2020 → esm2022}/lib/checkbox/module.mjs +9 -9
- package/{esm2020 → esm2022}/lib/common-components/error-text/errorText.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/common-components/guiding-text/guidingText.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/common-components/label-text/labelText.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/common-components/module.mjs +11 -11
- package/{esm2020 → esm2022}/lib/common-components/title-text/titleText.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dropdown-menu/dropdown-menu.component.mjs +22 -22
- package/{esm2020 → esm2022}/lib/dropdown-menu/module.mjs +17 -17
- package/esm2022/lib/file/file-input.component.mjs +319 -0
- package/{esm2020 → esm2022}/lib/file/file-intl.mjs +7 -7
- package/{esm2020 → esm2022}/lib/file/file-preview.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/file/module.mjs +19 -19
- package/{esm2020 → esm2022}/lib/header-info/header-info.component.mjs +19 -19
- package/{esm2020 → esm2022}/lib/header-info/module.mjs +15 -15
- package/{esm2020 → esm2022}/lib/hyperlink/hyperlink.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/hyperlink/module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icon/bao-icon-registry.mjs +4 -4
- package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/icon/module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/list/list.component.mjs +16 -16
- package/{esm2020 → esm2022}/lib/list/module.mjs +13 -13
- package/{esm2020 → esm2022}/lib/modal/modal-container.mjs +8 -8
- package/{esm2020 → esm2022}/lib/modal/modal-directives.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modal/modal.mjs +7 -7
- package/{esm2020 → esm2022}/lib/modal/module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/radio/module.mjs +19 -19
- package/{esm2020 → esm2022}/lib/radio/radio-group.component.mjs +11 -11
- package/{esm2020 → esm2022}/lib/radio/radio.component.mjs +13 -13
- package/esm2022/lib/snack-bar/module.mjs +51 -0
- package/{esm2020 → esm2022}/lib/snack-bar/simple-snack-bar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-container.mjs +10 -5
- package/{esm2020 → esm2022}/lib/snack-bar/snack-bar.mjs +4 -4
- package/{esm2020 → esm2022}/lib/summary/list-summary.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/summary/module.mjs +11 -11
- package/{esm2020 → esm2022}/lib/summary/summary.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/system-header/module.mjs +9 -9
- package/esm2022/lib/system-header/system-header.component.mjs +130 -0
- package/{esm2020 → esm2022}/lib/tabs/module.mjs +11 -11
- package/{esm2020 → esm2022}/lib/tabs/tabs.component.mjs +13 -13
- package/{esm2020 → esm2022}/lib/tag/module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/tag/tag.component.mjs +4 -4
- package/{fesm2020 → fesm2022}/villedemontreal-angular-ui.mjs +508 -501
- package/fesm2022/villedemontreal-angular-ui.mjs.map +1 -0
- package/lib/alert/alert.component.d.ts +1 -1
- package/lib/avatar/avatar.component.d.ts +1 -1
- package/lib/badge/badge.component.d.ts +1 -1
- package/lib/button/button.component.d.ts +4 -4
- package/lib/card/card.component.d.ts +1 -1
- package/lib/checkbox/checkbox-group.component.d.ts +1 -1
- package/lib/checkbox/checkbox.component.d.ts +1 -1
- package/lib/common-components/label-text/labelText.component.d.ts +1 -1
- package/lib/dropdown-menu/dropdown-menu.component.d.ts +2 -2
- package/lib/file/file-input.component.d.ts +1 -1
- package/lib/file/file-preview.component.d.ts +1 -1
- package/lib/header-info/header-info.component.d.ts +1 -1
- package/lib/hyperlink/hyperlink.component.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/modal/modal-directives.d.ts +1 -1
- package/lib/radio/radio-group.component.d.ts +1 -1
- package/lib/radio/radio.component.d.ts +1 -1
- package/lib/summary/summary.component.d.ts +1 -1
- package/lib/system-header/system-header.component.d.ts +4 -3
- package/lib/tabs/tabs.component.d.ts +1 -1
- package/lib/tag/tag.component.d.ts +1 -1
- package/package.json +13 -19
- package/esm2020/lib/button/button.component.mjs +0 -100
- package/esm2020/lib/checkbox/checkbox.component.mjs +0 -304
- package/esm2020/lib/file/file-input.component.mjs +0 -319
- package/esm2020/lib/snack-bar/module.mjs +0 -52
- package/esm2020/lib/system-header/system-header.component.mjs +0 -128
- package/fesm2015/villedemontreal-angular-ui.mjs +0 -6119
- package/fesm2015/villedemontreal-angular-ui.mjs.map +0 -1
- package/fesm2020/villedemontreal-angular-ui.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/avatar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/breadcrumb/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/card/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/checkbox/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common-components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/breakpoints.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/colors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown-menu/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/header-info/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/hyperlink/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/icon/icons-dictionary.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/icon/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/modal-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/modal-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/radio/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/enum/display-mode.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/snack-bar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-animations.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/summary/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/system-header/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tabs/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tag/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/villedemontreal-angular-ui.mjs +0 -0
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Directive, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/cdk/a11y";
|
|
5
|
-
/**
|
|
6
|
-
* Unique ID for each checkbox counter
|
|
7
|
-
*/
|
|
8
|
-
let checkboxNextUniqueId = 0;
|
|
9
|
-
export class BaoCheckboxComponent {
|
|
10
|
-
constructor(elementRef, cdr, focusMonitor) {
|
|
11
|
-
this.elementRef = elementRef;
|
|
12
|
-
this.cdr = cdr;
|
|
13
|
-
this.focusMonitor = focusMonitor;
|
|
14
|
-
/**
|
|
15
|
-
* Whether the checkbox has a border and is considered as a card.
|
|
16
|
-
*/
|
|
17
|
-
this.brandBorder = false;
|
|
18
|
-
/**
|
|
19
|
-
* Whether the checkbox is inline.
|
|
20
|
-
*/
|
|
21
|
-
this.inline = false;
|
|
22
|
-
/**
|
|
23
|
-
* The visible state of the label
|
|
24
|
-
*/
|
|
25
|
-
this.hiddenLabel = false;
|
|
26
|
-
/**
|
|
27
|
-
* Emitted object on change event
|
|
28
|
-
*/
|
|
29
|
-
this.change = new EventEmitter();
|
|
30
|
-
/**
|
|
31
|
-
* Inderminate value of the checkbox whenever
|
|
32
|
-
*/
|
|
33
|
-
this.indeterminateChange = new EventEmitter();
|
|
34
|
-
this._disabled = false;
|
|
35
|
-
this._checked = false;
|
|
36
|
-
this._indeterminate = false;
|
|
37
|
-
this._uniqueId = `bao-checkbox-${++checkboxNextUniqueId}`;
|
|
38
|
-
this.onModelChange = () => undefined;
|
|
39
|
-
this.onTouch = () => undefined;
|
|
40
|
-
if (!this.id) {
|
|
41
|
-
this.id = this._uniqueId;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Whether the checkbox is checked. Default value : false
|
|
46
|
-
*/
|
|
47
|
-
get checked() {
|
|
48
|
-
return this._checked;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Whether the checkbox is disabled. Default value : false
|
|
52
|
-
*/
|
|
53
|
-
get disabled() {
|
|
54
|
-
return this._disabled;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Whether the checkbox is required. Default value : false
|
|
58
|
-
*/
|
|
59
|
-
get required() {
|
|
60
|
-
return this._required;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Whether the checkbox is indeterminate. Default value : false
|
|
64
|
-
*/
|
|
65
|
-
get indeterminate() {
|
|
66
|
-
return this._indeterminate;
|
|
67
|
-
}
|
|
68
|
-
get nativeElement() {
|
|
69
|
-
return this.elementRef.nativeElement;
|
|
70
|
-
}
|
|
71
|
-
set checked(value) {
|
|
72
|
-
if (value !== this.checked) {
|
|
73
|
-
this._checked = value;
|
|
74
|
-
this.cdr.markForCheck();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
set disabled(value) {
|
|
78
|
-
// In the case the value is string or boolean
|
|
79
|
-
const newValue = value;
|
|
80
|
-
if (newValue !== this.disabled) {
|
|
81
|
-
this._disabled = newValue;
|
|
82
|
-
this.cdr.markForCheck();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
set required(value) {
|
|
86
|
-
this._required = value;
|
|
87
|
-
}
|
|
88
|
-
set indeterminate(value) {
|
|
89
|
-
const newValue = value;
|
|
90
|
-
if (newValue !== this._indeterminate) {
|
|
91
|
-
this._indeterminate = newValue;
|
|
92
|
-
this.indeterminateChange.emit(this._indeterminate);
|
|
93
|
-
}
|
|
94
|
-
// Update the inderteminate value of the html element object
|
|
95
|
-
this.syncIndeterminate(this._indeterminate);
|
|
96
|
-
}
|
|
97
|
-
ngOnInit() {
|
|
98
|
-
// Set all unique ids for the html elements
|
|
99
|
-
this.inputID = `${this.id}-input`;
|
|
100
|
-
this.ariaLabelledby = `${this.id}-arialabelledby`;
|
|
101
|
-
}
|
|
102
|
-
ngAfterViewInit() {
|
|
103
|
-
this.focusMonitor.monitor(this.elementRef, true).subscribe(focusOrigin => {
|
|
104
|
-
if (!focusOrigin) {
|
|
105
|
-
// When a focused element becomes disabled, the browser *immediately* fires a blur event.
|
|
106
|
-
// Angular does not expect events to be raised during change detection, so any state change
|
|
107
|
-
// (such as a form control's 'ng-touched') will cause a changed-after-checked error.
|
|
108
|
-
// See https://github.com/angular/angular/issues/17793. To work around this, we defer
|
|
109
|
-
// telling the form control it has been touched until the next tick.
|
|
110
|
-
Promise.resolve()
|
|
111
|
-
.then(() => {
|
|
112
|
-
this.onTouch();
|
|
113
|
-
this.cdr.markForCheck();
|
|
114
|
-
})
|
|
115
|
-
.catch(() => undefined);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
this.setAriaDescribedByToDescription();
|
|
119
|
-
this.syncIndeterminate(this.indeterminate);
|
|
120
|
-
}
|
|
121
|
-
ngOnDestroy() {
|
|
122
|
-
this.focusMonitor.stopMonitoring(this.elementRef);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Implement ControlValueAccessor
|
|
126
|
-
*/
|
|
127
|
-
writeValue(value) {
|
|
128
|
-
this.checked = !!value;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Implement ControlValueAccessor
|
|
132
|
-
*/
|
|
133
|
-
registerOnChange(fn) {
|
|
134
|
-
this.onModelChange = fn;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Implement ControlValueAccessor
|
|
138
|
-
*/
|
|
139
|
-
registerOnTouched(fn) {
|
|
140
|
-
this.onTouch = fn;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Implement ControlValueAccessor
|
|
144
|
-
*/
|
|
145
|
-
setDisabledState(isDisabled) {
|
|
146
|
-
this.disabled = isDisabled;
|
|
147
|
-
}
|
|
148
|
-
focus(origin, options) {
|
|
149
|
-
if (origin) {
|
|
150
|
-
this.focusMonitor.focusVia(this.inputElement, origin, options);
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
this.inputElement.nativeElement.focus(options);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Whenever there is change on the input html element
|
|
158
|
-
*/
|
|
159
|
-
onInteractionEvent(event) {
|
|
160
|
-
// We always have to stop propagation on the change event.
|
|
161
|
-
// Otherwise the change event, from the input element, will bubble up and
|
|
162
|
-
// emit its event object to the `change` output.
|
|
163
|
-
event.stopPropagation();
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Whenever there is click event triggered on the checkbox
|
|
167
|
-
*/
|
|
168
|
-
onInputClick(event) {
|
|
169
|
-
event.stopPropagation();
|
|
170
|
-
this.toggle();
|
|
171
|
-
this.emitChangeEvent();
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Get the value for the aria-checked property (web accessibility)
|
|
175
|
-
*/
|
|
176
|
-
getAriaState() {
|
|
177
|
-
if (this.checked) {
|
|
178
|
-
return "true" /* eCheckboxAriaState.TRUE */;
|
|
179
|
-
}
|
|
180
|
-
return this.indeterminate
|
|
181
|
-
? "mixed" /* eCheckboxAriaState.MIXED */
|
|
182
|
-
: "false" /* eCheckboxAriaState.FALSE */;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Emit new values whenever the checkbox object has change.
|
|
186
|
-
*/
|
|
187
|
-
emitChangeEvent() {
|
|
188
|
-
this.onModelChange(this.checked);
|
|
189
|
-
this.change.emit(this.checked);
|
|
190
|
-
this.syncChecked(this.checked);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Set the checked property on the input html element
|
|
194
|
-
*/
|
|
195
|
-
syncChecked(value) {
|
|
196
|
-
if (this.inputElement) {
|
|
197
|
-
this.inputElement.nativeElement.checked = value;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Set the indeterminate property on the input html element
|
|
202
|
-
*/
|
|
203
|
-
syncIndeterminate(value) {
|
|
204
|
-
if (this.inputElement) {
|
|
205
|
-
this.inputElement.nativeElement.indeterminate = value;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Set the aria-describedby property to bao-checkbox-description
|
|
210
|
-
*/
|
|
211
|
-
setAriaDescribedByToDescription() {
|
|
212
|
-
const childNodes = Array.from(this.nativeElement.childNodes);
|
|
213
|
-
const labelNode = childNodes.find(x => {
|
|
214
|
-
return x.nodeName === 'LABEL';
|
|
215
|
-
});
|
|
216
|
-
if (labelNode) {
|
|
217
|
-
const labelChildNodes = Array.from(labelNode.childNodes);
|
|
218
|
-
const descriptionNode = labelChildNodes.find(x => {
|
|
219
|
-
return x.nodeName === 'BAO-CHECKBOX-DESCRIPTION';
|
|
220
|
-
});
|
|
221
|
-
if (descriptionNode) {
|
|
222
|
-
this.ariaDescribedby = `${this.id}-ariadescribedby`;
|
|
223
|
-
descriptionNode.setAttribute('id', this.ariaDescribedby);
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
this.ariaDescribedby = undefined;
|
|
227
|
-
}
|
|
228
|
-
this.cdr.detectChanges();
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Set checked value
|
|
233
|
-
*/
|
|
234
|
-
toggle() {
|
|
235
|
-
this.checked = !this.checked;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
BaoCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoCheckboxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
|
|
239
|
-
BaoCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: BaoCheckboxComponent, selector: "bao-checkbox, [bao-checkbox]", inputs: { id: "id", ariaLabel: ["aria-label", "ariaLabel"], brandBorder: "brandBorder", inline: "inline", name: "name", hiddenLabel: "hiddenLabel", checked: "checked", disabled: "disabled", required: "required", indeterminate: "indeterminate" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "class.bao-checkbox-inline": "inline", "class.bao-checkbox-checked": "checked", "class.bao-checkbox-indeterminate": "indeterminate", "class.bao-checkbox-disabled": "disabled", "class.bao-checkbox-card": "brandBorder", "class.bao-checkbox-required": "required", "class.bao-checkbox-hidden-label": "hiddenLabel" }, classAttribute: "bao-checkbox" }, providers: [
|
|
240
|
-
{
|
|
241
|
-
provide: NG_VALUE_ACCESSOR,
|
|
242
|
-
useExisting: forwardRef(() => BaoCheckboxComponent),
|
|
243
|
-
multi: true
|
|
244
|
-
}
|
|
245
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n type=\"checkbox\"\n [id]=\"inputID\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-checked]=\"getAriaState()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n role=\"checkbox\"\n/>\n<label class=\"bao-checkbox-content-container\" [attr.for]=\"inputID\">\n <div class=\"bao-checkbox-label\" [id]=\"ariaLabelledby\">\n <ng-content></ng-content>\n </div>\n <ng-content\n select=\"bao-checkbox-description, [bao-checkbox-description], [baoCheckboxDescription]\"\n ></ng-content>\n</label>\n", styles: [".bao-checkbox{display:block;font-size:1rem;line-height:1.5rem;min-height:1.5rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:2rem;position:relative;z-index:1}.bao-checkbox input{box-sizing:border-box;left:0;opacity:0;overflow:visible;padding:0;position:absolute;z-index:-1}.bao-checkbox input:focus~.bao-checkbox-content-container:before{box-shadow:0 0 0 .1875rem #0079c480}.bao-checkbox label.bao-checkbox-content-container{color:#212529;font-weight:400;font-size:1rem;line-height:1.5rem;margin-bottom:0;position:relative;vertical-align:top}.bao-checkbox label.bao-checkbox-content-container:before{border-radius:.125rem;box-sizing:border-box;position:absolute;top:0;left:-2rem;display:block;margin:.125rem;width:1.25rem;height:1.25rem;pointer-events:none;content:\"\";background-color:#fff;border:#ced4da solid 1px;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.bao-checkbox label.bao-checkbox-content-container:after{box-sizing:border-box;background:no-repeat 50%/1.5rem;content:\"\";display:block;height:1.5rem;left:-2rem;margin:0;position:absolute;top:0;width:1.5rem}.bao-checkbox label.bao-checkbox-content-container .bao-checkbox-label{color:#212529;display:block}.bao-checkbox label.bao-checkbox-content-container .bao-checkbox-description{color:#637381;display:block;margin-top:.5rem}.bao-checkbox.bao-checkbox-inline{display:inline-flex;margin-right:1rem}.bao-checkbox.bao-checkbox-card{padding:0;margin-bottom:1rem}.bao-checkbox.bao-checkbox-card:last-of-type{margin-bottom:0}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container{display:flex;flex-direction:column;flex:1;justify-content:center;padding:1rem 1rem 1rem 3.5rem;position:relative;border:1px solid #ced4da;border-radius:.25rem;color:#637381;min-height:3.5rem}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container:before{top:1rem;left:0;margin-left:1.125rem}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container:after{top:1rem;left:0;margin-left:1rem}.bao-checkbox.bao-checkbox-indeterminate .bao-checkbox-content-container:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23097d6c' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\")}.bao-checkbox input:checked~.bao-checkbox-content-container:before{border-color:#097d6c;background-color:#097d6c}.bao-checkbox input:checked~.bao-checkbox-content-container:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='%23ffffff' d='M16.7 8.3C17.1 8.7 17.1 9.3 16.7 9.7L10.7 15.7 10.7 15.7C10.6 15.9 10.4 15.9 10.2 16L10.1 16 10.1 16 9.9 16C9.7 16 9.5 15.9 9.3 15.7L7.3 13.7C6.9 13.3 6.9 12.7 7.3 12.3 7.7 11.9 8.3 11.9 8.7 12.3L10 13.6 15.3 8.3C15.7 7.9 16.3 7.9 16.7 8.3Z'/%3e%3c/svg%3e\")}.bao-checkbox input:disabled~.bao-checkbox-content-container{color:#adb2bd;border-color:#dee2e6}.bao-checkbox input:disabled~.bao-checkbox-content-container:before{border-color:#ced4da;background-color:#ced4da}.bao-checkbox input:disabled~.bao-checkbox-content-container .bao-checkbox-label,.bao-checkbox input:disabled~.bao-checkbox-content-container .bao-checkbox-description{color:#adb2bd}.bao-checkbox.bao-checkbox-hidden-label .bao-checkbox-label{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.bao-checkbox.bao-checkbox-hidden-label label.bao-checkbox-content-container .bao-checkbox-description{margin-top:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoCheckboxComponent, decorators: [{
|
|
247
|
-
type: Component,
|
|
248
|
-
args: [{ selector: 'bao-checkbox, [bao-checkbox]', providers: [
|
|
249
|
-
{
|
|
250
|
-
provide: NG_VALUE_ACCESSOR,
|
|
251
|
-
useExisting: forwardRef(() => BaoCheckboxComponent),
|
|
252
|
-
multi: true
|
|
253
|
-
}
|
|
254
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
255
|
-
class: 'bao-checkbox',
|
|
256
|
-
'[class.bao-checkbox-inline]': 'inline',
|
|
257
|
-
'[class.bao-checkbox-checked]': 'checked',
|
|
258
|
-
'[class.bao-checkbox-indeterminate]': 'indeterminate',
|
|
259
|
-
'[class.bao-checkbox-disabled]': 'disabled',
|
|
260
|
-
'[class.bao-checkbox-card]': 'brandBorder',
|
|
261
|
-
'[class.bao-checkbox-required]': 'required',
|
|
262
|
-
'[class.bao-checkbox-hidden-label]': 'hiddenLabel'
|
|
263
|
-
}, template: "<input\n #input\n type=\"checkbox\"\n [id]=\"inputID\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-checked]=\"getAriaState()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n role=\"checkbox\"\n/>\n<label class=\"bao-checkbox-content-container\" [attr.for]=\"inputID\">\n <div class=\"bao-checkbox-label\" [id]=\"ariaLabelledby\">\n <ng-content></ng-content>\n </div>\n <ng-content\n select=\"bao-checkbox-description, [bao-checkbox-description], [baoCheckboxDescription]\"\n ></ng-content>\n</label>\n", styles: [".bao-checkbox{display:block;font-size:1rem;line-height:1.5rem;min-height:1.5rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:2rem;position:relative;z-index:1}.bao-checkbox input{box-sizing:border-box;left:0;opacity:0;overflow:visible;padding:0;position:absolute;z-index:-1}.bao-checkbox input:focus~.bao-checkbox-content-container:before{box-shadow:0 0 0 .1875rem #0079c480}.bao-checkbox label.bao-checkbox-content-container{color:#212529;font-weight:400;font-size:1rem;line-height:1.5rem;margin-bottom:0;position:relative;vertical-align:top}.bao-checkbox label.bao-checkbox-content-container:before{border-radius:.125rem;box-sizing:border-box;position:absolute;top:0;left:-2rem;display:block;margin:.125rem;width:1.25rem;height:1.25rem;pointer-events:none;content:\"\";background-color:#fff;border:#ced4da solid 1px;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.bao-checkbox label.bao-checkbox-content-container:after{box-sizing:border-box;background:no-repeat 50%/1.5rem;content:\"\";display:block;height:1.5rem;left:-2rem;margin:0;position:absolute;top:0;width:1.5rem}.bao-checkbox label.bao-checkbox-content-container .bao-checkbox-label{color:#212529;display:block}.bao-checkbox label.bao-checkbox-content-container .bao-checkbox-description{color:#637381;display:block;margin-top:.5rem}.bao-checkbox.bao-checkbox-inline{display:inline-flex;margin-right:1rem}.bao-checkbox.bao-checkbox-card{padding:0;margin-bottom:1rem}.bao-checkbox.bao-checkbox-card:last-of-type{margin-bottom:0}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container{display:flex;flex-direction:column;flex:1;justify-content:center;padding:1rem 1rem 1rem 3.5rem;position:relative;border:1px solid #ced4da;border-radius:.25rem;color:#637381;min-height:3.5rem}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container:before{top:1rem;left:0;margin-left:1.125rem}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container:after{top:1rem;left:0;margin-left:1rem}.bao-checkbox.bao-checkbox-indeterminate .bao-checkbox-content-container:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23097d6c' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\")}.bao-checkbox input:checked~.bao-checkbox-content-container:before{border-color:#097d6c;background-color:#097d6c}.bao-checkbox input:checked~.bao-checkbox-content-container:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='%23ffffff' d='M16.7 8.3C17.1 8.7 17.1 9.3 16.7 9.7L10.7 15.7 10.7 15.7C10.6 15.9 10.4 15.9 10.2 16L10.1 16 10.1 16 9.9 16C9.7 16 9.5 15.9 9.3 15.7L7.3 13.7C6.9 13.3 6.9 12.7 7.3 12.3 7.7 11.9 8.3 11.9 8.7 12.3L10 13.6 15.3 8.3C15.7 7.9 16.3 7.9 16.7 8.3Z'/%3e%3c/svg%3e\")}.bao-checkbox input:disabled~.bao-checkbox-content-container{color:#adb2bd;border-color:#dee2e6}.bao-checkbox input:disabled~.bao-checkbox-content-container:before{border-color:#ced4da;background-color:#ced4da}.bao-checkbox input:disabled~.bao-checkbox-content-container .bao-checkbox-label,.bao-checkbox input:disabled~.bao-checkbox-content-container .bao-checkbox-description{color:#adb2bd}.bao-checkbox.bao-checkbox-hidden-label .bao-checkbox-label{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.bao-checkbox.bao-checkbox-hidden-label label.bao-checkbox-content-container .bao-checkbox-description{margin-top:0}\n"] }]
|
|
264
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }]; }, propDecorators: { id: [{
|
|
265
|
-
type: Input
|
|
266
|
-
}], ariaLabel: [{
|
|
267
|
-
type: Input,
|
|
268
|
-
args: ['aria-label']
|
|
269
|
-
}], brandBorder: [{
|
|
270
|
-
type: Input
|
|
271
|
-
}], inline: [{
|
|
272
|
-
type: Input
|
|
273
|
-
}], name: [{
|
|
274
|
-
type: Input
|
|
275
|
-
}], hiddenLabel: [{
|
|
276
|
-
type: Input
|
|
277
|
-
}], change: [{
|
|
278
|
-
type: Output
|
|
279
|
-
}], indeterminateChange: [{
|
|
280
|
-
type: Output
|
|
281
|
-
}], inputElement: [{
|
|
282
|
-
type: ViewChild,
|
|
283
|
-
args: ['input', { static: false }]
|
|
284
|
-
}], checked: [{
|
|
285
|
-
type: Input
|
|
286
|
-
}], disabled: [{
|
|
287
|
-
type: Input
|
|
288
|
-
}], required: [{
|
|
289
|
-
type: Input
|
|
290
|
-
}], indeterminate: [{
|
|
291
|
-
type: Input
|
|
292
|
-
}] } });
|
|
293
|
-
export class BaoCheckBoxDescription {
|
|
294
|
-
}
|
|
295
|
-
BaoCheckBoxDescription.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoCheckBoxDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
296
|
-
BaoCheckBoxDescription.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: BaoCheckBoxDescription, selector: "bao-checkbox-description, [bao-checkbox-description], [baoCheckboxDescription]", host: { classAttribute: "bao-checkbox-description" }, ngImport: i0 });
|
|
297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoCheckBoxDescription, decorators: [{
|
|
298
|
-
type: Directive,
|
|
299
|
-
args: [{
|
|
300
|
-
selector: 'bao-checkbox-description, [bao-checkbox-description], [baoCheckboxDescription]',
|
|
301
|
-
host: { class: 'bao-checkbox-description' }
|
|
302
|
-
}]
|
|
303
|
-
}] });
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFXekU7O0dBRUc7QUFDSCxJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQztBQTBCN0IsTUFBTSxPQUFPLG9CQUFvQjtJQXdFL0IsWUFDVSxVQUFtQyxFQUNuQyxHQUFzQixFQUN0QixZQUEwQjtRQUYxQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQTlEcEM7O1dBRUc7UUFDYSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUNhLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFPL0I7O1dBRUc7UUFDYSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUN1QixXQUFNLEdBQzlCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFOUI7O1dBRUc7UUFDdUIsd0JBQW1CLEdBQzNDLElBQUksWUFBWSxFQUFXLENBQUM7UUF1QnRCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixtQkFBYyxHQUFHLEtB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cUJBQ0YsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsY0FBYzt3QkFDckIsNkJBQTZCLEVBQUUsUUFBUTt3QkFDdkMsOEJBQThCLEVBQUUsU0FBUzt3QkFDekMsb0NBQW9DLEVBQUUsZUFBZTt3QkFDckQsK0JBQStCLEVBQUUsVUFBVTt3QkFDM0MsMkJBQTJCLEVBQUUsYUFBYTt3QkFDMUMsK0JBQStCLEVBQUUsVUFBVTt3QkFDM0MsbUNBQW1DLEVBQUUsYUFBYTtxQkFDbkQ7NEpBUWUsRUFBRTtzQkFBakIsS0FBSztnQkFLc0IsU0FBUztzQkFBcEMsS0FBSzt1QkFBQyxZQUFZO2dCQUtILFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsTUFBTTtzQkFBckIsS0FBSztnQkFLVSxJQUFJO3NCQUFuQixLQUFLO2dCQUtVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS29CLE1BQU07c0JBQS9CLE1BQU07Z0JBTW1CLG1CQUFtQjtzQkFBNUMsTUFBTTtnQkFPQyxZQUFZO3NCQURuQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBc0NqQyxPQUFPO3NCQURWLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixhQUFhO3NCQURoQixLQUFLOztBQW1OUixNQUFNLE9BQU8sc0JBQXNCOzttSEFBdEIsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQ04saUZBQWlGO29CQUNuRixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUU7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMyBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5pbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBDaGVja2JveCBzdGF0ZSBmb3IgYXJpYS1jaGVja2VkIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIGVDaGVja2JveEFyaWFTdGF0ZSB7XG4gIFRSVUUgPSAndHJ1ZScsXG4gIEZBTFNFID0gJ2ZhbHNlJyxcbiAgTUlYRUQgPSAnbWl4ZWQnXG59XG5cbi8qKlxuICogVW5pcXVlIElEIGZvciBlYWNoIGNoZWNrYm94IGNvdW50ZXJcbiAqL1xubGV0IGNoZWNrYm94TmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFvLWNoZWNrYm94LCBbYmFvLWNoZWNrYm94XScsXG4gIHRlbXBsYXRlVXJsOiAnY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJhb0NoZWNrYm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLWNoZWNrYm94JyxcbiAgICAnW2NsYXNzLmJhby1jaGVja2JveC1pbmxpbmVdJzogJ2lubGluZScsXG4gICAgJ1tjbGFzcy5iYW8tY2hlY2tib3gtY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgJ1tjbGFzcy5iYW8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZV0nOiAnaW5kZXRlcm1pbmF0ZScsXG4gICAgJ1tjbGFzcy5iYW8tY2hlY2tib3gtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmJhby1jaGVja2JveC1jYXJkXSc6ICdicmFuZEJvcmRlcicsXG4gICAgJ1tjbGFzcy5iYW8tY2hlY2tib3gtcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmJhby1jaGVja2JveC1oaWRkZW4tbGFiZWxdJzogJ2hpZGRlbkxhYmVsJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb0NoZWNrYm94Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgY2hlY2tib3ggSUQuIEl0IGlzIHNldCBkeW5hbWljYWxseSB3aXRoIGFuIHVuaXF1ZSBJRCBieSBkZWZhdWx0XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFyaWEtbGFiZWwgZm9yIHdlYiBhY2Nlc3NpYmlsaXR5XG4gICAqL1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBwdWJsaWMgYXJpYUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBoYXMgYSBib3JkZXIgYW5kIGlzIGNvbnNpZGVyZWQgYXMgYSBjYXJkLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGJyYW5kQm9yZGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGlubGluZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpbmxpbmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgcHJvcGVydHkgb2YgdGhlIGNoZWNrYm94XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZpc2libGUgc3RhdGUgb2YgdGhlIGxhYmVsXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZGVuTGFiZWwgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHRlZCBvYmplY3Qgb24gY2hhbmdlIGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEluZGVybWluYXRlIHZhbHVlIG9mIHRoZSBjaGVja2JveCB3aGVuZXZlclxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBpbnB1dCBodG1sIGVsZW1lbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgYXJpYS1kZXNjcmliZWRieSBpZCBmb3Igd2ViIGFjY2Vzc2liaWx0eVxuICAgKi9cbiAgcHVibGljIGFyaWFEZXNjcmliZWRieT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFyaWEtbGFiZWxlZGJ5IGlkIGZvciB3ZWIgYWNjZXNzaWJpbHR5XG4gICAqL1xuICBwdWJsaWMgYXJpYUxhYmVsbGVkYnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgaW5wdXQgaHRtbCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgaW5wdXRJRDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2NoZWNrZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICBwcml2YXRlIF91bmlxdWVJZCA9IGBiYW8tY2hlY2tib3gtJHsrK2NoZWNrYm94TmV4dFVuaXF1ZUlkfWA7XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3JcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICB0aGlzLmlkID0gdGhpcy5fdW5pcXVlSWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQuICBEZWZhdWx0IHZhbHVlIDogZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkLiBEZWZhdWx0IHZhbHVlIDogZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgcmVxdWlyZWQuICBEZWZhdWx0IHZhbHVlIDogZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZS4gIERlZmF1bHQgdmFsdWUgOiBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luZGV0ZXJtaW5hdGU7XG4gIH1cblxuICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuY2hlY2tlZCkge1xuICAgICAgdGhpcy5fY2hlY2tlZCA9IHZhbHVlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgLy8gSW4gdGhlIGNhc2UgdGhlIHZhbHVlIGlzIHN0cmluZyBvciBib29sZWFuXG4gICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gIH1cblxuICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGUpIHtcbiAgICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICAgIH1cbiAgICAvLyBVcGRhdGUgdGhlIGluZGVydGVtaW5hdGUgdmFsdWUgb2YgdGhlIGh0bWwgZWxlbWVudCBvYmplY3RcbiAgICB0aGlzLnN5bmNJbmRldGVybWluYXRlKHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIC8vIFNldCBhbGwgdW5pcXVlIGlkcyBmb3IgdGhlIGh0bWwgZWxlbWVudHNcbiAgICB0aGlzLmlucHV0SUQgPSBgJHt0aGlzLmlkfS1pbnB1dGA7XG4gICAgdGhpcy5hcmlhTGFiZWxsZWRieSA9IGAke3RoaXMuaWR9LWFyaWFsYWJlbGxlZGJ5YDtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLmVsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShmb2N1c09yaWdpbiA9PiB7XG4gICAgICBpZiAoIWZvY3VzT3JpZ2luKSB7XG4gICAgICAgIC8vIFdoZW4gYSBmb2N1c2VkIGVsZW1lbnQgYmVjb21lcyBkaXNhYmxlZCwgdGhlIGJyb3dzZXIgKmltbWVkaWF0ZWx5KiBmaXJlcyBhIGJsdXIgZXZlbnQuXG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lcyBub3QgZXhwZWN0IGV2ZW50cyB0byBiZSByYWlzZWQgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24sIHNvIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgLy8gKHN1Y2ggYXMgYSBmb3JtIGNvbnRyb2wncyAnbmctdG91Y2hlZCcpIHdpbGwgY2F1c2UgYSBjaGFuZ2VkLWFmdGVyLWNoZWNrZWQgZXJyb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xNzc5My4gVG8gd29yayBhcm91bmQgdGhpcywgd2UgZGVmZXJcbiAgICAgICAgLy8gdGVsbGluZyB0aGUgZm9ybSBjb250cm9sIGl0IGhhcyBiZWVuIHRvdWNoZWQgdW50aWwgdGhlIG5leHQgdGljay5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldEFyaWFEZXNjcmliZWRCeVRvRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLnN5bmNJbmRldGVybWluYXRlKHRoaXMuaW5kZXRlcm1pbmF0ZSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmNoZWNrZWQgPSAhIXZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKG9yaWdpbj86IEZvY3VzT3JpZ2luLCBvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5pbnB1dEVsZW1lbnQsIG9yaWdpbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW5ldmVyIHRoZXJlIGlzIGNoYW5nZSBvbiB0aGUgaW5wdXQgaHRtbCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgb25JbnRlcmFjdGlvbkV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFdlIGFsd2F5cyBoYXZlIHRvIHN0b3AgcHJvcGFnYXRpb24gb24gdGhlIGNoYW5nZSBldmVudC5cbiAgICAvLyBPdGhlcndpc2UgdGhlIGNoYW5nZSBldmVudCwgZnJvbSB0aGUgaW5wdXQgZWxlbWVudCwgd2lsbCBidWJibGUgdXAgYW5kXG4gICAgLy8gZW1pdCBpdHMgZXZlbnQgb2JqZWN0IHRvIHRoZSBgY2hhbmdlYCBvdXRwdXQuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbmV2ZXIgdGhlcmUgaXMgY2xpY2sgZXZlbnQgdHJpZ2dlcmVkIG9uIHRoZSBjaGVja2JveFxuICAgKi9cbiAgcHVibGljIG9uSW5wdXRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmb3IgdGhlIGFyaWEtY2hlY2tlZCBwcm9wZXJ0eSAod2ViIGFjY2Vzc2liaWxpdHkpXG4gICAqL1xuICBwdWJsaWMgZ2V0QXJpYVN0YXRlKCk6IGVDaGVja2JveEFyaWFTdGF0ZSB7XG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgcmV0dXJuIGVDaGVja2JveEFyaWFTdGF0ZS5UUlVFO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmluZGV0ZXJtaW5hdGVcbiAgICAgID8gZUNoZWNrYm94QXJpYVN0YXRlLk1JWEVEXG4gICAgICA6IGVDaGVja2JveEFyaWFTdGF0ZS5GQUxTRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IG5ldyB2YWx1ZXMgd2hlbmV2ZXIgdGhlIGNoZWNrYm94IG9iamVjdCBoYXMgY2hhbmdlLlxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlRXZlbnQoKSB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuY2hlY2tlZCk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuc3luY0NoZWNrZWQodGhpcy5jaGVja2VkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNoZWNrZWQgcHJvcGVydHkgb24gdGhlIGlucHV0IGh0bWwgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBzeW5jQ2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgaW5kZXRlcm1pbmF0ZSBwcm9wZXJ0eSBvbiB0aGUgaW5wdXQgaHRtbCBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIHN5bmNJbmRldGVybWluYXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBhcmlhLWRlc2NyaWJlZGJ5IHByb3BlcnR5IHRvIGJhby1jaGVja2JveC1kZXNjcmlwdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzZXRBcmlhRGVzY3JpYmVkQnlUb0Rlc2NyaXB0aW9uKCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBBcnJheS5mcm9tKHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzKTtcbiAgICBjb25zdCBsYWJlbE5vZGUgPSBjaGlsZE5vZGVzLmZpbmQoeCA9PiB7XG4gICAgICByZXR1cm4geC5ub2RlTmFtZSA9PT0gJ0xBQkVMJztcbiAgICB9KTtcbiAgICBpZiAobGFiZWxOb2RlKSB7XG4gICAgICBjb25zdCBsYWJlbENoaWxkTm9kZXMgPSBBcnJheS5mcm9tKGxhYmVsTm9kZS5jaGlsZE5vZGVzKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTm9kZSA9IGxhYmVsQ2hpbGROb2Rlcy5maW5kKHggPT4ge1xuICAgICAgICByZXR1cm4geC5ub2RlTmFtZSA9PT0gJ0JBTy1DSEVDS0JPWC1ERVNDUklQVElPTic7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGRlc2NyaXB0aW9uTm9kZSkge1xuICAgICAgICB0aGlzLmFyaWFEZXNjcmliZWRieSA9IGAke3RoaXMuaWR9LWFyaWFkZXNjcmliZWRieWA7XG4gICAgICAgIChkZXNjcmlwdGlvbk5vZGUgYXMgSFRNTEVsZW1lbnQpLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgIHRoaXMuYXJpYURlc2NyaWJlZGJ5XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFyaWFEZXNjcmliZWRieSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2hlY2tlZCB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSB0b2dnbGUoKSB7XG4gICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgfVxuXG4gIHByaXZhdGUgb25Nb2RlbENoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25Ub3VjaDogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOlxuICAgICdiYW8tY2hlY2tib3gtZGVzY3JpcHRpb24sIFtiYW8tY2hlY2tib3gtZGVzY3JpcHRpb25dLCAgW2Jhb0NoZWNrYm94RGVzY3JpcHRpb25dJyxcbiAgaG9zdDogeyBjbGFzczogJ2Jhby1jaGVja2JveC1kZXNjcmlwdGlvbicgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9DaGVja0JveERlc2NyaXB0aW9uIHt9XG4iLCI8aW5wdXRcbiAgI2lucHV0XG4gIHR5cGU9XCJjaGVja2JveFwiXG4gIFtpZF09XCJpbnB1dElEXCJcbiAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5XCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkYnlcIlxuICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiZ2V0QXJpYVN0YXRlKClcIlxuICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCJcbiAgcm9sZT1cImNoZWNrYm94XCJcbi8+XG48bGFiZWwgY2xhc3M9XCJiYW8tY2hlY2tib3gtY29udGVudC1jb250YWluZXJcIiBbYXR0ci5mb3JdPVwiaW5wdXRJRFwiPlxuICA8ZGl2IGNsYXNzPVwiYmFvLWNoZWNrYm94LWxhYmVsXCIgW2lkXT1cImFyaWFMYWJlbGxlZGJ5XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnRcbiAgICBzZWxlY3Q9XCJiYW8tY2hlY2tib3gtZGVzY3JpcHRpb24sIFtiYW8tY2hlY2tib3gtZGVzY3JpcHRpb25dLCBbYmFvQ2hlY2tib3hEZXNjcmlwdGlvbl1cIlxuICA+PC9uZy1jb250ZW50PlxuPC9sYWJlbD5cbiJdfQ==
|