@acpaas-ui/ngx-forms 6.1.8 → 6.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/auto-complete/auto-complete.module.mjs +13 -14
- package/esm2020/lib/auto-complete/components/auto-complete/auto-complete.component.mjs +64 -146
- package/esm2020/lib/datepicker/components/datepicker/datepicker.component.mjs +67 -146
- package/esm2020/lib/datepicker/datepicker.module.mjs +23 -24
- package/esm2020/lib/range-slider/components/range-slider/range-slider.component.mjs +64 -116
- package/esm2020/lib/range-slider/range-slider.module.mjs +12 -13
- package/esm2020/lib/search-filter/components/search-filter/search-filter.component.mjs +51 -168
- package/esm2020/lib/search-filter/search-filter.module.mjs +12 -13
- package/esm2020/lib/shared/services/search.service.mjs +6 -6
- package/esm2020/lib/timepicker/components/timepicker/timepicker.component.mjs +37 -150
- package/esm2020/lib/timepicker/timepicker.module.mjs +13 -14
- package/esm2020/lib/upload/components/upload/upload.component.mjs +27 -55
- package/esm2020/lib/upload/components/upload-input/upload-input.component.mjs +19 -36
- package/esm2020/lib/upload/components/upload-queue/upload-queue.component.mjs +15 -51
- package/esm2020/lib/upload/components/upload-zone/upload-zone.component.mjs +43 -152
- package/esm2020/lib/upload/components/validation-list/validation-list.component.mjs +11 -42
- package/esm2020/lib/upload/services/validation-messages.service.mjs +9 -9
- package/esm2020/lib/upload/upload.module.mjs +20 -21
- package/fesm2015/acpaas-ui-ngx-forms.mjs +134 -990
- package/fesm2015/acpaas-ui-ngx-forms.mjs.map +1 -1
- package/fesm2020/acpaas-ui-ngx-forms.mjs +489 -1159
- package/fesm2020/acpaas-ui-ngx-forms.mjs.map +1 -1
- package/package.json +3 -6
|
@@ -8,17 +8,16 @@ import { AutoCompleteComponent } from './components/auto-complete/auto-complete.
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class AutoCompleteModule {
|
|
10
10
|
}
|
|
11
|
-
/** @nocollapse */ AutoCompleteModule.ɵfac =
|
|
12
|
-
/** @nocollapse */ AutoCompleteModule.ɵmod =
|
|
13
|
-
/** @nocollapse */ AutoCompleteModule.ɵinj =
|
|
14
|
-
(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBUTNGLE1BQU0sT0FBTyxrQkFBa0I7O3VHQUFsQixrQkFBa0I7bUdBQWxCLGtCQUFrQjt3R0FGbEIsQ0FBQyxhQUFhLENBQUMsWUFIaEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsb0JBQW9CO3VGQUs1RCxrQkFBa0I7Y0FOOUIsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixDQUFDO2dCQUN4RSxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ2hDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQzthQUMzQjs7d0ZBQ1ksa0JBQWtCLG1CQUpkLHFCQUFxQixhQUQxQixZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsYUFFN0QscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZseW91dE1vZHVsZSB9IGZyb20gJ0BhY3BhYXMtdWkvbmd4LWZseW91dCc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlTGlzdE1vZHVsZSB9IGZyb20gJ0BhY3BhYXMtdWkvbmd4LXNlbGVjdGFibGUtbGlzdCc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEZseW91dE1vZHVsZSwgU2VsZWN0YWJsZUxpc3RNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtBdXRvQ29tcGxldGVDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQXV0b0NvbXBsZXRlQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbU2VhcmNoU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZU1vZHVsZSB7fVxuIl19
|
|
11
|
+
/** @nocollapse */ AutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
/** @nocollapse */ AutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: AutoCompleteModule, declarations: [AutoCompleteComponent], imports: [CommonModule, FormsModule, FlyoutModule, SelectableListModule], exports: [AutoCompleteComponent] });
|
|
13
|
+
/** @nocollapse */ AutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AutoCompleteModule, providers: [SearchService], imports: [CommonModule, FormsModule, FlyoutModule, SelectableListModule] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AutoCompleteModule, decorators: [{
|
|
15
|
+
type: NgModule,
|
|
16
|
+
args: [{
|
|
17
|
+
imports: [CommonModule, FormsModule, FlyoutModule, SelectableListModule],
|
|
18
|
+
declarations: [AutoCompleteComponent],
|
|
19
|
+
exports: [AutoCompleteComponent],
|
|
20
|
+
providers: [SearchService],
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBUTNGLE1BQU0sT0FBTyxrQkFBa0I7O2tJQUFsQixrQkFBa0I7bUlBQWxCLGtCQUFrQixpQkFKZCxxQkFBcUIsYUFEMUIsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLGFBRTdELHFCQUFxQjttSUFHcEIsa0JBQWtCLGFBRmxCLENBQUMsYUFBYSxDQUFDLFlBSGhCLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG9CQUFvQjsyRkFLNUQsa0JBQWtCO2tCQU45QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixDQUFDO29CQUN4RSxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmx5b3V0TW9kdWxlIH0gZnJvbSAnQGFjcGFhcy11aS9uZ3gtZmx5b3V0JztcbmltcG9ydCB7IFNlbGVjdGFibGVMaXN0TW9kdWxlIH0gZnJvbSAnQGFjcGFhcy11aS9uZ3gtc2VsZWN0YWJsZS1saXN0JztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgRmx5b3V0TW9kdWxlLCBTZWxlY3RhYmxlTGlzdE1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0F1dG9Db21wbGV0ZUNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtBdXRvQ29tcGxldGVDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtTZWFyY2hTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlTW9kdWxlIHt9XG4iXX0=
|
|
@@ -8,62 +8,6 @@ import * as i2 from "@angular/common";
|
|
|
8
8
|
import * as i3 from "@angular/forms";
|
|
9
9
|
import * as i4 from "@acpaas-ui/ngx-flyout";
|
|
10
10
|
import * as i5 from "@acpaas-ui/ngx-selectable-list";
|
|
11
|
-
function AutoCompleteComponent_div_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
-
i0.ɵɵelementStart(0, "span", 7);
|
|
13
|
-
i0.ɵɵelement(1, "span", 8);
|
|
14
|
-
i0.ɵɵelementStart(2, "span", 9);
|
|
15
|
-
i0.ɵɵtext(3);
|
|
16
|
-
i0.ɵɵelementEnd()();
|
|
17
|
-
} if (rf & 2) {
|
|
18
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
19
|
-
i0.ɵɵadvance(3);
|
|
20
|
-
i0.ɵɵtextInterpolate(ctx_r1.loadingText);
|
|
21
|
-
} }
|
|
22
|
-
function AutoCompleteComponent_div_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
-
i0.ɵɵelementStart(0, "span", 10);
|
|
24
|
-
i0.ɵɵtext(1);
|
|
25
|
-
i0.ɵɵelementEnd();
|
|
26
|
-
} if (rf & 2) {
|
|
27
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
28
|
-
i0.ɵɵadvance(1);
|
|
29
|
-
i0.ɵɵtextInterpolate(ctx_r2.searchIncentiveText);
|
|
30
|
-
} }
|
|
31
|
-
function AutoCompleteComponent_div_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
-
i0.ɵɵelementStart(0, "span", 10);
|
|
33
|
-
i0.ɵɵtext(1);
|
|
34
|
-
i0.ɵɵelementEnd();
|
|
35
|
-
} if (rf & 2) {
|
|
36
|
-
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
37
|
-
i0.ɵɵadvance(1);
|
|
38
|
-
i0.ɵɵtextInterpolate(ctx_r3.noResultsText);
|
|
39
|
-
} }
|
|
40
|
-
function AutoCompleteComponent_div_2_aui_selectable_list_4_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
-
const _r6 = i0.ɵɵgetCurrentView();
|
|
42
|
-
i0.ɵɵelementStart(0, "aui-selectable-list", 11);
|
|
43
|
-
i0.ɵɵlistener("selected", function AutoCompleteComponent_div_2_aui_selectable_list_4_Template_aui_selectable_list_selected_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r5.onSelect($event)); });
|
|
44
|
-
i0.ɵɵelementEnd();
|
|
45
|
-
} if (rf & 2) {
|
|
46
|
-
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
47
|
-
i0.ɵɵproperty("index", ctx_r4.index)("itemTemplate", ctx_r4.template)("items", ctx_r4.results)("label", ctx_r4.label)("search", ctx_r4.query);
|
|
48
|
-
} }
|
|
49
|
-
function AutoCompleteComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
-
i0.ɵɵelementStart(0, "div", 3);
|
|
51
|
-
i0.ɵɵtemplate(1, AutoCompleteComponent_div_2_span_1_Template, 4, 1, "span", 4);
|
|
52
|
-
i0.ɵɵtemplate(2, AutoCompleteComponent_div_2_span_2_Template, 2, 1, "span", 5);
|
|
53
|
-
i0.ɵɵtemplate(3, AutoCompleteComponent_div_2_span_3_Template, 2, 1, "span", 5);
|
|
54
|
-
i0.ɵɵtemplate(4, AutoCompleteComponent_div_2_aui_selectable_list_4_Template, 1, 5, "aui-selectable-list", 6);
|
|
55
|
-
i0.ɵɵelementEnd();
|
|
56
|
-
} if (rf & 2) {
|
|
57
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
58
|
-
i0.ɵɵadvance(1);
|
|
59
|
-
i0.ɵɵproperty("ngIf", ctx_r0.focused && ctx_r0.loadingText && ctx_r0.searching);
|
|
60
|
-
i0.ɵɵadvance(1);
|
|
61
|
-
i0.ɵɵproperty("ngIf", ctx_r0.focused && ctx_r0.searchIncentiveText && !ctx_r0.searching && !ctx_r0.query && !ctx_r0.results.length);
|
|
62
|
-
i0.ɵɵadvance(1);
|
|
63
|
-
i0.ɵɵproperty("ngIf", ctx_r0.focused && ctx_r0.noResultsText && !ctx_r0.searching && ctx_r0.query && !ctx_r0.results.length);
|
|
64
|
-
i0.ɵɵadvance(1);
|
|
65
|
-
i0.ɵɵproperty("ngIf", ctx_r0.results.length > 0 && !(ctx_r0.focused && ctx_r0.loadingText && ctx_r0.searching));
|
|
66
|
-
} }
|
|
67
11
|
export class AutoCompleteComponent {
|
|
68
12
|
constructor(ref, searchService) {
|
|
69
13
|
this.ref = ref;
|
|
@@ -255,93 +199,67 @@ export class AutoCompleteComponent {
|
|
|
255
199
|
this.flyoutZone.element.scrollTop = this.index * liHeight - offset * liHeight;
|
|
256
200
|
}
|
|
257
201
|
}
|
|
258
|
-
/** @nocollapse */ AutoCompleteComponent.ɵfac =
|
|
259
|
-
/** @nocollapse */ AutoCompleteComponent.ɵcmp =
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}], loadingText: [{
|
|
322
|
-
type: Input
|
|
323
|
-
}], noResultsText: [{
|
|
324
|
-
type: Input
|
|
325
|
-
}], showAllByDefault: [{
|
|
326
|
-
type: Input
|
|
327
|
-
}], autoComplete: [{
|
|
328
|
-
type: Input
|
|
329
|
-
}], label: [{
|
|
330
|
-
type: Input
|
|
331
|
-
}], value: [{
|
|
332
|
-
type: Input
|
|
333
|
-
}], search: [{
|
|
334
|
-
type: Output
|
|
335
|
-
}], select: [{
|
|
336
|
-
type: Output
|
|
337
|
-
}], flyout: [{
|
|
338
|
-
type: ViewChild,
|
|
339
|
-
args: [FlyoutDirective, { static: true }]
|
|
340
|
-
}], flyoutZone: [{
|
|
341
|
-
type: ViewChild,
|
|
342
|
-
args: [FlyoutZoneDirective, { static: true }]
|
|
343
|
-
}], template: [{
|
|
344
|
-
type: ContentChild,
|
|
345
|
-
args: [TemplateRef, { static: true }]
|
|
346
|
-
}] }); })();
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1dG8tY29tcGxldGUvY29tcG9uZW50cy9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hdXRvLWNvbXBsZXRlL2NvbXBvbmVudHMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0lDVXpFLCtCQUEwRztJQUN4RywwQkFBdUM7SUFDdkMsK0JBQThCO0lBQUEsWUFBaUI7SUFBQSxpQkFBTyxFQUFBOzs7SUFBeEIsZUFBaUI7SUFBakIsd0NBQWlCOzs7SUFFakQsZ0NBR0c7SUFBQSxZQUF5QjtJQUFBLGlCQUMzQjs7O0lBREUsZUFBeUI7SUFBekIsZ0RBQXlCOzs7SUFFNUIsZ0NBR0c7SUFBQSxZQUFtQjtJQUFBLGlCQUNyQjs7O0lBREUsZUFBbUI7SUFBbkIsMENBQW1COzs7O0lBRXRCLCtDQVFDO0lBUEMsa05BQVksZUFBQSx1QkFBZ0IsQ0FBQSxJQUFDO0lBTzlCLGlCQUFzQjs7O0lBTHJCLG9DQUFlLGlDQUFBLHlCQUFBLHVCQUFBLHdCQUFBOzs7SUFsQm5CLDhCQUF1QztJQUNyQyw4RUFHTztJQUNQLDhFQUlDO0lBQ0QsOEVBSUM7SUFDRCw0R0FRdUI7SUFDekIsaUJBQU07OztJQXZCRyxlQUF5QztJQUF6QywrRUFBeUM7SUFLN0MsZUFBK0U7SUFBL0UsbUlBQStFO0lBSy9FLGVBQXdFO0lBQXhFLDRIQUF3RTtJQU14RSxlQUFrRTtJQUFsRSwrR0FBa0U7O0FEWHpFLE1BQU0sT0FBTyxxQkFBcUI7SUF1Q2hDLFlBQW9CLEdBQWUsRUFBVSxhQUE0QjtRQUFyRCxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFsQ2hFLFlBQU8sR0FBVSxFQUFFLENBQUMsQ0FBQyxxQ0FBcUM7UUFDMUQsU0FBSSxHQUFVLEVBQUUsQ0FBQyxDQUFDLHlEQUF5RDtRQUMzRSxXQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsbUNBQW1DO1FBQ25ELGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSXJCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQU05Qix5RkFBeUY7UUFDL0UsV0FBTSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELDREQUE0RDtRQUNsRCxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFPbEQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFVBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLCtGQUErRjtRQUMzRyxpQkFBWSxHQUFRLElBQUksQ0FBQyxDQUFDLG9DQUFvQztRQUM5RCxjQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsNEJBQTRCO1FBQy9DLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVsQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUlyQixnQkFBVyxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFGd0MsQ0FBQztJQUk3RSxtQ0FBbUM7SUFDNUIsVUFBVSxDQUFDLEtBQUssR0FBRyxFQUFFO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBRTNFLElBQUksUUFBUSxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM1QztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUN6QjtTQUNGO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELG1DQUFtQztJQUM1QixnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxtQ0FBbUM7SUFDNUIsaUJBQWlCLEtBQUksQ0FBQztJQUV0QixnQkFBZ0IsQ0FBQyxVQUFtQjtRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELHNCQUFzQjtJQUNmLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7U0FDRjtRQUVELElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsSUFBUztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsMEJBQTBCO1NBQ3pEO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyx5Q0FBeUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLElBQVM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyw0QkFBNEI7SUFDbEQsQ0FBQztJQUVNLGNBQWM7UUFDbkIsb0NBQW9DO1FBQ3BDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkM7UUFFRCwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO1FBRUQsK0RBQStEO1FBQy9ELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDN0UsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN4RztJQUNILENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFTSxVQUFVLENBQUMsS0FBWTtRQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyw2Q0FBNkM7UUFFckUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXRFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUM3QixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUN4QyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ25DLE9BQU87U0FDUjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3hDO1lBRUQsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7U0FDM0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDO1FBRXJCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE9BQU87U0FDUjtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUNoRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDaEYsQ0FBQzs7NkdBeFBVLHFCQUFxQjt1R0FBckIscUJBQXFCO29DQTRCbEIsV0FBVzs7Ozs7dUJBSGQsZUFBZTt1QkFDZixtQkFBbUI7Ozs7O2lnQkFsQ25CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBQztnQkFDcEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGO1FDN0JILDhCQU1DO1FBTEMsaUdBQVUsb0JBQWdCLElBQUM7UUFNM0IsZ0NBaUJFO1FBaEJBLGlHQUFTLGFBQVMsSUFBQyxrR0FDSCxvQkFBZ0IsSUFEYiw4RkFFTCxrQkFBYyxJQUZULGdHQUdQLHNCQUFrQixJQUhYLDRGQUlOLGlCQUFhLElBSlAsZ0lBQUEsb0dBTUYsY0FBVSxJQU5SO1FBRHJCLGlCQWlCRTtRQUNGLHNFQXdCTTtRQUNSLGlCQUFNOztRQWhESixtQ0FBcUI7UUFXbkIsZUFBbUI7UUFBbkIsbUNBQW1CLDBDQUFBLGNBQUEsZ0NBQUEsa0NBQUE7UUFZZixlQUFpQjtRQUFqQixzQ0FBaUI7O3VGRE1aLHFCQUFxQjtjQVpqQyxTQUFTOzJCQUNFLG1CQUFtQixhQUdsQjtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxzQkFBc0IsRUFBQzt3QkFDcEQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7eUZBR1EsRUFBRTtrQkFBVixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFHRyxLQUFLO2tCQUFiLEtBQUs7WUFDRyxLQUFLO2tCQUFiLEtBQUs7WUFHSSxNQUFNO2tCQUFmLE1BQU07WUFFRyxNQUFNO2tCQUFmLE1BQU07WUFFdUMsTUFBTTtrQkFBbkQsU0FBUzttQkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ00sVUFBVTtrQkFBM0QsU0FBUzttQkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFFSSxRQUFRO2tCQUEzRCxZQUFZO21CQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXQsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRmx5b3V0RGlyZWN0aXZlLCBGbHlvdXRab25lRGlyZWN0aXZlIH0gZnJvbSAnQGFjcGFhcy11aS9uZ3gtZmx5b3V0JztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktYXV0by1jb21wbGV0ZScsXG4gIHN0eWxlVXJsczogWycuL2F1dG8tY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9Db21wbGV0ZUNvbXBvbmVudCksIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlucHV0TGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcmVzdWx0czogYW55W10gPSBbXTsgLy8gVGhlIHZhbHVlcyBmb3IgdGhlIHNlbGVjdGFibGUgbGlzdFxuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdOyAvLyBUaGUgdmFsdWVzIHRvIHNlYXJjaCBpbiB3aGVuIHJlbW90ZSBzZWFyY2ggaXMgZGlzYWJsZWRcbiAgQElucHV0KCkgcmVtb3RlID0gZmFsc2U7IC8vIERpc2FibGUgb3IgZW5hbWJsZSByZW1vdGUgc2VhcmNoXG4gIEBJbnB1dCgpIG1pbkNoYXJhY3RlcnMgPSAwO1xuICBASW5wdXQoKSBjbGVhckludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VhcmNoSW5jZW50aXZlVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBsb2FkaW5nVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBub1Jlc3VsdHNUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dBbGxCeURlZmF1bHQgPSBmYWxzZTtcbiAgQElucHV0KCkgYXV0b0NvbXBsZXRlID0gJ29mZic7XG5cbiAgLy8gc3BlY2lmeSB3aGljaCBsYWJlbC92YWx1ZSBwcm9wcyB0byB1c2VcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZztcblxuICAvLyBFdmVudGVtaXR0ZXIgZm9yIHNlYXJjaHZhbHVlIChwYXJlbnQgb2JqZWN0IHNob3VsZCB1cGRhdGUgdGhlIHJlc3VsdHMgd2l0aCB0aGlzIHBhcmFtKVxuICBAT3V0cHV0KCkgc2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBzZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoRmx5b3V0RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmbHlvdXQ6IEZseW91dERpcmVjdGl2ZTtcbiAgQFZpZXdDaGlsZChGbHlvdXRab25lRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmbHlvdXRab25lOiBGbHlvdXRab25lRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwdWJsaWMgcXVlcnkgPSAnJztcbiAgcHVibGljIGluZGV4ID0gLTE7IC8vIGluZGV4IGZvciBhY3RpdmUgZWxlbWVudCBpbiBzZWxlY3RhYmxlIGxpc3QsIGJ5IGRlZmF1bHQgLTEgKHNvIGl0IHN0YXJ0cyBpbiB0aGUgaW5wdXQgZmllbGQpXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW06IGFueSA9IG51bGw7IC8vIGtlZXAgYSBiYWNrdXAgb2YgdGhlIHNlbGVjdGVkSXRlbVxuICBwdWJsaWMgc2VhcmNoaW5nID0gZmFsc2U7IC8vIHRyYWNrIHJlbW90ZSBzZWFyY2ggc3RhdGVcbiAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcbiAgcHVibGljIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlbW90ZVZhbHVlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSkge31cblxuICBwdWJsaWMgdXBkYXRlTW9kZWwgPSAoXzogYW55KSA9PiB7fTtcblxuICAvLyBDT05UUk9MX1ZBTFVFX0FDQ0VTU09SIGludGVyZmFjZVxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZSA9ICcnKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5kYXRhLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLnZhbHVlXSA9PT0gdmFsdWUpO1xuXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnF1ZXJ5ID0gc2VsZWN0ZWRbdGhpcy5sYWJlbF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yZW1vdGUgJiYgISF2YWx1ZSkge1xuICAgICAgICB0aGlzLnJlbW90ZVZhbHVlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnF1ZXJ5ID0gdmFsdWU7XG4gIH1cblxuICAvLyBDT05UUk9MX1ZBTFVFX0FDQ0VTU09SIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbikge1xuICAgIHRoaXMudXBkYXRlTW9kZWwgPSBmbjtcbiAgfVxuXG4gIC8vIENPTlRST0xfVkFMVUVfQUNDRVNTT1IgaW50ZXJmYWNlXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHt9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhKSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCAmJiAhdGhpcy5xdWVyeSAmJiB0aGlzLnNob3dBbGxCeURlZmF1bHQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyA9IFsuLi50aGlzLmRhdGFdO1xuICAgIH1cbiAgfVxuXG4gIC8vIE9uQ2hhbmdlcyBpbnRlcmZhY2VcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdEYXRhID0gZ2V0KGNoYW5nZXMsICdkYXRhLmN1cnJlbnRWYWx1ZScsIFtdKTtcbiAgICBpZiAoIWlzRXF1YWwobmV3RGF0YSwgZ2V0KGNoYW5nZXMsICdkYXRhLnByZXZpb3VzVmFsdWUnLCBbXSkpKSB7XG4gICAgICBpZiAodGhpcy5yZW1vdGUpIHtcbiAgICAgICAgdGhpcy5yZW1vdGVTZWFyY2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9jYWxTZWFyY2goKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5yZXN1bHRzICYmIGNoYW5nZXMucmVzdWx0cy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb3BhZ2F0ZUNoYW5nZShpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gaXRlbSAhPT0gbnVsbCA/ICh0aGlzLmxhYmVsID8gaXRlbVt0aGlzLmxhYmVsXSA6IGl0ZW0pIDogJyc7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChpdGVtKTtcblxuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiBudWxsO1xuICAgIHRoaXMudXBkYXRlTW9kZWwoa2V5ID8gaXRlbVtrZXldIHx8ICcnIDogaXRlbSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIHRyaWdnZXJzIG9uIGlucHV0IHZhbHVlIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIGRvU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXggPSAtMTsgLy8gcmVzZXQgaW5kZXhcbiAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5yZW1vdGUpIHtcbiAgICAgIHRoaXMuc2VhcmNoLmVtaXQodGhpcy5xdWVyeSk7IC8vIGFzayBmb3IgbmV3IHJlbW90ZSBkYXRhXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9jYWxTZWFyY2goKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5GbHlvdXQoKTsgLy8gb3BlbiB0aGUgZmx5b3V0IHdoZW4gdGhlcmUgaXMgYSBjaGFuZ2VcbiAgfVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VycyBvbiBzZWxlY3RhYmxlLWxpc3Q6c2VsZWN0IC0+IG9uQ2xpY2sgZXZlbnQgaW4gc2VsZWN0YWJsZS1saXN0XG4gICAqL1xuICBwdWJsaWMgb25TZWxlY3QoaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoaXRlbSk7XG4gICAgdGhpcy5jbG9zZUZseW91dCgpOyAvLyBDbG9zZSB0aGUgZmx5b3V0IG1hbnVhbGx5XG4gIH1cblxuICBwdWJsaWMgb25GbHlvdXRDbG9zZWQoKTogdm9pZCB7XG4gICAgLy8gdGhlcmUgaXMgb25seSAxIHJlc3VsdCwgc2VsZWN0IGl0XG4gICAgaWYgKHRoaXMuaW5kZXggPj0gMCAmJiB0aGlzLnJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdGhpcy5vblNlbGVjdCh0aGlzLnJlc3VsdHNbMF0pO1xuICAgIH1cblxuICAgIC8vIHRoZXJlIGlzIG5vIHF1ZXJ5IG5vciBzZWxlY3RlZCBpdGVtLCBjbGVhciB0aGUgc2VsZWN0ZWQgaXRlbVxuICAgIGlmICghdGhpcy5xdWVyeSAmJiB0aGlzLmluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIHRoaXMub25TZWxlY3QobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gcmVzZXQgdGhlIHF1ZXJ5IGZvciBhbiBpbnZhbGlkIHF1ZXJ5IGlmIGNsZWFySW52YWxpZCBpcyB0cnVlXG4gICAgaWYgKHRoaXMuY2xlYXJJbnZhbGlkICYmIHRoaXMucXVlcnkgJiYgIXRoaXMucmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pbmRleCA8IDApIHtcbiAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlbGVjdGVkSXRlbSA/ICh0aGlzLmxhYmVsID8gdGhpcy5zZWxlY3RlZEl0ZW1bdGhpcy5sYWJlbF0gOiB0aGlzLnNlbGVjdGVkSXRlbSkgOiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25LZXlBcnJvd0Rvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5kZXggPCB0aGlzLnJlc3VsdHMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5zY3JvbGxMaXN0KDEpO1xuICAgIH1cblxuICAgIHRoaXMub3BlbkZseW91dCgpO1xuICB9XG5cbiAgcHVibGljIG9uS2V5QXJyb3dVcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLnNjcm9sbExpc3QoLTEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbktleUVudGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIERvIG5vdCBzdWJtaXQgZm9ybSB3aGVuIHNlbGVjdGluZyBhbiBpdGVtLlxuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLmluZGV4ID49IDAgPyB0aGlzLnJlc3VsdHNbdGhpcy5pbmRleF0gOiB0aGlzLnF1ZXJ5O1xuXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UocXVlcnkpO1xuICAgIHRoaXMuY2xvc2VGbHlvdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleUVzY2FwZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRmx5b3V0KCk7XG4gIH1cblxuICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgIHRoaXMub3BlbkZseW91dCgpO1xuICB9XG5cbiAgcHVibGljIG9wZW5GbHlvdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmx5b3V0KSB7XG4gICAgICB0aGlzLmZseW91dC5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRmx5b3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZseW91dCkge1xuICAgICAgdGhpcy5mbHlvdXQuY2xvc2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBsb2NhbFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc3VsdHMgPSB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRoaXMuZGF0YSwge1xuICAgICAgbWluTGVuZ3RoOiB0aGlzLm1pbkNoYXJhY3RlcnMsXG4gICAgICBrZXk6IHRoaXMubGFiZWwsXG4gICAgICBxdWVyeTogdGhpcy5xdWVyeSxcbiAgICAgIHNob3dBbGxCeURlZmF1bHQ6IHRoaXMuc2hvd0FsbEJ5RGVmYXVsdCxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnJlc3VsdHMubGVuZ3RoID09PSAxICYmIHRoaXMucXVlcnkgPT09IHRoaXMucmVzdWx0c1swXVt0aGlzLmxhYmVsXSkge1xuICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5zZWFyY2hpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdGVTZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlbW90ZVZhbHVlIHx8ICF0aGlzLmRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZGF0YS5maW5kKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpdGVtW3RoaXMudmFsdWVdID09PSB0aGlzLnF1ZXJ5O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbSA9PT0gdGhpcy5xdWVyeTtcbiAgICB9KTtcblxuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgdGhpcy5xdWVyeSA9IHRoaXMubGFiZWwgPyBzZWxlY3RlZFt0aGlzLmxhYmVsXSA6IHNlbGVjdGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdGVWYWx1ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbExpc3QoZmFjdG9yOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4ICs9IGZhY3RvcjtcblxuICAgIGlmICghdGhpcy5mbHlvdXRab25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlJdGVtcyA9IHRoaXMuZmx5b3V0Wm9uZS5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaScpO1xuICAgIGNvbnN0IGxpSGVpZ2h0ID0gbGlJdGVtc1sxXSA/IGxpSXRlbXNbMV0ub2Zmc2V0SGVpZ2h0IDogbGlJdGVtc1swXS5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3Qgem9uZUhlaWdodCA9IHRoaXMuZmx5b3V0Wm9uZS5lbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICBjb25zdCBvZmZzZXQgPSB6b25lSGVpZ2h0IC8gbGlIZWlnaHQgLyAyO1xuXG4gICAgdGhpcy5mbHlvdXRab25lLmVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5pbmRleCAqIGxpSGVpZ2h0IC0gb2Zmc2V0ICogbGlIZWlnaHQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKGNsb3NlZCk9XCJvbkZseW91dENsb3NlZCgpXCJcbiAgW3RvZ2dsZUNsaWNrXT1cImZhbHNlXCJcbiAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICBhdWlGbHlvdXRcbiAgY2xhc3M9XCJtLWZseW91dCBtLWZseW91dC0tc2Nyb2xsYWJsZSBtLWZseW91dC0tZnVsbCBvLWF1dG8tY29tcGxldGVcIlxuPlxuICA8aW5wdXRcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAoa2V5QXJyb3dEb3duKT1cIm9uS2V5QXJyb3dEb3duKClcIlxuICAgIChrZXlBcnJvd1VwKT1cIm9uS2V5QXJyb3dVcCgpXCJcbiAgICAoa2V5RW50ZXIpPVwib25LZXlFbnRlcigkZXZlbnQpXCJcbiAgICAoa2V5RXNjYXBlKT1cIm9uS2V5RXNjYXBlKClcIlxuICAgIFsobmdNb2RlbCldPVwicXVlcnlcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cImRvU2VhcmNoKClcIlxuICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAgIFtpZF09XCJpZFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIlxuICAgIGF1aUZseW91dEFjdGlvblxuICAgIGF1aVNlbGVjdGFibGVBY3Rpb25zXG4gICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGVcIlxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBjbGFzcz1cImEtaW5wdXRcIlxuICAvPlxuICA8ZGl2ICpuZ0lmPVwiIWlzRGlzYWJsZWRcIiBhdWlGbHlvdXRab25lPlxuICAgIDxzcGFuICpuZ0lmPVwiZm9jdXNlZCAmJiBsb2FkaW5nVGV4dCAmJiBzZWFyY2hpbmdcIiBjbGFzcz1cImEtc3Bpbm5lciBhLXNwaW5uZXItLXMgdS1tYXJnaW4teHNcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYS1zcGlubmVyX19jaXJjbGVcIj48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImEtc3Bpbm5lcl9fdGV4dFwiPnt7IGxvYWRpbmdUZXh0IH19PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJmb2N1c2VkICYmIHNlYXJjaEluY2VudGl2ZVRleHQgJiYgIXNlYXJjaGluZyAmJiAhcXVlcnkgJiYgIXJlc3VsdHMubGVuZ3RoXCJcbiAgICAgIGNsYXNzPVwiby1hdXRvLWNvbXBsZXRlX19pbmZvIHUtdGV4dC1saWdodCB1LW1hcmdpbi14c1wiXG4gICAgICA+e3sgc2VhcmNoSW5jZW50aXZlVGV4dCB9fTwvc3BhblxuICAgID5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJmb2N1c2VkICYmIG5vUmVzdWx0c1RleHQgJiYgIXNlYXJjaGluZyAmJiBxdWVyeSAmJiAhcmVzdWx0cy5sZW5ndGhcIlxuICAgICAgY2xhc3M9XCJvLWF1dG8tY29tcGxldGVfX2luZm8gdS10ZXh0LWxpZ2h0IHUtbWFyZ2luLXhzXCJcbiAgICAgID57eyBub1Jlc3VsdHNUZXh0IH19PC9zcGFuXG4gICAgPlxuICAgIDxhdWktc2VsZWN0YWJsZS1saXN0XG4gICAgICAoc2VsZWN0ZWQpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAqbmdJZj1cInJlc3VsdHMubGVuZ3RoID4gMCAmJiAhKGZvY3VzZWQgJiYgbG9hZGluZ1RleHQgJiYgc2VhcmNoaW5nKVwiXG4gICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJ0ZW1wbGF0ZVwiXG4gICAgICBbaXRlbXNdPVwicmVzdWx0c1wiXG4gICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgW3NlYXJjaF09XCJxdWVyeVwiXG4gICAgPjwvYXVpLXNlbGVjdGFibGUtbGlzdD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
202
|
+
/** @nocollapse */ AutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AutoCompleteComponent, deps: [{ token: i0.ElementRef }, { token: i1.SearchService }], target: i0.ɵɵFactoryTarget.Component });
|
|
203
|
+
/** @nocollapse */ AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: AutoCompleteComponent, selector: "aui-auto-complete", inputs: { id: "id", placeholder: "placeholder", description: "description", inputLabel: "inputLabel", results: "results", data: "data", remote: "remote", minCharacters: "minCharacters", clearInvalid: "clearInvalid", searchIncentiveText: "searchIncentiveText", loadingText: "loadingText", noResultsText: "noResultsText", showAllByDefault: "showAllByDefault", autoComplete: "autoComplete", label: "label", value: "value" }, outputs: { search: "search", select: "select" }, providers: [
|
|
204
|
+
{
|
|
205
|
+
provide: NG_VALUE_ACCESSOR,
|
|
206
|
+
useExisting: forwardRef((() => AutoCompleteComponent)),
|
|
207
|
+
multi: true,
|
|
208
|
+
},
|
|
209
|
+
], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }], viewQueries: [{ propertyName: "flyout", first: true, predicate: FlyoutDirective, descendants: true, static: true }, { propertyName: "flyoutZone", first: true, predicate: FlyoutZoneDirective, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div\n (closed)=\"onFlyoutClosed()\"\n [toggleClick]=\"false\"\n aria-haspopup=\"listbox\"\n auiFlyout\n class=\"m-flyout m-flyout--scrollable m-flyout--full o-auto-complete\"\n>\n <input\n (focus)=\"onFocus()\"\n (keyArrowDown)=\"onKeyArrowDown()\"\n (keyArrowUp)=\"onKeyArrowUp()\"\n (keyEnter)=\"onKeyEnter($event)\"\n (keyEscape)=\"onKeyEscape()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"doSearch()\"\n [disabled]=\"isDisabled ? true : null\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n aria-autocomplete=\"list\"\n auiFlyoutAction\n auiSelectableActions\n [autocomplete]=\"autoComplete\"\n type=\"text\"\n class=\"a-input\"\n />\n <div *ngIf=\"!isDisabled\" auiFlyoutZone>\n <span *ngIf=\"focused && loadingText && searching\" class=\"a-spinner a-spinner--s u-margin-xs\" role=\"alert\">\n <span class=\"a-spinner__circle\"></span>\n <span class=\"a-spinner__text\">{{ loadingText }}</span>\n </span>\n <span\n *ngIf=\"focused && searchIncentiveText && !searching && !query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\"\n >{{ searchIncentiveText }}</span\n >\n <span\n *ngIf=\"focused && noResultsText && !searching && query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\"\n >{{ noResultsText }}</span\n >\n <aui-selectable-list\n (selected)=\"onSelect($event)\"\n *ngIf=\"results.length > 0 && !(focused && loadingText && searching)\"\n [index]=\"index\"\n [itemTemplate]=\"template\"\n [items]=\"results\"\n [label]=\"label\"\n [search]=\"query\"\n ></aui-selectable-list>\n </div>\n</div>\n", styles: [".o-auto-complete,.o-auto-complete__info{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.FlyoutActionDirective, selector: "[auiFlyoutAction]", inputs: ["openOnFocus", "disabled"], exportAs: ["auiFlyoutAction"] }, { kind: "directive", type: i4.FlyoutZoneDirective, selector: "[auiFlyoutZone]", inputs: ["auiFlyoutZone"], exportAs: ["auiFlyoutZone"] }, { kind: "directive", type: i4.FlyoutDirective, selector: "[auiFlyout]", inputs: ["size", "align", "toggleClick", "activateOnFocus"], outputs: ["opened", "closed"], exportAs: ["auiFlyout"] }, { kind: "component", type: i5.SelectableListComponent, selector: "aui-selectable-list", inputs: ["items", "index", "search", "label", "itemTemplate"], outputs: ["selected"] }, { kind: "directive", type: i5.SelectableActionsDirective, selector: "[auiSelectableActions]", outputs: ["keyArrowUp", "keyArrowDown", "keyEnter", "keyEscape"], exportAs: ["auiSelectableActions"] }] });
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AutoCompleteComponent, decorators: [{
|
|
211
|
+
type: Component,
|
|
212
|
+
args: [{ selector: 'aui-auto-complete', providers: [
|
|
213
|
+
{
|
|
214
|
+
provide: NG_VALUE_ACCESSOR,
|
|
215
|
+
useExisting: forwardRef((() => AutoCompleteComponent)),
|
|
216
|
+
multi: true,
|
|
217
|
+
},
|
|
218
|
+
], template: "<div\n (closed)=\"onFlyoutClosed()\"\n [toggleClick]=\"false\"\n aria-haspopup=\"listbox\"\n auiFlyout\n class=\"m-flyout m-flyout--scrollable m-flyout--full o-auto-complete\"\n>\n <input\n (focus)=\"onFocus()\"\n (keyArrowDown)=\"onKeyArrowDown()\"\n (keyArrowUp)=\"onKeyArrowUp()\"\n (keyEnter)=\"onKeyEnter($event)\"\n (keyEscape)=\"onKeyEscape()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"doSearch()\"\n [disabled]=\"isDisabled ? true : null\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n aria-autocomplete=\"list\"\n auiFlyoutAction\n auiSelectableActions\n [autocomplete]=\"autoComplete\"\n type=\"text\"\n class=\"a-input\"\n />\n <div *ngIf=\"!isDisabled\" auiFlyoutZone>\n <span *ngIf=\"focused && loadingText && searching\" class=\"a-spinner a-spinner--s u-margin-xs\" role=\"alert\">\n <span class=\"a-spinner__circle\"></span>\n <span class=\"a-spinner__text\">{{ loadingText }}</span>\n </span>\n <span\n *ngIf=\"focused && searchIncentiveText && !searching && !query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\"\n >{{ searchIncentiveText }}</span\n >\n <span\n *ngIf=\"focused && noResultsText && !searching && query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\"\n >{{ noResultsText }}</span\n >\n <aui-selectable-list\n (selected)=\"onSelect($event)\"\n *ngIf=\"results.length > 0 && !(focused && loadingText && searching)\"\n [index]=\"index\"\n [itemTemplate]=\"template\"\n [items]=\"results\"\n [label]=\"label\"\n [search]=\"query\"\n ></aui-selectable-list>\n </div>\n</div>\n", styles: [".o-auto-complete,.o-auto-complete__info{display:block}\n"] }]
|
|
219
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.SearchService }]; }, propDecorators: { id: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}], placeholder: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}], description: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], inputLabel: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}], results: [{
|
|
228
|
+
type: Input
|
|
229
|
+
}], data: [{
|
|
230
|
+
type: Input
|
|
231
|
+
}], remote: [{
|
|
232
|
+
type: Input
|
|
233
|
+
}], minCharacters: [{
|
|
234
|
+
type: Input
|
|
235
|
+
}], clearInvalid: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], searchIncentiveText: [{
|
|
238
|
+
type: Input
|
|
239
|
+
}], loadingText: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], noResultsText: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}], showAllByDefault: [{
|
|
244
|
+
type: Input
|
|
245
|
+
}], autoComplete: [{
|
|
246
|
+
type: Input
|
|
247
|
+
}], label: [{
|
|
248
|
+
type: Input
|
|
249
|
+
}], value: [{
|
|
250
|
+
type: Input
|
|
251
|
+
}], search: [{
|
|
252
|
+
type: Output
|
|
253
|
+
}], select: [{
|
|
254
|
+
type: Output
|
|
255
|
+
}], flyout: [{
|
|
256
|
+
type: ViewChild,
|
|
257
|
+
args: [FlyoutDirective, { static: true }]
|
|
258
|
+
}], flyoutZone: [{
|
|
259
|
+
type: ViewChild,
|
|
260
|
+
args: [FlyoutZoneDirective, { static: true }]
|
|
261
|
+
}], template: [{
|
|
262
|
+
type: ContentChild,
|
|
263
|
+
args: [TemplateRef, { static: true }]
|
|
264
|
+
}] } });
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1dG8tY29tcGxldGUvY29tcG9uZW50cy9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hdXRvLWNvbXBsZXRlL2NvbXBvbmVudHMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFlN0UsTUFBTSxPQUFPLHFCQUFxQjtJQXVDaEMsWUFBb0IsR0FBZSxFQUFVLGFBQTRCO1FBQXJELFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWxDaEUsWUFBTyxHQUFVLEVBQUUsQ0FBQyxDQUFDLHFDQUFxQztRQUMxRCxTQUFJLEdBQVUsRUFBRSxDQUFDLENBQUMseURBQXlEO1FBQzNFLFdBQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxtQ0FBbUM7UUFDbkQsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFJckIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBTTlCLHlGQUF5RjtRQUMvRSxXQUFNLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUQsNERBQTREO1FBQ2xELFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU9sRCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsVUFBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsK0ZBQStGO1FBQzNHLGlCQUFZLEdBQVEsSUFBSSxDQUFDLENBQUMsb0NBQW9DO1FBQzlELGNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyw0QkFBNEI7UUFDL0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBSXJCLGdCQUFXLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUZ3QyxDQUFDO0lBSTdFLG1DQUFtQztJQUM1QixVQUFVLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7WUFFM0UsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzVDO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO1NBQ0Y7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsbUNBQW1DO0lBQzVCLGdCQUFnQixDQUFDLEVBQUU7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELG1DQUFtQztJQUM1QixpQkFBaUIsS0FBSSxDQUFDO0lBRXRCLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM1RixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO0lBQ2YsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPO1NBQ1I7UUFFRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUM3RCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtTQUNGO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFTO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywwQkFBMEI7U0FDekQ7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLHlDQUF5QztJQUM5RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRLENBQUMsSUFBUztRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLDRCQUE0QjtJQUNsRCxDQUFDO0lBRU0sY0FBYztRQUNuQixvQ0FBb0M7UUFDcEMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QztRQUVELCtEQUErRDtRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7UUFFRCwrREFBK0Q7UUFDL0QsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3hHO0lBQ0gsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFZO1FBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLDZDQUE2QztRQUVyRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFdEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDckI7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQzdCLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQ3hDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0UsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbkMsT0FBTztTQUNSO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDeEM7WUFFRCxPQUFPLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztTQUMzRDthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDakI7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUM7UUFFckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ2hGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxVQUFVLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUNoRixDQUFDOztxSUF4UFUscUJBQXFCO3lIQUFyQixxQkFBcUIsbWdCQVJyQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFDO1lBQ3BELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixnRUE4QmEsV0FBVyxzR0FIZCxlQUFlLDJGQUNmLG1CQUFtQixtRkN6RGhDLGtzREFtREE7MkZEcEJhLHFCQUFxQjtrQkFaakMsU0FBUzsrQkFDRSxtQkFBbUIsYUFHbEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsc0JBQXNCLEVBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzZIQUdRLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUdJLE1BQU07c0JBQWYsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBRXVDLE1BQU07c0JBQW5ELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDTSxVQUFVO3NCQUEzRCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFSSxRQUFRO3NCQUEzRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXQsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRmx5b3V0RGlyZWN0aXZlLCBGbHlvdXRab25lRGlyZWN0aXZlIH0gZnJvbSAnQGFjcGFhcy11aS9uZ3gtZmx5b3V0JztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktYXV0by1jb21wbGV0ZScsXG4gIHN0eWxlVXJsczogWycuL2F1dG8tY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9Db21wbGV0ZUNvbXBvbmVudCksIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlucHV0TGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcmVzdWx0czogYW55W10gPSBbXTsgLy8gVGhlIHZhbHVlcyBmb3IgdGhlIHNlbGVjdGFibGUgbGlzdFxuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdOyAvLyBUaGUgdmFsdWVzIHRvIHNlYXJjaCBpbiB3aGVuIHJlbW90ZSBzZWFyY2ggaXMgZGlzYWJsZWRcbiAgQElucHV0KCkgcmVtb3RlID0gZmFsc2U7IC8vIERpc2FibGUgb3IgZW5hbWJsZSByZW1vdGUgc2VhcmNoXG4gIEBJbnB1dCgpIG1pbkNoYXJhY3RlcnMgPSAwO1xuICBASW5wdXQoKSBjbGVhckludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VhcmNoSW5jZW50aXZlVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBsb2FkaW5nVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBub1Jlc3VsdHNUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dBbGxCeURlZmF1bHQgPSBmYWxzZTtcbiAgQElucHV0KCkgYXV0b0NvbXBsZXRlID0gJ29mZic7XG5cbiAgLy8gc3BlY2lmeSB3aGljaCBsYWJlbC92YWx1ZSBwcm9wcyB0byB1c2VcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZztcblxuICAvLyBFdmVudGVtaXR0ZXIgZm9yIHNlYXJjaHZhbHVlIChwYXJlbnQgb2JqZWN0IHNob3VsZCB1cGRhdGUgdGhlIHJlc3VsdHMgd2l0aCB0aGlzIHBhcmFtKVxuICBAT3V0cHV0KCkgc2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBzZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoRmx5b3V0RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmbHlvdXQ6IEZseW91dERpcmVjdGl2ZTtcbiAgQFZpZXdDaGlsZChGbHlvdXRab25lRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmbHlvdXRab25lOiBGbHlvdXRab25lRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwdWJsaWMgcXVlcnkgPSAnJztcbiAgcHVibGljIGluZGV4ID0gLTE7IC8vIGluZGV4IGZvciBhY3RpdmUgZWxlbWVudCBpbiBzZWxlY3RhYmxlIGxpc3QsIGJ5IGRlZmF1bHQgLTEgKHNvIGl0IHN0YXJ0cyBpbiB0aGUgaW5wdXQgZmllbGQpXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW06IGFueSA9IG51bGw7IC8vIGtlZXAgYSBiYWNrdXAgb2YgdGhlIHNlbGVjdGVkSXRlbVxuICBwdWJsaWMgc2VhcmNoaW5nID0gZmFsc2U7IC8vIHRyYWNrIHJlbW90ZSBzZWFyY2ggc3RhdGVcbiAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcbiAgcHVibGljIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlbW90ZVZhbHVlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSkge31cblxuICBwdWJsaWMgdXBkYXRlTW9kZWwgPSAoXzogYW55KSA9PiB7fTtcblxuICAvLyBDT05UUk9MX1ZBTFVFX0FDQ0VTU09SIGludGVyZmFjZVxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZSA9ICcnKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5kYXRhLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLnZhbHVlXSA9PT0gdmFsdWUpO1xuXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnF1ZXJ5ID0gc2VsZWN0ZWRbdGhpcy5sYWJlbF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yZW1vdGUgJiYgISF2YWx1ZSkge1xuICAgICAgICB0aGlzLnJlbW90ZVZhbHVlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnF1ZXJ5ID0gdmFsdWU7XG4gIH1cblxuICAvLyBDT05UUk9MX1ZBTFVFX0FDQ0VTU09SIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbikge1xuICAgIHRoaXMudXBkYXRlTW9kZWwgPSBmbjtcbiAgfVxuXG4gIC8vIENPTlRST0xfVkFMVUVfQUNDRVNTT1IgaW50ZXJmYWNlXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHt9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhKSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCAmJiAhdGhpcy5xdWVyeSAmJiB0aGlzLnNob3dBbGxCeURlZmF1bHQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyA9IFsuLi50aGlzLmRhdGFdO1xuICAgIH1cbiAgfVxuXG4gIC8vIE9uQ2hhbmdlcyBpbnRlcmZhY2VcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdEYXRhID0gZ2V0KGNoYW5nZXMsICdkYXRhLmN1cnJlbnRWYWx1ZScsIFtdKTtcbiAgICBpZiAoIWlzRXF1YWwobmV3RGF0YSwgZ2V0KGNoYW5nZXMsICdkYXRhLnByZXZpb3VzVmFsdWUnLCBbXSkpKSB7XG4gICAgICBpZiAodGhpcy5yZW1vdGUpIHtcbiAgICAgICAgdGhpcy5yZW1vdGVTZWFyY2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9jYWxTZWFyY2goKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5yZXN1bHRzICYmIGNoYW5nZXMucmVzdWx0cy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb3BhZ2F0ZUNoYW5nZShpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gaXRlbSAhPT0gbnVsbCA/ICh0aGlzLmxhYmVsID8gaXRlbVt0aGlzLmxhYmVsXSA6IGl0ZW0pIDogJyc7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChpdGVtKTtcblxuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiBudWxsO1xuICAgIHRoaXMudXBkYXRlTW9kZWwoa2V5ID8gaXRlbVtrZXldIHx8ICcnIDogaXRlbSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIHRyaWdnZXJzIG9uIGlucHV0IHZhbHVlIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIGRvU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXggPSAtMTsgLy8gcmVzZXQgaW5kZXhcbiAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5yZW1vdGUpIHtcbiAgICAgIHRoaXMuc2VhcmNoLmVtaXQodGhpcy5xdWVyeSk7IC8vIGFzayBmb3IgbmV3IHJlbW90ZSBkYXRhXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9jYWxTZWFyY2goKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5GbHlvdXQoKTsgLy8gb3BlbiB0aGUgZmx5b3V0IHdoZW4gdGhlcmUgaXMgYSBjaGFuZ2VcbiAgfVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VycyBvbiBzZWxlY3RhYmxlLWxpc3Q6c2VsZWN0IC0+IG9uQ2xpY2sgZXZlbnQgaW4gc2VsZWN0YWJsZS1saXN0XG4gICAqL1xuICBwdWJsaWMgb25TZWxlY3QoaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoaXRlbSk7XG4gICAgdGhpcy5jbG9zZUZseW91dCgpOyAvLyBDbG9zZSB0aGUgZmx5b3V0IG1hbnVhbGx5XG4gIH1cblxuICBwdWJsaWMgb25GbHlvdXRDbG9zZWQoKTogdm9pZCB7XG4gICAgLy8gdGhlcmUgaXMgb25seSAxIHJlc3VsdCwgc2VsZWN0IGl0XG4gICAgaWYgKHRoaXMuaW5kZXggPj0gMCAmJiB0aGlzLnJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdGhpcy5vblNlbGVjdCh0aGlzLnJlc3VsdHNbMF0pO1xuICAgIH1cblxuICAgIC8vIHRoZXJlIGlzIG5vIHF1ZXJ5IG5vciBzZWxlY3RlZCBpdGVtLCBjbGVhciB0aGUgc2VsZWN0ZWQgaXRlbVxuICAgIGlmICghdGhpcy5xdWVyeSAmJiB0aGlzLmluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIHRoaXMub25TZWxlY3QobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gcmVzZXQgdGhlIHF1ZXJ5IGZvciBhbiBpbnZhbGlkIHF1ZXJ5IGlmIGNsZWFySW52YWxpZCBpcyB0cnVlXG4gICAgaWYgKHRoaXMuY2xlYXJJbnZhbGlkICYmIHRoaXMucXVlcnkgJiYgIXRoaXMucmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pbmRleCA8IDApIHtcbiAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlbGVjdGVkSXRlbSA/ICh0aGlzLmxhYmVsID8gdGhpcy5zZWxlY3RlZEl0ZW1bdGhpcy5sYWJlbF0gOiB0aGlzLnNlbGVjdGVkSXRlbSkgOiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25LZXlBcnJvd0Rvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5kZXggPCB0aGlzLnJlc3VsdHMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5zY3JvbGxMaXN0KDEpO1xuICAgIH1cblxuICAgIHRoaXMub3BlbkZseW91dCgpO1xuICB9XG5cbiAgcHVibGljIG9uS2V5QXJyb3dVcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLnNjcm9sbExpc3QoLTEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbktleUVudGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIERvIG5vdCBzdWJtaXQgZm9ybSB3aGVuIHNlbGVjdGluZyBhbiBpdGVtLlxuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLmluZGV4ID49IDAgPyB0aGlzLnJlc3VsdHNbdGhpcy5pbmRleF0gOiB0aGlzLnF1ZXJ5O1xuXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UocXVlcnkpO1xuICAgIHRoaXMuY2xvc2VGbHlvdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleUVzY2FwZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRmx5b3V0KCk7XG4gIH1cblxuICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgIHRoaXMub3BlbkZseW91dCgpO1xuICB9XG5cbiAgcHVibGljIG9wZW5GbHlvdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmx5b3V0KSB7XG4gICAgICB0aGlzLmZseW91dC5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRmx5b3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZseW91dCkge1xuICAgICAgdGhpcy5mbHlvdXQuY2xvc2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBsb2NhbFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc3VsdHMgPSB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRoaXMuZGF0YSwge1xuICAgICAgbWluTGVuZ3RoOiB0aGlzLm1pbkNoYXJhY3RlcnMsXG4gICAgICBrZXk6IHRoaXMubGFiZWwsXG4gICAgICBxdWVyeTogdGhpcy5xdWVyeSxcbiAgICAgIHNob3dBbGxCeURlZmF1bHQ6IHRoaXMuc2hvd0FsbEJ5RGVmYXVsdCxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnJlc3VsdHMubGVuZ3RoID09PSAxICYmIHRoaXMucXVlcnkgPT09IHRoaXMucmVzdWx0c1swXVt0aGlzLmxhYmVsXSkge1xuICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5zZWFyY2hpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdGVTZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlbW90ZVZhbHVlIHx8ICF0aGlzLmRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZGF0YS5maW5kKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpdGVtW3RoaXMudmFsdWVdID09PSB0aGlzLnF1ZXJ5O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbSA9PT0gdGhpcy5xdWVyeTtcbiAgICB9KTtcblxuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgdGhpcy5xdWVyeSA9IHRoaXMubGFiZWwgPyBzZWxlY3RlZFt0aGlzLmxhYmVsXSA6IHNlbGVjdGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdGVWYWx1ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbExpc3QoZmFjdG9yOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4ICs9IGZhY3RvcjtcblxuICAgIGlmICghdGhpcy5mbHlvdXRab25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlJdGVtcyA9IHRoaXMuZmx5b3V0Wm9uZS5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaScpO1xuICAgIGNvbnN0IGxpSGVpZ2h0ID0gbGlJdGVtc1sxXSA/IGxpSXRlbXNbMV0ub2Zmc2V0SGVpZ2h0IDogbGlJdGVtc1swXS5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3Qgem9uZUhlaWdodCA9IHRoaXMuZmx5b3V0Wm9uZS5lbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICBjb25zdCBvZmZzZXQgPSB6b25lSGVpZ2h0IC8gbGlIZWlnaHQgLyAyO1xuXG4gICAgdGhpcy5mbHlvdXRab25lLmVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5pbmRleCAqIGxpSGVpZ2h0IC0gb2Zmc2V0ICogbGlIZWlnaHQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKGNsb3NlZCk9XCJvbkZseW91dENsb3NlZCgpXCJcbiAgW3RvZ2dsZUNsaWNrXT1cImZhbHNlXCJcbiAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICBhdWlGbHlvdXRcbiAgY2xhc3M9XCJtLWZseW91dCBtLWZseW91dC0tc2Nyb2xsYWJsZSBtLWZseW91dC0tZnVsbCBvLWF1dG8tY29tcGxldGVcIlxuPlxuICA8aW5wdXRcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAoa2V5QXJyb3dEb3duKT1cIm9uS2V5QXJyb3dEb3duKClcIlxuICAgIChrZXlBcnJvd1VwKT1cIm9uS2V5QXJyb3dVcCgpXCJcbiAgICAoa2V5RW50ZXIpPVwib25LZXlFbnRlcigkZXZlbnQpXCJcbiAgICAoa2V5RXNjYXBlKT1cIm9uS2V5RXNjYXBlKClcIlxuICAgIFsobmdNb2RlbCldPVwicXVlcnlcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cImRvU2VhcmNoKClcIlxuICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAgIFtpZF09XCJpZFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIlxuICAgIGF1aUZseW91dEFjdGlvblxuICAgIGF1aVNlbGVjdGFibGVBY3Rpb25zXG4gICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGVcIlxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBjbGFzcz1cImEtaW5wdXRcIlxuICAvPlxuICA8ZGl2ICpuZ0lmPVwiIWlzRGlzYWJsZWRcIiBhdWlGbHlvdXRab25lPlxuICAgIDxzcGFuICpuZ0lmPVwiZm9jdXNlZCAmJiBsb2FkaW5nVGV4dCAmJiBzZWFyY2hpbmdcIiBjbGFzcz1cImEtc3Bpbm5lciBhLXNwaW5uZXItLXMgdS1tYXJnaW4teHNcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYS1zcGlubmVyX19jaXJjbGVcIj48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImEtc3Bpbm5lcl9fdGV4dFwiPnt7IGxvYWRpbmdUZXh0IH19PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJmb2N1c2VkICYmIHNlYXJjaEluY2VudGl2ZVRleHQgJiYgIXNlYXJjaGluZyAmJiAhcXVlcnkgJiYgIXJlc3VsdHMubGVuZ3RoXCJcbiAgICAgIGNsYXNzPVwiby1hdXRvLWNvbXBsZXRlX19pbmZvIHUtdGV4dC1saWdodCB1LW1hcmdpbi14c1wiXG4gICAgICA+e3sgc2VhcmNoSW5jZW50aXZlVGV4dCB9fTwvc3BhblxuICAgID5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJmb2N1c2VkICYmIG5vUmVzdWx0c1RleHQgJiYgIXNlYXJjaGluZyAmJiBxdWVyeSAmJiAhcmVzdWx0cy5sZW5ndGhcIlxuICAgICAgY2xhc3M9XCJvLWF1dG8tY29tcGxldGVfX2luZm8gdS10ZXh0LWxpZ2h0IHUtbWFyZ2luLXhzXCJcbiAgICAgID57eyBub1Jlc3VsdHNUZXh0IH19PC9zcGFuXG4gICAgPlxuICAgIDxhdWktc2VsZWN0YWJsZS1saXN0XG4gICAgICAoc2VsZWN0ZWQpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAqbmdJZj1cInJlc3VsdHMubGVuZ3RoID4gMCAmJiAhKGZvY3VzZWQgJiYgbG9hZGluZ1RleHQgJiYgc2VhcmNoaW5nKVwiXG4gICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJ0ZW1wbGF0ZVwiXG4gICAgICBbaXRlbXNdPVwicmVzdWx0c1wiXG4gICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgW3NlYXJjaF09XCJxdWVyeVwiXG4gICAgPjwvYXVpLXNlbGVjdGFibGUtbGlzdD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|