@po-ui/ng-components 18.3.0 → 18.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs +27 -2
  2. package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.mjs +7 -3
  3. package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +2 -1
  4. package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +66 -47
  5. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.mjs +8 -4
  6. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +52 -34
  7. package/esm2022/lib/components/po-listbox/po-listbox-base.component.mjs +6 -2
  8. package/esm2022/lib/components/po-listbox/po-listbox.component.mjs +23 -5
  9. package/esm2022/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.mjs +10 -4
  10. package/esm2022/lib/components/po-tabs/po-tabs.component.mjs +2 -3
  11. package/fesm2022/po-ui-ng-components.mjs +217 -119
  12. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  13. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +23 -1
  14. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.d.ts +1 -0
  15. package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +1 -0
  16. package/lib/components/po-field/po-combo/po-combo.component.d.ts +3 -0
  17. package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +2 -1
  18. package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +3 -0
  19. package/lib/components/po-listbox/po-listbox-base.component.d.ts +2 -1
  20. package/lib/components/po-listbox/po-listbox.component.d.ts +2 -0
  21. package/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.d.ts +9 -3
  22. package/package.json +4 -4
  23. package/po-ui-ng-components-18.5.0.tgz +0 -0
  24. package/schematics/ng-add/index.js +1 -1
  25. package/schematics/ng-update/v14/index.js +1 -1
  26. package/schematics/ng-update/v15/index.js +1 -1
  27. package/schematics/ng-update/v16/index.js +1 -1
  28. package/schematics/ng-update/v17/index.js +1 -1
  29. package/schematics/ng-update/v18/index.js +2 -2
  30. package/schematics/ng-update/v2/index.js +1 -1
  31. package/schematics/ng-update/v3/index.js +1 -1
  32. package/schematics/ng-update/v4/index.js +1 -1
  33. package/schematics/ng-update/v5/index.js +1 -1
  34. package/schematics/ng-update/v6/index.js +1 -1
  35. package/po-ui-ng-components-18.3.0.tgz +0 -0
@@ -16,8 +16,9 @@ import * as i3 from "../../../services/po-language/po-language.service";
16
16
  const _c0 = ["dropdownElement"];
17
17
  const _c1 = ["iconElement"];
18
18
  const _c2 = ["inputElement"];
19
- function PoMultiselectComponent_span_5_Template(rf, ctx) { if (rf & 1) {
20
- i0.ɵɵelementStart(0, "span", 16);
19
+ const _c3 = ["outerContainer"];
20
+ function PoMultiselectComponent_span_7_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelementStart(0, "span", 17);
21
22
  i0.ɵɵtext(1);
22
23
  i0.ɵɵelementEnd();
23
24
  } if (rf & 2) {
@@ -25,10 +26,10 @@ function PoMultiselectComponent_span_5_Template(rf, ctx) { if (rf & 1) {
25
26
  i0.ɵɵadvance();
26
27
  i0.ɵɵtextInterpolate1(" ", ctx_r1.placeholder ? ctx_r1.placeholder : ctx_r1.literals.selectItem, " ");
27
28
  } }
28
- function PoMultiselectComponent_po_tag_6_Template(rf, ctx) { if (rf & 1) {
29
+ function PoMultiselectComponent_po_tag_8_Template(rf, ctx) { if (rf & 1) {
29
30
  const _r3 = i0.ɵɵgetCurrentView();
30
- i0.ɵɵelementStart(0, "po-tag", 17);
31
- i0.ɵɵlistener("p-close", function PoMultiselectComponent_po_tag_6_Template_po_tag_p_close_0_listener($event) { const tag_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeTag(tag_r4[ctx_r1.fieldValue], $event)); });
31
+ i0.ɵɵelementStart(0, "po-tag", 18);
32
+ i0.ɵɵlistener("p-close", function PoMultiselectComponent_po_tag_8_Template_po_tag_p_close_0_listener($event) { const tag_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeTag(tag_r4[ctx_r1.fieldValue], $event)); });
32
33
  i0.ɵɵelementEnd();
33
34
  } if (rf & 2) {
34
35
  const tag_r4 = ctx.$implicit;
@@ -37,44 +38,44 @@ function PoMultiselectComponent_po_tag_6_Template(rf, ctx) { if (rf & 1) {
37
38
  i0.ɵɵclassProp("po-clickable", tag_r4[ctx_r1.fieldValue] === "" && !ctx_r1.disabled);
38
39
  i0.ɵɵproperty("p-value", tag_r4[ctx_r1.fieldLabel])("p-literals", i_r5 + 1 === ctx_r1.visibleTags.length && ctx_r1.hasMoreTag ? ctx_r1.literalsTag : undefined)("p-removable", true)("p-disabled", ctx_r1.disabled);
39
40
  } }
40
- function PoMultiselectComponent_ng_container_10_Template(rf, ctx) { if (rf & 1) {
41
+ function PoMultiselectComponent_ng_container_12_Template(rf, ctx) { if (rf & 1) {
41
42
  i0.ɵɵelementContainer(0);
42
43
  } }
43
- function PoMultiselectComponent_ng_template_11_ng_container_0_Template(rf, ctx) { if (rf & 1) {
44
+ function PoMultiselectComponent_ng_template_13_ng_container_0_Template(rf, ctx) { if (rf & 1) {
44
45
  i0.ɵɵelementContainer(0);
45
46
  } }
46
- function PoMultiselectComponent_ng_template_11_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_11_ng_container_0_Template, 1, 0, "ng-container", 18);
47
+ function PoMultiselectComponent_ng_template_13_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_13_ng_container_0_Template, 1, 0, "ng-container", 19);
48
49
  } if (rf & 2) {
49
50
  i0.ɵɵnextContext();
50
- const dropdownListbox_r6 = i0.ɵɵreference(17);
51
+ const dropdownListbox_r6 = i0.ɵɵreference(19);
51
52
  i0.ɵɵproperty("ngTemplateOutlet", dropdownListbox_r6);
52
53
  } }
53
- function PoMultiselectComponent_ng_template_13_ng_template_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
54
+ function PoMultiselectComponent_ng_template_15_ng_template_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
54
55
  i0.ɵɵelementContainer(0);
55
56
  } }
56
- function PoMultiselectComponent_ng_template_13_ng_template_0_Template(rf, ctx) { if (rf & 1) {
57
- i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_13_ng_template_0_ng_container_0_Template, 1, 0, "ng-container", 18);
57
+ function PoMultiselectComponent_ng_template_15_ng_template_0_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_15_ng_template_0_ng_container_0_Template, 1, 0, "ng-container", 19);
58
59
  } if (rf & 2) {
59
60
  i0.ɵɵnextContext(2);
60
- const dropdownListbox_r6 = i0.ɵɵreference(17);
61
+ const dropdownListbox_r6 = i0.ɵɵreference(19);
61
62
  i0.ɵɵproperty("ngTemplateOutlet", dropdownListbox_r6);
62
63
  } }
63
- function PoMultiselectComponent_ng_template_13_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_13_ng_template_0_Template, 1, 1, "ng-template", 19);
64
+ function PoMultiselectComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
65
+ i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_15_ng_template_0_Template, 1, 1, "ng-template", 20);
65
66
  } if (rf & 2) {
66
67
  i0.ɵɵnextContext();
67
- const trigger_r7 = i0.ɵɵreference(2);
68
+ const trigger_r7 = i0.ɵɵreference(4);
68
69
  i0.ɵɵproperty("cdkConnectedOverlayOrigin", trigger_r7)("cdkConnectedOverlayOpen", true);
69
70
  } }
70
- function PoMultiselectComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
71
+ function PoMultiselectComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
71
72
  const _r8 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "po-multiselect-dropdown", 20, 6);
73
- i0.ɵɵlistener("p-change", function PoMultiselectComponent_ng_template_16_Template_po_multiselect_dropdown_p_change_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.changeItems($event)); })("p-change-search", function PoMultiselectComponent_ng_template_16_Template_po_multiselect_dropdown_p_change_search_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.changeSearch($event)); })("p-close-dropdown", function PoMultiselectComponent_ng_template_16_Template_po_multiselect_dropdown_p_close_dropdown_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.controlDropdownVisibility(false)); })("keydown", function PoMultiselectComponent_ng_template_16_Template_po_multiselect_dropdown_keydown_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onKeyDownDropdown($event, 0)); });
73
+ i0.ɵɵelementStart(0, "po-multiselect-dropdown", 21, 7);
74
+ i0.ɵɵlistener("p-change", function PoMultiselectComponent_ng_template_18_Template_po_multiselect_dropdown_p_change_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.changeItems($event)); })("p-change-search", function PoMultiselectComponent_ng_template_18_Template_po_multiselect_dropdown_p_change_search_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.changeSearch($event)); })("p-close-dropdown", function PoMultiselectComponent_ng_template_18_Template_po_multiselect_dropdown_p_close_dropdown_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.controlDropdownVisibility(false)); })("keydown", function PoMultiselectComponent_ng_template_18_Template_po_multiselect_dropdown_keydown_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onKeyDownDropdown($event, 0)); });
74
75
  i0.ɵɵelementEnd();
75
76
  } if (rf & 2) {
76
77
  const ctx_r1 = i0.ɵɵnextContext();
77
- i0.ɵɵproperty("p-searching", ctx_r1.isServerSearching)("p-hide-search", ctx_r1.hideSearch)("p-hide-select-all", ctx_r1.hideSelectAll)("p-literals", ctx_r1.literals)("p-options", ctx_r1.options)("p-visible-options", ctx_r1.visibleOptionsDropdown)("p-selected-options", ctx_r1.selectedOptions)("p-placeholder-search", ctx_r1.placeholderSearch)("p-field-value", ctx_r1.fieldValue)("p-field-label", ctx_r1.fieldLabel)("p-multiselect-template", ctx_r1.multiselectOptionTemplate);
78
+ i0.ɵɵproperty("p-searching", ctx_r1.isServerSearching)("p-hide-search", ctx_r1.hideSearch)("p-hide-select-all", ctx_r1.hideSelectAll)("p-literals", ctx_r1.literals)("p-options", ctx_r1.options)("p-visible-options", ctx_r1.visibleOptionsDropdown)("p-selected-options", ctx_r1.selectedOptions)("p-placeholder-search", ctx_r1.placeholderSearch)("p-field-value", ctx_r1.fieldValue)("p-field-label", ctx_r1.fieldLabel)("p-multiselect-template", ctx_r1.multiselectOptionTemplate)("p-container-width", ctx_r1.containerWidth);
78
79
  } }
79
80
  const poMultiselectContainerOffset = 8;
80
81
  const poMultiselectContainerPositionDefault = 'bottom';
@@ -164,6 +165,7 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
164
165
  dropdown;
165
166
  iconElement;
166
167
  inputElement;
168
+ outerContainer;
167
169
  literalsTag;
168
170
  dropdownIcon = 'ICON_ARROW_DOWN';
169
171
  dropdownOpen = false;
@@ -171,6 +173,7 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
171
173
  hasMoreTag;
172
174
  timeoutResize;
173
175
  visibleElement = false;
176
+ containerWidth;
174
177
  subscription = new Subscription();
175
178
  enterCloseTag = false;
176
179
  initCalculateItems = true;
@@ -585,6 +588,9 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
585
588
  this.scrollToSelectedOptions();
586
589
  this.changeDetector.detectChanges();
587
590
  this.setPositionDropdown();
591
+ if (this.dropdownOpen) {
592
+ this.setContainerWidth();
593
+ }
588
594
  }
589
595
  removeListeners() {
590
596
  if (this.clickOutListener) {
@@ -596,6 +602,11 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
596
602
  window.removeEventListener('scroll', this.onScroll, true);
597
603
  this.changeDetector.markForCheck();
598
604
  }
605
+ setContainerWidth() {
606
+ if (this.outerContainer) {
607
+ this.containerWidth = this.outerContainer.nativeElement.offsetWidth;
608
+ }
609
+ }
599
610
  setPositionDropdown() {
600
611
  this.controlPosition.setElements(this.dropdown.container.nativeElement, poMultiselectContainerOffset, this.inputElement, ['top', 'bottom'], true);
601
612
  this.adjustContainerPosition();
@@ -611,27 +622,31 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
611
622
  i0.ɵɵviewQuery(_c0, 5);
612
623
  i0.ɵɵviewQuery(_c1, 7, ElementRef);
613
624
  i0.ɵɵviewQuery(_c2, 7, ElementRef);
625
+ i0.ɵɵviewQuery(_c3, 5, ElementRef);
614
626
  } if (rf & 2) {
615
627
  let _t;
616
628
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownElement = _t.first);
617
629
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdown = _t.first);
618
630
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.iconElement = _t.first);
619
631
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputElement = _t.first);
620
- } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 18, vars: 30, consts: [["trigger", "cdkOverlayOrigin"], ["inputElement", ""], ["iconElement", ""], ["dropdownDefault", ""], ["dropdownCDK", ""], ["dropdownListbox", ""], ["dropdownElement", ""], [3, "p-disabled", "p-label", "p-optional", "p-required", "p-show-required"], ["cdkOverlayOrigin", "", 1, "po-field-container-content"], [1, "po-input-icon-right", "po-multiselect-input", 3, "keydown", "click", "blur", "tabindex"], ["class", "po-multiselect-input-placeholder", "aria-hidden", "true", 4, "ngIf"], [3, "p-value", "p-literals", "p-removable", "po-clickable", "p-disabled", "p-close", 4, "ngFor", "ngForOf"], [1, "po-field-icon-container-right"], [3, "p-icon", "ngClass"], [4, "ngIf", "ngIfThen", "ngIfElse"], [3, "p-help", "p-disabled"], ["aria-hidden", "true", 1, "po-multiselect-input-placeholder"], [3, "p-close", "p-value", "p-literals", "p-removable", "p-disabled"], [4, "ngTemplateOutlet"], ["cdkConnectedOverlay", "", 3, "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen"], [3, "p-change", "p-change-search", "p-close-dropdown", "keydown", "p-searching", "p-hide-search", "p-hide-select-all", "p-literals", "p-options", "p-visible-options", "p-selected-options", "p-placeholder-search", "p-field-value", "p-field-label", "p-multiselect-template"]], template: function PoMultiselectComponent_Template(rf, ctx) { if (rf & 1) {
632
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.outerContainer = _t.first);
633
+ } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 20, vars: 30, consts: [["outerContainer", ""], ["trigger", "cdkOverlayOrigin"], ["inputElement", ""], ["iconElement", ""], ["dropdownDefault", ""], ["dropdownCDK", ""], ["dropdownListbox", ""], ["dropdownElement", ""], [3, "p-disabled", "p-label", "p-optional", "p-required", "p-show-required"], ["cdkOverlayOrigin", "", 1, "po-field-container-content"], [1, "po-input-icon-right", "po-multiselect-input", 3, "keydown", "click", "blur", "tabindex"], ["class", "po-multiselect-input-placeholder", "aria-hidden", "true", 4, "ngIf"], [3, "p-value", "p-literals", "p-removable", "po-clickable", "p-disabled", "p-close", 4, "ngFor", "ngForOf"], [1, "po-field-icon-container-right"], [3, "p-icon", "ngClass"], [4, "ngIf", "ngIfThen", "ngIfElse"], [3, "p-help", "p-disabled"], ["aria-hidden", "true", 1, "po-multiselect-input-placeholder"], [3, "p-close", "p-value", "p-literals", "p-removable", "p-disabled"], [4, "ngTemplateOutlet"], ["cdkConnectedOverlay", "", 3, "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen"], [3, "p-change", "p-change-search", "p-close-dropdown", "keydown", "p-searching", "p-hide-search", "p-hide-select-all", "p-literals", "p-options", "p-visible-options", "p-selected-options", "p-placeholder-search", "p-field-value", "p-field-label", "p-multiselect-template", "p-container-width"]], template: function PoMultiselectComponent_Template(rf, ctx) { if (rf & 1) {
621
634
  const _r1 = i0.ɵɵgetCurrentView();
622
- i0.ɵɵelementStart(0, "po-field-container", 7)(1, "div", 8, 0)(3, "div", 9, 1);
623
- i0.ɵɵlistener("keydown", function PoMultiselectComponent_Template_div_keydown_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onKeyDown($event)); })("click", function PoMultiselectComponent_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdownVisibility()); })("blur", function PoMultiselectComponent_Template_div_blur_3_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onBlur()); });
624
- i0.ɵɵtemplate(5, PoMultiselectComponent_span_5_Template, 2, 1, "span", 10)(6, PoMultiselectComponent_po_tag_6_Template, 1, 6, "po-tag", 11);
625
- i0.ɵɵelementStart(7, "div", 12);
626
- i0.ɵɵelement(8, "po-icon", 13, 2);
635
+ i0.ɵɵelementStart(0, "div", null, 0)(2, "po-field-container", 8)(3, "div", 9, 1)(5, "div", 10, 2);
636
+ i0.ɵɵlistener("keydown", function PoMultiselectComponent_Template_div_keydown_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onKeyDown($event)); })("click", function PoMultiselectComponent_Template_div_click_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdownVisibility()); })("blur", function PoMultiselectComponent_Template_div_blur_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onBlur()); });
637
+ i0.ɵɵtemplate(7, PoMultiselectComponent_span_7_Template, 2, 1, "span", 11)(8, PoMultiselectComponent_po_tag_8_Template, 1, 6, "po-tag", 12);
638
+ i0.ɵɵelementStart(9, "div", 13);
639
+ i0.ɵɵelement(10, "po-icon", 14, 3);
627
640
  i0.ɵɵelementEnd()()();
628
- i0.ɵɵtemplate(10, PoMultiselectComponent_ng_container_10_Template, 1, 0, "ng-container", 14)(11, PoMultiselectComponent_ng_template_11_Template, 1, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(13, PoMultiselectComponent_ng_template_13_Template, 1, 2, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
629
- i0.ɵɵelement(15, "po-field-container-bottom", 15);
641
+ i0.ɵɵtemplate(12, PoMultiselectComponent_ng_container_12_Template, 1, 0, "ng-container", 15)(13, PoMultiselectComponent_ng_template_13_Template, 1, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor)(15, PoMultiselectComponent_ng_template_15_Template, 1, 2, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
642
+ i0.ɵɵelement(17, "po-field-container-bottom", 16);
643
+ i0.ɵɵelementEnd();
644
+ i0.ɵɵtemplate(18, PoMultiselectComponent_ng_template_18_Template, 2, 12, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
630
645
  i0.ɵɵelementEnd();
631
- i0.ɵɵtemplate(16, PoMultiselectComponent_ng_template_16_Template, 2, 11, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
632
646
  } if (rf & 2) {
633
- const dropdownDefault_r9 = i0.ɵɵreference(12);
634
- const dropdownCDK_r10 = i0.ɵɵreference(14);
647
+ const dropdownDefault_r9 = i0.ɵɵreference(14);
648
+ const dropdownCDK_r10 = i0.ɵɵreference(16);
649
+ i0.ɵɵadvance(2);
635
650
  i0.ɵɵproperty("p-disabled", ctx.disabled)("p-label", ctx.label)("p-optional", ctx.optional)("p-required", ctx.required)("p-show-required", ctx.showRequired);
636
651
  i0.ɵɵadvance();
637
652
  i0.ɵɵclassProp("po-multiselect-show", ctx.dropdownOpen);
@@ -655,7 +670,7 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
655
670
  }
656
671
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMultiselectComponent, [{
657
672
  type: Component,
658
- args: [{ selector: 'po-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"po-field-container-content\"\n [class.po-multiselect-show]=\"dropdownOpen\"\n >\n <div\n #inputElement\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n class=\"po-input-icon-right po-multiselect-input\"\n [class.po-multiselect-input-auto]=\"autoHeight\"\n [class.po-multiselect-input-static]=\"!autoHeight\"\n [class.po-multiselect-input-disabled]=\"disabled\"\n [class.po-multiselect-input-font]=\"!disabled && !visibleTags?.length\"\n (keydown)=\"onKeyDown($event)\"\n (click)=\"toggleDropdownVisibility()\"\n (blur)=\"onBlur()\"\n >\n <span *ngIf=\"!disabled && !visibleTags?.length\" class=\"po-multiselect-input-placeholder\" aria-hidden=\"true\">\n {{ placeholder ? placeholder : literals.selectItem }}\n </span>\n\n <po-tag\n *ngFor=\"let tag of visibleTags; index as i\"\n [p-value]=\"tag[fieldLabel]\"\n [p-literals]=\"i + 1 === visibleTags.length && hasMoreTag ? literalsTag : undefined\"\n [p-removable]=\"true\"\n [class.po-clickable]=\"tag[fieldValue] === '' && !disabled\"\n [p-disabled]=\"disabled\"\n (p-close)=\"closeTag(tag[fieldValue], $event)\"\n ></po-tag>\n\n <div class=\"po-field-icon-container-right\">\n <po-icon\n p-icon=\"{{ dropdownIcon }}\"\n #iconElement\n class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [ngClass]=\"disabled ? 'po-field-icon-disabled' : ''\"\n >\n </po-icon>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"appendBox; then dropdownCDK; else dropdownDefault\"> </ng-container>\n\n <ng-template #dropdownDefault>\n <ng-container *ngTemplateOutlet=\"dropdownListbox\"> </ng-container>\n </ng-template>\n\n <ng-template #dropdownCDK>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayOpen]=\"true\">\n <ng-container *ngTemplateOutlet=\"dropdownListbox\"></ng-container>\n </ng-template>\n </ng-template>\n\n <po-field-container-bottom [p-help]=\"help\" [p-disabled]=\"disabled\"></po-field-container-bottom>\n</po-field-container>\n\n<ng-template #dropdownListbox>\n <po-multiselect-dropdown\n #dropdownElement\n [p-searching]=\"isServerSearching\"\n [p-hide-search]=\"hideSearch\"\n [p-hide-select-all]=\"hideSelectAll\"\n [p-literals]=\"literals\"\n [p-options]=\"options\"\n [p-visible-options]=\"visibleOptionsDropdown\"\n [p-selected-options]=\"selectedOptions\"\n [p-placeholder-search]=\"placeholderSearch\"\n [p-field-value]=\"fieldValue\"\n [p-field-label]=\"fieldLabel\"\n [p-multiselect-template]=\"multiselectOptionTemplate\"\n (p-change)=\"changeItems($event)\"\n (p-change-search)=\"changeSearch($event)\"\n (p-close-dropdown)=\"controlDropdownVisibility(false)\"\n (keydown)=\"onKeyDownDropdown($event, 0)\"\n >\n </po-multiselect-dropdown>\n</ng-template>\n" }]
673
+ args: [{ selector: 'po-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<div #outerContainer>\n <po-field-container\n [p-disabled]=\"disabled\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n >\n <div\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"po-field-container-content\"\n [class.po-multiselect-show]=\"dropdownOpen\"\n >\n <div\n #inputElement\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n class=\"po-input-icon-right po-multiselect-input\"\n [class.po-multiselect-input-auto]=\"autoHeight\"\n [class.po-multiselect-input-static]=\"!autoHeight\"\n [class.po-multiselect-input-disabled]=\"disabled\"\n [class.po-multiselect-input-font]=\"!disabled && !visibleTags?.length\"\n (keydown)=\"onKeyDown($event)\"\n (click)=\"toggleDropdownVisibility()\"\n (blur)=\"onBlur()\"\n >\n <span *ngIf=\"!disabled && !visibleTags?.length\" class=\"po-multiselect-input-placeholder\" aria-hidden=\"true\">\n {{ placeholder ? placeholder : literals.selectItem }}\n </span>\n\n <po-tag\n *ngFor=\"let tag of visibleTags; index as i\"\n [p-value]=\"tag[fieldLabel]\"\n [p-literals]=\"i + 1 === visibleTags.length && hasMoreTag ? literalsTag : undefined\"\n [p-removable]=\"true\"\n [class.po-clickable]=\"tag[fieldValue] === '' && !disabled\"\n [p-disabled]=\"disabled\"\n (p-close)=\"closeTag(tag[fieldValue], $event)\"\n ></po-tag>\n\n <div class=\"po-field-icon-container-right\">\n <po-icon\n p-icon=\"{{ dropdownIcon }}\"\n #iconElement\n class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [ngClass]=\"disabled ? 'po-field-icon-disabled' : ''\"\n >\n </po-icon>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"appendBox; then dropdownCDK; else dropdownDefault\"> </ng-container>\n\n <ng-template #dropdownDefault>\n <ng-container *ngTemplateOutlet=\"dropdownListbox\"> </ng-container>\n </ng-template>\n\n <ng-template #dropdownCDK>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayOpen]=\"true\">\n <ng-container *ngTemplateOutlet=\"dropdownListbox\"></ng-container>\n </ng-template>\n </ng-template>\n\n <po-field-container-bottom [p-help]=\"help\" [p-disabled]=\"disabled\"></po-field-container-bottom>\n </po-field-container>\n\n <ng-template #dropdownListbox>\n <po-multiselect-dropdown\n #dropdownElement\n [p-searching]=\"isServerSearching\"\n [p-hide-search]=\"hideSearch\"\n [p-hide-select-all]=\"hideSelectAll\"\n [p-literals]=\"literals\"\n [p-options]=\"options\"\n [p-visible-options]=\"visibleOptionsDropdown\"\n [p-selected-options]=\"selectedOptions\"\n [p-placeholder-search]=\"placeholderSearch\"\n [p-field-value]=\"fieldValue\"\n [p-field-label]=\"fieldLabel\"\n [p-multiselect-template]=\"multiselectOptionTemplate\"\n (p-change)=\"changeItems($event)\"\n (p-change-search)=\"changeSearch($event)\"\n (p-close-dropdown)=\"controlDropdownVisibility(false)\"\n (keydown)=\"onKeyDownDropdown($event, 0)\"\n [p-container-width]=\"containerWidth\"\n >\n </po-multiselect-dropdown>\n </ng-template>\n</div>\n" }]
659
674
  }], () => [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.PoControlPositionService }, { type: i2.PoMultiselectFilterService }, { type: i3.PoLanguageService }], { multiselectOptionTemplate: [{
660
675
  type: ContentChild,
661
676
  args: [PoMultiselectOptionTemplateDirective, { static: true }]
@@ -671,6 +686,9 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
671
686
  }], inputElement: [{
672
687
  type: ViewChild,
673
688
  args: ['inputElement', { read: ElementRef, static: true }]
689
+ }], outerContainer: [{
690
+ type: ViewChild,
691
+ args: ['outerContainer ', { read: ElementRef }]
674
692
  }] }); })();
675
693
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoMultiselectComponent, { className: "PoMultiselectComponent", filePath: "lib/components/po-field/po-multiselect/po-multiselect.component.ts", lineNumber: 118 }); })();
676
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUtWLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7SUNEM0gs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QUZqRixvREFBMkI7WUFHM0Isc0VBQW9EO1lBTzdDLGVBQWlCO1lBQWtCLEFBQWxCLEFBQWpCLG9DQUFpQiw2QkFBa0IsZ0NBQW9CO1lBWTNDLGVBQWU7WUFBQyxBQUFoQixpQ0FBZSw0QkFBd0I7OztpRkRvRHZELHNCQUFzQjtjQU5sQyxTQUFTOzJCQUNFLGdCQUFnQixtQkFFVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQy9DLFNBQVM7bU5BT1QseUJBQXlCO2tCQUR4QixZQUFZO21CQUFDLG9DQUFvQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUdoQixlQUFlO2tCQUFsRSxTQUFTO21CQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNwQixRQUFRO2tCQUFyQyxTQUFTO21CQUFDLGlCQUFpQjtZQUNrQyxXQUFXO2tCQUF4RSxTQUFTO21CQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNHLFlBQVk7a0JBQTFFLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztrRkFWbEQsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9LZXlDb2RlRW51bSB9IGZyb20gJy4vLi4vLi4vLi4vZW51bXMvcG8ta2V5LWNvZGUuZW51bSc7XG5pbXBvcnQgeyBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL3NlcnZpY2VzL3BvLWNvbnRyb2wtcG9zaXRpb24vcG8tY29udHJvbC1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi8uLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEJhc2VDb21wb25lbnQgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi10ZW1wbGF0ZS9wby1tdWx0aXNlbGVjdC1vcHRpb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuXG5jb25zdCBwb011bHRpc2VsZWN0Q29udGFpbmVyT2Zmc2V0ID0gODtcbmNvbnN0IHBvTXVsdGlzZWxlY3RDb250YWluZXJQb3NpdGlvbkRlZmF1bHQgPSAnYm90dG9tJztcbmNvbnN0IHBvTXVsdGlzZWxlY3RJbnB1dFBhZGRpbmdSaWdodCA9IDUyO1xuY29uc3QgcG9NdWx0aXNlbGVjdFNwYWNlQmV0d2VlblRhZ3MgPSA4O1xuXG5jb25zdCBsaXRlcmFsc1RhZ1JlbW92ZU90aGVycyA9IHtcbiAgcHQ6IHtcbiAgICByZW1vdmU6ICdSZW1vdmVyIHRvZG9zIG9zIGl0ZW5zIHNlbGVjaW9uYWRvcydcbiAgfSxcbiAgcnU6IHtcbiAgICByZW1vdmU6ICfQo9C00LDQu9C40YLRjCDQstGB0LUg0LLRi9Cx0YDQsNC90L3Ri9C1INGN0LvQtdC80LXQvdGC0YsnXG4gIH0sXG4gIGVzOiB7XG4gICAgcmVtb3ZlOiAnRWxpbWluYXIgdG9kb3MgbG9zIGVsZW1lbnRvcyBzZWxlY2Npb25hZG9zJ1xuICB9LFxuICBlbjoge1xuICAgIHJlbW92ZTogJ0NsZWFyIGFsbCBzZWxlY3RlZCBpdGVtcydcbiAgfVxufTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbnN0IHByb3ZpZGVycyA9IFtcbiAgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UsXG4gIFBvQ29udHJvbFBvc2l0aW9uU2VydmljZSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvTXVsdGlzZWxlY3RDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH0sXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvTXVsdGlzZWxlY3RDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH1cbl07XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtYmFzaWNcIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IEJhc2ljXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtYmFzaWMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1iYXNpYy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtbGFic1wiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgTGFic1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWxhYnMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWxhYnMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtdmFjYXRpb25cIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IC0gVmFjYXRpb25cIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uL3NhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC12YWNhdGlvbi1yZWFjdGl2ZS1mb3JtXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIFZhY2F0aW9uIFJlYWN0aXZlIEZvcm1cIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LXRlbXBsYXRlXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIFRlbXBsYXRlXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdGVtcGxhdGUvc2FtcGxlLXBvLW11bHRpc2VsZWN0LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC10ZW1wbGF0ZS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdGVtcGxhdGUuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtaGVyb2VzXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIEhlcm9lcyAtIHVzaW5nIEFQSVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC1hbnktYXJyYXlcIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IC0gQXJyYXkgQW55XCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtYW55LWFycmF5L3NhbXBsZS1wby1tdWx0aXNlbGVjdC1hbnktYXJyYXkuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWFueS1hcnJheS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtYW55LWFycmF5LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1tdWx0aXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnNcbn0pXG5leHBvcnQgY2xhc3MgUG9NdWx0aXNlbGVjdENvbXBvbmVudFxuICBleHRlbmRzIFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgRG9DaGVjaywgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgQENvbnRlbnRDaGlsZChQb011bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIG11bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGU6IFBvTXVsdGlzZWxlY3RPcHRpb25UZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdkcm9wZG93bkVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZHJvcGRvd25FbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkVsZW1lbnQnKSBkcm9wZG93bjtcbiAgQFZpZXdDaGlsZCgnaWNvbkVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpY29uRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIGxpdGVyYWxzVGFnO1xuICBkcm9wZG93bkljb246IHN0cmluZyA9ICdJQ09OX0FSUk9XX0RPV04nO1xuICBkcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgaGFzTW9yZVRhZzogYm9vbGVhbjtcbiAgdGltZW91dFJlc2l6ZTtcbiAgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBlbnRlckNsb3NlVGFnID0gZmFsc2U7XG4gIHByaXZhdGUgaW5pdENhbGN1bGF0ZUl0ZW1zID0gdHJ1ZTtcbiAgcHJpdmF0ZSBpc0NhbGN1bGF0ZVZpc2libGVJdGVtczogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgY2FjaGVPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55PjtcbiAgcHJpdmF0ZSBmb2N1c09uVGFnID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjb250cm9sUG9zaXRpb246IFBvQ29udHJvbFBvc2l0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgZGVmYXVsdFNlcnZpY2U6IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlLFxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIobGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgICBjb25zdCBsYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gICAgdGhpcy5saXRlcmFsc1RhZyA9IHtcbiAgICAgIC4uLmxpdGVyYWxzVGFnUmVtb3ZlT3RoZXJzW3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAuLi5saXRlcmFsc1RhZ1JlbW92ZU90aGVyc1tsYW5ndWFnZV1cbiAgICB9O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlICYmIChjaGFuZ2VzLmZpbHRlclNlcnZpY2UgfHwgY2hhbmdlcy5maWVsZFZhbHVlIHx8IGNoYW5nZXMuZmllbGRMYWJlbCkpIHtcbiAgICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLmZpbHRlclNlcnZpY2UpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAvLyBQZXJtaXRlIHF1ZSBhcyB0YWdzIHNlamFtIGNhbGN1bGFkYXMgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKChpbnB1dFdpZHRoICYmICF0aGlzLnZpc2libGVFbGVtZW50ICYmIHRoaXMuaW5pdGlhbGl6ZWQpIHx8IChpbnB1dFdpZHRoICYmIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMpKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLnZpc2libGVFbGVtZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuZ2V0T2JqZWN0c0J5VmFsdWVzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZmlsdGVyU3ViamVjdD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb011bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuICAgKlxuICAgKiAuLi5cbiAgICpcbiAgICogQFZpZXdDaGlsZChQb011bHRpc2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtdWx0aXNlbGVjdDogUG9NdWx0aXNlbGVjdENvbXBvbmVudDtcbiAgICpcbiAgICogZm9jdXNNdWx0aXNlbGVjdCgpIHtcbiAgICogICB0aGlzLm11bHRpc2VsZWN0LmZvY3VzKCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnB1dFdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnBvLW11bHRpc2VsZWN0LWlucHV0Jykub2Zmc2V0V2lkdGggLSBwb011bHRpc2VsZWN0SW5wdXRQYWRkaW5nUmlnaHQ7XG4gIH1cblxuICBnZXRUYWdzV2lkdGgoKSB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwby10YWcnKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0YWdzKS5tYXAodGFnID0+IHRhZ1snb2Zmc2V0V2lkdGgnXSk7XG4gIH1cblxuICBjYWxjdWxhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgdGhpcy5oYXNNb3JlVGFnID0gZmFsc2U7XG4gICAgY29uc3QgdGFnc1dpZHRoID0gdGhpcy5nZXRUYWdzV2lkdGgoKTtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5nZXRJbnB1dFdpZHRoKCk7XG4gICAgY29uc3QgZXh0cmFUYWdTaXplID0gNjM7XG4gICAgY29uc3QgdGFnc1Zpc2libGUgPSB0YWdzV2lkdGhbMF07XG5cbiAgICB0aGlzLnZpc2libGVUYWdzID0gW107XG5cbiAgICBpZiAoaW5wdXRXaWR0aCA+IDApIHtcbiAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgbGV0IGkgPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHN1bSArPSB0YWdzV2lkdGhbaV0gKyBwb011bHRpc2VsZWN0U3BhY2VCZXR3ZWVuVGFncztcbiAgICAgICAgdGhpcy52aXNpYmxlVGFncy5wdXNoKHRoaXMuc2VsZWN0ZWRPcHRpb25zW2ldKTtcblxuICAgICAgICBpZiAoc3VtID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIHN1bSAtPSB0YWdzV2lkdGhbaV07XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0YWdzVmlzaWJsZSB8fCAhdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChpID09PSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYXNNb3JlVGFnID0gdHJ1ZTtcbiAgICAgICAgaWYgKHN1bSArIGV4dHJhVGFnU2l6ZSA+IGlucHV0V2lkdGgpIHtcbiAgICAgICAgICB0aGlzLnZpc2libGVUYWdzLnNwbGljZSgtMiwgMik7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoICsgMSAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgdGhpcy52aXNpYmxlVGFncy5wdXNoKHsgW3RoaXMuZmllbGRWYWx1ZV06ICcnLCBbdGhpcy5maWVsZExhYmVsXTogbGFiZWwgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52aXNpYmxlVGFncy5zcGxpY2UoLTEsIDEpO1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gJysnICsgKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgdGhpcy52aXNpYmxlVGFncy5wdXNoKHsgW3RoaXMuZmllbGRWYWx1ZV06ICcnLCBbdGhpcy5maWVsZExhYmVsXTogbGFiZWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmluaXRDYWxjdWxhdGVJdGVtcykge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUtleWJvYXJkTmF2aWdhdGlvblRhZygpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgICAgdGhpcy5pbml0Q2FsY3VsYXRlSXRlbXMgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNoYW5nZUl0ZW1zKGNoYW5nZWRJdGVtcykge1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb25zKGNoYW5nZWRJdGVtcyk7XG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuXG4gICAgaWYgKHRoaXMuYXV0b0hlaWdodCAmJiB0aGlzLmRyb3Bkb3duT3Blbikge1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gICAgfVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVLZXlib2FyZE5hdmlnYXRpb25UYWcoKTtcbiAgICB9LCAzMDApO1xuICB9XG5cbiAgdXBkYXRlVmlzaWJsZUl0ZW1zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9ucykge1xuICAgICAgdGhpcy52aXNpYmxlVGFncyA9IFtdLmNvbmNhdCh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuXG4gICAgLy8gcXVhbmRvIGVzdGl2ZXIgZGVudHJvIGRlIG1vZGFsXG4gICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMuYXV0b0hlaWdodCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgPT09ICdzdHJpbmcnICYmXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpLmluY2x1ZGVzKCdVbnNlbGVjdGVkJylcbiAgICApIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiAnJyk7XG4gICAgfVxuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQ/LigpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50PzogYW55KSB7XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0udGFiICYmICF0aGlzLmZvY3VzT25UYWcpIHtcbiAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuZm9jdXNPblRhZyA9IGZhbHNlO1xuXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0udGFiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0uZXNjKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5jb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS5hcnJvd0Rvd24gJiYgdGhpcy52aXNpYmxlVGFncy5sZW5ndGggPiAwKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5jb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KHRydWUpO1xuICAgICAgdGhpcy5kcm9wZG93bj8ubGlzdGJveD8uc2V0Rm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS5lbnRlciAmJiAhdGhpcy5lbnRlckNsb3NlVGFnKSB7XG4gICAgICBpZiAodGhpcy52aXNpYmxlVGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93blZpc2liaWxpdHkoKTtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duVmlzaWJpbGl0eSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0uc3BhY2UpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duVmlzaWJpbGl0eSgpO1xuICAgIH1cbiAgICB0aGlzLmVudGVyQ2xvc2VUYWcgPSBmYWxzZTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duVmlzaWJpbGl0eSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbHRlclNlcnZpY2UpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJJbkZpcnN0Q2xpY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoIXRoaXMuZHJvcGRvd25PcGVuKTtcbiAgfVxuXG4gIG9uS2V5RG93bkRyb3Bkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoZmFsc2UpO1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Ecm9wZG93bih0b09wZW4pIHtcbiAgICBpZiAodG9PcGVuICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSh0b09wZW46IGJvb2xlYW4pIHtcbiAgICB0b09wZW4gPyB0aGlzLm9wZW4oKSA6IHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHNjcm9sbFRvU2VsZWN0ZWRPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9ucyAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcHRpb25zLmZpbmRJbmRleChcbiAgICAgICAgb3B0aW9uID0+IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdID09PSB0aGlzLnNlbGVjdGVkT3B0aW9uc1swXVt0aGlzLmZpZWxkVmFsdWVdXG4gICAgICApO1xuICAgICAgdGhpcy5kcm9wZG93bi5zY3JvbGxUbyhpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bihvcHRpb25zKSB7XG4gICAgdGhpcy52aXNpYmxlT3B0aW9uc0Ryb3Bkb3duID0gb3B0aW9ucztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2hhbmdlU2VhcmNoKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50W3RoaXMuZmllbGRWYWx1ZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgICB0aGlzLmZpbHRlclN1YmplY3QubmV4dChldmVudFt0aGlzLmZpZWxkVmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VhcmNoQnlMYWJlbChldmVudFt0aGlzLmZpZWxkVmFsdWVdLCB0aGlzLm9wdGlvbnMsIHRoaXMuZmlsdGVyTW9kZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bih0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIHRpbWVvdXQgbmVjZXNzw6FyaW8gcGFyYSByZXBvc2ljaW9uYXIgY29ycmV0YW1lbnRlIHF1YW5kbyBkcm9wZG93biBlc3RpdmVyIHByYSBjaW1hIGRvIGlucHV0IGUgcmVhbGl6YXIgYnVzY2Egbm8gaW5wdXRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKSk7XG4gIH1cblxuICBjbG9zZVRhZyh2YWx1ZSwgZXZlbnQpIHtcbiAgICBsZXQgaW5kZXg7XG4gICAgdGhpcy5lbnRlckNsb3NlVGFnID0gdHJ1ZTtcbiAgICBpZiAoIXZhbHVlIHx8ICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluY2x1ZGVzKCcrJykpKSB7XG4gICAgICBpbmRleCA9IG51bGw7XG4gICAgICBjb25zdCBpdGVtc05vdEluVmlzaWJsZVRhZ3MgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5maWx0ZXIob3B0aW9uID0+ICF0aGlzLnZpc2libGVUYWdzLmluY2x1ZGVzKG9wdGlvbikpO1xuICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdGhpcy52aXNpYmxlVGFncykge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRPcHRpb25zLmluY2x1ZGVzKG9wdGlvbikpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5zcGxpY2UodGhpcy52aXNpYmxlVGFncy5sZW5ndGggLSAxLCBpdGVtc05vdEluVmlzaWJsZVRhZ3MubGVuZ3RoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0gPT09IHZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c09uTmV4dFRhZyhpbmRleCwgZXZlbnQpO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICB3YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbiAmJlxuICAgICAgIXRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMuaWNvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5kcm9wZG93bkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcgPSAnJyk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4+IHtcbiAgICBjb25zdCBwYXJhbSA9IHsgcHJvcGVydHk6IHRoaXMuZmllbGRMYWJlbCwgdmFsdWU6IHZhbHVlIH07XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRGaWx0ZXJlZERhdGEocGFyYW0pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChvcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55PikgPT4ge1xuICAgICAgICB0aGlzLnNldE9wdGlvbnNCeUFwcGx5RmlsdGVyKG9wdGlvbnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlckluRmlyc3RDbGljaygpIHtcbiAgICBpZiAodGhpcy5pc0ZpcnN0RmlsdGVyKSB7XG4gICAgICB0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gdHJ1ZTtcblxuICAgICAgLy8gbmVjZXNzYXJpbyBlbnZpYXIgdW0gb2JqZXRvIHN0cmluZyB2YXppYSBwYXJhIHJlZmF6ZXIgYSBidXNjYSwgcXVhbmRvIGFsdGVyYXIgZmlsdGVyU2VydmljZSwgZmllbGRWYWx1ZSBlIGZpZWxkTGFiZWxcbiAgICAgIC8vIHBvaXMgdGVtb3MgbyBkaXN0aW5jdFVudGlsQ2hhbmdlIG5vIHBpcGUgZG8gZmlsdGVyU3ViamVjdFxuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tbmV3LXdyYXBwZXJzICovXG4gICAgICB0aGlzLmZpbHRlclN1YmplY3QubmV4dChuZXcgU3RyaW5nKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5jYWNoZU9wdGlvbnNdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0T3B0aW9uc0J5QXBwbHlGaWx0ZXIoaXRlbXM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+KSB7XG4gICAgaWYgKHRoaXMuaXNGaXJzdEZpbHRlcikge1xuICAgICAgdGhpcy5jYWNoZU9wdGlvbnMgPSBbLi4uaXRlbXNdO1xuICAgICAgdGhpcy5pc0ZpcnN0RmlsdGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gWy4uLml0ZW1zXTtcbiAgICB0aGlzLnNldFZpc2libGVPcHRpb25zRHJvcGRvd24odGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uYWRqdXN0UG9zaXRpb24ocG9NdWx0aXNlbGVjdENvbnRhaW5lclBvc2l0aW9uRGVmYXVsdCk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25JY29uID0gJ0lDT05fQVJST1dfRE9XTic7XG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICAgIHRoaXMuZHJvcGRvd24uY29udHJvbFZpc2liaWxpdHkoZmFsc2UpO1xuICAgIHRoaXMuc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bih0aGlzLm9wdGlvbnMpO1xuXG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNPbk5leHRUYWcoaW5kZXhDbG9zZWQ6IG51bWJlciwgY2xpY2tPckVudGVyOiBzdHJpbmcpIHtcbiAgICBpZiAoY2xpY2tPckVudGVyID09PSAnZW50ZXInKSB7XG4gICAgICBjb25zdCB0YWdSZW1vdmVFbGVtZW50czogQXJyYXk8YW55PiA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucG8tdGFnLXJlbW92ZScpO1xuICAgICAgaW5kZXhDbG9zZWQgPSBpbmRleENsb3NlZCB8fCBpbmRleENsb3NlZCA9PT0gMCA/IGluZGV4Q2xvc2VkIDogdGFnUmVtb3ZlRWxlbWVudHMubGVuZ3RoO1xuICAgICAgaWYgKHRhZ1JlbW92ZUVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgYFVuc2VsZWN0ZWQgaXRlbXMgJHt0aGlzLmxhYmVsfWApO1xuICAgICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkodHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvY3VzT25SZW1vdmVUYWcodGFnUmVtb3ZlRWxlbWVudHMsIGluZGV4Q2xvc2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXhDbG9zZWQgPSAwO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZUtleWJvYXJkTmF2aWdhdGlvblRhZyhpbmRleENsb3NlZCk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzT25SZW1vdmVUYWcodGFnOiBhbnksIGluZGV4Q2xvc2VkOiBudW1iZXIpIHtcbiAgICBpZiAodGFnLmxlbmd0aCA9PT0gaW5kZXhDbG9zZWQpIHtcbiAgICAgIHRhZ1tpbmRleENsb3NlZCAtIDFdPy5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdbaW5kZXhDbG9zZWRdPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlib2FyZE5hdmlnYXRpb25UYWcoaW5pdGlhbEluZGV4ID0gMCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgY29uc3QgdGFnUmVtb3ZlRWxlbWVudHMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBvLXRhZy1yZW1vdmUnKTtcbiAgICB0aGlzLmluaXRpYWxpemVUYWdSZW1vdmVFbGVtZW50cyh0YWdSZW1vdmVFbGVtZW50cywgaW5pdGlhbEluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFiSW5kZXgoZWxlbWVudCwgdGFiSW5kZXgpIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCB0YWJJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFycm93TGVmdCh0YWdSZW1vdmVFbGVtZW50cywgaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICB0aGlzLnNldFRhYkluZGV4KHRhZ1JlbW92ZUVsZW1lbnRzW2luZGV4XSwgLTEpO1xuICAgICAgdGFnUmVtb3ZlRWxlbWVudHNbaW5kZXggLSAxXS5mb2N1cygpO1xuICAgICAgdGhpcy5zZXRUYWJJbmRleCh0YWdSZW1vdmVFbGVtZW50c1tpbmRleCAtIDFdLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFycm93UmlnaHQodGFnUmVtb3ZlRWxlbWVudHMsIGluZGV4KSB7XG4gICAgaWYgKGluZGV4IDwgdGFnUmVtb3ZlRWxlbWVudHMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5zZXRUYWJJbmRleCh0YWdSZW1vdmVFbGVtZW50c1tpbmRleF0sIC0xKTtcbiAgICAgIHRhZ1JlbW92ZUVsZW1lbnRzW2luZGV4ICsgMV0uZm9jdXMoKTtcbiAgICAgIHRoaXMuc2V0VGFiSW5kZXgodGFnUmVtb3ZlRWxlbWVudHNbaW5kZXggKyAxXSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWdSZW1vdmVFbGVtZW50cywgaW5kZXgpIHtcbiAgICBjb25zdCBLRVlfU1BBQ0UgPSAnU3BhY2UnO1xuICAgIGNvbnN0IEtFWV9BUlJPV19MRUZUID0gJ0Fycm93TGVmdCc7XG4gICAgY29uc3QgS0VZX0FSUk9XX1JJR0hUID0gJ0Fycm93UmlnaHQnO1xuICAgIHRoaXMuZm9jdXNPblRhZyA9IHRydWU7XG5cbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gS0VZX1NQQUNFKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZX0FSUk9XX0xFRlQpIHtcbiAgICAgIHRoaXMuaGFuZGxlQXJyb3dMZWZ0KHRhZ1JlbW92ZUVsZW1lbnRzLCBpbmRleCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IEtFWV9BUlJPV19SSUdIVCkge1xuICAgICAgdGhpcy5oYW5kbGVBcnJvd1JpZ2h0KHRhZ1JlbW92ZUVsZW1lbnRzLCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGFnUmVtb3ZlRWxlbWVudHModGFnUmVtb3ZlRWxlbWVudHMsIGluaXRpYWxJbmRleCkge1xuICAgIHRhZ1JlbW92ZUVsZW1lbnRzLmZvckVhY2goKHRhZ1JlbW92ZUVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPT09IGluaXRpYWxJbmRleCkge1xuICAgICAgICB0aGlzLnNldFRhYkluZGV4KHRhZ1JlbW92ZUVsZW1lbnRzW2luaXRpYWxJbmRleF0sIDApO1xuICAgICAgfSBlbHNlIGlmICh0YWdSZW1vdmVFbGVtZW50cy5sZW5ndGggPT09IGluaXRpYWxJbmRleCkge1xuICAgICAgICB0aGlzLnNldFRhYkluZGV4KHRhZ1JlbW92ZUVsZW1lbnRzW2luaXRpYWxJbmRleCAtIDFdLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0VGFiSW5kZXgodGFnUmVtb3ZlRWxlbWVudCwgLTEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgIGZyb21FdmVudCh0YWdSZW1vdmVFbGVtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUtleURvd24oZXZlbnQsIHRhZ1JlbW92ZUVsZW1lbnRzLCBpbmRleCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tPdXRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy53YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcblxuICAgICAgaXNNb2JpbGUoKSA/IHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKSA6IHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICB9O1xuXG4gIHByaXZhdGUgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duSWNvbiA9ICdJQ09OX0FSUk9XX1VQJztcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IHRydWU7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmNvbnRyb2xWaXNpYmlsaXR5KHRydWUpO1xuICAgIHRoaXMuc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bih0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbnMoKTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2V0UG9zaXRpb25Ecm9wZG93bigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xpY2tPdXRMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja091dExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UG9zaXRpb25Ecm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5zZXRFbGVtZW50cyhcbiAgICAgIHRoaXMuZHJvcGRvd24uY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICBwb011bHRpc2VsZWN0Q29udGFpbmVyT2Zmc2V0LFxuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQsXG4gICAgICBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyXG4gIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3AtbGFiZWxdPVwibGFiZWxcIlxuICBbcC1vcHRpb25hbF09XCJvcHRpb25hbFwiXG4gIFtwLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW3Atc2hvdy1yZXF1aXJlZF09XCJzaG93UmVxdWlyZWRcIlxuPlxuICA8ZGl2XG4gICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiXG4gICAgW2NsYXNzLnBvLW11bHRpc2VsZWN0LXNob3ddPVwiZHJvcGRvd25PcGVuXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICAgIGNsYXNzPVwicG8taW5wdXQtaWNvbi1yaWdodCBwby1tdWx0aXNlbGVjdC1pbnB1dFwiXG4gICAgICBbY2xhc3MucG8tbXVsdGlzZWxlY3QtaW5wdXQtYXV0b109XCJhdXRvSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5wby1tdWx0aXNlbGVjdC1pbnB1dC1zdGF0aWNdPVwiIWF1dG9IZWlnaHRcIlxuICAgICAgW2NsYXNzLnBvLW11bHRpc2VsZWN0LWlucHV0LWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtjbGFzcy5wby1tdWx0aXNlbGVjdC1pbnB1dC1mb250XT1cIiFkaXNhYmxlZCAmJiAhdmlzaWJsZVRhZ3M/Lmxlbmd0aFwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KClcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWRpc2FibGVkICYmICF2aXNpYmxlVGFncz8ubGVuZ3RoXCIgY2xhc3M9XCJwby1tdWx0aXNlbGVjdC1pbnB1dC1wbGFjZWhvbGRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICB7eyBwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyIDogbGl0ZXJhbHMuc2VsZWN0SXRlbSB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8cG8tdGFnXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2YgdmlzaWJsZVRhZ3M7IGluZGV4IGFzIGlcIlxuICAgICAgICBbcC12YWx1ZV09XCJ0YWdbZmllbGRMYWJlbF1cIlxuICAgICAgICBbcC1saXRlcmFsc109XCJpICsgMSA9PT0gdmlzaWJsZVRhZ3MubGVuZ3RoICYmIGhhc01vcmVUYWcgPyBsaXRlcmFsc1RhZyA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtwLXJlbW92YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJ0YWdbZmllbGRWYWx1ZV0gPT09ICcnICYmICFkaXNhYmxlZFwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKHAtY2xvc2UpPVwiY2xvc2VUYWcodGFnW2ZpZWxkVmFsdWVdLCAkZXZlbnQpXCJcbiAgICAgID48L3BvLXRhZz5cblxuICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICAgIDxwby1pY29uXG4gICAgICAgICAgcC1pY29uPVwie3sgZHJvcGRvd25JY29uIH19XCJcbiAgICAgICAgICAjaWNvbkVsZW1lbnRcbiAgICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWljb24ge3sgZGlzYWJsZWQgPyAncG8taWNvbi1pbnB1dC1kaXNhYmxlZCcgOiAncG8taWNvbi1pbnB1dCcgfX1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ3BvLWZpZWxkLWljb24tZGlzYWJsZWQnIDogJydcIlxuICAgICAgICA+XG4gICAgICAgIDwvcG8taWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZW5kQm94OyB0aGVuIGRyb3Bkb3duQ0RLOyBlbHNlIGRyb3Bkb3duRGVmYXVsdFwiPiA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duRGVmYXVsdD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25MaXN0Ym94XCI+IDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25DREs+XG4gICAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJ0cnVlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25MaXN0Ym94XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1oZWxwXT1cImhlbHBcIiBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duTGlzdGJveD5cbiAgPHBvLW11bHRpc2VsZWN0LWRyb3Bkb3duXG4gICAgI2Ryb3Bkb3duRWxlbWVudFxuICAgIFtwLXNlYXJjaGluZ109XCJpc1NlcnZlclNlYXJjaGluZ1wiXG4gICAgW3AtaGlkZS1zZWFyY2hdPVwiaGlkZVNlYXJjaFwiXG4gICAgW3AtaGlkZS1zZWxlY3QtYWxsXT1cImhpZGVTZWxlY3RBbGxcIlxuICAgIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCJcbiAgICBbcC1vcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtwLXZpc2libGUtb3B0aW9uc109XCJ2aXNpYmxlT3B0aW9uc0Ryb3Bkb3duXCJcbiAgICBbcC1zZWxlY3RlZC1vcHRpb25zXT1cInNlbGVjdGVkT3B0aW9uc1wiXG4gICAgW3AtcGxhY2Vob2xkZXItc2VhcmNoXT1cInBsYWNlaG9sZGVyU2VhcmNoXCJcbiAgICBbcC1maWVsZC12YWx1ZV09XCJmaWVsZFZhbHVlXCJcbiAgICBbcC1maWVsZC1sYWJlbF09XCJmaWVsZExhYmVsXCJcbiAgICBbcC1tdWx0aXNlbGVjdC10ZW1wbGF0ZV09XCJtdWx0aXNlbGVjdE9wdGlvblRlbXBsYXRlXCJcbiAgICAocC1jaGFuZ2UpPVwiY2hhbmdlSXRlbXMoJGV2ZW50KVwiXG4gICAgKHAtY2hhbmdlLXNlYXJjaCk9XCJjaGFuZ2VTZWFyY2goJGV2ZW50KVwiXG4gICAgKHAtY2xvc2UtZHJvcGRvd24pPVwiY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSlcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5RG93bkRyb3Bkb3duKCRldmVudCwgMClcIlxuICA+XG4gIDwvcG8tbXVsdGlzZWxlY3QtZHJvcGRvd24+XG48L25nLXRlbXBsYXRlPlxuIl19
694
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUtWLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7O0lDQXpI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WHZDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvS2V5Q29kZUVudW0gfSBmcm9tICcuLy4uLy4uLy4uL2VudW1zL3BvLWtleS1jb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1jb250cm9sLXBvc2l0aW9uL3BvLWNvbnRyb2wtcG9zaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4vLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZSB9IGZyb20gJy4vcG8tbXVsdGlzZWxlY3QtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdE9wdGlvblRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1vcHRpb24tdGVtcGxhdGUvcG8tbXVsdGlzZWxlY3Qtb3B0aW9uLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1vcHRpb24uaW50ZXJmYWNlJztcblxuY29uc3QgcG9NdWx0aXNlbGVjdENvbnRhaW5lck9mZnNldCA9IDg7XG5jb25zdCBwb011bHRpc2VsZWN0Q29udGFpbmVyUG9zaXRpb25EZWZhdWx0ID0gJ2JvdHRvbSc7XG5jb25zdCBwb011bHRpc2VsZWN0SW5wdXRQYWRkaW5nUmlnaHQgPSA1MjtcbmNvbnN0IHBvTXVsdGlzZWxlY3RTcGFjZUJldHdlZW5UYWdzID0gODtcblxuY29uc3QgbGl0ZXJhbHNUYWdSZW1vdmVPdGhlcnMgPSB7XG4gIHB0OiB7XG4gICAgcmVtb3ZlOiAnUmVtb3ZlciB0b2RvcyBvcyBpdGVucyBzZWxlY2lvbmFkb3MnXG4gIH0sXG4gIHJ1OiB7XG4gICAgcmVtb3ZlOiAn0KPQtNCw0LvQuNGC0Ywg0LLRgdC1INCy0YvQsdGA0LDQvdC90YvQtSDRjdC70LXQvNC10L3RgtGLJ1xuICB9LFxuICBlczoge1xuICAgIHJlbW92ZTogJ0VsaW1pbmFyIHRvZG9zIGxvcyBlbGVtZW50b3Mgc2VsZWNjaW9uYWRvcydcbiAgfSxcbiAgZW46IHtcbiAgICByZW1vdmU6ICdDbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMnXG4gIH1cbn07XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlLFxuICBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb011bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb011bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XG5dO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb011bHRpc2VsZWN0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWJhc2ljXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtYmFzaWMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWxhYnNcIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LXZhY2F0aW9uXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIFZhY2F0aW9uXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24vc2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBWYWNhdGlvbiBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC10ZW1wbGF0ZVwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBUZW1wbGF0ZVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LXRlbXBsYXRlL3NhbXBsZS1wby1tdWx0aXNlbGVjdC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdGVtcGxhdGUvc2FtcGxlLXBvLW11bHRpc2VsZWN0LXRlbXBsYXRlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWhlcm9lc1wiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBIZXJvZXMgLSB1c2luZyBBUElcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtYW55LWFycmF5XCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIEFycmF5IEFueVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWFueS1hcnJheS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtYW55LWFycmF5LmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1hbnktYXJyYXkvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWFueS1hcnJheS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbXVsdGlzZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzXG59KVxuZXhwb3J0IGNsYXNzIFBvTXVsdGlzZWxlY3RDb21wb25lbnRcbiAgZXh0ZW5kcyBQb011bHRpc2VsZWN0QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gIEBDb250ZW50Q2hpbGQoUG9NdWx0aXNlbGVjdE9wdGlvblRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBtdWx0aXNlbGVjdE9wdGlvblRlbXBsYXRlOiBQb011bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGRyb3Bkb3duRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25FbGVtZW50JykgZHJvcGRvd247XG4gIEBWaWV3Q2hpbGQoJ2ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaWNvbkVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnb3V0ZXJDb250YWluZXIgJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG91dGVyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIGxpdGVyYWxzVGFnO1xuICBkcm9wZG93bkljb246IHN0cmluZyA9ICdJQ09OX0FSUk9XX0RPV04nO1xuICBkcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgaGFzTW9yZVRhZzogYm9vbGVhbjtcbiAgdGltZW91dFJlc2l6ZTtcbiAgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcbiAgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIGVudGVyQ2xvc2VUYWcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbml0Q2FsY3VsYXRlSXRlbXMgPSB0cnVlO1xuICBwcml2YXRlIGlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBjYWNoZU9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+O1xuICBwcml2YXRlIGZvY3VzT25UYWcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNvbnRyb2xQb3NpdGlvbjogUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBkZWZhdWx0U2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihsYW5ndWFnZVNlcnZpY2UpO1xuICAgIGNvbnN0IGxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgICB0aGlzLmxpdGVyYWxzVGFnID0ge1xuICAgICAgLi4ubGl0ZXJhbHNUYWdSZW1vdmVPdGhlcnNbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgIC4uLmxpdGVyYWxzVGFnUmVtb3ZlT3RoZXJzW2xhbmd1YWdlXVxuICAgIH07XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLmZpbHRlclNlcnZpY2UgJiYgKGNoYW5nZXMuZmlsdGVyU2VydmljZSB8fCBjaGFuZ2VzLmZpZWxkVmFsdWUgfHwgY2hhbmdlcy5maWVsZExhYmVsKSkge1xuICAgICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIC8vIFBlcm1pdGUgcXVlIGFzIHRhZ3Mgc2VqYW0gY2FsY3VsYWRhcyBuYSBwcmltZWlyYSB2ZXogcXVlIG8gY29tcG9uZW50ZSB0b3JuYS1zZSB2aXPDrXZlbCxcbiAgICAvLyBldml0YW5kbyBjb20gaXNzbywgcHJvYmxlbWFzIGNvbSBUYWJzIG91IERpdnMgcXVlIGluaWNpZW0gZXNjb25kaWRhcy5cbiAgICBpZiAoKGlucHV0V2lkdGggJiYgIXRoaXMudmlzaWJsZUVsZW1lbnQgJiYgdGhpcy5pbml0aWFsaXplZCkgfHwgKGlucHV0V2lkdGggJiYgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcykpIHtcbiAgICAgIHRoaXMuZGVib3VuY2VSZXNpemUoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5nZXRPYmplY3RzQnlWYWx1ZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5maWx0ZXJTdWJqZWN0Py51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogRnVuw6fDo28gcXVlIGF0cmlidWkgZm9jbyBhbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIHV0aWxpesOhLWxhIMOpIG5lY2Vzc8OhcmlvIHRlciBhIGluc3TDom5jaWEgZG8gY29tcG9uZW50ZSBubyBET00sIHBvZGVuZG8gc2VyIHV0aWxpemFkbyBvIFZpZXdDaGlsZCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBvTXVsdGlzZWxlY3RDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvTXVsdGlzZWxlY3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIG11bHRpc2VsZWN0OiBQb011bHRpc2VsZWN0Q29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c011bHRpc2VsZWN0KCkge1xuICAgKiAgIHRoaXMubXVsdGlzZWxlY3QuZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldElucHV0V2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucG8tbXVsdGlzZWxlY3QtaW5wdXQnKS5vZmZzZXRXaWR0aCAtIHBvTXVsdGlzZWxlY3RJbnB1dFBhZGRpbmdSaWdodDtcbiAgfVxuXG4gIGdldFRhZ3NXaWR0aCgpIHtcbiAgICBjb25zdCB0YWdzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3BvLXRhZycpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRhZ3MpLm1hcCh0YWcgPT4gdGFnWydvZmZzZXRXaWR0aCddKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZVZpc2libGVJdGVtcygpIHtcbiAgICB0aGlzLmhhc01vcmVUYWcgPSBmYWxzZTtcbiAgICBjb25zdCB0YWdzV2lkdGggPSB0aGlzLmdldFRhZ3NXaWR0aCgpO1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmdldElucHV0V2lkdGgoKTtcbiAgICBjb25zdCBleHRyYVRhZ1NpemUgPSA2MztcbiAgICBjb25zdCB0YWdzVmlzaWJsZSA9IHRhZ3NXaWR0aFswXTtcblxuICAgIHRoaXMudmlzaWJsZVRhZ3MgPSBbXTtcblxuICAgIGlmIChpbnB1dFdpZHRoID4gMCkge1xuICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc3VtICs9IHRhZ3NXaWR0aFtpXSArIHBvTXVsdGlzZWxlY3RTcGFjZUJldHdlZW5UYWdzO1xuICAgICAgICB0aGlzLnZpc2libGVUYWdzLnB1c2godGhpcy5zZWxlY3RlZE9wdGlvbnNbaV0pO1xuXG4gICAgICAgIGlmIChzdW0gPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgc3VtIC09IHRhZ3NXaWR0aFtpXTtcbiAgICAgICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRhZ3NWaXNpYmxlIHx8ICF0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGkgPT09IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhc01vcmVUYWcgPSB0cnVlO1xuICAgICAgICBpZiAoc3VtICsgZXh0cmFUYWdTaXplID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIHRoaXMudmlzaWJsZVRhZ3Muc3BsaWNlKC0yLCAyKTtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9ICcrJyArICh0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggKyAxIC0gaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICB0aGlzLnZpc2libGVUYWdzLnB1c2goeyBbdGhpcy5maWVsZFZhbHVlXTogJycsIFt0aGlzLmZpZWxkTGFiZWxdOiBsYWJlbCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpc2libGVUYWdzLnNwbGljZSgtMSwgMSk7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoIC0gaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICB0aGlzLnZpc2libGVUYWdzLnB1c2goeyBbdGhpcy5maWVsZFZhbHVlXTogJycsIFt0aGlzLmZpZWxkTGFiZWxdOiBsYWJlbCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW5pdENhbGN1bGF0ZUl0ZW1zKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlS2V5Ym9hcmROYXZpZ2F0aW9uVGFnKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgICB0aGlzLmluaXRDYWxjdWxhdGVJdGVtcyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2hhbmdlSXRlbXMoY2hhbmdlZEl0ZW1zKSB7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZE9wdGlvbnMoY2hhbmdlZEl0ZW1zKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG5cbiAgICBpZiAodGhpcy5hdXRvSGVpZ2h0ICYmIHRoaXMuZHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUtleWJvYXJkTmF2aWdhdGlvblRhZygpO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25zKSB7XG4gICAgICB0aGlzLnZpc2libGVUYWdzID0gW10uY29uY2F0KHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG5cbiAgICAvLyBxdWFuZG8gZXN0aXZlciBkZW50cm8gZGUgbW9kYWxcbiAgICBpZiAoIXRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRlYm91bmNlUmVzaXplKCkge1xuICAgIGlmICghdGhpcy5hdXRvSGVpZ2h0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0UmVzaXplKTtcbiAgICAgIHRoaXMudGltZW91dFJlc2l6ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSA9PT0gJ3N0cmluZycgJiZcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykuaW5jbHVkZXMoJ1Vuc2VsZWN0ZWQnKVxuICAgICkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLmxhYmVsID8gdGhpcy5sYWJlbCA6ICcnKTtcbiAgICB9XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZD8uKCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ/OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS50YWIgJiYgIXRoaXMuZm9jdXNPblRhZykge1xuICAgICAgdGhpcy5jb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5mb2N1c09uVGFnID0gZmFsc2U7XG5cbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS50YWIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS5lc2MpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBQb0tleUNvZGVFbnVtLmFycm93RG93biAmJiB0aGlzLnZpc2libGVUYWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkodHJ1ZSk7XG4gICAgICB0aGlzLmRyb3Bkb3duPy5saXN0Ym94Py5zZXRGb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBQb0tleUNvZGVFbnVtLmVudGVyICYmICF0aGlzLmVudGVyQ2xvc2VUYWcpIHtcbiAgICAgIGlmICh0aGlzLnZpc2libGVUYWdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duVmlzaWJpbGl0eSgpO1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS5zcGFjZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KCk7XG4gICAgfVxuICAgIHRoaXMuZW50ZXJDbG9zZVRhZyA9IGZhbHNlO1xuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5hcHBseUZpbHRlckluRmlyc3RDbGljaygpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSghdGhpcy5kcm9wZG93bk9wZW4pO1xuICB9XG5cbiAgb25LZXlEb3duRHJvcGRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRyb3Bkb3duKHRvT3Blbikge1xuICAgIGlmICh0b09wZW4gJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBjb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KHRvT3BlbjogYm9vbGVhbikge1xuICAgIHRvT3BlbiA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25zICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICBvcHRpb24gPT4gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0gPT09IHRoaXMuc2VsZWN0ZWRPcHRpb25zWzBdW3RoaXMuZmllbGRWYWx1ZV1cbiAgICAgICk7XG4gICAgICB0aGlzLmRyb3Bkb3duLnNjcm9sbFRvKGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBzZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKG9wdGlvbnMpIHtcbiAgICB0aGlzLnZpc2libGVPcHRpb25zRHJvcGRvd24gPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjaGFuZ2VTZWFyY2goZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnRbdGhpcy5maWVsZFZhbHVlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyU3ViamVjdC5uZXh0KGV2ZW50W3RoaXMuZmllbGRWYWx1ZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWFyY2hCeUxhYmVsKGV2ZW50W3RoaXMuZmllbGRWYWx1ZV0sIHRoaXMub3B0aW9ucywgdGhpcy5maWx0ZXJNb2RlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gdGltZW91dCBuZWNlc3PDoXJpbyBwYXJhIHJlcG9zaWNpb25hciBjb3JyZXRhbWVudGUgcXVhbmRvIGRyb3Bkb3duIGVzdGl2ZXIgcHJhIGNpbWEgZG8gaW5wdXQgZSByZWFsaXphciBidXNjYSBubyBpbnB1dFxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpKTtcbiAgfVxuXG4gIGNsb3NlVGFnKHZhbHVlLCBldmVudCkge1xuICAgIGxldCBpbmRleDtcbiAgICB0aGlzLmVudGVyQ2xvc2VUYWcgPSB0cnVlO1xuICAgIGlmICghdmFsdWUgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuaW5jbHVkZXMoJysnKSkpIHtcbiAgICAgIGluZGV4ID0gbnVsbDtcbiAgICAgIGNvbnN0IGl0ZW1zTm90SW5WaXNpYmxlVGFncyA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmZpbHRlcihvcHRpb24gPT4gIXRoaXMudmlzaWJsZVRhZ3MuaW5jbHVkZXMob3B0aW9uKSk7XG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLnZpc2libGVUYWdzKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZE9wdGlvbnMuaW5jbHVkZXMob3B0aW9uKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnNwbGljZSh0aGlzLnZpc2libGVUYWdzLmxlbmd0aCAtIDEsIGl0ZW1zTm90SW5WaXNpYmxlVGFncy5sZW5ndGgpO1xuICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4ID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb25bdGhpcy5maWVsZFZhbHVlXSA9PT0gdmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzT25OZXh0VGFnKGluZGV4LCBldmVudCk7XG4gICAgfSwgMzAwKTtcbiAgfVxuXG4gIHdhc0NsaWNrZWRPblRvZ2dsZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuICYmXG4gICAgICAhdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5pY29uRWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLmRyb3Bkb3duRWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICApIHtcbiAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlGaWx0ZXIodmFsdWU6IHN0cmluZyA9ICcnKTogT2JzZXJ2YWJsZTxBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55Pj4ge1xuICAgIGNvbnN0IHBhcmFtID0geyBwcm9wZXJ0eTogdGhpcy5maWVsZExhYmVsLCB2YWx1ZTogdmFsdWUgfTtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEZpbHRlcmVkRGF0YShwYXJhbSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgdGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgfSksXG4gICAgICB0YXAoKG9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0T3B0aW9uc0J5QXBwbHlGaWx0ZXIob3B0aW9ucyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RmlsdGVySW5GaXJzdENsaWNrKCkge1xuICAgIGlmICh0aGlzLmlzRmlyc3RGaWx0ZXIpIHtcbiAgICAgIHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSB0cnVlO1xuXG4gICAgICAvLyBuZWNlc3NhcmlvIGVudmlhciB1bSBvYmpldG8gc3RyaW5nIHZhemlhIHBhcmEgcmVmYXplciBhIGJ1c2NhLCBxdWFuZG8gYWx0ZXJhciBmaWx0ZXJTZXJ2aWNlLCBmaWVsZFZhbHVlIGUgZmllbGRMYWJlbFxuICAgICAgLy8gcG9pcyB0ZW1vcyBvIGRpc3RpbmN0VW50aWxDaGFuZ2Ugbm8gcGlwZSBkbyBmaWx0ZXJTdWJqZWN0XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXctd3JhcHBlcnMgKi9cbiAgICAgIHRoaXMuZmlsdGVyU3ViamVjdC5uZXh0KG5ldyBTdHJpbmcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFsuLi50aGlzLmNhY2hlT3B0aW9uc107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcHRpb25zQnlBcHBseUZpbHRlcihpdGVtczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4pIHtcbiAgICBpZiAodGhpcy5pc0ZpcnN0RmlsdGVyKSB7XG4gICAgICB0aGlzLmNhY2hlT3B0aW9ucyA9IFsuLi5pdGVtc107XG4gICAgICB0aGlzLmlzRmlyc3RGaWx0ZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBbLi4uaXRlbXNdO1xuICAgIHRoaXMuc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bih0aGlzLm9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RDb250YWluZXJQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5hZGp1c3RQb3NpdGlvbihwb011bHRpc2VsZWN0Q29udGFpbmVyUG9zaXRpb25EZWZhdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkljb24gPSAnSUNPTl9BUlJPV19ET1dOJztcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5kcm9wZG93bi5jb250cm9sVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG5cbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c09uTmV4dFRhZyhpbmRleENsb3NlZDogbnVtYmVyLCBjbGlja09yRW50ZXI6IHN0cmluZykge1xuICAgIGlmIChjbGlja09yRW50ZXIgPT09ICdlbnRlcicpIHtcbiAgICAgIGNvbnN0IHRhZ1JlbW92ZUVsZW1lbnRzOiBBcnJheTxhbnk+ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wby10YWctcmVtb3ZlJyk7XG4gICAgICBpbmRleENsb3NlZCA9IGluZGV4Q2xvc2VkIHx8IGluZGV4Q2xvc2VkID09PSAwID8gaW5kZXhDbG9zZWQgOiB0YWdSZW1vdmVFbGVtZW50cy5sZW5ndGg7XG4gICAgICBpZiAodGFnUmVtb3ZlRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBgVW5zZWxlY3RlZCBpdGVtcyAke3RoaXMubGFiZWx9YCk7XG4gICAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9jdXNPblJlbW92ZVRhZyh0YWdSZW1vdmVFbGVtZW50cywgaW5kZXhDbG9zZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleENsb3NlZCA9IDA7XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlS2V5Ym9hcmROYXZpZ2F0aW9uVGFnKGluZGV4Q2xvc2VkKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNPblJlbW92ZVRhZyh0YWc6IGFueSwgaW5kZXhDbG9zZWQ6IG51bWJlcikge1xuICAgIGlmICh0YWcubGVuZ3RoID09PSBpbmRleENsb3NlZCkge1xuICAgICAgdGFnW2luZGV4Q2xvc2VkIC0gMV0/LmZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhZ1tpbmRleENsb3NlZF0/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleWJvYXJkTmF2aWdhdGlvblRhZyhpbml0aWFsSW5kZXggPSAwKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBjb25zdCB0YWdSZW1vdmVFbGVtZW50cyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucG8tdGFnLXJlbW92ZScpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRhZ1JlbW92ZUVsZW1lbnRzKHRhZ1JlbW92ZUVsZW1lbnRzLCBpbml0aWFsSW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJJbmRleChlbGVtZW50LCB0YWJJbmRleCkge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIHRhYkluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQXJyb3dMZWZ0KHRhZ1JlbW92ZUVsZW1lbnRzLCBpbmRleCkge1xuICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgIHRoaXMuc2V0VGFiSW5kZXgodGFnUmVtb3ZlRWxlbWVudHNbaW5kZXhdLCAtMSk7XG4gICAgICB0YWdSZW1vdmVFbGVtZW50c1tpbmRleCAtIDFdLmZvY3VzKCk7XG4gICAgICB0aGlzLnNldFRhYkluZGV4KHRhZ1JlbW92ZUVsZW1lbnRzW2luZGV4IC0gMV0sIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQXJyb3dSaWdodCh0YWdSZW1vdmVFbGVtZW50cywgaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPCB0YWdSZW1vdmVFbGVtZW50cy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLnNldFRhYkluZGV4KHRhZ1JlbW92ZUVsZW1lbnRzW2luZGV4XSwgLTEpO1xuICAgICAgdGFnUmVtb3ZlRWxlbWVudHNbaW5kZXggKyAxXS5mb2N1cygpO1xuICAgICAgdGhpcy5zZXRUYWJJbmRleCh0YWdSZW1vdmVFbGVtZW50c1tpbmRleCArIDFdLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHRhZ1JlbW92ZUVsZW1lbnRzLCBpbmRleCkge1xuICAgIGNvbnN0IEtFWV9TUEFDRSA9ICdTcGFjZSc7XG4gICAgY29uc3QgS0VZX0FSUk9XX0xFRlQgPSAnQXJyb3dMZWZ0JztcbiAgICBjb25zdCBLRVlfQVJST1dfUklHSFQgPSAnQXJyb3dSaWdodCc7XG4gICAgdGhpcy5mb2N1c09uVGFnID0gdHJ1ZTtcblxuICAgIGlmIChldmVudC5jb2RlID09PSBLRVlfU1BBQ0UpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlfQVJST1dfTEVGVCkge1xuICAgICAgdGhpcy5oYW5kbGVBcnJvd0xlZnQodGFnUmVtb3ZlRWxlbWVudHMsIGluZGV4KTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gS0VZX0FSUk9XX1JJR0hUKSB7XG4gICAgICB0aGlzLmhhbmRsZUFycm93UmlnaHQodGFnUmVtb3ZlRWxlbWVudHMsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUYWdSZW1vdmVFbGVtZW50cyh0YWdSZW1vdmVFbGVtZW50cywgaW5pdGlhbEluZGV4KSB7XG4gICAgdGFnUmVtb3ZlRWxlbWVudHMuZm9yRWFjaCgodGFnUmVtb3ZlRWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gaW5pdGlhbEluZGV4KSB7XG4gICAgICAgIHRoaXMuc2V0VGFiSW5kZXgodGFnUmVtb3ZlRWxlbWVudHNbaW5pdGlhbEluZGV4XSwgMCk7XG4gICAgICB9IGVsc2UgaWYgKHRhZ1JlbW92ZUVsZW1lbnRzLmxlbmd0aCA9PT0gaW5pdGlhbEluZGV4KSB7XG4gICAgICAgIHRoaXMuc2V0VGFiSW5kZXgodGFnUmVtb3ZlRWxlbWVudHNbaW5pdGlhbEluZGV4IC0gMV0sIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRUYWJJbmRleCh0YWdSZW1vdmVFbGVtZW50LCAtMSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgZnJvbUV2ZW50KHRhZ1JlbW92ZUVsZW1lbnQsICdrZXlkb3duJykuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlS2V5RG93bihldmVudCwgdGFnUmVtb3ZlRWxlbWVudHMsIGluZGV4KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jbGlja091dExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLndhc0NsaWNrZWRPblRvZ2dsZShldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuXG4gICAgICBpc01vYmlsZSgpID8gdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpIDogdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBvcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25JY29uID0gJ0lDT05fQVJST1dfVVAnO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuZHJvcGRvd24uY29udHJvbFZpc2liaWxpdHkodHJ1ZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkT3B0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXRQb3NpdGlvbkRyb3Bkb3duKCk7XG5cbiAgICBpZiAodGhpcy5kcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMuc2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGlja091dExpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrT3V0TGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250YWluZXJXaWR0aCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdXRlckNvbnRhaW5lcikge1xuICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IHRoaXMub3V0ZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uc2V0RWxlbWVudHMoXG4gICAgICB0aGlzLmRyb3Bkb3duLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgcG9NdWx0aXNlbGVjdENvbnRhaW5lck9mZnNldCxcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LFxuICAgICAgWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgfVxufVxuIiwiPGRpdiAjb3V0ZXJDb250YWluZXI+XG4gIDxwby1maWVsZC1jb250YWluZXJcbiAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3AtbGFiZWxdPVwibGFiZWxcIlxuICAgIFtwLW9wdGlvbmFsXT1cIm9wdGlvbmFsXCJcbiAgICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW3Atc2hvdy1yZXF1aXJlZF09XCJzaG93UmVxdWlyZWRcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICAgIGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnRcIlxuICAgICAgW2NsYXNzLnBvLW11bHRpc2VsZWN0LXNob3ddPVwiZHJvcGRvd25PcGVuXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgICAgW3RhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJwby1pbnB1dC1pY29uLXJpZ2h0IHBvLW11bHRpc2VsZWN0LWlucHV0XCJcbiAgICAgICAgW2NsYXNzLnBvLW11bHRpc2VsZWN0LWlucHV0LWF1dG9dPVwiYXV0b0hlaWdodFwiXG4gICAgICAgIFtjbGFzcy5wby1tdWx0aXNlbGVjdC1pbnB1dC1zdGF0aWNdPVwiIWF1dG9IZWlnaHRcIlxuICAgICAgICBbY2xhc3MucG8tbXVsdGlzZWxlY3QtaW5wdXQtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MucG8tbXVsdGlzZWxlY3QtaW5wdXQtZm9udF09XCIhZGlzYWJsZWQgJiYgIXZpc2libGVUYWdzPy5sZW5ndGhcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93blZpc2liaWxpdHkoKVwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhZGlzYWJsZWQgJiYgIXZpc2libGVUYWdzPy5sZW5ndGhcIiBjbGFzcz1cInBvLW11bHRpc2VsZWN0LWlucHV0LXBsYWNlaG9sZGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAge3sgcGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6IGxpdGVyYWxzLnNlbGVjdEl0ZW0gfX1cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxwby10YWdcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHZpc2libGVUYWdzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICBbcC12YWx1ZV09XCJ0YWdbZmllbGRMYWJlbF1cIlxuICAgICAgICAgIFtwLWxpdGVyYWxzXT1cImkgKyAxID09PSB2aXNpYmxlVGFncy5sZW5ndGggJiYgaGFzTW9yZVRhZyA/IGxpdGVyYWxzVGFnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbcC1yZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJ0YWdbZmllbGRWYWx1ZV0gPT09ICcnICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChwLWNsb3NlKT1cImNsb3NlVGFnKHRhZ1tmaWVsZFZhbHVlXSwgJGV2ZW50KVwiXG4gICAgICAgID48L3BvLXRhZz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgICAgICA8cG8taWNvblxuICAgICAgICAgICAgcC1pY29uPVwie3sgZHJvcGRvd25JY29uIH19XCJcbiAgICAgICAgICAgICNpY29uRWxlbWVudFxuICAgICAgICAgICAgY2xhc3M9XCJwby1maWVsZC1pY29uIHt7IGRpc2FibGVkID8gJ3BvLWljb24taW5wdXQtZGlzYWJsZWQnIDogJ3BvLWljb24taW5wdXQnIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ3BvLWZpZWxkLWljb24tZGlzYWJsZWQnIDogJydcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3BvLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZW5kQm94OyB0aGVuIGRyb3Bkb3duQ0RLOyBlbHNlIGRyb3Bkb3duRGVmYXVsdFwiPiA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25EZWZhdWx0PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3Bkb3duTGlzdGJveFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bkNESz5cbiAgICAgIDxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5IFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwidHJ1ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25MaXN0Ym94XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1oZWxwXT1cImhlbHBcIiBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbiAgPC9wby1maWVsZC1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNkcm9wZG93bkxpc3Rib3g+XG4gICAgPHBvLW11bHRpc2VsZWN0LWRyb3Bkb3duXG4gICAgICAjZHJvcGRvd25FbGVtZW50XG4gICAgICBbcC1zZWFyY2hpbmddPVwiaXNTZXJ2ZXJTZWFyY2hpbmdcIlxuICAgICAgW3AtaGlkZS1zZWFyY2hdPVwiaGlkZVNlYXJjaFwiXG4gICAgICBbcC1oaWRlLXNlbGVjdC1hbGxdPVwiaGlkZVNlbGVjdEFsbFwiXG4gICAgICBbcC1saXRlcmFsc109XCJsaXRlcmFsc1wiXG4gICAgICBbcC1vcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgW3AtdmlzaWJsZS1vcHRpb25zXT1cInZpc2libGVPcHRpb25zRHJvcGRvd25cIlxuICAgICAgW3Atc2VsZWN0ZWQtb3B0aW9uc109XCJzZWxlY3RlZE9wdGlvbnNcIlxuICAgICAgW3AtcGxhY2Vob2xkZXItc2VhcmNoXT1cInBsYWNlaG9sZGVyU2VhcmNoXCJcbiAgICAgIFtwLWZpZWxkLXZhbHVlXT1cImZpZWxkVmFsdWVcIlxuICAgICAgW3AtZmllbGQtbGFiZWxdPVwiZmllbGRMYWJlbFwiXG4gICAgICBbcC1tdWx0aXNlbGVjdC10ZW1wbGF0ZV09XCJtdWx0aXNlbGVjdE9wdGlvblRlbXBsYXRlXCJcbiAgICAgIChwLWNoYW5nZSk9XCJjaGFuZ2VJdGVtcygkZXZlbnQpXCJcbiAgICAgIChwLWNoYW5nZS1zZWFyY2gpPVwiY2hhbmdlU2VhcmNoKCRldmVudClcIlxuICAgICAgKHAtY2xvc2UtZHJvcGRvd24pPVwiY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSlcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duRHJvcGRvd24oJGV2ZW50LCAwKVwiXG4gICAgICBbcC1jb250YWluZXItd2lkdGhdPVwiY29udGFpbmVyV2lkdGhcIlxuICAgID5cbiAgICA8L3BvLW11bHRpc2VsZWN0LWRyb3Bkb3duPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -105,6 +105,7 @@ export class PoListBoxBaseComponent {
105
105
  shouldMarkLetters = true;
106
106
  compareCache = false;
107
107
  comboService;
108
+ containerWidth;
108
109
  // Evento disparado quando uma tab é ativada
109
110
  activatedTab = new EventEmitter();
110
111
  // Evento disparado no click de uma aba do tabs
@@ -114,7 +115,7 @@ export class PoListBoxBaseComponent {
114
115
  this.language = languageService.getShortLanguage();
115
116
  }
116
117
  static ɵfac = function PoListBoxBaseComponent_Factory(t) { return new (t || PoListBoxBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService)); };
117
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoListBoxBaseComponent, inputs: { visible: [2, "p-visible", "visible", convertToBoolean], type: [0, "p-type", "type"], items: [0, "p-items", "items"], literals: [0, "p-literals", "literals"], isTabs: [2, "p-is-tabs", "isTabs", convertToBoolean], param: [0, "p-param", "param"], checkboxAllValue: [0, "p-checkboxAllValue", "checkboxAllValue"], selectedOptions: [0, "p-selected-options", "selectedOptions"], selectedOption: [0, "p-selected-option", "selectedOption"], fieldValue: [0, "p-field-value", "fieldValue"], fieldLabel: [0, "p-field-label", "fieldLabel"], literalSearch: [0, "p-literal-search", "literalSearch"], fieldValueSearch: [0, "p-field-value-search", "fieldValueSearch"], hideSearch: [0, "p-hide-search", "hideSearch"], hideSelectAll: [0, "p-hide-select-all", "hideSelectAll"], multiselectTemplate: [0, "p-multiselect-template", "multiselectTemplate"], template: [0, "p-template", "template"], placeholderSearch: [0, "p-placeholder-search", "placeholderSearch"], searchValue: [0, "p-search-value", "searchValue"], isServerSearching: [2, "p-is-searching", "isServerSearching", convertToBoolean], infiniteLoading: [2, "p-infinite-loading", "infiniteLoading", convertToBoolean], infiniteScroll: [2, "p-infinite-scroll", "infiniteScroll", convertToBoolean], cache: [2, "p-cache", "cache", convertToBoolean], infiniteScrollDistance: [0, "p-infinite-scroll-distance", "infiniteScrollDistance"], filterMode: [0, "p-filter-mode", "filterMode"], isFiltering: [0, "p-filtering", "isFiltering"], shouldMarkLetters: [0, "p-should-mark-letter", "shouldMarkLetters"], compareCache: [0, "p-compare-cache", "compareCache"], comboService: [0, "p-combo-service", "comboService"] }, outputs: { selectItem: "p-select-item", closeEvent: "p-close", change: "p-change", selectCombo: "p-selectcombo-item", changeAll: "p-change-all", UpdateInfiniteScroll: "p-update-infinite-scroll", changeSearch: "p-change-search", activatedTab: "p-activated-tabs", clickTab: "p-click-tabs", changeStateTabs: "p-change-state-tabs" }, features: [i0.ɵɵInputTransformsFeature] });
118
+ static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoListBoxBaseComponent, inputs: { visible: [2, "p-visible", "visible", convertToBoolean], type: [0, "p-type", "type"], items: [0, "p-items", "items"], literals: [0, "p-literals", "literals"], isTabs: [2, "p-is-tabs", "isTabs", convertToBoolean], param: [0, "p-param", "param"], checkboxAllValue: [0, "p-checkboxAllValue", "checkboxAllValue"], selectedOptions: [0, "p-selected-options", "selectedOptions"], selectedOption: [0, "p-selected-option", "selectedOption"], fieldValue: [0, "p-field-value", "fieldValue"], fieldLabel: [0, "p-field-label", "fieldLabel"], literalSearch: [0, "p-literal-search", "literalSearch"], fieldValueSearch: [0, "p-field-value-search", "fieldValueSearch"], hideSearch: [0, "p-hide-search", "hideSearch"], hideSelectAll: [0, "p-hide-select-all", "hideSelectAll"], multiselectTemplate: [0, "p-multiselect-template", "multiselectTemplate"], template: [0, "p-template", "template"], placeholderSearch: [0, "p-placeholder-search", "placeholderSearch"], searchValue: [0, "p-search-value", "searchValue"], isServerSearching: [2, "p-is-searching", "isServerSearching", convertToBoolean], infiniteLoading: [2, "p-infinite-loading", "infiniteLoading", convertToBoolean], infiniteScroll: [2, "p-infinite-scroll", "infiniteScroll", convertToBoolean], cache: [2, "p-cache", "cache", convertToBoolean], infiniteScrollDistance: [0, "p-infinite-scroll-distance", "infiniteScrollDistance"], filterMode: [0, "p-filter-mode", "filterMode"], isFiltering: [0, "p-filtering", "isFiltering"], shouldMarkLetters: [0, "p-should-mark-letter", "shouldMarkLetters"], compareCache: [0, "p-compare-cache", "compareCache"], comboService: [0, "p-combo-service", "comboService"], containerWidth: [0, "p-container-width", "containerWidth"] }, outputs: { selectItem: "p-select-item", closeEvent: "p-close", change: "p-change", selectCombo: "p-selectcombo-item", changeAll: "p-change-all", UpdateInfiniteScroll: "p-update-infinite-scroll", changeSearch: "p-change-search", activatedTab: "p-activated-tabs", clickTab: "p-click-tabs", changeStateTabs: "p-change-state-tabs" }, features: [i0.ɵɵInputTransformsFeature] });
118
119
  }
119
120
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoListBoxBaseComponent, [{
120
121
  type: Directive
@@ -226,6 +227,9 @@ export class PoListBoxBaseComponent {
226
227
  }], comboService: [{
227
228
  type: Input,
228
229
  args: ['p-combo-service']
230
+ }], containerWidth: [{
231
+ type: Input,
232
+ args: ['p-container-width']
229
233
  }], activatedTab: [{
230
234
  type: Output,
231
235
  args: ['p-activated-tabs']
@@ -236,4 +240,4 @@ export class PoListBoxBaseComponent {
236
240
  type: Output,
237
241
  args: ['p-change-state-tabs']
238
242
  }] }); })();
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbGlzdGJveC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1saXN0Ym94L3BvLWxpc3Rib3gtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7QUFLN0UsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsRUFBRSxFQUFxQjtRQUNyQixPQUFPLEVBQUUsZ0JBQWdCO0tBQzFCO0lBQ0QsRUFBRSxFQUFxQjtRQUNyQixPQUFPLEVBQUUsNkJBQTZCO0tBQ3ZDO0lBQ0QsRUFBRSxFQUFxQjtRQUNyQixPQUFPLEVBQUUsd0JBQXdCO0tBQ2xDO0lBQ0QsRUFBRSxFQUFxQjtRQUNyQixPQUFPLEVBQUUsbUJBQW1CO0tBQzdCO0NBQ0YsQ0FBQztBQUVGOzs7R0FHRztBQUVILE1BQU0sT0FBTyxzQkFBc0I7SUFDekIsTUFBTSxHQUEwRCxFQUFFLENBQUM7SUFDbkUsS0FBSyxDQUFrQjtJQUN2QixTQUFTLENBQW9CO0lBQzdCLFFBQVEsR0FBVyxlQUFlLENBQUM7SUFFaUIsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUVyRixJQUFxQixJQUFJLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUM7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L0MsS0FBSzttQkFBQyxzQkFBc0I7WUFFSCxZQUFZO2tCQUFyQyxLQUFLO21CQUFDLGlCQUFpQjtZQUVFLFlBQVk7a0JBQXJDLEtBQUs7bUJBQUMsaUJBQWlCO1lBR0ksWUFBWTtrQkFBdkMsTUFBTTttQkFBQyxrQkFBa0I7WUFHRixRQUFRO2tCQUEvQixNQUFNO21CQUFDLGNBQWM7WUFFUyxlQUFlO2tCQUE3QyxNQUFNO21CQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9JdGVtTGlzdFR5cGUgfSBmcm9tICcuL2VudW1zL3BvLWl0ZW0tbGlzdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgUG9JdGVtTGlzdEFjdGlvbiB9IGZyb20gJy4vcG8taXRlbS1saXN0L2ludGVyZmFjZXMvcG8taXRlbS1saXN0LWFjdGlvbi5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb0l0ZW1MaXN0RmlsdGVyTW9kZSB9IGZyb20gJy4vZW51bXMvcG8taXRlbS1saXN0LWZpbHRlci1tb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9MaXN0Qm94TGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbGlzdGJveC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9JdGVtTGlzdE9wdGlvbkdyb3VwIH0gZnJvbSAnLi9wby1pdGVtLWxpc3QvaW50ZXJmYWNlcy9wby1pdGVtLWxpc3Qtb3B0aW9uLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0l0ZW1MaXN0T3B0aW9uIH0gZnJvbSAnLi9wby1pdGVtLWxpc3QvaW50ZXJmYWNlcy9wby1pdGVtLWxpc3Qtb3B0aW9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBwb0xpc3RCb3hMaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9MaXN0Qm94TGl0ZXJhbHM+e1xuICAgIG5vSXRlbXM6ICdObyBpdGVtcyBmb3VuZCdcbiAgfSxcbiAgZXM6IDxQb0xpc3RCb3hMaXRlcmFscz57XG4gICAgbm9JdGVtczogJ05vIHNlIGVuY29udHJhcm9uIGFydMOtY3Vsb3MnXG4gIH0sXG4gIHB0OiA8UG9MaXN0Qm94TGl0ZXJhbHM+e1xuICAgIG5vSXRlbXM6ICdOZW5odW0gaXRlbSBlbmNvbnRyYWRvJ1xuICB9LFxuICBydTogPFBvTGlzdEJveExpdGVyYWxzPntcbiAgICBub0l0ZW1zOiAn0L3QuNGH0LXQs9C+INC90LUg0L3QsNC50LTQtdC90L4nXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBPIGNvbXBvbmVudGUgYHBvLWxpc3Rib3hgIMOpIHVtYSBjYWl4YSBzdXNwZW5zYSBxdWUgYXBhcmVjZSBzb2JyZSBhIGludGVyZmFjZSBhcMOzcyBzZXIgYWNpb25hZG8gcG9yIHVtIGdhdGlsaG8gdmlzw612ZWwgZW0gdGVsYSwgY29tbyBvIGRyb3Bkb3duLiBFbGUgYXBvaWEgdHJhemVuZG8gYWdydXBhbWVudG9zIGRlIG9ww6fDtWVzLiBPIGNvbXBvbmVudGUgbGlzdGJveCDDqSBjb21wb3N0byBwZWxvIGNvbXBvbmVudGUgWyoqUE8gSXRlbSBMaXN0KipdKC9kb2N1bWVudGF0aW9uL3BvLWl0ZW0tbGlzdCkuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFBvTGlzdEJveEJhc2VDb21wb25lbnQge1xuICBwcml2YXRlIF9pdGVtczogQXJyYXk8UG9JdGVtTGlzdE9wdGlvbiB8IFBvSXRlbUxpc3RPcHRpb25Hcm91cCB8IGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfdHlwZSE6IFBvSXRlbUxpc3RUeXBlO1xuICBwcml2YXRlIF9saXRlcmFsczogUG9MaXN0Qm94TGl0ZXJhbHM7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZyA9IHBvTG9jYWxlRGVmYXVsdDtcblxuICBASW5wdXQoeyBhbGlhczogJ3AtdmlzaWJsZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLXR5cGUnKSBzZXQgdHlwZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHlwZSA9IFBvSXRlbUxpc3RUeXBlW3ZhbHVlXSA/PyAnYWN0aW9uJztcbiAgfVxuXG4gIGdldCB0eXBlKCk6IFBvSXRlbUxpc3RUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIEBJbnB1dCgncC1pdGVtcycpIHNldCBpdGVtcyhpdGVtczogQXJyYXk8UG9JdGVtTGlzdEFjdGlvbiB8IFBvSXRlbUxpc3RPcHRpb24gfCBQb0l0ZW1MaXN0T3B0aW9uR3JvdXAgfCBhbnk+KSB7XG4gICAgdGhpcy5faXRlbXMgPSBBcnJheS5pc0FycmF5KGl0ZW1zKSA/IGl0ZW1zIDogW107XG4gIH1cblxuICBnZXQgaXRlbXMoKTogQXJyYXk8UG9JdGVtTGlzdEFjdGlvbiB8IFBvSXRlbUxpc3RPcHRpb24gfCBQb0l0ZW1MaXN0T3B0aW9uR3JvdXAgfCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvTGlzdEJveExpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb0xpc3RCb3hMaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgICAgLi4ucG9MaXN0Qm94TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb0xpc3RCb3hMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb0xpc3RCb3hMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gIH1cblxuICBnZXQgaXNJdGVtTGlzdEdyb3VwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aCAmJiB0aGlzLml0ZW1zWzBdLmhhc093blByb3BlcnR5KCdvcHRpb25zJyk7XG4gIH1cblxuICBASW5wdXQoeyBhbGlhczogJ3AtaXMtdGFicycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBpc1RhYnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBwYXLDom1ldHJvIHF1ZSBwb2RlIHNlciBwYXNzYWRvIHBhcmEgbyBwb3B1cCBhbyBjbGljYXIgZW0gdW0gaXRlbVxuICBASW5wdXQoJ3AtcGFyYW0nKSBwYXJhbT87XG5cbiAgQE91dHB1dCgncC1zZWxlY3QtaXRlbScpIHNlbGVjdEl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPFBvSXRlbUxpc3RPcHRpb24gfCBQb0l0ZW1MaXN0T3B0aW9uR3JvdXAgfCBhbnk+KCk7XG5cbiAgQE91dHB1dCgncC1jbG9zZScpIGNsb3NlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gTVVMVElTRUxFQ1QgUFJPUEVSVElFU1xuXG4gIC8vb3V0cHV0IHBhcmEgZXZlbnRvIGRvIGNoZWNrYm94XG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vb3V0cHV0IHBhcmEgZXZlbnRvIGRvIGNoZWNrYm94XG4gIEBPdXRwdXQoJ3Atc2VsZWN0Y29tYm8taXRlbScpIHNlbGVjdENvbWJvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vb3V0cHV0IHBhcmEgZXZlbnRvIGRvIGNoZWNrYm94IGRlIHNlbGVjaW9uYXIgdG9kb3NcbiAgQE91dHB1dCgncC1jaGFuZ2UtYWxsJykgY2hhbmdlQWxsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoJ3AtdXBkYXRlLWluZmluaXRlLXNjcm9sbCcpIFVwZGF0ZUluZmluaXRlU2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vdmFsb3IgZG8gY2hlY2tib3ggZGUgc2VsZWNpb25hciB0b2Rvc1xuICBASW5wdXQoJ3AtY2hlY2tib3hBbGxWYWx1ZScpIGNoZWNrYm94QWxsVmFsdWU6IGFueTtcblxuICAvLyBQcm9wcmllZGFkZSBxdWUgcmVjZWJlIGEgbGlzdGEgZGUgb3DDp8O1ZXMgc2VsZWNpb25hZGFzLlxuICBASW5wdXQoJ3Atc2VsZWN0ZWQtb3B0aW9ucycpIHNlbGVjdGVkT3B0aW9uczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIC8vIFByb3ByaWVkYWRlIHF1ZSByZWNlYmUgdW0gaXRlbSBzZWxlY2lvbmFkby5cbiAgQElucHV0KCdwLXNlbGVjdGVkLW9wdGlvbicpIHNlbGVjdGVkT3B0aW9uPzogYW55O1xuXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIGZpZWxkVmFsdWU6IHN0cmluZyA9ICd2YWx1ZSc7XG5cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgZmllbGRMYWJlbDogc3RyaW5nID0gJ2xhYmVsJztcblxuICAvLyBFdmVudG8gZGlzcGFyYWRvIGEgY2FkYSB0ZWNsYSBkaWdpdGFkYSBuYSBwZXNxdWlzYS5cbiAgQE91dHB1dCgncC1jaGFuZ2Utc2VhcmNoJykgY2hhbmdlU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIFByb3ByaWVkYWRlIHF1ZSByZWNlYmUgYXMgbGl0ZXJhaXMgZGVmaW5pZGFzIG5vIGNvbXBvbmVudGUgYHBvLW11bHRpc2VsZWN0YC5cbiAgQElucHV0KCdwLWxpdGVyYWwtc2VhcmNoJykgbGl0ZXJhbFNlYXJjaD86IGFueTtcblxuICAvLyBQcm9wcmllZGFkZSBxdWUgcmVjZWJlIG8gdmFsb3IgZGUgY29tcGFyYcOnw6NvIGRlIHBlc3F1aXNhXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZS1zZWFyY2gnKSBmaWVsZFZhbHVlU2VhcmNoOiBzdHJpbmcgPSAndmFsdWUnO1xuXG4gIC8vIFByb3ByaWVkYWRlIHF1ZSBpbmRpY2Egc2UgbyBjYW1wbyBkZSBwZXNxdWlzYSBkZXZlcsOhIHNlciBlc2NvbmRpZG8uXG4gIEBJbnB1dCgncC1oaWRlLXNlYXJjaCcpIGhpZGVTZWFyY2g/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gUHJvcHJpZWRhZGUgcXVlIGluZGljYSBzZSBvIGNhbXBvIFwiU2VsZWNpb25hciB0b2Rvc1wiIGRldmVyw6Egc2VyIGVzY29uZGlkby5cbiAgQElucHV0KCdwLWhpZGUtc2VsZWN0LWFsbCcpIGhpZGVTZWxlY3RBbGw/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy9Qcm9wcmllZGFkZXMgcmVsYWNpb25hZG9zIGFvIHRlbXBsYXRlIGN1c3RvbWl6YWRvIGRvIG11bHRpc2VsZWN0XG4gIEBJbnB1dCgncC1tdWx0aXNlbGVjdC10ZW1wbGF0ZScpIG11bHRpc2VsZWN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBhbnk7XG5cbiAgQElucHV0KCdwLXRlbXBsYXRlJykgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBhbnk7XG5cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyLXNlYXJjaCcpIHBsYWNlaG9sZGVyU2VhcmNoOiBzdHJpbmc7XG5cbiAgQElucHV0KCdwLXNlYXJjaC12YWx1ZScpIHNlYXJjaFZhbHVlOiBzdHJpbmc7XG5cbiAgQElucHV0KHsgYWxpYXM6ICdwLWlzLXNlYXJjaGluZycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBpc1NlcnZlclNlYXJjaGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1pbmZpbml0ZS1sb2FkaW5nJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGluZmluaXRlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1pbmZpbml0ZS1zY3JvbGwnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoeyBhbGlhczogJ3AtY2FjaGUnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgY2FjaGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsLWRpc3RhbmNlJykgaW5maW5pdGVTY3JvbGxEaXN0YW5jZTogbnVtYmVyID0gMTAwO1xuXG4gIEBJbnB1dCgncC1maWx0ZXItbW9kZScpIGZpbHRlck1vZGU6IFBvSXRlbUxpc3RGaWx0ZXJNb2RlID0gUG9JdGVtTGlzdEZpbHRlck1vZGUuY29udGFpbnM7XG5cbiAgQElucHV0KCdwLWZpbHRlcmluZycpIGlzRmlsdGVyaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLXNob3VsZC1tYXJrLWxldHRlcicpIHNob3VsZE1hcmtMZXR0ZXJzOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoJ3AtY29tcGFyZS1jYWNoZScpIGNvbXBhcmVDYWNoZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgncC1jb21iby1zZXJ2aWNlJykgY29tYm9TZXJ2aWNlOiBhbnk7XG5cbiAgLy8gRXZlbnRvIGRpc3BhcmFkbyBxdWFuZG8gdW1hIHRhYiDDqSBhdGl2YWRhXG4gIEBPdXRwdXQoJ3AtYWN0aXZhdGVkLXRhYnMnKSBhY3RpdmF0ZWRUYWIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gRXZlbnRvIGRpc3BhcmFkbyBubyBjbGljayBkZSB1bWEgYWJhIGRvIHRhYnNcbiAgQE91dHB1dCgncC1jbGljay10YWJzJykgY2xpY2tUYWIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgncC1jaGFuZ2Utc3RhdGUtdGFicycpIGNoYW5nZVN0YXRlVGFicyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cbn1cbiJdfQ==
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbGlzdGJveC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1saXN0Ym94L3BvLWxpc3Rib3gtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7QUFLN0UsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsRUFBRSxFQUFxQjtRQUNyQixPQUFPLEVBQUUsZ0JBQWdCO0tBQzFCO0lBQ0QsRUFBRSxFQUFxQjtRQUNyQixPQUFPLEVBQUUsNkJBQTZCO0tBQ3ZDO0lBQ0QsRUFBRSxFQUFxQjtRQUNyQixPQUFPLEVBQUUsd0JBQXdCO0tBQ2xDO0lBQ0QsRUFBRSxFQUFxQjtRQUNyQixPQUFPLEVBQUUsbUJBQW1CO0tBQzdCO0NBQ0YsQ0FBQztBQUVGOzs7R0FHRztBQUVILE1BQU0sT0FBTyxzQkFBc0I7SUFDekIsTUFBTSxHQUEwRCxFQUFFLENBQUM7SUFDbkUsS0FBSyxDQUFrQjtJQUN2QixTQUFTLENBQW9CO0lBQzdCLFFBQVEsR0FBVyxlQUFlLENBQUM7SUFFaUIsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUVyRixJQUFxQixJQUFJLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUM7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WUFFVyxpQkFBaUI7a0JBQS9DLEtBQUs7bUJBQUMsc0JBQXNCO1lBRUgsWUFBWTtrQkFBckMsS0FBSzttQkFBQyxpQkFBaUI7WUFFRSxZQUFZO2tCQUFyQyxLQUFLO21CQUFDLGlCQUFpQjtZQUVJLGNBQWM7a0JBQXpDLEtBQUs7bUJBQUMsbUJBQW1CO1lBR0UsWUFBWTtrQkFBdkMsTUFBTTttQkFBQyxrQkFBa0I7WUFHRixRQUFRO2tCQUEvQixNQUFNO21CQUFDLGNBQWM7WUFFUyxlQUFlO2tCQUE3QyxNQUFNO21CQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9JdGVtTGlzdFR5cGUgfSBmcm9tICcuL2VudW1zL3BvLWl0ZW0tbGlzdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgUG9JdGVtTGlzdEFjdGlvbiB9IGZyb20gJy4vcG8taXRlbS1saXN0L2ludGVyZmFjZXMvcG8taXRlbS1saXN0LWFjdGlvbi5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb0l0ZW1MaXN0RmlsdGVyTW9kZSB9IGZyb20gJy4vZW51bXMvcG8taXRlbS1saXN0LWZpbHRlci1tb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9MaXN0Qm94TGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbGlzdGJveC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9JdGVtTGlzdE9wdGlvbkdyb3VwIH0gZnJvbSAnLi9wby1pdGVtLWxpc3QvaW50ZXJmYWNlcy9wby1pdGVtLWxpc3Qtb3B0aW9uLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0l0ZW1MaXN0T3B0aW9uIH0gZnJvbSAnLi9wby1pdGVtLWxpc3QvaW50ZXJmYWNlcy9wby1pdGVtLWxpc3Qtb3B0aW9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBwb0xpc3RCb3hMaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9MaXN0Qm94TGl0ZXJhbHM+e1xuICAgIG5vSXRlbXM6ICdObyBpdGVtcyBmb3VuZCdcbiAgfSxcbiAgZXM6IDxQb0xpc3RCb3hMaXRlcmFscz57XG4gICAgbm9JdGVtczogJ05vIHNlIGVuY29udHJhcm9uIGFydMOtY3Vsb3MnXG4gIH0sXG4gIHB0OiA8UG9MaXN0Qm94TGl0ZXJhbHM+e1xuICAgIG5vSXRlbXM6ICdOZW5odW0gaXRlbSBlbmNvbnRyYWRvJ1xuICB9LFxuICBydTogPFBvTGlzdEJveExpdGVyYWxzPntcbiAgICBub0l0ZW1zOiAn0L3QuNGH0LXQs9C+INC90LUg0L3QsNC50LTQtdC90L4nXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBPIGNvbXBvbmVudGUgYHBvLWxpc3Rib3hgIMOpIHVtYSBjYWl4YSBzdXNwZW5zYSBxdWUgYXBhcmVjZSBzb2JyZSBhIGludGVyZmFjZSBhcMOzcyBzZXIgYWNpb25hZG8gcG9yIHVtIGdhdGlsaG8gdmlzw612ZWwgZW0gdGVsYSwgY29tbyBvIGRyb3Bkb3duLiBFbGUgYXBvaWEgdHJhemVuZG8gYWdydXBhbWVudG9zIGRlIG9ww6fDtWVzLiBPIGNvbXBvbmVudGUgbGlzdGJveCDDqSBjb21wb3N0byBwZWxvIGNvbXBvbmVudGUgWyoqUE8gSXRlbSBMaXN0KipdKC9kb2N1bWVudGF0aW9uL3BvLWl0ZW0tbGlzdCkuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFBvTGlzdEJveEJhc2VDb21wb25lbnQge1xuICBwcml2YXRlIF9pdGVtczogQXJyYXk8UG9JdGVtTGlzdE9wdGlvbiB8IFBvSXRlbUxpc3RPcHRpb25Hcm91cCB8IGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfdHlwZSE6IFBvSXRlbUxpc3RUeXBlO1xuICBwcml2YXRlIF9saXRlcmFsczogUG9MaXN0Qm94TGl0ZXJhbHM7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZyA9IHBvTG9jYWxlRGVmYXVsdDtcblxuICBASW5wdXQoeyBhbGlhczogJ3AtdmlzaWJsZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLXR5cGUnKSBzZXQgdHlwZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHlwZSA9IFBvSXRlbUxpc3RUeXBlW3ZhbHVlXSA/PyAnYWN0aW9uJztcbiAgfVxuXG4gIGdldCB0eXBlKCk6IFBvSXRlbUxpc3RUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIEBJbnB1dCgncC1pdGVtcycpIHNldCBpdGVtcyhpdGVtczogQXJyYXk8UG9JdGVtTGlzdEFjdGlvbiB8IFBvSXRlbUxpc3RPcHRpb24gfCBQb0l0ZW1MaXN0T3B0aW9uR3JvdXAgfCBhbnk+KSB7XG4gICAgdGhpcy5faXRlbXMgPSBBcnJheS5pc0FycmF5KGl0ZW1zKSA/IGl0ZW1zIDogW107XG4gIH1cblxuICBnZXQgaXRlbXMoKTogQXJyYXk8UG9JdGVtTGlzdEFjdGlvbiB8IFBvSXRlbUxpc3RPcHRpb24gfCBQb0l0ZW1MaXN0T3B0aW9uR3JvdXAgfCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvTGlzdEJveExpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb0xpc3RCb3hMaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgICAgLi4ucG9MaXN0Qm94TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb0xpc3RCb3hMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb0xpc3RCb3hMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gIH1cblxuICBnZXQgaXNJdGVtTGlzdEdyb3VwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aCAmJiB0aGlzLml0ZW1zWzBdLmhhc093blByb3BlcnR5KCdvcHRpb25zJyk7XG4gIH1cblxuICBASW5wdXQoeyBhbGlhczogJ3AtaXMtdGFicycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBpc1RhYnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBwYXLDom1ldHJvIHF1ZSBwb2RlIHNlciBwYXNzYWRvIHBhcmEgbyBwb3B1cCBhbyBjbGljYXIgZW0gdW0gaXRlbVxuICBASW5wdXQoJ3AtcGFyYW0nKSBwYXJhbT87XG5cbiAgQE91dHB1dCgncC1zZWxlY3QtaXRlbScpIHNlbGVjdEl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPFBvSXRlbUxpc3RPcHRpb24gfCBQb0l0ZW1MaXN0T3B0aW9uR3JvdXAgfCBhbnk+KCk7XG5cbiAgQE91dHB1dCgncC1jbG9zZScpIGNsb3NlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gTVVMVElTRUxFQ1QgUFJPUEVSVElFU1xuXG4gIC8vb3V0cHV0IHBhcmEgZXZlbnRvIGRvIGNoZWNrYm94XG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vb3V0cHV0IHBhcmEgZXZlbnRvIGRvIGNoZWNrYm94XG4gIEBPdXRwdXQoJ3Atc2VsZWN0Y29tYm8taXRlbScpIHNlbGVjdENvbWJvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vb3V0cHV0IHBhcmEgZXZlbnRvIGRvIGNoZWNrYm94IGRlIHNlbGVjaW9uYXIgdG9kb3NcbiAgQE91dHB1dCgncC1jaGFuZ2UtYWxsJykgY2hhbmdlQWxsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoJ3AtdXBkYXRlLWluZmluaXRlLXNjcm9sbCcpIFVwZGF0ZUluZmluaXRlU2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vdmFsb3IgZG8gY2hlY2tib3ggZGUgc2VsZWNpb25hciB0b2Rvc1xuICBASW5wdXQoJ3AtY2hlY2tib3hBbGxWYWx1ZScpIGNoZWNrYm94QWxsVmFsdWU6IGFueTtcblxuICAvLyBQcm9wcmllZGFkZSBxdWUgcmVjZWJlIGEgbGlzdGEgZGUgb3DDp8O1ZXMgc2VsZWNpb25hZGFzLlxuICBASW5wdXQoJ3Atc2VsZWN0ZWQtb3B0aW9ucycpIHNlbGVjdGVkT3B0aW9uczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIC8vIFByb3ByaWVkYWRlIHF1ZSByZWNlYmUgdW0gaXRlbSBzZWxlY2lvbmFkby5cbiAgQElucHV0KCdwLXNlbGVjdGVkLW9wdGlvbicpIHNlbGVjdGVkT3B0aW9uPzogYW55O1xuXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIGZpZWxkVmFsdWU6IHN0cmluZyA9ICd2YWx1ZSc7XG5cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgZmllbGRMYWJlbDogc3RyaW5nID0gJ2xhYmVsJztcblxuICAvLyBFdmVudG8gZGlzcGFyYWRvIGEgY2FkYSB0ZWNsYSBkaWdpdGFkYSBuYSBwZXNxdWlzYS5cbiAgQE91dHB1dCgncC1jaGFuZ2Utc2VhcmNoJykgY2hhbmdlU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIFByb3ByaWVkYWRlIHF1ZSByZWNlYmUgYXMgbGl0ZXJhaXMgZGVmaW5pZGFzIG5vIGNvbXBvbmVudGUgYHBvLW11bHRpc2VsZWN0YC5cbiAgQElucHV0KCdwLWxpdGVyYWwtc2VhcmNoJykgbGl0ZXJhbFNlYXJjaD86IGFueTtcblxuICAvLyBQcm9wcmllZGFkZSBxdWUgcmVjZWJlIG8gdmFsb3IgZGUgY29tcGFyYcOnw6NvIGRlIHBlc3F1aXNhXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZS1zZWFyY2gnKSBmaWVsZFZhbHVlU2VhcmNoOiBzdHJpbmcgPSAndmFsdWUnO1xuXG4gIC8vIFByb3ByaWVkYWRlIHF1ZSBpbmRpY2Egc2UgbyBjYW1wbyBkZSBwZXNxdWlzYSBkZXZlcsOhIHNlciBlc2NvbmRpZG8uXG4gIEBJbnB1dCgncC1oaWRlLXNlYXJjaCcpIGhpZGVTZWFyY2g/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gUHJvcHJpZWRhZGUgcXVlIGluZGljYSBzZSBvIGNhbXBvIFwiU2VsZWNpb25hciB0b2Rvc1wiIGRldmVyw6Egc2VyIGVzY29uZGlkby5cbiAgQElucHV0KCdwLWhpZGUtc2VsZWN0LWFsbCcpIGhpZGVTZWxlY3RBbGw/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy9Qcm9wcmllZGFkZXMgcmVsYWNpb25hZG9zIGFvIHRlbXBsYXRlIGN1c3RvbWl6YWRvIGRvIG11bHRpc2VsZWN0XG4gIEBJbnB1dCgncC1tdWx0aXNlbGVjdC10ZW1wbGF0ZScpIG11bHRpc2VsZWN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBhbnk7XG5cbiAgQElucHV0KCdwLXRlbXBsYXRlJykgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBhbnk7XG5cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyLXNlYXJjaCcpIHBsYWNlaG9sZGVyU2VhcmNoOiBzdHJpbmc7XG5cbiAgQElucHV0KCdwLXNlYXJjaC12YWx1ZScpIHNlYXJjaFZhbHVlOiBzdHJpbmc7XG5cbiAgQElucHV0KHsgYWxpYXM6ICdwLWlzLXNlYXJjaGluZycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBpc1NlcnZlclNlYXJjaGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1pbmZpbml0ZS1sb2FkaW5nJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGluZmluaXRlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1pbmZpbml0ZS1zY3JvbGwnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoeyBhbGlhczogJ3AtY2FjaGUnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgY2FjaGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsLWRpc3RhbmNlJykgaW5maW5pdGVTY3JvbGxEaXN0YW5jZTogbnVtYmVyID0gMTAwO1xuXG4gIEBJbnB1dCgncC1maWx0ZXItbW9kZScpIGZpbHRlck1vZGU6IFBvSXRlbUxpc3RGaWx0ZXJNb2RlID0gUG9JdGVtTGlzdEZpbHRlck1vZGUuY29udGFpbnM7XG5cbiAgQElucHV0KCdwLWZpbHRlcmluZycpIGlzRmlsdGVyaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLXNob3VsZC1tYXJrLWxldHRlcicpIHNob3VsZE1hcmtMZXR0ZXJzOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoJ3AtY29tcGFyZS1jYWNoZScpIGNvbXBhcmVDYWNoZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgncC1jb21iby1zZXJ2aWNlJykgY29tYm9TZXJ2aWNlOiBhbnk7XG5cbiAgQElucHV0KCdwLWNvbnRhaW5lci13aWR0aCcpIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG5cbiAgLy8gRXZlbnRvIGRpc3BhcmFkbyBxdWFuZG8gdW1hIHRhYiDDqSBhdGl2YWRhXG4gIEBPdXRwdXQoJ3AtYWN0aXZhdGVkLXRhYnMnKSBhY3RpdmF0ZWRUYWIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gRXZlbnRvIGRpc3BhcmFkbyBubyBjbGljayBkZSB1bWEgYWJhIGRvIHRhYnNcbiAgQE91dHB1dCgncC1jbGljay10YWJzJykgY2xpY2tUYWIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgncC1jaGFuZ2Utc3RhdGUtdGFicycpIGNoYW5nZVN0YXRlVGFicyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cbn1cbiJdfQ==