@po-ui/ng-components 16.3.0 → 16.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/esm2022/lib/components/po-dynamic/index.mjs +2 -1
  2. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.mjs +1 -1
  3. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.mjs +5 -5
  4. package/esm2022/lib/components/po-dynamic/po-dynamic-view/interfaces/po-dynamic-view-request.interface.mjs +2 -0
  5. package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs +94 -8
  6. package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.mjs +1 -1
  7. package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.mjs +12 -3
  8. package/esm2022/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.mjs +46 -0
  9. package/esm2022/lib/components/po-dynamic/po-dynamic.module.mjs +2 -2
  10. package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +18 -2
  11. package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +55 -21
  12. package/esm2022/lib/components/po-field/po-field.module.mjs +5 -4
  13. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +18 -2
  14. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +74 -32
  15. package/esm2022/lib/components/po-menu/po-menu-item/po-menu-item.component.mjs +3 -3
  16. package/esm2022/lib/components/po-table/po-table-base.component.mjs +12 -8
  17. package/esm2022/lib/components/po-table/po-table.component.mjs +7 -2
  18. package/esm2022/lib/components/po-tag/enums/po-tag-type.enum.mjs +4 -2
  19. package/esm2022/lib/components/po-tag/po-tag-base.component.mjs +3 -2
  20. package/fesm2022/po-ui-ng-components.mjs +320 -81
  21. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  22. package/lib/components/po-dynamic/index.d.ts +1 -0
  23. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +8 -0
  24. package/lib/components/po-dynamic/po-dynamic-view/interfaces/po-dynamic-view-request.interface.d.ts +18 -0
  25. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +13 -2
  26. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.d.ts +44 -0
  27. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.d.ts +4 -2
  28. package/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.d.ts +28 -0
  29. package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +15 -1
  30. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +15 -1
  31. package/lib/components/po-table/po-table-base.component.d.ts +1 -1
  32. package/lib/components/po-tag/enums/po-tag-type.enum.d.ts +4 -2
  33. package/lib/components/po-tag/po-tag-base.component.d.ts +2 -1
  34. package/package.json +4 -4
  35. package/po-ui-ng-components-16.4.1.tgz +0 -0
  36. package/schematics/ng-add/index.js +1 -1
  37. package/schematics/ng-update/v14/index.js +1 -1
  38. package/schematics/ng-update/v15/index.js +1 -1
  39. package/schematics/ng-update/v16/index.js +1 -1
  40. package/schematics/ng-update/v2/index.js +1 -1
  41. package/schematics/ng-update/v3/index.js +1 -1
  42. package/schematics/ng-update/v4/index.js +1 -1
  43. package/schematics/ng-update/v5/index.js +1 -1
  44. package/schematics/ng-update/v6/index.js +1 -1
  45. package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.mjs +0 -18
  46. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.d.ts +0 -13
  47. package/po-ui-ng-components-16.3.0.tgz +0 -0
@@ -15,25 +15,64 @@ import * as i3 from "../../../services/po-language/po-language.service";
15
15
  const _c0 = ["dropdownElement"];
16
16
  const _c1 = ["iconElement"];
17
17
  const _c2 = ["inputElement"];
18
- function PoMultiselectComponent_span_4_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "span", 12);
18
+ function PoMultiselectComponent_span_5_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "span", 15);
20
20
  i0.ɵɵtext(1);
21
21
  i0.ɵɵelementEnd();
22
22
  } if (rf & 2) {
23
- const ctx_r1 = i0.ɵɵnextContext();
23
+ const ctx_r2 = i0.ɵɵnextContext();
24
24
  i0.ɵɵadvance(1);
25
- i0.ɵɵtextInterpolate1(" ", ctx_r1.placeholder, " ");
25
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.placeholder, " ");
26
26
  } }
27
- function PoMultiselectComponent_po_disclaimer_5_Template(rf, ctx) { if (rf & 1) {
28
- const _r7 = i0.ɵɵgetCurrentView();
29
- i0.ɵɵelementStart(0, "po-disclaimer", 13);
30
- i0.ɵɵlistener("click", function PoMultiselectComponent_po_disclaimer_5_Template_po_disclaimer_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r7); const disclaimer_r5 = restoredCtx.$implicit; const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.openDropdown(disclaimer_r5[ctx_r6.fieldValue] === "")); })("p-close-action", function PoMultiselectComponent_po_disclaimer_5_Template_po_disclaimer_p_close_action_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r7); const disclaimer_r5 = restoredCtx.$implicit; const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.closeDisclaimer(disclaimer_r5[ctx_r8.fieldValue])); });
27
+ function PoMultiselectComponent_po_disclaimer_6_Template(rf, ctx) { if (rf & 1) {
28
+ const _r14 = i0.ɵɵgetCurrentView();
29
+ i0.ɵɵelementStart(0, "po-disclaimer", 16);
30
+ i0.ɵɵlistener("click", function PoMultiselectComponent_po_disclaimer_6_Template_po_disclaimer_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r14); const disclaimer_r12 = restoredCtx.$implicit; const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.openDropdown(disclaimer_r12[ctx_r13.fieldValue] === "")); })("p-close-action", function PoMultiselectComponent_po_disclaimer_6_Template_po_disclaimer_p_close_action_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r14); const disclaimer_r12 = restoredCtx.$implicit; const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.closeDisclaimer(disclaimer_r12[ctx_r15.fieldValue])); });
31
31
  i0.ɵɵelementEnd();
32
32
  } if (rf & 2) {
33
- const disclaimer_r5 = ctx.$implicit;
34
- const ctx_r2 = i0.ɵɵnextContext();
35
- i0.ɵɵclassProp("po-clickable", disclaimer_r5[ctx_r2.fieldValue] === "" && !ctx_r2.disabled);
36
- i0.ɵɵproperty("p-label", disclaimer_r5[ctx_r2.fieldLabel])("p-value", disclaimer_r5[ctx_r2.fieldValue])("p-hide-close", disclaimer_r5[ctx_r2.fieldValue] === "" || ctx_r2.disabled);
33
+ const disclaimer_r12 = ctx.$implicit;
34
+ const ctx_r3 = i0.ɵɵnextContext();
35
+ i0.ɵɵclassProp("po-clickable", disclaimer_r12[ctx_r3.fieldValue] === "" && !ctx_r3.disabled);
36
+ i0.ɵɵproperty("p-label", disclaimer_r12[ctx_r3.fieldLabel])("p-value", disclaimer_r12[ctx_r3.fieldValue])("p-hide-close", disclaimer_r12[ctx_r3.fieldValue] === "" || ctx_r3.disabled);
37
+ } }
38
+ function PoMultiselectComponent_ng_container_10_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelementContainer(0);
40
+ } }
41
+ function PoMultiselectComponent_ng_template_11_ng_container_0_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementContainer(0);
43
+ } }
44
+ function PoMultiselectComponent_ng_template_11_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_11_ng_container_0_Template, 1, 0, "ng-container", 17);
46
+ } if (rf & 2) {
47
+ i0.ɵɵnextContext();
48
+ const _r10 = i0.ɵɵreference(17);
49
+ i0.ɵɵproperty("ngTemplateOutlet", _r10);
50
+ } }
51
+ function PoMultiselectComponent_ng_template_13_ng_template_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementContainer(0);
53
+ } }
54
+ function PoMultiselectComponent_ng_template_13_ng_template_0_Template(rf, ctx) { if (rf & 1) {
55
+ i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_13_ng_template_0_ng_container_0_Template, 1, 0, "ng-container", 17);
56
+ } if (rf & 2) {
57
+ i0.ɵɵnextContext(2);
58
+ const _r10 = i0.ɵɵreference(17);
59
+ i0.ɵɵproperty("ngTemplateOutlet", _r10);
60
+ } }
61
+ function PoMultiselectComponent_ng_template_13_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵtemplate(0, PoMultiselectComponent_ng_template_13_ng_template_0_Template, 1, 1, "ng-template", 18);
63
+ } if (rf & 2) {
64
+ i0.ɵɵnextContext();
65
+ const _r0 = i0.ɵɵreference(2);
66
+ i0.ɵɵproperty("cdkConnectedOverlayOrigin", _r0)("cdkConnectedOverlayOpen", true);
67
+ } }
68
+ function PoMultiselectComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
69
+ const _r21 = i0.ɵɵgetCurrentView();
70
+ i0.ɵɵelementStart(0, "po-multiselect-dropdown", 19, 20);
71
+ i0.ɵɵlistener("p-change", function PoMultiselectComponent_ng_template_16_Template_po_multiselect_dropdown_p_change_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.changeItems($event)); })("p-change-search", function PoMultiselectComponent_ng_template_16_Template_po_multiselect_dropdown_p_change_search_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r22 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r22.changeSearch($event)); })("p-close-dropdown", function PoMultiselectComponent_ng_template_16_Template_po_multiselect_dropdown_p_close_dropdown_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r23 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r23.controlDropdownVisibility(false)); });
72
+ i0.ɵɵelementEnd();
73
+ } if (rf & 2) {
74
+ const ctx_r11 = i0.ɵɵnextContext();
75
+ i0.ɵɵproperty("p-searching", ctx_r11.isServerSearching)("p-hide-search", ctx_r11.hideSearch)("p-hide-select-all", ctx_r11.hideSelectAll)("p-literals", ctx_r11.literals)("p-options", ctx_r11.options)("p-visible-options", ctx_r11.visibleOptionsDropdown)("p-selected-options", ctx_r11.selectedOptions)("p-placeholder-search", ctx_r11.placeholderSearch)("p-field-value", ctx_r11.fieldValue)("p-field-label", ctx_r11.fieldLabel)("p-multiselect-template", ctx_r11.multiselectOptionTemplate);
37
76
  } }
38
77
  const poMultiselectContainerOffset = 8;
39
78
  const poMultiselectContainerPositionDefault = 'bottom';
@@ -394,8 +433,8 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
394
433
  let _t;
395
434
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.multiselectOptionTemplate = _t.first);
396
435
  } }, viewQuery: function PoMultiselectComponent_Query(rf, ctx) { if (rf & 1) {
397
- i0.ɵɵviewQuery(_c0, 7, ElementRef);
398
- i0.ɵɵviewQuery(_c0, 7);
436
+ i0.ɵɵviewQuery(_c0, 5, ElementRef);
437
+ i0.ɵɵviewQuery(_c0, 5);
399
438
  i0.ɵɵviewQuery(_c1, 7, ElementRef);
400
439
  i0.ɵɵviewQuery(_c2, 7, ElementRef);
401
440
  } if (rf & 2) {
@@ -404,24 +443,27 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
404
443
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdown = _t.first);
405
444
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.iconElement = _t.first);
406
445
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputElement = _t.first);
407
- } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 12, vars: 36, consts: [[3, "p-disabled", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], [1, "po-input", "po-input-icon-right", "po-multiselect-input", "po-clickable", 3, "tabindex", "keyup.enter", "keydown", "click", "blur"], ["inputElement", ""], ["class", "po-multiselect-input-placeholder", 4, "ngIf"], ["class", "po-multiselect-input-disclaimer", 3, "p-label", "p-value", "p-hide-close", "po-clickable", "click", "p-close-action", 4, "ngFor", "ngForOf"], [1, "po-field-icon-container-right"], [3, "ngClass"], ["iconElement", ""], [3, "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-change", "p-change-search", "p-close-dropdown"], ["dropdownElement", ""], [3, "p-help", "p-disabled"], [1, "po-multiselect-input-placeholder"], [1, "po-multiselect-input-disclaimer", 3, "p-label", "p-value", "p-hide-close", "click", "p-close-action"]], template: function PoMultiselectComponent_Template(rf, ctx) { if (rf & 1) {
408
- i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1)(2, "div", 2, 3);
409
- i0.ɵɵlistener("keyup.enter", function PoMultiselectComponent_Template_div_keyup_enter_2_listener() { return ctx.toggleDropdownVisibility(); })("keydown", function PoMultiselectComponent_Template_div_keydown_2_listener($event) { return ctx.onKeyDown($event); })("click", function PoMultiselectComponent_Template_div_click_2_listener() { return ctx.toggleDropdownVisibility(); })("blur", function PoMultiselectComponent_Template_div_blur_2_listener() { return ctx.onBlur(); });
410
- i0.ɵɵtemplate(4, PoMultiselectComponent_span_4_Template, 2, 1, "span", 4);
411
- i0.ɵɵtemplate(5, PoMultiselectComponent_po_disclaimer_5_Template, 1, 5, "po-disclaimer", 5);
412
- i0.ɵɵelementStart(6, "div", 6);
413
- i0.ɵɵelement(7, "span", 7, 8);
446
+ } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 18, vars: 28, consts: [[3, "p-disabled", "p-label", "p-optional", "p-required", "p-show-required"], ["cdkOverlayOrigin", "", 1, "po-field-container-content"], ["trigger", "cdkOverlayOrigin"], [1, "po-input", "po-input-icon-right", "po-multiselect-input", "po-clickable", 3, "tabindex", "keyup.enter", "keydown", "click", "blur"], ["inputElement", ""], ["class", "po-multiselect-input-placeholder", 4, "ngIf"], ["class", "po-multiselect-input-disclaimer", 3, "p-label", "p-value", "p-hide-close", "po-clickable", "click", "p-close-action", 4, "ngFor", "ngForOf"], [1, "po-field-icon-container-right"], [3, "ngClass"], ["iconElement", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], ["dropdownDefault", ""], ["dropdownCDK", ""], [3, "p-help", "p-disabled"], ["dropdownListbox", ""], [1, "po-multiselect-input-placeholder"], [1, "po-multiselect-input-disclaimer", 3, "p-label", "p-value", "p-hide-close", "click", "p-close-action"], [4, "ngTemplateOutlet"], ["cdkConnectedOverlay", "", 3, "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen"], [3, "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-change", "p-change-search", "p-close-dropdown"], ["dropdownElement", ""]], template: function PoMultiselectComponent_Template(rf, ctx) { if (rf & 1) {
447
+ i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1, 2)(3, "div", 3, 4);
448
+ i0.ɵɵlistener("keyup.enter", function PoMultiselectComponent_Template_div_keyup_enter_3_listener() { return ctx.toggleDropdownVisibility(); })("keydown", function PoMultiselectComponent_Template_div_keydown_3_listener($event) { return ctx.onKeyDown($event); })("click", function PoMultiselectComponent_Template_div_click_3_listener() { return ctx.toggleDropdownVisibility(); })("blur", function PoMultiselectComponent_Template_div_blur_3_listener() { return ctx.onBlur(); });
449
+ i0.ɵɵtemplate(5, PoMultiselectComponent_span_5_Template, 2, 1, "span", 5);
450
+ i0.ɵɵtemplate(6, PoMultiselectComponent_po_disclaimer_6_Template, 1, 5, "po-disclaimer", 6);
451
+ i0.ɵɵelementStart(7, "div", 7);
452
+ i0.ɵɵelement(8, "span", 8, 9);
414
453
  i0.ɵɵelementEnd()()();
415
- i0.ɵɵelementStart(9, "po-multiselect-dropdown", 9, 10);
416
- i0.ɵɵlistener("p-change", function PoMultiselectComponent_Template_po_multiselect_dropdown_p_change_9_listener($event) { return ctx.changeItems($event); })("p-change-search", function PoMultiselectComponent_Template_po_multiselect_dropdown_p_change_search_9_listener($event) { return ctx.changeSearch($event); })("p-close-dropdown", function PoMultiselectComponent_Template_po_multiselect_dropdown_p_close_dropdown_9_listener() { return ctx.controlDropdownVisibility(false); });
417
- i0.ɵɵelementEnd();
418
- i0.ɵɵelement(11, "po-field-container-bottom", 11);
454
+ i0.ɵɵtemplate(10, PoMultiselectComponent_ng_container_10_Template, 1, 0, "ng-container", 10);
455
+ i0.ɵɵtemplate(11, PoMultiselectComponent_ng_template_11_Template, 1, 1, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor);
456
+ i0.ɵɵtemplate(13, PoMultiselectComponent_ng_template_13_Template, 1, 2, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
457
+ i0.ɵɵelement(15, "po-field-container-bottom", 13);
419
458
  i0.ɵɵelementEnd();
459
+ i0.ɵɵtemplate(16, PoMultiselectComponent_ng_template_16_Template, 2, 11, "ng-template", null, 14, i0.ɵɵtemplateRefExtractor);
420
460
  } if (rf & 2) {
461
+ const _r6 = i0.ɵɵreference(12);
462
+ const _r8 = i0.ɵɵreference(14);
421
463
  i0.ɵɵproperty("p-disabled", ctx.disabled)("p-label", ctx.label)("p-optional", ctx.optional)("p-required", ctx.required)("p-show-required", ctx.showRequired);
422
464
  i0.ɵɵadvance(1);
423
465
  i0.ɵɵclassProp("po-multiselect-show", ctx.dropdownOpen);
424
- i0.ɵɵadvance(1);
466
+ i0.ɵɵadvance(2);
425
467
  i0.ɵɵclassProp("po-multiselect-input-auto", ctx.autoHeight)("po-multiselect-input-static", !ctx.autoHeight)("po-multiselect-input-disabled", ctx.disabled);
426
468
  i0.ɵɵproperty("tabindex", ctx.disabled ? -1 : 0);
427
469
  i0.ɵɵattribute("disabled", ctx.disabled)("aria-label", ctx.label);
@@ -433,23 +475,23 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
433
475
  i0.ɵɵclassMapInterpolate2("po-icon po-field-icon ", ctx.dropdownIcon, " ", ctx.disabled ? "po-icon-input-disabled" : "po-icon-input", "");
434
476
  i0.ɵɵproperty("ngClass", ctx.disabled ? "po-field-icon-disabled" : "");
435
477
  i0.ɵɵadvance(2);
436
- i0.ɵɵproperty("p-searching", ctx.isServerSearching)("p-hide-search", ctx.hideSearch)("p-hide-select-all", ctx.hideSelectAll)("p-literals", ctx.literals)("p-options", ctx.options)("p-visible-options", ctx.visibleOptionsDropdown)("p-selected-options", ctx.selectedOptions)("p-placeholder-search", ctx.placeholderSearch)("p-field-value", ctx.fieldValue)("p-field-label", ctx.fieldLabel)("p-multiselect-template", ctx.multiselectOptionTemplate);
437
- i0.ɵɵadvance(2);
478
+ i0.ɵɵproperty("ngIf", ctx.appendBox)("ngIfThen", _r8)("ngIfElse", _r6);
479
+ i0.ɵɵadvance(5);
438
480
  i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled);
439
481
  } }, encapsulation: 2, changeDetection: 0 });
440
482
  }
441
483
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMultiselectComponent, [{
442
484
  type: Component,
443
- 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 class=\"po-field-container-content\" [class.po-multiselect-show]=\"dropdownOpen\">\n <div\n #inputElement\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n class=\"po-input po-input-icon-right po-multiselect-input po-clickable\"\n [class.po-multiselect-input-auto]=\"autoHeight\"\n [class.po-multiselect-input-static]=\"!autoHeight\"\n [class.po-multiselect-input-disabled]=\"disabled\"\n (keyup.enter)=\"toggleDropdownVisibility()\"\n (keydown)=\"onKeyDown($event)\"\n (click)=\"toggleDropdownVisibility()\"\n (blur)=\"onBlur()\"\n >\n <span *ngIf=\"placeholder && !disabled && !visibleDisclaimers?.length\" class=\"po-multiselect-input-placeholder\">\n {{ placeholder }}\n </span>\n\n <po-disclaimer\n *ngFor=\"let disclaimer of visibleDisclaimers\"\n class=\"po-multiselect-input-disclaimer\"\n [p-label]=\"disclaimer[fieldLabel]\"\n [p-value]=\"disclaimer[fieldValue]\"\n [p-hide-close]=\"disclaimer[fieldValue] === '' || disabled\"\n [class.po-clickable]=\"disclaimer[fieldValue] === '' && !disabled\"\n (click)=\"openDropdown(disclaimer[fieldValue] === '')\"\n (p-close-action)=\"closeDisclaimer(disclaimer[fieldValue])\"\n >\n </po-disclaimer>\n\n <div class=\"po-field-icon-container-right\">\n <span\n #iconElement\n class=\"po-icon po-field-icon {{ dropdownIcon }} {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [ngClass]=\"disabled ? 'po-field-icon-disabled' : ''\"\n >\n </span>\n </div>\n </div>\n </div>\n\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 >\n </po-multiselect-dropdown>\n\n <po-field-container-bottom [p-help]=\"help\" [p-disabled]=\"disabled\"></po-field-container-bottom>\n</po-field-container>\n" }]
485
+ 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 po-input-icon-right po-multiselect-input po-clickable\"\n [class.po-multiselect-input-auto]=\"autoHeight\"\n [class.po-multiselect-input-static]=\"!autoHeight\"\n [class.po-multiselect-input-disabled]=\"disabled\"\n (keyup.enter)=\"toggleDropdownVisibility()\"\n (keydown)=\"onKeyDown($event)\"\n (click)=\"toggleDropdownVisibility()\"\n (blur)=\"onBlur()\"\n >\n <span *ngIf=\"placeholder && !disabled && !visibleDisclaimers?.length\" class=\"po-multiselect-input-placeholder\">\n {{ placeholder }}\n </span>\n\n <po-disclaimer\n *ngFor=\"let disclaimer of visibleDisclaimers\"\n class=\"po-multiselect-input-disclaimer\"\n [p-label]=\"disclaimer[fieldLabel]\"\n [p-value]=\"disclaimer[fieldValue]\"\n [p-hide-close]=\"disclaimer[fieldValue] === '' || disabled\"\n [class.po-clickable]=\"disclaimer[fieldValue] === '' && !disabled\"\n (click)=\"openDropdown(disclaimer[fieldValue] === '')\"\n (p-close-action)=\"closeDisclaimer(disclaimer[fieldValue])\"\n >\n </po-disclaimer>\n\n <div class=\"po-field-icon-container-right\">\n <span\n #iconElement\n class=\"po-icon po-field-icon {{ dropdownIcon }} {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [ngClass]=\"disabled ? 'po-field-icon-disabled' : ''\"\n >\n </span>\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 >\n </po-multiselect-dropdown>\n</ng-template>\n" }]
444
486
  }], function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.PoControlPositionService }, { type: i2.PoMultiselectFilterService }, { type: i3.PoLanguageService }]; }, { multiselectOptionTemplate: [{
445
487
  type: ContentChild,
446
488
  args: [PoMultiselectOptionTemplateDirective, { static: true }]
447
489
  }], dropdownElement: [{
448
490
  type: ViewChild,
449
- args: ['dropdownElement', { read: ElementRef, static: true }]
491
+ args: ['dropdownElement', { read: ElementRef }]
450
492
  }], dropdown: [{
451
493
  type: ViewChild,
452
- args: ['dropdownElement', { static: true }]
494
+ args: ['dropdownElement']
453
495
  }], iconElement: [{
454
496
  type: ViewChild,
455
497
  args: ['iconElement', { read: ElementRef, static: true }]
@@ -457,4 +499,4 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
457
499
  type: ViewChild,
458
500
  args: ['inputElement', { read: ElementRef, static: true }]
459
501
  }] }); })();
460
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsVUFBVSxFQUtWLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDL0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7SUNOM0gsZ0NBQStHO0lBQzdHLFlBQ0Y7SUFBQSxpQkFBTzs7O0lBREwsZUFDRjtJQURFLG1EQUNGOzs7O0lBRUEseUNB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QUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBDb250ZW50Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1jb250cm9sLXBvc2l0aW9uL3BvLWNvbnRyb2wtcG9zaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb0tleUNvZGVFbnVtIH0gZnJvbSAnLi8uLi8uLi8uLi9lbnVtcy9wby1rZXktY29kZS5lbnVtJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi10ZW1wbGF0ZS9wby1tdWx0aXNlbGVjdC1vcHRpb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuY29uc3QgcG9NdWx0aXNlbGVjdENvbnRhaW5lck9mZnNldCA9IDg7XG5jb25zdCBwb011bHRpc2VsZWN0Q29udGFpbmVyUG9zaXRpb25EZWZhdWx0ID0gJ2JvdHRvbSc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlLFxuICBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb011bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb011bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XG5dO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb011bHRpc2VsZWN0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWJhc2ljXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtYmFzaWMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWxhYnNcIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LXZhY2F0aW9uXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIFZhY2F0aW9uXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24vc2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBWYWNhdGlvbiBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC10ZW1wbGF0ZVwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBUZW1wbGF0ZVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LXRlbXBsYXRlL3NhbXBsZS1wby1tdWx0aXNlbGVjdC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdGVtcGxhdGUvc2FtcGxlLXBvLW11bHRpc2VsZWN0LXRlbXBsYXRlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWhlcm9lc1wiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBIZXJvZXMgLSB1c2luZyBBUElcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtYW55LWFycmF5XCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIEFycmF5IEFueVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWFueS1hcnJheS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtYW55LWFycmF5LmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1hbnktYXJyYXkvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWFueS1hcnJheS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbXVsdGlzZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzXG59KVxuZXhwb3J0IGNsYXNzIFBvTXVsdGlzZWxlY3RDb21wb25lbnRcbiAgZXh0ZW5kcyBQb011bHRpc2VsZWN0QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQENvbnRlbnRDaGlsZChQb011bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIG11bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGU6IFBvTXVsdGlzZWxlY3RPcHRpb25UZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdkcm9wZG93bkVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bkVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGRyb3Bkb3duO1xuICBAVmlld0NoaWxkKCdpY29uRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGljb25FbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgZGlzY2xhaW1lck9mZnNldCA9IDA7XG4gIGRyb3Bkb3duSWNvbjogc3RyaW5nID0gJ3BvLWljb24tYXJyb3ctZG93bic7XG4gIGRyb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwb3NpdGlvbkRpc2NsYWltZXJFeHRyYTtcbiAgdGltZW91dFJlc2l6ZTtcbiAgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcblxuICBwcml2YXRlIGlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBjYWNoZU9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY29udHJvbFBvc2l0aW9uOiBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gICAgcHVibGljIGRlZmF1bHRTZXJ2aWNlOiBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZSxcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGxhbmd1YWdlU2VydmljZSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLmZpbHRlclNlcnZpY2UgJiYgKGNoYW5nZXMuZmlsdGVyU2VydmljZSB8fCBjaGFuZ2VzLmZpZWxkVmFsdWUgfHwgY2hhbmdlcy5maWVsZExhYmVsKSkge1xuICAgICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGRpc2NsYWltZXJzIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKChpbnB1dFdpZHRoICYmICF0aGlzLnZpc2libGVFbGVtZW50ICYmIHRoaXMuaW5pdGlhbGl6ZWQpIHx8IChpbnB1dFdpZHRoICYmIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMpKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLnZpc2libGVFbGVtZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuZ2V0T2JqZWN0c0J5VmFsdWVzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZmlsdGVyU3ViamVjdD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9NdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9NdWx0aXNlbGVjdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgbXVsdGlzZWxlY3Q6IFBvTXVsdGlzZWxlY3RDb21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzTXVsdGlzZWxlY3QoKSB7XG4gICAqICAgdGhpcy5tdWx0aXNlbGVjdC5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wby1pbnB1dCcpLm9mZnNldFdpZHRoIC0gNDA7XG4gIH1cblxuICBnZXREaXNjbGFpbWVyc1dpZHRoKCkge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3BvLWRpc2NsYWltZXInKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShkaXNjbGFpbWVycykubWFwKGRpc2NsYWltZXIgPT4gZGlzY2xhaW1lclsnb2Zmc2V0V2lkdGgnXSk7XG4gIH1cblxuICBjYWxjdWxhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lcnNXaWR0aCA9IHRoaXMuZ2V0RGlzY2xhaW1lcnNXaWR0aCgpO1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmdldElucHV0V2lkdGgoKTtcbiAgICBjb25zdCBleHRyYURpc2NsYWltZXJTaXplID0gMzg7XG4gICAgY29uc3QgZGlzY2xhaW1lcnNWaXNpYmxlID0gZGlzY2xhaW1lcnNXaWR0aFswXTtcblxuICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzID0gW107XG5cbiAgICBpZiAoaW5wdXRXaWR0aCA+IDApIHtcbiAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgbGV0IGkgPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHN1bSArPSBkaXNjbGFpbWVyc1dpZHRoW2ldO1xuICAgICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycy5wdXNoKHRoaXMuc2VsZWN0ZWRPcHRpb25zW2ldKTtcblxuICAgICAgICBpZiAoc3VtID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIHN1bSAtPSBkaXNjbGFpbWVyc1dpZHRoW2ldO1xuICAgICAgICAgIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlzY2xhaW1lcnNWaXNpYmxlIHx8ICF0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGkgPT09IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VtICsgZXh0cmFEaXNjbGFpbWVyU2l6ZSA+IGlucHV0V2lkdGgpIHtcbiAgICAgICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycy5zcGxpY2UoLTIsIDIpO1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gJysnICsgKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCArIDEgLSBpKS50b1N0cmluZygpO1xuICAgICAgICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzLnB1c2goeyBbdGhpcy5maWVsZFZhbHVlXTogJycsIFt0aGlzLmZpZWxkTGFiZWxdOiBsYWJlbCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycy5zcGxpY2UoLTEsIDEpO1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gJysnICsgKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMucHVzaCh7IFt0aGlzLmZpZWxkVmFsdWVdOiAnJywgW3RoaXMuZmllbGRMYWJlbF06IGxhYmVsIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjaGFuZ2VJdGVtcyhjaGFuZ2VkSXRlbXMpIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9ucyhjaGFuZ2VkSXRlbXMpO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcblxuICAgIGlmICh0aGlzLmF1dG9IZWlnaHQgJiYgdGhpcy5kcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZpc2libGVJdGVtcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMpIHtcbiAgICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzID0gW10uY29uY2F0KHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG5cbiAgICAvLyBxdWFuZG8gZXN0aXZlciBkZW50cm8gZGUgbW9kYWxcbiAgICBpZiAoIXRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRlYm91bmNlUmVzaXplKCkge1xuICAgIGlmICghdGhpcy5hdXRvSGVpZ2h0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0UmVzaXplKTtcbiAgICAgIHRoaXMudGltZW91dFJlc2l6ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudD86IGFueSkge1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBQb0tleUNvZGVFbnVtLmFycm93VXAgfHwgZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS5hcnJvd0Rvd24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0udGFiKSB7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duVmlzaWJpbGl0eSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbHRlclNlcnZpY2UpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJJbkZpcnN0Q2xpY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoIXRoaXMuZHJvcGRvd25PcGVuKTtcbiAgfVxuXG4gIG9wZW5Ecm9wZG93bih0b09wZW4pIHtcbiAgICBpZiAodG9PcGVuICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSh0b09wZW46IGJvb2xlYW4pIHtcbiAgICB0b09wZW4gPyB0aGlzLm9wZW4oKSA6IHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHNjcm9sbFRvU2VsZWN0ZWRPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9ucyAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcHRpb25zLmZpbmRJbmRleChcbiAgICAgICAgb3B0aW9uID0+IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdID09PSB0aGlzLnNlbGVjdGVkT3B0aW9uc1swXVt0aGlzLmZpZWxkVmFsdWVdXG4gICAgICApO1xuICAgICAgdGhpcy5kcm9wZG93bi5zY3JvbGxUbyhpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bihvcHRpb25zKSB7XG4gICAgdGhpcy52aXNpYmxlT3B0aW9uc0Ryb3Bkb3duID0gb3B0aW9ucztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2hhbmdlU2VhcmNoKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50W3RoaXMuZmllbGRWYWx1ZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgICB0aGlzLmZpbHRlclN1YmplY3QubmV4dChldmVudFt0aGlzLmZpZWxkVmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VhcmNoQnlMYWJlbChldmVudFt0aGlzLmZpZWxkVmFsdWVdLCB0aGlzLm9wdGlvbnMsIHRoaXMuZmlsdGVyTW9kZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bih0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIHRpbWVvdXQgbmVjZXNzw6FyaW8gcGFyYSByZXBvc2ljaW9uYXIgY29ycmV0YW1lbnRlIHF1YW5kbyBkcm9wZG93biBlc3RpdmVyIHByYSBjaW1hIGRvIGlucHV0IGUgcmVhbGl6YXIgYnVzY2Egbm8gaW5wdXRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKSk7XG4gIH1cblxuICBjbG9zZURpc2NsYWltZXIodmFsdWUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0gPT09IHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gIH1cblxuICB3YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbiAmJlxuICAgICAgIXRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMuaWNvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5kcm9wZG93bkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcgPSAnJyk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4+IHtcbiAgICBjb25zdCBwYXJhbSA9IHsgcHJvcGVydHk6IHRoaXMuZmllbGRMYWJlbCwgdmFsdWU6IHZhbHVlIH07XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRGaWx0ZXJlZERhdGEocGFyYW0pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChvcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55PikgPT4ge1xuICAgICAgICB0aGlzLnNldE9wdGlvbnNCeUFwcGx5RmlsdGVyKG9wdGlvbnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlckluRmlyc3RDbGljaygpIHtcbiAgICBpZiAodGhpcy5pc0ZpcnN0RmlsdGVyKSB7XG4gICAgICB0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gdHJ1ZTtcblxuICAgICAgLy8gbmVjZXNzYXJpbyBlbnZpYXIgdW0gb2JqZXRvIHN0cmluZyB2YXppYSBwYXJhIHJlZmF6ZXIgYSBidXNjYSwgcXVhbmRvIGFsdGVyYXIgZmlsdGVyU2VydmljZSwgZmllbGRWYWx1ZSBlIGZpZWxkTGFiZWxcbiAgICAgIC8vIHBvaXMgdGVtb3MgbyBkaXN0aW5jdFVudGlsQ2hhbmdlIG5vIHBpcGUgZG8gZmlsdGVyU3ViamVjdFxuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tbmV3LXdyYXBwZXJzICovXG4gICAgICB0aGlzLmZpbHRlclN1YmplY3QubmV4dChuZXcgU3RyaW5nKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5jYWNoZU9wdGlvbnNdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0T3B0aW9uc0J5QXBwbHlGaWx0ZXIoaXRlbXM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+KSB7XG4gICAgaWYgKHRoaXMuaXNGaXJzdEZpbHRlcikge1xuICAgICAgdGhpcy5jYWNoZU9wdGlvbnMgPSBbLi4uaXRlbXNdO1xuICAgICAgdGhpcy5pc0ZpcnN0RmlsdGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gWy4uLml0ZW1zXTtcbiAgICB0aGlzLnNldFZpc2libGVPcHRpb25zRHJvcGRvd24odGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uYWRqdXN0UG9zaXRpb24ocG9NdWx0aXNlbGVjdENvbnRhaW5lclBvc2l0aW9uRGVmYXVsdCk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25JY29uID0gJ3BvLWljb24tYXJyb3ctZG93bic7XG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICAgIHRoaXMuZHJvcGRvd24uY29udHJvbFZpc2liaWxpdHkoZmFsc2UpO1xuICAgIHRoaXMuc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bih0aGlzLm9wdGlvbnMpO1xuXG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrT3V0TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIHRoaXMud2FzQ2xpY2tlZE9uVG9nZ2xlKGV2ZW50KTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG5cbiAgICAgIGlzTW9iaWxlKCkgPyB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCkgOiB0aGlzLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uU2Nyb2xsID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgfTtcblxuICBwcml2YXRlIG9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkljb24gPSAncG8taWNvbi1hcnJvdy11cCc7XG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSB0cnVlO1xuXG4gICAgdGhpcy5kcm9wZG93bi5jb250cm9sVmlzaWJpbGl0eSh0cnVlKTtcbiAgICB0aGlzLnNldFZpc2libGVPcHRpb25zRHJvcGRvd24odGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmluaXRpYWxpemVMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWRPcHRpb25zKCk7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNldFBvc2l0aW9uRHJvcGRvd24oKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsaWNrT3V0TGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tPdXRMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uc2V0RWxlbWVudHMoXG4gICAgICB0aGlzLmRyb3Bkb3duLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgcG9NdWx0aXNlbGVjdENvbnRhaW5lck9mZnNldCxcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LFxuICAgICAgWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgfVxufVxuIiwiPHBvLWZpZWxkLWNvbnRhaW5lclxuICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtwLWxhYmVsXT1cImxhYmVsXCJcbiAgW3Atb3B0aW9uYWxdPVwib3B0aW9uYWxcIlxuICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtwLXNob3ctcmVxdWlyZWRdPVwic2hvd1JlcXVpcmVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCIgW2NsYXNzLnBvLW11bHRpc2VsZWN0LXNob3ddPVwiZHJvcGRvd25PcGVuXCI+XG4gICAgPGRpdlxuICAgICAgI2lucHV0RWxlbWVudFxuICAgICAgW3RhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgICAgY2xhc3M9XCJwby1pbnB1dCBwby1pbnB1dC1pY29uLXJpZ2h0IHBvLW11bHRpc2VsZWN0LWlucHV0IHBvLWNsaWNrYWJsZVwiXG4gICAgICBbY2xhc3MucG8tbXVsdGlzZWxlY3QtaW5wdXQtYXV0b109XCJhdXRvSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5wby1tdWx0aXNlbGVjdC1pbnB1dC1zdGF0aWNdPVwiIWF1dG9IZWlnaHRcIlxuICAgICAgW2NsYXNzLnBvLW11bHRpc2VsZWN0LWlucHV0LWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVEcm9wZG93blZpc2liaWxpdHkoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KClcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGxhY2Vob2xkZXIgJiYgIWRpc2FibGVkICYmICF2aXNpYmxlRGlzY2xhaW1lcnM/Lmxlbmd0aFwiIGNsYXNzPVwicG8tbXVsdGlzZWxlY3QtaW5wdXQtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHBvLWRpc2NsYWltZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRpc2NsYWltZXIgb2YgdmlzaWJsZURpc2NsYWltZXJzXCJcbiAgICAgICAgY2xhc3M9XCJwby1tdWx0aXNlbGVjdC1pbnB1dC1kaXNjbGFpbWVyXCJcbiAgICAgICAgW3AtbGFiZWxdPVwiZGlzY2xhaW1lcltmaWVsZExhYmVsXVwiXG4gICAgICAgIFtwLXZhbHVlXT1cImRpc2NsYWltZXJbZmllbGRWYWx1ZV1cIlxuICAgICAgICBbcC1oaWRlLWNsb3NlXT1cImRpc2NsYWltZXJbZmllbGRWYWx1ZV0gPT09ICcnIHx8IGRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJkaXNjbGFpbWVyW2ZpZWxkVmFsdWVdID09PSAnJyAmJiAhZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKGRpc2NsYWltZXJbZmllbGRWYWx1ZV0gPT09ICcnKVwiXG4gICAgICAgIChwLWNsb3NlLWFjdGlvbik9XCJjbG9zZURpc2NsYWltZXIoZGlzY2xhaW1lcltmaWVsZFZhbHVlXSlcIlxuICAgICAgPlxuICAgICAgPC9wby1kaXNjbGFpbWVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAjaWNvbkVsZW1lbnRcbiAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiB7eyBkcm9wZG93bkljb24gfX0ge3sgZGlzYWJsZWQgPyAncG8taWNvbi1pbnB1dC1kaXNhYmxlZCcgOiAncG8taWNvbi1pbnB1dCcgfX1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ3BvLWZpZWxkLWljb24tZGlzYWJsZWQnIDogJydcIlxuICAgICAgICA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8cG8tbXVsdGlzZWxlY3QtZHJvcGRvd25cbiAgICAjZHJvcGRvd25FbGVtZW50XG4gICAgW3Atc2VhcmNoaW5nXT1cImlzU2VydmVyU2VhcmNoaW5nXCJcbiAgICBbcC1oaWRlLXNlYXJjaF09XCJoaWRlU2VhcmNoXCJcbiAgICBbcC1oaWRlLXNlbGVjdC1hbGxdPVwiaGlkZVNlbGVjdEFsbFwiXG4gICAgW3AtbGl0ZXJhbHNdPVwibGl0ZXJhbHNcIlxuICAgIFtwLW9wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgW3AtdmlzaWJsZS1vcHRpb25zXT1cInZpc2libGVPcHRpb25zRHJvcGRvd25cIlxuICAgIFtwLXNlbGVjdGVkLW9wdGlvbnNdPVwic2VsZWN0ZWRPcHRpb25zXCJcbiAgICBbcC1wbGFjZWhvbGRlci1zZWFyY2hdPVwicGxhY2Vob2xkZXJTZWFyY2hcIlxuICAgIFtwLWZpZWxkLXZhbHVlXT1cImZpZWxkVmFsdWVcIlxuICAgIFtwLWZpZWxkLWxhYmVsXT1cImZpZWxkTGFiZWxcIlxuICAgIFtwLW11bHRpc2VsZWN0LXRlbXBsYXRlXT1cIm11bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGVcIlxuICAgIChwLWNoYW5nZSk9XCJjaGFuZ2VJdGVtcygkZXZlbnQpXCJcbiAgICAocC1jaGFuZ2Utc2VhcmNoKT1cImNoYW5nZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAocC1jbG9zZS1kcm9wZG93bik9XCJjb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KGZhbHNlKVwiXG4gID5cbiAgPC9wby1tdWx0aXNlbGVjdC1kcm9wZG93bj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1oZWxwXT1cImhlbHBcIiBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
502
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsVUFBVSxFQUtWLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDL0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7SUNEM0gsZ0NBQStHO0lBQzdHLFlBQ0Y7SUFBQSxpQkFBTzs7O0lBREwsZUFDRjtJQURFLG1EQUNGOzs7O0lBRUEseUNB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bUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3BCLFFBQVE7a0JBQXJDLFNBQVM7bUJBQUMsaUJBQWlCO1lBQ2tDLFdBQVc7a0JBQXhFLFNBQVM7bUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ0csWUFBWTtrQkFBMUUsU0FBUzttQkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBDb250ZW50Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1jb250cm9sLXBvc2l0aW9uL3BvLWNvbnRyb2wtcG9zaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb0tleUNvZGVFbnVtIH0gZnJvbSAnLi8uLi8uLi8uLi9lbnVtcy9wby1rZXktY29kZS5lbnVtJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi10ZW1wbGF0ZS9wby1tdWx0aXNlbGVjdC1vcHRpb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuY29uc3QgcG9NdWx0aXNlbGVjdENvbnRhaW5lck9mZnNldCA9IDg7XG5jb25zdCBwb011bHRpc2VsZWN0Q29udGFpbmVyUG9zaXRpb25EZWZhdWx0ID0gJ2JvdHRvbSc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlLFxuICBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb011bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb011bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XG5dO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb011bHRpc2VsZWN0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWJhc2ljXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtYmFzaWMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWxhYnNcIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LXZhY2F0aW9uXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIFZhY2F0aW9uXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24vc2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBWYWNhdGlvbiBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC10ZW1wbGF0ZVwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBUZW1wbGF0ZVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LXRlbXBsYXRlL3NhbXBsZS1wby1tdWx0aXNlbGVjdC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdGVtcGxhdGUvc2FtcGxlLXBvLW11bHRpc2VsZWN0LXRlbXBsYXRlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWhlcm9lc1wiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBIZXJvZXMgLSB1c2luZyBBUElcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtYW55LWFycmF5XCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIEFycmF5IEFueVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWFueS1hcnJheS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtYW55LWFycmF5LmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1hbnktYXJyYXkvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWFueS1hcnJheS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbXVsdGlzZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzXG59KVxuZXhwb3J0IGNsYXNzIFBvTXVsdGlzZWxlY3RDb21wb25lbnRcbiAgZXh0ZW5kcyBQb011bHRpc2VsZWN0QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQENvbnRlbnRDaGlsZChQb011bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIG11bHRpc2VsZWN0T3B0aW9uVGVtcGxhdGU6IFBvTXVsdGlzZWxlY3RPcHRpb25UZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdkcm9wZG93bkVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZHJvcGRvd25FbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkVsZW1lbnQnKSBkcm9wZG93bjtcbiAgQFZpZXdDaGlsZCgnaWNvbkVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpY29uRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIGRpc2NsYWltZXJPZmZzZXQgPSAwO1xuICBkcm9wZG93bkljb246IHN0cmluZyA9ICdwby1pY29uLWFycm93LWRvd24nO1xuICBkcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcG9zaXRpb25EaXNjbGFpbWVyRXh0cmE7XG4gIHRpbWVvdXRSZXNpemU7XG4gIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBpc0NhbGN1bGF0ZVZpc2libGVJdGVtczogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgY2FjaGVPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNvbnRyb2xQb3NpdGlvbjogUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBkZWZhdWx0U2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihsYW5ndWFnZVNlcnZpY2UpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlICYmIChjaGFuZ2VzLmZpbHRlclNlcnZpY2UgfHwgY2hhbmdlcy5maWVsZFZhbHVlIHx8IGNoYW5nZXMuZmllbGRMYWJlbCkpIHtcbiAgICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLmZpbHRlclNlcnZpY2UpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAvLyBQZXJtaXRlIHF1ZSBvcyBkaXNjbGFpbWVycyBzZWphbSBjYWxjdWxhZG9zIG5hIHByaW1laXJhIHZleiBxdWUgbyBjb21wb25lbnRlIHRvcm5hLXNlIHZpc8OtdmVsLFxuICAgIC8vIGV2aXRhbmRvIGNvbSBpc3NvLCBwcm9ibGVtYXMgY29tIFRhYnMgb3UgRGl2cyBxdWUgaW5pY2llbSBlc2NvbmRpZGFzLlxuICAgIGlmICgoaW5wdXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB8fCAoaW5wdXRXaWR0aCAmJiB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zKSkge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgICAgdGhpcy52aXNpYmxlRWxlbWVudCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmdldE9iamVjdHNCeVZhbHVlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmZpbHRlclN1YmplY3Q/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogRnVuw6fDo28gcXVlIGF0cmlidWkgZm9jbyBhbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIHV0aWxpesOhLWxhIMOpIG5lY2Vzc8OhcmlvIHRlciBhIGluc3TDom5jaWEgZG8gY29tcG9uZW50ZSBubyBET00sIHBvZGVuZG8gc2VyIHV0aWxpemFkbyBvIFZpZXdDaGlsZCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBvTXVsdGlzZWxlY3RDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvTXVsdGlzZWxlY3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIG11bHRpc2VsZWN0OiBQb011bHRpc2VsZWN0Q29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c011bHRpc2VsZWN0KCkge1xuICAgKiAgIHRoaXMubXVsdGlzZWxlY3QuZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldElucHV0V2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucG8taW5wdXQnKS5vZmZzZXRXaWR0aCAtIDQwO1xuICB9XG5cbiAgZ2V0RGlzY2xhaW1lcnNXaWR0aCgpIHtcbiAgICBjb25zdCBkaXNjbGFpbWVycyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwby1kaXNjbGFpbWVyJyk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZGlzY2xhaW1lcnMpLm1hcChkaXNjbGFpbWVyID0+IGRpc2NsYWltZXJbJ29mZnNldFdpZHRoJ10pO1xuICB9XG5cbiAgY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCkge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzV2lkdGggPSB0aGlzLmdldERpc2NsYWltZXJzV2lkdGgoKTtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5nZXRJbnB1dFdpZHRoKCk7XG4gICAgY29uc3QgZXh0cmFEaXNjbGFpbWVyU2l6ZSA9IDM4O1xuICAgIGNvbnN0IGRpc2NsYWltZXJzVmlzaWJsZSA9IGRpc2NsYWltZXJzV2lkdGhbMF07XG5cbiAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFtdO1xuXG4gICAgaWYgKGlucHV0V2lkdGggPiAwKSB7XG4gICAgICBsZXQgc3VtID0gMDtcbiAgICAgIGxldCBpID0gMDtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzdW0gKz0gZGlzY2xhaW1lcnNXaWR0aFtpXTtcbiAgICAgICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMucHVzaCh0aGlzLnNlbGVjdGVkT3B0aW9uc1tpXSk7XG5cbiAgICAgICAgaWYgKHN1bSA+IGlucHV0V2lkdGgpIHtcbiAgICAgICAgICBzdW0gLT0gZGlzY2xhaW1lcnNXaWR0aFtpXTtcbiAgICAgICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRpc2NsYWltZXJzVmlzaWJsZSB8fCAhdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChpID09PSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1bSArIGV4dHJhRGlzY2xhaW1lclNpemUgPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMuc3BsaWNlKC0yLCAyKTtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9ICcrJyArICh0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggKyAxIC0gaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycy5wdXNoKHsgW3RoaXMuZmllbGRWYWx1ZV06ICcnLCBbdGhpcy5maWVsZExhYmVsXTogbGFiZWwgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMuc3BsaWNlKC0xLCAxKTtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9ICcrJyArICh0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggLSBpKS50b1N0cmluZygpO1xuICAgICAgICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzLnB1c2goeyBbdGhpcy5maWVsZFZhbHVlXTogJycsIFt0aGlzLmZpZWxkTGFiZWxdOiBsYWJlbCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2hhbmdlSXRlbXMoY2hhbmdlZEl0ZW1zKSB7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZE9wdGlvbnMoY2hhbmdlZEl0ZW1zKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG5cbiAgICBpZiAodGhpcy5hdXRvSGVpZ2h0ICYmIHRoaXMuZHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25zKSB7XG4gICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFtdLmNvbmNhdCh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuXG4gICAgLy8gcXVhbmRvIGVzdGl2ZXIgZGVudHJvIGRlIG1vZGFsXG4gICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMuYXV0b0hlaWdodCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZD8uKCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ/OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS5hcnJvd1VwIHx8IGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0uYXJyb3dEb3duKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5jb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBQb0tleUNvZGVFbnVtLnRhYikge1xuICAgICAgdGhpcy5jb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVEcm9wZG93blZpc2liaWxpdHkoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVySW5GaXJzdENsaWNrKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KCF0aGlzLmRyb3Bkb3duT3Blbik7XG4gIH1cblxuICBvcGVuRHJvcGRvd24odG9PcGVuKSB7XG4gICAgaWYgKHRvT3BlbiAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkodG9PcGVuOiBib29sZWFuKSB7XG4gICAgdG9PcGVuID8gdGhpcy5vcGVuKCkgOiB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzY3JvbGxUb1NlbGVjdGVkT3B0aW9ucygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMgJiYgdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgIG9wdGlvbiA9PiBvcHRpb25bdGhpcy5maWVsZFZhbHVlXSA9PT0gdGhpcy5zZWxlY3RlZE9wdGlvbnNbMF1bdGhpcy5maWVsZFZhbHVlXVxuICAgICAgKTtcbiAgICAgIHRoaXMuZHJvcGRvd24uc2Nyb2xsVG8oaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHNldFZpc2libGVPcHRpb25zRHJvcGRvd24ob3B0aW9ucykge1xuICAgIHRoaXMudmlzaWJsZU9wdGlvbnNEcm9wZG93biA9IG9wdGlvbnM7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNoYW5nZVNlYXJjaChldmVudCkge1xuICAgIGlmIChldmVudCAmJiBldmVudFt0aGlzLmZpZWxkVmFsdWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJTdWJqZWN0Lm5leHQoZXZlbnRbdGhpcy5maWVsZFZhbHVlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlYXJjaEJ5TGFiZWwoZXZlbnRbdGhpcy5maWVsZFZhbHVlXSwgdGhpcy5vcHRpb25zLCB0aGlzLmZpbHRlck1vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFZpc2libGVPcHRpb25zRHJvcGRvd24odGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyB0aW1lb3V0IG5lY2Vzc8OhcmlvIHBhcmEgcmVwb3NpY2lvbmFyIGNvcnJldGFtZW50ZSBxdWFuZG8gZHJvcGRvd24gZXN0aXZlciBwcmEgY2ltYSBkbyBpbnB1dCBlIHJlYWxpemFyIGJ1c2NhIG5vIGlucHV0XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCkpO1xuICB9XG5cbiAgY2xvc2VEaXNjbGFpbWVyKHZhbHVlKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdID09PSB2YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICB9XG5cbiAgd2FzQ2xpY2tlZE9uVG9nZ2xlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gJiZcbiAgICAgICF0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLmljb25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMuZHJvcGRvd25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5jb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhcHBseUZpbHRlcih2YWx1ZTogc3RyaW5nID0gJycpOiBPYnNlcnZhYmxlPEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+PiB7XG4gICAgY29uc3QgcGFyYW0gPSB7IHByb3BlcnR5OiB0aGlzLmZpZWxkTGFiZWwsIHZhbHVlOiB2YWx1ZSB9O1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0RmlsdGVyZWREYXRhKHBhcmFtKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICB0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgob3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4pID0+IHtcbiAgICAgICAgdGhpcy5zZXRPcHRpb25zQnlBcHBseUZpbHRlcihvcHRpb25zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJJbkZpcnN0Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaXNGaXJzdEZpbHRlcikge1xuICAgICAgdGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IHRydWU7XG5cbiAgICAgIC8vIG5lY2Vzc2FyaW8gZW52aWFyIHVtIG9iamV0byBzdHJpbmcgdmF6aWEgcGFyYSByZWZhemVyIGEgYnVzY2EsIHF1YW5kbyBhbHRlcmFyIGZpbHRlclNlcnZpY2UsIGZpZWxkVmFsdWUgZSBmaWVsZExhYmVsXG4gICAgICAvLyBwb2lzIHRlbW9zIG8gZGlzdGluY3RVbnRpbENoYW5nZSBubyBwaXBlIGRvIGZpbHRlclN1YmplY3RcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLW5ldy13cmFwcGVycyAqL1xuICAgICAgdGhpcy5maWx0ZXJTdWJqZWN0Lm5leHQobmV3IFN0cmluZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zID0gWy4uLnRoaXMuY2FjaGVPcHRpb25zXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE9wdGlvbnNCeUFwcGx5RmlsdGVyKGl0ZW1zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55Pikge1xuICAgIGlmICh0aGlzLmlzRmlyc3RGaWx0ZXIpIHtcbiAgICAgIHRoaXMuY2FjaGVPcHRpb25zID0gWy4uLml0ZW1zXTtcbiAgICAgIHRoaXMuaXNGaXJzdEZpbHRlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IFsuLi5pdGVtc107XG4gICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLmFkanVzdFBvc2l0aW9uKHBvTXVsdGlzZWxlY3RDb250YWluZXJQb3NpdGlvbkRlZmF1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duSWNvbiA9ICdwby1pY29uLWFycm93LWRvd24nO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmNvbnRyb2xWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB0aGlzLnNldFZpc2libGVPcHRpb25zRHJvcGRvd24odGhpcy5vcHRpb25zKTtcblxuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jbGlja091dExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLndhc0NsaWNrZWRPblRvZ2dsZShldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuXG4gICAgICBpc01vYmlsZSgpID8gdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpIDogdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBvcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25JY29uID0gJ3BvLWljb24tYXJyb3ctdXAnO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuZHJvcGRvd24uY29udHJvbFZpc2liaWxpdHkodHJ1ZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkT3B0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXRQb3NpdGlvbkRyb3Bkb3duKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGlja091dExpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrT3V0TGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQb3NpdGlvbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLnNldEVsZW1lbnRzKFxuICAgICAgdGhpcy5kcm9wZG93bi5jb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgIHBvTXVsdGlzZWxlY3RDb250YWluZXJPZmZzZXQsXG4gICAgICB0aGlzLmlucHV0RWxlbWVudCxcbiAgICAgIFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXJcbiAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcC1sYWJlbF09XCJsYWJlbFwiXG4gIFtwLW9wdGlvbmFsXT1cIm9wdGlvbmFsXCJcbiAgW3AtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbcC1zaG93LXJlcXVpcmVkXT1cInNob3dSZXF1aXJlZFwiXG4+XG4gIDxkaXZcbiAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCJcbiAgICBbY2xhc3MucG8tbXVsdGlzZWxlY3Qtc2hvd109XCJkcm9wZG93bk9wZW5cIlxuICA+XG4gICAgPGRpdlxuICAgICAgI2lucHV0RWxlbWVudFxuICAgICAgW3RhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgICAgY2xhc3M9XCJwby1pbnB1dCBwby1pbnB1dC1pY29uLXJpZ2h0IHBvLW11bHRpc2VsZWN0LWlucHV0IHBvLWNsaWNrYWJsZVwiXG4gICAgICBbY2xhc3MucG8tbXVsdGlzZWxlY3QtaW5wdXQtYXV0b109XCJhdXRvSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5wby1tdWx0aXNlbGVjdC1pbnB1dC1zdGF0aWNdPVwiIWF1dG9IZWlnaHRcIlxuICAgICAgW2NsYXNzLnBvLW11bHRpc2VsZWN0LWlucHV0LWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVEcm9wZG93blZpc2liaWxpdHkoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KClcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGxhY2Vob2xkZXIgJiYgIWRpc2FibGVkICYmICF2aXNpYmxlRGlzY2xhaW1lcnM/Lmxlbmd0aFwiIGNsYXNzPVwicG8tbXVsdGlzZWxlY3QtaW5wdXQtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHBvLWRpc2NsYWltZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRpc2NsYWltZXIgb2YgdmlzaWJsZURpc2NsYWltZXJzXCJcbiAgICAgICAgY2xhc3M9XCJwby1tdWx0aXNlbGVjdC1pbnB1dC1kaXNjbGFpbWVyXCJcbiAgICAgICAgW3AtbGFiZWxdPVwiZGlzY2xhaW1lcltmaWVsZExhYmVsXVwiXG4gICAgICAgIFtwLXZhbHVlXT1cImRpc2NsYWltZXJbZmllbGRWYWx1ZV1cIlxuICAgICAgICBbcC1oaWRlLWNsb3NlXT1cImRpc2NsYWltZXJbZmllbGRWYWx1ZV0gPT09ICcnIHx8IGRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJkaXNjbGFpbWVyW2ZpZWxkVmFsdWVdID09PSAnJyAmJiAhZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKGRpc2NsYWltZXJbZmllbGRWYWx1ZV0gPT09ICcnKVwiXG4gICAgICAgIChwLWNsb3NlLWFjdGlvbik9XCJjbG9zZURpc2NsYWltZXIoZGlzY2xhaW1lcltmaWVsZFZhbHVlXSlcIlxuICAgICAgPlxuICAgICAgPC9wby1kaXNjbGFpbWVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAjaWNvbkVsZW1lbnRcbiAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiB7eyBkcm9wZG93bkljb24gfX0ge3sgZGlzYWJsZWQgPyAncG8taWNvbi1pbnB1dC1kaXNhYmxlZCcgOiAncG8taWNvbi1pbnB1dCcgfX1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ3BvLWZpZWxkLWljb24tZGlzYWJsZWQnIDogJydcIlxuICAgICAgICA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZW5kQm94OyB0aGVuIGRyb3Bkb3duQ0RLOyBlbHNlIGRyb3Bkb3duRGVmYXVsdFwiPiA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duRGVmYXVsdD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25MaXN0Ym94XCI+IDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25DREs+XG4gICAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJ0cnVlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25MaXN0Ym94XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1oZWxwXT1cImhlbHBcIiBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duTGlzdGJveD5cbiAgPHBvLW11bHRpc2VsZWN0LWRyb3Bkb3duXG4gICAgI2Ryb3Bkb3duRWxlbWVudFxuICAgIFtwLXNlYXJjaGluZ109XCJpc1NlcnZlclNlYXJjaGluZ1wiXG4gICAgW3AtaGlkZS1zZWFyY2hdPVwiaGlkZVNlYXJjaFwiXG4gICAgW3AtaGlkZS1zZWxlY3QtYWxsXT1cImhpZGVTZWxlY3RBbGxcIlxuICAgIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCJcbiAgICBbcC1vcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtwLXZpc2libGUtb3B0aW9uc109XCJ2aXNpYmxlT3B0aW9uc0Ryb3Bkb3duXCJcbiAgICBbcC1zZWxlY3RlZC1vcHRpb25zXT1cInNlbGVjdGVkT3B0aW9uc1wiXG4gICAgW3AtcGxhY2Vob2xkZXItc2VhcmNoXT1cInBsYWNlaG9sZGVyU2VhcmNoXCJcbiAgICBbcC1maWVsZC12YWx1ZV09XCJmaWVsZFZhbHVlXCJcbiAgICBbcC1maWVsZC1sYWJlbF09XCJmaWVsZExhYmVsXCJcbiAgICBbcC1tdWx0aXNlbGVjdC10ZW1wbGF0ZV09XCJtdWx0aXNlbGVjdE9wdGlvblRlbXBsYXRlXCJcbiAgICAocC1jaGFuZ2UpPVwiY2hhbmdlSXRlbXMoJGV2ZW50KVwiXG4gICAgKHAtY2hhbmdlLXNlYXJjaCk9XCJjaGFuZ2VTZWFyY2goJGV2ZW50KVwiXG4gICAgKHAtY2xvc2UtZHJvcGRvd24pPVwiY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSlcIlxuICA+XG4gIDwvcG8tbXVsdGlzZWxlY3QtZHJvcGRvd24+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -326,7 +326,7 @@ export class PoMenuItemComponent {
326
326
  } if (rf & 2) {
327
327
  let _t;
328
328
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuSubItems = _t.first);
329
- } }, inputs: { action: ["p-action", "action"], badgeAlert: ["p-badge-alert", "badgeAlert"], badgeColor: ["p-badge-color", "badgeColor"], collapsedMenu: ["p-collapsed-menu", "collapsedMenu"], icon: ["p-icon", "icon"], id: ["p-id", "id"], isOpened: ["p-is-opened", "isOpened"], label: ["p-label", "label"], level: ["p-level", "level"], link: ["p-link", "link"], shortLabel: ["p-short-label", "shortLabel"], type: ["p-type", "type"], badgeValue: ["p-badge-value", "badgeValue"], isSelected: ["p-is-selected", "isSelected"], isSubItem: ["p-is-sub-item", "isSubItem"], subItems: ["p-sub-items", "subItems"] }, decls: 7, vars: 5, consts: [["class", "po-menu-item-link", "role", "menuitem", 3, "routerLink", 4, "ngIf"], ["class", "po-menu-item-link", "role", "menuitem", 3, "href", 4, "ngIf"], ["class", "po-menu-item-link", "href", "javascript:;", "role", "menuitem", 4, "ngIf"], ["class", "po-menu-item-link", "role", "none", 4, "ngIf"], ["class", "po-menu-item-link po-clickable", "role", "menuitem", 4, "ngIf"], ["menuItemTemplate", ""], ["role", "menuitem", 1, "po-menu-item-link", 3, "routerLink"], [4, "ngTemplateOutlet"], ["role", "menuitem", 1, "po-menu-item-link", 3, "href"], ["href", "javascript:;", "role", "menuitem", 1, "po-menu-item-link"], ["role", "none", 1, "po-menu-item-link"], ["role", "menuitem", 1, "po-menu-item-link", "po-clickable"], ["role", "group", 1, "po-menu-sub-items", 3, "hidden"], ["menuSubItems", ""], [1, "po-menu-sub-items-list"], ["class", "po-menu-subm-items-list-item", 4, "ngFor", "ngForOf"], [1, "po-menu-subm-items-list-item"], ["p-is-sub-item", "", 3, "p-action", "p-badge-alert", "p-badge-color", "p-badge-value", "p-id", "p-label", "p-level", "p-link", "p-sub-items", "p-type"], [1, "po-menu-item", 3, "tabindex", "click", "keydown.enter", "keydown.space"], ["aria-hidden", "true", "class", "po-menu-icon-item", 3, "p-icon", 4, "ngIf"], ["class", "po-icon po-menu-group-icon", 3, "po-icon-arrow-up", "po-icon-arrow-down", 4, "ngIf"], ["aria-hidden", "true", 3, "ngClass", "p-color", "p-value", 4, "ngIf"], ["aria-hidden", "true", "class", "po-color-07", 3, "ngClass", 4, "ngIf"], ["aria-hidden", "true", 1, "po-menu-icon-item", 3, "p-icon"], [1, "po-icon", "po-menu-group-icon"], ["aria-hidden", "true", 3, "ngClass", "p-color", "p-value"], ["aria-hidden", "true", 1, "po-color-07", 3, "ngClass"]], template: function PoMenuItemComponent_Template(rf, ctx) { if (rf & 1) {
329
+ } }, inputs: { action: ["p-action", "action"], badgeAlert: ["p-badge-alert", "badgeAlert"], badgeColor: ["p-badge-color", "badgeColor"], collapsedMenu: ["p-collapsed-menu", "collapsedMenu"], icon: ["p-icon", "icon"], id: ["p-id", "id"], isOpened: ["p-is-opened", "isOpened"], label: ["p-label", "label"], level: ["p-level", "level"], link: ["p-link", "link"], shortLabel: ["p-short-label", "shortLabel"], type: ["p-type", "type"], badgeValue: ["p-badge-value", "badgeValue"], isSelected: ["p-is-selected", "isSelected"], isSubItem: ["p-is-sub-item", "isSubItem"], subItems: ["p-sub-items", "subItems"] }, decls: 7, vars: 5, consts: [["class", "po-menu-item-link", "role", "menuitem", 3, "routerLink", 4, "ngIf"], ["class", "po-menu-item-link", "role", "menuitem", 3, "href", 4, "ngIf"], ["class", "po-menu-item-link", "href", "javascript:;", "role", "menuitem", 4, "ngIf"], ["class", "po-menu-item-link", "role", "none", 4, "ngIf"], ["class", "po-menu-item-link po-clickable", "role", "menuitem", 4, "ngIf"], ["menuItemTemplate", ""], ["role", "menuitem", 1, "po-menu-item-link", 3, "routerLink"], [4, "ngTemplateOutlet"], ["role", "menuitem", 1, "po-menu-item-link", 3, "href"], ["href", "javascript:;", "role", "menuitem", 1, "po-menu-item-link"], ["role", "none", 1, "po-menu-item-link"], ["role", "menuitem", 1, "po-menu-item-link", "po-clickable"], ["role", "group", 1, "po-menu-sub-items", 3, "hidden"], ["menuSubItems", ""], [1, "po-menu-sub-items-list"], ["class", "po-menu-sub-items-list-item", 4, "ngFor", "ngForOf"], [1, "po-menu-sub-items-list-item"], ["p-is-sub-item", "", 3, "p-action", "p-badge-alert", "p-badge-color", "p-badge-value", "p-id", "p-label", "p-level", "p-link", "p-sub-items", "p-type"], [1, "po-menu-item", 3, "tabindex", "click", "keydown.enter", "keydown.space"], ["aria-hidden", "true", "class", "po-menu-icon-item", 3, "p-icon", 4, "ngIf"], ["class", "po-icon po-menu-group-icon", 3, "po-icon-arrow-up", "po-icon-arrow-down", 4, "ngIf"], ["aria-hidden", "true", 3, "ngClass", "p-color", "p-value", 4, "ngIf"], ["aria-hidden", "true", "class", "po-color-07", 3, "ngClass", 4, "ngIf"], ["aria-hidden", "true", 1, "po-menu-icon-item", 3, "p-icon"], [1, "po-icon", "po-menu-group-icon"], ["aria-hidden", "true", 3, "ngClass", "p-color", "p-value"], ["aria-hidden", "true", 1, "po-color-07", 3, "ngClass"]], template: function PoMenuItemComponent_Template(rf, ctx) { if (rf & 1) {
330
330
  i0.ɵɵtemplate(0, PoMenuItemComponent_a_0_Template, 2, 3, "a", 0);
331
331
  i0.ɵɵtemplate(1, PoMenuItemComponent_a_1_Template, 2, 3, "a", 1);
332
332
  i0.ɵɵtemplate(2, PoMenuItemComponent_a_2_Template, 2, 2, "a", 2);
@@ -347,7 +347,7 @@ export class PoMenuItemComponent {
347
347
  }
348
348
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMenuItemComponent, [{
349
349
  type: Component,
350
- args: [{ selector: 'po-menu-item', template: "<!-- menu com link interno -->\n<a\n *ngIf=\"type === 'internalLink'\"\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [routerLink]=\"link\"\n>\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n</a>\n<!-- menu com link externo -->\n<a *ngIf=\"type === 'externalLink'\" class=\"po-menu-item-link\" role=\"menuitem\" [attr.aria-label]=\"label\" [href]=\"link\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n</a>\n<!-- menu sem link -->\n<a *ngIf=\"type === 'noLink'\" class=\"po-menu-item-link\" href=\"javascript:;\" role=\"menuitem\" [attr.aria-label]=\"label\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n</a>\n<!-- menu sem dados -->\n<div *ngIf=\"type === 'noData'\" class=\"po-menu-item-link\" role=\"none\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n</div>\n<!-- menu com sub itens -->\n<div\n *ngIf=\"type === 'subItems'\"\n class=\"po-menu-item-link po-clickable\"\n role=\"menuitem\"\n [attr.aria-expanded]=\"isOpened ? true : false\"\n>\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n\n <div\n #menuSubItems\n class=\"po-menu-sub-items\"\n [hidden]=\"collapsedMenu || !isOpened\"\n [attr.aria-expanded]=\"isOpened ? true : false\"\n [attr.aria-hidden]=\"!isOpened ? true : false\"\n role=\"group\"\n [style.maxHeight.px]=\"maxHeight\"\n >\n <ul class=\"po-menu-sub-items-list\">\n <li class=\"po-menu-subm-items-list-item\" *ngFor=\"let subItem of subItems\" [attr.aria-level]=\"subItem.level\">\n <po-menu-item\n p-is-sub-item\n [p-action]=\"subItem.action\"\n [p-badge-alert]=\"subItem.badgeAlert\"\n [p-badge-color]=\"subItem.badge ? subItem.badge.color : undefined\"\n [p-badge-value]=\"subItem.badge ? subItem.badge.value : undefined\"\n [p-id]=\"subItem.id\"\n [p-label]=\"subItem.label\"\n [p-level]=\"subItem.level\"\n [p-link]=\"subItem.link\"\n [p-sub-items]=\"subItem.subItems\"\n [p-type]=\"subItem.type\"\n ></po-menu-item>\n </li>\n </ul>\n </div>\n</div>\n\n<ng-template #menuItemTemplate>\n <div\n class=\"po-menu-item\"\n [tabindex]=\"type === 'subItems' ? 0 : -1\"\n [attr.aria-label]=\"label\"\n [attr.aria-hidden]=\"type === 'subItems' ? false : true\"\n [attr.role]=\"type === 'subItems' ? 'menuitem' : undefined\"\n [class.po-menu-icon-container]=\"level === 1 && icon\"\n [class.po-menu-item-selected]=\"isSelected\"\n [class.po-menu-item-level-two]=\"level === 2\"\n [class.po-menu-item-level-three]=\"level === 3\"\n [class.po-menu-item-level-four]=\"level === 4\"\n [class.po-menu-item-grouper-up]=\"type === 'subItems' && isOpened\"\n [class.po-menu-item-grouper-down]=\"type === 'subItems' && !isOpened\"\n [class.po-menu-item-no-data]=\"type === 'noData'\"\n [class.po-menu-sub-item-selected]=\"isSelectedSubItem\"\n (click)=\"clickMenuItem($event)\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n >\n <po-icon *ngIf=\"level === 1 && icon\" aria-hidden=\"true\" class=\"po-menu-icon-item\" [p-icon]=\"icon\"></po-icon>\n\n <span\n *ngIf=\"type === 'subItems' && !collapsedMenu\"\n class=\"po-icon po-menu-group-icon\"\n [class.po-icon-arrow-up]=\"isOpened\"\n [class.po-icon-arrow-down]=\"!isOpened\"\n ></span>\n\n <span [class.po-menu-icon-label]=\"level === 1 && icon\">\n {{ label }}\n </span>\n\n <po-badge\n *ngIf=\"canShowBadge\"\n aria-hidden=\"true\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-align' : 'po-menu-badge-align-collapsed'\"\n [p-color]=\"badgeColor\"\n [p-value]=\"badgeValue\"\n ></po-badge>\n\n <span\n *ngIf=\"badgeAlert\"\n aria-hidden=\"true\"\n class=\"po-color-07\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-alert' : 'po-menu-badge-alert-collapsed'\"\n ></span>\n </div>\n</ng-template>\n" }]
350
+ args: [{ selector: 'po-menu-item', template: "<!-- menu com link interno -->\n<a\n *ngIf=\"type === 'internalLink'\"\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [routerLink]=\"link\"\n>\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n</a>\n<!-- menu com link externo -->\n<a *ngIf=\"type === 'externalLink'\" class=\"po-menu-item-link\" role=\"menuitem\" [attr.aria-label]=\"label\" [href]=\"link\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n</a>\n<!-- menu sem link -->\n<a *ngIf=\"type === 'noLink'\" class=\"po-menu-item-link\" href=\"javascript:;\" role=\"menuitem\" [attr.aria-label]=\"label\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n</a>\n<!-- menu sem dados -->\n<div *ngIf=\"type === 'noData'\" class=\"po-menu-item-link\" role=\"none\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n</div>\n<!-- menu com sub itens -->\n<div\n *ngIf=\"type === 'subItems'\"\n class=\"po-menu-item-link po-clickable\"\n role=\"menuitem\"\n [attr.aria-expanded]=\"isOpened ? true : false\"\n>\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n\n <div\n #menuSubItems\n class=\"po-menu-sub-items\"\n [hidden]=\"collapsedMenu || !isOpened\"\n [attr.aria-expanded]=\"isOpened ? true : false\"\n [attr.aria-hidden]=\"!isOpened ? true : false\"\n role=\"group\"\n [style.maxHeight.px]=\"maxHeight\"\n >\n <ul class=\"po-menu-sub-items-list\">\n <li class=\"po-menu-sub-items-list-item\" *ngFor=\"let subItem of subItems\" [attr.aria-level]=\"subItem.level\">\n <po-menu-item\n p-is-sub-item\n [p-action]=\"subItem.action\"\n [p-badge-alert]=\"subItem.badgeAlert\"\n [p-badge-color]=\"subItem.badge ? subItem.badge.color : undefined\"\n [p-badge-value]=\"subItem.badge ? subItem.badge.value : undefined\"\n [p-id]=\"subItem.id\"\n [p-label]=\"subItem.label\"\n [p-level]=\"subItem.level\"\n [p-link]=\"subItem.link\"\n [p-sub-items]=\"subItem.subItems\"\n [p-type]=\"subItem.type\"\n ></po-menu-item>\n </li>\n </ul>\n </div>\n</div>\n\n<ng-template #menuItemTemplate>\n <div\n class=\"po-menu-item\"\n [tabindex]=\"type === 'subItems' ? 0 : -1\"\n [attr.aria-label]=\"label\"\n [attr.aria-hidden]=\"type === 'subItems' ? false : true\"\n [attr.role]=\"type === 'subItems' ? 'menuitem' : undefined\"\n [class.po-menu-icon-container]=\"level === 1 && icon\"\n [class.po-menu-item-selected]=\"isSelected\"\n [class.po-menu-item-level-two]=\"level === 2\"\n [class.po-menu-item-level-three]=\"level === 3\"\n [class.po-menu-item-level-four]=\"level === 4\"\n [class.po-menu-item-grouper-up]=\"type === 'subItems' && isOpened\"\n [class.po-menu-item-grouper-down]=\"type === 'subItems' && !isOpened\"\n [class.po-menu-item-no-data]=\"type === 'noData'\"\n [class.po-menu-sub-item-selected]=\"isSelectedSubItem\"\n (click)=\"clickMenuItem($event)\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n >\n <po-icon *ngIf=\"level === 1 && icon\" aria-hidden=\"true\" class=\"po-menu-icon-item\" [p-icon]=\"icon\"></po-icon>\n\n <span\n *ngIf=\"type === 'subItems' && !collapsedMenu\"\n class=\"po-icon po-menu-group-icon\"\n [class.po-icon-arrow-up]=\"isOpened\"\n [class.po-icon-arrow-down]=\"!isOpened\"\n ></span>\n\n <span [class.po-menu-icon-label]=\"level === 1 && icon\">\n {{ label }}\n </span>\n\n <po-badge\n *ngIf=\"canShowBadge\"\n aria-hidden=\"true\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-align' : 'po-menu-badge-align-collapsed'\"\n [p-color]=\"badgeColor\"\n [p-value]=\"badgeValue\"\n ></po-badge>\n\n <span\n *ngIf=\"badgeAlert\"\n aria-hidden=\"true\"\n class=\"po-color-07\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-alert' : 'po-menu-badge-alert-collapsed'\"\n ></span>\n </div>\n</ng-template>\n" }]
351
351
  }], function () { return [{ type: i1.PoMenuItemsService }]; }, { action: [{
352
352
  type: Input,
353
353
  args: ['p-action']
@@ -400,4 +400,4 @@ export class PoMenuItemComponent {
400
400
  type: Input,
401
401
  args: ['p-sub-items']
402
402
  }] }); })();
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUtaXRlbS9wby1tZW51LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLW1lbnUvcG8tbWVudS1pdGVtL3BvLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBa0MsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXhHLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0lDSW5FLHdCQUFrRTs7O0lBUHBFLDRCQU1DO0lBQ0MsMEZBQWtFO0lBQ3BFLGlCQUFJOzs7O0lBSEYsd0NBQW1CO0lBRG5CLDBDQUF5QjtJQUdWLGVBQWtDO0lBQWxDLHNDQUFrQzs7O0lBSWpELHdCQUFrRTs7O0lBRHBFLDRCQUFxSDtJQUNuSCwwRkFBa0U7SUFDcEUsaUJBQUk7Ozs7SUFGbUcsb0RBQWE7SUFBdkMsMENBQXlCO0lBQ3JGLGVBQWtDO0lBQWxDLHNDQUFrQzs7O0lBSWpELHdCQUFrRTs7O0lBRHBFLDRCQUFxSDtJQUNuSCwwRkFBa0U7SUFDcEUsaUJBQUk7Ozs7SUFGdUYsMENBQXlCO0lBQ25HLGVBQWtDO0lBQWxDLHNDQUFrQzs7O0lBSWpELHdCQUFrRTs7O0lBRHBFLCtCQUFxRTtJQUNuRSw0RkFBa0U7SUFDcEUsaUJBQU07Ozs7SUFEVyxlQUFrQztJQUFsQyxzQ0FBa0M7OztJQVNqRCx3QkFBa0U7OztJQVk5RCw4QkFBNEc7SUFDMUcsbUNBWWdCO0lBQ2xCLGlCQUFLOzs7SUFkcUUsK0NBQWlDO0lBR3ZHLGVBQTJCO0lB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QUFDLGtCQUFrQjtZQUdSLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQUdBLEVBQUU7a0JBQWhCLEtBQUs7bUJBQUMsTUFBTTtZQUdTLFFBQVE7a0JBQTdCLEtBQUs7bUJBQUMsYUFBYTtZQUdGLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQUdFLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQUdDLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQUdTLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQUdMLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQUVZLFlBQVk7a0JBQXRDLFNBQVM7bUJBQUMsY0FBYztZQVlHLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQVNNLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQVVNLFNBQVM7a0JBQXBDLEtBQUs7bUJBQUMsZUFBZTtZQVNJLFFBQVE7a0JBQWpDLEtBQUs7bUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9JbnQsIGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9NZW51SXRlbSB9IGZyb20gJy4uL3BvLW1lbnUtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NZW51SXRlbXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcG8tbWVudS1pdGVtcy5zZXJ2aWNlJztcblxuLy8gdmFsb3IgcGFyYSBxdWUgY2FpYmFtIDMgbGluaGFzIGRlIGBsYWJlbGBcbmNvbnN0IHBvTWVudUl0ZW1TdWJJdGVtU2l6ZSA9IDk4O1xuXG4vKipcbiAqIEBkb2NzUHJpdmF0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgcXVlIGltcGxlbWVudGEgY2FkYSBpdGVtIGRvIHBvLW1lbnUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLW1lbnUtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBvTWVudUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIC8vIEHDp8OjbyBxdWUgc2Vyw6EgY2hhbWFkYSBhbyBjbGljYXIgbm8gaXRlbS5cbiAgQElucHV0KCdwLWFjdGlvbicpIGFjdGlvbjogRnVuY3Rpb247XG5cbiAgLy8gSW5kaWNhIHNlIGNvbnTDqW0gYWxndW0gaXRlbSBmaWxobyBjb20gbyBiYWRnZS5cbiAgQElucHV0KCdwLWJhZGdlLWFsZXJ0JykgYmFkZ2VBbGVydDogYm9vbGVhbjtcblxuICAvLyBDb3IgZG8gYmFkZ2UuXG4gIEBJbnB1dCgncC1iYWRnZS1jb2xvcicpIGJhZGdlQ29sb3I6IHN0cmluZztcblxuICAvLyBJbmRpY2Egc2UgbyBtZW51IGVzdMOhIGNvbGFwc2Fkb1xuICBASW5wdXQoJ3AtY29sbGFwc2VkLW1lbnUnKSBjb2xsYXBzZWRNZW51OiBib29sZWFuO1xuXG4gIC8vIMONY29uZSBkZSBtZW51XG4gIEBJbnB1dCgncC1pY29uJykgaWNvbjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgLy8gSWRlbnRpZmljYWRvciBkbyBpdGVtLlxuICBASW5wdXQoJ3AtaWQnKSBpZDogc3RyaW5nO1xuXG4gIC8vIEluZGljYSBzZSBvIGl0ZW0gZXN0w6EgYWJlcnRvIChtZW51IGFncnVwYWRvKVxuICBASW5wdXQoJ3AtaXMtb3BlbmVkJykgaXNPcGVuZWQ6IGJvb2xlYW47XG5cbiAgLy8gVGV4dG8gcXVlIGFwYXJlY2Vyw6EgcmVwcmVzZW50YW5kbyBvIGl0ZW0uXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsOiBzdHJpbmc7XG5cbiAgLy8gSW5kaWNhIHF1YWwgZW0gbsOtdmVsIGRvIHBvLW1lbnUgZW5jb250cmEtc2UuXG4gIEBJbnB1dCgncC1sZXZlbCcpIGxldmVsOiBudW1iZXI7XG5cbiAgLy8gTGluayBkbyBpdGVtLlxuICBASW5wdXQoJ3AtbGluaycpIGxpbms/OiBzdHJpbmc7XG5cbiAgLy8gVGV4dG8gcXVlIGFwYXJlY2Vyw6EgcmVwcmVzZW50YW5kbyBvIGl0ZW0uXG4gIEBJbnB1dCgncC1zaG9ydC1sYWJlbCcpIHNob3J0TGFiZWw6IHN0cmluZztcblxuICAvLyBJbmRpY2EgbyB0aXBvIGRlIGl0ZW0sIGNvbW8gJ2ludGVybmFsTGluaycgb3UgJ3N1Ykl0ZW1zJy5cbiAgQElucHV0KCdwLXR5cGUnKSB0eXBlOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnbWVudVN1Ykl0ZW1zJykgbWVudVN1Ykl0ZW1zOiBFbGVtZW50UmVmO1xuXG4gIGlzU2VsZWN0ZWRTdWJJdGVtO1xuICBtYXhIZWlnaHQ6IG51bWJlciA9IDA7XG5cbiAgcHJpdmF0ZSBpdGVtU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX2JhZGdlVmFsdWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9pc1N1Ykl0ZW06IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3ViSXRlbXM6IEFycmF5PFBvTWVudUl0ZW0+O1xuXG4gIC8vIFZhbG9yIGRvIGJhZGdlLlxuICBASW5wdXQoJ3AtYmFkZ2UtdmFsdWUnKSBzZXQgYmFkZ2VWYWx1ZShiYWRnZVZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9iYWRnZVZhbHVlID0gY29udmVydFRvSW50KGJhZGdlVmFsdWUpO1xuICB9XG5cbiAgZ2V0IGJhZGdlVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlVmFsdWU7XG4gIH1cblxuICAvLyBJbmRpY2Egc2UgbyBpdGVtIGVzdMOhIHNlbGVjaW9uYWRvLlxuICBASW5wdXQoJ3AtaXMtc2VsZWN0ZWQnKSBzZXQgaXNTZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcblxuICAgIHRoaXMuaXNTZWxlY3RlZFN1Ykl0ZW0gPSB0aGlzLmlzU2VsZWN0ZWQgJiYgdGhpcy5pc1N1Ykl0ZW07XG4gIH1cbiAgZ2V0IGlzU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2VsZWN0ZWQ7XG4gIH1cblxuICAvLyBJbmRpY2Egc2UgbyBpdGVtIMOpIHVtIHN1YiBpdGVtXG4gIEBJbnB1dCgncC1pcy1zdWItaXRlbScpIHNldCBpc1N1Ykl0ZW0odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc1N1Ykl0ZW0gPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpc1N1Ykl0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3ViSXRlbTtcbiAgfVxuXG4gIC8vIExpc3RhIGRlIHN1Yi1pdGVtcy5cbiAgQElucHV0KCdwLXN1Yi1pdGVtcycpIHNldCBzdWJJdGVtcyhzdWJpdGVtczogQXJyYXk8UG9NZW51SXRlbT4pIHtcbiAgICB0aGlzLl9zdWJJdGVtcyA9IHN1Yml0ZW1zO1xuICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICB0aGlzLmNhbGNNZW51U3ViSXRlbXNNYXhIZWlnaHQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3ViSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1Ykl0ZW1zO1xuICB9XG5cbiAgZ2V0IGNhblNob3dCYWRnZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlICE9PSAnc3ViSXRlbXMnICYmICh0aGlzLmJhZGdlVmFsdWUgfHwgdGhpcy5iYWRnZVZhbHVlID09PSAwKSAmJiB0aGlzLmJhZGdlVmFsdWUgPj0gMDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVudUl0ZW1zU2VydmljZTogUG9NZW51SXRlbXNTZXJ2aWNlKSB7fVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gc3Vic2NyaWJlIHRvIG1lbnUgY29tcG9uZW50IG1lc3NhZ2VzXG4gICAgdGhpcy5pdGVtU3Vic2NyaXB0aW9uID0gdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnJlY2VpdmVGcm9tUGFyZW50TWVudUNsaWNrZWQoKS5zdWJzY3JpYmUobWVudSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NNZW51SXRlbShtZW51KTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsaWNrTWVudUl0ZW0oZXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIShldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAvLyBFbW1pdCB0byBwYXJlbnRcbiAgICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9QYXJlbnRNZW51Q2xpY2tlZCh7XG4gICAgICAgIGxpbms6IHRoaXMubGluayxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbixcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIGljb246IHRoaXMuaWNvbixcbiAgICAgICAgbGFiZWw6IHRoaXMubGFiZWwsXG4gICAgICAgIGxldmVsOiB0aGlzLmxldmVsLFxuICAgICAgICBzdWJJdGVtczogdGhpcy5zdWJJdGVtcyxcbiAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkLFxuICAgICAgICBpc09wZW5lZDogdGhpcy5pc09wZW5lZCxcbiAgICAgICAgc2hvcnRMYWJlbDogdGhpcy5zaG9ydExhYmVsLFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWNjb3JkaW9uQW5pbWF0aW9uKFxuICAgIG1lbnVBY3RpdmU6IFBvTWVudUl0ZW0sXG4gICAgbWVudU9wZW5lZDogUG9NZW51SXRlbSxcbiAgICBoYXNTdWJJdGVtT3BlbmVkOiBib29sZWFuLFxuICAgIGFjdGl2YXRlZEJ5Um91dGU6IGJvb2xlYW5cbiAgKSB7XG4gICAgaWYgKHRoaXMuaWQgPT09IG1lbnVPcGVuZWRbJ2lkJ10pIHtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5zdWJJdGVtcy5sZW5ndGggKiBwb01lbnVJdGVtU3ViSXRlbVNpemU7XG4gICAgfVxuXG4gICAgaWYgKGhhc1N1Ykl0ZW1PcGVuZWQpIHtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gbWVudU9wZW5lZFsnaXNPcGVuZWQnXVxuICAgICAgICA/IHRoaXMubWF4SGVpZ2h0ICsgbWVudU9wZW5lZC5zdWJJdGVtcy5sZW5ndGggKiBwb01lbnVJdGVtU3ViSXRlbVNpemVcbiAgICAgICAgOiB0aGlzLm1heEhlaWdodCAtIG1lbnVPcGVuZWQuc3ViSXRlbXMubGVuZ3RoICogcG9NZW51SXRlbVN1Ykl0ZW1TaXplO1xuXG4gICAgICBpZiAoYWN0aXZhdGVkQnlSb3V0ZSkge1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZ2V0TWluaW11bUhlaWdodCgwLCB0aGlzLCBtZW51QWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlTWVudShtZW51OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VsZWN0ZWQgPSBtZW51ICYmIHRoaXMuaWQgPT09IG1lbnUuaWQ7XG4gIH1cblxuICBwcml2YXRlIGNhbGNNZW51U3ViSXRlbXNNYXhIZWlnaHQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzdWJJdGVtcyA9IEFycmF5LmZyb20odGhpcy5tZW51U3ViSXRlbXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucG8tbWVudS1pdGVtJykpO1xuICAgICAgc3ViSXRlbXMuZm9yRWFjaCgobWVudUl0ZW06IGFueSkgPT4gKHRoaXMubWF4SGVpZ2h0ICs9IG1lbnVJdGVtLm9mZnNldEhlaWdodCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaW5pbXVtSGVpZ2h0KG1pbmltdW1IZWlnaHQ6IG51bWJlciwgbWVudUl0ZW06IFBvTWVudUl0ZW0sIG1lbnVBY3RpdmU6IFBvTWVudUl0ZW0pIHtcbiAgICBtaW5pbXVtSGVpZ2h0ICs9IHBvTWVudUl0ZW1TdWJJdGVtU2l6ZTtcblxuICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcyAmJiB0aGlzLmhhc1N1Ykl0ZW0obWVudUl0ZW0uc3ViSXRlbXMsIG1lbnVBY3RpdmVbJ2lkJ10pKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWVudUl0ZW0uc3ViSXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIG1pbmltdW1IZWlnaHQgPSB0aGlzLmdldE1pbmltdW1IZWlnaHQobWluaW11bUhlaWdodCwgbWVudUl0ZW0uc3ViSXRlbXNbaW5kZXhdLCBtZW51QWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWluaW11bUhlaWdodDtcbiAgfVxuXG4gIHByaXZhdGUgZ3JvdXBlZE1lbnUobWVudUFjdGl2ZTogUG9NZW51SXRlbSwgbWVudU9wZW5lZDogUG9NZW51SXRlbSwgYWN0aXZhdGVkQnlSb3V0ZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgaGFzU3ViSXRlbU9wZW5lZCA9XG4gICAgICBtZW51T3BlbmVkICYmIHRoaXMuaWQgIT09IG1lbnVPcGVuZWRbJ2lkJ10gPyB0aGlzLmhhc1N1Ykl0ZW0odGhpcy5zdWJJdGVtcywgbWVudU9wZW5lZFsnaWQnXSkgOiBmYWxzZTtcblxuICAgIHRoaXMuaXNPcGVuZWQgPSB0aGlzLmlzTWVudU9wZW5lZChtZW51T3BlbmVkLCBoYXNTdWJJdGVtT3BlbmVkKTtcblxuICAgIHRoaXMuaXNTZWxlY3RlZCA9IG1lbnVBY3RpdmUgJiYgIXRoaXMuaXNPcGVuZWQgPyB0aGlzLmhhc1N1Ykl0ZW0odGhpcy5zdWJJdGVtcywgbWVudUFjdGl2ZVsnaWQnXSkgOiBmYWxzZTtcblxuICAgIGlmICghdGhpcy5pc09wZW5lZCkge1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSAwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWNjb3JkaW9uQW5pbWF0aW9uKG1lbnVBY3RpdmUsIG1lbnVPcGVuZWQsIGhhc1N1Ykl0ZW1PcGVuZWQsIGFjdGl2YXRlZEJ5Um91dGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNTdWJJdGVtKHN1Ykl0ZW1zOiBBcnJheTxQb01lbnVJdGVtPiwgaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChzdWJJdGVtcykge1xuICAgICAgcmV0dXJuIHN1Ykl0ZW1zLnNvbWUoaXRlbSA9PiAoaXRlbVsnaWQnXSA9PT0gaWQgPyB0cnVlIDogdGhpcy5oYXNTdWJJdGVtKGl0ZW0uc3ViSXRlbXMsIGlkKSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNNZW51T3BlbmVkKG1lbnVPcGVuZWQ6IFBvTWVudUl0ZW0sIGhhc1N1Ykl0ZW1PcGVuZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAobWVudU9wZW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaWQgPT09IG1lbnVPcGVuZWRbJ2lkJ10gPyBtZW51T3BlbmVkWydpc09wZW5lZCddIDogaGFzU3ViSXRlbU9wZW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NNZW51SXRlbShtZW51KSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2ludGVybmFsTGluaycpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVNZW51KG1lbnUuYWN0aXZlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnc3ViSXRlbXMnKSB7XG4gICAgICB0aGlzLmdyb3VwZWRNZW51KG1lbnUuYWN0aXZlLCBtZW51Lmdyb3VwZWQsIG1lbnUuYWN0aXZhdGVkQnlSb3V0ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tIG1lbnUgY29tIGxpbmsgaW50ZXJubyAtLT5cbjxhXG4gICpuZ0lmPVwidHlwZSA9PT0gJ2ludGVybmFsTGluaydcIlxuICBjbGFzcz1cInBvLW1lbnUtaXRlbS1saW5rXCJcbiAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gIFtyb3V0ZXJMaW5rXT1cImxpbmtcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9hPlxuPCEtLSBtZW51IGNvbSBsaW5rIGV4dGVybm8gLS0+XG48YSAqbmdJZj1cInR5cGUgPT09ICdleHRlcm5hbExpbmsnXCIgY2xhc3M9XCJwby1tZW51LWl0ZW0tbGlua1wiIHJvbGU9XCJtZW51aXRlbVwiIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIiBbaHJlZl09XCJsaW5rXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L2E+XG48IS0tIG1lbnUgc2VtIGxpbmsgLS0+XG48YSAqbmdJZj1cInR5cGUgPT09ICdub0xpbmsnXCIgY2xhc3M9XCJwby1tZW51LWl0ZW0tbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiByb2xlPVwibWVudWl0ZW1cIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L2E+XG48IS0tIG1lbnUgc2VtIGRhZG9zIC0tPlxuPGRpdiAqbmdJZj1cInR5cGUgPT09ICdub0RhdGEnXCIgY2xhc3M9XCJwby1tZW51LWl0ZW0tbGlua1wiIHJvbGU9XCJub25lXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0gbWVudSBjb20gc3ViIGl0ZW5zIC0tPlxuPGRpdlxuICAqbmdJZj1cInR5cGUgPT09ICdzdWJJdGVtcydcIlxuICBjbGFzcz1cInBvLW1lbnUtaXRlbS1saW5rIHBvLWNsaWNrYWJsZVwiXG4gIHJvbGU9XCJtZW51aXRlbVwiXG4gIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuZWQgPyB0cnVlIDogZmFsc2VcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gIDxkaXZcbiAgICAjbWVudVN1Ykl0ZW1zXG4gICAgY2xhc3M9XCJwby1tZW51LXN1Yi1pdGVtc1wiXG4gICAgW2hpZGRlbl09XCJjb2xsYXBzZWRNZW51IHx8ICFpc09wZW5lZFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5lZCA/IHRydWUgOiBmYWxzZVwiXG4gICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWlzT3BlbmVkID8gdHJ1ZSA6IGZhbHNlXCJcbiAgICByb2xlPVwiZ3JvdXBcIlxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwibWF4SGVpZ2h0XCJcbiAgPlxuICAgIDx1bCBjbGFzcz1cInBvLW1lbnUtc3ViLWl0ZW1zLWxpc3RcIj5cbiAgICAgIDxsaSBjbGFzcz1cInBvLW1lbnUtc3VibS1pdGVtcy1saXN0LWl0ZW1cIiAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBzdWJJdGVtc1wiIFthdHRyLmFyaWEtbGV2ZWxdPVwic3ViSXRlbS5sZXZlbFwiPlxuICAgICAgICA8cG8tbWVudS1pdGVtXG4gICAgICAgICAgcC1pcy1zdWItaXRlbVxuICAgICAgICAgIFtwLWFjdGlvbl09XCJzdWJJdGVtLmFjdGlvblwiXG4gICAgICAgICAgW3AtYmFkZ2UtYWxlcnRdPVwic3ViSXRlbS5iYWRnZUFsZXJ0XCJcbiAgICAgICAgICBbcC1iYWRnZS1jb2xvcl09XCJzdWJJdGVtLmJhZGdlID8gc3ViSXRlbS5iYWRnZS5jb2xvciA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgW3AtYmFkZ2UtdmFsdWVdPVwic3ViSXRlbS5iYWRnZSA/IHN1Ykl0ZW0uYmFkZ2UudmFsdWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIFtwLWlkXT1cInN1Ykl0ZW0uaWRcIlxuICAgICAgICAgIFtwLWxhYmVsXT1cInN1Ykl0ZW0ubGFiZWxcIlxuICAgICAgICAgIFtwLWxldmVsXT1cInN1Ykl0ZW0ubGV2ZWxcIlxuICAgICAgICAgIFtwLWxpbmtdPVwic3ViSXRlbS5saW5rXCJcbiAgICAgICAgICBbcC1zdWItaXRlbXNdPVwic3ViSXRlbS5zdWJJdGVtc1wiXG4gICAgICAgICAgW3AtdHlwZV09XCJzdWJJdGVtLnR5cGVcIlxuICAgICAgICA+PC9wby1tZW51LWl0ZW0+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWVudUl0ZW1UZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwicG8tbWVudS1pdGVtXCJcbiAgICBbdGFiaW5kZXhdPVwidHlwZSA9PT0gJ3N1Ykl0ZW1zJyA/IDAgOiAtMVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHlwZSA9PT0gJ3N1Ykl0ZW1zJyA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgW2F0dHIucm9sZV09XCJ0eXBlID09PSAnc3ViSXRlbXMnID8gJ21lbnVpdGVtJyA6IHVuZGVmaW5lZFwiXG4gICAgW2NsYXNzLnBvLW1lbnUtaWNvbi1jb250YWluZXJdPVwibGV2ZWwgPT09IDEgJiYgaWNvblwiXG4gICAgW2NsYXNzLnBvLW1lbnUtaXRlbS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkXCJcbiAgICBbY2xhc3MucG8tbWVudS1pdGVtLWxldmVsLXR3b109XCJsZXZlbCA9PT0gMlwiXG4gICAgW2NsYXNzLnBvLW1lbnUtaXRlbS1sZXZlbC10aHJlZV09XCJsZXZlbCA9PT0gM1wiXG4gICAgW2NsYXNzLnBvLW1lbnUtaXRlbS1sZXZlbC1mb3VyXT1cImxldmVsID09PSA0XCJcbiAgICBbY2xhc3MucG8tbWVudS1pdGVtLWdyb3VwZXItdXBdPVwidHlwZSA9PT0gJ3N1Ykl0ZW1zJyAmJiBpc09wZW5lZFwiXG4gICAgW2NsYXNzLnBvLW1lbnUtaXRlbS1ncm91cGVyLWRvd25dPVwidHlwZSA9PT0gJ3N1Ykl0ZW1zJyAmJiAhaXNPcGVuZWRcIlxuICAgIFtjbGFzcy5wby1tZW51LWl0ZW0tbm8tZGF0YV09XCJ0eXBlID09PSAnbm9EYXRhJ1wiXG4gICAgW2NsYXNzLnBvLW1lbnUtc3ViLWl0ZW0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZFN1Ykl0ZW1cIlxuICAgIChjbGljayk9XCJjbGlja01lbnVJdGVtKCRldmVudClcIlxuICAgIChrZXlkb3duLmVudGVyKT1cImNsaWNrTWVudUl0ZW0oJGV2ZW50KVwiXG4gICAgKGtleWRvd24uc3BhY2UpPVwiY2xpY2tNZW51SXRlbSgkZXZlbnQpXCJcbiAgPlxuICAgIDxwby1pY29uICpuZ0lmPVwibGV2ZWwgPT09IDEgJiYgaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwicG8tbWVudS1pY29uLWl0ZW1cIiBbcC1pY29uXT1cImljb25cIj48L3BvLWljb24+XG5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJ0eXBlID09PSAnc3ViSXRlbXMnICYmICFjb2xsYXBzZWRNZW51XCJcbiAgICAgIGNsYXNzPVwicG8taWNvbiBwby1tZW51LWdyb3VwLWljb25cIlxuICAgICAgW2NsYXNzLnBvLWljb24tYXJyb3ctdXBdPVwiaXNPcGVuZWRcIlxuICAgICAgW2NsYXNzLnBvLWljb24tYXJyb3ctZG93bl09XCIhaXNPcGVuZWRcIlxuICAgID48L3NwYW4+XG5cbiAgICA8c3BhbiBbY2xhc3MucG8tbWVudS1pY29uLWxhYmVsXT1cImxldmVsID09PSAxICYmIGljb25cIj5cbiAgICAgIHt7IGxhYmVsIH19XG4gICAgPC9zcGFuPlxuXG4gICAgPHBvLWJhZGdlXG4gICAgICAqbmdJZj1cImNhblNob3dCYWRnZVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgW25nQ2xhc3NdPVwiIWNvbGxhcHNlZE1lbnUgPyAncG8tbWVudS1iYWRnZS1hbGlnbicgOiAncG8tbWVudS1iYWRnZS1hbGlnbi1jb2xsYXBzZWQnXCJcbiAgICAgIFtwLWNvbG9yXT1cImJhZGdlQ29sb3JcIlxuICAgICAgW3AtdmFsdWVdPVwiYmFkZ2VWYWx1ZVwiXG4gICAgPjwvcG8tYmFkZ2U+XG5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJiYWRnZUFsZXJ0XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICBjbGFzcz1cInBvLWNvbG9yLTA3XCJcbiAgICAgIFtuZ0NsYXNzXT1cIiFjb2xsYXBzZWRNZW51ID8gJ3BvLW1lbnUtYmFkZ2UtYWxlcnQnIDogJ3BvLW1lbnUtYmFkZ2UtYWxlcnQtY29sbGFwc2VkJ1wiXG4gICAgPjwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUtaXRlbS9wby1tZW51LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLW1lbnUvcG8tbWVudS1pdGVtL3BvLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBa0MsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXhHLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0lDSW5FLHdCQUFrRTs7O0lBUHBFLDRCQU1DO0lBQ0MsMEZBQWtFO0lBQ3BFLGlCQUFJOzs7O0lBSEYsd0NBQW1CO0lBRG5CLDBDQUF5QjtJQUdWLGVBQWtDO0lBQWxDLHNDQUFrQzs7O0lBSWpELHdCQUFrRTs7O0lBRHBFLDRCQUFxSDtJQUNuSCwwRkFBa0U7SUFDcEUsaUJBQUk7Ozs7SUFGbUcsb0RBQWE7SUFBdkMsMENBQXlCO0lBQ3JGLGVBQWtDO0lBQWxDLHNDQUFrQzs7O0lBSWpELHdCQUFrRTs7O0lBRHBFLDRCQUFxSDtJQUNuSCwwRkFBa0U7SUFDcEUsaUJBQUk7Ozs7SUFGdUYsMENBQXlCO0lBQ25HLGVBQWtDO0lBQWxDLHNDQUFrQzs7O0lBSWpELHdCQUFrRTs7O0lBRHBFLCtCQUFxRTtJQUNuRSw0RkFBa0U7SUFDcEUsaUJBQU07Ozs7SUFEVyxlQUFrQztJQUFsQyxzQ0FBa0M7OztJQVNqRCx3QkFBa0U7OztJQVk5RCw4QkFBMkc7SUFDekcsbUNBWWdCO0lBQ2xCLGlCQUFLOzs7SUFkb0UsK0NBQWlDO0lBR3RHLGVBQTJCO0lB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QUFDLGtCQUFrQjtZQUdSLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQUdBLEVBQUU7a0JBQWhCLEtBQUs7bUJBQUMsTUFBTTtZQUdTLFFBQVE7a0JBQTdCLEtBQUs7bUJBQUMsYUFBYTtZQUdGLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQUdFLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQUdDLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQUdTLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQUdMLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQUVZLFlBQVk7a0JBQXRDLFNBQVM7bUJBQUMsY0FBYztZQVlHLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQVNNLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQVVNLFNBQVM7a0JBQXBDLEtBQUs7bUJBQUMsZUFBZTtZQVNJLFFBQVE7a0JBQWpDLEtBQUs7bUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9JbnQsIGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9NZW51SXRlbSB9IGZyb20gJy4uL3BvLW1lbnUtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NZW51SXRlbXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcG8tbWVudS1pdGVtcy5zZXJ2aWNlJztcblxuLy8gdmFsb3IgcGFyYSBxdWUgY2FpYmFtIDMgbGluaGFzIGRlIGBsYWJlbGBcbmNvbnN0IHBvTWVudUl0ZW1TdWJJdGVtU2l6ZSA9IDk4O1xuXG4vKipcbiAqIEBkb2NzUHJpdmF0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgcXVlIGltcGxlbWVudGEgY2FkYSBpdGVtIGRvIHBvLW1lbnUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLW1lbnUtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBvTWVudUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIC8vIEHDp8OjbyBxdWUgc2Vyw6EgY2hhbWFkYSBhbyBjbGljYXIgbm8gaXRlbS5cbiAgQElucHV0KCdwLWFjdGlvbicpIGFjdGlvbjogRnVuY3Rpb247XG5cbiAgLy8gSW5kaWNhIHNlIGNvbnTDqW0gYWxndW0gaXRlbSBmaWxobyBjb20gbyBiYWRnZS5cbiAgQElucHV0KCdwLWJhZGdlLWFsZXJ0JykgYmFkZ2VBbGVydDogYm9vbGVhbjtcblxuICAvLyBDb3IgZG8gYmFkZ2UuXG4gIEBJbnB1dCgncC1iYWRnZS1jb2xvcicpIGJhZGdlQ29sb3I6IHN0cmluZztcblxuICAvLyBJbmRpY2Egc2UgbyBtZW51IGVzdMOhIGNvbGFwc2Fkb1xuICBASW5wdXQoJ3AtY29sbGFwc2VkLW1lbnUnKSBjb2xsYXBzZWRNZW51OiBib29sZWFuO1xuXG4gIC8vIMONY29uZSBkZSBtZW51XG4gIEBJbnB1dCgncC1pY29uJykgaWNvbjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgLy8gSWRlbnRpZmljYWRvciBkbyBpdGVtLlxuICBASW5wdXQoJ3AtaWQnKSBpZDogc3RyaW5nO1xuXG4gIC8vIEluZGljYSBzZSBvIGl0ZW0gZXN0w6EgYWJlcnRvIChtZW51IGFncnVwYWRvKVxuICBASW5wdXQoJ3AtaXMtb3BlbmVkJykgaXNPcGVuZWQ6IGJvb2xlYW47XG5cbiAgLy8gVGV4dG8gcXVlIGFwYXJlY2Vyw6EgcmVwcmVzZW50YW5kbyBvIGl0ZW0uXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsOiBzdHJpbmc7XG5cbiAgLy8gSW5kaWNhIHF1YWwgZW0gbsOtdmVsIGRvIHBvLW1lbnUgZW5jb250cmEtc2UuXG4gIEBJbnB1dCgncC1sZXZlbCcpIGxldmVsOiBudW1iZXI7XG5cbiAgLy8gTGluayBkbyBpdGVtLlxuICBASW5wdXQoJ3AtbGluaycpIGxpbms/OiBzdHJpbmc7XG5cbiAgLy8gVGV4dG8gcXVlIGFwYXJlY2Vyw6EgcmVwcmVzZW50YW5kbyBvIGl0ZW0uXG4gIEBJbnB1dCgncC1zaG9ydC1sYWJlbCcpIHNob3J0TGFiZWw6IHN0cmluZztcblxuICAvLyBJbmRpY2EgbyB0aXBvIGRlIGl0ZW0sIGNvbW8gJ2ludGVybmFsTGluaycgb3UgJ3N1Ykl0ZW1zJy5cbiAgQElucHV0KCdwLXR5cGUnKSB0eXBlOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnbWVudVN1Ykl0ZW1zJykgbWVudVN1Ykl0ZW1zOiBFbGVtZW50UmVmO1xuXG4gIGlzU2VsZWN0ZWRTdWJJdGVtO1xuICBtYXhIZWlnaHQ6IG51bWJlciA9IDA7XG5cbiAgcHJpdmF0ZSBpdGVtU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX2JhZGdlVmFsdWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9pc1N1Ykl0ZW06IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3ViSXRlbXM6IEFycmF5PFBvTWVudUl0ZW0+O1xuXG4gIC8vIFZhbG9yIGRvIGJhZGdlLlxuICBASW5wdXQoJ3AtYmFkZ2UtdmFsdWUnKSBzZXQgYmFkZ2VWYWx1ZShiYWRnZVZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9iYWRnZVZhbHVlID0gY29udmVydFRvSW50KGJhZGdlVmFsdWUpO1xuICB9XG5cbiAgZ2V0IGJhZGdlVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlVmFsdWU7XG4gIH1cblxuICAvLyBJbmRpY2Egc2UgbyBpdGVtIGVzdMOhIHNlbGVjaW9uYWRvLlxuICBASW5wdXQoJ3AtaXMtc2VsZWN0ZWQnKSBzZXQgaXNTZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcblxuICAgIHRoaXMuaXNTZWxlY3RlZFN1Ykl0ZW0gPSB0aGlzLmlzU2VsZWN0ZWQgJiYgdGhpcy5pc1N1Ykl0ZW07XG4gIH1cbiAgZ2V0IGlzU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2VsZWN0ZWQ7XG4gIH1cblxuICAvLyBJbmRpY2Egc2UgbyBpdGVtIMOpIHVtIHN1YiBpdGVtXG4gIEBJbnB1dCgncC1pcy1zdWItaXRlbScpIHNldCBpc1N1Ykl0ZW0odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc1N1Ykl0ZW0gPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpc1N1Ykl0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3ViSXRlbTtcbiAgfVxuXG4gIC8vIExpc3RhIGRlIHN1Yi1pdGVtcy5cbiAgQElucHV0KCdwLXN1Yi1pdGVtcycpIHNldCBzdWJJdGVtcyhzdWJpdGVtczogQXJyYXk8UG9NZW51SXRlbT4pIHtcbiAgICB0aGlzLl9zdWJJdGVtcyA9IHN1Yml0ZW1zO1xuICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICB0aGlzLmNhbGNNZW51U3ViSXRlbXNNYXhIZWlnaHQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3ViSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1Ykl0ZW1zO1xuICB9XG5cbiAgZ2V0IGNhblNob3dCYWRnZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlICE9PSAnc3ViSXRlbXMnICYmICh0aGlzLmJhZGdlVmFsdWUgfHwgdGhpcy5iYWRnZVZhbHVlID09PSAwKSAmJiB0aGlzLmJhZGdlVmFsdWUgPj0gMDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVudUl0ZW1zU2VydmljZTogUG9NZW51SXRlbXNTZXJ2aWNlKSB7fVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gc3Vic2NyaWJlIHRvIG1lbnUgY29tcG9uZW50IG1lc3NhZ2VzXG4gICAgdGhpcy5pdGVtU3Vic2NyaXB0aW9uID0gdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnJlY2VpdmVGcm9tUGFyZW50TWVudUNsaWNrZWQoKS5zdWJzY3JpYmUobWVudSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NNZW51SXRlbShtZW51KTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsaWNrTWVudUl0ZW0oZXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIShldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAvLyBFbW1pdCB0byBwYXJlbnRcbiAgICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9QYXJlbnRNZW51Q2xpY2tlZCh7XG4gICAgICAgIGxpbms6IHRoaXMubGluayxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbixcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIGljb246IHRoaXMuaWNvbixcbiAgICAgICAgbGFiZWw6IHRoaXMubGFiZWwsXG4gICAgICAgIGxldmVsOiB0aGlzLmxldmVsLFxuICAgICAgICBzdWJJdGVtczogdGhpcy5zdWJJdGVtcyxcbiAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkLFxuICAgICAgICBpc09wZW5lZDogdGhpcy5pc09wZW5lZCxcbiAgICAgICAgc2hvcnRMYWJlbDogdGhpcy5zaG9ydExhYmVsLFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWNjb3JkaW9uQW5pbWF0aW9uKFxuICAgIG1lbnVBY3RpdmU6IFBvTWVudUl0ZW0sXG4gICAgbWVudU9wZW5lZDogUG9NZW51SXRlbSxcbiAgICBoYXNTdWJJdGVtT3BlbmVkOiBib29sZWFuLFxuICAgIGFjdGl2YXRlZEJ5Um91dGU6IGJvb2xlYW5cbiAgKSB7XG4gICAgaWYgKHRoaXMuaWQgPT09IG1lbnVPcGVuZWRbJ2lkJ10pIHtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5zdWJJdGVtcy5sZW5ndGggKiBwb01lbnVJdGVtU3ViSXRlbVNpemU7XG4gICAgfVxuXG4gICAgaWYgKGhhc1N1Ykl0ZW1PcGVuZWQpIHtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gbWVudU9wZW5lZFsnaXNPcGVuZWQnXVxuICAgICAgICA/IHRoaXMubWF4SGVpZ2h0ICsgbWVudU9wZW5lZC5zdWJJdGVtcy5sZW5ndGggKiBwb01lbnVJdGVtU3ViSXRlbVNpemVcbiAgICAgICAgOiB0aGlzLm1heEhlaWdodCAtIG1lbnVPcGVuZWQuc3ViSXRlbXMubGVuZ3RoICogcG9NZW51SXRlbVN1Ykl0ZW1TaXplO1xuXG4gICAgICBpZiAoYWN0aXZhdGVkQnlSb3V0ZSkge1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZ2V0TWluaW11bUhlaWdodCgwLCB0aGlzLCBtZW51QWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlTWVudShtZW51OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VsZWN0ZWQgPSBtZW51ICYmIHRoaXMuaWQgPT09IG1lbnUuaWQ7XG4gIH1cblxuICBwcml2YXRlIGNhbGNNZW51U3ViSXRlbXNNYXhIZWlnaHQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzdWJJdGVtcyA9IEFycmF5LmZyb20odGhpcy5tZW51U3ViSXRlbXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucG8tbWVudS1pdGVtJykpO1xuICAgICAgc3ViSXRlbXMuZm9yRWFjaCgobWVudUl0ZW06IGFueSkgPT4gKHRoaXMubWF4SGVpZ2h0ICs9IG1lbnVJdGVtLm9mZnNldEhlaWdodCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaW5pbXVtSGVpZ2h0KG1pbmltdW1IZWlnaHQ6IG51bWJlciwgbWVudUl0ZW06IFBvTWVudUl0ZW0sIG1lbnVBY3RpdmU6IFBvTWVudUl0ZW0pIHtcbiAgICBtaW5pbXVtSGVpZ2h0ICs9IHBvTWVudUl0ZW1TdWJJdGVtU2l6ZTtcblxuICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcyAmJiB0aGlzLmhhc1N1Ykl0ZW0obWVudUl0ZW0uc3ViSXRlbXMsIG1lbnVBY3RpdmVbJ2lkJ10pKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWVudUl0ZW0uc3ViSXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIG1pbmltdW1IZWlnaHQgPSB0aGlzLmdldE1pbmltdW1IZWlnaHQobWluaW11bUhlaWdodCwgbWVudUl0ZW0uc3ViSXRlbXNbaW5kZXhdLCBtZW51QWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWluaW11bUhlaWdodDtcbiAgfVxuXG4gIHByaXZhdGUgZ3JvdXBlZE1lbnUobWVudUFjdGl2ZTogUG9NZW51SXRlbSwgbWVudU9wZW5lZDogUG9NZW51SXRlbSwgYWN0aXZhdGVkQnlSb3V0ZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgaGFzU3ViSXRlbU9wZW5lZCA9XG4gICAgICBtZW51T3BlbmVkICYmIHRoaXMuaWQgIT09IG1lbnVPcGVuZWRbJ2lkJ10gPyB0aGlzLmhhc1N1Ykl0ZW0odGhpcy5zdWJJdGVtcywgbWVudU9wZW5lZFsnaWQnXSkgOiBmYWxzZTtcblxuICAgIHRoaXMuaXNPcGVuZWQgPSB0aGlzLmlzTWVudU9wZW5lZChtZW51T3BlbmVkLCBoYXNTdWJJdGVtT3BlbmVkKTtcblxuICAgIHRoaXMuaXNTZWxlY3RlZCA9IG1lbnVBY3RpdmUgJiYgIXRoaXMuaXNPcGVuZWQgPyB0aGlzLmhhc1N1Ykl0ZW0odGhpcy5zdWJJdGVtcywgbWVudUFjdGl2ZVsnaWQnXSkgOiBmYWxzZTtcblxuICAgIGlmICghdGhpcy5pc09wZW5lZCkge1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSAwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWNjb3JkaW9uQW5pbWF0aW9uKG1lbnVBY3RpdmUsIG1lbnVPcGVuZWQsIGhhc1N1Ykl0ZW1PcGVuZWQsIGFjdGl2YXRlZEJ5Um91dGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNTdWJJdGVtKHN1Ykl0ZW1zOiBBcnJheTxQb01lbnVJdGVtPiwgaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChzdWJJdGVtcykge1xuICAgICAgcmV0dXJuIHN1Ykl0ZW1zLnNvbWUoaXRlbSA9PiAoaXRlbVsnaWQnXSA9PT0gaWQgPyB0cnVlIDogdGhpcy5oYXNTdWJJdGVtKGl0ZW0uc3ViSXRlbXMsIGlkKSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNNZW51T3BlbmVkKG1lbnVPcGVuZWQ6IFBvTWVudUl0ZW0sIGhhc1N1Ykl0ZW1PcGVuZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAobWVudU9wZW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaWQgPT09IG1lbnVPcGVuZWRbJ2lkJ10gPyBtZW51T3BlbmVkWydpc09wZW5lZCddIDogaGFzU3ViSXRlbU9wZW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NNZW51SXRlbShtZW51KSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2ludGVybmFsTGluaycpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVNZW51KG1lbnUuYWN0aXZlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnc3ViSXRlbXMnKSB7XG4gICAgICB0aGlzLmdyb3VwZWRNZW51KG1lbnUuYWN0aXZlLCBtZW51Lmdyb3VwZWQsIG1lbnUuYWN0aXZhdGVkQnlSb3V0ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tIG1lbnUgY29tIGxpbmsgaW50ZXJubyAtLT5cbjxhXG4gICpuZ0lmPVwidHlwZSA9PT0gJ2ludGVybmFsTGluaydcIlxuICBjbGFzcz1cInBvLW1lbnUtaXRlbS1saW5rXCJcbiAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gIFtyb3V0ZXJMaW5rXT1cImxpbmtcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9hPlxuPCEtLSBtZW51IGNvbSBsaW5rIGV4dGVybm8gLS0+XG48YSAqbmdJZj1cInR5cGUgPT09ICdleHRlcm5hbExpbmsnXCIgY2xhc3M9XCJwby1tZW51LWl0ZW0tbGlua1wiIHJvbGU9XCJtZW51aXRlbVwiIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIiBbaHJlZl09XCJsaW5rXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L2E+XG48IS0tIG1lbnUgc2VtIGxpbmsgLS0+XG48YSAqbmdJZj1cInR5cGUgPT09ICdub0xpbmsnXCIgY2xhc3M9XCJwby1tZW51LWl0ZW0tbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiByb2xlPVwibWVudWl0ZW1cIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L2E+XG48IS0tIG1lbnUgc2VtIGRhZG9zIC0tPlxuPGRpdiAqbmdJZj1cInR5cGUgPT09ICdub0RhdGEnXCIgY2xhc3M9XCJwby1tZW51LWl0ZW0tbGlua1wiIHJvbGU9XCJub25lXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0gbWVudSBjb20gc3ViIGl0ZW5zIC0tPlxuPGRpdlxuICAqbmdJZj1cInR5cGUgPT09ICdzdWJJdGVtcydcIlxuICBjbGFzcz1cInBvLW1lbnUtaXRlbS1saW5rIHBvLWNsaWNrYWJsZVwiXG4gIHJvbGU9XCJtZW51aXRlbVwiXG4gIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuZWQgPyB0cnVlIDogZmFsc2VcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gIDxkaXZcbiAgICAjbWVudVN1Ykl0ZW1zXG4gICAgY2xhc3M9XCJwby1tZW51LXN1Yi1pdGVtc1wiXG4gICAgW2hpZGRlbl09XCJjb2xsYXBzZWRNZW51IHx8ICFpc09wZW5lZFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5lZCA/IHRydWUgOiBmYWxzZVwiXG4gICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWlzT3BlbmVkID8gdHJ1ZSA6IGZhbHNlXCJcbiAgICByb2xlPVwiZ3JvdXBcIlxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwibWF4SGVpZ2h0XCJcbiAgPlxuICAgIDx1bCBjbGFzcz1cInBvLW1lbnUtc3ViLWl0ZW1zLWxpc3RcIj5cbiAgICAgIDxsaSBjbGFzcz1cInBvLW1lbnUtc3ViLWl0ZW1zLWxpc3QtaXRlbVwiICpuZ0Zvcj1cImxldCBzdWJJdGVtIG9mIHN1Ykl0ZW1zXCIgW2F0dHIuYXJpYS1sZXZlbF09XCJzdWJJdGVtLmxldmVsXCI+XG4gICAgICAgIDxwby1tZW51LWl0ZW1cbiAgICAgICAgICBwLWlzLXN1Yi1pdGVtXG4gICAgICAgICAgW3AtYWN0aW9uXT1cInN1Ykl0ZW0uYWN0aW9uXCJcbiAgICAgICAgICBbcC1iYWRnZS1hbGVydF09XCJzdWJJdGVtLmJhZGdlQWxlcnRcIlxuICAgICAgICAgIFtwLWJhZGdlLWNvbG9yXT1cInN1Ykl0ZW0uYmFkZ2UgPyBzdWJJdGVtLmJhZGdlLmNvbG9yIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbcC1iYWRnZS12YWx1ZV09XCJzdWJJdGVtLmJhZGdlID8gc3ViSXRlbS5iYWRnZS52YWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgW3AtaWRdPVwic3ViSXRlbS5pZFwiXG4gICAgICAgICAgW3AtbGFiZWxdPVwic3ViSXRlbS5sYWJlbFwiXG4gICAgICAgICAgW3AtbGV2ZWxdPVwic3ViSXRlbS5sZXZlbFwiXG4gICAgICAgICAgW3AtbGlua109XCJzdWJJdGVtLmxpbmtcIlxuICAgICAgICAgIFtwLXN1Yi1pdGVtc109XCJzdWJJdGVtLnN1Ykl0ZW1zXCJcbiAgICAgICAgICBbcC10eXBlXT1cInN1Ykl0ZW0udHlwZVwiXG4gICAgICAgID48L3BvLW1lbnUtaXRlbT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZW51SXRlbVRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwby1tZW51LWl0ZW1cIlxuICAgIFt0YWJpbmRleF09XCJ0eXBlID09PSAnc3ViSXRlbXMnID8gMCA6IC0xXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0eXBlID09PSAnc3ViSXRlbXMnID8gZmFsc2UgOiB0cnVlXCJcbiAgICBbYXR0ci5yb2xlXT1cInR5cGUgPT09ICdzdWJJdGVtcycgPyAnbWVudWl0ZW0nIDogdW5kZWZpbmVkXCJcbiAgICBbY2xhc3MucG8tbWVudS1pY29uLWNvbnRhaW5lcl09XCJsZXZlbCA9PT0gMSAmJiBpY29uXCJcbiAgICBbY2xhc3MucG8tbWVudS1pdGVtLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWRcIlxuICAgIFtjbGFzcy5wby1tZW51LWl0ZW0tbGV2ZWwtdHdvXT1cImxldmVsID09PSAyXCJcbiAgICBbY2xhc3MucG8tbWVudS1pdGVtLWxldmVsLXRocmVlXT1cImxldmVsID09PSAzXCJcbiAgICBbY2xhc3MucG8tbWVudS1pdGVtLWxldmVsLWZvdXJdPVwibGV2ZWwgPT09IDRcIlxuICAgIFtjbGFzcy5wby1tZW51LWl0ZW0tZ3JvdXBlci11cF09XCJ0eXBlID09PSAnc3ViSXRlbXMnICYmIGlzT3BlbmVkXCJcbiAgICBbY2xhc3MucG8tbWVudS1pdGVtLWdyb3VwZXItZG93bl09XCJ0eXBlID09PSAnc3ViSXRlbXMnICYmICFpc09wZW5lZFwiXG4gICAgW2NsYXNzLnBvLW1lbnUtaXRlbS1uby1kYXRhXT1cInR5cGUgPT09ICdub0RhdGEnXCJcbiAgICBbY2xhc3MucG8tbWVudS1zdWItaXRlbS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkU3ViSXRlbVwiXG4gICAgKGNsaWNrKT1cImNsaWNrTWVudUl0ZW0oJGV2ZW50KVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwiY2xpY2tNZW51SXRlbSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bi5zcGFjZSk9XCJjbGlja01lbnVJdGVtKCRldmVudClcIlxuICA+XG4gICAgPHBvLWljb24gKm5nSWY9XCJsZXZlbCA9PT0gMSAmJiBpY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJwby1tZW51LWljb24taXRlbVwiIFtwLWljb25dPVwiaWNvblwiPjwvcG8taWNvbj5cblxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cInR5cGUgPT09ICdzdWJJdGVtcycgJiYgIWNvbGxhcHNlZE1lbnVcIlxuICAgICAgY2xhc3M9XCJwby1pY29uIHBvLW1lbnUtZ3JvdXAtaWNvblwiXG4gICAgICBbY2xhc3MucG8taWNvbi1hcnJvdy11cF09XCJpc09wZW5lZFwiXG4gICAgICBbY2xhc3MucG8taWNvbi1hcnJvdy1kb3duXT1cIiFpc09wZW5lZFwiXG4gICAgPjwvc3Bhbj5cblxuICAgIDxzcGFuIFtjbGFzcy5wby1tZW51LWljb24tbGFiZWxdPVwibGV2ZWwgPT09IDEgJiYgaWNvblwiPlxuICAgICAge3sgbGFiZWwgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8cG8tYmFkZ2VcbiAgICAgICpuZ0lmPVwiY2FuU2hvd0JhZGdlXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICBbbmdDbGFzc109XCIhY29sbGFwc2VkTWVudSA/ICdwby1tZW51LWJhZGdlLWFsaWduJyA6ICdwby1tZW51LWJhZGdlLWFsaWduLWNvbGxhcHNlZCdcIlxuICAgICAgW3AtY29sb3JdPVwiYmFkZ2VDb2xvclwiXG4gICAgICBbcC12YWx1ZV09XCJiYWRnZVZhbHVlXCJcbiAgICA+PC9wby1iYWRnZT5cblxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cImJhZGdlQWxlcnRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwicG8tY29sb3ItMDdcIlxuICAgICAgW25nQ2xhc3NdPVwiIWNvbGxhcHNlZE1lbnUgPyAncG8tbWVudS1iYWRnZS1hbGVydCcgOiAncG8tbWVudS1iYWRnZS1hbGVydC1jb2xsYXBzZWQnXCJcbiAgICA+PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=