@po-ui/ng-components 14.3.1 → 14.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/esm2020/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.mjs +30 -3
  2. package/esm2020/lib/components/po-accordion/po-accordion.component.mjs +2 -2
  3. package/esm2020/lib/components/po-accordion/services/po-accordion.service.mjs +1 -1
  4. package/esm2020/lib/components/po-button-group/po-button-group-base.component.mjs +2 -2
  5. package/esm2020/lib/components/po-button-group/po-button-group.component.mjs +3 -3
  6. package/esm2020/lib/components/po-field/po-combo/po-combo.component.mjs +6 -6
  7. package/esm2020/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +5 -5
  8. package/esm2020/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.mjs +7 -3
  9. package/esm2020/lib/components/po-field/po-decimal/po-decimal.component.mjs +5 -5
  10. package/esm2020/lib/components/po-field/po-email/po-email.component.mjs +9 -7
  11. package/esm2020/lib/components/po-field/po-input/po-input.component.mjs +9 -7
  12. package/esm2020/lib/components/po-field/po-login/po-login.component.mjs +12 -11
  13. package/esm2020/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +3 -3
  14. package/esm2020/lib/components/po-field/po-lookup/po-lookup.component.mjs +6 -5
  15. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +31 -20
  16. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.mjs +19 -13
  17. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.mjs +1 -1
  18. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-filter.service.mjs +2 -2
  19. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.mjs +7 -4
  20. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +24 -17
  21. package/esm2020/lib/components/po-field/po-number/po-number.component.mjs +5 -5
  22. package/esm2020/lib/components/po-field/po-password/po-password.component.mjs +14 -13
  23. package/esm2020/lib/components/po-field/po-radio/po-radio-size.enum.mjs +10 -3
  24. package/esm2020/lib/components/po-field/po-radio/po-radio.component.mjs +98 -34
  25. package/esm2020/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +16 -2
  26. package/esm2020/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +18 -25
  27. package/esm2020/lib/components/po-field/po-select/po-select.component.mjs +38 -250
  28. package/esm2020/lib/components/po-field/po-switch/po-switch.component.mjs +38 -34
  29. package/esm2020/lib/components/po-field/po-textarea/po-textarea-base.component.mjs +11 -1
  30. package/esm2020/lib/components/po-field/po-textarea/po-textarea.component.mjs +6 -7
  31. package/esm2020/lib/components/po-field/po-url/po-url.component.mjs +9 -7
  32. package/esm2020/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.mjs +2 -2
  33. package/esm2020/lib/components/po-page/po-page-list/po-page-list.component.mjs +3 -3
  34. package/esm2020/lib/components/po-table/po-table-base.component.mjs +3 -3
  35. package/esm2020/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.mjs +26 -73
  36. package/esm2020/lib/components/po-table/po-table-detail/po-table-detail.component.mjs +27 -8
  37. package/esm2020/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.mjs +111 -0
  38. package/esm2020/lib/components/po-table/po-table.module.mjs +4 -1
  39. package/esm2020/lib/components/po-tag/po-tag-base.component.mjs +11 -3
  40. package/esm2020/lib/components/po-tag/po-tag.component.mjs +16 -9
  41. package/esm2020/lib/components/po-tree-view/po-tree-view-base.component.mjs +6 -4
  42. package/fesm2015/po-ui-ng-components.mjs +961 -1026
  43. package/fesm2015/po-ui-ng-components.mjs.map +1 -1
  44. package/fesm2020/po-ui-ng-components.mjs +941 -1004
  45. package/fesm2020/po-ui-ng-components.mjs.map +1 -1
  46. package/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.d.ts +10 -3
  47. package/lib/components/po-accordion/services/po-accordion.service.d.ts +3 -2
  48. package/lib/components/po-button-group/po-button-group-base.component.d.ts +1 -1
  49. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +26 -15
  50. package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +5 -3
  51. package/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.d.ts +2 -2
  52. package/lib/components/po-field/po-multiselect/po-multiselect-filter.service.d.ts +2 -2
  53. package/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.d.ts +2 -1
  54. package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +7 -1
  55. package/lib/components/po-field/po-radio/po-radio-size.enum.d.ts +9 -2
  56. package/lib/components/po-field/po-radio/po-radio.component.d.ts +27 -10
  57. package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +21 -1
  58. package/lib/components/po-field/po-select/po-select.component.d.ts +1 -32
  59. package/lib/components/po-field/po-switch/po-switch.component.d.ts +12 -2
  60. package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +10 -0
  61. package/lib/components/po-modal/po-modal.component.d.ts +1 -1
  62. package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +4 -12
  63. package/lib/components/po-table/po-table-detail/po-table-detail.component.d.ts +1 -0
  64. package/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.d.ts +35 -0
  65. package/lib/components/po-table/po-table.module.d.ts +25 -24
  66. package/lib/components/po-tag/po-tag-base.component.d.ts +8 -2
  67. package/package.json +4 -4
  68. package/po-ui-ng-components-14.5.0.tgz +0 -0
  69. package/schematics/ng-add/index.js +1 -1
  70. package/schematics/ng-update/v14/index.js +1 -1
  71. package/schematics/ng-update/v2/index.js +1 -1
  72. package/schematics/ng-update/v3/index.js +1 -1
  73. package/schematics/ng-update/v4/index.js +1 -1
  74. package/schematics/ng-update/v5/index.js +1 -1
  75. package/schematics/ng-update/v6/index.js +1 -1
  76. package/esm2020/lib/components/po-field/po-radio/po-radio-base.component.mjs +0 -104
  77. package/lib/components/po-field/po-radio/po-radio-base.component.d.ts +0 -58
  78. package/po-ui-ng-components-14.3.1.tgz +0 -0
@@ -36,7 +36,7 @@ export class PoMultiselectSearchComponent {
36
36
  return this.inputElement.nativeElement.value;
37
37
  }
38
38
  onChange(event) {
39
- this.change.emit({ event: event, value: this.inputElement.nativeElement.value });
39
+ this.change.emit({ event: event, [this.fieldValue]: this.inputElement.nativeElement.value });
40
40
  }
41
41
  setFocus() {
42
42
  this.inputElement.nativeElement.focus();
@@ -52,7 +52,7 @@ PoMultiselectSearchComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
52
52
  } if (rf & 2) {
53
53
  let _t;
54
54
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputElement = _t.first);
55
- } }, inputs: { literals: ["p-literals", "literals"], placeholder: ["p-placeholder", "placeholder"] }, outputs: { change: "p-change" }, decls: 5, vars: 1, consts: [[1, "po-field-container-content", "po-multiselect-container-search"], [1, "po-field-icon-container-left"], [1, "po-icon", "po-icon-search", "po-field-icon"], ["type", "text", 1, "po-input", "po-input-icon-left", "po-multiselect-search-input", 3, "placeholder", "keyup"], ["inputElement", ""]], template: function PoMultiselectSearchComponent_Template(rf, ctx) { if (rf & 1) {
55
+ } }, inputs: { literals: ["p-literals", "literals"], fieldValue: ["p-field-value", "fieldValue"], placeholder: ["p-placeholder", "placeholder"] }, outputs: { change: "p-change" }, decls: 5, vars: 1, consts: [[1, "po-field-container-content", "po-multiselect-container-search"], [1, "po-field-icon-container-left"], [1, "po-icon", "po-icon-search", "po-field-icon", "po-icon-input"], ["type", "text", 1, "po-input", "po-input-icon-left", "po-multiselect-search-input", 3, "placeholder", "keyup"], ["inputElement", ""]], template: function PoMultiselectSearchComponent_Template(rf, ctx) { if (rf & 1) {
56
56
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
57
57
  i0.ɵɵelement(2, "span", 2);
58
58
  i0.ɵɵelementEnd();
@@ -65,13 +65,16 @@ PoMultiselectSearchComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
65
65
  } }, encapsulation: 2, changeDetection: 0 });
66
66
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMultiselectSearchComponent, [{
67
67
  type: Component,
68
- args: [{ selector: 'po-multiselect-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"po-field-container-content po-multiselect-container-search\">\n <div class=\"po-field-icon-container-left\">\n <span class=\"po-icon po-icon-search po-field-icon\"></span>\n </div>\n\n <input\n #inputElement\n class=\"po-input po-input-icon-left po-multiselect-search-input\"\n type=\"text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"onChange($event)\"\n />\n</div>\n" }]
68
+ args: [{ selector: 'po-multiselect-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"po-field-container-content po-multiselect-container-search\">\n <div class=\"po-field-icon-container-left\">\n <span class=\"po-icon po-icon-search po-field-icon po-icon-input\"></span>\n </div>\n\n <input\n #inputElement\n class=\"po-input po-input-icon-left po-multiselect-search-input\"\n type=\"text\"\n [placeholder]=\"placeholder\"\n (keyup)=\"onChange($event)\"\n />\n</div>\n" }]
69
69
  }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { inputElement: [{
70
70
  type: ViewChild,
71
71
  args: ['inputElement', { read: ElementRef, static: true }]
72
72
  }], literals: [{
73
73
  type: Input,
74
74
  args: ['p-literals']
75
+ }], fieldValue: [{
76
+ type: Input,
77
+ args: ['p-field-value']
75
78
  }], change: [{
76
79
  type: Output,
77
80
  args: ['p-change']
@@ -79,4 +82,4 @@ PoMultiselectSearchComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
79
82
  type: Input,
80
83
  args: ['p-placeholder']
81
84
  }] }); })();
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1zZWFyY2gvcG8tbXVsdGlzZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1zZWFyY2gvcG8tbXVsdGlzZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFJbEQ7Ozs7OztHQU1HO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQVd2QyxZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUx6Qyx5RUFBeUU7UUFDckQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFJSixDQUFDO0lBRTdDOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUE0QixXQUFXLENBQUMsV0FBbUI7UUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0lBQ3JILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7d0dBL0NVLDRCQUE0QjsrRUFBNUIsNEJBQTRCOytCQUNKLFVBQVU7Ozs7O1FDNUIvQyw4QkFBd0UsYUFBQTtRQUVwRSwwQkFBMEQ7UUFDNUQsaUJBQU07UUFFTixtQ0FNRTtRQURBLDhHQUFTLG9CQUFnQixJQUFDO1FBTDVCLGlCQU1FLEVBQUE7O1FBRkEsZUFBMkI7UUFBM0IsNkNBQTJCOzt1RkRrQmxCLDRCQUE0QjtjQUx4QyxTQUFTOzJCQUNFLHVCQUF1QixtQkFFaEIsdUJBQXVCLENBQUMsTUFBTTtvRUFHZ0IsWUFBWTtrQkFBMUUsU0FBUzttQkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFHeEMsUUFBUTtrQkFBNUIsS0FBSzttQkFBQyxZQUFZO1lBR0MsTUFBTTtrQkFBekIsTUFBTTttQkFBQyxVQUFVO1lBaUJVLFdBQVc7a0JBQXRDLEtBQUs7bUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdExpdGVyYWxzIH0gZnJvbSAnLi4vLi4vaW5kZXgnO1xuXG4vKipcbiAqIEBkb2NzUHJpdmF0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgZGUgcGVzcXVpc2EgcXVlIHNlcsOhIGNyaWFkbyBkZW50cm8gZG8gZHJvcGRvd24gZG8gYHBvLW11bHRpc2VsZWN0YC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbXVsdGlzZWxlY3Qtc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLW11bHRpc2VsZWN0LXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBvTXVsdGlzZWxlY3RTZWFyY2hDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIFByb3ByaWVkYWRlIHF1ZSByZWNlYmUgYXMgbGl0ZXJhaXMgZGVmaW5pZGFzIG5vIGBwby1tdWx0aXNlbGVjdGAuICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIGxpdGVyYWxzPzogUG9NdWx0aXNlbGVjdExpdGVyYWxzO1xuXG4gIC8qKiBFdmVudG8gcXVlIHNlcsOhIGRpc3BhcmFkbyBhIGNhZGEgdGVjbGEgZGlnaXRhZGEgbm8gY2FtcG8gZGUgYnVzY2EuICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBsYWNlaG9sZGVyIGRvIGNhbXBvIGRlIHBlc3F1aXNhLlxuICAgKlxuICAgKiA+IENhc28gbyBtZXNtbyBuw6NvIHNlamEgaW5mb3JtYWRvLCBvIHZhbG9yIHBhZHLDo28gc2Vyw6EgdHJhZHV6aWRvIGNvbSBiYXNlIG5vIGlkaW9tYSBkbyBuYXZlZ2Fkb3IgKHB0LCBlcyBlIGVuKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYEJ1c2NhcmBcbiAgICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlciAmJiBpc1R5cGVvZihwbGFjZWhvbGRlciwgJ3N0cmluZycpID8gcGxhY2Vob2xkZXIgOiB0aGlzLmxpdGVyYWxzLnBsYWNlaG9sZGVyU2VhcmNoO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlciB8fCB0aGlzLmxpdGVyYWxzLnBsYWNlaG9sZGVyU2VhcmNoO1xuICB9XG5cbiAgZ2V0IGlucHV0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBvbkNoYW5nZShldmVudCkge1xuICAgIHRoaXMuY2hhbmdlLmVtaXQoeyBldmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlIH0pO1xuICB9XG5cbiAgc2V0Rm9jdXMoKSB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudCBwby1tdWx0aXNlbGVjdC1jb250YWluZXItc2VhcmNoXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24tc2VhcmNoIHBvLWZpZWxkLWljb25cIj48L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxpbnB1dFxuICAgICNpbnB1dEVsZW1lbnRcbiAgICBjbGFzcz1cInBvLWlucHV0IHBvLWlucHV0LWljb24tbGVmdCBwby1tdWx0aXNlbGVjdC1zZWFyY2gtaW5wdXRcIlxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIChrZXl1cCk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgLz5cbjwvZGl2PlxuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1zZWFyY2gvcG8tbXVsdGlzZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1zZWFyY2gvcG8tbXVsdGlzZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFJbEQ7Ozs7OztHQU1HO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQWF2QyxZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUx6Qyx5RUFBeUU7UUFDckQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFJSixDQUFDO0lBRTdDOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUE0QixXQUFXLENBQUMsV0FBbUI7UUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0lBQ3JILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzt3R0FqRFUsNEJBQTRCOytFQUE1Qiw0QkFBNEI7K0JBQ0osVUFBVTs7Ozs7UUM1Qi9DLDhCQUF3RSxhQUFBO1FBRXBFLDBCQUF3RTtRQUMxRSxpQkFBTTtRQUVOLG1DQU1FO1FBREEsOEdBQVMsb0JBQWdCLElBQUM7UUFMNUIsaUJBTUUsRUFBQTs7UUFGQSxlQUEyQjtRQUEzQiw2Q0FBMkI7O3VGRGtCbEIsNEJBQTRCO2NBTHhDLFNBQVM7MkJBQ0UsdUJBQXVCLG1CQUVoQix1QkFBdUIsQ0FBQyxNQUFNO29FQUdnQixZQUFZO2tCQUExRSxTQUFTO21CQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUd4QyxRQUFRO2tCQUE1QixLQUFLO21CQUFDLFlBQVk7WUFFSyxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFHRixNQUFNO2tCQUF6QixNQUFNO21CQUFDLFVBQVU7WUFpQlUsV0FBVztrQkFBdEMsS0FBSzttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBpc1R5cGVvZiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb011bHRpc2VsZWN0TGl0ZXJhbHMgfSBmcm9tICcuLi8uLi9pbmRleCc7XG5cbi8qKlxuICogQGRvY3NQcml2YXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSBkZSBwZXNxdWlzYSBxdWUgc2Vyw6EgY3JpYWRvIGRlbnRybyBkbyBkcm9wZG93biBkbyBgcG8tbXVsdGlzZWxlY3RgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1tdWx0aXNlbGVjdC1zZWFyY2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbXVsdGlzZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUG9NdWx0aXNlbGVjdFNlYXJjaENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAvKiogUHJvcHJpZWRhZGUgcXVlIHJlY2ViZSBhcyBsaXRlcmFpcyBkZWZpbmlkYXMgbm8gYHBvLW11bHRpc2VsZWN0YC4gKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgbGl0ZXJhbHM/OiBQb011bHRpc2VsZWN0TGl0ZXJhbHM7XG5cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgZmllbGRWYWx1ZTogc3RyaW5nO1xuXG4gIC8qKiBFdmVudG8gcXVlIHNlcsOhIGRpc3BhcmFkbyBhIGNhZGEgdGVjbGEgZGlnaXRhZGEgbm8gY2FtcG8gZGUgYnVzY2EuICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBsYWNlaG9sZGVyIGRvIGNhbXBvIGRlIHBlc3F1aXNhLlxuICAgKlxuICAgKiA+IENhc28gbyBtZXNtbyBuw6NvIHNlamEgaW5mb3JtYWRvLCBvIHZhbG9yIHBhZHLDo28gc2Vyw6EgdHJhZHV6aWRvIGNvbSBiYXNlIG5vIGlkaW9tYSBkbyBuYXZlZ2Fkb3IgKHB0LCBlcyBlIGVuKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYEJ1c2NhcmBcbiAgICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlciAmJiBpc1R5cGVvZihwbGFjZWhvbGRlciwgJ3N0cmluZycpID8gcGxhY2Vob2xkZXIgOiB0aGlzLmxpdGVyYWxzLnBsYWNlaG9sZGVyU2VhcmNoO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlciB8fCB0aGlzLmxpdGVyYWxzLnBsYWNlaG9sZGVyU2VhcmNoO1xuICB9XG5cbiAgZ2V0IGlucHV0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBvbkNoYW5nZShldmVudCkge1xuICAgIHRoaXMuY2hhbmdlLmVtaXQoeyBldmVudDogZXZlbnQsIFt0aGlzLmZpZWxkVmFsdWVdOiB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlIH0pO1xuICB9XG5cbiAgc2V0Rm9jdXMoKSB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudCBwby1tdWx0aXNlbGVjdC1jb250YWluZXItc2VhcmNoXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24tc2VhcmNoIHBvLWZpZWxkLWljb24gcG8taWNvbi1pbnB1dFwiPjwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGlucHV0XG4gICAgI2lucHV0RWxlbWVudFxuICAgIGNsYXNzPVwicG8taW5wdXQgcG8taW5wdXQtaWNvbi1sZWZ0IHBvLW11bHRpc2VsZWN0LXNlYXJjaC1pbnB1dFwiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgKGtleXVwKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAvPlxuPC9kaXY+XG4iXX0=
@@ -26,13 +26,13 @@ function PoMultiselectComponent_span_4_Template(rf, ctx) { if (rf & 1) {
26
26
  function PoMultiselectComponent_po_disclaimer_5_Template(rf, ctx) { if (rf & 1) {
27
27
  const _r7 = i0.ɵɵgetCurrentView();
28
28
  i0.ɵɵelementStart(0, "po-disclaimer", 12);
29
- 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.value === "")); })("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.value)); });
29
+ 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])); });
30
30
  i0.ɵɵelementEnd();
31
31
  } if (rf & 2) {
32
32
  const disclaimer_r5 = ctx.$implicit;
33
33
  const ctx_r2 = i0.ɵɵnextContext();
34
- i0.ɵɵclassProp("po-clickable", disclaimer_r5.value === "" && !ctx_r2.disabled);
35
- i0.ɵɵproperty("p-label", disclaimer_r5.label)("p-value", disclaimer_r5.value)("p-hide-close", disclaimer_r5.value === "" || ctx_r2.disabled);
34
+ i0.ɵɵclassProp("po-clickable", disclaimer_r5[ctx_r2.fieldValue] === "" && !ctx_r2.disabled);
35
+ 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);
36
36
  } }
37
37
  const poMultiselectContainerOffset = 8;
38
38
  const poMultiselectContainerPositionDefault = 'bottom';
@@ -83,6 +83,12 @@ const providers = [
83
83
  * <file name="sample-po-multiselect-heroes/sample-po-multiselect-heroes.component.ts"> </file>
84
84
  * <file name="sample-po-multiselect-heroes/sample-po-multiselect-heroes.service.ts"> </file>
85
85
  * </example>
86
+ *
87
+ * <example name="po-multiselect-any-array" title="PO Multiselect - Array Any">
88
+ * <file name="sample-po-multiselect-any-array/sample-po-multiselect-any-array.component.html"> </file>
89
+ * <file name="sample-po-multiselect-any-array/sample-po-multiselect-any-array.component.ts"> </file>
90
+ * </example>
91
+ *
86
92
  */
87
93
  export class PoMultiselectComponent extends PoMultiselectBaseComponent {
88
94
  constructor(renderer, changeDetector, el, controlPosition, defaultService, languageService) {
@@ -182,12 +188,12 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
182
188
  if (sum + extraDisclaimerSize > inputWidth) {
183
189
  this.visibleDisclaimers.splice(-2, 2);
184
190
  const label = '+' + (this.selectedOptions.length + 1 - i).toString();
185
- this.visibleDisclaimers.push({ value: '', label: label });
191
+ this.visibleDisclaimers.push({ [this.fieldValue]: '', [this.fieldLabel]: label });
186
192
  }
187
193
  else {
188
194
  this.visibleDisclaimers.splice(-1, 1);
189
195
  const label = '+' + (this.selectedOptions.length - i).toString();
190
- this.visibleDisclaimers.push({ value: '', label: label });
196
+ this.visibleDisclaimers.push({ [this.fieldValue]: '', [this.fieldLabel]: label });
191
197
  }
192
198
  }
193
199
  }
@@ -252,7 +258,7 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
252
258
  }
253
259
  scrollToSelectedOptions() {
254
260
  if (this.selectedOptions && this.selectedOptions.length) {
255
- const index = this.options.findIndex(option => option.value === this.selectedOptions[0].value);
261
+ const index = this.options.findIndex(option => option[this.fieldValue] === this.selectedOptions[0][this.fieldValue]);
256
262
  this.dropdown.scrollTo(index);
257
263
  }
258
264
  }
@@ -261,12 +267,12 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
261
267
  this.changeDetector.markForCheck();
262
268
  }
263
269
  changeSearch(event) {
264
- if (event && event.value !== undefined) {
270
+ if (event && event[this.fieldValue] !== undefined) {
265
271
  if (this.filterService) {
266
- this.filterSubject.next(event.value);
272
+ this.filterSubject.next(event[this.fieldValue]);
267
273
  }
268
274
  else {
269
- this.searchByLabel(event.value, this.options, this.filterMode);
275
+ this.searchByLabel(event[this.fieldValue], this.options, this.filterMode);
270
276
  }
271
277
  }
272
278
  else {
@@ -276,7 +282,7 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
276
282
  setTimeout(() => this.adjustContainerPosition());
277
283
  }
278
284
  closeDisclaimer(value) {
279
- const index = this.selectedOptions.findIndex(option => option.value === value);
285
+ const index = this.selectedOptions.findIndex(option => option[this.fieldValue] === value);
280
286
  this.selectedOptions.splice(index, 1);
281
287
  this.updateVisibleItems();
282
288
  this.callOnChange(this.selectedOptions);
@@ -290,7 +296,7 @@ export class PoMultiselectComponent extends PoMultiselectBaseComponent {
290
296
  }
291
297
  }
292
298
  applyFilter(value = '') {
293
- const param = { property: 'label', value: value };
299
+ const param = { property: this.fieldLabel, value: value };
294
300
  return this.service.getFilteredData(param).pipe(catchError(err => {
295
301
  this.isServerSearching = false;
296
302
  return of([]);
@@ -375,7 +381,7 @@ PoMultiselectComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoMu
375
381
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdown = _t.first);
376
382
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.iconElement = _t.first);
377
383
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputElement = _t.first);
378
- } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 12, vars: 26, consts: [[3, "p-label", "p-help", "p-optional"], [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-change", "p-change-search", "p-close-dropdown"], ["dropdownElement", ""], [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) {
384
+ } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 12, vars: 31, consts: [[3, "p-label", "p-help", "p-optional"], [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-change", "p-change-search", "p-close-dropdown"], ["dropdownElement", ""], [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) {
379
385
  i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1)(2, "div", 2, 3);
380
386
  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(); });
381
387
  i0.ɵɵtemplate(4, PoMultiselectComponent_span_4_Template, 2, 1, "span", 4);
@@ -395,19 +401,20 @@ PoMultiselectComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoMu
395
401
  i0.ɵɵadvance(1);
396
402
  i0.ɵɵclassProp("po-multiselect-input-auto", ctx.autoHeight)("po-multiselect-input-static", !ctx.autoHeight)("po-multiselect-input-disabled", ctx.disabled);
397
403
  i0.ɵɵproperty("tabindex", ctx.disabled ? -1 : 0);
404
+ i0.ɵɵattribute("disabled", ctx.disabled)("aria-label", ctx.label);
398
405
  i0.ɵɵadvance(2);
399
- i0.ɵɵproperty("ngIf", ctx.placeholder && !(ctx.visibleDisclaimers == null ? null : ctx.visibleDisclaimers.length));
406
+ i0.ɵɵproperty("ngIf", ctx.placeholder && !ctx.disabled && !(ctx.visibleDisclaimers == null ? null : ctx.visibleDisclaimers.length));
400
407
  i0.ɵɵadvance(1);
401
408
  i0.ɵɵproperty("ngForOf", ctx.visibleDisclaimers);
402
409
  i0.ɵɵadvance(2);
403
- i0.ɵɵclassMapInterpolate1("po-icon po-field-icon ", ctx.dropdownIcon, "");
410
+ i0.ɵɵclassMapInterpolate2("po-icon po-field-icon ", ctx.dropdownIcon, " ", ctx.disabled ? "po-icon-input-disabled" : "po-icon-input", "");
404
411
  i0.ɵɵproperty("ngClass", ctx.disabled ? "po-field-icon-disabled" : "");
405
412
  i0.ɵɵadvance(2);
406
- 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);
413
+ 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);
407
414
  } }, encapsulation: 2, changeDetection: 0 });
408
415
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMultiselectComponent, [{
409
416
  type: Component,
410
- args: [{ selector: 'po-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\" [class.po-multiselect-show]=\"dropdownOpen\">\n <div\n #inputElement\n [tabindex]=\"disabled ? -1 : 0\"\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 && !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.label\"\n [p-value]=\"disclaimer.value\"\n [p-hide-close]=\"disclaimer.value === '' || disabled\"\n [class.po-clickable]=\"disclaimer.value === '' && !disabled\"\n (click)=\"openDropdown(disclaimer.value === '')\"\n (p-close-action)=\"closeDisclaimer(disclaimer.value)\"\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 }}\"\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-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></po-field-container-bottom>\n</po-field-container>\n" }]
417
+ args: [{ selector: 'po-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\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-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></po-field-container-bottom>\n</po-field-container>\n" }]
411
418
  }], function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.PoControlPositionService }, { type: i2.PoMultiselectFilterService }, { type: i3.PoLanguageService }]; }, { dropdownElement: [{
412
419
  type: ViewChild,
413
420
  args: ['dropdownElement', { read: ElementRef, static: true }]
@@ -421,4 +428,4 @@ PoMultiselectComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoMu
421
428
  type: ViewChild,
422
429
  args: ['inputElement', { read: ElementRef, static: true }]
423
430
  }] }); })();
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsVUFBVSxFQUtWLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7OztJQ1p2RSxnQ0FBa0c7SUFDaEcsWUFDRjtJQUFBLGlCQUFPOzs7SUFETCxlQUNGO0lBREUsbURBQ0Y7Ozs7SUFFQSx5Q0FTQztJQUZDLHFQQUFTLGVBQUEsNENBQWtDLEVBQUUsQ0FBQyxDQUFBLElBQUMsMFBBQzdCLGVB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QjtjQU5sQyxTQUFTOzJCQUNFLGdCQUFnQixtQkFFVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQy9DLFNBQVM7cU9BS3lELGVBQWU7a0JBQWhGLFNBQVM7bUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDaEIsUUFBUTtrQkFBdkQsU0FBUzttQkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDZ0IsV0FBVztrQkFBeEUsU0FBUzttQkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDRyxZQUFZO2tCQUExRSxTQUFTO21CQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1jb250cm9sLXBvc2l0aW9uL3BvLWNvbnRyb2wtcG9zaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb0tleUNvZGVFbnVtIH0gZnJvbSAnLi8uLi8uLi8uLi9lbnVtcy9wby1rZXktY29kZS5lbnVtJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5cbmNvbnN0IHBvTXVsdGlzZWxlY3RDb250YWluZXJPZmZzZXQgPSA4O1xuY29uc3QgcG9NdWx0aXNlbGVjdENvbnRhaW5lclBvc2l0aW9uRGVmYXVsdCA9ICdib3R0b20nO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgcHJvdmlkZXJzID0gW1xuICBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZSxcbiAgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlLFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9NdWx0aXNlbGVjdENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9NdWx0aXNlbGVjdENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfVxuXTtcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9NdWx0aXNlbGVjdEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC1iYXNpY1wiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgQmFzaWNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1iYXNpYy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC1sYWJzXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCBMYWJzXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtbGFicy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtbGFicy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC12YWNhdGlvblwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBWYWNhdGlvblwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uL3NhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24vc2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLXJlYWN0aXZlLWZvcm1cIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IC0gVmFjYXRpb24gUmVhY3RpdmUgRm9ybVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtaGVyb2VzXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIEhlcm9lcyAtIHVzaW5nIEFQSVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1tdWx0aXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnNcbn0pXG5leHBvcnQgY2xhc3MgUG9NdWx0aXNlbGVjdENvbXBvbmVudFxuICBleHRlbmRzIFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgRG9DaGVjaywgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bkVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGRyb3Bkb3duO1xuICBAVmlld0NoaWxkKCdpY29uRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGljb25FbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgZGlzY2xhaW1lck9mZnNldCA9IDA7XG4gIGRyb3Bkb3duSWNvbjogc3RyaW5nID0gJ3BvLWljb24tYXJyb3ctZG93bic7XG4gIGRyb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwb3NpdGlvbkRpc2NsYWltZXJFeHRyYTtcbiAgdGltZW91dFJlc2l6ZTtcbiAgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcblxuICBwcml2YXRlIGlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBjYWNoZU9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY29udHJvbFBvc2l0aW9uOiBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gICAgcHVibGljIGRlZmF1bHRTZXJ2aWNlOiBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZSxcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGxhbmd1YWdlU2VydmljZSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLmZpbHRlclNlcnZpY2UgJiYgKGNoYW5nZXMuZmlsdGVyU2VydmljZSB8fCBjaGFuZ2VzLmZpZWxkVmFsdWUgfHwgY2hhbmdlcy5maWVsZExhYmVsKSkge1xuICAgICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGRpc2NsYWltZXJzIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKChpbnB1dFdpZHRoICYmICF0aGlzLnZpc2libGVFbGVtZW50ICYmIHRoaXMuaW5pdGlhbGl6ZWQpIHx8IChpbnB1dFdpZHRoICYmIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMpKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLnZpc2libGVFbGVtZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuZ2V0T2JqZWN0c0J5VmFsdWVzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZmlsdGVyU3ViamVjdD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9NdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9NdWx0aXNlbGVjdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgbXVsdGlzZWxlY3Q6IFBvTXVsdGlzZWxlY3RDb21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzTXVsdGlzZWxlY3QoKSB7XG4gICAqICAgdGhpcy5tdWx0aXNlbGVjdC5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wby1pbnB1dCcpLm9mZnNldFdpZHRoIC0gNDA7XG4gIH1cblxuICBnZXREaXNjbGFpbWVyc1dpZHRoKCkge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3BvLWRpc2NsYWltZXInKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShkaXNjbGFpbWVycykubWFwKGRpc2NsYWltZXIgPT4gZGlzY2xhaW1lclsnb2Zmc2V0V2lkdGgnXSk7XG4gIH1cblxuICBjYWxjdWxhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lcnNXaWR0aCA9IHRoaXMuZ2V0RGlzY2xhaW1lcnNXaWR0aCgpO1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmdldElucHV0V2lkdGgoKTtcbiAgICBjb25zdCBleHRyYURpc2NsYWltZXJTaXplID0gMzg7XG4gICAgY29uc3QgZGlzY2xhaW1lcnNWaXNpYmxlID0gZGlzY2xhaW1lcnNXaWR0aFswXTtcblxuICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzID0gW107XG5cbiAgICBpZiAoaW5wdXRXaWR0aCA+IDApIHtcbiAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgbGV0IGkgPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHN1bSArPSBkaXNjbGFpbWVyc1dpZHRoW2ldO1xuICAgICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycy5wdXNoKHRoaXMuc2VsZWN0ZWRPcHRpb25zW2ldKTtcblxuICAgICAgICBpZiAoc3VtID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIHN1bSAtPSBkaXNjbGFpbWVyc1dpZHRoW2ldO1xuICAgICAgICAgIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlzY2xhaW1lcnNWaXNpYmxlIHx8ICF0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGkgPT09IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VtICsgZXh0cmFEaXNjbGFpbWVyU2l6ZSA+IGlucHV0V2lkdGgpIHtcbiAgICAgICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycy5zcGxpY2UoLTIsIDIpO1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gJysnICsgKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCArIDEgLSBpKS50b1N0cmluZygpO1xuICAgICAgICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzLnB1c2goeyB2YWx1ZTogJycsIGxhYmVsOiBsYWJlbCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycy5zcGxpY2UoLTEsIDEpO1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gJysnICsgKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMucHVzaCh7IHZhbHVlOiAnJywgbGFiZWw6IGxhYmVsIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjaGFuZ2VJdGVtcyhjaGFuZ2VkSXRlbXMpIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9ucyhjaGFuZ2VkSXRlbXMpO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcblxuICAgIGlmICh0aGlzLmF1dG9IZWlnaHQgJiYgdGhpcy5kcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZpc2libGVJdGVtcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMpIHtcbiAgICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzID0gW10uY29uY2F0KHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG5cbiAgICAvLyBxdWFuZG8gZXN0aXZlciBkZW50cm8gZGUgbW9kYWxcbiAgICBpZiAoIXRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHRoaXMuaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRlYm91bmNlUmVzaXplKCkge1xuICAgIGlmICghdGhpcy5hdXRvSGVpZ2h0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0UmVzaXplKTtcbiAgICAgIHRoaXMudGltZW91dFJlc2l6ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudD86IGFueSkge1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBQb0tleUNvZGVFbnVtLmFycm93VXAgfHwgZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS5hcnJvd0Rvd24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0udGFiKSB7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duVmlzaWJpbGl0eSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbHRlclNlcnZpY2UpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJJbkZpcnN0Q2xpY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoIXRoaXMuZHJvcGRvd25PcGVuKTtcbiAgfVxuXG4gIG9wZW5Ecm9wZG93bih0b09wZW4pIHtcbiAgICBpZiAodG9PcGVuICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSh0b09wZW46IGJvb2xlYW4pIHtcbiAgICB0b09wZW4gPyB0aGlzLm9wZW4oKSA6IHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHNjcm9sbFRvU2VsZWN0ZWRPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9ucyAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcHRpb25zLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnNlbGVjdGVkT3B0aW9uc1swXS52YWx1ZSk7XG4gICAgICB0aGlzLmRyb3Bkb3duLnNjcm9sbFRvKGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBzZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKG9wdGlvbnMpIHtcbiAgICB0aGlzLnZpc2libGVPcHRpb25zRHJvcGRvd24gPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjaGFuZ2VTZWFyY2goZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgICB0aGlzLmZpbHRlclN1YmplY3QubmV4dChldmVudC52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlYXJjaEJ5TGFiZWwoZXZlbnQudmFsdWUsIHRoaXMub3B0aW9ucywgdGhpcy5maWx0ZXJNb2RlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gdGltZW91dCBuZWNlc3PDoXJpbyBwYXJhIHJlcG9zaWNpb25hciBjb3JyZXRhbWVudGUgcXVhbmRvIGRyb3Bkb3duIGVzdGl2ZXIgcHJhIGNpbWEgZG8gaW5wdXQgZSByZWFsaXphciBidXNjYSBubyBpbnB1dFxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpKTtcbiAgfVxuXG4gIGNsb3NlRGlzY2xhaW1lcih2YWx1ZSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gIH1cblxuICB3YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbiAmJlxuICAgICAgIXRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMuaWNvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5kcm9wZG93bkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbnRyb2xEcm9wZG93blZpc2liaWxpdHkoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcgPSAnJyk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4+IHtcbiAgICBjb25zdCBwYXJhbSA9IHsgcHJvcGVydHk6ICdsYWJlbCcsIHZhbHVlOiB2YWx1ZSB9O1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0RmlsdGVyZWREYXRhKHBhcmFtKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICB0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgob3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5zZXRPcHRpb25zQnlBcHBseUZpbHRlcihvcHRpb25zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJJbkZpcnN0Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaXNGaXJzdEZpbHRlcikge1xuICAgICAgdGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IHRydWU7XG5cbiAgICAgIC8vIG5lY2Vzc2FyaW8gZW52aWFyIHVtIG9iamV0byBzdHJpbmcgdmF6aWEgcGFyYSByZWZhemVyIGEgYnVzY2EsIHF1YW5kbyBhbHRlcmFyIGZpbHRlclNlcnZpY2UsIGZpZWxkVmFsdWUgZSBmaWVsZExhYmVsXG4gICAgICAvLyBwb2lzIHRlbW9zIG8gZGlzdGluY3RVbnRpbENoYW5nZSBubyBwaXBlIGRvIGZpbHRlclN1YmplY3RcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLW5ldy13cmFwcGVycyAqL1xuICAgICAgdGhpcy5maWx0ZXJTdWJqZWN0Lm5leHQobmV3IFN0cmluZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zID0gWy4uLnRoaXMuY2FjaGVPcHRpb25zXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE9wdGlvbnNCeUFwcGx5RmlsdGVyKGl0ZW1zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPikge1xuICAgIGlmICh0aGlzLmlzRmlyc3RGaWx0ZXIpIHtcbiAgICAgIHRoaXMuY2FjaGVPcHRpb25zID0gWy4uLml0ZW1zXTtcbiAgICAgIHRoaXMuaXNGaXJzdEZpbHRlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IFsuLi5pdGVtc107XG4gICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLmFkanVzdFBvc2l0aW9uKHBvTXVsdGlzZWxlY3RDb250YWluZXJQb3NpdGlvbkRlZmF1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duSWNvbiA9ICdwby1pY29uLWFycm93LWRvd24nO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmNvbnRyb2xWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB0aGlzLnNldFZpc2libGVPcHRpb25zRHJvcGRvd24odGhpcy5vcHRpb25zKTtcblxuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jbGlja091dExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLndhc0NsaWNrZWRPblRvZ2dsZShldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuXG4gICAgICBpc01vYmlsZSgpID8gdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpIDogdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBvcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25JY29uID0gJ3BvLWljb24tYXJyb3ctdXAnO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuZHJvcGRvd24uY29udHJvbFZpc2liaWxpdHkodHJ1ZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkT3B0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXRQb3NpdGlvbkRyb3Bkb3duKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGlja091dExpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrT3V0TGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQb3NpdGlvbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLnNldEVsZW1lbnRzKFxuICAgICAgdGhpcy5kcm9wZG93bi5jb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgIHBvTXVsdGlzZWxlY3RDb250YWluZXJPZmZzZXQsXG4gICAgICB0aGlzLmlucHV0RWxlbWVudCxcbiAgICAgIFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtbGFiZWxdPVwibGFiZWxcIiBbcC1oZWxwXT1cImhlbHBcIiBbcC1vcHRpb25hbF09XCIhcmVxdWlyZWQgJiYgb3B0aW9uYWxcIj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCIgW2NsYXNzLnBvLW11bHRpc2VsZWN0LXNob3ddPVwiZHJvcGRvd25PcGVuXCI+XG4gICAgPGRpdlxuICAgICAgI2lucHV0RWxlbWVudFxuICAgICAgW3RhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgIGNsYXNzPVwicG8taW5wdXQgcG8taW5wdXQtaWNvbi1yaWdodCBwby1tdWx0aXNlbGVjdC1pbnB1dCBwby1jbGlja2FibGVcIlxuICAgICAgW2NsYXNzLnBvLW11bHRpc2VsZWN0LWlucHV0LWF1dG9dPVwiYXV0b0hlaWdodFwiXG4gICAgICBbY2xhc3MucG8tbXVsdGlzZWxlY3QtaW5wdXQtc3RhdGljXT1cIiFhdXRvSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5wby1tdWx0aXNlbGVjdC1pbnB1dC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duVmlzaWJpbGl0eSgpXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cInBsYWNlaG9sZGVyICYmICF2aXNpYmxlRGlzY2xhaW1lcnM/Lmxlbmd0aFwiIGNsYXNzPVwicG8tbXVsdGlzZWxlY3QtaW5wdXQtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHBvLWRpc2NsYWltZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRpc2NsYWltZXIgb2YgdmlzaWJsZURpc2NsYWltZXJzXCJcbiAgICAgICAgY2xhc3M9XCJwby1tdWx0aXNlbGVjdC1pbnB1dC1kaXNjbGFpbWVyXCJcbiAgICAgICAgW3AtbGFiZWxdPVwiZGlzY2xhaW1lci5sYWJlbFwiXG4gICAgICAgIFtwLXZhbHVlXT1cImRpc2NsYWltZXIudmFsdWVcIlxuICAgICAgICBbcC1oaWRlLWNsb3NlXT1cImRpc2NsYWltZXIudmFsdWUgPT09ICcnIHx8IGRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJkaXNjbGFpbWVyLnZhbHVlID09PSAnJyAmJiAhZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKGRpc2NsYWltZXIudmFsdWUgPT09ICcnKVwiXG4gICAgICAgIChwLWNsb3NlLWFjdGlvbik9XCJjbG9zZURpc2NsYWltZXIoZGlzY2xhaW1lci52YWx1ZSlcIlxuICAgICAgPlxuICAgICAgPC9wby1kaXNjbGFpbWVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAjaWNvbkVsZW1lbnRcbiAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiB7eyBkcm9wZG93bkljb24gfX1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ3BvLWZpZWxkLWljb24tZGlzYWJsZWQnIDogJydcIlxuICAgICAgICA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8cG8tbXVsdGlzZWxlY3QtZHJvcGRvd25cbiAgICAjZHJvcGRvd25FbGVtZW50XG4gICAgW3Atc2VhcmNoaW5nXT1cImlzU2VydmVyU2VhcmNoaW5nXCJcbiAgICBbcC1oaWRlLXNlYXJjaF09XCJoaWRlU2VhcmNoXCJcbiAgICBbcC1oaWRlLXNlbGVjdC1hbGxdPVwiaGlkZVNlbGVjdEFsbFwiXG4gICAgW3AtbGl0ZXJhbHNdPVwibGl0ZXJhbHNcIlxuICAgIFtwLW9wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgW3AtdmlzaWJsZS1vcHRpb25zXT1cInZpc2libGVPcHRpb25zRHJvcGRvd25cIlxuICAgIFtwLXNlbGVjdGVkLW9wdGlvbnNdPVwic2VsZWN0ZWRPcHRpb25zXCJcbiAgICBbcC1wbGFjZWhvbGRlci1zZWFyY2hdPVwicGxhY2Vob2xkZXJTZWFyY2hcIlxuICAgIChwLWNoYW5nZSk9XCJjaGFuZ2VJdGVtcygkZXZlbnQpXCJcbiAgICAocC1jaGFuZ2Utc2VhcmNoKT1cImNoYW5nZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAocC1jbG9zZS1kcm9wZG93bik9XCJjb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KGZhbHNlKVwiXG4gID5cbiAgPC9wby1tdWx0aXNlbGVjdC1kcm9wZG93bj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT48L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsVUFBVSxFQUtWLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7OztJQ1Z2RSxnQ0FBK0c7SUFDN0csWUFDRjtJQUFBLGlCQUFPOzs7SUFETCxlQUNGO0lBREUsbURBQ0Y7Ozs7SUFFQSx5Q0FTQztJQUZDLHFQQUFTLGVBQUEseURBQXdDLEVBQUUsQ0FBQyxDQUFBLElBQUMsMFBBQ25DLGVB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Q0FBQTtRQUo5QyxnREFBOEI7UUFDOUIsd0NBQTBCLHlCQUFBO1FBV25CLGVBQTZEO1FBQTdELG1JQUE2RDtRQUszQyxlQUFxQjtRQUFyQixnREFBcUI7UUFjMUMsZUFBNEc7UUFBNUcseUlBQTRHO1FBQzVHLHNFQUFvRDtRQVMxRCxlQUFpQztRQUFqQyxtREFBaUMsaUNBQUEsd0NBQUEsNEJBQUEsMEJBQUEsaURBQUEsMkNBQUEsK0NBQUEsaUNBQUEsaUNBQUE7O3VGRCtDeEIsc0JBQXNCO2NBTmxDLFNBQVM7MkJBQ0UsZ0JBQWdCLG1CQUVULHVCQUF1QixDQUFDLE1BQU0sYUFDL0MsU0FBUztxT0FLeUQsZUFBZTtrQkFBaEYsU0FBUzttQkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNoQixRQUFRO2tCQUF2RCxTQUFTO21CQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNnQixXQUFXO2tCQUF4RSxTQUFTO21CQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNHLFlBQVk7a0JBQTFFLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4vLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL3NlcnZpY2VzL3BvLWNvbnRyb2wtcG9zaXRpb24vcG8tY29udHJvbC1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvS2V5Q29kZUVudW0gfSBmcm9tICcuLy4uLy4uLy4uL2VudW1zL3BvLWtleS1jb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEJhc2VDb21wb25lbnQgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWZpbHRlci5zZXJ2aWNlJztcblxuY29uc3QgcG9NdWx0aXNlbGVjdENvbnRhaW5lck9mZnNldCA9IDg7XG5jb25zdCBwb011bHRpc2VsZWN0Q29udGFpbmVyUG9zaXRpb25EZWZhdWx0ID0gJ2JvdHRvbSc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlLFxuICBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb011bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb011bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XG5dO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb011bHRpc2VsZWN0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWJhc2ljXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtYmFzaWMvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWxhYnNcIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LXZhY2F0aW9uXCIgdGl0bGU9XCJQTyBNdWx0aXNlbGVjdCAtIFZhY2F0aW9uXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24vc2FtcGxlLXBvLW11bHRpc2VsZWN0LXZhY2F0aW9uLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC12YWNhdGlvbi9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBWYWNhdGlvbiBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtdmFjYXRpb24tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tdWx0aXNlbGVjdC1oZXJvZXNcIiB0aXRsZT1cIlBPIE11bHRpc2VsZWN0IC0gSGVyb2VzIC0gdXNpbmcgQVBJXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW11bHRpc2VsZWN0LWhlcm9lcy9zYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtaGVyb2VzL3NhbXBsZS1wby1tdWx0aXNlbGVjdC1oZXJvZXMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW11bHRpc2VsZWN0LWFueS1hcnJheVwiIHRpdGxlPVwiUE8gTXVsdGlzZWxlY3QgLSBBcnJheSBBbnlcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tdWx0aXNlbGVjdC1hbnktYXJyYXkvc2FtcGxlLXBvLW11bHRpc2VsZWN0LWFueS1hcnJheS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbXVsdGlzZWxlY3QtYW55LWFycmF5L3NhbXBsZS1wby1tdWx0aXNlbGVjdC1hbnktYXJyYXkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLW11bHRpc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyc1xufSlcbmV4cG9ydCBjbGFzcyBQb011bHRpc2VsZWN0Q29tcG9uZW50XG4gIGV4dGVuZHMgUG9NdWx0aXNlbGVjdEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBEb0NoZWNrLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGRyb3Bkb3duRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25FbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSkgZHJvcGRvd247XG4gIEBWaWV3Q2hpbGQoJ2ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaWNvbkVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICBkaXNjbGFpbWVyT2Zmc2V0ID0gMDtcbiAgZHJvcGRvd25JY29uOiBzdHJpbmcgPSAncG8taWNvbi1hcnJvdy1kb3duJztcbiAgZHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGluaXRpYWxpemVkID0gZmFsc2U7XG4gIHBvc2l0aW9uRGlzY2xhaW1lckV4dHJhO1xuICB0aW1lb3V0UmVzaXplO1xuICB2aXNpYmxlRWxlbWVudCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXM6IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIGNhY2hlT3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjb250cm9sUG9zaXRpb246IFBvQ29udHJvbFBvc2l0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgZGVmYXVsdFNlcnZpY2U6IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlLFxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIobGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSAmJiAoY2hhbmdlcy5maWx0ZXJTZXJ2aWNlIHx8IGNoYW5nZXMuZmllbGRWYWx1ZSB8fCBjaGFuZ2VzLmZpZWxkTGFiZWwpKSB7XG4gICAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgLy8gUGVybWl0ZSBxdWUgb3MgZGlzY2xhaW1lcnMgc2VqYW0gY2FsY3VsYWRvcyBuYSBwcmltZWlyYSB2ZXogcXVlIG8gY29tcG9uZW50ZSB0b3JuYS1zZSB2aXPDrXZlbCxcbiAgICAvLyBldml0YW5kbyBjb20gaXNzbywgcHJvYmxlbWFzIGNvbSBUYWJzIG91IERpdnMgcXVlIGluaWNpZW0gZXNjb25kaWRhcy5cbiAgICBpZiAoKGlucHV0V2lkdGggJiYgIXRoaXMudmlzaWJsZUVsZW1lbnQgJiYgdGhpcy5pbml0aWFsaXplZCkgfHwgKGlucHV0V2lkdGggJiYgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcykpIHtcbiAgICAgIHRoaXMuZGVib3VuY2VSZXNpemUoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5nZXRPYmplY3RzQnlWYWx1ZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5maWx0ZXJTdWJqZWN0Py51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb011bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuICAgKlxuICAgKiAuLi5cbiAgICpcbiAgICogQFZpZXdDaGlsZChQb011bHRpc2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtdWx0aXNlbGVjdDogUG9NdWx0aXNlbGVjdENvbXBvbmVudDtcbiAgICpcbiAgICogZm9jdXNNdWx0aXNlbGVjdCgpIHtcbiAgICogICB0aGlzLm11bHRpc2VsZWN0LmZvY3VzKCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnB1dFdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnBvLWlucHV0Jykub2Zmc2V0V2lkdGggLSA0MDtcbiAgfVxuXG4gIGdldERpc2NsYWltZXJzV2lkdGgoKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lcnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncG8tZGlzY2xhaW1lcicpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKGRpc2NsYWltZXJzKS5tYXAoZGlzY2xhaW1lciA9PiBkaXNjbGFpbWVyWydvZmZzZXRXaWR0aCddKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZVZpc2libGVJdGVtcygpIHtcbiAgICBjb25zdCBkaXNjbGFpbWVyc1dpZHRoID0gdGhpcy5nZXREaXNjbGFpbWVyc1dpZHRoKCk7XG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuZ2V0SW5wdXRXaWR0aCgpO1xuICAgIGNvbnN0IGV4dHJhRGlzY2xhaW1lclNpemUgPSAzODtcbiAgICBjb25zdCBkaXNjbGFpbWVyc1Zpc2libGUgPSBkaXNjbGFpbWVyc1dpZHRoWzBdO1xuXG4gICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMgPSBbXTtcblxuICAgIGlmIChpbnB1dFdpZHRoID4gMCkge1xuICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc3VtICs9IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzLnB1c2godGhpcy5zZWxlY3RlZE9wdGlvbnNbaV0pO1xuXG4gICAgICAgIGlmIChzdW0gPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgc3VtIC09IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXNjbGFpbWVyc1Zpc2libGUgfHwgIXRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBpZiAoaSA9PT0gdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdW0gKyBleHRyYURpc2NsYWltZXJTaXplID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzLnNwbGljZSgtMiwgMik7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoICsgMSAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMucHVzaCh7IFt0aGlzLmZpZWxkVmFsdWVdOiAnJywgW3RoaXMuZmllbGRMYWJlbF06IGxhYmVsIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzLnNwbGljZSgtMSwgMSk7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoIC0gaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycy5wdXNoKHsgW3RoaXMuZmllbGRWYWx1ZV06ICcnLCBbdGhpcy5maWVsZExhYmVsXTogbGFiZWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNoYW5nZUl0ZW1zKGNoYW5nZWRJdGVtcykge1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb25zKGNoYW5nZWRJdGVtcyk7XG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuXG4gICAgaWYgKHRoaXMuYXV0b0hlaWdodCAmJiB0aGlzLmRyb3Bkb3duT3Blbikge1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmlzaWJsZUl0ZW1zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9ucykge1xuICAgICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMgPSBbXS5jb25jYXQodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIH1cblxuICAgIHRoaXMuZGVib3VuY2VSZXNpemUoKTtcblxuICAgIC8vIHF1YW5kbyBlc3RpdmVyIGRlbnRybyBkZSBtb2RhbFxuICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkge1xuICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZGVib3VuY2VSZXNpemUoKSB7XG4gICAgaWYgKCF0aGlzLmF1dG9IZWlnaHQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZXNpemUpO1xuICAgICAgdGhpcy50aW1lb3V0UmVzaXplID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQ/LigpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50PzogYW55KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0uYXJyb3dVcCB8fCBldmVudC5rZXlDb2RlID09PSBQb0tleUNvZGVFbnVtLmFycm93RG93bikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS50YWIpIHtcbiAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5hcHBseUZpbHRlckluRmlyc3RDbGljaygpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSghdGhpcy5kcm9wZG93bk9wZW4pO1xuICB9XG5cbiAgb3BlbkRyb3Bkb3duKHRvT3Blbikge1xuICAgIGlmICh0b09wZW4gJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBjb250cm9sRHJvcGRvd25WaXNpYmlsaXR5KHRvT3BlbjogYm9vbGVhbikge1xuICAgIHRvT3BlbiA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25zICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICBvcHRpb24gPT4gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0gPT09IHRoaXMuc2VsZWN0ZWRPcHRpb25zWzBdW3RoaXMuZmllbGRWYWx1ZV1cbiAgICAgICk7XG4gICAgICB0aGlzLmRyb3Bkb3duLnNjcm9sbFRvKGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBzZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKG9wdGlvbnMpIHtcbiAgICB0aGlzLnZpc2libGVPcHRpb25zRHJvcGRvd24gPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjaGFuZ2VTZWFyY2goZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnRbdGhpcy5maWVsZFZhbHVlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyU3ViamVjdC5uZXh0KGV2ZW50W3RoaXMuZmllbGRWYWx1ZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWFyY2hCeUxhYmVsKGV2ZW50W3RoaXMuZmllbGRWYWx1ZV0sIHRoaXMub3B0aW9ucywgdGhpcy5maWx0ZXJNb2RlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gdGltZW91dCBuZWNlc3PDoXJpbyBwYXJhIHJlcG9zaWNpb25hciBjb3JyZXRhbWVudGUgcXVhbmRvIGRyb3Bkb3duIGVzdGl2ZXIgcHJhIGNpbWEgZG8gaW5wdXQgZSByZWFsaXphciBidXNjYSBubyBpbnB1dFxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpKTtcbiAgfVxuXG4gIGNsb3NlRGlzY2xhaW1lcih2YWx1ZSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb25bdGhpcy5maWVsZFZhbHVlXSA9PT0gdmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgfVxuXG4gIHdhc0NsaWNrZWRPblRvZ2dsZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuICYmXG4gICAgICAhdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5pY29uRWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLmRyb3Bkb3duRWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICApIHtcbiAgICAgIHRoaXMuY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlGaWx0ZXIodmFsdWU6IHN0cmluZyA9ICcnKTogT2JzZXJ2YWJsZTxBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55Pj4ge1xuICAgIGNvbnN0IHBhcmFtID0geyBwcm9wZXJ0eTogdGhpcy5maWVsZExhYmVsLCB2YWx1ZTogdmFsdWUgfTtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEZpbHRlcmVkRGF0YShwYXJhbSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgdGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgfSksXG4gICAgICB0YXAoKG9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0T3B0aW9uc0J5QXBwbHlGaWx0ZXIob3B0aW9ucyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RmlsdGVySW5GaXJzdENsaWNrKCkge1xuICAgIGlmICh0aGlzLmlzRmlyc3RGaWx0ZXIpIHtcbiAgICAgIHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSB0cnVlO1xuXG4gICAgICAvLyBuZWNlc3NhcmlvIGVudmlhciB1bSBvYmpldG8gc3RyaW5nIHZhemlhIHBhcmEgcmVmYXplciBhIGJ1c2NhLCBxdWFuZG8gYWx0ZXJhciBmaWx0ZXJTZXJ2aWNlLCBmaWVsZFZhbHVlIGUgZmllbGRMYWJlbFxuICAgICAgLy8gcG9pcyB0ZW1vcyBvIGRpc3RpbmN0VW50aWxDaGFuZ2Ugbm8gcGlwZSBkbyBmaWx0ZXJTdWJqZWN0XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXctd3JhcHBlcnMgKi9cbiAgICAgIHRoaXMuZmlsdGVyU3ViamVjdC5uZXh0KG5ldyBTdHJpbmcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFsuLi50aGlzLmNhY2hlT3B0aW9uc107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcHRpb25zQnlBcHBseUZpbHRlcihpdGVtczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4pIHtcbiAgICBpZiAodGhpcy5pc0ZpcnN0RmlsdGVyKSB7XG4gICAgICB0aGlzLmNhY2hlT3B0aW9ucyA9IFsuLi5pdGVtc107XG4gICAgICB0aGlzLmlzRmlyc3RGaWx0ZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBbLi4uaXRlbXNdO1xuICAgIHRoaXMuc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bih0aGlzLm9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RDb250YWluZXJQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5hZGp1c3RQb3NpdGlvbihwb011bHRpc2VsZWN0Q29udGFpbmVyUG9zaXRpb25EZWZhdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkljb24gPSAncG8taWNvbi1hcnJvdy1kb3duJztcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5kcm9wZG93bi5jb250cm9sVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlT3B0aW9uc0Ryb3Bkb3duKHRoaXMub3B0aW9ucyk7XG5cbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tPdXRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy53YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcblxuICAgICAgaXNNb2JpbGUoKSA/IHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKSA6IHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICB9O1xuXG4gIHByaXZhdGUgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duSWNvbiA9ICdwby1pY29uLWFycm93LXVwJztcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IHRydWU7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmNvbnRyb2xWaXNpYmlsaXR5KHRydWUpO1xuICAgIHRoaXMuc2V0VmlzaWJsZU9wdGlvbnNEcm9wZG93bih0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbnMoKTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2V0UG9zaXRpb25Ecm9wZG93bigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xpY2tPdXRMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja091dExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UG9zaXRpb25Ecm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5zZXRFbGVtZW50cyhcbiAgICAgIHRoaXMuZHJvcGRvd24uY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICBwb011bHRpc2VsZWN0Q29udGFpbmVyT2Zmc2V0LFxuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQsXG4gICAgICBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyIFtwLWxhYmVsXT1cImxhYmVsXCIgW3AtaGVscF09XCJoZWxwXCIgW3Atb3B0aW9uYWxdPVwiIXJlcXVpcmVkICYmIG9wdGlvbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiIFtjbGFzcy5wby1tdWx0aXNlbGVjdC1zaG93XT1cImRyb3Bkb3duT3BlblwiPlxuICAgIDxkaXZcbiAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICAgIGNsYXNzPVwicG8taW5wdXQgcG8taW5wdXQtaWNvbi1yaWdodCBwby1tdWx0aXNlbGVjdC1pbnB1dCBwby1jbGlja2FibGVcIlxuICAgICAgW2NsYXNzLnBvLW11bHRpc2VsZWN0LWlucHV0LWF1dG9dPVwiYXV0b0hlaWdodFwiXG4gICAgICBbY2xhc3MucG8tbXVsdGlzZWxlY3QtaW5wdXQtc3RhdGljXT1cIiFhdXRvSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5wby1tdWx0aXNlbGVjdC1pbnB1dC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlRHJvcGRvd25WaXNpYmlsaXR5KClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duVmlzaWJpbGl0eSgpXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cInBsYWNlaG9sZGVyICYmICFkaXNhYmxlZCAmJiAhdmlzaWJsZURpc2NsYWltZXJzPy5sZW5ndGhcIiBjbGFzcz1cInBvLW11bHRpc2VsZWN0LWlucHV0LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxwby1kaXNjbGFpbWVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkaXNjbGFpbWVyIG9mIHZpc2libGVEaXNjbGFpbWVyc1wiXG4gICAgICAgIGNsYXNzPVwicG8tbXVsdGlzZWxlY3QtaW5wdXQtZGlzY2xhaW1lclwiXG4gICAgICAgIFtwLWxhYmVsXT1cImRpc2NsYWltZXJbZmllbGRMYWJlbF1cIlxuICAgICAgICBbcC12YWx1ZV09XCJkaXNjbGFpbWVyW2ZpZWxkVmFsdWVdXCJcbiAgICAgICAgW3AtaGlkZS1jbG9zZV09XCJkaXNjbGFpbWVyW2ZpZWxkVmFsdWVdID09PSAnJyB8fCBkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiZGlzY2xhaW1lcltmaWVsZFZhbHVlXSA9PT0gJycgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bihkaXNjbGFpbWVyW2ZpZWxkVmFsdWVdID09PSAnJylcIlxuICAgICAgICAocC1jbG9zZS1hY3Rpb24pPVwiY2xvc2VEaXNjbGFpbWVyKGRpc2NsYWltZXJbZmllbGRWYWx1ZV0pXCJcbiAgICAgID5cbiAgICAgIDwvcG8tZGlzY2xhaW1lcj5cblxuICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgI2ljb25FbGVtZW50XG4gICAgICAgICAgY2xhc3M9XCJwby1pY29uIHBvLWZpZWxkLWljb24ge3sgZHJvcGRvd25JY29uIH19IHt7IGRpc2FibGVkID8gJ3BvLWljb24taW5wdXQtZGlzYWJsZWQnIDogJ3BvLWljb24taW5wdXQnIH19XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdwby1maWVsZC1pY29uLWRpc2FibGVkJyA6ICcnXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHBvLW11bHRpc2VsZWN0LWRyb3Bkb3duXG4gICAgI2Ryb3Bkb3duRWxlbWVudFxuICAgIFtwLXNlYXJjaGluZ109XCJpc1NlcnZlclNlYXJjaGluZ1wiXG4gICAgW3AtaGlkZS1zZWFyY2hdPVwiaGlkZVNlYXJjaFwiXG4gICAgW3AtaGlkZS1zZWxlY3QtYWxsXT1cImhpZGVTZWxlY3RBbGxcIlxuICAgIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCJcbiAgICBbcC1vcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtwLXZpc2libGUtb3B0aW9uc109XCJ2aXNpYmxlT3B0aW9uc0Ryb3Bkb3duXCJcbiAgICBbcC1zZWxlY3RlZC1vcHRpb25zXT1cInNlbGVjdGVkT3B0aW9uc1wiXG4gICAgW3AtcGxhY2Vob2xkZXItc2VhcmNoXT1cInBsYWNlaG9sZGVyU2VhcmNoXCJcbiAgICBbcC1maWVsZC12YWx1ZV09XCJmaWVsZFZhbHVlXCJcbiAgICBbcC1maWVsZC1sYWJlbF09XCJmaWVsZExhYmVsXCJcbiAgICAocC1jaGFuZ2UpPVwiY2hhbmdlSXRlbXMoJGV2ZW50KVwiXG4gICAgKHAtY2hhbmdlLXNlYXJjaCk9XCJjaGFuZ2VTZWFyY2goJGV2ZW50KVwiXG4gICAgKHAtY2xvc2UtZHJvcGRvd24pPVwiY29udHJvbERyb3Bkb3duVmlzaWJpbGl0eShmYWxzZSlcIlxuICA+XG4gIDwvcG8tbXVsdGlzZWxlY3QtZHJvcGRvd24+XG5cbiAgPHBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+PC9wby1maWVsZC1jb250YWluZXItYm90dG9tPlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=
@@ -125,7 +125,7 @@ PoNumberComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoNumberC
125
125
  useExisting: forwardRef(() => PoNumberComponent),
126
126
  multi: true
127
127
  }
128
- ]), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 20, consts: [[3, "p-help", "p-label", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["type", "number", 1, "po-input", 3, "autocomplete", "disabled", "placeholder", "readonly", "required", "tabindex", "blur", "focus", "input", "keydown"], ["inp", ""], [1, "po-field-icon-container-right"], [3, "p-default-value", "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-error-pattern"], [1, "po-field-icon-container-left"], [1, "po-field-icon", 3, "p-icon"], [3, "p-default-value", "p-element-ref", "p-change-event"]], template: function PoNumberComponent_Template(rf, ctx) { if (rf & 1) {
128
+ ]), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 21, consts: [[3, "p-help", "p-label", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["type", "number", 1, "po-input", 3, "autocomplete", "disabled", "placeholder", "readonly", "required", "tabindex", "blur", "focus", "input", "keydown"], ["inp", ""], [1, "po-field-icon-container-right"], ["class", "po-icon-input", 3, "p-default-value", "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-error-pattern"], [1, "po-field-icon-container-left"], [1, "po-field-icon", "po-icon-input", 3, "p-icon"], [1, "po-icon-input", 3, "p-default-value", "p-element-ref", "p-change-event"]], template: function PoNumberComponent_Template(rf, ctx) { if (rf & 1) {
129
129
  i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1);
130
130
  i0.ɵɵtemplate(2, PoNumberComponent_div_2_Template, 2, 3, "div", 2);
131
131
  i0.ɵɵelementStart(3, "input", 3, 4);
@@ -142,8 +142,8 @@ PoNumberComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoNumberC
142
142
  i0.ɵɵproperty("ngIf", ctx.icon);
143
143
  i0.ɵɵadvance(1);
144
144
  i0.ɵɵclassProp("po-input-icon-left", ctx.icon)("po-input-icon-right", ctx.clean);
145
- i0.ɵɵproperty("autocomplete", ctx.autocomplete)("disabled", ctx.disabled)("placeholder", ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required)("tabindex", ctx.disabled ? -1 : 0);
146
- i0.ɵɵattribute("max", ctx.max)("min", ctx.min)("name", ctx.name)("step", ctx.step);
145
+ i0.ɵɵproperty("autocomplete", ctx.autocomplete)("disabled", ctx.disabled)("placeholder", ctx.disabled ? "" : ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required)("tabindex", ctx.disabled ? -1 : 0);
146
+ i0.ɵɵattribute("max", ctx.max)("min", ctx.min)("name", ctx.name)("step", ctx.step)("aria-label", ctx.label);
147
147
  i0.ɵɵadvance(3);
148
148
  i0.ɵɵproperty("ngIf", ctx.clean && !ctx.disabled && !ctx.readonly);
149
149
  i0.ɵɵadvance(1);
@@ -162,7 +162,7 @@ PoNumberComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoNumberC
162
162
  useExisting: forwardRef(() => PoNumberComponent),
163
163
  multi: true
164
164
  }
165
- ], template: "<po-field-container [p-help]=\"help\" [p-label]=\"label\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n <input\n #inp\n class=\"po-input\"\n type=\"number\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.name]=\"name\"\n [attr.step]=\"step\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [tabindex]=\"disabled ? -1 : 0\"\n (blur)=\"onBlur($event)\"\n (focus)=\"eventOnFocus($event)\"\n (input)=\"eventOnInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n *ngIf=\"clean && !disabled && !readonly\"\n [p-default-value]=\"null\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom [p-error-pattern]=\"getErrorPatternMessage()\"> </po-field-container-bottom>\n</po-field-container>\n" }]
165
+ ], template: "<po-field-container [p-help]=\"help\" [p-label]=\"label\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon po-icon-input\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n <input\n #inp\n class=\"po-input\"\n type=\"number\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.name]=\"name\"\n [attr.step]=\"step\"\n [attr.aria-label]=\"label\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [tabindex]=\"disabled ? -1 : 0\"\n (blur)=\"onBlur($event)\"\n (focus)=\"eventOnFocus($event)\"\n (input)=\"eventOnInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"po-icon-input\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-default-value]=\"null\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom [p-error-pattern]=\"getErrorPatternMessage()\"> </po-field-container-bottom>\n</po-field-container>\n" }]
166
166
  }], function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, { step: [{
167
167
  type: Input,
168
168
  args: ['p-step']
@@ -173,4 +173,4 @@ PoNumberComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoNumberC
173
173
  type: Input,
174
174
  args: ['p-max']
175
175
  }] }); })();
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1udW1iZXIvcG8tbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1udW1iZXIvcG8tbnVtYmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFxQix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7SUNIL0QsOEJBQXVEO0lBQ3JELDZCQUFtRztJQUNyRyxpQkFBTTs7O0lBRDJCLGVBQXlDO0lBQXpDLHlEQUF5QztJQUFDLG9DQUFlOzs7O0lBeUJ4RixvQ0FLQztJQURDLDZMQUFrQixlQUFBLG9CQUFhLENBQUEsSUFBQztJQUVsQyxpQkFBVzs7O0lBSlQsc0NBQXdCLGlDQUFBOztBRHZCaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFrQkgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHFCQUFxQjtJQWdDMUQsMEJBQTBCO0lBQzFCLFlBQVksRUFBYyxFQUFFLEVBQXFCO1FBQy9DLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFqQ2hCOzs7Ozs7OztXQVFHO1FBQ2MsU0FBSSxHQUFZLEdBQUcsQ0FBQztJQXlCckMsQ0FBQztJQWxCRCxJQUFv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RXpCLGVBQVU7UUFBViwrQkFBVTtRQVlkLGVBQWlDO1FBQWpDLDhDQUFpQyxrQ0FBQTtRQURqQywrQ0FBNkIsMEJBQUEsZ0NBQUEsMEJBQUEsMEJBQUEsbUNBQUE7UUFKN0IsOEJBQWdCLGdCQUFBLGtCQUFBLGtCQUFBO1FBb0JiLGVBQXFDO1FBQXJDLGtFQUFxQztRQVNqQixlQUE0QztRQUE1Qyw4REFBNEM7O3VGRFk1RCxpQkFBaUI7Y0FqQjdCLFNBQVM7MkJBQ0UsV0FBVyxtQkFFSix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDO3dCQUNoRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7d0JBQ2hELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGOzZGQVlnQixJQUFJO2tCQUFwQixLQUFLO21CQUFDLFFBQVE7WUFPSyxNQUFNO2tCQUF6QixLQUFLO21CQUFDLE9BQU87WUFVTSxNQUFNO2tCQUF6QixLQUFLO21CQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IG1pbkZhaWxlZCwgbWF4RmFpbGVkIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5cbmltcG9ydCB7IFBvTnVtYmVyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbnVtYmVyLWJhc2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9JbnB1dEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGBwby1udW1iZXJgIMOpIHVtIGlucHV0IGVzcGVjw61maWNvIHBhcmEgcmVjZWJlciBhcGVuYXMgbsO6bWVyb3MuXG4gKiDDiSBwb3Nzw612ZWwgY29uZmlndXJhciB1bSB2YWxvciBtw61uaW1vLCBtw6F4aW1vIGUgdW0gc3RlcCBjb20gcC1taW4sIHAtbWF4IGUgcC1zdGVwLFxuICogcmVzcGVjdGl2YW1lbnRlLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW51bWJlci1iYXNpY1wiIHRpdGxlPVwiUE8gTnVtYmVyIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1udW1iZXItYmFzaWMvc2FtcGxlLXBvLW51bWJlci1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1udW1iZXItYmFzaWMvc2FtcGxlLXBvLW51bWJlci1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1udW1iZXItbGFic1wiIHRpdGxlPVwiUE8gTnVtYmVyIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW51bWJlci1sYWJzL3NhbXBsZS1wby1udW1iZXItbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1udW1iZXItbGFicy9zYW1wbGUtcG8tbnVtYmVyLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbnVtYmVyLWNhbGN1bGF0ZVwiIHRpdGxlPVwiUE8gTnVtYmVyIC0gQ2FsY3VsYXRlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1udW1iZXItY2FsY3VsYXRlL3NhbXBsZS1wby1udW1iZXItY2FsY3VsYXRlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW51bWJlci1jYWxjdWxhdGUvc2FtcGxlLXBvLW51bWJlci1jYWxjdWxhdGUuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbnVtYmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLW51bWJlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvTnVtYmVyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9OdW1iZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9OdW1iZXJDb21wb25lbnQgZXh0ZW5kcyBQb051bWJlckJhc2VDb21wb25lbnQge1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbnRlcnZhbG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIEBJbnB1dCgncC1zdGVwJykgc3RlcD86IHN0cmluZyA9ICcxJztcblxuICAvKiogVmFsb3IgbcOtbmltby5cbiAgICpcbiAgICogPiBRdWFuZG8gbyB2YWxvciBtw61uaW1vIGZvciB1bSBuw7ptZXJvIGNvbSBkZWNpbWFpcyBhY29uc2VsaGEtc2UgdXRpbGl6YXIganVudG8gZGEgcHJvcHJpZWRhZGUgYHAtc3RlcGAgdGFtYsOpbSBwYXNzYW5kbyBhIGVsYSB1bSB2YWxvciBkZWNpbWFsLlxuICAgKi9cbiAgbWluPzogbnVtYmVyO1xuICBASW5wdXQoJ3AtbWluJykgc2V0IHNldE1pbihtaW46IG51bWJlcikge1xuICAgIHRoaXMubWluID0gIWlzTmFOKG1pbikgPyBtaW4gOiB1bmRlZmluZWQ7XG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICAvKiogVmFsb3IgbcOheGltby5cbiAgICpcbiAgICogPiBRdWFuZG8gbyB2YWxvciBtw6F4aW1vIGZvciB1bSBuw7ptZXJvIGNvbSBkZWNpbWFpcyBhY29uc2VsaGEtc2UgdXRpbGl6YXIganVudG8gZGEgcHJvcHJpZWRhZGUgYHAtc3RlcGAgdGFtYsOpbSBwYXNzYW5kbyBhIGVsYSB1bSB2YWxvciBkZWNpbWFsLlxuICAgKi9cbiAgbWF4PzogbnVtYmVyO1xuICBASW5wdXQoJ3AtbWF4Jykgc2V0IHNldE1heChtYXg6IG51bWJlcikge1xuICAgIHRoaXMubWF4ID0gIWlzTmFOKG1heCkgPyBtYXggOiB1bmRlZmluZWQ7XG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZiwgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoZWwsIGNkKTtcbiAgfVxuXG4gIGV4dHJhVmFsaWRhdGlvbihhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIC8vIFZlcmlmaWNhIHNlIGrDoSBwb3NzdWkgYWxndW0gZXJyb3IgcGF0dGVybiBwYWRyw6NvLlxuICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gdGhpcy5lcnJvclBhdHRlcm4gIT09ICdWYWxvciBJbnbDoWxpZG8nID8gdGhpcy5lcnJvclBhdHRlcm4gOiAnJztcblxuICAgIGlmIChtaW5GYWlsZWQodGhpcy5taW4sIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1pbjoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtYXhGYWlsZWQodGhpcy5tYXgsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmludmFsaWRJbnB1dFZhbHVlT25CbHVyKSB7XG4gICAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuIHx8ICdWYWxvciBJbnbDoWxpZG8nO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBudW1iZXI6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldEVycm9yUGF0dGVybk1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnJyAmJiB0aGlzLmNvbnRhaW5zSW52YWxpZENsYXNzKCkgPyB0aGlzLmVycm9yUGF0dGVybiA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluc0ludmFsaWRDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWludmFsaWQnKSAmJlxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1kaXJ0eScpICYmXG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSAnJykgfHxcbiAgICAgIHRoaXMuaW52YWxpZElucHV0VmFsdWVPbkJsdXJcbiAgICApO1xuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyIFtwLWhlbHBdPVwiaGVscFwiIFtwLWxhYmVsXT1cImxhYmVsXCIgW3Atb3B0aW9uYWxdPVwiIXJlcXVpcmVkICYmIG9wdGlvbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgICA8cG8taWNvbiBjbGFzcz1cInBvLWZpZWxkLWljb25cIiBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtwLWljb25dPVwiaWNvblwiPjwvcG8taWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1sZWZ0XT1cImljb25cIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tcmlnaHRdPVwiY2xlYW5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwiZXZlbnRPbkZvY3VzKCRldmVudClcIlxuICAgICAgKGlucHV0KT1cImV2ZW50T25JbnB1dCgkZXZlbnQpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8cG8tY2xlYW5cbiAgICAgICAgKm5nSWY9XCJjbGVhbiAmJiAhZGlzYWJsZWQgJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgW3AtZGVmYXVsdC12YWx1ZV09XCJudWxsXCJcbiAgICAgICAgW3AtZWxlbWVudC1yZWZdPVwiaW5wdXRFbFwiXG4gICAgICAgIChwLWNoYW5nZS1ldmVudCk9XCJjbGVhcigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tY2xlYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxwby1maWVsZC1jb250YWluZXItYm90dG9tIFtwLWVycm9yLXBhdHRlcm5dPVwiZ2V0RXJyb3JQYXR0ZXJuTWVzc2FnZSgpXCI+IDwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1udW1iZXIvcG8tbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1udW1iZXIvcG8tbnVtYmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFxQix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7SUNIL0QsOEJBQXVEO0lBQ3JELDZCQUFpSDtJQUNuSCxpQkFBTTs7O0lBRHlDLGVBQXlDO0lBQXpDLHlEQUF5QztJQUFDLG9DQUFlOzs7O0lBMEJ0RyxvQ0FNQztJQURDLDZMQUFrQixlQUFBLG9CQUFhLENBQUEsSUFBQztJQUVsQyxpQkFBVzs7O0lBSlQsc0NBQXdCLGlDQUFBOztBRHpCaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFrQkgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHFCQUFxQjtJQWdDMUQsMEJBQTBCO0lBQzFCLFlBQVksRUFBYyxFQUFFLEVBQXFCO1FBQy9DLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFqQ2hCOzs7Ozs7OztXQVFHO1FBQ2MsU0FBSSxHQUFZLEdBQUcsQ0FBQztJQXlCckMsQ0FBQztJQWxCRCxJQUFv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RXpCLGVBQVU7UUFBViwrQkFBVTtRQWFkLGVBQWlDO1FBQWpDLDhDQUFpQyxrQ0FBQTtRQURqQywrQ0FBNkIsMEJBQUEsb0RBQUEsMEJBQUEsMEJBQUEsbUNBQUE7UUFMN0IsOEJBQWdCLGdCQUFBLGtCQUFBLGtCQUFBLHlCQUFBO1FBc0JiLGVBQXFDO1FBQXJDLGtFQUFxQztRQVNqQixlQUE0QztRQUE1Qyw4REFBNEM7O3VGRFU1RCxpQkFBaUI7Y0FqQjdCLFNBQVM7MkJBQ0UsV0FBVyxtQkFFSix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDO3dCQUNoRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7d0JBQ2hELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGOzZGQVlnQixJQUFJO2tCQUFwQixLQUFLO21CQUFDLFFBQVE7WUFPSyxNQUFNO2tCQUF6QixLQUFLO21CQUFDLE9BQU87WUFVTSxNQUFNO2tCQUF6QixLQUFLO21CQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IG1pbkZhaWxlZCwgbWF4RmFpbGVkIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5cbmltcG9ydCB7IFBvTnVtYmVyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbnVtYmVyLWJhc2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9JbnB1dEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGBwby1udW1iZXJgIMOpIHVtIGlucHV0IGVzcGVjw61maWNvIHBhcmEgcmVjZWJlciBhcGVuYXMgbsO6bWVyb3MuXG4gKiDDiSBwb3Nzw612ZWwgY29uZmlndXJhciB1bSB2YWxvciBtw61uaW1vLCBtw6F4aW1vIGUgdW0gc3RlcCBjb20gcC1taW4sIHAtbWF4IGUgcC1zdGVwLFxuICogcmVzcGVjdGl2YW1lbnRlLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW51bWJlci1iYXNpY1wiIHRpdGxlPVwiUE8gTnVtYmVyIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1udW1iZXItYmFzaWMvc2FtcGxlLXBvLW51bWJlci1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1udW1iZXItYmFzaWMvc2FtcGxlLXBvLW51bWJlci1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1udW1iZXItbGFic1wiIHRpdGxlPVwiUE8gTnVtYmVyIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW51bWJlci1sYWJzL3NhbXBsZS1wby1udW1iZXItbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1udW1iZXItbGFicy9zYW1wbGUtcG8tbnVtYmVyLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbnVtYmVyLWNhbGN1bGF0ZVwiIHRpdGxlPVwiUE8gTnVtYmVyIC0gQ2FsY3VsYXRlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1udW1iZXItY2FsY3VsYXRlL3NhbXBsZS1wby1udW1iZXItY2FsY3VsYXRlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW51bWJlci1jYWxjdWxhdGUvc2FtcGxlLXBvLW51bWJlci1jYWxjdWxhdGUuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbnVtYmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLW51bWJlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvTnVtYmVyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9OdW1iZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9OdW1iZXJDb21wb25lbnQgZXh0ZW5kcyBQb051bWJlckJhc2VDb21wb25lbnQge1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbnRlcnZhbG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIEBJbnB1dCgncC1zdGVwJykgc3RlcD86IHN0cmluZyA9ICcxJztcblxuICAvKiogVmFsb3IgbcOtbmltby5cbiAgICpcbiAgICogPiBRdWFuZG8gbyB2YWxvciBtw61uaW1vIGZvciB1bSBuw7ptZXJvIGNvbSBkZWNpbWFpcyBhY29uc2VsaGEtc2UgdXRpbGl6YXIganVudG8gZGEgcHJvcHJpZWRhZGUgYHAtc3RlcGAgdGFtYsOpbSBwYXNzYW5kbyBhIGVsYSB1bSB2YWxvciBkZWNpbWFsLlxuICAgKi9cbiAgbWluPzogbnVtYmVyO1xuICBASW5wdXQoJ3AtbWluJykgc2V0IHNldE1pbihtaW46IG51bWJlcikge1xuICAgIHRoaXMubWluID0gIWlzTmFOKG1pbikgPyBtaW4gOiB1bmRlZmluZWQ7XG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICAvKiogVmFsb3IgbcOheGltby5cbiAgICpcbiAgICogPiBRdWFuZG8gbyB2YWxvciBtw6F4aW1vIGZvciB1bSBuw7ptZXJvIGNvbSBkZWNpbWFpcyBhY29uc2VsaGEtc2UgdXRpbGl6YXIganVudG8gZGEgcHJvcHJpZWRhZGUgYHAtc3RlcGAgdGFtYsOpbSBwYXNzYW5kbyBhIGVsYSB1bSB2YWxvciBkZWNpbWFsLlxuICAgKi9cbiAgbWF4PzogbnVtYmVyO1xuICBASW5wdXQoJ3AtbWF4Jykgc2V0IHNldE1heChtYXg6IG51bWJlcikge1xuICAgIHRoaXMubWF4ID0gIWlzTmFOKG1heCkgPyBtYXggOiB1bmRlZmluZWQ7XG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZiwgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoZWwsIGNkKTtcbiAgfVxuXG4gIGV4dHJhVmFsaWRhdGlvbihhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIC8vIFZlcmlmaWNhIHNlIGrDoSBwb3NzdWkgYWxndW0gZXJyb3IgcGF0dGVybiBwYWRyw6NvLlxuICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gdGhpcy5lcnJvclBhdHRlcm4gIT09ICdWYWxvciBJbnbDoWxpZG8nID8gdGhpcy5lcnJvclBhdHRlcm4gOiAnJztcblxuICAgIGlmIChtaW5GYWlsZWQodGhpcy5taW4sIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1pbjoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtYXhGYWlsZWQodGhpcy5tYXgsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmludmFsaWRJbnB1dFZhbHVlT25CbHVyKSB7XG4gICAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuIHx8ICdWYWxvciBJbnbDoWxpZG8nO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBudW1iZXI6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldEVycm9yUGF0dGVybk1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnJyAmJiB0aGlzLmNvbnRhaW5zSW52YWxpZENsYXNzKCkgPyB0aGlzLmVycm9yUGF0dGVybiA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluc0ludmFsaWRDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWludmFsaWQnKSAmJlxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1kaXJ0eScpICYmXG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSAnJykgfHxcbiAgICAgIHRoaXMuaW52YWxpZElucHV0VmFsdWVPbkJsdXJcbiAgICApO1xuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyIFtwLWhlbHBdPVwiaGVscFwiIFtwLWxhYmVsXT1cImxhYmVsXCIgW3Atb3B0aW9uYWxdPVwiIXJlcXVpcmVkICYmIG9wdGlvbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgICA8cG8taWNvbiBjbGFzcz1cInBvLWZpZWxkLWljb24gcG8taWNvbi1pbnB1dFwiIFtjbGFzcy5wby1maWVsZC1pY29uLWRpc2FibGVkXT1cImRpc2FibGVkXCIgW3AtaWNvbl09XCJpY29uXCI+PC9wby1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxpbnB1dFxuICAgICAgI2lucFxuICAgICAgY2xhc3M9XCJwby1pbnB1dFwiXG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgW2F0dHIuc3RlcF09XCJzdGVwXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tbGVmdF09XCJpY29uXCJcbiAgICAgIFtjbGFzcy5wby1pbnB1dC1pY29uLXJpZ2h0XT1cImNsZWFuXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW3RhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJldmVudE9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoaW5wdXQpPVwiZXZlbnRPbklucHV0KCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgIDxwby1jbGVhblxuICAgICAgICBjbGFzcz1cInBvLWljb24taW5wdXRcIlxuICAgICAgICAqbmdJZj1cImNsZWFuICYmICFkaXNhYmxlZCAmJiAhcmVhZG9ubHlcIlxuICAgICAgICBbcC1kZWZhdWx0LXZhbHVlXT1cIm51bGxcIlxuICAgICAgICBbcC1lbGVtZW50LXJlZl09XCJpbnB1dEVsXCJcbiAgICAgICAgKHAtY2hhbmdlLWV2ZW50KT1cImNsZWFyKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9wby1jbGVhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gW3AtZXJyb3ItcGF0dGVybl09XCJnZXRFcnJvclBhdHRlcm5NZXNzYWdlKClcIj4gPC9wby1maWVsZC1jb250YWluZXItYm90dG9tPlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=