@ecodev/natural 42.4.2 → 44.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/esm2020/lib/classes/abstract-controller.mjs +3 -3
  2. package/esm2020/lib/classes/abstract-detail.mjs +6 -6
  3. package/esm2020/lib/classes/abstract-editable-list.mjs +7 -7
  4. package/esm2020/lib/classes/abstract-list.mjs +3 -3
  5. package/esm2020/lib/classes/abstract-navigable-list.mjs +3 -3
  6. package/esm2020/lib/classes/query-variable-manager.mjs +2 -2
  7. package/esm2020/lib/classes/validators.mjs +1 -1
  8. package/esm2020/lib/directives/http-prefix.directive.mjs +3 -3
  9. package/esm2020/lib/modules/alert/alert.module.mjs +5 -5
  10. package/esm2020/lib/modules/alert/alert.service.mjs +3 -3
  11. package/esm2020/lib/modules/alert/confirm.component.mjs +5 -5
  12. package/esm2020/lib/modules/avatar/avatar.module.mjs +5 -5
  13. package/esm2020/lib/modules/avatar/component/avatar.component.mjs +7 -17
  14. package/esm2020/lib/modules/avatar/service/avatar.service.mjs +3 -3
  15. package/esm2020/lib/modules/columns-picker/columns-picker-column.directive.mjs +9 -5
  16. package/esm2020/lib/modules/columns-picker/columns-picker.component.mjs +9 -9
  17. package/esm2020/lib/modules/columns-picker/columns-picker.module.mjs +11 -13
  18. package/esm2020/lib/modules/common/common-module.mjs +5 -5
  19. package/esm2020/lib/modules/common/directives/linkable-tab.directive.mjs +5 -5
  20. package/esm2020/lib/modules/common/directives/src-density.directive.mjs +3 -3
  21. package/esm2020/lib/modules/common/pipes/capitalize.pipe.mjs +3 -3
  22. package/esm2020/lib/modules/common/pipes/ellipsis.pipe.mjs +3 -3
  23. package/esm2020/lib/modules/common/pipes/enum.pipe.mjs +3 -3
  24. package/esm2020/lib/modules/common/pipes/swiss-date.pipe.mjs +3 -3
  25. package/esm2020/lib/modules/common/services/memory-storage.mjs +3 -3
  26. package/esm2020/lib/modules/common/services/seo.service.mjs +3 -3
  27. package/esm2020/lib/modules/detail-header/detail-header.component.mjs +9 -9
  28. package/esm2020/lib/modules/detail-header/detail-header.module.mjs +5 -5
  29. package/esm2020/lib/modules/dialog-trigger/dialog-trigger.component.mjs +3 -3
  30. package/esm2020/lib/modules/dialog-trigger/dialog-trigger.module.mjs +5 -5
  31. package/esm2020/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +6 -6
  32. package/esm2020/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +16 -18
  33. package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +16 -16
  34. package/esm2020/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +14 -14
  35. package/esm2020/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +9 -9
  36. package/esm2020/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +9 -9
  37. package/esm2020/lib/modules/dropdown-components/type-number/type-number.component.mjs +13 -13
  38. package/esm2020/lib/modules/dropdown-components/type-select/type-select.component.mjs +11 -11
  39. package/esm2020/lib/modules/dropdown-components/type-text/type-text.component.mjs +13 -10
  40. package/esm2020/lib/modules/dropdown-components/types.mjs +1 -1
  41. package/esm2020/lib/modules/file/abstract-file.mjs +3 -3
  42. package/esm2020/lib/modules/file/component/file.component.mjs +6 -6
  43. package/esm2020/lib/modules/file/file-drop.directive.mjs +3 -3
  44. package/esm2020/lib/modules/file/file-select.directive.mjs +3 -3
  45. package/esm2020/lib/modules/file/file.module.mjs +5 -5
  46. package/esm2020/lib/modules/file/file.service.mjs +3 -3
  47. package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +6 -6
  48. package/esm2020/lib/modules/fixed-button/fixed-button.module.mjs +5 -5
  49. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +6 -6
  50. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +5 -5
  51. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +10 -10
  52. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +3 -3
  53. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +5 -5
  54. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +3 -3
  55. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +19 -21
  56. package/esm2020/lib/modules/icon/icon.component.mjs +5 -5
  57. package/esm2020/lib/modules/icon/icon.module.mjs +5 -5
  58. package/esm2020/lib/modules/logger/error-handler.mjs +3 -3
  59. package/esm2020/lib/modules/logger/error.module.mjs +5 -5
  60. package/esm2020/lib/modules/matomo/matomo-module.module.mjs +4 -4
  61. package/esm2020/lib/modules/matomo/matomo.service.mjs +3 -3
  62. package/esm2020/lib/modules/panels/abstract-panel.mjs +3 -3
  63. package/esm2020/lib/modules/panels/panels.component.mjs +3 -3
  64. package/esm2020/lib/modules/panels/panels.module.mjs +5 -5
  65. package/esm2020/lib/modules/panels/panels.service.mjs +3 -3
  66. package/esm2020/lib/modules/relations/relations.component.mjs +16 -11
  67. package/esm2020/lib/modules/relations/relations.module.mjs +14 -16
  68. package/esm2020/lib/modules/search/dropdown-container/dropdown-container.component.mjs +7 -7
  69. package/esm2020/lib/modules/search/dropdown-container/dropdown.service.mjs +4 -4
  70. package/esm2020/lib/modules/search/facet-selector/facet-selector.component.mjs +5 -5
  71. package/esm2020/lib/modules/search/group/group.component.mjs +5 -5
  72. package/esm2020/lib/modules/search/input/input.component.mjs +20 -20
  73. package/esm2020/lib/modules/search/search/search.component.mjs +5 -5
  74. package/esm2020/lib/modules/search/search.module.mjs +15 -17
  75. package/esm2020/lib/modules/select/abstract-select.component.mjs +6 -6
  76. package/esm2020/lib/modules/select/select/select.component.mjs +16 -16
  77. package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +8 -8
  78. package/esm2020/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +10 -10
  79. package/esm2020/lib/modules/select/select.module.mjs +16 -18
  80. package/esm2020/lib/modules/sidenav/sidenav/sidenav.component.mjs +3 -3
  81. package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +8 -9
  82. package/esm2020/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +3 -3
  83. package/esm2020/lib/modules/sidenav/sidenav-stack.service.mjs +3 -3
  84. package/esm2020/lib/modules/sidenav/sidenav.module.mjs +5 -5
  85. package/esm2020/lib/modules/sidenav/sidenav.service.mjs +3 -3
  86. package/esm2020/lib/modules/stamp/stamp-module.module.mjs +5 -5
  87. package/esm2020/lib/modules/stamp/stamp.component.mjs +5 -5
  88. package/esm2020/lib/modules/table-button/table-button.component.mjs +7 -7
  89. package/esm2020/lib/modules/table-button/table-button.module.mjs +5 -5
  90. package/esm2020/lib/services/abstract-model.service.mjs +51 -45
  91. package/esm2020/lib/services/enum.service.mjs +3 -3
  92. package/esm2020/lib/services/link-mutation.service.mjs +3 -3
  93. package/esm2020/lib/services/persistence.service.mjs +3 -3
  94. package/esm2020/lib/services/swiss-parsing-date-adapter.service.mjs +3 -3
  95. package/fesm2015/ecodev-natural.mjs +513 -517
  96. package/fesm2015/ecodev-natural.mjs.map +1 -1
  97. package/fesm2020/ecodev-natural.mjs +512 -517
  98. package/fesm2020/ecodev-natural.mjs.map +1 -1
  99. package/{ecodev-natural.d.ts → index.d.ts} +0 -0
  100. package/lib/classes/abstract-controller.d.ts +1 -1
  101. package/lib/classes/abstract-detail.d.ts +3 -3
  102. package/lib/classes/abstract-editable-list.d.ts +5 -5
  103. package/lib/classes/abstract-list.d.ts +1 -1
  104. package/lib/classes/abstract-navigable-list.d.ts +1 -1
  105. package/lib/classes/validators.d.ts +2 -2
  106. package/lib/directives/http-prefix.directive.d.ts +1 -1
  107. package/lib/modules/alert/confirm.component.d.ts +1 -1
  108. package/lib/modules/avatar/component/avatar.component.d.ts +1 -1
  109. package/lib/modules/columns-picker/columns-picker-column.directive.d.ts +2 -2
  110. package/lib/modules/columns-picker/columns-picker.component.d.ts +1 -1
  111. package/lib/modules/common/directives/linkable-tab.directive.d.ts +1 -1
  112. package/lib/modules/common/directives/src-density.directive.d.ts +1 -1
  113. package/lib/modules/common/pipes/capitalize.pipe.d.ts +1 -1
  114. package/lib/modules/common/pipes/ellipsis.pipe.d.ts +1 -1
  115. package/lib/modules/common/pipes/enum.pipe.d.ts +1 -1
  116. package/lib/modules/common/pipes/swiss-date.pipe.d.ts +1 -1
  117. package/lib/modules/detail-header/detail-header.component.d.ts +1 -1
  118. package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +1 -1
  119. package/lib/modules/dropdown-components/abstract-association-select-component.directive.d.ts +11 -8
  120. package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +9 -6
  121. package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +11 -8
  122. package/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.d.ts +1 -1
  123. package/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.d.ts +1 -1
  124. package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +10 -7
  125. package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +8 -5
  126. package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +4 -4
  127. package/lib/modules/dropdown-components/types.d.ts +4 -2
  128. package/lib/modules/file/abstract-file.d.ts +1 -1
  129. package/lib/modules/file/component/file.component.d.ts +1 -1
  130. package/lib/modules/file/file-drop.directive.d.ts +1 -1
  131. package/lib/modules/file/file-select.directive.d.ts +1 -1
  132. package/lib/modules/fixed-button/fixed-button.component.d.ts +1 -1
  133. package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +1 -1
  134. package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +1 -1
  135. package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +1 -1
  136. package/lib/modules/icon/icon.component.d.ts +1 -1
  137. package/lib/modules/panels/abstract-panel.d.ts +1 -1
  138. package/lib/modules/panels/panels.component.d.ts +1 -1
  139. package/lib/modules/relations/relations.component.d.ts +2 -1
  140. package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +2 -2
  141. package/lib/modules/search/dropdown-container/dropdown.service.d.ts +1 -1
  142. package/lib/modules/search/facet-selector/facet-selector.component.d.ts +1 -1
  143. package/lib/modules/search/group/group.component.d.ts +1 -1
  144. package/lib/modules/search/input/input.component.d.ts +7 -8
  145. package/lib/modules/search/search/search.component.d.ts +1 -1
  146. package/lib/modules/select/abstract-select.component.d.ts +9 -9
  147. package/lib/modules/select/select/select.component.d.ts +7 -5
  148. package/lib/modules/select/select-enum/select-enum.component.d.ts +5 -3
  149. package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +3 -3
  150. package/lib/modules/sidenav/sidenav/sidenav.component.d.ts +1 -1
  151. package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +3 -4
  152. package/lib/modules/sidenav/sidenav-content/sidenav-content.component.d.ts +1 -1
  153. package/lib/modules/stamp/stamp.component.d.ts +1 -1
  154. package/lib/modules/table-button/table-button.component.d.ts +1 -1
  155. package/lib/services/abstract-model.service.d.ts +4 -4
  156. package/package.json +8 -8
@@ -4,9 +4,9 @@ import { Subject } from 'rxjs';
4
4
  import { naturalDropdownAnimations } from './dropdown-container-animations';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/cdk/a11y";
7
- import * as i2 from "@angular/material/button";
8
- import * as i3 from "@angular/cdk/portal";
9
- import * as i4 from "@angular/common";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@angular/material/button";
9
+ import * as i4 from "@angular/cdk/portal";
10
10
  export function throwMatDialogContentAlreadyAttachedError() {
11
11
  throw Error('Attempting to attach dialog content after content is already attached');
12
12
  }
@@ -70,9 +70,9 @@ export class NaturalDropdownContainerComponent extends BasePortalOutlet {
70
70
  }
71
71
  }
72
72
  }
73
- NaturalDropdownContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownContainerComponent, deps: [{ token: i0.ElementRef }, { token: i1.ConfigurableFocusTrapFactory }, { token: NATURAL_DROPDOWN_CONTAINER_DATA }], target: i0.ɵɵFactoryTarget.Component });
74
- NaturalDropdownContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalDropdownContainerComponent, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], encapsulation: i0.ViewEncapsulation.None });
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownContainerComponent, decorators: [{
73
+ NaturalDropdownContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalDropdownContainerComponent, deps: [{ token: i0.ElementRef }, { token: i1.ConfigurableFocusTrapFactory }, { token: NATURAL_DROPDOWN_CONTAINER_DATA }], target: i0.ɵɵFactoryTarget.Component });
74
+ NaturalDropdownContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: NaturalDropdownContainerComponent, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], encapsulation: i0.ViewEncapsulation.None });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalDropdownContainerComponent, decorators: [{
76
76
  type: Component,
77
77
  args: [{ encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"] }]
78
78
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfigurableFocusTrapFactory }, { type: undefined, decorators: [{
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
85
85
  type: ViewChild,
86
86
  args: [TemplateRef, { static: true }]
87
87
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQWtDLE1BQU0scUJBQXFCLENBQUM7QUFDdkcsT0FBTyxFQUNILFNBQVMsRUFJVCxNQUFNLEVBQ04sY0FBYyxFQUVkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQUUxRSxNQUFNLFVBQVUseUNBQXlDO0lBQ3JELE1BQU0sS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQU1ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLElBQUksY0FBYyxDQUM3RCw4QkFBOEIsQ0FDakMsQ0FBQztBQVNGLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxnQkFBZ0I7SUFlbkUsWUFDcUIsVUFBc0IsRUFDdEIsZ0JBQThDLEVBQ2YsSUFBa0M7UUFFbEYsS0FBSyxFQUFFLENBQUM7UUFKUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBOEI7UUFDZixTQUFJLEdBQUosSUFBSSxDQUE4QjtRQWR0RSxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3Qyw0Q0FBNEM7UUFDckMsd0JBQW1CLEdBQXFCLE1BQU0sQ0FBQztRQUV0RCx5REFBeUQ7UUFDakQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXBDLGNBQVMsR0FBcUIsSUFBSSxDQUFDO1FBQ25DLHdDQUFtQyxHQUF1QixJQUFJLENBQUM7SUFRdkUsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sb0JBQW9CLENBQUksTUFBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxxQkFBcUIsQ0FBSSxNQUEwQjtRQUN0RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDakMseUNBQXlDLEVBQUUsQ0FBQztTQUMvQztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBcUI7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN2QjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLFNBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLFlBQVk7UUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUFDO1FBRXpELHlGQUF5RjtRQUN6RixJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO1lBQ2hELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQzs7OEhBN0VRLGlDQUFpQyx3RkFrQjlCLCtCQUErQjtrSEFsQmxDLGlDQUFpQyxrR0FDL0IsZUFBZSw0RkFDZixXQUFXLHFGQ3ZDMUIseWhCQWVBLGszQkRvQmdCLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLFdBQVcsQ0FBQzsyRkFFbkYsaUNBQWlDO2tCQVA3QyxTQUFTO29DQUdTLGlCQUFpQixDQUFDLElBQUksdUJBQ2hCLEtBQUssY0FDZCxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQyxXQUFXLENBQUM7OzBCQW9CdkYsTUFBTTsyQkFBQywrQkFBK0I7NENBakJRLFlBQVk7c0JBQTlELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDSyxXQUFXO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7Q29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSwgRm9jdXNUcmFwfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0Jhc2VQb3J0YWxPdXRsZXQsIENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIE9uRGVzdHJveSxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bmF0dXJhbERyb3Bkb3duQW5pbWF0aW9uc30gZnJvbSAnLi9kcm9wZG93bi1jb250YWluZXItYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd01hdERpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YSB7XG4gICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTkFUVVJBTF9EUk9QRE9XTl9DT05UQUlORVJfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhPihcbiAgICAnTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YScsXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIGFuaW1hdGlvbnM6IFtuYXR1cmFsRHJvcGRvd25BbmltYXRpb25zLnRyYW5zZm9ybU1lbnUsIG5hdHVyYWxEcm9wZG93bkFuaW1hdGlvbnMuZmFkZUluSXRlbXNdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9ydGFsT3V0bGV0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKENka1BvcnRhbE91dGxldCwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBwb3J0YWxPdXRsZXQhOiBDZGtQb3J0YWxPdXRsZXQ7XG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gICAgcHVibGljIHBhbmVsQW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgPSAndm9pZCc7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBtZW51IGNvbXBsZXRlcy4gKi9cbiAgICBwcml2YXRlIGFuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA6IEZvY3VzVHJhcCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c1RyYXBGYWN0b3J5OiBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5LFxuICAgICAgICBASW5qZWN0KE5BVFVSQUxfRFJPUERPV05fQ09OVEFJTkVSX0RBVEEpIHB1YmxpYyBkYXRhOiBOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXR0YWNoVGVtcGxhdGVQb3J0YWw8Qz4ocG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxDPik6IEVtYmVkZGVkVmlld1JlZjxDPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcnRhbE91dGxldC5hdHRhY2hUZW1wbGF0ZVBvcnRhbChwb3J0YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhdHRhY2hDb21wb25lbnRQb3J0YWw8VD4ocG9ydGFsOiBDb21wb25lbnRQb3J0YWw8VD4pOiBDb21wb25lbnRSZWY8VD4ge1xuICAgICAgICBpZiAodGhpcy5wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgICAgdGhyb3dNYXREaWFsb2dDb250ZW50QWxyZWFkeUF0dGFjaGVkRXJyb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnBvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwocG9ydGFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhcnRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMudHJhcEZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2V4aXQnKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3RvcmVGb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYXBGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvY3VzVHJhcCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1RyYXAgPSB0aGlzLmZvY3VzVHJhcEZhY3RvcnkuY3JlYXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKTtcbiAgICB9XG5cbiAgICAvKiogUmVzdG9yZXMgZm9jdXMgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZCBiZWZvcmUgdGhlIGRpYWxvZyBvcGVuZWQuICovXG4gICAgcHJpdmF0ZSByZXN0b3JlRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvRm9jdXMgPSB0aGlzLmVsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkO1xuXG4gICAgICAgIC8vIFdlIG5lZWQgdGhlIGV4dHJhIGNoZWNrLCBiZWNhdXNlIElFIGNhbiBzZXQgdGhlIGBhY3RpdmVFbGVtZW50YCB0byBudWxsIGluIHNvbWUgY2FzZXMuXG4gICAgICAgIGlmICh0b0ZvY3VzICYmIHR5cGVvZiB0b0ZvY3VzLmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0b0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb2N1c1RyYXApIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNUcmFwLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAoQHRyYW5zZm9ybU1lbnUuZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgW0B0cmFuc2Zvcm1NZW51XT1cInBhbmVsQW5pbWF0aW9uU3RhdGVcIlxuICAgIGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi1jb250YWluZXIgbWF0LWVsZXZhdGlvbi16MlwiXG4gICAgcm9sZT1cIm1lbnVcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJuYXR1cmFsLWRyb3Bkb3duLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWxPdXRsZXQ+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLnNob3dWYWxpZGF0ZUJ1dHRvblwiIGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi12YWxpZGF0ZS1idXR0b25cIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGkxOG4+VmFsaWRlcjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQWtDLE1BQU0scUJBQXFCLENBQUM7QUFDdkcsT0FBTyxFQUNILFNBQVMsRUFJVCxNQUFNLEVBQ04sY0FBYyxFQUVkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQUUxRSxNQUFNLFVBQVUseUNBQXlDO0lBQ3JELE1BQU0sS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQU1ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLElBQUksY0FBYyxDQUM3RCw4QkFBOEIsQ0FDakMsQ0FBQztBQVNGLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxnQkFBZ0I7SUFlbkUsWUFDcUIsVUFBbUMsRUFDbkMsZ0JBQThDLEVBQ2YsSUFBa0M7UUFFbEYsS0FBSyxFQUFFLENBQUM7UUFKUyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQThCO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBOEI7UUFkdEUsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFN0MsNENBQTRDO1FBQ3JDLHdCQUFtQixHQUFxQixNQUFNLENBQUM7UUFFdEQseURBQXlEO1FBQ2pELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVwQyxjQUFTLEdBQXFCLElBQUksQ0FBQztRQUNuQyx3Q0FBbUMsR0FBdUIsSUFBSSxDQUFDO0lBUXZFLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLG9CQUFvQixDQUFJLE1BQXlCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0scUJBQXFCLENBQUksTUFBMEI7UUFDdEQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ2pDLHlDQUF5QyxFQUFFLENBQUM7U0FDL0M7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVNLGNBQWM7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQztJQUN2QyxDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQXFCO1FBQ3hDLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BCO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sRUFBRTtZQUNqQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdkI7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxTQUFTO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEY7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELCtFQUErRTtJQUN2RSxZQUFZO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQztRQUV6RCx5RkFBeUY7UUFDekYsSUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUNoRCxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkI7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM1QjtJQUNMLENBQUM7OzhIQTdFUSxpQ0FBaUMsd0ZBa0I5QiwrQkFBK0I7a0hBbEJsQyxpQ0FBaUMsa0dBQy9CLGVBQWUsNEZBQ2YsV0FBVyxxRkN2QzFCLHloQkFlQSwrNUJEb0JnQixDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQyxXQUFXLENBQUM7MkZBRW5GLGlDQUFpQztrQkFQN0MsU0FBUztvQ0FHUyxpQkFBaUIsQ0FBQyxJQUFJLHVCQUNoQixLQUFLLGNBQ2QsQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUseUJBQXlCLENBQUMsV0FBVyxDQUFDOzswQkFvQnZGLE1BQU07MkJBQUMsK0JBQStCOzRDQWpCUSxZQUFZO3NCQUE5RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ0ssV0FBVztzQkFBekQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBbmltYXRpb25FdmVudH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0NvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnksIEZvY3VzVHJhcH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtCYXNlUG9ydGFsT3V0bGV0LCBDZGtQb3J0YWxPdXRsZXQsIENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIEluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge25hdHVyYWxEcm9wZG93bkFuaW1hdGlvbnN9IGZyb20gJy4vZHJvcGRvd24tY29udGFpbmVyLWFuaW1hdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dNYXREaWFsb2dDb250ZW50QWxyZWFkeUF0dGFjaGVkRXJyb3IoKTogdm9pZCB7XG4gICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gYXR0YWNoIGRpYWxvZyBjb250ZW50IGFmdGVyIGNvbnRlbnQgaXMgYWxyZWFkeSBhdHRhY2hlZCcpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdHVyYWxEcm9wZG93bkNvbnRhaW5lckRhdGEge1xuICAgIHNob3dWYWxpZGF0ZUJ1dHRvbjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE5BVFVSQUxfRFJPUERPV05fQ09OVEFJTkVSX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YT4oXG4gICAgJ05hdHVyYWxEcm9wZG93bkNvbnRhaW5lckRhdGEnLFxuKTtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBhbmltYXRpb25zOiBbbmF0dXJhbERyb3Bkb3duQW5pbWF0aW9ucy50cmFuc2Zvcm1NZW51LCBuYXR1cmFsRHJvcGRvd25BbmltYXRpb25zLmZhZGVJbkl0ZW1zXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBvcnRhbE91dGxldCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgcG9ydGFsT3V0bGV0ITogQ2RrUG9ydGFsT3V0bGV0O1xuICAgIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgdGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGNsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQ3VycmVudCBzdGF0ZSBvZiB0aGUgcGFuZWwgYW5pbWF0aW9uLiAqL1xuICAgIHB1YmxpYyBwYW5lbEFuaW1hdGlvblN0YXRlOiAndm9pZCcgfCAnZW50ZXInID0gJ3ZvaWQnO1xuXG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIGFuIGFuaW1hdGlvbiBvbiB0aGUgbWVudSBjb21wbGV0ZXMuICovXG4gICAgcHJpdmF0ZSBhbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgZm9jdXNUcmFwOiBGb2N1c1RyYXAgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGVsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzVHJhcEZhY3Rvcnk6IENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnksXG4gICAgICAgIEBJbmplY3QoTkFUVVJBTF9EUk9QRE9XTl9DT05UQUlORVJfREFUQSkgcHVibGljIGRhdGE6IE5hdHVyYWxEcm9wZG93bkNvbnRhaW5lckRhdGEsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZWQubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhdHRhY2hUZW1wbGF0ZVBvcnRhbDxDPihwb3J0YWw6IFRlbXBsYXRlUG9ydGFsPEM+KTogRW1iZWRkZWRWaWV3UmVmPEM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHBvcnRhbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGF0dGFjaENvbXBvbmVudFBvcnRhbDxUPihwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxUPik6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgICAgIGlmICh0aGlzLnBvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICAgICAgICB0aHJvd01hdERpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucG9ydGFsT3V0bGV0LmF0dGFjaENvbXBvbmVudFBvcnRhbChwb3J0YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2VudGVyJztcbiAgICB9XG5cbiAgICBwdWJsaWMgb25BbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2VudGVyJykge1xuICAgICAgICAgICAgdGhpcy50cmFwRm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC50b1N0YXRlID09PSAnZXhpdCcpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZUZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFuaW1hdGlvbkRvbmUubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJhcEZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZm9jdXNUcmFwKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzVHJhcCA9IHRoaXMuZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1c1RyYXAuZm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeSgpO1xuICAgIH1cblxuICAgIC8qKiBSZXN0b3JlcyBmb2N1cyB0byB0aGUgZWxlbWVudCB0aGF0IHdhcyBmb2N1c2VkIGJlZm9yZSB0aGUgZGlhbG9nIG9wZW5lZC4gKi9cbiAgICBwcml2YXRlIHJlc3RvcmVGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9Gb2N1cyA9IHRoaXMuZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQ7XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0aGUgZXh0cmEgY2hlY2ssIGJlY2F1c2UgSUUgY2FuIHNldCB0aGUgYGFjdGl2ZUVsZW1lbnRgIHRvIG51bGwgaW4gc29tZSBjYXNlcy5cbiAgICAgICAgaWYgKHRvRm9jdXMgJiYgdHlwZW9mIHRvRm9jdXMuZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRvRm9jdXMuZm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZvY3VzVHJhcCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1RyYXAuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIChAdHJhbnNmb3JtTWVudS5kb25lKT1cIm9uQW5pbWF0aW9uRG9uZSgkZXZlbnQpXCJcbiAgICBbQHRyYW5zZm9ybU1lbnVdPVwicGFuZWxBbmltYXRpb25TdGF0ZVwiXG4gICAgY2xhc3M9XCJuYXR1cmFsLWRyb3Bkb3duLWNvbnRhaW5lciBtYXQtZWxldmF0aW9uLXoyXCJcbiAgICByb2xlPVwibWVudVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cIm5hdHVyYWwtZHJvcGRvd24tY29udGFpbmVyLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImRhdGEuc2hvd1ZhbGlkYXRlQnV0dG9uXCIgY2xhc3M9XCJuYXR1cmFsLWRyb3Bkb3duLXZhbGlkYXRlLWJ1dHRvblwiPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LXJhaXNlZC1idXR0b24gaTE4bj5WYWxpZGVyPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -82,12 +82,12 @@ export class NaturalDropdownService {
82
82
  ]);
83
83
  }
84
84
  }
85
- NaturalDropdownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownService, deps: [{ token: i1.Overlay }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
86
- NaturalDropdownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownService, providedIn: 'root' });
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownService, decorators: [{
85
+ NaturalDropdownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalDropdownService, deps: [{ token: i1.Overlay }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
86
+ NaturalDropdownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalDropdownService, providedIn: 'root' });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalDropdownService, decorators: [{
88
88
  type: Injectable,
89
89
  args: [{
90
90
  providedIn: 'root',
91
91
  }]
92
92
  }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }]; } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBQyxlQUFlLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUEyQixVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFDSCwrQkFBK0IsRUFDL0IsaUNBQWlDLEdBRXBDLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQVFsRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IscUJBQXFCLENBQUMsQ0FBQztBQUtwRyxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLFlBQW9DLE9BQWdCLEVBQW1CLFFBQWtCO1FBQXJELFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBbUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFdEYsSUFBSSxDQUNQLFNBQTJDLEVBQzNDLGdCQUE0QixFQUM1QixlQUFpQyxFQUNqQyxrQkFBMkI7UUFFM0IsaUJBQWlCO1FBQ2pCLE1BQU0sYUFBYSxHQUFpQztZQUNoRCxrQkFBa0IsRUFBRSxrQkFBa0I7U0FDekMsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFxQjtZQUN0QztnQkFDSSxPQUFPLEVBQUUsK0JBQStCO2dCQUN4QyxRQUFRLEVBQUUsYUFBYTthQUMxQjtTQUNKLENBQUM7UUFFRixNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztRQUUvRixZQUFZO1FBQ1osTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxpQ0FBaUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM3RyxNQUFNLFlBQVksR0FBb0QsVUFBVSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV6RyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxrQkFBa0IsQ0FDdEMsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsSUFBSSxDQUFDLFFBQVEsRUFDYixZQUFZLENBQ2YsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVuQyxNQUFNLEtBQUssR0FBRyxHQUFTLEVBQUU7WUFDckIsSUFBSSxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNwRixXQUFXLENBQUMsS0FBSyxDQUFDO29CQUNkLFNBQVMsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFO2lCQUMxRCxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDdkI7UUFDTCxDQUFDLENBQUM7UUFFRix1RUFBdUU7UUFDdkUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFFSCw4Q0FBOEM7UUFDOUMsVUFBVTthQUNMLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFaEQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsT0FBbUI7UUFDeEMsT0FBTyxJQUFJLGFBQWEsQ0FBQztZQUNyQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUMzQyxXQUFXLEVBQUUsSUFBSTtZQUNqQixhQUFhLEVBQUUsa0NBQWtDO1NBQ3BELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNkLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLE9BQU8sQ0FBQzthQUM1QixzQkFBc0IsQ0FBQyxJQUFJLENBQUM7YUFDNUIsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2FBQ3RCLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDZixhQUFhLENBQUM7WUFDWDtnQkFDSSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUUsRUFBRTthQUNkO1NBQ0osQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7bUhBNUZRLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRm5CLE1BQU07MkZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5Q29uZmlnfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge0NvbXBvbmVudFJlZiwgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBTdGF0aWNQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkfSBmcm9tICcuLi9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtcbiAgICBOQVRVUkFMX0RST1BET1dOX0NPTlRBSU5FUl9EQVRBLFxuICAgIE5hdHVyYWxEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhLFxufSBmcm9tICcuL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsRHJvcGRvd25SZWZ9IGZyb20gJy4vZHJvcGRvd24tcmVmJztcbmltcG9ydCB7RHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4uL3R5cGVzL2Ryb3Bkb3duLWNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbERyb3Bkb3duRGF0YTxDID0gYW55PiB7XG4gICAgY29uZGl0aW9uOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHwgbnVsbDtcbiAgICBjb25maWd1cmF0aW9uOiBDO1xufVxuXG5leHBvcnQgY29uc3QgTkFUVVJBTF9EUk9QRE9XTl9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPE5hdHVyYWxEcm9wZG93bkRhdGE+KCdOYXR1cmFsRHJvcGRvd25EYXRhJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxEcm9wZG93blNlcnZpY2Uge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gICAgcHVibGljIG9wZW4oXG4gICAgICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxEcm9wZG93bkNvbXBvbmVudD4sXG4gICAgICAgIGNvbm5lY3RlZEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIGN1c3RvbVByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSxcbiAgICAgICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBib29sZWFuLFxuICAgICk6IE5hdHVyYWxEcm9wZG93blJlZiB7XG4gICAgICAgIC8vIENvbnRhaW5lciBkYXRhXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckRhdGE6IE5hdHVyYWxEcm9wZG93bkNvbnRhaW5lckRhdGEgPSB7XG4gICAgICAgICAgICBzaG93VmFsaWRhdGVCdXR0b246IHNob3dWYWxpZGF0ZUJ1dHRvbixcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpbmplY3Rpb25Ub2tlbnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTkFUVVJBTF9EUk9QRE9XTl9DT05UQUlORVJfREFUQSxcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogY29udGFpbmVyRGF0YSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVySW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe3Byb3ZpZGVyczogaW5qZWN0aW9uVG9rZW5zLCBwYXJlbnQ6IHRoaXMuaW5qZWN0b3J9KTtcblxuICAgICAgICAvLyBDb250YWluZXJcbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUodGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbm5lY3RlZEVsZW1lbnQpKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQsIHVuZGVmaW5lZCwgY29udGFpbmVySW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQ+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgICAgICBjb25zdCBkcm9wZG93bkNvbnRhaW5lciA9IGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25SZWYgPSBuZXcgTmF0dXJhbERyb3Bkb3duUmVmKFxuICAgICAgICAgICAgZHJvcGRvd25Db250YWluZXIsXG4gICAgICAgICAgICBjb21wb25lbnQsXG4gICAgICAgICAgICBjdXN0b21Qcm92aWRlcnMsXG4gICAgICAgICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICAgY29udGFpbmVyUmVmLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFN0YXJ0IGFuaW1hdGlvbiB0aGF0IHNob3dzIG1lbnVcbiAgICAgICAgZHJvcGRvd25Db250YWluZXIuc3RhcnRBbmltYXRpb24oKTtcblxuICAgICAgICBjb25zdCBjbG9zZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmIChkcm9wZG93blJlZi5jb21wb25lbnRJbnN0YW5jZS5pc1ZhbGlkKCkgJiYgZHJvcGRvd25SZWYuY29tcG9uZW50SW5zdGFuY2UuaXNEaXJ0eSgpKSB7XG4gICAgICAgICAgICAgICAgZHJvcGRvd25SZWYuY2xvc2Uoe1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IGRyb3Bkb3duUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldENvbmRpdGlvbigpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkcm9wZG93blJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFdoZW4gcGFyZW50IGNsb3NlcywgcmVtb3ZlIG92ZXJsYXkgZnJvbSBkb20gYW5kIHVwZGF0ZSBcInJldHVyblwiIHZhbHVcbiAgICAgICAgZHJvcGRvd25Db250YWluZXIuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBvdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdoZW4gY2xpY2sgb24gYmFja2Ryb3AsIHZhbGlkYXRlIHJlc3VsdC4uID9cbiAgICAgICAgb3ZlcmxheVJlZlxuICAgICAgICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKGRyb3Bkb3duQ29udGFpbmVyLmNsb3NlZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IGRyb3Bkb3duQ29udGFpbmVyLmNsb3NlKCkpO1xuXG4gICAgICAgIHJldHVybiBkcm9wZG93blJlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG5lZWRlZCB0byBjcmVhdGUgdGhlIG92ZXJsYXksIHRoZSBPdmVybGF5U3RhdGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKGVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBPdmVybGF5Q29uZmlnIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuZ2V0UG9zaXRpb24oZWxlbWVudCksXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zaXRpb24oZWxlbWVudDogRWxlbWVudFJlZik6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSlcbiAgICAgICAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oMzApXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMTAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgIH1cbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBQyxlQUFlLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUEyQixVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFDSCwrQkFBK0IsRUFDL0IsaUNBQWlDLEdBRXBDLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQVFsRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IscUJBQXFCLENBQUMsQ0FBQztBQUtwRyxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLFlBQW9DLE9BQWdCLEVBQW1CLFFBQWtCO1FBQXJELFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBbUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFdEYsSUFBSSxDQUNQLFNBQTJDLEVBQzNDLGdCQUF5QyxFQUN6QyxlQUFpQyxFQUNqQyxrQkFBMkI7UUFFM0IsaUJBQWlCO1FBQ2pCLE1BQU0sYUFBYSxHQUFpQztZQUNoRCxrQkFBa0IsRUFBRSxrQkFBa0I7U0FDekMsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFxQjtZQUN0QztnQkFDSSxPQUFPLEVBQUUsK0JBQStCO2dCQUN4QyxRQUFRLEVBQUUsYUFBYTthQUMxQjtTQUNKLENBQUM7UUFFRixNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztRQUUvRixZQUFZO1FBQ1osTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxpQ0FBaUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM3RyxNQUFNLFlBQVksR0FBb0QsVUFBVSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV6RyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxrQkFBa0IsQ0FDdEMsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsSUFBSSxDQUFDLFFBQVEsRUFDYixZQUFZLENBQ2YsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVuQyxNQUFNLEtBQUssR0FBRyxHQUFTLEVBQUU7WUFDckIsSUFBSSxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNwRixXQUFXLENBQUMsS0FBSyxDQUFDO29CQUNkLFNBQVMsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFO2lCQUMxRCxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDdkI7UUFDTCxDQUFDLENBQUM7UUFFRix1RUFBdUU7UUFDdkUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFFSCw4Q0FBOEM7UUFDOUMsVUFBVTthQUNMLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFaEQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsT0FBZ0M7UUFDckQsT0FBTyxJQUFJLGFBQWEsQ0FBQztZQUNyQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUMzQyxXQUFXLEVBQUUsSUFBSTtZQUNqQixhQUFhLEVBQUUsa0NBQWtDO1NBQ3BELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBZ0M7UUFDaEQsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNkLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLE9BQU8sQ0FBQzthQUM1QixzQkFBc0IsQ0FBQyxJQUFJLENBQUM7YUFDNUIsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2FBQ3RCLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDZixhQUFhLENBQUM7WUFDWDtnQkFDSSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUUsRUFBRTthQUNkO1NBQ0osQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7bUhBNUZRLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRm5CLE1BQU07MkZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5Q29uZmlnfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge0NvbXBvbmVudFJlZiwgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBTdGF0aWNQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkfSBmcm9tICcuLi9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtcbiAgICBOQVRVUkFMX0RST1BET1dOX0NPTlRBSU5FUl9EQVRBLFxuICAgIE5hdHVyYWxEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhLFxufSBmcm9tICcuL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsRHJvcGRvd25SZWZ9IGZyb20gJy4vZHJvcGRvd24tcmVmJztcbmltcG9ydCB7RHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4uL3R5cGVzL2Ryb3Bkb3duLWNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbERyb3Bkb3duRGF0YTxDID0gYW55PiB7XG4gICAgY29uZGl0aW9uOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHwgbnVsbDtcbiAgICBjb25maWd1cmF0aW9uOiBDO1xufVxuXG5leHBvcnQgY29uc3QgTkFUVVJBTF9EUk9QRE9XTl9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPE5hdHVyYWxEcm9wZG93bkRhdGE+KCdOYXR1cmFsRHJvcGRvd25EYXRhJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxEcm9wZG93blNlcnZpY2Uge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gICAgcHVibGljIG9wZW4oXG4gICAgICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxEcm9wZG93bkNvbXBvbmVudD4sXG4gICAgICAgIGNvbm5lY3RlZEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBjdXN0b21Qcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10sXG4gICAgICAgIHNob3dWYWxpZGF0ZUJ1dHRvbjogYm9vbGVhbixcbiAgICApOiBOYXR1cmFsRHJvcGRvd25SZWYge1xuICAgICAgICAvLyBDb250YWluZXIgZGF0YVxuICAgICAgICBjb25zdCBjb250YWluZXJEYXRhOiBOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhID0ge1xuICAgICAgICAgICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBzaG93VmFsaWRhdGVCdXR0b24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0aW9uVG9rZW5zOiBTdGF0aWNQcm92aWRlcltdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IE5BVFVSQUxfRFJPUERPV05fQ09OVEFJTkVSX0RBVEEsXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IGNvbnRhaW5lckRhdGEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtwcm92aWRlcnM6IGluamVjdGlvblRva2VucywgcGFyZW50OiB0aGlzLmluamVjdG9yfSk7XG5cbiAgICAgICAgLy8gQ29udGFpbmVyXG4gICAgICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHRoaXMuZ2V0T3ZlcmxheUNvbmZpZyhjb25uZWN0ZWRFbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50LCB1bmRlZmluZWQsIGNvbnRhaW5lckluamVjdG9yKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8TmF0dXJhbERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50PiA9IG92ZXJsYXlSZWYuYXR0YWNoKGNvbnRhaW5lclBvcnRhbCk7XG5cbiAgICAgICAgY29uc3QgZHJvcGRvd25Db250YWluZXIgPSBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duUmVmID0gbmV3IE5hdHVyYWxEcm9wZG93blJlZihcbiAgICAgICAgICAgIGRyb3Bkb3duQ29udGFpbmVyLFxuICAgICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgICAgY3VzdG9tUHJvdmlkZXJzLFxuICAgICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIGNvbnRhaW5lclJlZixcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTdGFydCBhbmltYXRpb24gdGhhdCBzaG93cyBtZW51XG4gICAgICAgIGRyb3Bkb3duQ29udGFpbmVyLnN0YXJ0QW5pbWF0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY2xvc2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBpZiAoZHJvcGRvd25SZWYuY29tcG9uZW50SW5zdGFuY2UuaXNWYWxpZCgpICYmIGRyb3Bkb3duUmVmLmNvbXBvbmVudEluc3RhbmNlLmlzRGlydHkoKSkge1xuICAgICAgICAgICAgICAgIGRyb3Bkb3duUmVmLmNsb3NlKHtcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBkcm9wZG93blJlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRDb25kaXRpb24oKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZHJvcGRvd25SZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBXaGVuIHBhcmVudCBjbG9zZXMsIHJlbW92ZSBvdmVybGF5IGZyb20gZG9tIGFuZCB1cGRhdGUgXCJyZXR1cm5cIiB2YWx1XG4gICAgICAgIGRyb3Bkb3duQ29udGFpbmVyLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXaGVuIGNsaWNrIG9uIGJhY2tkcm9wLCB2YWxpZGF0ZSByZXN1bHQuLiA/XG4gICAgICAgIG92ZXJsYXlSZWZcbiAgICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChkcm9wZG93bkNvbnRhaW5lci5jbG9zZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiBkcm9wZG93bkNvbnRhaW5lci5jbG9zZSgpKTtcblxuICAgICAgICByZXR1cm4gZHJvcGRvd25SZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBuZWVkZWQgdG8gY3JlYXRlIHRoZSBvdmVybGF5LCB0aGUgT3ZlcmxheVN0YXRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyhlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IE92ZXJsYXlDb25maWcge1xuICAgICAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5nZXRQb3NpdGlvbihlbGVtZW50KSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3NpdGlvbihlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSlcbiAgICAgICAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oMzApXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMTAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -3,8 +3,8 @@ import { BehaviorSubject } from 'rxjs';
3
3
  import { NATURAL_DROPDOWN_DATA } from '../../search/dropdown-container/dropdown.service';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../search/dropdown-container/dropdown-ref";
6
- import * as i2 from "@angular/material/list";
7
- import * as i3 from "@angular/common";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/material/list";
8
8
  import * as i4 from "@angular/material/core";
9
9
  export class FacetSelectorComponent {
10
10
  constructor(data, dropdownRef) {
@@ -38,9 +38,9 @@ export class FacetSelectorComponent {
38
38
  return true;
39
39
  }
40
40
  }
41
- FacetSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: FacetSelectorComponent, deps: [{ token: NATURAL_DROPDOWN_DATA }, { token: i1.NaturalDropdownRef }], target: i0.ɵɵFactoryTarget.Component });
42
- FacetSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: FacetSelectorComponent, selector: "ng-component", ngImport: i0, template: "<mat-nav-list>\n <mat-list-item (click)=\"selection = facet; close()\" *ngFor=\"let facet of facets\">\n <a matLine>{{ facet.display }}</a>\n </mat-list-item>\n</mat-nav-list>\n", styles: [":host .mat-nav-list{padding:0}\n"], components: [{ type: i2.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatLine, selector: "[mat-line], [matLine]" }] });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: FacetSelectorComponent, decorators: [{
41
+ FacetSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: FacetSelectorComponent, deps: [{ token: NATURAL_DROPDOWN_DATA }, { token: i1.NaturalDropdownRef }], target: i0.ɵɵFactoryTarget.Component });
42
+ FacetSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: FacetSelectorComponent, selector: "ng-component", ngImport: i0, template: "<mat-nav-list>\n <mat-list-item (click)=\"selection = facet; close()\" *ngFor=\"let facet of facets\">\n <a matLine>{{ facet.display }}</a>\n </mat-list-item>\n</mat-nav-list>\n", styles: [":host .mat-nav-list{padding:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i4.MatLine, selector: "[mat-line], [matLine]" }] });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: FacetSelectorComponent, decorators: [{
44
44
  type: Component,
45
45
  args: [{ template: "<mat-nav-list>\n <mat-list-item (click)=\"selection = facet; close()\" *ngFor=\"let facet of facets\">\n <a matLine>{{ facet.display }}</a>\n </mat-list-item>\n</mat-nav-list>\n", styles: [":host .mat-nav-list{padding:0}\n"] }]
46
46
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -1,8 +1,8 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { deepClone } from '../classes/utils';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "../input/input.component";
5
- import * as i2 from "@angular/common";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../input/input.component";
6
6
  export class NaturalGroupComponent {
7
7
  constructor() {
8
8
  this.selectionChange = new EventEmitter();
@@ -25,9 +25,9 @@ export class NaturalGroupComponent {
25
25
  this.selectionChange.emit(this.innerSelections);
26
26
  }
27
27
  }
28
- NaturalGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
- NaturalGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalGroupComponent, selector: "natural-group", inputs: { placeholder: "placeholder", facets: "facets", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "newValueInput", first: true, predicate: ["newValueInput"], descendants: true }], ngImport: i0, template: "<natural-input\n (cleared)=\"removeInput(i)\"\n (selectionChange)=\"updateInput($event, i)\"\n *ngFor=\"let selection of innerSelections; let i = index\"\n [facets]=\"facets\"\n [selection]=\"selection\"\n></natural-input>\n\n<natural-input\n #newValueInput\n (selectionChange)=\"addInput($event)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n tabIndex=\"10\"\n cdkFocusInitial\n></natural-input>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}:host natural-input{flex:none;display:inline-flex;margin-right:10px}:host natural-input:last-of-type{flex:1;margin-right:0;min-width:250px}\n"], components: [{ type: i1.NaturalInputComponent, selector: "natural-input", inputs: ["placeholder", "searchFieldName", "selection", "facets"], outputs: ["selectionChange", "cleared"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalGroupComponent, decorators: [{
28
+ NaturalGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ NaturalGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: NaturalGroupComponent, selector: "natural-group", inputs: { placeholder: "placeholder", facets: "facets", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "newValueInput", first: true, predicate: ["newValueInput"], descendants: true }], ngImport: i0, template: "<natural-input\n (cleared)=\"removeInput(i)\"\n (selectionChange)=\"updateInput($event, i)\"\n *ngFor=\"let selection of innerSelections; let i = index\"\n [facets]=\"facets\"\n [selection]=\"selection\"\n></natural-input>\n\n<natural-input\n #newValueInput\n (selectionChange)=\"addInput($event)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n tabIndex=\"10\"\n cdkFocusInitial\n></natural-input>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}:host natural-input{flex:none;display:inline-flex;margin-right:10px}:host natural-input:last-of-type{flex:1;margin-right:0;min-width:250px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.NaturalInputComponent, selector: "natural-input", inputs: ["placeholder", "searchFieldName", "selection", "facets"], outputs: ["selectionChange", "cleared"] }] });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalGroupComponent, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: 'natural-group', template: "<natural-input\n (cleared)=\"removeInput(i)\"\n (selectionChange)=\"updateInput($event, i)\"\n *ngFor=\"let selection of innerSelections; let i = index\"\n [facets]=\"facets\"\n [selection]=\"selection\"\n></natural-input>\n\n<natural-input\n #newValueInput\n (selectionChange)=\"addInput($event)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n tabIndex=\"10\"\n cdkFocusInitial\n></natural-input>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}:host natural-input{flex:none;display:inline-flex;margin-right:10px}:host natural-input:last-of-type{flex:1;margin-right:0;min-width:250px}\n"] }]
33
33
  }], propDecorators: { newValueInput: [{
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, HostListener, Injector, Input, Output, ViewChild, } from '@angular/core';
1
+ import { Component, createComponent, createEnvironmentInjector, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
2
2
  import { FormControl } from '@angular/forms';
3
3
  import { MatRipple } from '@angular/material/core';
4
4
  import { getFacetFromSelection } from '../classes/utils';
@@ -7,13 +7,13 @@ import { NATURAL_DROPDOWN_DATA, } from '../dropdown-container/dropdown.service';
7
7
  import { FacetSelectorComponent } from '../facet-selector/facet-selector.component';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "../dropdown-container/dropdown.service";
10
- import * as i2 from "@angular/material/form-field";
11
- import * as i3 from "../../icon/icon.component";
12
- import * as i4 from "@angular/material/button";
13
- import * as i5 from "@angular/material/core";
14
- import * as i6 from "@angular/common";
15
- import * as i7 from "@angular/material/input";
16
- import * as i8 from "@angular/forms";
10
+ import * as i2 from "@angular/common";
11
+ import * as i3 from "@angular/forms";
12
+ import * as i4 from "@angular/material/form-field";
13
+ import * as i5 from "@angular/material/input";
14
+ import * as i6 from "@angular/material/button";
15
+ import * as i7 from "@angular/material/core";
16
+ import * as i8 from "../../icon/icon.component";
17
17
  // Required to check invalid fields when initializing natural-search
18
18
  export class AlwaysErrorStateMatcher {
19
19
  isErrorState(control, form) {
@@ -29,11 +29,10 @@ function isComponentValid(component) {
29
29
  };
30
30
  }
31
31
  export class NaturalInputComponent {
32
- constructor(element, dropdownService, injector, componentFactoryResolver) {
32
+ constructor(element, dropdownService, injector) {
33
33
  this.element = element;
34
34
  this.dropdownService = dropdownService;
35
35
  this.injector = injector;
36
- this.componentFactoryResolver = componentFactoryResolver;
37
36
  /**
38
37
  * Name of the field on which do a global search (without facet)
39
38
  */
@@ -57,7 +56,7 @@ export class NaturalInputComponent {
57
56
  /**
58
57
  * Controller for the input field
59
58
  */
60
- this.formCtrl = new FormControl();
59
+ this.formCtrl = new FormControl(null);
61
60
  /**
62
61
  * Customer error matcher that should validate on each change (including initialisation)
63
62
  */
@@ -139,7 +138,7 @@ export class NaturalInputComponent {
139
138
  this.selection.field === this.searchFieldName &&
140
139
  this.selection.condition.like) {
141
140
  // global search mode
142
- this.formCtrl.setValue(this.selection.condition.like.value);
141
+ this.formCtrl.setValue('' + this.selection.condition.like.value);
143
142
  }
144
143
  else {
145
144
  // If component is invalid (no facet and not a global search), clear from result and destroy component
@@ -200,9 +199,10 @@ export class NaturalInputComponent {
200
199
  condition: condition,
201
200
  configuration: facet.configuration,
202
201
  };
203
- const injector = Injector.create({ providers: this.createProviders(data), parent: this.injector });
204
- const factory = this.componentFactoryResolver.resolveComponentFactory(facet.component);
205
- this.dropdownComponentRef = factory.create(injector);
202
+ const injector = createEnvironmentInjector(this.createProviders(data), this.injector);
203
+ this.dropdownComponentRef = createComponent(facet.component, {
204
+ environmentInjector: injector,
205
+ });
206
206
  return this.dropdownComponentRef.instance;
207
207
  }
208
208
  createProviders(data) {
@@ -298,12 +298,12 @@ export class NaturalInputComponent {
298
298
  return selection;
299
299
  }
300
300
  }
301
- NaturalInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalInputComponent, deps: [{ token: i0.ElementRef }, { token: i1.NaturalDropdownService }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
302
- NaturalInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalInputComponent, selector: "natural-input", inputs: { placeholder: "placeholder", searchFieldName: "searchFieldName", selection: "selection", facets: "facets" }, outputs: { selectionChange: "selectionChange", cleared: "cleared" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "ripple", first: true, predicate: MatRipple, descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n <mat-label *ngIf=\"facet\">{{ facet.display }}</mat-label>\n <mat-label *ngIf=\"!facet\">{{ placeholder }}</mat-label>\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n <!-- TODO : replace this void button -->\n <div *ngIf=\"!facet && !selection\" class=\"search-icon\" matPrefix>\n <natural-icon name=\"search\"></natural-icon>\n </div>\n\n <button (click)=\"clear()\" *ngIf=\"selection\" mat-icon-button matSuffix>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n\n <button (click)=\"clear()\" *ngIf=\"facet && !selection\" mat-icon-button matSuffix>\n <natural-icon name=\"undo\"></natural-icon>\n </button>\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{position:relative;overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px;display:flex;flex-direction:column}:host .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}:host .hide{color:transparent;height:0;margin:0 50px 0 10px;font-size:inherit;white-space:nowrap;font-family:Roboto,Helvetica Neue,sans-serif}:host .search-icon{display:block;width:35px;height:35px}:host .search-icon natural-icon{margin:5px auto 0}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.NaturalIconComponent, selector: "natural-icon", inputs: ["label", "labelColor", "labelPosition", "name", "size"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i2.MatPrefix, selector: "[matPrefix]" }, { type: i2.MatSuffix, selector: "[matSuffix]" }] });
303
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalInputComponent, decorators: [{
301
+ NaturalInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalInputComponent, deps: [{ token: i0.ElementRef }, { token: i1.NaturalDropdownService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Component });
302
+ NaturalInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: NaturalInputComponent, selector: "natural-input", inputs: { placeholder: "placeholder", searchFieldName: "searchFieldName", selection: "selection", facets: "facets" }, outputs: { selectionChange: "selectionChange", cleared: "cleared" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "ripple", first: true, predicate: MatRipple, descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n <mat-label *ngIf=\"facet\">{{ facet.display }}</mat-label>\n <mat-label *ngIf=\"!facet\">{{ placeholder }}</mat-label>\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n <!-- TODO : replace this void button -->\n <div *ngIf=\"!facet && !selection\" class=\"search-icon\" matPrefix>\n <natural-icon name=\"search\"></natural-icon>\n </div>\n\n <button (click)=\"clear()\" *ngIf=\"selection\" mat-icon-button matSuffix>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n\n <button (click)=\"clear()\" *ngIf=\"facet && !selection\" mat-icon-button matSuffix>\n <natural-icon name=\"undo\"></natural-icon>\n </button>\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{position:relative;overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px;display:flex;flex-direction:column}:host .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}:host .hide{color:transparent;height:0;margin:0 50px 0 10px;font-size:inherit;white-space:nowrap;font-family:Roboto,Helvetica Neue,sans-serif}:host .search-icon{display:block;width:35px;height:35px}:host .search-icon natural-icon{margin:5px auto 0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i7.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i8.NaturalIconComponent, selector: "natural-icon", inputs: ["label", "labelColor", "labelPosition", "name", "size"] }] });
303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalInputComponent, decorators: [{
304
304
  type: Component,
305
305
  args: [{ selector: 'natural-input', template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n <mat-label *ngIf=\"facet\">{{ facet.display }}</mat-label>\n <mat-label *ngIf=\"!facet\">{{ placeholder }}</mat-label>\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n <!-- TODO : replace this void button -->\n <div *ngIf=\"!facet && !selection\" class=\"search-icon\" matPrefix>\n <natural-icon name=\"search\"></natural-icon>\n </div>\n\n <button (click)=\"clear()\" *ngIf=\"selection\" mat-icon-button matSuffix>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n\n <button (click)=\"clear()\" *ngIf=\"facet && !selection\" mat-icon-button matSuffix>\n <natural-icon name=\"undo\"></natural-icon>\n </button>\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{position:relative;overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px;display:flex;flex-direction:column}:host .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}:host .hide{color:transparent;height:0;margin:0 50px 0 10px;font-size:inherit;white-space:nowrap;font-family:Roboto,Helvetica Neue,sans-serif}:host .search-icon{display:block;width:35px;height:35px}:host .search-icon natural-icon{margin:5px auto 0}\n"] }]
306
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NaturalDropdownService }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { ripple: [{
306
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NaturalDropdownService }, { type: i0.EnvironmentInjector }]; }, propDecorators: { ripple: [{
307
307
  type: ViewChild,
308
308
  args: [MatRipple, { static: true }]
309
309
  }], input: [{
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
325
325
  type: HostListener,
326
326
  args: ['focus']
327
327
  }] } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUlULFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQTRELE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFvQixTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQ0gscUJBQXFCLEdBR3hCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFDLHNCQUFzQixFQUE2QixNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7O0FBSzlHLG9FQUFvRTtBQUNwRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLFlBQVksQ0FBQyxPQUEyQixFQUFFLElBQXdDO1FBQ3JGLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQUVELFNBQVMsZ0JBQWdCLENBQUMsU0FBNEI7SUFDbEQsT0FBTyxHQUE0QixFQUFFO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdEIsT0FBTyxFQUFDLFNBQVMsRUFB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Q0FBQztJQUNyQixDQUFDOztrSEFyVlEscUJBQXFCO3NHQUFyQixxQkFBcUIscVVBSW5CLFNBQVMsa0xDMUR4Qiw2eUNBZ0NBOzJGRHNCYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0ksZUFBZTtvTUFRb0IsTUFBTTtzQkFBbEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUtPLEtBQUs7c0JBQS9DLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFLbEIsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxlQUFlO3NCQUE5QixLQUFLO2dCQUtVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBS1UsTUFBTTtzQkFBckIsS0FBSztnQkFLb0IsZUFBZTtzQkFBeEMsTUFBTTtnQkFLbUIsT0FBTztzQkFBaEMsTUFBTTtnQkFtREEsS0FBSztzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBTdGF0aWNQcm92aWRlcixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0Zvcm0sIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyLCBNYXRSaXBwbGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkfSBmcm9tICcuLi9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtnZXRGYWNldEZyb21TZWxlY3Rpb259IGZyb20gJy4uL2NsYXNzZXMvdXRpbHMnO1xuaW1wb3J0IHtOYXR1cmFsRHJvcGRvd25SZWZ9IGZyb20gJy4uL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1yZWYnO1xuaW1wb3J0IHtcbiAgICBOQVRVUkFMX0RST1BET1dOX0RBVEEsXG4gICAgTmF0dXJhbERyb3Bkb3duRGF0YSxcbiAgICBOYXR1cmFsRHJvcGRvd25TZXJ2aWNlLFxufSBmcm9tICcuLi9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQge0ZhY2V0U2VsZWN0b3JDb21wb25lbnQsIEZhY2V0U2VsZWN0b3JDb25maWd1cmF0aW9ufSBmcm9tICcuLi9mYWNldC1zZWxlY3Rvci9mYWNldC1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnLi4vdHlwZXMvZHJvcGRvd24tY29tcG9uZW50JztcbmltcG9ydCB7RHJvcGRvd25GYWNldCwgRmFjZXQsIEZsYWdGYWNldCwgTmF0dXJhbFNlYXJjaEZhY2V0c30gZnJvbSAnLi4vdHlwZXMvZmFjZXQnO1xuaW1wb3J0IHtEcm9wZG93blJlc3VsdCwgTmF0dXJhbFNlYXJjaFNlbGVjdGlvbn0gZnJvbSAnLi4vdHlwZXMvdmFsdWVzJztcblxuLy8gUmVxdWlyZWQgdG8gY2hlY2sgaW52YWxpZCBmaWVsZHMgd2hlbiBpbml0aWFsaXppbmcgbmF0dXJhbC1zZWFyY2hcbmV4cG9ydCBjbGFzcyBBbHdheXNFcnJvclN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcbiAgICBwdWJsaWMgaXNFcnJvclN0YXRlKGNvbnRyb2w6IEZvcm1Db250cm9sIHwgbnVsbCwgZm9ybTogRm9ybUdyb3VwRGlyZWN0aXZlIHwgTmdGb3JtIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50VmFsaWQoY29tcG9uZW50OiBEcm9wZG93bkNvbXBvbmVudCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4ge2NvbXBvbmVudDogdHJ1ZX07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgdGhlIHJpcHBsZSBlZmZlY3QsIHVzZWQgd2hlbiBvcGVuaW5nIGEgZHJvcGRvd25cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKE1hdFJpcHBsZSwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyByaXBwbGUhOiBNYXRSaXBwbGU7XG5cbiAgICAvKipcbiAgICAgKiBOYXRpdmUgZWxlbWVudCByZWYgZm9yIDxpbnB1dD4gcmVsYXRlZCB0byB0aGlzIDxuYXR1cmFsLWlucHV0PiBjb21wb25lbnRcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgaW5wdXQhOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogTGFiZWwgZm9yIHRoaXMgZmllbGRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBmaWVsZCBvbiB3aGljaCBkbyBhIGdsb2JhbCBzZWFyY2ggKHdpdGhvdXQgZmFjZXQpXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlYXJjaEZpZWxkTmFtZSA9ICdzZWFyY2gnO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0ZWQgc2V0dGVkIGZvciB0aGlzIGNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24gfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEF2YWlsYWJsZSBmYWNldHMsIGFsbG93cyB0aGUgdXNlciB0byBwaWNrIG9uZSwgdGhhbiBnZW5lcmF0ZWQgdGhlbiBhIHNlbGVjdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmYWNldHMhOiBOYXR1cmFsU2VhcmNoRmFjZXRzO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB1c2VyIGEgYWRkZWQvdXBkYXRlZC9kZWxldGVkIGEgc2VhcmNoIChmcm9tIGdsb2JhbCBjb250ZXh0IG9yIGZyb20gZmFjZXQpXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIHVzZXIgcmVtb3ZlcyB0aGUgc2VhcmNoIGJ5IHByZXNzaW5nIHRoZSBjcm9zcyBpY29uXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjbGVhcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOYXR1cmFsSW5wdXRDb21wb25lbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RlZCBmYWNldCBmcm9tIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBmYWNldHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZmFjZXQ6IEZhY2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9sbGVyIGZvciB0aGUgaW5wdXQgZmllbGRcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybUN0cmw6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b21lciBlcnJvciBtYXRjaGVyIHRoYXQgc2hvdWxkIHZhbGlkYXRlIG9uIGVhY2ggY2hhbmdlIChpbmNsdWRpbmcgaW5pdGlhbGlzYXRpb24pXG4gICAgICovXG4gICAgcHVibGljIGVycm9yTWF0Y2hlciA9IG5ldyBBbHdheXNFcnJvclN0YXRlTWF0Y2hlcigpO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIG9mIHRoZSBvcGVuZWQgZHJvcGRvd24gY29udGFpbmVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBkcm9wZG93blJlZjogTmF0dXJhbERyb3Bkb3duUmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2Ugb2YgdGhlIGNvbXBvbmVudCBpbnNpZGUgdGhlIGRyb3Bkb3duIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25Db21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxEcm9wZG93bkNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqICBNaW5pbXVtIGlucHV0IGxlbmd0aCAobnVtYmVyIG9mIGNoYXJzKVxuICAgICAqICBTZWUgbGVuZ3RoIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWluTGVuZ3RoID0gNTtcblxuICAgIC8qKlxuICAgICAqIFNpemUgb2YgdGhlIGlucHV0IChudW1iZXIgb2YgY2hhcnMpXG4gICAgICogTWF0Y2ggdGhlIGlucHV0LnNpemUgYXR0cmlidXRlXG4gICAgICovXG4gICAgcHVibGljIGxlbmd0aCA9IHRoaXMubWluTGVuZ3RoO1xuXG4gICAgLyoqXG4gICAgICogRmxhZywgdGhhdCwgaWYgbWFya2VkIGFzIHllcywgcHJldmVudHMgdGhlIG9wZW5pbmcgb2YgdGhlIGRyb3Bkb3duXG4gICAgICogSXMgdXNlZCB0byBwcmV2ZW50IGRyb3Bkb3duIG9wZW5pbmcgd2hlbiBuYXR1cmFsLXNlYXJjaCB0YWtlcyB0aGUgZm9jdXMgZnJvbSBwYXJlbnQgY29udGV4dCAobGlrZSBvbiBtb2RhbCBvcGVuaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgbmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1hbmFnZW1lbnQgZm9yIHRha2luZyB0aGUgZm9jdXMgZnJvbSBwYXJlbnQgY29udGV4dFxuICAgICAqIFdoZW4gZm9jdXNpbmcgbWFudWFsbHkgb24gdGhlIDxpbnB1dD4sIGEgZHJvcGRvd24gaXMgb3BlbmVkXG4gICAgICogQnV0IHdoZW4gdGhlIGZvY3VzIGlzIGdpdmVuIGZyb20gYW5ndWxhciBpbiBhIHBhcmVudCBjb250ZXh0IChsaWtlIGEgZGlhbG9nKSB0aGUgZHJvcGRvd24gd291bGQgb3BlbiBhbmQgd2UgZG9uJ3Qgd2FudCBpdC5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gICAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcGRvd25TZXJ2aWNlOiBOYXR1cmFsRHJvcGRvd25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kcm9wZG93blJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUN0cmwudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSAkbG9jYWxpemVgUmVjaGVyY2hlYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyU2l6ZSA9ICh0aGlzLmZhY2V0ID8gdGhpcy5mYWNldC5kaXNwbGF5Lmxlbmd0aCA6IHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoKSAqIDAuNjY7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5taW5MZW5ndGgsIE1hdGguY2VpbChwbGFjZWhvbGRlclNpemUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mYWNldHMgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhcigpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZhY2V0cyAmJiB0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5mYWNldCA9IGdldEZhY2V0RnJvbVNlbGVjdGlvbih0aGlzLmZhY2V0cywgdGhpcy5zZWxlY3Rpb24pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkcm9wZG93bkNvbXBvbmVudCA9IHRoaXMuY3JlYXRlQ29tcG9uZW50KHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWxpZGF0b3JzKFtpc0NvbXBvbmVudFZhbGlkKGRyb3Bkb3duQ29tcG9uZW50KV0pO1xuICAgICAgICAgICAgICAgIGRyb3Bkb3duQ29tcG9uZW50LnJlbmRlcmVkVmFsdWUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGbGFnKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5maWVsZCA9PT0gdGhpcy5zZWFyY2hGaWVsZE5hbWUgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24ubGlrZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gZ2xvYmFsIHNlYXJjaCBtb2RlXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24ubGlrZS52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIElmIGNvbXBvbmVudCBpcyBpbnZhbGlkIChubyBmYWNldCBhbmQgbm90IGEgZ2xvYmFsIHNlYXJjaCksIGNsZWFyIGZyb20gcmVzdWx0IGFuZCBkZXN0cm95IGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhcigpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtQ3RybC52YWxpZCAmJiB0aGlzLmZvcm1DdHJsLmRpcnR5KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuZ2V0U2VsZWN0aW9uKHtsaWtlOiB7dmFsdWU6IHRoaXMuZm9ybUN0cmwudmFsdWV9fSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmNsZWFyZWQuZW1pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blJlZiB8fCB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcpIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgdG8gb3BlbiBtdWx0aXBsZSBkcm9wZG93bnMuXG4gICAgICAgICAgICAvLyBIYXBwZW5zIGFzIHdlIG9wZW4gb24gXCJmb2N1c1wiLCBhbmQgYWx0K3RhYiByZS1hY3RpdmF0ZSBmb2N1cyBvbiBhbiBlbGVtZW50IHRoYXQgYWxyZWFkeSBoYWRcbiAgICAgICAgICAgIC8vIGZvY3VzIHdoZW4gbGVhdmluZyB3aW5kb3cgd2l0aCBhbm90aGVyIGFsdCt0YWJcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF1bmNoUmlwcGxlKCk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZmFjZXQgYW5kIG5vIHN0cmluZyB0eXBlZCwgc2hvdyBwYW5lbCB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICAgIGlmICghdGhpcy5mYWNldCAmJiAhdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRmFjZXRTZWxlY3RvckRyb3Bkb3duKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiBhIGZhY2V0IGlzIHNlbGVjdGVkLCBvcGVuIHNwZWNpZmljIGNvbXBvbmVudCBkcm9wZG93blxuICAgICAgICAgICAgdGhpcy5vcGVuVHlwZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZmFjZXQgJiYgKHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDx1bmtub3duPikuY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGbGFnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mYWNldCAmJiAodGhpcy5mYWNldCBhcyBGbGFnRmFjZXQpLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnQoZmFjZXQ6IERyb3Bkb3duRmFjZXQ8dW5rbm93bj4pOiBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgICAgIC8vIEFsd2F5cyBkZXN0cm95IGFuZCByZWNyZWF0ZSBjb21wb25lbnRcbiAgICAgICAgLy8gVG9kbyA6IHRlc3QgaWYgZmFjZXQgaGFzIGNoYW5nZWQsIGlmIG5vdCByZS11c2UgdGhlIGNvbXBvbmVudFxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLnNlbGVjdGlvbiA/ICh0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24gYXMgRmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZCkgOiBudWxsO1xuICAgICAgICBjb25zdCBkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhID0ge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBjb25kaXRpb24sXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiBmYWNldC5jb25maWd1cmF0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtwcm92aWRlcnM6IHRoaXMuY3JlYXRlUHJvdmlkZXJzKGRhdGEpLCBwYXJlbnQ6IHRoaXMuaW5qZWN0b3J9KTtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PERyb3Bkb3duQ29tcG9uZW50PihmYWNldC5jb21wb25lbnQpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmID0gZmFjdG9yeS5jcmVhdGUoaW5qZWN0b3IpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUHJvdmlkZXJzKGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGEpOiBTdGF0aWNQcm92aWRlcltdIHtcbiAgICAgICAgLy8gQ3VzdG9taXplIGluamVjdG9yIHRvIGFsbG93IGRhdGEgYW5kIGRyb3Bkb3duIHJlZmVyZW5jZSBpbmplY3Rpb24gaW4gY29tcG9uZW50XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTmF0dXJhbERyb3Bkb3duUmVmLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOQVRVUkFMX0RST1BET1dOX0RBVEEsXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IGRhdGEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGF1bmNoUmlwcGxlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCByaXBwbGVSZWYgPSB0aGlzLnJpcHBsZS5sYXVuY2goe1xuICAgICAgICAgICAgcGVyc2lzdGVudDogdHJ1ZSxcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICByaXBwbGVSZWYuZmFkZU91dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkZhY2V0U2VsZWN0b3JEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZhY2V0cyB8fCAodGhpcy5mYWNldHMgJiYgIXRoaXMuZmFjZXRzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGE8RmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb24+ID0ge1xuICAgICAgICAgICAgY29uZGl0aW9uOiB7fSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgICBmYWNldHM6IHRoaXMuZmFjZXRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpbmplY3RvclRva2VucyA9IHRoaXMuY3JlYXRlUHJvdmlkZXJzKGRhdGEpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gdGhpcy5kcm9wZG93blNlcnZpY2Uub3BlbihGYWNldFNlbGVjdG9yQ29tcG9uZW50LCB0aGlzLmVsZW1lbnQsIGluamVjdG9yVG9rZW5zLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYuY2xvc2VkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZiA9IG51bGw7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmZhY2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFjZXQocmVzdWx0LmZhY2V0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5jb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuVHlwZURyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkcm9wZG93bkZhY2V0ID0gdGhpcy5mYWNldCBhcyBEcm9wZG93bkZhY2V0PHVua25vd24+O1xuXG4gICAgICAgIGNvbnN0IGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGEgPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IHRoaXMuc2VsZWN0aW9uID8gdGhpcy5zZWxlY3Rpb24uY29uZGl0aW9uIDogbnVsbCxcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IGRyb3Bkb3duRmFjZXQuY29uZmlndXJhdGlvbixcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpbmplY3RvclRva2VucyA9IHRoaXMuY3JlYXRlUHJvdmlkZXJzKGRhdGEpO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBkcm9wZG93bkZhY2V0LmNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5kcm9wZG93blJlZiA9IHRoaXMuZHJvcGRvd25TZXJ2aWNlLm9wZW4oXG4gICAgICAgICAgICBjb21wb25lbnQsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQsXG4gICAgICAgICAgICBpbmplY3RvclRva2VucyxcbiAgICAgICAgICAgIGRyb3Bkb3duRmFjZXQuc2hvd1ZhbGlkYXRlQnV0dG9uICE9PSB1bmRlZmluZWQgPyBkcm9wZG93bkZhY2V0LnNob3dWYWxpZGF0ZUJ1dHRvbiA6IHRydWUsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZWQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRGYWNldChmYWNldDogRmFjZXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mYWNldCA9IGZhY2V0O1xuXG4gICAgICAgIGlmICh0aGlzLmlzRHJvcGRvd24oKSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuVHlwZURyb3Bkb3duKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZsYWcoKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiAoZmFjZXQgYXMgRmxhZ0ZhY2V0KS5jb25kaXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZShyZXN1bHQ6IERyb3Bkb3duUmVzdWx0KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZhY2V0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuZ2V0U2VsZWN0aW9uKHJlc3VsdC5jb25kaXRpb24pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0aW9uKGNvbmRpdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvblsnY29uZGl0aW9uJ10pOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uID0ge1xuICAgICAgICAgICAgZmllbGQ6IHRoaXMuZmFjZXQgPyB0aGlzLmZhY2V0LmZpZWxkIDogdGhpcy5zZWFyY2hGaWVsZE5hbWUsXG4gICAgICAgICAgICBjb25kaXRpb246IGNvbmRpdGlvbixcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5mYWNldCAmJiB0aGlzLmZhY2V0Lm5hbWUpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5uYW1lID0gdGhpcy5mYWNldC5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICB9XG59XG4iLCI8IS0tIGNsaWNrIGNvbmRpdGlvbiBzaG91bGQgbWF0Y2ggdG8gYWxsb3cgY2xpY2sgYWN0aW9uIG9ubHkgd2hlbiBubyBvdGhlciBidXR0b24gaXMgdmlzaWJsZSAtLT5cbjxtYXQtZm9ybS1maWVsZCAjZmllbGQgbWF0UmlwcGxlIChjbGljayk9XCIhc2VsZWN0aW9uICYmICEoZmFjZXQgJiYgIXNlbGVjdGlvbikgPyBvcGVuRHJvcGRvd24oKSA6IG51bGxcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZmFjZXRcIj57eyBmYWNldC5kaXNwbGF5IH19PC9tYXQtbGFiZWw+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cIiFmYWNldFwiPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG5cbiAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIChibHVyKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICBbYXR0ci5zaXplXT1cImxlbmd0aFwiXG4gICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvck1hdGNoZXJcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUN0cmxcIlxuICAgICAgICBbcmVhZG9ubHldPVwiKGlzRHJvcGRvd24oKSAmJiAhIXNlbGVjdGlvbikgfHwgaXNGbGFnKClcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgLz5cblxuICAgIDwhLS0gVE9ETyA6IHJlcGxhY2UgdGhpcyB2b2lkIGJ1dHRvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiIWZhY2V0ICYmICFzZWxlY3Rpb25cIiBjbGFzcz1cInNlYXJjaC1pY29uXCIgbWF0UHJlZml4PlxuICAgICAgICA8bmF0dXJhbC1pY29uIG5hbWU9XCJzZWFyY2hcIj48L25hdHVyYWwtaWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyKClcIiAqbmdJZj1cInNlbGVjdGlvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXg+XG4gICAgICAgIDxuYXR1cmFsLWljb24gbmFtZT1cImNsb3NlXCI+PC9uYXR1cmFsLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgKm5nSWY9XCJmYWNldCAmJiAhc2VsZWN0aW9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeD5cbiAgICAgICAgPG5hdHVyYWwtaWNvbiBuYW1lPVwidW5kb1wiPjwvbmF0dXJhbC1pY29uPlxuICAgIDwvYnV0dG9uPlxuPC9tYXQtZm9ybS1maWVsZD5cbjxkaXYgY2xhc3M9XCJoaWRlXCI+e3sgZm9ybUN0cmwudmFsdWUgPyBmb3JtQ3RybC52YWx1ZSA6IGZhY2V0ID8gZmFjZXQuZGlzcGxheSA6IHBsYWNlaG9sZGVyIH19PC9kaXY+XG4iXX0=
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGVBQWUsRUFDZix5QkFBeUIsRUFHekIsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUE0RCxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFBb0IsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFcEUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUNILHFCQUFxQixHQUd4QixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBQyxzQkFBc0IsRUFBNkIsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7OztBQUs5RyxvRUFBb0U7QUFDcEUsTUFBTSxPQUFPLHVCQUF1QjtJQUN6QixZQUFZLENBQUMsT0FBb0MsRUFBRSxJQUF3QztRQUM5RixPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUN4QyxDQUFDO0NBQ0o7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFNBQTRCO0lBQ2xELE9BQU8sR0FBNEIsRUFBRTtRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3RCLE9BQU8s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QVM7K0JBQ0ksZUFBZTt3S0FRb0IsTUFBTTtzQkFBbEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUtPLEtBQUs7c0JBQS9DLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFLbEIsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxlQUFlO3NCQUE5QixLQUFLO2dCQUtVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBS1UsTUFBTTtzQkFBckIsS0FBSztnQkFLb0IsZUFBZTtzQkFBeEMsTUFBTTtnQkFLbUIsT0FBTztzQkFBaEMsTUFBTTtnQkFtREEsS0FBSztzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgY3JlYXRlQ29tcG9uZW50LFxuICAgIGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU3RhdGljUHJvdmlkZXIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdGb3JtLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtFcnJvclN0YXRlTWF0Y2hlciwgTWF0UmlwcGxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZH0gZnJvbSAnLi4vY2xhc3Nlcy9ncmFwaHFsLWRvY3RyaW5lLnR5cGVzJztcbmltcG9ydCB7Z2V0RmFjZXRGcm9tU2VsZWN0aW9ufSBmcm9tICcuLi9jbGFzc2VzL3V0aWxzJztcbmltcG9ydCB7TmF0dXJhbERyb3Bkb3duUmVmfSBmcm9tICcuLi9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tcmVmJztcbmltcG9ydCB7XG4gICAgTkFUVVJBTF9EUk9QRE9XTl9EQVRBLFxuICAgIE5hdHVyYWxEcm9wZG93bkRhdGEsXG4gICAgTmF0dXJhbERyb3Bkb3duU2VydmljZSxcbn0gZnJvbSAnLi4vZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHtGYWNldFNlbGVjdG9yQ29tcG9uZW50LCBGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vZmFjZXQtc2VsZWN0b3IvZmFjZXQtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7RHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4uL3R5cGVzL2Ryb3Bkb3duLWNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duRmFjZXQsIEZhY2V0LCBGbGFnRmFjZXQsIE5hdHVyYWxTZWFyY2hGYWNldHN9IGZyb20gJy4uL3R5cGVzL2ZhY2V0JztcbmltcG9ydCB7RHJvcGRvd25SZXN1bHQsIE5hdHVyYWxTZWFyY2hTZWxlY3Rpb259IGZyb20gJy4uL3R5cGVzL3ZhbHVlcyc7XG5cbi8vIFJlcXVpcmVkIHRvIGNoZWNrIGludmFsaWQgZmllbGRzIHdoZW4gaW5pdGlhbGl6aW5nIG5hdHVyYWwtc2VhcmNoXG5leHBvcnQgY2xhc3MgQWx3YXlzRXJyb3JTdGF0ZU1hdGNoZXIgaW1wbGVtZW50cyBFcnJvclN0YXRlTWF0Y2hlciB7XG4gICAgcHVibGljIGlzRXJyb3JTdGF0ZShjb250cm9sOiBGb3JtQ29udHJvbDx1bmtub3duPiB8IG51bGwsIGZvcm06IEZvcm1Hcm91cERpcmVjdGl2ZSB8IE5nRm9ybSB8IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhY29udHJvbCAmJiBjb250cm9sLmludmFsaWQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBvbmVudFZhbGlkKGNvbXBvbmVudDogRHJvcGRvd25Db21wb25lbnQpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuICgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGlmICghY29tcG9uZW50LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtjb21wb25lbnQ6IHRydWV9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHRoZSByaXBwbGUgZWZmZWN0LCB1c2VkIHdoZW4gb3BlbmluZyBhIGRyb3Bkb3duXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChNYXRSaXBwbGUsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgcmlwcGxlITogTWF0UmlwcGxlO1xuXG4gICAgLyoqXG4gICAgICogTmF0aXZlIGVsZW1lbnQgcmVmIGZvciA8aW5wdXQ+IHJlbGF0ZWQgdG8gdGhpcyA8bmF0dXJhbC1pbnB1dD4gY29tcG9uZW50XG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIGlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIExhYmVsIGZvciB0aGlzIGZpZWxkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZmllbGQgb24gd2hpY2ggZG8gYSBnbG9iYWwgc2VhcmNoICh3aXRob3V0IGZhY2V0KVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hGaWVsZE5hbWUgPSAnc2VhcmNoJztcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGVkIHNldHRlZCBmb3IgdGhpcyBjb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBBdmFpbGFibGUgZmFjZXRzLCBhbGxvd3MgdGhlIHVzZXIgdG8gcGljayBvbmUsIHRoYW4gZ2VuZXJhdGVkIHRoZW4gYSBzZWxlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZmFjZXRzITogTmF0dXJhbFNlYXJjaEZhY2V0cztcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdXNlciBhIGFkZGVkL3VwZGF0ZWQvZGVsZXRlZCBhIHNlYXJjaCAoZnJvbSBnbG9iYWwgY29udGV4dCBvciBmcm9tIGZhY2V0KVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOYXR1cmFsU2VhcmNoU2VsZWN0aW9uPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB1c2VyIHJlbW92ZXMgdGhlIHNlYXJjaCBieSBwcmVzc2luZyB0aGUgY3Jvc3MgaWNvblxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmF0dXJhbElucHV0Q29tcG9uZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0ZWQgZmFjZXQgZnJvbSB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmFjZXRzXG4gICAgICovXG4gICAgcHVibGljIGZhY2V0OiBGYWNldCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbGxlciBmb3IgdGhlIGlucHV0IGZpZWxkXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm1DdHJsID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tZXIgZXJyb3IgbWF0Y2hlciB0aGF0IHNob3VsZCB2YWxpZGF0ZSBvbiBlYWNoIGNoYW5nZSAoaW5jbHVkaW5nIGluaXRpYWxpc2F0aW9uKVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlcnJvck1hdGNoZXIgPSBuZXcgQWx3YXlzRXJyb3JTdGF0ZU1hdGNoZXIoKTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSBvZiB0aGUgb3BlbmVkIGRyb3Bkb3duIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25SZWY6IE5hdHVyYWxEcm9wZG93blJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIG9mIHRoZSBjb21wb25lbnQgaW5zaWRlIHRoZSBkcm9wZG93biBjb250YWluZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RHJvcGRvd25Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiAgTWluaW11bSBpbnB1dCBsZW5ndGggKG51bWJlciBvZiBjaGFycylcbiAgICAgKiAgU2VlIGxlbmd0aCBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbkxlbmd0aCA9IDU7XG5cbiAgICAvKipcbiAgICAgKiBTaXplIG9mIHRoZSBpbnB1dCAobnVtYmVyIG9mIGNoYXJzKVxuICAgICAqIE1hdGNoIHRoZSBpbnB1dC5zaXplIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGggPSB0aGlzLm1pbkxlbmd0aDtcblxuICAgIC8qKlxuICAgICAqIEZsYWcsIHRoYXQsIGlmIG1hcmtlZCBhcyB5ZXMsIHByZXZlbnRzIHRoZSBvcGVuaW5nIG9mIHRoZSBkcm9wZG93blxuICAgICAqIElzIHVzZWQgdG8gcHJldmVudCBkcm9wZG93biBvcGVuaW5nIHdoZW4gbmF0dXJhbC1zZWFyY2ggdGFrZXMgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHQgKGxpa2Ugb24gbW9kYWwgb3BlbmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIG5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtYW5hZ2VtZW50IGZvciB0YWtpbmcgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHRcbiAgICAgKiBXaGVuIGZvY3VzaW5nIG1hbnVhbGx5IG9uIHRoZSA8aW5wdXQ+LCBhIGRyb3Bkb3duIGlzIG9wZW5lZFxuICAgICAqIEJ1dCB3aGVuIHRoZSBmb2N1cyBpcyBnaXZlbiBmcm9tIGFuZ3VsYXIgaW4gYSBwYXJlbnQgY29udGV4dCAobGlrZSBhIGRpYWxvZykgdGhlIGRyb3Bkb3duIHdvdWxkIG9wZW4gYW5kIHdlIGRvbid0IHdhbnQgaXQuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMubmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wZG93blNlcnZpY2U6IE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZHJvcGRvd25SZWYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1DdHJsLnZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJGxvY2FsaXplYFJlY2hlcmNoZWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlclNpemUgPSAodGhpcy5mYWNldCA/IHRoaXMuZmFjZXQuZGlzcGxheS5sZW5ndGggOiB0aGlzLnBsYWNlaG9sZGVyLmxlbmd0aCkgKiAwLjY2O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubWluTGVuZ3RoLCBNYXRoLmNlaWwocGxhY2Vob2xkZXJTaXplKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzICYmIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5mYWNldHMgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmFjZXQgPSBnZXRGYWNldEZyb21TZWxlY3Rpb24odGhpcy5mYWNldHMsIHRoaXMuc2VsZWN0aW9uKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJvcGRvd25Db21wb25lbnQgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8RmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb24+KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsaWRhdG9ycyhbaXNDb21wb25lbnRWYWxpZChkcm9wZG93bkNvbXBvbmVudCldKTtcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudC5yZW5kZXJlZFZhbHVlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmxhZygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmllbGQgPT09IHRoaXMuc2VhcmNoRmllbGROYW1lICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY29uZGl0aW9uLmxpa2VcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIGdsb2JhbCBzZWFyY2ggbW9kZVxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUoJycgKyB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24ubGlrZS52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIElmIGNvbXBvbmVudCBpcyBpbnZhbGlkIChubyBmYWNldCBhbmQgbm90IGEgZ2xvYmFsIHNlYXJjaCksIGNsZWFyIGZyb20gcmVzdWx0IGFuZCBkZXN0cm95IGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhcigpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtQ3RybC52YWxpZCAmJiB0aGlzLmZvcm1DdHJsLmRpcnR5KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuZ2V0U2VsZWN0aW9uKHtsaWtlOiB7dmFsdWU6IHRoaXMuZm9ybUN0cmwudmFsdWV9fSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmNsZWFyZWQuZW1pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blJlZiB8fCB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcpIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgdG8gb3BlbiBtdWx0aXBsZSBkcm9wZG93bnMuXG4gICAgICAgICAgICAvLyBIYXBwZW5zIGFzIHdlIG9wZW4gb24gXCJmb2N1c1wiLCBhbmQgYWx0K3RhYiByZS1hY3RpdmF0ZSBmb2N1cyBvbiBhbiBlbGVtZW50IHRoYXQgYWxyZWFkeSBoYWRcbiAgICAgICAgICAgIC8vIGZvY3VzIHdoZW4gbGVhdmluZyB3aW5kb3cgd2l0aCBhbm90aGVyIGFsdCt0YWJcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF1bmNoUmlwcGxlKCk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZmFjZXQgYW5kIG5vIHN0cmluZyB0eXBlZCwgc2hvdyBwYW5lbCB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICAgIGlmICghdGhpcy5mYWNldCAmJiAhdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRmFjZXRTZWxlY3RvckRyb3Bkb3duKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiBhIGZhY2V0IGlzIHNlbGVjdGVkLCBvcGVuIHNwZWNpZmljIGNvbXBvbmVudCBkcm9wZG93blxuICAgICAgICAgICAgdGhpcy5vcGVuVHlwZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZmFjZXQgJiYgKHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDx1bmtub3duPikuY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGbGFnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mYWNldCAmJiAodGhpcy5mYWNldCBhcyBGbGFnRmFjZXQpLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnQoZmFjZXQ6IERyb3Bkb3duRmFjZXQ8dW5rbm93bj4pOiBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgICAgIC8vIEFsd2F5cyBkZXN0cm95IGFuZCByZWNyZWF0ZSBjb21wb25lbnRcbiAgICAgICAgLy8gVG9kbyA6IHRlc3QgaWYgZmFjZXQgaGFzIGNoYW5nZWQsIGlmIG5vdCByZS11c2UgdGhlIGNvbXBvbmVudFxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLnNlbGVjdGlvbiA/ICh0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24gYXMgRmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZCkgOiBudWxsO1xuICAgICAgICBjb25zdCBkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhID0ge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBjb25kaXRpb24sXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiBmYWNldC5jb25maWd1cmF0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gY3JlYXRlRW52aXJvbm1lbnRJbmplY3Rvcih0aGlzLmNyZWF0ZVByb3ZpZGVycyhkYXRhKSwgdGhpcy5pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQoZmFjZXQuY29tcG9uZW50LCB7XG4gICAgICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBpbmplY3RvcixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVQcm92aWRlcnMoZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YSk6IFN0YXRpY1Byb3ZpZGVyW10ge1xuICAgICAgICAvLyBDdXN0b21pemUgaW5qZWN0b3IgdG8gYWxsb3cgZGF0YSBhbmQgZHJvcGRvd24gcmVmZXJlbmNlIGluamVjdGlvbiBpbiBjb21wb25lbnRcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOYXR1cmFsRHJvcGRvd25SZWYsXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IE5BVFVSQUxfRFJPUERPV05fREFUQSxcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogZGF0YSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsYXVuY2hSaXBwbGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJpcHBsZVJlZiA9IHRoaXMucmlwcGxlLmxhdW5jaCh7XG4gICAgICAgICAgICBwZXJzaXN0ZW50OiB0cnVlLFxuICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJpcHBsZVJlZi5mYWRlT3V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuRmFjZXRTZWxlY3RvckRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzIHx8ICh0aGlzLmZhY2V0cyAmJiAhdGhpcy5mYWNldHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YTxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4gPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IHt9LFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICAgIGZhY2V0czogdGhpcy5mYWNldHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKEZhY2V0U2VsZWN0b3JDb21wb25lbnQsIHRoaXMuZWxlbWVudCwgaW5qZWN0b3JUb2tlbnMsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZWQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZmFjZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGYWNldChyZXN1bHQuZmFjZXQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5UeXBlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duRmFjZXQgPSB0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8dW5rbm93bj47XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YSA9IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWxlY3Rpb24gPyB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24gOiBudWxsLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogZHJvcGRvd25GYWNldC5jb25maWd1cmF0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRyb3Bkb3duRmFjZXQuY29tcG9uZW50O1xuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gdGhpcy5kcm9wZG93blNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIGluamVjdG9yVG9rZW5zLFxuICAgICAgICAgICAgZHJvcGRvd25GYWNldC5zaG93VmFsaWRhdGVCdXR0b24gIT09IHVuZGVmaW5lZCA/IGRyb3Bkb3duRmFjZXQuc2hvd1ZhbGlkYXRlQnV0dG9uIDogdHJ1ZSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlZC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZhY2V0KGZhY2V0OiBGYWNldCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gZmFjZXQ7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5UeXBlRHJvcGRvd24oKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmxhZygpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IChmYWNldCBhcyBGbGFnRmFjZXQpLmNvbmRpdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlKHJlc3VsdDogRHJvcGRvd25SZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmFjZXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXRTZWxlY3Rpb24ocmVzdWx0LmNvbmRpdGlvbikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3Rpb24oY29uZGl0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uWydjb25kaXRpb24nXSk6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24ge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICBmaWVsZDogdGhpcy5mYWNldCA/IHRoaXMuZmFjZXQuZmllbGQgOiB0aGlzLnNlYXJjaEZpZWxkTmFtZSxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmZhY2V0ICYmIHRoaXMuZmFjZXQubmFtZSkge1xuICAgICAgICAgICAgc2VsZWN0aW9uLm5hbWUgPSB0aGlzLmZhY2V0Lm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0aW9uO1xuICAgIH1cbn1cbiIsIjwhLS0gY2xpY2sgY29uZGl0aW9uIHNob3VsZCBtYXRjaCB0byBhbGxvdyBjbGljayBhY3Rpb24gb25seSB3aGVuIG5vIG90aGVyIGJ1dHRvbiBpcyB2aXNpYmxlIC0tPlxuPG1hdC1mb3JtLWZpZWxkICNmaWVsZCBtYXRSaXBwbGUgKGNsaWNrKT1cIiFzZWxlY3Rpb24gJiYgIShmYWNldCAmJiAhc2VsZWN0aW9uKSA/IG9wZW5Ecm9wZG93bigpIDogbnVsbFwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmYWNldFwiPnt7IGZhY2V0LmRpc3BsYXkgfX08L21hdC1sYWJlbD5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiIWZhY2V0XCI+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cblxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgKGJsdXIpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLnNpemVdPVwibGVuZ3RoXCJcbiAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yTWF0Y2hlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ3RybFwiXG4gICAgICAgIFtyZWFkb25seV09XCIoaXNEcm9wZG93bigpICYmICEhc2VsZWN0aW9uKSB8fCBpc0ZsYWcoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuXG4gICAgPCEtLSBUT0RPIDogcmVwbGFjZSB0aGlzIHZvaWQgYnV0dG9uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhZmFjZXQgJiYgIXNlbGVjdGlvblwiIGNsYXNzPVwic2VhcmNoLWljb25cIiBtYXRQcmVmaXg+XG4gICAgICAgIDxuYXR1cmFsLWljb24gbmFtZT1cInNlYXJjaFwiPjwvbmF0dXJhbC1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiICpuZ0lmPVwic2VsZWN0aW9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeD5cbiAgICAgICAgPG5hdHVyYWwtaWNvbiBuYW1lPVwiY2xvc2VcIj48L25hdHVyYWwtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyKClcIiAqbmdJZj1cImZhY2V0ICYmICFzZWxlY3Rpb25cIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4PlxuICAgICAgICA8bmF0dXJhbC1pY29uIG5hbWU9XCJ1bmRvXCI+PC9uYXR1cmFsLWljb24+XG4gICAgPC9idXR0b24+XG48L21hdC1mb3JtLWZpZWxkPlxuPGRpdiBjbGFzcz1cImhpZGVcIj57eyBmb3JtQ3RybC52YWx1ZSA/IGZvcm1DdHJsLnZhbHVlIDogZmFjZXQgPyBmYWNldC5kaXNwbGF5IDogcGxhY2Vob2xkZXIgfX08L2Rpdj5cbiJdfQ==
@@ -1,10 +1,10 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { deepClone } from '../classes/utils';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "../group/group.component";
4
+ import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/material/button";
6
6
  import * as i3 from "../../icon/icon.component";
7
- import * as i4 from "@angular/common";
7
+ import * as i4 from "../group/group.component";
8
8
  export class NaturalSearchComponent {
9
9
  constructor() {
10
10
  /**
@@ -59,9 +59,9 @@ export class NaturalSearchComponent {
59
59
  this.selectionChange.emit([[]]);
60
60
  }
61
61
  }
62
- NaturalSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
- NaturalSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalSearchComponent, selector: "natural-search", inputs: { placeholder: "placeholder", facets: "facets", multipleGroups: "multipleGroups", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"natural-search\">\n <div class=\"groupsWrapper\">\n <div *ngFor=\"let groupSelections of innerSelections; let i = index; let last = last\" class=\"groupWrapper\">\n <natural-group\n (selectionChange)=\"updateGroup($event, i)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n [selections]=\"groupSelections\"\n ></natural-group>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"removeGroup(i)\" *ngIf=\"innerSelections.length > 1\" mat-icon-button>\n <natural-icon name=\"remove\"></natural-icon>\n </button>\n </div>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"addGroup()\" *ngIf=\"last && multipleGroups\" mat-icon-button>\n <natural-icon name=\"add\"></natural-icon>\n </button>\n </div>\n\n <!-- Spaceholder to keep fields alignment (prevent to push until end of line)--->\n <div *ngIf=\"!last\" class=\"spacer\"></div>\n </div>\n </div>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"clear()\" mat-icon-button>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host .natural-search{display:flex;flex-direction:row;align-items:flex-end}:host .natural-search .groupsWrapper{display:flex;flex-direction:column;flex:1}:host .natural-search .groupWrapper{display:flex;flex-direction:row;margin-bottom:10px}:host .natural-search .groupWrapper natural-group{flex:1}:host .natural-search .groupWrapper:last-of-type{margin-bottom:0}:host .natural-search .groupWrapper .spacer{width:40px;height:40px}:host .natural-search .endOfRowButton{height:53px;display:flex;flex-direction:row;align-items:center}\n"], components: [{ type: i1.NaturalGroupComponent, selector: "natural-group", inputs: ["placeholder", "facets", "selections"], outputs: ["selectionChange"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.NaturalIconComponent, selector: "natural-icon", inputs: ["label", "labelColor", "labelPosition", "name", "size"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalSearchComponent, decorators: [{
62
+ NaturalSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
+ NaturalSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: NaturalSearchComponent, selector: "natural-search", inputs: { placeholder: "placeholder", facets: "facets", multipleGroups: "multipleGroups", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"natural-search\">\n <div class=\"groupsWrapper\">\n <div *ngFor=\"let groupSelections of innerSelections; let i = index; let last = last\" class=\"groupWrapper\">\n <natural-group\n (selectionChange)=\"updateGroup($event, i)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n [selections]=\"groupSelections\"\n ></natural-group>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"removeGroup(i)\" *ngIf=\"innerSelections.length > 1\" mat-icon-button>\n <natural-icon name=\"remove\"></natural-icon>\n </button>\n </div>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"addGroup()\" *ngIf=\"last && multipleGroups\" mat-icon-button>\n <natural-icon name=\"add\"></natural-icon>\n </button>\n </div>\n\n <!-- Spaceholder to keep fields alignment (prevent to push until end of line)--->\n <div *ngIf=\"!last\" class=\"spacer\"></div>\n </div>\n </div>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"clear()\" mat-icon-button>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host .natural-search{display:flex;flex-direction:row;align-items:flex-end}:host .natural-search .groupsWrapper{display:flex;flex-direction:column;flex:1}:host .natural-search .groupWrapper{display:flex;flex-direction:row;margin-bottom:10px}:host .natural-search .groupWrapper natural-group{flex:1}:host .natural-search .groupWrapper:last-of-type{margin-bottom:0}:host .natural-search .groupWrapper .spacer{width:40px;height:40px}:host .natural-search .endOfRowButton{height:53px;display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.NaturalIconComponent, selector: "natural-icon", inputs: ["label", "labelColor", "labelPosition", "name", "size"] }, { kind: "component", type: i4.NaturalGroupComponent, selector: "natural-group", inputs: ["placeholder", "facets", "selections"], outputs: ["selectionChange"] }] });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NaturalSearchComponent, decorators: [{
65
65
  type: Component,
66
66
  args: [{ selector: 'natural-search', template: "<div class=\"natural-search\">\n <div class=\"groupsWrapper\">\n <div *ngFor=\"let groupSelections of innerSelections; let i = index; let last = last\" class=\"groupWrapper\">\n <natural-group\n (selectionChange)=\"updateGroup($event, i)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n [selections]=\"groupSelections\"\n ></natural-group>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"removeGroup(i)\" *ngIf=\"innerSelections.length > 1\" mat-icon-button>\n <natural-icon name=\"remove\"></natural-icon>\n </button>\n </div>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"addGroup()\" *ngIf=\"last && multipleGroups\" mat-icon-button>\n <natural-icon name=\"add\"></natural-icon>\n </button>\n </div>\n\n <!-- Spaceholder to keep fields alignment (prevent to push until end of line)--->\n <div *ngIf=\"!last\" class=\"spacer\"></div>\n </div>\n </div>\n\n <div class=\"endOfRowButton\">\n <button (click)=\"clear()\" mat-icon-button>\n <natural-icon name=\"close\"></natural-icon>\n </button>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host .natural-search{display:flex;flex-direction:row;align-items:flex-end}:host .natural-search .groupsWrapper{display:flex;flex-direction:column;flex:1}:host .natural-search .groupWrapper{display:flex;flex-direction:row;margin-bottom:10px}:host .natural-search .groupWrapper natural-group{flex:1}:host .natural-search .groupWrapper:last-of-type{margin-bottom:0}:host .natural-search .groupWrapper .spacer{width:40px;height:40px}:host .natural-search .endOfRowButton{height:53px;display:flex;flex-direction:row;align-items:center}\n"] }]
67
67
  }], propDecorators: { placeholder: [{