oasys-lib 1.59.6 → 1.60.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/form/combobox/combobox.component.mjs +435 -0
- package/esm2022/lib/components/form/combobox/combobox.mjs +2 -0
- package/esm2022/lib/components/form/combobox/combobox.module.mjs +116 -0
- package/esm2022/lib/components/form/combobox/index.mjs +3 -0
- package/esm2022/lib/components/form/text-input/text-input.component.mjs +3 -3
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/oasys-lib.mjs +534 -4
- package/fesm2022/oasys-lib.mjs.map +1 -1
- package/lib/components/form/combobox/combobox.component.d.ts +176 -0
- package/lib/components/form/combobox/combobox.component.d.ts.map +1 -0
- package/lib/components/form/combobox/combobox.d.ts +9 -0
- package/lib/components/form/combobox/combobox.d.ts.map +1 -0
- package/lib/components/form/combobox/combobox.module.d.ts +15 -0
- package/lib/components/form/combobox/combobox.module.d.ts.map +1 -0
- package/lib/components/form/combobox/index.d.ts +3 -0
- package/lib/components/form/combobox/index.d.ts.map +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
- package/src/assets/bloomandwild/variables.css +1 -1
- package/src/assets/bloomon/variables.css +1 -1
- package/src/assets/global/forms.scss +15 -6
- package/src/assets/global/scss-breakpoints.scss +1 -1
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, forwardRef, ElementRef, Inject, ViewChild, ViewChildren, HostListener, } from '@angular/core';
|
|
3
|
+
import { NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "../../layout/box/box.component";
|
|
7
|
+
import * as i3 from "../../layout/stack/stack.component";
|
|
8
|
+
import * as i4 from "@angular/forms";
|
|
9
|
+
import * as i5 from "../../icon/icon.component";
|
|
10
|
+
import * as i6 from "../../../directives/autofocus/autofocus.directive";
|
|
11
|
+
export class ComboboxComponent {
|
|
12
|
+
/** Whether or not the overlay panel is open. */
|
|
13
|
+
get panelOpen() {
|
|
14
|
+
return this._panelOpen;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Selected option
|
|
18
|
+
*/
|
|
19
|
+
get selectedOption() {
|
|
20
|
+
return this._selectedOption || null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Focused Option
|
|
24
|
+
*/
|
|
25
|
+
get focusedOption() {
|
|
26
|
+
return this._focusedOption || null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Return the id of the focused option
|
|
30
|
+
*/
|
|
31
|
+
get focusedId() {
|
|
32
|
+
return this._focusedOptionId || null;
|
|
33
|
+
}
|
|
34
|
+
get valueOptionKey() {
|
|
35
|
+
return this.valueKey ? this.valueKey : 'value';
|
|
36
|
+
}
|
|
37
|
+
get displayOptionKey() {
|
|
38
|
+
return this.displayKey ? this.displayKey : 'label';
|
|
39
|
+
}
|
|
40
|
+
get subtextOptionKey() {
|
|
41
|
+
return this.subtextKey ? this.subtextKey : 'subtext';
|
|
42
|
+
}
|
|
43
|
+
constructor(document) {
|
|
44
|
+
this.document = document;
|
|
45
|
+
this.type = 'options';
|
|
46
|
+
this.options = [];
|
|
47
|
+
this.optional = true;
|
|
48
|
+
this.autofocus = false;
|
|
49
|
+
this.disabled = false;
|
|
50
|
+
// Will open the list of options on init
|
|
51
|
+
this.showOptions = false;
|
|
52
|
+
this.didChange = new EventEmitter();
|
|
53
|
+
this.didSearch = new EventEmitter();
|
|
54
|
+
this.didEdit = new EventEmitter();
|
|
55
|
+
this.textValue = '';
|
|
56
|
+
this.inputDidChange = false; // only show valdiation after a change event (ie. blur)
|
|
57
|
+
this.displayOptions = [];
|
|
58
|
+
this._panelOpen = false;
|
|
59
|
+
this.onChange = () => { };
|
|
60
|
+
this.onTouched = () => { };
|
|
61
|
+
}
|
|
62
|
+
onClick(targetElement) {
|
|
63
|
+
if (this.panelOpen) {
|
|
64
|
+
const clickedInside = this.combobox.nativeElement.contains(targetElement);
|
|
65
|
+
if (!clickedInside) {
|
|
66
|
+
this.closePanel();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* On Change
|
|
72
|
+
* @param changes
|
|
73
|
+
*/
|
|
74
|
+
ngOnChanges(changes) {
|
|
75
|
+
// Detects if the autocomplete options list is chnaged after a selection of an option.
|
|
76
|
+
// Example: Address search can have options assigned to a group of options. One postcode to have x number of addreses
|
|
77
|
+
// If Options list is Changed as part of group option we let the options panel open to let user select a single option. This is considered as change input value(similar with type value)
|
|
78
|
+
if (this.type === 'autocomplete' && changes['options']) {
|
|
79
|
+
const optionchanges = changes['options'];
|
|
80
|
+
if (!this.options) {
|
|
81
|
+
this.closePanel();
|
|
82
|
+
}
|
|
83
|
+
if (optionchanges['currentValue'] !== optionchanges['previousValue'] && this.options?.length !== 0 && !optionchanges['firstChange']) {
|
|
84
|
+
this.resetOptionsList();
|
|
85
|
+
this.openPanel();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* On Init
|
|
91
|
+
*/
|
|
92
|
+
ngOnInit() {
|
|
93
|
+
this.id = this.label + Math.random();
|
|
94
|
+
this.resetSelection();
|
|
95
|
+
this.resetOptionsList();
|
|
96
|
+
if (this.selected) {
|
|
97
|
+
const selectedIndex = this.options.findIndex((option) => option[this.valueOptionKey] === this.selected[this.valueOptionKey]);
|
|
98
|
+
this.selectOption(this.options[selectedIndex], selectedIndex);
|
|
99
|
+
}
|
|
100
|
+
if (this.showOptions) {
|
|
101
|
+
this.openPanel();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* After View Init
|
|
106
|
+
*/
|
|
107
|
+
ngAfterViewInit() {
|
|
108
|
+
this.setupValidationListener();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Select Option
|
|
112
|
+
* @param option
|
|
113
|
+
*/
|
|
114
|
+
selectOption(option, index) {
|
|
115
|
+
this._selectedOption = option;
|
|
116
|
+
this._focusedOptionId = index;
|
|
117
|
+
this._focusedOption = option;
|
|
118
|
+
this.textValue = this._selectedOption[this.displayOptionKey];
|
|
119
|
+
this.onChange(this.textValue);
|
|
120
|
+
this.didChange.emit(this.selectedOption);
|
|
121
|
+
this.onTouched();
|
|
122
|
+
this.closePanel();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* On Key Navigation
|
|
126
|
+
* @param event
|
|
127
|
+
*/
|
|
128
|
+
onKeyDown(event) {
|
|
129
|
+
switch (event.key) {
|
|
130
|
+
case "Enter":
|
|
131
|
+
this.pressEnter();
|
|
132
|
+
break;
|
|
133
|
+
case "Tab":
|
|
134
|
+
if (this.panelOpen) {
|
|
135
|
+
this.closePanel();
|
|
136
|
+
}
|
|
137
|
+
break;
|
|
138
|
+
case "Escape":
|
|
139
|
+
if (this.panelOpen) {
|
|
140
|
+
this.closePanel();
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
// Logic for open panel
|
|
145
|
+
if (this.panelOpen) {
|
|
146
|
+
this.pressArrows(event);
|
|
147
|
+
this._focusedOption = this.displayOptions[this._focusedOptionId];
|
|
148
|
+
this.optionsList.get(this._focusedOptionId)?.nativeElement.focus();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Toggle Options Panel
|
|
153
|
+
*/
|
|
154
|
+
togglePanel() {
|
|
155
|
+
this._panelOpen = this.panelOpen ? false : true;
|
|
156
|
+
this.initSelectedFocus();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Clase Options Panel
|
|
160
|
+
*/
|
|
161
|
+
openPanel(event) {
|
|
162
|
+
event?.preventDefault();
|
|
163
|
+
if (!this._panelOpen) {
|
|
164
|
+
this._panelOpen = true;
|
|
165
|
+
this.initSelectedFocus();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Close Options Panel
|
|
170
|
+
*/
|
|
171
|
+
closePanel() {
|
|
172
|
+
if (this._panelOpen) {
|
|
173
|
+
this._panelOpen = false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get Input display value
|
|
178
|
+
* @param textValue
|
|
179
|
+
*/
|
|
180
|
+
writeValue(textValue) {
|
|
181
|
+
if ((this.selected && (typeof textValue) !== 'string') || textValue === '') {
|
|
182
|
+
this.textValue = this._selectedOption[this.displayOptionKey];
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
this.textValue = textValue;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Register Form input chnage
|
|
190
|
+
* @param fn
|
|
191
|
+
*/
|
|
192
|
+
registerOnChange(fn) {
|
|
193
|
+
this.onChange = fn;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Register form input touch
|
|
197
|
+
* @param fn
|
|
198
|
+
*/
|
|
199
|
+
registerOnTouched(fn) {
|
|
200
|
+
this.onTouched = fn;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* On Model Change
|
|
204
|
+
* @param textValue
|
|
205
|
+
*/
|
|
206
|
+
onModelChange(textValue) {
|
|
207
|
+
this.textValue = textValue;
|
|
208
|
+
this.inputDidChange = true;
|
|
209
|
+
this.onChange(textValue);
|
|
210
|
+
this.onTouched();
|
|
211
|
+
this.didChange.emit(this.selectedOption);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* On Model Change
|
|
215
|
+
* @param textValue
|
|
216
|
+
*/
|
|
217
|
+
onModelChangeAutocomplete(textValue) {
|
|
218
|
+
this.textValue = textValue;
|
|
219
|
+
this.inputDidChange = true;
|
|
220
|
+
this.onChange(textValue);
|
|
221
|
+
this.onTouched();
|
|
222
|
+
this.didChange.emit(this.selectedOption);
|
|
223
|
+
this.onAutocompleteListSearch(textValue);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Event handling for Input value
|
|
227
|
+
*/
|
|
228
|
+
handleEvent() {
|
|
229
|
+
this.inputDidChange = true;
|
|
230
|
+
const inputElement = this.document.getElementById(this.id.toString());
|
|
231
|
+
inputElement?.removeEventListener('change', this);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Clean Input
|
|
235
|
+
*/
|
|
236
|
+
cleanInput() {
|
|
237
|
+
this.textValue = '';
|
|
238
|
+
this.resetSelection();
|
|
239
|
+
this.resetOptionsList();
|
|
240
|
+
this.closePanel();
|
|
241
|
+
this.didSearch.emit(this.textValue);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* On footer action
|
|
245
|
+
*/
|
|
246
|
+
onFooterAction() {
|
|
247
|
+
this.didEdit.emit();
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* On Focus Input
|
|
251
|
+
*/
|
|
252
|
+
onFocusInput() {
|
|
253
|
+
this.textInput.nativeElement.focus();
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Search in Autocomplete
|
|
257
|
+
* @param textValue
|
|
258
|
+
*/
|
|
259
|
+
onAutocompleteListSearch(textValue) {
|
|
260
|
+
if (!textValue) {
|
|
261
|
+
this.closePanel();
|
|
262
|
+
this.resetSelection();
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
this.openPanel();
|
|
266
|
+
this.displayOptions = this.options.filter((option) => {
|
|
267
|
+
return this.checkIncludesSubstring(option, this.displayOptionKey)
|
|
268
|
+
|| this.checkIncludesSubstring(option, this.subtextOptionKey);
|
|
269
|
+
});
|
|
270
|
+
if (this.displayOptions.length === 0) {
|
|
271
|
+
this.closePanel();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
this.textInput.nativeElement.focus();
|
|
275
|
+
this.didSearch.emit(this.textValue);
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Check a susbcring is included in option value
|
|
279
|
+
* @param option
|
|
280
|
+
* @returns
|
|
281
|
+
*/
|
|
282
|
+
checkIncludesSubstring(option, key) {
|
|
283
|
+
return option[key]?.toString().toLowerCase().includes(this.textValue.toLowerCase());
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Set Input Validators
|
|
287
|
+
*/
|
|
288
|
+
setupValidationListener() {
|
|
289
|
+
const inputElement = this.document.getElementById(this.id.toString());
|
|
290
|
+
inputElement?.addEventListener('change', this);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Init focus mode or set the selected option as focused
|
|
294
|
+
*/
|
|
295
|
+
initSelectedFocus() {
|
|
296
|
+
if (this._panelOpen) {
|
|
297
|
+
if (this._selectedOption) {
|
|
298
|
+
this._focusedOption = this._selectedOption;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
this._focusedOptionId = 0;
|
|
302
|
+
this._focusedOption = this.options[this._focusedOptionId];
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Arrows Up/Down navigation inside Options Panel
|
|
308
|
+
*/
|
|
309
|
+
pressArrows(event) {
|
|
310
|
+
switch (event.key) {
|
|
311
|
+
case "ArrowDown":
|
|
312
|
+
this._focusedOptionId = Math.min(this._focusedOptionId + 1, this.displayOptions.length - 1);
|
|
313
|
+
this.autocompleteOptionTextPreview();
|
|
314
|
+
break;
|
|
315
|
+
case "ArrowUp":
|
|
316
|
+
this._focusedOptionId = Math.max(this._focusedOptionId - 1, 0);
|
|
317
|
+
this.autocompleteOptionTextPreview();
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Change textValue to preview the option in autocomplete
|
|
323
|
+
*/
|
|
324
|
+
autocompleteOptionTextPreview() {
|
|
325
|
+
if (this.type === 'autocomplete') {
|
|
326
|
+
this.textValue = this._focusedOption[this.displayOptionKey];
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Press Enter inside Options Panel
|
|
331
|
+
*/
|
|
332
|
+
pressEnter() {
|
|
333
|
+
if (this.panelOpen && this._focusedOptionId < this.options.length && this._focusedOptionId >= 0) {
|
|
334
|
+
this.selectOption(this._focusedOption, this._focusedOptionId);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Reset selected option
|
|
339
|
+
*/
|
|
340
|
+
resetSelection() {
|
|
341
|
+
this._selectedOption = null;
|
|
342
|
+
this._focusedOption = null;
|
|
343
|
+
this._focusedOptionId = 0;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Reset to original or unfiltered option list
|
|
347
|
+
*/
|
|
348
|
+
resetOptionsList() {
|
|
349
|
+
this.displayOptions = this.options;
|
|
350
|
+
}
|
|
351
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ComboboxComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
352
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: ComboboxComponent, selector: "ui-combobox", inputs: { label: "label", type: "type", options: "options", optional: "optional", hint: "hint", header: "header", footer: "footer", autofocus: "autofocus", disabled: "disabled", selected: "selected", displayKey: "displayKey", iconNameKey: "iconNameKey", valueKey: "valueKey", subtextKey: "subtextKey", placeholder: "placeholder", showOptions: "showOptions" }, outputs: { didChange: "didChange", didSearch: "didSearch", didEdit: "didEdit" }, host: { listeners: { "document:click": "onClick($event.target)" } }, providers: [
|
|
353
|
+
{
|
|
354
|
+
provide: NG_VALUE_ACCESSOR,
|
|
355
|
+
useExisting: forwardRef(() => ComboboxComponent),
|
|
356
|
+
multi: true,
|
|
357
|
+
},
|
|
358
|
+
], viewQueries: [{ propertyName: "textInput", first: true, predicate: ["textinput"], descendants: true, read: ElementRef }, { propertyName: "combobox", first: true, predicate: ["combobox"], descendants: true, read: ElementRef }, { propertyName: "optionsList", predicate: ["option"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ui-stack class=\"ui-combobox-container\" stack_gap=\"tight\">\n <div class=\"ui-combobox text-body--default text-body--regular\"> \n <!-- Compbobox Options Input -->\n <div \n *ngIf=\"type==='options'\"\n #combobox\n name=\"combobox\" \n tabindex=\"0\" \n (keydown)=\"onKeyDown($event)\"\n (mousedown)=\"togglePanel($event)\"\n (focus)=\"openPanel($event)\"\n [attr.aria-activedescendant]=\"'activedescendent-opt ' + focusedId\"\n aria-readonly=\"true\" aria-owns=\"activedescendent-list\" aria-autocomplete=\"list\" role=\"combobox\" id=\"activedescendent-edit\"\n >\n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_align=\"center\" stack_gap=\"tight\">\n <ui-box box_space=\"none\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" role=\"combobox-label\" [for]=\"id\">{{label}}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"onModelChange(textValue)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'on'\" \n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"selectedOption\"\n [placeholder]=\"placeholder || ''\"\n readonly=\"readonly\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n <!-- Select Icon Chevron Area -->\n <div class=\"icon-container\">\n <ui-icon *ngIf=\"!panelOpen\" icon_name=\"chevron-down\"></ui-icon>\n <ui-icon *ngIf=\"panelOpen\" icon_name=\"chevron-up\"></ui-icon>\n </div>\n </ui-stack>\n </div>\n \n <!-- Combobox Autocomplete Input -->\n <div \n *ngIf=\"type==='autocomplete'\"\n #combobox\n name=\"combobox\" \n tabindex=\"0\" \n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocusInput($event)\"\n [attr.aria-activedescendant]=\"'activedescendent-opt ' + focusedId\"\n aria-readonly=\"true\" aria-owns=\"activedescendent-list\" aria-autocomplete=\"list\" role=\"combobox\" id=\"activedescendent-edit\"\n >\n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_align=\"center\" stack_gap=\"tight\">\n <ui-box box_space=\"none\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" role=\"combobox-label\" [for]=\"id\">{{label}}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChangeAutocomplete($event)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'list'\" \n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"textValue\"\n [placeholder]=\"placeholder||''\"\n role=\"combobox\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n\n <!-- Combobox Icon Clear Area -->\n <div class=\"icon-container\" (click)=\"cleanInput()\">\n <ui-icon *ngIf=\"textValue\" icon_name=\"close\" ></ui-icon>\n </div>\n </ui-stack>\n </div>\n \n <!-- Combobox Options Panel -->\n <div *ngIf=\"panelOpen\" \n class=\"ui-combobox-options\" \n [attr.aria-expanded]=\"panelOpen\" \n role=\"listbox\" \n id=\"activedescendent-list\">\n \n <!-- Autocomplete Options Panel Header -->\n <div *ngIf=\"header && type==='autocomplete'\" \n class=\"ui-combobox-header text-body--supporting\"> \n <span>{{header}}</span>\n </div>\n \n <!-- Options list -->\n <div\n #option \n *ngFor=\"let option of displayOptions; index as i\"\n [id]=\"'activedescendent-opt'+i\"\n [attr.aria-label]=\"displayKey ? option[displayKey] : option.label\"\n class=\"ui-combobox-option\" \n [ngClass]=\"{'selected': selectedOption === option, 'focus': focusedOption === option }\"\n (click)=\"selectOption(option, i)\"\n (keydown)=\"onKeyDown($event)\"\n >\n \n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_align=\"center\" stack_gap=\"tight\">\n <!-- Option display -->\n <div [value]=\"valueKey ? option[valueKey]: option.value\" [ngValue]=\"displayKey ? option[displayKey] : option.label\">\n <ui-stack stack_direction=\"x\" stack_align=\"center\" stack_gap=\"tight\">\n <ui-icon *ngIf=\"option.icon_name || (iconNameKey && option[iconNameKey]) \" [icon_name]=\"iconNameKey ? option[iconNameKey] : option.icon_name\"></ui-icon>\n <ui-stack stack_gap=\"tiny\">\n <span>{{displayKey ? option[displayKey] : option.label}}</span>\n <p class=\"foreground-secondary-text\" *ngIf=\"type==='autocomplete'\"> {{subtextKey ? option[subtextKey] : option.subtext}} </p>\n </ui-stack>\n </ui-stack>\n </div>\n \n <!-- Selected icon -->\n <ui-icon *ngIf=\"selectedOption === option\" icon_name=\"tick\" aria-label=\"Selected\"></ui-icon>\n </ui-stack>\n </div>\n\n <!-- Autocomplete Options Panel Footer -->\n <div *ngIf=\"footer && type==='autocomplete'\"\n class=\"ui-combobox-footer\">\n <ui-button button_type=\"tertiary\" (clicked)=\"onFooterAction()\"> {{footer}} </ui-button>\n </div>\n </div>\n </div> \n <ui-stack stack_gap=\"none\">\n <!-- ERROR Messages -->\n <div class=\"input-errors\">\n <div class=\"input-errors-content\">\n <ng-content select=\"ui-form-errors\"></ng-content>\n </div>\n </div>\n\n <!-- HINT Message -->\n <ui-box *ngIf=\"hint\" box_background=\"none\" box_space=\"none\" box_space_left=\"near\" box_space_right=\"near\"\n box_space_bottom=\"near\">\n <div \n class=\"input-hint text-body--supporting text-color--supporting\"\n [aria-label]=\"hint\">{{hint}}</div>\n </ui-box>\n </ui-stack>\n</ui-stack>", styles: ["html{font-size:62.5%}html,html body{font-family:var(--oasys-typography-body-body-font-family);font-weight:var(--oasys-typography-body-body-font-weight);font-size:var(--oasys-typography-body-body-font-size);line-height:var(--oasys-typography-body-body-font-line-height);color:var(--oasys-color-brand-foreground-primary)}html b,html bold,html strong,html body b,html body bold,html body strong{font-weight:var(--oasys-typography-body-emphasis-hero-font-weight)}html i,html body i{font-style:normal}h1,h2,h3,.text-heading,.text-body--expressive,.ui-rce blockquote,.ui-prose blockquote,article blockquote{font-family:var(--oasys-typography-heading-hero-desktop-font-family)}h4,h5,h6,.text-heading--functional,.ui-rce h3,.ui-prose h3,article h3,.ui-rce h2,.ui-prose h2,article h2{font-family:var(--oasys-typography-heading-func-primary-desktop-font-family)}ui-container h1,ui-container h2,ui-container h3,ui-container h4,ui-container h5,ui-container h6,ui-container p,ui-box h1,ui-box h2,ui-box h3,ui-box h4,ui-box h5,ui-box h6,ui-box p,ui-stack h1,ui-stack h2,ui-stack h3,ui-stack h4,ui-stack h5,ui-stack h6,ui-stack p,ui-grid h1,ui-grid h2,ui-grid h3,ui-grid h4,ui-grid h5,ui-grid h6,ui-grid p{margin:0}h1:not(.seo-h1),.text-heading--hero{font-size:var(--oasys-typography-heading-hero-desktop-font-size);line-height:var(--oasys-typography-heading-hero-desktop-line-height);font-weight:var(--oasys-typography-heading-hero-desktop-font-weight)}@media only screen and (max-width: 767px){h1:not(.seo-h1),.text-heading--hero{font-size:var(--oasys-typography-heading-hero-mobile-font-size);line-height:var(--oasys-typography-heading-hero-mobile-line-height);font-weight:var(--oasys-typography-heading-hero-mobile-font-weight)}}h2,.text-heading--primary{font-size:var(--oasys-typography-heading-primary-desktop-font-size);line-height:var(--oasys-typography-heading-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-primary-desktop-font-weight)}@media only screen and (max-width: 767px){h2,.text-heading--primary{font-size:var(--oasys-typography-heading-primary-mobile-font-size);line-height:var(--oasys-typography-heading-primary-mobile-line-height);font-weight:var(--oasys-typography-heading-primary-mobile-font-weight)}}h3,.text-heading--secondary{font-size:var(--oasys-typography-heading-secondary-font-size);line-height:var(--oasys-typography-heading-secondary-line-height);font-weight:var(--oasys-typography-heading-secondary-font-weight)}h4,.text-heading--functional--primary,.ui-rce h2,.ui-prose h2,article h2{font-size:var(--oasys-typography-heading-func-primary-desktop-font-size);line-height:var(--oasys-typography-heading-func-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-primary-desktop-font-weight)}@media only screen and (max-width: 767px){h4,.text-heading--functional--primary,.ui-rce h2,.ui-prose h2,article h2{font-size:var(--oasys-typography-heading-func-primary-mobile-font-size);line-height:var(--oasys-typography-heading-func-primary-mobile-line-height)}}h5,.text-heading--functional--secondary,.ui-rce h3,.ui-prose h3,article h3{font-size:var(--oasys-typography-heading-func-secondary-desktop-font-size);line-height:var(--oasys-typography-heading-func-secondary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-secondary-desktop-font-weight)}@media only screen and (max-width: 767px){h5,.text-heading--functional--secondary,.ui-rce h3,.ui-prose h3,article h3{font-size:var(--oasys-typography-heading-func-secondary-mobile-font-size);line-height:var(--oasys-typography-heading-func-secondary-mobile-line-height);font-weight:var(--oasys-typography-heading-func-secondary-mobile-font-weight)}}label{-webkit-user-select:none;user-select:none;cursor:pointer}label,.text-label--primary{font-size:var(--oasys-typography-heading-label-primary-font-size);line-height:var(--oasys-typography-heading-label-primary-line-height);font-weight:var(--oasys-typography-heading-label-primary-font-weight)}.text-label--secondary{font-size:var(--oasys-typography-heading-label-secondary-font-size);line-height:var(--oasys-typography-heading-label-secondary-line-height);font-weight:var(--oasys-typography-heading-label-secondary-font-weight)}.text-body--expressive,.ui-rce blockquote,.ui-prose blockquote,article blockquote{font-size:var(--oasys-typography-body-expressive-font-size);line-height:var(--oasys-typography-body-expressive-line-height);font-weight:var(--oasys-typography-body-expressive-font-weight)}.text-body--hero,.ui-combobox input:-webkit-autofill:first-line,.ui-combobox .select:-webkit-autofill:first-line,.ui-rce h6,.ui-prose h6,article h6{font-size:var(--oasys-typography-body-hero-font-size);line-height:var(--oasys-typography-body-hero-line-height);font-weight:var(--oasys-typography-body-hero-font-weight)}.text-body--default,.ui-rce p{font-size:var(--oasys-typography-body-body-font-size);line-height:var(--oasys-typography-body-body-line-height);font-weight:var(--oasys-typography-body-body-font-weight)}.text-body--supporting{font-size:var(--oasys-typography-body-supporting-font-size);line-height:var(--oasys-typography-body-supporting-line-height);font-weight:var(--oasys-typography-body-supporting-body-weight)}.text-body--regular,.ui-rce h6,.ui-prose h6,article h6{font-weight:var(--oasys-typography-body-body-font-weight)}.text-body--line-through{-webkit-text-decoration:var(--oasys-typography-body-line-through-body-text-decoration);text-decoration:var(--oasys-typography-body-line-through-body-text-decoration)}.text-body--emphasis,.ui-combobox input,.ui-combobox .select,.ui-rce h3,.ui-prose h3,article h3,.ui-rce h2,.ui-prose h2,article h2,a--standalone,.text-link--standalone,.ui-rce .ui-rce-embed a,.ui-rce .ui-rce-embed a:hover,.ui-prose .ui-rce-embed a,.ui-prose .ui-rce-embed a:hover,article .ui-rce-embed a,article .ui-rce-embed a:hover{font-weight:var(--oasys-typography-body-emphasis-hero-font-weight)}.text-color--on-light{color:var(--oasys-color-brand-foreground-primary)}.text-color--on-light.text-color--supporting,.text-color--on-light .text-color--supporting{color:var(--oasys-color-brand-foreground-secondary)}.text-color--on-dark{color:var(--oasys-color-brand-foreground-primary-on-dark)}.text-color--on-dark.text-color--supporting,.text-color--on-dark .text-color--supporting{color:var(--oasys-color-brand-foreground-secondary-on-dark)}.text-color--supporting{color:var(--oasys-color-brand-foreground-secondary)}.text-color--error{color:var(--oasys-color-system-foreground-negative)}.text-color--highlight{color:var(--oasys-color-brand-foreground-highlight)}a{color:inherit;text-decoration:none}.text--readable-width,.ui-rce blockquote,.ui-prose blockquote,article blockquote{max-width:70ch}a,.text-link,.ui-rce a,.ui-rce a:hover,.ui-prose a,.ui-prose a:hover,article a,article a:hover{text-decoration:none;cursor:pointer}a--standalone,.text-link--standalone,.ui-rce .ui-rce-embed a,.ui-rce .ui-rce-embed a:hover,.ui-prose .ui-rce-embed a,.ui-prose .ui-rce-embed a:hover,article .ui-rce-embed a,article .ui-rce-embed a:hover{text-decoration:underline}a--paragraph,.text-link--paragraph,.ui-rce a,.ui-rce a:hover,.ui-prose a,.ui-prose a:hover,article a,article a:hover{text-decoration:underline;font-weight:inherit}.ui-rce h2,.ui-prose h2,article h2{padding-top:var(--oasys-prose-vertical-adjustment-heading-primary-large-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-primary-large-bottom)}@media only screen and (max-width: 767px){.ui-rce h2,.ui-prose h2,article h2{padding-top:var(--oasys-prose-vertical-adjustment-heading-primary-small-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-primary-small-bottom)}}.ui-rce h3,.ui-prose h3,article h3{padding-top:var(--oasys-prose-vertical-adjustment-heading-secondary-large-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-secondary-large-bottom)}@media only screen and (max-width: 767px){.ui-rce h3,.ui-prose h3,article h3{padding-top:var(--oasys-prose-vertical-adjustment-heading-secondary-small-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-secondary-small-bottom)}}.ui-rce p,.ui-rce ul,.ui-rce ol,.ui-prose p,.ui-prose ul,.ui-prose ol,article p,article ul,article ol{margin-bottom:var(--oasys-prose-vertical-adjustment-paragraph-bottom)}.ui-rce p:empty,.ui-rce ul:empty,.ui-rce ol:empty,.ui-prose p:empty,.ui-prose ul:empty,.ui-prose ol:empty,article p:empty,article ul:empty,article ol:empty{display:none}.ui-rce blockquote,.ui-prose blockquote,article blockquote{padding-top:var(--oasys-prose-vertical-adjustment-blockquote-top);margin-bottom:var(--oasys-prose-vertical-adjustment-blockquote-bottom);text-align:center;margin:0 auto}.ui-rce hr,.ui-prose hr,article hr{display:block;width:100%;border:0;padding:0;margin:0;height:var(--oasys-size-unit-8);background:var(--oasys-color-brand-background-secondary);margin-top:var(--oasys-spacing-expanded);margin-bottom:var(--oasys-spacing-expanded)}.ui-rce ol,.ui-prose ol,article ol{list-style-type:decimal;list-style-position:inside}.ui-rce ul,.ui-prose ul,article ul{list-style:initial;list-style-position:inside}.ui-rce .ui-rce-embed,.ui-prose .ui-rce-embed,article .ui-rce-embed{padding-top:var(--oasys-prose-vertical-adjustment-component-top-bottom);margin-bottom:var(--oasys-prose-vertical-adjustment-component-top-bottom)}.ui-rce .ui-rce-embed ui-button a,.ui-rce .ui-rce-embed ui-button a:hover,.ui-prose .ui-rce-embed ui-button a,.ui-prose .ui-rce-embed ui-button a:hover,article .ui-rce-embed ui-button a,article .ui-rce-embed ui-button a:hover{text-decoration:none}.ui-rce>ui-box .ui-box-content>*:first-child{padding-top:0}.ui-rce>ui-box .ui-box-content>*:last-child{margin-bottom:0}.ui-rce .ui-rce-instance:last-of-type{padding-bottom:var(--oasys-spacing-expanded)}.ui-rce ui-button,.ui-rce img{display:inline-block;margin:0;margin-top:var(--oasys-spacing-near);margin-right:var(--oasys-spacing-near);vertical-align:top}.ui-rce ui-button:last-child,.ui-rce img:last-child{margin-right:0}.ui-rce img{width:100%}.ui-rce ol p,.ui-rce ul p{display:inline;margin:0}form fieldset legend{margin-bottom:var(--oasys-spacing-near)}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .ui-text-input,form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .ui-combobox,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .ui-text-input,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-system-foreground-negative)}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .input-errors,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .input-errors .input-errors-content,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .input-errors .input-errors-content{visibility:visible!important}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .hint-container,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .hint-container{display:none!important}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .ui-text-input,form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .ui-combobox,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .ui-text-input,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-system-foreground-negative)}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .input-errors,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .input-errors .input-errors-content,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .input-errors .input-errors-content{visibility:visible!important}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .hint-container,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .hint-container{display:none!important}.ui-checkbox input,.ui-radio input,.ui-text-input input,.ui-combobox input{appearance:none;margin:0;border:none}.ui-checkbox input,.ui-radio input{cursor:pointer}.ui-checkbox,.ui-radio{--_inset: var(--oasys-spacing-near);--_radius: var(--oasys-radius-soften);--_transition_duration: calc(var(--oasys-animation-duration) * 1ms)}.ui-checkbox input,.ui-radio input{position:absolute;inset:0;border-radius:var(--oasys-radius-soften)}.ui-checkbox input.secondary,.ui-radio input.secondary{inset:unset;top:var(--_inset);--_focusSize: var(--oasys-typography-heading-label-secondary-line-height);width:var(--_focusSize);height:var(--_focusSize)}.ui-checkbox input+label,.ui-radio input+label{width:inherit;display:flex;align-items:center;gap:var(--oasys-spacing-tight)}.ui-checkbox input+label .icon-container,.ui-radio input+label .icon-container{align-self:flex-start;padding:var(--oasys-component-checkbox-icon-inset);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected);border-radius:var(--_radius)}.ui-checkbox input+label .input-hint:empty,.ui-radio input+label .input-hint:empty{display:none}.ui-checkbox input+label.primary,.ui-radio input+label.primary{padding:var(--_inset);border-radius:var(--_radius);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-checkbox input+label.secondary,.ui-radio input+label.secondary{padding:var(--_inset) 0}.ui-checkbox input+label.secondary .icon-container,.ui-radio input+label.secondary .icon-container{background:transparent;border-radius:var(--_radius);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected)}.ui-checkbox input+label,.ui-checkbox input+label .icon-container,.ui-radio input+label,.ui-radio input+label .icon-container{transition:background-color calc(var(--_transition_duration) * 1ms),border-color calc(var(--_transition_duration) * 1ms)}.ui-checkbox input:hover+label.primary,.ui-checkbox input:checked+label.primary,.ui-radio input:hover+label.primary,.ui-radio input:checked+label.primary{background:var(--oasys-color-interaction-background-selected)}.ui-checkbox input:hover+label.secondary .icon-container,.ui-checkbox input:checked+label.secondary .icon-container,.ui-radio input:hover+label.secondary .icon-container,.ui-radio input:checked+label.secondary .icon-container{background:var(--oasys-color-interaction-background-selected)}.ui-checkbox input:checked+label.primary .icon-container,.ui-checkbox input:checked+label.secondary .icon-container,.ui-radio input:checked+label.primary .icon-container,.ui-radio input:checked+label.secondary .icon-container{background:var(--oasys-color-interaction-border-selected);border-color:var(--oasys-color-interaction-border-selected);color:var(--oasys-color-brand-foreground-primary-on-dark)}.ui-checkbox input:checked+label.primary,.ui-radio input:checked+label.primary{border-color:var(--oasys-color-interaction-border-selected)!important}.ui-checkbox input.ng-touched.ng-invalid+label,.ui-radio input.ng-touched.ng-invalid+label{color:var(--oasys-color-system-foreground-negative)}.ui-checkbox input.ng-touched.ng-invalid+label .icon-container,.ui-radio input.ng-touched.ng-invalid+label .icon-container{border-color:var(--oasys-color-system-foreground-negative)}.ui-chip .ui-checkbox input+label .icon-container.icon--hidden,.ui-chip .ui-radio input+label .icon-container.icon--hidden{display:none}.ui-chip .ui-checkbox input+label .label--center,.ui-chip .ui-radio input+label .label--center{margin:0 auto}.ui-chip .ui-checkbox input:checked+label.primary,.ui-chip .ui-radio input:checked+label.primary{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected)!important}.oasys-focus-style,.ui-combobox div[name=combobox]:focus,.ui-combobox div[name=combobox]:focus-visible,.ui-combobox div[name=combobox]:focus-within,[tabindex]:focus-visible,[tabindex]:focus,select:focus-visible,select:focus,textarea:focus-visible,textarea:focus,input:focus-visible,input:focus,button:focus-visible,button:focus,a:focus-visible,a:focus{outline:var(--oasys-border-width-focus) solid var(--oasys-color-interaction-border-focus);outline-offset:var(--oasys-border-width-focus-offset)}a:focus:not(:focus-visible){outline:none}button:focus:not(:focus-visible){outline:none}input:focus:not(:focus-visible){outline:none}textarea:focus:not(:focus-visible){outline:none}select:focus:not(:focus-visible){outline:none}[tabindex]:focus:not(:focus-visible){outline:none}:host{display:block;width:100%}:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .ui-text-input,:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-system-foreground-negative)}:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .input-errors .input-errors-content{visibility:visible!important}:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .hint-container{display:none!important}.foreground-secondary-text{color:var(--oasys-color-brand-foreground-secondary)}.ui-combobox{background-color:var(--oasys-color-white);--_label-height: var(--oasys-typography-body-supporting-line-height);--_label-input-gap: var(--oasys-spacing-tiny);--_label-top-inset: var(--oasys-spacing-near);--_input-inset-top: calc(var(--_label-height) + var(--_label-input-gap) + var(--_label-top-inset));--_preface-width: var(--oasys-component-text-input-preface-width);position:relative;transition:border calc(var(--oasys-animation-duration-long) * 1ms);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-footer,.ui-combobox-header{padding:var(--oasys-spacing-tight) var(--oasys-spacing-near);text-align:center}.ui-combobox-footer{cursor:pointer;border-top:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-header{color:var(--oasys-color-brand-foreground-secondary);border-bottom:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-options{background-color:var(--oasys-color-white);box-shadow:0 24px 36px #2626261a;border-radius:var(--oasys-radius-soften);box-sizing:border-box;width:100%;height:auto;margin-top:var(--oasys-spacing-near);position:absolute;pointer-events:auto;outline:0;overflow:auto;transform-origin:top center;z-index:1000}.ui-combobox-option{cursor:pointer;border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) transparent;padding:var(--oasys-spacing-near);outline:none;outline-offset:none}.ui-combobox-option:hover,.ui-combobox-option.selected{background-color:var(--oasys-color-interaction-background-selected);border-radius:var(--oasys-radius-soften)}.ui-combobox-option.focus{border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) var(--oasys-color-interaction-border-focus)}.ui-combobox-option:focus-visible{border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) var(--oasys-color-interaction-border-focus)}.ui-combobox-container .input-errors{--_ad: calc(var(--oasys-animation-duration-long) * 1ms);display:grid;grid-template-rows:0fr;overflow:hidden;opacity:0;transform:translateY(-33%);transition:grid-template-rows var(--_ad),opacity var(--_ad),transform var(--_ad);transition-timing-function:cubic-bezier(var(--oasys-animation-timing-function-soft));will-change:grid-template-rows,transform,opacity}.ui-combobox-container .input-errors .input-errors-content{min-height:0;visibility:hidden;transition:visibility var(--_ad)}.ui-combobox-container .input-errors .hint-container{display:block!important}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .ui-combobox,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .ui-combobox,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-system-foreground-negative)}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .input-errors,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .input-errors,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .input-errors .input-errors-content,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .input-errors .input-errors-content,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .input-errors .input-errors-content{visibility:visible!important}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .hint-container,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .hint-container,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .hint-container{display:none!important}.ui-combobox-container:has(input:disabled) input,.ui-combobox-container:has(input:disabled) .select{background-color:none;color:var(--oasys-component-text-input-color-disabled-foreground)}.ui-combobox-container:has(input:disabled) .ui-combobox-input{background-color:var(--oasys-component-text-input-color-disabled-background)}.ui-combobox{border-radius:var(--oasys-radius-soften);width:100%}.ui-combobox input{border:none;width:100%;cursor:pointer}.ui-combobox input:focus{outline:none}.ui-combobox input,.ui-combobox .select{padding:var(--oasys-spacing-near);padding-top:var(--oasys-spacing-tiny)}.ui-combobox .label-container{padding-top:var(--oasys-spacing-near);padding-left:var(--oasys-spacing-near);width:calc(100% - var(--oasys-spacing-near) - var(--oasys-spacing-near))}.ui-combobox .label-container,.ui-combobox .label-container label{pointer-events:none;-webkit-user-select:none;user-select:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ui-combobox .icon-container{padding-right:var(--oasys-spacing-near)}.ui-combobox:has(.input-preface:not(:empty)){--_left-inset: calc(var(--oasys-spacing-near) + var(--_preface-width))}.ui-combobox:has(.input-preface:not(:empty)) .label-container{left:var(--_left-inset);width:calc(100% - var(--_left-inset) - var(--oasys-spacing-near))}.ui-combobox:has(.input-preface:not(:empty)) input,.ui-combobox:has(.input-preface:not(:empty)) .select{padding-left:var(--_left-inset)}.ui-combobox .input-preface{width:var(--_preface-width);height:100%;position:absolute;display:flex;justify-content:center;align-items:center;pointer-events:none;flex-direction:column;text-align:center;border-right:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox .input-preface:empty{visibility:hidden}.ui-combobox div[name=combobox]{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width", "box_border_color", "box_border_width", "box_border_style", "box_border_radius"] }, { kind: "component", type: i3.LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap", "stack_collapse_below"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.IconComponent, selector: "ui-icon", inputs: ["icon_size", "icon_size_override", "icon_name", "icon_context", "icon_class"] }, { kind: "directive", type: i6.OasysAutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }] }); }
|
|
359
|
+
}
|
|
360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ComboboxComponent, decorators: [{
|
|
361
|
+
type: Component,
|
|
362
|
+
args: [{ selector: 'ui-combobox', providers: [
|
|
363
|
+
{
|
|
364
|
+
provide: NG_VALUE_ACCESSOR,
|
|
365
|
+
useExisting: forwardRef(() => ComboboxComponent),
|
|
366
|
+
multi: true,
|
|
367
|
+
},
|
|
368
|
+
], template: "<ui-stack class=\"ui-combobox-container\" stack_gap=\"tight\">\n <div class=\"ui-combobox text-body--default text-body--regular\"> \n <!-- Compbobox Options Input -->\n <div \n *ngIf=\"type==='options'\"\n #combobox\n name=\"combobox\" \n tabindex=\"0\" \n (keydown)=\"onKeyDown($event)\"\n (mousedown)=\"togglePanel($event)\"\n (focus)=\"openPanel($event)\"\n [attr.aria-activedescendant]=\"'activedescendent-opt ' + focusedId\"\n aria-readonly=\"true\" aria-owns=\"activedescendent-list\" aria-autocomplete=\"list\" role=\"combobox\" id=\"activedescendent-edit\"\n >\n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_align=\"center\" stack_gap=\"tight\">\n <ui-box box_space=\"none\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" role=\"combobox-label\" [for]=\"id\">{{label}}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"onModelChange(textValue)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'on'\" \n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"selectedOption\"\n [placeholder]=\"placeholder || ''\"\n readonly=\"readonly\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n <!-- Select Icon Chevron Area -->\n <div class=\"icon-container\">\n <ui-icon *ngIf=\"!panelOpen\" icon_name=\"chevron-down\"></ui-icon>\n <ui-icon *ngIf=\"panelOpen\" icon_name=\"chevron-up\"></ui-icon>\n </div>\n </ui-stack>\n </div>\n \n <!-- Combobox Autocomplete Input -->\n <div \n *ngIf=\"type==='autocomplete'\"\n #combobox\n name=\"combobox\" \n tabindex=\"0\" \n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocusInput($event)\"\n [attr.aria-activedescendant]=\"'activedescendent-opt ' + focusedId\"\n aria-readonly=\"true\" aria-owns=\"activedescendent-list\" aria-autocomplete=\"list\" role=\"combobox\" id=\"activedescendent-edit\"\n >\n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_align=\"center\" stack_gap=\"tight\">\n <ui-box box_space=\"none\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" role=\"combobox-label\" [for]=\"id\">{{label}}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChangeAutocomplete($event)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'list'\" \n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"textValue\"\n [placeholder]=\"placeholder||''\"\n role=\"combobox\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n\n <!-- Combobox Icon Clear Area -->\n <div class=\"icon-container\" (click)=\"cleanInput()\">\n <ui-icon *ngIf=\"textValue\" icon_name=\"close\" ></ui-icon>\n </div>\n </ui-stack>\n </div>\n \n <!-- Combobox Options Panel -->\n <div *ngIf=\"panelOpen\" \n class=\"ui-combobox-options\" \n [attr.aria-expanded]=\"panelOpen\" \n role=\"listbox\" \n id=\"activedescendent-list\">\n \n <!-- Autocomplete Options Panel Header -->\n <div *ngIf=\"header && type==='autocomplete'\" \n class=\"ui-combobox-header text-body--supporting\"> \n <span>{{header}}</span>\n </div>\n \n <!-- Options list -->\n <div\n #option \n *ngFor=\"let option of displayOptions; index as i\"\n [id]=\"'activedescendent-opt'+i\"\n [attr.aria-label]=\"displayKey ? option[displayKey] : option.label\"\n class=\"ui-combobox-option\" \n [ngClass]=\"{'selected': selectedOption === option, 'focus': focusedOption === option }\"\n (click)=\"selectOption(option, i)\"\n (keydown)=\"onKeyDown($event)\"\n >\n \n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_align=\"center\" stack_gap=\"tight\">\n <!-- Option display -->\n <div [value]=\"valueKey ? option[valueKey]: option.value\" [ngValue]=\"displayKey ? option[displayKey] : option.label\">\n <ui-stack stack_direction=\"x\" stack_align=\"center\" stack_gap=\"tight\">\n <ui-icon *ngIf=\"option.icon_name || (iconNameKey && option[iconNameKey]) \" [icon_name]=\"iconNameKey ? option[iconNameKey] : option.icon_name\"></ui-icon>\n <ui-stack stack_gap=\"tiny\">\n <span>{{displayKey ? option[displayKey] : option.label}}</span>\n <p class=\"foreground-secondary-text\" *ngIf=\"type==='autocomplete'\"> {{subtextKey ? option[subtextKey] : option.subtext}} </p>\n </ui-stack>\n </ui-stack>\n </div>\n \n <!-- Selected icon -->\n <ui-icon *ngIf=\"selectedOption === option\" icon_name=\"tick\" aria-label=\"Selected\"></ui-icon>\n </ui-stack>\n </div>\n\n <!-- Autocomplete Options Panel Footer -->\n <div *ngIf=\"footer && type==='autocomplete'\"\n class=\"ui-combobox-footer\">\n <ui-button button_type=\"tertiary\" (clicked)=\"onFooterAction()\"> {{footer}} </ui-button>\n </div>\n </div>\n </div> \n <ui-stack stack_gap=\"none\">\n <!-- ERROR Messages -->\n <div class=\"input-errors\">\n <div class=\"input-errors-content\">\n <ng-content select=\"ui-form-errors\"></ng-content>\n </div>\n </div>\n\n <!-- HINT Message -->\n <ui-box *ngIf=\"hint\" box_background=\"none\" box_space=\"none\" box_space_left=\"near\" box_space_right=\"near\"\n box_space_bottom=\"near\">\n <div \n class=\"input-hint text-body--supporting text-color--supporting\"\n [aria-label]=\"hint\">{{hint}}</div>\n </ui-box>\n </ui-stack>\n</ui-stack>", styles: ["html{font-size:62.5%}html,html body{font-family:var(--oasys-typography-body-body-font-family);font-weight:var(--oasys-typography-body-body-font-weight);font-size:var(--oasys-typography-body-body-font-size);line-height:var(--oasys-typography-body-body-font-line-height);color:var(--oasys-color-brand-foreground-primary)}html b,html bold,html strong,html body b,html body bold,html body strong{font-weight:var(--oasys-typography-body-emphasis-hero-font-weight)}html i,html body i{font-style:normal}h1,h2,h3,.text-heading,.text-body--expressive,.ui-rce blockquote,.ui-prose blockquote,article blockquote{font-family:var(--oasys-typography-heading-hero-desktop-font-family)}h4,h5,h6,.text-heading--functional,.ui-rce h3,.ui-prose h3,article h3,.ui-rce h2,.ui-prose h2,article h2{font-family:var(--oasys-typography-heading-func-primary-desktop-font-family)}ui-container h1,ui-container h2,ui-container h3,ui-container h4,ui-container h5,ui-container h6,ui-container p,ui-box h1,ui-box h2,ui-box h3,ui-box h4,ui-box h5,ui-box h6,ui-box p,ui-stack h1,ui-stack h2,ui-stack h3,ui-stack h4,ui-stack h5,ui-stack h6,ui-stack p,ui-grid h1,ui-grid h2,ui-grid h3,ui-grid h4,ui-grid h5,ui-grid h6,ui-grid p{margin:0}h1:not(.seo-h1),.text-heading--hero{font-size:var(--oasys-typography-heading-hero-desktop-font-size);line-height:var(--oasys-typography-heading-hero-desktop-line-height);font-weight:var(--oasys-typography-heading-hero-desktop-font-weight)}@media only screen and (max-width: 767px){h1:not(.seo-h1),.text-heading--hero{font-size:var(--oasys-typography-heading-hero-mobile-font-size);line-height:var(--oasys-typography-heading-hero-mobile-line-height);font-weight:var(--oasys-typography-heading-hero-mobile-font-weight)}}h2,.text-heading--primary{font-size:var(--oasys-typography-heading-primary-desktop-font-size);line-height:var(--oasys-typography-heading-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-primary-desktop-font-weight)}@media only screen and (max-width: 767px){h2,.text-heading--primary{font-size:var(--oasys-typography-heading-primary-mobile-font-size);line-height:var(--oasys-typography-heading-primary-mobile-line-height);font-weight:var(--oasys-typography-heading-primary-mobile-font-weight)}}h3,.text-heading--secondary{font-size:var(--oasys-typography-heading-secondary-font-size);line-height:var(--oasys-typography-heading-secondary-line-height);font-weight:var(--oasys-typography-heading-secondary-font-weight)}h4,.text-heading--functional--primary,.ui-rce h2,.ui-prose h2,article h2{font-size:var(--oasys-typography-heading-func-primary-desktop-font-size);line-height:var(--oasys-typography-heading-func-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-primary-desktop-font-weight)}@media only screen and (max-width: 767px){h4,.text-heading--functional--primary,.ui-rce h2,.ui-prose h2,article h2{font-size:var(--oasys-typography-heading-func-primary-mobile-font-size);line-height:var(--oasys-typography-heading-func-primary-mobile-line-height)}}h5,.text-heading--functional--secondary,.ui-rce h3,.ui-prose h3,article h3{font-size:var(--oasys-typography-heading-func-secondary-desktop-font-size);line-height:var(--oasys-typography-heading-func-secondary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-secondary-desktop-font-weight)}@media only screen and (max-width: 767px){h5,.text-heading--functional--secondary,.ui-rce h3,.ui-prose h3,article h3{font-size:var(--oasys-typography-heading-func-secondary-mobile-font-size);line-height:var(--oasys-typography-heading-func-secondary-mobile-line-height);font-weight:var(--oasys-typography-heading-func-secondary-mobile-font-weight)}}label{-webkit-user-select:none;user-select:none;cursor:pointer}label,.text-label--primary{font-size:var(--oasys-typography-heading-label-primary-font-size);line-height:var(--oasys-typography-heading-label-primary-line-height);font-weight:var(--oasys-typography-heading-label-primary-font-weight)}.text-label--secondary{font-size:var(--oasys-typography-heading-label-secondary-font-size);line-height:var(--oasys-typography-heading-label-secondary-line-height);font-weight:var(--oasys-typography-heading-label-secondary-font-weight)}.text-body--expressive,.ui-rce blockquote,.ui-prose blockquote,article blockquote{font-size:var(--oasys-typography-body-expressive-font-size);line-height:var(--oasys-typography-body-expressive-line-height);font-weight:var(--oasys-typography-body-expressive-font-weight)}.text-body--hero,.ui-combobox input:-webkit-autofill:first-line,.ui-combobox .select:-webkit-autofill:first-line,.ui-rce h6,.ui-prose h6,article h6{font-size:var(--oasys-typography-body-hero-font-size);line-height:var(--oasys-typography-body-hero-line-height);font-weight:var(--oasys-typography-body-hero-font-weight)}.text-body--default,.ui-rce p{font-size:var(--oasys-typography-body-body-font-size);line-height:var(--oasys-typography-body-body-line-height);font-weight:var(--oasys-typography-body-body-font-weight)}.text-body--supporting{font-size:var(--oasys-typography-body-supporting-font-size);line-height:var(--oasys-typography-body-supporting-line-height);font-weight:var(--oasys-typography-body-supporting-body-weight)}.text-body--regular,.ui-rce h6,.ui-prose h6,article h6{font-weight:var(--oasys-typography-body-body-font-weight)}.text-body--line-through{-webkit-text-decoration:var(--oasys-typography-body-line-through-body-text-decoration);text-decoration:var(--oasys-typography-body-line-through-body-text-decoration)}.text-body--emphasis,.ui-combobox input,.ui-combobox .select,.ui-rce h3,.ui-prose h3,article h3,.ui-rce h2,.ui-prose h2,article h2,a--standalone,.text-link--standalone,.ui-rce .ui-rce-embed a,.ui-rce .ui-rce-embed a:hover,.ui-prose .ui-rce-embed a,.ui-prose .ui-rce-embed a:hover,article .ui-rce-embed a,article .ui-rce-embed a:hover{font-weight:var(--oasys-typography-body-emphasis-hero-font-weight)}.text-color--on-light{color:var(--oasys-color-brand-foreground-primary)}.text-color--on-light.text-color--supporting,.text-color--on-light .text-color--supporting{color:var(--oasys-color-brand-foreground-secondary)}.text-color--on-dark{color:var(--oasys-color-brand-foreground-primary-on-dark)}.text-color--on-dark.text-color--supporting,.text-color--on-dark .text-color--supporting{color:var(--oasys-color-brand-foreground-secondary-on-dark)}.text-color--supporting{color:var(--oasys-color-brand-foreground-secondary)}.text-color--error{color:var(--oasys-color-system-foreground-negative)}.text-color--highlight{color:var(--oasys-color-brand-foreground-highlight)}a{color:inherit;text-decoration:none}.text--readable-width,.ui-rce blockquote,.ui-prose blockquote,article blockquote{max-width:70ch}a,.text-link,.ui-rce a,.ui-rce a:hover,.ui-prose a,.ui-prose a:hover,article a,article a:hover{text-decoration:none;cursor:pointer}a--standalone,.text-link--standalone,.ui-rce .ui-rce-embed a,.ui-rce .ui-rce-embed a:hover,.ui-prose .ui-rce-embed a,.ui-prose .ui-rce-embed a:hover,article .ui-rce-embed a,article .ui-rce-embed a:hover{text-decoration:underline}a--paragraph,.text-link--paragraph,.ui-rce a,.ui-rce a:hover,.ui-prose a,.ui-prose a:hover,article a,article a:hover{text-decoration:underline;font-weight:inherit}.ui-rce h2,.ui-prose h2,article h2{padding-top:var(--oasys-prose-vertical-adjustment-heading-primary-large-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-primary-large-bottom)}@media only screen and (max-width: 767px){.ui-rce h2,.ui-prose h2,article h2{padding-top:var(--oasys-prose-vertical-adjustment-heading-primary-small-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-primary-small-bottom)}}.ui-rce h3,.ui-prose h3,article h3{padding-top:var(--oasys-prose-vertical-adjustment-heading-secondary-large-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-secondary-large-bottom)}@media only screen and (max-width: 767px){.ui-rce h3,.ui-prose h3,article h3{padding-top:var(--oasys-prose-vertical-adjustment-heading-secondary-small-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-secondary-small-bottom)}}.ui-rce p,.ui-rce ul,.ui-rce ol,.ui-prose p,.ui-prose ul,.ui-prose ol,article p,article ul,article ol{margin-bottom:var(--oasys-prose-vertical-adjustment-paragraph-bottom)}.ui-rce p:empty,.ui-rce ul:empty,.ui-rce ol:empty,.ui-prose p:empty,.ui-prose ul:empty,.ui-prose ol:empty,article p:empty,article ul:empty,article ol:empty{display:none}.ui-rce blockquote,.ui-prose blockquote,article blockquote{padding-top:var(--oasys-prose-vertical-adjustment-blockquote-top);margin-bottom:var(--oasys-prose-vertical-adjustment-blockquote-bottom);text-align:center;margin:0 auto}.ui-rce hr,.ui-prose hr,article hr{display:block;width:100%;border:0;padding:0;margin:0;height:var(--oasys-size-unit-8);background:var(--oasys-color-brand-background-secondary);margin-top:var(--oasys-spacing-expanded);margin-bottom:var(--oasys-spacing-expanded)}.ui-rce ol,.ui-prose ol,article ol{list-style-type:decimal;list-style-position:inside}.ui-rce ul,.ui-prose ul,article ul{list-style:initial;list-style-position:inside}.ui-rce .ui-rce-embed,.ui-prose .ui-rce-embed,article .ui-rce-embed{padding-top:var(--oasys-prose-vertical-adjustment-component-top-bottom);margin-bottom:var(--oasys-prose-vertical-adjustment-component-top-bottom)}.ui-rce .ui-rce-embed ui-button a,.ui-rce .ui-rce-embed ui-button a:hover,.ui-prose .ui-rce-embed ui-button a,.ui-prose .ui-rce-embed ui-button a:hover,article .ui-rce-embed ui-button a,article .ui-rce-embed ui-button a:hover{text-decoration:none}.ui-rce>ui-box .ui-box-content>*:first-child{padding-top:0}.ui-rce>ui-box .ui-box-content>*:last-child{margin-bottom:0}.ui-rce .ui-rce-instance:last-of-type{padding-bottom:var(--oasys-spacing-expanded)}.ui-rce ui-button,.ui-rce img{display:inline-block;margin:0;margin-top:var(--oasys-spacing-near);margin-right:var(--oasys-spacing-near);vertical-align:top}.ui-rce ui-button:last-child,.ui-rce img:last-child{margin-right:0}.ui-rce img{width:100%}.ui-rce ol p,.ui-rce ul p{display:inline;margin:0}form fieldset legend{margin-bottom:var(--oasys-spacing-near)}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .ui-text-input,form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .ui-combobox,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .ui-text-input,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-system-foreground-negative)}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .input-errors,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .input-errors .input-errors-content,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .input-errors .input-errors-content{visibility:visible!important}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .hint-container,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus)) .hint-container{display:none!important}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .ui-text-input,form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .ui-combobox,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .ui-text-input,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-system-foreground-negative)}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .input-errors,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .input-errors .input-errors-content,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .input-errors .input-errors-content{visibility:visible!important}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .hint-container,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .hint-container{display:none!important}.ui-checkbox input,.ui-radio input,.ui-text-input input,.ui-combobox input{appearance:none;margin:0;border:none}.ui-checkbox input,.ui-radio input{cursor:pointer}.ui-checkbox,.ui-radio{--_inset: var(--oasys-spacing-near);--_radius: var(--oasys-radius-soften);--_transition_duration: calc(var(--oasys-animation-duration) * 1ms)}.ui-checkbox input,.ui-radio input{position:absolute;inset:0;border-radius:var(--oasys-radius-soften)}.ui-checkbox input.secondary,.ui-radio input.secondary{inset:unset;top:var(--_inset);--_focusSize: var(--oasys-typography-heading-label-secondary-line-height);width:var(--_focusSize);height:var(--_focusSize)}.ui-checkbox input+label,.ui-radio input+label{width:inherit;display:flex;align-items:center;gap:var(--oasys-spacing-tight)}.ui-checkbox input+label .icon-container,.ui-radio input+label .icon-container{align-self:flex-start;padding:var(--oasys-component-checkbox-icon-inset);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected);border-radius:var(--_radius)}.ui-checkbox input+label .input-hint:empty,.ui-radio input+label .input-hint:empty{display:none}.ui-checkbox input+label.primary,.ui-radio input+label.primary{padding:var(--_inset);border-radius:var(--_radius);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-checkbox input+label.secondary,.ui-radio input+label.secondary{padding:var(--_inset) 0}.ui-checkbox input+label.secondary .icon-container,.ui-radio input+label.secondary .icon-container{background:transparent;border-radius:var(--_radius);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected)}.ui-checkbox input+label,.ui-checkbox input+label .icon-container,.ui-radio input+label,.ui-radio input+label .icon-container{transition:background-color calc(var(--_transition_duration) * 1ms),border-color calc(var(--_transition_duration) * 1ms)}.ui-checkbox input:hover+label.primary,.ui-checkbox input:checked+label.primary,.ui-radio input:hover+label.primary,.ui-radio input:checked+label.primary{background:var(--oasys-color-interaction-background-selected)}.ui-checkbox input:hover+label.secondary .icon-container,.ui-checkbox input:checked+label.secondary .icon-container,.ui-radio input:hover+label.secondary .icon-container,.ui-radio input:checked+label.secondary .icon-container{background:var(--oasys-color-interaction-background-selected)}.ui-checkbox input:checked+label.primary .icon-container,.ui-checkbox input:checked+label.secondary .icon-container,.ui-radio input:checked+label.primary .icon-container,.ui-radio input:checked+label.secondary .icon-container{background:var(--oasys-color-interaction-border-selected);border-color:var(--oasys-color-interaction-border-selected);color:var(--oasys-color-brand-foreground-primary-on-dark)}.ui-checkbox input:checked+label.primary,.ui-radio input:checked+label.primary{border-color:var(--oasys-color-interaction-border-selected)!important}.ui-checkbox input.ng-touched.ng-invalid+label,.ui-radio input.ng-touched.ng-invalid+label{color:var(--oasys-color-system-foreground-negative)}.ui-checkbox input.ng-touched.ng-invalid+label .icon-container,.ui-radio input.ng-touched.ng-invalid+label .icon-container{border-color:var(--oasys-color-system-foreground-negative)}.ui-chip .ui-checkbox input+label .icon-container.icon--hidden,.ui-chip .ui-radio input+label .icon-container.icon--hidden{display:none}.ui-chip .ui-checkbox input+label .label--center,.ui-chip .ui-radio input+label .label--center{margin:0 auto}.ui-chip .ui-checkbox input:checked+label.primary,.ui-chip .ui-radio input:checked+label.primary{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected)!important}.oasys-focus-style,.ui-combobox div[name=combobox]:focus,.ui-combobox div[name=combobox]:focus-visible,.ui-combobox div[name=combobox]:focus-within,[tabindex]:focus-visible,[tabindex]:focus,select:focus-visible,select:focus,textarea:focus-visible,textarea:focus,input:focus-visible,input:focus,button:focus-visible,button:focus,a:focus-visible,a:focus{outline:var(--oasys-border-width-focus) solid var(--oasys-color-interaction-border-focus);outline-offset:var(--oasys-border-width-focus-offset)}a:focus:not(:focus-visible){outline:none}button:focus:not(:focus-visible){outline:none}input:focus:not(:focus-visible){outline:none}textarea:focus:not(:focus-visible){outline:none}select:focus:not(:focus-visible){outline:none}[tabindex]:focus:not(:focus-visible){outline:none}:host{display:block;width:100%}:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .ui-text-input,:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-system-foreground-negative)}:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .input-errors .input-errors-content{visibility:visible!important}:host.ng-touched.ng-dirty.ng-invalid:not(:focus) .ui-combobox-container .hint-container{display:none!important}.foreground-secondary-text{color:var(--oasys-color-brand-foreground-secondary)}.ui-combobox{background-color:var(--oasys-color-white);--_label-height: var(--oasys-typography-body-supporting-line-height);--_label-input-gap: var(--oasys-spacing-tiny);--_label-top-inset: var(--oasys-spacing-near);--_input-inset-top: calc(var(--_label-height) + var(--_label-input-gap) + var(--_label-top-inset));--_preface-width: var(--oasys-component-text-input-preface-width);position:relative;transition:border calc(var(--oasys-animation-duration-long) * 1ms);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-footer,.ui-combobox-header{padding:var(--oasys-spacing-tight) var(--oasys-spacing-near);text-align:center}.ui-combobox-footer{cursor:pointer;border-top:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-header{color:var(--oasys-color-brand-foreground-secondary);border-bottom:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-options{background-color:var(--oasys-color-white);box-shadow:0 24px 36px #2626261a;border-radius:var(--oasys-radius-soften);box-sizing:border-box;width:100%;height:auto;margin-top:var(--oasys-spacing-near);position:absolute;pointer-events:auto;outline:0;overflow:auto;transform-origin:top center;z-index:1000}.ui-combobox-option{cursor:pointer;border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) transparent;padding:var(--oasys-spacing-near);outline:none;outline-offset:none}.ui-combobox-option:hover,.ui-combobox-option.selected{background-color:var(--oasys-color-interaction-background-selected);border-radius:var(--oasys-radius-soften)}.ui-combobox-option.focus{border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) var(--oasys-color-interaction-border-focus)}.ui-combobox-option:focus-visible{border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) var(--oasys-color-interaction-border-focus)}.ui-combobox-container .input-errors{--_ad: calc(var(--oasys-animation-duration-long) * 1ms);display:grid;grid-template-rows:0fr;overflow:hidden;opacity:0;transform:translateY(-33%);transition:grid-template-rows var(--_ad),opacity var(--_ad),transform var(--_ad);transition-timing-function:cubic-bezier(var(--oasys-animation-timing-function-soft));will-change:grid-template-rows,transform,opacity}.ui-combobox-container .input-errors .input-errors-content{min-height:0;visibility:hidden;transition:visibility var(--_ad)}.ui-combobox-container .input-errors .hint-container{display:block!important}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .ui-combobox,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .ui-combobox,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-system-foreground-negative)}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .input-errors,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .input-errors,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .input-errors .input-errors-content,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .input-errors .input-errors-content,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .input-errors .input-errors-content{visibility:visible!important}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus)) .hint-container,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .hint-container,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus)) .hint-container{display:none!important}.ui-combobox-container:has(input:disabled) input,.ui-combobox-container:has(input:disabled) .select{background-color:none;color:var(--oasys-component-text-input-color-disabled-foreground)}.ui-combobox-container:has(input:disabled) .ui-combobox-input{background-color:var(--oasys-component-text-input-color-disabled-background)}.ui-combobox{border-radius:var(--oasys-radius-soften);width:100%}.ui-combobox input{border:none;width:100%;cursor:pointer}.ui-combobox input:focus{outline:none}.ui-combobox input,.ui-combobox .select{padding:var(--oasys-spacing-near);padding-top:var(--oasys-spacing-tiny)}.ui-combobox .label-container{padding-top:var(--oasys-spacing-near);padding-left:var(--oasys-spacing-near);width:calc(100% - var(--oasys-spacing-near) - var(--oasys-spacing-near))}.ui-combobox .label-container,.ui-combobox .label-container label{pointer-events:none;-webkit-user-select:none;user-select:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ui-combobox .icon-container{padding-right:var(--oasys-spacing-near)}.ui-combobox:has(.input-preface:not(:empty)){--_left-inset: calc(var(--oasys-spacing-near) + var(--_preface-width))}.ui-combobox:has(.input-preface:not(:empty)) .label-container{left:var(--_left-inset);width:calc(100% - var(--_left-inset) - var(--oasys-spacing-near))}.ui-combobox:has(.input-preface:not(:empty)) input,.ui-combobox:has(.input-preface:not(:empty)) .select{padding-left:var(--_left-inset)}.ui-combobox .input-preface{width:var(--_preface-width);height:100%;position:absolute;display:flex;justify-content:center;align-items:center;pointer-events:none;flex-direction:column;text-align:center;border-right:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox .input-preface:empty{visibility:hidden}.ui-combobox div[name=combobox]{cursor:pointer}\n"] }]
|
|
369
|
+
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
370
|
+
type: Inject,
|
|
371
|
+
args: [DOCUMENT]
|
|
372
|
+
}] }]; }, propDecorators: { label: [{
|
|
373
|
+
type: Input
|
|
374
|
+
}], type: [{
|
|
375
|
+
type: Input
|
|
376
|
+
}], options: [{
|
|
377
|
+
type: Input
|
|
378
|
+
}], optional: [{
|
|
379
|
+
type: Input
|
|
380
|
+
}], hint: [{
|
|
381
|
+
type: Input,
|
|
382
|
+
args: [{ required: false }]
|
|
383
|
+
}], header: [{
|
|
384
|
+
type: Input,
|
|
385
|
+
args: [{ required: false }]
|
|
386
|
+
}], footer: [{
|
|
387
|
+
type: Input,
|
|
388
|
+
args: [{ required: false }]
|
|
389
|
+
}], autofocus: [{
|
|
390
|
+
type: Input,
|
|
391
|
+
args: [{ required: false }]
|
|
392
|
+
}], disabled: [{
|
|
393
|
+
type: Input,
|
|
394
|
+
args: [{ required: false }]
|
|
395
|
+
}], selected: [{
|
|
396
|
+
type: Input,
|
|
397
|
+
args: [{ required: false }]
|
|
398
|
+
}], displayKey: [{
|
|
399
|
+
type: Input,
|
|
400
|
+
args: [{ required: false }]
|
|
401
|
+
}], iconNameKey: [{
|
|
402
|
+
type: Input,
|
|
403
|
+
args: [{ required: false }]
|
|
404
|
+
}], valueKey: [{
|
|
405
|
+
type: Input,
|
|
406
|
+
args: [{ required: false }]
|
|
407
|
+
}], subtextKey: [{
|
|
408
|
+
type: Input,
|
|
409
|
+
args: [{ required: false }]
|
|
410
|
+
}], placeholder: [{
|
|
411
|
+
type: Input,
|
|
412
|
+
args: [{ required: false }]
|
|
413
|
+
}], showOptions: [{
|
|
414
|
+
type: Input,
|
|
415
|
+
args: [{ required: false }]
|
|
416
|
+
}], didChange: [{
|
|
417
|
+
type: Output
|
|
418
|
+
}], didSearch: [{
|
|
419
|
+
type: Output
|
|
420
|
+
}], didEdit: [{
|
|
421
|
+
type: Output
|
|
422
|
+
}], textInput: [{
|
|
423
|
+
type: ViewChild,
|
|
424
|
+
args: ['textinput', { read: ElementRef }]
|
|
425
|
+
}], combobox: [{
|
|
426
|
+
type: ViewChild,
|
|
427
|
+
args: ['combobox', { read: ElementRef }]
|
|
428
|
+
}], optionsList: [{
|
|
429
|
+
type: ViewChildren,
|
|
430
|
+
args: ['option']
|
|
431
|
+
}], onClick: [{
|
|
432
|
+
type: HostListener,
|
|
433
|
+
args: ['document:click', ['$event.target']]
|
|
434
|
+
}] } });
|
|
435
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2FzeXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29hc3lzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFFTixTQUFTLEVBRVQsWUFBWSxFQUdaLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEdBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBbUJ4QixNQUFNLE9BQU8saUJBQWlCO0lBd0M1QixnREFBZ0Q7SUFDaEQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFHRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBLENBQUMsQ0FB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QkFFRSxVQUFVO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQztnQkFFRSxXQUFXO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQztnQkFFRSxRQUFRO3NCQUFqQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQztnQkFFRSxVQUFVO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQztnQkFDRSxXQUFXO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQztnQkFFRSxXQUFXO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQztnQkFFZCxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFvRFAsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSTVDLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUduQixXQUFXO3NCQUFsQyxZQUFZO3VCQUFDLFFBQVE7Z0JBY2YsT0FBTztzQkFMYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgZm9yd2FyZFJlZixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBBZnRlclZpZXdJbml0LFxuICBWaWV3Q2hpbGQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbWJvYm94T3B0aW9uLCBDb21ib2JveFR5cGUgfSBmcm9tICcuL2NvbWJvYm94JztcblxuXG5pbXBvcnQgeyBJY29uTmFtZXMgfSBmcm9tICcuLi8uLi9pY29uL2ljb24nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWNvbWJvYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tYm9ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb21ib2JveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveENvbXBvbmVudFxuICBpbXBsZW1lbnRzICBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGU6IENvbWJvYm94VHlwZSA9ICdvcHRpb25zJztcbiAgQElucHV0KCkgb3B0aW9uczogQ29tYm9ib3hPcHRpb25bXSB8IHVua25vd25bXSA9IFtdXG4gIEBJbnB1dCgpIG9wdGlvbmFsOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoe3JlcXVpcmVkOiBmYWxzZX0pIGhpbnQ/OiBzdHJpbmc7XG4gIEBJbnB1dCh7cmVxdWlyZWQ6IGZhbHNlfSkgaGVhZGVyPzogc3RyaW5nO1xuICBASW5wdXQoe3JlcXVpcmVkOiBmYWxzZX0pIGZvb3Rlcj86IHN0cmluZztcbiAgQElucHV0KHtyZXF1aXJlZDogZmFsc2V9KSBhdXRvZm9jdXM/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCh7cmVxdWlyZWQ6IGZhbHNlfSkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCh7cmVxdWlyZWQ6IGZhbHNlfSkgc2VsZWN0ZWQ/OiBDb21ib2JveE9wdGlvbiB8IHVua25vd247XG4gIC8vIEtleSB2YWx1ZSBmcm9tIG9wdGlvbnMgdG8gYmUgZGlzcGxheWVkIGFzIG9wdGlvbiBsYWJlbFxuICBASW5wdXQoe3JlcXVpcmVkOiBmYWxzZX0pIGRpc3BsYXlLZXk/OiBzdHJpbmc7XG4gIC8vIEtleSB2YWx1ZSBmcm9tIG9wdGlvbnMgdG8gYmUgdXNlZCBhcyBpY29uIGluIG9wdGlvbiBsYWJlbFxuICBASW5wdXQoe3JlcXVpcmVkOiBmYWxzZX0pIGljb25OYW1lS2V5Pzogc3RyaW5nO1xuICAvLyBLZXkgdmFsdWUgZnJvbSBvcHRpb25zIGJlIGJlIHZhbHVlXG4gIEBJbnB1dCh7cmVxdWlyZWQ6IGZhbHNlfSkgdmFsdWVLZXk/OiBzdHJpbmc7XG4gIC8vIEF2YWlsYWJsZSBmb3IgQXV0b2NvbXBsZXRlXG4gIEBJbnB1dCh7cmVxdWlyZWQ6IGZhbHNlfSkgc3VidGV4dEtleT86IHN0cmluZztcbiAgQElucHV0KHtyZXF1aXJlZDogZmFsc2V9KSBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgLy8gV2lsbCBvcGVuIHRoZSBsaXN0IG9mIG9wdGlvbnMgb24gaW5pdCBcbiAgQElucHV0KHtyZXF1aXJlZDogZmFsc2V9KSBzaG93T3B0aW9ucyA9IGZhbHNlO1xuICBcbiAgQE91dHB1dCgpIGRpZENoYW5nZTogRXZlbnRFbWl0dGVyPHVua25vd24+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGlkU2VhcmNoOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaWRFZGl0OiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdGV4dFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgaW5wdXREaWRDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTsgLy8gb25seSBzaG93IHZhbGRpYXRpb24gYWZ0ZXIgYSBjaGFuZ2UgZXZlbnQgKGllLiBibHVyKVxuICBkaXNwbGF5T3B0aW9uczogQ29tYm9ib3hPcHRpb25bXSB8IHVua25vd25bXSA9IFtdXG4gIHByaXZhdGUgX3BhbmVsT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9zZWxlY3RlZE9wdGlvbjogQ29tYm9ib3hPcHRpb24gfCB1bmtub3duO1xuICBwcml2YXRlIF9mb2N1c2VkT3B0aW9uOiBDb21ib2JveE9wdGlvbiB8IHVua25vd247XG4gIHByaXZhdGUgX2ZvY3VzZWRPcHRpb25JZDogbnVtYmVyO1xuXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBvdmVybGF5IHBhbmVsIGlzIG9wZW4uICovXG4gIGdldCBwYW5lbE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RlZCBvcHRpb25cbiAgICovXG4gIGdldCBzZWxlY3RlZE9wdGlvbigpOiBDb21ib2JveE9wdGlvbiB8IHVua25vd24ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE9wdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZWQgT3B0aW9uXG4gICAqL1xuICBnZXQgZm9jdXNlZE9wdGlvbigpOiBDb21ib2JveE9wdGlvbiB8IHVua25vd24ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkT3B0aW9uIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpZCBvZiB0aGUgZm9jdXNlZCBvcHRpb25cbiAgICovXG4gIGdldCBmb2N1c2VkSWQoKTogbnVtYmVye1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkT3B0aW9uSWQgfHwgbnVsbDtcbiAgfVxuXG5cbiAgZ2V0IHZhbHVlT3B0aW9uS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVLZXk/IHRoaXMudmFsdWVLZXkgOiAndmFsdWUnO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlPcHRpb25LZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5S2V5PyB0aGlzLmRpc3BsYXlLZXkgOiAnbGFiZWwnO1xuICB9XG5cbiAgZ2V0IHN1YnRleHRPcHRpb25LZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0ZXh0S2V5PyB0aGlzLnN1YnRleHRLZXkgOiAnc3VidGV4dCc7XG4gIH1cblxuICBAVmlld0NoaWxkKCd0ZXh0aW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgdGV4dElucHV0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjsgIFxuICBcbiAgQFZpZXdDaGlsZCgnY29tYm9ib3gnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgY29tYm9ib3g6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ29wdGlvbicpIG9wdGlvbnNMaXN0OlF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnRcbiAgKSB7IH1cblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG4gIFxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuXG4gIC8qKlxuICAgKiBDbGljayBvdXRzaWRlIGNvbWJvYm94IGNsb3NlIHRoZSBwYW5lbCBcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrKHRhcmdldEVsZW1lbnQ6IE5vZGUpOiB2b2lkIHtcbiAgICBpZih0aGlzLnBhbmVsT3Blbil7XG4gICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5jb21ib2JveC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpO1xuICAgICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XG4gICAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBDaGFuZ2UgXG4gICAqIEBwYXJhbSBjaGFuZ2VzIFxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIERldGVjdHMgaWYgdGhlIGF1dG9jb21wbGV0ZSBvcHRpb25zIGxpc3QgaXMgY2huYWdlZCBhZnRlciBhIHNlbGVjdGlvbiBvZiBhbiBvcHRpb24uIFxuICAgIC8vIEV4YW1wbGU6IEFkZHJlc3Mgc2VhcmNoIGNhbiBoYXZlIG9wdGlvbnMgYXNzaWduZWQgdG8gYSBncm91cCBvZiBvcHRpb25zLiBPbmUgcG9zdGNvZGUgdG8gaGF2ZSB4IG51bWJlciBvZiBhZGRyZXNlc1xuICAgIC8vIElmIE9wdGlvbnMgbGlzdCBpcyBDaGFuZ2VkIGFzIHBhcnQgb2YgZ3JvdXAgb3B0aW9uIHdlIGxldCB0aGUgb3B0aW9ucyBwYW5lbCBvcGVuIHRvIGxldCB1c2VyIHNlbGVjdCBhIHNpbmdsZSBvcHRpb24uIFRoaXMgaXMgY29uc2lkZXJlZCBhcyBjaGFuZ2UgaW5wdXQgdmFsdWUoc2ltaWxhciB3aXRoIHR5cGUgdmFsdWUpXG4gICAgaWYodGhpcy50eXBlPT09J2F1dG9jb21wbGV0ZScmJiBjaGFuZ2VzWydvcHRpb25zJ10pe1xuICAgICAgY29uc3Qgb3B0aW9uY2hhbmdlcyA9IGNoYW5nZXNbJ29wdGlvbnMnXSA7XG4gICAgICBpZighdGhpcy5vcHRpb25zKXtcbiAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICB9XG4gICAgICBpZihvcHRpb25jaGFuZ2VzWydjdXJyZW50VmFsdWUnXSE9PSBvcHRpb25jaGFuZ2VzWydwcmV2aW91c1ZhbHVlJ10gJiYgdGhpcy5vcHRpb25zPy5sZW5ndGghPT0wICYmICFvcHRpb25jaGFuZ2VzWydmaXJzdENoYW5nZSddKXtcbiAgICAgICAgdGhpcy5yZXNldE9wdGlvbnNMaXN0KCk7XG4gICAgICAgIHRoaXMub3BlblBhbmVsKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICogT24gSW5pdCBcbiAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pZCA9IHRoaXMubGFiZWwgKyBNYXRoLnJhbmRvbSgpO1xuICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICB0aGlzLnJlc2V0T3B0aW9uc0xpc3QoKTtcbiAgICBcbiAgICBpZih0aGlzLnNlbGVjdGVkKXtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXg9IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoIChvcHRpb246IENvbWJvYm94T3B0aW9uIHwgdW5rbm93bik9PiBvcHRpb25bdGhpcy52YWx1ZU9wdGlvbktleV0gPT09IHRoaXMuc2VsZWN0ZWRbdGhpcy52YWx1ZU9wdGlvbktleV0pO1xuICAgICAgdGhpcy5zZWxlY3RPcHRpb24odGhpcy5vcHRpb25zW3NlbGVjdGVkSW5kZXhdLCBzZWxlY3RlZEluZGV4KTtcbiAgICB9ICAgIFxuICAgIGlmKHRoaXMuc2hvd09wdGlvbnMpe1xuICAgICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgVmlldyBJbml0IFxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0dXBWYWxpZGF0aW9uTGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgT3B0aW9uIFxuICAgKiBAcGFyYW0gb3B0aW9uIFxuICAgKi9cbiAgcHVibGljIHNlbGVjdE9wdGlvbihvcHRpb246IENvbWJvYm94T3B0aW9uIHwgdW5rbm93biwgaW5kZXg/OiBudW1iZXIpe1xuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xuICAgIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCA9IGluZGV4O1xuICAgIHRoaXMuX2ZvY3VzZWRPcHRpb24gPSBvcHRpb247XG4gICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLl9zZWxlY3RlZE9wdGlvblt0aGlzLmRpc3BsYXlPcHRpb25LZXldO1xuXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnRleHRWYWx1ZSk7XG4gICAgdGhpcy5kaWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkT3B0aW9uKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgXG4gIC8qKlxuICAgKiBPbiBLZXkgTmF2aWdhdGlvblxuICAgKiBAcGFyYW0gZXZlbnQgXG4gICAqL1xuICBwdWJsaWMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgXCJFbnRlclwiOiBcbiAgICAgICAgdGhpcy5wcmVzc0VudGVyKCk7IFxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJUYWJcIjogXG4gICAgICAgIGlmICh0aGlzLnBhbmVsT3Blbikge1xuICAgICAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkVzY2FwZVwiOiBcbiAgICAgICAgaWYgKHRoaXMucGFuZWxPcGVuKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gTG9naWMgZm9yIG9wZW4gcGFuZWxcbiAgICBpZih0aGlzLnBhbmVsT3Blbil7XG4gICAgICB0aGlzLnByZXNzQXJyb3dzKGV2ZW50KTtcbiAgICAgIHRoaXMuX2ZvY3VzZWRPcHRpb24gPSB0aGlzLmRpc3BsYXlPcHRpb25zW3RoaXMuX2ZvY3VzZWRPcHRpb25JZF07XG4gICAgICB0aGlzLm9wdGlvbnNMaXN0LmdldCh0aGlzLl9mb2N1c2VkT3B0aW9uSWQpPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBPcHRpb25zIFBhbmVsXG4gICAqL1xuICB0b2dnbGVQYW5lbCgpOiB2b2lke1xuICAgIHRoaXMuX3BhbmVsT3BlbiA9IHRoaXMucGFuZWxPcGVuID8gZmFsc2UgOiB0cnVlO1xuICAgIHRoaXMuaW5pdFNlbGVjdGVkRm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFzZSBPcHRpb25zIFBhbmVsIFxuICAgKi9cbiAgb3BlblBhbmVsKGV2ZW50PzogRXZlbnQpOiB2b2lke1xuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmKCF0aGlzLl9wYW5lbE9wZW4pe1xuICAgICAgdGhpcy5fcGFuZWxPcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW5pdFNlbGVjdGVkRm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgT3B0aW9ucyBQYW5lbCBcbiAgICovXG4gIGNsb3NlUGFuZWwoKTogdm9pZHtcbiAgICBpZih0aGlzLl9wYW5lbE9wZW4pe1xuICAgICAgdGhpcy5fcGFuZWxPcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBJbnB1dCBkaXNwbGF5IHZhbHVlXG4gICAqIEBwYXJhbSB0ZXh0VmFsdWUgXG4gICAqL1xuICB3cml0ZVZhbHVlKHRleHRWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYoKHRoaXMuc2VsZWN0ZWQgJiYgKHR5cGVvZiB0ZXh0VmFsdWUpICE9PSAnc3RyaW5nJyApIHx8IHRleHRWYWx1ZT09PScnKXtcbiAgICAgIHRoaXMudGV4dFZhbHVlID0gdGhpcy5fc2VsZWN0ZWRPcHRpb25bdGhpcy5kaXNwbGF5T3B0aW9uS2V5XTtcbiAgICB9IGVsc2V7XG4gICAgICB0aGlzLnRleHRWYWx1ZSA9IHRleHRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgRm9ybSBpbnB1dCBjaG5hZ2UgXG4gICAqIEBwYXJhbSBmbiBcbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBmb3JtIGlucHV0IHRvdWNoIFxuICAgKiBAcGFyYW0gZm4gXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBNb2RlbCBDaGFuZ2VcbiAgICogQHBhcmFtIHRleHRWYWx1ZSBcbiAgICovXG4gIG9uTW9kZWxDaGFuZ2UodGV4dFZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHRWYWx1ZSA9IHRleHRWYWx1ZTtcbiAgICB0aGlzLmlucHV0RGlkQ2hhbmdlID0gdHJ1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRleHRWYWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmRpZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb24pO1xuICAgICAgfVxuXG4gIC8qKlxuICAgKiBPbiBNb2RlbCBDaGFuZ2VcbiAgICogQHBhcmFtIHRleHRWYWx1ZSBcbiAgICovXG4gIG9uTW9kZWxDaGFuZ2VBdXRvY29tcGxldGUodGV4dFZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHRWYWx1ZSA9IHRleHRWYWx1ZTtcbiAgICB0aGlzLmlucHV0RGlkQ2hhbmdlID0gdHJ1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRleHRWYWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmRpZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb24pO1xuICAgIFxuICAgIHRoaXMub25BdXRvY29tcGxldGVMaXN0U2VhcmNoKHRleHRWYWx1ZSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGluZyBmb3IgSW5wdXQgdmFsdWVcbiAgICovXG4gIGhhbmRsZUV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXREaWRDaGFuZ2UgPSB0cnVlO1xuXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkLnRvU3RyaW5nKCkpO1xuICAgIGlucHV0RWxlbWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcyk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiBJbnB1dFxuICAgKi9cbiAgY2xlYW5JbnB1dCgpOiB2b2lke1xuICAgIHRoaXMudGV4dFZhbHVlID0gJyc7XG4gICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgIHRoaXMucmVzZXRPcHRpb25zTGlzdCgpO1xuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgIHRoaXMuZGlkU2VhcmNoLmVtaXQodGhpcy50ZXh0VmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIGZvb3RlciBhY3Rpb25cbiAgICovXG4gIG9uRm9vdGVyQWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuZGlkRWRpdC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogT24gRm9jdXMgSW5wdXRcbiAgICovXG4gIG9uRm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGluIEF1dG9jb21wbGV0ZVxuICAgKiBAcGFyYW0gdGV4dFZhbHVlIFxuICAgKi9cbiAgcHJpdmF0ZSBvbkF1dG9jb21wbGV0ZUxpc3RTZWFyY2godGV4dFZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRleHRWYWx1ZSkge1xuICAgICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMub3BlblBhbmVsKCk7XG4gICAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0aW9uOiBDb21ib2JveE9wdGlvbjx1bmtub3duPikgPT4ge1xuICAgICAgICAgIHJldHVybiAgdGhpcy5jaGVja0luY2x1ZGVzU3Vic3RyaW5nKG9wdGlvbiwgdGhpcy5kaXNwbGF5T3B0aW9uS2V5KSBcbiAgICAgICAgICB8fCB0aGlzLmNoZWNrSW5jbHVkZXNTdWJzdHJpbmcob3B0aW9uLCB0aGlzLnN1YnRleHRPcHRpb25LZXkpO1xuICAgICAgICB9KTtcbiAgICAgIGlmICh0aGlzLmRpc3BsYXlPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50ZXh0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuZGlkU2VhcmNoLmVtaXQodGhpcy50ZXh0VmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGEgc3VzYmNyaW5nIGlzIGluY2x1ZGVkIGluIG9wdGlvbiB2YWx1ZVxuICAgKiBAcGFyYW0gb3B0aW9uIFxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIHByaXZhdGUgY2hlY2tJbmNsdWRlc1N1YnN0cmluZyhvcHRpb246IENvbWJvYm94T3B0aW9uPHVua25vd24+LCBrZXk6IHN0cmluZyk6IHVua25vd24ge1xuICAgIHJldHVybiBvcHRpb25ba2V5XT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBJbnB1dCBWYWxpZGF0b3JzXG4gICAqL1xuICBwcml2YXRlIHNldHVwVmFsaWRhdGlvbkxpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZC50b1N0cmluZygpKTtcbiAgICBpbnB1dEVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgZm9jdXMgbW9kZSBvciBzZXQgdGhlIHNlbGVjdGVkIG9wdGlvbiBhcyBmb2N1c2VkXG4gICAqL1xuICBwcml2YXRlIGluaXRTZWxlY3RlZEZvY3VzKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuX3BhbmVsT3Blbil7XG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgdGhpcy5fZm9jdXNlZE9wdGlvbiA9IHRoaXMuX3NlbGVjdGVkT3B0aW9uO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCA9IDA7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRPcHRpb24gPSB0aGlzLm9wdGlvbnNbdGhpcy5fZm9jdXNlZE9wdGlvbklkXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXJyb3dzIFVwL0Rvd24gbmF2aWdhdGlvbiBpbnNpZGUgT3B0aW9ucyBQYW5lbFxuICAgKi9cbiAgcHJpdmF0ZSBwcmVzc0Fycm93cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlIFwiQXJyb3dEb3duXCI6IFxuICAgICAgICB0aGlzLl9mb2N1c2VkT3B0aW9uSWQgPSBNYXRoLm1pbih0aGlzLl9mb2N1c2VkT3B0aW9uSWQgKyAxLCB0aGlzLmRpc3BsYXlPcHRpb25zLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvblRleHRQcmV2aWV3KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkFycm93VXBcIjogXG4gICAgICAgIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCA9IE1hdGgubWF4KHRoaXMuX2ZvY3VzZWRPcHRpb25JZCAtIDEsIDApOyBcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25UZXh0UHJldmlldygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRleHRWYWx1ZSB0byBwcmV2aWV3IHRoZSBvcHRpb24gaW4gYXV0b2NvbXBsZXRlXG4gICAqL1xuICBwcml2YXRlIGF1dG9jb21wbGV0ZU9wdGlvblRleHRQcmV2aWV3KCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICB0aGlzLnRleHRWYWx1ZSA9IHRoaXMuX2ZvY3VzZWRPcHRpb25bdGhpcy5kaXNwbGF5T3B0aW9uS2V5XTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJlc3MgRW50ZXIgaW5zaWRlIE9wdGlvbnMgUGFuZWxcbiAgICovXG4gIHByaXZhdGUgcHJlc3NFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYW5lbE9wZW4gJiYgdGhpcy5fZm9jdXNlZE9wdGlvbklkIDwgdGhpcy5vcHRpb25zLmxlbmd0aCAmJiB0aGlzLl9mb2N1c2VkT3B0aW9uSWQgPj0gMCkge1xuICAgICAgdGhpcy5zZWxlY3RPcHRpb24odGhpcy5fZm9jdXNlZE9wdGlvbiwgdGhpcy5fZm9jdXNlZE9wdGlvbklkKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXNldCBzZWxlY3RlZCBvcHRpb25cbiAgICovXG4gIHByaXZhdGUgcmVzZXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb24gPSBudWxsO1xuICAgIHRoaXMuX2ZvY3VzZWRPcHRpb24gPSBudWxsO1xuICAgIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdG8gb3JpZ2luYWwgb3IgdW5maWx0ZXJlZCBvcHRpb24gbGlzdCBcbiAgICovXG4gIHByaXZhdGUgcmVzZXRPcHRpb25zTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICB9XG59XG4iLCI8dWktc3RhY2sgY2xhc3M9XCJ1aS1jb21ib2JveC1jb250YWluZXJcIiBzdGFja19nYXA9XCJ0aWdodFwiPlxuICA8ZGl2IGNsYXNzPVwidWktY29tYm9ib3ggdGV4dC1ib2R5LS1kZWZhdWx0IHRleHQtYm9keS0tcmVndWxhclwiPiBcbiAgICA8IS0tIENvbXBib2JveCBPcHRpb25zIElucHV0IC0tPlxuICAgIDxkaXYgXG4gICAgICAqbmdJZj1cInR5cGU9PT0nb3B0aW9ucydcIlxuICAgICAgI2NvbWJvYm94XG4gICAgICBuYW1lPVwiY29tYm9ib3hcIiBcbiAgICAgIHRhYmluZGV4PVwiMFwiIFxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKG1vdXNlZG93bik9XCJ0b2dnbGVQYW5lbCgkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJvcGVuUGFuZWwoJGV2ZW50KVwiXG4gICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiJ2FjdGl2ZWRlc2NlbmRlbnQtb3B0ICcgKyBmb2N1c2VkSWRcIlxuICAgICAgYXJpYS1yZWFkb25seT1cInRydWVcIiBhcmlhLW93bnM9XCJhY3RpdmVkZXNjZW5kZW50LWxpc3RcIiBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiByb2xlPVwiY29tYm9ib3hcIiBpZD1cImFjdGl2ZWRlc2NlbmRlbnQtZWRpdFwiXG4gICAgICA+XG4gICAgICA8dWktc3RhY2sgc3RhY2tfZGlyZWN0aW9uPVwieFwiIHN0YWNrX2Rpc3RyaWJ1dGU9XCJzcGFjZS1iZXR3ZWVuXCIgc3RhY2tfYWxpZ249XCJjZW50ZXJcIiBzdGFja19nYXA9XCJ0aWdodFwiPlxuICAgICAgICA8dWktYm94IGJveF9zcGFjZT1cIm5vbmVcIj5cbiAgICAgICAgICA8IS0tIFNlbGVjdCBMYWJlbCBBcmVhIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1jb250YWluZXJcIiBzdGFja19kaXJlY3Rpb249XCJ4XCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJvZHktLXN1cHBvcnRpbmcgdGV4dC1ib2R5LS1yZWd1bGFyXCIgcm9sZT1cImNvbWJvYm94LWxhYmVsXCIgW2Zvcl09XCJpZFwiPnt7bGFiZWx9fTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICN0ZXh0aW5wdXRcbiAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgW25hbWVdPVwiaWRcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ0ZXh0VmFsdWVcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbk1vZGVsQ2hhbmdlKHRleHRWYWx1ZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJpbnB1dERpZENoYW5nZSA/ICduZy1pbnB1dC1kaWQtY2hhbmdlJyA6ICduZy1pbnB1dC1kaWQtbm90LWNoYW5nZSdcIlxuICAgICAgICAgICAgICBbYXR0ci5hdXRvY29ycmVjdF09XCInb24nXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiXG4gICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInb24nXCIgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhb3B0aW9uYWxcIlxuICAgICAgICAgICAgICBbc3BlbGxjaGVja109XCInb24nXCJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkT3B0aW9uXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgICAgcmVhZG9ubHk9XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LS1kZWZhdWx0IHRleHQtYm9keS0tcmVndWxhclwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdWktYm94PlxuICAgICAgICA8IS0tIFNlbGVjdCBJY29uIENoZXZyb24gQXJlYSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgPHVpLWljb24gKm5nSWY9XCIhcGFuZWxPcGVuXCIgaWNvbl9uYW1lPVwiY2hldnJvbi1kb3duXCI+PC91aS1pY29uPlxuICAgICAgICAgIDx1aS1pY29uICpuZ0lmPVwicGFuZWxPcGVuXCIgaWNvbl9uYW1lPVwiY2hldnJvbi11cFwiPjwvdWktaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3VpLXN0YWNrPlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDwhLS0gQ29tYm9ib3ggQXV0b2NvbXBsZXRlIElucHV0IC0tPlxuICAgIDxkaXYgXG4gICAgICAqbmdJZj1cInR5cGU9PT0nYXV0b2NvbXBsZXRlJ1wiXG4gICAgICAjY29tYm9ib3hcbiAgICAgIG5hbWU9XCJjb21ib2JveFwiIFxuICAgICAgdGFiaW5kZXg9XCIwXCIgXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwib25Gb2N1c0lucHV0KCRldmVudClcIlxuICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIidhY3RpdmVkZXNjZW5kZW50LW9wdCAnICsgZm9jdXNlZElkXCJcbiAgICAgIGFyaWEtcmVhZG9ubHk9XCJ0cnVlXCIgYXJpYS1vd25zPVwiYWN0aXZlZGVzY2VuZGVudC1saXN0XCIgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgcm9sZT1cImNvbWJvYm94XCIgaWQ9XCJhY3RpdmVkZXNjZW5kZW50LWVkaXRcIlxuICAgICAgPlxuICAgICAgPHVpLXN0YWNrIHN0YWNrX2RpcmVjdGlvbj1cInhcIiBzdGFja19kaXN0cmlidXRlPVwic3BhY2UtYmV0d2VlblwiIHN0YWNrX2FsaWduPVwiY2VudGVyXCIgc3RhY2tfZ2FwPVwidGlnaHRcIj5cbiAgICAgICAgPHVpLWJveCBib3hfc3BhY2U9XCJub25lXCI+XG4gICAgICAgICAgPCEtLSBTZWxlY3QgTGFiZWwgQXJlYSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGFpbmVyXCIgc3RhY2tfZGlyZWN0aW9uPVwieFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1ib2R5LS1zdXBwb3J0aW5nIHRleHQtYm9keS0tcmVndWxhclwiIHJvbGU9XCJjb21ib2JveC1sYWJlbFwiIFtmb3JdPVwiaWRcIj57e2xhYmVsfX08L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAjdGV4dGlucHV0XG4gICAgICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cImlkXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwidGV4dFZhbHVlXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZUF1dG9jb21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaW5wdXREaWRDaGFuZ2UgPyAnbmctaW5wdXQtZGlkLWNoYW5nZScgOiAnbmctaW5wdXQtZGlkLW5vdC1jaGFuZ2UnXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXV0b2NvcnJlY3RdPVwiJ29uJ1wiXG4gICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIlxuICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ2xpc3QnXCIgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhb3B0aW9uYWxcIlxuICAgICAgICAgICAgICBbc3BlbGxjaGVja109XCInb24nXCJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInRleHRWYWx1ZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcnx8JydcIlxuICAgICAgICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtYm9keS0tZGVmYXVsdCB0ZXh0LWJvZHktLXJlZ3VsYXJcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICA8L3VpLWJveD5cblxuICAgICAgICA8IS0tIENvbWJvYm94IEljb24gQ2xlYXIgQXJlYSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCIgKGNsaWNrKT1cImNsZWFuSW5wdXQoKVwiPlxuICAgICAgICAgIDx1aS1pY29uICpuZ0lmPVwidGV4dFZhbHVlXCIgaWNvbl9uYW1lPVwiY2xvc2VcIiA+PC91aS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdWktc3RhY2s+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPCEtLSBDb21ib2JveCBPcHRpb25zIFBhbmVsIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJwYW5lbE9wZW5cIiBcbiAgICAgICAgICBjbGFzcz1cInVpLWNvbWJvYm94LW9wdGlvbnNcIiBcbiAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInBhbmVsT3BlblwiIFxuICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCIgXG4gICAgICAgICAgaWQ9XCJhY3RpdmVkZXNjZW5kZW50LWxpc3RcIj5cbiAgICAgIFxuICAgICAgPCEtLSBBdXRvY29tcGxldGUgT3B0aW9ucyBQYW5lbCBIZWFkZXIgIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImhlYWRlciAmJiB0eXBlPT09J2F1dG9jb21wbGV0ZSdcIiBcbiAgICAgICAgY2xhc3M9XCJ1aS1jb21ib2JveC1oZWFkZXIgdGV4dC1ib2R5LS1zdXBwb3J0aW5nXCI+IFxuICAgICAgICA8c3Bhbj57e2hlYWRlcn19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gT3B0aW9ucyBsaXN0IC0tPlxuICAgICAgPGRpdlxuICAgICAgICAjb3B0aW9uIFxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGRpc3BsYXlPcHRpb25zOyBpbmRleCBhcyBpXCJcbiAgICAgICAgW2lkXT1cIidhY3RpdmVkZXNjZW5kZW50LW9wdCcraVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGlzcGxheUtleSA/IG9wdGlvbltkaXNwbGF5S2V5XSA6IG9wdGlvbi5sYWJlbFwiXG4gICAgICAgIGNsYXNzPVwidWktY29tYm9ib3gtb3B0aW9uXCIgXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBzZWxlY3RlZE9wdGlvbiA9PT0gb3B0aW9uLCAnZm9jdXMnOiBmb2N1c2VkT3B0aW9uID09PSBvcHRpb24gfVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RPcHRpb24ob3B0aW9uLCBpKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIFxuICAgICAgICA8dWktc3RhY2sgc3RhY2tfZGlyZWN0aW9uPVwieFwiIHN0YWNrX2Rpc3RyaWJ1dGU9XCJzcGFjZS1iZXR3ZWVuXCIgc3RhY2tfYWxpZ249XCJjZW50ZXJcIiBzdGFja19nYXA9XCJ0aWdodFwiPlxuICAgICAgICAgIDwhLS0gT3B0aW9uIGRpc3BsYXkgLS0+XG4gICAgICAgICAgPGRpdiBbdmFsdWVdPVwidmFsdWVLZXkgPyBvcHRpb25bdmFsdWVLZXldOiBvcHRpb24udmFsdWVcIiBbbmdWYWx1ZV09XCJkaXNwbGF5S2V5ID8gb3B0aW9uW2Rpc3BsYXlLZXldIDogb3B0aW9uLmxhYmVsXCI+XG4gICAgICAgICAgICA8dWktc3RhY2sgc3RhY2tfZGlyZWN0aW9uPVwieFwiIHN0YWNrX2FsaWduPVwiY2VudGVyXCIgc3RhY2tfZ2FwPVwidGlnaHRcIj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiAqbmdJZj1cIm9wdGlvbi5pY29uX25hbWUgfHwgKGljb25OYW1lS2V5ICYmIG9wdGlvbltpY29uTmFtZUtleV0pIFwiIFtpY29uX25hbWVdPVwiaWNvbk5hbWVLZXkgPyBvcHRpb25baWNvbk5hbWVLZXldIDogb3B0aW9uLmljb25fbmFtZVwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgICA8dWktc3RhY2sgc3RhY2tfZ2FwPVwidGlueVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkaXNwbGF5S2V5ID8gb3B0aW9uW2Rpc3BsYXlLZXldIDogb3B0aW9uLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvcmVncm91bmQtc2Vjb25kYXJ5LXRleHRcIiAqbmdJZj1cInR5cGU9PT0nYXV0b2NvbXBsZXRlJ1wiPiB7e3N1YnRleHRLZXkgPyBvcHRpb25bc3VidGV4dEtleV0gOiBvcHRpb24uc3VidGV4dH19IDwvcD5cbiAgICAgICAgICAgICAgICA8L3VpLXN0YWNrPlxuICAgICAgICAgICAgPC91aS1zdGFjaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBcbiAgICAgICAgICA8IS0tIFNlbGVjdGVkIGljb24gLS0+XG4gICAgICAgICAgPHVpLWljb24gKm5nSWY9XCJzZWxlY3RlZE9wdGlvbiA9PT0gb3B0aW9uXCIgaWNvbl9uYW1lPVwidGlja1wiIGFyaWEtbGFiZWw9XCJTZWxlY3RlZFwiPjwvdWktaWNvbj5cbiAgICAgICAgPC91aS1zdGFjaz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEF1dG9jb21wbGV0ZSBPcHRpb25zIFBhbmVsIEZvb3RlciAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb290ZXIgJiYgdHlwZT09PSdhdXRvY29tcGxldGUnXCJcbiAgICAgICAgY2xhc3M9XCJ1aS1jb21ib2JveC1mb290ZXJcIj5cbiAgICAgICAgPHVpLWJ1dHRvbiBidXR0b25fdHlwZT1cInRlcnRpYXJ5XCIgKGNsaWNrZWQpPVwib25Gb290ZXJBY3Rpb24oKVwiPiB7e2Zvb3Rlcn19IDwvdWktYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiBcbiAgPHVpLXN0YWNrIHN0YWNrX2dhcD1cIm5vbmVcIj5cbiAgICA8IS0tIEVSUk9SIE1lc3NhZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1lcnJvcnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1lcnJvcnMtY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ1aS1mb3JtLWVycm9yc1wiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBISU5UIE1lc3NhZ2UgLS0+XG4gICAgPHVpLWJveCAqbmdJZj1cImhpbnRcIiBib3hfYmFja2dyb3VuZD1cIm5vbmVcIiBib3hfc3BhY2U9XCJub25lXCIgYm94X3NwYWNlX2xlZnQ9XCJuZWFyXCIgYm94X3NwYWNlX3JpZ2h0PVwibmVhclwiXG4gICAgICBib3hfc3BhY2VfYm90dG9tPVwibmVhclwiPlxuICAgICAgPGRpdiBcbiAgICAgICAgY2xhc3M9XCJpbnB1dC1oaW50IHRleHQtYm9keS0tc3VwcG9ydGluZyB0ZXh0LWNvbG9yLS1zdXBwb3J0aW5nXCJcbiAgICAgICAgW2FyaWEtbGFiZWxdPVwiaGludFwiPnt7aGludH19PC9kaXY+XG4gICAgPC91aS1ib3g+XG4gIDwvdWktc3RhY2s+XG48L3VpLXN0YWNrPiJdfQ==
|