mis-crystal-design-system 18.0.24 → 18.1.0-signal-test
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/action-list/action-list.component.d.ts +17 -15
- package/async-search-dropdown/async-dropdown.component.d.ts +43 -61
- package/button/button.component.d.ts +35 -13
- package/button/button.directive.d.ts +10 -8
- package/checkbox/checkbox.component.d.ts +15 -12
- package/chip/chip.component.d.ts +9 -11
- package/datepicker_v2/models/dp-config.model.d.ts +1 -0
- package/datepicker_v2/tz-datepicker.directive.d.ts +15 -18
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +42 -21
- package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +12 -14
- package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +46 -23
- package/drawer/drawer-body/drawer-body.component.d.ts +2 -2
- package/dropdown/calculate-container-height.directive.d.ts +7 -8
- package/dropdown/dropdown.component.d.ts +41 -49
- package/dynamic-form/dynamic-form.component.d.ts +20 -16
- package/esm2022/action-list/action-list.component.mjs +112 -89
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +256 -326
- package/esm2022/button/button.component.mjs +55 -48
- package/esm2022/button/button.directive.mjs +36 -40
- package/esm2022/checkbox/checkbox.component.mjs +75 -70
- package/esm2022/chip/chip.component.mjs +20 -33
- package/esm2022/datepicker_v2/models/dp-config.model.mjs +1 -1
- package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +42 -71
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +202 -172
- package/esm2022/datepicker_v2/utils/index.mjs +2 -1
- package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +26 -51
- package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +282 -235
- package/esm2022/drawer/drawer-body/drawer-body.component.mjs +8 -7
- package/esm2022/dropdown/calculate-container-height.directive.mjs +25 -22
- package/esm2022/dropdown/dropdown.component.mjs +162 -186
- package/esm2022/dynamic-form/dynamic-form.component.mjs +118 -72
- package/esm2022/fab/fab.component.mjs +29 -33
- package/esm2022/filter/filter-panel/filter-panel.component.mjs +60 -58
- package/esm2022/input/directives/input/input.directive.mjs +22 -26
- package/esm2022/input/mis-input.component.mjs +41 -45
- package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +40 -50
- package/esm2022/loader/loader.component.mjs +8 -11
- package/esm2022/mobile-filter/mobile-filter.component.mjs +61 -61
- package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +11 -9
- package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +235 -281
- package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +250 -287
- package/esm2022/phone-input/phone-input.component.mjs +21 -43
- package/esm2022/radio-button/radio-button.component.mjs +15 -27
- package/esm2022/ske-loader/ske-loader.component.mjs +15 -29
- package/esm2022/slider/slider.component.mjs +23 -33
- package/esm2022/slider/slider.module.mjs +4 -11
- package/esm2022/snackbar/snackbar/snackbar.component.mjs +21 -15
- package/esm2022/snackbar/snackbar.service.mjs +3 -2
- package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +230 -343
- package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +77 -105
- package/esm2022/star-rating/star-rating.component.mjs +57 -71
- package/esm2022/switch/switch.component.mjs +34 -36
- package/esm2022/table/actions-cell/actions-cell.component.mjs +55 -54
- package/esm2022/table/custom-table-cell.directive.mjs +22 -18
- package/esm2022/table/filter/filter.component.mjs +60 -42
- package/esm2022/table/sort-icons.directive.mjs +16 -8
- package/esm2022/table/sub-table/sub-table.component.mjs +41 -44
- package/esm2022/table/table.component.mjs +181 -165
- package/esm2022/timepicker/timepicker.component.mjs +244 -159
- package/esm2022/timepicker/timepicker.directive.mjs +3 -2
- package/esm2022/timerangepicker/timerangepicker.component.mjs +200 -159
- package/esm2022/toast/toast.component.mjs +6 -7
- package/esm2022/toast/toast.data.service.mjs +15 -9
- package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +12 -12
- package/esm2022/tooltip/tooltip.directive.mjs +4 -4
- package/esm2022/virtual-scroll/virtual-scroll.component.mjs +57 -59
- package/fab/fab.component.d.ts +12 -8
- package/fesm2022/mis-crystal-design-system-action-list.mjs +111 -88
- package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +253 -324
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-button.mjs +88 -85
- package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-checkbox.mjs +74 -69
- package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-chip.mjs +19 -32
- package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +242 -240
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +305 -283
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-drawer.mjs +7 -6
- package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dropdown.mjs +183 -204
- package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +118 -72
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-fab.mjs +28 -32
- package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-filter.mjs +59 -57
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs +39 -49
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +62 -71
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-loader.mjs +7 -10
- package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +60 -60
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-modal.mjs +10 -8
- package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +233 -279
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +249 -286
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-phone-input.mjs +20 -42
- package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-radio-button.mjs +14 -26
- package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs +14 -28
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +25 -42
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-snackbar.mjs +22 -15
- package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +304 -445
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-star-rating.mjs +56 -70
- package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-switch.mjs +33 -35
- package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +365 -321
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timepicker.mjs +245 -159
- package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +199 -158
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-toast.mjs +18 -13
- package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-tooltip.mjs +14 -14
- package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +57 -59
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
- package/filter/filter-panel/filter-panel.component.d.ts +14 -14
- package/input/directives/input/input.directive.d.ts +6 -10
- package/input/mis-input.component.d.ts +12 -13
- package/input-stepper/input-stepper/input-stepper.component.d.ts +8 -7
- package/loader/loader.component.d.ts +3 -6
- package/mobile-filter/mobile-filter.component.d.ts +15 -15
- package/modal/module-wrapper/module-wrapper.component.d.ts +2 -3
- package/multi-select-dropdown/multi-select-dropdown.component.d.ts +89 -51
- package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +99 -56
- package/package.json +17 -17
- package/phone-input/phone-input.component.d.ts +16 -18
- package/radio-button/radio-button.component.d.ts +9 -11
- package/ske-loader/ske-loader.component.d.ts +8 -11
- package/slider/slider.component.d.ts +8 -11
- package/slider/slider.module.d.ts +1 -2
- package/snackbar/snackbar/snackbar.component.d.ts +3 -3
- package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +35 -35
- package/specificdatepicker/tz-specificdatepicker.directive.d.ts +24 -28
- package/star-rating/star-rating.component.d.ts +18 -18
- package/switch/switch.component.d.ts +8 -10
- package/table/actions-cell/actions-cell.component.d.ts +14 -14
- package/table/custom-table-cell.directive.d.ts +3 -3
- package/table/filter/filter.component.d.ts +9 -9
- package/table/sub-table/sub-table.component.d.ts +5 -5
- package/table/table.component.d.ts +38 -35
- package/timepicker/timepicker.component.d.ts +29 -28
- package/timerangepicker/timerangepicker.component.d.ts +36 -33
- package/toast/toast.data.service.d.ts +1 -1
- package/tooltip/tooltip-container/tooltip.component.d.ts +4 -4
- package/virtual-scroll/virtual-scroll.component.d.ts +8 -9
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { debounceTime, distinctUntilChanged, tap } from
|
|
1
|
+
import { Component, ContentChild, HostListener, ViewChild, } from '@angular/core';
|
|
2
|
+
import { UntypedFormControl } from '@angular/forms';
|
|
3
|
+
import { OverlayConfig, ConnectionPositionPair, } from '@angular/cdk/overlay';
|
|
4
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
5
|
+
import { signal, effect, input, output } from '@angular/core';
|
|
6
|
+
import { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';
|
|
7
|
+
import { merge, Subject } from 'rxjs';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/cdk/overlay";
|
|
9
10
|
import * as i2 from "@angular/common";
|
|
@@ -16,410 +17,384 @@ const _c2 = ["ddBtn"];
|
|
|
16
17
|
const _c3 = ["input"];
|
|
17
18
|
const _c4 = ["dd"];
|
|
18
19
|
const _c5 = (a0, a1, a2) => ({ opened: a0, disabled: a1, readonly: a2 });
|
|
19
|
-
const _c6 = (a0, a1) => ({ "
|
|
20
|
-
const _c7 = (a0, a1) => ({ "
|
|
21
|
-
const _c8 = () => ({ "
|
|
22
|
-
const _c9 = a0 => ({
|
|
23
|
-
const _c10 = (a0, a1) => ({ "
|
|
24
|
-
const _c11 =
|
|
25
|
-
const _c12 = a0 => ({
|
|
26
|
-
const _c13 = a0 => ({ $implicit: a0 });
|
|
20
|
+
const _c6 = (a0, a1) => ({ "ip-md": a0, "ip-sm": a1 });
|
|
21
|
+
const _c7 = (a0, a1) => ({ "chip-md": a0, "chip-sm": a1 });
|
|
22
|
+
const _c8 = (a0, a1) => ({ "h6": a0, "h8-b": a1 });
|
|
23
|
+
const _c9 = a0 => ({ cursor: "pointer", "font-size": a0 });
|
|
24
|
+
const _c10 = (a0, a1) => ({ "max-height": a0, "width": a1 });
|
|
25
|
+
const _c11 = a0 => ({ "dd-list-pd": a0 });
|
|
26
|
+
const _c12 = a0 => ({ $implicit: a0 });
|
|
27
27
|
function AsyncDropdownComponent_div_2_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
-
const
|
|
29
|
-
i0.ɵɵelementStart(0, "div",
|
|
28
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
29
|
+
i0.ɵɵelementStart(0, "div", 14)(1, "span", 15);
|
|
30
30
|
i0.ɵɵtext(2);
|
|
31
31
|
i0.ɵɵelementEnd();
|
|
32
|
-
i0.ɵɵelementStart(3, "span",
|
|
33
|
-
i0.ɵɵlistener("click", function AsyncDropdownComponent_div_2_div_1_Template_span_click_3_listener() { const
|
|
32
|
+
i0.ɵɵelementStart(3, "span", 16);
|
|
33
|
+
i0.ɵɵlistener("click", function AsyncDropdownComponent_div_2_div_1_Template_span_click_3_listener() { const item_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.removeItem(item_r3)); })("keyup.enter", function AsyncDropdownComponent_div_2_div_1_Template_span_keyup_enter_3_listener() { const item_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.removeItem(item_r3)); });
|
|
34
34
|
i0.ɵɵelementEnd()();
|
|
35
35
|
} if (rf & 2) {
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(
|
|
36
|
+
const item_r3 = ctx.$implicit;
|
|
37
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
38
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(4, _c7, ctx_r3.size() === "md", ctx_r3.size() === "sm"));
|
|
39
39
|
i0.ɵɵadvance();
|
|
40
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(
|
|
40
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(7, _c8, ctx_r3.size() === "md", ctx_r3.size() === "sm"));
|
|
41
41
|
i0.ɵɵadvance();
|
|
42
|
-
i0.ɵɵ
|
|
42
|
+
i0.ɵɵtextInterpolate1(" ", item_r3[ctx_r3.displayKey()], " ");
|
|
43
43
|
i0.ɵɵadvance();
|
|
44
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(
|
|
44
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c9, ctx_r3.size() === "sm" ? "12px" : "14px"));
|
|
45
45
|
} }
|
|
46
46
|
function AsyncDropdownComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
-
i0.ɵɵelementStart(0, "div",
|
|
48
|
-
i0.ɵɵtemplate(1, AsyncDropdownComponent_div_2_div_1_Template, 4,
|
|
47
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
48
|
+
i0.ɵɵtemplate(1, AsyncDropdownComponent_div_2_div_1_Template, 4, 12, "div", 13);
|
|
49
49
|
i0.ɵɵelementEnd();
|
|
50
50
|
} if (rf & 2) {
|
|
51
|
-
const
|
|
51
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
52
52
|
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵproperty("ngForOf",
|
|
53
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.selectedItems);
|
|
54
54
|
} }
|
|
55
55
|
function AsyncDropdownComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
-
i0.ɵɵelementStart(0, "div",
|
|
57
|
-
i0.ɵɵelement(1, "img",
|
|
56
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
57
|
+
i0.ɵɵelement(1, "img", 18);
|
|
58
58
|
i0.ɵɵelementEnd();
|
|
59
59
|
} if (rf & 2) {
|
|
60
|
-
const
|
|
60
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
61
61
|
i0.ɵɵadvance();
|
|
62
|
-
i0.ɵɵproperty("src",
|
|
62
|
+
i0.ɵɵproperty("src", ctx_r3.customPlaceholderIcon(), i0.ɵɵsanitizeUrl);
|
|
63
63
|
} }
|
|
64
64
|
function AsyncDropdownComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
-
i0.ɵɵelement(0, "span",
|
|
65
|
+
i0.ɵɵelement(0, "span", 19);
|
|
66
66
|
} }
|
|
67
|
-
function
|
|
68
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
69
|
-
i0.ɵɵelementStart(0, "input", 21, 4);
|
|
70
|
-
i0.ɵɵlistener("focus", function AsyncDropdownComponent_input_7_Template_input_focus_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.defaultCall()); })("keyup.enter", function AsyncDropdownComponent_input_7_Template_input_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.enablePopUpOnTab()); });
|
|
71
|
-
i0.ɵɵelementEnd();
|
|
72
|
-
} if (rf & 2) {
|
|
73
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
74
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(3, _c10, ctx_r2.size === "md", ctx_r2.size === "sm"))("placeholder", ctx_r2.placeholder)("formControl", ctx_r2.searchInput);
|
|
75
|
-
} }
|
|
76
|
-
function AsyncDropdownComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
67
|
+
function AsyncDropdownComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
77
68
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
78
|
-
i0.ɵɵelementStart(0, "
|
|
79
|
-
i0.ɵɵlistener("
|
|
80
|
-
i0.ɵɵelementEnd();
|
|
81
|
-
} if (rf & 2) {
|
|
82
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
83
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(3, _c10, ctx_r2.size === "md", ctx_r2.size === "sm"))("placeholder", ctx_r2.placeholder)("formControl", ctx_r2.searchInput);
|
|
84
|
-
} }
|
|
85
|
-
function AsyncDropdownComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
-
const _r6 = i0.ɵɵgetCurrentView();
|
|
87
|
-
i0.ɵɵelementStart(0, "div", 23);
|
|
88
|
-
i0.ɵɵlistener("click", function AsyncDropdownComponent_div_10_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.removeInputValue()); })("keyup.enter", function AsyncDropdownComponent_div_10_Template_div_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.removeInputValue()); });
|
|
69
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
70
|
+
i0.ɵɵlistener("click", function AsyncDropdownComponent_div_9_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.removeInputValue()); })("keyup.enter", function AsyncDropdownComponent_div_9_Template_div_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.removeInputValue()); });
|
|
89
71
|
i0.ɵɵelementEnd();
|
|
90
72
|
} }
|
|
91
|
-
function
|
|
92
|
-
i0.ɵɵelementContainer(0,
|
|
73
|
+
function AsyncDropdownComponent_ng_template_10_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
i0.ɵɵelementContainer(0, 24);
|
|
93
75
|
} if (rf & 2) {
|
|
94
|
-
const
|
|
95
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
76
|
+
const ctx_r3 = i0.ɵɵnextContext(3);
|
|
77
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r3.customLoader);
|
|
96
78
|
} }
|
|
97
|
-
function
|
|
98
|
-
i0.ɵɵelementStart(0, "div",
|
|
99
|
-
i0.ɵɵelement(1, "mis-loader",
|
|
79
|
+
function AsyncDropdownComponent_ng_template_10_ng_container_1_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
81
|
+
i0.ɵɵelement(1, "mis-loader", 27);
|
|
100
82
|
i0.ɵɵelementEnd();
|
|
101
83
|
} if (rf & 2) {
|
|
102
84
|
i0.ɵɵadvance();
|
|
103
85
|
i0.ɵɵproperty("mobileView", true);
|
|
104
86
|
} }
|
|
105
|
-
function
|
|
106
|
-
i0.ɵɵtemplate(0,
|
|
87
|
+
function AsyncDropdownComponent_ng_template_10_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
+
i0.ɵɵtemplate(0, AsyncDropdownComponent_ng_template_10_ng_container_1_ng_template_2_div_0_Template, 2, 1, "div", 25);
|
|
107
89
|
} if (rf & 2) {
|
|
108
|
-
const
|
|
109
|
-
i0.ɵɵproperty("ngIf",
|
|
90
|
+
const ctx_r3 = i0.ɵɵnextContext(3);
|
|
91
|
+
i0.ɵɵproperty("ngIf", ctx_r3.loading() && !ctx_r3.customLoader);
|
|
110
92
|
} }
|
|
111
|
-
function
|
|
93
|
+
function AsyncDropdownComponent_ng_template_10_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
112
94
|
i0.ɵɵelementContainerStart(0);
|
|
113
|
-
i0.ɵɵtemplate(1,
|
|
95
|
+
i0.ɵɵtemplate(1, AsyncDropdownComponent_ng_template_10_ng_container_1_ng_container_1_Template, 1, 1, "ng-container", 23)(2, AsyncDropdownComponent_ng_template_10_ng_container_1_ng_template_2_Template, 1, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
|
114
96
|
i0.ɵɵelementContainerEnd();
|
|
115
97
|
} if (rf & 2) {
|
|
116
|
-
const
|
|
117
|
-
const
|
|
98
|
+
const defaultLoader_r6 = i0.ɵɵreference(3);
|
|
99
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
118
100
|
i0.ɵɵadvance();
|
|
119
|
-
i0.ɵɵproperty("ngIf",
|
|
101
|
+
i0.ɵɵproperty("ngIf", ctx_r3.customLoader)("ngIfElse", defaultLoader_r6);
|
|
120
102
|
} }
|
|
121
|
-
function
|
|
103
|
+
function AsyncDropdownComponent_ng_template_10_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
122
104
|
i0.ɵɵelementContainerStart(0);
|
|
123
|
-
i0.ɵɵelementStart(1, "div",
|
|
105
|
+
i0.ɵɵelementStart(1, "div", 26)(2, "p");
|
|
124
106
|
i0.ɵɵtext(3, "Unknown error has occurred, ");
|
|
125
107
|
i0.ɵɵelement(4, "br");
|
|
126
108
|
i0.ɵɵtext(5, " Please try again later.");
|
|
127
109
|
i0.ɵɵelementEnd()();
|
|
128
110
|
i0.ɵɵelementContainerEnd();
|
|
129
111
|
} }
|
|
130
|
-
function
|
|
131
|
-
i0.ɵɵ
|
|
132
|
-
i0.ɵɵelementContainer(1,
|
|
133
|
-
i0.ɵɵ
|
|
112
|
+
function AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
113
|
+
i0.ɵɵelementContainerStart(0);
|
|
114
|
+
i0.ɵɵelementContainer(1, 32);
|
|
115
|
+
i0.ɵɵelementContainerEnd();
|
|
134
116
|
} if (rf & 2) {
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
i0.ɵɵproperty("tabindex", ctx_r2.openPopUpOnTab ? 0 : -1);
|
|
117
|
+
const item_r8 = i0.ɵɵnextContext().$implicit;
|
|
118
|
+
const ctx_r3 = i0.ɵɵnextContext(3);
|
|
138
119
|
i0.ɵɵadvance();
|
|
139
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
120
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r3.customItem)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c12, item_r8));
|
|
140
121
|
} }
|
|
141
|
-
function
|
|
142
|
-
const
|
|
143
|
-
i0.ɵɵelement(0, "div",
|
|
144
|
-
i0.ɵɵelementStart(1, "div",
|
|
145
|
-
i0.ɵɵlistener("click", function
|
|
146
|
-
i0.ɵɵelementStart(2, "div",
|
|
122
|
+
function AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_ng_template_4_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
124
|
+
i0.ɵɵelement(0, "div", 30);
|
|
125
|
+
i0.ɵɵelementStart(1, "div", 33);
|
|
126
|
+
i0.ɵɵlistener("click", function AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_ng_template_4_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r9); const item_r8 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.selectData(item_r8, false)); })("keyup.enter", function AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_ng_template_4_Template_div_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r9); const item_r8 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.selectData(item_r8, false)); });
|
|
127
|
+
i0.ɵɵelementStart(2, "div", 34)(3, "div", 35);
|
|
147
128
|
i0.ɵɵtext(4);
|
|
148
129
|
i0.ɵɵelementEnd();
|
|
149
|
-
i0.ɵɵelementStart(5, "div",
|
|
130
|
+
i0.ɵɵelementStart(5, "div", 36);
|
|
150
131
|
i0.ɵɵtext(6);
|
|
151
132
|
i0.ɵɵelementEnd()()();
|
|
152
133
|
} if (rf & 2) {
|
|
153
|
-
const
|
|
154
|
-
const
|
|
134
|
+
const item_r8 = i0.ɵɵnextContext().$implicit;
|
|
135
|
+
const ctx_r3 = i0.ɵɵnextContext(3);
|
|
155
136
|
i0.ɵɵadvance();
|
|
156
|
-
i0.ɵɵproperty("tabindex",
|
|
137
|
+
i0.ɵɵproperty("tabindex", ctx_r3.openPopUpOnTab() ? 0 : -1);
|
|
157
138
|
i0.ɵɵadvance(3);
|
|
158
|
-
i0.ɵɵ
|
|
139
|
+
i0.ɵɵtextInterpolate(item_r8[ctx_r3.displayKey()]);
|
|
159
140
|
i0.ɵɵadvance(2);
|
|
160
|
-
i0.ɵɵ
|
|
141
|
+
i0.ɵɵtextInterpolate(item_r8[ctx_r3.secondaryDisplayKey()]);
|
|
161
142
|
} }
|
|
162
|
-
function
|
|
163
|
-
const
|
|
143
|
+
function AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
164
145
|
i0.ɵɵelementContainerStart(0);
|
|
165
|
-
i0.ɵɵelementStart(1, "div",
|
|
166
|
-
i0.ɵɵlistener("click", function
|
|
167
|
-
i0.ɵɵelement(2, "div",
|
|
168
|
-
i0.ɵɵtemplate(3,
|
|
146
|
+
i0.ɵɵelementStart(1, "div", 29);
|
|
147
|
+
i0.ɵɵlistener("click", function AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_Template_div_click_1_listener() { const item_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.selectData(item_r8, false)); })("keyup.enter", function AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_Template_div_keyup_enter_1_listener() { const item_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.selectData(item_r8, false)); });
|
|
148
|
+
i0.ɵɵelement(2, "div", 30);
|
|
149
|
+
i0.ɵɵtemplate(3, AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_ng_container_3_Template, 2, 4, "ng-container", 31)(4, AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_ng_template_4_Template, 7, 3, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
|
|
169
150
|
i0.ɵɵelementEnd();
|
|
170
151
|
i0.ɵɵelementContainerEnd();
|
|
171
152
|
} if (rf & 2) {
|
|
172
|
-
const
|
|
173
|
-
const
|
|
153
|
+
const standardItem_r10 = i0.ɵɵreference(5);
|
|
154
|
+
const ctx_r3 = i0.ɵɵnextContext(3);
|
|
174
155
|
i0.ɵɵadvance(3);
|
|
175
|
-
i0.ɵɵproperty("ngIf",
|
|
156
|
+
i0.ɵɵproperty("ngIf", ctx_r3.customItem)("ngIfElse", standardItem_r10);
|
|
176
157
|
} }
|
|
177
|
-
function
|
|
158
|
+
function AsyncDropdownComponent_ng_template_10_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
178
159
|
i0.ɵɵelementStart(0, "div");
|
|
179
|
-
i0.ɵɵtemplate(1,
|
|
160
|
+
i0.ɵɵtemplate(1, AsyncDropdownComponent_ng_template_10_div_3_ng_container_1_Template, 6, 2, "ng-container", 28);
|
|
180
161
|
i0.ɵɵelementEnd();
|
|
181
162
|
} if (rf & 2) {
|
|
182
|
-
const
|
|
163
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
183
164
|
i0.ɵɵadvance();
|
|
184
|
-
i0.ɵɵproperty("ngForOf",
|
|
165
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.data());
|
|
185
166
|
} }
|
|
186
|
-
function
|
|
187
|
-
i0.ɵɵelementStart(0, "div")(1, "div",
|
|
167
|
+
function AsyncDropdownComponent_ng_template_10_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
168
|
+
i0.ɵɵelementStart(0, "div")(1, "div", 37);
|
|
188
169
|
i0.ɵɵtext(2, "No Data Available");
|
|
189
170
|
i0.ɵɵelementEnd()();
|
|
190
171
|
} }
|
|
191
|
-
function
|
|
192
|
-
i0.ɵɵelementStart(0, "div",
|
|
193
|
-
i0.ɵɵtemplate(1,
|
|
172
|
+
function AsyncDropdownComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
174
|
+
i0.ɵɵtemplate(1, AsyncDropdownComponent_ng_template_10_ng_container_1_Template, 4, 2, "ng-container", 22)(2, AsyncDropdownComponent_ng_template_10_ng_container_2_Template, 6, 0, "ng-container", 22)(3, AsyncDropdownComponent_ng_template_10_div_3_Template, 2, 1, "div", 22)(4, AsyncDropdownComponent_ng_template_10_div_4_Template, 3, 0, "div", 22);
|
|
194
175
|
i0.ɵɵelementEnd();
|
|
195
176
|
} if (rf & 2) {
|
|
196
|
-
const
|
|
197
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(7,
|
|
177
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
178
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(7, _c10, ctx_r3.height(), ctx_r3.dropdownListWidth()))("ngClass", i0.ɵɵpureFunction1(10, _c11, ctx_r3.data().length === 0))("cdkTrapFocusAutoCapture", ctx_r3.openPopUpOnTab());
|
|
198
179
|
i0.ɵɵadvance();
|
|
199
|
-
i0.ɵɵproperty("ngIf",
|
|
180
|
+
i0.ɵɵproperty("ngIf", ctx_r3.loading());
|
|
200
181
|
i0.ɵɵadvance();
|
|
201
|
-
i0.ɵɵproperty("ngIf",
|
|
182
|
+
i0.ɵɵproperty("ngIf", ctx_r3.error());
|
|
202
183
|
i0.ɵɵadvance();
|
|
203
|
-
i0.ɵɵproperty("ngIf", !
|
|
184
|
+
i0.ɵɵproperty("ngIf", !ctx_r3.loading() && !ctx_r3.error() && ctx_r3.data().length > 0);
|
|
204
185
|
i0.ɵɵadvance();
|
|
205
|
-
i0.ɵɵproperty("ngIf", !
|
|
186
|
+
i0.ɵɵproperty("ngIf", !ctx_r3.loading() && !ctx_r3.error() && ctx_r3.data().length === 0 && ctx_r3.searchInput.value);
|
|
206
187
|
} }
|
|
207
188
|
export class AsyncDropdownComponent {
|
|
208
|
-
constructor(overlay, viewContainerRef, _ngZone) {
|
|
189
|
+
constructor(overlay, viewContainerRef, _ngZone, injector) {
|
|
209
190
|
this.overlay = overlay;
|
|
210
191
|
this.viewContainerRef = viewContainerRef;
|
|
211
192
|
this._ngZone = _ngZone;
|
|
212
|
-
this.
|
|
213
|
-
|
|
214
|
-
this.
|
|
215
|
-
this.
|
|
216
|
-
this.
|
|
217
|
-
this.
|
|
218
|
-
this.
|
|
219
|
-
this.
|
|
220
|
-
|
|
221
|
-
this.
|
|
193
|
+
this.injector = injector;
|
|
194
|
+
// === Inputs ===
|
|
195
|
+
this.height = input();
|
|
196
|
+
this.width = input();
|
|
197
|
+
this.size = input('md');
|
|
198
|
+
this.httpStream = input.required();
|
|
199
|
+
this.displayKey = input.required();
|
|
200
|
+
this.secondaryDisplayKey = input('');
|
|
201
|
+
this.placeholder = input('Select');
|
|
202
|
+
this.debounceTime = input(400);
|
|
203
|
+
this.minInputLength = input(2);
|
|
204
|
+
this.multi = input(false);
|
|
205
|
+
this.uniqueKey = input();
|
|
206
|
+
this.control = input(null);
|
|
207
|
+
this.disabled = input(false);
|
|
208
|
+
this.readonly = input(false);
|
|
209
|
+
this.disableCopyPaste = input(false);
|
|
210
|
+
this.dropdownListWidth = input();
|
|
211
|
+
this.dropdownListPosition = input('Left');
|
|
212
|
+
this.customPlaceholderIcon = input('');
|
|
213
|
+
this.selections = input(new Map());
|
|
214
|
+
this.searchValue = input();
|
|
215
|
+
// === Outputs ===
|
|
216
|
+
this.onSelect = output();
|
|
217
|
+
this.searchQueryChange = output();
|
|
218
|
+
this.clear = output();
|
|
219
|
+
this.itemSelected = output();
|
|
220
|
+
this.itemRemoved = output();
|
|
221
|
+
// === Internal state ===
|
|
222
222
|
this.searchInput = new UntypedFormControl();
|
|
223
|
-
this.data = [];
|
|
224
|
-
this.opened = false;
|
|
225
|
-
this.loading = false;
|
|
226
|
-
this.error = false;
|
|
227
|
-
this.openPopUpOnTab = false;
|
|
228
|
-
// tslint:disable-next-line
|
|
229
|
-
this.selections = new Map();
|
|
230
223
|
this.httpStreamTrigger = new Subject();
|
|
231
|
-
|
|
232
|
-
this.
|
|
233
|
-
this.
|
|
234
|
-
this.
|
|
235
|
-
this.
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
if (this.multi && !this.uniqueKey) {
|
|
244
|
-
throw new Error("[uniqueKey] required in multi mode.");
|
|
245
|
-
}
|
|
246
|
-
if (this.disabled) {
|
|
247
|
-
this.searchInput.disable();
|
|
248
|
-
}
|
|
249
|
-
const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime), distinctUntilChanged());
|
|
250
|
-
this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)
|
|
251
|
-
.subscribe(res => {
|
|
252
|
-
this._ngZone.run(() => {
|
|
253
|
-
res = res?.trim() ?? '';
|
|
254
|
-
if (res?.length < this.minInputLength || !res?.length) {
|
|
224
|
+
// === Signals ===
|
|
225
|
+
this.opened = signal(false);
|
|
226
|
+
this.loading = signal(false);
|
|
227
|
+
this.error = signal(false);
|
|
228
|
+
this.openPopUpOnTab = signal(false);
|
|
229
|
+
this.data = signal([]);
|
|
230
|
+
// === Effect to handle search ===
|
|
231
|
+
this.searchEffect = effect(() => {
|
|
232
|
+
// Merge form control changes and manual triggers
|
|
233
|
+
merge(this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime()), distinctUntilChanged()), this.httpStreamTrigger).subscribe((query) => {
|
|
234
|
+
const q = query?.trim() ?? '';
|
|
235
|
+
if (!q || q.length < this.minInputLength()) {
|
|
255
236
|
this.closeDropdown();
|
|
256
237
|
return;
|
|
257
238
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
this.httpStream(res).subscribe(list => {
|
|
264
|
-
this.loading = false;
|
|
265
|
-
this.data = list;
|
|
266
|
-
if (!this.overlayRef?.hasAttached() && list.length > 0) {
|
|
267
|
-
this.openDropdown(this.dd, this.origin.nativeElement);
|
|
268
|
-
}
|
|
269
|
-
}, error => {
|
|
270
|
-
this.loading = false;
|
|
271
|
-
this.error = true;
|
|
272
|
-
});
|
|
239
|
+
this.loading.set(true);
|
|
240
|
+
this.error.set(false);
|
|
241
|
+
// Open overlay if not yet open
|
|
242
|
+
if (!this.overlayRef?.hasAttached()) {
|
|
243
|
+
this.openDropdown(this.dd, this.origin.nativeElement);
|
|
273
244
|
}
|
|
245
|
+
// Call HTTP stream
|
|
246
|
+
this.httpStream()(q).subscribe({
|
|
247
|
+
next: (list) => {
|
|
248
|
+
this.loading.set(false);
|
|
249
|
+
this.data.set(list);
|
|
250
|
+
},
|
|
251
|
+
error: () => {
|
|
252
|
+
this.loading.set(false);
|
|
253
|
+
this.error.set(true);
|
|
254
|
+
},
|
|
255
|
+
});
|
|
274
256
|
});
|
|
275
257
|
});
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
}
|
|
279
|
-
this.controlSubscription = this.control?.valueChanges.subscribe(this.handleControlChanges);
|
|
258
|
+
this.handleControlChanges = (values) => {
|
|
259
|
+
values.forEach((el) => this.selectData(el, true));
|
|
260
|
+
};
|
|
280
261
|
}
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
this.
|
|
262
|
+
// === Lifecycle ===
|
|
263
|
+
ngOnInit() {
|
|
264
|
+
if (this.multi() && !this.uniqueKey()) {
|
|
265
|
+
throw new Error('[uniqueKey] required in multi mode.');
|
|
266
|
+
}
|
|
267
|
+
if (this.disabled())
|
|
268
|
+
this.searchInput.disable();
|
|
269
|
+
if (this.control()?.value) {
|
|
270
|
+
this.handleControlChanges(this.control().value);
|
|
271
|
+
}
|
|
272
|
+
this.control()?.valueChanges.subscribe(this.handleControlChanges);
|
|
284
273
|
}
|
|
285
|
-
ngOnChanges(
|
|
286
|
-
if (
|
|
287
|
-
this.searchInput.patchValue(
|
|
274
|
+
ngOnChanges() {
|
|
275
|
+
if (this.searchValue()) {
|
|
276
|
+
this.searchInput.patchValue(this.searchValue());
|
|
288
277
|
}
|
|
289
|
-
if (
|
|
278
|
+
if (this.disabled()) {
|
|
279
|
+
this.searchInput.disable();
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
290
282
|
this.searchInput.enable();
|
|
291
|
-
if (this.disabled) {
|
|
292
|
-
this.searchInput.disable();
|
|
293
|
-
}
|
|
294
283
|
}
|
|
295
284
|
}
|
|
296
285
|
ngOnDestroy() {
|
|
297
|
-
this.
|
|
298
|
-
|
|
286
|
+
this.overlayRef?.dispose();
|
|
287
|
+
}
|
|
288
|
+
// === Methods ===
|
|
289
|
+
refreshHttpStream(query) {
|
|
290
|
+
this.httpStreamTrigger.next(query);
|
|
299
291
|
}
|
|
300
292
|
openDropdown(template, origin) {
|
|
301
293
|
const positionsBottom = [
|
|
302
|
-
new ConnectionPositionPair({ originX:
|
|
303
|
-
new ConnectionPositionPair({ originX:
|
|
294
|
+
new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 4),
|
|
295
|
+
new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }, 0, 4),
|
|
304
296
|
];
|
|
305
297
|
const positionsTop = [
|
|
306
|
-
new ConnectionPositionPair({ originX:
|
|
307
|
-
new ConnectionPositionPair({ originX:
|
|
298
|
+
new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, -4),
|
|
299
|
+
new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }, 0, -4),
|
|
308
300
|
];
|
|
309
301
|
const positionStrategy = this.overlay
|
|
310
302
|
.position()
|
|
311
303
|
.flexibleConnectedTo(origin)
|
|
312
304
|
.withPositions([
|
|
313
|
-
...(this.dropdownListPosition ===
|
|
314
|
-
...(this.dropdownListPosition ===
|
|
305
|
+
...(this.dropdownListPosition() === 'Right' ? positionsBottom.reverse() : positionsBottom),
|
|
306
|
+
...(this.dropdownListPosition() === 'Right' ? positionsTop.reverse() : positionsTop),
|
|
315
307
|
])
|
|
316
308
|
.withPush(true);
|
|
317
309
|
const configs = new OverlayConfig({
|
|
318
310
|
hasBackdrop: true,
|
|
319
|
-
backdropClass:
|
|
311
|
+
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
320
312
|
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
321
313
|
positionStrategy,
|
|
322
|
-
width: origin.clientWidth
|
|
314
|
+
width: origin.clientWidth,
|
|
323
315
|
});
|
|
324
316
|
this.overlayRef = this.overlay.create(configs);
|
|
325
|
-
if (this.dropdownListWidth)
|
|
326
|
-
this.overlayRef.updateSize({ width: this.dropdownListWidth });
|
|
317
|
+
if (this.dropdownListWidth())
|
|
318
|
+
this.overlayRef.updateSize({ width: this.dropdownListWidth() });
|
|
327
319
|
this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));
|
|
328
|
-
this.overlayRef.backdropClick().subscribe(
|
|
329
|
-
this.closeDropdown();
|
|
330
|
-
});
|
|
320
|
+
this.overlayRef.backdropClick().subscribe(() => this.closeDropdown());
|
|
331
321
|
}
|
|
332
|
-
/**
|
|
333
|
-
* closes the dropdown
|
|
334
|
-
*/
|
|
335
322
|
closeDropdown() {
|
|
336
|
-
this.opened
|
|
337
|
-
this.openPopUpOnTab
|
|
323
|
+
this.opened.set(false);
|
|
324
|
+
this.openPopUpOnTab.set(false);
|
|
338
325
|
this.overlayRef?.detach();
|
|
339
|
-
this.data
|
|
326
|
+
this.data.set([]);
|
|
340
327
|
}
|
|
341
328
|
enablePopUpOnTab() {
|
|
342
|
-
this.openPopUpOnTab
|
|
329
|
+
this.openPopUpOnTab.set(true);
|
|
343
330
|
}
|
|
344
331
|
handleKeyDown(event) {
|
|
345
332
|
if (event.key === 'Escape') {
|
|
346
|
-
this.searchInput.
|
|
333
|
+
this.searchInput.reset();
|
|
347
334
|
this.closeDropdown();
|
|
348
335
|
}
|
|
349
336
|
}
|
|
350
|
-
/**
|
|
351
|
-
*
|
|
352
|
-
* @param item item to select
|
|
353
|
-
* if item property disabled is set to true, selection will be disabled
|
|
354
|
-
* @param effectedFromOutside set to true if calling from parent component, if true will focus on search input
|
|
355
|
-
*/
|
|
356
337
|
selectData(item, effectedFromOutside = true) {
|
|
357
|
-
if (item.disabled)
|
|
338
|
+
if (item.disabled)
|
|
358
339
|
return;
|
|
359
|
-
}
|
|
360
340
|
this.itemSelected.emit(item);
|
|
361
|
-
if (!this.multi) {
|
|
362
|
-
this.searchInput.patchValue(item[this.displayKey], { emitEvent: false });
|
|
341
|
+
if (!this.multi()) {
|
|
342
|
+
this.searchInput.patchValue(item[this.displayKey()], { emitEvent: false });
|
|
363
343
|
this.setControlValue(item);
|
|
364
344
|
}
|
|
365
345
|
else {
|
|
366
|
-
if (!this.selections.has(item[this.uniqueKey])) {
|
|
367
|
-
this.selections.set(item[this.uniqueKey], item);
|
|
346
|
+
if (!this.selections().has(item[this.uniqueKey()])) {
|
|
347
|
+
this.selections().set(item[this.uniqueKey()], item);
|
|
368
348
|
}
|
|
369
349
|
this.setControlValue(this.selectedItems);
|
|
370
350
|
if (!effectedFromOutside) {
|
|
371
351
|
setTimeout(() => {
|
|
372
|
-
this.
|
|
373
|
-
this.
|
|
352
|
+
this.inputRef.nativeElement.focus();
|
|
353
|
+
this.inputRef.nativeElement.scrollIntoView();
|
|
374
354
|
}, 10);
|
|
375
355
|
}
|
|
376
|
-
this.searchInput.patchValue(
|
|
377
|
-
this.data
|
|
356
|
+
this.searchInput.patchValue('');
|
|
357
|
+
this.data.set([]);
|
|
378
358
|
}
|
|
379
359
|
this.closeDropdown();
|
|
380
360
|
}
|
|
381
|
-
/**
|
|
382
|
-
*
|
|
383
|
-
* @param item remove item from selected list
|
|
384
|
-
*/
|
|
385
361
|
removeItem(item) {
|
|
386
362
|
this.itemRemoved.emit(item);
|
|
387
|
-
this.selections.delete(item[this.uniqueKey]);
|
|
363
|
+
this.selections().delete(item[this.uniqueKey()]);
|
|
388
364
|
this.setControlValue(this.selectedItems);
|
|
389
|
-
|
|
390
|
-
this.input["nativeElement"].focus();
|
|
365
|
+
this.inputRef.nativeElement.focus();
|
|
391
366
|
}
|
|
392
367
|
setControlValue(value) {
|
|
393
368
|
this.onSelect.emit(value);
|
|
394
|
-
this.control?.patchValue(value, { emitEvent: false });
|
|
369
|
+
this.control()?.patchValue(value, { emitEvent: false });
|
|
395
370
|
}
|
|
396
|
-
/**
|
|
397
|
-
* @returns list of selected items
|
|
398
|
-
*/
|
|
399
371
|
get selectedItems() {
|
|
400
|
-
return Array.from(this.selections.values());
|
|
372
|
+
return Array.from(this.selections().values());
|
|
401
373
|
}
|
|
402
374
|
removeInputValue() {
|
|
403
375
|
this.searchInput.reset();
|
|
404
|
-
this.data
|
|
376
|
+
this.data.set([]);
|
|
405
377
|
this.clear.emit(true);
|
|
406
378
|
}
|
|
407
379
|
defaultCall() {
|
|
408
|
-
if (this.minInputLength === -1) {
|
|
409
|
-
this.loading
|
|
410
|
-
this.
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
this.
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
380
|
+
if (this.minInputLength() === -1) {
|
|
381
|
+
this.loading.set(true);
|
|
382
|
+
this.httpStream()(this.searchInput.value || '').subscribe({
|
|
383
|
+
next: (list) => {
|
|
384
|
+
this.loading.set(false);
|
|
385
|
+
this.data.set(list);
|
|
386
|
+
if (!this.overlayRef?.hasAttached() && list.length > 0) {
|
|
387
|
+
this.openDropdown(this.dd, this.origin.nativeElement);
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
error: () => {
|
|
391
|
+
this.loading.set(false);
|
|
392
|
+
this.error.set(true);
|
|
393
|
+
},
|
|
419
394
|
});
|
|
420
395
|
}
|
|
421
396
|
}
|
|
422
|
-
static { this.ɵfac = function AsyncDropdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AsyncDropdownComponent)(i0.ɵɵdirectiveInject(i1.Overlay), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.NgZone)); }; }
|
|
397
|
+
static { this.ɵfac = function AsyncDropdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AsyncDropdownComponent)(i0.ɵɵdirectiveInject(i1.Overlay), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Injector)); }; }
|
|
423
398
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AsyncDropdownComponent, selectors: [["mis-async-search-dropdown"]], contentQueries: function AsyncDropdownComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
424
399
|
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
425
400
|
i0.ɵɵcontentQuery(dirIndex, _c1, 5);
|
|
@@ -434,103 +409,58 @@ export class AsyncDropdownComponent {
|
|
|
434
409
|
} if (rf & 2) {
|
|
435
410
|
let _t;
|
|
436
411
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.origin = _t.first);
|
|
437
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
|
412
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputRef = _t.first);
|
|
438
413
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dd = _t.first);
|
|
439
414
|
} }, hostBindings: function AsyncDropdownComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
440
415
|
i0.ɵɵlistener("keydown", function AsyncDropdownComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); }, false, i0.ɵɵresolveDocument);
|
|
441
|
-
} }, inputs: { height: "height", width: "width", size: "size", httpStream: "httpStream", displayKey: "displayKey", secondaryDisplayKey: "secondaryDisplayKey", placeholder: "placeholder", debounceTime: "debounceTime", minInputLength: "minInputLength", multi: "multi", uniqueKey: "uniqueKey", control: "control", disabled: "disabled", readonly: "readonly", disableCopyPaste: "disableCopyPaste", dropdownListWidth: "dropdownListWidth", dropdownListPosition: "dropdownListPosition", customPlaceholderIcon: "customPlaceholderIcon", selections: "selections", searchValue: "searchValue" }, outputs: { onSelect: "onSelect", searchQueryChange: "searchQueryChange", clear: "clear", itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, features: [i0.ɵɵNgOnChangesFeature], decls:
|
|
442
|
-
i0.ɵɵ
|
|
443
|
-
i0.ɵɵ
|
|
444
|
-
i0.ɵɵ
|
|
445
|
-
i0.ɵɵ
|
|
416
|
+
} }, inputs: { height: [1, "height"], width: [1, "width"], size: [1, "size"], httpStream: [1, "httpStream"], displayKey: [1, "displayKey"], secondaryDisplayKey: [1, "secondaryDisplayKey"], placeholder: [1, "placeholder"], debounceTime: [1, "debounceTime"], minInputLength: [1, "minInputLength"], multi: [1, "multi"], uniqueKey: [1, "uniqueKey"], control: [1, "control"], disabled: [1, "disabled"], readonly: [1, "readonly"], disableCopyPaste: [1, "disableCopyPaste"], dropdownListWidth: [1, "dropdownListWidth"], dropdownListPosition: [1, "dropdownListPosition"], customPlaceholderIcon: [1, "customPlaceholderIcon"], selections: [1, "selections"], searchValue: [1, "searchValue"] }, outputs: { onSelect: "onSelect", searchQueryChange: "searchQueryChange", clear: "clear", itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, features: [i0.ɵɵNgOnChangesFeature], decls: 12, vars: 21, consts: [["ddBtn", ""], ["defaultSearchIcon", ""], ["input", ""], ["dd", ""], ["defaultLoader", ""], ["standardItem", ""], [1, "dd-wrapper", 3, "ngClass"], ["class", "selected-list", 4, "ngIf"], [1, "search-input"], ["class", "custom-icon", 4, "ngIf", "ngIfElse"], ["type", "text", 1, "black-text", "h6", 3, "focus", "keyup.enter", "ngClass", "placeholder", "formControl"], ["class", "icon-ic-navigation-cancel-24 croos-icon", "tabindex", "0", 3, "click", "keyup.enter", 4, "ngIf"], [1, "selected-list"], ["class", "chip", 3, "ngClass", 4, "ngFor", "ngForOf"], [1, "chip", 3, "ngClass"], [2, "margin-right", "4px", 3, "ngClass"], ["tabindex", "0", 1, "icon-ic-navigation-cancel-24", 3, "click", "keyup.enter", "ngStyle"], [1, "custom-icon"], ["alt", "customIcon", 3, "src"], [1, "icon-ic-action-search-24"], ["tabindex", "0", 1, "icon-ic-navigation-cancel-24", "croos-icon", 3, "click", "keyup.enter"], ["tabindex", "0", "cdkTrapFocus", "", 1, "dd-list", 3, "ngStyle", "ngClass", "cdkTrapFocusAutoCapture"], [4, "ngIf"], [3, "ngTemplateOutlet", 4, "ngIf", "ngIfElse"], [3, "ngTemplateOutlet"], ["class", "status-container", 4, "ngIf"], [1, "status-container"], [3, "mobileView"], [4, "ngFor", "ngForOf"], [3, "click", "keyup.enter"], ["tabindex", "-1", "cdkFocusInitial", ""], [4, "ngIf", "ngIfElse"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "item", 3, "click", "keyup.enter", "tabindex"], [1, "value"], [1, "primary"], [1, "secondary"], [1, "data-not-found"]], template: function AsyncDropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
417
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
418
|
+
i0.ɵɵelementStart(0, "div", 6, 0);
|
|
419
|
+
i0.ɵɵtemplate(2, AsyncDropdownComponent_div_2_Template, 2, 1, "div", 7);
|
|
420
|
+
i0.ɵɵelementStart(3, "div", 8);
|
|
421
|
+
i0.ɵɵtemplate(4, AsyncDropdownComponent_div_4_Template, 2, 1, "div", 9)(5, AsyncDropdownComponent_ng_template_5_Template, 1, 0, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
422
|
+
i0.ɵɵelementStart(7, "input", 10, 2);
|
|
423
|
+
i0.ɵɵlistener("focus", function AsyncDropdownComponent_Template_input_focus_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.defaultCall()); })("keyup.enter", function AsyncDropdownComponent_Template_input_keyup_enter_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.enablePopUpOnTab()); });
|
|
424
|
+
i0.ɵɵelementEnd();
|
|
425
|
+
i0.ɵɵtemplate(9, AsyncDropdownComponent_div_9_Template, 1, 0, "div", 11);
|
|
446
426
|
i0.ɵɵelementEnd()();
|
|
447
|
-
i0.ɵɵtemplate(
|
|
427
|
+
i0.ɵɵtemplate(10, AsyncDropdownComponent_ng_template_10_Template, 5, 12, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
|
448
428
|
} if (rf & 2) {
|
|
449
|
-
const
|
|
450
|
-
|
|
451
|
-
i0.ɵɵ
|
|
452
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(9, _c5, ctx.opened, ctx.disabled, ctx.readonly));
|
|
429
|
+
const defaultSearchIcon_r11 = i0.ɵɵreference(6);
|
|
430
|
+
i0.ɵɵstyleProp("width", ctx.width());
|
|
431
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(14, _c5, ctx.opened(), ctx.disabled(), ctx.readonly()));
|
|
453
432
|
i0.ɵɵadvance(2);
|
|
454
|
-
i0.ɵɵproperty("ngIf", ctx.multi && ctx.
|
|
433
|
+
i0.ɵɵproperty("ngIf", ctx.multi() && ctx.selectedItems.length > 0);
|
|
455
434
|
i0.ɵɵadvance(2);
|
|
456
|
-
i0.ɵɵproperty("ngIf", ctx.customPlaceholderIcon)("ngIfElse",
|
|
435
|
+
i0.ɵɵproperty("ngIf", ctx.customPlaceholderIcon())("ngIfElse", defaultSearchIcon_r11);
|
|
457
436
|
i0.ɵɵadvance(3);
|
|
458
|
-
i0.ɵɵproperty("
|
|
459
|
-
i0.ɵɵ
|
|
460
|
-
i0.ɵɵ
|
|
437
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(18, _c6, ctx.size() === "md", ctx.size() === "sm"))("placeholder", ctx.placeholder())("formControl", ctx.searchInput);
|
|
438
|
+
i0.ɵɵattribute("tabindex", 0)("oncopy", ctx.disableCopyPaste() ? "return false;" : null)("onpaste", ctx.disableCopyPaste() ? "return false;" : null)("oncut", ctx.disableCopyPaste() ? "return false;" : null);
|
|
439
|
+
i0.ɵɵadvance(2);
|
|
440
|
+
i0.ɵɵproperty("ngIf", ctx.searchInput.value == null ? null : ctx.searchInput.value.length);
|
|
461
441
|
} }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, i2.NgStyle, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, i4.LoaderComponent, i5.CdkTrapFocus], styles: [".dd-wrapper[_ngcontent-%COMP%]{background:#fff;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:4px;display:block;cursor:pointer;outline:none}.dd-wrapper.opened[_ngcontent-%COMP%], .dd-wrapper[_ngcontent-%COMP%]:hover{background:#f5f5f5}.dd-wrapper[_ngcontent-%COMP%] .selected-list[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;flex-wrap:wrap;gap:4px;padding:8px 16px}.dd-wrapper[_ngcontent-%COMP%]:focus-within{border-color:#0937b2;background:#f5f5f5}.dd-wrapper.disabled[_ngcontent-%COMP%], .dd-wrapper.readonly[_ngcontent-%COMP%]{pointer-events:none}.search-input[_ngcontent-%COMP%]{position:relative;border-radius:8px}.search-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{box-sizing:border-box;outline:none;padding-left:40px;padding-right:24px;background-color:transparent;color:#181f33;border-radius:inherit;border:1px solid transparent;width:100%}.search-input[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .search-input[_ngcontent-%COMP%] .custom-icon[_ngcontent-%COMP%]{position:absolute;top:50%;transform:translateY(-50%);font-size:24px;line-height:24px;height:24px;left:8px}.search-input[_ngcontent-%COMP%] .croos-icon[_ngcontent-%COMP%]{position:absolute;top:50%;transform:translateY(-50%);font-size:16px;width:24px;line-height:16px;height:16px;right:0}.dd-list[_ngcontent-%COMP%]{padding:8px 0;max-height:200px;background:#fff;box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:8px;min-width:100%;overflow-y:auto}.dd-list[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;border-radius:4px}.dd-list[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#fff;border-radius:4px}.dd-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#929dab;border-radius:4px}.dd-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#929dab}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{padding:8px 16px;cursor:pointer}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .disabled[_ngcontent-%COMP%]{color:#6a737d!important;pointer-events:none}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] .primary[_ngcontent-%COMP%], .dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] .secondary[_ngcontent-%COMP%]{font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .reason[_ngcontent-%COMP%]{font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]:hover:not(.disabled){background:#f5f7fc}.dd-list[_ngcontent-%COMP%] .data-not-found[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;font-size:16px;padding:8px}.dd-list-pd[_ngcontent-%COMP%]{padding:unset}.chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;background:#e0e0e0;overflow-wrap:anywhere;cursor:default}.chip[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#181f33}.chip-md[_ngcontent-%COMP%]{border-radius:16px;padding:4px 12px}.chip-sm[_ngcontent-%COMP%]{border-radius:6px;padding:4px 8px;text-transform:uppercase}.ip-md[_ngcontent-%COMP%]{padding-top:8px;padding-bottom:8px}.ip-sm[_ngcontent-%COMP%]{padding-top:3px;padding-bottom:3px}.status-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;height:128px}.status-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{text-align:center} #spinner{position:relative!important}"] }); }
|
|
462
442
|
}
|
|
463
443
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AsyncDropdownComponent, [{
|
|
464
444
|
type: Component,
|
|
465
|
-
args: [{ selector:
|
|
466
|
-
}], () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }], {
|
|
467
|
-
type: Input
|
|
468
|
-
}], width: [{
|
|
469
|
-
type: Input
|
|
470
|
-
}], size: [{
|
|
471
|
-
type: Input
|
|
472
|
-
}], httpStream: [{
|
|
473
|
-
type: Input
|
|
474
|
-
}], displayKey: [{
|
|
475
|
-
type: Input
|
|
476
|
-
}], secondaryDisplayKey: [{
|
|
477
|
-
type: Input
|
|
478
|
-
}], placeholder: [{
|
|
479
|
-
type: Input
|
|
480
|
-
}], debounceTime: [{
|
|
481
|
-
type: Input
|
|
482
|
-
}], minInputLength: [{
|
|
483
|
-
type: Input
|
|
484
|
-
}], multi: [{
|
|
485
|
-
type: Input
|
|
486
|
-
}], uniqueKey: [{
|
|
487
|
-
type: Input
|
|
488
|
-
}], control: [{
|
|
489
|
-
type: Input
|
|
490
|
-
}], disabled: [{
|
|
491
|
-
type: Input
|
|
492
|
-
}], readonly: [{
|
|
493
|
-
type: Input
|
|
494
|
-
}], disableCopyPaste: [{
|
|
495
|
-
type: Input
|
|
496
|
-
}], dropdownListWidth: [{
|
|
497
|
-
type: Input
|
|
498
|
-
}], dropdownListPosition: [{
|
|
499
|
-
type: Input
|
|
500
|
-
}], customPlaceholderIcon: [{
|
|
501
|
-
type: Input
|
|
502
|
-
}], origin: [{
|
|
445
|
+
args: [{ selector: 'mis-async-search-dropdown', template: "<div class=\"dd-wrapper\"\n [ngClass]=\"{ opened: opened(), disabled: disabled(), readonly: readonly() }\"\n [style.width]=\"width()\"\n #ddBtn>\n \n <!-- Selected chips for multi-select -->\n <div class=\"selected-list\" *ngIf=\"multi() && selectedItems.length > 0\">\n <div class=\"chip\"\n [ngClass]=\"{ 'chip-md': size() === 'md', 'chip-sm': size() === 'sm' }\"\n *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{ 'h6': size() === 'md', 'h8-b': size() === 'sm' }\"\n style=\"margin-right: 4px;\">\n {{ item[displayKey()] }}\n </span>\n <span class=\"icon-ic-navigation-cancel-24\"\n [ngStyle]=\"{ cursor: 'pointer', 'font-size': size() === 'sm' ? '12px' : '14px' }\"\n tabindex=\"0\"\n (click)=\"removeItem(item)\"\n (keyup.enter)=\"removeItem(item)\">\n </span>\n </div>\n </div>\n\n <!-- Search input -->\n <div class=\"search-input\">\n <!-- Placeholder icon -->\n <div *ngIf=\"customPlaceholderIcon(); else defaultSearchIcon\" class=\"custom-icon\">\n <img [src]=\"customPlaceholderIcon()\" alt=\"customIcon\" />\n </div>\n <ng-template #defaultSearchIcon>\n <span class=\"icon-ic-action-search-24\"></span>\n </ng-template>\n\n <!-- Input field -->\n <input [ngClass]=\"{ 'ip-md': size() === 'md', 'ip-sm': size() === 'sm' }\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"searchInput\"\n [attr.tabindex]=\"0\"\n type=\"text\"\n class=\"black-text h6\"\n #input\n (focus)=\"defaultCall()\"\n (keyup.enter)=\"enablePopUpOnTab()\"\n [attr.oncopy]=\"disableCopyPaste() ? 'return false;' : null\"\n [attr.onpaste]=\"disableCopyPaste() ? 'return false;' : null\"\n [attr.oncut]=\"disableCopyPaste() ? 'return false;' : null\"/>\n\n <!-- Clear input -->\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\"\n *ngIf=\"searchInput.value?.length\"\n tabindex=\"0\"\n (click)=\"removeInputValue()\"\n (keyup.enter)=\"removeInputValue()\">\n </div>\n </div>\n</div>\n\n<!-- Dropdown template -->\n<ng-template #dd>\n <div class=\"dd-list\"\n [ngStyle]=\"{ 'max-height': height(), 'width': dropdownListWidth() }\"\n [ngClass]=\"{ 'dd-list-pd': data().length === 0 }\"\n tabindex=\"0\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"openPopUpOnTab()\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"loading()\">\n <ng-container *ngIf=\"customLoader; else defaultLoader\" [ngTemplateOutlet]=\"customLoader\"></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading() && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Error -->\n <ng-container *ngIf=\"error()\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br/> Please try again later.</p>\n </div>\n </ng-container>\n\n <!-- Data list -->\n <div *ngIf=\"!loading() && !error() && data().length > 0\">\n <ng-container *ngFor=\"let item of data()\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n\n <!-- Custom item -->\n <ng-container *ngIf=\"customItem; else standardItem\">\n <ng-container [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-container>\n\n <!-- Standard item -->\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"item\"\n [tabindex]=\"openPopUpOnTab() ? 0 : -1\"\n (click)=\"selectData(item, false)\"\n (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">{{ item[displayKey()] }}</div>\n <div class=\"secondary\">{{ item[secondaryDisplayKey()] }}</div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <!-- No data -->\n <div *ngIf=\"!loading() && !error() && data().length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n", styles: [".dd-wrapper{background:#fff;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:4px;display:block;cursor:pointer;outline:none}.dd-wrapper.opened,.dd-wrapper:hover{background:#f5f5f5}.dd-wrapper .selected-list{display:flex;justify-content:flex-start;flex-wrap:wrap;gap:4px;padding:8px 16px}.dd-wrapper:focus-within{border-color:#0937b2;background:#f5f5f5}.dd-wrapper.disabled,.dd-wrapper.readonly{pointer-events:none}.search-input{position:relative;border-radius:8px}.search-input input{box-sizing:border-box;outline:none;padding-left:40px;padding-right:24px;background-color:transparent;color:#181f33;border-radius:inherit;border:1px solid transparent;width:100%}.search-input span,.search-input .custom-icon{position:absolute;top:50%;transform:translateY(-50%);font-size:24px;line-height:24px;height:24px;left:8px}.search-input .croos-icon{position:absolute;top:50%;transform:translateY(-50%);font-size:16px;width:24px;line-height:16px;height:16px;right:0}.dd-list{padding:8px 0;max-height:200px;background:#fff;box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:8px;min-width:100%;overflow-y:auto}.dd-list::-webkit-scrollbar{width:8px;border-radius:4px}.dd-list::-webkit-scrollbar-track{background:#fff;border-radius:4px}.dd-list::-webkit-scrollbar-thumb{background:#929dab;border-radius:4px}.dd-list::-webkit-scrollbar-thumb:hover{background:#929dab}.dd-list .item{padding:8px 16px;cursor:pointer}.dd-list .item .disabled{color:#6a737d!important;pointer-events:none}.dd-list .item .value{display:flex;justify-content:space-between;align-items:center}.dd-list .item .value .primary,.dd-list .item .value .secondary{font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.dd-list .item .reason{font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d}.dd-list .item:hover:not(.disabled){background:#f5f7fc}.dd-list .data-not-found{display:flex;justify-content:center;align-items:center;font-size:16px;padding:8px}.dd-list-pd{padding:unset}.chip{display:inline-flex;align-items:center;background:#e0e0e0;overflow-wrap:anywhere;cursor:default}.chip span{color:#181f33}.chip-md{border-radius:16px;padding:4px 12px}.chip-sm{border-radius:6px;padding:4px 8px;text-transform:uppercase}.ip-md{padding-top:8px;padding-bottom:8px}.ip-sm{padding-top:3px;padding-bottom:3px}.status-container{display:flex;justify-content:center;align-items:center;height:128px}.status-container p{text-align:center}::ng-deep #spinner{position:relative!important}\n"] }]
|
|
446
|
+
}], () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.Injector }], { origin: [{
|
|
503
447
|
type: ViewChild,
|
|
504
|
-
args: [
|
|
505
|
-
}],
|
|
448
|
+
args: ['ddBtn', { static: false }]
|
|
449
|
+
}], inputRef: [{
|
|
506
450
|
type: ViewChild,
|
|
507
|
-
args: [
|
|
451
|
+
args: ['input', { static: false }]
|
|
508
452
|
}], dd: [{
|
|
509
453
|
type: ViewChild,
|
|
510
|
-
args: [
|
|
454
|
+
args: ['dd', { static: false }]
|
|
511
455
|
}], customItem: [{
|
|
512
456
|
type: ContentChild,
|
|
513
|
-
args: [
|
|
457
|
+
args: ['misCustomItem', { static: false }]
|
|
514
458
|
}], customLoader: [{
|
|
515
459
|
type: ContentChild,
|
|
516
|
-
args: [
|
|
517
|
-
}], onSelect: [{
|
|
518
|
-
type: Output
|
|
519
|
-
}], selections: [{
|
|
520
|
-
type: Input
|
|
521
|
-
}], searchValue: [{
|
|
522
|
-
type: Input
|
|
523
|
-
}], searchQueryChange: [{
|
|
524
|
-
type: Output
|
|
525
|
-
}], clear: [{
|
|
526
|
-
type: Output
|
|
527
|
-
}], itemSelected: [{
|
|
528
|
-
type: Output
|
|
529
|
-
}], itemRemoved: [{
|
|
530
|
-
type: Output
|
|
460
|
+
args: ['asyncCustomLoader', { static: false }]
|
|
531
461
|
}], handleKeyDown: [{
|
|
532
462
|
type: HostListener,
|
|
533
463
|
args: ['document:keydown', ['$event']]
|
|
534
464
|
}] }); })();
|
|
535
465
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AsyncDropdownComponent, { className: "AsyncDropdownComponent" }); })();
|
|
536
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFHTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ2xCbkUsQUFERiwrQkFBc0gsZUFDaEI7SUFBQSxZQUFvQjtJQUFBLGlCQUFPO0lBQy9ILGdDQUd3QztJQUgrQixBQUF4QyxpTkFBUywwQkFBZ0IsS0FBQyxnTkFBNkIsMEJBQWdCLEtBQUM7SUFJekcsQUFEMEMsaUJBQU8sRUFDM0M7Ozs7SUFOWSxnR0FBZ0U7SUFDMUUsY0FBd0Q7SUFBQyxBQUF6RCxnR0FBd0Qsd0NBQXFDO0lBQUMsY0FBb0I7SUFBcEIsZ0RBQW9CO0lBQ2hCLGNBR3RHO0lBSHNHLDZGQUd0Rzs7O0lBTk4sK0JBQWdFO0lBQzlELCtFQUFzSDtJQU94SCxpQkFBTTs7O0lBUGdHLGNBQWdCO0lBQWhCLDhDQUFnQjs7O0lBU3BILCtCQUErRTtJQUM3RSwwQkFBc0Q7SUFDeEQsaUJBQU07OztJQURDLGNBQTZCO0lBQTdCLG9FQUE2Qjs7O0lBR2xDLDJCQUE4Qzs7OztJQUVoRCxvQ0FBZ1c7SUFBcEMsQUFBeEIsbUxBQVMsb0JBQWEsS0FBQyxrTEFBZ0IseUJBQWtCLEtBQUM7SUFBOVYsaUJBQWdXOzs7SUFBeEYsQUFBNUIsQUFBdEwsaUdBQTRELG1DQUFxSixtQ0FBNEI7Ozs7SUFFalMsb0NBQStPO0lBQXJDLEFBQXhCLHlMQUFTLG9CQUFhLEtBQUMsd0xBQWdCLHlCQUFrQixLQUFDO0lBQTVPLGlCQUErTzs7O0lBQXpGLEFBQTVCLEFBQW5ILGlHQUE0RCxtQ0FBa0YsbUNBQTRCOzs7O0lBRW5MLCtCQUFxSztJQUFuQyxBQUE3QixnTEFBUyx5QkFBa0IsS0FBQywrS0FBZ0IseUJBQWtCLEtBQUM7SUFBQyxpQkFBTTs7O0lBT3pLLDRCQUdnQjs7O0lBRGQsc0RBQWlDOzs7SUFHakMsK0JBQStEO0lBQzdELGlDQUE2QztJQUMvQyxpQkFBTTs7SUFEUSxjQUFtQjtJQUFuQixpQ0FBbUI7OztJQURqQyxvSEFBK0Q7OztJQUFoQyw2REFBOEI7OztJQU5qRSw2QkFBOEI7SUFLNUIsQUFKQSx3SEFHQyx5SUFDMkI7Ozs7O0lBSHpCLGNBQW9CO0lBQUEsQUFBcEIsMENBQW9CLDhCQUFrQjs7O0lBUzNDLDZCQUE0QjtJQUV4QixBQURGLCtCQUE4QixRQUN6QjtJQUFBLDRDQUE0QjtJQUFBLHFCQUFJO0lBQUMsd0NBQXVCO0lBQzdELEFBRDZELGlCQUFJLEVBQzNEOzs7O0lBTUYsK0JBR0Q7SUFDQyw0QkFHZ0I7SUFDbEIsaUJBQU07Ozs7SUFQSix5REFBb0M7SUFJbEMsY0FBK0I7SUFDL0IsQUFEQSxvREFBK0IsaUVBQ2dCOzs7O0lBSS9DLDBCQUF5QztJQUN6QywrQkFBaUk7SUFBeEMsQUFBdkUsMlFBQVMsMkJBQWlCLEtBQUssQ0FBQyxLQUFDLDBRQUFxRCwyQkFBaUIsS0FBSyxDQUFDLEtBQUM7SUFFNUgsQUFERiwrQkFBbUIsY0FDSTtJQUNuQixZQUNGO0lBQUEsaUJBQU07SUFDTiwrQkFBdUI7SUFDckIsWUFDRjtJQUVKLEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7Ozs7SUFUOEMsY0FBb0M7SUFBcEMseURBQW9DO0lBR2xGLGVBQ0Y7SUFERSwyREFDRjtJQUVFLGVBQ0Y7SUFERSxvRUFDRjs7OztJQXJCViw2QkFBd0M7SUFDdEMsK0JBQStFO0lBQXhDLEFBQWxDLHdPQUFTLDJCQUFpQixLQUFLLENBQUMsS0FBQyx1T0FBZ0IsMkJBQWlCLEtBQUssQ0FBQyxLQUFDO0lBQzVFLDBCQUF5QztJQVV6QyxBQVRBLDRHQUdELCtJQU00QjtJQWE3QixpQkFBTTs7Ozs7SUFwQkgsZUFBa0I7SUFBQSxBQUFsQix3Q0FBa0IsOEJBQWlCOzs7SUFOMUMsMkJBQW1EO0lBQ2pELCtHQUF3QztJQTJCMUMsaUJBQU07OztJQTNCMkIsY0FBTztJQUFQLHFDQUFPOzs7SUE2QnRDLEFBREYsMkJBQTBFLGNBQzVDO0lBQUEsaUNBQWlCO0lBQ2pELEFBRGlELGlCQUFNLEVBQ2pEOzs7SUFoRE4sK0JBQXNNO0lBOENwTSxBQTdCQSxBQUxBLEFBWEEseUdBQThCLDRGQVdGLDBFQUt1QiwwRUE2QnVCO0lBRzVFLGlCQUFNOzs7SUFqRHFKLEFBQXZFLEFBQS9ELDhGQUE2RCxtRUFBOEMsa0RBQXFFO0lBQ3BMLGNBQWE7SUFBYixxQ0FBYTtJQVdiLGNBQVc7SUFBWCxtQ0FBVztJQUtwQixjQUEyQztJQUEzQyxpRkFBMkM7SUE2QjNDLGNBQWtFO0lBQWxFLCtHQUFrRTs7QUR6QzVFLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsT0FBZ0IsRUFBVSxnQkFBa0MsRUFBVSxPQUFlO1FBQXJGLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUdoRyxTQUFJLEdBQWdCLElBQUksQ0FBQTtRQUl4QixnQkFBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLHdCQUF3QjtRQUNoRCxpQkFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLDBDQUEwQztRQUM5RCxtQkFBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztRQUM5RCxVQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsZ0NBQWdDO1FBSy9DLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVsQyx5QkFBb0IsR0FBcUIsTUFBTSxDQUFDLENBQUMsbUJBQW1CO1FBQ3BFLDBCQUFxQixHQUFXLEVBQUUsQ0FBQyxDQUFDLDZEQUE2RDtRQVExRywyQkFBMkI7UUFDakIsYUFBUSxHQUEwQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtRQUMzRyxnQkFBVyxHQUF1QixJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDM0QsU0FBSSxHQUFnQixFQUFFLENBQUM7UUFDdkIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQywyQkFBMkI7UUFDbEIsZUFBVSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFNeEMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQTtRQUM5QyxVQUFLLEdBQTBCLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQTtRQUM1QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFvRTdDLHlCQUFvQixHQUFHLENBQUMsTUFBbUIsRUFBRSxFQUFFO1lBQ3JELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsMkJBQTJCO1FBQzdCLENBQUMsQ0FBQztJQXRIMkcsQ0FBQztJQThDOUcsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN6RCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDOUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDL0Isb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2FBQ3RFLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDcEIsR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUN0RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLE9BQU87Z0JBQ1QsQ0FBQztxQkFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDbkIsSUFBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFO3dCQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzt3QkFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQ3hELENBQUM7b0JBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQVNPLFlBQVksQ0FBQyxRQUE4QixFQUFFLE1BQW1CO1FBQ3RFLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakgsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM5RyxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUc7WUFDbkIsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xILElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMvRyxDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTzthQUNsQyxRQUFRLEVBQUU7YUFDVixtQkFBbUIsQ0FBQyxNQUFNLENBQUM7YUFDM0IsYUFBYSxDQUFDO1lBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBQ3hGLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNuRixDQUFDO2FBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ2hDLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGFBQWEsRUFBRSxrQ0FBa0M7WUFDakQsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQzFELGdCQUFnQjtZQUNoQixLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVc7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBR0QsYUFBYSxDQUFDLEtBQW9CO1FBQ2hDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFJRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxJQUFlLEVBQUUsbUJBQW1CLEdBQUcsSUFBSTtRQUNwRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDNUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxJQUFlO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6QywyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWdCO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDNUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3hELENBQUM7WUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7dUhBNVBVLHNCQUFzQjtvRUFBdEIsc0JBQXNCOzs7Ozs7Ozs7Ozs7Ozs7OztZQUF0QixxR0FBQSx5QkFBcUIsaUNBQUM7O1lDL0JuQyxpQ0FBNEg7WUFDMUgsdUVBQWdFO1lBU2hFLDhCQUEwQjtZQVd4QixBQUhBLEFBREEsQUFIQSxBQUhBLHdFQUErRSwyR0FHL0MsK0RBR2dVLDJHQUNsVSw2REFHdUk7WUFFekssQUFERSxpQkFBTSxFQUNGO1lBRU4sMkhBQWlCOzs7O1lBekI4RSxrQ0FBcUI7WUFBNUYsNEZBQXNFO1lBQ2hFLGVBQWtDO1lBQWxDLDJEQUFrQztZQVV0RCxlQUE2QjtZQUFBLEFBQTdCLGdEQUE2QixtQ0FBc0I7WUFNakQsZUFBd0I7WUFBQSxBQUF4QiwyQ0FBd0IsaUNBQW9CO1lBSUUsZUFBZ0M7WUFBaEMsMkhBQWdDOzs7aUZEVTdFLHNCQUFzQjtjQUxsQyxTQUFTOzJCQUNFLDJCQUEyQjs0RkFNNUIsTUFBTTtrQkFBZCxLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxLQUFLO2tCQUFiLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDRyxvQkFBb0I7a0JBQTVCLEtBQUs7WUFDRyxxQkFBcUI7a0JBQTdCLEtBQUs7WUFDaUMsTUFBTTtrQkFBNUMsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0UsS0FBSztrQkFBM0MsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0QsRUFBRTtrQkFBckMsU0FBUzttQkFBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBRWxDLFVBQVU7a0JBRFQsWUFBWTttQkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBR2hELFlBQVk7a0JBRFgsWUFBWTttQkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUM7WUFHekMsUUFBUTtrQkFBakIsTUFBTTtZQVFFLFVBQVU7a0JBQWxCLEtBQUs7WUFNRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0ksaUJBQWlCO2tCQUExQixNQUFNO1lBQ0csS0FBSztrQkFBZCxNQUFNO1lBQ0csWUFBWTtrQkFBckIsTUFBTTtZQUNHLFdBQVc7a0JBQXBCLE1BQU07WUEySFAsYUFBYTtrQkFEWixZQUFZO21CQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkF4S2pDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG50eXBlIElMaXN0RGF0YSA9IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1hc3luYy1zZWFyY2gtZHJvcGRvd25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQXN5bmNEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUpIHsgfVxuICBASW5wdXQoKSBoZWlnaHQ7XG4gIEBJbnB1dCgpIHdpZHRoO1xuICBASW5wdXQoKSBzaXplOiAnbWQnIHwgJ3NtJyA9ICdtZCdcbiAgQElucHV0KCkgaHR0cFN0cmVhbSE6IChzZWFyY2hLZXk6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxJTGlzdERhdGE+OyAvLyBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gaHR0cG9ic2VydmFibGVcbiAgQElucHV0KCkgZGlzcGxheUtleSE6IHN0cmluZzsgLy8gc3RyaW5nIHRvIHNob3cgdmFsdWUgaW4gbGlzdFxuICBASW5wdXQoKSBzZWNvbmRhcnlEaXNwbGF5S2V5ITogc3RyaW5nOyAvLyBzdHJpbmcgdG8gZGlzcGxheSBzZWNvbmRhcnkgdmFsdWVcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlNlbGVjdFwiOyAvLyBwbGFjZWhvbGRlciBmb3IgaW5wdXRcbiAgQElucHV0KCkgZGVib3VuY2VUaW1lID0gNDAwOyAvLyB3YWl0IHRpbWUgdGlsbCB3aGljaCBBUEkgY2FsbCBpcyBwYXVzZWRcbiAgQElucHV0KCkgbWluSW5wdXRMZW5ndGggPSAyOyAvLyBtaW4gbGVuZ3RoIGFmdGVyIHdoaWNoIEFQSSBjYWxsIGlzIG1hZGVcbiAgQElucHV0KCkgbXVsdGkgPSBmYWxzZTsgLy8gbWFpbnRhaW4gYSBsaXN0IG9yIGVtaXQgdmFsdWVcbiAgQElucHV0KCkgdW5pcXVlS2V5OiBzdHJpbmc7IC8vIGZvciBpZGVudGlmeWluZyB1bmlxdWUgdmFsdWVzXG4gIEBJbnB1dCgpIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGw7IC8vIGZvcm0gY29udHJvbCBmb3IgcmVhY3RpdmUgZm9ybXNcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47IC8vIGRpc2FibGUgYWN0aW9ucyBvbiBjb21wb25lbnRcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47IC8vIG1ha2UgY29tcG9uZW50IHJlYWRvbmx5XG4gIEBJbnB1dCgpIGRpc2FibGVDb3B5UGFzdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd25MaXN0V2lkdGg7IC8vd2lkdGggb2YgZHJvcGRvd24gbGlzdFxuICBASW5wdXQoKSBkcm9wZG93bkxpc3RQb3NpdGlvbjogXCJMZWZ0XCIgfCBcIlJpZ2h0XCIgPSBcIkxlZnRcIjsgLy9kcm9wZG93biBwb3NpdGlvblxuICBASW5wdXQoKSBjdXN0b21QbGFjZWhvbGRlckljb246IHN0cmluZyA9IFwiXCI7IC8vIGN1c3RvbSBpY29uIGZvciBwbGFjZWhvbGRlciBpbnN0ZWFkIG9mIGRlZmF1bHQgc2VhcmNoIGljb25cbiAgQFZpZXdDaGlsZChcImRkQnRuXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmlnaW46IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJkZFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZGQ6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAQ29udGVudENoaWxkKFwibWlzQ3VzdG9tSXRlbVwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSXRlbTogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIEBDb250ZW50Q2hpbGQoXCJhc3luY0N1c3RvbUxvYWRlclwiLCB7IHN0YXRpYzogZmFsc2V9KVxuICBjdXN0b21Mb2FkZXI6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgQE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8SUxpc3REYXRhIHwgSUxpc3REYXRhW10+ID0gbmV3IEV2ZW50RW1pdHRlcih0cnVlKTsgLy8gZW1pdCBzZWxlY3RlZCB2YWx1ZXNcbiAgc2VhcmNoSW5wdXQ6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgZGF0YTogSUxpc3REYXRhW10gPSBbXTtcbiAgb3BlbmVkID0gZmFsc2U7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3BlblBvcFVwT25UYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIEBJbnB1dCgpIHNlbGVjdGlvbnM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgaHR0cFN0cmVhbVRyaWdnZXIgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZGVmYXVsdENhbGxTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICBjb250cm9sU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlO1xuICBAT3V0cHV0KCkgc2VhcmNoUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKVxuICBAT3V0cHV0KCkgY2xlYXI6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoZmFsc2UpO1xuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJTGlzdERhdGE+KClcbiAgQE91dHB1dCgpIGl0ZW1SZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxJTGlzdERhdGE+KClcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGkgJiYgIXRoaXMudW5pcXVlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJbdW5pcXVlS2V5XSByZXF1aXJlZCBpbiBtdWx0aSBtb2RlLlwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaE9ic2VydmFibGUgPSB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFwKCh2YWwpID0+IHRoaXMuc2VhcmNoUXVlcnlDaGFuZ2UuZW1pdCh2YWwpKSxcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcblxuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gbWVyZ2Uoc2VhcmNoT2JzZXJ2YWJsZSwgdGhpcy5odHRwU3RyZWFtVHJpZ2dlcilcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgcmVzID0gcmVzPy50cmltKCkgPz8gJyc7XG4gICAgICAgICAgaWYgKHJlcz8ubGVuZ3RoIDwgdGhpcy5taW5JbnB1dExlbmd0aCB8fCAhcmVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzPy5sZW5ndGggPiB0aGlzLm1pbklucHV0TGVuZ3RoICYmIHRoaXMuaHR0cFN0cmVhbSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpXG4gICAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuZGQsIHRoaXMub3JpZ2luLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5odHRwU3RyZWFtKHJlcykuc3Vic2NyaWJlKGxpc3QgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhID0gbGlzdDtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgJiYgbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5kZCwgdGhpcy5vcmlnaW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgaWYgKHRoaXMuY29udHJvbD8udmFsdWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ29udHJvbENoYW5nZXModGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuaGFuZGxlQ29udHJvbENoYW5nZXMpO1xuICB9XG5cbiAgcmVmcmVzaEh0dHBTdHJlYW0ocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5odHRwU3RyZWFtVHJpZ2dlci5uZXh0KHF1ZXJ5KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzPy5zZWFyY2hWYWx1ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUoY2hhbmdlcy5zZWFyY2hWYWx1ZS5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LmVuYWJsZSgpO1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kZWZhdWx0Q2FsbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29udHJvbENoYW5nZXMgPSAodmFsdWVzOiBJTGlzdERhdGFbXSkgPT4ge1xuICAgIHZhbHVlcy5mb3JFYWNoKGVsID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0RGF0YShlbCwgdHJ1ZSk7XG4gICAgfSk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIH07XG5cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24odGVtcGxhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+LCBvcmlnaW46IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb25zQm90dG9tID0gW1xuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcInN0YXJ0XCIsIG9yaWdpblk6IFwiYm90dG9tXCIgfSwgeyBvdmVybGF5WDogXCJzdGFydFwiLCBvdmVybGF5WTogXCJ0b3BcIiB9LCAwLCA0KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LCB7IG92ZXJsYXlYOiBcImVuZFwiLCBvdmVybGF5WTogXCJ0b3BcIiB9LCAwLCA0KVxuICAgIF07XG4gICAgY29uc3QgcG9zaXRpb25zVG9wID0gW1xuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcInN0YXJ0XCIsIG9yaWdpblk6IFwidG9wXCIgfSwgeyBvdmVybGF5WDogXCJzdGFydFwiLCBvdmVybGF5WTogXCJib3R0b21cIiB9LCAwLCAtNCksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwiZW5kXCIsIG9yaWdpblk6IFwidG9wXCIgfSwgeyBvdmVybGF5WDogXCJlbmRcIiwgb3ZlcmxheVk6IFwiYm90dG9tXCIgfSwgMCwgLTQpXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8ob3JpZ2luKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbiA9PT0gXCJSaWdodFwiID8gcG9zaXRpb25zQm90dG9tLnJldmVyc2UoKSA6IHBvc2l0aW9uc0JvdHRvbSksXG4gICAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uID09PSBcIlJpZ2h0XCIgPyBwb3NpdGlvbnNUb3AucmV2ZXJzZSgpIDogcG9zaXRpb25zVG9wKVxuICAgICAgXSlcbiAgICAgIC53aXRoUHVzaCh0cnVlKTtcblxuICAgIGNvbnN0IGNvbmZpZ3MgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IFwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIixcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbi5jbGllbnRXaWR0aFxuICAgIH0pO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0V2lkdGgpIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHsgd2lkdGg6IHRoaXMuZHJvcGRvd25MaXN0V2lkdGggfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjbG9zZXMgdGhlIGRyb3Bkb3duXG4gICAqL1xuICBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuUG9wVXBPblRhYiA9IGZhbHNlO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgdGhpcy5kYXRhID0gW107XG4gIH1cblxuICBlbmFibGVQb3BVcE9uVGFiKCl7XG4gICAgdGhpcy5vcGVuUG9wVXBPblRhYiA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUoXCJcIik7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIGl0ZW0gdG8gc2VsZWN0XG4gICAqIGlmIGl0ZW0gcHJvcGVydHkgZGlzYWJsZWQgaXMgc2V0IHRvIHRydWUsIHNlbGVjdGlvbiB3aWxsIGJlIGRpc2FibGVkXG4gICAqIEBwYXJhbSBlZmZlY3RlZEZyb21PdXRzaWRlIHNldCB0byB0cnVlIGlmIGNhbGxpbmcgZnJvbSBwYXJlbnQgY29tcG9uZW50LCBpZiB0cnVlIHdpbGwgZm9jdXMgb24gc2VhcmNoIGlucHV0XG4gICAqL1xuICBzZWxlY3REYXRhKGl0ZW06IElMaXN0RGF0YSwgZWZmZWN0ZWRGcm9tT3V0c2lkZSA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGl0ZW0pXG4gICAgaWYgKCF0aGlzLm11bHRpKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUoaXRlbVt0aGlzLmRpc3BsYXlLZXldLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZShpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbnMuaGFzKGl0ZW1bdGhpcy51bmlxdWVLZXldKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbnMuc2V0KGl0ZW1bdGhpcy51bmlxdWVLZXldLCBpdGVtKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICBpZiAoIWVmZmVjdGVkRnJvbU91dHNpZGUpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgIH0sIDEwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShcIlwiKTtcbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSByZW1vdmUgaXRlbSBmcm9tIHNlbGVjdGVkIGxpc3RcbiAgICovXG4gIHJlbW92ZUl0ZW0oaXRlbTogSUxpc3REYXRhKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtUmVtb3ZlZC5lbWl0KGl0ZW0pXG4gICAgdGhpcy5zZWxlY3Rpb25zLmRlbGV0ZShpdGVtW3RoaXMudW5pcXVlS2V5XSk7XG4gICAgdGhpcy5zZXRDb250cm9sVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB0aGlzLmlucHV0W1wibmF0aXZlRWxlbWVudFwiXS5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cm9sVmFsdWUodmFsdWU6IElMaXN0RGF0YSk6IHZvaWQge1xuICAgIHRoaXMub25TZWxlY3QuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5jb250cm9sPy5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgbGlzdCBvZiBzZWxlY3RlZCBpdGVtc1xuICAgKi9cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogQXJyYXk8SUxpc3REYXRhPiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25zLnZhbHVlcygpKTtcbiAgfVxuXG4gIHJlbW92ZUlucHV0VmFsdWUoKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5yZXNldCgpO1xuICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIHRoaXMuY2xlYXIuZW1pdCh0cnVlKTtcbiAgfVxuICBkZWZhdWx0Q2FsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5taW5JbnB1dExlbmd0aCA9PT0gLTEpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmRlZmF1bHRDYWxsU3Vic2NyaXB0aW9uID0gdGhpcy5odHRwU3RyZWFtKHRoaXMuc2VhcmNoSW5wdXQudmFsdWUgfHwgJycpLnN1YnNjcmliZShsaXN0ID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YSA9IGxpc3Q7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpICYmIHRoaXMuZGF0YT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuZGQsIHRoaXMub3JpZ2luLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRkLXdyYXBwZXJcIiBbbmdDbGFzc109XCJ7IG9wZW5lZDogb3BlbmVkLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSB9XCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgI2RkQnRuPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdFwiICpuZ0lmPVwibXVsdGkgJiYgc2VsZWN0aW9ucy5zaXplID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGlwXCIgW25nQ2xhc3NdPVwieydjaGlwLW1kJzogc2l6ZSA9PT0gJ21kJywgJ2NoaXAtc20nOiBzaXplID09PSAnc20nfVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIj5cbiAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsnaDYnOiBzaXplID09PSAnbWQnLCAnaDgtYic6IHNpemUgPT09ICdzbSd9XCIgW25nU3R5bGVdPVwieyAnbWFyZ2luLXJpZ2h0JzogJzRweCd9XCI+e3tpdGVtW2Rpc3BsYXlLZXldfX08L3NwYW4+XG4gICAgICA8c3BhbiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwicmVtb3ZlSXRlbShpdGVtKVwiIHRhYmluZGV4PVwiMFwiIChrZXl1cC5lbnRlcik9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgW25nU3R5bGVdPVwie1xuICAgICAgICAnY3Vyc29yJzogJ3BvaW50ZXInLFxuICAgICAgICAnZm9udC1zaXplJzogc2l6ZSA9PT0gJ3NtJyA/ICcxMnB4JyA6ICcxNHB4J1xuICAgICAgfVwiIGNsYXNzPVwiaWNvbi1pYy1uYXZpZ2F0aW9uLWNhbmNlbC0yNFwiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiY3VzdG9tUGxhY2Vob2xkZXJJY29uOyBlbHNlIGRlZmF1bHRTZWFyY2hJY29uXCIgY2xhc3M9XCJjdXN0b20taWNvblwiPlxuICAgICAgPGltZyBbc3JjXT1cImN1c3RvbVBsYWNlaG9sZGVySWNvblwiIGFsdD1cImN1c3RvbUljb25cIiAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNlYXJjaEljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cImljb24taWMtYWN0aW9uLXNlYXJjaC0yNFwiPjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxpbnB1dCAqbmdJZj1cImRpc2FibGVDb3B5UGFzdGU7IGVsc2UgZW5hYmxlQ29weVBhc3RlXCIgW25nQ2xhc3NdPVwieydpcC1tZCc6IHNpemUgPT09ICdtZCcsICdpcC1zbSc6IHNpemUgPT09ICdzbSd9XCIgb25jb3B5PVwicmV0dXJuIGZhbHNlO1wiIG9ucGFzdGU9XCJyZXR1cm4gZmFsc2VcIiBvbmN1dD1cInJldHVybiBmYWxzZVwiIHRhYmluZGV4PVwiMFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJibGFjay10ZXh0IGg2XCIgI2lucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIChmb2N1cyk9XCJkZWZhdWx0Q2FsbCgpXCIgKGtleXVwLmVudGVyKT1cImVuYWJsZVBvcFVwT25UYWIoKVwiLz5cbiAgICA8bmctdGVtcGxhdGUgI2VuYWJsZUNvcHlQYXN0ZT5cbiAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7J2lwLW1kJzogc2l6ZSA9PT0gJ21kJywgJ2lwLXNtJzogc2l6ZSA9PT0gJ3NtJ31cIiB0YWJpbmRleD1cIjBcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYmxhY2stdGV4dCBoNlwiICNpbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoSW5wdXRcIiAoZm9jdXMpPVwiZGVmYXVsdENhbGwoKVwiIChrZXl1cC5lbnRlcik9XCJlbmFibGVQb3BVcE9uVGFiKClcIiAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImljb24taWMtbmF2aWdhdGlvbi1jYW5jZWwtMjQgY3Jvb3MtaWNvblwiICpuZ0lmPVwic2VhcmNoSW5wdXQ/LnZhbHVlPy5sZW5ndGhcIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCIgKGtleXVwLmVudGVyKT1cInJlbW92ZUlucHV0VmFsdWUoKVwiPjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RkPlxuICA8ZGl2IGNsYXNzPVwiZGQtbGlzdFwiIFtuZ1N0eWxlXT1cInsnbWF4LWhlaWdodCc6aGVpZ2h0LCAnd2lkdGgnOiBkcm9wZG93bkxpc3RXaWR0aH1cIiAgW25nQ2xhc3NdPVwieydkZC1saXN0LXBkJzpkYXRhLmxlbmd0aCA9PT0gMH1cIiB0YWJpbmRleD1cIjBcIiBjZGtUcmFwRm9jdXMgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cIm9wZW5Qb3BVcE9uVGFiXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJjdXN0b21Mb2FkZXI7IGVsc2UgZGVmYXVsdExvYWRlclwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUxvYWRlclwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCIgKm5nSWY9XCJsb2FkaW5nICYmICFjdXN0b21Mb2FkZXJcIj5cbiAgICAgICAgICA8bWlzLWxvYWRlciBbbW9iaWxlVmlld109XCJ0cnVlXCI+PC9taXMtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8cD5Vbmtub3duIGVycm9yIGhhcyBvY2N1cnJlZCwgPGJyPiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3IgJiYgZGF0YS5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0RGF0YShpdGVtLCBmYWxzZSlcIiAoa2V5dXAuZW50ZXIpPVwic2VsZWN0RGF0YShpdGVtLCBmYWxzZSlcIj4gXG4gICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PiAgXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYiA/IDAgOiAtMVwiXG4gICAgICAgICAgKm5nSWY9XCJjdXN0b21JdGVtOyBlbHNlIHN0YW5kYXJkSXRlbVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JdGVtXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRJdGVtPlxuICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PiAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiIChjbGljayk9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYiA/IDAgOiAtMVwiIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbVtkaXNwbGF5S2V5XSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bc2Vjb25kYXJ5RGlzcGxheUtleV0gfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3IgJiYgZGF0YS5sZW5ndGggPT09IDAgJiYgc2VhcmNoSW5wdXQudmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLW5vdC1mb3VuZFwiPk5vIERhdGEgQXZhaWxhYmxlPC9kaXY+XG4gIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBSVosU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBRUwsYUFBYSxFQUViLHNCQUFzQixHQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNYaEMsQUFIRiwrQkFFd0MsZUFFTDtJQUMvQixZQUNGO0lBQUEsaUJBQU87SUFDUCxnQ0FJdUM7SUFBakMsQUFEQSxpTkFBUywwQkFBZ0IsS0FBQyxnTkFDWCwwQkFBZ0IsS0FBQztJQUV4QyxBQURFLGlCQUFPLEVBQ0g7Ozs7SUFaRCxvR0FBc0U7SUFFbkUsY0FBOEQ7SUFBOUQsb0dBQThEO0lBRWxFLGNBQ0Y7SUFERSw2REFDRjtJQUVNLGNBQWlG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QXlDO1lBQXpDLGtFQUF5QztZQW9CN0QsZUFBK0I7WUFBQSxBQUEvQixrREFBK0IsbUNBQXNCO1lBUXBELGVBQWtFO1lBRWxFLEFBREEsQUFEQSwrRkFBa0Usa0NBQ3JDLGdDQUNGOztZQWE1QixlQUErQjtZQUEvQiwwRkFBK0I7OztpRkRuQjVCLHNCQUFzQjtjQUxsQyxTQUFTOzJCQUNFLDJCQUEyQjttSEEwQ0UsTUFBTTtrQkFBNUMsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0UsUUFBUTtrQkFBOUMsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0QsRUFBRTtrQkFBckMsU0FBUzttQkFBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ2dCLFVBQVU7a0JBQTNELFlBQVk7bUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNNLFlBQVk7a0JBQWpFLFlBQVk7bUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBOEpwRCxhQUFhO2tCQURaLFlBQVk7bUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQXZNakMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIE5nWm9uZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG4gIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBzaWduYWwsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxudHlwZSBJTGlzdERhdGEgPSBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21pcy1hc3luYy1zZWFyY2gtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYXN5bmMtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBc3luY0Ryb3Bkb3duQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgLy8gPT09IElucHV0cyA9PT1cbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICB3aWR0aCA9IGlucHV0PHN0cmluZz4oKTtcbiAgc2l6ZSA9IGlucHV0PCdtZCcgfCAnc20nPignbWQnKTtcbiAgaHR0cFN0cmVhbSA9IGlucHV0LnJlcXVpcmVkPChzZWFyY2hLZXk6IHN0cmluZykgPT4gYW55PigpO1xuICBkaXNwbGF5S2V5ID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBzZWNvbmRhcnlEaXNwbGF5S2V5ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHBsYWNlaG9sZGVyID0gaW5wdXQoJ1NlbGVjdCcpO1xuICBkZWJvdW5jZVRpbWUgPSBpbnB1dCg0MDApO1xuICBtaW5JbnB1dExlbmd0aCA9IGlucHV0KDIpO1xuICBtdWx0aSA9IGlucHV0KGZhbHNlKTtcbiAgdW5pcXVlS2V5ID0gaW5wdXQ8c3RyaW5nPigpO1xuICBjb250cm9sID0gaW5wdXQ8QWJzdHJhY3RDb250cm9sIHwgbnVsbD4obnVsbCk7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSA9IGlucHV0KGZhbHNlKTtcbiAgZGlzYWJsZUNvcHlQYXN0ZSA9IGlucHV0KGZhbHNlKTtcbiAgZHJvcGRvd25MaXN0V2lkdGggPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGRyb3Bkb3duTGlzdFBvc2l0aW9uID0gaW5wdXQ8J0xlZnQnIHwgJ1JpZ2h0Jz4oJ0xlZnQnKTtcbiAgY3VzdG9tUGxhY2Vob2xkZXJJY29uID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHNlbGVjdGlvbnMgPSBpbnB1dDxNYXA8c3RyaW5nLCBhbnk+PihuZXcgTWFwKCkpO1xuICBzZWFyY2hWYWx1ZSA9IGlucHV0PHN0cmluZz4oKTtcblxuICAvLyA9PT0gT3V0cHV0cyA9PT1cbiAgb25TZWxlY3QgPSBvdXRwdXQ8SUxpc3REYXRhIHwgSUxpc3REYXRhW10+KCk7XG4gIHNlYXJjaFF1ZXJ5Q2hhbmdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgY2xlYXIgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgaXRlbVNlbGVjdGVkID0gb3V0cHV0PElMaXN0RGF0YT4oKTtcbiAgaXRlbVJlbW92ZWQgPSBvdXRwdXQ8SUxpc3REYXRhPigpO1xuXG4gIC8vID09PSBUZW1wbGF0ZSBSZWZzID09PVxuICBAVmlld0NoaWxkKCdkZEJ0bicsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmlnaW4hOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dFJlZiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2RkJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRkITogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIEBDb250ZW50Q2hpbGQoJ21pc0N1c3RvbUl0ZW0nLCB7IHN0YXRpYzogZmFsc2UgfSkgY3VzdG9tSXRlbSE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAQ29udGVudENoaWxkKCdhc3luY0N1c3RvbUxvYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjdXN0b21Mb2FkZXIhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICAvLyA9PT0gSW50ZXJuYWwgc3RhdGUgPT09XG4gIHNlYXJjaElucHV0OiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIHByaXZhdGUgaHR0cFN0cmVhbVRyaWdnZXIgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG5cbiAgLy8gPT09IFNpZ25hbHMgPT09XG4gIG9wZW5lZCA9IHNpZ25hbChmYWxzZSk7XG4gIGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBlcnJvciA9IHNpZ25hbChmYWxzZSk7XG4gIG9wZW5Qb3BVcE9uVGFiID0gc2lnbmFsKGZhbHNlKTtcbiAgZGF0YSA9IHNpZ25hbDxJTGlzdERhdGFbXT4oW10pO1xuXG4gIC8vID09PSBFZmZlY3QgdG8gaGFuZGxlIHNlYXJjaCA9PT1cbiAgcHJpdmF0ZSBzZWFyY2hFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIC8vIE1lcmdlIGZvcm0gY29udHJvbCBjaGFuZ2VzIGFuZCBtYW51YWwgdHJpZ2dlcnNcbiAgICBtZXJnZShcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHRhcCgodmFsKSA9PiB0aGlzLnNlYXJjaFF1ZXJ5Q2hhbmdlLmVtaXQodmFsKSksXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSgpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSxcbiAgICAgIHRoaXMuaHR0cFN0cmVhbVRyaWdnZXJcbiAgICApLnN1YnNjcmliZSgocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcSA9IHF1ZXJ5Py50cmltKCkgPz8gJyc7XG4gICAgICBpZiAoIXEgfHwgcS5sZW5ndGggPCB0aGlzLm1pbklucHV0TGVuZ3RoKCkpIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KGZhbHNlKTtcblxuICAgICAgLy8gT3BlbiBvdmVybGF5IGlmIG5vdCB5ZXQgb3BlblxuICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5kZCwgdGhpcy5vcmlnaW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgSFRUUCBzdHJlYW1cbiAgICAgIHRoaXMuaHR0cFN0cmVhbSgpKHEpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChsaXN0OiBJTGlzdERhdGFbXSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZGF0YS5zZXQobGlzdCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5lcnJvci5zZXQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gPT09IExpZmVjeWNsZSA9PT1cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubXVsdGkoKSAmJiAhdGhpcy51bmlxdWVLZXkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbdW5pcXVlS2V5XSByZXF1aXJlZCBpbiBtdWx0aSBtb2RlLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbCgpPy52YWx1ZSkge1xuICAgICAgdGhpcy5oYW5kbGVDb250cm9sQ2hhbmdlcyh0aGlzLmNvbnRyb2woKSEudmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbCgpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuaGFuZGxlQ29udHJvbENoYW5nZXMpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUoKSkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKHRoaXMuc2VhcmNoVmFsdWUoKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgLy8gPT09IE1ldGhvZHMgPT09XG4gIHJlZnJlc2hIdHRwU3RyZWFtKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyLm5leHQocXVlcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250cm9sQ2hhbmdlcyA9ICh2YWx1ZXM6IElMaXN0RGF0YVtdKSA9PiB7XG4gICAgdmFsdWVzLmZvckVhY2goKGVsKSA9PiB0aGlzLnNlbGVjdERhdGEoZWwsIHRydWUpKTtcbiAgfTtcblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD4sIG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAgICAgMCxcbiAgICAgICAgNFxuICAgICAgKSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgICAgIDAsXG4gICAgICAgIDRcbiAgICAgICksXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgICAgICAgMCxcbiAgICAgICAgLTRcbiAgICAgICksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcgfSxcbiAgICAgICAgeyBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICAgICAgICAwLFxuICAgICAgICAtNFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24oKSA9PT0gJ1JpZ2h0JyA/IHBvc2l0aW9uc0JvdHRvbS5yZXZlcnNlKCkgOiBwb3NpdGlvbnNCb3R0b20pLFxuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKSA6IHBvc2l0aW9uc1RvcCksXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbi5jbGllbnRXaWR0aCxcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0V2lkdGgoKSkgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogdGhpcy5kcm9wZG93bkxpc3RXaWR0aCgpIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VEcm9wZG93bigpKTtcbiAgfVxuXG4gIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5vcGVuZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9wZW5Qb3BVcE9uVGFiLnNldChmYWxzZSk7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLmRhdGEuc2V0KFtdKTtcbiAgfVxuXG4gIGVuYWJsZVBvcFVwT25UYWIoKSB7XG4gICAgdGhpcy5vcGVuUG9wVXBPblRhYi5zZXQodHJ1ZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnJlc2V0KCk7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3REYXRhKGl0ZW06IElMaXN0RGF0YSwgZWZmZWN0ZWRGcm9tT3V0c2lkZSA9IHRydWUpIHtcbiAgICBpZiAoaXRlbS5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcblxuICAgIGlmICghdGhpcy5tdWx0aSgpKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUoaXRlbVt0aGlzLmRpc3BsYXlLZXkoKV0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0aW9ucygpLmhhcyhpdGVtW3RoaXMudW5pcXVlS2V5KCldKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbnMoKS5zZXQoaXRlbVt0aGlzLnVuaXF1ZUtleSgpXSwgaXRlbSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgaWYgKCFlZmZlY3RlZEZyb21PdXRzaWRlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICB9LCAxMCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUoJycpO1xuICAgICAgdGhpcy5kYXRhLnNldChbXSk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbShpdGVtOiBJTGlzdERhdGEpIHtcbiAgICB0aGlzLml0ZW1SZW1vdmVkLmVtaXQoaXRlbSk7XG4gICAgdGhpcy5zZWxlY3Rpb25zKCkuZGVsZXRlKGl0ZW1bdGhpcy51bmlxdWVLZXkoKV0pO1xuICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyb2xWYWx1ZSh2YWx1ZTogSUxpc3REYXRhIHwgSUxpc3REYXRhW10pIHtcbiAgICB0aGlzLm9uU2VsZWN0LmVtaXQodmFsdWUpO1xuICAgIHRoaXMuY29udHJvbCgpPy5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRJdGVtcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGlvbnMoKS52YWx1ZXMoKSk7XG4gIH1cblxuICByZW1vdmVJbnB1dFZhbHVlKCkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQucmVzZXQoKTtcbiAgICB0aGlzLmRhdGEuc2V0KFtdKTtcbiAgICB0aGlzLmNsZWFyLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBkZWZhdWx0Q2FsbCgpIHtcbiAgICBpZiAodGhpcy5taW5JbnB1dExlbmd0aCgpID09PSAtMSkge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuaHR0cFN0cmVhbSgpKHRoaXMuc2VhcmNoSW5wdXQudmFsdWUgfHwgJycpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChsaXN0OiBJTGlzdERhdGFbXSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZGF0YS5zZXQobGlzdCk7XG4gICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgJiYgbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5lcnJvci5zZXQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkZC13cmFwcGVyXCJcbiAgICAgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IG9wZW5lZCgpLCBkaXNhYmxlZDogZGlzYWJsZWQoKSwgcmVhZG9ubHk6IHJlYWRvbmx5KCkgfVwiXG4gICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aCgpXCJcbiAgICAgI2RkQnRuPlxuICBcbiAgPCEtLSBTZWxlY3RlZCBjaGlwcyBmb3IgbXVsdGktc2VsZWN0IC0tPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdFwiICpuZ0lmPVwibXVsdGkoKSAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hpcFwiXG4gICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGlwLW1kJzogc2l6ZSgpID09PSAnbWQnLCAnY2hpcC1zbSc6IHNpemUoKSA9PT0gJ3NtJyB9XCJcbiAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIj5cbiAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsgJ2g2Jzogc2l6ZSgpID09PSAnbWQnLCAnaDgtYic6IHNpemUoKSA9PT0gJ3NtJyB9XCJcbiAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHg7XCI+XG4gICAgICAgIHt7IGl0ZW1bZGlzcGxheUtleSgpXSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY3Vyc29yOiAncG9pbnRlcicsICdmb250LXNpemUnOiBzaXplKCkgPT09ICdzbScgPyAnMTJweCcgOiAnMTRweCcgfVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInJlbW92ZUl0ZW0oaXRlbSlcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBTZWFyY2ggaW5wdXQgLS0+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIj5cbiAgICA8IS0tIFBsYWNlaG9sZGVyIGljb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImN1c3RvbVBsYWNlaG9sZGVySWNvbigpOyBlbHNlIGRlZmF1bHRTZWFyY2hJY29uXCIgY2xhc3M9XCJjdXN0b20taWNvblwiPlxuICAgICAgPGltZyBbc3JjXT1cImN1c3RvbVBsYWNlaG9sZGVySWNvbigpXCIgYWx0PVwiY3VzdG9tSWNvblwiIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VhcmNoSWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1pYy1hY3Rpb24tc2VhcmNoLTI0XCI+PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIElucHV0IGZpZWxkIC0tPlxuICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7ICdpcC1tZCc6IHNpemUoKSA9PT0gJ21kJywgJ2lwLXNtJzogc2l6ZSgpID09PSAnc20nIH1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIGNsYXNzPVwiYmxhY2stdGV4dCBoNlwiXG4gICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAoZm9jdXMpPVwiZGVmYXVsdENhbGwoKVwiXG4gICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJlbmFibGVQb3BVcE9uVGFiKClcIlxuICAgICAgICAgICBbYXR0ci5vbmNvcHldPVwiZGlzYWJsZUNvcHlQYXN0ZSgpID8gJ3JldHVybiBmYWxzZTsnIDogbnVsbFwiXG4gICAgICAgICAgIFthdHRyLm9ucGFzdGVdPVwiZGlzYWJsZUNvcHlQYXN0ZSgpID8gJ3JldHVybiBmYWxzZTsnIDogbnVsbFwiXG4gICAgICAgICAgIFthdHRyLm9uY3V0XT1cImRpc2FibGVDb3B5UGFzdGUoKSA/ICdyZXR1cm4gZmFsc2U7JyA6IG51bGxcIi8+XG5cbiAgICA8IS0tIENsZWFyIGlucHV0IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJpY29uLWljLW5hdmlnYXRpb24tY2FuY2VsLTI0IGNyb29zLWljb25cIlxuICAgICAgICAgKm5nSWY9XCJzZWFyY2hJbnB1dC52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCJcbiAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZW1vdmVJbnB1dFZhbHVlKClcIj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBEcm9wZG93biB0ZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZGQ+XG4gIDxkaXYgY2xhc3M9XCJkZC1saXN0XCJcbiAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogaGVpZ2h0KCksICd3aWR0aCc6IGRyb3Bkb3duTGlzdFdpZHRoKCkgfVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyAnZGQtbGlzdC1wZCc6IGRhdGEoKS5sZW5ndGggPT09IDAgfVwiXG4gICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICBjZGtUcmFwRm9jdXNcbiAgICAgICBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwib3BlblBvcFVwT25UYWIoKVwiPlxuXG4gICAgPCEtLSBMb2FkZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmcoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUxvYWRlcjsgZWxzZSBkZWZhdWx0TG9hZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTG9hZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCIgKm5nSWY9XCJsb2FkaW5nKCkgJiYgIWN1c3RvbUxvYWRlclwiPlxuICAgICAgICAgIDxtaXMtbG9hZGVyIFttb2JpbGVWaWV3XT1cInRydWVcIj48L21pcy1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRXJyb3IgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxwPlVua25vd24gZXJyb3IgaGFzIG9jY3VycmVkLCA8YnIvPiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBEYXRhIGxpc3QgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nKCkgJiYgIWVycm9yKCkgJiYgZGF0YSgpLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YSgpXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCIgKGtleXVwLmVudGVyKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCI+XG4gICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBDdXN0b20gaXRlbSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSXRlbTsgZWxzZSBzdGFuZGFyZEl0ZW1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIFN0YW5kYXJkIGl0ZW0gLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGFuZGFyZEl0ZW0+XG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiLTFcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYigpID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmltYXJ5XCI+e3sgaXRlbVtkaXNwbGF5S2V5KCldIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY29uZGFyeVwiPnt7IGl0ZW1bc2Vjb25kYXJ5RGlzcGxheUtleSgpXSB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE5vIGRhdGEgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nKCkgJiYgIWVycm9yKCkgJiYgZGF0YSgpLmxlbmd0aCA9PT0gMCAmJiBzZWFyY2hJbnB1dC52YWx1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGEtbm90LWZvdW5kXCI+Tm8gRGF0YSBBdmFpbGFibGU8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|